After reading tweakdoc.txt here are some other things you should know:

 To write to a pixel you must first enable that plane:

    mov     dx,Seq_Index     ; Select port 03c4h
    mov     al,2             ; Map Mask Register (select all planes)
    mov     ah,plane         ;plane #  (1 or 2 or 4 or 8 or combos)
    out     dx,ax

 If you are going to send an image to the screen try doing all of plane 1,
then plane 2, plane 3,and 4.  It's faster cause you only have to change the
active plane 4 times.

 And here are some other modes to try out:

;data for modes
vga_X320Y200 label  word
  db      0e3h    ; dot clock
  db      02      ; Number of CRTC Registers to update
  dw      00014h  ; turn off dword mode
  dw      0e317h  ; turn on byte mode
  dw      320     ; width
  dw      200     ; height

vga_X320Y240 label  word
  db      0e3h    ; dot clock
  db      10      ; Number of CRTC Registers to update
  dw      00d06h  ; vertical total
  dw      03e07h  ; overflow (bit 8 of vertical counts)
  dw      04109h  ; cell height (2 to double-scan)
  dw      0ea10h  ; v sync start
  dw      0ac11h  ; v sync end and protect cr0-cr7
  dw      0df12h  ; vertical displayed
  dw      00014h  ; turn off dword mode
  dw      0e715h  ; v blank start
  dw      00616h  ; v blank end
  dw      0e317h  ; turn on byte mode
  dw      320     ; width
  dw      240     ; height

vga_X360Y200 label  word
  db      0e7h    ; dot clock
  db      08      ; Number of CRTC Registers to update
  dw      06b00h  ; horz total
  dw      05901h  ; horz displayed
  dw      05a02h  ; start horz blanking
  dw      08e03h  ; end horz blanking
  dw      05e04h  ; start h sync
  dw      08a05h  ; end h sync
  dw      00014h  ; turn off dword mode
  dw      0e317h  ; turn on byte mode
  dw      360     ; width
  dw      200     ; height

vga_X360Y240  label word
  db      0e7h    ; dot clock
  db      17      ; Number of CRTC Registers to update
  dw  06b00h  ; horz total
  dw  05901h  ; horz displayed
  dw  05a02h  ; start horz blanking
  dw  08e03h  ; end horz blanking
  dw  05e04h  ; start h sync
  dw  08a05h  ; end h sync
  dw      00d06h  ; vertical total
  dw      03e07h  ; overflow (bit 8 of vertical counts)
  dw      04109h  ; cell height (2 to double-scan)
  dw      0ea10h  ; v sync start
  dw      0ac11h  ; v sync end and protect cr0-cr7
  dw      0df12h  ; vertical displayed
  dw  02d13h  ; offset;
  dw      00014h  ; turn off dword mode
  dw      0e715h  ; v blank start
  dw      00616h  ; v blank end
  dw      0e317h  ; turn on byte mode
  dw      360
  dw      240

vga_X376Y282 label word
  db      0e7h
  db      18
  dw  06e00h  ; horz total
  dw  05d01h  ; horz displayed
  dw  05e02h  ; start horz blanking
  dw  09103h  ; end horz blanking
  dw  06204h  ; start h sync
  dw  08f05h  ; end h sync
  dw  06206h  ; vertical total
  dw  0f007h  ; overflow
  dw      06109h  ; cell height
  dw      0310fh  ;
  dw  03710h  ; v sync start
  dw  08911h  ; v sync end and protect cr0-cr7
  dw  03312h  ; vertical displayed
  dw  02f13h  ; offset
  dw  00014h  ; turn off dword mode
  dw  03c15h  ; v blank start
  dw  05c16h  ; v blank end
  dw  0e317h  ; turn on byte mode
  dw  376
  dw  564

vga_X320Y400 label  word  ;perfect mode!  128K each page!
  db  0e3h    ; dot clock
  db  03      ; Number of CRTC Registers to update
  dw  04009h  ; cell height
  dw  00014h  ; turn off dword mode
  dw  0e317h  ; turn on byte mode
  dw  320     ; width
  dw  400     ; height

vga_X320Y480 label  word
  db      0e3h    ; dotclock
  db      10      ; Number of CRTC Registers to update
  dw      00d06h  ; vertical total
  dw      03e07h  ; overflow (bit 8 of vertical counts)
  dw      04009h  ; cell height (2 to double-scan)
  dw      0ea10h  ; v sync start
  dw      0ac11h  ; v sync end and protect cr0-cr7
  dw      0df12h  ; vertical displayed
  dw      00014h  ; turn off dword mode
  dw      0e715h  ; v blank start
  dw      00616h  ; v blank end
  dw      0e317h  ; turn on byte mode
  dw      320     ; width
  dw      480     ; height

vga_X360Y400 label  word
  db      0e7h    ; dot clock
  db      09      ; Number of CRTC Registers to update
  dw      06b00h  ; horz total
  dw      05901h  ; horz displayed
  dw      05a02h  ; start horz blanking
  dw      08e03h  ; end horz blanking
  dw      05e04h  ; start h sync
  dw      08a05h  ; end h sync
  dw      04009h  ; cell height
  dw      00014h  ; turn off dword mode
  dw      0e317h  ; turn on byte mode
  dw      360     ; width
  dw      400     ; height

vga_X360Y480  label word
  db      0e7h
  db      17
  dw  06b00h  ; horz total
  dw  05901h  ; horz displayed
  dw  05a02h  ; start horz blanking
  dw  08e03h  ; end horz blanking
  dw  05e04h  ; start h sync
  dw  08a05h  ; end h sync
  dw  00d06h  ; vertical total
  dw  03e07h  ; overflow
  dw  04009h  ; cell height
  dw  0ea10h  ; v sync start
  dw  0ac11h  ; v sync end and protect cr0-cr7
  dw  0df12h  ; vertical displayed
  dw  02d13h  ; offset
  dw  00014h  ; turn off dword mode
  dw  0e715h  ; v blank start
  dw  00616h  ; v blank end
  dw  0e317h  ; turn on byte mode
  dw      360
  dw      480

vga_X360Y360  label word
  db      0e7h
  db      15
  dw  06b00h  ; horz total
  dw  05901h  ; horz displayed
        dw  05a02h  ; start horz blanking
  dw  08e03h  ; end horz blanking
  dw  05e04h  ; start h sync
  dw  08a05h  ; end h sync
  dw  04009h  ; cell height
  dw  08810h  ; v sync start
  dw  08511h  ; v sync end and protect cr0-cr7
  dw  06712h  ; vertical displayed
  dw      02d13h  ; offset
  dw  00014h  ; turn off dword mode
  dw  06d15h  ; v blank start
  dw  0ba16h  ; v blank end
  dw  0e317h  ; turn on byte mode
  dw      360
  dw      360

vga_X376Y308 label word
  db      0e7h
  db      18
  dw  06e00h  ; horz total
  dw  05d01h  ; horz displayed
  dw  05e02h  ; start horz blanking
  dw  09103h  ; end horz blanking
  dw  06204h  ; start h sync
  dw  08f05h  ; end h sync
  dw  06206h  ; vertical total
  dw  00f07h  ; overflow
  dw      04009h  ;
  dw      0310fh  ;
  dw  03710h  ; v sync start
  dw  08911h  ; v sync end and protect cr0-cr7
  dw  03312h  ; vertical displayed
  dw  02f13h  ; offset
  dw  00014h  ; turn off dword mode
  dw  03c15h  ; v blank start
  dw  05c16h  ; v blank end
  dw  0e317h  ; turn on byte mode
  dw      376
  dw      308

vga_X376Y564 label word
  db      0e7h
  db      18
  dw  06e00h  ; horz total
  dw  05d01h  ; horz displayed
  dw  05e02h  ; start horz blanking
  dw  09103h  ; end horz blanking
  dw  06204h  ; start h sync
  dw  08f05h  ; end h sync
  dw  06206h  ; vertical total
  dw  0f007h  ; overflow
  dw      06009h  ;
  dw      0310fh  ;
  dw  03710h  ; v sync start
  dw  08911h  ; v sync end and protect cr0-cr7
  dw  03312h  ; vertical displayed
  dw  02f13h  ; offset
  dw  00014h  ; turn off dword mode
  dw  03c15h  ; v blank start
  dw      05c16h  ; v blank end
  dw      0e317h  ; turn on byte mode
  dw      376
  dw      564




  You will find these modes in my DOS32 - utilities project all neatly in the
TVGA drivers (as soon as I release it publicly).  Plus the VESA driver
and the standard driver.  All will be capable of mouse and text. I have a
BETA version so far but the newest version should be out in MAY.96 or so.


Email : subdeath@globalserve.on.ca
URL : http://www.globalserve.on.ca/~subdeath

TTYL


BTW : does ne1 know how to read the pixels from the screen?  Plane enabling
  does not work for reading. Email me if you know please.  If important
  for the project.

