123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323 |
- ;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
|