home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 67.img / VGAKIT34.ZIP / MODE13X.ASM < prev    next >
Assembly Source File  |  1990-05-04  |  2KB  |  94 lines

  1.     include    model.h
  2.  
  3. ;
  4. ;    VGAKIT Version 3.4
  5. ;
  6. ;    Copyright 1988,89,90 John Bridges
  7. ;    Free for use in commercial, shareware or freeware applications
  8. ;
  9. ;    MODE13X.ASM
  10. ;
  11. ;    Set the VGA 360 by 480 256 color mode.
  12. ;
  13. ;
  14. .data
  15.     extrn    maxx:word,maxy:word
  16. .code
  17.  
  18. vptbl    dw    06b00h    ; horz total
  19.     dw    05901h    ; horz displayed
  20.     dw    05a02h    ; start horz blanking
  21.     dw    08e03h    ; end horz blanking
  22.     dw    05e04h    ; start h sync
  23.     dw    08a05h    ; end h sync
  24.     dw    00d06h    ; vertical total
  25.     dw    03e07h    ; overflow
  26.     dw    04009h    ; cell height
  27.     dw    0ea10h    ; v sync start
  28.     dw    0ac11h    ; v sync end and protect cr0-cr7
  29.     dw    0df12h    ; vertical displayed
  30.     dw    02d13h    ; offset
  31.     dw    00014h    ; turn off dword mode
  32.     dw    0e715h    ; v blank start
  33.     dw    00616h    ; v blank end
  34.     dw    0e317h    ; turn on byte mode
  35. vpend    label    word
  36.  
  37.  
  38. mode13x    proc
  39.     mov    [maxx],360
  40.     mov    [maxy],480
  41.     push    ds
  42.     mov    ax,cs
  43.     mov    ds,ax
  44.  
  45.     mov    ax,13h        ; start with standard mode 13h
  46.     int    10h        ; let the bios set the mode
  47.  
  48.     mov    dx,3c4h        ; alter sequencer registers
  49.     mov    ax,0604h    ; disable chain 4
  50.     out    dx,ax
  51.  
  52.     mov    ax,0f02h    ; set write plane mask to all bit planes
  53.     out    dx,ax
  54.     push    di
  55.     xor    di,di
  56.     mov    ax,0a000h    ; screen starts at segment A000
  57.     mov    es,ax
  58.     mov    cx,21600    ; ((XSIZE*YSIZE)/(4 planes))/(2 bytes per word)
  59.     xor    ax,ax
  60.     cld
  61.     repnz    stosw        ; clear the whole of the screen
  62.     pop    di
  63.  
  64.     mov    ax,0100h    ; synchronous reset
  65.     out    dx,ax        ; asserted
  66.     mov    dx,3c2h        ; misc output
  67.     mov    al,0e7h        ; use 28 mHz dot clock
  68.     out    dx,al        ; select it
  69.     mov    dx,3c4h        ; sequencer again
  70.     mov    ax,0300h    ; restart sequencer
  71.     out    dx,ax        ; running again
  72.  
  73.     mov    dx,3d4h        ; alter crtc registers
  74.  
  75.     mov    al,11h        ; cr11
  76.     out    dx,al        ; current value
  77.     inc    dx        ; point to data
  78.     in    al,dx        ; get cr11 value
  79.     and    al,7fh        ; remove cr0 -> cr7
  80.     out    dx,al        ;    write protect
  81.     dec    dx        ; point to index
  82.     cld
  83.     mov    si,offset vptbl
  84.     mov    cx,((offset vpend)-(offset vptbl)) shr 1
  85. outlp:    lodsw
  86.     out    dx,ax
  87.     loop    outlp
  88.     pop    ds
  89.     ret
  90. mode13x    endp
  91.  
  92.     end
  93.  
  94.