home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #6 / amigaacscoverdisc1998-061998.iso / games / descent / source / texmap / vesa.asm < prev   
Assembly Source File  |  1998-06-08  |  28KB  |  1,323 lines

  1. ;THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  2. ;SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
  3. ;END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  4. ;ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  5. ;IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  6. ;SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  7. ;FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  8. ;CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
  9. ;AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
  10. ;COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
  11. ;
  12. ; $Source: f:/miner/source/texmap/rcs/vesa.asm $
  13. ; $Revision: 1.1 $
  14. ; $Author: mike $
  15. ; $Date: 1993/09/08 17:29:56 $
  16. ;
  17. ; Routine to copy buffer to VESA memory.
  18. ;
  19. ; $Log: vesa.asm $
  20. ; Revision 1.1  1993/09/08  17:29:56  mike
  21. ; Initial revision
  22. ;
  23. ;
  24.  
  25. .386
  26.  
  27. INCLUDE VGAREGS.INC
  28.  
  29.  
  30. _DATA   SEGMENT BYTE PUBLIC USE32 'DATA'
  31.  
  32.  
  33.         BufferPtr   dd  ?
  34.         BufferSeg   dw  ?
  35.         GoalMode    dw  ?
  36.         LastPage    dd  0FFFFFFFFh
  37.  
  38.         ; Information from VESA return SuperVGA Information
  39.  
  40.         VESAVersion         dw  ?
  41.         OEMStringPtr        dd  ?
  42.         Capabilities        dd  ?
  43.         VideoModePtr        dd  ?
  44.         TotalMemory         dw  ?
  45.         WinGranularity      dw  ?
  46.         WinSize             dw  ?
  47.         WinFuncPtr          dd  ?
  48.         BytesPerScanLine    dd  ?
  49.         PageSizeShift       db  ?
  50.  
  51.         VESA_Signature      = 041534556h
  52.  
  53. REALREGS    STRUCT
  54.         RealEDI     dd      ?
  55.         RealESI     dd      ?
  56.         RealEBP     dd      ?
  57.         Reserved    dd      ?
  58.         RealEBX     dd      ?
  59.         RealEDX     dd      ?
  60.         RealECX     dd      ?
  61.         RealEAX     dd      ?
  62.         RealFlags   dw      ?
  63.         RealES      dw      ?
  64.         RealDS      dw      ?
  65.         RealFS      dw      ?
  66.         RealGS      dw      ?
  67.         RealIP      dw      ?
  68.         RealCS      dw      ?
  69.         RealSP      dw      ?
  70.         RealSS      dw      ?
  71. REALREGS    ENDS
  72.  
  73.         regs    REALREGS    < >
  74.  
  75.  
  76. _DATA   ENDS
  77.  
  78. DGROUP  GROUP _DATA
  79.  
  80.  
  81. _TEXT   SEGMENT BYTE PUBLIC USE32 'CODE'
  82.  
  83.         ASSUME  DS:_DATA
  84.         ASSUME  CS:_TEXT
  85.  
  86. EBXFarTo32:
  87.             push    ecx
  88.             mov     ecx, ebx
  89.             and     ecx, 0FFFF0000h
  90.             shr     ecx, 12
  91.             and     ebx, 0FFFFh
  92.             add     ebx, ecx
  93.             pop     ecx
  94.             ret
  95.  
  96. PUBLIC  gr_vesa_setmode_
  97.  
  98. gr_vesa_setmode_:
  99.  
  100.             push    ebx
  101.             push    ecx
  102.             push    edx
  103.             push    edi
  104.  
  105.             mov     GoalMode, ax
  106.  
  107.             ; Allocate a 256 byte block of DOS memory using DPMI
  108.             mov     ax, 0100h
  109.             mov     bx, 64      ; 64 paragraphs = 256 byte
  110.             int     31h
  111.             jc      NoMemory
  112.             ; AX = real mode segment of allocated block
  113.             and     eax, 0FFFFh
  114.             mov     BufferSeg, ax
  115.             shl     eax, 4      ; EAX = 32-bit pointer to DOS memory
  116.             mov     BufferPtr, eax
  117.  
  118.             ; Get SuperVGA information
  119.             mov     ax, BufferSeg
  120.             mov     regs.RealEDI, 0
  121.             mov     regs.RealESI, 0
  122.             mov     regs.RealEBP, 0
  123.             mov     regs.Reserved, 0
  124.             mov     regs.RealEBX, 0
  125.             mov     regs.RealEDX, 0
  126.             mov     regs.RealECX, 0
  127.             mov     regs.RealEAX, 04f00h
  128.             mov     regs.RealFlags, 0
  129.             mov     regs.RealES, ax
  130.             mov     regs.RealDS, 0
  131.             mov     regs.RealFS, 0
  132.             mov     regs.RealGS, 0
  133.             mov     regs.RealIP, 0
  134.             mov     regs.RealCS, 0
  135.             mov     regs.RealSP, 0
  136.             mov     regs.RealSS, 0
  137.  
  138.             mov     bl, 10h
  139.             xor     bh, bh
  140.             xor     cx, cx
  141.             mov     edi, offset regs
  142.             mov     ax, 0300h
  143.             int     31h
  144.  
  145.             mov     eax, regs.RealEAX
  146.             cmp     ax, 04fh
  147.             jne     BadStatus
  148.  
  149.             ; Make sure there is a VESA signature
  150.             mov     eax, BufferPtr
  151.             cmp     dword ptr[eax+0], VESA_Signature
  152.             jne     NoVESADriver
  153.  
  154.             ; We now have a valid VESA driver loaded
  155.  
  156.             mov     bx, word ptr [eax+4]
  157.             mov     VESAVersion, bx
  158.  
  159.             mov     ebx, dword ptr [eax+6]
  160.             call    EBXFarTo32
  161.             mov     OEMStringPtr, ebx
  162.  
  163.             mov     ebx, dword ptr [eax+10]
  164.             mov     Capabilities, ebx
  165.  
  166.             mov     bx, word ptr [eax+18]
  167.             mov     TotalMemory, bx
  168.  
  169.             mov     ebx, dword ptr [eax+14]
  170.             call    EBXFarTo32
  171.             mov     VideoModePtr, ebx
  172.  
  173. TryAnotherMode:
  174.             mov     ax, word ptr [ebx]
  175.             add     ebx, 2
  176.             cmp     ax, GoalMode
  177.             je      ModeSupported
  178.             cmp     ax, -1
  179.             je      ModeNotSupported
  180.             jmp     TryAnotherMode
  181.  
  182. ModeSupported:
  183.  
  184.             ; Get SuperVGA information
  185.             mov     ax, BufferSeg
  186.             movzx   ecx, GoalMode
  187.             mov     regs.RealEDI, 0
  188.             mov     regs.RealESI, 0
  189.             mov     regs.RealEBP, 0
  190.             mov     regs.Reserved, 0
  191.             mov     regs.RealEBX, 0
  192.             mov     regs.RealEDX, 0
  193.             mov     regs.RealECX, ecx
  194.             mov     regs.RealEAX, 04f01h
  195.             mov     regs.RealFlags, 0
  196.             mov     regs.RealES, ax
  197.             mov     regs.RealDS, 0
  198.             mov     regs.RealFS, 0
  199.             mov     regs.RealGS, 0
  200.             mov     regs.RealIP, 0
  201.             mov     regs.RealCS, 0
  202.             mov     regs.RealSP, 0
  203.             mov     regs.RealSS, 0
  204.  
  205.             mov     bl, 10h
  206.             xor     bh, bh
  207.             xor     cx, cx
  208.             mov     edi, offset regs
  209.             mov     ax, 0300h
  210.             int     31h
  211.  
  212.             mov     eax, regs.RealEAX
  213.             cmp     ax, 04fh
  214.             jne     BadStatus
  215.  
  216.  
  217.             ; Check if this mode supported by hardware.
  218.             mov     eax, BufferPtr
  219.             mov     bx, [eax]
  220.             bt      bx, 0
  221.             jnc     HardwareNotSupported
  222.  
  223.  
  224.             mov     bx, [eax+4]
  225.             cmp     bx, 64
  226.             jne     @f
  227.             mov     PageSizeShift, 0
  228.             jmp     GranularityOK
  229. @@:         cmp     bx, 32
  230.             jne     @f
  231.             mov     PageSizeShift, 1
  232.             jmp     GranularityOK
  233. @@:         cmp     bx, 16
  234.             jne     @f
  235.             mov     PageSizeShift, 2
  236.             jmp     GranularityOK
  237. @@:         cmp     bx, 8
  238.             jne     @f
  239.             mov     PageSizeShift, 3
  240.             jmp     GranularityOK
  241. @@:         cmp     bx, 4
  242.             jne     @f
  243.             mov     PageSizeShift, 4
  244.             jmp     GranularityOK
  245. @@:         cmp     bx, 2
  246.             jne     @f
  247.             mov     PageSizeShift, 5
  248.             jmp     GranularityOK
  249. @@:         cmp     bx, 1
  250.             jne     WrongGranularity
  251.             mov     PageSizeShift, 6
  252.  
  253. GranularityOK:
  254.             shl     bx, 10
  255.             mov     WinGranularity, bx
  256.  
  257.             mov     bx, [eax+6]
  258.             mov     WinSize, bx
  259.  
  260.             mov     ebx, [eax+12]
  261.             call    EBXFarTo32
  262.             mov     WinFuncPtr, ebx
  263.  
  264.             mov     bx, [eax+16]
  265.             and     ebx, 0ffffh
  266.             mov     BytesPerScanLine, ebx
  267.  
  268.             ; Set the mode!
  269.             mov     ax, 04f02h
  270.             mov     bx, GoalMode
  271.             int     10h
  272.  
  273.             mov     eax, 0
  274.  
  275.             jmp     Done
  276.  
  277. WrongLogicalWidth:
  278.             mov     eax, 1
  279.             jmp     Done
  280.  
  281. WrongGranularity:
  282.             mov     eax, 2
  283.             jmp     Done
  284.  
  285. HardwareNotSupported:
  286.             mov     eax, 3
  287.             jmp     Done
  288.  
  289. ModeNotSupported:
  290.             mov     eax, 4
  291.             jmp     Done
  292.  
  293. NoVESADriver:
  294.             mov     eax, 5
  295.             jmp     Done
  296.  
  297. BadStatus:
  298.             mov     eax, 6
  299.             jmp     Done
  300.  
  301. NoMemory:
  302.             mov     eax, 7
  303.  
  304. Done:
  305.             pop     edi
  306.             pop     edx
  307.             pop     ecx
  308.             pop     ebx
  309.  
  310.             ret
  311.  
  312. PUBLIC  gr_vesa_setpage_
  313.  
  314. gr_vesa_setpage_:
  315.  
  316.             ; EAX = 64K Page number
  317.  
  318.             cmp     eax, LastPage
  319.             jne     @f
  320.             ret
  321. @@:         mov     LastPage, eax
  322.             push    edx
  323.             push    ebx
  324.             push    ecx
  325.             mov     edx, eax
  326.             mov     cl, PageSizeShift
  327.             shl     edx, cl         ; Convert from 64K pages to GranUnit pages.
  328.             xor     ebx, ebx        ; BH=Select window, BL=Window A
  329.             mov     eax, 04f05h     ; AX=Super VGA video memory window control
  330.             int     10h
  331.             pop     ecx
  332.             pop     ebx
  333.             pop     edx
  334.             ret
  335.  
  336. PUBLIC  gr_vesa_incpage_
  337.  
  338. gr_vesa_incpage_:
  339.  
  340.             push    eax
  341.             push    ebx
  342.             push    ecx
  343.             push    edx
  344.             inc     LastPage
  345.             mov     edx, LastPage
  346.             mov     cl, PageSizeShift
  347.             shl     edx, cl         ; Convert from 64K pages to GranUnit pages.
  348.             xor     ebx, ebx        ; BH=Select window, BL=Window A
  349.             mov     eax, 04f05h     ; AX=Super VGA video memory window control
  350.             int     10h
  351.             pop     edx
  352.             pop     ecx
  353.             pop     ebx
  354.             pop     eax
  355.             ret
  356.  
  357.  
  358. PUBLIC  gr_vesa_setstart_
  359.  
  360. gr_vesa_setstart_:
  361.  
  362.             ; EAX = First column
  363.             ; EDX = First row
  364.             push    ebx
  365.             push    ecx
  366.             mov     ecx, eax
  367.             mov     eax, 4f07h
  368.             xor     ebx, ebx
  369.             int     10h
  370.             pop     ecx
  371.             pop     ebx
  372.             ret
  373.  
  374.  
  375. PUBLIC  gr_vesa_setlogical_
  376.  
  377. gr_vesa_setlogical_:
  378.  
  379.             ; EAX = line width
  380.             push    ebx
  381.             push    ecx
  382.             push    edx
  383.  
  384.             mov     cx, ax
  385.             mov     ax, 04f06h
  386.             mov     bl, 0
  387.             int     10h
  388.             and     ebx, 0ffffh
  389.             mov     BytesPerScanLine, ebx
  390.             mov     ax, cx
  391.  
  392.             pop     edx
  393.             pop     ecx
  394.             pop     ebx
  395.             ret
  396.  
  397.  
  398.  
  399.  
  400. PUBLIC gr_vesa_pixel8_
  401.  
  402. gr_vesa_pixel8_:
  403.  
  404.             ; EAX = x
  405.             ; EDX = y
  406.             ; EBX = 8-bit color
  407.  
  408.             imul    edx, BytesPerScanLine
  409.             add     edx, eax        ; EDX = y*bpr+x1
  410.  
  411.             mov     eax, edx
  412.             and     edx, 00FFFFh
  413.             shr     eax, 16
  414.  
  415.             cmp     eax, LastPage
  416.             jne     @f
  417.             mov     [edx+0A0000h], bl
  418.             ret
  419.  
  420. @@:         mov     LastPage, eax
  421.             push    edx
  422.             push    ecx
  423.             push    ebx
  424.             mov     edx, eax
  425.             mov     cl, PageSizeShift
  426.             shl     edx, cl         ; Convert from 64K pages to GranUnit pages.
  427.             xor     ebx, ebx        ; BH=Select window, BL=Window A
  428.             mov     eax, 04f05h     ; AX=Super VGA video memory window control
  429.             int     10h
  430.             pop     ebx
  431.             pop     ecx
  432.             pop     edx
  433.             mov     [edx+0A0000h], bl
  434.             ret
  435.  
  436. PUBLIC gr_vesa_pixel15_
  437.  
  438. gr_vesa_pixel15_:
  439.  
  440.             ; EAX = x
  441.             ; EDX = y
  442.             ; EBX = 15-bit color
  443.  
  444.             imul    edx, BytesPerScanLine
  445.             shl     eax, 1
  446.             add     edx, eax        ; EDX = y*bpr+x1*2
  447.  
  448.             mov     eax, edx
  449.             and     edx, 00FFFFh
  450.             shr     eax, 16
  451.  
  452.             cmp     eax, LastPage
  453.             jne     @f
  454.             mov     [edx+0A0000h], bx
  455.             ret
  456.  
  457. @@:         mov     LastPage, eax
  458.             push    edx
  459.             push    ecx
  460.             push    ebx
  461.             mov     edx, eax
  462.             mov     cl, PageSizeShift
  463.             shl     edx, cl         ; Convert from 64K pages to GranUnit pages.
  464.             xor     ebx, ebx        ; BH=Select window, BL=Window A
  465.             mov     eax, 04f05h     ; AX=Super VGA video memory window control
  466.             int     10h
  467.             pop     ebx
  468.             pop     ecx
  469.             pop     edx
  470.             mov     [edx+0A0000h], bx
  471.             ret
  472.  
  473.  
  474.  
  475. PUBLIC gr_vesa_copy_canvas_
  476.  
  477. gr_vesa_copy_canvas_:
  478.             ; EAX = pointer to canvas
  479.  
  480.             push    ebx
  481.             push    ecx
  482.             push    edx
  483.             push    edi
  484.             push    esi
  485.  
  486.             mov     esi, eax
  487.  
  488. ; This is code generated by BLOCK.BAS that moves a block of system
  489. ; memory to SVGA memory.
  490. ; This particular routine moves a block of size  300 x 200 x 2  bpp from
  491. ; ESI to ( 0 , 0 ) on the SVGA screen. 
  492.         MOV  EBX,  0 
  493.         MOV  EDX,  150 
  494.         MOV  EAX,  0 
  495.         CALL gr_vesa_setpage_
  496. ; Draw line  0 
  497.         MOV EDI, 0A0000h
  498.         MOV ECX, EDX
  499.         REP MOVSD
  500. ; Draw line  1 
  501.         MOV EDI, 0A0500h
  502.         MOV ECX, EDX
  503.         REP MOVSD
  504. ; Draw line  2 
  505.         MOV EDI, 0A0A00h
  506.         MOV ECX, EDX
  507.         REP MOVSD
  508. ; Draw line  3 
  509.         MOV EDI, 0A0F00h
  510.         MOV ECX, EDX
  511.         REP MOVSD
  512. ; Draw line  4 
  513.         MOV EDI, 0A1400h
  514.         MOV ECX, EDX
  515.         REP MOVSD
  516. ; Draw line  5 
  517.         MOV EDI, 0A1900h
  518.         MOV ECX, EDX
  519.         REP MOVSD
  520. ; Draw line  6 
  521.         MOV EDI, 0A1E00h
  522.         MOV ECX, EDX
  523.         REP MOVSD
  524. ; Draw line  7 
  525.         MOV EDI, 0A2300h
  526.         MOV ECX, EDX
  527.         REP MOVSD
  528. ; Draw line  8 
  529.         MOV EDI, 0A2800h
  530.         MOV ECX, EDX
  531.         REP MOVSD
  532. ; Draw line  9 
  533.         MOV EDI, 0A2D00h
  534.         MOV ECX, EDX
  535.         REP MOVSD
  536. ; Draw line  10 
  537.         MOV EDI, 0A3200h
  538.         MOV ECX, EDX
  539.         REP MOVSD
  540. ; Draw line  11 
  541.         MOV EDI, 0A3700h
  542.         MOV ECX, EDX
  543.         REP MOVSD
  544. ; Draw line  12 
  545.         MOV EDI, 0A3C00h
  546.         MOV ECX, EDX
  547.         REP MOVSD
  548. ; Draw line  13 
  549.         MOV EDI, 0A4100h
  550.         MOV ECX, EDX
  551.         REP MOVSD
  552. ; Draw line  14 
  553.         MOV EDI, 0A4600h
  554.         MOV ECX, EDX
  555.         REP MOVSD
  556. ; Draw line  15 
  557.         MOV EDI, 0A4B00h
  558.         MOV ECX, EDX
  559.         REP MOVSD
  560. ; Draw line  16 
  561.         MOV EDI, 0A5000h
  562.         MOV ECX, EDX
  563.         REP MOVSD
  564. ; Draw line  17 
  565.         MOV EDI, 0A5500h
  566.         MOV ECX, EDX
  567.         REP MOVSD
  568. ; Draw line  18 
  569.         MOV EDI, 0A5A00h
  570.         MOV ECX, EDX
  571.         REP MOVSD
  572. ; Draw line  19 
  573.         MOV EDI, 0A5F00h
  574.         MOV ECX, EDX
  575.         REP MOVSD
  576. ; Draw line  20 
  577.         MOV EDI, 0A6400h
  578.         MOV ECX, EDX
  579.         REP MOVSD
  580. ; Draw line  21 
  581.         MOV EDI, 0A6900h
  582.         MOV ECX, EDX
  583.         REP MOVSD
  584. ; Draw line  22 
  585.         MOV EDI, 0A6E00h
  586.         MOV ECX, EDX
  587.         REP MOVSD
  588. ; Draw line  23 
  589.         MOV EDI, 0A7300h
  590.         MOV ECX, EDX
  591.         REP MOVSD
  592. ; Draw line  24 
  593.         MOV EDI, 0A7800h
  594.         MOV ECX, EDX
  595.         REP MOVSD
  596. ; Draw line  25 
  597.         MOV EDI, 0A7D00h
  598.         MOV ECX, EDX
  599.         REP MOVSD
  600. ; Draw line  26 
  601.         MOV EDI, 0A8200h
  602.         MOV ECX, EDX
  603.         REP MOVSD
  604. ; Draw line  27 
  605.         MOV EDI, 0A8700h
  606.         MOV ECX, EDX
  607.         REP MOVSD
  608. ; Draw line  28 
  609.         MOV EDI, 0A8C00h
  610.         MOV ECX, EDX
  611.         REP MOVSD
  612. ; Draw line  29 
  613.         MOV EDI, 0A9100h
  614.         MOV ECX, EDX
  615.         REP MOVSD
  616. ; Draw line  30 
  617.         MOV EDI, 0A9600h
  618.         MOV ECX, EDX
  619.         REP MOVSD
  620. ; Draw line  31 
  621.         MOV EDI, 0A9B00h
  622.         MOV ECX, EDX
  623.         REP MOVSD
  624. ; Draw line  32 
  625.         MOV EDI, 0AA000h
  626.         MOV ECX, EDX
  627.         REP MOVSD
  628. ; Draw line  33 
  629.         MOV EDI, 0AA500h
  630.         MOV ECX, EDX
  631.         REP MOVSD
  632. ; Draw line  34 
  633.         MOV EDI, 0AAA00h
  634.         MOV ECX, EDX
  635.         REP MOVSD
  636. ; Draw line  35 
  637.         MOV EDI, 0AAF00h
  638.         MOV ECX, EDX
  639.         REP MOVSD
  640. ; Draw line  36 
  641.         MOV EDI, 0AB400h
  642.         MOV ECX, EDX
  643.         REP MOVSD
  644. ; Draw line  37 
  645.         MOV EDI, 0AB900h
  646.         MOV ECX, EDX
  647.         REP MOVSD
  648. ; Draw line  38 
  649.         MOV EDI, 0ABE00h
  650.         MOV ECX, EDX
  651.         REP MOVSD
  652. ; Draw line  39 
  653.         MOV EDI, 0AC300h
  654.         MOV ECX, EDX
  655.         REP MOVSD
  656. ; Draw line  40 
  657.         MOV EDI, 0AC800h
  658.         MOV ECX, EDX
  659.         REP MOVSD
  660. ; Draw line  41 
  661.         MOV EDI, 0ACD00h
  662.         MOV ECX, EDX
  663.         REP MOVSD
  664. ; Draw line  42 
  665.         MOV EDI, 0AD200h
  666.         MOV ECX, EDX
  667.         REP MOVSD
  668. ; Draw line  43 
  669.         MOV EDI, 0AD700h
  670.         MOV ECX, EDX
  671.         REP MOVSD
  672. ; Draw line  44 
  673.         MOV EDI, 0ADC00h
  674.         MOV ECX, EDX
  675.         REP MOVSD
  676. ; Draw line  45 
  677.         MOV EDI, 0AE100h
  678.         MOV ECX, EDX
  679.         REP MOVSD
  680. ; Draw line  46 
  681.         MOV EDI, 0AE600h
  682.         MOV ECX, EDX
  683.         REP MOVSD
  684. ; Draw line  47 
  685.         MOV EDI, 0AEB00h
  686.         MOV ECX, EDX
  687.         REP MOVSD
  688. ; Draw line  48 
  689.         MOV EDI, 0AF000h
  690.         MOV ECX, EDX
  691.         REP MOVSD
  692. ; Draw line  49 
  693.         MOV EDI, 0AF500h
  694.         MOV ECX, EDX
  695.         REP MOVSD
  696. ; Draw line  50 
  697.         MOV EDI, 0AFA00h
  698.         MOV ECX, EDX
  699.         REP MOVSD
  700. ; Draw line  51 
  701.         MOV EDI, 0AFF00h
  702.         MOV ECX,  64 
  703.         REP MOVSD
  704.         CALL gr_vesa_incpage_
  705. ; Draw line  51 
  706.         MOV EDI, 0A0000h
  707.         MOV ECX,  86 
  708.         REP MOVSD
  709. ; Draw line  52 
  710.         MOV EDI, 0A0400h
  711.         MOV ECX, EDX
  712.         REP MOVSD
  713. ; Draw line  53 
  714.         MOV EDI, 0A0900h
  715.         MOV ECX, EDX
  716.         REP MOVSD
  717. ; Draw line  54 
  718.         MOV EDI, 0A0E00h
  719.         MOV ECX, EDX
  720.         REP MOVSD
  721. ; Draw line  55 
  722.         MOV EDI, 0A1300h
  723.         MOV ECX, EDX
  724.         REP MOVSD
  725. ; Draw line  56 
  726.         MOV EDI, 0A1800h
  727.         MOV ECX, EDX
  728.         REP MOVSD
  729. ; Draw line  57 
  730.         MOV EDI, 0A1D00h
  731.         MOV ECX, EDX
  732.         REP MOVSD
  733. ; Draw line  58 
  734.         MOV EDI, 0A2200h
  735.         MOV ECX, EDX
  736.         REP MOVSD
  737. ; Draw line  59 
  738.         MOV EDI, 0A2700h
  739.         MOV ECX, EDX
  740.         REP MOVSD
  741. ; Draw line  60 
  742.         MOV EDI, 0A2C00h
  743.         MOV ECX, EDX
  744.         REP MOVSD
  745. ; Draw line  61 
  746.         MOV EDI, 0A3100h
  747.         MOV ECX, EDX
  748.         REP MOVSD
  749. ; Draw line  62 
  750.         MOV EDI, 0A3600h
  751.         MOV ECX, EDX
  752.         REP MOVSD
  753. ; Draw line  63 
  754.         MOV EDI, 0A3B00h
  755.         MOV ECX, EDX
  756.         REP MOVSD
  757. ; Draw line  64 
  758.         MOV EDI, 0A4000h
  759.         MOV ECX, EDX
  760.         REP MOVSD
  761. ; Draw line  65 
  762.         MOV EDI, 0A4500h
  763.         MOV ECX, EDX
  764.         REP MOVSD
  765. ; Draw line  66 
  766.         MOV EDI, 0A4A00h
  767.         MOV ECX, EDX
  768.         REP MOVSD
  769. ; Draw line  67 
  770.         MOV EDI, 0A4F00h
  771.         MOV ECX, EDX
  772.         REP MOVSD
  773. ; Draw line  68 
  774.         MOV EDI, 0A5400h
  775.         MOV ECX, EDX
  776.         REP MOVSD
  777. ; Draw line  69 
  778.         MOV EDI, 0A5900h
  779.         MOV ECX, EDX
  780.         REP MOVSD
  781. ; Draw line  70 
  782.         MOV EDI, 0A5E00h
  783.         MOV ECX, EDX
  784.         REP MOVSD
  785. ; Draw line  71 
  786.         MOV EDI, 0A6300h
  787.         MOV ECX, EDX
  788.         REP MOVSD
  789. ; Draw line  72 
  790.         MOV EDI, 0A6800h
  791.         MOV ECX, EDX
  792.         REP MOVSD
  793. ; Draw line  73 
  794.         MOV EDI, 0A6D00h
  795.         MOV ECX, EDX
  796.         REP MOVSD
  797. ; Draw line  74 
  798.         MOV EDI, 0A7200h
  799.         MOV ECX, EDX
  800.         REP MOVSD
  801. ; Draw line  75 
  802.         MOV EDI, 0A7700h
  803.         MOV ECX, EDX
  804.         REP MOVSD
  805. ; Draw line  76 
  806.         MOV EDI, 0A7C00h
  807.         MOV ECX, EDX
  808.         REP MOVSD
  809. ; Draw line  77 
  810.         MOV EDI, 0A8100h
  811.         MOV ECX, EDX
  812.         REP MOVSD
  813. ; Draw line  78 
  814.         MOV EDI, 0A8600h
  815.         MOV ECX, EDX
  816.         REP MOVSD
  817. ; Draw line  79 
  818.         MOV EDI, 0A8B00h
  819.         MOV ECX, EDX
  820.         REP MOVSD
  821. ; Draw line  80 
  822.         MOV EDI, 0A9000h
  823.         MOV ECX, EDX
  824.         REP MOVSD
  825. ; Draw line  81 
  826.         MOV EDI, 0A9500h
  827.         MOV ECX, EDX
  828.         REP MOVSD
  829. ; Draw line  82 
  830.         MOV EDI, 0A9A00h
  831.         MOV ECX, EDX
  832.         REP MOVSD
  833. ; Draw line  83 
  834.         MOV EDI, 0A9F00h
  835.         MOV ECX, EDX
  836.         REP MOVSD
  837. ; Draw line  84 
  838.         MOV EDI, 0AA400h
  839.         MOV ECX, EDX
  840.         REP MOVSD
  841. ; Draw line  85 
  842.         MOV EDI, 0AA900h
  843.         MOV ECX, EDX
  844.         REP MOVSD
  845. ; Draw line  86 
  846.         MOV EDI, 0AAE00h
  847.         MOV ECX, EDX
  848.         REP MOVSD
  849. ; Draw line  87 
  850.         MOV EDI, 0AB300h
  851.         MOV ECX, EDX
  852.         REP MOVSD
  853. ; Draw line  88 
  854.         MOV EDI, 0AB800h
  855.         MOV ECX, EDX
  856.         REP MOVSD
  857. ; Draw line  89 
  858.         MOV EDI, 0ABD00h
  859.         MOV ECX, EDX
  860.         REP MOVSD
  861. ; Draw line  90 
  862.         MOV EDI, 0AC200h
  863.         MOV ECX, EDX
  864.         REP MOVSD
  865. ; Draw line  91 
  866.         MOV EDI, 0AC700h
  867.         MOV ECX, EDX
  868.         REP MOVSD
  869. ; Draw line  92 
  870.         MOV EDI, 0ACC00h
  871.         MOV ECX, EDX
  872.         REP MOVSD
  873. ; Draw line  93 
  874.         MOV EDI, 0AD100h
  875.         MOV ECX, EDX
  876.         REP MOVSD
  877. ; Draw line  94 
  878.         MOV EDI, 0AD600h
  879.         MOV ECX, EDX
  880.         REP MOVSD
  881. ; Draw line  95 
  882.         MOV EDI, 0ADB00h
  883.         MOV ECX, EDX
  884.         REP MOVSD
  885. ; Draw line  96 
  886.         MOV EDI, 0AE000h
  887.         MOV ECX, EDX
  888.         REP MOVSD
  889. ; Draw line  97 
  890.         MOV EDI, 0AE500h
  891.         MOV ECX, EDX
  892.         REP MOVSD
  893. ; Draw line  98 
  894.         MOV EDI, 0AEA00h
  895.         MOV ECX, EDX
  896.         REP MOVSD
  897. ; Draw line  99 
  898.         MOV EDI, 0AEF00h
  899.         MOV ECX, EDX
  900.         REP MOVSD
  901. ; Draw line  100 
  902.         MOV EDI, 0AF400h
  903.         MOV ECX, EDX
  904.         REP MOVSD
  905. ; Draw line  101 
  906.         MOV EDI, 0AF900h
  907.         MOV ECX, EDX
  908.         REP MOVSD
  909. ; Draw line  102 
  910.         MOV EDI, 0AFE00h
  911.         MOV ECX,  128 
  912.         REP MOVSD
  913.         CALL gr_vesa_incpage_
  914. ; Draw line  102 
  915.         MOV EDI, 0A0000h
  916.         MOV ECX,  22 
  917.         REP MOVSD
  918. ; Draw line  103 
  919.         MOV EDI, 0A0300h
  920.         MOV ECX, EDX
  921.         REP MOVSD
  922. ; Draw line  104 
  923.         MOV EDI, 0A0800h
  924.         MOV ECX, EDX
  925.         REP MOVSD
  926. ; Draw line  105 
  927.         MOV EDI, 0A0D00h
  928.         MOV ECX, EDX
  929.         REP MOVSD
  930. ; Draw line  106 
  931.         MOV EDI, 0A1200h
  932.         MOV ECX, EDX
  933.         REP MOVSD
  934. ; Draw line  107 
  935.         MOV EDI, 0A1700h
  936.         MOV ECX, EDX
  937.         REP MOVSD
  938. ; Draw line  108 
  939.         MOV EDI, 0A1C00h
  940.         MOV ECX, EDX
  941.         REP MOVSD
  942. ; Draw line  109 
  943.         MOV EDI, 0A2100h
  944.         MOV ECX, EDX
  945.         REP MOVSD
  946. ; Draw line  110 
  947.         MOV EDI, 0A2600h
  948.         MOV ECX, EDX
  949.         REP MOVSD
  950. ; Draw line  111 
  951.         MOV EDI, 0A2B00h
  952.         MOV ECX, EDX
  953.         REP MOVSD
  954. ; Draw line  112 
  955.         MOV EDI, 0A3000h
  956.         MOV ECX, EDX
  957.         REP MOVSD
  958. ; Draw line  113 
  959.         MOV EDI, 0A3500h
  960.         MOV ECX, EDX
  961.         REP MOVSD
  962. ; Draw line  114 
  963.         MOV EDI, 0A3A00h
  964.         MOV ECX, EDX
  965.         REP MOVSD
  966. ; Draw line  115 
  967.         MOV EDI, 0A3F00h
  968.         MOV ECX, EDX
  969.         REP MOVSD
  970. ; Draw line  116 
  971.         MOV EDI, 0A4400h
  972.         MOV ECX, EDX
  973.         REP MOVSD
  974. ; Draw line  117 
  975.         MOV EDI, 0A4900h
  976.         MOV ECX, EDX
  977.         REP MOVSD
  978. ; Draw line  118 
  979.         MOV EDI, 0A4E00h
  980.         MOV ECX, EDX
  981.         REP MOVSD
  982. ; Draw line  119 
  983.         MOV EDI, 0A5300h
  984.         MOV ECX, EDX
  985.         REP MOVSD
  986. ; Draw line  120 
  987.         MOV EDI, 0A5800h
  988.         MOV ECX, EDX
  989.         REP MOVSD
  990. ; Draw line  121 
  991.         MOV EDI, 0A5D00h
  992.         MOV ECX, EDX
  993.         REP MOVSD
  994. ; Draw line  122 
  995.         MOV EDI, 0A6200h
  996.         MOV ECX, EDX
  997.         REP MOVSD
  998. ; Draw line  123 
  999.         MOV EDI, 0A6700h
  1000.         MOV ECX, EDX
  1001.         REP MOVSD
  1002. ; Draw line  124 
  1003.         MOV EDI, 0A6C00h
  1004.         MOV ECX, EDX
  1005.         REP MOVSD
  1006. ; Draw line  125 
  1007.         MOV EDI, 0A7100h
  1008.         MOV ECX, EDX
  1009.         REP MOVSD
  1010. ; Draw line  126 
  1011.         MOV EDI, 0A7600h
  1012.         MOV ECX, EDX
  1013.         REP MOVSD
  1014. ; Draw line  127 
  1015.         MOV EDI, 0A7B00h
  1016.         MOV ECX, EDX
  1017.         REP MOVSD
  1018. ; Draw line  128 
  1019.         MOV EDI, 0A8000h
  1020.         MOV ECX, EDX
  1021.         REP MOVSD
  1022. ; Draw line  129 
  1023.         MOV EDI, 0A8500h
  1024.         MOV ECX, EDX
  1025.         REP MOVSD
  1026. ; Draw line  130 
  1027.         MOV EDI, 0A8A00h
  1028.         MOV ECX, EDX
  1029.         REP MOVSD
  1030. ; Draw line  131 
  1031.         MOV EDI, 0A8F00h
  1032.         MOV ECX, EDX
  1033.         REP MOVSD
  1034. ; Draw line  132 
  1035.         MOV EDI, 0A9400h
  1036.         MOV ECX, EDX
  1037.         REP MOVSD
  1038. ; Draw line  133 
  1039.         MOV EDI, 0A9900h
  1040.         MOV ECX, EDX
  1041.         REP MOVSD
  1042. ; Draw line  134 
  1043.         MOV EDI, 0A9E00h
  1044.         MOV ECX, EDX
  1045.         REP MOVSD
  1046. ; Draw line  135 
  1047.         MOV EDI, 0AA300h
  1048.         MOV ECX, EDX
  1049.         REP MOVSD
  1050. ; Draw line  136 
  1051.         MOV EDI, 0AA800h
  1052.         MOV ECX, EDX
  1053.         REP MOVSD
  1054. ; Draw line  137 
  1055.         MOV EDI, 0AAD00h
  1056.         MOV ECX, EDX
  1057.         REP MOVSD
  1058. ; Draw line  138 
  1059.         MOV EDI, 0AB200h
  1060.         MOV ECX, EDX
  1061.         REP MOVSD
  1062. ; Draw line  139 
  1063.         MOV EDI, 0AB700h
  1064.         MOV ECX, EDX
  1065.         REP MOVSD
  1066. ; Draw line  140 
  1067.         MOV EDI, 0ABC00h
  1068.         MOV ECX, EDX
  1069.         REP MOVSD
  1070. ; Draw line  141 
  1071.         MOV EDI, 0AC100h
  1072.         MOV ECX, EDX
  1073.         REP MOVSD
  1074. ; Draw line  142 
  1075.         MOV EDI, 0AC600h
  1076.         MOV ECX, EDX
  1077.         REP MOVSD
  1078. ; Draw line  143 
  1079.         MOV EDI, 0ACB00h
  1080.         MOV ECX, EDX
  1081.         REP MOVSD
  1082. ; Draw line  144 
  1083.         MOV EDI, 0AD000h
  1084.         MOV ECX, EDX
  1085.         REP MOVSD
  1086. ; Draw line  145 
  1087.         MOV EDI, 0AD500h
  1088.         MOV ECX, EDX
  1089.         REP MOVSD
  1090. ; Draw line  146 
  1091.         MOV EDI, 0ADA00h
  1092.         MOV ECX, EDX
  1093.         REP MOVSD
  1094. ; Draw line  147 
  1095.         MOV EDI, 0ADF00h
  1096.         MOV ECX, EDX
  1097.         REP MOVSD
  1098. ; Draw line  148 
  1099.         MOV EDI, 0AE400h
  1100.         MOV ECX, EDX
  1101.         REP MOVSD
  1102. ; Draw line  149 
  1103.         MOV EDI, 0AE900h
  1104.         MOV ECX, EDX
  1105.         REP MOVSD
  1106. ; Draw line  150 
  1107.         MOV EDI, 0AEE00h
  1108.         MOV ECX, EDX
  1109.         REP MOVSD
  1110. ; Draw line  151 
  1111.         MOV EDI, 0AF300h
  1112.         MOV ECX, EDX
  1113.         REP MOVSD
  1114. ; Draw line  152 
  1115.         MOV EDI, 0AF800h
  1116.         MOV ECX, EDX
  1117.         REP MOVSD
  1118. ; Draw line  153 
  1119.         MOV EDI, 0AFD00h
  1120.         MOV ECX, EDX
  1121.         REP MOVSD
  1122.         CALL gr_vesa_incpage_
  1123. ; Draw line  154 
  1124.         MOV EDI, 0A0200h
  1125.         MOV ECX, EDX
  1126.         REP MOVSD
  1127. ; Draw line  155 
  1128.         MOV EDI, 0A0700h
  1129.         MOV ECX, EDX
  1130.         REP MOVSD
  1131. ; Draw line  156 
  1132.         MOV EDI, 0A0C00h
  1133.         MOV ECX, EDX
  1134.         REP MOVSD
  1135. ; Draw line  157 
  1136.         MOV EDI, 0A1100h
  1137.         MOV ECX, EDX
  1138.         REP MOVSD
  1139. ; Draw line  158 
  1140.         MOV EDI, 0A1600h
  1141.         MOV ECX, EDX
  1142.         REP MOVSD
  1143. ; Draw line  159 
  1144.         MOV EDI, 0A1B00h
  1145.         MOV ECX, EDX
  1146.         REP MOVSD
  1147. ; Draw line  160 
  1148.         MOV EDI, 0A2000h
  1149.         MOV ECX, EDX
  1150.         REP MOVSD
  1151. ; Draw line  161 
  1152.         MOV EDI, 0A2500h
  1153.         MOV ECX, EDX
  1154.         REP MOVSD
  1155. ; Draw line  162 
  1156.         MOV EDI, 0A2A00h
  1157.         MOV ECX, EDX
  1158.         REP MOVSD
  1159. ; Draw line  163 
  1160.         MOV EDI, 0A2F00h
  1161.         MOV ECX, EDX
  1162.         REP MOVSD
  1163. ; Draw line  164 
  1164.         MOV EDI, 0A3400h
  1165.         MOV ECX, EDX
  1166.         REP MOVSD
  1167. ; Draw line  165 
  1168.         MOV EDI, 0A3900h
  1169.         MOV ECX, EDX
  1170.         REP MOVSD
  1171. ; Draw line  166 
  1172.         MOV EDI, 0A3E00h
  1173.         MOV ECX, EDX
  1174.         REP MOVSD
  1175. ; Draw line  167 
  1176.         MOV EDI, 0A4300h
  1177.         MOV ECX, EDX
  1178.         REP MOVSD
  1179. ; Draw line  168 
  1180.         MOV EDI, 0A4800h
  1181.         MOV ECX, EDX
  1182.         REP MOVSD
  1183. ; Draw line  169 
  1184.         MOV EDI, 0A4D00h
  1185.         MOV ECX, EDX
  1186.         REP MOVSD
  1187. ; Draw line  170 
  1188.         MOV EDI, 0A5200h
  1189.         MOV ECX, EDX
  1190.         REP MOVSD
  1191. ; Draw line  171 
  1192.         MOV EDI, 0A5700h
  1193.         MOV ECX, EDX
  1194.         REP MOVSD
  1195. ; Draw line  172 
  1196.         MOV EDI, 0A5C00h
  1197.         MOV ECX, EDX
  1198.         REP MOVSD
  1199. ; Draw line  173 
  1200.         MOV EDI, 0A6100h
  1201.         MOV ECX, EDX
  1202.         REP MOVSD
  1203. ; Draw line  174 
  1204.         MOV EDI, 0A6600h
  1205.         MOV ECX, EDX
  1206.         REP MOVSD
  1207. ; Draw line  175 
  1208.         MOV EDI, 0A6B00h
  1209.         MOV ECX, EDX
  1210.         REP MOVSD
  1211. ; Draw line  176 
  1212.         MOV EDI, 0A7000h
  1213.         MOV ECX, EDX
  1214.         REP MOVSD
  1215. ; Draw line  177 
  1216.         MOV EDI, 0A7500h
  1217.         MOV ECX, EDX
  1218.         REP MOVSD
  1219. ; Draw line  178 
  1220.         MOV EDI, 0A7A00h
  1221.         MOV ECX, EDX
  1222.         REP MOVSD
  1223. ; Draw line  179 
  1224.         MOV EDI, 0A7F00h
  1225.         MOV ECX, EDX
  1226.         REP MOVSD
  1227. ; Draw line  180 
  1228.         MOV EDI, 0A8400h
  1229.         MOV ECX, EDX
  1230.         REP MOVSD
  1231. ; Draw line  181 
  1232.         MOV EDI, 0A8900h
  1233.         MOV ECX, EDX
  1234.         REP MOVSD
  1235. ; Draw line  182 
  1236.         MOV EDI, 0A8E00h
  1237.         MOV ECX, EDX
  1238.         REP MOVSD
  1239. ; Draw line  183 
  1240.         MOV EDI, 0A9300h
  1241.         MOV ECX, EDX
  1242.         REP MOVSD
  1243. ; Draw line  184 
  1244.         MOV EDI, 0A9800h
  1245.         MOV ECX, EDX
  1246.         REP MOVSD
  1247. ; Draw line  185 
  1248.         MOV EDI, 0A9D00h
  1249.         MOV ECX, EDX
  1250.         REP MOVSD
  1251. ; Draw line  186 
  1252.         MOV EDI, 0AA200h
  1253.         MOV ECX, EDX
  1254.         REP MOVSD
  1255. ; Draw line  187 
  1256.         MOV EDI, 0AA700h
  1257.         MOV ECX, EDX
  1258.         REP MOVSD
  1259. ; Draw line  188 
  1260.         MOV EDI, 0AAC00h
  1261.         MOV ECX, EDX
  1262.         REP MOVSD
  1263. ; Draw line  189 
  1264.         MOV EDI, 0AB100h
  1265.         MOV ECX, EDX
  1266.         REP MOVSD
  1267. ; Draw line  190 
  1268.         MOV EDI, 0AB600h
  1269.         MOV ECX, EDX
  1270.         REP MOVSD
  1271. ; Draw line  191 
  1272.         MOV EDI, 0ABB00h
  1273.         MOV ECX, EDX
  1274.         REP MOVSD
  1275. ; Draw line  192 
  1276.         MOV EDI, 0AC000h
  1277.         MOV ECX, EDX
  1278.         REP MOVSD
  1279. ; Draw line  193 
  1280.         MOV EDI, 0AC500h
  1281.         MOV ECX, EDX
  1282.         REP MOVSD
  1283. ; Draw line  194 
  1284.         MOV EDI, 0ACA00h
  1285.         MOV ECX, EDX
  1286.         REP MOVSD
  1287. ; Draw line  195 
  1288.         MOV EDI, 0ACF00h
  1289.         MOV ECX, EDX
  1290.         REP MOVSD
  1291. ; Draw line  196 
  1292.         MOV EDI, 0AD400h
  1293.         MOV ECX, EDX
  1294.         REP MOVSD
  1295. ; Draw line  197 
  1296.         MOV EDI, 0AD900h
  1297.         MOV ECX, EDX
  1298.         REP MOVSD
  1299. ; Draw line  198 
  1300.         MOV EDI, 0ADE00h
  1301.         MOV ECX, EDX
  1302.         REP MOVSD
  1303. ; Draw line  199 
  1304.         MOV EDI, 0AE300h
  1305.         MOV ECX, EDX
  1306.         REP MOVSD
  1307.             pop     esi
  1308.             pop     edi
  1309.             pop     edx
  1310.             pop     ecx
  1311.             pop     ebx
  1312.  
  1313.             ret
  1314.  
  1315.  
  1316. _TEXT   ENDS
  1317.  
  1318.  
  1319.         END
  1320.  
  1321.  
  1322.