home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga ACS 1998 #6
/
amigaacscoverdisc1998-061998.iso
/
games
/
descent
/
source
/
texmap
/
vesa.asm
< prev
Wrap
Assembly Source File
|
1998-06-08
|
28KB
|
1,323 lines
;THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
;SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
;END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
;ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
;IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
;SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
;FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
;CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
;AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
;COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
;
; $Source: f:/miner/source/texmap/rcs/vesa.asm $
; $Revision: 1.1 $
; $Author: mike $
; $Date: 1993/09/08 17:29:56 $
;
; Routine to copy buffer to VESA memory.
;
; $Log: vesa.asm $
; Revision 1.1 1993/09/08 17:29:56 mike
; Initial revision
;
;
;
.386
INCLUDE VGAREGS.INC
_DATA SEGMENT BYTE PUBLIC USE32 'DATA'
BufferPtr dd ?
BufferSeg dw ?
GoalMode dw ?
LastPage dd 0FFFFFFFFh
; Information from VESA return SuperVGA Information
VESAVersion dw ?
OEMStringPtr dd ?
Capabilities dd ?
VideoModePtr dd ?
TotalMemory dw ?
WinGranularity dw ?
WinSize dw ?
WinFuncPtr dd ?
BytesPerScanLine dd ?
PageSizeShift db ?
VESA_Signature = 041534556h
REALREGS STRUCT
RealEDI dd ?
RealESI dd ?
RealEBP dd ?
Reserved dd ?
RealEBX dd ?
RealEDX dd ?
RealECX dd ?
RealEAX dd ?
RealFlags dw ?
RealES dw ?
RealDS dw ?
RealFS dw ?
RealGS dw ?
RealIP dw ?
RealCS dw ?
RealSP dw ?
RealSS dw ?
REALREGS ENDS
regs REALREGS < >
_DATA ENDS
DGROUP GROUP _DATA
_TEXT SEGMENT BYTE PUBLIC USE32 'CODE'
ASSUME DS:_DATA
ASSUME CS:_TEXT
EBXFarTo32:
push ecx
mov ecx, ebx
and ecx, 0FFFF0000h
shr ecx, 12
and ebx, 0FFFFh
add ebx, ecx
pop ecx
ret
PUBLIC gr_vesa_setmode_
gr_vesa_setmode_:
push ebx
push ecx
push edx
push edi
mov GoalMode, ax
; Allocate a 256 byte block of DOS memory using DPMI
mov ax, 0100h
mov bx, 64 ; 64 paragraphs = 256 byte
int 31h
jc NoMemory
; AX = real mode segment of allocated block
and eax, 0FFFFh
mov BufferSeg, ax
shl eax, 4 ; EAX = 32-bit pointer to DOS memory
mov BufferPtr, eax
; Get SuperVGA information
mov ax, BufferSeg
mov regs.RealEDI, 0
mov regs.RealESI, 0
mov regs.RealEBP, 0
mov regs.Reserved, 0
mov regs.RealEBX, 0
mov regs.RealEDX, 0
mov regs.RealECX, 0
mov regs.RealEAX, 04f00h
mov regs.RealFlags, 0
mov regs.RealES, ax
mov regs.RealDS, 0
mov regs.RealFS, 0
mov regs.RealGS, 0
mov regs.RealIP, 0
mov regs.RealCS, 0
mov regs.RealSP, 0
mov regs.RealSS, 0
mov bl, 10h
xor bh, bh
xor cx, cx
mov edi, offset regs
mov ax, 0300h
int 31h
mov eax, regs.RealEAX
cmp ax, 04fh
jne BadStatus
; Make sure there is a VESA signature
mov eax, BufferPtr
cmp dword ptr[eax+0], VESA_Signature
jne NoVESADriver
; We now have a valid VESA driver loaded
mov bx, word ptr [eax+4]
mov VESAVersion, bx
mov ebx, dword ptr [eax+6]
call EBXFarTo32
mov OEMStringPtr, ebx
mov ebx, dword ptr [eax+10]
mov Capabilities, ebx
mov bx, word ptr [eax+18]
mov TotalMemory, bx
mov ebx, dword ptr [eax+14]
call EBXFarTo32
mov VideoModePtr, ebx
TryAnotherMode:
mov ax, word ptr [ebx]
add ebx, 2
cmp ax, GoalMode
je ModeSupported
cmp ax, -1
je ModeNotSupported
jmp TryAnotherMode
ModeSupported:
; Get SuperVGA information
mov ax, BufferSeg
movzx ecx, GoalMode
mov regs.RealEDI, 0
mov regs.RealESI, 0
mov regs.RealEBP, 0
mov regs.Reserved, 0
mov regs.RealEBX, 0
mov regs.RealEDX, 0
mov regs.RealECX, ecx
mov regs.RealEAX, 04f01h
mov regs.RealFlags, 0
mov regs.RealES, ax
mov regs.RealDS, 0
mov regs.RealFS, 0
mov regs.RealGS, 0
mov regs.RealIP, 0
mov regs.RealCS, 0
mov regs.RealSP, 0
mov regs.RealSS, 0
mov bl, 10h
xor bh, bh
xor cx, cx
mov edi, offset regs
mov ax, 0300h
int 31h
mov eax, regs.RealEAX
cmp ax, 04fh
jne BadStatus
; Check if this mode supported by hardware.
mov eax, BufferPtr
mov bx, [eax]
bt bx, 0
jnc HardwareNotSupported
mov bx, [eax+4]
cmp bx, 64
jne @f
mov PageSizeShift, 0
jmp GranularityOK
@@: cmp bx, 32
jne @f
mov PageSizeShift, 1
jmp GranularityOK
@@: cmp bx, 16
jne @f
mov PageSizeShift, 2
jmp GranularityOK
@@: cmp bx, 8
jne @f
mov PageSizeShift, 3
jmp GranularityOK
@@: cmp bx, 4
jne @f
mov PageSizeShift, 4
jmp GranularityOK
@@: cmp bx, 2
jne @f
mov PageSizeShift, 5
jmp GranularityOK
@@: cmp bx, 1
jne WrongGranularity
mov PageSizeShift, 6
GranularityOK:
shl bx, 10
mov WinGranularity, bx
mov bx, [eax+6]
mov WinSize, bx
mov ebx, [eax+12]
call EBXFarTo32
mov WinFuncPtr, ebx
mov bx, [eax+16]
and ebx, 0ffffh
mov BytesPerScanLine, ebx
; Set the mode!
mov ax, 04f02h
mov bx, GoalMode
int 10h
mov eax, 0
jmp Done
WrongLogicalWidth:
mov eax, 1
jmp Done
WrongGranularity:
mov eax, 2
jmp Done
HardwareNotSupported:
mov eax, 3
jmp Done
ModeNotSupported:
mov eax, 4
jmp Done
NoVESADriver:
mov eax, 5
jmp Done
BadStatus:
mov eax, 6
jmp Done
NoMemory:
mov eax, 7
Done:
pop edi
pop edx
pop ecx
pop ebx
ret
PUBLIC gr_vesa_setpage_
gr_vesa_setpage_:
; EAX = 64K Page number
cmp eax, LastPage
jne @f
ret
@@: mov LastPage, eax
push edx
push ebx
push ecx
mov edx, eax
mov cl, PageSizeShift
shl edx, cl ; Convert from 64K pages to GranUnit pages.
xor ebx, ebx ; BH=Select window, BL=Window A
mov eax, 04f05h ; AX=Super VGA video memory window control
int 10h
pop ecx
pop ebx
pop edx
ret
PUBLIC gr_vesa_incpage_
gr_vesa_incpage_:
push eax
push ebx
push ecx
push edx
inc LastPage
mov edx, LastPage
mov cl, PageSizeShift
shl edx, cl ; Convert from 64K pages to GranUnit pages.
xor ebx, ebx ; BH=Select window, BL=Window A
mov eax, 04f05h ; AX=Super VGA video memory window control
int 10h
pop edx
pop ecx
pop ebx
pop eax
ret
PUBLIC gr_vesa_setstart_
gr_vesa_setstart_:
; EAX = First column
; EDX = First row
push ebx
push ecx
mov ecx, eax
mov eax, 4f07h
xor ebx, ebx
int 10h
pop ecx
pop ebx
ret
PUBLIC gr_vesa_setlogical_
gr_vesa_setlogical_:
; EAX = line width
push ebx
push ecx
push edx
mov cx, ax
mov ax, 04f06h
mov bl, 0
int 10h
and ebx, 0ffffh
mov BytesPerScanLine, ebx
mov ax, cx
pop edx
pop ecx
pop ebx
ret
PUBLIC gr_vesa_pixel8_
gr_vesa_pixel8_:
; EAX = x
; EDX = y
; EBX = 8-bit color
imul edx, BytesPerScanLine
add edx, eax ; EDX = y*bpr+x1
mov eax, edx
and edx, 00FFFFh
shr eax, 16
cmp eax, LastPage
jne @f
mov [edx+0A0000h], bl
ret
@@: mov LastPage, eax
push edx
push ecx
push ebx
mov edx, eax
mov cl, PageSizeShift
shl edx, cl ; Convert from 64K pages to GranUnit pages.
xor ebx, ebx ; BH=Select window, BL=Window A
mov eax, 04f05h ; AX=Super VGA video memory window control
int 10h
pop ebx
pop ecx
pop edx
mov [edx+0A0000h], bl
ret
PUBLIC gr_vesa_pixel15_
gr_vesa_pixel15_:
; EAX = x
; EDX = y
; EBX = 15-bit color
imul edx, BytesPerScanLine
shl eax, 1
add edx, eax ; EDX = y*bpr+x1*2
mov eax, edx
and edx, 00FFFFh
shr eax, 16
cmp eax, LastPage
jne @f
mov [edx+0A0000h], bx
ret
@@: mov LastPage, eax
push edx
push ecx
push ebx
mov edx, eax
mov cl, PageSizeShift
shl edx, cl ; Convert from 64K pages to GranUnit pages.
xor ebx, ebx ; BH=Select window, BL=Window A
mov eax, 04f05h ; AX=Super VGA video memory window control
int 10h
pop ebx
pop ecx
pop edx
mov [edx+0A0000h], bx
ret
PUBLIC gr_vesa_copy_canvas_
gr_vesa_copy_canvas_:
; EAX = pointer to canvas
push ebx
push ecx
push edx
push edi
push esi
mov esi, eax
; This is code generated by BLOCK.BAS that moves a block of system
; memory to SVGA memory.
; This particular routine moves a block of size 300 x 200 x 2 bpp from
; ESI to ( 0 , 0 ) on the SVGA screen.
MOV EBX, 0
MOV EDX, 150
MOV EAX, 0
CALL gr_vesa_setpage_
; Draw line 0
MOV EDI, 0A0000h
MOV ECX, EDX
REP MOVSD
; Draw line 1
MOV EDI, 0A0500h
MOV ECX, EDX
REP MOVSD
; Draw line 2
MOV EDI, 0A0A00h
MOV ECX, EDX
REP MOVSD
; Draw line 3
MOV EDI, 0A0F00h
MOV ECX, EDX
REP MOVSD
; Draw line 4
MOV EDI, 0A1400h
MOV ECX, EDX
REP MOVSD
; Draw line 5
MOV EDI, 0A1900h
MOV ECX, EDX
REP MOVSD
; Draw line 6
MOV EDI, 0A1E00h
MOV ECX, EDX
REP MOVSD
; Draw line 7
MOV EDI, 0A2300h
MOV ECX, EDX
REP MOVSD
; Draw line 8
MOV EDI, 0A2800h
MOV ECX, EDX
REP MOVSD
; Draw line 9
MOV EDI, 0A2D00h
MOV ECX, EDX
REP MOVSD
; Draw line 10
MOV EDI, 0A3200h
MOV ECX, EDX
REP MOVSD
; Draw line 11
MOV EDI, 0A3700h
MOV ECX, EDX
REP MOVSD
; Draw line 12
MOV EDI, 0A3C00h
MOV ECX, EDX
REP MOVSD
; Draw line 13
MOV EDI, 0A4100h
MOV ECX, EDX
REP MOVSD
; Draw line 14
MOV EDI, 0A4600h
MOV ECX, EDX
REP MOVSD
; Draw line 15
MOV EDI, 0A4B00h
MOV ECX, EDX
REP MOVSD
; Draw line 16
MOV EDI, 0A5000h
MOV ECX, EDX
REP MOVSD
; Draw line 17
MOV EDI, 0A5500h
MOV ECX, EDX
REP MOVSD
; Draw line 18
MOV EDI, 0A5A00h
MOV ECX, EDX
REP MOVSD
; Draw line 19
MOV EDI, 0A5F00h
MOV ECX, EDX
REP MOVSD
; Draw line 20
MOV EDI, 0A6400h
MOV ECX, EDX
REP MOVSD
; Draw line 21
MOV EDI, 0A6900h
MOV ECX, EDX
REP MOVSD
; Draw line 22
MOV EDI, 0A6E00h
MOV ECX, EDX
REP MOVSD
; Draw line 23
MOV EDI, 0A7300h
MOV ECX, EDX
REP MOVSD
; Draw line 24
MOV EDI, 0A7800h
MOV ECX, EDX
REP MOVSD
; Draw line 25
MOV EDI, 0A7D00h
MOV ECX, EDX
REP MOVSD
; Draw line 26
MOV EDI, 0A8200h
MOV ECX, EDX
REP MOVSD
; Draw line 27
MOV EDI, 0A8700h
MOV ECX, EDX
REP MOVSD
; Draw line 28
MOV EDI, 0A8C00h
MOV ECX, EDX
REP MOVSD
; Draw line 29
MOV EDI, 0A9100h
MOV ECX, EDX
REP MOVSD
; Draw line 30
MOV EDI, 0A9600h
MOV ECX, EDX
REP MOVSD
; Draw line 31
MOV EDI, 0A9B00h
MOV ECX, EDX
REP MOVSD
; Draw line 32
MOV EDI, 0AA000h
MOV ECX, EDX
REP MOVSD
; Draw line 33
MOV EDI, 0AA500h
MOV ECX, EDX
REP MOVSD
; Draw line 34
MOV EDI, 0AAA00h
MOV ECX, EDX
REP MOVSD
; Draw line 35
MOV EDI, 0AAF00h
MOV ECX, EDX
REP MOVSD
; Draw line 36
MOV EDI, 0AB400h
MOV ECX, EDX
REP MOVSD
; Draw line 37
MOV EDI, 0AB900h
MOV ECX, EDX
REP MOVSD
; Draw line 38
MOV EDI, 0ABE00h
MOV ECX, EDX
REP MOVSD
; Draw line 39
MOV EDI, 0AC300h
MOV ECX, EDX
REP MOVSD
; Draw line 40
MOV EDI, 0AC800h
MOV ECX, EDX
REP MOVSD
; Draw line 41
MOV EDI, 0ACD00h
MOV ECX, EDX
REP MOVSD
; Draw line 42
MOV EDI, 0AD200h
MOV ECX, EDX
REP MOVSD
; Draw line 43
MOV EDI, 0AD700h
MOV ECX, EDX
REP MOVSD
; Draw line 44
MOV EDI, 0ADC00h
MOV ECX, EDX
REP MOVSD
; Draw line 45
MOV EDI, 0AE100h
MOV ECX, EDX
REP MOVSD
; Draw line 46
MOV EDI, 0AE600h
MOV ECX, EDX
REP MOVSD
; Draw line 47
MOV EDI, 0AEB00h
MOV ECX, EDX
REP MOVSD
; Draw line 48
MOV EDI, 0AF000h
MOV ECX, EDX
REP MOVSD
; Draw line 49
MOV EDI, 0AF500h
MOV ECX, EDX
REP MOVSD
; Draw line 50
MOV EDI, 0AFA00h
MOV ECX, EDX
REP MOVSD
; Draw line 51
MOV EDI, 0AFF00h
MOV ECX, 64
REP MOVSD
CALL gr_vesa_incpage_
; Draw line 51
MOV EDI, 0A0000h
MOV ECX, 86
REP MOVSD
; Draw line 52
MOV EDI, 0A0400h
MOV ECX, EDX
REP MOVSD
; Draw line 53
MOV EDI, 0A0900h
MOV ECX, EDX
REP MOVSD
; Draw line 54
MOV EDI, 0A0E00h
MOV ECX, EDX
REP MOVSD
; Draw line 55
MOV EDI, 0A1300h
MOV ECX, EDX
REP MOVSD
; Draw line 56
MOV EDI, 0A1800h
MOV ECX, EDX
REP MOVSD
; Draw line 57
MOV EDI, 0A1D00h
MOV ECX, EDX
REP MOVSD
; Draw line 58
MOV EDI, 0A2200h
MOV ECX, EDX
REP MOVSD
; Draw line 59
MOV EDI, 0A2700h
MOV ECX, EDX
REP MOVSD
; Draw line 60
MOV EDI, 0A2C00h
MOV ECX, EDX
REP MOVSD
; Draw line 61
MOV EDI, 0A3100h
MOV ECX, EDX
REP MOVSD
; Draw line 62
MOV EDI, 0A3600h
MOV ECX, EDX
REP MOVSD
; Draw line 63
MOV EDI, 0A3B00h
MOV ECX, EDX
REP MOVSD
; Draw line 64
MOV EDI, 0A4000h
MOV ECX, EDX
REP MOVSD
; Draw line 65
MOV EDI, 0A4500h
MOV ECX, EDX
REP MOVSD
; Draw line 66
MOV EDI, 0A4A00h
MOV ECX, EDX
REP MOVSD
; Draw line 67
MOV EDI, 0A4F00h
MOV ECX, EDX
REP MOVSD
; Draw line 68
MOV EDI, 0A5400h
MOV ECX, EDX
REP MOVSD
; Draw line 69
MOV EDI, 0A5900h
MOV ECX, EDX
REP MOVSD
; Draw line 70
MOV EDI, 0A5E00h
MOV ECX, EDX
REP MOVSD
; Draw line 71
MOV EDI, 0A6300h
MOV ECX, EDX
REP MOVSD
; Draw line 72
MOV EDI, 0A6800h
MOV ECX, EDX
REP MOVSD
; Draw line 73
MOV EDI, 0A6D00h
MOV ECX, EDX
REP MOVSD
; Draw line 74
MOV EDI, 0A7200h
MOV ECX, EDX
REP MOVSD
; Draw line 75
MOV EDI, 0A7700h
MOV ECX, EDX
REP MOVSD
; Draw line 76
MOV EDI, 0A7C00h
MOV ECX, EDX
REP MOVSD
; Draw line 77
MOV EDI, 0A8100h
MOV ECX, EDX
REP MOVSD
; Draw line 78
MOV EDI, 0A8600h
MOV ECX, EDX
REP MOVSD
; Draw line 79
MOV EDI, 0A8B00h
MOV ECX, EDX
REP MOVSD
; Draw line 80
MOV EDI, 0A9000h
MOV ECX, EDX
REP MOVSD
; Draw line 81
MOV EDI, 0A9500h
MOV ECX, EDX
REP MOVSD
; Draw line 82
MOV EDI, 0A9A00h
MOV ECX, EDX
REP MOVSD
; Draw line 83
MOV EDI, 0A9F00h
MOV ECX, EDX
REP MOVSD
; Draw line 84
MOV EDI, 0AA400h
MOV ECX, EDX
REP MOVSD
; Draw line 85
MOV EDI, 0AA900h
MOV ECX, EDX
REP MOVSD
; Draw line 86
MOV EDI, 0AAE00h
MOV ECX, EDX
REP MOVSD
; Draw line 87
MOV EDI, 0AB300h
MOV ECX, EDX
REP MOVSD
; Draw line 88
MOV EDI, 0AB800h
MOV ECX, EDX
REP MOVSD
; Draw line 89
MOV EDI, 0ABD00h
MOV ECX, EDX
REP MOVSD
; Draw line 90
MOV EDI, 0AC200h
MOV ECX, EDX
REP MOVSD
; Draw line 91
MOV EDI, 0AC700h
MOV ECX, EDX
REP MOVSD
; Draw line 92
MOV EDI, 0ACC00h
MOV ECX, EDX
REP MOVSD
; Draw line 93
MOV EDI, 0AD100h
MOV ECX, EDX
REP MOVSD
; Draw line 94
MOV EDI, 0AD600h
MOV ECX, EDX
REP MOVSD
; Draw line 95
MOV EDI, 0ADB00h
MOV ECX, EDX
REP MOVSD
; Draw line 96
MOV EDI, 0AE000h
MOV ECX, EDX
REP MOVSD
; Draw line 97
MOV EDI, 0AE500h
MOV ECX, EDX
REP MOVSD
; Draw line 98
MOV EDI, 0AEA00h
MOV ECX, EDX
REP MOVSD
; Draw line 99
MOV EDI, 0AEF00h
MOV ECX, EDX
REP MOVSD
; Draw line 100
MOV EDI, 0AF400h
MOV ECX, EDX
REP MOVSD
; Draw line 101
MOV EDI, 0AF900h
MOV ECX, EDX
REP MOVSD
; Draw line 102
MOV EDI, 0AFE00h
MOV ECX, 128
REP MOVSD
CALL gr_vesa_incpage_
; Draw line 102
MOV EDI, 0A0000h
MOV ECX, 22
REP MOVSD
; Draw line 103
MOV EDI, 0A0300h
MOV ECX, EDX
REP MOVSD
; Draw line 104
MOV EDI, 0A0800h
MOV ECX, EDX
REP MOVSD
; Draw line 105
MOV EDI, 0A0D00h
MOV ECX, EDX
REP MOVSD
; Draw line 106
MOV EDI, 0A1200h
MOV ECX, EDX
REP MOVSD
; Draw line 107
MOV EDI, 0A1700h
MOV ECX, EDX
REP MOVSD
; Draw line 108
MOV EDI, 0A1C00h
MOV ECX, EDX
REP MOVSD
; Draw line 109
MOV EDI, 0A2100h
MOV ECX, EDX
REP MOVSD
; Draw line 110
MOV EDI, 0A2600h
MOV ECX, EDX
REP MOVSD
; Draw line 111
MOV EDI, 0A2B00h
MOV ECX, EDX
REP MOVSD
; Draw line 112
MOV EDI, 0A3000h
MOV ECX, EDX
REP MOVSD
; Draw line 113
MOV EDI, 0A3500h
MOV ECX, EDX
REP MOVSD
; Draw line 114
MOV EDI, 0A3A00h
MOV ECX, EDX
REP MOVSD
; Draw line 115
MOV EDI, 0A3F00h
MOV ECX, EDX
REP MOVSD
; Draw line 116
MOV EDI, 0A4400h
MOV ECX, EDX
REP MOVSD
; Draw line 117
MOV EDI, 0A4900h
MOV ECX, EDX
REP MOVSD
; Draw line 118
MOV EDI, 0A4E00h
MOV ECX, EDX
REP MOVSD
; Draw line 119
MOV EDI, 0A5300h
MOV ECX, EDX
REP MOVSD
; Draw line 120
MOV EDI, 0A5800h
MOV ECX, EDX
REP MOVSD
; Draw line 121
MOV EDI, 0A5D00h
MOV ECX, EDX
REP MOVSD
; Draw line 122
MOV EDI, 0A6200h
MOV ECX, EDX
REP MOVSD
; Draw line 123
MOV EDI, 0A6700h
MOV ECX, EDX
REP MOVSD
; Draw line 124
MOV EDI, 0A6C00h
MOV ECX, EDX
REP MOVSD
; Draw line 125
MOV EDI, 0A7100h
MOV ECX, EDX
REP MOVSD
; Draw line 126
MOV EDI, 0A7600h
MOV ECX, EDX
REP MOVSD
; Draw line 127
MOV EDI, 0A7B00h
MOV ECX, EDX
REP MOVSD
; Draw line 128
MOV EDI, 0A8000h
MOV ECX, EDX
REP MOVSD
; Draw line 129
MOV EDI, 0A8500h
MOV ECX, EDX
REP MOVSD
; Draw line 130
MOV EDI, 0A8A00h
MOV ECX, EDX
REP MOVSD
; Draw line 131
MOV EDI, 0A8F00h
MOV ECX, EDX
REP MOVSD
; Draw line 132
MOV EDI, 0A9400h
MOV ECX, EDX
REP MOVSD
; Draw line 133
MOV EDI, 0A9900h
MOV ECX, EDX
REP MOVSD
; Draw line 134
MOV EDI, 0A9E00h
MOV ECX, EDX
REP MOVSD
; Draw line 135
MOV EDI, 0AA300h
MOV ECX, EDX
REP MOVSD
; Draw line 136
MOV EDI, 0AA800h
MOV ECX, EDX
REP MOVSD
; Draw line 137
MOV EDI, 0AAD00h
MOV ECX, EDX
REP MOVSD
; Draw line 138
MOV EDI, 0AB200h
MOV ECX, EDX
REP MOVSD
; Draw line 139
MOV EDI, 0AB700h
MOV ECX, EDX
REP MOVSD
; Draw line 140
MOV EDI, 0ABC00h
MOV ECX, EDX
REP MOVSD
; Draw line 141
MOV EDI, 0AC100h
MOV ECX, EDX
REP MOVSD
; Draw line 142
MOV EDI, 0AC600h
MOV ECX, EDX
REP MOVSD
; Draw line 143
MOV EDI, 0ACB00h
MOV ECX, EDX
REP MOVSD
; Draw line 144
MOV EDI, 0AD000h
MOV ECX, EDX
REP MOVSD
; Draw line 145
MOV EDI, 0AD500h
MOV ECX, EDX
REP MOVSD
; Draw line 146
MOV EDI, 0ADA00h
MOV ECX, EDX
REP MOVSD
; Draw line 147
MOV EDI, 0ADF00h
MOV ECX, EDX
REP MOVSD
; Draw line 148
MOV EDI, 0AE400h
MOV ECX, EDX
REP MOVSD
; Draw line 149
MOV EDI, 0AE900h
MOV ECX, EDX
REP MOVSD
; Draw line 150
MOV EDI, 0AEE00h
MOV ECX, EDX
REP MOVSD
; Draw line 151
MOV EDI, 0AF300h
MOV ECX, EDX
REP MOVSD
; Draw line 152
MOV EDI, 0AF800h
MOV ECX, EDX
REP MOVSD
; Draw line 153
MOV EDI, 0AFD00h
MOV ECX, EDX
REP MOVSD
CALL gr_vesa_incpage_
; Draw line 154
MOV EDI, 0A0200h
MOV ECX, EDX
REP MOVSD
; Draw line 155
MOV EDI, 0A0700h
MOV ECX, EDX
REP MOVSD
; Draw line 156
MOV EDI, 0A0C00h
MOV ECX, EDX
REP MOVSD
; Draw line 157
MOV EDI, 0A1100h
MOV ECX, EDX
REP MOVSD
; Draw line 158
MOV EDI, 0A1600h
MOV ECX, EDX
REP MOVSD
; Draw line 159
MOV EDI, 0A1B00h
MOV ECX, EDX
REP MOVSD
; Draw line 160
MOV EDI, 0A2000h
MOV ECX, EDX
REP MOVSD
; Draw line 161
MOV EDI, 0A2500h
MOV ECX, EDX
REP MOVSD
; Draw line 162
MOV EDI, 0A2A00h
MOV ECX, EDX
REP MOVSD
; Draw line 163
MOV EDI, 0A2F00h
MOV ECX, EDX
REP MOVSD
; Draw line 164
MOV EDI, 0A3400h
MOV ECX, EDX
REP MOVSD
; Draw line 165
MOV EDI, 0A3900h
MOV ECX, EDX
REP MOVSD
; Draw line 166
MOV EDI, 0A3E00h
MOV ECX, EDX
REP MOVSD
; Draw line 167
MOV EDI, 0A4300h
MOV ECX, EDX
REP MOVSD
; Draw line 168
MOV EDI, 0A4800h
MOV ECX, EDX
REP MOVSD
; Draw line 169
MOV EDI, 0A4D00h
MOV ECX, EDX
REP MOVSD
; Draw line 170
MOV EDI, 0A5200h
MOV ECX, EDX
REP MOVSD
; Draw line 171
MOV EDI, 0A5700h
MOV ECX, EDX
REP MOVSD
; Draw line 172
MOV EDI, 0A5C00h
MOV ECX, EDX
REP MOVSD
; Draw line 173
MOV EDI, 0A6100h
MOV ECX, EDX
REP MOVSD
; Draw line 174
MOV EDI, 0A6600h
MOV ECX, EDX
REP MOVSD
; Draw line 175
MOV EDI, 0A6B00h
MOV ECX, EDX
REP MOVSD
; Draw line 176
MOV EDI, 0A7000h
MOV ECX, EDX
REP MOVSD
; Draw line 177
MOV EDI, 0A7500h
MOV ECX, EDX
REP MOVSD
; Draw line 178
MOV EDI, 0A7A00h
MOV ECX, EDX
REP MOVSD
; Draw line 179
MOV EDI, 0A7F00h
MOV ECX, EDX
REP MOVSD
; Draw line 180
MOV EDI, 0A8400h
MOV ECX, EDX
REP MOVSD
; Draw line 181
MOV EDI, 0A8900h
MOV ECX, EDX
REP MOVSD
; Draw line 182
MOV EDI, 0A8E00h
MOV ECX, EDX
REP MOVSD
; Draw line 183
MOV EDI, 0A9300h
MOV ECX, EDX
REP MOVSD
; Draw line 184
MOV EDI, 0A9800h
MOV ECX, EDX
REP MOVSD
; Draw line 185
MOV EDI, 0A9D00h
MOV ECX, EDX
REP MOVSD
; Draw line 186
MOV EDI, 0AA200h
MOV ECX, EDX
REP MOVSD
; Draw line 187
MOV EDI, 0AA700h
MOV ECX, EDX
REP MOVSD
; Draw line 188
MOV EDI, 0AAC00h
MOV ECX, EDX
REP MOVSD
; Draw line 189
MOV EDI, 0AB100h
MOV ECX, EDX
REP MOVSD
; Draw line 190
MOV EDI, 0AB600h
MOV ECX, EDX
REP MOVSD
; Draw line 191
MOV EDI, 0ABB00h
MOV ECX, EDX
REP MOVSD
; Draw line 192
MOV EDI, 0AC000h
MOV ECX, EDX
REP MOVSD
; Draw line 193
MOV EDI, 0AC500h
MOV ECX, EDX
REP MOVSD
; Draw line 194
MOV EDI, 0ACA00h
MOV ECX, EDX
REP MOVSD
; Draw line 195
MOV EDI, 0ACF00h
MOV ECX, EDX
REP MOVSD
; Draw line 196
MOV EDI, 0AD400h
MOV ECX, EDX
REP MOVSD
; Draw line 197
MOV EDI, 0AD900h
MOV ECX, EDX
REP MOVSD
; Draw line 198
MOV EDI, 0ADE00h
MOV ECX, EDX
REP MOVSD
; Draw line 199
MOV EDI, 0AE300h
MOV ECX, EDX
REP MOVSD
pop esi
pop edi
pop edx
pop ecx
pop ebx
ret
_TEXT ENDS
END