[Drawing Pixels]                                      [Assembler][/][80386]

How to draw pixel in protected mode? That is very easy, both to make system
friendly or quick-and-dirty. Demo programmers may use this combinations
like this:

        add     eax,[table+ebx*4]
        mov     [eax],cl

Where EAX is the X coordinate, EBX the Y coordinate, CL color and [table] a
table containing A0000+320*0, A0000+320*1, A0000+320*2, .... up to 200. The
main drawback is that you need to work in large selectors - more like flat
mode - the way I code is somewhat like this:

        add     eax,[table+ebx*4]
        mov     [es:eax],cl

This is a tad slower. Everything is the same, except the table, which now
contain 320*0, 320*1, 320*2, .... up to 200. Now you need to sacrifice a
segment register, but it is more system friendly and you can have small
selector sizes. The program is now also less likely to flunk under DPMI.

If you want another width or height, it is easy, just expand the table to
height, and exchange 320 with width.
                                                    Gem writers: Ervin Toth
                                                              John Eckerdal
                                                   last updated: 1998-03-16
