C000:0000 ; Compaq EVO T20 VIDEO BIOS 2.07, taken from 48MB NTE firmware C000:0000 ; Source : ULC_CODE.BIN (offset 20000-27FFFh) C000:0000 ; Disassembled and commented by RayeR, 4.1.2009 C000:0000 ; Format : Binary file C000:0000 ; Base Address: C000h Range: C0000h - C7FFFh Loaded length: 8000h C000:0000 C000:0000 .686p C000:0000 .mmx C000:0000 .model small C000:0000 C000:0000 ; =========================================================================== C000:0000 C000:0000 ; Segment type: Pure code C000:0000 segment byte public 'CODE' use16 C000:0000 assume cs:C000 C000:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing C000:0000 dw 0AA55h ; ROM header C000:0002 db 40h ; ROM size 40h*512 = 32kB C000:0003 ; --------------------------------------------------------------------------- C000:0003 jmp short start1 C000:0003 ; --------------------------------------------------------------------------- C000:0005 a7400sl db '7400' C000:0009 db 0E9h ; Ú C000:000A db 4Ch ; L C000:000B db 19h C000:000C db 77h ; w C000:000D db 0CCh ; ¦ C000:000E aVideo db 'VIDEO ',0Dh,0 C000:0016 db 0 C000:0017 db 0 C000:0018 PCIR_POINTER dw 6989h ; pointer to PCI data structure C000:001A dw 0 C000:001C db 0 C000:001D db 0 C000:001E aIbmVgaCompatib db 'IBM VGA Compatible' C000:0030 db 1 C000:0031 db 0 C000:0032 db 0 C000:0033 db 0 C000:0034 db 0 C000:0035 db 0 C000:0036 db 0 C000:0037 db 0 C000:0038 BIOS_DATE db '06/14/01' ; BIOS date C000:0040 ptr1 dw 3530h ; replaced by Word from 9Fh = 6DCDh C000:0042 dw 3531h ; replaced by CS = C000h C000:0044 a62lgc db '62LGC' C000:0049 db 7 dup( 0) C000:0050 ; --------------------------------------------------------------------------- C000:0050 C000:0050 start1: ; CODE XREF: C000:0003j C000:0050 jmp short start2 C000:0050 ; --------------------------------------------------------------------------- C000:0052 aVgaBiosVersion db 'VGA BIOS - Version 2.07 Copyright (C) 1990-1995 Elpin Systems',0Dh,0Ah C000:0052 db 0 C000:0093 ; --------------------------------------------------------------------------- C000:0093 C000:0093 start2: ; CODE XREF: C000:start1j C000:0093 push bp C000:0094 sub ax, ax ; AX=0 C000:0096 mov ds, ax ; DS=0 C000:0098 push cs ; CS=C000h C000:0099 pop es ; ES=C000h C000:009A assume es:nothing C000:009A call vga_init ; VGA INIT C000:009D pop bp C000:009E retf ; EXIT VGA BIOS C000:009E ; --------------------------------------------------------------------------- C000:009F word_C009F dw 6DCDh ; DATA XREF: vga_init+3Co C000:00A1 db 0CFh ; ¤ C000:00A2 VGA_FUNC_PTR dw offset VGA_SET_MODE ; DATA XREF: C000:00F7r C000:00A4 dw offset VGA_SET_CURSOR_SIZE ; 01h C000:00A6 dw offset VGA_SET_CURSOR_POS ; 02h C000:00A8 dw offset VGA_GET_CURSOR_POS ; 03h C000:00AA dw offset VGA_GET_LIGHT_PEN ; 04h C000:00AC dw offset VGA_SET_PAGE ; 05h C000:00AE dw offset VGA_ROLL_UP ; 06h C000:00B0 dw offset VGA_ROLL_DOWN ; 07h C000:00B2 dw offset VGA_GET_CHAR_ATR ; 08h C000:00B4 dw offset VGA_PUT_CHAR_ATR ; 09h C000:00B6 dw offset VGA_PUT_CHAR ; 0Ah C000:00B8 dw offset VGA_SET_BG_COLOR ; 0Bh C000:00BA dw offset VGA_PUT_PIXEL ; 0Ch C000:00BC dw offset VGA_GET_PIXEL ; 0Dh C000:00BE dw offset VGA_PUT_CHAR_TTY ; 0Eh C000:00C0 dw offset VGA_GET_MODE ; 0Fh C000:00C2 dw offset VGA_STRING ; 13h ? C000:00C4 ; --------------------------------------------------------------------------- C000:00C4 push di C000:00C5 pop ds C000:00C6 sbb sp, [bp+si] C000:00C8 rcl word ptr [bx+si], 81h C000:00CB push 0FFh C000:00CE inc word ptr [bx+si] C000:00D0 inc word ptr [bx+si] C000:00D2 inc word ptr [bx+si] C000:00D4 inc word ptr [bx+si] C000:00D6 inc ax C000:00D7 and bp, [bp+si+23h] C000:00DB C000:00DB VGA_FUNC_DISPATCHER: ; DATA XREF: vga_init+66o C000:00DB and ax, 0FCFBh C000:00DE push si C000:00DF push ds C000:00E0 push ax C000:00E1 sub si, si C000:00E3 mov ds, si C000:00E5 mov al, ah ; AL = AH = function nuber C000:00E7 cbw ; AX = sign-extend of AL C000:00E8 mov si, ax ; SI = function number C000:00EA shl si, 1 ; convert function number to offset by mul 2 C000:00EC pop ax C000:00ED cmp ah, 4Fh ; 'O' ; is it VESA extension function? C000:00F0 jz short goto_vesa_disp ; then goto VESA func. dispatcher C000:00F2 cmp ah, 1Dh C000:00F5 jnb short loc_C00FF C000:00F7 jmp cs:VGA_FUNC_PTR[si] ; call function VGA_FUNC_PTR[AL*2] C000:00FC ; --------------------------------------------------------------------------- C000:00FC C000:00FC goto_vesa_disp: ; CODE XREF: C000:00F0j C000:00FC jmp VESA_FUNC_DISPATCHER ; AH = 4F, AL = function number C000:00FF ; --------------------------------------------------------------------------- C000:00FF C000:00FF loc_C00FF: ; CODE XREF: C000:00F5j C000:00FF pop ds C000:0100 pop si C000:0101 iret ; return to caller C000:0101 ; --------------------------------------------------------------------------- C000:0102 db 0,0,0,0,0,0 C000:0108 dw 0 ; replaced by F065h C000:010A dw 0 ; replaced by F000h C000:010C dw 0 ; replaced by offset at 8x8 font array C000:010E dw 0 ; replaced by CS = C000h C000:0110 C000:0110 ; =============== S U B R O U T I N E ======================================= C000:0110 C000:0110 C000:0110 vga_init proc near ; CODE XREF: C000:009Ap C000:0110 push eax C000:0112 push ebx C000:0114 push dx C000:0115 mov dx, 0CF8h ; PCI index register C000:0118 mov eax, 80009000h ; PCI bus 0, device 18, register 0 C000:011E out dx, eax ; set PCI index C000:0120 mov dx, 0CFCh ; PCI data register C000:0123 in eax, dx ; read PCI data C000:0125 shr ax, 10h ; AX=PCI device ID C000:0128 mov bx, cs:word_C698F ; BX=0104h - PCI device ID from PCIR C000:012D mov cs:word_C698F, ax ; set PCIR device ID C000:0131 sub ah, bh ; =0 C000:0133 sub al, bl ; =0 C000:0135 mov bl, cs:byte_C7FFF ; BL=0 C000:013A sub bl, al ; =0 C000:013C sub bl, ah ; =0 C000:013E mov cs:byte_C7FFF, bl ; update Byte at C7FFF = 0 C000:0143 pop dx C000:0144 pop ebx C000:0146 pop eax C000:0148 call set_IO_4xxx ; write something to IO ports 46E8h & 4AE8h C000:014B cli ; setup some pointers in BIOS area CS:xxxx C000:014C mov word ptr ds:40h, offset word_C009F ; 6DCDh C000:0152 mov word ptr ds:42h, cs ; C000h C000:0156 mov word ptr ds:7Ch, (offset font8x8+400h) ; font8x8 high ASCII C000:015C mov word ptr ds:7Eh, cs ; C000h C000:0160 mov word ptr ds:108h, 0F065h C000:0166 mov word ptr ds:10Ah, 0F000h C000:016C mov word ptr ds:10Ch, offset font8x8 C000:0172 mov word ptr ds:10Eh, cs ; C000h C000:0176 mov word ptr ds:1B4h, (offset VGA_FUNC_DISPATCHER+1) ; FBh, FCh C000:017C mov word ptr ds:1B6h, cs ; C000h C000:0180 mov word ptr ds:4A8h, offset word_C64C5 ; 80h, 2Dh C000:0186 mov word ptr ds:4AAh, cs ; C000h C000:018A sti C000:018B call vga_init2 ; select EGA and CRTC ports, set videomode 80x25/BW, AX=3 C000:018E call vga_init3 ; do some magic with CRTC registers C000:0191 int 10h ; set videomode 80x25/16 C000:0193 retn ; VGA EXIT C000:0193 vga_init endp C000:0193 C000:0194 C000:0194 ; =============== S U B R O U T I N E ======================================= C000:0194 C000:0194 C000:0194 vga_init2 proc near ; CODE XREF: vga_init+7Bp C000:0194 push dx ; setup some pointers in BIOS area C000:0195 mov byte ptr ds:487h, 60h ; '`' C000:019A mov byte ptr ds:488h, 9 C000:019F mov byte ptr ds:489h, 11h C000:01A4 mov byte ptr ds:48Ah, 0Bh C000:01A9 mov al, ds:410h ; = E8h C000:01AC and al, 0CFh C000:01AE or al, 20h ; AL = E8h C000:01B0 mov ds:410h, al ; write back E8h C000:01B3 mov al, 1 C000:01B5 call vga_init2_1 ; select EGA ports 3Bxh C000:01B8 mov dx, 3B4h C000:01BB call vga_init2_2 ; select EGA CRTC port C000:01BE jnz short loc_C01DC C000:01C0 and byte ptr ds:489h, 0FEh C000:01C5 mov byte ptr ds:48Ah, 0Ch C000:01CA push word ptr ds:410h ; =E8h C000:01CE or byte ptr ds:410h, 30h ; = 0xF8 C000:01D3 mov ax, 7 C000:01D6 int 10h ; SET VIDEO MODE 80x25/BW C000:01D8 pop word ptr ds:410h C000:01DC C000:01DC loc_C01DC: ; CODE XREF: vga_init2+2Aj C000:01DC mov ax, 3 ; prepare videomode 80x25/16 C000:01DF pop dx C000:01E0 retn C000:01E0 vga_init2 endp C000:01E0 C000:01E1 C000:01E1 ; =============== S U B R O U T I N E ======================================= C000:01E1 C000:01E1 C000:01E1 vga_init2_2 proc near ; CODE XREF: vga_init2+27p C000:01E1 mov ax, 0AA0Dh ; DX=03B4h C000:01E4 out dx, ax ; AA0D->IO port 3B4h (CRTC address) C000:01E5 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:01E8 cmp ah, 0AAh ; '¬' C000:01EB jnz short locret_C020C C000:01ED mov ax, 2A0Ch C000:01F0 out dx, ax ; 2A0C->IO port 3B4h (CRTC address) C000:01F1 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:01F4 cmp ah, 2Ah ; '*' C000:01F7 jnz short locret_C020C C000:01F9 mov ax, 550Dh C000:01FC out dx, ax ; 550D->IO port 3B4h (CRTC address) C000:01FD call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:0200 cmp ah, 55h ; 'U' C000:0203 jnz short locret_C020C C000:0205 mov ax, 150Ch C000:0208 out dx, ax ; 150C->IO port 3B4h (CRTC address) C000:0209 cmp ah, 15h C000:020C C000:020C locret_C020C: ; CODE XREF: vga_init2_2+Aj C000:020C ; vga_init2_2+16j ... C000:020C retn C000:020C vga_init2_2 endp C000:020C C000:020D C000:020D ; =============== S U B R O U T I N E ======================================= C000:020D C000:020D C000:020D sub_C020D proc near C000:020D pusha C000:020E int 10h ; - VIDEO - C000:0210 mov bx, 808h C000:0213 mov ah, 8 C000:0215 C000:0215 loc_C0215: ; CODE XREF: sub_C020D+15j C000:0215 call sub_C2AE7 C000:0218 call sub_C0268 C000:021B jz short loc_C0226 C000:021D inc ah C000:021F cmp ah, 3Fh ; '?' C000:0222 jb short loc_C0215 C000:0224 jmp short loc_C0260 C000:0226 ; --------------------------------------------------------------------------- C000:0226 C000:0226 loc_C0226: ; CODE XREF: sub_C020D+Ej C000:0226 push ax C000:0227 mov ah, 8 C000:0229 C000:0229 loc_C0229: ; CODE XREF: sub_C020D+29j C000:0229 call sub_C2AE7 C000:022C call sub_C0268 C000:022F jz short loc_C023B C000:0231 inc bl C000:0233 cmp bl, 3Fh ; '?' C000:0236 jb short loc_C0229 C000:0238 pop ax C000:0239 jmp short loc_C0260 C000:023B ; --------------------------------------------------------------------------- C000:023B C000:023B loc_C023B: ; CODE XREF: sub_C020D+22j C000:023B pop ax C000:023C mov al, bl C000:023E cmp ah, 10h C000:0241 jb short loc_C0247 C000:0243 cmp al, 10h C000:0245 jnb short loc_C0257 C000:0247 C000:0247 loc_C0247: ; CODE XREF: sub_C020D+34j C000:0247 cmp ah, 10h C000:024A jnb short loc_C0257 C000:024C cmp al, 10h C000:024E jb short loc_C0257 C000:0250 or byte ptr ds:489h, 6 C000:0255 jmp short $+2 C000:0257 C000:0257 loc_C0257: ; CODE XREF: sub_C020D+38j C000:0257 ; sub_C020D+3Dj ... C000:0257 sub bx, bx C000:0259 sub ah, ah C000:025B call sub_C2AE7 C000:025E popa C000:025F retn C000:0260 ; --------------------------------------------------------------------------- C000:0260 C000:0260 loc_C0260: ; CODE XREF: sub_C020D+17j C000:0260 ; sub_C020D+2Cj C000:0260 mov cx, 4 C000:0263 call sub_C2C50 C000:0266 jmp short loc_C0257 C000:0266 sub_C020D endp C000:0266 C000:0268 C000:0268 ; =============== S U B R O U T I N E ======================================= C000:0268 C000:0268 C000:0268 sub_C0268 proc near ; CODE XREF: sub_C020D+Bp C000:0268 ; sub_C020D+1Fp C000:0268 push ax C000:0269 push dx C000:026A cli C000:026B call sub_C2BC9 C000:026E call wait4retrace C000:0271 mov dl, 0C2h ; 'T' C000:0273 in al, dx C000:0274 sti C000:0275 test al, 10h C000:0277 pop dx C000:0278 pop ax C000:0279 retn C000:0279 sub_C0268 endp C000:0279 C000:027A C000:027A ; =============== S U B R O U T I N E ======================================= C000:027A C000:027A C000:027A vga_init2_1 proc near ; CODE XREF: vga_init2+21p C000:027A push ax C000:027B push dx C000:027C mov ah, al ; AH=AL=1 C000:027E mov dx, 3CCh C000:0281 in al, dx ; EGA port: graphics 1 position (must be 1 for EGA) C000:0282 and ax, 1FEh C000:0285 or al, ah C000:0287 mov dl, 0C2h ; 'T' C000:0289 out dx, al ; EGA : misc cntl, DX=3C2h, AL=1? C000:0289 ; 0: 1=select 3BxH, 0=select 3DxH C000:0289 ; 1: 1=enable RAM C000:0289 ; 2-3: Dot clock C000:0289 ; 5: Page bit for odd/even mode C000:0289 ; 6: Horiz retrace polarity: 1=neg, 0=pos C000:0289 ; 7: Vert retrace polarity: 1=neg, 0=pos C000:028A pop dx C000:028B pop ax C000:028C retn C000:028C vga_init2_1 endp C000:028C C000:028C ; --------------------------------------------------------------------------- C000:028D db 0 C000:028E db 0 C000:028F db 0 C000:0290 ; --------------------------------------------------------------------------- C000:0290 C000:0290 VGA_SET_MODE: ; CODE XREF: C000:00F7j C000:0290 ; DATA XREF: C000:VGA_FUNC_PTRo C000:0290 pusha C000:0291 push es C000:0292 call loc_C02D2 C000:0295 jb short loc_C02CD C000:0297 call sub_C0363 C000:029A call sub_C0378 C000:029D call sub_C2C13 C000:02A0 call sub_C6887 C000:02A3 call sub_C65B3 C000:02A6 call sub_C03D2 C000:02A9 call near ptr sub_C2AFF+1 C000:02AC call sub_C0427 C000:02AF call hi_level_func C000:02B2 call sub_C0528 C000:02B5 test byte ptr ds:487h, 80h C000:02BA jnz short loc_C02BF C000:02BC call sub_C6720 C000:02BF C000:02BF loc_C02BF: ; CODE XREF: C000:02BAj C000:02BF call sub_C2B0D C000:02C2 mov dl, 0 C000:02C4 call sub_C67DB C000:02C7 call sub_C6899 C000:02CA call sub_C2C23 C000:02CD C000:02CD loc_C02CD: ; CODE XREF: C000:0295j C000:02CD pop es C000:02CE assume es:nothing C000:02CE popa C000:02CF pop ds C000:02D0 pop si C000:02D1 iret C000:02D2 ; --------------------------------------------------------------------------- C000:02D2 C000:02D2 loc_C02D2: ; CODE XREF: C000:0292p C000:02D2 mov ah, al C000:02D4 and ax, 807Fh C000:02D7 call sub_C2B23 C000:02DA jz short loc_C02DF C000:02DC jmp loc_C0361 C000:02DF ; --------------------------------------------------------------------------- C000:02DF C000:02DF loc_C02DF: ; CODE XREF: C000:02DAj C000:02DF mov ds:449h, al C000:02E2 call sub_C68AB C000:02E5 mov cl, ds:487h C000:02E9 and cl, 77h C000:02EC or cl, ah C000:02EE mov ds:487h, cl C000:02F2 and byte ptr ds:410h, 0CFh C000:02F7 or byte ptr ds:410h, 20h C000:02FC cmp al, 7 C000:02FE jz short loc_C0326 C000:0300 cmp al, 0Fh C000:0302 jz short loc_C0326 C000:0304 mov dx, 3D4h C000:0307 mov ds:463h, dx C000:030B and byte ptr ds:487h, 0FDh C000:0310 mov bl, 8 C000:0312 test byte ptr ds:489h, 80h C000:0317 jnz short loc_C031B C000:0319 mov bl, 9 C000:031B C000:031B loc_C031B: ; CODE XREF: C000:0317j C000:031B and byte ptr ds:488h, 0F0h C000:0320 or ds:488h, bl C000:0324 jmp short loc_C0347 C000:0326 ; --------------------------------------------------------------------------- C000:0326 C000:0326 loc_C0326: ; CODE XREF: C000:02FEj C000:0326 ; C000:0302j C000:0326 mov dx, 3B4h C000:0329 mov ds:463h, dx C000:032D or byte ptr ds:487h, 2 C000:0332 and byte ptr ds:488h, 0F0h C000:0337 or byte ptr ds:488h, 0Bh C000:033C cmp al, 0Fh C000:033E jz short loc_C0347 C000:0340 test byte ptr ds:489h, 1 C000:0345 jz short loc_C0349 C000:0347 C000:0347 loc_C0347: ; CODE XREF: C000:0324j C000:0347 ; C000:033Ej C000:0347 clc C000:0348 retn C000:0349 ; --------------------------------------------------------------------------- C000:0349 C000:0349 loc_C0349: ; CODE XREF: C000:0345j C000:0349 mov byte ptr ds:484h, 18h C000:034E mov word ptr ds:485h, 0Eh C000:0354 or byte ptr ds:487h, 8 C000:0359 or byte ptr ds:410h, 30h C000:035E cbw C000:035F int 42h ; - EGA/VGA/PS - Relocated (by EGA) Video Handler (original INT 10h) C000:0361 C000:0361 loc_C0361: ; CODE XREF: C000:02DCj C000:0361 stc C000:0362 retn C000:0363 C000:0363 ; =============== S U B R O U T I N E ======================================= C000:0363 C000:0363 C000:0363 sub_C0363 proc near ; CODE XREF: C000:0297p C000:0363 C000:0363 ; FUNCTION CHUNK AT C000:0561 SIZE 0000000A BYTES C000:0363 C000:0363 mov al, ds:449h C000:0366 les di, ds:4A8h C000:036A les di, es:[di] C000:036D jmp loc_C0561 C000:036D sub_C0363 endp C000:036D C000:036D ; --------------------------------------------------------------------------- C000:0370 db 2Ch ; , C000:0371 db 28h ; ( C000:0372 db 2Dh ; - C000:0373 db 29h ; ) C000:0374 db 2Ah ; * C000:0375 db 2Eh ; . C000:0376 db 1Eh C000:0377 db 29h ; ) C000:0378 C000:0378 ; =============== S U B R O U T I N E ======================================= C000:0378 C000:0378 C000:0378 sub_C0378 proc near ; CODE XREF: C000:029Ap C000:0378 push di C000:0379 push es C000:037A mov cx, 9 C000:037D mov di, 44Eh C000:0380 sub ax, ax C000:0382 mov es, ax C000:0384 rep stosw C000:0386 pop es C000:0387 pop di C000:0388 mov ds:462h, al C000:038B mov bl, ds:449h C000:038F mov bh, ah C000:0391 cmp bl, 7 C000:0394 ja short loc_C03AD C000:0396 mov al, cs:[bx+370h] C000:039B mov ds:465h, al C000:039E mov byte ptr ds:466h, 3Fh ; '?' C000:03A3 cmp bl, 6 C000:03A6 jz short loc_C03AD C000:03A8 mov byte ptr ds:466h, 30h ; '0' C000:03AD C000:03AD loc_C03AD: ; CODE XREF: sub_C0378+1Cj C000:03AD ; sub_C0378+2Ej C000:03AD mov al, es:[di] C000:03B0 mov ds:44Ah, ax C000:03B3 mov al, es:[di+2] C000:03B7 mov ds:485h, ax C000:03BA mov al, es:[di+1] C000:03BE mov ds:484h, al C000:03C1 mov ax, es:[di+3] C000:03C5 mov ds:44Ch, ax C000:03C8 mov ax, es:[di+14h] C000:03CC xchg al, ah C000:03CE mov ds:460h, ax C000:03D1 retn C000:03D1 sub_C0378 endp C000:03D1 C000:03D2 C000:03D2 ; =============== S U B R O U T I N E ======================================= C000:03D2 C000:03D2 C000:03D2 sub_C03D2 proc near ; CODE XREF: C000:02A6p C000:03D2 push di C000:03D3 push ds C000:03D4 push es C000:03D5 mov si, di C000:03D7 push es C000:03D8 pop ds C000:03D9 mov dx, 3C4h C000:03DC mov ax, 100h C000:03DF out dx, ax ; EGA: sequencer address reg C000:03DF ; unknown register C000:03E0 mov dl, 0C2h ; 'T' C000:03E2 mov al, [si+9] C000:03E5 out dx, al ; EGA : misc cntl C000:03E5 ; 0: 1=select 3BxH C000:03E5 ; 1: 1=enable RAM C000:03E5 ; 2-3: Dot clock C000:03E5 ; 5: Page bit for odd/even mode C000:03E5 ; 6: Horiz retrace polarity: 1=neg, 0=pos C000:03E5 ; 7: Vert retrace polarity: 1=neg, 0=pos C000:03E6 mov dl, 0C4h ; '¦' C000:03E8 push si C000:03E9 mov cx, 4 C000:03EC mov bl, 1 C000:03EE lea si, [si+5] C000:03F1 call sub_C2C36 C000:03F4 pop si C000:03F5 mov ax, 300h C000:03F8 out dx, ax C000:03F9 push ds C000:03FA sub ax, ax C000:03FC mov ds, ax C000:03FE mov dx, ds:463h C000:0402 pop ds C000:0403 mov ax, 2011h C000:0406 out dx, ax C000:0407 sub bl, bl C000:0409 mov cx, 19h C000:040C push si C000:040D lea si, [si+0Ah] C000:0410 call sub_C2C36 ; may be replaced by F8h C000:0413 pop si C000:0414 mov dl, 0CEh ; '+' C000:0416 sub bl, bl C000:0418 mov cx, 9 C000:041B push si C000:041C lea si, [si+37h] C000:041F call sub_C2C36 C000:0422 pop si C000:0423 pop es C000:0424 pop ds C000:0425 pop di C000:0426 retn C000:0426 sub_C03D2 endp C000:0426 C000:0427 C000:0427 ; =============== S U B R O U T I N E ======================================= C000:0427 C000:0427 C000:0427 sub_C0427 proc near ; CODE XREF: C000:02ACp C000:0427 push di C000:0428 push es C000:0429 mov dx, ds:463h C000:042D add dl, 6 C000:0430 push dx C000:0431 lea si, [di+23h] C000:0434 call sub_C056B C000:0437 cli C000:0438 in al, dx C000:0439 mov dl, 0C0h ; 'L' C000:043B mov al, 14h C000:043D out dx, al C000:043E sub al, al C000:0440 out dx, al C000:0441 sti C000:0442 test byte ptr ds:489h, 8 C000:0447 jnz short loc_C044C C000:0449 call sub_C04A4 C000:044C C000:044C loc_C044C: ; CODE XREF: sub_C0427+20j C000:044C pop dx C000:044D les di, ds:4A8h C000:0451 les di, es:[di+10h] C000:0455 mov ax, es C000:0457 or ax, di C000:0459 jz short loc_C048F C000:045B les di, es:[di+0Ah] C000:045F mov ax, es C000:0461 or ax, di C000:0463 jz short loc_C048F C000:0465 lea si, [di+14h] C000:0468 call sub_C059F C000:046B jnz short loc_C048F C000:046D push ds C000:046E mov cx, es:[di+4] C000:0472 mov ah, es:[di+6] C000:0476 lds si, es:[di+8] C000:047A call sub_C2AC9 C000:047D mov ax, 1012h C000:0480 mov cx, es:[di+0Ch] C000:0484 mov bx, es:[di+0Eh] C000:0488 les dx, es:[di+10h] ; replaced by 09h C000:048C int 10h ; - VIDEO - SET BLOCK OF DAC REGISTERS (EGA, VGA/MCGA) C000:048C ; BX = starting color register, CX = number of registers to set C000:048C ; ES:DX -> table of 3*CX bytes where each 3 byte group represents one C000:048C ; byte each of red, green and blue (0-63) C000:048E pop ds C000:048F C000:048F loc_C048F: ; CODE XREF: sub_C0427+32j C000:048F ; sub_C0427+3Cj ... C000:048F pop es C000:0490 pop di C000:0491 retn C000:0491 sub_C0427 endp C000:0491 C000:0491 ; --------------------------------------------------------------------------- C000:0492 off_C0492 dw offset loc_C04D4 ; DATA XREF: sub_C04A4+29r C000:0494 dw offset sub_C04F3 C000:0496 dw offset sub_C04E7 C000:0498 dw offset sub_C04F3 C000:049A dw offset sub_C04DB C000:049C dw offset sub_C04DB C000:049E dw offset sub_C051C C000:04A0 dw offset sub_C051C C000:04A2 dw offset sub_C051C C000:04A4 C000:04A4 ; =============== S U B R O U T I N E ======================================= C000:04A4 C000:04A4 C000:04A4 sub_C04A4 proc near ; CODE XREF: sub_C0427+22p C000:04A4 mov dx, 3C6h C000:04A7 mov al, 0FFh C000:04A9 out dx, al C000:04AA mov al, ds:449h ; replaced by CS = C000h C000:04AD mov bx, 4 C000:04B0 cmp al, 0Dh C000:04B2 jz short loc_C04CA C000:04B4 cmp al, 0Eh C000:04B6 jz short loc_C04CA C000:04B8 call sub_C2C61 C000:04BB mov bl, es:[bx+4] C000:04BF sub bh, bh C000:04C1 cmp bl, 9 C000:04C4 jb short loc_C04C8 C000:04C6 mov bl, 8 C000:04C8 C000:04C8 loc_C04C8: ; CODE XREF: sub_C04A4+20j C000:04C8 shl bx, 1 C000:04CA C000:04CA loc_C04CA: ; CODE XREF: sub_C04A4+Ej C000:04CA ; sub_C04A4+12j C000:04CA push es C000:04CB push cs C000:04CC pop es C000:04CD assume es:nothing C000:04CD call es:off_C0492[bx] C000:04D2 pop es C000:04D3 assume es:nothing C000:04D3 retn C000:04D3 sub_C04A4 endp C000:04D3 C000:04D4 ; --------------------------------------------------------------------------- C000:04D4 C000:04D4 loc_C04D4: ; CODE XREF: sub_C04A4+29p C000:04D4 ; DATA XREF: C000:off_C0492o C000:04D4 test byte ptr ds:489h, 80h C000:04D9 jnz short sub_C04E7 C000:04DB C000:04DB ; =============== S U B R O U T I N E ======================================= C000:04DB C000:04DB C000:04DB sub_C04DB proc near ; CODE XREF: sub_C04A4+29p C000:04DB ; DATA XREF: C000:049Ao ... C000:04DB mov si, 6000h C000:04DE mov cx, 40h ; '@' C000:04E1 sub bl, bl C000:04E3 call sub_C299C C000:04E6 retn C000:04E6 sub_C04DB endp C000:04E6 C000:04E7 C000:04E7 ; =============== S U B R O U T I N E ======================================= C000:04E7 C000:04E7 C000:04E7 sub_C04E7 proc near ; CODE XREF: sub_C04A4+29p C000:04E7 ; C000:04D9j C000:04E7 ; DATA XREF: ... C000:04E7 mov si, 60C0h C000:04EA mov cx, 40h ; '@' C000:04ED sub bl, bl C000:04EF call sub_C299C C000:04F2 retn C000:04F2 sub_C04E7 endp C000:04F2 C000:04F3 C000:04F3 ; =============== S U B R O U T I N E ======================================= C000:04F3 C000:04F3 C000:04F3 sub_C04F3 proc near ; CODE XREF: sub_C04A4+29p C000:04F3 ; DATA XREF: C000:0494o ... C000:04F3 mov si, 6180h C000:04F6 mov dx, 3C6h C000:04F9 mov al, 0FFh C000:04FB out dx, al C000:04FC inc dx C000:04FD inc dx C000:04FE sub al, al C000:0500 out dx, al C000:0501 inc dx C000:0502 mov cx, 2 C000:0505 C000:0505 loc_C0505: ; CODE XREF: sub_C04F3+26j C000:0505 push cx C000:0506 push si C000:0507 mov cx, 4 C000:050A C000:050A loc_C050A: ; CODE XREF: sub_C04F3+22j C000:050A lods byte ptr es:[si] C000:050C mov bx, 8 C000:050F C000:050F loc_C050F: ; CODE XREF: sub_C04F3+20j C000:050F out dx, al C000:0510 out dx, al C000:0511 out dx, al C000:0512 dec bx C000:0513 jnz short loc_C050F C000:0515 loop loc_C050A C000:0517 pop si C000:0518 pop cx C000:0519 loop loc_C0505 C000:051B retn C000:051B sub_C04F3 endp C000:051B C000:051C C000:051C ; =============== S U B R O U T I N E ======================================= C000:051C C000:051C C000:051C sub_C051C proc near ; CODE XREF: sub_C04A4+29p C000:051C ; DATA XREF: C000:049Eo ... C000:051C mov si, 6184h C000:051F mov cx, 0F8h ; '°' C000:0522 sub bl, bl C000:0524 call sub_C299C C000:0527 retn C000:0527 sub_C051C endp C000:0527 C000:0528 C000:0528 ; =============== S U B R O U T I N E ======================================= C000:0528 C000:0528 C000:0528 sub_C0528 proc near ; CODE XREF: C000:02B2p C000:0528 mov al, ds:449h C000:052B call sub_C2B45 C000:052E jnz short loc_C0555 C000:0530 call sub_C1EBD C000:0533 call sub_C1EA0 C000:0536 sub dx, dx C000:0538 mov bl, dl C000:053A mov cx, 100h C000:053D call sub_C1F02 C000:0540 call nullsub_7 C000:0543 call sub_C2B5B C000:0546 jnz short loc_C0550 C000:0548 call nullsub_5 C000:054B sub bl, bl C000:054D call nullsub_6 C000:0550 C000:0550 loc_C0550: ; CODE XREF: sub_C0528+1Ej C000:0550 call sub_C1EDD C000:0553 jmp short locret_C0560 C000:0555 ; --------------------------------------------------------------------------- C000:0555 C000:0555 loc_C0555: ; CODE XREF: sub_C0528+6j C000:0555 call sub_C1EA0 C000:0558 mov ds:10Ch, di C000:055C mov word ptr ds:10Eh, es C000:0560 C000:0560 locret_C0560: ; CODE XREF: sub_C0528+2Bj C000:0560 retn C000:0560 sub_C0528 endp C000:0560 C000:0561 ; --------------------------------------------------------------------------- C000:0561 ; START OF FUNCTION CHUNK FOR sub_C0363 C000:0561 C000:0561 loc_C0561: ; CODE XREF: sub_C0363+Aj C000:0561 call sub_C66B3 C000:0564 cbw C000:0565 shl ax, 6 C000:0568 add di, ax C000:056A retn C000:056A ; END OF FUNCTION CHUNK FOR sub_C0363 C000:056B C000:056B ; =============== S U B R O U T I N E ======================================= C000:056B C000:056B C000:056B sub_C056B proc near ; CODE XREF: sub_C0427+Dp C000:056B push dx C000:056C push di C000:056D push ds C000:056E push es C000:056F push es C000:0570 les di, ds:4A8h C000:0574 les di, es:[di+4] C000:0578 pop ds C000:0579 mov ax, es C000:057B or ax, di C000:057D jz short loc_C0588 C000:057F mov cx, 10h C000:0582 push si C000:0583 rep movsb C000:0585 inc si C000:0586 movsb C000:0587 pop si C000:0588 C000:0588 loc_C0588: ; CODE XREF: sub_C056B+12j C000:0588 sub bl, bl C000:058A mov cx, 14h C000:058D cli C000:058E in al, dx C000:058F mov dl, 0C0h ; 'L' C000:0591 C000:0591 loc_C0591: ; CODE XREF: sub_C056B+2Cj C000:0591 mov al, bl C000:0593 out dx, al C000:0594 lodsb C000:0595 out dx, al C000:0596 inc bx C000:0597 loop loc_C0591 C000:0599 sti C000:059A pop es C000:059B pop ds C000:059C pop di C000:059D pop dx C000:059E retn C000:059E sub_C056B endp C000:059E C000:059F C000:059F ; =============== S U B R O U T I N E ======================================= C000:059F C000:059F C000:059F sub_C059F proc near ; CODE XREF: sub_C0427+41p C000:059F mov ah, ds:449h C000:05A3 C000:05A3 loc_C05A3: ; CODE XREF: sub_C059F+Cj C000:05A3 lods byte ptr es:[si] C000:05A5 cmp ah, al C000:05A7 jz short locret_C05AE C000:05A9 cmp al, 0FFh C000:05AB jnz short loc_C05A3 C000:05AD dec ax C000:05AE C000:05AE locret_C05AE: ; CODE XREF: sub_C059F+8j C000:05AE retn C000:05AE sub_C059F endp C000:05AE C000:05AF ; --------------------------------------------------------------------------- C000:05AF C000:05AF VGA_GET_MODE: ; CODE XREF: C000:00F7j C000:05AF ; DATA XREF: C000:00C0o C000:05AF mov al, ds:487h C000:05B2 and al, 80h C000:05B4 or al, ds:449h C000:05B8 mov ah, ds:44Ah C000:05BC mov bh, ds:462h C000:05C0 pop ds C000:05C1 pop si C000:05C2 iret C000:05C2 ; --------------------------------------------------------------------------- C000:05C3 db 0 C000:05C4 db 0 C000:05C5 db 0 C000:05C6 db 0 C000:05C7 db 0 C000:05C8 db 0 C000:05C9 db 0 C000:05CA db 0 C000:05CB db 0 C000:05CC db 0 C000:05CD db 0 C000:05CE db 0 C000:05CF db 0 C000:05D0 off_C05D0 dw offset sub_C0615 ; DATA XREF: C000:0603r C000:05D2 dw offset sub_C060E C000:05D4 dw offset sub_C063D C000:05D6 dw offset sub_C0782 C000:05D8 dw offset sub_C0782 C000:05DA dw offset sub_C0782 C000:05DC dw offset sub_C0825 C000:05DE dw offset sub_C08B1 C000:05E0 dw offset sub_C093C C000:05E2 ; --------------------------------------------------------------------------- C000:05E2 C000:05E2 VGA_GET_CHAR_ATR: ; CODE XREF: C000:00F7j C000:05E2 ; DATA XREF: C000:00B2o C000:05E2 push bx C000:05E3 push dx C000:05E4 push es C000:05E5 push ax C000:05E6 push bx C000:05E7 push es C000:05E8 mov al, ds:449h C000:05EB call sub_C2C61 C000:05EE mov si, es:[bx+4] C000:05F2 pop es C000:05F3 pop bx C000:05F4 pop ax C000:05F5 jb short loc_C0608 C000:05F7 and si, 0FFh C000:05FB shl si, 1 C000:05FD cmp si, 12h C000:0601 jnb short loc_C0608 C000:0603 call cs:off_C05D0[si] C000:0608 C000:0608 loc_C0608: ; CODE XREF: C000:05F5j C000:0608 ; C000:0601j C000:0608 pop es C000:0609 pop dx C000:060A pop bx C000:060B pop ds C000:060C pop si C000:060D iret C000:060E C000:060E ; =============== S U B R O U T I N E ======================================= C000:060E C000:060E C000:060E sub_C060E proc near ; CODE XREF: C000:0603p C000:060E ; DATA XREF: C000:05D2o C000:060E mov ax, 0B000h C000:0611 mov es, ax C000:0613 assume es:nothing C000:0613 jmp short loc_C061A C000:0613 sub_C060E endp C000:0613 C000:0615 C000:0615 ; =============== S U B R O U T I N E ======================================= C000:0615 C000:0615 C000:0615 sub_C0615 proc near ; CODE XREF: C000:0603p C000:0615 ; DATA XREF: C000:off_C05D0o C000:0615 mov ax, 0B800h C000:0618 mov es, ax C000:061A assume es:nothing C000:061A C000:061A loc_C061A: ; CODE XREF: sub_C060E+5j C000:061A mov bl, bh C000:061C sub bh, bh C000:061E mov ax, ds:44Ch C000:0621 imul ax, bx C000:0624 mov si, ax C000:0626 shl bx, 1 C000:0628 mov bx, [bx+450h] C000:062C mov al, ds:44Ah C000:062F mul bh C000:0631 add al, bl C000:0633 adc ah, 0 C000:0636 shl ax, 1 C000:0638 add si, ax C000:063A lods word ptr es:[si] C000:063C retn C000:063C sub_C0615 endp C000:063C C000:063D C000:063D ; =============== S U B R O U T I N E ======================================= C000:063D C000:063D C000:063D sub_C063D proc near ; CODE XREF: C000:0603p C000:063D ; DATA XREF: C000:05D4o C000:063D push cx C000:063E push bp C000:063F push di C000:0640 mov cx, ds:485h C000:0644 sub sp, cx C000:0646 mov bp, sp C000:0648 push cx C000:0649 les di, ds:10Ch C000:064D assume es:nothing C000:064D mov dx, ds:450h C000:0651 mov al, cl C000:0653 mul byte ptr ds:44Ah C000:0657 mov bh, dl C000:0659 shl bh, 1 C000:065B mov dl, dh C000:065D sub dh, dh C000:065F mul dx C000:0661 add al, bh C000:0663 adc ah, 0 C000:0666 mov si, ax C000:0668 mov al, ds:449h C000:066B mov bx, 0B800h C000:066E mov ds, bx C000:0670 assume ds:nothing C000:0670 push cx C000:0671 push di C000:0672 push es C000:0673 mov bx, ss C000:0675 mov es, bx C000:0677 mov di, bp C000:0679 cmp al, 6 C000:067B jnz short loc_C0695 C000:067D shr si, 1 C000:067F C000:067F loc_C067F: ; CODE XREF: sub_C063D:loc_C0691j C000:067F movsb C000:0680 dec si C000:0681 test si, 2000h C000:0685 jnz short loc_C068D C000:0687 add si, 2000h C000:068B jmp short loc_C0691 C000:068D ; --------------------------------------------------------------------------- C000:068D C000:068D loc_C068D: ; CODE XREF: sub_C063D+48j C000:068D sub si, 1FB0h C000:0691 C000:0691 loc_C0691: ; CODE XREF: sub_C063D+4Ej C000:0691 loop loc_C067F C000:0693 jmp short loc_C06B0 C000:0695 ; --------------------------------------------------------------------------- C000:0695 C000:0695 loc_C0695: ; CODE XREF: sub_C063D+3Ej C000:0695 ; sub_C063D:loc_C06AEj C000:0695 lodsw C000:0696 xchg al, ah C000:0698 call sub_C06ED C000:069B stosb C000:069C dec si C000:069D dec si C000:069E test si, 2000h C000:06A2 jnz short loc_C06AA C000:06A4 add si, 2000h C000:06A8 jmp short loc_C06AE C000:06AA ; --------------------------------------------------------------------------- C000:06AA C000:06AA loc_C06AA: ; CODE XREF: sub_C063D+65j C000:06AA sub si, 1FB0h C000:06AE C000:06AE loc_C06AE: ; CODE XREF: sub_C063D+6Bj C000:06AE loop loc_C0695 C000:06B0 C000:06B0 loc_C06B0: ; CODE XREF: sub_C063D+56j C000:06B0 pop ds C000:06B1 assume ds:nothing C000:06B1 pop si C000:06B2 pop cx C000:06B3 sub ax, ax C000:06B5 mov bx, cx C000:06B7 C000:06B7 loc_C06B7: ; CODE XREF: sub_C063D+86j C000:06B7 mov di, bp C000:06B9 mov cx, bx C000:06BB repe cmpsb C000:06BD jz short loc_C06C5 C000:06BF add si, cx C000:06C1 inc al C000:06C3 jnz short loc_C06B7 C000:06C5 C000:06C5 loc_C06C5: ; CODE XREF: sub_C063D+80j C000:06C5 cbw C000:06C6 pop bx C000:06C7 add sp, bx C000:06C9 pop di C000:06CA pop bp C000:06CB pop cx C000:06CC retn C000:06CC sub_C063D endp C000:06CC C000:06CC ; --------------------------------------------------------------------------- C000:06CD db 0,0,0,0,0,0,0,0 C000:06D5 db 1,2,4,8 C000:06D5 db 10h,20h,40h,80h C000:06D5 db 1,2,4,8 C000:06D5 db 10h,20h,40h,80h C000:06D5 db 1,2,4,8 C000:06D5 db 10h,20h,40h,80h C000:06ED C000:06ED ; =============== S U B R O U T I N E ======================================= C000:06ED C000:06ED C000:06ED sub_C06ED proc near ; CODE XREF: sub_C063D+5Bp C000:06ED push di C000:06EE sub bx, bx C000:06F0 mov dl, bl C000:06F2 mov di, 6CDh C000:06F5 mov bl, al C000:06F7 and bl, 3 C000:06FA shl bx, 3 C000:06FD add dl, cs:[bx+di] C000:0700 shr ax, 2 C000:0703 inc di C000:0704 mov bl, al C000:0706 and bl, 3 C000:0709 shl bx, 3 C000:070C add dl, cs:[bx+di] C000:070F shr ax, 2 C000:0712 inc di C000:0713 mov bl, al C000:0715 and bl, 3 C000:0718 shl bx, 3 C000:071B add dl, cs:[bx+di] C000:071E shr ax, 2 C000:0721 inc di C000:0722 mov bl, al C000:0724 and bl, 3 C000:0727 shl bx, 3 C000:072A add dl, cs:[bx+di] C000:072D shr ax, 2 C000:0730 inc di C000:0731 mov bl, al C000:0733 and bl, 3 C000:0736 shl bx, 3 C000:0739 add dl, cs:[bx+di] C000:073C shr ax, 2 C000:073F inc di C000:0740 mov bl, al C000:0742 and bl, 3 C000:0745 shl bx, 3 C000:0748 add dl, cs:[bx+di] C000:074B shr ax, 2 C000:074E inc di C000:074F mov bl, al C000:0751 and bl, 3 C000:0754 shl bx, 3 C000:0757 add dl, cs:[bx+di] C000:075A shr ax, 2 C000:075D inc di C000:075E mov bl, al C000:0760 and bl, 3 C000:0763 shl bx, 3 C000:0766 add dl, cs:[bx+di] C000:0769 mov al, dl C000:076B pop di C000:076C retn C000:076C sub_C06ED endp C000:076C C000:076D ; --------------------------------------------------------------------------- C000:076D ; START OF FUNCTION CHUNK FOR sub_C0782 C000:076D C000:076D loc_C076D: ; CODE XREF: sub_C0782+7j C000:076D mov bl, bh C000:076F sub bh, bh C000:0771 shl bx, 1 C000:0773 mov dx, [bx+450h] C000:0777 shr bx, 1 C000:0779 C000:0779 loc_C0779: ; CODE XREF: sub_C0782-4j C000:0779 add si, ds:44Ch C000:077D dec bx C000:077E jnz short loc_C0779 C000:0780 jmp short loc_C078F C000:0780 ; END OF FUNCTION CHUNK FOR sub_C0782 C000:0782 C000:0782 ; =============== S U B R O U T I N E ======================================= C000:0782 C000:0782 C000:0782 sub_C0782 proc near ; CODE XREF: C000:0603p C000:0782 ; DATA XREF: C000:05D6o ... C000:0782 C000:0782 ; FUNCTION CHUNK AT C000:076D SIZE 00000015 BYTES C000:0782 C000:0782 push cx C000:0783 push bp C000:0784 push di C000:0785 sub si, si C000:0787 or bh, bh C000:0789 jnz short loc_C076D C000:078B mov dx, ds:450h C000:078F C000:078F loc_C078F: ; CODE XREF: sub_C0782-2j C000:078F mov ax, ds:485h C000:0792 mov cx, ax C000:0794 inc ax C000:0795 shr ax, 1 C000:0797 shl ax, 1 C000:0799 sub sp, ax C000:079B mov bp, sp C000:079D push ax C000:079E les di, ds:10Ch C000:07A2 mov al, dh C000:07A4 mul cl C000:07A6 mov bh, dl C000:07A8 mul word ptr ds:44Ah C000:07AC add al, bh C000:07AE adc ah, 0 C000:07B1 adc dx, 0 C000:07B4 add si, ax C000:07B6 adc dx, 0 C000:07B9 call sub_C67DB C000:07BC mov bx, ds:44Ah C000:07C0 mov ax, 0A000h C000:07C3 mov ds, ax C000:07C5 assume ds:nothing C000:07C5 mov dx, 3CEh C000:07C8 mov al, 2 C000:07CA call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:07CD push ax C000:07CE sub ah, ah C000:07D0 out dx, ax C000:07D1 mov al, 7 C000:07D3 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:07D6 push ax C000:07D7 mov ah, 0Fh C000:07D9 out dx, ax C000:07DA mov al, 5 C000:07DC call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:07DF push ax C000:07E0 or ah, 8 C000:07E3 out dx, ax C000:07E4 push cx C000:07E5 push di C000:07E6 push es C000:07E7 push ss C000:07E8 pop es C000:07E9 mov di, bp C000:07EB dec bx C000:07EC C000:07EC loc_C07EC: ; CODE XREF: sub_C0782:loc_C07FEj C000:07EC lodsb C000:07ED test si, si C000:07EF jnz short loc_C07F4 C000:07F1 call sub_C6808 C000:07F4 C000:07F4 loc_C07F4: ; CODE XREF: sub_C0782+6Dj C000:07F4 not al C000:07F6 stosb C000:07F7 add si, bx C000:07F9 jnb short loc_C07FE C000:07FB call sub_C6808 C000:07FE C000:07FE loc_C07FE: ; CODE XREF: sub_C0782+77j C000:07FE loop loc_C07EC C000:0800 pop ds C000:0801 assume ds:nothing C000:0801 pop si C000:0802 pop cx C000:0803 mov di, bp C000:0805 pop ax C000:0806 out dx, ax C000:0807 pop ax C000:0808 out dx, ax C000:0809 pop ax C000:080A out dx, ax C000:080B sub ax, ax C000:080D mov bx, cx C000:080F C000:080F loc_C080F: ; CODE XREF: sub_C0782+99j C000:080F mov di, bp C000:0811 mov cx, bx C000:0813 repe cmpsb C000:0815 jz short loc_C081D C000:0817 add si, cx C000:0819 inc al C000:081B jnz short loc_C080F C000:081D C000:081D loc_C081D: ; CODE XREF: sub_C0782+93j C000:081D cbw C000:081E pop bx C000:081F add sp, bx C000:0821 pop di C000:0822 pop bp C000:0823 pop cx C000:0824 retn C000:0824 sub_C0782 endp C000:0824 C000:0825 C000:0825 ; =============== S U B R O U T I N E ======================================= C000:0825 C000:0825 C000:0825 sub_C0825 proc near ; CODE XREF: C000:0603p C000:0825 ; DATA XREF: C000:05DCo C000:0825 push cx C000:0826 push bp C000:0827 push di C000:0828 mov ax, ds:485h C000:082B mov cx, ax C000:082D inc ax C000:082E shr ax, 1 C000:0830 shl ax, 1 C000:0832 sub sp, ax C000:0834 mov bp, sp C000:0836 push ax C000:0837 mov dx, ds:450h C000:083B mov al, dh C000:083D mov di, ds:44Ah C000:0841 shl di, 3 C000:0844 sub dh, dh C000:0846 mov si, dx C000:0848 shl si, 3 C000:084B mul cl C000:084D mul di C000:084F add si, ax C000:0851 adc dx, 0 C000:0854 call sub_C67DB C000:0857 mov dx, di C000:0859 les di, ds:10Ch C000:085D mov ax, 0A000h C000:0860 mov ds, ax C000:0862 assume ds:nothing C000:0862 push cx C000:0863 push di C000:0864 push es C000:0865 mov ax, ss C000:0867 mov es, ax C000:0869 mov di, bp C000:086B sub dx, 8 C000:086E mov bx, cx C000:0870 C000:0870 loc_C0870: ; CODE XREF: sub_C0825+66j C000:0870 mov cx, 8 C000:0873 sub ax, ax C000:0875 C000:0875 loc_C0875: ; CODE XREF: sub_C0825+5Aj C000:0875 cmp byte ptr [si], 0 C000:0878 jz short loc_C087C C000:087A or al, 80h C000:087C C000:087C loc_C087C: ; CODE XREF: sub_C0825+53j C000:087C rol al, 1 C000:087E inc si C000:087F loop loc_C0875 C000:0881 stosb C000:0882 add si, dx C000:0884 jb short loc_C08AC C000:0886 cmp si, dx C000:0888 jz short loc_C08AC C000:088A C000:088A loc_C088A: ; CODE XREF: sub_C0825+8Aj C000:088A dec bx C000:088B jnz short loc_C0870 C000:088D pop ds C000:088E assume ds:nothing C000:088E pop si C000:088F pop cx C000:0890 mov di, bp C000:0892 sub ax, ax C000:0894 mov bx, cx C000:0896 C000:0896 loc_C0896: ; CODE XREF: sub_C0825+7Dj C000:0896 mov di, bp C000:0898 mov cx, bx C000:089A repe cmpsb C000:089C jz short loc_C08A4 C000:089E add si, cx C000:08A0 inc al C000:08A2 jnz short loc_C0896 C000:08A4 C000:08A4 loc_C08A4: ; CODE XREF: sub_C0825+77j C000:08A4 cbw C000:08A5 pop bx C000:08A6 add sp, bx C000:08A8 pop di C000:08A9 pop bp C000:08AA pop cx C000:08AB retn C000:08AC ; --------------------------------------------------------------------------- C000:08AC C000:08AC loc_C08AC: ; CODE XREF: sub_C0825+5Fj C000:08AC ; sub_C0825+63j C000:08AC call sub_C6808 C000:08AF jmp short loc_C088A C000:08AF sub_C0825 endp C000:08AF C000:08B1 C000:08B1 ; =============== S U B R O U T I N E ======================================= C000:08B1 C000:08B1 C000:08B1 sub_C08B1 proc near ; CODE XREF: C000:0603p C000:08B1 ; DATA XREF: C000:05DEo C000:08B1 push cx C000:08B2 push bp C000:08B3 push di C000:08B4 mov ax, ds:485h C000:08B7 mov cx, ax C000:08B9 inc ax C000:08BA shr ax, 1 C000:08BC shl ax, 1 C000:08BE sub sp, ax C000:08C0 mov bp, sp C000:08C2 push ax C000:08C3 les di, ds:10Ch C000:08C7 mov al, dh C000:08C9 mul cl C000:08CB mov bl, dl C000:08CD mov dx, ds:44Ah C000:08D1 shl dx, 4 C000:08D4 push dx C000:08D5 mul dx C000:08D7 sub bh, bh C000:08D9 shl bx, 4 C000:08DC add ax, bx C000:08DE adc dx, 0 C000:08E1 call sub_C67DB C000:08E4 pop dx C000:08E5 mov si, ax C000:08E7 mov ax, 0A000h C000:08EA mov ds, ax C000:08EC assume ds:nothing C000:08EC push cx C000:08ED push di C000:08EE push es C000:08EF mov ax, ss C000:08F1 mov es, ax C000:08F3 mov di, bp C000:08F5 sub dx, 10h C000:08F8 mov bx, cx C000:08FA C000:08FA loc_C08FA: ; CODE XREF: sub_C08B1+65j C000:08FA mov cx, 8 C000:08FD sub al, al C000:08FF C000:08FF loc_C08FF: ; CODE XREF: sub_C08B1+59j C000:08FF cmp word ptr [si], 0 C000:0902 jz short loc_C0906 C000:0904 or al, 80h C000:0906 C000:0906 loc_C0906: ; CODE XREF: sub_C08B1+51j C000:0906 rol al, 1 C000:0908 inc si C000:0909 inc si C000:090A loop loc_C08FF C000:090C stosb C000:090D add si, dx C000:090F jb short loc_C0937 C000:0911 cmp si, dx C000:0913 jz short loc_C0937 C000:0915 C000:0915 loc_C0915: ; CODE XREF: sub_C08B1+89j C000:0915 dec bx C000:0916 jnz short loc_C08FA C000:0918 pop ds C000:0919 assume ds:nothing C000:0919 pop si C000:091A pop cx C000:091B mov di, bp C000:091D sub ax, ax C000:091F mov bx, cx C000:0921 C000:0921 loc_C0921: ; CODE XREF: sub_C08B1+7Cj C000:0921 mov di, bp C000:0923 mov cx, bx C000:0925 repe cmpsb C000:0927 jz short loc_C092F C000:0929 add si, cx C000:092B inc al C000:092D jnz short loc_C0921 C000:092F C000:092F loc_C092F: ; CODE XREF: sub_C08B1+76j C000:092F cbw C000:0930 pop bx C000:0931 add sp, bx C000:0933 pop di C000:0934 pop bp C000:0935 pop cx C000:0936 retn C000:0937 ; --------------------------------------------------------------------------- C000:0937 C000:0937 loc_C0937: ; CODE XREF: sub_C08B1+5Ej C000:0937 ; sub_C08B1+62j C000:0937 call sub_C6808 C000:093A jmp short loc_C0915 C000:093A sub_C08B1 endp C000:093A C000:093C C000:093C ; =============== S U B R O U T I N E ======================================= C000:093C C000:093C C000:093C sub_C093C proc near ; CODE XREF: C000:0603p C000:093C ; DATA XREF: C000:05E0o C000:093C push cx C000:093D push bp C000:093E push di C000:093F mov ax, ds:485h C000:0942 mov cx, ax C000:0944 inc ax C000:0945 shr ax, 1 C000:0947 shl ax, 1 C000:0949 sub sp, ax C000:094B mov bp, sp C000:094D push ax C000:094E les di, ds:10Ch C000:0952 mov al, dh C000:0954 mul cl C000:0956 mov bl, dl C000:0958 push ax C000:0959 push bx C000:095A push es C000:095B mov al, ds:449h C000:095E call sub_C2C61 C000:0961 mov dx, es:[bx+0Ch] C000:0965 pop es C000:0966 pop bx C000:0967 pop ax C000:0968 push cx C000:0969 push dx C000:096A mul dx C000:096C sub bh, bh C000:096E mov cx, bx C000:0970 shl bx, 1 C000:0972 add bx, cx C000:0974 shl bx, 3 C000:0977 add ax, bx C000:0979 adc dx, 0 C000:097C call sub_C67DB C000:097F pop dx C000:0980 pop cx C000:0981 mov si, ax C000:0983 mov ax, 0A000h C000:0986 mov ds, ax C000:0988 assume ds:nothing C000:0988 push cx C000:0989 push di C000:098A push es C000:098B mov ax, ss C000:098D mov es, ax C000:098F mov di, bp C000:0991 sub dx, 18h C000:0994 mov bx, cx C000:0996 C000:0996 loc_C0996: ; CODE XREF: sub_C093C+77j C000:0996 mov cx, 8 C000:0999 sub al, al C000:099B C000:099B loc_C099B: ; CODE XREF: sub_C093C+6Bj C000:099B cmp byte ptr [si], 0 C000:099E jz short loc_C09A2 C000:09A0 or al, 80h C000:09A2 C000:09A2 loc_C09A2: ; CODE XREF: sub_C093C+62j C000:09A2 rol al, 1 C000:09A4 inc si C000:09A5 inc si C000:09A6 inc si C000:09A7 loop loc_C099B C000:09A9 stosb C000:09AA add si, dx C000:09AC jb short loc_C09D4 C000:09AE cmp si, dx C000:09B0 jz short loc_C09D4 C000:09B2 C000:09B2 loc_C09B2: ; CODE XREF: sub_C093C+9Bj C000:09B2 dec bx C000:09B3 jnz short loc_C0996 C000:09B5 pop ds C000:09B6 assume ds:nothing C000:09B6 pop si C000:09B7 pop cx C000:09B8 mov di, bp C000:09BA sub ax, ax C000:09BC mov bx, cx C000:09BE C000:09BE loc_C09BE: ; CODE XREF: sub_C093C+8Ej C000:09BE mov di, bp C000:09C0 mov cx, bx C000:09C2 repe cmpsb C000:09C4 jz short loc_C09CC C000:09C6 add si, cx C000:09C8 inc al C000:09CA jnz short loc_C09BE C000:09CC C000:09CC loc_C09CC: ; CODE XREF: sub_C093C+88j C000:09CC cbw C000:09CD pop bx C000:09CE add sp, bx C000:09D0 pop di C000:09D1 pop bp C000:09D2 pop cx C000:09D3 retn C000:09D4 ; --------------------------------------------------------------------------- C000:09D4 C000:09D4 loc_C09D4: ; CODE XREF: sub_C093C+70j C000:09D4 ; sub_C093C+74j C000:09D4 call sub_C6808 C000:09D7 jmp short loc_C09B2 C000:09D7 sub_C093C endp C000:09D7 C000:09D7 ; --------------------------------------------------------------------------- C000:09D9 db 0 C000:09DA db 0 C000:09DB db 0 C000:09DC db 0 C000:09DD db 0 C000:09DE db 0 C000:09DF db 0 C000:09E0 off_C09E0 dw offset sub_C0A35 ; DATA XREF: C000:0A0Ar C000:09E0 ; sub_C10EC+48r ... C000:09E2 dw offset sub_C0A19 C000:09E4 dw offset sub_C0A5C C000:09E6 dw offset sub_C0A70 C000:09E8 dw offset sub_C0A70 C000:09EA dw offset sub_C0A70 C000:09EC dw offset sub_C0A97 C000:09EE dw offset sub_C0AAB C000:09F0 dw offset sub_C0ABD C000:09F2 ; --------------------------------------------------------------------------- C000:09F2 C000:09F2 VGA_PUT_CHAR_ATR: ; CODE XREF: C000:00F7j C000:09F2 ; DATA XREF: C000:00B4o C000:09F2 pusha C000:09F3 push es C000:09F4 push ax C000:09F5 push bx C000:09F6 mov al, ds:449h C000:09F9 call sub_C2C61 C000:09FC mov si, es:[bx+4] C000:0A00 pop bx C000:0A01 pop ax C000:0A02 jb short loc_C0A0F C000:0A04 and si, 0FFh C000:0A08 shl si, 1 C000:0A0A call cs:off_C09E0[si] C000:0A0F C000:0A0F loc_C0A0F: ; CODE XREF: C000:0A02j C000:0A0F pop es C000:0A10 mov bp, sp C000:0A12 mov [bp+0Eh], ax C000:0A15 popa C000:0A16 pop ds C000:0A17 pop si C000:0A18 iret C000:0A19 C000:0A19 ; =============== S U B R O U T I N E ======================================= C000:0A19 C000:0A19 C000:0A19 sub_C0A19 proc near ; CODE XREF: C000:0A0Ap C000:0A19 ; sub_C10EC+48p ... C000:0A19 mov es, cs:word_C646E C000:0A1E assume es:nothing C000:0A1E jmp short loc_C0A3A C000:0A1E sub_C0A19 endp C000:0A1E C000:0A20 ; --------------------------------------------------------------------------- C000:0A20 ; START OF FUNCTION CHUNK FOR sub_C0A35 C000:0A20 C000:0A20 loc_C0A20: ; CODE XREF: sub_C0A35+Cj C000:0A20 mov bl, bh C000:0A22 sub bh, bh C000:0A24 shl bx, 1 C000:0A26 mov dx, [bx+450h] C000:0A2A shr bx, 1 C000:0A2C C000:0A2C loc_C0A2C: ; CODE XREF: sub_C0A35-4j C000:0A2C add si, ds:44Ch C000:0A30 dec bx C000:0A31 jnz short loc_C0A2C C000:0A33 jmp short loc_C0A47 C000:0A33 ; END OF FUNCTION CHUNK FOR sub_C0A35 C000:0A35 C000:0A35 ; =============== S U B R O U T I N E ======================================= C000:0A35 C000:0A35 C000:0A35 sub_C0A35 proc near ; CODE XREF: C000:0A0Ap C000:0A35 ; sub_C10EC+48p ... C000:0A35 C000:0A35 ; FUNCTION CHUNK AT C000:0A20 SIZE 00000015 BYTES C000:0A35 C000:0A35 mov es, cs:word_C646C C000:0A3A assume es:nothing C000:0A3A C000:0A3A loc_C0A3A: ; CODE XREF: sub_C0A19+5j C000:0A3A push ax C000:0A3B mov ah, bl C000:0A3D sub si, si C000:0A3F or bh, bh C000:0A41 jnz short loc_C0A20 C000:0A43 mov dx, ds:450h C000:0A47 C000:0A47 loc_C0A47: ; CODE XREF: sub_C0A35-2j C000:0A47 mov di, ax C000:0A49 mov ax, ds:44Ah C000:0A4C mul dh C000:0A4E add al, dl C000:0A50 adc ah, 0 C000:0A53 shl ax, 1 C000:0A55 add ax, si C000:0A57 xchg ax, di C000:0A58 rep stosw C000:0A5A pop ax C000:0A5B retn C000:0A5B sub_C0A35 endp C000:0A5B C000:0A5C C000:0A5C ; =============== S U B R O U T I N E ======================================= C000:0A5C C000:0A5C C000:0A5C sub_C0A5C proc near ; CODE XREF: C000:0A0Ap C000:0A5C ; C000:0AF9p ... C000:0A5C mov es, cs:word_C646C C000:0A61 mov dx, ds:450h C000:0A65 C000:0A65 loc_C0A65: ; CODE XREF: sub_C0A5C+Fj C000:0A65 push ax C000:0A66 call sub_C0E45 C000:0A69 pop ax C000:0A6A inc dx C000:0A6B loop loc_C0A65 C000:0A6D sub ax, ax C000:0A6F retn C000:0A6F sub_C0A5C endp C000:0A6F C000:0A70 C000:0A70 ; =============== S U B R O U T I N E ======================================= C000:0A70 C000:0A70 C000:0A70 sub_C0A70 proc near ; CODE XREF: C000:0A0Ap C000:0A70 ; C000:0AF9p ... C000:0A70 mov es, cs:word_C6470 C000:0A75 assume es:nothing C000:0A75 push bx C000:0A76 mov bl, bh C000:0A78 sub bh, bh C000:0A7A shl bx, 1 C000:0A7C mov dx, [bx+450h] C000:0A80 pop bx C000:0A81 cmp byte ptr ds:449h, 11h C000:0A86 jnz short loc_C0A8B C000:0A88 or bl, 0Fh C000:0A8B C000:0A8B loc_C0A8B: ; CODE XREF: sub_C0A70+16j C000:0A8B ; sub_C0A70+21j C000:0A8B push ax C000:0A8C call sub_C0F22 C000:0A8F pop ax C000:0A90 inc dx C000:0A91 loop loc_C0A8B C000:0A93 mov ax, 0F02h C000:0A96 retn C000:0A96 sub_C0A70 endp C000:0A96 C000:0A97 C000:0A97 ; =============== S U B R O U T I N E ======================================= C000:0A97 C000:0A97 C000:0A97 sub_C0A97 proc near ; CODE XREF: C000:0A0Ap C000:0A97 ; C000:0AF9p ... C000:0A97 mov es, cs:word_C6470 C000:0A9C mov dx, ds:450h C000:0AA0 C000:0AA0 loc_C0AA0: ; CODE XREF: sub_C0A97+Fj C000:0AA0 push ax C000:0AA1 call sub_C0FA7 C000:0AA4 pop ax C000:0AA5 inc dx C000:0AA6 loop loc_C0AA0 C000:0AA8 sub ax, ax C000:0AAA retn C000:0AAA sub_C0A97 endp C000:0AAA C000:0AAB C000:0AAB ; =============== S U B R O U T I N E ======================================= C000:0AAB C000:0AAB C000:0AAB sub_C0AAB proc near ; CODE XREF: C000:0A0Ap C000:0AAB ; C000:0AF9p ... C000:0AAB mov es, cs:word_C6470 C000:0AB0 mov dx, ds:450h C000:0AB4 C000:0AB4 loc_C0AB4: ; CODE XREF: sub_C0AAB+Fj C000:0AB4 push ax C000:0AB5 call sub_C1001 C000:0AB8 pop ax C000:0AB9 inc dx C000:0ABA loop loc_C0AB4 C000:0ABC retn C000:0ABC sub_C0AAB endp C000:0ABC C000:0ABD C000:0ABD ; =============== S U B R O U T I N E ======================================= C000:0ABD C000:0ABD C000:0ABD sub_C0ABD proc near ; CODE XREF: C000:0A0Ap C000:0ABD ; C000:0AF9p ... C000:0ABD mov es, cs:word_C6470 C000:0AC2 mov dx, ds:450h C000:0AC6 C000:0AC6 loc_C0AC6: ; CODE XREF: sub_C0ABD+Fj C000:0AC6 push ax C000:0AC7 call sub_C1059 C000:0ACA pop ax C000:0ACB inc dx C000:0ACC loop loc_C0AC6 C000:0ACE retn C000:0ACE sub_C0ABD endp C000:0ACE C000:0ACE ; --------------------------------------------------------------------------- C000:0ACF off_C0ACF dw offset sub_C0B24 ; DATA XREF: C000:0AF9r C000:0AD1 dw offset sub_C0B08 C000:0AD3 dw offset sub_C0A5C C000:0AD5 dw offset sub_C0A70 C000:0AD7 dw offset sub_C0A70 C000:0AD9 dw offset sub_C0A70 C000:0ADB dw offset sub_C0A97 C000:0ADD dw offset sub_C0AAB C000:0ADF dw offset sub_C0ABD C000:0AE1 ; --------------------------------------------------------------------------- C000:0AE1 C000:0AE1 VGA_PUT_CHAR: ; CODE XREF: C000:00F7j C000:0AE1 ; DATA XREF: C000:00B6o C000:0AE1 pusha C000:0AE2 push es C000:0AE3 push ax C000:0AE4 push bx C000:0AE5 mov al, ds:449h C000:0AE8 call sub_C2C61 C000:0AEB mov si, es:[bx+4] C000:0AEF pop bx C000:0AF0 pop ax C000:0AF1 jb short loc_C0AFE C000:0AF3 and si, 0FFh C000:0AF7 shl si, 1 C000:0AF9 call cs:off_C0ACF[si] C000:0AFE C000:0AFE loc_C0AFE: ; CODE XREF: C000:0AF1j C000:0AFE pop es C000:0AFF assume es:nothing C000:0AFF mov bp, sp C000:0B01 mov [bp+0Eh], ax C000:0B04 popa C000:0B05 pop ds C000:0B06 pop si C000:0B07 iret C000:0B08 C000:0B08 ; =============== S U B R O U T I N E ======================================= C000:0B08 C000:0B08 C000:0B08 sub_C0B08 proc near ; CODE XREF: C000:0AF9p C000:0B08 ; DATA XREF: C000:0AD1o C000:0B08 mov es, cs:word_C646E C000:0B0D assume es:nothing C000:0B0D jmp short loc_C0B29 C000:0B0D sub_C0B08 endp C000:0B0D C000:0B0F ; --------------------------------------------------------------------------- C000:0B0F ; START OF FUNCTION CHUNK FOR sub_C0B24 C000:0B0F C000:0B0F loc_C0B0F: ; CODE XREF: sub_C0B24+Aj C000:0B0F mov bl, bh C000:0B11 sub bh, bh C000:0B13 shl bx, 1 C000:0B15 mov dx, [bx+450h] C000:0B19 shr bx, 1 C000:0B1B C000:0B1B loc_C0B1B: ; CODE XREF: sub_C0B24-4j C000:0B1B add si, ds:44Ch C000:0B1F dec bx C000:0B20 jnz short loc_C0B1B C000:0B22 jmp short loc_C0B34 C000:0B22 ; END OF FUNCTION CHUNK FOR sub_C0B24 C000:0B24 C000:0B24 ; =============== S U B R O U T I N E ======================================= C000:0B24 C000:0B24 C000:0B24 sub_C0B24 proc near ; CODE XREF: C000:0AF9p C000:0B24 ; DATA XREF: C000:off_C0ACFo C000:0B24 C000:0B24 ; FUNCTION CHUNK AT C000:0B0F SIZE 00000015 BYTES C000:0B24 C000:0B24 mov es, cs:word_C646C C000:0B29 assume es:nothing C000:0B29 C000:0B29 loc_C0B29: ; CODE XREF: sub_C0B08+5j C000:0B29 push ax C000:0B2A sub si, si C000:0B2C or bh, bh C000:0B2E jnz short loc_C0B0F C000:0B30 mov dx, ds:450h C000:0B34 C000:0B34 loc_C0B34: ; CODE XREF: sub_C0B24-2j C000:0B34 mov di, ax C000:0B36 mov ax, ds:44Ah C000:0B39 mul dh C000:0B3B add al, dl C000:0B3D adc ah, 0 C000:0B40 shl ax, 1 C000:0B42 add ax, si C000:0B44 xchg ax, di C000:0B45 C000:0B45 loc_C0B45: ; CODE XREF: sub_C0B24+23j C000:0B45 stosb C000:0B46 inc di C000:0B47 loop loc_C0B45 C000:0B49 pop ax C000:0B4A retn C000:0B4A sub_C0B24 endp C000:0B4A C000:0B4A ; --------------------------------------------------------------------------- C000:0B4B off_C0B4B dw offset sub_C0B86 ; DATA XREF: C000:0B75r C000:0B4B ; sub_C10EC+30r ... C000:0B4D dw offset sub_C0B7F C000:0B4F dw offset sub_C0C23 C000:0B51 dw offset sub_C0CAB C000:0B53 dw offset sub_C0CAB C000:0B55 dw offset sub_C0CAB C000:0B57 dw offset sub_C0D0A C000:0B59 dw offset sub_C0D73 C000:0B5B dw offset sub_C0DDC C000:0B5D ; --------------------------------------------------------------------------- C000:0B5D C000:0B5D VGA_PUT_CHAR_TTY: ; CODE XREF: C000:00F7j C000:0B5D ; DATA XREF: C000:00BEo C000:0B5D pusha C000:0B5E push es C000:0B5F push ax C000:0B60 push bx C000:0B61 mov al, ds:449h C000:0B64 call sub_C2C61 C000:0B67 mov si, es:[bx+4] C000:0B6B pop bx C000:0B6C pop ax C000:0B6D jb short loc_C0B7A C000:0B6F and si, 0FFh C000:0B73 shl si, 1 C000:0B75 call cs:off_C0B4B[si] C000:0B7A C000:0B7A loc_C0B7A: ; CODE XREF: C000:0B6Dj C000:0B7A pop es C000:0B7B assume es:nothing C000:0B7B popa C000:0B7C pop ds C000:0B7D pop si C000:0B7E iret C000:0B7F C000:0B7F ; =============== S U B R O U T I N E ======================================= C000:0B7F C000:0B7F C000:0B7F sub_C0B7F proc near ; CODE XREF: C000:0B75p C000:0B7F ; sub_C10EC+30p ... C000:0B7F mov es, cs:word_C646E C000:0B84 assume es:nothing C000:0B84 jmp short loc_C0B8B C000:0B84 sub_C0B7F endp C000:0B84 C000:0B86 C000:0B86 ; =============== S U B R O U T I N E ======================================= C000:0B86 C000:0B86 C000:0B86 sub_C0B86 proc near ; CODE XREF: C000:0B75p C000:0B86 ; sub_C10EC+30p ... C000:0B86 mov es, cs:word_C646C C000:0B8B assume es:nothing C000:0B8B C000:0B8B loc_C0B8B: ; CODE XREF: sub_C0B7F+5j C000:0B8B mov bl, ds:462h C000:0B8F sub bh, bh C000:0B91 shl bx, 1 C000:0B93 mov dx, [bx+450h] C000:0B97 mov bh, ds:462h C000:0B9B cmp al, 0Dh C000:0B9D jbe short loc_C0BC4 C000:0B9F C000:0B9F loc_C0B9F: ; CODE XREF: sub_C0B86+48j C000:0B9F ; sub_C0B86+8Ej C000:0B9F push ax C000:0BA0 mov ax, ds:44Ah C000:0BA3 mul dh C000:0BA5 mov di, ds:44Eh C000:0BA9 add al, dl C000:0BAB adc ah, 0 C000:0BAE shl ax, 1 C000:0BB0 add di, ax C000:0BB2 pop ax C000:0BB3 stosb C000:0BB4 inc dl C000:0BB6 cmp dl, ds:44Ah C000:0BBA jnb short loc_C0BC0 C000:0BBC call sub_C136E C000:0BBF retn C000:0BC0 ; --------------------------------------------------------------------------- C000:0BC0 C000:0BC0 loc_C0BC0: ; CODE XREF: sub_C0B86+34j C000:0BC0 sub dl, dl C000:0BC2 jmp short loc_C0BD2 C000:0BC4 ; --------------------------------------------------------------------------- C000:0BC4 C000:0BC4 loc_C0BC4: ; CODE XREF: sub_C0B86+17j C000:0BC4 jb short loc_C0BCC C000:0BC6 sub dl, dl C000:0BC8 call sub_C136E C000:0BCB retn C000:0BCC ; --------------------------------------------------------------------------- C000:0BCC C000:0BCC loc_C0BCC: ; CODE XREF: sub_C0B86:loc_C0BC4j C000:0BCC cmp al, 0Ah C000:0BCE ja short loc_C0B9F C000:0BD0 jb short loc_C0C0E C000:0BD2 C000:0BD2 loc_C0BD2: ; CODE XREF: sub_C0B86+3Cj C000:0BD2 cmp dh, ds:484h C000:0BD6 jnb short loc_C0BDE C000:0BD8 inc dh C000:0BDA call sub_C136E C000:0BDD retn C000:0BDE ; --------------------------------------------------------------------------- C000:0BDE C000:0BDE loc_C0BDE: ; CODE XREF: sub_C0B86+50j C000:0BDE push cx C000:0BDF mov dh, ds:484h C000:0BE3 call sub_C136E C000:0BE6 mov di, ds:44Eh C000:0BEA mov si, ds:44Ah C000:0BEE mov ax, si C000:0BF0 shl si, 1 C000:0BF2 mul byte ptr ds:484h C000:0BF6 mov cx, ax C000:0BF8 add si, di C000:0BFA push ds C000:0BFB push es C000:0BFC pop ds C000:0BFD assume ds:nothing C000:0BFD rep movsw C000:0BFF pop ds C000:0C00 assume ds:nothing C000:0C00 mov ah, es:[di+1] C000:0C04 mov al, 20h ; ' ' C000:0C06 mov cx, ds:44Ah C000:0C0A rep stosw C000:0C0C pop cx C000:0C0D retn C000:0C0E ; --------------------------------------------------------------------------- C000:0C0E C000:0C0E loc_C0C0E: ; CODE XREF: sub_C0B86+4Aj C000:0C0E cmp al, 7 C000:0C10 jz short loc_C0C1F C000:0C12 cmp al, 8 C000:0C14 jnz short loc_C0B9F C000:0C16 or dl, dl C000:0C18 jz short locret_C0C1E C000:0C1A dec dx C000:0C1B call sub_C136E C000:0C1E C000:0C1E locret_C0C1E: ; CODE XREF: sub_C0B86+92j C000:0C1E retn C000:0C1F ; --------------------------------------------------------------------------- C000:0C1F C000:0C1F loc_C0C1F: ; CODE XREF: sub_C0B86+8Aj C000:0C1F call sub_C2B93 C000:0C22 retn C000:0C22 sub_C0B86 endp C000:0C22 C000:0C23 C000:0C23 ; =============== S U B R O U T I N E ======================================= C000:0C23 C000:0C23 C000:0C23 sub_C0C23 proc near ; CODE XREF: C000:0B75p C000:0C23 ; sub_C10EC+30p ... C000:0C23 mov es, cs:word_C646C C000:0C28 mov dx, ds:450h C000:0C2C sub bh, bh C000:0C2E cmp al, 0Dh C000:0C30 jbe short loc_C0C47 C000:0C32 C000:0C32 loc_C0C32: ; CODE XREF: sub_C0C23+2Ej C000:0C32 ; sub_C0C23+79j C000:0C32 push dx C000:0C33 call sub_C0E45 C000:0C36 pop dx C000:0C37 inc dl C000:0C39 cmp dl, ds:44Ah C000:0C3D jnb short loc_C0C43 C000:0C3F call sub_C136E C000:0C42 retn C000:0C43 ; --------------------------------------------------------------------------- C000:0C43 C000:0C43 loc_C0C43: ; CODE XREF: sub_C0C23+1Aj C000:0C43 sub dl, dl C000:0C45 jmp short loc_C0C55 C000:0C47 ; --------------------------------------------------------------------------- C000:0C47 C000:0C47 loc_C0C47: ; CODE XREF: sub_C0C23+Dj C000:0C47 jb short loc_C0C4F C000:0C49 sub dl, dl C000:0C4B call sub_C136E C000:0C4E retn C000:0C4F ; --------------------------------------------------------------------------- C000:0C4F C000:0C4F loc_C0C4F: ; CODE XREF: sub_C0C23:loc_C0C47j C000:0C4F cmp al, 0Ah C000:0C51 ja short loc_C0C32 C000:0C53 jb short loc_C0C96 C000:0C55 C000:0C55 loc_C0C55: ; CODE XREF: sub_C0C23+22j C000:0C55 cmp dh, ds:484h C000:0C59 jnb short loc_C0C61 C000:0C5B inc dh C000:0C5D call sub_C136E C000:0C60 retn C000:0C61 ; --------------------------------------------------------------------------- C000:0C61 C000:0C61 loc_C0C61: ; CODE XREF: sub_C0C23+36j C000:0C61 push cx C000:0C62 mov dh, ds:484h C000:0C66 call sub_C136E C000:0C69 sub di, di C000:0C6B mov si, 140h C000:0C6E mov cx, 1E00h C000:0C71 push ds C000:0C72 push es C000:0C73 pop ds C000:0C74 assume ds:nothing C000:0C74 rep movsb C000:0C76 mov di, 2000h C000:0C79 mov si, 2140h C000:0C7C mov cx, 1E00h C000:0C7F rep movsb C000:0C81 sub ax, ax C000:0C83 mov di, 1E00h C000:0C86 mov cx, 0A0h ; 'á' C000:0C89 rep stosw C000:0C8B mov di, 3E00h C000:0C8E mov cx, 0A0h ; 'á' C000:0C91 rep stosw C000:0C93 pop ds C000:0C94 assume ds:nothing C000:0C94 pop cx C000:0C95 retn C000:0C96 ; --------------------------------------------------------------------------- C000:0C96 C000:0C96 loc_C0C96: ; CODE XREF: sub_C0C23+30j C000:0C96 cmp al, 7 C000:0C98 jz short loc_C0CA7 C000:0C9A cmp al, 8 C000:0C9C jnz short loc_C0C32 C000:0C9E or dl, dl C000:0CA0 jz short locret_C0CA6 C000:0CA2 dec dx C000:0CA3 call sub_C136E C000:0CA6 C000:0CA6 locret_C0CA6: ; CODE XREF: sub_C0C23+7Dj C000:0CA6 retn C000:0CA7 ; --------------------------------------------------------------------------- C000:0CA7 C000:0CA7 loc_C0CA7: ; CODE XREF: sub_C0C23+75j C000:0CA7 call sub_C2B93 C000:0CAA retn C000:0CAA sub_C0C23 endp C000:0CAA C000:0CAB C000:0CAB ; =============== S U B R O U T I N E ======================================= C000:0CAB C000:0CAB C000:0CAB sub_C0CAB proc near ; CODE XREF: C000:0B75p C000:0CAB ; sub_C10EC+30p ... C000:0CAB mov es, cs:word_C6470 C000:0CB0 assume es:nothing C000:0CB0 mov si, ds:462h C000:0CB4 and si, 0FFh C000:0CB8 shl si, 1 C000:0CBA mov dx, [si+450h] C000:0CBE mov bh, ds:462h C000:0CC2 cmp al, 0Dh C000:0CC4 jbe short loc_C0CD9 C000:0CC6 C000:0CC6 loc_C0CC6: ; CODE XREF: sub_C0CAB+38j C000:0CC6 ; sub_C0CAB+50j C000:0CC6 call sub_C0F22 C000:0CC9 inc dl C000:0CCB cmp dl, ds:44Ah C000:0CCF jnb short loc_C0CD5 C000:0CD1 call sub_C136E C000:0CD4 retn C000:0CD5 ; --------------------------------------------------------------------------- C000:0CD5 C000:0CD5 loc_C0CD5: ; CODE XREF: sub_C0CAB+24j C000:0CD5 sub dl, dl C000:0CD7 jmp short loc_C0CE7 C000:0CD9 ; --------------------------------------------------------------------------- C000:0CD9 C000:0CD9 loc_C0CD9: ; CODE XREF: sub_C0CAB+19j C000:0CD9 jb short loc_C0CE1 C000:0CDB sub dl, dl C000:0CDD call sub_C136E C000:0CE0 retn C000:0CE1 ; --------------------------------------------------------------------------- C000:0CE1 C000:0CE1 loc_C0CE1: ; CODE XREF: sub_C0CAB:loc_C0CD9j C000:0CE1 cmp al, 0Ah C000:0CE3 ja short loc_C0CC6 C000:0CE5 jb short loc_C0CF5 C000:0CE7 C000:0CE7 loc_C0CE7: ; CODE XREF: sub_C0CAB+2Cj C000:0CE7 cmp dh, ds:484h C000:0CEB jnb short loc_C0CF3 C000:0CED inc dh C000:0CEF call sub_C136E C000:0CF2 retn C000:0CF3 ; --------------------------------------------------------------------------- C000:0CF3 C000:0CF3 loc_C0CF3: ; CODE XREF: sub_C0CAB+40j C000:0CF3 jmp short loc_C0D48 C000:0CF5 ; --------------------------------------------------------------------------- C000:0CF5 C000:0CF5 loc_C0CF5: ; CODE XREF: sub_C0CAB+3Aj C000:0CF5 cmp al, 7 C000:0CF7 jz short loc_C0D06 C000:0CF9 cmp al, 8 C000:0CFB jnz short loc_C0CC6 C000:0CFD or dl, dl C000:0CFF jz short locret_C0D05 C000:0D01 dec dx C000:0D02 call sub_C136E C000:0D05 C000:0D05 locret_C0D05: ; CODE XREF: sub_C0CAB+54j C000:0D05 retn C000:0D06 ; --------------------------------------------------------------------------- C000:0D06 C000:0D06 loc_C0D06: ; CODE XREF: sub_C0CAB+4Cj C000:0D06 call sub_C2B93 C000:0D09 retn C000:0D09 sub_C0CAB endp C000:0D09 C000:0D0A C000:0D0A ; =============== S U B R O U T I N E ======================================= C000:0D0A C000:0D0A C000:0D0A sub_C0D0A proc near ; CODE XREF: C000:0B75p C000:0D0A ; sub_C10EC+30p ... C000:0D0A mov es, cs:word_C6470 C000:0D0F mov dx, ds:450h C000:0D13 sub bh, bh C000:0D15 cmp al, 0Dh C000:0D17 jbe short loc_C0D2E C000:0D19 C000:0D19 loc_C0D19: ; CODE XREF: sub_C0D0A+2Ej C000:0D19 ; sub_C0D0A+5Aj C000:0D19 push dx C000:0D1A call sub_C0FA7 C000:0D1D pop dx C000:0D1E inc dl C000:0D20 cmp dl, ds:44Ah C000:0D24 jnb short loc_C0D2A C000:0D26 call sub_C136E C000:0D29 retn C000:0D2A ; --------------------------------------------------------------------------- C000:0D2A C000:0D2A loc_C0D2A: ; CODE XREF: sub_C0D0A+1Aj C000:0D2A sub dl, dl C000:0D2C jmp short loc_C0D3C C000:0D2E ; --------------------------------------------------------------------------- C000:0D2E C000:0D2E loc_C0D2E: ; CODE XREF: sub_C0D0A+Dj C000:0D2E jb short loc_C0D36 C000:0D30 sub dl, dl C000:0D32 call sub_C136E C000:0D35 retn C000:0D36 ; --------------------------------------------------------------------------- C000:0D36 C000:0D36 loc_C0D36: ; CODE XREF: sub_C0D0A:loc_C0D2Ej C000:0D36 cmp al, 0Ah C000:0D38 ja short loc_C0D19 C000:0D3A jb short loc_C0D5E C000:0D3C C000:0D3C loc_C0D3C: ; CODE XREF: sub_C0D0A+22j C000:0D3C cmp dh, ds:484h C000:0D40 jnb short loc_C0D48 C000:0D42 inc dh C000:0D44 call sub_C136E C000:0D47 retn C000:0D48 ; --------------------------------------------------------------------------- C000:0D48 C000:0D48 loc_C0D48: ; CODE XREF: sub_C0CAB:loc_C0CF3j C000:0D48 ; sub_C0D0A+36j C000:0D48 push cx C000:0D49 mov dh, ds:484h C000:0D4D sub cx, cx C000:0D4F call sub_C136E C000:0D52 mov ax, 601h C000:0D55 mov dl, ds:44Ah C000:0D59 dec dx C000:0D5A int 10h ; - VIDEO - SCROLL PAGE UP C000:0D5A ; AL = number of lines to scroll window (0 = blank whole window) C000:0D5A ; BH = attributes to be used on blanked lines C000:0D5A ; CH,CL = row,column of upper left corner of window to scroll C000:0D5A ; DH,DL = row,column of lower right corner of window C000:0D5C pop cx C000:0D5D retn C000:0D5E ; --------------------------------------------------------------------------- C000:0D5E C000:0D5E loc_C0D5E: ; CODE XREF: sub_C0D0A+30j C000:0D5E cmp al, 7 C000:0D60 jz short loc_C0D6F C000:0D62 cmp al, 8 C000:0D64 jnz short loc_C0D19 C000:0D66 or dl, dl C000:0D68 jz short locret_C0D6E C000:0D6A dec dx C000:0D6B call sub_C136E C000:0D6E C000:0D6E locret_C0D6E: ; CODE XREF: sub_C0D0A+5Ej C000:0D6E retn C000:0D6F ; --------------------------------------------------------------------------- C000:0D6F C000:0D6F loc_C0D6F: ; CODE XREF: sub_C0D0A+56j C000:0D6F call sub_C2B93 C000:0D72 retn C000:0D72 sub_C0D0A endp C000:0D72 C000:0D73 C000:0D73 ; =============== S U B R O U T I N E ======================================= C000:0D73 C000:0D73 C000:0D73 sub_C0D73 proc near ; CODE XREF: C000:0B75p C000:0D73 ; sub_C10EC+30p ... C000:0D73 mov es, cs:word_C6470 C000:0D78 mov dx, ds:450h C000:0D7C sub bh, bh C000:0D7E cmp al, 0Dh C000:0D80 jbe short loc_C0D97 C000:0D82 C000:0D82 loc_C0D82: ; CODE XREF: sub_C0D73+2Ej C000:0D82 ; sub_C0D73+5Aj C000:0D82 push dx C000:0D83 call sub_C1001 C000:0D86 pop dx C000:0D87 inc dl C000:0D89 cmp dl, ds:44Ah C000:0D8D jnb short loc_C0D93 C000:0D8F call sub_C136E C000:0D92 retn C000:0D93 ; --------------------------------------------------------------------------- C000:0D93 C000:0D93 loc_C0D93: ; CODE XREF: sub_C0D73+1Aj C000:0D93 sub dl, dl C000:0D95 jmp short loc_C0DA5 C000:0D97 ; --------------------------------------------------------------------------- C000:0D97 C000:0D97 loc_C0D97: ; CODE XREF: sub_C0D73+Dj C000:0D97 jb short loc_C0D9F C000:0D99 sub dl, dl C000:0D9B call sub_C136E C000:0D9E retn C000:0D9F ; --------------------------------------------------------------------------- C000:0D9F C000:0D9F loc_C0D9F: ; CODE XREF: sub_C0D73:loc_C0D97j C000:0D9F cmp al, 0Ah C000:0DA1 ja short loc_C0D82 C000:0DA3 jb short loc_C0DC7 C000:0DA5 C000:0DA5 loc_C0DA5: ; CODE XREF: sub_C0D73+22j C000:0DA5 cmp dh, ds:484h C000:0DA9 jnb short loc_C0DB1 C000:0DAB inc dh C000:0DAD call sub_C136E C000:0DB0 retn C000:0DB1 ; --------------------------------------------------------------------------- C000:0DB1 C000:0DB1 loc_C0DB1: ; CODE XREF: sub_C0D73+36j C000:0DB1 push cx C000:0DB2 mov dh, ds:484h C000:0DB6 sub cx, cx C000:0DB8 call sub_C136E C000:0DBB mov dl, ds:44Ah C000:0DBF dec dx C000:0DC0 mov ax, 601h C000:0DC3 int 10h ; - VIDEO - SCROLL PAGE UP C000:0DC3 ; AL = number of lines to scroll window (0 = blank whole window) C000:0DC3 ; BH = attributes to be used on blanked lines C000:0DC3 ; CH,CL = row,column of upper left corner of window to scroll C000:0DC3 ; DH,DL = row,column of lower right corner of window C000:0DC5 pop cx C000:0DC6 retn C000:0DC7 ; --------------------------------------------------------------------------- C000:0DC7 C000:0DC7 loc_C0DC7: ; CODE XREF: sub_C0D73+30j C000:0DC7 cmp al, 7 C000:0DC9 jz short loc_C0DD8 C000:0DCB cmp al, 8 C000:0DCD jnz short loc_C0D82 C000:0DCF or dl, dl C000:0DD1 jz short locret_C0DD7 C000:0DD3 dec dx C000:0DD4 call sub_C136E C000:0DD7 C000:0DD7 locret_C0DD7: ; CODE XREF: sub_C0D73+5Ej C000:0DD7 retn C000:0DD8 ; --------------------------------------------------------------------------- C000:0DD8 C000:0DD8 loc_C0DD8: ; CODE XREF: sub_C0D73+56j C000:0DD8 call sub_C2B93 C000:0DDB retn C000:0DDB sub_C0D73 endp C000:0DDB C000:0DDC C000:0DDC ; =============== S U B R O U T I N E ======================================= C000:0DDC C000:0DDC C000:0DDC sub_C0DDC proc near ; CODE XREF: C000:0B75p C000:0DDC ; sub_C10EC+30p ... C000:0DDC mov es, cs:word_C6470 C000:0DE1 mov dx, ds:450h C000:0DE5 sub bh, bh C000:0DE7 cmp al, 0Dh C000:0DE9 jbe short loc_C0E00 C000:0DEB C000:0DEB loc_C0DEB: ; CODE XREF: sub_C0DDC+2Ej C000:0DEB ; sub_C0DDC+5Aj C000:0DEB push dx C000:0DEC call sub_C1059 C000:0DEF pop dx C000:0DF0 inc dl C000:0DF2 cmp dl, ds:44Ah C000:0DF6 jnb short loc_C0DFC C000:0DF8 call sub_C136E C000:0DFB retn C000:0DFC ; --------------------------------------------------------------------------- C000:0DFC C000:0DFC loc_C0DFC: ; CODE XREF: sub_C0DDC+1Aj C000:0DFC sub dl, dl C000:0DFE jmp short loc_C0E0E C000:0E00 ; --------------------------------------------------------------------------- C000:0E00 C000:0E00 loc_C0E00: ; CODE XREF: sub_C0DDC+Dj C000:0E00 jb short loc_C0E08 C000:0E02 sub dl, dl C000:0E04 call sub_C136E C000:0E07 retn C000:0E08 ; --------------------------------------------------------------------------- C000:0E08 C000:0E08 loc_C0E08: ; CODE XREF: sub_C0DDC:loc_C0E00j C000:0E08 cmp al, 0Ah C000:0E0A ja short loc_C0DEB C000:0E0C jb short loc_C0E30 C000:0E0E C000:0E0E loc_C0E0E: ; CODE XREF: sub_C0DDC+22j C000:0E0E cmp dh, ds:484h C000:0E12 jnb short loc_C0E1A C000:0E14 inc dh C000:0E16 call sub_C136E C000:0E19 retn C000:0E1A ; --------------------------------------------------------------------------- C000:0E1A C000:0E1A loc_C0E1A: ; CODE XREF: sub_C0DDC+36j C000:0E1A push cx C000:0E1B mov dh, ds:484h C000:0E1F sub cx, cx C000:0E21 call sub_C136E C000:0E24 mov dl, ds:44Ah C000:0E28 dec dx C000:0E29 mov ax, 601h C000:0E2C int 10h ; - VIDEO - SCROLL PAGE UP C000:0E2C ; AL = number of lines to scroll window (0 = blank whole window) C000:0E2C ; BH = attributes to be used on blanked lines C000:0E2C ; CH,CL = row,column of upper left corner of window to scroll C000:0E2C ; DH,DL = row,column of lower right corner of window C000:0E2E pop cx C000:0E2F retn C000:0E30 ; --------------------------------------------------------------------------- C000:0E30 C000:0E30 loc_C0E30: ; CODE XREF: sub_C0DDC+30j C000:0E30 cmp al, 7 C000:0E32 jz short loc_C0E41 C000:0E34 cmp al, 8 C000:0E36 jnz short loc_C0DEB C000:0E38 or dl, dl C000:0E3A jz short locret_C0E40 C000:0E3C dec dx C000:0E3D call sub_C136E C000:0E40 C000:0E40 locret_C0E40: ; CODE XREF: sub_C0DDC+5Ej C000:0E40 retn C000:0E41 ; --------------------------------------------------------------------------- C000:0E41 C000:0E41 loc_C0E41: ; CODE XREF: sub_C0DDC+56j C000:0E41 call sub_C2B93 C000:0E44 retn C000:0E44 sub_C0DDC endp C000:0E44 C000:0E45 C000:0E45 ; =============== S U B R O U T I N E ======================================= C000:0E45 C000:0E45 C000:0E45 sub_C0E45 proc near ; CODE XREF: sub_C0A5C+Ap C000:0E45 ; sub_C0C23+10p C000:0E45 push bx C000:0E46 push cx C000:0E47 push dx C000:0E48 push ds C000:0E49 push ax C000:0E4A mov cx, ds:485h C000:0E4E mov al, cl C000:0E50 mul byte ptr ds:44Ah C000:0E54 mov bh, dl C000:0E56 shl bh, 1 C000:0E58 mov dl, dh C000:0E5A sub dh, dh C000:0E5C mul dx C000:0E5E add al, bh C000:0E60 adc ah, 0 C000:0E63 mov di, ax C000:0E65 mov bh, ds:449h C000:0E69 lds si, ds:10Ch C000:0E6D pop ax C000:0E6E test al, 80h C000:0E70 jz short loc_C0E7C C000:0E72 and al, 7Fh C000:0E74 sub si, si C000:0E76 mov ds, si C000:0E78 lds si, ds:7Ch C000:0E7C C000:0E7C loc_C0E7C: ; CODE XREF: sub_C0E45+2Bj C000:0E7C mul cl C000:0E7E add si, ax C000:0E80 cmp bh, 6 C000:0E83 jz short loc_C0EC6 C000:0E85 test bl, 80h C000:0E88 jnz short loc_C0EA8 C000:0E8A and bl, 3 C000:0E8D C000:0E8D loc_C0E8D: ; CODE XREF: sub_C0E45:loc_C0EA4j C000:0E8D lodsb C000:0E8E call sub_C0EFE C000:0E91 stosw C000:0E92 dec di C000:0E93 dec di C000:0E94 test di, 2000h C000:0E98 jnz short loc_C0EA0 C000:0E9A add di, 2000h C000:0E9E jmp short loc_C0EA4 C000:0EA0 ; --------------------------------------------------------------------------- C000:0EA0 C000:0EA0 loc_C0EA0: ; CODE XREF: sub_C0E45+53j C000:0EA0 sub di, 1FB0h C000:0EA4 C000:0EA4 loc_C0EA4: ; CODE XREF: sub_C0E45+59j C000:0EA4 loop loc_C0E8D C000:0EA6 jmp short loc_C0EF9 C000:0EA8 ; --------------------------------------------------------------------------- C000:0EA8 C000:0EA8 loc_C0EA8: ; CODE XREF: sub_C0E45+43j C000:0EA8 and bl, 3 C000:0EAB C000:0EAB loc_C0EAB: ; CODE XREF: sub_C0E45:loc_C0EC2j C000:0EAB lodsb C000:0EAC call sub_C0EFE C000:0EAF xor es:[di], ax C000:0EB2 test di, 2000h C000:0EB6 jnz short loc_C0EBE C000:0EB8 add di, 2000h C000:0EBC jmp short loc_C0EC2 C000:0EBE ; --------------------------------------------------------------------------- C000:0EBE C000:0EBE loc_C0EBE: ; CODE XREF: sub_C0E45+71j C000:0EBE sub di, 1FB0h C000:0EC2 C000:0EC2 loc_C0EC2: ; CODE XREF: sub_C0E45+77j C000:0EC2 loop loc_C0EAB C000:0EC4 jmp short loc_C0EF9 C000:0EC6 ; --------------------------------------------------------------------------- C000:0EC6 C000:0EC6 loc_C0EC6: ; CODE XREF: sub_C0E45+3Ej C000:0EC6 shr di, 1 C000:0EC8 test bl, 80h C000:0ECB jnz short loc_C0EE3 C000:0ECD C000:0ECD loc_C0ECD: ; CODE XREF: sub_C0E45:loc_C0EDFj C000:0ECD movsb C000:0ECE dec di C000:0ECF test di, 2000h C000:0ED3 jnz short loc_C0EDB C000:0ED5 add di, 2000h C000:0ED9 jmp short loc_C0EDF C000:0EDB ; --------------------------------------------------------------------------- C000:0EDB C000:0EDB loc_C0EDB: ; CODE XREF: sub_C0E45+8Ej C000:0EDB sub di, 1FB0h C000:0EDF C000:0EDF loc_C0EDF: ; CODE XREF: sub_C0E45+94j C000:0EDF loop loc_C0ECD C000:0EE1 jmp short loc_C0EF9 C000:0EE3 ; --------------------------------------------------------------------------- C000:0EE3 C000:0EE3 loc_C0EE3: ; CODE XREF: sub_C0E45+86j C000:0EE3 ; sub_C0E45:loc_C0EF7j C000:0EE3 lodsb C000:0EE4 xor es:[di], al C000:0EE7 test di, 2000h C000:0EEB jnz short loc_C0EF3 C000:0EED add di, 2000h C000:0EF1 jmp short loc_C0EF7 C000:0EF3 ; --------------------------------------------------------------------------- C000:0EF3 C000:0EF3 loc_C0EF3: ; CODE XREF: sub_C0E45+A6j C000:0EF3 sub di, 1FB0h C000:0EF7 C000:0EF7 loc_C0EF7: ; CODE XREF: sub_C0E45+ACj C000:0EF7 loop loc_C0EE3 C000:0EF9 C000:0EF9 loc_C0EF9: ; CODE XREF: sub_C0E45+61j C000:0EF9 ; sub_C0E45+7Fj ... C000:0EF9 pop ds C000:0EFA pop dx C000:0EFB pop cx C000:0EFC pop bx C000:0EFD retn C000:0EFD sub_C0E45 endp C000:0EFD C000:0EFE C000:0EFE ; =============== S U B R O U T I N E ======================================= C000:0EFE C000:0EFE C000:0EFE sub_C0EFE proc near ; CODE XREF: sub_C0E45+49p C000:0EFE ; sub_C0E45+67p C000:0EFE push cx C000:0EFF push dx C000:0F00 sub dx, dx C000:0F02 mov cx, 8 C000:0F05 C000:0F05 loc_C0F05: ; CODE XREF: sub_C0EFE:loc_C0F0Fj C000:0F05 rol dx, 1 C000:0F07 rol dx, 1 C000:0F09 rcl al, 1 C000:0F0B jnb short loc_C0F0F C000:0F0D or dl, bl C000:0F0F C000:0F0F loc_C0F0F: ; CODE XREF: sub_C0EFE+Dj C000:0F0F loop loc_C0F05 C000:0F11 mov ax, dx C000:0F13 xchg al, ah C000:0F15 pop dx C000:0F16 pop cx C000:0F17 retn C000:0F17 sub_C0EFE endp C000:0F17 C000:0F18 ; --------------------------------------------------------------------------- C000:0F18 ; START OF FUNCTION CHUNK FOR sub_C0F22 C000:0F18 C000:0F18 loc_C0F18: ; CODE XREF: sub_C0F22-4j C000:0F18 ; sub_C0F22+Dj C000:0F18 add di, ds:44Ch C000:0F1C dec bh C000:0F1E jnz short loc_C0F18 C000:0F20 jmp short loc_C0F31 C000:0F20 ; END OF FUNCTION CHUNK FOR sub_C0F22 C000:0F22 C000:0F22 ; =============== S U B R O U T I N E ======================================= C000:0F22 C000:0F22 C000:0F22 sub_C0F22 proc near ; CODE XREF: sub_C0A70+1Cp C000:0F22 ; sub_C0CAB:loc_C0CC6p C000:0F22 C000:0F22 ; FUNCTION CHUNK AT C000:0F18 SIZE 0000000A BYTES C000:0F22 C000:0F22 push bx C000:0F23 push cx C000:0F24 push dx C000:0F25 push bp C000:0F26 push ds C000:0F27 call sub_C2D00 C000:0F2A push ax C000:0F2B sub di, di C000:0F2D or bh, bh C000:0F2F jnz short loc_C0F18 C000:0F31 C000:0F31 loc_C0F31: ; CODE XREF: sub_C0F22-2j C000:0F31 mov cx, ds:485h C000:0F35 mov al, dh C000:0F37 sub dh, dh C000:0F39 add di, dx C000:0F3B mul cl C000:0F3D mul bp C000:0F3F add di, ax C000:0F41 adc dx, 0 C000:0F44 call sub_C67DB C000:0F47 pop ax C000:0F48 mul cl C000:0F4A lds si, ds:10Ch C000:0F4E add si, ax C000:0F50 mov dx, 3C4h C000:0F53 mov al, 2 C000:0F55 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:0F58 mov ah, 0Fh C000:0F5A out dx, ax C000:0F5B mov dl, 0CEh ; '+' C000:0F5D sub al, al C000:0F5F call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:0F62 sub ah, ah C000:0F64 out dx, ax C000:0F65 inc ax C000:0F66 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:0F69 mov ah, bl C000:0F6B not ah C000:0F6D out dx, ax C000:0F6E mov al, 3 C000:0F70 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:0F73 mov ah, 18h C000:0F75 test bl, 80h C000:0F78 jnz short loc_C0F7C C000:0F7A sub ah, ah C000:0F7C C000:0F7C loc_C0F7C: ; CODE XREF: sub_C0F22+56j C000:0F7C out dx, ax C000:0F7D mov al, 8 C000:0F7F call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:0F82 mov ah, 0FFh C000:0F84 out dx, ax C000:0F85 C000:0F85 loc_C0F85: ; CODE XREF: sub_C0F22:loc_C0F90j C000:0F85 lodsb C000:0F86 xchg al, es:[di] C000:0F89 add di, bp C000:0F8B jnb short loc_C0F90 C000:0F8D call sub_C6808 C000:0F90 C000:0F90 loc_C0F90: ; CODE XREF: sub_C0F22+69j C000:0F90 loop loc_C0F85 C000:0F92 mov dx, 3CEh C000:0F95 sub ax, ax C000:0F97 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:0F97 ; set/reset. C000:0F97 ; Data bits 0-3 select planes for write mode 00 C000:0F98 inc ax C000:0F99 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:0F99 ; enable set/reset C000:0F9A mov al, 3 C000:0F9C out dx, ax ; EGA: graph 1 and 2 addr reg: C000:0F9C ; data rotate and function select for write mode 00. Bits: C000:0F9C ; 0-2: set rotate count for write mode 00 C000:0F9C ; 3-4: fn for write modes 00 and 02 C000:0F9C ; 00=no change; 01=AND; 10=OR; 11=XOR C000:0F9D mov ax, 0FF08h C000:0FA0 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:0FA0 ; unknown register C000:0FA1 pop ds C000:0FA2 pop bp C000:0FA3 pop dx C000:0FA4 pop cx C000:0FA5 pop bx C000:0FA6 retn C000:0FA6 sub_C0F22 endp C000:0FA6 C000:0FA7 C000:0FA7 ; =============== S U B R O U T I N E ======================================= C000:0FA7 C000:0FA7 C000:0FA7 sub_C0FA7 proc near ; CODE XREF: sub_C0A97+Ap C000:0FA7 ; sub_C0D0A+10p C000:0FA7 push bx C000:0FA8 push cx C000:0FA9 push dx C000:0FAA push bp C000:0FAB push ds C000:0FAC call sub_C2D00 C000:0FAF push ax C000:0FB0 mov cx, ds:485h C000:0FB4 mov al, dh C000:0FB6 sub dh, dh C000:0FB8 mov si, dx C000:0FBA shl si, 3 C000:0FBD mul cl C000:0FBF mul bp C000:0FC1 add ax, si C000:0FC3 adc dx, 0 C000:0FC6 call sub_C67DB C000:0FC9 mov di, ax C000:0FCB pop ax C000:0FCC mul cl C000:0FCE lds si, ds:10Ch C000:0FD2 add si, ax C000:0FD4 sub bp, 8 C000:0FD7 mov dx, cx C000:0FD9 C000:0FD9 loc_C0FD9: ; CODE XREF: sub_C0FA7+52j C000:0FD9 lodsb C000:0FDA mov ah, al C000:0FDC mov cx, 8 C000:0FDF C000:0FDF loc_C0FDF: ; CODE XREF: sub_C0FA7:loc_C0FEFj C000:0FDF sub al, al C000:0FE1 rcl ah, 1 C000:0FE3 jnb short loc_C0FE7 C000:0FE5 mov al, bl C000:0FE7 C000:0FE7 loc_C0FE7: ; CODE XREF: sub_C0FA7+3Cj C000:0FE7 stosb C000:0FE8 test di, di C000:0FEA jnz short loc_C0FEF C000:0FEC call sub_C6808 C000:0FEF C000:0FEF loc_C0FEF: ; CODE XREF: sub_C0FA7+43j C000:0FEF loop loc_C0FDF C000:0FF1 add di, bp C000:0FF3 jnb short loc_C0FF8 C000:0FF5 call sub_C6808 C000:0FF8 C000:0FF8 loc_C0FF8: ; CODE XREF: sub_C0FA7+4Cj C000:0FF8 dec dx C000:0FF9 jnz short loc_C0FD9 C000:0FFB pop ds C000:0FFC pop bp C000:0FFD pop dx C000:0FFE pop cx C000:0FFF pop bx C000:1000 retn C000:1000 sub_C0FA7 endp C000:1000 C000:1001 C000:1001 ; =============== S U B R O U T I N E ======================================= C000:1001 C000:1001 C000:1001 sub_C1001 proc near ; CODE XREF: sub_C0AAB+Ap C000:1001 ; sub_C0D73+10p C000:1001 push bx C000:1002 push cx C000:1003 push dx C000:1004 push bp C000:1005 push ds C000:1006 call sub_C2D00 C000:1009 push ax C000:100A mov cx, ds:485h C000:100E mov al, dh C000:1010 sub dh, dh C000:1012 mov si, dx C000:1014 shl si, 4 C000:1017 mul cl C000:1019 mul bp C000:101B add ax, si C000:101D adc dx, 0 C000:1020 mov di, ax C000:1022 call sub_C67DB C000:1025 pop ax C000:1026 mul cl C000:1028 lds si, ds:10Ch C000:102C add si, ax C000:102E sub bp, 10h C000:1031 mov bx, cx C000:1033 C000:1033 loc_C1033: ; CODE XREF: sub_C1001+4Bj C000:1033 lodsb C000:1034 mov ah, al C000:1036 mov cx, 8 C000:1039 C000:1039 loc_C1039: ; CODE XREF: sub_C1001+40j C000:1039 cwd C000:103A mov es:[di], dx C000:103D inc di C000:103E inc di C000:103F rol ah, 1 C000:1041 loop loc_C1039 C000:1043 add di, bp C000:1045 jb short loc_C1054 C000:1047 cmp di, bp C000:1049 jz short loc_C1054 C000:104B C000:104B loc_C104B: ; CODE XREF: sub_C1001+56j C000:104B dec bx C000:104C jnz short loc_C1033 C000:104E pop ds C000:104F pop bp C000:1050 pop dx C000:1051 pop cx C000:1052 pop bx C000:1053 retn C000:1054 ; --------------------------------------------------------------------------- C000:1054 C000:1054 loc_C1054: ; CODE XREF: sub_C1001+44j C000:1054 ; sub_C1001+48j C000:1054 call sub_C6808 C000:1057 jmp short loc_C104B C000:1057 sub_C1001 endp C000:1057 C000:1059 C000:1059 ; =============== S U B R O U T I N E ======================================= C000:1059 C000:1059 C000:1059 sub_C1059 proc near ; CODE XREF: sub_C0ABD+Ap C000:1059 ; sub_C0DDC+10p C000:1059 push bx C000:105A push cx C000:105B push dx C000:105C push bp C000:105D push ds C000:105E push ax C000:105F call sub_C2D00 C000:1062 mov cx, ds:485h C000:1066 mov al, dh C000:1068 sub dh, dh C000:106A mov si, dx C000:106C shl si, 1 C000:106E add si, dx C000:1070 shl si, 3 C000:1073 mul cl C000:1075 mul bp C000:1077 add ax, si C000:1079 adc dx, 0 C000:107C mov di, ax C000:107E call sub_C67DB C000:1081 pop ax C000:1082 mul cl C000:1084 lds si, ds:10Ch C000:1088 add si, ax C000:108A sub bp, 18h C000:108D mov bx, cx C000:108F C000:108F loc_C108F: ; CODE XREF: sub_C1059+53j C000:108F lodsb C000:1090 mov ah, al C000:1092 mov cx, 8 C000:1095 C000:1095 loc_C1095: ; CODE XREF: sub_C1059+48j C000:1095 cwd C000:1096 mov es:[di], dx C000:1099 inc di C000:109A inc di C000:109B mov es:[di], dl C000:109E inc di C000:109F rol ah, 1 C000:10A1 loop loc_C1095 C000:10A3 add di, bp C000:10A5 jb short loc_C10B4 C000:10A7 cmp di, bp C000:10A9 jz short loc_C10B4 C000:10AB C000:10AB loc_C10AB: ; CODE XREF: sub_C1059+5Ej C000:10AB dec bx C000:10AC jnz short loc_C108F C000:10AE pop ds C000:10AF pop bp C000:10B0 pop dx C000:10B1 pop cx C000:10B2 pop bx C000:10B3 retn C000:10B4 ; --------------------------------------------------------------------------- C000:10B4 C000:10B4 loc_C10B4: ; CODE XREF: sub_C1059+4Cj C000:10B4 ; sub_C1059+50j C000:10B4 call sub_C6808 C000:10B7 jmp short loc_C10AB C000:10B7 sub_C1059 endp C000:10B7 C000:10B9 ; --------------------------------------------------------------------------- C000:10B9 in al, dx C000:10BA adc [bp+11h], ch C000:10BD loop loc_C10D0 C000:10BF imul dx, [bp+si], 8360h C000:10C3 stc C000:10C4 add [si+21h], dh C000:10C7 cmp al, 3 C000:10C9 ja short loc_C10E8 C000:10CB cbw C000:10CC mov si, ax C000:10CE shl si, 1 C000:10D0 C000:10D0 loc_C10D0: ; CODE XREF: C000:10BDj C000:10D0 mov al, ds:449h C000:10D3 push bx C000:10D4 push es C000:10D5 call sub_C2C61 C000:10D8 mov al, es:[bx+4] C000:10DC pop es C000:10DD assume es:nothing C000:10DD pop bx C000:10DE jb short loc_C10E8 C000:10E0 cbw C000:10E1 shl ax, 1 C000:10E3 call word ptr cs:[si+10B9h] C000:10E8 C000:10E8 loc_C10E8: ; CODE XREF: C000:10C9j C000:10E8 ; C000:10DEj C000:10E8 popa C000:10E9 pop ds C000:10EA pop si C000:10EB iret C000:10EC C000:10EC ; =============== S U B R O U T I N E ======================================= C000:10EC C000:10EC C000:10EC sub_C10EC proc near C000:10EC mov si, ax C000:10EE push bx C000:10EF mov bl, bh C000:10F1 sub bh, bh C000:10F3 shl bx, 1 C000:10F5 mov ax, [bx+450h] C000:10F9 pop bx C000:10FA push ax C000:10FB C000:10FB loc_C10FB: ; CODE XREF: sub_C10EC+7Bj C000:10FB call sub_C136E C000:10FE mov al, es:[bp+0] C000:1102 inc bp C000:1103 push bx C000:1104 push cx C000:1105 push si C000:1106 push es C000:1107 cmp al, 0Dh C000:1109 ja short loc_C112E C000:110B jz short loc_C111B C000:110D cmp al, 0Ah C000:110F ja short loc_C112E C000:1111 jz short loc_C111B C000:1113 cmp al, 8 C000:1115 ja short loc_C112E C000:1117 cmp al, 7 C000:1119 jb short loc_C112E C000:111B C000:111B loc_C111B: ; CODE XREF: sub_C10EC+1Fj C000:111B ; sub_C10EC+25j C000:111B push bx C000:111C call cs:off_C0B4B[si] C000:1121 pop bx C000:1122 mov bl, bh C000:1124 sub bh, bh C000:1126 shl bx, 1 C000:1128 mov dx, [bx+450h] C000:112C jmp short loc_C1163 C000:112E ; --------------------------------------------------------------------------- C000:112E C000:112E loc_C112E: ; CODE XREF: sub_C10EC+1Dj C000:112E ; sub_C10EC+23j ... C000:112E mov cx, 1 C000:1131 push bx C000:1132 push dx C000:1133 push si C000:1134 call cs:off_C09E0[si] C000:1139 pop si C000:113A pop dx C000:113B pop bx C000:113C inc dx C000:113D cmp dl, ds:44Ah C000:1141 jb short loc_C1163 C000:1143 push bx C000:1144 mov al, 0Dh C000:1146 push bx C000:1147 push si C000:1148 push es C000:1149 call cs:off_C0B4B[si] C000:114E pop es C000:114F pop si C000:1150 pop bx C000:1151 mov al, 0Ah C000:1153 call cs:off_C0B4B[si] C000:1158 pop bx C000:1159 mov bl, bh C000:115B sub bh, bh C000:115D shl bx, 1 C000:115F mov dx, [bx+450h] C000:1163 C000:1163 loc_C1163: ; CODE XREF: sub_C10EC+40j C000:1163 ; sub_C10EC+55j C000:1163 pop es C000:1164 pop si C000:1165 pop cx C000:1166 pop bx C000:1167 loop loc_C10FB C000:1169 pop dx C000:116A call sub_C136E C000:116D retn C000:116D sub_C10EC endp C000:116D C000:116E ; --------------------------------------------------------------------------- C000:116E mov si, ax C000:1170 C000:1170 loc_C1170: ; CODE XREF: C000:11DCj C000:1170 call sub_C136E C000:1173 mov al, es:[bp+0] C000:1177 inc bp C000:1178 push bx C000:1179 push cx C000:117A push si C000:117B push es C000:117C cmp al, 0Dh C000:117E ja short loc_C11A3 C000:1180 jz short loc_C1190 C000:1182 cmp al, 0Ah C000:1184 ja short loc_C11A3 C000:1186 jz short loc_C1190 C000:1188 cmp al, 8 C000:118A ja short loc_C11A3 C000:118C cmp al, 7 C000:118E jb short loc_C11A3 C000:1190 C000:1190 loc_C1190: ; CODE XREF: C000:1180j C000:1190 ; C000:1186j C000:1190 push bx C000:1191 call cs:off_C0B4B[si] C000:1196 pop bx C000:1197 mov bl, bh C000:1199 sub bh, bh C000:119B shl bx, 1 C000:119D mov dx, [bx+450h] C000:11A1 jmp short loc_C11D8 C000:11A3 ; --------------------------------------------------------------------------- C000:11A3 C000:11A3 loc_C11A3: ; CODE XREF: C000:117Ej C000:11A3 ; C000:1184j ... C000:11A3 mov cx, 1 C000:11A6 push bx C000:11A7 push dx C000:11A8 push si C000:11A9 call cs:off_C09E0[si] C000:11AE pop si C000:11AF pop dx C000:11B0 pop bx C000:11B1 inc dx C000:11B2 cmp dl, ds:44Ah C000:11B6 jb short loc_C11D8 C000:11B8 push bx C000:11B9 mov al, 0Dh C000:11BB push bx C000:11BC push si C000:11BD push es C000:11BE call cs:off_C0B4B[si] C000:11C3 pop es C000:11C4 pop si C000:11C5 pop bx C000:11C6 mov al, 0Ah C000:11C8 call cs:off_C0B4B[si] C000:11CD pop bx C000:11CE mov bl, bh C000:11D0 sub bh, bh C000:11D2 shl bx, 1 C000:11D4 mov dx, [bx+450h] C000:11D8 C000:11D8 loc_C11D8: ; CODE XREF: C000:11A1j C000:11D8 ; C000:11B6j C000:11D8 pop es C000:11D9 pop si C000:11DA pop cx C000:11DB pop bx C000:11DC loop loc_C1170 C000:11DE call sub_C136E C000:11E1 retn C000:11E2 ; --------------------------------------------------------------------------- C000:11E2 mov si, ax C000:11E4 push bx C000:11E5 mov bl, bh C000:11E7 sub bh, bh C000:11E9 shl bx, 1 C000:11EB mov ax, [bx+450h] C000:11EF pop bx C000:11F0 push ax C000:11F1 C000:11F1 loc_C11F1: ; CODE XREF: C000:1262j C000:11F1 call sub_C136E C000:11F4 mov al, es:[bp+0] C000:11F8 inc bp C000:11F9 push bx C000:11FA push cx C000:11FB push si C000:11FC push es C000:11FD cmp al, 0Dh C000:11FF ja short loc_C1224 C000:1201 jz short loc_C1211 C000:1203 cmp al, 0Ah C000:1205 ja short loc_C1224 C000:1207 jz short loc_C1211 C000:1209 cmp al, 8 C000:120B ja short loc_C1224 C000:120D cmp al, 7 C000:120F jb short loc_C1224 C000:1211 C000:1211 loc_C1211: ; CODE XREF: C000:1201j C000:1211 ; C000:1207j C000:1211 push bx C000:1212 call cs:off_C0B4B[si] C000:1217 pop bx C000:1218 mov bl, bh C000:121A sub bh, bh C000:121C shl bx, 1 C000:121E mov dx, [bx+450h] C000:1222 jmp short loc_C125E C000:1224 ; --------------------------------------------------------------------------- C000:1224 C000:1224 loc_C1224: ; CODE XREF: C000:11FFj C000:1224 ; C000:1205j ... C000:1224 mov bl, es:[bp+0] C000:1228 inc bp C000:1229 mov cx, 1 C000:122C push bx C000:122D push dx C000:122E push si C000:122F call cs:off_C09E0[si] C000:1234 pop si C000:1235 pop dx C000:1236 pop bx C000:1237 inc dx C000:1238 cmp dl, ds:44Ah C000:123C jb short loc_C125E C000:123E push bx C000:123F mov al, 0Dh C000:1241 push bx C000:1242 push si C000:1243 push es C000:1244 call cs:off_C0B4B[si] C000:1249 pop es C000:124A pop si C000:124B pop bx C000:124C mov al, 0Ah C000:124E call cs:off_C0B4B[si] C000:1253 pop bx C000:1254 mov bl, bh C000:1256 sub bh, bh C000:1258 shl bx, 1 C000:125A mov dx, [bx+450h] C000:125E C000:125E loc_C125E: ; CODE XREF: C000:1222j C000:125E ; C000:123Cj C000:125E pop es C000:125F pop si C000:1260 pop cx C000:1261 pop bx C000:1262 loop loc_C11F1 C000:1264 pop dx C000:1265 call sub_C136E C000:1268 retn C000:1269 ; --------------------------------------------------------------------------- C000:1269 mov si, ax C000:126B C000:126B loc_C126B: ; CODE XREF: C000:12DCj C000:126B call sub_C136E C000:126E mov al, es:[bp+0] C000:1272 inc bp C000:1273 push bx C000:1274 push cx C000:1275 push si C000:1276 push es C000:1277 cmp al, 0Dh C000:1279 ja short loc_C129E C000:127B jz short loc_C128B C000:127D cmp al, 0Ah C000:127F ja short loc_C129E C000:1281 jz short loc_C128B C000:1283 cmp al, 8 C000:1285 ja short loc_C129E C000:1287 cmp al, 7 C000:1289 jb short loc_C129E C000:128B C000:128B loc_C128B: ; CODE XREF: C000:127Bj C000:128B ; C000:1281j C000:128B push bx C000:128C call cs:off_C0B4B[si] C000:1291 pop bx C000:1292 mov bl, bh C000:1294 sub bh, bh C000:1296 shl bx, 1 C000:1298 mov dx, [bx+450h] C000:129C jmp short loc_C12D8 C000:129E ; --------------------------------------------------------------------------- C000:129E C000:129E loc_C129E: ; CODE XREF: C000:1279j C000:129E ; C000:127Fj ... C000:129E mov bl, es:[bp+0] C000:12A2 inc bp C000:12A3 mov cx, 1 C000:12A6 push bx C000:12A7 push dx C000:12A8 push si C000:12A9 call cs:off_C09E0[si] C000:12AE pop si C000:12AF pop dx C000:12B0 pop bx C000:12B1 inc dx C000:12B2 cmp dl, ds:44Ah C000:12B6 jb short loc_C12D8 C000:12B8 push bx C000:12B9 mov al, 0Dh C000:12BB push bx C000:12BC push si C000:12BD push es C000:12BE call cs:off_C0B4B[si] C000:12C3 pop es C000:12C4 pop si C000:12C5 pop bx C000:12C6 mov al, 0Ah C000:12C8 call cs:off_C0B4B[si] C000:12CD pop bx C000:12CE mov bl, bh C000:12D0 sub bh, bh C000:12D2 shl bx, 1 C000:12D4 mov dx, [bx+450h] C000:12D8 C000:12D8 loc_C12D8: ; CODE XREF: C000:129Cj C000:12D8 ; C000:12B6j C000:12D8 pop es C000:12D9 pop si C000:12DA pop cx C000:12DB pop bx C000:12DC loop loc_C126B C000:12DE call sub_C136E C000:12E1 retn C000:12E1 ; --------------------------------------------------------------------------- C000:12E2 db 0Eh dup( 0) C000:12F0 ; --------------------------------------------------------------------------- C000:12F0 C000:12F0 VGA_SET_CURSOR_SIZE: ; CODE XREF: C000:00F7j C000:12F0 ; DATA XREF: C000:00A4o C000:12F0 push cx C000:12F1 push dx C000:12F2 mov al, ds:449h C000:12F5 call sub_C2B45 C000:12F8 jnz short loc_C131A C000:12FA mov ds:460h, cx C000:12FE test byte ptr ds:487h, 9 C000:1303 jnz short loc_C130D C000:1305 test ch, 20h C000:1308 jnz short loc_C130D C000:130A call sub_C131F C000:130D C000:130D loc_C130D: ; CODE XREF: C000:1303j C000:130D ; C000:1308j C000:130D mov dx, ds:463h C000:1311 mov al, 0Ah C000:1313 mov ah, ch C000:1315 out dx, ax C000:1316 inc ax C000:1317 mov ah, cl C000:1319 out dx, ax C000:131A C000:131A loc_C131A: ; CODE XREF: C000:12F8j C000:131A pop dx C000:131B pop cx C000:131C pop ds C000:131D pop si C000:131E iret C000:131F C000:131F ; =============== S U B R O U T I N E ======================================= C000:131F C000:131F C000:131F sub_C131F proc near ; CODE XREF: C000:130Ap C000:131F mov dl, ds:485h C000:1323 dec dx C000:1324 cmp cl, ch C000:1326 jg short loc_C1333 C000:1328 or cl, cl C000:132A mov cl, dl C000:132C jnz short locret_C1365 C000:132E mov cx, 2000h C000:1331 jmp short locret_C1365 C000:1333 ; --------------------------------------------------------------------------- C000:1333 C000:1333 loc_C1333: ; CODE XREF: sub_C131F+7j C000:1333 cmp cl, 3 C000:1336 jbe short locret_C1365 C000:1338 mov ah, ch C000:133A inc ah C000:133C inc ah C000:133E cmp ah, cl C000:1340 jb short loc_C1356 C000:1342 dec dx C000:1343 sub cl, ch C000:1345 mov ch, dl C000:1347 sub dl, cl C000:1349 mov cl, dl C000:134B cmp cl, ch C000:134D jge short locret_C1365 C000:134F mov cl, ds:485h C000:1353 dec cx C000:1354 jmp short locret_C1365 C000:1356 ; --------------------------------------------------------------------------- C000:1356 C000:1356 loc_C1356: ; CODE XREF: sub_C131F+21j C000:1356 cmp ch, 2 C000:1359 jg short loc_C135F C000:135B mov cl, dl C000:135D jmp short locret_C1365 C000:135F ; --------------------------------------------------------------------------- C000:135F C000:135F loc_C135F: ; CODE XREF: sub_C131F+3Aj C000:135F mov cl, dl C000:1361 mov ch, dl C000:1363 shr ch, 1 C000:1365 C000:1365 locret_C1365: ; CODE XREF: sub_C131F+Dj C000:1365 ; sub_C131F+12j ... C000:1365 retn C000:1365 sub_C131F endp C000:1365 C000:1366 ; --------------------------------------------------------------------------- C000:1366 C000:1366 VGA_SET_CURSOR_POS: ; CODE XREF: C000:00F7j C000:1366 ; DATA XREF: C000:00A6o C000:1366 pusha C000:1367 call sub_C136E C000:136A popa C000:136B pop ds C000:136C pop si C000:136D iret C000:136E C000:136E ; =============== S U B R O U T I N E ======================================= C000:136E C000:136E C000:136E sub_C136E proc near ; CODE XREF: sub_C0B86+36p C000:136E ; sub_C0B86+42p ... C000:136E push bx C000:136F push dx C000:1370 sub ax, ax C000:1372 mov bl, bh C000:1374 sub bh, bh C000:1376 shl bx, 1 C000:1378 mov [bx+450h], dx C000:137C shr bx, 1 C000:137E cmp bl, ds:462h C000:1382 jnz short loc_C13A4 C000:1384 mov bx, ds:44Eh C000:1388 shr bx, 1 C000:138A mov al, dh C000:138C mul byte ptr ds:44Ah C000:1390 add al, dl C000:1392 adc ah, 0 C000:1395 add bx, ax C000:1397 mov dx, ds:463h C000:139B mov al, 0Eh C000:139D mov ah, bh C000:139F out dx, ax C000:13A0 inc ax C000:13A1 mov ah, bl C000:13A3 out dx, ax C000:13A4 C000:13A4 loc_C13A4: ; CODE XREF: sub_C136E+14j C000:13A4 pop dx C000:13A5 pop bx C000:13A6 retn C000:13A6 sub_C136E endp C000:13A6 C000:13A7 ; --------------------------------------------------------------------------- C000:13A7 C000:13A7 VGA_GET_CURSOR_POS: ; CODE XREF: C000:00F7j C000:13A7 ; DATA XREF: C000:00A8o C000:13A7 push bx C000:13A8 mov bl, bh C000:13AA sub bh, bh C000:13AC shl bx, 1 C000:13AE mov dx, [bx+450h] C000:13B2 mov cx, ds:460h C000:13B6 pop bx C000:13B7 pop ds C000:13B8 pop si C000:13B9 iret C000:13BA ; --------------------------------------------------------------------------- C000:13BA C000:13BA VGA_SET_PAGE: ; CODE XREF: C000:00F7j C000:13BA ; DATA XREF: C000:00ACo C000:13BA pusha C000:13BB mov ds:462h, al C000:13BE sub bx, bx C000:13C0 cbw C000:13C1 push ax C000:13C2 or al, al C000:13C4 jz short loc_C13CD C000:13C6 C000:13C6 loc_C13C6: ; CODE XREF: C000:13CBj C000:13C6 add bx, ds:44Ch C000:13CA dec ax C000:13CB jnz short loc_C13C6 C000:13CD C000:13CD loc_C13CD: ; CODE XREF: C000:13C4j C000:13CD mov ds:44Eh, bx C000:13D1 push ax C000:13D2 mov al, ds:449h C000:13D5 call sub_C2B45 C000:13D8 pop ax C000:13D9 jnz short loc_C13DD C000:13DB shr bx, 1 C000:13DD C000:13DD loc_C13DD: ; CODE XREF: C000:13D9j C000:13DD mov dx, ds:463h C000:13E1 mov al, 0Ch C000:13E3 mov ah, bh C000:13E5 out dx, ax C000:13E6 inc ax C000:13E7 mov ah, bl C000:13E9 out dx, ax C000:13EA pop bx C000:13EB shl bx, 1 C000:13ED mov dx, [bx+450h] C000:13F1 shr bx, 1 C000:13F3 mov bh, bl C000:13F5 call sub_C136E C000:13F8 popa C000:13F9 pop ds C000:13FA pop si C000:13FB iret C000:13FB ; --------------------------------------------------------------------------- C000:13FC db 4 dup( 0) C000:1400 ; --------------------------------------------------------------------------- C000:1400 C000:1400 VGA_GET_LIGHT_PEN: ; CODE XREF: C000:00F7j C000:1400 ; DATA XREF: C000:00AAo C000:1400 sub ax, ax C000:1402 pop ds C000:1403 pop si C000:1404 iret C000:1404 ; --------------------------------------------------------------------------- C000:1405 off_C1405 dw offset nullsub_9 ; DATA XREF: C000:1436r C000:1407 dw offset nullsub_9 C000:1409 dw offset sub_C143F C000:140B dw offset sub_C14B8 C000:140D dw offset sub_C14B8 C000:140F dw offset sub_C14B8 C000:1411 dw offset sub_C150C C000:1413 dw offset sub_C1529 C000:1415 dw offset sub_C1546 C000:1417 ; --------------------------------------------------------------------------- C000:1417 C000:1417 VGA_PUT_PIXEL: ; CODE XREF: C000:00F7j C000:1417 ; DATA XREF: C000:00BAo C000:1417 pusha C000:1418 push ax C000:1419 push bx C000:141A push es C000:141B mov al, ds:449h C000:141E call sub_C2C61 C000:1421 mov si, es:[bx+4] C000:1425 pop es C000:1426 pop bx C000:1427 pop ax C000:1428 jb short loc_C143B C000:142A and si, 0FFh C000:142E cmp si, 9 C000:1432 jnb short loc_C143B C000:1434 shl si, 1 C000:1436 call cs:off_C1405[si] C000:143B C000:143B loc_C143B: ; CODE XREF: C000:1428j C000:143B ; C000:1432j C000:143B popa C000:143C pop ds C000:143D pop si C000:143E iret C000:143F C000:143F ; =============== S U B R O U T I N E ======================================= C000:143F C000:143F C000:143F sub_C143F proc near ; CODE XREF: C000:1436p C000:143F ; DATA XREF: C000:1409o C000:143F mov di, 0B800h C000:1442 mov es, di C000:1444 assume es:nothing C000:1444 sub di, di C000:1446 mov bl, al C000:1448 shr dx, 1 C000:144A jnb short loc_C144F C000:144C mov di, 2000h C000:144F C000:144F loc_C144F: ; CODE XREF: sub_C143F+Bj C000:144F mov ax, 50h ; 'P' C000:1452 mul dx C000:1454 add di, ax C000:1456 mov ax, cx C000:1458 shr ax, 1 C000:145A shr ax, 1 C000:145C cmp byte ptr ds:449h, 6 C000:1461 jnz short loc_C1487 C000:1463 shr ax, 1 C000:1465 add di, ax C000:1467 and cl, 7 C000:146A test bl, 80h C000:146D lahf C000:146E and bl, 1 C000:1471 ror bl, 1 C000:1473 ror bl, cl C000:1475 sahf C000:1476 jnz short loc_C1483 C000:1478 mov al, 7Fh ; '' C000:147A ror al, cl C000:147C and al, es:[di] C000:147F or al, bl C000:1481 stosb C000:1482 retn C000:1483 ; --------------------------------------------------------------------------- C000:1483 C000:1483 loc_C1483: ; CODE XREF: sub_C143F+37j C000:1483 xor es:[di], bl C000:1486 retn C000:1487 ; --------------------------------------------------------------------------- C000:1487 C000:1487 loc_C1487: ; CODE XREF: sub_C143F+22j C000:1487 add di, ax C000:1489 and cl, 3 C000:148C shl cl, 1 C000:148E test bl, 80h C000:1491 lahf C000:1492 and bl, 3 C000:1495 ror bl, 1 C000:1497 ror bl, 1 C000:1499 ror bl, cl C000:149B sahf C000:149C jnz short loc_C14A9 C000:149E mov al, 3Fh ; '?' C000:14A0 ror al, cl C000:14A2 and al, es:[di] C000:14A5 or al, bl C000:14A7 stosb C000:14A8 retn C000:14A8 sub_C143F endp C000:14A8 C000:14A9 ; --------------------------------------------------------------------------- C000:14A9 C000:14A9 loc_C14A9: ; CODE XREF: sub_C143F+5Dj C000:14A9 xor es:[di], bl C000:14AC ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_9. PRESS KEYPAD "+" TO EXPAND] C000:14AD ; --------------------------------------------------------------------------- C000:14AD C000:14AD loc_C14AD: ; CODE XREF: sub_C14B8+10j C000:14AD mov al, bh C000:14AF cbw C000:14B0 mul word ptr ds:44Ch C000:14B4 add di, ax C000:14B6 jmp short loc_C14CA C000:14B8 C000:14B8 ; =============== S U B R O U T I N E ======================================= C000:14B8 C000:14B8 C000:14B8 sub_C14B8 proc near ; CODE XREF: C000:1436p C000:14B8 ; DATA XREF: C000:140Bo ... C000:14B8 mov di, 0A000h C000:14BB mov es, di C000:14BD assume es:nothing C000:14BD mov si, ax C000:14BF mov ax, ds:44Ah C000:14C2 mul dx C000:14C4 mov di, ax C000:14C6 or bh, bh C000:14C8 jnz short loc_C14AD C000:14CA C000:14CA loc_C14CA: ; CODE XREF: C000:14B6j C000:14CA mov ax, cx C000:14CC shr ax, 3 C000:14CF add di, ax C000:14D1 adc dx, 0 C000:14D4 call sub_C67DB C000:14D7 and cl, 7 C000:14DA mov ah, 80h ; 'Ç' C000:14DC ror ah, cl C000:14DE mov al, 8 C000:14E0 mov dx, 3CEh C000:14E3 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:14E3 ; set/reset. C000:14E3 ; Data bits 0-3 select planes for write mode 00 C000:14E4 mov ax, 0F01h C000:14E7 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:14E7 ; unknown register C000:14E8 mov ax, si C000:14EA mov ah, al C000:14EC sub al, al C000:14EE out dx, ax ; EGA: graph 1 and 2 addr reg: C000:14EE ; set/reset. C000:14EE ; Data bits 0-3 select planes for write mode 00 C000:14EF test ah, 80h C000:14F2 mov ax, 1803h C000:14F5 jnz short loc_C14F9 C000:14F7 sub ah, ah C000:14F9 C000:14F9 loc_C14F9: ; CODE XREF: sub_C14B8+3Dj C000:14F9 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:14F9 ; data rotate and function select for write mode 00. Bits: C000:14F9 ; 0-2: set rotate count for write mode 00 C000:14F9 ; 3-4: fn for write modes 00 and 02 C000:14F9 ; 00=no change; 01=AND; 10=OR; 11=XOR C000:14FA mov dl, 0C4h ; '¦' C000:14FC mov ax, 0F02h C000:14FF out dx, ax ; EGA: sequencer address reg C000:14FF ; unknown register C000:1500 mov al, 0FFh C000:1502 xchg al, es:[di] C000:1505 mov dl, 0CEh ; '+' C000:1507 mov ax, 3 C000:150A out dx, ax ; EGA: graph 1 and 2 addr reg: C000:150A ; data rotate and function select for write mode 00. Bits: C000:150A ; 0-2: set rotate count for write mode 00 C000:150A ; 3-4: fn for write modes 00 and 02 C000:150A ; 00=no change; 01=AND; 10=OR; 11=XOR C000:150B retn C000:150B sub_C14B8 endp C000:150B C000:150C C000:150C ; =============== S U B R O U T I N E ======================================= C000:150C C000:150C C000:150C sub_C150C proc near ; CODE XREF: C000:1436p C000:150C ; DATA XREF: C000:1411o C000:150C mov di, 0A000h C000:150F mov es, di C000:1511 mov bh, al C000:1513 mov ax, ds:44Ah C000:1516 shl ax, 3 C000:1519 mul dx C000:151B add ax, cx C000:151D adc dx, 0 C000:1520 call sub_C67DB C000:1523 mov di, ax C000:1525 mov al, bh C000:1527 stosb C000:1528 retn C000:1528 sub_C150C endp C000:1528 C000:1529 C000:1529 ; =============== S U B R O U T I N E ======================================= C000:1529 C000:1529 C000:1529 sub_C1529 proc near ; CODE XREF: C000:1436p C000:1529 ; DATA XREF: C000:1413o C000:1529 mov di, 0A000h C000:152C mov es, di C000:152E mov ax, ds:44Ah C000:1531 shl ax, 4 C000:1534 mul dx C000:1536 shl cx, 1 C000:1538 add ax, cx C000:153A adc dx, 0 C000:153D call sub_C67DB C000:1540 mov di, ax C000:1542 mov es:[di], bx C000:1545 retn C000:1545 sub_C1529 endp C000:1545 C000:1546 C000:1546 ; =============== S U B R O U T I N E ======================================= C000:1546 C000:1546 C000:1546 sub_C1546 proc near ; CODE XREF: C000:1436p C000:1546 ; DATA XREF: C000:1415o C000:1546 push ax C000:1547 push bx C000:1548 mov al, ds:449h C000:154B call sub_C2C61 C000:154E mov ax, es:[bx+0Ch] C000:1552 mul dx C000:1554 mov bx, cx C000:1556 shl bx, 1 C000:1558 add bx, cx C000:155A add ax, bx C000:155C adc dx, 0 C000:155F call sub_C67DB C000:1562 mov di, 0A000h C000:1565 mov es, di C000:1567 mov di, ax C000:1569 pop bx C000:156A pop ax C000:156B stosb C000:156C mov es:[di], bx C000:156F retn C000:156F sub_C1546 endp C000:156F C000:156F ; --------------------------------------------------------------------------- C000:1570 off_C1570 dw offset nullsub_4 ; DATA XREF: C000:15A2r C000:1572 dw offset nullsub_4 C000:1574 dw offset sub_C15AE C000:1576 dw offset sub_C15FB C000:1578 dw offset sub_C15FB C000:157A dw offset sub_C15FB C000:157C dw offset sub_C1659 C000:157E dw offset sub_C1672 C000:1580 db 90h ; É C000:1581 ; --------------------------------------------------------------------------- C000:1581 push ss C000:1582 C000:1582 VGA_GET_PIXEL: ; CODE XREF: C000:00F7j C000:1582 ; DATA XREF: C000:00BCo C000:1582 push cx C000:1583 push dx C000:1584 push ax C000:1585 push bx C000:1586 push es C000:1587 mov al, ds:449h C000:158A call sub_C2C61 C000:158D mov si, es:[bx+4] C000:1591 pop es C000:1592 assume es:nothing C000:1592 pop bx C000:1593 pop ax C000:1594 jb short loc_C15A9 C000:1596 and si, 0FFh C000:159A cmp si, 9 C000:159E jnb short loc_C15A9 C000:15A0 shl si, 1 C000:15A2 call cs:off_C1570[si] C000:15A7 mov ah, 0Dh C000:15A9 C000:15A9 loc_C15A9: ; CODE XREF: C000:1594j C000:15A9 ; C000:159Ej C000:15A9 pop dx C000:15AA pop cx C000:15AB pop ds C000:15AC pop si C000:15AD iret C000:15AE C000:15AE ; =============== S U B R O U T I N E ======================================= C000:15AE C000:15AE C000:15AE sub_C15AE proc near ; CODE XREF: C000:15A2p C000:15AE ; DATA XREF: C000:1574o C000:15AE push bx C000:15AF sub si, si C000:15B1 shr dx, 1 C000:15B3 jnb short loc_C15B8 C000:15B5 mov si, 2000h C000:15B8 C000:15B8 loc_C15B8: ; CODE XREF: sub_C15AE+5j C000:15B8 mov ax, 50h ; 'P' C000:15BB mul dx C000:15BD add si, ax C000:15BF mov ax, cx C000:15C1 shr ax, 1 C000:15C3 shr ax, 1 C000:15C5 cmp byte ptr ds:449h, 6 C000:15CA mov bx, 0B800h C000:15CD mov ds, bx C000:15CF assume ds:nothing C000:15CF jnz short loc_C15E0 C000:15D1 shr ax, 1 C000:15D3 add si, ax C000:15D5 and cl, 7 C000:15D8 lodsb C000:15D9 inc cx C000:15DA rol al, cl C000:15DC and al, 1 C000:15DE pop bx C000:15DF retn C000:15DF sub_C15AE endp C000:15DF C000:15E0 ; --------------------------------------------------------------------------- C000:15E0 C000:15E0 loc_C15E0: ; CODE XREF: sub_C15AE+21j C000:15E0 add si, ax C000:15E2 and cl, 3 C000:15E5 shl cl, 1 C000:15E7 lodsb C000:15E8 inc cx C000:15E9 inc cx C000:15EA rol al, cl C000:15EC and al, 3 C000:15EE pop bx C000:15EF C000:15EF ; =============== S U B R O U T I N E ======================================= C000:15EF C000:15EF C000:15EF nullsub_4 proc near ; CODE XREF: C000:15A2p C000:15EF ; DATA XREF: C000:off_C1570o ... C000:15EF retn C000:15EF nullsub_4 endp C000:15EF C000:15F0 ; --------------------------------------------------------------------------- C000:15F0 ; START OF FUNCTION CHUNK FOR sub_C15FB C000:15F0 C000:15F0 loc_C15F0: ; CODE XREF: sub_C15FB+Aj C000:15F0 mov al, bh C000:15F2 cbw C000:15F3 mul word ptr ds:44Ch C000:15F7 add si, ax C000:15F9 jmp short loc_C1607 C000:15F9 ; END OF FUNCTION CHUNK FOR sub_C15FB C000:15FB C000:15FB ; =============== S U B R O U T I N E ======================================= C000:15FB C000:15FB C000:15FB sub_C15FB proc near ; CODE XREF: C000:15A2p C000:15FB ; DATA XREF: C000:1576o ... C000:15FB C000:15FB ; FUNCTION CHUNK AT C000:15F0 SIZE 0000000B BYTES C000:15FB C000:15FB push bx C000:15FC mov ax, ds:44Ah C000:15FF mul dx C000:1601 mov si, ax C000:1603 or bh, bh C000:1605 jnz short loc_C15F0 C000:1607 C000:1607 loc_C1607: ; CODE XREF: sub_C15FB-2j C000:1607 mov ax, cx C000:1609 shr ax, 3 C000:160C add si, ax C000:160E adc dx, 0 C000:1611 call sub_C67DB C000:1614 and cl, 7 C000:1617 mov bh, 80h ; 'Ç' C000:1619 shr bh, cl C000:161B mov dx, 0A000h C000:161E mov ds, dx C000:1620 assume ds:nothing C000:1620 mov dx, 3CEh C000:1623 mov ax, 4 C000:1626 sub bl, bl C000:1628 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:1628 ; read map select. C000:1628 ; Data bits 0-2 select map # for read mode 00. C000:1629 mov bl, [si] C000:162B inc ah C000:162D and bl, bh C000:162F ror bl, 1 C000:1631 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:1631 ; unknown register C000:1632 mov ch, [si] C000:1634 inc ah C000:1636 and ch, bh C000:1638 or bl, ch C000:163A ror bl, 1 C000:163C out dx, ax ; EGA: graph 1 and 2 addr reg: C000:163C ; unknown register C000:163D mov ch, [si] C000:163F inc ah C000:1641 and ch, bh C000:1643 or bl, ch C000:1645 ror bl, 1 C000:1647 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:1647 ; unknown register C000:1648 mov ch, [si] C000:164A inc ah C000:164C and ch, bh C000:164E or bl, ch C000:1650 sub cl, 4 C000:1653 rol bl, cl C000:1655 mov al, bl C000:1657 pop bx C000:1658 retn C000:1658 sub_C15FB endp C000:1658 C000:1659 C000:1659 ; =============== S U B R O U T I N E ======================================= C000:1659 C000:1659 C000:1659 sub_C1659 proc near ; CODE XREF: C000:15A2p C000:1659 ; DATA XREF: C000:157Co C000:1659 mov ax, ds:44Ah C000:165C shl ax, 3 C000:165F mul dx C000:1661 add ax, cx C000:1663 adc dx, 0 C000:1666 call sub_C67DB C000:1669 mov si, 0A000h C000:166C mov ds, si C000:166E mov si, ax C000:1670 lodsb C000:1671 retn C000:1671 sub_C1659 endp C000:1671 C000:1672 C000:1672 ; =============== S U B R O U T I N E ======================================= C000:1672 C000:1672 C000:1672 sub_C1672 proc near ; CODE XREF: C000:15A2p C000:1672 ; DATA XREF: C000:157Eo C000:1672 push ax C000:1673 mov ax, ds:44Ah C000:1676 shl ax, 4 C000:1679 mul dx C000:167B shl cx, 1 C000:167D add ax, cx C000:167F adc dx, 0 C000:1682 call sub_C67DB C000:1685 mov si, 0A000h C000:1688 mov ds, si C000:168A mov si, ax C000:168C mov bx, [si] C000:168E pop ax C000:168F retn C000:168F sub_C1672 endp C000:168F C000:1690 C000:1690 ; =============== S U B R O U T I N E ======================================= C000:1690 C000:1690 C000:1690 sub_C1690 proc near C000:1690 mov al, ds:449h C000:1693 call sub_C2C61 C000:1696 mov ax, es:[bx+0Ch] C000:169A mul dx C000:169C mov bx, cx C000:169E shl bx, 1 C000:16A0 add bx, cx C000:16A2 add ax, bx C000:16A4 adc dx, 0 C000:16A7 call sub_C67DB C000:16AA mov si, 0A000h C000:16AD mov ds, si C000:16AF mov si, ax C000:16B1 lodsb C000:16B2 mov bx, [si] C000:16B4 retn C000:16B4 sub_C1690 endp C000:16B4 C000:16B4 ; --------------------------------------------------------------------------- C000:16B5 db 0Bh dup( 0) C000:16C0 off_C16C0 dw offset sub_C1735 ; DATA XREF: C000:16ECr C000:16C2 dw offset sub_C172E C000:16C4 dw offset sub_C1805 C000:16C6 dw offset sub_C191B C000:16C8 dw offset sub_C191B C000:16CA dw offset sub_C191B C000:16CC dw offset sub_C1A75 C000:16CE dw offset sub_C1A75 C000:16D0 dw offset sub_C1A75 C000:16D2 ; --------------------------------------------------------------------------- C000:16D2 C000:16D2 VGA_ROLL_UP: ; CODE XREF: C000:00F7j C000:16D2 ; DATA XREF: C000:00AEo C000:16D2 pusha C000:16D3 push es C000:16D4 push ax C000:16D5 push bx C000:16D6 push es C000:16D7 mov al, ds:449h C000:16DA call sub_C2C61 C000:16DD mov si, es:[bx+4] C000:16E1 pop es C000:16E2 pop bx C000:16E3 pop ax C000:16E4 jb short loc_C16F1 C000:16E6 and si, 0FFh C000:16EA shl si, 1 C000:16EC call cs:off_C16C0[si] C000:16F1 C000:16F1 loc_C16F1: ; CODE XREF: C000:16E4j C000:16F1 pop es C000:16F2 popa C000:16F3 pop ds C000:16F4 assume ds:nothing C000:16F4 pop si C000:16F5 iret C000:16F6 ; --------------------------------------------------------------------------- C000:16F6 ; START OF FUNCTION CHUNK FOR sub_C1735 C000:16F6 C000:16F6 loc_C16F6: ; CODE XREF: sub_C1735+7j C000:16F6 ; sub_C1735+11j ... C000:16F6 mov al, ds:44Ah C000:16F9 mul ch C000:16FB add al, cl C000:16FD adc ah, 0 C000:1700 shl ax, 1 C000:1702 add ax, ds:44Eh C000:1706 mov di, ax C000:1708 sub dl, cl C000:170A sub dh, ch C000:170C mov cl, dl C000:170E sub ch, ch C000:1710 inc cx C000:1711 mov dl, dh C000:1713 sub dh, dh C000:1715 inc dx C000:1716 mov bp, ds:44Ah C000:171A shl bp, 1 C000:171C mov al, 20h ; ' ' C000:171E mov ah, bh C000:1720 mov bx, cx C000:1722 C000:1722 loc_C1722: ; CODE XREF: sub_C1735-Aj C000:1722 mov cx, bx C000:1724 push di C000:1725 rep stosw C000:1727 pop di C000:1728 add di, bp C000:172A dec dx C000:172B jnz short loc_C1722 C000:172D retn C000:172D ; END OF FUNCTION CHUNK FOR sub_C1735 C000:172E C000:172E ; =============== S U B R O U T I N E ======================================= C000:172E C000:172E C000:172E sub_C172E proc near ; CODE XREF: C000:16ECp C000:172E ; DATA XREF: C000:16C2o C000:172E mov di, 0B000h C000:1731 mov es, di C000:1733 assume es:nothing C000:1733 jmp short loc_C173A C000:1733 sub_C172E endp C000:1733 C000:1735 C000:1735 ; =============== S U B R O U T I N E ======================================= C000:1735 C000:1735 C000:1735 sub_C1735 proc near ; CODE XREF: C000:16ECp C000:1735 ; DATA XREF: C000:off_C16C0o C000:1735 C000:1735 ; FUNCTION CHUNK AT C000:16F6 SIZE 00000038 BYTES C000:1735 C000:1735 mov di, 0B800h C000:1738 mov es, di C000:173A assume es:nothing C000:173A C000:173A loc_C173A: ; CODE XREF: sub_C172E+5j C000:173A test al, al C000:173C jz short loc_C16F6 C000:173E mov bl, al C000:1740 mov al, dh C000:1742 sub al, ch C000:1744 cmp bl, al C000:1746 ja short loc_C16F6 C000:1748 mov bp, ds:44Ah C000:174C mov al, 20h ; ' ' C000:174E mov ah, bh C000:1750 push ax C000:1751 mov ax, bp C000:1753 mul ch C000:1755 add al, cl C000:1757 adc ah, 0 C000:175A shl ax, 1 C000:175C add ax, ds:44Eh C000:1760 mov di, ax C000:1762 shl bp, 1 C000:1764 sub bh, bh C000:1766 push bx C000:1767 mov si, di C000:1769 C000:1769 loc_C1769: ; CODE XREF: sub_C1735+37j C000:1769 add si, bp C000:176B dec bx C000:176C jnz short loc_C1769 C000:176E pop bx C000:176F push es C000:1770 pop ds C000:1771 assume ds:nothing C000:1771 sub dl, cl C000:1773 sub dh, ch C000:1775 mov cl, dl C000:1777 sub ch, ch C000:1779 inc cx C000:177A mov dl, dh C000:177C sub dh, dh C000:177E inc dx C000:177F sub dx, bx C000:1781 pop ax C000:1782 C000:1782 loc_C1782: ; CODE XREF: sub_C1735+5Aj C000:1782 ; sub_C1BE7+4Fj C000:1782 push cx C000:1783 push di C000:1784 push si C000:1785 rep movsw C000:1787 pop si C000:1788 pop di C000:1789 pop cx C000:178A add si, bp C000:178C add di, bp C000:178E dec dx C000:178F jnz short loc_C1782 C000:1791 mov dx, cx C000:1793 C000:1793 loc_C1793: ; CODE XREF: sub_C1735+67j C000:1793 mov cx, dx C000:1795 push di C000:1796 rep stosw C000:1798 pop di C000:1799 add di, bp C000:179B dec bx C000:179C jnz short loc_C1793 C000:179E retn C000:179E sub_C1735 endp C000:179E C000:179F ; --------------------------------------------------------------------------- C000:179F ; START OF FUNCTION CHUNK FOR sub_C1805 C000:179F C000:179F loc_C179F: ; CODE XREF: sub_C1805+7j C000:179F ; sub_C1805+11j ... C000:179F mov bp, ds:44Ah C000:17A3 mov al, ds:44Ah C000:17A6 mul ch C000:17A8 push dx C000:17A9 mul word ptr ds:485h C000:17AD shr ax, 1 C000:17AF pop dx C000:17B0 add al, cl C000:17B2 adc ah, 0 C000:17B5 cmp byte ptr ds:449h, 6 C000:17BA jz short loc_C17C0 C000:17BC shl ax, 1 C000:17BE shl bp, 1 C000:17C0 C000:17C0 loc_C17C0: ; CODE XREF: sub_C1805-4Bj C000:17C0 mov di, ax C000:17C2 sub dl, cl C000:17C4 sub dh, ch C000:17C6 mov cl, dl C000:17C8 sub ch, ch C000:17CA inc cx C000:17CB cmp byte ptr ds:449h, 6 C000:17D0 jz short loc_C17D4 C000:17D2 shl cx, 1 C000:17D4 C000:17D4 loc_C17D4: ; CODE XREF: sub_C1805-35j C000:17D4 mov dl, dh C000:17D6 sub dh, dh C000:17D8 inc dx C000:17D9 mov al, ds:485h C000:17DC mul dl C000:17DE mov dx, ax C000:17E0 shr dx, 1 C000:17E2 mov al, bh C000:17E4 push dx C000:17E5 push di C000:17E6 mov bx, cx C000:17E8 C000:17E8 loc_C17E8: ; CODE XREF: sub_C1805-14j C000:17E8 mov cx, bx C000:17EA push di C000:17EB rep stosb C000:17ED pop di C000:17EE add di, bp C000:17F0 dec dx C000:17F1 jnz short loc_C17E8 C000:17F3 pop di C000:17F4 pop dx C000:17F5 add di, 2000h C000:17F9 C000:17F9 loc_C17F9: ; CODE XREF: sub_C1805-3j C000:17F9 mov cx, bx C000:17FB push di C000:17FC rep stosb C000:17FE pop di C000:17FF add di, bp C000:1801 dec dx C000:1802 jnz short loc_C17F9 C000:1804 retn C000:1804 ; END OF FUNCTION CHUNK FOR sub_C1805 C000:1805 C000:1805 ; =============== S U B R O U T I N E ======================================= C000:1805 C000:1805 C000:1805 sub_C1805 proc near ; CODE XREF: C000:16ECp C000:1805 ; DATA XREF: C000:16C4o C000:1805 C000:1805 ; FUNCTION CHUNK AT C000:179F SIZE 00000066 BYTES C000:1805 C000:1805 mov di, 0B800h C000:1808 mov es, di C000:180A test al, al C000:180C jz short loc_C179F C000:180E mov bl, al C000:1810 mov al, dh C000:1812 sub al, ch C000:1814 cmp bl, al C000:1816 ja short loc_C179F C000:1818 push bx C000:1819 sub dh, ch C000:181B sub dl, cl C000:181D mov al, ch C000:181F mov bh, cl C000:1821 mov cx, dx C000:1823 mov bp, ds:44Ah C000:1827 mov si, ds:485h C000:182B shr si, 1 C000:182D sub ah, ah C000:182F mul bp C000:1831 mul si C000:1833 add al, bh C000:1835 adc ah, 0 C000:1838 mov di, ax C000:183A mov al, ch C000:183C sub ah, ah C000:183E sub al, bl C000:1840 inc ax C000:1841 mul si C000:1843 mov dx, ax C000:1845 sub ch, ch C000:1847 inc cx C000:1848 cmp byte ptr ds:449h, 6 C000:184D jz short loc_C1855 C000:184F shl di, 1 C000:1851 shl cx, 1 C000:1853 shl bp, 1 C000:1855 C000:1855 loc_C1855: ; CODE XREF: sub_C1805+48j C000:1855 pop ax C000:1856 push ax C000:1857 push dx C000:1858 sub ah, ah C000:185A mul si C000:185C mov bx, ax C000:185E mul bp C000:1860 mov si, di C000:1862 add si, ax C000:1864 pop dx C000:1865 pop ax C000:1866 mov al, ah C000:1868 push es C000:1869 pop ds C000:186A C000:186A loc_C186A: ; CODE XREF: sub_C1C3C+6Aj C000:186A push dx C000:186B push di C000:186C push si C000:186D C000:186D loc_C186D: ; CODE XREF: sub_C1805+75j C000:186D push cx C000:186E push di C000:186F push si C000:1870 rep movsb C000:1872 pop si C000:1873 pop di C000:1874 pop cx C000:1875 add di, bp C000:1877 add si, bp C000:1879 dec dx C000:187A jnz short loc_C186D C000:187C pop si C000:187D pop di C000:187E pop dx C000:187F add di, 2000h C000:1883 add si, 2000h C000:1887 C000:1887 loc_C1887: ; CODE XREF: sub_C1805+8Fj C000:1887 push cx C000:1888 push di C000:1889 push si C000:188A rep movsb C000:188C pop si C000:188D pop di C000:188E pop cx C000:188F add di, bp C000:1891 add si, bp C000:1893 dec dx C000:1894 jnz short loc_C1887 C000:1896 push bx C000:1897 push di C000:1898 C000:1898 loc_C1898: ; CODE XREF: sub_C1805+9Cj C000:1898 push cx C000:1899 push di C000:189A rep stosb C000:189C pop di C000:189D pop cx C000:189E add di, bp C000:18A0 dec bx C000:18A1 jnz short loc_C1898 C000:18A3 pop di C000:18A4 pop bx C000:18A5 sub di, 2000h C000:18A9 C000:18A9 loc_C18A9: ; CODE XREF: sub_C1805+ADj C000:18A9 push cx C000:18AA push di C000:18AB rep stosb C000:18AD pop di C000:18AE pop cx C000:18AF add di, bp C000:18B1 dec bx C000:18B2 jnz short loc_C18A9 C000:18B4 retn C000:18B4 sub_C1805 endp C000:18B4 C000:18B5 ; --------------------------------------------------------------------------- C000:18B5 ; START OF FUNCTION CHUNK FOR sub_C191B C000:18B5 C000:18B5 loc_C18B5: ; CODE XREF: sub_C191B+7j C000:18B5 ; sub_C191B+11j ... C000:18B5 mov bp, ds:44Ah C000:18B9 sub dh, ch C000:18BB sub dl, cl C000:18BD mov al, ch C000:18BF push dx C000:18C0 mul byte ptr ds:485h C000:18C4 mul bp C000:18C6 add al, cl C000:18C8 adc ah, 0 C000:18CB adc dx, 0 C000:18CE call sub_C67DB C000:18D1 mov di, ax C000:18D3 pop cx C000:18D4 mov al, ch C000:18D6 sub ch, ch C000:18D8 inc cx C000:18D9 inc al C000:18DB mul byte ptr ds:485h C000:18DF push ax C000:18E0 mov dx, 3CEh C000:18E3 mov al, 5 C000:18E5 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:18E8 and ah, 0FCh C000:18EB or ah, 2 C000:18EE out dx, ax C000:18EF pop ax C000:18F0 mov dx, ax C000:18F2 mov al, bh C000:18F4 mov bx, cx C000:18F6 sub bp, cx C000:18F8 C000:18F8 loc_C18F8: ; CODE XREF: sub_C191B-Fj C000:18F8 mov cx, bx C000:18FA C000:18FA loc_C18FA: ; CODE XREF: sub_C191B:loc_C1902j C000:18FA stosb C000:18FB test di, di C000:18FD jnz short loc_C1902 C000:18FF call sub_C680F C000:1902 C000:1902 loc_C1902: ; CODE XREF: sub_C191B-1Ej C000:1902 loop loc_C18FA C000:1904 add di, bp C000:1906 jnb short loc_C190B C000:1908 call sub_C680F C000:190B C000:190B loc_C190B: ; CODE XREF: sub_C191B-15j C000:190B dec dx C000:190C jnz short loc_C18F8 C000:190E mov dx, 3CEh C000:1911 mov al, 5 C000:1913 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:1916 and ah, 0FCh C000:1919 out dx, ax C000:191A retn C000:191A ; END OF FUNCTION CHUNK FOR sub_C191B C000:191B C000:191B ; =============== S U B R O U T I N E ======================================= C000:191B C000:191B C000:191B sub_C191B proc near ; CODE XREF: C000:16ECp C000:191B ; DATA XREF: C000:16C6o ... C000:191B C000:191B ; FUNCTION CHUNK AT C000:18B5 SIZE 00000066 BYTES C000:191B C000:191B mov di, 0A000h C000:191E mov es, di C000:1920 assume es:nothing C000:1920 test al, al C000:1922 jz short loc_C18B5 C000:1924 mov bl, al C000:1926 mov al, dh C000:1928 sub al, ch C000:192A cmp bl, al C000:192C ja short loc_C18B5 C000:192E push bx C000:192F sub dh, ch C000:1931 sub dl, cl C000:1933 mov al, ch C000:1935 mov bh, cl C000:1937 mov cx, dx C000:1939 mov bp, ds:44Ah C000:193D mov si, ds:485h C000:1941 sub ah, ah C000:1943 mul bp C000:1945 mul si C000:1947 add al, bh C000:1949 adc ah, 0 C000:194C adc dx, 0 C000:194F call sub_C67DB C000:1952 mov di, ax C000:1954 mov al, ch C000:1956 sub ah, ah C000:1958 sub al, bl C000:195A inc ax C000:195B mul si C000:195D mov dx, ax C000:195F sub ch, ch C000:1961 inc cx C000:1962 pop ax C000:1963 push ax C000:1964 push dx C000:1965 sub ah, ah C000:1967 mul si C000:1969 mov bx, ax C000:196B mul bp C000:196D mov si, di C000:196F add si, ax C000:1971 pushf C000:1972 call sub_C684F C000:1975 popf C000:1976 adc dx, 0 C000:1979 call sub_C67F5 C000:197C pop dx C000:197D pop ax C000:197E mov al, ah C000:1980 push es C000:1981 pop ds C000:1982 assume ds:nothing C000:1982 push ax C000:1983 push dx C000:1984 mov dx, 3CEh C000:1987 mov al, 5 C000:1989 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:198C and ah, 0FCh C000:198F or ah, 1 C000:1992 out dx, ax C000:1993 pop dx C000:1994 sub bp, cx C000:1996 C000:1996 loc_C1996: ; CODE XREF: sub_C191B+9Dj C000:1996 push cx C000:1997 C000:1997 loc_C1997: ; CODE XREF: sub_C191B:loc_C19A6j C000:1997 movsb C000:1998 test di, di C000:199A jnz short loc_C199F C000:199C call sub_C680F C000:199F C000:199F loc_C199F: ; CODE XREF: sub_C191B+7Fj C000:199F test si, si C000:19A1 jnz short loc_C19A6 C000:19A3 call sub_C681F C000:19A6 C000:19A6 loc_C19A6: ; CODE XREF: sub_C191B+86j C000:19A6 loop loc_C1997 C000:19A8 pop cx C000:19A9 add di, bp C000:19AB jnb short loc_C19B0 C000:19AD call sub_C680F C000:19B0 C000:19B0 loc_C19B0: ; CODE XREF: sub_C191B+90j C000:19B0 add si, bp C000:19B2 jnb short loc_C19B7 C000:19B4 call sub_C681F C000:19B7 C000:19B7 loc_C19B7: ; CODE XREF: sub_C191B+97j C000:19B7 dec dx C000:19B8 jnz short loc_C1996 C000:19BA mov dx, 3CEh C000:19BD mov al, 5 C000:19BF call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:19C2 and ah, 0FCh C000:19C5 or ah, 2 C000:19C8 out dx, ax C000:19C9 pop ax C000:19CA C000:19CA loc_C19CA: ; CODE XREF: sub_C191B+C3j C000:19CA push cx C000:19CB C000:19CB loc_C19CB: ; CODE XREF: sub_C191B:loc_C19D3j C000:19CB stosb C000:19CC test di, di C000:19CE jnz short loc_C19D3 C000:19D0 call sub_C680F C000:19D3 C000:19D3 loc_C19D3: ; CODE XREF: sub_C191B+B3j C000:19D3 loop loc_C19CB C000:19D5 pop cx C000:19D6 add di, bp C000:19D8 jnb short loc_C19DD C000:19DA call sub_C680F C000:19DD C000:19DD loc_C19DD: ; CODE XREF: sub_C191B+BDj C000:19DD dec bx C000:19DE jnz short loc_C19CA C000:19E0 mov dx, 3CEh C000:19E3 mov al, 5 C000:19E5 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:19E8 and ah, 0FCh C000:19EB out dx, ax C000:19EC retn C000:19EC sub_C191B endp C000:19EC C000:19ED ; --------------------------------------------------------------------------- C000:19ED ; START OF FUNCTION CHUNK FOR sub_C1A75 C000:19ED C000:19ED loc_C19ED: ; CODE XREF: sub_C1A75-12j C000:19ED inc byte ptr [bp+7] C000:19F0 mov dl, [bp+7] C000:19F3 call sub_C67E2 C000:19F6 jmp short loc_C1A65 C000:19F8 ; --------------------------------------------------------------------------- C000:19F8 C000:19F8 loc_C19F8: ; CODE XREF: sub_C1A75-Bj C000:19F8 inc byte ptr [bp+7] C000:19FB mov dl, [bp+7] C000:19FE call sub_C67E2 C000:1A01 jmp short loc_C1A6C C000:1A03 ; --------------------------------------------------------------------------- C000:1A03 C000:1A03 loc_C1A03: ; CODE XREF: sub_C1A75+27j C000:1A03 ; sub_C1A75+34j ... C000:1A03 sub dh, ch C000:1A05 sub dl, cl C000:1A07 mov al, ch C000:1A09 push bx C000:1A0A push dx C000:1A0B mov bl, dl C000:1A0D sub bh, bh C000:1A0F inc bx C000:1A10 shl bx, 3 C000:1A13 mov [bp+4], bx C000:1A16 mul byte ptr ds:485h C000:1A1A mul word ptr [bp+2] C000:1A1D sub ch, ch C000:1A1F shl cx, 3 C000:1A22 mov di, cx C000:1A24 cmp byte ptr [bp+6], 10h C000:1A28 jb short loc_C1A3A C000:1A2A add cx, di C000:1A2C add [bp+4], bx C000:1A2F cmp byte ptr [bp+6], 18h C000:1A33 jnz short loc_C1A3A C000:1A35 add cx, di C000:1A37 add [bp+4], bx C000:1A3A C000:1A3A loc_C1A3A: ; CODE XREF: sub_C1A75-4Dj C000:1A3A ; sub_C1A75-42j C000:1A3A add ax, cx C000:1A3C mov di, ax C000:1A3E adc dx, 0 C000:1A41 call sub_C67DB C000:1A44 mov [bp+7], dl C000:1A47 pop cx C000:1A48 mov al, ch C000:1A4A inc al C000:1A4C mul byte ptr ds:485h C000:1A50 mov dx, ax C000:1A52 pop ax C000:1A53 mov al, ah C000:1A55 mov cx, [bp+4] C000:1A58 sub [bp+2], cx C000:1A5B mov bx, dx C000:1A5D shr cx, 1 C000:1A5F C000:1A5F loc_C1A5F: ; CODE XREF: sub_C1A75-7j C000:1A5F push cx C000:1A60 C000:1A60 loc_C1A60: ; CODE XREF: sub_C1A75:loc_C1A65j C000:1A60 stosw C000:1A61 test di, di C000:1A63 jz short loc_C19ED C000:1A65 C000:1A65 loc_C1A65: ; CODE XREF: sub_C1A75-7Fj C000:1A65 loop loc_C1A60 C000:1A67 add di, [bp+2] C000:1A6A jb short loc_C19F8 C000:1A6C C000:1A6C loc_C1A6C: ; CODE XREF: sub_C1A75-74j C000:1A6C pop cx C000:1A6D dec bx C000:1A6E jnz short loc_C1A5F C000:1A70 add sp, 0Ch C000:1A73 pop bp C000:1A74 retn C000:1A74 ; END OF FUNCTION CHUNK FOR sub_C1A75 C000:1A75 C000:1A75 ; =============== S U B R O U T I N E ======================================= C000:1A75 C000:1A75 C000:1A75 sub_C1A75 proc near ; CODE XREF: C000:16ECp C000:1A75 ; DATA XREF: C000:16CCo ... C000:1A75 C000:1A75 ; FUNCTION CHUNK AT C000:19ED SIZE 00000088 BYTES C000:1A75 C000:1A75 push bp C000:1A76 sub sp, 0Ch C000:1A79 mov bp, sp C000:1A7B push bx C000:1A7C push ax C000:1A7D mov al, ds:449h C000:1A80 call sub_C2C61 C000:1A83 mov al, es:[bx+7] C000:1A87 mov [bp+6], al C000:1A8A mov ax, es:[bx+0Ch] C000:1A8E mov [bp+2], ax C000:1A91 pop ax C000:1A92 pop bx C000:1A93 mov di, 0A000h C000:1A96 mov es, di C000:1A98 test al, al C000:1A9A jnz short loc_C1A9F C000:1A9C jmp loc_C1A03 C000:1A9F ; --------------------------------------------------------------------------- C000:1A9F C000:1A9F loc_C1A9F: ; CODE XREF: sub_C1A75+25j C000:1A9F mov bl, al C000:1AA1 mov al, dh C000:1AA3 sub al, ch C000:1AA5 cmp bl, al C000:1AA7 jnz short loc_C1AAC C000:1AA9 jmp loc_C1A03 C000:1AAC ; --------------------------------------------------------------------------- C000:1AAC C000:1AAC loc_C1AAC: ; CODE XREF: sub_C1A75+32j C000:1AAC push bx C000:1AAD sub dh, ch C000:1AAF sub dl, cl C000:1AB1 mov al, ch C000:1AB3 mov bl, cl C000:1AB5 mov cx, dx C000:1AB7 push cx C000:1AB8 sub ch, ch C000:1ABA inc cx C000:1ABB shl cx, 3 C000:1ABE mov [bp+4], cx C000:1AC1 mov si, ds:485h C000:1AC5 sub ah, ah C000:1AC7 mul si C000:1AC9 mul word ptr [bp+2] C000:1ACC sub bh, bh C000:1ACE shl bx, 3 C000:1AD1 mov di, bx C000:1AD3 cmp byte ptr [bp+6], 10h C000:1AD7 jb short loc_C1AE9 C000:1AD9 add bx, di C000:1ADB add [bp+4], cx C000:1ADE cmp byte ptr [bp+6], 18h C000:1AE2 jnz short loc_C1AE9 C000:1AE4 add bx, di C000:1AE6 add [bp+4], cx C000:1AE9 C000:1AE9 loc_C1AE9: ; CODE XREF: sub_C1A75+62j C000:1AE9 ; sub_C1A75+6Dj C000:1AE9 add ax, bx C000:1AEB mov di, ax C000:1AED adc dx, 0 C000:1AF0 call sub_C67DB C000:1AF3 mov [bp+7], dl C000:1AF6 mov [bp+8], dl C000:1AF9 pop cx C000:1AFA pop bx C000:1AFB push bx C000:1AFC mov al, ch C000:1AFE sub ah, ah C000:1B00 sub al, bl C000:1B02 inc ax C000:1B03 mul si C000:1B05 mov dx, ax C000:1B07 pop ax C000:1B08 push ax C000:1B09 push dx C000:1B0A sub ah, ah C000:1B0C mul si C000:1B0E mov bx, ax C000:1B10 mul word ptr [bp+2] C000:1B13 mov si, di C000:1B15 add si, ax C000:1B17 adc dx, 0 C000:1B1A add dl, [bp+7] C000:1B1D call sub_C67F5 C000:1B20 mov [bp+8], dl C000:1B23 pop dx C000:1B24 pop ax C000:1B25 mov al, ah C000:1B27 push es C000:1B28 pop ds C000:1B29 mov cx, [bp+4] C000:1B2C sub [bp+2], cx C000:1B2F push bx C000:1B30 mov bx, dx C000:1B32 shr cx, 1 C000:1B34 C000:1B34 loc_C1B34: ; CODE XREF: sub_C1A75+D7j C000:1B34 push cx C000:1B35 C000:1B35 loc_C1B35: ; CODE XREF: sub_C1A75:loc_C1B3Ej C000:1B35 movsw C000:1B36 test di, di C000:1B38 jz short loc_C1B65 C000:1B3A C000:1B3A loc_C1B3A: ; CODE XREF: sub_C1A75+F9j C000:1B3A test si, si C000:1B3C jz short loc_C1B70 C000:1B3E C000:1B3E loc_C1B3E: ; CODE XREF: sub_C1A75+104j C000:1B3E loop loc_C1B35 C000:1B40 add di, [bp+2] C000:1B43 jb short loc_C1B7B C000:1B45 C000:1B45 loc_C1B45: ; CODE XREF: sub_C1A75+10Fj C000:1B45 add si, [bp+2] C000:1B48 jb short loc_C1B86 C000:1B4A C000:1B4A loc_C1B4A: ; CODE XREF: sub_C1A75+11Aj C000:1B4A pop cx C000:1B4B dec bx C000:1B4C jnz short loc_C1B34 C000:1B4E pop bx C000:1B4F C000:1B4F loc_C1B4F: ; CODE XREF: sub_C1A75+E9j C000:1B4F push cx C000:1B50 C000:1B50 loc_C1B50: ; CODE XREF: sub_C1A75:loc_C1B55j C000:1B50 stosw C000:1B51 test di, di C000:1B53 jz short loc_C1B91 C000:1B55 C000:1B55 loc_C1B55: ; CODE XREF: sub_C1A75+125j C000:1B55 loop loc_C1B50 C000:1B57 pop cx C000:1B58 add di, [bp+2] C000:1B5B jb short loc_C1B9C C000:1B5D C000:1B5D loc_C1B5D: ; CODE XREF: sub_C1A75+130j C000:1B5D dec bx C000:1B5E jnz short loc_C1B4F C000:1B60 add sp, 0Ch C000:1B63 pop bp C000:1B64 retn C000:1B65 ; --------------------------------------------------------------------------- C000:1B65 C000:1B65 loc_C1B65: ; CODE XREF: sub_C1A75+C3j C000:1B65 inc byte ptr [bp+7] C000:1B68 mov dl, [bp+7] C000:1B6B call sub_C67E2 C000:1B6E jmp short loc_C1B3A C000:1B70 ; --------------------------------------------------------------------------- C000:1B70 C000:1B70 loc_C1B70: ; CODE XREF: sub_C1A75+C7j C000:1B70 inc byte ptr [bp+8] C000:1B73 mov dl, [bp+8] C000:1B76 call sub_C67F5 C000:1B79 jmp short loc_C1B3E C000:1B7B ; --------------------------------------------------------------------------- C000:1B7B C000:1B7B loc_C1B7B: ; CODE XREF: sub_C1A75+CEj C000:1B7B inc byte ptr [bp+7] C000:1B7E mov dl, [bp+7] C000:1B81 call sub_C67E2 C000:1B84 jmp short loc_C1B45 C000:1B86 ; --------------------------------------------------------------------------- C000:1B86 C000:1B86 loc_C1B86: ; CODE XREF: sub_C1A75+D3j C000:1B86 inc byte ptr [bp+8] C000:1B89 mov dl, [bp+8] C000:1B8C call sub_C67F5 C000:1B8F jmp short loc_C1B4A C000:1B91 ; --------------------------------------------------------------------------- C000:1B91 C000:1B91 loc_C1B91: ; CODE XREF: sub_C1A75+DEj C000:1B91 inc byte ptr [bp+7] C000:1B94 mov dl, [bp+7] C000:1B97 call sub_C67E2 C000:1B9A jmp short loc_C1B55 C000:1B9C ; --------------------------------------------------------------------------- C000:1B9C C000:1B9C loc_C1B9C: ; CODE XREF: sub_C1A75+E6j C000:1B9C inc byte ptr [bp+7] C000:1B9F mov dl, [bp+7] C000:1BA2 call sub_C67E2 C000:1BA5 jmp short loc_C1B5D C000:1BA5 sub_C1A75 endp C000:1BA5 C000:1BA5 ; --------------------------------------------------------------------------- C000:1BA7 off_C1BA7 dw offset sub_C1BE7 ; DATA XREF: C000:1BD3r C000:1BA9 dw offset sub_C1BDD C000:1BAB dw offset sub_C1C3C C000:1BAD dw offset sub_C1CAD C000:1BAF dw offset sub_C1CAD C000:1BB1 dw offset sub_C1CAD C000:1BB3 dw offset sub_C1D87 C000:1BB5 dw offset sub_C1D87 C000:1BB7 dw offset sub_C1D87 C000:1BB9 ; --------------------------------------------------------------------------- C000:1BB9 C000:1BB9 VGA_ROLL_DOWN: ; CODE XREF: C000:00F7j C000:1BB9 ; DATA XREF: C000:00B0o C000:1BB9 pusha C000:1BBA push es C000:1BBB push ax C000:1BBC push bx C000:1BBD push es C000:1BBE mov al, ds:449h C000:1BC1 call sub_C2C61 C000:1BC4 mov si, es:[bx+4] C000:1BC8 pop es C000:1BC9 assume es:nothing C000:1BC9 pop bx C000:1BCA pop ax C000:1BCB jb short loc_C1BD8 C000:1BCD and si, 0FFh C000:1BD1 shl si, 1 C000:1BD3 call cs:off_C1BA7[si] C000:1BD8 C000:1BD8 loc_C1BD8: ; CODE XREF: C000:1BCBj C000:1BD8 pop es C000:1BD9 popa C000:1BDA pop ds C000:1BDB assume ds:nothing C000:1BDB pop si C000:1BDC iret C000:1BDD C000:1BDD ; =============== S U B R O U T I N E ======================================= C000:1BDD C000:1BDD C000:1BDD sub_C1BDD proc near ; CODE XREF: C000:1BD3p C000:1BDD ; DATA XREF: C000:1BA9o C000:1BDD mov di, 0B000h C000:1BE0 mov es, di C000:1BE2 assume es:nothing C000:1BE2 jmp short loc_C1BEC C000:1BE2 sub_C1BDD endp C000:1BE2 C000:1BE4 ; --------------------------------------------------------------------------- C000:1BE4 ; START OF FUNCTION CHUNK FOR sub_C1BE7 C000:1BE4 C000:1BE4 loc_C1BE4: ; CODE XREF: sub_C1BE7+7j C000:1BE4 ; sub_C1BE7+11j C000:1BE4 jmp loc_C16F6 C000:1BE4 ; END OF FUNCTION CHUNK FOR sub_C1BE7 C000:1BE7 C000:1BE7 ; =============== S U B R O U T I N E ======================================= C000:1BE7 C000:1BE7 C000:1BE7 sub_C1BE7 proc near ; CODE XREF: C000:1BD3p C000:1BE7 ; DATA XREF: C000:off_C1BA7o C000:1BE7 C000:1BE7 ; FUNCTION CHUNK AT C000:1BE4 SIZE 00000003 BYTES C000:1BE7 C000:1BE7 mov di, 0B800h C000:1BEA mov es, di C000:1BEC assume es:nothing C000:1BEC C000:1BEC loc_C1BEC: ; CODE XREF: sub_C1BDD+5j C000:1BEC test al, al C000:1BEE jz short loc_C1BE4 C000:1BF0 mov bl, al C000:1BF2 mov al, dh C000:1BF4 sub al, ch C000:1BF6 cmp bl, al C000:1BF8 jnb short loc_C1BE4 C000:1BFA mov bp, ds:44Ah C000:1BFE mov al, 20h ; ' ' C000:1C00 mov ah, bh C000:1C02 push ax C000:1C03 mov ax, bp C000:1C05 mul dh C000:1C07 add al, cl C000:1C09 adc ah, 0 C000:1C0C shl ax, 1 C000:1C0E add ax, ds:44Eh C000:1C12 mov di, ax C000:1C14 shl bp, 1 C000:1C16 sub bh, bh C000:1C18 push bx C000:1C19 mov si, di C000:1C1B C000:1C1B loc_C1C1B: ; CODE XREF: sub_C1BE7+37j C000:1C1B sub si, bp C000:1C1D dec bx C000:1C1E jnz short loc_C1C1B C000:1C20 pop bx C000:1C21 push es C000:1C22 pop ds C000:1C23 assume ds:nothing C000:1C23 sub dl, cl C000:1C25 sub dh, ch C000:1C27 mov cl, dl C000:1C29 sub ch, ch C000:1C2B inc cx C000:1C2C mov dl, dh C000:1C2E sub dh, dh C000:1C30 inc dx C000:1C31 sub dx, bx C000:1C33 pop ax C000:1C34 neg bp C000:1C36 jmp loc_C1782 C000:1C36 sub_C1BE7 endp C000:1C36 C000:1C39 ; --------------------------------------------------------------------------- C000:1C39 ; START OF FUNCTION CHUNK FOR sub_C1C3C C000:1C39 C000:1C39 loc_C1C39: ; CODE XREF: sub_C1C3C+7j C000:1C39 ; sub_C1C3C+11j C000:1C39 jmp loc_C179F C000:1C39 ; END OF FUNCTION CHUNK FOR sub_C1C3C C000:1C3C C000:1C3C ; =============== S U B R O U T I N E ======================================= C000:1C3C C000:1C3C C000:1C3C sub_C1C3C proc near ; CODE XREF: C000:1BD3p C000:1C3C ; DATA XREF: C000:1BABo C000:1C3C C000:1C3C ; FUNCTION CHUNK AT C000:1C39 SIZE 00000003 BYTES C000:1C3C C000:1C3C mov di, 0B800h C000:1C3F mov es, di C000:1C41 test al, al C000:1C43 jz short loc_C1C39 C000:1C45 mov bl, al C000:1C47 mov al, dh C000:1C49 sub al, ch C000:1C4B cmp bl, al C000:1C4D ja short loc_C1C39 C000:1C4F push bx C000:1C50 mov al, dh C000:1C52 sub dh, ch C000:1C54 sub dl, cl C000:1C56 mov bh, cl C000:1C58 mov cx, dx C000:1C5A mov bp, ds:44Ah C000:1C5E mov si, ds:485h C000:1C62 shr si, 1 C000:1C64 sub ah, ah C000:1C66 inc ax C000:1C67 mul bp C000:1C69 mul si C000:1C6B add al, bh C000:1C6D adc ah, 0 C000:1C70 mov di, ax C000:1C72 sub di, bp C000:1C74 mov al, ch C000:1C76 sub ah, ah C000:1C78 sub al, bl C000:1C7A inc ax C000:1C7B mul si C000:1C7D mov dx, ax C000:1C7F sub ch, ch C000:1C81 inc cx C000:1C82 cmp byte ptr ds:449h, 6 C000:1C87 jz short loc_C1C8F C000:1C89 shl di, 1 C000:1C8B shl cx, 1 C000:1C8D shl bp, 1 C000:1C8F C000:1C8F loc_C1C8F: ; CODE XREF: sub_C1C3C+4Bj C000:1C8F pop ax C000:1C90 push ax C000:1C91 push dx C000:1C92 sub ah, ah C000:1C94 mul si C000:1C96 mov bx, ax C000:1C98 mul bp C000:1C9A mov si, di C000:1C9C sub si, ax C000:1C9E pop dx C000:1C9F pop ax C000:1CA0 mov al, ah C000:1CA2 push es C000:1CA3 pop ds C000:1CA4 neg bp C000:1CA6 jmp loc_C186A C000:1CA6 sub_C1C3C endp C000:1CA6 C000:1CA6 ; --------------------------------------------------------------------------- C000:1CA9 db 0C3h ; + C000:1CAA ; --------------------------------------------------------------------------- C000:1CAA ; START OF FUNCTION CHUNK FOR sub_C1CAD C000:1CAA C000:1CAA loc_C1CAA: ; CODE XREF: sub_C1CAD+7j C000:1CAA ; sub_C1CAD+11j C000:1CAA jmp loc_C18B5 C000:1CAA ; END OF FUNCTION CHUNK FOR sub_C1CAD C000:1CAD C000:1CAD ; =============== S U B R O U T I N E ======================================= C000:1CAD C000:1CAD C000:1CAD sub_C1CAD proc near ; CODE XREF: C000:1BD3p C000:1CAD ; DATA XREF: C000:1BADo ... C000:1CAD C000:1CAD ; FUNCTION CHUNK AT C000:1CAA SIZE 00000003 BYTES C000:1CAD C000:1CAD mov di, 0A000h C000:1CB0 mov es, di C000:1CB2 assume es:nothing C000:1CB2 test al, al C000:1CB4 jz short loc_C1CAA C000:1CB6 mov bl, al C000:1CB8 mov al, dh C000:1CBA sub al, ch C000:1CBC cmp bl, al C000:1CBE ja short loc_C1CAA C000:1CC0 push bx C000:1CC1 mov al, dh C000:1CC3 sub dh, ch C000:1CC5 sub dl, cl C000:1CC7 mov bh, cl C000:1CC9 mov cx, dx C000:1CCB mov bp, ds:44Ah C000:1CCF mov si, ds:485h C000:1CD3 sub ah, ah C000:1CD5 inc ax C000:1CD6 mul bp C000:1CD8 mul si C000:1CDA add al, bh C000:1CDC adc ah, 0 C000:1CDF adc dx, 0 C000:1CE2 call sub_C67DB C000:1CE5 mov di, ax C000:1CE7 sub di, bp C000:1CE9 mov al, ch C000:1CEB sub ah, ah C000:1CED sub al, bl C000:1CEF inc ax C000:1CF0 mul si C000:1CF2 mov dx, ax C000:1CF4 sub ch, ch C000:1CF6 inc cx C000:1CF7 pop ax C000:1CF8 push ax C000:1CF9 push dx C000:1CFA sub ah, ah C000:1CFC mul si C000:1CFE mov bx, ax C000:1D00 mul bp C000:1D02 mov si, di C000:1D04 sub si, ax C000:1D06 pushf C000:1D07 call sub_C684F C000:1D0A popf C000:1D0B sbb dx, 0 C000:1D0E call sub_C67F5 C000:1D11 pop dx C000:1D12 pop ax C000:1D13 mov al, ah C000:1D15 push es C000:1D16 pop ds C000:1D17 assume ds:nothing C000:1D17 neg bp C000:1D19 push ax C000:1D1A push dx C000:1D1B mov dx, 3CEh C000:1D1E mov al, 5 C000:1D20 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:1D23 and ah, 0FCh C000:1D26 or ah, 1 C000:1D29 out dx, ax C000:1D2A pop dx C000:1D2B sub bp, cx C000:1D2D C000:1D2D loc_C1D2D: ; CODE XREF: sub_C1CAD+A2j C000:1D2D push cx C000:1D2E C000:1D2E loc_C1D2E: ; CODE XREF: sub_C1CAD:loc_C1D3Dj C000:1D2E movsb C000:1D2F test di, di C000:1D31 jnz short loc_C1D36 C000:1D33 call sub_C680F C000:1D36 C000:1D36 loc_C1D36: ; CODE XREF: sub_C1CAD+84j C000:1D36 test si, si C000:1D38 jnz short loc_C1D3D C000:1D3A call sub_C681F C000:1D3D C000:1D3D loc_C1D3D: ; CODE XREF: sub_C1CAD+8Bj C000:1D3D loop loc_C1D2E C000:1D3F pop cx C000:1D40 add di, bp C000:1D42 jb short loc_C1D47 C000:1D44 call sub_C682F C000:1D47 C000:1D47 loc_C1D47: ; CODE XREF: sub_C1CAD+95j C000:1D47 add si, bp C000:1D49 jb short loc_C1D4E C000:1D4B call sub_C683F C000:1D4E C000:1D4E loc_C1D4E: ; CODE XREF: sub_C1CAD+9Cj C000:1D4E dec dx C000:1D4F jnz short loc_C1D2D C000:1D51 mov dx, 3CEh C000:1D54 mov al, 5 C000:1D56 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:1D59 and ah, 0FCh C000:1D5C or ah, 2 C000:1D5F out dx, ax C000:1D60 pop ax C000:1D61 C000:1D61 loc_C1D61: ; CODE XREF: sub_C1CAD+C8j C000:1D61 push cx C000:1D62 C000:1D62 loc_C1D62: ; CODE XREF: sub_C1CAD:loc_C1D6Aj C000:1D62 stosb C000:1D63 test di, di C000:1D65 jnz short loc_C1D6A C000:1D67 call sub_C680F C000:1D6A C000:1D6A loc_C1D6A: ; CODE XREF: sub_C1CAD+B8j C000:1D6A loop loc_C1D62 C000:1D6C pop cx C000:1D6D add di, bp C000:1D6F jb short loc_C1D74 C000:1D71 call sub_C680F C000:1D74 C000:1D74 loc_C1D74: ; CODE XREF: sub_C1CAD+C2j C000:1D74 dec bx C000:1D75 jnz short loc_C1D61 C000:1D77 mov dx, 3CEh C000:1D7A mov al, 5 C000:1D7C call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:1D7F and ah, 0FCh C000:1D82 out dx, ax C000:1D83 retn C000:1D83 sub_C1CAD endp C000:1D83 C000:1D84 ; --------------------------------------------------------------------------- C000:1D84 ; START OF FUNCTION CHUNK FOR sub_C1D87 C000:1D84 C000:1D84 loc_C1D84: ; CODE XREF: sub_C1D87+25j C000:1D84 ; sub_C1D87+2Fj C000:1D84 jmp loc_C1A03 C000:1D84 ; END OF FUNCTION CHUNK FOR sub_C1D87 C000:1D87 C000:1D87 ; =============== S U B R O U T I N E ======================================= C000:1D87 C000:1D87 C000:1D87 sub_C1D87 proc near ; CODE XREF: C000:1BD3p C000:1D87 ; DATA XREF: C000:1BB3o ... C000:1D87 C000:1D87 ; FUNCTION CHUNK AT C000:1D84 SIZE 00000003 BYTES C000:1D87 C000:1D87 push bp C000:1D88 sub sp, 0Ch C000:1D8B mov bp, sp C000:1D8D push bx C000:1D8E push ax C000:1D8F mov al, ds:449h C000:1D92 call sub_C2C61 C000:1D95 mov al, es:[bx+7] C000:1D99 mov [bp+6], al C000:1D9C mov ax, es:[bx+0Ch] C000:1DA0 mov [bp+2], ax C000:1DA3 pop ax C000:1DA4 pop bx C000:1DA5 mov di, 0A000h C000:1DA8 mov es, di C000:1DAA test al, al C000:1DAC jz short loc_C1D84 C000:1DAE mov bl, al C000:1DB0 mov al, dh C000:1DB2 sub al, ch C000:1DB4 cmp bl, al C000:1DB6 ja short loc_C1D84 C000:1DB8 push bx C000:1DB9 mov al, dh C000:1DBB sub dh, ch C000:1DBD sub dl, cl C000:1DBF mov bl, cl C000:1DC1 mov cx, dx C000:1DC3 push cx C000:1DC4 sub ch, ch C000:1DC6 inc cx C000:1DC7 shl cx, 3 C000:1DCA mov [bp+4], cx C000:1DCD mov si, ds:485h C000:1DD1 sub ah, ah C000:1DD3 inc ax C000:1DD4 mul si C000:1DD6 mul word ptr [bp+2] C000:1DD9 sub bh, bh C000:1DDB shl bx, 3 C000:1DDE mov di, bx C000:1DE0 cmp byte ptr [bp+6], 10h C000:1DE4 jb short loc_C1DF6 C000:1DE6 add bx, di C000:1DE8 add [bp+4], cx C000:1DEB cmp byte ptr [bp+6], 18h C000:1DEF jnz short loc_C1DF6 C000:1DF1 add bx, di C000:1DF3 add [bp+4], cx C000:1DF6 C000:1DF6 loc_C1DF6: ; CODE XREF: sub_C1D87+5Dj C000:1DF6 ; sub_C1D87+68j C000:1DF6 add ax, bx C000:1DF8 mov di, ax C000:1DFA adc dx, 0 C000:1DFD sub di, [bp+2] C000:1E00 sbb dx, 0 C000:1E03 call sub_C67DB C000:1E06 mov [bp+7], dl C000:1E09 mov [bp+8], dl C000:1E0C pop cx C000:1E0D pop bx C000:1E0E push bx C000:1E0F mov al, ch C000:1E11 sub ah, ah C000:1E13 sub al, bl C000:1E15 inc ax C000:1E16 mul si C000:1E18 mov dx, ax C000:1E1A sub ch, ch C000:1E1C shl cx, 3 C000:1E1F pop ax C000:1E20 push ax C000:1E21 push dx C000:1E22 sub ah, ah C000:1E24 mul si C000:1E26 mov bx, ax C000:1E28 mul word ptr [bp+2] C000:1E2B mov si, di C000:1E2D sub si, ax C000:1E2F adc dx, 0 C000:1E32 jb short loc_C1E41 C000:1E34 mov dh, [bp+7] C000:1E37 sub dh, dl C000:1E39 xchg dh, dl C000:1E3B call sub_C67F5 C000:1E3E mov [bp+8], dl C000:1E41 C000:1E41 loc_C1E41: ; CODE XREF: sub_C1D87+ABj C000:1E41 pop dx C000:1E42 pop ax C000:1E43 mov al, ah C000:1E45 mov cx, [bp+4] C000:1E48 add [bp+2], cx C000:1E4B neg word ptr [bp+2] C000:1E4E push es C000:1E4F pop ds C000:1E50 shr cx, 1 C000:1E52 C000:1E52 loc_C1E52: ; CODE XREF: sub_C1D87+E3j C000:1E52 push cx C000:1E53 C000:1E53 loc_C1E53: ; CODE XREF: sub_C1D87:loc_C1E5Cj C000:1E53 movsw C000:1E54 test di, di C000:1E56 jz short loc_C1E82 C000:1E58 C000:1E58 loc_C1E58: ; CODE XREF: sub_C1D87+FEj C000:1E58 test si, si C000:1E5A jz short loc_C1E87 C000:1E5C C000:1E5C loc_C1E5C: ; CODE XREF: sub_C1D87+103j C000:1E5C loop loc_C1E53 C000:1E5E pop cx C000:1E5F add di, [bp+2] C000:1E62 jnb short loc_C1E8C C000:1E64 C000:1E64 loc_C1E64: ; CODE XREF: sub_C1D87+108j C000:1E64 add si, [bp+2] C000:1E67 jnb short loc_C1E91 C000:1E69 C000:1E69 loc_C1E69: ; CODE XREF: sub_C1D87+10Dj C000:1E69 dec dx C000:1E6A jnz short loc_C1E52 C000:1E6C C000:1E6C loc_C1E6C: ; CODE XREF: sub_C1D87+F4j C000:1E6C push cx C000:1E6D C000:1E6D loc_C1E6D: ; CODE XREF: sub_C1D87:loc_C1E72j C000:1E6D stosw C000:1E6E test di, di C000:1E70 jz short loc_C1E96 C000:1E72 C000:1E72 loc_C1E72: ; CODE XREF: sub_C1D87+112j C000:1E72 loop loc_C1E6D C000:1E74 pop cx C000:1E75 add di, [bp+2] C000:1E78 jnb short loc_C1E9B C000:1E7A C000:1E7A loc_C1E7A: ; CODE XREF: sub_C1D87+117j C000:1E7A dec bx C000:1E7B jnz short loc_C1E6C C000:1E7D add sp, 0Ch C000:1E80 pop bp C000:1E81 retn C000:1E82 ; --------------------------------------------------------------------------- C000:1E82 C000:1E82 loc_C1E82: ; CODE XREF: sub_C1D87+CFj C000:1E82 call sub_C680F C000:1E85 jmp short loc_C1E58 C000:1E87 ; --------------------------------------------------------------------------- C000:1E87 C000:1E87 loc_C1E87: ; CODE XREF: sub_C1D87+D3j C000:1E87 call sub_C681F C000:1E8A jmp short loc_C1E5C C000:1E8C ; --------------------------------------------------------------------------- C000:1E8C C000:1E8C loc_C1E8C: ; CODE XREF: sub_C1D87+DBj C000:1E8C call sub_C682F C000:1E8F jmp short loc_C1E64 C000:1E91 ; --------------------------------------------------------------------------- C000:1E91 C000:1E91 loc_C1E91: ; CODE XREF: sub_C1D87+E0j C000:1E91 call sub_C683F C000:1E94 jmp short loc_C1E69 C000:1E96 ; --------------------------------------------------------------------------- C000:1E96 C000:1E96 loc_C1E96: ; CODE XREF: sub_C1D87+E9j C000:1E96 call sub_C680F C000:1E99 jmp short loc_C1E72 C000:1E9B ; --------------------------------------------------------------------------- C000:1E9B C000:1E9B loc_C1E9B: ; CODE XREF: sub_C1D87+F1j C000:1E9B call sub_C682F C000:1E9E jmp short loc_C1E7A C000:1E9E sub_C1D87 endp C000:1E9E C000:1EA0 C000:1EA0 ; =============== S U B R O U T I N E ======================================= C000:1EA0 C000:1EA0 C000:1EA0 sub_C1EA0 proc near ; CODE XREF: sub_C0528+Bp C000:1EA0 ; sub_C0528:loc_C0555p C000:1EA0 push cs C000:1EA1 pop es C000:1EA2 assume es:nothing C000:1EA2 mov di, 3A00h C000:1EA5 mov bh, 8 C000:1EA7 mov al, ds:485h C000:1EAA cmp al, 9 C000:1EAC jbe short locret_C1EBC C000:1EAE mov bh, 0Eh C000:1EB0 mov di, 4200h C000:1EB3 cmp al, 0Eh C000:1EB5 jbe short locret_C1EBC C000:1EB7 mov bh, 10h C000:1EB9 mov di, 5000h C000:1EBC C000:1EBC locret_C1EBC: ; CODE XREF: sub_C1EA0+Cj C000:1EBC ; sub_C1EA0+15j C000:1EBC retn C000:1EBC sub_C1EA0 endp C000:1EBC C000:1EBD C000:1EBD ; =============== S U B R O U T I N E ======================================= C000:1EBD C000:1EBD C000:1EBD sub_C1EBD proc near ; CODE XREF: sub_C0528+8p C000:1EBD ; sub_C1FD7+4p ... C000:1EBD push dx C000:1EBE mov dx, 3CEh C000:1EC1 mov ax, 5 C000:1EC4 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:1EC4 ; mode register.Data bits: C000:1EC4 ; 0-1: Write mode 0-2 C000:1EC4 ; 2: test condition C000:1EC4 ; 3: read mode: 1=color compare, 0=direct C000:1EC4 ; 4: 1=use odd/even RAM addressing C000:1EC4 ; 5: 1=use CGA mid-res map (2-bits/pixel) C000:1EC5 mov al, 6 C000:1EC7 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:1ECA and ah, 1 C000:1ECD or ah, 4 C000:1ED0 out dx, ax C000:1ED1 mov dl, 0C4h ; '¦' C000:1ED3 mov ax, 402h C000:1ED6 out dx, ax C000:1ED7 mov ax, 604h C000:1EDA out dx, ax C000:1EDB pop dx C000:1EDC retn C000:1EDC sub_C1EBD endp C000:1EDC C000:1EDD C000:1EDD ; =============== S U B R O U T I N E ======================================= C000:1EDD C000:1EDD C000:1EDD sub_C1EDD proc near ; CODE XREF: sub_C0528:loc_C0550p C000:1EDD ; sub_C1FD7+Ap ... C000:1EDD push dx C000:1EDE mov dx, 3CCh C000:1EE1 mov bx, 0A06h C000:1EE4 in al, dx ; EGA port: graphics 1 position (must be 1 for EGA) C000:1EE5 test al, 1 C000:1EE7 jz short loc_C1EEC C000:1EE9 mov bx, 0E06h C000:1EEC C000:1EEC loc_C1EEC: ; CODE XREF: sub_C1EDD+Aj C000:1EEC mov dl, 0CEh ; '+' C000:1EEE mov ax, bx C000:1EF0 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:1EF0 ; unknown register C000:1EF1 mov ax, 1005h C000:1EF4 out dx, ax ; EGA: graph 1 and 2 addr reg: C000:1EF4 ; unknown register C000:1EF5 mov dl, 0C4h ; '¦' C000:1EF7 mov ax, 302h C000:1EFA out dx, ax ; EGA: sequencer address reg C000:1EFA ; unknown register C000:1EFB mov ax, 204h C000:1EFE out dx, ax ; EGA: sequencer address reg C000:1EFE ; unknown register C000:1EFF pop dx C000:1F00 retn C000:1F00 sub_C1EDD endp C000:1F00 C000:1F01 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND] C000:1F02 C000:1F02 ; =============== S U B R O U T I N E ======================================= C000:1F02 C000:1F02 C000:1F02 sub_C1F02 proc near ; CODE XREF: sub_C0528+15p C000:1F02 ; sub_C1FD7+7p ... C000:1F02 push bx C000:1F03 push ds C000:1F04 push es C000:1F05 mov si, di C000:1F07 push es C000:1F08 pop ds C000:1F09 assume ds:nothing C000:1F09 call sub_C21E6 C000:1F0C jcxz short loc_C1F28 C000:1F0E mov dx, cx C000:1F10 mov bl, bh C000:1F12 sub bh, bh C000:1F14 push bp C000:1F15 mov bp, 20h ; ' ' C000:1F18 sub bp, bx C000:1F1A xor al, al C000:1F1C C000:1F1C loc_C1F1C: ; CODE XREF: sub_C1F02+23j C000:1F1C mov cx, bx C000:1F1E rep movsb C000:1F20 mov cx, bp C000:1F22 rep stosb C000:1F24 dec dx C000:1F25 jnz short loc_C1F1C C000:1F27 pop bp C000:1F28 C000:1F28 loc_C1F28: ; CODE XREF: sub_C1F02+Aj C000:1F28 pop es C000:1F29 assume es:nothing C000:1F29 pop ds C000:1F2A assume ds:nothing C000:1F2A pop bx C000:1F2B retn C000:1F2B sub_C1F02 endp C000:1F2B C000:1F2C C000:1F2C ; =============== S U B R O U T I N E ======================================= C000:1F2C C000:1F2C C000:1F2C nullsub_6 proc near ; CODE XREF: sub_C0528+25p C000:1F2C retn C000:1F2C nullsub_6 endp C000:1F2C C000:1F2C ; --------------------------------------------------------------------------- C000:1F2D db 0 C000:1F2E db 0D7h ; Î C000:1F2F db 1Fh C000:1F30 db 1 C000:1F31 db 0E5h ; ò C000:1F32 db 1Fh C000:1F33 db 2 C000:1F34 db 0FBh ; û C000:1F35 db 1Fh C000:1F36 db 3 C000:1F37 db 11h C000:1F38 db 20h C000:1F39 db 4 C000:1F3A db 1Ah C000:1F3B db 20h C000:1F3C db 10h C000:1F3D db 30h ; 0 C000:1F3E db 20h C000:1F3F db 11h C000:1F40 db 41h ; A C000:1F41 db 20h C000:1F42 db 12h C000:1F43 db 5Ah ; Z C000:1F44 db 20h C000:1F45 db 14h C000:1F46 db 73h ; s C000:1F47 db 20h C000:1F48 db 20h C000:1F49 db 8Ch ; î C000:1F4A db 20h C000:1F4B db 21h ; ! C000:1F4C db 9Bh ; C000:1F4D db 20h C000:1F4E db 22h ; " C000:1F4F db 0B8h ; ª C000:1F50 db 20h C000:1F51 db 23h ; # C000:1F52 db 0DCh ; - C000:1F53 db 20h C000:1F54 db 24h ; $ C000:1F55 db 0 C000:1F56 db 21h ; ! C000:1F57 db 3Ch ; < C000:1F58 db 30h ; 0 C000:1F59 db 74h ; t C000:1F5A db 5Ah ; Z C000:1F5B ; --------------------------------------------------------------------------- C000:1F5B push ax C000:1F5C push bx C000:1F5D push cx C000:1F5E push dx C000:1F5F push di C000:1F60 push es C000:1F61 mov di, 0Eh C000:1F64 mov si, 1F2Dh C000:1F67 mov ah, al C000:1F69 C000:1F69 loc_C1F69: ; CODE XREF: C000:1F72j C000:1F69 lods byte ptr cs:[si] C000:1F6B cmp al, ah C000:1F6D jz short loc_C1F76 C000:1F6F inc si C000:1F70 inc si C000:1F71 dec di C000:1F72 jnz short loc_C1F69 C000:1F74 jmp short loc_C1F7C C000:1F76 ; --------------------------------------------------------------------------- C000:1F76 C000:1F76 loc_C1F76: ; CODE XREF: C000:1F6Dj C000:1F76 lods word ptr cs:[si] C000:1F78 mov si, ax C000:1F7A call si C000:1F7C C000:1F7C loc_C1F7C: ; CODE XREF: C000:1F74j C000:1F7C pop es C000:1F7D pop di C000:1F7E pop dx C000:1F7F pop cx C000:1F80 pop bx C000:1F81 pop ax C000:1F82 pop ds C000:1F83 pop si C000:1F84 iret C000:1F84 ; --------------------------------------------------------------------------- C000:1F85 db 7Ch ; | C000:1F86 db 0 C000:1F87 db 0 C000:1F88 db 0 C000:1F89 db 0Ch C000:1F8A db 1 C000:1F8B db 0 C000:1F8C db 0 C000:1F8D db 0ADh ; º C000:1F8E db 1Fh C000:1F8F db 0 C000:1F90 db 0C0h ; L C000:1F91 db 0A5h ; ¹ C000:1F92 db 1Fh C000:1F93 db 0 C000:1F94 db 0C0h ; L C000:1F95 db 0A9h ; ê C000:1F96 db 1Fh C000:1F97 db 0 C000:1F98 db 0C0h ; L C000:1F99 db 0ADh ; º C000:1F9A db 1Fh C000:1F9B db 0 C000:1F9C db 0C0h ; L C000:1F9D db 0B1h ; - C000:1F9E db 1Fh C000:1F9F db 0 C000:1FA0 db 0C0h ; L C000:1FA1 db 0B1h ; - C000:1FA2 db 1Fh C000:1FA3 db 0 C000:1FA4 db 0C0h ; L C000:1FA5 dword_C1FA5 dd 0C0003A00h ; DATA XREF: sub_C1FFB+Ar C000:1FA5 ; sub_C205A+Ar ... C000:1FA9 db 0 C000:1FAA db 3Eh ; > C000:1FAB db 0 C000:1FAC db 0C0h ; L C000:1FAD dword_C1FAD dd 0C0004200h ; DATA XREF: sub_C1FE5+Ar C000:1FAD ; sub_C2041+Ar ... C000:1FB1 dword_C1FB1 dd 0C0005000h ; DATA XREF: sub_C201A+Ar C000:1FB1 ; sub_C2073+Ar ... C000:1FB5 ; --------------------------------------------------------------------------- C000:1FB5 push bx C000:1FB6 mov cx, ds:485h C000:1FBA mov dl, ds:484h C000:1FBE cmp bh, 7 C000:1FC1 ja short loc_C1FD3 C000:1FC3 mov bl, bh C000:1FC5 sub bh, bh C000:1FC7 shl bx, 2 C000:1FCA les bp, cs:[bx+1F85h] C000:1FCF les bp, es:[bp+0] C000:1FD3 C000:1FD3 loc_C1FD3: ; CODE XREF: C000:1FC1j C000:1FD3 pop bx C000:1FD4 pop ds C000:1FD5 pop si C000:1FD6 iret C000:1FD7 C000:1FD7 ; =============== S U B R O U T I N E ======================================= C000:1FD7 C000:1FD7 C000:1FD7 sub_C1FD7 proc near C000:1FD7 jcxz short locret_C1FE4 C000:1FD9 mov di, bp C000:1FDB call sub_C1EBD C000:1FDE call sub_C1F02 C000:1FE1 call sub_C1EDD C000:1FE4 C000:1FE4 locret_C1FE4: ; CODE XREF: sub_C1FD7j C000:1FE4 retn C000:1FE4 sub_C1FD7 endp C000:1FE4 C000:1FE5 C000:1FE5 ; =============== S U B R O U T I N E ======================================= C000:1FE5 C000:1FE5 C000:1FE5 sub_C1FE5 proc near C000:1FE5 call sub_C1EBD C000:1FE8 mov bh, 0Eh C000:1FEA mov cx, 100h C000:1FED sub dx, dx C000:1FEF les di, cs:dword_C1FAD C000:1FF4 call sub_C1F02 C000:1FF7 call sub_C1EDD C000:1FFA retn C000:1FFA sub_C1FE5 endp C000:1FFA C000:1FFB C000:1FFB ; =============== S U B R O U T I N E ======================================= C000:1FFB C000:1FFB C000:1FFB sub_C1FFB proc near C000:1FFB call sub_C1EBD C000:1FFE mov bh, 8 C000:2000 mov cx, 100h C000:2003 sub dx, dx C000:2005 les di, cs:dword_C1FA5 C000:200A call sub_C1F02 C000:200D call sub_C1EDD C000:2010 retn C000:2010 sub_C1FFB endp C000:2010 C000:2011 C000:2011 ; =============== S U B R O U T I N E ======================================= C000:2011 C000:2011 C000:2011 sub_C2011 proc near C000:2011 mov dx, 3C4h C000:2014 mov al, 3 C000:2016 mov ah, bl C000:2018 out dx, ax ; EGA: sequencer address reg C000:2018 ; sequencer reset. C000:2018 ; Bits of data 0-1 indicate asynchronous/synchronous reset. C000:2019 retn C000:2019 sub_C2011 endp C000:2019 C000:201A C000:201A ; =============== S U B R O U T I N E ======================================= C000:201A C000:201A C000:201A sub_C201A proc near C000:201A call sub_C1EBD C000:201D mov bh, 10h C000:201F mov cx, 100h C000:2022 sub dx, dx C000:2024 les di, cs:dword_C1FB1 C000:2029 call sub_C1F02 C000:202C call sub_C1EDD C000:202F retn C000:202F sub_C201A endp C000:202F C000:2030 C000:2030 ; =============== S U B R O U T I N E ======================================= C000:2030 C000:2030 C000:2030 sub_C2030 proc near C000:2030 jcxz short locret_C2040 C000:2032 mov di, bp C000:2034 call sub_C1EBD C000:2037 call sub_C1F02 C000:203A call sub_C2124 C000:203D call sub_C1EDD C000:2040 C000:2040 locret_C2040: ; CODE XREF: sub_C2030j C000:2040 retn C000:2040 sub_C2030 endp C000:2040 C000:2041 C000:2041 ; =============== S U B R O U T I N E ======================================= C000:2041 C000:2041 C000:2041 sub_C2041 proc near C000:2041 call sub_C1EBD C000:2044 mov bh, 0Eh C000:2046 mov cx, 100h C000:2049 sub dx, dx C000:204B les di, cs:dword_C1FAD C000:2050 call sub_C1F02 C000:2053 call sub_C2124 C000:2056 call sub_C1EDD C000:2059 retn C000:2059 sub_C2041 endp C000:2059 C000:205A C000:205A ; =============== S U B R O U T I N E ======================================= C000:205A C000:205A C000:205A sub_C205A proc near C000:205A call sub_C1EBD C000:205D mov bh, 8 C000:205F mov cx, 100h C000:2062 sub dx, dx C000:2064 les di, cs:dword_C1FA5 C000:2069 call sub_C1F02 C000:206C call sub_C2124 C000:206F call sub_C1EDD C000:2072 retn C000:2072 sub_C205A endp C000:2072 C000:2073 C000:2073 ; =============== S U B R O U T I N E ======================================= C000:2073 C000:2073 C000:2073 sub_C2073 proc near C000:2073 call sub_C1EBD C000:2076 mov bh, 10h C000:2078 mov cx, 100h C000:207B sub dx, dx C000:207D les di, cs:dword_C1FB1 C000:2082 call sub_C1F02 C000:2085 call sub_C2124 C000:2088 call sub_C1EDD C000:208B retn C000:208B sub_C2073 endp C000:208B C000:208C C000:208C ; =============== S U B R O U T I N E ======================================= C000:208C C000:208C C000:208C sub_C208C proc near C000:208C cli C000:208D mov ds:7Ch, bp C000:2091 mov word ptr ds:7Eh, es C000:2095 sti C000:2096 retn C000:2096 sub_C208C endp C000:2096 C000:2097 C000:2097 ; =============== S U B R O U T I N E ======================================= C000:2097 C000:2097 C000:2097 sub_C2097 proc near C000:2097 add ds:2B19h, cl C000:209B mov ds:10Ch, bp C000:209F mov word ptr ds:10Eh, es C000:20A3 mov ds:485h, cx C000:20A7 or bl, bl C000:20A9 jz short loc_C20B2 C000:20AB sub bh, bh C000:20AD mov dl, cs:[bx+2097h] C000:20B2 C000:20B2 loc_C20B2: ; CODE XREF: sub_C2097+12j C000:20B2 dec dx C000:20B3 mov ds:484h, dl C000:20B7 retn C000:20B7 sub_C2097 endp C000:20B7 C000:20B8 C000:20B8 ; =============== S U B R O U T I N E ======================================= C000:20B8 C000:20B8 C000:20B8 sub_C20B8 proc near C000:20B8 les di, cs:dword_C1FAD C000:20BD mov ds:10Ch, di C000:20C1 mov word ptr ds:10Eh, es C000:20C5 mov word ptr ds:485h, 0Eh C000:20CB or bl, bl C000:20CD jz short loc_C20D6 C000:20CF sub bh, bh C000:20D1 mov dl, cs:[bx+2097h] C000:20D6 C000:20D6 loc_C20D6: ; CODE XREF: sub_C20B8+15j C000:20D6 dec dx C000:20D7 mov ds:484h, dl C000:20DB retn C000:20DB sub_C20B8 endp C000:20DB C000:20DC C000:20DC ; =============== S U B R O U T I N E ======================================= C000:20DC C000:20DC C000:20DC sub_C20DC proc near C000:20DC les di, cs:dword_C1FA5 C000:20E1 mov ds:10Ch, di C000:20E5 mov word ptr ds:10Eh, es C000:20E9 mov word ptr ds:485h, 8 C000:20EF or bl, bl C000:20F1 jz short loc_C20FA C000:20F3 sub bh, bh C000:20F5 mov dl, cs:[bx+2097h] C000:20FA C000:20FA loc_C20FA: ; CODE XREF: sub_C20DC+15j C000:20FA dec dx C000:20FB mov ds:484h, dl C000:20FF retn C000:20FF sub_C20DC endp C000:20FF C000:2100 C000:2100 ; =============== S U B R O U T I N E ======================================= C000:2100 C000:2100 C000:2100 sub_C2100 proc near C000:2100 les di, cs:dword_C1FB1 C000:2105 mov ds:10Ch, di C000:2109 mov word ptr ds:10Eh, es C000:210D mov word ptr ds:485h, 10h C000:2113 or bl, bl C000:2115 jz short loc_C211E C000:2117 sub bh, bh C000:2119 mov dl, cs:[bx+2097h] C000:211E C000:211E loc_C211E: ; CODE XREF: sub_C2100+15j C000:211E dec dx C000:211F mov ds:484h, dl C000:2123 retn C000:2123 sub_C2100 endp C000:2123 C000:2124 C000:2124 ; =============== S U B R O U T I N E ======================================= C000:2124 C000:2124 C000:2124 sub_C2124 proc near ; CODE XREF: sub_C2030+Ap C000:2124 ; sub_C2041+12p ... C000:2124 call sub_C2162 C000:2127 div bh C000:2129 dec ax C000:212A mov ds:484h, al C000:212D mov ds:485h, bh C000:2131 inc ax C000:2132 mul bh C000:2134 dec ax C000:2135 call sub_C219E C000:2138 mov ah, bh C000:213A mov al, 14h C000:213C out dx, ax C000:213D mov al, 9 C000:213F call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2142 and ah, 0E0h C000:2145 dec bh C000:2147 or ah, bh C000:2149 out dx, ax C000:214A inc ax C000:214B mov ah, bh C000:214D dec ah C000:214F out dx, ax C000:2150 inc ax C000:2151 mov ah, bh C000:2153 out dx, ax C000:2154 mov al, ds:484h C000:2157 inc ax C000:2158 mul byte ptr ds:44Ah C000:215C shl ax, 1 C000:215E mov ds:44Ch, ax C000:2161 retn C000:2161 sub_C2124 endp C000:2161 C000:2162 C000:2162 ; =============== S U B R O U T I N E ======================================= C000:2162 C000:2162 C000:2162 sub_C2162 proc near ; CODE XREF: sub_C2124p C000:2162 ; sub_C242E+9p C000:2162 mov dx, ds:463h C000:2166 mov al, 12h C000:2168 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:216B mov cl, ah C000:216D mov al, 7 C000:216F call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2172 mov ch, ah C000:2174 and ah, 2 C000:2177 and ch, 40h C000:217A shr ah, 1 C000:217C rol ch, 3 C000:217F or ch, ah C000:2181 inc cx C000:2182 mov al, 17h C000:2184 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2187 test ah, 4 C000:218A jz short loc_C218E C000:218C shl cx, 1 C000:218E C000:218E loc_C218E: ; CODE XREF: sub_C2162+28j C000:218E mov al, 9 C000:2190 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2193 test ah, 80h C000:2196 jz short loc_C219B C000:2198 inc cx C000:2199 shr cx, 1 C000:219B C000:219B loc_C219B: ; CODE XREF: sub_C2162+34j C000:219B mov ax, cx C000:219D retn C000:219D sub_C2162 endp C000:219D C000:219E C000:219E ; =============== S U B R O U T I N E ======================================= C000:219E C000:219E C000:219E sub_C219E proc near ; CODE XREF: sub_C2124+11p C000:219E mov cx, ax C000:21A0 mov al, 9 C000:21A2 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:21A5 test ah, 80h C000:21A8 jz short loc_C21AC C000:21AA shl cx, 1 C000:21AC C000:21AC loc_C21AC: ; CODE XREF: sub_C219E+Aj C000:21AC mov ah, cl C000:21AE mov al, 12h C000:21B0 out dx, ax C000:21B1 mov al, 11h C000:21B3 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:21B6 push ax C000:21B7 and ah, 7Fh C000:21BA out dx, ax C000:21BB mov al, 7 C000:21BD call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:21C0 and ah, 0BDh C000:21C3 mov cl, ch C000:21C5 and cx, 201h C000:21C9 shl cl, 1 C000:21CB ror ch, 3 C000:21CE or ah, cl C000:21D0 or ah, ch C000:21D2 out dx, ax C000:21D3 pop ax C000:21D4 out dx, ax C000:21D5 retn C000:21D5 sub_C219E endp C000:21D5 C000:21D5 ; --------------------------------------------------------------------------- C000:21D6 db 0 C000:21D7 db 0 C000:21D8 db 0 C000:21D9 db 40h ; @ C000:21DA db 0 C000:21DB db 80h ; Ç C000:21DC db 0 C000:21DD db 0C0h ; L C000:21DE db 0 C000:21DF db 20h C000:21E0 db 0 C000:21E1 db 60h ; ` C000:21E2 db 0 C000:21E3 db 0A0h ; á C000:21E4 db 0 C000:21E5 db 0E0h ; Ó C000:21E6 C000:21E6 ; =============== S U B R O U T I N E ======================================= C000:21E6 C000:21E6 C000:21E6 sub_C21E6 proc near ; CODE XREF: sub_C1F02+7p C000:21E6 push bx C000:21E7 push dx C000:21E8 sub bh, bh C000:21EA shl bx, 1 C000:21EC mov di, 0A000h C000:21EF mov es, di C000:21F1 assume es:nothing C000:21F1 mov di, cs:[bx+21D6h] C000:21F6 shl dx, 5 C000:21F9 add di, dx C000:21FB pop dx C000:21FC pop bx C000:21FD retn C000:21FD sub_C21E6 endp C000:21FD C000:21FD ; --------------------------------------------------------------------------- C000:21FE db 0 C000:21FF db 0 C000:2200 ; --------------------------------------------------------------------------- C000:2200 adc [di], dh C000:2202 and ah, [bx+si] C000:2204 push cx C000:2205 and dh, [bx+si] C000:2207 and dh, fs:[bx+di] C000:220A mov [bp+si], ah C000:220C xor bl, [bp+di+3322h] C000:2210 lodsb C000:2211 and dh, [si] C000:2213 shl byte ptr [bp+si], 35h C000:2216 shl byte ptr [bp+si], 1 C000:2218 db 36h C000:2218 shl word ptr [bp+si], 1 C000:221B mov si, 2200h C000:221E C000:221E loc_C221E: ; CODE XREF: C000:222Aj C000:221E cmp cs:[si], bl C000:2221 jz short loc_C222E C000:2223 add si, 3 C000:2226 cmp si, 221Bh C000:222A jb short loc_C221E C000:222C jmp short loc_C2232 C000:222E ; --------------------------------------------------------------------------- C000:222E C000:222E loc_C222E: ; CODE XREF: C000:2221j C000:222E call word ptr cs:[si+1] C000:2232 C000:2232 loc_C2232: ; CODE XREF: C000:222Cj C000:2232 pop ds C000:2233 pop si C000:2234 iret C000:2235 ; --------------------------------------------------------------------------- C000:2235 mov bx, 103h C000:2238 cmp byte ptr ds:463h, 0B4h ; '+' C000:223D jz short loc_C2241 C000:223F sub bh, bh C000:2241 C000:2241 loc_C2241: ; CODE XREF: C000:223Dj C000:2241 mov cl, ds:488h C000:2245 mov ch, cl C000:2247 and cx, 0F00Fh C000:224B shr ch, 4 C000:224E mov al, bl C000:2250 retn C000:2251 C000:2251 ; =============== S U B R O U T I N E ======================================= C000:2251 C000:2251 C000:2251 sub_C2251 proc near C000:2251 cli C000:2252 mov word ptr ds:14h, offset unk_C22E2 C000:2258 mov word ptr ds:16h, cs C000:225C sti C000:225D retn C000:225D sub_C2251 endp C000:225D C000:225E ; --------------------------------------------------------------------------- C000:225E or byte ptr [bx+si], 0 C000:2261 or [bx+si], dx C000:2263 or [si], di C000:2265 add dh, [bx+1Fh] C000:2268 cbw C000:2269 mov si, ax C000:226B shl si, 1 C000:226D mov ax, cs:[si+225Eh] C000:2272 and byte ptr ds:489h, 6Fh C000:2277 or ds:489h, al C000:227B and byte ptr ds:488h, 0F0h C000:2280 or ds:488h, ah C000:2284 mov ax, 1212h C000:2287 retn C000:2288 ; --------------------------------------------------------------------------- C000:2288 cmp al, 1 C000:228A ja short locret_C229A C000:228C shl al, 3 C000:228F and byte ptr ds:489h, 0F7h C000:2294 or ds:489h, al C000:2298 mov al, 12h C000:229A C000:229A locret_C229A: ; CODE XREF: C000:228Aj C000:229A retn C000:229B ; --------------------------------------------------------------------------- C000:229B cmp al, 1 C000:229D ja short locret_C22AB C000:229F jz short loc_C22A6 C000:22A1 call set_IO_46E8_0E C000:22A4 jmp short loc_C22A9 C000:22A6 ; --------------------------------------------------------------------------- C000:22A6 C000:22A6 loc_C22A6: ; CODE XREF: C000:229Fj C000:22A6 call set_IO_46E8_00 C000:22A9 C000:22A9 loc_C22A9: ; CODE XREF: C000:22A4j C000:22A9 mov al, 12h C000:22AB C000:22AB locret_C22AB: ; CODE XREF: C000:229Dj C000:22AB retn C000:22AC ; --------------------------------------------------------------------------- C000:22AC cmp al, 1 C000:22AE ja short locret_C22BF C000:22B0 shl al, 1 C000:22B2 xor al, 2 C000:22B4 and byte ptr ds:489h, 0FDh C000:22B9 or ds:489h, al C000:22BD mov al, 12h C000:22BF C000:22BF locret_C22BF: ; CODE XREF: C000:22AEj C000:22BF retn C000:22C0 ; --------------------------------------------------------------------------- C000:22C0 cmp al, 1 C000:22C2 ja short locret_C22CF C000:22C4 and byte ptr ds:487h, 0FEh C000:22C9 or ds:487h, al C000:22CD mov al, 12h C000:22CF C000:22CF locret_C22CF: ; CODE XREF: C000:22C2j C000:22CF retn C000:22D0 ; --------------------------------------------------------------------------- C000:22D0 retn C000:22D1 ; --------------------------------------------------------------------------- C000:22D1 cmp al, 1 C000:22D3 ja short locret_C22E1 C000:22D5 jz short loc_C22DC C000:22D7 call sub_C2B0D C000:22DA jmp short loc_C22DF C000:22DC ; --------------------------------------------------------------------------- C000:22DC C000:22DC loc_C22DC: ; CODE XREF: C000:22D5j C000:22DC call near ptr sub_C2AFF+1 C000:22DF C000:22DF loc_C22DF: ; CODE XREF: C000:22DAj C000:22DF mov al, 12h C000:22E1 C000:22E1 locret_C22E1: ; CODE XREF: C000:22D3j C000:22E1 retn C000:22E1 ; --------------------------------------------------------------------------- C000:22E2 unk_C22E2 db 0FBh ; û ; DATA XREF: sub_C2251+1o C000:22E3 C000:22E3 ; =============== S U B R O U T I N E ======================================= C000:22E3 C000:22E3 C000:22E3 sub_C22E3 proc far C000:22E3 pusha C000:22E4 push ds C000:22E5 sub ax, ax C000:22E7 mov ds, ax C000:22E9 mov bl, ds:462h C000:22ED sub bh, bh C000:22EF shl bx, 1 C000:22F1 push word ptr [bx+450h] C000:22F5 mov bh, ds:462h C000:22F9 sub dx, dx C000:22FB C000:22FB loc_C22FB: ; CODE XREF: sub_C22E3+27j C000:22FB ; sub_C22E3+34j C000:22FB call sub_C136E C000:22FE mov ah, 8 C000:2300 int 10h ; - VIDEO - READ ATTRIBUTES/CHARACTER AT CURSOR POSITION C000:2300 ; BH = display page C000:2300 ; Return: AL = character C000:2300 ; AH = attribute of character (alpha modes) C000:2302 call sub_C232B C000:2305 inc dx C000:2306 cmp dl, ds:44Ah C000:230A jb short loc_C22FB C000:230C call sub_C2320 C000:230F sub dl, dl C000:2311 inc dh C000:2313 cmp dh, ds:484h C000:2317 jbe short loc_C22FB C000:2319 pop dx C000:231A call sub_C136E C000:231D pop ds C000:231E popa C000:231F iret C000:231F sub_C22E3 endp C000:231F C000:2320 C000:2320 ; =============== S U B R O U T I N E ======================================= C000:2320 C000:2320 C000:2320 sub_C2320 proc near ; CODE XREF: sub_C22E3+29p C000:2320 mov al, 0Dh C000:2322 call sub_C232B C000:2325 mov al, 0Ah C000:2327 call sub_C232B C000:232A retn C000:232A sub_C2320 endp C000:232A C000:232B C000:232B ; =============== S U B R O U T I N E ======================================= C000:232B C000:232B C000:232B sub_C232B proc near ; CODE XREF: sub_C22E3+1Fp C000:232B ; sub_C2320+2p ... C000:232B push ax C000:232C push dx C000:232D sub dx, dx C000:232F mov ah, dl C000:2331 int 17h ; PRINTER - OUTPUT CHARACTER C000:2331 ; AL = character, DX = printer port (0-3) C000:2331 ; Return: AH = status bits C000:2333 pop dx C000:2334 pop ax C000:2335 retn C000:2335 sub_C232B endp C000:2335 C000:2335 ; --------------------------------------------------------------------------- C000:2336 db 0Ah dup( 0) C000:2340 ; --------------------------------------------------------------------------- C000:2340 cmp al, 1 C000:2342 ja short loc_C237D C000:2344 mov ah, al C000:2346 jz short loc_C234E C000:2348 mov bl, ds:48Ah C000:234C mov bh, al C000:234E C000:234E loc_C234E: ; CODE XREF: C000:2346j C000:234E mov al, ds:463h C000:2351 lds si, ds:4A8h C000:2355 lds si, [si+10h] C000:2358 lds si, [si+2] C000:235B jz short loc_C2380 C000:235D shl bx, 1 C000:235F mov bx, [bx+si+4] C000:2362 xchg bl, bh C000:2364 test bh, bh C000:2366 jz short loc_C237A C000:2368 cmp al, 0D4h ; 'ï' C000:236A jnz short loc_C2373 C000:236C test bl, 1 C000:236F jz short loc_C237A C000:2371 jmp short loc_C2378 C000:2373 ; --------------------------------------------------------------------------- C000:2373 C000:2373 loc_C2373: ; CODE XREF: C000:236Aj C000:2373 test bl, 1 C000:2376 jnz short loc_C237A C000:2378 C000:2378 loc_C2378: ; CODE XREF: C000:2371j C000:2378 xchg bl, bh C000:237A C000:237A loc_C237A: ; CODE XREF: C000:2366j C000:237A ; C000:236Fj ... C000:237A mov ax, 1A1Ah C000:237D C000:237D loc_C237D: ; CODE XREF: C000:2342j C000:237D pop ds C000:237E pop si C000:237F iret C000:2380 ; --------------------------------------------------------------------------- C000:2380 C000:2380 loc_C2380: ; CODE XREF: C000:235Bj C000:2380 push cx C000:2381 sub ch, ch C000:2383 mov cl, [si] C000:2385 add si, 4 C000:2388 add si, cx C000:238A add si, cx C000:238C dec si C000:238D dec si C000:238E std C000:238F C000:238F loc_C238F: ; CODE XREF: C000:239Aj C000:238F lodsw C000:2390 cmp ax, bx C000:2392 jz short loc_C239E C000:2394 xchg al, ah C000:2396 cmp ax, bx C000:2398 jz short loc_C239E C000:239A loop loc_C238F C000:239C jmp short loc_C23A7 C000:239E ; --------------------------------------------------------------------------- C000:239E C000:239E loc_C239E: ; CODE XREF: C000:2392j C000:239E ; C000:2398j C000:239E dec cx C000:239F sub ax, ax C000:23A1 mov ds, ax C000:23A3 mov ds:48Ah, cl C000:23A7 C000:23A7 loc_C23A7: ; CODE XREF: C000:239Cj C000:23A7 pop cx C000:23A8 jmp short loc_C237A C000:23A8 ; --------------------------------------------------------------------------- C000:23AA db 85h ; ù C000:23AB db 0DBh ; - C000:23AC ; --------------------------------------------------------------------------- C000:23AC jnz short loc_C2405 C000:23AE push bx C000:23AF push cx C000:23B0 push dx C000:23B1 push di C000:23B2 mov ax, 651Fh C000:23B5 stosw C000:23B6 mov ax, cs C000:23B8 stosw C000:23B9 mov si, 449h C000:23BC mov cx, 1Eh C000:23BF rep movsb C000:23C1 mov al, ds:484h C000:23C4 inc ax C000:23C5 stosb C000:23C6 mov ax, ds:485h C000:23C9 stosw C000:23CA mov ax, 1A00h ; undefined funtion? C000:23CD int 10h ; - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA): C000:23CF mov ax, bx C000:23D1 stosw C000:23D2 mov al, ds:449h C000:23D5 call sub_C2408 C000:23D8 stosw C000:23D9 mov al, ds:449h C000:23DC call sub_C2420 C000:23DF stosb C000:23E0 call sub_C242E C000:23E3 stosb C000:23E4 call sub_C2451 C000:23E7 stosw C000:23E8 call sub_C2465 C000:23EB stosb C000:23EC sub ax, ax C000:23EE stosw C000:23EF stosb C000:23F0 mov al, 3 C000:23F2 stosb C000:23F3 call sub_C2484 C000:23F6 stosb C000:23F7 mov cx, 0Dh C000:23FA sub ax, ax C000:23FC rep stosb C000:23FE pop di C000:23FF pop dx C000:2400 pop cx C000:2401 pop bx C000:2402 mov ax, 1Bh C000:2405 C000:2405 loc_C2405: ; CODE XREF: C000:23ACj C000:2405 pop ds C000:2406 pop si C000:2407 iret C000:2408 C000:2408 ; =============== S U B R O U T I N E ======================================= C000:2408 C000:2408 C000:2408 sub_C2408 proc near ; CODE XREF: C000:23D5p C000:2408 push es C000:2409 mov cl, 1 C000:240B call sub_C2C61 C000:240E jb short loc_C241E C000:2410 mov cl, es:[bx+7] C000:2414 mov ax, 1 C000:2417 shl ax, cl C000:2419 test ax, ax C000:241B jnz short loc_C241E C000:241D dec ax C000:241E C000:241E loc_C241E: ; CODE XREF: sub_C2408+6j C000:241E ; sub_C2408+13j C000:241E pop es C000:241F assume es:nothing C000:241F retn C000:241F sub_C2408 endp C000:241F C000:2420 C000:2420 ; =============== S U B R O U T I N E ======================================= C000:2420 C000:2420 C000:2420 sub_C2420 proc near ; CODE XREF: C000:23DCp C000:2420 push es C000:2421 call sub_C2C61 C000:2424 mov al, 1 C000:2426 jb short loc_C242C C000:2428 mov al, es:[bx+6] C000:242C C000:242C loc_C242C: ; CODE XREF: sub_C2420+6j C000:242C pop es C000:242D retn C000:242D sub_C2420 endp C000:242D C000:242E C000:242E ; =============== S U B R O U T I N E ======================================= C000:242E C000:242E C000:242E sub_C242E proc near ; CODE XREF: C000:23E0p C000:242E sub dx, dx C000:2430 cmp byte ptr ds:449h, 13h C000:2435 jz short loc_C244E C000:2437 call sub_C2162 C000:243A sub dx, dx C000:243C cmp ax, 0C8h ; 'L' C000:243F jz short loc_C244E C000:2441 inc dx C000:2442 cmp ax, 15Eh C000:2445 jz short loc_C244E C000:2447 inc dx C000:2448 cmp ax, 190h C000:244B jz short loc_C244E C000:244D inc dx C000:244E C000:244E loc_C244E: ; CODE XREF: sub_C242E+7j C000:244E ; sub_C242E+11j ... C000:244E mov ax, dx C000:2450 retn C000:2450 sub_C242E endp C000:2450 C000:2451 C000:2451 ; =============== S U B R O U T I N E ======================================= C000:2451 C000:2451 C000:2451 sub_C2451 proc near ; CODE XREF: C000:23E4p C000:2451 mov dx, 3C4h C000:2454 mov al, 3 C000:2456 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2459 mov al, ah C000:245B and ax, 1003h C000:245E shr ah, 2 C000:2461 or al, ah C000:2463 cbw C000:2464 retn C000:2464 sub_C2451 endp C000:2464 C000:2465 C000:2465 ; =============== S U B R O U T I N E ======================================= C000:2465 C000:2465 C000:2465 sub_C2465 proc near ; CODE XREF: C000:23E8p C000:2465 mov bl, 10h C000:2467 call sub_C2903 C000:246A and bh, 8 C000:246D shl bh, 2 C000:2470 mov al, ds:487h C000:2473 mov ah, ds:489h C000:2477 and ax, 0F01h C000:247A shl al, 4 C000:247D or al, ah C000:247F or al, bh C000:2481 xor al, 10h C000:2483 retn C000:2483 sub_C2465 endp C000:2483 C000:2484 C000:2484 ; =============== S U B R O U T I N E ======================================= C000:2484 C000:2484 C000:2484 sub_C2484 proc near ; CODE XREF: C000:23F3p C000:2484 push es C000:2485 mov dx, 3C4h C000:2488 mov al, 3 C000:248A call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:248D sub al, al C000:248F test ah, ah C000:2491 jz short loc_C2494 C000:2493 inc ax C000:2494 C000:2494 loc_C2494: ; CODE XREF: sub_C2484+Dj C000:2494 les bx, ds:4A8h C000:2498 les bx, es:[bx+4] C000:249C mov dx, es C000:249E or dx, bx C000:24A0 jz short loc_C24A4 C000:24A2 or al, 2 C000:24A4 C000:24A4 loc_C24A4: ; CODE XREF: sub_C2484+1Cj C000:24A4 les bx, ds:4A8h C000:24A8 les bx, es:[bx+8] C000:24AC mov dx, es C000:24AE or dx, bx C000:24B0 jz short loc_C24B4 C000:24B2 or al, 4 C000:24B4 C000:24B4 loc_C24B4: ; CODE XREF: sub_C2484+2Cj C000:24B4 les bx, ds:4A8h C000:24B8 les bx, es:[bx+0Ch] C000:24BC mov dx, es C000:24BE or dx, bx C000:24C0 jz short loc_C24C4 C000:24C2 or al, 8 C000:24C4 C000:24C4 loc_C24C4: ; CODE XREF: sub_C2484+3Cj C000:24C4 les bx, ds:4A8h C000:24C8 les bx, es:[bx+10h] C000:24CC les bx, es:[bx+0Ah] C000:24D0 mov dx, es C000:24D2 or dx, bx C000:24D4 jz short loc_C24D8 C000:24D6 or al, 10h C000:24D8 C000:24D8 loc_C24D8: ; CODE XREF: sub_C2484+50j C000:24D8 les bx, ds:4A8h C000:24DC les bx, es:[bx+10h] C000:24E0 les bx, es:[bx+2] C000:24E4 mov dx, es C000:24E6 mov bx, cs C000:24E8 cmp dx, bx C000:24EA jz short loc_C24EE C000:24EC or al, 20h C000:24EE C000:24EE loc_C24EE: ; CODE XREF: sub_C2484+66j C000:24EE pop es C000:24EF retn C000:24EF sub_C2484 endp C000:24EF C000:24EF ; --------------------------------------------------------------------------- C000:24F0 db 0 C000:24F1 db 2 C000:24F2 db 2 C000:24F3 db 3 C000:24F4 db 0Dh C000:24F5 db 0Eh C000:24F6 db 0Eh C000:24F7 db 0Fh C000:24F8 ; --------------------------------------------------------------------------- C000:24F8 add al, 6 C000:24FA push es C000:24FB pop es C000:24FC adc [bp+si], dx C000:24FE adc dl, [bp+di] C000:2500 test al, al C000:2502 jnz short loc_C2514 C000:2504 mov bx, cx C000:2506 and bx, 0Fh C000:2509 mov bl, cs:[bx+24F0h] C000:250E mov ax, 1Ch C000:2511 C000:2511 loc_C2511: ; CODE XREF: C000:2516j C000:2511 pop ds C000:2512 pop si C000:2513 iret C000:2514 ; --------------------------------------------------------------------------- C000:2514 C000:2514 loc_C2514: ; CODE XREF: C000:2502j C000:2514 cmp al, 2 C000:2516 ja short loc_C2511 C000:2518 jz short loc_C255A C000:251A push bx C000:251B push dx C000:251C push di C000:251D mov di, bx C000:251F add di, 20h ; ' ' C000:2522 test cl, 1 C000:2525 jz short loc_C252D C000:2527 mov es:[bx], di C000:252A call sub_C2593 C000:252D C000:252D loc_C252D: ; CODE XREF: C000:2525j C000:252D test cl, 2 C000:2530 jz short loc_C2539 C000:2532 mov es:[bx+2], di C000:2536 call sub_C2678 C000:2539 C000:2539 loc_C2539: ; CODE XREF: C000:2530j C000:2539 test cl, 4 C000:253C jz short loc_C2545 C000:253E mov es:[bx+4], di C000:2542 call sub_C26EC C000:2545 C000:2545 loc_C2545: ; CODE XREF: C000:253Cj C000:2545 test cl, 8 C000:2548 jz short loc_C2551 C000:254A mov es:[bx+6], di C000:254E call nullsub_3 C000:2551 C000:2551 loc_C2551: ; CODE XREF: C000:2548j C000:2551 mov ax, 1Ch C000:2554 pop di C000:2555 pop dx C000:2556 pop bx C000:2557 pop ds C000:2558 pop si C000:2559 iret C000:255A ; --------------------------------------------------------------------------- C000:255A C000:255A loc_C255A: ; CODE XREF: C000:2518j C000:255A push bx C000:255B push dx C000:255C test cl, 1 C000:255F jz short loc_C2567 C000:2561 mov si, es:[bx] C000:2564 call sub_C2606 C000:2567 C000:2567 loc_C2567: ; CODE XREF: C000:255Fj C000:2567 test cl, 2 C000:256A jz short loc_C2573 C000:256C mov si, es:[bx+2] C000:2570 call sub_C26AA C000:2573 C000:2573 loc_C2573: ; CODE XREF: C000:256Aj C000:2573 test cl, 4 C000:2576 jz short loc_C257F C000:2578 mov si, es:[bx+4] C000:257C call sub_C270D C000:257F C000:257F loc_C257F: ; CODE XREF: C000:2576j C000:257F test cl, 8 C000:2582 jz short loc_C258B C000:2584 mov si, es:[bx+6] C000:2588 call nullsub_2 C000:258B C000:258B loc_C258B: ; CODE XREF: C000:2582j C000:258B mov ax, 1Ch C000:258E pop dx C000:258F pop bx C000:2590 pop ds C000:2591 pop si C000:2592 iret C000:2593 C000:2593 ; =============== S U B R O U T I N E ======================================= C000:2593 C000:2593 C000:2593 sub_C2593 proc near ; CODE XREF: C000:252Ap C000:2593 push bx C000:2594 push cx C000:2595 push bp C000:2596 mov dx, 3C4h C000:2599 in al, dx ; EGA: sequencer address reg C000:2599 ; C000:259A stosb C000:259B call get_CRTC_port C000:259E push dx C000:259F in al, dx C000:25A0 stosb C000:25A1 mov dl, 0CEh ; '+' C000:25A3 in al, dx C000:25A4 stosb C000:25A5 mov dl, 0C0h ; 'L' C000:25A7 in al, dx C000:25A8 stosb C000:25A9 mov bl, 14h C000:25AB call sub_C2903 C000:25AE mov al, bh C000:25B0 stosb C000:25B1 mov dl, 0C4h ; '¦' C000:25B3 mov ah, 1 C000:25B5 mov cx, 4 C000:25B8 call sub_C2737 C000:25BB mov dl, 0CCh ; '¦' C000:25BD in al, dx C000:25BE stosb C000:25BF pop dx C000:25C0 push dx C000:25C1 mov cx, 19h C000:25C4 mov ah, ch C000:25C6 call sub_C2737 C000:25C9 mov cx, 14h C000:25CC mov ah, ch C000:25CE call sub_C2743 C000:25D1 mov dl, 0CEh ; '+' C000:25D3 mov cx, 9 C000:25D6 mov ah, ch C000:25D8 call sub_C2737 C000:25DB pop bp C000:25DC mov ax, bp C000:25DE stosw C000:25DF mov dl, 0CEh ; '+' C000:25E1 mov al, 4 C000:25E3 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:25E6 push ax C000:25E7 mov bx, 4 C000:25EA mov cx, 4 C000:25ED C000:25ED loc_C25ED: ; CODE XREF: sub_C2593+6Bj C000:25ED mov ax, bx C000:25EF out dx, ax C000:25F0 xchg dx, bp C000:25F2 mov al, 22h ; '"' C000:25F4 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:25F7 mov al, ah C000:25F9 stosb C000:25FA xchg dx, bp C000:25FC inc bh C000:25FE loop loc_C25ED C000:2600 pop ax C000:2601 out dx, ax C000:2602 pop bp C000:2603 pop cx C000:2604 pop bx C000:2605 retn C000:2605 sub_C2593 endp C000:2605 C000:2606 C000:2606 ; =============== S U B R O U T I N E ======================================= C000:2606 C000:2606 C000:2606 sub_C2606 proc near ; CODE XREF: C000:2564p C000:2606 push bx C000:2607 push cx C000:2608 push ds C000:2609 push es C000:260A pop ds C000:260B push si C000:260C add si, 4 C000:260F lodsb C000:2610 mov bh, al C000:2612 mov bl, 14h C000:2614 push si C000:2615 call sub_C2852 C000:2618 pop si C000:2619 mov dx, 3C4h C000:261C mov ax, 100h C000:261F out dx, ax ; EGA: sequencer address reg C000:261F ; unknown register C000:2620 mov bl, 1 C000:2622 mov cx, 4 C000:2625 call sub_C2C36 C000:2628 mov dl, 0C2h ; 'T' C000:262A lodsb C000:262B out dx, al C000:262C mov dl, 0C4h ; '¦' C000:262E mov ax, 300h C000:2631 out dx, ax C000:2632 call get_CRTC_port C000:2635 mov ax, 2011h C000:2638 out dx, ax C000:2639 mov cx, 19h C000:263C mov bl, ch C000:263E call sub_C2C36 C000:2641 push dx C000:2642 add dl, 6 C000:2645 mov cx, 14h C000:2648 mov bl, ch C000:264A call sub_C275E C000:264D mov dl, 0CEh ; '+' C000:264F mov cx, 9 C000:2652 mov bl, ch C000:2654 call sub_C2C36 C000:2657 pop dx C000:2658 pop bx C000:2659 mov al, [bx+1] C000:265C out dx, al C000:265D add dl, 6 C000:2660 cli C000:2661 in al, dx C000:2662 mov dl, 0C0h ; 'L' C000:2664 mov al, [bx+3] C000:2667 out dx, al C000:2668 sti C000:2669 mov dl, 0C4h ; '¦' C000:266B mov al, [bx] C000:266D out dx, al C000:266E mov dl, 0CEh ; '+' C000:2670 mov al, [bx+2] C000:2673 out dx, al C000:2674 pop ds C000:2675 pop cx C000:2676 pop bx C000:2677 retn C000:2677 sub_C2606 endp C000:2677 C000:2678 C000:2678 ; =============== S U B R O U T I N E ======================================= C000:2678 C000:2678 C000:2678 sub_C2678 proc near ; CODE XREF: C000:2536p C000:2678 push cx C000:2679 mov al, ds:410h C000:267C and al, 30h C000:267E stosb C000:267F mov cx, 1Eh C000:2682 mov si, 449h C000:2685 rep movsb C000:2687 mov cx, 7 C000:268A mov si, 484h C000:268D rep movsb C000:268F mov si, 4A8h C000:2692 movsw C000:2693 movsw C000:2694 mov si, 14h C000:2697 movsw C000:2698 movsw C000:2699 mov si, 74h ; 't' C000:269C movsw C000:269D movsw C000:269E mov si, 7Ch ; '|' C000:26A1 movsw C000:26A2 movsw C000:26A3 mov si, 10Ch C000:26A6 movsw C000:26A7 movsw C000:26A8 pop cx C000:26A9 retn C000:26A9 sub_C2678 endp C000:26A9 C000:26AA C000:26AA ; =============== S U B R O U T I N E ======================================= C000:26AA C000:26AA C000:26AA sub_C26AA proc near ; CODE XREF: C000:2570p C000:26AA push cx C000:26AB push di C000:26AC push ds C000:26AD push es C000:26AE mov al, ds:410h C000:26B1 and al, 0CFh C000:26B3 or al, es:[si] C000:26B6 mov ds:410h, al C000:26B9 inc si C000:26BA push ds C000:26BB push es C000:26BC pop ds C000:26BD pop es C000:26BE mov cx, 1Eh C000:26C1 mov di, 449h C000:26C4 rep movsb C000:26C6 mov cx, 7 C000:26C9 mov di, 484h C000:26CC rep movsb C000:26CE mov di, 4A8h C000:26D1 movsw C000:26D2 movsw C000:26D3 mov di, 14h C000:26D6 movsw C000:26D7 movsw C000:26D8 mov di, 74h ; 't' C000:26DB movsw C000:26DC movsw C000:26DD mov di, 7Ch ; '|' C000:26E0 movsw C000:26E1 movsw C000:26E2 mov di, 10Ch C000:26E5 movsw C000:26E6 movsw C000:26E7 pop es C000:26E8 pop ds C000:26E9 pop di C000:26EA pop cx C000:26EB retn C000:26EB sub_C26AA endp C000:26EB C000:26EC C000:26EC ; =============== S U B R O U T I N E ======================================= C000:26EC C000:26EC C000:26EC sub_C26EC proc near ; CODE XREF: C000:2542p C000:26EC push cx C000:26ED mov dx, 3C7h C000:26F0 in al, dx C000:26F1 stosb C000:26F2 inc dx C000:26F3 test al, 3 C000:26F5 in al, dx C000:26F6 jz short loc_C26F9 C000:26F8 dec ax C000:26F9 C000:26F9 loc_C26F9: ; CODE XREF: sub_C26EC+Aj C000:26F9 stosb C000:26FA mov dl, 0C6h ; 'Ã' C000:26FC in al, dx C000:26FD stosb C000:26FE inc dx C000:26FF sub al, al C000:2701 out dx, al C000:2702 inc dx C000:2703 inc dx C000:2704 mov cx, 300h C000:2707 C000:2707 loc_C2707: ; CODE XREF: sub_C26EC+1Dj C000:2707 in al, dx C000:2708 stosb C000:2709 loop loc_C2707 C000:270B pop cx C000:270C retn C000:270C sub_C26EC endp C000:270C C000:270D C000:270D ; =============== S U B R O U T I N E ======================================= C000:270D C000:270D C000:270D sub_C270D proc near ; CODE XREF: C000:257Cp C000:270D push bx C000:270E push cx C000:270F push ds C000:2710 push es C000:2711 pop ds C000:2712 push si C000:2713 mov dx, 3C6h C000:2716 inc si C000:2717 inc si C000:2718 lodsb C000:2719 out dx, al C000:271A inc dx C000:271B inc dx C000:271C sub al, al C000:271E out dx, al C000:271F mov cx, 300h C000:2722 inc dx C000:2723 C000:2723 loc_C2723: ; CODE XREF: sub_C270D+18j C000:2723 lodsb C000:2724 out dx, al C000:2725 loop loc_C2723 C000:2727 pop bx C000:2728 test byte ptr [bx], 3 C000:272B dec dx C000:272C jz short loc_C272F C000:272E dec dx C000:272F C000:272F loc_C272F: ; CODE XREF: sub_C270D+1Fj C000:272F mov al, [bx+1] C000:2732 out dx, al C000:2733 pop ds C000:2734 pop cx C000:2735 pop bx C000:2736 retn C000:2736 sub_C270D endp C000:2736 C000:2737 C000:2737 ; =============== S U B R O U T I N E ======================================= C000:2737 C000:2737 C000:2737 sub_C2737 proc near ; CODE XREF: sub_C2593+25p C000:2737 ; sub_C2593+33p ... C000:2737 mov al, ah C000:2739 out dx, al C000:273A inc dx C000:273B in al, dx C000:273C stosb C000:273D dec dx C000:273E inc ah C000:2740 loop sub_C2737 C000:2742 retn C000:2742 sub_C2737 endp C000:2742 C000:2743 C000:2743 ; =============== S U B R O U T I N E ======================================= C000:2743 C000:2743 C000:2743 sub_C2743 proc near ; CODE XREF: sub_C2593+3Bp C000:2743 mov dx, 3BAh C000:2746 cli C000:2747 in al, dx ; Video status bits: C000:2747 ; 0: retrace. 1=display is in vert or horiz retrace. C000:2747 ; 1: 1=light pen is triggered; 0=armed C000:2747 ; 2: 1=light pen switch is open; 0=closed C000:2747 ; 3: 1=vertical sync pulse is occurring. C000:2748 mov dl, 0DAh ; '-' C000:274A in al, dx ; Video status bits: C000:274A ; 0: retrace. 1=display is in vert or horiz retrace. C000:274A ; 1: 1=light pen is triggered; 0=armed C000:274A ; 2: 1=light pen switch is open; 0=closed C000:274A ; 3: 1=vertical sync pulse is occurring. C000:274B mov dl, 0C0h ; 'L' C000:274D C000:274D loc_C274D: ; CODE XREF: sub_C2743+14j C000:274D mov al, ah C000:274F out dx, al ; EGA: palette register: select colors for attribute AL: C000:274F ; 0: RED C000:274F ; 1: GREEN C000:274F ; 2: BLUE C000:274F ; 3: blue C000:274F ; 4: green C000:274F ; 5: red C000:2750 inc dx C000:2751 in al, dx C000:2752 stosb C000:2753 dec dx C000:2754 out dx, al ; EGA: palette register: select colors for attribute AL: C000:2754 ; 0: RED C000:2754 ; 1: GREEN C000:2754 ; 2: BLUE C000:2754 ; 3: blue C000:2754 ; 4: green C000:2754 ; 5: red C000:2755 inc ah C000:2757 loop loc_C274D C000:2759 mov al, 20h ; ' ' C000:275B out dx, al ; EGA: palette register: select colors for attribute AL: C000:275B ; 0: RED C000:275B ; 1: GREEN C000:275B ; 2: BLUE C000:275B ; 3: blue C000:275B ; 4: green C000:275B ; 5: red C000:275C sti C000:275D retn C000:275D sub_C2743 endp C000:275D C000:275E C000:275E ; =============== S U B R O U T I N E ======================================= C000:275E C000:275E C000:275E sub_C275E proc near ; CODE XREF: sub_C2606+44p C000:275E ; C000:27F2p C000:275E push ax C000:275F push dx C000:2760 cli C000:2761 in al, dx C000:2762 mov dl, 0C0h ; 'L' C000:2764 C000:2764 loc_C2764: ; CODE XREF: sub_C275E+Cj C000:2764 mov al, bl C000:2766 out dx, al C000:2767 lodsb C000:2768 out dx, al C000:2769 inc bx C000:276A loop loc_C2764 C000:276C sti C000:276D pop dx C000:276E pop ax C000:276F retn C000:276F sub_C275E endp C000:276F C000:276F ; --------------------------------------------------------------------------- C000:2770 db 12h C000:2771 db 14h C000:2772 db 16h C000:2773 db 13h C000:2774 db 15h C000:2775 db 17h C000:2776 db 2 C000:2777 db 4 C000:2778 db 6 C000:2779 db 3 C000:277A db 5 C000:277B db 7 C000:277C db 76h ; v C000:277D db 27h ; ' C000:277E db 70h ; p C000:277F db 27h ; ' C000:2780 db 79h ; y C000:2781 db 27h ; ' C000:2782 db 73h ; s C000:2783 db 27h ; ' C000:2784 ; --------------------------------------------------------------------------- C000:2784 C000:2784 VGA_SET_BG_COLOR: ; CODE XREF: C000:00F7j C000:2784 ; DATA XREF: C000:00B8o C000:2784 pusha C000:2785 cmp bh, 1 C000:2788 jz short loc_C279E C000:278A ja short loc_C27FA C000:278C mov al, bl C000:278E mov ah, ds:466h C000:2792 and ax, 0E010h C000:2795 or al, ah C000:2797 and bl, 0Fh C000:279A or al, bl C000:279C jmp short loc_C27AC C000:279E ; --------------------------------------------------------------------------- C000:279E C000:279E loc_C279E: ; CODE XREF: C000:2788j C000:279E mov al, bl C000:27A0 shl al, 5 C000:27A3 mov ah, ds:466h C000:27A7 and ax, 0DF20h C000:27AA or al, ah C000:27AC C000:27AC loc_C27AC: ; CODE XREF: C000:279Cj C000:27AC mov ds:466h, al C000:27AF call sub_C2BED C000:27B2 push dx C000:27B3 mov bh, al C000:27B5 and bx, 0F00h C000:27B9 cmp bh, 8 C000:27BC jb short loc_C27C1 C000:27BE add bh, 8 C000:27C1 C000:27C1 loc_C27C1: ; CODE XREF: C000:27BCj C000:27C1 mov dl, 0C0h ; 'L' C000:27C3 mov al, ds:449h C000:27C6 call sub_C2B45 C000:27C9 cli C000:27CA jz short loc_C27D2 C000:27CC mov al, 0 C000:27CE out dx, al C000:27CF mov al, bh C000:27D1 out dx, al C000:27D2 C000:27D2 loc_C27D2: ; CODE XREF: C000:27CAj C000:27D2 mov al, 11h C000:27D4 out dx, al C000:27D5 mov al, bh C000:27D7 out dx, al C000:27D8 sti C000:27D9 pop dx C000:27DA jz short loc_C27F5 C000:27DC mov bl, ds:466h C000:27E0 push cs C000:27E1 pop ds C000:27E2 assume ds:nothing C000:27E2 and bx, 30h C000:27E5 shr bx, 3 C000:27E8 mov si, cs:[bx+277Ch] C000:27ED mov bl, 1 C000:27EF mov cx, 3 C000:27F2 call sub_C275E C000:27F5 C000:27F5 loc_C27F5: ; CODE XREF: C000:27DAj C000:27F5 mov dl, 0C0h ; 'L' C000:27F7 mov al, 20h ; ' ' C000:27F9 out dx, al C000:27FA C000:27FA loc_C27FA: ; CODE XREF: C000:278Aj C000:27FA popa C000:27FB pop ds C000:27FC assume ds:nothing C000:27FC pop si C000:27FD iret C000:27FD ; --------------------------------------------------------------------------- C000:27FE off_C27FE dw offset sub_C2852 ; DATA XREF: C000:2848r C000:2800 dw offset sub_C288A C000:2802 dw offset sub_C28B2 C000:2804 dw offset sub_C28DF C000:2806 dw offset locret_C2889 C000:2808 dw offset locret_C2889 C000:280A dw offset locret_C2889 C000:280C dw offset sub_C2903 C000:280E dw offset sub_C291E C000:2810 dw offset sub_C293A C000:2812 dw offset locret_C2889 C000:2814 dw offset locret_C2889 C000:2816 dw offset locret_C2889 C000:2818 dw offset locret_C2889 C000:281A dw offset locret_C2889 C000:281C dw offset locret_C2889 C000:281E dw offset sub_C296B C000:2820 dw offset locret_C2889 C000:2822 dw offset sub_C2990 C000:2824 dw offset sub_C29D5 C000:2826 dw offset locret_C2889 C000:2828 dw offset sub_C2A19 C000:282A dw offset locret_C2889 C000:282C dw offset sub_C2A31 C000:282E dw offset sub_C2A4E C000:2830 dw offset sub_C2A57 C000:2832 dw offset sub_C2A60 C000:2834 dw offset sub_C2A90 C000:2836 ; --------------------------------------------------------------------------- C000:2836 C000:2836 VGA_STRING: ; CODE XREF: C000:00F7j C000:2836 ; DATA XREF: C000:00C2o C000:2836 push es C000:2837 cmp al, 1Ch C000:2839 jnb short loc_C284E C000:283B test byte ptr ds:487h, 8 C000:2840 jnz short loc_C284E C000:2842 push ax C000:2843 cbw C000:2844 mov si, ax C000:2846 shl si, 1 C000:2848 call cs:off_C27FE[si] C000:284D pop ax C000:284E C000:284E loc_C284E: ; CODE XREF: C000:2839j C000:284E ; C000:2840j C000:284E pop es C000:284F pop ds C000:2850 pop si C000:2851 iret C000:2852 C000:2852 ; =============== S U B R O U T I N E ======================================= C000:2852 C000:2852 C000:2852 sub_C2852 proc near ; CODE XREF: sub_C2606+Fp C000:2852 ; C000:2848p C000:2852 ; DATA XREF: ... C000:2852 push dx C000:2853 push ds C000:2854 lds si, ds:4A8h C000:2858 lds si, [si+4] C000:285B mov ax, ds C000:285D or ax, si C000:285F jz short loc_C2876 C000:2861 mov al, bl C000:2863 sub ah, ah C000:2865 cmp bl, 10h C000:2868 jz short loc_C2876 C000:286A cmp bl, 11h C000:286D ja short loc_C2876 C000:286F jnz short loc_C2872 C000:2871 dec ax C000:2872 C000:2872 loc_C2872: ; CODE XREF: sub_C2852+1Dj C000:2872 add ax, si C000:2874 mov [si], bh C000:2876 C000:2876 loc_C2876: ; CODE XREF: sub_C2852+Dj C000:2876 ; sub_C2852+16j ... C000:2876 pop ds C000:2877 call sub_C2BC9 C000:287A cli C000:287B in al, dx C000:287C mov dl, 0C0h ; 'L' C000:287E mov al, bl C000:2880 out dx, al C000:2881 mov al, bh C000:2883 out dx, al C000:2884 mov al, 20h ; ' ' C000:2886 out dx, al C000:2887 sti C000:2888 pop dx C000:2889 C000:2889 locret_C2889: ; CODE XREF: C000:2848p C000:2889 ; DATA XREF: C000:2806o ... C000:2889 retn C000:2889 sub_C2852 endp C000:2889 C000:288A C000:288A ; =============== S U B R O U T I N E ======================================= C000:288A C000:288A C000:288A sub_C288A proc near ; CODE XREF: C000:2848p C000:288A ; DATA XREF: C000:2800o C000:288A push dx C000:288B push ds C000:288C lds si, ds:4A8h C000:2890 lds si, [si+4] C000:2893 mov ax, ds C000:2895 or ax, si C000:2897 jz short loc_C289E C000:2899 add si, 10h C000:289C mov [si], bh C000:289E C000:289E loc_C289E: ; CODE XREF: sub_C288A+Dj C000:289E pop ds C000:289F call sub_C2BED C000:28A2 cli C000:28A3 in al, dx C000:28A4 mov dl, 0C0h ; 'L' C000:28A6 mov al, 31h ; '1' C000:28A8 out dx, al C000:28A9 mov al, bh C000:28AB out dx, al C000:28AC mov al, 20h ; ' ' C000:28AE out dx, al C000:28AF sti C000:28B0 pop dx C000:28B1 retn C000:28B1 sub_C288A endp C000:28B1 C000:28B2 C000:28B2 ; =============== S U B R O U T I N E ======================================= C000:28B2 C000:28B2 C000:28B2 sub_C28B2 proc near ; CODE XREF: C000:2848p C000:28B2 ; DATA XREF: C000:2802o C000:28B2 push cx C000:28B3 push dx C000:28B4 push di C000:28B5 push es C000:28B6 mov si, dx C000:28B8 call sub_C2BED C000:28BB push es C000:28BC les di, ds:4A8h C000:28C0 pop ds C000:28C1 les di, es:[di+4] C000:28C5 mov ax, es C000:28C7 or ax, di C000:28C9 jz short loc_C28D2 C000:28CB mov cx, 11h C000:28CE push si C000:28CF rep movsb C000:28D1 pop si C000:28D2 C000:28D2 loc_C28D2: ; CODE XREF: sub_C28B2+17j C000:28D2 mov cx, 11h C000:28D5 sub ah, ah C000:28D7 call sub_C2AC9 C000:28DA pop es C000:28DB pop di C000:28DC pop dx C000:28DD pop cx C000:28DE retn C000:28DE sub_C28B2 endp C000:28DE C000:28DF C000:28DF ; =============== S U B R O U T I N E ======================================= C000:28DF C000:28DF C000:28DF sub_C28DF proc near ; CODE XREF: C000:2848p C000:28DF ; DATA XREF: C000:2804o C000:28DF push dx C000:28E0 mov dx, ds:463h C000:28E4 add dl, 6 C000:28E7 cli C000:28E8 in al, dx C000:28E9 mov dl, 0C0h ; 'L' C000:28EB mov al, 30h ; '0' C000:28ED call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:28F0 mov al, bl C000:28F2 and al, 1 C000:28F4 shl al, 3 C000:28F7 and ah, 0F7h C000:28FA or al, ah C000:28FC out dx, al C000:28FD mov al, 20h ; ' ' C000:28FF out dx, al C000:2900 sti C000:2901 pop dx C000:2902 retn C000:2902 sub_C28DF endp C000:2902 C000:2903 C000:2903 ; =============== S U B R O U T I N E ======================================= C000:2903 C000:2903 C000:2903 sub_C2903 proc near ; CODE XREF: sub_C2465+2p C000:2903 ; sub_C2593+18p ... C000:2903 push dx C000:2904 cli C000:2905 call sub_C2CF4 C000:2908 mov dx, 3C0h C000:290B mov al, bl C000:290D call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2910 mov bh, ah C000:2912 mov al, ah C000:2914 out dx, al C000:2915 mov al, 20h ; ' ' C000:2917 out dx, al C000:2918 call sub_C2CF4 C000:291B sti C000:291C pop dx C000:291D retn C000:291D sub_C2903 endp C000:291D C000:291E C000:291E ; =============== S U B R O U T I N E ======================================= C000:291E C000:291E C000:291E sub_C291E proc near ; CODE XREF: C000:2848p C000:291E ; DATA XREF: C000:280Eo C000:291E push dx C000:291F mov dx, ds:463h C000:2923 add dl, 6 C000:2926 cli C000:2927 in al, dx C000:2928 mov dl, 0C0h ; 'L' C000:292A mov al, 11h C000:292C call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:292F mov bh, ah C000:2931 mov al, ah C000:2933 out dx, al C000:2934 mov al, 20h ; ' ' C000:2936 out dx, al C000:2937 sti C000:2938 pop dx C000:2939 retn C000:2939 sub_C291E endp C000:2939 C000:293A C000:293A ; =============== S U B R O U T I N E ======================================= C000:293A C000:293A C000:293A sub_C293A proc near ; CODE XREF: C000:2848p C000:293A ; DATA XREF: C000:2810o C000:293A push cx C000:293B push dx C000:293C push di C000:293D mov di, dx C000:293F mov dx, ds:463h C000:2943 add dl, 6 C000:2946 cli C000:2947 in al, dx C000:2948 mov dl, 0C0h ; 'L' C000:294A sub ah, ah C000:294C mov cx, 10h C000:294F C000:294F loc_C294F: ; CODE XREF: sub_C293A+1Fj C000:294F mov al, ah C000:2951 out dx, al C000:2952 inc dx C000:2953 in al, dx C000:2954 stosb C000:2955 dec dx C000:2956 out dx, al C000:2957 inc ah C000:2959 loop loc_C294F C000:295B mov al, 11h C000:295D out dx, al C000:295E inc dx C000:295F in al, dx C000:2960 stosb C000:2961 dec dx C000:2962 out dx, al C000:2963 mov al, 20h ; ' ' C000:2965 out dx, al C000:2966 sti C000:2967 pop di C000:2968 pop dx C000:2969 pop cx C000:296A retn C000:296A sub_C293A endp C000:296A C000:296B C000:296B ; =============== S U B R O U T I N E ======================================= C000:296B C000:296B C000:296B sub_C296B proc near ; CODE XREF: C000:2848p C000:296B ; sub_C2A90+Cp C000:296B ; DATA XREF: ... C000:296B push cx C000:296C push dx C000:296D test byte ptr ds:489h, 2 C000:2972 jnz short loc_C298B C000:2974 C000:2974 loc_C2974: ; CODE XREF: sub_C296B+23j C000:2974 mov ah, dh C000:2976 mov dx, 3C8h C000:2979 mov al, bl C000:297B out dx, al C000:297C inc dx C000:297D cli C000:297E mov al, ah C000:2980 out dx, al C000:2981 mov al, ch C000:2983 out dx, al C000:2984 mov al, cl C000:2986 out dx, al C000:2987 sti C000:2988 pop dx C000:2989 pop cx C000:298A retn C000:298B ; --------------------------------------------------------------------------- C000:298B C000:298B loc_C298B: ; CODE XREF: sub_C296B+7j C000:298B call sub_C2AA7 C000:298E jmp short loc_C2974 C000:298E sub_C296B endp C000:298E C000:2990 C000:2990 ; =============== S U B R O U T I N E ======================================= C000:2990 C000:2990 C000:2990 sub_C2990 proc near ; CODE XREF: C000:2848p C000:2990 ; DATA XREF: C000:2822o C000:2990 push bx C000:2991 push cx C000:2992 push dx C000:2993 mov si, dx C000:2995 call sub_C299C C000:2998 pop dx C000:2999 pop cx C000:299A pop bx C000:299B retn C000:299B sub_C2990 endp C000:299B C000:299C C000:299C ; =============== S U B R O U T I N E ======================================= C000:299C C000:299C C000:299C sub_C299C proc near ; CODE XREF: sub_C04DB+8p C000:299C ; sub_C04E7+8p ... C000:299C mov al, bl C000:299E mov dx, 3C8h C000:29A1 out dx, al C000:29A2 inc dx C000:29A3 C000:29A3 loc_C29A3: ; CODE XREF: sub_C299C+25j C000:29A3 lods byte ptr es:[si] C000:29A5 mov ah, al C000:29A7 lods byte ptr es:[si] C000:29A9 mov bh, al C000:29AB lods byte ptr es:[si] C000:29AD mov bl, al C000:29AF test byte ptr ds:489h, 2 C000:29B4 jnz short loc_C29C4 C000:29B6 C000:29B6 loc_C29B6: ; CODE XREF: sub_C299C+37j C000:29B6 cli C000:29B7 mov al, ah C000:29B9 out dx, al C000:29BA mov al, bh C000:29BC out dx, al C000:29BD mov al, bl C000:29BF out dx, al C000:29C0 sti C000:29C1 loop loc_C29A3 C000:29C3 retn C000:29C4 ; --------------------------------------------------------------------------- C000:29C4 C000:29C4 loc_C29C4: ; CODE XREF: sub_C299C+18j C000:29C4 push cx C000:29C5 push dx C000:29C6 mov cx, bx C000:29C8 mov dh, ah C000:29CA call sub_C2AA7 C000:29CD mov ah, dh C000:29CF mov bx, cx C000:29D1 pop dx C000:29D2 pop cx C000:29D3 jmp short loc_C29B6 C000:29D3 sub_C299C endp C000:29D3 C000:29D5 C000:29D5 ; =============== S U B R O U T I N E ======================================= C000:29D5 C000:29D5 C000:29D5 sub_C29D5 proc near ; CODE XREF: C000:2848p C000:29D5 ; DATA XREF: C000:2824o C000:29D5 push bx C000:29D6 push dx C000:29D7 cmp bl, 1 C000:29DA ja short loc_C2A15 C000:29DC mov dx, ds:463h C000:29E0 add dl, 6 C000:29E3 cli C000:29E4 in al, dx C000:29E5 mov dl, 0C0h ; 'L' C000:29E7 mov al, 10h C000:29E9 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:29EC or bl, bl C000:29EE jnz short loc_C2A01 C000:29F0 mov al, ah C000:29F2 and al, 7Fh C000:29F4 and bh, 1 C000:29F7 ror bh, 1 C000:29F9 or al, bh C000:29FB out dx, al C000:29FC mov al, 20h ; ' ' C000:29FE out dx, al C000:29FF jmp short loc_C2A15 C000:2A01 ; --------------------------------------------------------------------------- C000:2A01 C000:2A01 loc_C2A01: ; CODE XREF: sub_C29D5+19j C000:2A01 mov al, ah C000:2A03 out dx, al C000:2A04 mov al, 14h C000:2A06 out dx, al C000:2A07 test ah, 80h C000:2A0A jnz short loc_C2A0F C000:2A0C shl bh, 2 C000:2A0F C000:2A0F loc_C2A0F: ; CODE XREF: sub_C29D5+35j C000:2A0F mov al, bh C000:2A11 out dx, al C000:2A12 mov al, 20h ; ' ' C000:2A14 out dx, al C000:2A15 C000:2A15 loc_C2A15: ; CODE XREF: sub_C29D5+5j C000:2A15 ; sub_C29D5+2Aj C000:2A15 sti C000:2A16 pop dx C000:2A17 pop bx C000:2A18 retn C000:2A18 sub_C29D5 endp C000:2A18 C000:2A19 C000:2A19 ; =============== S U B R O U T I N E ======================================= C000:2A19 C000:2A19 C000:2A19 sub_C2A19 proc near ; CODE XREF: C000:2848p C000:2A19 ; sub_C2A90+6p C000:2A19 ; DATA XREF: ... C000:2A19 push dx C000:2A1A mov dx, 3C7h C000:2A1D mov al, bl C000:2A1F out dx, al C000:2A20 inc dx C000:2A21 inc dx C000:2A22 cli C000:2A23 in al, dx C000:2A24 mov ah, al C000:2A26 in al, dx C000:2A27 mov ch, al C000:2A29 in al, dx C000:2A2A mov cl, al C000:2A2C sti C000:2A2D pop dx C000:2A2E mov dh, ah C000:2A30 retn C000:2A30 sub_C2A19 endp C000:2A30 C000:2A31 C000:2A31 ; =============== S U B R O U T I N E ======================================= C000:2A31 C000:2A31 C000:2A31 sub_C2A31 proc near ; CODE XREF: C000:2848p C000:2A31 ; DATA XREF: C000:282Co C000:2A31 push cx C000:2A32 push dx C000:2A33 push di C000:2A34 mov di, dx C000:2A36 mov dx, 3C7h C000:2A39 mov al, bl C000:2A3B out dx, al C000:2A3C inc dx C000:2A3D inc dx C000:2A3E mov ax, cx C000:2A40 C000:2A40 loc_C2A40: ; CODE XREF: sub_C2A31+17j C000:2A40 cli C000:2A41 in al, dx C000:2A42 stosb C000:2A43 in al, dx C000:2A44 stosb C000:2A45 in al, dx C000:2A46 stosb C000:2A47 sti C000:2A48 loop loc_C2A40 C000:2A4A pop di C000:2A4B pop dx C000:2A4C pop cx C000:2A4D retn C000:2A4D sub_C2A31 endp C000:2A4D C000:2A4E C000:2A4E ; =============== S U B R O U T I N E ======================================= C000:2A4E C000:2A4E C000:2A4E sub_C2A4E proc near ; CODE XREF: C000:2848p C000:2A4E ; DATA XREF: C000:282Eo C000:2A4E push dx C000:2A4F mov dx, 3C6h C000:2A52 mov al, bl C000:2A54 out dx, al C000:2A55 pop dx C000:2A56 retn C000:2A56 sub_C2A4E endp C000:2A56 C000:2A57 C000:2A57 ; =============== S U B R O U T I N E ======================================= C000:2A57 C000:2A57 C000:2A57 sub_C2A57 proc near ; CODE XREF: C000:2848p C000:2A57 ; DATA XREF: C000:2830o C000:2A57 push dx C000:2A58 mov dx, 3C6h C000:2A5B in al, dx C000:2A5C mov bl, al C000:2A5E pop dx C000:2A5F retn C000:2A5F sub_C2A57 endp C000:2A5F C000:2A60 C000:2A60 ; =============== S U B R O U T I N E ======================================= C000:2A60 C000:2A60 C000:2A60 sub_C2A60 proc near ; CODE XREF: C000:2848p C000:2A60 ; DATA XREF: C000:2832o C000:2A60 push dx C000:2A61 mov dx, ds:463h C000:2A65 add dl, 6 C000:2A68 cli C000:2A69 in al, dx C000:2A6A mov dl, 0C0h ; 'L' C000:2A6C mov al, 10h C000:2A6E call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2A71 mov al, ah C000:2A73 out dx, al C000:2A74 mov bl, ah C000:2A76 mov al, 14h C000:2A78 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2A7B mov al, ah C000:2A7D out dx, al C000:2A7E mov al, 20h ; ' ' C000:2A80 out dx, al C000:2A81 sti C000:2A82 mov bh, ah C000:2A84 and bl, 80h C000:2A87 rol bl, 1 C000:2A89 jb short loc_C2A8E C000:2A8B shr bh, 2 C000:2A8E C000:2A8E loc_C2A8E: ; CODE XREF: sub_C2A60+29j C000:2A8E pop dx C000:2A8F retn C000:2A8F sub_C2A60 endp C000:2A8F C000:2A90 C000:2A90 ; =============== S U B R O U T I N E ======================================= C000:2A90 C000:2A90 C000:2A90 sub_C2A90 proc near ; CODE XREF: C000:2848p C000:2A90 ; DATA XREF: C000:2834o C000:2A90 push bx C000:2A91 push cx C000:2A92 push dx C000:2A93 jcxz short loc_C2AA3 C000:2A95 C000:2A95 loc_C2A95: ; CODE XREF: sub_C2A90+11j C000:2A95 push cx C000:2A96 call sub_C2A19 C000:2A99 call sub_C2AA7 C000:2A9C call sub_C296B C000:2A9F inc bx C000:2AA0 pop cx C000:2AA1 loop loc_C2A95 C000:2AA3 C000:2AA3 loc_C2AA3: ; CODE XREF: sub_C2A90+3j C000:2AA3 pop dx C000:2AA4 pop cx C000:2AA5 pop bx C000:2AA6 retn C000:2AA6 sub_C2A90 endp C000:2AA6 C000:2AA7 C000:2AA7 ; =============== S U B R O U T I N E ======================================= C000:2AA7 C000:2AA7 C000:2AA7 sub_C2AA7 proc near ; CODE XREF: sub_C296B:loc_C298Bp C000:2AA7 ; sub_C299C+2Ep ... C000:2AA7 push bx C000:2AA8 mov al, 1Eh C000:2AAA mul dh C000:2AAC mov bx, ax C000:2AAE mov al, 3Bh ; ';' C000:2AB0 mul ch C000:2AB2 add bx, ax C000:2AB4 mov al, 0Bh C000:2AB6 mul cl C000:2AB8 add ax, bx C000:2ABA sub dx, dx C000:2ABC mov bx, 64h ; 'd' C000:2ABF div bx C000:2AC1 mov dh, al C000:2AC3 mov cl, al C000:2AC5 mov ch, al C000:2AC7 pop bx C000:2AC8 retn C000:2AC8 sub_C2AA7 endp C000:2AC8 C000:2AC9 C000:2AC9 ; =============== S U B R O U T I N E ======================================= C000:2AC9 C000:2AC9 C000:2AC9 sub_C2AC9 proc near ; CODE XREF: sub_C0427+53p C000:2AC9 ; sub_C28B2+25p C000:2AC9 cli C000:2ACA in al, dx C000:2ACB mov dl, 0C0h ; 'L' C000:2ACD C000:2ACD loc_C2ACD: ; CODE XREF: sub_C2AC9+10j C000:2ACD cmp ah, 10h C000:2AD0 jnb short loc_C2AE0 C000:2AD2 mov al, ah C000:2AD4 out dx, al C000:2AD5 lodsb C000:2AD6 out dx, al C000:2AD7 inc ah C000:2AD9 loop loc_C2ACD C000:2ADB C000:2ADB loc_C2ADB: ; CODE XREF: sub_C2AC9+1Cj C000:2ADB mov al, 20h ; ' ' C000:2ADD out dx, al C000:2ADE sti C000:2ADF retn C000:2AE0 ; --------------------------------------------------------------------------- C000:2AE0 C000:2AE0 loc_C2AE0: ; CODE XREF: sub_C2AC9+7j C000:2AE0 mov al, 11h C000:2AE2 out dx, al C000:2AE3 lodsb C000:2AE4 out dx, al C000:2AE5 jmp short loc_C2ADB C000:2AE5 sub_C2AC9 endp C000:2AE5 C000:2AE7 C000:2AE7 ; =============== S U B R O U T I N E ======================================= C000:2AE7 C000:2AE7 C000:2AE7 sub_C2AE7 proc near ; CODE XREF: sub_C020D:loc_C0215p C000:2AE7 ; sub_C020D:loc_C0229p ... C000:2AE7 pusha C000:2AE8 mov dx, 3C8h C000:2AEB sub al, al C000:2AED out dx, al C000:2AEE inc dx C000:2AEF mov cx, 100h C000:2AF2 C000:2AF2 loc_C2AF2: ; CODE XREF: sub_C2AE7+14j C000:2AF2 mov al, ah C000:2AF4 out dx, al C000:2AF5 mov al, bl C000:2AF7 out dx, al C000:2AF8 mov al, bh C000:2AFA out dx, al C000:2AFB loop loc_C2AF2 C000:2AFD popa C000:2AFE retn C000:2AFE sub_C2AE7 endp C000:2AFE C000:2AFF C000:2AFF ; =============== S U B R O U T I N E ======================================= C000:2AFF C000:2AFF C000:2AFF sub_C2AFF proc near ; CODE XREF: C000:02A9p C000:2AFF ; C000:loc_C22DCp C000:2AFF add [bp+si+3C4h], bh C000:2B03 mov al, 1 C000:2B05 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2B08 or ah, 20h C000:2B0B out dx, ax C000:2B0C retn C000:2B0C sub_C2AFF endp C000:2B0C C000:2B0D C000:2B0D ; =============== S U B R O U T I N E ======================================= C000:2B0D C000:2B0D C000:2B0D sub_C2B0D proc near ; CODE XREF: C000:loc_C02BFp C000:2B0D ; C000:22D7p C000:2B0D mov dx, 3C4h C000:2B10 mov al, 1 C000:2B12 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2B15 and ah, 0DFh C000:2B18 out dx, ax C000:2B19 retn C000:2B19 sub_C2B0D endp C000:2B19 C000:2B1A C000:2B1A ; =============== S U B R O U T I N E ======================================= C000:2B1A C000:2B1A ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2B1A C000:2B1A read_CRTC_al_ah proc near ; CODE XREF: vga_init2_2+4p C000:2B1A ; vga_init2_2+10p ... C000:2B1A out dx, al ; set CRTC index register = AL C000:2B1B mov ah, al ; AH = index C000:2B1D inc dx ; CRTC data port DX = 03D5h C000:2B1E in al, dx ; read CRTC register to AL C000:2B1F dec dx ; DX = 03D4h (preserve input value) C000:2B1F DX=03B4h C000:2B20 xchg al, ah ; preserve AL C000:2B22 retn ; return value in AH C000:2B22 read_CRTC_al_ah endp C000:2B22 C000:2B23 C000:2B23 ; =============== S U B R O U T I N E ======================================= C000:2B23 C000:2B23 C000:2B23 sub_C2B23 proc near ; CODE XREF: C000:02D7p C000:2B23 pusha C000:2B24 push es C000:2B25 call sub_C2C61 C000:2B28 lahf C000:2B29 test ah, 1 C000:2B2C pop es C000:2B2D popa C000:2B2E retn C000:2B2E sub_C2B23 endp C000:2B2E C000:2B2F C000:2B2F ; =============== S U B R O U T I N E ======================================= C000:2B2F C000:2B2F C000:2B2F sub_C2B2F proc near C000:2B2F push bx C000:2B30 push es C000:2B31 call sub_C2C61 C000:2B34 jb short loc_C2B42 C000:2B36 cmp byte ptr es:[bx+4], 1 C000:2B3B jz short loc_C2B42 C000:2B3D cmp byte ptr es:[bx+4], 3 C000:2B42 C000:2B42 loc_C2B42: ; CODE XREF: sub_C2B2F+5j C000:2B42 ; sub_C2B2F+Cj C000:2B42 pop es C000:2B43 pop bx C000:2B44 retn C000:2B44 sub_C2B2F endp C000:2B44 C000:2B45 C000:2B45 ; =============== S U B R O U T I N E ======================================= C000:2B45 C000:2B45 C000:2B45 sub_C2B45 proc near ; CODE XREF: sub_C0528+3p C000:2B45 ; C000:12F5p ... C000:2B45 push bx C000:2B46 push es C000:2B47 call sub_C2C61 C000:2B4A jb short loc_C2B58 C000:2B4C cmp byte ptr es:[bx+4], 0 C000:2B51 jz short loc_C2B58 C000:2B53 cmp byte ptr es:[bx+4], 1 C000:2B58 C000:2B58 loc_C2B58: ; CODE XREF: sub_C2B45+5j C000:2B58 ; sub_C2B45+Cj C000:2B58 pop es C000:2B59 pop bx C000:2B5A retn C000:2B5A sub_C2B45 endp C000:2B5A C000:2B5B C000:2B5B ; =============== S U B R O U T I N E ======================================= C000:2B5B C000:2B5B C000:2B5B sub_C2B5B proc near ; CODE XREF: sub_C0528+1Bp C000:2B5B pusha C000:2B5C mov dx, 3C4h C000:2B5F mov al, 1 C000:2B61 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2B64 test ah, 1 C000:2B67 jnz short loc_C2B74 C000:2B69 call get_CRTC_port C000:2B6C mov al, 63h ; 'c' C000:2B6E call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2B71 test ah, 80h C000:2B74 C000:2B74 loc_C2B74: ; CODE XREF: sub_C2B5B+Cj C000:2B74 popa C000:2B75 retn C000:2B75 sub_C2B5B endp C000:2B75 C000:2B76 C000:2B76 ; =============== S U B R O U T I N E ======================================= C000:2B76 C000:2B76 C000:2B76 sub_C2B76 proc near ; CODE XREF: VESA_SCANLINE_LEN:loc_C74E4p C000:2B76 push bx C000:2B77 push es C000:2B78 call sub_C2C61 C000:2B7B jb short loc_C2B90 C000:2B7D cmp byte ptr es:[bx+4], 5 C000:2B82 jz short loc_C2B90 C000:2B84 cmp byte ptr es:[bx+4], 3 C000:2B89 jz short loc_C2B90 C000:2B8B cmp byte ptr es:[bx+4], 4 C000:2B90 C000:2B90 loc_C2B90: ; CODE XREF: sub_C2B76+5j C000:2B90 ; sub_C2B76+Cj ... C000:2B90 pop es C000:2B91 pop bx C000:2B92 retn C000:2B92 sub_C2B76 endp C000:2B92 C000:2B93 C000:2B93 ; =============== S U B R O U T I N E ======================================= C000:2B93 C000:2B93 C000:2B93 sub_C2B93 proc near ; CODE XREF: sub_C0B86:loc_C0C1Fp C000:2B93 ; sub_C0C23:loc_C0CA7p ... C000:2B93 pusha C000:2B94 mov al, 0B6h ; 'Â' C000:2B96 out 43h, al ; Timer 8253-5 (AT: 8254.2). C000:2B98 mov al, 33h ; '3' C000:2B9A out 42h, al ; Timer 8253-5 (AT: 8254.2). C000:2B9C mov al, 5 C000:2B9E out 42h, al ; Timer 8253-5 (AT: 8254.2). C000:2BA0 in al, 61h ; PC/XT PPI port B bits: C000:2BA0 ; 0: Tmr 2 gate =T= OR 03H=spkr ON C000:2BA0 ; 1: Tmr 2 data =- AND 0fcH=spkr OFF C000:2BA0 ; 3: 1=read high switches C000:2BA0 ; 4: 0=enable RAM parity checking C000:2BA0 ; 5: 0=enable I/O channel check C000:2BA0 ; 6: 0=hold keyboard clock low C000:2BA0 ; 7: 0=enable kbrd C000:2BA2 push ax C000:2BA3 or al, 3 C000:2BA5 out 61h, al ; PC/XT PPI port B bits: C000:2BA5 ; 0: Tmr 2 gate =T= OR 03H=spkr ON C000:2BA5 ; 1: Tmr 2 data =- AND 0fcH=spkr OFF C000:2BA5 ; 3: 1=read high switches C000:2BA5 ; 4: 0=enable RAM parity checking C000:2BA5 ; 5: 0=enable I/O channel check C000:2BA5 ; 6: 0=hold keyboard clock low C000:2BA5 ; 7: 0=enable kbrd C000:2BA7 mov cx, 4 C000:2BAA call sub_C2BB2 C000:2BAD pop ax C000:2BAE out 61h, al ; PC/XT PPI port B bits: C000:2BAE ; 0: Tmr 2 gate =T= OR 03H=spkr ON C000:2BAE ; 1: Tmr 2 data =- AND 0fcH=spkr OFF C000:2BAE ; 3: 1=read high switches C000:2BAE ; 4: 0=enable RAM parity checking C000:2BAE ; 5: 0=enable I/O channel check C000:2BAE ; 6: 0=hold keyboard clock low C000:2BAE ; 7: 0=enable kbrd C000:2BB0 popa C000:2BB1 retn C000:2BB1 sub_C2B93 endp C000:2BB1 C000:2BB2 C000:2BB2 ; =============== S U B R O U T I N E ======================================= C000:2BB2 C000:2BB2 C000:2BB2 sub_C2BB2 proc near ; CODE XREF: sub_C2B93+17p C000:2BB2 ; sub_C2C50+9p C000:2BB2 pusha C000:2BB3 push ds C000:2BB4 C000:2BB4 loc_C2BB4: ; CODE XREF: sub_C2BB2+12j C000:2BB4 push cx C000:2BB5 mov cx, 6C81h C000:2BB8 C000:2BB8 loc_C2BB8: ; CODE XREF: sub_C2BB2+Fj C000:2BB8 push cx C000:2BB9 mov cx, 10h C000:2BBC C000:2BBC loc_C2BBC: ; CODE XREF: sub_C2BB2+Cj C000:2BBC in al, 80h ; manufacture's diagnostic checkpoint C000:2BBE loop loc_C2BBC C000:2BC0 pop cx C000:2BC1 loop loc_C2BB8 C000:2BC3 pop cx C000:2BC4 loop loc_C2BB4 C000:2BC6 pop ds C000:2BC7 popa C000:2BC8 retn C000:2BC8 sub_C2BB2 endp C000:2BC8 C000:2BC9 C000:2BC9 ; =============== S U B R O U T I N E ======================================= C000:2BC9 C000:2BC9 C000:2BC9 sub_C2BC9 proc near ; CODE XREF: sub_C0268+3p C000:2BC9 ; sub_C2852+25p C000:2BC9 push ax C000:2BCA push cx C000:2BCB call get_CRTC_port C000:2BCE add dl, 6 C000:2BD1 sub cx, cx C000:2BD3 C000:2BD3 loc_C2BD3: ; CODE XREF: sub_C2BC9+Dj C000:2BD3 in al, dx C000:2BD4 test al, 1 C000:2BD6 loope loc_C2BD3 C000:2BD8 pop cx C000:2BD9 pop ax C000:2BDA retn C000:2BDA sub_C2BC9 endp C000:2BDA C000:2BDB C000:2BDB ; =============== S U B R O U T I N E ======================================= C000:2BDB C000:2BDB C000:2BDB wait4retrace proc near ; CODE XREF: sub_C0268+6p C000:2BDB push ax C000:2BDC push cx C000:2BDD call get_CRTC_port C000:2BE0 add dl, 6 ; DX=3BAh C000:2BE3 sub cx, cx ; CX=0 C000:2BE5 C000:2BE5 loc_C2BE5: ; CODE XREF: wait4retrace+Dj C000:2BE5 in al, dx C000:2BE6 test al, 1 C000:2BE8 loopne loc_C2BE5 ; wait for retrace C000:2BEA pop cx C000:2BEB pop ax C000:2BEC retn C000:2BEC wait4retrace endp C000:2BEC C000:2BED C000:2BED ; =============== S U B R O U T I N E ======================================= C000:2BED C000:2BED C000:2BED sub_C2BED proc near ; CODE XREF: C000:27AFp C000:2BED ; sub_C288A+15p ... C000:2BED push ax C000:2BEE push cx C000:2BEF mov dx, ds:463h ; = 2A74h C000:2BF3 add dl, 6 C000:2BF6 sub cx, cx C000:2BF8 C000:2BF8 loc_C2BF8: ; CODE XREF: sub_C2BED+Ej C000:2BF8 in al, dx C000:2BF9 test al, 8 C000:2BFB loope loc_C2BF8 C000:2BFD pop cx C000:2BFE pop ax C000:2BFF retn C000:2BFF sub_C2BED endp C000:2BFF C000:2C00 C000:2C00 ; =============== S U B R O U T I N E ======================================= C000:2C00 C000:2C00 C000:2C00 sub_C2C00 proc near ; CODE XREF: VESA_SET_DISP_START+12p C000:2C00 push ax C000:2C01 push cx C000:2C02 mov dx, ds:463h ; = 2A74h C000:2C06 add dl, 6 C000:2C09 sub cx, cx C000:2C0B C000:2C0B loc_C2C0B: ; CODE XREF: sub_C2C00+Ej C000:2C0B in al, dx C000:2C0C test al, 8 C000:2C0E loopne loc_C2C0B C000:2C10 pop cx C000:2C11 pop ax C000:2C12 retn C000:2C12 sub_C2C00 endp C000:2C12 C000:2C13 C000:2C13 ; =============== S U B R O U T I N E ======================================= C000:2C13 C000:2C13 C000:2C13 sub_C2C13 proc near ; CODE XREF: C000:029Dp C000:2C13 push ax C000:2C14 push dx C000:2C15 cli C000:2C16 call sub_C2CF4 C000:2C19 mov dx, 3C0h C000:2C1C sub al, al C000:2C1E out dx, al ; EGA: palette register: select colors for attribute AL: C000:2C1E ; 0: RED C000:2C1E ; 1: GREEN C000:2C1E ; 2: BLUE C000:2C1E ; 3: blue C000:2C1E ; 4: green C000:2C1E ; 5: red C000:2C1F sti C000:2C20 pop dx C000:2C21 pop ax C000:2C22 retn C000:2C22 sub_C2C13 endp C000:2C22 C000:2C23 C000:2C23 ; =============== S U B R O U T I N E ======================================= C000:2C23 C000:2C23 C000:2C23 sub_C2C23 proc near ; CODE XREF: C000:02CAp C000:2C23 push ax C000:2C24 push dx C000:2C25 cli C000:2C26 call sub_C2CF4 C000:2C29 mov dx, 3C0h C000:2C2C mov al, 20h ; ' ' C000:2C2E out dx, al ; EGA: palette register: select colors for attribute AL: C000:2C2E ; 0: RED C000:2C2E ; 1: GREEN C000:2C2E ; 2: BLUE C000:2C2E ; 3: blue C000:2C2E ; 4: green C000:2C2E ; 5: red C000:2C2F call sub_C2CF4 C000:2C32 sti C000:2C33 pop dx C000:2C34 pop ax C000:2C35 retn C000:2C35 sub_C2C23 endp C000:2C35 C000:2C36 C000:2C36 ; =============== S U B R O U T I N E ======================================= C000:2C36 C000:2C36 C000:2C36 sub_C2C36 proc near ; CODE XREF: sub_C03D2+1Fp C000:2C36 ; sub_C03D2+3Ep ... C000:2C36 mov ah, bl C000:2C38 lodsb C000:2C39 xchg al, ah C000:2C3B out dx, ax C000:2C3C inc bx C000:2C3D loop sub_C2C36 C000:2C3F retn C000:2C3F sub_C2C36 endp C000:2C3F C000:2C40 C000:2C40 ; =============== S U B R O U T I N E ======================================= C000:2C40 C000:2C40 C000:2C40 get_CRTC_port proc near ; CODE XREF: sub_C2593+8p C000:2C40 ; sub_C2606+2Cp ... C000:2C40 push ax ; determine IO port of CRTC 3B4h/3D4h C000:2C41 mov dx, 3CCh ; VGA Miscellaneous Output Register C000:2C44 in al, dx ; bit0: CRTC IO sel. 0=3B4h (MDA), 1=3D4h (CGA), bit1: RAM enable, bit3:0: clk.sel, bit5: page bit, bit6: hsync.pol, bit7: vsync.pol C000:2C45 mov dx, 3B4h ; DX = 3B4h C000:2C48 test al, 1 ; test bit 0 (CRTC IO sel.) C000:2C4A jz short bit0_is_0 ; if bit0 is 0 then CRTC IO = 3B4h C000:2C4C mov dl, 0D4h ; 'ï' ; else CRTC IO = 3D4h C000:2C4E C000:2C4E bit0_is_0: ; CODE XREF: get_CRTC_port+Aj C000:2C4E pop ax C000:2C4F retn ; DX = 3D4h C000:2C4F get_CRTC_port endp C000:2C4F C000:2C50 C000:2C50 ; =============== S U B R O U T I N E ======================================= C000:2C50 C000:2C50 C000:2C50 sub_C2C50 proc near ; CODE XREF: sub_C020D+56p C000:2C50 pusha C000:2C51 mov bx, cx C000:2C53 C000:2C53 loc_C2C53: ; CODE XREF: sub_C2C50+Dj C000:2C53 call sub_C2B93 C000:2C56 mov cx, 2 C000:2C59 call sub_C2BB2 C000:2C5C dec bx C000:2C5D jnz short loc_C2C53 C000:2C5F popa C000:2C60 retn C000:2C60 sub_C2C50 endp C000:2C60 C000:2C61 C000:2C61 ; =============== S U B R O U T I N E ======================================= C000:2C61 C000:2C61 C000:2C61 sub_C2C61 proc near ; CODE XREF: sub_C04A4+14p C000:2C61 ; C000:05EBp ... C000:2C61 call sub_C2C9C C000:2C64 les bx, es:[bx+4] C000:2C68 C000:2C68 loc_C2C68: ; CODE XREF: sub_C2C61+15j C000:2C68 cmp byte ptr es:[bx], 0FFh C000:2C6C jz short loc_C2C7A C000:2C6E cmp es:[bx], al C000:2C71 jz short loc_C2C78 C000:2C73 add bx, 0Eh C000:2C76 jmp short loc_C2C68 C000:2C78 ; --------------------------------------------------------------------------- C000:2C78 C000:2C78 loc_C2C78: ; CODE XREF: sub_C2C61+10j C000:2C78 clc C000:2C79 retn C000:2C7A ; --------------------------------------------------------------------------- C000:2C7A C000:2C7A loc_C2C7A: ; CODE XREF: sub_C2C61+Bj C000:2C7A sub bx, bx C000:2C7C stc C000:2C7D retn C000:2C7D sub_C2C61 endp C000:2C7D C000:2C7E C000:2C7E ; =============== S U B R O U T I N E ======================================= C000:2C7E C000:2C7E C000:2C7E sub_C2C7E proc near ; CODE XREF: sub_C717F:loc_C718Fp C000:2C7E ; sub_C73FA+2p C000:2C7E call sub_C2C9C C000:2C81 les bx, es:[bx+4] C000:2C85 C000:2C85 loc_C2C85: ; CODE XREF: sub_C2C7E+16j C000:2C85 cmp byte ptr es:[bx], 0FFh C000:2C89 jz short sub_C2C98 C000:2C8B cmp es:[bx+2], ax C000:2C8F jz short sub_C2C96 C000:2C91 add bx, 0Eh C000:2C94 jmp short loc_C2C85 C000:2C94 sub_C2C7E endp C000:2C94 C000:2C96 C000:2C96 ; =============== S U B R O U T I N E ======================================= C000:2C96 C000:2C96 C000:2C96 sub_C2C96 proc near ; CODE XREF: sub_C2C7E+11j C000:2C96 clc C000:2C97 retn C000:2C97 sub_C2C96 endp C000:2C97 C000:2C98 C000:2C98 ; =============== S U B R O U T I N E ======================================= C000:2C98 C000:2C98 C000:2C98 sub_C2C98 proc near ; CODE XREF: sub_C2C7E+Bj C000:2C98 sub bx, bx C000:2C9A stc C000:2C9B retn C000:2C9B sub_C2C98 endp C000:2C9B C000:2C9C C000:2C9C ; =============== S U B R O U T I N E ======================================= C000:2C9C C000:2C9C C000:2C9C sub_C2C9C proc near ; CODE XREF: sub_C2C61p C000:2C9C ; sub_C2C7Ep ... C000:2C9C push ax C000:2C9D sub bx, bx C000:2C9F mov es, bx C000:2CA1 les bx, es:4A8h C000:2CA6 les bx, es:[bx+10h] C000:2CAA les bx, es:[bx+16h] C000:2CAE mov ax, es C000:2CB0 or ax, bx C000:2CB2 jz short loc_C2CB6 C000:2CB4 C000:2CB4 loc_C2CB4: ; CODE XREF: sub_C2C9C+1Fj C000:2CB4 pop ax C000:2CB5 retn C000:2CB6 ; --------------------------------------------------------------------------- C000:2CB6 C000:2CB6 loc_C2CB6: ; CODE XREF: sub_C2C9C+16j C000:2CB6 push cs C000:2CB7 pop es C000:2CB8 assume es:nothing C000:2CB8 mov bx, 69BCh C000:2CBB jmp short loc_C2CB4 C000:2CBB sub_C2C9C endp C000:2CBB C000:2CBD C000:2CBD ; =============== S U B R O U T I N E ======================================= C000:2CBD C000:2CBD C000:2CBD sub_C2CBD proc near C000:2CBD pusha C000:2CBE push ds C000:2CBF call sub_C679B C000:2CC2 cmp al, 2 C000:2CC4 jnz short loc_C2CD4 C000:2CC6 sub ax, ax C000:2CC8 mov ds, ax C000:2CCA lds ax, ds:68h C000:2CCE mov bx, ds C000:2CD0 or ax, bx C000:2CD2 jnz short loc_C2CD8 C000:2CD4 C000:2CD4 loc_C2CD4: ; CODE XREF: sub_C2CBD+7j C000:2CD4 stc C000:2CD5 pop ds C000:2CD6 popa C000:2CD7 retn C000:2CD8 ; --------------------------------------------------------------------------- C000:2CD8 C000:2CD8 loc_C2CD8: ; CODE XREF: sub_C2CBD+15j C000:2CD8 pop ds C000:2CD9 popa C000:2CDA int 1Ah C000:2CDC retn C000:2CDC sub_C2CBD endp C000:2CDC C000:2CDD C000:2CDD ; =============== S U B R O U T I N E ======================================= C000:2CDD C000:2CDD C000:2CDD sub_C2CDD proc near ; CODE XREF: sub_C724B+6Bp C000:2CDD ; sub_C7609+4p ... C000:2CDD push bx C000:2CDE push es C000:2CDF call sub_C2C61 C000:2CE2 mov al, 0 C000:2CE4 jb short loc_C2CEA C000:2CE6 mov al, es:[bx+7] C000:2CEA C000:2CEA loc_C2CEA: ; CODE XREF: sub_C2CDD+7j C000:2CEA pop es C000:2CEB assume es:nothing C000:2CEB pop bx C000:2CEC retn C000:2CEC sub_C2CDD endp C000:2CEC C000:2CED C000:2CED ; =============== S U B R O U T I N E ======================================= C000:2CED C000:2CED C000:2CED STRCPY_DSSI_ESDI proc near ; CODE XREF: STRCPY_DSSI_ESDI+4j C000:2CED ; VESA_GET_INFO+5Dp ... C000:2CED lodsb ; DS:[SI] -> AL (source) C000:2CEE stosb ; AL -> ES:[DI] (destination) C000:2CEF or al, al ; AL = AL and update flags C000:2CF1 jnz short STRCPY_DSSI_ESDI ; exit on zero character (string terminator) C000:2CF3 retn C000:2CF3 STRCPY_DSSI_ESDI endp C000:2CF3 C000:2CF4 C000:2CF4 ; =============== S U B R O U T I N E ======================================= C000:2CF4 C000:2CF4 C000:2CF4 sub_C2CF4 proc near ; CODE XREF: sub_C2903+2p C000:2CF4 ; sub_C2903+15p ... C000:2CF4 push ax C000:2CF5 push dx C000:2CF6 mov dx, 3DAh C000:2CF9 in al, dx ; Video status bits: C000:2CF9 ; 0: retrace. 1=display is in vert or horiz retrace. C000:2CF9 ; 1: 1=light pen is triggered; 0=armed C000:2CF9 ; 2: 1=light pen switch is open; 0=closed C000:2CF9 ; 3: 1=vertical sync pulse is occurring. C000:2CFA mov dl, 0BAh ; '¦' C000:2CFC in al, dx ; Video status bits: C000:2CFC ; 0: retrace. 1=display is in vert or horiz retrace. C000:2CFC ; 1: 1=light pen is triggered; 0=armed C000:2CFC ; 2: 1=light pen switch is open; 0=closed C000:2CFC ; 3: 1=vertical sync pulse is occurring. C000:2CFD pop dx C000:2CFE pop ax C000:2CFF retn C000:2CFF sub_C2CF4 endp C000:2CFF C000:2D00 C000:2D00 ; =============== S U B R O U T I N E ======================================= C000:2D00 C000:2D00 C000:2D00 sub_C2D00 proc near ; CODE XREF: sub_C0F22+5p C000:2D00 ; sub_C0FA7+5p ... C000:2D00 push ax C000:2D01 push bx C000:2D02 push es C000:2D03 mov al, ds:449h C000:2D06 call sub_C2C61 C000:2D09 mov bp, es:[bx+0Ch] C000:2D0D pop es C000:2D0E pop bx C000:2D0F pop ax C000:2D10 retn C000:2D10 sub_C2D00 endp C000:2D10 C000:2D11 C000:2D11 ; =============== S U B R O U T I N E ======================================= C000:2D11 C000:2D11 C000:2D11 sub_C2D11 proc near ; CODE XREF: sub_C2D5F+5p C000:2D11 ; sub_C2D5F+10p ... C000:2D11 push ax C000:2D12 push dx C000:2D13 call get_CRTC_port ; select EGA CRTC port, DX=3D4h C000:2D16 mov al, 51h ; 'Q' C000:2D18 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2D1B test ah, 1 C000:2D1E jnz short loc_C2D2A C000:2D20 mov al, 67h ; 'g' C000:2D22 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2D25 test ah, 1 C000:2D28 jz short loc_C2D35 C000:2D2A C000:2D2A loc_C2D2A: ; CODE XREF: sub_C2D11+Dj C000:2D2A mov al, 52h ; 'R' C000:2D2C call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2D2F and ah, 3 C000:2D32 cmp ah, 0 C000:2D35 C000:2D35 loc_C2D35: ; CODE XREF: sub_C2D11+17j C000:2D35 pop dx C000:2D36 pop ax C000:2D37 retn C000:2D37 sub_C2D11 endp C000:2D37 C000:2D38 C000:2D38 ; =============== S U B R O U T I N E ======================================= C000:2D38 C000:2D38 C000:2D38 sub_C2D38 proc near ; CODE XREF: sub_C2D5F+15p C000:2D38 push ax C000:2D39 push dx C000:2D3A call get_CRTC_port C000:2D3D mov al, 51h ; 'Q' C000:2D3F call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2D42 test ah, 1 C000:2D45 jnz short loc_C2D51 C000:2D47 mov al, 67h ; 'g' C000:2D49 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2D4C test ah, 1 C000:2D4F jz short loc_C2D5C C000:2D51 C000:2D51 loc_C2D51: ; CODE XREF: sub_C2D38+Dj C000:2D51 mov al, 52h ; 'R' C000:2D53 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:2D56 and ah, 3 C000:2D59 cmp ah, 1 C000:2D5C C000:2D5C loc_C2D5C: ; CODE XREF: sub_C2D38+17j C000:2D5C pop dx C000:2D5D pop ax C000:2D5E retn C000:2D5E sub_C2D38 endp C000:2D5E C000:2D5F C000:2D5F ; =============== S U B R O U T I N E ======================================= C000:2D5F C000:2D5F C000:2D5F sub_C2D5F proc near ; CODE XREF: hi_level_func+5Dp C000:2D5F ; sub_C66B3+3Ap ... C000:2D5F pushf C000:2D60 cmp al, 2Ch ; ',' C000:2D62 jnz short loc_C2D6B C000:2D64 call sub_C2D11 C000:2D67 jz short loc_C2D7B C000:2D69 dec al C000:2D6B C000:2D6B loc_C2D6B: ; CODE XREF: sub_C2D5F+3j C000:2D6B cmp al, 2Eh ; '.' C000:2D6D jnz short loc_C2D7B C000:2D6F call sub_C2D11 C000:2D72 jz short loc_C2D7B C000:2D74 call sub_C2D38 C000:2D77 jz short loc_C2D7B C000:2D79 dec al C000:2D7B C000:2D7B loc_C2D7B: ; CODE XREF: sub_C2D5F+8j C000:2D7B ; sub_C2D5F+Ej ... C000:2D7B popf C000:2D7C retn C000:2D7C sub_C2D5F endp C000:2D7C C000:2D7C ; --------------------------------------------------------------------------- C000:2D7D db 0 C000:2D7E db 0 C000:2D7F db 0 C000:2D80 byte_C2D80 db 28h,18h,8,0,8,9,3,0,2,63h,2Dh,27h,28h,90h,2Bh,0A0h,0BFh,1Fh,0,0C7h,6,7,0,0,0,0,9Ch,8Eh,8Fh,14h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,6,7,10h,11h,12h,13h,14h,15h,16h,17h,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 28h,18h,8,0,8,9,3,0,2,63h,2Dh,27h,28h,90h,2Bh,0A0h,0BFh,1Fh,0,0C7h,6,7,0,0,0,0,9Ch,8Eh,8Fh,14h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,6,7,10h,11h,12h,13h,14h,15h,16h,17h,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 50h,18h,8,0,10h,1,3,0,2,63h,5Fh,4Fh,50h,82h,55h,81h,0BFh,1Fh,0,0C7h,6,7,0,0,0,0,9Ch,8Eh,8Fh,28h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,6,7,10h,11h,12h,13h,14h,15h,16h,17h,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 50h,18h,8,0,10h,1,3,0,2,63h,5Fh,4Fh,50h,82h,55h,81h,0BFh,1Fh,0,0C7h,6,7,0,0,0,0,9Ch,8Eh,8Fh,28h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,6,7,10h,11h,12h,13h,14h,15h,16h,17h,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 28h,18h,8,0,40h,9,3,0,2,63h,2Dh,27h,28h,90h,2Bh,80h,0BFh,1Fh,0,0C1h,0,0,0,0,0,0,9Ch,8Eh,8Fh,14h,0,96h,0B9h,0A2h,0FFh,0,13h,15h,17h,2,4,6,7,10h,11h,12h,13h,14h,15h,16h,17h,1,0,3,0,0,0,0,0,0,30h,0Fh,0,0FFh C000:2D80 db 28h,18h,8,0,40h,9,3,0,2,63h,2Dh,27h,28h,90h,2Bh,80h,0BFh,1Fh,0,0C1h,0,0,0,0,0,0,9Ch,8Eh,8Fh,14h,0,96h,0B9h,0A2h,0FFh,0,13h,15h,17h,2,4,6,7,10h,11h,12h,13h,14h,15h,16h,17h,1,0,3,0,0,0,0,0,0,30h,0Fh,0,0FFh C000:2D80 db 50h,18h,8,0,40h,1,1,0,6,63h,5Fh,4Fh,50h,82h,54h,80h,0BFh,1Fh,0,0C1h,0,0,0,0,0,0,9Ch,8Eh,8Fh,28h,0,96h,0B9h,0C2h,0FFh,0,17h,17h,17h,17h,17h,17h,17h,17h,17h,17h,17h,17h,17h,17h,17h,1,0,1,0,0,0,0,0,0,0,0Dh,0,0FFh C000:2D80 db 50h,18h,0Eh,0,10h,0,3,0,3,0A6h,5Fh,4Fh,50h,82h,55h,81h,0BFh,1Fh,0,4Dh,0Bh,0Ch,0,0,0,0,83h,85h,5Dh,28h,0Dh,63h,0BAh,0A3h,0FFh,0,8,8,8,8,8,8,8,10h,18h,18h,18h,18h,18h,18h,18h,0Eh,0,0Fh,8,0,0,0,0,0,10h,0Ah,0,0FFh C000:2D80 db 50h,18h,10h,0FFh,0FFh,1,0Fh,0,0Eh,63h,5Fh,4Fh,50h,82h,54h,80h,0BFh,1Fh,0,40h,0,0,0,0,0,0,9Ch,0Eh,8Fh,50h,1Fh,96h,0B9h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 50h,1Dh,10h,0FFh,0FFh,1,0Fh,0,0Eh,0E3h,5Fh,4Fh,50h,82h,54h,80h,0Bh,3Eh,80h,40h,0,0,0,0,0,0,0EAh,0Ch,0DFh,50h,0,0E7h,4,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 64h,24h,10h,0,0FAh,1,0Fh,0,6,63h,7Fh,63h,64h,82h,6Bh,1Bh,72h,0F0h,0,60h,0,0,0,0,0,0,59h,0Dh,57h,32h,0,57h,73h,0E3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,1,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 64h,24h,10h,0FFh,0FFh,1,0Fh,0,0Eh,2Bh,7Fh,63h,64h,82h,6Bh,1Bh,72h,0F0h,0,60h,0,0,0,0,0,0,59h,0Dh,57h,64h,0,57h,73h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,1,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 80h,2Fh,10h,0FFh,0FFh,1,0Fh,0,6,0EBh,0A3h,7Fh,80h,86h,85h,96h,24h,0F5h,0,60h,0,0,0,0,0,0,4,0Ah,0FFh,40h,0,0FFh,25h,0E3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,1,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 28h,18h,8,0,20h,9,0Fh,0,6,63h,2Dh,27h,28h,90h,2Bh,80h,0BFh,1Fh,0,0C0h,0,0,0,0,0,0,9Ch,8Eh,8Fh,14h,0,96h,0B9h,0E3h,0FFh,0,1,2,3,4,5,6,7,10h,11h,12h,13h,14h,15h,16h,17h,1,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 50h,18h,8,0,40h,1,0Fh,0,6,63h,5Fh,4Fh,50h,82h,54h,80h,0BFh,1Fh,0,0C0h,0,0,0,0,0,0,9Ch,8Eh,8Fh,28h,0,96h,0B9h,0E3h,0FFh,0,1,2,3,4,5,6,7,10h,11h,12h,13h,14h,15h,16h,17h,1,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 80h,2Fh,10h,0FFh,0FFh,1,0Fh,0,0Eh,0EBh,0A3h,7Fh,80h,86h,85h,96h,24h,0F5h,0,60h,0,0,0,0,0,0,4,0Ah,0FFh,80h,0,0FFh,25h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 0A0h,3Fh,10h,0FFh,0FFh,1,0Fh,0,6,2Bh,0CFh,9Fh,0A0h,92h,0AAh,19h,28h,52h,0,40h,0,0,0,0,0,0,1,4,0FFh,50h,0,0,29h,0E3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,5,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 50h,18h,0Eh,0,80h,1,0Fh,0,6,0A2h,5Fh,4Fh,50h,82h,54h,80h,0BFh,1Fh,0,40h,0,0,0,0,0,0,83h,85h,5Dh,28h,0Fh,63h,0BAh,0E3h,0FFh,0,8,0,0,18h,18h,0,0,0,8,0,0,0,18h,0,0,0Bh,0,5,0,0,0,0,0,0,0,5,5,0FFh C000:2D80 db 50h,18h,0Eh,0,80h,1,0Fh,0,6,0A3h,5Fh,4Fh,50h,82h,54h,80h,0BFh,1Fh,0,40h,0,0,0,0,0,0,83h,85h,5Dh,28h,0Fh,63h,0BAh,0E3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,1,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 28h,18h,0Eh,0,8,9,3,0,2,0A3h,2Dh,27h,28h,90h,2Bh,0A0h,0BFh,1Fh,0,4Dh,0Bh,0Ch,0,0,0,0,83h,85h,5Dh,14h,1Fh,63h,0BAh,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 28h,18h,0Eh,0,8,9,3,0,2,0A3h,2Dh,27h,28h,90h,2Bh,0A0h,0BFh,1Fh,0,4Dh,0Bh,0Ch,0,0,0,0,83h,85h,5Dh,14h,1Fh,63h,0BAh,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 50h,18h,0Eh,0,10h,1,3,0,2,0A3h,5Fh,4Fh,50h,82h,55h,81h,0BFh,1Fh,0,4Dh,0Bh,0Ch,0,0,0,0,83h,85h,5Dh,28h,1Fh,63h,0BAh,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 50h,18h,0Eh,0,10h,1,3,0,2,0A3h,5Fh,4Fh,50h,82h,55h,81h,0BFh,1Fh,0,4Dh,0Bh,0Ch,0,0,0,0,83h,85h,5Dh,28h,1Fh,63h,0BAh,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,8,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 28h,18h,10h,0,8,8,3,0,2,67h,2Dh,27h,28h,90h,2Bh,0A0h,0BFh,1Fh,0,4Fh,0Dh,0Eh,0,0,0,0,9Ch,8Eh,8Fh,14h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,0Ch,0,0Fh,8,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 50h,18h,10h,0,10h,0,3,0,2,67h,5Fh,4Fh,50h,82h,55h,81h,0BFh,1Fh,0,4Fh,0Dh,0Eh,0,0,0,0,9Ch,8Eh,8Fh,28h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,0Ch,0,0Fh,8,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 50h,18h,10h,0,10h,0,3,0,2,66h,5Fh,4Fh,50h,82h,55h,81h,0BFh,1Fh,0,4Fh,0Dh,0Eh,0,0,0,0,9Ch,8Eh,8Fh,28h,0Fh,96h,0B9h,0A3h,0FFh,0,8,8,8,8,8,8,8,10h,18h,18h,18h,18h,18h,18h,18h,0Eh,0,0Fh,8,0,0,0,0,0,10h,0Ah,0,0FFh C000:2D80 db 50h,1Dh,10h,0,0A0h,1,0Fh,0,6,0E3h,5Fh,4Fh,50h,82h,54h,80h,0Bh,3Eh,0,40h,0,0,0,0,0,0,0EAh,8Ch,0DFh,28h,0,0E7h,4,0C3h,0FFh,0,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,3Fh,1,0,0Fh,0,0,0,0,0,0,0,5,1,0FFh C000:2D80 db 50h,1Dh,10h,0,0A0h,1,0Fh,0,6,0E3h,5Fh,4Fh,50h,82h,54h,80h,0Bh,3Eh,0,40h,0,0,0,0,0,0,0EAh,8Ch,0DFh,28h,0,0E7h,4,0E3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,1,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 28h,18h,8,0,20h,1,0Fh,0,0Eh,63h,5Fh,4Fh,50h,82h,54h,80h,0BFh,1Fh,0,41h,0,0,0,0,0,0,9Ch,8Eh,8Fh,28h,40h,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 0A0h,3Fh,10h,0FFh,0FFh,1,0Fh,0,0Eh,2Bh,0CFh,9Fh,0A0h,92h,0AAh,19h,28h,52h,0,40h,0,0,0,0,0,0,1,4,0FFh,0A0h,0,0,29h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 50h,3Bh,8,0,26h,1,3,0,2,0E3h,5Fh,4Fh,50h,82h,55h,81h,0Bh,3Eh,0,47h,6,7,0,0,0,0,0EAh,8Ch,0DFh,28h,1Fh,0E7h,4,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,0Ch,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 84h,18h,10h,0,20h,1,3,0,2,6Bh,9Ah,83h,84h,9Dh,87h,13h,0BFh,1Fh,0,4Fh,0Dh,0Eh,0,0,0,0,9Ch,8Eh,8Fh,42h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,0Ch,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 84h,2Ah,9,0,40h,1,3,0,2,6Bh,9Ah,83h,84h,9Dh,87h,13h,0BFh,1Fh,0,48h,7,8,0,0,0,0,92h,84h,82h,42h,1Fh,89h,0B9h,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,0Ch,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 84h,31h,8,0,40h,1,3,0,2,6Bh,9Eh,83h,84h,81h,8Ah,9Eh,0BFh,1Fh,0,47h,6,7,0,0,0,0,9Ch,8Eh,8Fh,42h,1Fh,96h,0B9h,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,0Ch,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 84h,3Bh,8,0,40h,1,3,0,2,0EBh,9Eh,83h,84h,81h,8Ah,9Eh,0Bh,3Eh,0,47h,6,7,0,0,0,0,0EAh,8Ch,0DFh,42h,1Fh,0E7h,4,0A3h,0FFh,0,1,2,3,4,5,14h,7,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh,0Ch,0,0Fh,0,0,0,0,0,0,10h,0Eh,0,0FFh C000:2D80 db 28h,18h,8,0FFh,0FFh,9,0Fh,0,0Eh,63h,2Dh,27h,28h,90h,2Bh,80h,0BFh,1Fh,0,0C0h,0,0,0,0,0,0,9Ch,0Eh,8Fh,50h,1Fh,96h,0B9h,0EBh,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 28h,18h,8,0FFh,0FFh,9,0Fh,0,0Eh,63h,2Dh,27h,28h,90h,2Bh,80h,0BFh,1Fh,0,80h,0,0,0,0,0,0,9Ch,0Eh,8Fh,0,1Fh,96h,0B9h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 50h,1Dh,10h,0FFh,0FFh,1,0Fh,0,0Eh,0EBh,5Fh,4Fh,50h,82h,54h,80h,0Bh,3Eh,0,40h,0,0,0,0,0,0,0EAh,0Ch,0DFh,0A0h,0,0E7h,4,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 50h,1Dh,10h,0FFh,0FFh,1,0Fh,0,0Eh,0EBh,5Fh,4Fh,51h,82h,54h,80h,0Bh,3Eh,0,40h,0,0,0,0,0,0,0EAh,0Ch,0DFh,0,0,0E7h,4,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 64h,24h,10h,0FFh,0FFh,1,0Fh,0,0Eh,2Bh,7Fh,63h,64h,82h,6Bh,1Bh,72h,0F0h,0,60h,0,0,0,0,0,0,59h,0Dh,57h,0C8h,0,57h,73h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 64h,24h,10h,0FFh,0FFh,1,0Fh,0,0Eh,2Bh,7Fh,63h,64h,82h,6Bh,1Bh,72h,0F0h,0,60h,0,0,0,0,0,0,59h,0Dh,57h,0,0,57h,73h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 80h,2Fh,10h,0FFh,0FFh,1,0Fh,0,0Eh,0EBh,0A3h,7Fh,80h,86h,85h,96h,24h,0F5h,0,60h,0,0,0,0,0,0,4,0Ah,0FFh,0,0,0FFh,25h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 28h,1Dh,8,0FFh,0FFh,9,0Fh,0,0Eh,0E3h,2Dh,27h,28h,90h,2Bh,80h,0Bh,3Eh,80h,0C0h,0,0,0,0,0,0,0EAh,0Ch,0DFh,28h,0,0E7h,4,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 32h,24h,8,0FFh,0FFh,1,0Fh,0,0Eh,2Bh,3Dh,31h,31h,81h,37h,1Eh,72h,0F0h,0,0E0h,0,0,0,0,0,0,59h,0Dh,57h,0C8h,0,57h,73h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 32h,24h,8,0FFh,0FFh,1,0Fh,0,0Eh,0E3h,5Fh,31h,41h,82h,45h,91h,0Bh,3Eh,80h,40h,0,0,0,0,0,0,90h,2,2Bh,50h,0,2Bh,4,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 40h,2Fh,8,0FFh,0FFh,1,0Fh,0,0Eh,2Bh,4Fh,3Fh,3Fh,93h,44h,0Bh,24h,0F5h,0,0E0h,0,0,0,0,0,0,4,0Ah,0FFh,0,0,0FFh,25h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 40h,2Fh,8,0FFh,0FFh,1,0Fh,0,0Eh,0E3h,5Fh,3Fh,48h,82h,4Ch,98h,0Bh,3Eh,80h,40h,0,0,0,0,0,0,0BAh,0Ch,7Fh,50h,0,0B7h,4,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,0,5,0Fh,0FFh C000:2D80 db 90h,35h,10h,0FFh,0FFh,1,0Fh,0,0Eh,0EBh,0C3h,8Fh,90h,86h,98h,8,82h,0FFh,0,60h,0,0,0,0,0,0,61h,4,5Fh,90h,0,60h,83h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 90h,35h,10h,0FFh,0FFh,1,0Fh,0,0Eh,0EBh,0C3h,8Fh,90h,86h,98h,8,82h,0FFh,0,60h,0,0,0,0,0,0,61h,4,5Fh,90h,0,60h,83h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:2D80 db 0A0h,3Fh,10h,0FFh,0FFh,1,0Fh,0,0Eh,0EBh,0CFh,9Fh,0A0h,92h,0AAh,19h,28h,52h,0,40h,0,0,0,0,0,0,1,4,0FFh,0A0h,0,0,29h,0E3h,0FFh,0,1,2,3,4,5,6,7,8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh,41h,0,0Fh,0,0,0,0,0,0,40h,5,0Fh,0FFh C000:3A00 font8x8 db 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 81h, 0A5h, 81h, 0BDh, 99h, 81h, 7Eh, 7Eh, 0FFh, 0DBh, 0FFh, 0C3h, 0E7h, 0FFh, 7Eh, 6Ch, 0FEh, 0FEh, 0FEh, 7Ch, 38h, 10h, 0, 10h, 38h, 7Ch, 0FEh, 7Ch, 38h, 10h, 0, 38h, 7Ch, 38h, 0FEh, 0FEh, 7Ch, 38h, 7Ch, 10h, 10h, 38h, 7Ch, 0FEh, 7Ch, 38h, 7Ch, 0, 0, 18h, 3Ch, 3Ch, 18h, 0, 0, 0FFh, 0FFh, 0E7h, 0C3h, 0C3h, 0E7h, 0FFh, 0FFh, 0, 3Ch, 66h, 42h, 42h, 66h, 3Ch, 0, 0FFh, 0C3h, 99h, 0BDh, 0BDh, 99h, 0C3h, 0FFh, 0Fh, 7, 0Fh, 7Dh, 0CCh, 0CCh, 0CCh, 78h, 3Ch, 66h, 66h, 66h, 3Ch, 18h, 7Eh, 18h, 3Fh, 33h, 3Fh, 30h, 30h, 70h, 0F0h, 0E0h, 7Fh, 63h, 7Fh, 63h, 63h, 67h, 0E6h, 0C0h, 99h, 5Ah, 3Ch, 0E7h, 0E7h, 3Ch, 5Ah, 99h, 80h, 0E0h, 0F8h, 0FEh, 0F8h, 0E0h, 80h, 0, 2, 0Eh, 3Eh, 0FEh, 3Eh, 0Eh, 2, 0, 18h, 3Ch, 7Eh, 18h, 18h, 7Eh, 3Ch, 18h, 66h, 66h, 66h, 66h, 66h, 0, 66h, 0, 7Fh, 0DBh, 0DBh, 7Bh, 1Bh, 1Bh, 1Bh, 0, 3Eh, 63h, 38h, 6Ch, 6Ch, 38h, 0CCh, 78h, 0, 0, 0, 0, 7Eh, 7Eh, 7Eh, 0, 18h, 3Ch, 7Eh, 18h, 7Eh, 3Ch, 18h, 0FFh, 18h, 3Ch, 7Eh, 18h, 18h, 18h, 18h, 0, 18h, 18h, 18h, 18h C000:3A00 ; DATA XREF: vga_init+5Co C000:3A00 db 7Eh, 3Ch, 18h, 0, 0, 18h, 0Ch, 0FEh, 0Ch, 18h, 0, 0, 0, 30h, 60h, 0FEh, 60h, 30h, 0, 0, 0, 0, 0C0h, 0C0h, 0C0h, 0FEh, 0, 0, 0, 24h, 66h, 0FFh, 66h, 24h, 0, 0, 0, 18h, 3Ch, 7Eh, 0FFh, 0FFh, 0, 0, 0, 0FFh, 0FFh, 7Eh, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30h, 78h, 78h, 30h, 30h, 0, 30h, 0, 6Ch, 6Ch, 6Ch, 0, 0, 0, 0, 0, 6Ch, 6Ch, 0FEh, 6Ch, 0FEh, 6Ch, 6Ch, 0, 30h, 7Ch, 0C0h, 78h, 0Ch, 0F8h, 30h, 0, 0, 0C6h, 0CCh, 18h, 30h, 66h, 0C6h, 0, 38h, 6Ch, 38h, 76h, 0DCh, 0CCh, 76h, 0, 60h, 60h, 0C0h, 0, 0, 0, 0, 0, 18h, 30h, 60h, 60h, 60h, 30h, 18h, 0, 60h, 30h, 18h, 18h, 18h, 30h, 60h, 0, 0, 66h, 3Ch, 0FFh, 3Ch, 66h, 0, 0, 0, 30h, 30h, 0FCh, 30h, 30h, 0, 0, 0, 0, 0, 0, 0, 30h, 30h, 60h, 0, 0, 0, 0FCh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30h, 30h, 0, 6, 0Ch, 18h, 30h, 60h, 0C0h, 80h, 0, 7Ch, 0C6h, 0CEh, 0DEh, 0F6h, 0E6h, 7Ch, 0, 30h, 70h, 30h, 30h, 30h, 30h, 0FCh, 0, 78h, 0CCh, 0Ch, 38h, 60h, 0CCh, 0FCh, 0, 78h, 0CCh, 0Ch, 38h, 0Ch, 0CCh, 78h, 0, 1Ch, 3Ch, 6Ch, 0CCh, 0FEh, 0Ch, 1Eh, 0, 0FCh, 0C0h, 0F8h, 0Ch C000:3A00 db 0Ch, 0CCh, 78h, 0, 38h, 60h, 0C0h, 0F8h, 0CCh, 0CCh, 78h, 0, 0FCh, 0CCh, 0Ch, 18h, 30h, 30h, 30h, 0, 78h, 0CCh, 0CCh, 78h, 0CCh, 0CCh, 78h, 0, 78h, 0CCh, 0CCh, 7Ch, 0Ch, 18h, 70h, 0, 0, 30h, 30h, 0, 0, 30h, 30h, 0, 0, 30h, 30h, 0, 0, 30h, 30h, 60h, 18h, 30h, 60h, 0C0h, 60h, 30h, 18h, 0, 0, 0, 0FCh, 0, 0, 0FCh, 0, 0, 60h, 30h, 18h, 0Ch, 18h, 30h, 60h, 0, 78h, 0CCh, 0Ch, 18h, 30h, 0, 30h, 0, 7Ch, 0C6h, 0DEh, 0DEh, 0DEh, 0C0h, 78h, 0, 30h, 78h, 0CCh, 0CCh, 0FCh, 0CCh, 0CCh, 0, 0FCh, 66h, 66h, 7Ch, 66h, 66h, 0FCh, 0, 3Ch, 66h, 0C0h, 0C0h, 0C0h, 66h, 3Ch, 0, 0F8h, 6Ch, 66h, 66h, 66h, 6Ch, 0F8h, 0, 0FEh, 62h, 68h, 78h, 68h, 62h, 0FEh, 0, 0FEh, 62h, 68h, 78h, 68h, 60h, 0F0h, 0, 3Ch, 66h, 0C0h, 0C0h, 0CEh, 66h, 3Eh, 0, 0CCh, 0CCh, 0CCh, 0FCh, 0CCh, 0CCh, 0CCh, 0, 78h, 30h, 30h, 30h, 30h, 30h, 78h, 0, 1Eh, 0Ch, 0Ch, 0Ch, 0CCh, 0CCh, 78h, 0, 0E6h, 66h, 6Ch, 78h, 6Ch, 66h, 0E6h, 0, 0F0h, 60h, 60h, 60h, 62h, 66h, 0FEh, 0, 0C6h, 0EEh, 0FEh, 0FEh, 0D6h, 0C6h, 0C6h, 0, 0C6h, 0E6h, 0F6h, 0DEh, 0CEh, 0C6h C000:3A00 db 0C6h, 0, 38h, 6Ch, 0C6h, 0C6h, 0C6h, 6Ch, 38h, 0, 0FCh, 66h, 66h, 7Ch, 60h, 60h, 0F0h, 0, 78h, 0CCh, 0CCh, 0CCh, 0DCh, 78h, 1Ch, 0, 0FCh, 66h, 66h, 7Ch, 6Ch, 66h, 0E6h, 0, 78h, 0CCh, 0E0h, 70h, 1Ch, 0CCh, 78h, 0, 0FCh, 0B4h, 30h, 30h, 30h, 30h, 78h, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0FCh, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 78h, 30h, 0, 0C6h, 0C6h, 0C6h, 0D6h, 0FEh, 0EEh, 0C6h, 0, 0C6h, 0C6h, 6Ch, 38h, 38h, 6Ch, 0C6h, 0, 0CCh, 0CCh, 0CCh, 78h, 30h, 30h, 78h, 0, 0FEh, 0C6h, 8Ch, 18h, 32h, 66h, 0FEh, 0, 78h, 60h, 60h, 60h, 60h, 60h, 78h, 0, 0C0h, 60h, 30h, 18h, 0Ch, 6, 2, 0, 78h, 18h, 18h, 18h, 18h, 18h, 78h, 0, 10h, 38h, 6Ch, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 30h, 30h, 18h, 0, 0, 0, 0, 0, 0, 0, 78h, 0Ch, 7Ch, 0CCh, 76h, 0, 0E0h, 60h, 60h, 7Ch, 66h, 66h, 0DCh, 0, 0, 0, 78h, 0CCh, 0C0h, 0CCh, 78h, 0, 1Ch, 0Ch, 0Ch, 7Ch, 0CCh, 0CCh, 76h, 0, 0, 0, 78h, 0CCh, 0FCh, 0C0h, 78h, 0, 38h, 6Ch, 60h, 0F0h, 60h, 60h, 0F0h, 0, 0, 0, 76h, 0CCh, 0CCh, 7Ch, 0Ch, 0F8h, 0E0h, 60h, 6Ch, 76h, 66h, 66h C000:3A00 db 0E6h, 0, 30h, 0, 70h, 30h, 30h, 30h, 78h, 0, 0Ch, 0, 0Ch, 0Ch, 0Ch, 0CCh, 0CCh, 78h, 0E0h, 60h, 66h, 6Ch, 78h, 6Ch, 0E6h, 0, 70h, 30h, 30h, 30h, 30h, 30h, 78h, 0, 0, 0, 0CCh, 0FEh, 0FEh, 0D6h, 0C6h, 0, 0, 0, 0F8h, 0CCh, 0CCh, 0CCh, 0CCh, 0, 0, 0, 78h, 0CCh, 0CCh, 0CCh, 78h, 0, 0, 0, 0DCh, 66h, 66h, 7Ch, 60h, 0F0h, 0, 0, 76h, 0CCh, 0CCh, 7Ch, 0Ch, 1Eh, 0, 0, 0DCh, 76h, 66h, 60h, 0F0h, 0, 0, 0, 7Ch, 0C0h, 78h, 0Ch, 0F8h, 0, 10h, 30h, 7Ch, 30h, 30h, 34h, 18h, 0, 0, 0, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0CCh, 0CCh, 0CCh, 78h, 30h, 0, 0, 0, 0C6h, 0D6h, 0FEh, 0FEh, 6Ch, 0, 0, 0, 0C6h, 6Ch, 38h, 6Ch, 0C6h, 0, 0, 0, 0CCh, 0CCh, 0CCh, 7Ch, 0Ch, 0F8h, 0, 0, 0FCh, 98h, 30h, 64h, 0FCh, 0, 1Ch, 30h, 30h, 0E0h, 30h, 30h, 1Ch, 0, 18h, 18h, 18h, 0, 18h, 18h, 18h, 0, 0E0h, 30h, 30h, 1Ch, 30h, 30h, 0E0h, 0, 76h, 0DCh, 0, 0, 0, 0, 0, 0, 0, 10h, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0, 78h, 0CCh, 0C0h, 0CCh, 78h, 18h, 0Ch, 78h, 0, 0CCh, 0, 0CCh, 0CCh, 0CCh, 7Eh, 0, 1Ch, 0, 78h, 0CCh, 0FCh, 0C0h, 78h, 0, 7Eh, 0C3h, 3Ch C000:3A00 db 6, 3Eh, 66h, 3Fh, 0, 0CCh, 0, 78h, 0Ch, 7Ch, 0CCh, 7Eh, 0, 0E0h, 0, 78h, 0Ch, 7Ch, 0CCh, 7Eh, 0, 30h, 30h, 78h, 0Ch, 7Ch, 0CCh, 7Eh, 0, 0, 0, 78h, 0C0h, 0C0h, 78h, 0Ch, 38h, 7Eh, 0C3h, 3Ch, 66h, 7Eh, 60h, 3Ch, 0, 0CCh, 0, 78h, 0CCh, 0FCh, 0C0h, 78h, 0, 0E0h, 0, 78h, 0CCh, 0FCh, 0C0h, 78h, 0, 0CCh, 0, 70h, 30h, 30h, 30h, 78h, 0, 7Ch, 0C6h, 38h, 18h, 18h, 18h, 3Ch, 0, 0E0h, 0, 70h, 30h, 30h, 30h, 78h, 0, 0C6h, 38h, 6Ch, 0C6h, 0FEh, 0C6h, 0C6h, 0, 30h, 30h, 0, 78h, 0CCh, 0FCh, 0CCh, 0, 1Ch, 0, 0FCh, 60h, 78h, 60h, 0FCh, 0, 0, 0, 7Fh, 0Ch, 7Fh, 0CCh, 7Fh, 0, 3Eh, 6Ch, 0CCh, 0FEh, 0CCh, 0CCh, 0CEh, 0, 78h, 0CCh, 0, 78h, 0CCh, 0CCh, 78h, 0, 0, 0CCh, 0, 78h, 0CCh, 0CCh, 78h, 0, 0, 0E0h, 0, 78h, 0CCh, 0CCh, 78h, 0, 78h, 0CCh, 0, 0CCh, 0CCh, 0CCh, 7Eh, 0, 0, 0E0h, 0, 0CCh, 0CCh, 0CCh, 7Eh, 0, 0, 0CCh, 0, 0CCh, 0CCh, 7Ch, 0Ch, 0F8h, 0C3h, 18h, 3Ch, 66h, 66h, 3Ch, 18h, 0, 0CCh, 0, 0CCh, 0CCh, 0CCh, 0CCh, 78h, 0, 18h, 18h, 7Eh, 0C0h, 0C0h, 7Eh, 18h, 18h, 38h, 6Ch, 64h, 0F0h, 60h, 0E6h, 0FCh, 0, 0CCh, 0CCh C000:3A00 db 78h, 0FCh, 30h, 0FCh, 30h, 30h, 0F8h, 0CCh, 0CCh, 0FAh, 0C6h, 0CFh, 0C6h, 0C7h, 0Eh, 1Bh, 18h, 3Ch, 18h, 18h, 0D8h, 70h, 1Ch, 0, 78h, 0Ch, 7Ch, 0CCh, 7Eh, 0, 38h, 0, 70h, 30h, 30h, 30h, 78h, 0, 0, 1Ch, 0, 78h, 0CCh, 0CCh, 78h, 0, 0, 1Ch, 0, 0CCh, 0CCh, 0CCh, 7Eh, 0, 0, 0F8h, 0, 0F8h, 0CCh, 0CCh, 0CCh, 0, 0FCh, 0, 0CCh, 0ECh, 0FCh, 0DCh, 0CCh, 0, 3Ch, 6Ch, 6Ch, 3Eh, 0, 7Eh, 0, 0, 38h, 6Ch, 6Ch, 38h, 0, 7Ch, 0, 0, 30h, 0, 30h, 60h, 0C0h, 0CCh, 78h, 0, 0, 0, 0, 0FCh, 0C0h, 0C0h, 0, 0, 0, 0, 0, 0FCh, 0Ch, 0Ch, 0, 0, 0C3h, 0C6h, 0CCh, 0DEh, 33h, 66h, 0CCh, 0Fh, 0C3h, 0C6h, 0CCh, 0DBh, 37h, 6Fh, 0CFh, 3, 18h, 18h, 0, 18h, 18h, 18h, 18h, 0, 0, 33h, 66h, 0CCh, 66h, 33h, 0, 0, 0, 0CCh, 66h, 33h, 66h, 0CCh, 0, 0, 22h, 88h, 22h, 88h, 22h, 88h, 22h, 88h, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 0DBh, 77h, 0DBh, 0EEh, 0DBh, 77h, 0DBh, 0EEh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 18h, 18h, 18h, 18h, 18h, 0F8h, 18h, 0F8h, 18h, 18h, 18h, 36h, 36h, 36h, 36h, 0F6h, 36h, 36h, 36h C000:3A00 db 0, 0, 0, 0, 0FEh, 36h, 36h, 36h, 0, 0, 0F8h, 18h, 0F8h, 18h, 18h, 18h, 36h, 36h, 0F6h, 6, 0F6h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0FEh, 6, 0F6h, 36h, 36h, 36h, 36h, 36h, 0F6h, 6, 0FEh, 0, 0, 0, 36h, 36h, 36h, 36h, 0FEh, 0, 0, 0, 18h, 18h, 0F8h, 18h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 0, 0, 0, 18h, 18h, 18h, 18h, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 18h, 18h, 0, 0, 0, 0, 0FFh, 0, 0, 0, 18h, 18h, 18h, 18h, 0FFh, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 1Fh, 18h, 18h, 18h, 36h, 36h, 36h, 36h, 37h, 36h, 36h, 36h, 36h, 36h, 37h, 30h, 3Fh, 0, 0, 0, 0, 0, 3Fh, 30h, 37h, 36h, 36h, 36h, 36h, 36h, 0F7h, 0, 0FFh, 0, 0, 0, 0, 0, 0FFh, 0, 0F7h, 36h, 36h, 36h, 36h, 36h, 37h, 30h, 37h, 36h, 36h, 36h, 0, 0, 0FFh, 0, 0FFh, 0, 0, 0, 36h, 36h, 0F7h, 0, 0F7h, 36h, 36h, 36h, 18h, 18h, 0FFh, 0, 0FFh, 0, 0, 0, 36h, 36h, 36h, 36h, 0FFh, 0, 0, 0, 0, 0, 0FFh, 0, 0FFh, 18h, 18h, 18h, 0, 0, 0, 0, 0FFh, 36h, 36h, 36h, 36h C000:3A00 db 36h, 36h, 36h, 3Fh, 0, 0, 0, 18h, 18h, 1Fh, 18h, 1Fh, 0, 0, 0, 0, 0, 1Fh, 18h, 1Fh, 18h, 18h, 18h, 0, 0, 0, 0, 3Fh, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0FFh, 36h, 36h, 36h, 18h, 18h, 0FFh, 18h, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 1Fh, 18h, 18h, 18h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 0FFh, 0FFh, 0FFh, 0FFh, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 0C8h, 0DCh, 76h, 0, 0, 78h, 0CCh, 0F8h, 0CCh, 0F8h, 0C0h, 0C0h, 0, 0FCh, 0CCh, 0C0h, 0C0h, 0C0h, 0C0h, 0, 0, 0FEh, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 0, 0FCh, 0CCh, 60h, 30h, 60h, 0CCh, 0FCh, 0, 0, 0, 7Eh, 0D8h, 0D8h, 0D8h, 70h, 0, 0, 66h, 66h, 66h, 66h, 7Ch, 60h, 0C0h, 0, 76h, 0DCh, 18h, 18h, 18h, 18h, 0, 0FCh, 30h, 78h, 0CCh, 0CCh, 78h, 30h, 0FCh, 38h, 6Ch, 0C6h, 0FEh, 0C6h, 6Ch, 38h, 0, 38h, 6Ch, 0C6h, 0C6h, 6Ch, 6Ch, 0EEh, 0, 1Ch, 30h, 18h, 7Ch, 0CCh, 0CCh, 78h, 0, 0, 0, 7Eh, 0DBh, 0DBh, 7Eh, 0, 0, 6 C000:3A00 db 0Ch, 7Eh, 0DBh, 0DBh, 7Eh, 60h, 0C0h, 38h, 60h, 0C0h, 0F8h, 0C0h, 60h, 38h, 0, 78h, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0, 0, 0FCh, 0, 0FCh, 0, 0FCh, 0, 0, 30h, 30h, 0FCh, 30h, 30h, 0, 0FCh, 0, 60h, 30h, 18h, 30h, 60h, 0, 0FCh, 0, 18h, 30h, 60h, 30h, 18h, 0, 0FCh, 0, 0Eh, 1Bh, 1Bh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0D8h, 0D8h, 70h, 30h, 30h, 0, 0FCh, 0, 30h, 30h, 0, 0, 76h, 0DCh, 0, 76h, 0DCh, 0, 0, 38h, 6Ch, 6Ch, 38h, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 18h, 0, 0, 0, 0Fh, 0Ch, 0Ch, 0Ch, 0ECh, 6Ch, 3Ch, 1Ch, 78h, 6Ch, 6Ch, 6Ch, 6Ch, 0, 0, 0, 70h, 18h, 30h, 60h, 78h, 0, 0, 0, 0, 0, 3Ch, 3Ch, 3Ch, 3Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 C000:4200 font8x14 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 81h, 0A5h, 81h, 81h, 0BDh, 99h, 81h, 7Eh, 0, 0, 0, 0, 0, 7Eh, 0FFh, 0DBh, 0FFh, 0FFh, 0C3h, 0E7h, 0FFh, 7Eh, 0, 0, 0, 0, 0, 0, 6Ch, 0FEh, 0FEh, 0FEh, 0FEh, 7Ch, 38h, 10h, 0, 0, 0, 0, 0, 0, 10h, 38h, 7Ch, 0FEh, 7Ch, 38h, 10h, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 3Ch, 0E7h, 0E7h, 0E7h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 0FFh, 0FFh, 7Eh, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 3Ch, 18h, 0, 0, 0, 0, 0, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0E7h, 0C3h, 0C3h, 0E7h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 3Ch, 66h, 42h, 42h, 66h, 3Ch, 0, 0, 0, 0, 0FFh, 0FFh, 0FFh, 0FFh, 0C3h, 99h, 0BDh, 0BDh, 99h, 0C3h, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 1Eh, 0Eh, 1Ah, 32h, 78h, 0CCh, 0CCh, 0CCh, 78h, 0, 0, 0, 0, 0, 3Ch, 66h, 66h, 66h, 3Ch, 18h, 7Eh, 18h, 18h, 0, 0, 0, 0, 0, 3Fh, 33h, 3Fh, 30h, 30h, 30h, 70h, 0F0h, 0E0h, 0, 0, 0, 0, 0, 7Fh, 63h, 7Fh, 63h, 63h, 63h, 67h, 0E7h, 0E6h, 0C0h, 0, 0, 0, 0, 18h, 18h, 0DBh, 3Ch, 0E7h, 3Ch, 0DBh, 18h, 18h, 0, 0, 0, 0, 0, 80h C000:4200 db 0C0h, 0E0h, 0F8h, 0FEh, 0F8h, 0E0h, 0C0h, 80h, 0, 0, 0, 0, 0, 2, 6, 0Eh, 3Eh, 0FEh, 3Eh, 0Eh, 6, 2, 0, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 18h, 18h, 18h, 7Eh, 3Ch, 18h, 0, 0, 0, 0, 0, 66h, 66h, 66h, 66h, 66h, 66h, 0, 66h, 66h, 0, 0, 0, 0, 0, 7Fh, 0DBh, 0DBh, 0DBh, 7Bh, 1Bh, 1Bh, 1Bh, 1Bh, 0, 0, 0, 0, 7Ch, 0C6h, 60h, 38h, 6Ch, 0C6h, 0C6h, 6Ch, 38h, 0Ch, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0FEh, 0FEh, 0, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 18h, 18h, 18h, 7Eh, 3Ch, 18h, 7Eh, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 18h, 7Eh, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 18h, 0Ch, 0FEh, 0Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30h, 60h, 0FEh, 60h, 30h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0C0h, 0C0h, 0C0h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28h, 6Ch, 0FEh, 6Ch, 28h, 0, 0, 0, 0, 0, 0, 0, 0, 10h, 38h, 38h, 7Ch, 7Ch, 0FEh, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0FEh, 7Ch, 7Ch, 38h, 38h, 10h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 3Ch, 3Ch, 18h, 18h, 0, 18h C000:4200 db 18h, 0, 0, 0, 0, 66h, 66h, 66h, 24h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6Ch, 6Ch, 0FEh, 6Ch, 6Ch, 6Ch, 0FEh, 6Ch, 6Ch, 0, 0, 0, 18h, 18h, 7Ch, 0C6h, 0C2h, 0C0h, 7Ch, 6, 86h, 0C6h, 7Ch, 18h, 18h, 0, 0, 0, 0, 0, 0C2h, 0C6h, 0Ch, 18h, 30h, 66h, 0C6h, 0, 0, 0, 0, 0, 38h, 6Ch, 6Ch, 38h, 76h, 0DCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 30h, 30h, 30h, 60h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0Ch, 18h, 30h, 30h, 30h, 30h, 30h, 18h, 0Ch, 0, 0, 0, 0, 0, 30h, 18h, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 18h, 30h, 0, 0, 0, 0, 0, 0, 0, 66h, 3Ch, 0FFh, 3Ch, 66h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 7Eh, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 30h, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 0, 0, 2, 6, 0Ch, 18h, 30h, 60h, 0C0h, 80h, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0CEh, 0DEh, 0F6h, 0E6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 18h, 38h, 78h, 18h, 18h, 18h, 18h, 18h, 7Eh, 0, 0, 0, 0, 0, 7Ch, 0C6h, 6, 0Ch, 18h, 30h, 60h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 7Ch, 0C6h, 6, 6, 3Ch C000:4200 db 6, 6, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0Ch, 1Ch, 3Ch, 6Ch, 0CCh, 0FEh, 0Ch, 0Ch, 1Eh, 0, 0, 0, 0, 0, 0FEh, 0C0h, 0C0h, 0C0h, 0FCh, 6, 6, 0C6h, 7Ch, 0, 0, 0, 0, 0, 38h, 60h, 0C0h, 0C0h, 0FCh, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0FEh, 0C6h, 6, 0Ch, 18h, 30h, 30h, 30h, 30h, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 7Ch, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 7Eh, 6, 6, 0Ch, 78h, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 18h, 18h, 30h, 0, 0, 0, 0, 0, 6, 0Ch, 18h, 30h, 60h, 30h, 18h, 0Ch, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 0, 0, 7Eh, 0, 0, 0, 0, 0, 0, 0, 60h, 30h, 18h, 0Ch, 6, 0Ch, 18h, 30h, 60h, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0Ch, 18h, 18h, 0, 18h, 18h, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0DEh, 0DEh, 0DEh, 0DCh, 0C0h, 7Ch, 0, 0, 0, 0, 0, 10h, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0FCh, 66h, 66h, 66h, 7Ch, 66h, 66h, 66h, 0FCh, 0, 0, 0, 0, 0, 3Ch, 66h, 0C2h, 0C0h, 0C0h, 0C0h, 0C2h, 66h, 3Ch, 0, 0, 0, 0, 0, 0F8h, 6Ch, 66h C000:4200 db 66h, 66h, 66h, 66h, 6Ch, 0F8h, 0, 0, 0, 0, 0, 0FEh, 66h, 62h, 68h, 78h, 68h, 62h, 66h, 0FEh, 0, 0, 0, 0, 0, 0FEh, 66h, 62h, 68h, 78h, 68h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 3Ch, 66h, 0C2h, 0C0h, 0C0h, 0DEh, 0C6h, 66h, 3Ah, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 3Ch, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 1Eh, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0CCh, 0CCh, 78h, 0, 0, 0, 0, 0, 0E6h, 66h, 6Ch, 6Ch, 78h, 6Ch, 6Ch, 66h, 0E6h, 0, 0, 0, 0, 0, 0F0h, 60h, 60h, 60h, 60h, 60h, 62h, 66h, 0FEh, 0, 0, 0, 0, 0, 0C6h, 0EEh, 0FEh, 0FEh, 0D6h, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0C6h, 0E6h, 0F6h, 0FEh, 0DEh, 0CEh, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 38h, 6Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 6Ch, 38h, 0, 0, 0, 0, 0, 0FCh, 66h, 66h, 66h, 7Ch, 60h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0D6h, 0DEh, 7Ch, 0Ch, 0Eh, 0, 0, 0, 0, 0FCh, 66h, 66h, 66h, 7Ch, 6Ch, 66h, 66h, 0E6h, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 60h, 38h, 0Ch, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0 C000:4200 db 0, 7Eh, 7Eh, 5Ah, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 6Ch, 38h, 10h, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0D6h, 0D6h, 0FEh, 7Ch, 6Ch, 0, 0, 0, 0, 0, 0C6h, 0C6h, 6Ch, 38h, 38h, 38h, 6Ch, 0C6h, 0C6h, 0, 0, 0, 0, 0, 66h, 66h, 66h, 66h, 3Ch, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0FEh, 0C6h, 8Ch, 18h, 30h, 60h, 0C2h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 3Ch, 30h, 30h, 30h, 30h, 30h, 30h, 30h, 3Ch, 0, 0, 0, 0, 0, 80h, 0C0h, 0E0h, 70h, 38h, 1Ch, 0Eh, 6, 2, 0, 0, 0, 0, 0, 3Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 3Ch, 0, 0, 0, 10h, 38h, 6Ch, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 30h, 30h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0E0h, 60h, 60h, 78h, 6Ch, 66h, 66h, 66h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C0h, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 1Ch, 0Ch, 0Ch, 3Ch, 6Ch, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0 C000:4200 db 0, 0, 0, 0, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 38h, 6Ch, 64h, 60h, 0F0h, 60h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 0, 0, 76h, 0CCh, 0CCh, 0CCh, 7Ch, 0Ch, 0CCh, 78h, 0, 0, 0, 0E0h, 60h, 60h, 6Ch, 76h, 66h, 66h, 66h, 0E6h, 0, 0, 0, 0, 0, 18h, 18h, 0, 38h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 6, 6, 0, 0Eh, 6, 6, 6, 6, 66h, 66h, 3Ch, 0, 0, 0, 0E0h, 60h, 60h, 66h, 6Ch, 78h, 6Ch, 66h, 0E6h, 0, 0, 0, 0, 0, 38h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0ECh, 0FEh, 0D6h, 0D6h, 0D6h, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0DCh, 66h, 66h, 66h, 66h, 66h, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0DCh, 66h, 66h, 66h, 7Ch, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 76h, 0CCh, 0CCh, 0CCh, 7Ch, 0Ch, 0Ch, 1Eh, 0, 0, 0, 0, 0, 0, 0DCh, 76h, 66h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 70h, 1Ch, 0C6h, 7Ch, 0, 0, 0, 0, 0, 10h, 30h, 30h, 0FCh, 30h, 30h, 30h, 36h, 1Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0 C000:4200 db 0, 0, 0, 66h, 66h, 66h, 66h, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0D6h, 0D6h, 0FEh, 6Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0C6h, 6Ch, 38h, 38h, 6Ch, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 7Eh, 6, 0Ch, 0F8h, 0, 0, 0, 0, 0, 0, 0FEh, 0CCh, 18h, 30h, 66h, 0FEh, 0, 0, 0, 0, 0, 0Eh, 18h, 18h, 18h, 70h, 18h, 18h, 18h, 0Eh, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 0, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 70h, 18h, 18h, 18h, 0Eh, 18h, 18h, 18h, 70h, 0, 0, 0, 0, 0, 76h, 0DCh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10h, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 0, 3Ch, 66h, 0C2h, 0C0h, 0C0h, 0C2h, 66h, 3Ch, 0Ch, 6, 7Ch, 0, 0, 0, 0CCh, 0CCh, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0Ch, 18h, 30h, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 10h, 38h, 6Ch, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0CCh, 0CCh, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 60h, 30h, 18h, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 38h, 6Ch, 38h, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 76h, 0, 0, 0 C000:4200 db 0, 0, 0, 0, 3Ch, 66h, 60h, 66h, 3Ch, 0Ch, 6, 3Ch, 0, 0, 0, 10h, 38h, 6Ch, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0CCh, 0CCh, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 60h, 30h, 18h, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 66h, 66h, 0, 38h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 18h, 3Ch, 66h, 0, 38h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 60h, 30h, 18h, 0, 38h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0C6h, 0C6h, 10h, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0, 0, 0, 38h, 6Ch, 38h, 0, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0, 0, 0, 18h, 30h, 60h, 0, 0FEh, 66h, 60h, 7Ch, 60h, 66h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0CCh, 76h, 36h, 7Eh, 0D8h, 0D8h, 6Eh, 0, 0, 0, 0, 0, 3Eh, 6Ch, 0CCh, 0CCh, 0FEh, 0CCh, 0CCh, 0CCh, 0CEh, 0, 0, 0, 0, 10h, 38h, 6Ch, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 60h, 30h, 18h, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 30h, 78h, 0CCh, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0 C000:4200 db 0, 0, 60h, 30h, 18h, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0, 0C6h, 0C6h, 0C6h, 0C6h, 7Eh, 6, 0Ch, 78h, 0, 0, 0C6h, 0C6h, 38h, 6Ch, 0C6h, 0C6h, 0C6h, 0C6h, 6Ch, 38h, 0, 0, 0, 0, 0C6h, 0C6h, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 18h, 18h, 3Ch, 66h, 60h, 60h, 66h, 3Ch, 18h, 18h, 0, 0, 0, 0, 38h, 6Ch, 64h, 60h, 0F0h, 60h, 60h, 60h, 0E6h, 0FCh, 0, 0, 0, 0, 0, 66h, 66h, 3Ch, 18h, 7Eh, 18h, 7Eh, 18h, 18h, 0, 0, 0, 0, 0F8h, 0CCh, 0CCh, 0F8h, 0C4h, 0CCh, 0DEh, 0CCh, 0CCh, 0C6h, 0, 0, 0, 0, 0Eh, 1Bh, 18h, 18h, 18h, 7Eh, 18h, 18h, 18h, 18h, 0D8h, 70h, 0, 0, 18h, 30h, 60h, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0Ch, 18h, 30h, 0, 38h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 18h, 30h, 60h, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 18h, 30h, 60h, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 76h, 0DCh, 0, 0DCh, 66h, 66h, 66h, 66h, 66h, 0, 0, 0, 76h, 0DCh, 0, 0C6h, 0E6h, 0F6h, 0FEh, 0DEh, 0CEh, 0C6h, 0C6h, 0, 0, 0, 0, 3Ch, 6Ch, 6Ch, 3Eh, 0, 7Eh C000:4200 db 0, 0, 0, 0, 0, 0, 0, 0, 38h, 6Ch, 6Ch, 38h, 0, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30h, 30h, 0, 30h, 30h, 60h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0C0h, 0C0h, 0C0h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 6, 6, 6, 0, 0, 0, 0, 0, 0C0h, 0C0h, 0C6h, 0CCh, 0D8h, 30h, 60h, 0DCh, 86h, 0Ch, 18h, 3Eh, 0, 0, 0C0h, 0C0h, 0C6h, 0CCh, 0D8h, 30h, 66h, 0CEh, 9Eh, 3Eh, 6, 6, 0, 0, 0, 18h, 18h, 0, 18h, 18h, 3Ch, 3Ch, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 36h, 6Ch, 0D8h, 6Ch, 36h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0D8h, 6Ch, 36h, 6Ch, 0D8h, 0, 0, 0, 0, 0, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 18h, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 36h, 36h, 36h, 36h, 36h, 36h, 36h C000:4200 db 0F6h, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0, 0, 0, 0, 0, 0FEh, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0, 0, 0, 0F8h, 18h, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 36h, 36h, 36h, 36h, 36h, 0F6h, 6, 0F6h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0, 0, 0, 0FEh, 6, 0F6h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0F6h, 6, 0FEh, 0, 0, 0, 0, 0, 0, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0FEh, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 0F8h, 18h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 1Fh, 18h, 18h, 18h, 18h C000:4200 db 18h, 18h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 37h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 37h, 30h, 3Fh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3Fh, 30h, 37h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0F7h, 0, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 0F7h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 37h, 30h, 37h, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0, 0, 0, 0FFh, 0, 0FFh, 0, 0, 0, 0, 0, 0, 36h, 36h, 36h, 36h, 36h, 0F7h, 0, 0F7h, 36h, 36h, 36h, 36h, 36h, 36h, 18h, 18h, 18h, 18h, 18h, 0FFh, 0, 0FFh, 0, 0, 0, 0, 0, 0, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0FFh, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 3Fh, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 1Fh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1Fh, 18h, 1Fh, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 3Fh, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h C000:4200 db 0FFh, 36h, 36h, 36h, 36h, 36h, 36h, 18h, 18h, 18h, 18h, 18h, 0FFh, 18h, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1Fh, 18h, 18h, 18h, 18h, 18h, 18h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 0D8h, 0D8h, 0DCh, 76h, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0FCh, 0C6h, 0C6h, 0FCh, 0C0h, 0C0h, 40h, 0, 0, 0, 0FEh, 0C6h, 0C6h, 0C0h, 0C0h, 0C0h, 0C0h, 0C0h, 0C0h, 0, 0, 0, 0, 0, 0, 0, 0FEh, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 0, 0, 0, 0, 0, 0FEh, 0C6h, 60h, 30h, 18h, 30h, 60h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 0D8h, 0D8h, 0D8h, 0D8h, 70h, 0, 0, 0, 0, 0, 0, 0, 66h, 66h, 66h, 66h, 7Ch, 60h, 60h C000:4200 db 0C0h, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 7Eh, 18h, 3Ch, 66h, 66h, 66h, 3Ch, 18h, 7Eh, 0, 0, 0, 0, 0, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 6Ch, 38h, 0, 0, 0, 0, 0, 38h, 6Ch, 0C6h, 0C6h, 0C6h, 6Ch, 6Ch, 6Ch, 0EEh, 0, 0, 0, 0, 0, 1Eh, 30h, 18h, 0Ch, 3Eh, 66h, 66h, 66h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 0DBh, 0DBh, 7Eh, 0, 0, 0, 0, 0, 0, 0, 3, 6, 7Eh, 0DBh, 0DBh, 0F3h, 7Eh, 60h, 0C0h, 0, 0, 0, 0, 0, 1Ch, 30h, 60h, 60h, 7Ch, 60h, 60h, 30h, 1Ch, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0, 0FEh, 0, 0, 0FEh, 0, 0, 0FEh, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 7Eh, 18h, 18h, 0, 0, 0FFh, 0, 0, 0, 0, 0, 30h, 18h, 0Ch, 6, 0Ch, 18h, 30h, 0, 7Eh, 0, 0, 0, 0, 0, 0Ch, 18h, 30h, 60h, 30h, 18h, 0Ch, 0, 7Eh, 0, 0, 0, 0, 0, 0Eh, 1Bh, 1Bh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0D8h, 0D8h, 70h, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 7Eh, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 0, 76h, 0DCh, 0, 0, 0 C000:4200 db 0, 0, 0, 38h, 6Ch, 6Ch, 38h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 0, 0, 0, 0, 0, 0, 0, 0Fh, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0ECh, 6Ch, 3Ch, 1Ch, 0, 0, 0, 0, 0D8h, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 0, 0, 0, 0, 0, 0, 0, 0, 70h, 0D8h, 30h, 60h, 0C8h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 7Ch, 7Ch, 7Ch, 7Ch, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 C000:5000 font8x16 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 81h, 0A5h, 81h, 81h, 0A5h, 99h, 81h, 81h, 7Eh, 0, 0, 0, 0, 0, 0, 7Eh, 0FFh, 0DBh, 0FFh, 0FFh, 0DBh, 0E7h, 0FFh, 0FFh, 7Eh, 0, 0, 0, 0, 0, 0, 0, 0, 6Ch, 0FEh, 0FEh, 0FEh, 0FEh, 7Ch, 38h, 10h, 0, 0, 0, 0, 0, 0, 0, 0, 10h, 38h, 7Ch, 0FEh, 7Ch, 38h, 10h, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 3Ch, 0E7h, 0E7h, 0E7h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 0FFh, 0FFh, 7Eh, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0E7h, 0C3h, 0C3h, 0E7h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 0, 3Ch, 66h, 42h, 42h, 66h, 3Ch, 0, 0, 0, 0, 0, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0C3h, 99h, 0BDh, 0BDh, 99h, 0C3h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 1Eh, 6, 0Eh, 1Ah, 78h, 0CCh, 0CCh, 0CCh, 0CCh, 78h, 0, 0, 0, 0, 0, 0, 3Ch, 66h, 66h, 66h, 66h, 3Ch, 18h, 7Eh, 18h, 18h, 0, 0, 0, 0, 0, 0, 3Fh, 33h, 3Fh, 30h, 30h, 30h, 30h, 70h, 0F0h, 0E0h, 0, 0, 0, 0, 0, 0, 7Fh, 63h, 7Fh, 63h, 63h C000:5000 db 63h, 63h, 67h, 0E7h, 0E6h, 0C0h, 0, 0, 0, 0, 0, 0, 18h, 18h, 0DBh, 3Ch, 0E7h, 3Ch, 0DBh, 18h, 18h, 0, 0, 0, 0, 0, 80h, 0C0h, 0E0h, 0F0h, 0F8h, 0FEh, 0F8h, 0F0h, 0E0h, 0C0h, 80h, 0, 0, 0, 0, 0, 2, 6, 0Eh, 1Eh, 3Eh, 0FEh, 3Eh, 1Eh, 0Eh, 6, 2, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 18h, 18h, 18h, 7Eh, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 66h, 66h, 66h, 66h, 66h, 66h, 66h, 0, 66h, 66h, 0, 0, 0, 0, 0, 0, 7Fh, 0DBh, 0DBh, 0DBh, 7Bh, 1Bh, 1Bh, 1Bh, 1Bh, 1Bh, 0, 0, 0, 0, 0, 7Ch, 0C6h, 60h, 38h, 6Ch, 0C6h, 0C6h, 6Ch, 38h, 0Ch, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0FEh, 0FEh, 0FEh, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 18h, 18h, 18h, 7Eh, 3Ch, 18h, 7Eh, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 7Eh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 7Eh, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 0Ch, 0FEh, 0Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30h, 60h, 0FEh, 60h, 30h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0C0h, 0C0h, 0C0h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28h, 6Ch, 0FEh C000:5000 db 6Ch, 28h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10h, 38h, 38h, 7Ch, 7Ch, 0FEh, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0FEh, 7Ch, 7Ch, 38h, 38h, 10h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 3Ch, 3Ch, 3Ch, 18h, 18h, 18h, 0, 18h, 18h, 0, 0, 0, 0, 0, 66h, 66h, 66h, 24h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6Ch, 6Ch, 0FEh, 6Ch, 6Ch, 6Ch, 0FEh, 6Ch, 6Ch, 0, 0, 0, 0, 18h, 18h, 7Ch, 0C6h, 0C2h, 0C0h, 7Ch, 6, 6, 86h, 0C6h, 7Ch, 18h, 18h, 0, 0, 0, 0, 0, 0, 0C2h, 0C6h, 0Ch, 18h, 30h, 60h, 0C6h, 86h, 0, 0, 0, 0, 0, 0, 38h, 6Ch, 6Ch, 38h, 76h, 0DCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 30h, 30h, 30h, 60h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0Ch, 18h, 30h, 30h, 30h, 30h, 30h, 30h, 18h, 0Ch, 0, 0, 0, 0, 0, 0, 30h, 18h, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 18h, 30h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66h, 3Ch, 0FFh, 3Ch, 66h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 7Eh, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 30h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0, 0 C000:5000 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 0Ch, 18h, 30h, 60h, 0C0h, 80h, 0, 0, 0, 0, 0, 0, 38h, 6Ch, 0C6h, 0C6h, 0D6h, 0D6h, 0C6h, 0C6h, 6Ch, 38h, 0, 0, 0, 0, 0, 0, 18h, 38h, 78h, 18h, 18h, 18h, 18h, 18h, 18h, 7Eh, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 6, 0Ch, 18h, 30h, 60h, 0C0h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 6, 6, 3Ch, 6, 6, 6, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0Ch, 1Ch, 3Ch, 6Ch, 0CCh, 0FEh, 0Ch, 0Ch, 0Ch, 1Eh, 0, 0, 0, 0, 0, 0, 0FEh, 0C0h, 0C0h, 0C0h, 0FCh, 6, 6, 6, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 38h, 60h, 0C0h, 0C0h, 0FCh, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0FEh, 0C6h, 6, 6, 0Ch, 18h, 30h, 30h, 30h, 30h, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 7Eh, 6, 6, 6, 0Ch, 78h, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 18h, 18h, 30h, 0, 0, 0, 0, 0, 0, 0, 6, 0Ch, 18h, 30h, 60h, 30h, 18h, 0Ch, 6, 0, 0, 0, 0, 0, 0, 0 C000:5000 db 0, 0, 7Eh, 0, 0, 7Eh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60h, 30h, 18h, 0Ch, 6, 0Ch, 18h, 30h, 60h, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0Ch, 18h, 18h, 18h, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0DEh, 0DEh, 0DEh, 0DCh, 0C0h, 7Ch, 0, 0, 0, 0, 0, 0, 10h, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0, 0FCh, 66h, 66h, 66h, 7Ch, 66h, 66h, 66h, 66h, 0FCh, 0, 0, 0, 0, 0, 0, 3Ch, 66h, 0C2h, 0C0h, 0C0h, 0C0h, 0C0h, 0C2h, 66h, 3Ch, 0, 0, 0, 0, 0, 0, 0F8h, 6Ch, 66h, 66h, 66h, 66h, 66h, 66h, 6Ch, 0F8h, 0, 0, 0, 0, 0, 0, 0FEh, 66h, 62h, 68h, 78h, 68h, 60h, 62h, 66h, 0FEh, 0, 0, 0, 0, 0, 0, 0FEh, 66h, 62h, 68h, 78h, 68h, 60h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 3Ch, 66h, 0C2h, 0C0h, 0C0h, 0DEh, 0C6h, 0C6h, 66h, 3Ah, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0, 3Ch, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 1Eh, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0CCh, 0CCh, 0CCh, 78h, 0, 0, 0, 0, 0, 0, 0E6h, 66h, 66h, 6Ch, 78h, 78h C000:5000 db 6Ch, 66h, 66h, 0E6h, 0, 0, 0, 0, 0, 0, 0F0h, 60h, 60h, 60h, 60h, 60h, 60h, 62h, 66h, 0FEh, 0, 0, 0, 0, 0, 0, 0C6h, 0EEh, 0FEh, 0FEh, 0D6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0, 0C6h, 0E6h, 0F6h, 0FEh, 0DEh, 0CEh, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0FCh, 66h, 66h, 66h, 7Ch, 60h, 60h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0D6h, 0DEh, 7Ch, 0Ch, 0Eh, 0, 0, 0, 0, 0FCh, 66h, 66h, 66h, 7Ch, 6Ch, 66h, 66h, 66h, 0E6h, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 60h, 38h, 0Ch, 6, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 7Eh, 7Eh, 5Ah, 18h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 6Ch, 38h, 10h, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0D6h, 0D6h, 0D6h, 0FEh, 0EEh, 6Ch, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 6Ch, 7Ch, 38h, 38h, 7Ch, 6Ch, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0, 66h C000:5000 db 66h, 66h, 66h, 3Ch, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 0FEh, 0C6h, 86h, 0Ch, 18h, 30h, 60h, 0C2h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 0, 3Ch, 30h, 30h, 30h, 30h, 30h, 30h, 30h, 30h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 80h, 0C0h, 0E0h, 70h, 38h, 1Ch, 0Eh, 6, 2, 0, 0, 0, 0, 0, 0, 3Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 3Ch, 0, 0, 0, 0, 10h, 38h, 6Ch, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 0, 30h, 30h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0, 0E0h, 60h, 60h, 78h, 6Ch, 66h, 66h, 66h, 66h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C0h, 0C0h, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 1Ch, 0Ch, 0Ch, 3Ch, 6Ch, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 38h, 6Ch, 64h, 60h, 0F0h, 60h, 60h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76h, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 7Ch, 0Ch, 0CCh, 78h, 0, 0, 0, 0E0h, 60h, 60h, 6Ch, 76h C000:5000 db 66h, 66h, 66h, 66h, 0E6h, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 38h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0Eh, 6, 6, 6, 6, 6, 6, 66h, 66h, 3Ch, 0, 0, 0, 0E0h, 60h, 60h, 66h, 6Ch, 78h, 78h, 6Ch, 66h, 0E6h, 0, 0, 0, 0, 0, 0, 38h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0ECh, 0FEh, 0D6h, 0D6h, 0D6h, 0D6h, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0DCh, 66h, 66h, 66h, 66h, 66h, 66h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0DCh, 66h, 66h, 66h, 66h, 66h, 7Ch, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 76h, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 7Ch, 0Ch, 0Ch, 1Eh, 0, 0, 0, 0, 0, 0, 0DCh, 76h, 66h, 60h, 60h, 60h, 0F0h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 60h, 38h, 0Ch, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 10h, 30h, 30h, 0FCh, 30h, 30h, 30h, 30h, 36h, 1Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66h, 66h, 66h, 66h, 66h, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0D6h, 0D6h C000:5000 db 0D6h, 0FEh, 6Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0C6h, 6Ch, 38h, 38h, 38h, 6Ch, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Eh, 6, 0Ch, 0F8h, 0, 0, 0, 0, 0, 0, 0FEh, 0CCh, 18h, 30h, 60h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 0, 0Eh, 18h, 18h, 18h, 70h, 18h, 18h, 18h, 18h, 0Eh, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 0, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 70h, 18h, 18h, 18h, 0Eh, 18h, 18h, 18h, 18h, 70h, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10h, 38h, 6Ch, 0C6h, 0C6h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 3Ch, 66h, 0C2h, 0C0h, 0C0h, 0C0h, 0C2h, 66h, 3Ch, 0Ch, 6, 7Ch, 0, 0, 0, 0, 0CCh, 0, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0Ch, 18h, 30h, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 10h, 38h, 6Ch, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0, 0CCh, 0, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 60h, 30h, 18h, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 38h, 6Ch, 38h, 0, 78h C000:5000 db 0Ch, 7Ch, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0, 0, 0, 3Ch, 66h, 60h, 60h, 66h, 3Ch, 0Ch, 6, 3Ch, 0, 0, 0, 0, 10h, 38h, 6Ch, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0C6h, 0, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 60h, 30h, 18h, 0, 7Ch, 0C6h, 0FEh, 0C0h, 0C0h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 66h, 0, 0, 38h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 18h, 3Ch, 66h, 0, 38h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 60h, 30h, 18h, 0, 38h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 0C6h, 0, 10h, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 38h, 6Ch, 38h, 0, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 18h, 30h, 60h, 0, 0FEh, 66h, 60h, 7Ch, 60h, 60h, 66h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0CCh, 76h, 36h, 7Eh, 0D8h, 0D8h, 6Eh, 0, 0, 0, 0, 0, 0, 3Eh, 6Ch, 0CCh, 0CCh, 0FEh, 0CCh, 0CCh, 0CCh, 0CCh, 0CEh, 0, 0, 0, 0, 0, 10h, 38h, 6Ch, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0C6h, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h C000:5000 db 0C6h, 7Ch, 0, 0, 0, 0, 0, 60h, 30h, 18h, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 30h, 78h, 0CCh, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 60h, 30h, 18h, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0, 0C6h, 0, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Eh, 6, 0Ch, 78h, 0, 0, 0C6h, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0C6h, 0, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 18h, 18h, 3Ch, 66h, 60h, 60h, 60h, 66h, 3Ch, 18h, 18h, 0, 0, 0, 0, 0, 38h, 6Ch, 64h, 60h, 0F0h, 60h, 60h, 60h, 60h, 0E6h, 0FCh, 0, 0, 0, 0, 0, 0, 66h, 66h, 3Ch, 18h, 7Eh, 18h, 7Eh, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0F8h, 0CCh, 0CCh, 0F8h, 0C4h, 0CCh, 0DEh, 0CCh, 0CCh, 0CCh, 0C6h, 0, 0, 0, 0, 0, 0Eh, 1Bh, 18h, 18h, 18h, 7Eh, 18h, 18h, 18h, 18h, 18h, 0D8h, 70h, 0, 0, 0, 18h, 30h, 60h, 0, 78h, 0Ch, 7Ch, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0Ch, 18h, 30h, 0, 38h, 18h, 18h, 18h, 18h, 18h, 3Ch, 0, 0, 0, 0, 0, 18h, 30h, 60h, 0, 7Ch C000:5000 db 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 18h, 30h, 60h, 0, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 0CCh, 76h, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 0, 0DCh, 66h, 66h, 66h, 66h, 66h, 66h, 0, 0, 0, 0, 76h, 0DCh, 0, 0C6h, 0E6h, 0F6h, 0FEh, 0DEh, 0CEh, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 3Ch, 6Ch, 6Ch, 3Eh, 0, 7Eh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38h, 6Ch, 6Ch, 38h, 0, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30h, 30h, 0, 30h, 30h, 60h, 0C0h, 0C6h, 0C6h, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0C0h, 0C0h, 0C0h, 0C0h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0C0h, 0C0h, 0C2h, 0C6h, 0CCh, 18h, 30h, 60h, 0DCh, 86h, 0Ch, 18h, 3Eh, 0, 0, 0, 0C0h, 0C0h, 0C2h, 0C6h, 0CCh, 18h, 30h, 66h, 0CEh, 9Eh, 3Eh, 6, 6, 0, 0, 0, 0, 18h, 18h, 0, 18h, 18h, 18h, 3Ch, 3Ch, 3Ch, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36h, 6Ch, 0D8h, 6Ch, 36h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0D8h, 6Ch, 36h, 6Ch, 0D8h, 0, 0, 0, 0, 0, 0, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 11h, 44h, 55h, 0AAh, 55h C000:5000 db 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 55h, 0AAh, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 0DDh, 77h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 18h, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0F6h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0, 0, 0, 0, 0, 0FEh, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0, 0, 0, 0F8h, 18h, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 36h, 36h, 36h, 36h, 36h, 0F6h, 6, 0F6h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0, 0, 0, 0, 0, 0FEh, 6, 0F6h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0F6h, 6, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h C000:5000 db 0F8h, 18h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0F8h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 1Fh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 37h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 37h, 30h, 3Fh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3Fh, 30h, 37h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0F7h, 0, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 0F7h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 37h, 30h, 37h, 36h, 36h, 36h, 36h, 36h C000:5000 db 36h, 36h, 36h, 0, 0, 0, 0, 0, 0FFh, 0, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 36h, 36h, 36h, 36h, 36h, 0F7h, 0, 0F7h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 18h, 18h, 18h, 18h, 18h, 0FFh, 0, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0FFh, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 3Fh, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 18h, 18h, 18h, 1Fh, 18h, 1Fh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1Fh, 18h, 1Fh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 3Fh, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 0FFh, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 36h, 18h, 18h, 18h, 18h, 18h, 0FFh, 18h, 0FFh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1Fh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh C000:5000 db 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 0D8h, 0D8h, 0D8h, 0DCh, 76h, 0, 0, 0, 0, 0, 0, 78h, 0CCh, 0CCh, 0CCh, 0D8h, 0CCh, 0C6h, 0C6h, 0C6h, 0CCh, 0, 0, 0, 0, 0, 0, 0FEh, 0C6h, 0C6h, 0C0h, 0C0h, 0C0h, 0C0h, 0C0h, 0C0h, 0C0h, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0C6h, 60h, 30h, 18h, 30h, 60h, 0C6h, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 0D8h, 0D8h, 0D8h, 0D8h, 0D8h, 70h, 0, 0, 0, 0, 0, 0, 0, 0, 66h, 66h, 66h, 66h, 66h, 7Ch, 60h, 60h, 0C0h, 0, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 18h, 18h, 18h, 18h, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 7Eh, 18h, 3Ch, 66h, 66h, 66h, 3Ch, 18h, 7Eh, 0, 0, 0, 0, 0 C000:5000 db 0, 0, 38h, 6Ch, 0C6h, 0C6h, 0FEh, 0C6h, 0C6h, 6Ch, 38h, 0, 0, 0, 0, 0, 0, 38h, 6Ch, 0C6h, 0C6h, 0C6h, 6Ch, 6Ch, 6Ch, 6Ch, 0EEh, 0, 0, 0, 0, 0, 0, 1Eh, 30h, 18h, 0Ch, 3Eh, 66h, 66h, 66h, 66h, 3Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Eh, 0DBh, 0DBh, 0DBh, 7Eh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 7Eh, 0DBh, 0DBh, 0F3h, 7Eh, 60h, 0C0h, 0, 0, 0, 0, 0, 0, 1Ch, 30h, 60h, 60h, 7Ch, 60h, 60h, 60h, 30h, 1Ch, 0, 0, 0, 0, 0, 0, 0, 7Ch, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0C6h, 0, 0, 0, 0, 0, 0, 0, 0, 0FEh, 0, 0, 0FEh, 0, 0, 0FEh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 7Eh, 18h, 18h, 0, 0, 0FFh, 0, 0, 0, 0, 0, 0, 0, 30h, 18h, 0Ch, 6, 0Ch, 18h, 30h, 0, 7Eh, 0, 0, 0, 0, 0, 0, 0, 0Ch, 18h, 30h, 60h, 30h, 18h, 0Ch, 0, 7Eh, 0, 0, 0, 0, 0, 0, 0Eh, 1Bh, 1Bh, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 18h, 0D8h, 0D8h, 0D8h, 70h, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 7Eh, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76h, 0DCh, 0, 76h, 0DCh, 0, 0, 0, 0, 0, 0, 0, 38h, 6Ch, 6Ch C000:5000 db 38h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18h, 0, 0, 0, 0, 0, 0, 0, 0, 0Fh, 0Ch, 0Ch, 0Ch, 0Ch, 0Ch, 0ECh, 6Ch, 6Ch, 3Ch, 1Ch, 0, 0, 0, 0, 0, 0D8h, 6Ch, 6Ch, 6Ch, 6Ch, 6Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70h, 0D8h, 30h, 60h, 0C8h, 0F8h, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7Ch, 7Ch, 7Ch, 7Ch, 7Ch, 7Ch, 7Ch, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 C000:6000 palette1 db 0,0,0 C000:6000 db 0,0,2Ah C000:6000 db 0,2Ah,0 C000:6000 db 0,2Ah,2Ah C000:6000 db 2Ah,0,0 C000:6000 db 2Ah,0,2Ah C000:6000 db 2Ah,2Ah,0 C000:6000 db 2Ah,2Ah,2Ah C000:6000 db 0,0,15h C000:6000 db 0,0,3Fh C000:6000 db 0,2Ah,15h C000:6000 db 0,2Ah,3Fh C000:6000 db 2Ah,0,15h C000:6000 db 2Ah,0,3Fh C000:6000 db 2Ah,2Ah,15h C000:6000 db 2Ah,2Ah,3Fh C000:6000 db 0,15h,0 C000:6000 db 0,15h,2Ah C000:6000 db 0,3Fh,0 C000:6000 db 0,3Fh,2Ah C000:6000 db 2Ah,15h,0 C000:6000 db 2Ah,15h,2Ah C000:6000 db 2Ah,3Fh,0 C000:6000 db 2Ah,3Fh,2Ah C000:6000 db 0,15h,15h C000:6000 db 0,15h,3Fh C000:6000 db 0,3Fh,15h C000:6000 db 0,3Fh,3Fh C000:6000 db 2Ah,15h,15h C000:6000 db 2Ah,15h,3Fh C000:6000 db 2Ah,3Fh,15h C000:6000 db 2Ah,3Fh,3Fh C000:6000 db 15h,0,0 C000:6000 db 15h,0,2Ah C000:6000 db 15h,2Ah,0 C000:6000 db 15h,2Ah,2Ah C000:6000 db 3Fh,0,0 C000:6000 db 3Fh,0,2Ah C000:6000 db 3Fh,2Ah,0 C000:6000 db 3Fh,2Ah,2Ah C000:6000 db 15h,0,15h C000:6000 db 15h,0,3Fh C000:6000 db 15h,2Ah,15h C000:6000 db 15h,2Ah,3Fh C000:6000 db 3Fh,0,15h C000:6000 db 3Fh,0,3Fh C000:6000 db 3Fh,2Ah,15h C000:6000 db 3Fh,2Ah,3Fh C000:6000 db 15h,15h,0 C000:6000 db 15h,15h,2Ah C000:6000 db 15h,3Fh,0 C000:6000 db 15h,3Fh,2Ah C000:6000 db 3Fh,15h,0 C000:6000 db 3Fh,15h,2Ah C000:6000 db 3Fh,3Fh,0 C000:6000 db 3Fh,3Fh,2Ah C000:6000 db 15h,15h,15h C000:6000 db 15h,15h,3Fh C000:6000 db 15h,3Fh,15h C000:6000 db 15h,3Fh,3Fh C000:6000 db 3Fh,15h,15h C000:6000 db 3Fh,15h,3Fh C000:6000 db 3Fh,3Fh,15h C000:6000 db 3Fh,3Fh,3Fh C000:60C0 palette2 db 0,0,0 C000:60C0 db 0,0,2Ah C000:60C0 db 0,2Ah,0 C000:60C0 db 0,2Ah,2Ah C000:60C0 db 2Ah,0,0 C000:60C0 db 2Ah,0,2Ah C000:60C0 db 2Ah,15h,0 C000:60C0 db 2Ah,2Ah,2Ah C000:60D8 palette3 db 0,0,0 C000:60D8 db 0,0,2Ah C000:60D8 db 0,2Ah,0 C000:60D8 db 0,2Ah,2Ah C000:60D8 db 2Ah,0,0 C000:60D8 db 2Ah,0,2Ah C000:60D8 db 2Ah,15h,0 C000:60D8 db 2Ah,2Ah,2Ah C000:60D8 db 15h,15h,15h C000:60D8 db 15h,15h,3Fh C000:60D8 db 15h,3Fh,15h C000:60D8 db 15h,3Fh,3Fh C000:60D8 db 3Fh,15h,15h C000:60D8 db 3Fh,15h,3Fh C000:60D8 db 3Fh,3Fh,15h C000:60D8 db 3Fh,3Fh,3Fh C000:60D8 db 15h,15h,15h C000:60D8 db 15h,15h,3Fh C000:60D8 db 15h,3Fh,15h C000:60D8 db 15h,3Fh,3Fh C000:60D8 db 3Fh,15h,15h C000:60D8 db 3Fh,15h,3Fh C000:60D8 db 3Fh,3Fh,15h C000:60D8 db 3Fh,3Fh,3Fh C000:6120 palette4 db 0,0,0 C000:6120 db 0,0,2Ah C000:6120 db 0,2Ah,0 C000:6120 db 0,2Ah,2Ah C000:6120 db 2Ah,0,0 C000:6120 db 2Ah,0,2Ah C000:6120 db 2Ah,15h,0 C000:6120 db 2Ah,2Ah,2Ah C000:6138 palette5 db 0,0,0 C000:6138 db 0,0,2Ah C000:6138 db 0,2Ah,0 C000:6138 db 0,2Ah,2Ah C000:6138 db 2Ah,0,0 C000:6138 db 2Ah,0,2Ah C000:6138 db 2Ah,15h,0 C000:6138 db 2Ah,2Ah,2Ah C000:6138 db 15h,15h,15h C000:6138 db 15h,15h,3Fh C000:6138 db 15h,3Fh,15h C000:6138 db 15h,3Fh,3Fh C000:6138 db 3Fh,15h,15h C000:6138 db 3Fh,15h,3Fh C000:6138 db 3Fh,3Fh,15h C000:6138 db 3Fh,3Fh,3Fh C000:6138 db 15h,15h,15h C000:6138 db 15h,15h,3Fh C000:6138 db 15h,3Fh,15h C000:6138 db 15h,3Fh,3Fh C000:6138 db 3Fh,15h,15h C000:6138 db 3Fh,15h,3Fh C000:6138 db 3Fh,3Fh,15h C000:6138 db 3Fh,3Fh,3Fh C000:6180 db 0 C000:6181 db 2Ah ; * C000:6182 db 0 C000:6183 db 3Fh ; ? C000:6184 palette6 db 0,0,0 C000:6184 db 0,0,2Ah C000:6184 db 0,2Ah,0 C000:6184 db 0,2Ah,2Ah C000:6184 db 2Ah,0,0 C000:6184 db 2Ah,0,2Ah C000:6184 db 2Ah,15h,0 C000:6184 db 2Ah,2Ah,2Ah C000:6184 db 15h,15h,15h C000:6184 db 15h,15h,3Fh C000:6184 db 15h,3Fh,15h C000:6184 db 15h,3Fh,3Fh C000:6184 db 3Fh,15h,15h C000:6184 db 3Fh,15h,3Fh C000:6184 db 3Fh,3Fh,15h C000:6184 db 3Fh,3Fh,3Fh C000:61B4 palette7 db 0,0,0 C000:61B4 db 5,5,5 C000:61B4 db 8,8,8 C000:61B4 db 0Bh,0Bh,0Bh C000:61B4 db 0Eh,0Eh,0Eh C000:61B4 db 11h,11h,11h C000:61B4 db 14h,14h,14h C000:61B4 db 18h,18h,18h C000:61B4 db 1Ch,1Ch,1Ch C000:61B4 db 20h,20h,20h C000:61B4 db 24h,24h,24h C000:61B4 db 28h,28h,28h C000:61B4 db 2Dh,2Dh,2Dh C000:61B4 db 32h,32h,32h C000:61B4 db 38h,38h,38h C000:61B4 db 3Fh,3Fh,3Fh C000:61B4 db 0,0,3Fh C000:61B4 db 10h,0,3Fh C000:61B4 db 1Fh,0,3Fh C000:61B4 db 2Fh,0,3Fh C000:61B4 db 3Fh,0,3Fh C000:61B4 db 3Fh,0,2Fh C000:61B4 db 3Fh,0,1Fh C000:61B4 db 3Fh,0,10h C000:61B4 db 3Fh,0,0 C000:61B4 db 3Fh,10h,0 C000:61B4 db 3Fh,1Fh,0 C000:61B4 db 3Fh,2Fh,0 C000:61B4 db 3Fh,3Fh,0 C000:61B4 db 2Fh,3Fh,0 C000:61B4 db 1Fh,3Fh,0 C000:61B4 db 10h,3Fh,0 C000:61B4 db 0,3Fh,0 C000:61B4 db 0,3Fh,10h C000:61B4 db 0,3Fh,1Fh C000:61B4 db 0,3Fh,2Fh C000:61B4 db 0,3Fh,3Fh C000:61B4 db 0,2Fh,3Fh C000:61B4 db 0,1Fh,3Fh C000:61B4 db 0,10h,3Fh C000:61B4 db 1Fh,1Fh,3Fh C000:61B4 db 27h,1Fh,3Fh C000:61B4 db 2Fh,1Fh,3Fh C000:61B4 db 37h,1Fh,3Fh C000:61B4 db 3Fh,1Fh,3Fh C000:61B4 db 3Fh,1Fh,37h C000:61B4 db 3Fh,1Fh,2Fh C000:61B4 db 3Fh,1Fh,27h C000:61B4 db 3Fh,1Fh,1Fh C000:61B4 db 3Fh,27h,1Fh C000:61B4 db 3Fh,2Fh,1Fh C000:61B4 db 3Fh,37h,1Fh C000:61B4 db 3Fh,3Fh,1Fh C000:61B4 db 37h,3Fh,1Fh C000:61B4 db 2Fh,3Fh,1Fh C000:61B4 db 27h,3Fh,1Fh C000:61B4 db 1Fh,3Fh,1Fh C000:61B4 db 1Fh,3Fh,27h C000:61B4 db 1Fh,3Fh,2Fh C000:61B4 db 1Fh,3Fh,37h C000:61B4 db 1Fh,3Fh,3Fh C000:61B4 db 1Fh,37h,3Fh C000:61B4 db 1Fh,2Fh,3Fh C000:61B4 db 1Fh,27h,3Fh C000:61B4 db 2Dh,2Dh,3Fh C000:61B4 db 31h,2Dh,3Fh C000:61B4 db 36h,2Dh,3Fh C000:61B4 db 3Ah,2Dh,3Fh C000:61B4 db 3Fh,2Dh,3Fh C000:61B4 db 3Fh,2Dh,3Ah C000:61B4 db 3Fh,2Dh,36h C000:61B4 db 3Fh,2Dh,31h C000:61B4 db 3Fh,2Dh,2Dh C000:61B4 db 3Fh,31h,2Dh C000:61B4 db 3Fh,36h,2Dh C000:61B4 db 3Fh,3Ah,2Dh C000:61B4 db 3Fh,3Fh,2Dh C000:61B4 db 3Ah,3Fh,2Dh C000:61B4 db 36h,3Fh,2Dh C000:61B4 db 31h,3Fh,2Dh C000:61B4 db 2Dh,3Fh,2Dh C000:61B4 db 2Dh,3Fh,31h C000:61B4 db 2Dh,3Fh,36h C000:61B4 db 2Dh,3Fh,3Ah C000:61B4 db 2Dh,3Fh,3Fh C000:61B4 db 2Dh,3Ah,3Fh C000:61B4 db 2Dh,36h,3Fh C000:61B4 db 2Dh,31h,3Fh C000:61B4 db 0,0,1Ch C000:61B4 db 7,0,1Ch C000:61B4 db 0Eh,0,1Ch C000:61B4 db 15h,0,1Ch C000:61B4 db 1Ch,0,1Ch C000:61B4 db 1Ch,0,15h C000:61B4 db 1Ch,0,0Eh C000:61B4 db 1Ch,0,7 C000:61B4 db 1Ch,0,0 C000:61B4 db 1Ch,7,0 C000:61B4 db 1Ch,0Eh,0 C000:61B4 db 1Ch,15h,0 C000:61B4 db 1Ch,1Ch,0 C000:61B4 db 15h,1Ch,0 C000:61B4 db 0Eh,1Ch,0 C000:61B4 db 7,1Ch,0 C000:61B4 db 0,1Ch,0 C000:61B4 db 0,1Ch,7 C000:61B4 db 0,1Ch,0Eh C000:61B4 db 0,1Ch,15h C000:61B4 db 0,1Ch,1Ch C000:61B4 db 0,15h,1Ch C000:61B4 db 0,0Eh,1Ch C000:61B4 db 0,7,1Ch C000:61B4 db 0Eh,0Eh,1Ch C000:61B4 db 11h,0Eh,1Ch C000:61B4 db 15h,0Eh,1Ch C000:61B4 db 18h,0Eh,1Ch C000:61B4 db 1Ch,0Eh,1Ch C000:61B4 db 1Ch,0Eh,18h C000:61B4 db 1Ch,0Eh,15h C000:61B4 db 1Ch,0Eh,11h C000:61B4 db 1Ch,0Eh,0Eh C000:61B4 db 1Ch,11h,0Eh C000:61B4 db 1Ch,15h,0Eh C000:61B4 db 1Ch,18h,0Eh C000:61B4 db 1Ch,1Ch,0Eh C000:61B4 db 18h,1Ch,0Eh C000:61B4 db 15h,1Ch,0Eh C000:61B4 db 11h,1Ch,0Eh C000:61B4 db 0Eh,1Ch,0Eh C000:61B4 db 0Eh,1Ch,11h C000:61B4 db 0Eh,1Ch,15h C000:61B4 db 0Eh,1Ch,18h C000:61B4 db 0Eh,1Ch,1Ch C000:61B4 db 0Eh,18h,1Ch C000:61B4 db 0Eh,15h,1Ch C000:61B4 db 0Eh,11h,1Ch C000:61B4 db 14h,14h,1Ch C000:61B4 db 16h,14h,1Ch C000:61B4 db 18h,14h,1Ch C000:61B4 db 1Ah,14h,1Ch C000:61B4 db 1Ch,14h,1Ch C000:61B4 db 1Ch,14h,1Ah C000:61B4 db 1Ch,14h,18h C000:61B4 db 1Ch,14h,16h C000:61B4 db 1Ch,14h,14h C000:61B4 db 1Ch,16h,14h C000:61B4 db 1Ch,18h,14h C000:61B4 db 1Ch,1Ah,14h C000:61B4 db 1Ch,1Ch,14h C000:61B4 db 1Ah,1Ch,14h C000:61B4 db 18h,1Ch,14h C000:61B4 db 16h,1Ch,14h C000:61B4 db 14h,1Ch,14h C000:61B4 db 14h,1Ch,16h C000:61B4 db 14h,1Ch,18h C000:61B4 db 14h,1Ch,1Ah C000:61B4 db 14h,1Ch,1Ch C000:61B4 db 14h,1Ah,1Ch C000:61B4 db 14h,18h,1Ch C000:61B4 db 14h,16h,1Ch C000:61B4 db 0,0,10h C000:61B4 db 4,0,10h C000:61B4 db 8,0,10h C000:61B4 db 0Ch,0,10h C000:61B4 db 10h,0,10h C000:61B4 db 10h,0,0Ch C000:61B4 db 10h,0,8 C000:61B4 db 10h,0,4 C000:61B4 db 10h,0,0 C000:61B4 db 10h,4,0 C000:61B4 db 10h,8,0 C000:61B4 db 10h,0Ch,0 C000:61B4 db 10h,10h,0 C000:61B4 db 0Ch,10h,0 C000:61B4 db 8,10h,0 C000:61B4 db 4,10h,0 C000:61B4 db 0,10h,0 C000:61B4 db 0,10h,4 C000:61B4 db 0,10h,8 C000:61B4 db 0,10h,0Ch C000:61B4 db 0,10h,10h C000:61B4 db 0,0Ch,10h C000:61B4 db 0,8,10h C000:61B4 db 0,4,10h C000:61B4 db 8,8,10h C000:61B4 db 0Ah,8,10h C000:61B4 db 0Ch,8,10h C000:61B4 db 0Eh,8,10h C000:61B4 db 10h,8,10h C000:61B4 db 10h,8,0Eh C000:61B4 db 10h,8,0Ch C000:61B4 db 10h,8,0Ah C000:61B4 db 10h,8,8 C000:61B4 db 10h,0Ah,8 C000:61B4 db 10h,0Ch,8 C000:61B4 db 10h,0Eh,8 C000:61B4 db 10h,10h,8 C000:61B4 db 0Eh,10h,8 C000:61B4 db 0Ch,10h,8 C000:61B4 db 0Ah,10h,8 C000:61B4 db 8,10h,8 C000:61B4 db 8,10h,0Ah C000:61B4 db 8,10h,0Ch C000:61B4 db 8,10h,0Eh C000:61B4 db 8,10h,10h C000:61B4 db 8,0Eh,10h C000:61B4 db 8,0Ch,10h C000:61B4 db 8,0Ah,10h C000:61B4 db 0Bh,0Bh,10h C000:61B4 db 0Ch,0Bh,10h C000:61B4 db 0Dh,0Bh,10h C000:61B4 db 0Fh,0Bh,10h C000:61B4 db 10h,0Bh,10h C000:61B4 db 10h,0Bh,0Fh C000:61B4 db 10h,0Bh,0Dh C000:61B4 db 10h,0Bh,0Ch C000:61B4 db 10h,0Bh,0Bh C000:61B4 db 10h,0Ch,0Bh C000:61B4 db 10h,0Dh,0Bh C000:61B4 db 10h,0Fh,0Bh C000:61B4 db 10h,10h,0Bh C000:61B4 db 0Fh,10h,0Bh C000:61B4 db 0Dh,10h,0Bh C000:61B4 db 0Ch,10h,0Bh C000:61B4 db 0Bh,10h,0Bh C000:61B4 db 0Bh,10h,0Ch C000:61B4 db 0Bh,10h,0Dh C000:61B4 db 0Bh,10h,0Fh C000:61B4 db 0Bh,10h,10h C000:61B4 db 0Bh,0Fh,10h C000:61B4 db 0Bh,0Dh,10h C000:61B4 db 0Bh,0Ch,10h C000:646C word_C646C dw 0B800h ; DATA XREF: sub_C0A35r C000:646C ; sub_C0A5Cr ... C000:646E word_C646E dw 0B000h ; DATA XREF: sub_C0A19r C000:646E ; sub_C0B08r ... C000:6470 word_C6470 dw 0A000h ; DATA XREF: sub_C0A70r C000:6470 ; sub_C0A97r ... C000:6472 aCyrixGx86Video db 'Cyrix Gx86 Video BIOS - Version 2.07 ' C000:6472 db ' ',0Dh,0Ah,0 C000:64C5 word_C64C5 dw 2D80h ; DATA XREF: vga_init+70o C000:64C7 db 0 C000:64C8 db 0C0h ; L C000:64C9 db 0 C000:64CA db 0 C000:64CB db 0 C000:64CC db 0 C000:64CD db 0 C000:64CE db 0 C000:64CF db 0 C000:64D0 db 0 C000:64D1 db 0 C000:64D2 db 0 C000:64D3 db 0 C000:64D4 db 0 C000:64D5 db 0E1h ; ß C000:64D6 db 64h ; d C000:64D7 db 0 C000:64D8 db 0C0h ; L C000:64D9 db 0 C000:64DA db 0 C000:64DB db 0 C000:64DC db 0 C000:64DD db 0 C000:64DE db 0 C000:64DF db 0 C000:64E0 db 0 C000:64E1 db 1Ah C000:64E2 db 0 C000:64E3 db 0FBh ; û C000:64E4 db 64h ; d C000:64E5 db 0 C000:64E6 db 0C0h ; L C000:64E7 db 0 C000:64E8 db 0 C000:64E9 db 0 C000:64EA db 0 C000:64EB db 0 C000:64EC db 0 C000:64ED db 0 C000:64EE db 0 C000:64EF db 0 C000:64F0 db 0 C000:64F1 db 0 C000:64F2 db 0 C000:64F3 db 0 C000:64F4 db 0 C000:64F5 db 0 C000:64F6 db 0 C000:64F7 db 0BCh ; - C000:64F8 db 69h ; i C000:64F9 db 0 C000:64FA db 0C0h ; L C000:64FB db 10h C000:64FC db 1 C000:64FD db 8 C000:64FE db 0 C000:64FF db 0 C000:6500 db 0 C000:6501 db 0 C000:6502 db 1 C000:6503 db 0 C000:6504 db 2 C000:6505 db 2 C000:6506 db 1 C000:6507 db 0 C000:6508 db 4 C000:6509 db 4 C000:650A db 1 C000:650B db 0 C000:650C db 5 C000:650D db 2 C000:650E db 5 C000:650F db 0 C000:6510 db 6 C000:6511 db 1 C000:6512 db 6 C000:6513 db 5 C000:6514 db 6 C000:6515 db 0 C000:6516 db 8 C000:6517 db 1 C000:6518 db 8 C000:6519 db 0 C000:651A db 7 C000:651B db 2 C000:651C db 7 C000:651D db 2 C000:651E db 6 C000:651F db 0FFh C000:6520 db 0E0h ; Ó C000:6521 db 0Fh C000:6522 db 0 C000:6523 db 0 C000:6524 db 0 C000:6525 db 0 C000:6526 db 7 C000:6527 db 8 C000:6528 db 2 C000:6529 db 0FFh C000:652A db 0Eh C000:652B db 0 C000:652C db 0 C000:652D db 3Fh ; ? C000:652E db 0 C000:652F db 0 C000:6530 C000:6530 ; =============== S U B R O U T I N E ======================================= C000:6530 C000:6530 C000:6530 set_IO_4xxx proc near ; CODE XREF: vga_init+38p C000:6530 pusha C000:6531 mov dx, 46E8h ; IO address C000:6534 mov ax, 16h ; data C000:6537 out dx, ax ; 0016h->IO port 46E8h C000:6538 push dx ; DX=46E8h C000:6539 mov dx, 102h ; IO address C000:653C mov al, 1 ; data C000:653E out dx, al ; 01h->IO port 102h C000:653F pop dx ; DX=46E8h C000:6540 mov al, 0Eh ; data C000:6542 out dx, ax ; 000Eh->IO port 46E8h C000:6543 mov dh, 4Ah ; 'J' ; DX=4AE8h C000:6545 sub ax, ax ; AX=0 C000:6547 out dx, ax ; 0000h->IO port 4AE8h C000:6548 popa C000:6549 retn C000:6549 set_IO_4xxx endp C000:6549 C000:654A C000:654A ; =============== S U B R O U T I N E ======================================= C000:654A C000:654A C000:654A set_IO_46E8_0E proc near ; CODE XREF: C000:22A1p C000:654A push ax C000:654B push dx C000:654C mov dx, 46E8h ; IO address C000:654F mov al, 0Eh ; data C000:6551 out dx, al ; 0Eh->IO port 46E8h C000:6552 pop dx C000:6553 pop ax C000:6554 retn C000:6554 set_IO_46E8_0E endp C000:6554 C000:6555 C000:6555 ; =============== S U B R O U T I N E ======================================= C000:6555 C000:6555 C000:6555 set_IO_46E8_00 proc near ; CODE XREF: C000:loc_C22A6p C000:6555 push ax C000:6556 push dx C000:6557 mov dx, 46E8h ; IO address C000:655A sub al, al ; data C000:655C out dx, al ; 00h->IO port 46E8h C000:655D pop dx C000:655E pop ax C000:655F retn C000:655F set_IO_46E8_00 endp C000:655F C000:6560 C000:6560 ; =============== S U B R O U T I N E ======================================= C000:6560 C000:6560 C000:6560 sub_C6560 proc near ; CODE XREF: VESA_OEM_SPECF+39p C000:6560 pusha C000:6561 call vga_init3_1 ; write something to CRTC[30h] C000:6564 call get_CRTC_port C000:6567 mov ax, 52h ; 'R' C000:656A mov cx, 0Eh ; count = 14 C000:656D C000:656D loc_C656D: ; CODE XREF: sub_C6560+13j C000:656D mov ah, es:[di] C000:6570 out dx, ax ; ES:[DI++]|52h++->IO port 3D4h C000:6571 inc ax C000:6572 inc di C000:6573 loop loc_C656D C000:6575 mov al, 50h ; 'P' C000:6577 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:657A xor ah, 1 C000:657D out dx, ax C000:657E xor ah, 1 C000:6581 out dx, ax C000:6582 call set_crtc30h_0 C000:6585 popa C000:6586 retn C000:6586 sub_C6560 endp C000:6586 C000:6587 C000:6587 ; =============== S U B R O U T I N E ======================================= C000:6587 C000:6587 C000:6587 vga_init3 proc near ; CODE XREF: vga_init+7Ep C000:6587 pusha C000:6588 call vga_init3_1 C000:658B call get_CRTC_port C000:658E mov ax, 40h ; '@' ; data C000:6591 mov cx, 0Fh ; count = 15 C000:6594 C000:6594 loc_C6594: ; CODE XREF: vga_init3+Fj C000:6594 out dx, ax ; 0040h-004Fh->IO port 3D4h C000:6595 inc ax C000:6596 loop loc_C6594 ; incrementing CRTC index register but no data? C000:6598 mov ax, 14Bh C000:659B out dx, ax ; 014Bh->IO port 3D4h C000:659C mov ax, 0BF01h C000:659F mov bx, 4358h C000:65A2 mov ch, 0 C000:65A4 int 15h ; some weird service call, AX=BF01h: Rational Systems DOS/16M C000:65A6 mov ah, dl C000:65A8 mov al, 6Ch ; 'l' C000:65AA call get_CRTC_port C000:65AD out dx, ax ; xx6C->IO port 3D4h C000:65AE call set_crtc30h_0 C000:65B1 popa C000:65B2 retn C000:65B2 vga_init3 endp C000:65B2 C000:65B3 C000:65B3 ; =============== S U B R O U T I N E ======================================= C000:65B3 C000:65B3 C000:65B3 sub_C65B3 proc near ; CODE XREF: C000:02A3p C000:65B3 push dx C000:65B4 push ax C000:65B5 call vga_init3_1 C000:65B8 call get_CRTC_port C000:65BB mov ax, 49h ; 'I' C000:65BE out dx, ax C000:65BF call set_crtc30h_0 C000:65C2 pop ax C000:65C3 pop dx C000:65C4 retn C000:65C4 sub_C65B3 endp C000:65C4 C000:65C5 C000:65C5 ; =============== S U B R O U T I N E ======================================= C000:65C5 C000:65C5 ; Attributes: bp-based frame C000:65C5 C000:65C5 hi_level_func proc near ; CODE XREF: C000:02AFp C000:65C5 C000:65C5 var_4 = word ptr -4 C000:65C5 var_2 = byte ptr -2 C000:65C5 var_1 = byte ptr -1 C000:65C5 C000:65C5 push bp C000:65C6 mov bp, sp C000:65C8 add sp, 0FFFAh C000:65CB pusha C000:65CC push es C000:65CD call vga_init3_1 C000:65D0 call sub_C68BE C000:65D3 call sub_C2C61 C000:65D6 jb loc_C66AC C000:65DA mov al, es:[bx+5] C000:65DE mov [bp+var_1], al C000:65E1 mov ax, es:[bx+0Ch] C000:65E5 mov [bp+var_4], ax C000:65E8 call get_CRTC_port C000:65EB cmp byte ptr ds:449h, 13h C000:65F0 jle short loc_C6616 C000:65F2 mov al, es:[bx+4] C000:65F6 cmp al, 0 C000:65F8 jz short loc_C6616 C000:65FA cmp al, 5 C000:65FC jz short loc_C6616 C000:65FE mov ax, es:[bx+0Ch] C000:6602 shr ax, 3 C000:6605 mov ah, al C000:6607 mov al, 13h C000:6609 out dx, ax C000:660A mov ax, es:[bx+0Ch] C000:660E shr ah, 3 C000:6611 mov al, 45h ; 'E' C000:6613 out dx, ax C000:6614 jmp short loc_C661B C000:6616 ; --------------------------------------------------------------------------- C000:6616 C000:6616 loc_C6616: ; CODE XREF: hi_level_func+2Bj C000:6616 ; hi_level_func+33j ... C000:6616 xor ah, ah C000:6618 mov al, 45h ; 'E' C000:661A out dx, ax C000:661B C000:661B loc_C661B: ; CODE XREF: hi_level_func+4Fj C000:661B mov al, es:[bx+1] C000:661F mov [bp+var_2], al C000:6622 call sub_C2D5F C000:6625 mov cl, 5 C000:6627 mul cl C000:6629 call sub_C2C9C C000:662C les si, es:[bx] C000:662F add si, ax C000:6631 call get_CRTC_port C000:6634 mov ah, es:[si+1] C000:6638 mov al, 41h ; 'A' C000:663A out dx, ax C000:663B mov cl, es:[si] C000:663E mov ah, cl C000:6640 and ah, 7 C000:6643 mov al, 43h ; 'C' C000:6645 out dx, ax C000:6646 xor ah, ah C000:6648 mov al, 44h ; 'D' C000:664A out dx, ax C000:664B mov ah, [bp+var_1] C000:664E and ah, 0Fh C000:6651 shr ah, 0 C000:6654 mov al, 46h ; 'F' C000:6656 out dx, ax C000:6657 xor ah, ah C000:6659 mov al, 49h ; 'I' C000:665B out dx, ax C000:665C xor ah, ah C000:665E mov al, 4Ah ; 'J' C000:6660 out dx, ax C000:6661 mov ah, [bp+var_1] C000:6664 and ah, 0F0h C000:6667 shr ah, 4 C000:666A mov al, 4Bh ; 'K' C000:666C out dx, ax C000:666D mov ah, es:[si+2] C000:6671 mov al, 4Ch ; 'L' C000:6673 out dx, ax C000:6674 mov ah, es:[si+3] C000:6678 mov al, 4Dh ; 'M' C000:667A out dx, ax C000:667B xor ah, ah C000:667D mov al, 4Eh ; 'N' C000:667F out dx, ax C000:6680 mov ax, 8062h C000:6683 out dx, ax C000:6684 mov ax, 60h ; '`' C000:6687 out dx, ax C000:6688 inc ax C000:6689 out dx, ax C000:668A inc ax C000:668B out dx, ax C000:668C mov ah, 3 C000:668E test byte ptr ds:489h, 80h C000:6693 jz short loc_C6697 C000:6695 shr ah, 1 C000:6697 C000:6697 loc_C6697: ; CODE XREF: hi_level_func+CEj C000:6697 call sub_C2D11 C000:669A jnz short loc_C669F C000:669C or ah, 80h C000:669F C000:669F loc_C669F: ; CODE XREF: hi_level_func+D5j C000:669F and ah, es:[si+4] C000:66A3 mov al, 63h ; 'c' C000:66A5 out dx, ax C000:66A6 mov al, [bp+var_2] C000:66A9 call sub_C68C9 C000:66AC C000:66AC loc_C66AC: ; CODE XREF: hi_level_func+11j C000:66AC call set_crtc30h_0 C000:66AF pop es C000:66B0 popa C000:66B1 leave C000:66B2 retn C000:66B2 hi_level_func endp C000:66B2 C000:66B3 C000:66B3 ; =============== S U B R O U T I N E ======================================= C000:66B3 C000:66B3 C000:66B3 sub_C66B3 proc near ; CODE XREF: sub_C0363:loc_C0561p C000:66B3 push bx C000:66B4 push es C000:66B5 cmp al, 7 C000:66B7 ja short loc_C66E4 C000:66B9 jz short loc_C66D9 C000:66BB cmp al, 3 C000:66BD ja short loc_C66F0 C000:66BF test byte ptr ds:489h, 80h C000:66C4 jnz short loc_C66F0 C000:66C6 mov bl, al C000:66C8 add al, 13h C000:66CA test byte ptr ds:489h, 10h C000:66CF jz short loc_C66F0 C000:66D1 mov al, bl C000:66D3 shr al, 1 C000:66D5 add al, 17h C000:66D7 jmp short loc_C66F0 C000:66D9 ; --------------------------------------------------------------------------- C000:66D9 C000:66D9 loc_C66D9: ; CODE XREF: sub_C66B3+6j C000:66D9 test byte ptr ds:489h, 10h C000:66DE jz short loc_C66F0 C000:66E0 mov al, 19h C000:66E2 jmp short loc_C66F0 C000:66E4 ; --------------------------------------------------------------------------- C000:66E4 C000:66E4 loc_C66E4: ; CODE XREF: sub_C66B3+4j C000:66E4 call sub_C2C61 C000:66E7 jb short loc_C66F3 C000:66E9 mov al, es:[bx+1] C000:66ED call sub_C2D5F C000:66F0 C000:66F0 loc_C66F0: ; CODE XREF: sub_C66B3+Aj C000:66F0 ; sub_C66B3+11j ... C000:66F0 pop es C000:66F1 pop bx C000:66F2 retn C000:66F3 ; --------------------------------------------------------------------------- C000:66F3 C000:66F3 loc_C66F3: ; CODE XREF: sub_C66B3+34j C000:66F3 sub al, al C000:66F5 jmp short loc_C66F0 C000:66F5 sub_C66B3 endp C000:66F5 C000:66F7 C000:66F7 ; =============== S U B R O U T I N E ======================================= C000:66F7 C000:66F7 C000:66F7 nullsub_3 proc near ; CODE XREF: C000:254Ep C000:66F7 retn ; retn C000:66F7 nullsub_3 endp C000:66F7 C000:66F8 C000:66F8 ; =============== S U B R O U T I N E ======================================= C000:66F8 C000:66F8 C000:66F8 nullsub_2 proc near ; CODE XREF: C000:2588p C000:66F8 retn ; retn C000:66F8 nullsub_2 endp C000:66F8 C000:66F9 C000:66F9 ; =============== S U B R O U T I N E ======================================= C000:66F9 C000:66F9 C000:66F9 vga_init3_1 proc near ; CODE XREF: sub_C6560+1p C000:66F9 ; vga_init3+1p ... C000:66F9 push ax C000:66FA push dx C000:66FB pushf C000:66FC cli C000:66FD call get_CRTC_port ; select EGA CRTC port, DX = 3D4h C000:6700 mov al, 30h ; '0' ; set CRTC index register - there's no such high index? [0-18h] C000:6702 out dx, al ; 30h->IO port 3D4h, CRTC[30h] C000:6703 inc dx ; DX = 3D5h (CRTC data) C000:6704 mov al, 57h ; 'W' C000:6706 out dx, al ; 57h->IO port 3D5h, CRTC[30h] = 57h C000:6707 mov al, 4Ch ; 'L' C000:6709 out dx, al ; 4Ch->IO port 3D5h, CRTC[30h] = 4Ch C000:670A popf C000:670B pop dx C000:670C pop ax C000:670D retn C000:670D vga_init3_1 endp C000:670D C000:670E C000:670E ; =============== S U B R O U T I N E ======================================= C000:670E C000:670E C000:670E set_crtc30h_0 proc near ; CODE XREF: sub_C6560+22p C000:670E ; vga_init3+27p ... C000:670E push ax C000:670F push dx C000:6710 pushf C000:6711 cli C000:6712 call get_CRTC_port C000:6715 mov al, 30h ; '0' C000:6717 out dx, al ; 30h->IO port 3D4h (CRTC index) C000:6718 inc dx ; DX = 3D5h (CRTC data) C000:6719 mov al, 0 C000:671B out dx, al ; CRTC[30h]=0 C000:671C popf C000:671D pop dx C000:671E pop ax C000:671F retn C000:671F set_crtc30h_0 endp C000:671F C000:6720 C000:6720 ; =============== S U B R O U T I N E ======================================= C000:6720 C000:6720 C000:6720 sub_C6720 proc near ; CODE XREF: C000:02BCp C000:6720 pusha C000:6721 push es C000:6722 call sub_C68BE C000:6725 call sub_C2C61 C000:6728 jb short loc_C6780 C000:672A sub di, di C000:672C mov ax, 720h C000:672F mov cx, 4000h C000:6732 mov dx, 0B800h C000:6735 mov bl, es:[bx+4] C000:6739 cmp bl, 0 C000:673C jz short loc_C6751 C000:673E mov dh, 0B0h ; '-' C000:6740 cmp bl, 1 C000:6743 jz short loc_C6751 C000:6745 cmp bl, 2 C000:6748 jnz short loc_C6757 C000:674A mov dh, 0B8h ; 'ª' C000:674C mov cx, 4000h C000:674F sub ax, ax C000:6751 C000:6751 loc_C6751: ; CODE XREF: sub_C6720+1Cj C000:6751 ; sub_C6720+23j C000:6751 mov es, dx C000:6753 assume es:nothing C000:6753 rep stosw C000:6755 jmp short loc_C6780 C000:6757 ; --------------------------------------------------------------------------- C000:6757 C000:6757 loc_C6757: ; CODE XREF: sub_C6720+28j C000:6757 mov ax, 1 C000:675A cmp byte ptr ds:449h, 13h C000:675F jbe short loc_C6764 C000:6761 call get_vram_size C000:6764 C000:6764 loc_C6764: ; CODE XREF: sub_C6720+3Fj C000:6764 mov si, ax C000:6766 mov ax, 0A000h C000:6769 mov es, ax C000:676B assume es:nothing C000:676B mov ax, di C000:676D mov dx, di C000:676F C000:676F loc_C676F: ; CODE XREF: sub_C6720+59j C000:676F call sub_C67DB C000:6772 mov cx, 8000h C000:6775 rep stosw C000:6777 inc dx C000:6778 dec si C000:6779 jnz short loc_C676F C000:677B sub dx, dx C000:677D call sub_C67DB C000:6780 C000:6780 loc_C6780: ; CODE XREF: sub_C6720+8j C000:6780 ; sub_C6720+35j C000:6780 pop es C000:6781 assume es:nothing C000:6781 popa C000:6782 retn C000:6782 sub_C6720 endp C000:6782 C000:6783 C000:6783 ; =============== S U B R O U T I N E ======================================= C000:6783 C000:6783 C000:6783 get_vram_size proc near ; CODE XREF: sub_C6720+41p C000:6783 ; sub_C679E+18p ... C000:6783 push bx C000:6784 push cx C000:6785 push dx C000:6786 call get_CRTC_port ; determine IO port of CRTC DX = 3B4h or 3D4h C000:6789 mov al, 3Eh ; '>' ; AL = 3Eh - Size of graphics memory in 64K units (RO) C000:678B call read_CRTC_al_ah ; read ext. CRTC register 3Eh to AH C000:678E mov al, ah ; AL = AH = video memory size in 64kB blocks; C000:678E ; patch by mov al,40h to get 4MB videomemory C000:6790 cbw ; AX = sign-extend of AL C000:6791 cmp al, 21h ; '!' ; if AL != 33 (2112kB) C000:6793 jnz short skip_dec_al ; then leave value unchanged C000:6795 dec al ; if AL == 33 then AL-- (AL = 32, 2048kB) C000:6797 C000:6797 skip_dec_al: ; CODE XREF: get_vram_size+10j C000:6797 pop dx C000:6798 pop cx C000:6799 pop bx C000:679A retn C000:679A get_vram_size endp C000:679A C000:679B C000:679B ; =============== S U B R O U T I N E ======================================= C000:679B C000:679B C000:679B sub_C679B proc near ; CODE XREF: sub_C2CBD+2p C000:679B mov al, 2 C000:679D retn C000:679D sub_C679B endp C000:679D C000:679E C000:679E ; =============== S U B R O U T I N E ======================================= C000:679E C000:679E C000:679E sub_C679E proc near C000:679E pusha C000:679F sub bh, bh C000:67A1 mov bl, 7 C000:67A3 mov ah, 3 C000:67A5 int 10h ; - VIDEO - READ CURSOR POSITION C000:67A5 ; BH = page number C000:67A5 ; Return: DH,DL = row,column, CH = cursor start line, CL = cursor end line C000:67A7 mov ax, 1301h C000:67AA mov cx, 13h C000:67AD mov bp, 69A1h C000:67B0 int 10h ; - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA) C000:67B0 ; AL = mode, BL = attribute if AL bit 1 clear, BH = display page number C000:67B0 ; DH,DL = row,column of starting cursor position, CX = length of string C000:67B0 ; ES:BP -> start of string C000:67B2 mov ah, 3 C000:67B4 int 10h ; - VIDEO - READ CURSOR POSITION C000:67B4 ; BH = page number C000:67B4 ; Return: DH,DL = row,column, CH = cursor start line, CL = cursor end line C000:67B6 call get_vram_size C000:67B9 mov bp, ax C000:67BB shl bp, 1 C000:67BD add bp, 69B4h C000:67C1 mov cx, 8 C000:67C4 mov ax, 1301h C000:67C7 int 10h ; - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA) C000:67C7 ; AL = mode, BL = attribute if AL bit 1 clear, BH = display page number C000:67C7 ; DH,DL = row,column of starting cursor position, CX = length of string C000:67C7 ; ES:BP -> start of string C000:67C9 mov ax, 0E0Dh C000:67CC int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) C000:67CC ; AL = character, BH = display page (alpha modes) C000:67CC ; BL = foreground color (graphics modes) C000:67CE mov ax, 0E0Ah C000:67D1 int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) C000:67D1 ; AL = character, BH = display page (alpha modes) C000:67D1 ; BL = foreground color (graphics modes) C000:67D3 mov ax, 0E0Ah C000:67D6 int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) C000:67D6 ; AL = character, BH = display page (alpha modes) C000:67D6 ; BL = foreground color (graphics modes) C000:67D8 popa C000:67D9 retn C000:67D9 sub_C679E endp C000:67D9 C000:67DA ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND] C000:67DB C000:67DB ; =============== S U B R O U T I N E ======================================= C000:67DB C000:67DB C000:67DB sub_C67DB proc near ; CODE XREF: C000:02C4p C000:67DB ; sub_C0782+37p ... C000:67DB call sub_C67E2 C000:67DE call sub_C67F5 C000:67E1 retn C000:67E1 sub_C67DB endp C000:67E1 C000:67E2 C000:67E2 ; =============== S U B R O U T I N E ======================================= C000:67E2 C000:67E2 C000:67E2 sub_C67E2 proc near ; CODE XREF: sub_C1A75-82p C000:67E2 ; sub_C1A75-77p ... C000:67E2 push ax C000:67E3 push dx C000:67E4 mov ah, dl C000:67E6 call vga_init3_1 C000:67E9 call get_CRTC_port C000:67EC mov al, 47h ; 'G' C000:67EE out dx, ax C000:67EF call set_crtc30h_0 C000:67F2 pop dx C000:67F3 pop ax C000:67F4 retn C000:67F4 sub_C67E2 endp C000:67F4 C000:67F5 C000:67F5 ; =============== S U B R O U T I N E ======================================= C000:67F5 C000:67F5 C000:67F5 sub_C67F5 proc near ; CODE XREF: sub_C191B+5Ep C000:67F5 ; sub_C1A75+A8p ... C000:67F5 push ax C000:67F6 push dx C000:67F7 mov ah, dl C000:67F9 call vga_init3_1 C000:67FC call get_CRTC_port C000:67FF mov al, 48h ; 'H' C000:6801 out dx, ax C000:6802 call set_crtc30h_0 C000:6805 pop dx C000:6806 pop ax C000:6807 retn C000:6807 sub_C67F5 endp C000:6807 C000:6808 C000:6808 ; =============== S U B R O U T I N E ======================================= C000:6808 C000:6808 C000:6808 sub_C6808 proc near ; CODE XREF: sub_C0782+6Fp C000:6808 ; sub_C0782+79p ... C000:6808 call sub_C680F C000:680B call sub_C681F C000:680E retn C000:680E sub_C6808 endp C000:680E C000:680F C000:680F ; =============== S U B R O U T I N E ======================================= C000:680F C000:680F C000:680F sub_C680F proc near ; CODE XREF: sub_C191B-1Cp C000:680F ; sub_C191B-13p ... C000:680F push ax C000:6810 push dx C000:6811 call get_CRTC_port C000:6814 mov al, 47h ; 'G' C000:6816 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:6819 inc ah C000:681B out dx, ax C000:681C pop dx C000:681D pop ax C000:681E retn C000:681E sub_C680F endp C000:681E C000:681F C000:681F ; =============== S U B R O U T I N E ======================================= C000:681F C000:681F C000:681F sub_C681F proc near ; CODE XREF: sub_C191B+88p C000:681F ; sub_C191B+99p ... C000:681F push ax C000:6820 push dx C000:6821 call get_CRTC_port C000:6824 mov al, 48h ; 'H' C000:6826 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:6829 inc ah C000:682B out dx, ax C000:682C pop dx C000:682D pop ax C000:682E retn C000:682E sub_C681F endp C000:682E C000:682F C000:682F ; =============== S U B R O U T I N E ======================================= C000:682F C000:682F C000:682F sub_C682F proc near ; CODE XREF: sub_C1CAD+97p C000:682F ; sub_C1D87:loc_C1E8Cp ... C000:682F push ax C000:6830 push dx C000:6831 call get_CRTC_port C000:6834 mov al, 47h ; 'G' C000:6836 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:6839 dec ah C000:683B out dx, ax C000:683C pop dx C000:683D pop ax C000:683E retn C000:683E sub_C682F endp C000:683E C000:683F C000:683F ; =============== S U B R O U T I N E ======================================= C000:683F C000:683F C000:683F sub_C683F proc near ; CODE XREF: sub_C1CAD+9Ep C000:683F ; sub_C1D87:loc_C1E91p C000:683F push ax C000:6840 push dx C000:6841 call get_CRTC_port C000:6844 mov al, 48h ; 'H' C000:6846 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:6849 dec ah C000:684B out dx, ax C000:684C pop dx C000:684D pop ax C000:684E retn C000:684E sub_C683F endp C000:684E C000:684F C000:684F ; =============== S U B R O U T I N E ======================================= C000:684F C000:684F C000:684F sub_C684F proc near ; CODE XREF: sub_C191B+57p C000:684F ; sub_C1CAD+5Ap ... C000:684F push ax C000:6850 call get_CRTC_port C000:6853 mov al, 47h ; 'G' C000:6855 out dx, al C000:6856 inc dx C000:6857 in al, dx C000:6858 cbw C000:6859 mov dx, ax C000:685B pop ax C000:685C retn C000:685C sub_C684F endp C000:685C C000:685D C000:685D ; =============== S U B R O U T I N E ======================================= C000:685D C000:685D C000:685D sub_C685D proc near ; CODE XREF: sub_C71BC+3p C000:685D ; VESA_SET_MODE:loc_C73B4p C000:685D pusha C000:685E push es C000:685F call sub_C2C61 C000:6862 jb short loc_C687B C000:6864 mov ax, es:[bx+0Ch] C000:6868 cmp ax, 108h C000:686B jnz short loc_C6872 C000:686D mov dx, 15h C000:6870 jmp short loc_C6876 C000:6872 ; --------------------------------------------------------------------------- C000:6872 C000:6872 loc_C6872: ; CODE XREF: sub_C685D+Ej C000:6872 mul word ptr es:[bx+0Ah] C000:6876 C000:6876 loc_C6876: ; CODE XREF: sub_C685D+13j C000:6876 call get_vram_size C000:6879 cmp ax, dx C000:687B C000:687B loc_C687B: ; CODE XREF: sub_C685D+5j C000:687B ; C000:687Fj C000:687B pop es C000:687C popa C000:687D retn C000:687D sub_C685D endp C000:687D C000:687E ; --------------------------------------------------------------------------- C000:687E stc C000:687F jmp short loc_C687B C000:6881 ; --------------------------------------------------------------------------- C000:6881 mov ax, 14h C000:6884 pop ds C000:6885 pop si C000:6886 iret C000:6887 C000:6887 ; =============== S U B R O U T I N E ======================================= C000:6887 C000:6887 C000:6887 sub_C6887 proc near ; CODE XREF: C000:02A0p C000:6887 push ax C000:6888 push dx C000:6889 call vga_init3_1 C000:688C call get_CRTC_port C000:688F mov ax, 13Fh C000:6892 out dx, ax C000:6893 call set_crtc30h_0 C000:6896 pop dx C000:6897 pop ax C000:6898 retn C000:6898 sub_C6887 endp C000:6898 C000:6899 C000:6899 ; =============== S U B R O U T I N E ======================================= C000:6899 C000:6899 C000:6899 sub_C6899 proc near ; CODE XREF: C000:02C7p C000:6899 push ax C000:689A push dx C000:689B call vga_init3_1 C000:689E call get_CRTC_port C000:68A1 mov ax, 3Fh ; '?' C000:68A4 out dx, ax C000:68A5 call set_crtc30h_0 C000:68A8 pop dx C000:68A9 pop ax C000:68AA retn C000:68AA sub_C6899 endp C000:68AA C000:68AB C000:68AB ; =============== S U B R O U T I N E ======================================= C000:68AB C000:68AB C000:68AB sub_C68AB proc near ; CODE XREF: C000:02E2p C000:68AB push ax C000:68AC push dx C000:68AD call vga_init3_1 C000:68B0 call get_CRTC_port C000:68B3 mov ah, al C000:68B5 mov al, 40h ; '@' C000:68B7 out dx, ax C000:68B8 call set_crtc30h_0 C000:68BB pop dx C000:68BC pop ax C000:68BD retn C000:68BD sub_C68AB endp C000:68BD C000:68BE C000:68BE ; =============== S U B R O U T I N E ======================================= C000:68BE C000:68BE C000:68BE sub_C68BE proc near ; CODE XREF: hi_level_func+Bp C000:68BE ; sub_C6720+2p ... C000:68BE push dx C000:68BF call get_CRTC_port C000:68C2 mov al, 40h ; '@' C000:68C4 out dx, al C000:68C5 inc dx C000:68C6 in al, dx C000:68C7 pop dx C000:68C8 retn C000:68C8 sub_C68BE endp C000:68C8 C000:68C9 C000:68C9 ; =============== S U B R O U T I N E ======================================= C000:68C9 C000:68C9 C000:68C9 sub_C68C9 proc near ; CODE XREF: hi_level_func+E4p C000:68C9 pusha C000:68CA mov bl, al C000:68CC call get_CRTC_port C000:68CF mov al, 4Fh ; 'O' C000:68D1 out dx, al C000:68D2 inc dx C000:68D3 in al, dx C000:68D4 mov si, 6D8Dh C000:68D7 C000:68D7 loc_C68D7: ; CODE XREF: sub_C68C9+2Cj C000:68D7 cmp bl, cs:[si] C000:68DA jz short loc_C68E8 C000:68DC cmp bl, cs:[si+1] C000:68E0 jz short loc_C68E8 C000:68E2 cmp bl, cs:[si+2] C000:68E6 jnz short loc_C68EE C000:68E8 C000:68E8 loc_C68E8: ; CODE XREF: sub_C68C9+11j C000:68E8 ; sub_C68C9+17j C000:68E8 cmp al, cs:[si+3] C000:68EC jz short loc_C68FA C000:68EE C000:68EE loc_C68EE: ; CODE XREF: sub_C68C9+1Dj C000:68EE add si, 13h C000:68F1 cmp si, 6ED0h C000:68F5 jb short loc_C68D7 C000:68F7 jmp loc_C697D C000:68FA ; --------------------------------------------------------------------------- C000:68FA C000:68FA loc_C68FA: ; CODE XREF: sub_C68C9+23j C000:68FA call get_CRTC_port C000:68FD mov al, 11h C000:68FF mov ah, cs:[si+0Dh] C000:6903 and ah, 7Eh C000:6906 out dx, ax C000:6907 mov al, 0 C000:6909 mov ah, cs:[si+5] C000:690D out dx, ax C000:690E mov al, 2 C000:6910 mov ah, cs:[si+6] C000:6914 out dx, ax C000:6915 inc al C000:6917 mov ah, cs:[si+7] C000:691B out dx, ax C000:691C inc al C000:691E mov ah, cs:[si+8] C000:6922 out dx, ax C000:6923 inc al C000:6925 mov ah, cs:[si+9] C000:6929 out dx, ax C000:692A inc al C000:692C mov ah, cs:[si+0Ah] C000:6930 out dx, ax C000:6931 inc al C000:6933 mov ah, cs:[si+0Bh] C000:6937 out dx, ax C000:6938 mov al, 10h C000:693A mov ah, cs:[si+0Ch] C000:693E out dx, ax C000:693F inc al C000:6941 mov ah, cs:[si+0Dh] C000:6945 out dx, ax C000:6946 mov al, 15h C000:6948 mov ah, cs:[si+0Eh] C000:694C out dx, ax C000:694D inc al C000:694F mov ah, cs:[si+0Fh] C000:6953 out dx, ax C000:6954 call vga_init3_1 C000:6957 mov al, 41h ; 'A' C000:6959 mov ah, cs:[si+10h] C000:695D out dx, ax C000:695E mov al, 4Ch ; 'L' C000:6960 mov ah, cs:[si+11h] C000:6964 out dx, ax C000:6965 mov al, 4Dh ; 'M' C000:6967 mov ah, cs:[si+12h] C000:696B out dx, ax C000:696C call set_crtc30h_0 C000:696F mov dx, 3CCh C000:6972 in al, dx ; EGA port: graphics 1 position (must be 1 for EGA) C000:6973 and al, 3Fh C000:6975 or al, cs:[si+4] C000:6979 mov dx, 3C2h C000:697C out dx, al ; EGA : misc cntl C000:697C ; 0: 1=select 3BxH C000:697C ; 1: 1=enable RAM C000:697C ; 2-3: Dot clock C000:697C ; 5: Page bit for odd/even mode C000:697C ; 6: Horiz retrace polarity: 1=neg, 0=pos C000:697C ; 7: Vert retrace polarity: 1=neg, 0=pos C000:697D C000:697D loc_C697D: ; CODE XREF: sub_C68C9+2Ej C000:697D popa C000:697E retn C000:697E sub_C68C9 endp C000:697E C000:697E ; --------------------------------------------------------------------------- C000:697F db 0 C000:6980 db 18h C000:6981 db 1 C000:6982 db 2 C000:6983 VESA_OEM_STR db 'Cyrix',0 ; VESA OEM string C000:6989 PCIR_STRUCT db 'PCIR' ; PCIR structure C000:698D dw 1078h ; PCI Vendor ID, device ID C000:698F word_C698F dw 104h ; DATA XREF: vga_init+18r C000:698F ; vga_init+1Dw C000:6991 dw 0 ; pointer to vital product data C000:6993 dw 18h ; PCI data structure size C000:6995 db 0 ; PCI data structure revision C000:6996 db 0 ; programming interface code C000:6997 db 0 ; PCI data device subclass code C000:6998 db 3 ; PCI data device class code C000:6999 dw 40h ; ROM size * 512B C000:699B dw 1 ; revision level C000:699D db 0 ; code type - 0=x86 C000:699E db 80h ; last image indicator C000:699F dw 0 ; reserved C000:69A1 aVideoMemorySiz db 'Video Memory Size: 4.0MB ôl',0 C000:69BF db 0C0h ; L C000:69C0 db 0C8h ; L C000:69C1 db 69h ; i C000:69C2 db 0 C000:69C3 db 0C0h ; L C000:69C4 db 0 C000:69C5 db 0 C000:69C6 db 0 C000:69C7 db 0 C000:69C8 db 0 C000:69C9 db 17h C000:69CA db 0 C000:69CB db 0 C000:69CC db 0 C000:69CD db 0 C000:69CE db 8 C000:69CF db 4 C000:69D0 db 28h ; ( C000:69D1 db 0 C000:69D2 db 19h C000:69D3 db 0 C000:69D4 db 50h ; P C000:69D5 db 0 C000:69D6 db 1 C000:69D7 db 17h C000:69D8 db 1 C000:69D9 db 0 C000:69DA db 0 C000:69DB db 0 C000:69DC db 8 C000:69DD db 4 C000:69DE db 28h ; ( C000:69DF db 0 C000:69E0 db 19h C000:69E1 db 0 C000:69E2 db 50h ; P C000:69E3 db 0 C000:69E4 db 2 C000:69E5 db 18h C000:69E6 db 2 C000:69E7 db 0 C000:69E8 db 0 C000:69E9 db 0 C000:69EA db 8 C000:69EB db 4 C000:69EC db 50h ; P C000:69ED db 0 C000:69EE db 19h C000:69EF db 0 C000:69F0 db 0A0h ; á C000:69F1 db 0 C000:69F2 db 3 C000:69F3 db 18h C000:69F4 db 3 C000:69F5 db 0 C000:69F6 db 0 C000:69F7 db 0 C000:69F8 db 8 C000:69F9 db 4 C000:69FA db 50h ; P C000:69FB db 0 C000:69FC db 19h C000:69FD db 0 C000:69FE db 0A0h ; á C000:69FF db 0 C000:6A00 db 4 C000:6A01 db 4 C000:6A02 db 4 C000:6A03 db 0 C000:6A04 db 2 C000:6A05 db 0 C000:6A06 db 1 C000:6A07 db 2 C000:6A08 db 40h ; @ C000:6A09 db 1 C000:6A0A db 0C8h ; L C000:6A0B db 0 C000:6A0C db 50h ; P C000:6A0D db 0 C000:6A0E db 5 C000:6A0F db 5 C000:6A10 db 5 C000:6A11 db 0 C000:6A12 db 2 C000:6A13 db 0 C000:6A14 db 1 C000:6A15 db 2 C000:6A16 db 40h ; @ C000:6A17 db 1 C000:6A18 db 0C8h ; L C000:6A19 db 0 C000:6A1A db 50h ; P C000:6A1B db 0 C000:6A1C db 6 C000:6A1D db 6 C000:6A1E db 6 C000:6A1F db 0 C000:6A20 db 2 C000:6A21 db 0 C000:6A22 db 1 C000:6A23 db 1 C000:6A24 db 80h ; Ç C000:6A25 db 2 C000:6A26 db 0C8h ; L C000:6A27 db 0 C000:6A28 db 50h ; P C000:6A29 db 0 C000:6A2A db 7 C000:6A2B db 19h C000:6A2C db 7 C000:6A2D db 0 C000:6A2E db 1 C000:6A2F db 0 C000:6A30 db 8 C000:6A31 db 0 C000:6A32 db 50h ; P C000:6A33 db 0 C000:6A34 db 19h C000:6A35 db 0 C000:6A36 db 0A0h ; á C000:6A37 db 0 C000:6A38 db 0Dh C000:6A39 db 0Dh C000:6A3A db 0Dh C000:6A3B db 0 C000:6A3C db 5 C000:6A3D db 0 C000:6A3E db 8 C000:6A3F db 4 C000:6A40 db 40h ; @ C000:6A41 db 1 C000:6A42 db 0C8h ; L C000:6A43 db 0 C000:6A44 db 28h ; ( C000:6A45 db 0 C000:6A46 db 0Eh C000:6A47 db 0Eh C000:6A48 db 0Eh C000:6A49 db 0 C000:6A4A db 5 C000:6A4B db 0 C000:6A4C db 4 C000:6A4D db 4 C000:6A4E db 80h ; Ç C000:6A4F db 2 C000:6A50 db 0C8h ; L C000:6A51 db 0 C000:6A52 db 50h ; P C000:6A53 db 0 C000:6A54 db 0Fh C000:6A55 db 11h C000:6A56 db 0Fh C000:6A57 db 0 C000:6A58 db 3 C000:6A59 db 0 C000:6A5A db 2 C000:6A5B db 1 C000:6A5C db 80h ; Ç C000:6A5D db 2 C000:6A5E db 5Eh ; ^ C000:6A5F db 1 C000:6A60 db 50h ; P C000:6A61 db 0 C000:6A62 db 10h C000:6A63 db 12h C000:6A64 db 10h C000:6A65 db 0 C000:6A66 db 5 C000:6A67 db 0 C000:6A68 db 2 C000:6A69 db 4 C000:6A6A db 80h ; Ç C000:6A6B db 2 C000:6A6C db 5Eh ; ^ C000:6A6D db 1 C000:6A6E db 50h ; P C000:6A6F db 0 C000:6A70 db 11h C000:6A71 db 1Ah C000:6A72 db 11h C000:6A73 db 0 C000:6A74 db 4 C000:6A75 db 0 C000:6A76 db 1 C000:6A77 db 1 C000:6A78 db 80h ; Ç C000:6A79 db 2 C000:6A7A db 0E0h ; Ó C000:6A7B db 1 C000:6A7C db 50h ; P C000:6A7D db 0 C000:6A7E db 12h C000:6A7F db 1Bh C000:6A80 db 12h C000:6A81 db 0 C000:6A82 db 5 C000:6A83 db 0 C000:6A84 db 1 C000:6A85 db 4 C000:6A86 db 80h ; Ç C000:6A87 db 2 C000:6A88 db 0E0h ; Ó C000:6A89 db 1 C000:6A8A db 50h ; P C000:6A8B db 0 C000:6A8C db 13h C000:6A8D db 1Ch C000:6A8E db 13h C000:6A8F db 0 C000:6A90 db 6 C000:6A91 db 0 C000:6A92 db 1 C000:6A93 db 8 C000:6A94 db 40h ; @ C000:6A95 db 1 C000:6A96 db 0C8h ; L C000:6A97 db 0 C000:6A98 db 40h ; @ C000:6A99 db 1 C000:6A9A db 5Fh ; _ C000:6A9B db 9 C000:6A9C db 1 C000:6A9D db 1 C000:6A9E db 6 C000:6A9F db 0 C000:6AA0 db 1 C000:6AA1 db 8 C000:6AA2 db 80h ; Ç C000:6AA3 db 2 C000:6AA4 db 0E0h ; Ó C000:6AA5 db 1 C000:6AA6 db 80h ; Ç C000:6AA7 db 2 C000:6AA8 db 6Ah ; j C000:6AA9 db 0Ah C000:6AAA db 2 C000:6AAB db 1 C000:6AAC db 5 C000:6AAD db 0 C000:6AAE db 1 C000:6AAF db 4 C000:6AB0 db 20h C000:6AB1 db 3 C000:6AB2 db 58h ; X C000:6AB3 db 2 C000:6AB4 db 64h ; d C000:6AB5 db 0 C000:6AB6 db 5Ch ; \ C000:6AB7 db 0Bh C000:6AB8 db 3 C000:6AB9 db 1 C000:6ABA db 6 C000:6ABB db 0 C000:6ABC db 1 C000:6ABD db 8 C000:6ABE db 20h C000:6ABF db 3 C000:6AC0 db 58h ; X C000:6AC1 db 2 C000:6AC2 db 20h C000:6AC3 db 3 C000:6AC4 db 5Dh ; ] C000:6AC5 db 0Ch C000:6AC6 db 4 C000:6AC7 db 1 C000:6AC8 db 5 C000:6AC9 db 0 C000:6ACA db 1 C000:6ACB db 4 C000:6ACC db 0 C000:6ACD db 4 C000:6ACE db 0 C000:6ACF db 3 C000:6AD0 db 80h ; Ç C000:6AD1 db 0 C000:6AD2 db 60h ; ` C000:6AD3 db 0Fh C000:6AD4 db 5 C000:6AD5 db 1 C000:6AD6 db 6 C000:6AD7 db 0 C000:6AD8 db 1 C000:6AD9 db 8 C000:6ADA db 0 C000:6ADB db 4 C000:6ADC db 0 C000:6ADD db 3 C000:6ADE db 0 C000:6ADF db 4 C000:6AE0 db 5Ah ; Z C000:6AE1 db 10h C000:6AE2 db 6 C000:6AE3 db 1 C000:6AE4 db 5 C000:6AE5 db 0 C000:6AE6 db 1 C000:6AE7 db 4 C000:6AE8 db 0 C000:6AE9 db 5 C000:6AEA db 0 C000:6AEB db 4 C000:6AEC db 0A0h ; á C000:6AED db 0 C000:6AEE db 6Bh ; k C000:6AEF db 1Dh C000:6AF0 db 7 C000:6AF1 db 1 C000:6AF2 db 6 C000:6AF3 db 0 C000:6AF4 db 1 C000:6AF5 db 8 C000:6AF6 db 0 C000:6AF7 db 5 C000:6AF8 db 0 C000:6AF9 db 4 C000:6AFA db 0 C000:6AFB db 5 C000:6AFC db 68h ; h C000:6AFD db 1Eh C000:6AFE db 8 C000:6AFF db 1 C000:6B00 db 0 C000:6B01 db 0 C000:6B02 db 6 C000:6B03 db 4 C000:6B04 db 50h ; P C000:6B05 db 0 C000:6B06 db 3Ch ; < C000:6B07 db 0 C000:6B08 db 0A0h ; á C000:6B09 db 0 C000:6B0A db 55h ; U C000:6B0B db 1Fh C000:6B0C db 9 C000:6B0D db 1 C000:6B0E db 0 C000:6B0F db 0 C000:6B10 db 2 C000:6B11 db 4 C000:6B12 db 84h ; ä C000:6B13 db 0 C000:6B14 db 19h C000:6B15 db 0 C000:6B16 db 8 C000:6B17 db 1 C000:6B18 db 54h ; T C000:6B19 db 20h C000:6B1A db 0Ah C000:6B1B db 1 C000:6B1C db 0 C000:6B1D db 0 C000:6B1E db 2 C000:6B1F db 4 C000:6B20 db 84h ; ä C000:6B21 db 0 C000:6B22 db 2Bh ; + C000:6B23 db 0 C000:6B24 db 8 C000:6B25 db 1 C000:6B26 db 65h ; e C000:6B27 db 21h ; ! C000:6B28 db 0Bh C000:6B29 db 1 C000:6B2A db 0 C000:6B2B db 0 C000:6B2C db 2 C000:6B2D db 4 C000:6B2E db 84h ; ä C000:6B2F db 0 C000:6B30 db 32h ; 2 C000:6B31 db 0 C000:6B32 db 8 C000:6B33 db 1 C000:6B34 db 64h ; d C000:6B35 db 22h ; " C000:6B36 db 0Ch C000:6B37 db 1 C000:6B38 db 0 C000:6B39 db 0 C000:6B3A db 2 C000:6B3B db 4 C000:6B3C db 84h ; ä C000:6B3D db 0 C000:6B3E db 3Ch ; < C000:6B3F db 0 C000:6B40 db 8 C000:6B41 db 1 C000:6B42 db 6Ch ; l C000:6B43 db 25h ; % C000:6B44 db 10h C000:6B45 db 1 C000:6B46 db 7 C000:6B47 db 83h ; â C000:6B48 db 1 C000:6B49 db 0Fh C000:6B4A db 80h ; Ç C000:6B4B db 2 C000:6B4C db 0E0h ; Ó C000:6B4D db 1 C000:6B4E db 0 C000:6B4F db 5 C000:6B50 db 6Dh ; m C000:6B51 db 25h ; % C000:6B52 db 11h C000:6B53 db 1 C000:6B54 db 7 C000:6B55 db 81h ; ü C000:6B56 db 1 C000:6B57 db 10h C000:6B58 db 80h ; Ç C000:6B59 db 2 C000:6B5A db 0E0h ; Ó C000:6B5B db 1 C000:6B5C db 0 C000:6B5D db 5 C000:6B5E db 6Eh ; n C000:6B5F db 27h ; ' C000:6B60 db 13h C000:6B61 db 1 C000:6B62 db 7 C000:6B63 db 83h ; â C000:6B64 db 1 C000:6B65 db 0Fh C000:6B66 db 20h C000:6B67 db 3 C000:6B68 db 58h ; X C000:6B69 db 2 C000:6B6A db 40h ; @ C000:6B6B db 6 C000:6B6C db 6Fh ; o C000:6B6D db 27h ; ' C000:6B6E db 14h C000:6B6F db 1 C000:6B70 db 7 C000:6B71 db 81h ; ü C000:6B72 db 1 C000:6B73 db 10h C000:6B74 db 20h C000:6B75 db 3 C000:6B76 db 58h ; X C000:6B77 db 2 C000:6B78 db 40h ; @ C000:6B79 db 6 C000:6B7A db 61h ; a C000:6B7B db 29h ; ) C000:6B7C db 16h C000:6B7D db 1 C000:6B7E db 7 C000:6B7F db 23h ; # C000:6B80 db 1 C000:6B81 db 0Fh C000:6B82 db 0 C000:6B83 db 4 C000:6B84 db 0 C000:6B85 db 3 C000:6B86 db 0 C000:6B87 db 8 C000:6B88 db 62h ; b C000:6B89 db 29h ; ) C000:6B8A db 17h C000:6B8B db 1 C000:6B8C db 7 C000:6B8D db 21h ; ! C000:6B8E db 1 C000:6B8F db 10h C000:6B90 db 0 C000:6B91 db 4 C000:6B92 db 0 C000:6B93 db 3 C000:6B94 db 0 C000:6B95 db 8 C000:6B96 db 20h C000:6B97 db 23h ; # C000:6B98 db 20h C000:6B99 db 1 C000:6B9A db 6 C000:6B9B db 0 C000:6B9C db 1 C000:6B9D db 8 C000:6B9E db 40h ; @ C000:6B9F db 1 C000:6BA0 db 0C8h ; L C000:6BA1 db 0 C000:6BA2 db 40h ; @ C000:6BA3 db 1 C000:6BA4 db 78h ; x C000:6BA5 db 23h ; # C000:6BA6 db 0Dh C000:6BA7 db 1 C000:6BA8 db 7 C000:6BA9 db 83h ; â C000:6BAA db 1 C000:6BAB db 0Fh C000:6BAC db 40h ; @ C000:6BAD db 1 C000:6BAE db 0C8h ; L C000:6BAF db 0 C000:6BB0 db 80h ; Ç C000:6BB1 db 2 C000:6BB2 db 79h ; y C000:6BB3 db 23h ; # C000:6BB4 db 0Eh C000:6BB5 db 1 C000:6BB6 db 7 C000:6BB7 db 81h ; ü C000:6BB8 db 1 C000:6BB9 db 10h C000:6BBA db 40h ; @ C000:6BBB db 1 C000:6BBC db 0C8h ; L C000:6BBD db 0 C000:6BBE db 80h ; Ç C000:6BBF db 2 C000:6BC0 db 21h ; ! C000:6BC1 db 2Ah ; * C000:6BC2 db 21h ; ! C000:6BC3 db 1 C000:6BC4 db 6 C000:6BC5 db 0 C000:6BC6 db 1 C000:6BC7 db 8 C000:6BC8 db 40h ; @ C000:6BC9 db 1 C000:6BCA db 0F0h ; ­ C000:6BCB db 0 C000:6BCC db 40h ; @ C000:6BCD db 1 C000:6BCE db 22h ; " C000:6BCF db 2Ah ; * C000:6BD0 db 22h ; " C000:6BD1 db 1 C000:6BD2 db 7 C000:6BD3 db 83h ; â C000:6BD4 db 1 C000:6BD5 db 0Fh C000:6BD6 db 40h ; @ C000:6BD7 db 1 C000:6BD8 db 0F0h ; ­ C000:6BD9 db 0 C000:6BDA db 80h ; Ç C000:6BDB db 2 C000:6BDC db 23h ; # C000:6BDD db 2Ah ; * C000:6BDE db 23h ; # C000:6BDF db 1 C000:6BE0 db 7 C000:6BE1 db 81h ; ü C000:6BE2 db 1 C000:6BE3 db 10h C000:6BE4 db 40h ; @ C000:6BE5 db 1 C000:6BE6 db 0F0h ; ­ C000:6BE7 db 0 C000:6BE8 db 80h ; Ç C000:6BE9 db 2 C000:6BEA db 25h ; % C000:6BEB db 2Ch ; , C000:6BEC db 25h ; % C000:6BED db 1 C000:6BEE db 6 C000:6BEF db 0 C000:6BF0 db 1 C000:6BF1 db 8 C000:6BF2 db 90h ; É C000:6BF3 db 1 C000:6BF4 db 2Ch ; , C000:6BF5 db 1 C000:6BF6 db 90h ; É C000:6BF7 db 1 C000:6BF8 db 26h ; & C000:6BF9 db 2Ch ; , C000:6BFA db 26h ; & C000:6BFB db 1 C000:6BFC db 7 C000:6BFD db 83h ; â C000:6BFE db 1 C000:6BFF db 0Fh C000:6C00 db 90h ; É C000:6C01 db 1 C000:6C02 db 2Ch ; , C000:6C03 db 1 C000:6C04 db 20h C000:6C05 db 3 C000:6C06 db 27h ; ' C000:6C07 db 2Ch ; , C000:6C08 db 27h ; ' C000:6C09 db 1 C000:6C0A db 7 C000:6C0B db 81h ; ü C000:6C0C db 1 C000:6C0D db 10h C000:6C0E db 90h ; É C000:6C0F db 1 C000:6C10 db 2Ch ; , C000:6C11 db 1 C000:6C12 db 20h C000:6C13 db 3 C000:6C14 db 29h ; ) C000:6C15 db 2Eh ; . C000:6C16 db 29h ; ) C000:6C17 db 1 C000:6C18 db 6 C000:6C19 db 0 C000:6C1A db 1 C000:6C1B db 8 C000:6C1C db 0 C000:6C1D db 2 C000:6C1E db 80h ; Ç C000:6C1F db 1 C000:6C20 db 0 C000:6C21 db 2 C000:6C22 db 2Ah ; * C000:6C23 db 2Eh ; . C000:6C24 db 2Ah ; * C000:6C25 db 1 C000:6C26 db 7 C000:6C27 db 83h ; â C000:6C28 db 1 C000:6C29 db 0Fh C000:6C2A db 0 C000:6C2B db 2 C000:6C2C db 80h ; Ç C000:6C2D db 1 C000:6C2E db 0 C000:6C2F db 4 C000:6C30 db 2Bh ; + C000:6C31 db 2Eh ; . C000:6C32 db 2Bh ; + C000:6C33 db 1 C000:6C34 db 7 C000:6C35 db 81h ; ü C000:6C36 db 1 C000:6C37 db 10h C000:6C38 db 0 C000:6C39 db 2 C000:6C3A db 80h ; Ç C000:6C3B db 1 C000:6C3C db 0 C000:6C3D db 4 C000:6C3E db 5Bh ; [ C000:6C3F db 8 C000:6C40 db 0 C000:6C41 db 1 C000:6C42 db 6 C000:6C43 db 0 C000:6C44 db 1 C000:6C45 db 8 C000:6C46 db 80h ; Ç C000:6C47 db 2 C000:6C48 db 90h ; É C000:6C49 db 1 C000:6C4A db 80h ; Ç C000:6C4B db 2 C000:6C4C db 2Dh ; - C000:6C4D db 8 C000:6C4E db 2Dh ; - C000:6C4F db 1 C000:6C50 db 7 C000:6C51 db 83h ; â C000:6C52 db 1 C000:6C53 db 0Fh C000:6C54 db 80h ; Ç C000:6C55 db 2 C000:6C56 db 90h ; É C000:6C57 db 1 C000:6C58 db 0 C000:6C59 db 5 C000:6C5A db 2Eh ; . C000:6C5B db 8 C000:6C5C db 2Eh ; . C000:6C5D db 1 C000:6C5E db 7 C000:6C5F db 81h ; ü C000:6C60 db 1 C000:6C61 db 10h C000:6C62 db 80h ; Ç C000:6C63 db 2 C000:6C64 db 90h ; É C000:6C65 db 1 C000:6C66 db 0 C000:6C67 db 5 C000:6C68 db 40h ; @ C000:6C69 db 2Fh ; / C000:6C6A db 0C0h ; L C000:6C6B db 1 C000:6C6C db 6 C000:6C6D db 0 C000:6C6E db 1 C000:6C6F db 8 C000:6C70 db 80h ; Ç C000:6C71 db 4 C000:6C72 db 60h ; ` C000:6C73 db 3 C000:6C74 db 80h ; Ç C000:6C75 db 4 C000:6C76 db 41h ; A C000:6C77 db 30h ; 0 C000:6C78 db 0C2h ; T C000:6C79 db 1 C000:6C7A db 7 C000:6C7B db 21h ; ! C000:6C7C db 1 C000:6C7D db 10h C000:6C7E db 80h ; Ç C000:6C7F db 4 C000:6C80 db 60h ; ` C000:6C81 db 3 C000:6C82 db 0 C000:6C83 db 9 C000:6C84 db 42h ; B C000:6C85 db 31h ; 1 C000:6C86 db 1Ah C000:6C87 db 1 C000:6C88 db 7 C000:6C89 db 21h ; ! C000:6C8A db 1 C000:6C8B db 10h C000:6C8C db 0 C000:6C8D db 5 C000:6C8E db 0 C000:6C8F db 4 C000:6C90 db 0 C000:6C91 db 0Ah C000:6C92 db 0FFh C000:6C93 db 4 C000:6C94 db 0 C000:6C95 db 0 C000:6C96 db 0 C000:6C97 db 0FFh C000:6C98 db 4 C000:6C99 db 0 C000:6C9A db 0 C000:6C9B db 0 C000:6C9C db 0FFh C000:6C9D db 0 C000:6C9E db 0 C000:6C9F db 0 C000:6CA0 db 0 C000:6CA1 db 0FFh C000:6CA2 db 0 C000:6CA3 db 0 C000:6CA4 db 0 C000:6CA5 db 0 C000:6CA6 db 0FFh C000:6CA7 db 4 C000:6CA8 db 0 C000:6CA9 db 0 C000:6CAA db 0 C000:6CAB db 0 C000:6CAC db 4 C000:6CAD db 0 C000:6CAE db 0 C000:6CAF db 0 C000:6CB0 db 0 C000:6CB1 db 0 C000:6CB2 db 0 C000:6CB3 db 0 C000:6CB4 db 0 C000:6CB5 db 0 C000:6CB6 db 0 C000:6CB7 db 0 C000:6CB8 db 0 C000:6CB9 db 0 C000:6CBA db 0FFh C000:6CBB db 3 C000:6CBC db 0 C000:6CBD db 0 C000:6CBE db 0 C000:6CBF db 0 C000:6CC0 db 3 C000:6CC1 db 0 C000:6CC2 db 0 C000:6CC3 db 0 C000:6CC4 db 0 C000:6CC5 db 2 C000:6CC6 db 0 C000:6CC7 db 0A0h ; á C000:6CC8 db 50h ; P C000:6CC9 db 0 C000:6CCA db 3 C000:6CCB db 0 C000:6CCC db 0A0h ; á C000:6CCD db 50h ; P C000:6CCE db 0 C000:6CCF db 2 C000:6CD0 db 0 C000:6CD1 db 80h ; Ç C000:6CD2 db 41h ; A C000:6CD3 db 0 C000:6CD4 db 4 C000:6CD5 db 0 C000:6CD6 db 0 C000:6CD7 db 0 C000:6CD8 db 0 C000:6CD9 db 0 C000:6CDA db 0 C000:6CDB db 0 C000:6CDC db 0 C000:6CDD db 0 C000:6CDE db 3 C000:6CDF db 0 C000:6CE0 db 80h ; Ç C000:6CE1 db 41h ; A C000:6CE2 db 0 C000:6CE3 db 2 C000:6CE4 db 51h ; Q C000:6CE5 db 80h ; Ç C000:6CE6 db 6Ch ; l C000:6CE7 db 0 C000:6CE8 db 0 C000:6CE9 db 0 C000:6CEA db 0 C000:6CEB db 0 C000:6CEC db 0 C000:6CED db 0 C000:6CEE db 0 C000:6CEF db 0 C000:6CF0 db 0 C000:6CF1 db 0 C000:6CF2 db 4 C000:6CF3 db 0 C000:6CF4 db 0 C000:6CF5 db 0 C000:6CF6 db 0FFh C000:6CF7 db 4 C000:6CF8 db 0 C000:6CF9 db 0 C000:6CFA db 0 C000:6CFB db 0FFh C000:6CFC db 0 C000:6CFD db 0 C000:6CFE db 0 C000:6CFF db 0 C000:6D00 db 0FFh C000:6D01 db 0 C000:6D02 db 0 C000:6D03 db 0 C000:6D04 db 0 C000:6D05 db 0FFh C000:6D06 db 4 C000:6D07 db 0 C000:6D08 db 0 C000:6D09 db 0 C000:6D0A db 0FFh C000:6D0B db 0 C000:6D0C db 0 C000:6D0D db 0 C000:6D0E db 0 C000:6D0F db 0FFh C000:6D10 db 0 C000:6D11 db 0 C000:6D12 db 0 C000:6D13 db 0 C000:6D14 db 0FFh C000:6D15 db 0 C000:6D16 db 0 C000:6D17 db 0 C000:6D18 db 0 C000:6D19 db 0 C000:6D1A db 0 C000:6D1B db 0 C000:6D1C db 0 C000:6D1D db 0 C000:6D1E db 0 C000:6D1F db 0 C000:6D20 db 0 C000:6D21 db 0 C000:6D22 db 0 C000:6D23 db 0 C000:6D24 db 3 C000:6D25 db 51h ; Q C000:6D26 db 80h ; Ç C000:6D27 db 6Ch ; l C000:6D28 db 0 C000:6D29 db 0 C000:6D2A db 0 C000:6D2B db 0 C000:6D2C db 0 C000:6D2D db 0 C000:6D2E db 0 C000:6D2F db 0 C000:6D30 db 80h ; Ç C000:6D31 db 28h ; ( C000:6D32 db 0 C000:6D33 db 0 C000:6D34 db 0 C000:6D35 db 80h ; Ç C000:6D36 db 28h ; ( C000:6D37 db 0 C000:6D38 db 0 C000:6D39 db 0 C000:6D3A db 80h ; Ç C000:6D3B db 28h ; ( C000:6D3C db 0 C000:6D3D db 0 C000:6D3E db 0 C000:6D3F db 80h ; Ç C000:6D40 db 28h ; ( C000:6D41 db 0 C000:6D42 db 7 C000:6D43 db 0 C000:6D44 db 0 C000:6D45 db 0 C000:6D46 db 0 C000:6D47 db 8Bh ; õ C000:6D48 db 0 C000:6D49 db 0 C000:6D4A db 0 C000:6D4B db 0 C000:6D4C db 23h ; # C000:6D4D db 0 C000:6D4E db 0 C000:6D4F db 0 C000:6D50 db 0 C000:6D51 db 8Bh ; õ C000:6D52 db 0 C000:6D53 db 0 C000:6D54 db 0 C000:6D55 db 0 C000:6D56 db 23h ; # C000:6D57 db 0 C000:6D58 db 0A0h ; á C000:6D59 db 50h ; P C000:6D5A db 0 C000:6D5B db 93h ; ô C000:6D5C db 0 C000:6D5D db 0A0h ; á C000:6D5E db 50h ; P C000:6D5F db 0 C000:6D60 db 2Bh ; + C000:6D61 db 0 C000:6D62 db 80h ; Ç C000:6D63 db 41h ; A C000:6D64 db 0 C000:6D65 db 7 C000:6D66 db 0 C000:6D67 db 0 C000:6D68 db 0 C000:6D69 db 0 C000:6D6A db 7 C000:6D6B db 0 C000:6D6C db 80h ; Ç C000:6D6D db 28h ; ( C000:6D6E db 0 C000:6D6F db 3 C000:6D70 db 0 C000:6D71 db 0 C000:6D72 db 0 C000:6D73 db 0 C000:6D74 db 7 C000:6D75 db 0 C000:6D76 db 80h ; Ç C000:6D77 db 41h ; A C000:6D78 db 0 C000:6D79 db 3 C000:6D7A db 0 C000:6D7B db 0 C000:6D7C db 0 C000:6D7D db 0 C000:6D7E db 3 C000:6D7F db 0 C000:6D80 db 80h ; Ç C000:6D81 db 6Ch ; l C000:6D82 db 0 C000:6D83 db 2Bh ; + C000:6D84 db 0 C000:6D85 db 80h ; Ç C000:6D86 db 6Ch ; l C000:6D87 db 0 C000:6D88 db 2Bh ; + C000:6D89 db 51h ; Q C000:6D8A db 80h ; Ç C000:6D8B db 6Ch ; l C000:6D8C db 0 C000:6D8D db 9 C000:6D8E db 25h ; % C000:6D8F db 0FFh C000:6D90 db 3Ch ; < C000:6D91 db 0C0h ; L C000:6D92 db 5Fh ; _ C000:6D93 db 50h ; P C000:6D94 db 82h ; é C000:6D95 db 54h ; T C000:6D96 db 9Eh ; × C000:6D97 db 0Bh C000:6D98 db 3Eh ; > C000:6D99 db 0EAh ; à C000:6D9A db 0Ch C000:6D9B db 0E7h ; š C000:6D9C db 4 C000:6D9D db 0 C000:6D9E db 0A0h ; á C000:6D9F db 32h ; 2 C000:6DA0 db 9 C000:6DA1 db 25h ; % C000:6DA2 db 0FFh C000:6DA3 db 48h ; H C000:6DA4 db 0C0h ; L C000:6DA5 db 63h ; c C000:6DA6 db 50h ; P C000:6DA7 db 86h ; æ C000:6DA8 db 55h ; U C000:6DA9 db 99h ; Ö C000:6DAA db 6 C000:6DAB db 3Eh ; > C000:6DAC db 0E9h ; Ú C000:6DAD db 0Ch C000:6DAE db 0E7h ; š C000:6DAF db 0FFh C000:6DB0 db 0 C000:6DB1 db 0A0h ; á C000:6DB2 db 3Fh ; ? C000:6DB3 db 9 C000:6DB4 db 25h ; % C000:6DB5 db 0FFh C000:6DB6 db 4Bh ; K C000:6DB7 db 0C0h ; L C000:6DB8 db 64h ; d C000:6DB9 db 4Fh ; O C000:6DBA db 88h ; ³ C000:6DBB db 54h ; T C000:6DBC db 9Bh ; C000:6DBD db 0F2h ; ² C000:6DBE db 1Fh C000:6DBF db 0E1h ; ß C000:6DC0 db 4 C000:6DC1 db 0DFh ; - C000:6DC2 db 0F3h ; ¡ C000:6DC3 db 0 C000:6DC4 db 0A0h ; á C000:6DC5 db 3Fh ; ? C000:6DC6 db 9 C000:6DC7 db 25h ; % C000:6DC8 db 0FFh C000:6DC9 db 55h ; U C000:6DCA db 0C0h ; L C000:6DCB db 63h ; c C000:6DCC db 4Fh ; O C000:6DCD db 87h ; ç C000:6DCE db 59h ; Y C000:6DCF db 9Fh ; è C000:6DD0 db 0FBh ; û C000:6DD1 db 1Fh C000:6DD2 db 0E1h ; ß C000:6DD3 db 4 C000:6DD4 db 0DFh ; - C000:6DD5 db 0FCh ; Ø C000:6DD6 db 0 C000:6DD7 db 0A0h ; á C000:6DD8 db 48h ; H C000:6DD9 db 0Bh C000:6DDA db 27h ; ' C000:6DDB db 0FFh C000:6DDC db 3Ch ; < C000:6DDD db 0 C000:6DDE db 7Fh ;  C000:6DDF db 64h ; d C000:6DE0 db 82h ; é C000:6DE1 db 6Bh ; k C000:6DE2 db 1Bh C000:6DE3 db 72h ; r C000:6DE4 db 0F0h ; ­ C000:6DE5 db 59h ; Y C000:6DE6 db 0Dh C000:6DE7 db 57h ; W C000:6DE8 db 73h ; s C000:6DE9 db 0 C000:6DEA db 0A0h ; á C000:6DEB db 50h ; P C000:6DEC db 0Bh C000:6DED db 27h ; ' C000:6DEE db 0FFh C000:6DEF db 48h ; H C000:6DF0 db 0 C000:6DF1 db 7Dh ; } C000:6DF2 db 63h ; c C000:6DF3 db 81h ; ü C000:6DF4 db 6Dh ; m C000:6DF5 db 1Bh C000:6DF6 db 98h ; œ C000:6DF7 db 0F0h ; ­ C000:6DF8 db 7Dh ; } C000:6DF9 db 3 C000:6DFA db 57h ; W C000:6DFB db 99h ; Ö C000:6DFC db 0 C000:6DFD db 0A0h ; á C000:6DFE db 64h ; d C000:6DFF db 0Bh C000:6E00 db 27h ; ' C000:6E01 db 0FFh C000:6E02 db 4Bh ; K C000:6E03 db 0 C000:6E04 db 7Fh ;  C000:6E05 db 63h ; c C000:6E06 db 83h ; â C000:6E07 db 68h ; h C000:6E08 db 11h C000:6E09 db 6Fh ; o C000:6E0A db 0F0h ; ­ C000:6E0B db 59h ; Y C000:6E0C db 1Ch C000:6E0D db 57h ; W C000:6E0E db 70h ; p C000:6E0F db 0 C000:6E10 db 0A0h ; á C000:6E11 db 63h ; c C000:6E12 db 0Bh C000:6E13 db 27h ; ' C000:6E14 db 0FFh C000:6E15 db 55h ; U C000:6E16 db 0 C000:6E17 db 7Eh ; ~ C000:6E18 db 63h ; c C000:6E19 db 82h ; é C000:6E1A db 6Ah ; j C000:6E1B db 11h C000:6E1C db 75h ; u C000:6E1D db 0F0h ; ­ C000:6E1E db 59h ; Y C000:6E1F db 1Ch C000:6E20 db 57h ; W C000:6E21 db 76h ; v C000:6E22 db 0 C000:6E23 db 0A0h ; á C000:6E24 db 70h ; p C000:6E25 db 0Fh C000:6E26 db 29h ; ) C000:6E27 db 0FFh C000:6E28 db 3Ch ; < C000:6E29 db 0C0h ; L C000:6E2A db 0A3h ; ú C000:6E2B db 7Fh ;  C000:6E2C db 87h ; ç C000:6E2D db 85h ; ù C000:6E2E db 95h ; ¼ C000:6E2F db 24h ; $ C000:6E30 db 0F5h ; § C000:6E31 db 3 C000:6E32 db 9 C000:6E33 db 0FFh C000:6E34 db 25h ; % C000:6E35 db 0 C000:6E36 db 80h ; Ç C000:6E37 db 41h ; A C000:6E38 db 0Fh C000:6E39 db 29h ; ) C000:6E3A db 0FFh C000:6E3B db 46h ; F C000:6E3C db 0C0h ; L C000:6E3D db 0A1h ; í C000:6E3E db 7Fh ;  C000:6E3F db 85h ; ù C000:6E40 db 85h ; ù C000:6E41 db 95h ; ¼ C000:6E42 db 24h ; $ C000:6E43 db 0F5h ; § C000:6E44 db 3 C000:6E45 db 9 C000:6E46 db 0FFh C000:6E47 db 25h ; % C000:6E48 db 0 C000:6E49 db 80h ; Ç C000:6E4A db 4Bh ; K C000:6E4B db 0Fh C000:6E4C db 29h ; ) C000:6E4D db 0FFh C000:6E4E db 4Bh ; K C000:6E4F db 0 C000:6E50 db 9Fh ; è C000:6E51 db 7Fh ;  C000:6E52 db 83h ; â C000:6E53 db 84h ; ä C000:6E54 db 8Fh ; Æ C000:6E55 db 1Eh C000:6E56 db 0F5h ; § C000:6E57 db 1 C000:6E58 db 4 C000:6E59 db 0FFh C000:6E5A db 1Fh C000:6E5B db 0 C000:6E5C db 80h ; Ç C000:6E5D db 4Fh ; O C000:6E5E db 0Fh C000:6E5F db 29h ; ) C000:6E60 db 0FFh C000:6E61 db 55h ; U C000:6E62 db 0 C000:6E63 db 0A7h ; ž C000:6E64 db 7Fh ;  C000:6E65 db 8Bh ; õ C000:6E66 db 88h ; ³ C000:6E67 db 93h ; ô C000:6E68 db 26h ; & C000:6E69 db 0F5h ; § C000:6E6A db 1 C000:6E6B db 4 C000:6E6C db 0FFh C000:6E6D db 27h ; ' C000:6E6E db 0 C000:6E6F db 80h ; Ç C000:6E70 db 5Fh ; _ C000:6E71 db 2Fh ; / C000:6E72 db 30h ; 0 C000:6E73 db 0FFh C000:6E74 db 4Bh ; K C000:6E75 db 0 C000:6E76 db 0C3h ; + C000:6E77 db 90h ; É C000:6E78 db 86h ; æ C000:6E79 db 98h ; œ C000:6E7A db 8 C000:6E7B db 82h ; é C000:6E7C db 0FFh C000:6E7D db 61h ; a C000:6E7E db 4 C000:6E7F db 60h ; ` C000:6E80 db 83h ; â C000:6E81 db 0 C000:6E82 db 80h ; Ç C000:6E83 db 6Ch ; l C000:6E84 db 2Fh ; / C000:6E85 db 30h ; 0 C000:6E86 db 0FFh C000:6E87 db 55h ; U C000:6E88 db 0 C000:6E89 db 0CBh ; T C000:6E8A db 90h ; É C000:6E8B db 8Eh ; Ä C000:6E8C db 98h ; œ C000:6E8D db 14h C000:6E8E db 8Dh ; C000:6E8F db 0FFh C000:6E90 db 61h ; a C000:6E91 db 4 C000:6E92 db 60h ; ` C000:6E93 db 8Eh ; Ä C000:6E94 db 0 C000:6E95 db 80h ; Ç C000:6E96 db 81h ; ü C000:6E97 db 1Dh C000:6E98 db 31h ; 1 C000:6E99 db 0FFh C000:6E9A db 3Ch ; < C000:6E9B db 0 C000:6E9C db 0CFh ; ¤ C000:6E9D db 0A0h ; á C000:6E9E db 92h ; å C000:6E9F db 0AAh ; ¬ C000:6EA0 db 19h C000:6EA1 db 28h ; ( C000:6EA2 db 52h ; R C000:6EA3 db 1 C000:6EA4 db 4 C000:6EA5 db 0 C000:6EA6 db 29h ; ) C000:6EA7 db 51h ; Q C000:6EA8 db 80h ; Ç C000:6EA9 db 6Ch ; l C000:6EAA db 1Dh C000:6EAB db 31h ; 1 C000:6EAC db 0FFh C000:6EAD db 4Bh ; K C000:6EAE db 0 C000:6EAF db 0CEh ; + C000:6EB0 db 9Fh ; è C000:6EB1 db 92h ; å C000:6EB2 db 0A4h ; ¥ C000:6EB3 db 15h C000:6EB4 db 28h ; ( C000:6EB5 db 52h ; R C000:6EB6 db 1 C000:6EB7 db 4 C000:6EB8 db 0 C000:6EB9 db 29h ; ) C000:6EBA db 51h ; Q C000:6EBB db 80h ; Ç C000:6EBC db 87h ; ç C000:6EBD db 1Dh C000:6EBE db 31h ; 1 C000:6EBF db 0FFh C000:6EC0 db 55h ; U C000:6EC1 db 0 C000:6EC2 db 0D3h ; Ë C000:6EC3 db 0A0h ; á C000:6EC4 db 97h ; Œ C000:6EC5 db 0A8h ; Ê C000:6EC6 db 1Ch C000:6EC7 db 2Eh ; . C000:6EC8 db 52h ; R C000:6EC9 db 1 C000:6ECA db 4 C000:6ECB db 0 C000:6ECC db 2Fh ; / C000:6ECD db 51h ; Q C000:6ECE db 80h ; Ç C000:6ECF db 9Eh ; × C000:6ED0 VESA_INFO_TABLE db 'VESA' ; +00h: VESA signature (this 20B are directly copied by function 4F00h to user buffer) C000:6ED4 dw 102h ; +04h: VBE version 1.2 (changed) C000:6ED6 dw 6983h ; +06h: OEM string offset - "Cyrix" C000:6ED8 dw 0 ; +08h: OEM string segment (changed) C000:6EDA dd 0 ; +0Ah: capabilities flags C000:6EDE dw 6EE4h ; +0Eh: VESA mode list offset - below C000:6EE0 dw 0 ; +10h: VESA mode list segment (changed) C000:6EE2 dw 4 ; +12h: total video memory in 64kB blocks (changed) C000:6EE4 VESA_MODE_LIST dw 100h,101h,102h,103h,104h,105h,106h,107h,108h,109h,10Ah ; +14h: VESA mode list terminated by FFFFh (38+1 modes total) C000:6EE4 dw 10Bh,10Ch,10Dh,10Eh,110h,111h,113h,114h,116h,117h,11Ah C000:6EE4 dw 120h,121h,122h,123h,124h,125h,126h,127h,128h,129h,12Ah C000:6EE4 dw 12Bh,12Ch,12Dh,12Eh,12Fh,0FFFFh C000:6F32 VESA_OEM_VENDS db 'Elpin Systems VGA BIOS',0 ; OEM vendor name string C000:6F49 VESA_OEM_PRODS db 'Cyrix GX',0 ; OEM product name string C000:6F52 VESA_OEM_PRVER db 'Version 2.07',0 ; OEM product revision string C000:6F5F db 5 C000:6F60 db 0Ah C000:6F61 db 5 C000:6F62 db 5 C000:6F63 db 5 C000:6F64 db 0 C000:6F65 db 0 C000:6F66 db 0 C000:6F67 db 0 C000:6F68 db 5 C000:6F69 db 0Bh C000:6F6A db 6 C000:6F6B db 5 C000:6F6C db 5 C000:6F6D db 0 C000:6F6E db 0 C000:6F6F db 0 C000:6F70 db 0 C000:6F71 db 8 C000:6F72 db 10h C000:6F73 db 8 C000:6F74 db 8 C000:6F75 db 8 C000:6F76 db 0 C000:6F77 db 0 C000:6F78 db 0 C000:6F79 db 0 C000:6F7A db 40h ; @ C000:6F7B db 0 C000:6F7C db 40h ; @ C000:6F7D db 0 C000:6F7E db 20h C000:6F7F db 0 C000:6F80 db 20h C000:6F81 db 0 C000:6F82 db 0 C000:6F83 db 0A0h ; á C000:6F84 db 0 C000:6F85 db 0A0h ; á C000:6F86 db 0 C000:6F87 db 0B0h ; - C000:6F88 db 0 C000:6F89 db 0B8h ; ª C000:6F8A db 8 C000:6F8B db 0 C000:6F8C db 29h ; ) C000:6F8D db 0 C000:6F8E db 7Ah ; z C000:6F8F db 0 C000:6F90 db 0AEh ; « C000:6F91 db 0 C000:6F92 db 60h ; ` C000:6F93 db 8Ah ; Õ C000:6F94 db 0DAh ; - C000:6F95 db 66h ; f C000:6F96 db 0BAh ; ¦ C000:6F97 db 0D4h ; ï C000:6F98 db 3 C000:6F99 db 66h ; f C000:6F9A db 0B8h ; ª C000:6F9B db 30h ; 0 C000:6F9C db 57h ; W C000:6F9D db 66h ; f C000:6F9E db 0EFh ; ´ C000:6F9F db 66h ; f C000:6FA0 db 0B8h ; ª C000:6FA1 db 30h ; 0 C000:6FA2 db 4Ch ; L C000:6FA3 db 66h ; f C000:6FA4 db 0EFh ; ´ C000:6FA5 db 8Ah ; Õ C000:6FA6 db 0E3h ; Ñ C000:6FA7 db 0B0h ; - C000:6FA8 db 47h ; G C000:6FA9 db 66h ; f C000:6FAA db 0EFh ; ´ C000:6FAB db 66h ; f C000:6FAC db 0B8h ; ª C000:6FAD db 30h ; 0 C000:6FAE db 0 C000:6FAF db 66h ; f C000:6FB0 db 0EFh ; ´ C000:6FB1 db 61h ; a C000:6FB2 db 0C3h ; + C000:6FB3 db 60h ; ` C000:6FB4 db 0F6h ; ÷ C000:6FB5 db 0C3h ; + C000:6FB6 db 80h ; Ç C000:6FB7 db 74h ; t C000:6FB8 db 0Bh C000:6FB9 db 52h ; R C000:6FBA db 66h ; f C000:6FBB db 0BAh ; ¦ C000:6FBC db 0DAh ; - C000:6FBD db 3 C000:6FBE db 0ECh ; ý C000:6FBF db 0A8h ; Ê C000:6FC0 db 8 C000:6FC1 db 75h ; u C000:6FC2 db 0FBh ; û C000:6FC3 db 5Ah ; Z C000:6FC4 db 8Ah ; Õ C000:6FC5 db 0FAh ; ÿ C000:6FC6 db 66h ; f C000:6FC7 db 0BAh ; ¦ C000:6FC8 db 0D4h ; ï C000:6FC9 db 3 C000:6FCA db 66h ; f C000:6FCB db 0B8h ; ª C000:6FCC db 30h ; 0 C000:6FCD db 57h ; W C000:6FCE db 66h ; f C000:6FCF db 0EFh ; ´ C000:6FD0 db 66h ; f C000:6FD1 db 0B8h ; ª C000:6FD2 db 30h ; 0 C000:6FD3 db 4Ch ; L C000:6FD4 db 66h ; f C000:6FD5 db 0EFh ; ´ C000:6FD6 db 0B0h ; - C000:6FD7 db 44h ; D C000:6FD8 db 0B4h ; + C000:6FD9 db 80h ; Ç C000:6FDA db 66h ; f C000:6FDB db 0EFh ; ´ C000:6FDC db 0B0h ; - C000:6FDD db 0Ch C000:6FDE db 8Ah ; Õ C000:6FDF db 0E5h ; ò C000:6FE0 db 66h ; f C000:6FE1 db 0EFh ; ´ C000:6FE2 db 0B0h ; - C000:6FE3 db 0Dh C000:6FE4 db 8Ah ; Õ C000:6FE5 db 0E1h ; ß C000:6FE6 db 66h ; f C000:6FE7 db 0EFh ; ´ C000:6FE8 db 0B0h ; - C000:6FE9 db 44h ; D C000:6FEA db 8Ah ; Õ C000:6FEB db 0E7h ; š C000:6FEC db 66h ; f C000:6FED db 0EFh ; ´ C000:6FEE db 66h ; f C000:6FEF db 0B8h ; ª C000:6FF0 db 30h ; 0 C000:6FF1 db 0 C000:6FF2 db 66h ; f C000:6FF3 db 0EFh ; ´ C000:6FF4 db 0F6h ; ÷ C000:6FF5 db 0C3h ; + C000:6FF6 db 80h ; Ç C000:6FF7 db 74h ; t C000:6FF8 db 9 C000:6FF9 db 66h ; f C000:6FFA db 0BAh ; ¦ C000:6FFB db 0DAh ; - C000:6FFC db 3 C000:6FFD db 0ECh ; ý C000:6FFE db 0A8h ; Ê C000:6FFF db 8 C000:7000 db 74h ; t C000:7001 db 0FBh ; û C000:7002 db 61h ; a C000:7003 db 0C3h ; + C000:7004 db 60h ; ` C000:7005 db 1Eh C000:7006 db 0F6h ; ÷ C000:7007 db 0C3h ; + C000:7008 db 80h ; Ç C000:7009 db 74h ; t C000:700A db 0Bh C000:700B db 52h ; R C000:700C db 66h ; f C000:700D db 0BAh ; ¦ C000:700E db 0DAh ; - C000:700F db 3 C000:7010 db 0ECh ; ý C000:7011 db 0A8h ; Ê C000:7012 db 8 C000:7013 db 75h ; u C000:7014 db 0FBh ; û C000:7015 db 5Ah ; Z C000:7016 db 0FCh ; Ø C000:7017 db 6 C000:7018 db 1Fh C000:7019 db 8Bh ; õ C000:701A db 0F7h ; ¸ C000:701B db 0Fh C000:701C db 0B7h ; Ì C000:701D db 0C9h ; - C000:701E db 8Ah ; Õ C000:701F db 0C2h ; T C000:7020 db 66h ; f C000:7021 db 0BAh ; ¦ C000:7022 db 0C8h ; L C000:7023 db 3 C000:7024 db 0EEh ; þ C000:7025 db 42h ; B C000:7026 db 0ADh ; º C000:7027 db 0C1h ; + C000:7028 db 0C8h ; L C000:7029 db 10h C000:702A db 0EEh ; þ C000:702B db 0C1h ; + C000:702C db 0C0h ; L C000:702D db 8 C000:702E db 0EEh ; þ C000:702F db 0C1h ; + C000:7030 db 0C0h ; L C000:7031 db 8 C000:7032 db 0EEh ; þ C000:7033 db 0E2h ; Ô C000:7034 db 0F1h ; ½ C000:7035 db 1Fh C000:7036 db 61h ; a C000:7037 db 0C3h ; + C000:7038 db 0B4h ; + C000:7039 db 3 C000:703A db 0B5h ; Á C000:703B db 3 C000:703C db 0BAh ; ¦ C000:703D db 3 C000:703E db 0C0h ; L C000:703F db 3 C000:7040 db 0C1h ; + C000:7041 db 3 C000:7042 db 0C4h ; ¦ C000:7043 db 3 C000:7044 db 0C5h ; + C000:7045 db 3 C000:7046 db 0C6h ; à C000:7047 db 3 C000:7048 db 0C7h ; ã C000:7049 db 3 C000:704A db 0C8h ; L C000:704B db 3 C000:704C db 0C9h ; - C000:704D db 3 C000:704E db 0CCh ; ¦ C000:704F db 3 C000:7050 db 0CEh ; + C000:7051 db 3 C000:7052 db 0CFh ; ¤ C000:7053 db 3 C000:7054 db 0D4h ; ï C000:7055 db 3 C000:7056 db 0D5h ; Ò C000:7057 db 3 C000:7058 db 0DAh ; - C000:7059 db 3 C000:705A db 0FFh C000:705B db 0FFh C000:705C db 0FFh C000:705D db 0FFh C000:705E db 0 C000:705F db 0 C000:7060 VESA_FUNC_PTR dw offset VESA_GET_INFO ; DATA XREF: C000:7095r C000:7062 dw offset VESA_GET_MODE_INFO ; 4F01h C000:7064 dw offset VESA_SET_MODE ; 4F02h C000:7066 dw offset VESA_GET_MODE ; 4F03h C000:7068 dw offset VESA_SAVE_REST_STS ; 4F04h C000:706A dw offset VESA_SET_BANK ; 4F05h C000:706C dw offset VESA_SCANLINE_LEN ; 4F06h C000:706E dw offset VESA_SET_DISP_START ; 4F07h C000:7070 dw offset VESA_DAC_PAL_CTL ; 4F08h C000:7072 dw offset VESA_PAL_ENTRY ; 4F09h C000:7074 dw offset VESA_GET_PM_IFACE ; 4F0Ah C000:7076 dw offset VESA_RESERVED ; 4F0Bh C000:7078 dw offset VESA_RESERVED ; 4F0Ch C000:707A dw offset VESA_RESERVED ; 4F0Dh C000:707C dw offset VESA_RESERVED ; 4F0Eh C000:707E dw offset VESA_RESERVED ; 4F0Fh C000:7080 dw offset VESA_PWR_MNGMT ; 4F10h C000:7082 dw offset VESA_RESERVED ; 4F11h C000:7084 dw offset VESA_RESERVED ; 4F12h C000:7086 dw offset VESA_RESERVED ; 4F13h C000:7088 dw offset VESA_OEM_SPECF ; 4F14h C000:708A dw offset VESA_VBE_DC ; 4F15h C000:708C ; --------------------------------------------------------------------------- C000:708C C000:708C VESA_FUNC_DISPATCHER: ; CODE XREF: C000:goto_vesa_dispj C000:708C cmp al, 16h ; AH = 4F, AL = function number C000:708E jnb short skip_funcs ; jump if AL >= 16h C000:7090 cbw ; AX = sign-extend of AL C000:7091 shl ax, 1 ; convert function number to offset by mul 2 C000:7093 mov si, ax ; SI = function table offset C000:7095 call cs:VESA_FUNC_PTR[si] ; call function VESA_FUNC_PTR[AL*2] C000:709A C000:709A func_disp_exit: ; CODE XREF: C000:70A0j C000:709A pop ds C000:709B pop si C000:709C iret ; return to caller C000:709D ; --------------------------------------------------------------------------- C000:709D C000:709D skip_funcs: ; CODE XREF: C000:708Ej C000:709D mov ax, 100h ; return AL = 0 (func. not supported), AH = 1 (error) C000:70A0 jmp short func_disp_exit C000:70A2 C000:70A2 ; =============== S U B R O U T I N E ======================================= C000:70A2 C000:70A2 C000:70A2 VESA_GET_INFO proc near ; CODE XREF: C000:7095p C000:70A2 ; DATA XREF: C000:VESA_FUNC_PTRo C000:70A2 push bx ; ES:DI = pointer to info buffer to be filled C000:70A3 push cx C000:70A4 push dx C000:70A5 push di C000:70A6 push ds C000:70A7 push cs C000:70A8 pop ds ; DS = F000h C000:70A9 assume ds:nothing C000:70A9 sub ax, ax ; AX = 0 C000:70AB cmp word ptr es:[di], 4256h ; "VB" C000:70B0 jnz short skip_vbe2 ; check if "VBE2" string is passed in buffer C000:70B2 cmp word ptr es:[di+2], 3245h ; "E2" C000:70B8 jnz short skip_vbe2 ; save AX = 1 C000:70BA inc ax ; AX = 1 C000:70BB C000:70BB skip_vbe2: ; CODE XREF: VESA_GET_INFO+Ej C000:70BB ; VESA_GET_INFO+16j C000:70BB push ax ; save AX = 1 C000:70BC mov cx, 14h ; count = 20 C000:70BF mov si, 6ED0h ; SI = pointer to VESA_INFO_TABLE C000:70C2 push di ; save DI = buffer offset C000:70C3 rep movsb ; copy 20 Bytes from DS:[SI] to ES:[DI] C000:70C5 mov cx, 0ECh ; 'ý' ; count = 236 C000:70C8 sub al, al ; AL = 0 C000:70CA rep stosb ; zero 236 Bytes at ES:[DI] C000:70CC pop di ; DI = original buffer offset C000:70CD call get_vram_size C000:70D0 mov es:[di+12h], ax ; update video memory size [64kB blocks] C000:70D4 mov word ptr es:[di+8], cs ; update OEM string segment = F000h C000:70D8 mov word ptr es:[di+10h], cs ; update VESA mode list segment = F000h C000:70DC pop ax ; AX = 1 C000:70DD or ax, ax ; AX = 1 C000:70DF jz short no_vbe2 ; if 0 then skip VBE 2.0 extension and leave VBE 1.2 defaults C000:70E1 lea bx, [di+100h] ; offset to OEM data (next 256B buffer) C000:70E5 push bx C000:70E6 xchg bx, di ; BX = original buffer offset C000:70E8 mov word ptr es:[bx+4], 200h ; update VBE version to 2.0 C000:70EE mov word ptr es:[bx+14h], 100h ; update OEM software revision to 1.0 C000:70F4 mov es:[bx+6], di ; update OEM string offset to OEM extended buffer C000:70F8 mov word ptr es:[bx+8], es ; update OEM string segment to same as user buffer C000:70FC mov si, 6983h ; SI = pointer to VESA OEM string C000:70FF call STRCPY_DSSI_ESDI ; copy string to OEM extended buffer C000:7102 mov es:[bx+0Eh], di ; update VESA mode list offset to OEM extended buffer C000:7106 mov word ptr es:[bx+10h], es ; update VESA mode list segment to same as user buffer C000:710A mov cx, 27h ; ''' ; count = 39 C000:710D mov si, 6EE4h ; SI = pointer to VESA mode list C000:7110 rep movsw ; copy 39 Words from DS:[SI] to ES:[DI] C000:7112 mov es:[bx+16h], di ; update OEM vendor name string offset to OEM extended buffer C000:7116 mov word ptr es:[bx+18h], es ; update OEM vendor name string segment to same as user buffer C000:711A mov si, 6F32h ; SI = pointer to OEM vendor name string C000:711D call STRCPY_DSSI_ESDI ; copy string to OEM extended buffer C000:7120 mov es:[bx+1Ah], di ; update OEM product name string offset to OEM extended buffer C000:7124 mov word ptr es:[bx+1Ch], es ; update OEM product name string segment to same as user buffer C000:7128 mov si, 6F49h ; SI = pointer to OEM product name string C000:712B call STRCPY_DSSI_ESDI ; copy string to OEM extended buffer C000:712E mov es:[bx+1Eh], di ; update OEM product revision string offset to OEM extended buffer C000:7132 mov word ptr es:[bx+20h], es ; update OEM product revision string segment to same as user buffer C000:7136 mov si, 6F52h ; SI = pointer to OEM product revision string C000:7139 call STRCPY_DSSI_ESDI ; copy string to OEM extended buffer C000:713C pop ax ; offset to OEM data (next 256B buffer) C000:713D mov cx, 100h ; count = 256 C000:7140 sub cx, di ; 256-used Bytes C000:7142 add cx, ax C000:7144 sub al, al ; AL = 0 C000:7146 rep stosb ; zero rest of OEM extended buffer C000:7148 C000:7148 no_vbe2: ; CODE XREF: VESA_GET_INFO+3Dj C000:7148 pop ds C000:7149 assume ds:nothing C000:7149 pop di C000:714A pop dx C000:714B pop cx C000:714C pop bx C000:714D mov ax, 4Fh ; 'O' ; return AL = 4Fh (func. supported), C000:714D ; AH = 0 (status OK) C000:7150 C000:7150 VESA_RESERVED: ; CODE XREF: C000:7095p C000:7150 ; DATA XREF: C000:7076o ... C000:7150 retn ; not implemented, return immediatelly C000:7150 VESA_GET_INFO endp C000:7150 C000:7151 C000:7151 ; =============== S U B R O U T I N E ======================================= C000:7151 C000:7151 C000:7151 VESA_GET_MODE_INFO proc near ; CODE XREF: C000:7095p C000:7151 ; DATA XREF: C000:7062o C000:7151 push bx C000:7152 push cx C000:7153 push dx C000:7154 push bp C000:7155 push di C000:7156 call sub_C717F C000:7159 jb short loc_C7173 C000:715B call sub_C71BC C000:715E call sub_C7214 C000:7161 call sub_C724B C000:7164 call sub_C7335 C000:7167 call sub_C735E C000:716A mov ax, 4Fh ; 'O' ; return AL = 4Fh (func. supported), C000:716A ; AH = 0 (status OK) C000:716D C000:716D loc_C716D: ; CODE XREF: VESA_GET_MODE_INFO+2Cj C000:716D pop di C000:716E pop bp C000:716F pop dx C000:7170 pop cx C000:7171 pop bx C000:7172 retn C000:7173 ; --------------------------------------------------------------------------- C000:7173 C000:7173 loc_C7173: ; CODE XREF: VESA_GET_MODE_INFO+8j C000:7173 mov al, 0 C000:7175 mov cx, 100h C000:7178 rep stosb C000:717A mov ax, 14Fh C000:717D jmp short loc_C716D C000:717D VESA_GET_MODE_INFO endp C000:717D C000:717F C000:717F ; =============== S U B R O U T I N E ======================================= C000:717F C000:717F C000:717F sub_C717F proc near ; CODE XREF: VESA_GET_MODE_INFO+5p C000:717F push bp C000:7180 push es C000:7181 mov bp, es C000:7183 mov ax, cx C000:7185 cmp ax, 100h C000:7188 jnb short loc_C718F C000:718A call sub_C2C61 C000:718D jmp short loc_C7192 C000:718F ; --------------------------------------------------------------------------- C000:718F C000:718F loc_C718F: ; CODE XREF: sub_C717F+9j C000:718F call sub_C2C7E C000:7192 C000:7192 loc_C7192: ; CODE XREF: sub_C717F+Ej C000:7192 jb short loc_C71B9 C000:7194 lds si, ds:4A8h C000:7198 lds si, [si] C000:719A mov al, es:[bx+1] C000:719E call sub_C2D5F C000:71A1 mov bl, es:[bx] C000:71A4 mov bh, al C000:71A6 sub ah, ah C000:71A8 shl ax, 6 C000:71AB add si, ax C000:71AD mov es, bp C000:71AF push di C000:71B0 mov cx, 80h ; 'Ç' C000:71B3 sub ax, ax C000:71B5 rep stosw C000:71B7 pop di C000:71B8 clc C000:71B9 C000:71B9 loc_C71B9: ; CODE XREF: sub_C717F:loc_C7192j C000:71B9 pop es C000:71BA pop bp C000:71BB retn C000:71BB sub_C717F endp C000:71BB C000:71BC C000:71BC ; =============== S U B R O U T I N E ======================================= C000:71BC C000:71BC C000:71BC sub_C71BC proc near ; CODE XREF: VESA_GET_MODE_INFO+Ap C000:71BC push cx C000:71BD mov al, bl C000:71BF call sub_C685D C000:71C2 mov ax, 0 C000:71C5 jb short loc_C71C9 C000:71C7 mov al, 1 C000:71C9 C000:71C9 loc_C71C9: ; CODE XREF: sub_C71BC+9j C000:71C9 or al, 6 C000:71CB test byte ptr [si+9], 1 C000:71CF jz short loc_C71D3 C000:71D1 or al, 8 C000:71D3 C000:71D3 loc_C71D3: ; CODE XREF: sub_C71BC+13j C000:71D3 mov cl, [si+3Dh] C000:71D6 test cl, 1 C000:71D9 jz short loc_C71EC C000:71DB or al, 10h C000:71DD cmp bl, 13h C000:71E0 jbe short loc_C71EC C000:71E2 and cl, 0Ch C000:71E5 cmp cl, 4 C000:71E8 jbe short loc_C71EC C000:71EA or al, 40h C000:71EC C000:71EC loc_C71EC: ; CODE XREF: sub_C71BC+1Dj C000:71EC ; sub_C71BC+24j ... C000:71EC push ds C000:71ED push 0 C000:71EF pop ds C000:71F0 test byte ptr ds:489h, 1 C000:71F5 jnz short loc_C720E C000:71F7 mov cl, ds:487h C000:71FB not cl C000:71FD and cl, 2 C000:7200 shl cl, 2 C000:7203 mov ch, al C000:7205 and ch, 8 C000:7208 cmp cl, ch C000:720A jz short loc_C720E C000:720C and al, 0FEh C000:720E C000:720E loc_C720E: ; CODE XREF: sub_C71BC+39j C000:720E ; sub_C71BC+4Ej C000:720E pop ds C000:720F mov es:[di], ax C000:7212 pop cx C000:7213 retn C000:7213 sub_C71BC endp C000:7213 C000:7214 C000:7214 ; =============== S U B R O U T I N E ======================================= C000:7214 C000:7214 C000:7214 sub_C7214 proc near ; CODE XREF: VESA_GET_MODE_INFO+Dp C000:7214 pusha C000:7215 mov al, 6 C000:7217 cmp bl, 13h C000:721A jbe short loc_C721D C000:721C inc ax C000:721D C000:721D loc_C721D: ; CODE XREF: sub_C7214+6j C000:721D mov word ptr es:[di+0Ch], offset unk_C7467 C000:7223 mov word ptr es:[di+0Eh], cs C000:7227 mov es:[di+2], al C000:722B mov bl, [si+3Dh] C000:722E and bx, 0Ch C000:7231 shr bx, 1 C000:7233 mov ax, cs:[bx+6F82h] C000:7238 mov es:[di+8], ax C000:723C mov ax, cs:[bx+6F7Ah] C000:7241 mov es:[di+4], ax C000:7245 mov es:[di+6], ax C000:7249 popa C000:724A retn C000:724A sub_C7214 endp C000:724A C000:724B C000:724B ; =============== S U B R O U T I N E ======================================= C000:724B C000:724B C000:724B sub_C724B proc near ; CODE XREF: VESA_GET_MODE_INFO+10p C000:724B pushad C000:724D call sub_C7392 C000:7250 mov es:[di+10h], ax C000:7254 mov cl, [si+3Dh] C000:7257 sub ch, ch C000:7259 and cl, 1 C000:725C sub ah, ah C000:725E mov al, [si] C000:7260 jcxz short loc_C7265 C000:7262 shl ax, 3 C000:7265 C000:7265 loc_C7265: ; CODE XREF: sub_C724B+15j C000:7265 mov es:[di+12h], ax C000:7269 sub ah, ah C000:726B mov al, [si+1] C000:726E inc ax C000:726F jcxz short loc_C7282 C000:7271 mul byte ptr [si+2] C000:7274 cmp ax, 250h C000:7277 jnz short loc_C727B C000:7279 add al, 8 C000:727B C000:727B loc_C727B: ; CODE XREF: sub_C724B+2Cj C000:727B cmp ax, 128h C000:727E jnz short loc_C7282 C000:7280 add al, 4 C000:7282 C000:7282 loc_C7282: ; CODE XREF: sub_C724B+24j C000:7282 ; sub_C724B+33j C000:7282 mov es:[di+14h], ax C000:7286 mov dl, 8 C000:7288 or cx, cx C000:728A jnz short loc_C7294 C000:728C test byte ptr [si+5], 1 C000:7290 jnz short loc_C7294 C000:7292 mov dl, 9 C000:7294 C000:7294 loc_C7294: ; CODE XREF: sub_C724B+3Fj C000:7294 ; sub_C724B+45j C000:7294 mov es:[di+16h], dl C000:7298 mov al, [si+2] C000:729B mov es:[di+17h], al C000:729F mov dl, 1 C000:72A1 jcxz short loc_C72B0 C000:72A3 mov al, [si+8] C000:72A6 test al, 8 C000:72A8 jnz short loc_C72B0 C000:72AA test al, 4 C000:72AC jz short loc_C72B0 C000:72AE mov dl, 4 C000:72B0 C000:72B0 loc_C72B0: ; CODE XREF: sub_C724B+56j C000:72B0 ; sub_C724B+5Dj ... C000:72B0 mov es:[di+18h], dl C000:72B4 mov al, bl C000:72B6 call sub_C2CDD C000:72B9 mov es:[di+19h], al C000:72BD sub dl, dl C000:72BF jcxz short loc_C72D4 C000:72C1 inc dx C000:72C2 cmp bl, 6 C000:72C5 jbe short loc_C72D4 C000:72C7 inc dx C000:72C8 inc dx C000:72C9 cmp al, 4 C000:72CB jbe short loc_C72D4 C000:72CD inc dx C000:72CE cmp al, 8 C000:72D0 jz short loc_C72D4 C000:72D2 inc dx C000:72D3 inc dx C000:72D4 C000:72D4 loc_C72D4: ; CODE XREF: sub_C724B+74j C000:72D4 ; sub_C724B+7Aj ... C000:72D4 mov es:[di+1Bh], dl C000:72D8 mov dx, 1 C000:72DB jcxz short loc_C72E6 C000:72DD cmp bl, 6 C000:72E0 ja short loc_C72E6 C000:72E2 add dx, 801h C000:72E6 C000:72E6 loc_C72E6: ; CODE XREF: sub_C724B+90j C000:72E6 ; sub_C724B+95j C000:72E6 mov es:[di+1Ah], dl C000:72EA mov es:[di+1Ch], dh C000:72EE mov al, bl C000:72F0 call sub_C7A52 C000:72F3 shl eax, 10h C000:72F7 mov ax, dx C000:72F9 rol eax, 10h C000:72FD movzx ecx, word ptr es:[di+10h] C000:7303 movzx edx, byte ptr es:[di+18h] C000:7309 imul ecx, edx C000:730D movzx edx, word ptr es:[di+14h] C000:7313 imul ecx, edx C000:7317 cdq C000:7319 div ecx C000:731C test al, al C000:731E jz short loc_C7321 C000:7320 dec ax C000:7321 C000:7321 loc_C7321: ; CODE XREF: sub_C724B+D3j C000:7321 cmp ax, 2 C000:7324 jle short loc_C7329 C000:7326 mov ax, 2 C000:7329 C000:7329 loc_C7329: ; CODE XREF: sub_C724B+D9j C000:7329 mov es:[di+1Dh], al C000:732D mov byte ptr es:[di+1Eh], 1 C000:7332 popad C000:7334 retn C000:7334 sub_C724B endp C000:7334 C000:7335 C000:7335 ; =============== S U B R O U T I N E ======================================= C000:7335 C000:7335 C000:7335 sub_C7335 proc near ; CODE XREF: VESA_GET_MODE_INFO+13p C000:7335 pusha C000:7336 cmp byte ptr es:[di+19h], 0Fh C000:733B jb short loc_C7358 C000:733D mov si, 6F5Fh C000:7340 jz short loc_C734F C000:7342 mov si, 6F68h C000:7345 cmp byte ptr es:[di+19h], 10h C000:734A jz short loc_C734F C000:734C mov si, 6F71h C000:734F C000:734F loc_C734F: ; CODE XREF: sub_C7335+Bj C000:734F ; sub_C7335+15j C000:734F mov cx, 9 C000:7352 lea di, [di+1Fh] C000:7355 rep movs byte ptr es:[di], byte ptr cs:[si] C000:7358 C000:7358 loc_C7358: ; CODE XREF: sub_C7335+6j C000:7358 popa C000:7359 retn C000:7359 sub_C7335 endp C000:7359 C000:7359 ; --------------------------------------------------------------------------- C000:735A db 0 C000:735B db 40h ; @ C000:735C db 80h ; Ç C000:735D db 0C0h ; L C000:735E C000:735E ; =============== S U B R O U T I N E ======================================= C000:735E C000:735E C000:735E sub_C735E proc near ; CODE XREF: VESA_GET_MODE_INFO+16p C000:735E pusha C000:735F cmp bl, 13h C000:7362 jbe short loc_C7390 C000:7364 cmp bh, 0Ah C000:7367 jz short loc_C7390 C000:7369 cmp bh, 0Ch C000:736C jz short loc_C7390 C000:736E cmp bh, 10h C000:7371 jz short loc_C7390 C000:7373 mov word ptr es:[di+2Eh], 0 C000:7379 mov word ptr es:[di+2Ch], 0 C000:737F mov word ptr es:[di+2Ah], 4080h C000:7385 mov word ptr es:[di+28h], 0 C000:738B or word ptr es:[di], 80h C000:7390 C000:7390 loc_C7390: ; CODE XREF: sub_C735E+4j C000:7390 ; sub_C735E+9j ... C000:7390 popa C000:7391 retn C000:7391 sub_C735E endp C000:7391 C000:7392 C000:7392 ; =============== S U B R O U T I N E ======================================= C000:7392 C000:7392 C000:7392 sub_C7392 proc near ; CODE XREF: sub_C724B+2p C000:7392 push bx C000:7393 push es C000:7394 mov al, bl C000:7396 call sub_C2C61 C000:7399 jb short loc_C739F C000:739B mov ax, es:[bx+0Ch] C000:739F C000:739F loc_C739F: ; CODE XREF: sub_C7392+7j C000:739F pop es C000:73A0 pop bx C000:73A1 retn C000:73A1 sub_C7392 endp C000:73A1 C000:73A2 C000:73A2 ; =============== S U B R O U T I N E ======================================= C000:73A2 C000:73A2 C000:73A2 VESA_SET_MODE proc near ; CODE XREF: C000:7095p C000:73A2 ; DATA XREF: C000:7064o C000:73A2 push bx C000:73A3 push cx C000:73A4 push dx C000:73A5 mov ax, bx C000:73A7 and ah, 3Fh C000:73AA cmp ax, 100h C000:73AD jb short loc_C73B4 C000:73AF call sub_C73FA C000:73B2 jb short loc_C73DB C000:73B4 C000:73B4 loc_C73B4: ; CODE XREF: VESA_SET_MODE+Bj C000:73B4 call sub_C685D C000:73B7 jb short loc_C73DB C000:73B9 push ax C000:73BA push bx C000:73BB and bh, 80h C000:73BE or al, bh C000:73C0 sub ah, ah C000:73C2 int 10h ; - VIDEO - SET VIDEO MODE C000:73C2 ; AL = mode C000:73C4 pop bx C000:73C5 pop ax C000:73C6 cmp ds:449h, al C000:73CA jnz short loc_C73DB C000:73CC test bh, 40h C000:73CF jz short loc_C73D4 C000:73D1 call nullsub_1 C000:73D4 C000:73D4 loc_C73D4: ; CODE XREF: VESA_SET_MODE+2Dj C000:73D4 mov ax, 4Fh ; 'O' C000:73D7 C000:73D7 loc_C73D7: ; CODE XREF: VESA_SET_MODE+3Cj C000:73D7 pop dx C000:73D8 pop cx C000:73D9 pop bx C000:73DA retn C000:73DB ; --------------------------------------------------------------------------- C000:73DB C000:73DB loc_C73DB: ; CODE XREF: VESA_SET_MODE+10j C000:73DB ; VESA_SET_MODE+15j ... C000:73DB mov ax, 14Fh C000:73DE jmp short loc_C73D7 C000:73DE VESA_SET_MODE endp C000:73DE C000:73E0 C000:73E0 ; =============== S U B R O U T I N E ======================================= C000:73E0 C000:73E0 C000:73E0 nullsub_1 proc near ; CODE XREF: VESA_SET_MODE+2Fp C000:73E0 retn C000:73E0 nullsub_1 endp C000:73E0 C000:73E1 C000:73E1 ; =============== S U B R O U T I N E ======================================= C000:73E1 C000:73E1 C000:73E1 VESA_GET_MODE proc near ; CODE XREF: C000:7095p C000:73E1 ; DATA XREF: C000:7066o C000:73E1 call sub_C68BE C000:73E4 call sub_C7413 C000:73E7 cmp bx, 0FFFFh C000:73EA jnz short loc_C73EF C000:73EC cbw C000:73ED mov bx, ax C000:73EF C000:73EF loc_C73EF: ; CODE XREF: VESA_GET_MODE+9j C000:73EF mov al, ds:487h C000:73F2 and al, 80h C000:73F4 or bh, al C000:73F6 mov ax, 4Fh ; 'O' C000:73F9 retn C000:73F9 VESA_GET_MODE endp C000:73F9 C000:73FA C000:73FA ; =============== S U B R O U T I N E ======================================= C000:73FA C000:73FA C000:73FA sub_C73FA proc near ; CODE XREF: VESA_SET_MODE+Dp C000:73FA push bx C000:73FB push es C000:73FC call sub_C2C7E C000:73FF mov ax, 0FFFFh C000:7402 jb short loc_C7410 C000:7404 mov al, es:[bx+1] C000:7408 call sub_C2D5F C000:740B mov ah, al C000:740D mov al, es:[bx] C000:7410 C000:7410 loc_C7410: ; CODE XREF: sub_C73FA+8j C000:7410 pop es C000:7411 pop bx C000:7412 retn C000:7412 sub_C73FA endp C000:7412 C000:7413 C000:7413 ; =============== S U B R O U T I N E ======================================= C000:7413 C000:7413 C000:7413 sub_C7413 proc near ; CODE XREF: VESA_GET_MODE+3p C000:7413 push es C000:7414 call sub_C2C61 C000:7417 jb short loc_C7427 C000:7419 mov bx, es:[bx+2] C000:741D cmp bx, 0FFFFh C000:7420 jnz short loc_C7427 C000:7422 mov bl, al C000:7424 sub bh, bh C000:7426 clc C000:7427 C000:7427 loc_C7427: ; CODE XREF: sub_C7413+4j C000:7427 ; sub_C7413+Dj C000:7427 cmc C000:7428 pop es C000:7429 retn C000:7429 sub_C7413 endp C000:7429 C000:742A C000:742A ; =============== S U B R O U T I N E ======================================= C000:742A C000:742A C000:742A VESA_SAVE_REST_STS proc near ; CODE XREF: C000:7095p C000:742A ; DATA XREF: C000:7068o C000:742A push cx C000:742B mov ah, 1Ch C000:742D mov al, dl C000:742F and cx, 0Fh C000:7432 int 10h ; - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA) C000:7432 ; C000:7434 mov ax, 4Fh ; 'O' C000:7437 pop cx C000:7438 retn C000:7438 VESA_SAVE_REST_STS endp C000:7438 C000:7439 C000:7439 ; =============== S U B R O U T I N E ======================================= C000:7439 C000:7439 C000:7439 VESA_SET_BANK proc near ; CODE XREF: C000:7095p C000:7439 ; DATA XREF: C000:706Ao C000:7439 or bl, bl C000:743B jnz short loc_C745D C000:743D cmp bh, 1 C000:7440 jz short loc_C7462 C000:7442 cmp bh, 80h ; 'Ç' C000:7445 jz short loc_C744B C000:7447 or bh, bh C000:7449 jnz short loc_C745D C000:744B C000:744B loc_C744B: ; CODE XREF: VESA_SET_BANK+Cj C000:744B ; VESA_SET_BANK+1Bj C000:744B call get_vram_size C000:744E cmp dl, al C000:7450 jl short loc_C7456 C000:7452 sub dl, al C000:7454 jmp short loc_C744B C000:7456 ; --------------------------------------------------------------------------- C000:7456 C000:7456 loc_C7456: ; CODE XREF: VESA_SET_BANK+17j C000:7456 call sub_C67DB C000:7459 C000:7459 loc_C7459: ; CODE XREF: VESA_SET_BANK+2Cj C000:7459 mov ax, 4Fh ; 'O' C000:745C C000:745C locret_C745C: ; CODE XREF: VESA_SET_BANK+27j C000:745C retn C000:745D ; --------------------------------------------------------------------------- C000:745D C000:745D loc_C745D: ; CODE XREF: VESA_SET_BANK+2j C000:745D ; VESA_SET_BANK+10j C000:745D mov ax, 14Fh C000:7460 jmp short locret_C745C C000:7462 ; --------------------------------------------------------------------------- C000:7462 C000:7462 loc_C7462: ; CODE XREF: VESA_SET_BANK+7j C000:7462 call sub_C684F C000:7465 jmp short loc_C7459 C000:7465 VESA_SET_BANK endp C000:7465 C000:7465 ; --------------------------------------------------------------------------- C000:7467 unk_C7467 db 0Ah ; DATA XREF: sub_C7214:loc_C721Do C000:7468 db 0DBh ; - C000:7469 db 75h ; u C000:746A db 15h C000:746B db 80h ; Ç C000:746C db 0FFh C000:746D db 1 C000:746E db 74h ; t C000:746F db 14h C000:7470 db 80h ; Ç C000:7471 db 0FFh C000:7472 db 80h ; Ç C000:7473 db 74h ; t C000:7474 db 4 C000:7475 db 0Ah C000:7476 db 0FFh C000:7477 db 75h ; u C000:7478 db 7 C000:7479 db 0E8h ; À C000:747A db 5Fh ; _ C000:747B db 0F3h ; ¡ C000:747C db 0B8h ; ª C000:747D db 4Fh ; O C000:747E db 0 C000:747F db 0CBh ; T C000:7480 db 0B8h ; ª C000:7481 db 4Fh ; O C000:7482 db 1 C000:7483 db 0CBh ; T C000:7484 db 0E8h ; À C000:7485 db 0C8h ; L C000:7486 db 0F3h ; ¡ C000:7487 db 0B8h ; ª C000:7488 db 4Fh ; O C000:7489 db 0 C000:748A db 0CBh ; T C000:748B C000:748B ; =============== S U B R O U T I N E ======================================= C000:748B C000:748B C000:748B VESA_SCANLINE_LEN proc near ; CODE XREF: C000:7095p C000:748B ; DATA XREF: C000:706Co C000:748B push bp C000:748C push di C000:748D mov al, bl C000:748F test al, al C000:7491 jz short loc_C74A9 C000:7493 cmp al, 1 C000:7495 jz short loc_C74BF C000:7497 cmp al, 2 C000:7499 jz short loc_C74B3 C000:749B cmp al, 3 C000:749D jz short loc_C74F2 C000:749F mov ax, 14Fh C000:74A2 jmp short loc_C74EF C000:74A4 ; --------------------------------------------------------------------------- C000:74A4 C000:74A4 loc_C74A4: ; CODE XREF: VESA_SCANLINE_LEN+23j C000:74A4 ; VESA_SCANLINE_LEN+2Dj C000:74A4 mov ax, 24Fh C000:74A7 jmp short loc_C74EF C000:74A9 ; --------------------------------------------------------------------------- C000:74A9 C000:74A9 loc_C74A9: ; CODE XREF: VESA_SCANLINE_LEN+6j C000:74A9 call sub_C756F C000:74AC cmp cx, ax C000:74AE jb short loc_C74A4 C000:74B0 call sub_C7593 C000:74B3 C000:74B3 loc_C74B3: ; CODE XREF: VESA_SCANLINE_LEN+Ej C000:74B3 call sub_C7509 C000:74B6 cmp cx, ax C000:74B8 ja short loc_C74A4 C000:74BA mov ax, cx C000:74BC call sub_C75DF C000:74BF C000:74BF loc_C74BF: ; CODE XREF: VESA_SCANLINE_LEN+Aj C000:74BF call sub_C7632 C000:74C2 C000:74C2 loc_C74C2: ; CODE XREF: VESA_SCANLINE_LEN+6Aj C000:74C2 mov bx, ax C000:74C4 call sub_C763D C000:74C7 mov cx, ax C000:74C9 call sub_C68BE C000:74CC call sub_C7A52 C000:74CF div bx C000:74D1 mov dx, ax C000:74D3 call sub_C68BE C000:74D6 call sub_C2B45 C000:74D9 jnz short loc_C74E4 C000:74DB call sub_C7560 C000:74DE mul dx C000:74E0 mov dx, ax C000:74E2 jmp short loc_C74EC C000:74E4 ; --------------------------------------------------------------------------- C000:74E4 C000:74E4 loc_C74E4: ; CODE XREF: VESA_SCANLINE_LEN+4Ej C000:74E4 call sub_C2B76 C000:74E7 jnz short loc_C74EC C000:74E9 shr dx, 2 C000:74EC C000:74EC loc_C74EC: ; CODE XREF: VESA_SCANLINE_LEN+57j C000:74EC ; VESA_SCANLINE_LEN+5Cj C000:74EC mov ax, 4Fh ; 'O' C000:74EF C000:74EF loc_C74EF: ; CODE XREF: VESA_SCANLINE_LEN+17j C000:74EF ; VESA_SCANLINE_LEN+1Cj C000:74EF pop di C000:74F0 pop bp C000:74F1 retn C000:74F2 ; --------------------------------------------------------------------------- C000:74F2 C000:74F2 loc_C74F2: ; CODE XREF: VESA_SCANLINE_LEN+12j C000:74F2 call sub_C7509 C000:74F5 jmp short loc_C74C2 C000:74F5 VESA_SCANLINE_LEN endp C000:74F5 C000:74F5 ; --------------------------------------------------------------------------- C000:74F7 off_C74F7 dw offset loc_C752C ; DATA XREF: sub_C7509+1Er C000:74F9 dw offset loc_C752C C000:74FB dw offset loc_C7539 C000:74FD dw offset loc_C7536 C000:74FF dw offset loc_C7536 C000:7501 dw offset loc_C7536 C000:7503 dw offset loc_C7539 C000:7505 dw offset loc_C7539 C000:7507 dw offset loc_C7547 C000:7509 C000:7509 ; =============== S U B R O U T I N E ======================================= C000:7509 C000:7509 C000:7509 sub_C7509 proc near ; CODE XREF: VESA_SCANLINE_LEN:loc_C74B3p C000:7509 ; VESA_SCANLINE_LEN:loc_C74F2p C000:7509 push bx C000:750A push dx C000:750B push si C000:750C push es C000:750D call sub_C68BE C000:7510 call sub_C2C61 C000:7513 mov al, es:[bx+4] C000:7517 cbw C000:7518 mov si, ax C000:751A call sub_C7655 C000:751D mov bx, ax C000:751F call sub_C68BE C000:7522 call sub_C7A52 C000:7525 shl si, 1 C000:7527 jmp cs:off_C74F7[si] C000:752C C000:752C loc_C752C: ; DATA XREF: C000:off_C74F7o C000:752C ; C000:74F9o C000:752C div bx C000:752E imul word ptr ds:485h C000:7532 and al, 0F0h C000:7534 jmp short loc_C755B C000:7536 ; --------------------------------------------------------------------------- C000:7536 C000:7536 loc_C7536: ; CODE XREF: sub_C7509+1Ej C000:7536 ; DATA XREF: C000:74FDo ... C000:7536 shl bx, 2 C000:7539 C000:7539 loc_C7539: ; CODE XREF: sub_C7509+1Ej C000:7539 ; DATA XREF: C000:74FBo ... C000:7539 div bx C000:753B and al, 0F0h C000:753D cmp ax, 1000h C000:7540 jle short loc_C755B C000:7542 mov ax, 1000h C000:7545 jmp short loc_C755B C000:7547 ; --------------------------------------------------------------------------- C000:7547 C000:7547 loc_C7547: ; CODE XREF: sub_C7509+1Ej C000:7547 ; DATA XREF: C000:7507o C000:7547 div bx C000:7549 mov bx, 3 C000:754C cwd C000:754D div bx C000:754F imul ax, 3 C000:7552 C000:7552 loc_C7552: ; CODE XREF: sub_C7509+50j C000:7552 test al, 7 C000:7554 jz short loc_C755B C000:7556 sub ax, 3 C000:7559 jmp short loc_C7552 C000:755B ; --------------------------------------------------------------------------- C000:755B C000:755B loc_C755B: ; CODE XREF: sub_C7509+2Bj C000:755B ; sub_C7509+37j ... C000:755B pop es C000:755C pop si C000:755D pop dx C000:755E pop bx C000:755F retn C000:755F sub_C7509 endp C000:755F C000:7560 C000:7560 ; =============== S U B R O U T I N E ======================================= C000:7560 C000:7560 C000:7560 sub_C7560 proc near ; CODE XREF: VESA_SCANLINE_LEN+50p C000:7560 push dx C000:7561 call get_CRTC_port C000:7564 mov al, 9 C000:7566 out dx, al C000:7567 inc dx C000:7568 in al, dx C000:7569 and ax, 1Fh C000:756C inc ax C000:756D pop dx C000:756E retn C000:756E sub_C7560 endp C000:756E C000:756F C000:756F ; =============== S U B R O U T I N E ======================================= C000:756F C000:756F C000:756F sub_C756F proc near ; CODE XREF: VESA_SCANLINE_LEN:loc_C74A9p C000:756F push bx C000:7570 push es C000:7571 call sub_C68BE C000:7574 call sub_C2C61 C000:7577 mov ax, es:[bx+8] C000:757B cmp byte ptr es:[bx+4], 0 C000:7580 jz short loc_C7589 C000:7582 cmp byte ptr es:[bx+4], 1 C000:7587 jnz short loc_C7590 C000:7589 C000:7589 loc_C7589: ; CODE XREF: sub_C756F+11j C000:7589 mov bx, ax C000:758B call sub_C7828 C000:758E mul bl C000:7590 C000:7590 loc_C7590: ; CODE XREF: sub_C756F+18j C000:7590 pop es C000:7591 pop bx C000:7592 retn C000:7592 sub_C756F endp C000:7592 C000:7593 C000:7593 ; =============== S U B R O U T I N E ======================================= C000:7593 C000:7593 C000:7593 sub_C7593 proc near ; CODE XREF: VESA_SCANLINE_LEN+25p C000:7593 push ax C000:7594 push bx C000:7595 push dx C000:7596 call sub_C7828 C000:7599 mov bl, al C000:759B call sub_C7609 C000:759E cbw C000:759F push ax C000:75A0 mul cx C000:75A2 sub bh, bh C000:75A4 div bx C000:75A6 pop bx C000:75A7 cmp bl, 18h C000:75AA jz short loc_C75D6 C000:75AC test dx, dx C000:75AE jz short loc_C75BC C000:75B0 mov bx, 1 C000:75B3 call sub_C7690 C000:75B6 shl bx, cl C000:75B8 add ax, bx C000:75BA jmp short loc_C75D0 C000:75BC ; --------------------------------------------------------------------------- C000:75BC C000:75BC loc_C75BC: ; CODE XREF: sub_C7593+1Bj C000:75BC call sub_C7690 C000:75BF mov bx, ax C000:75C1 shr bx, cl C000:75C3 shl bx, cl C000:75C5 cmp bx, ax C000:75C7 jnb short loc_C75D0 C000:75C9 mov ax, 1 C000:75CC shl ax, cl C000:75CE add ax, bx C000:75D0 C000:75D0 loc_C75D0: ; CODE XREF: sub_C7593+27j C000:75D0 ; sub_C7593+34j ... C000:75D0 mov cx, ax C000:75D2 pop dx C000:75D3 pop bx C000:75D4 pop ax C000:75D5 retn C000:75D6 ; --------------------------------------------------------------------------- C000:75D6 C000:75D6 loc_C75D6: ; CODE XREF: sub_C7593+17j C000:75D6 ; sub_C7593+4Aj C000:75D6 test al, 7 C000:75D8 jz short loc_C75D0 C000:75DA add ax, 3 C000:75DD jmp short loc_C75D6 C000:75DD sub_C7593 endp C000:75DD C000:75DF C000:75DF ; =============== S U B R O U T I N E ======================================= C000:75DF C000:75DF C000:75DF sub_C75DF proc near ; CODE XREF: VESA_SCANLINE_LEN+31p C000:75DF push ax C000:75E0 push cx C000:75E1 push dx C000:75E2 call sub_C7690 C000:75E5 shr ax, cl C000:75E7 call get_CRTC_port C000:75EA mov cx, ax C000:75EC mov ah, al C000:75EE mov al, 13h C000:75F0 out dx, ax C000:75F1 call vga_init3_1 C000:75F4 mov al, 45h ; 'E' C000:75F6 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:75F9 and ah, 0FCh C000:75FC and ch, 3 C000:75FF or ah, ch C000:7601 out dx, ax C000:7602 call set_crtc30h_0 C000:7605 pop dx C000:7606 pop cx C000:7607 pop ax C000:7608 retn C000:7608 sub_C75DF endp C000:7608 C000:7609 C000:7609 ; =============== S U B R O U T I N E ======================================= C000:7609 C000:7609 C000:7609 sub_C7609 proc near ; CODE XREF: sub_C7593+8p C000:7609 ; sub_C763D+7p C000:7609 push dx C000:760A call sub_C68BE C000:760D call sub_C2CDD C000:7610 push ax C000:7611 mov dx, 3CEh C000:7614 mov al, 6 C000:7616 out dx, al ; EGA: graph 1 and 2 addr reg: C000:7616 ; miscellaneous graphics control.Data bits: C000:7616 ; 0: 1=graphics; 0=enable char gen (text) C000:7616 ; 1: 1=chain odd maps after even maps C000:7616 ; 2: memory mapping for CPU C000:7616 ; 00=a000H (128K); 01=a000H (64K) C000:7616 ; 10=b000H (32K MDA);11=b800H (32K CGA) C000:7617 inc dx C000:7618 in al, dx ; EGA port: graphics controller data register C000:7619 test al, 1 C000:761B pop ax C000:761C jz short loc_C762E C000:761E cmp al, 0Fh C000:7620 jnz short loc_C7626 C000:7622 inc al C000:7624 jmp short loc_C7630 C000:7626 ; --------------------------------------------------------------------------- C000:7626 C000:7626 loc_C7626: ; CODE XREF: sub_C7609+17j C000:7626 cmp al, 4 C000:7628 jnz short loc_C7630 C000:762A mov al, 1 C000:762C jmp short loc_C7630 C000:762E ; --------------------------------------------------------------------------- C000:762E C000:762E loc_C762E: ; CODE XREF: sub_C7609+13j C000:762E mov al, 2 C000:7630 C000:7630 loc_C7630: ; CODE XREF: sub_C7609+1Bj C000:7630 ; sub_C7609+1Fj ... C000:7630 pop dx C000:7631 retn C000:7631 sub_C7609 endp C000:7631 C000:7632 C000:7632 ; =============== S U B R O U T I N E ======================================= C000:7632 C000:7632 C000:7632 sub_C7632 proc near ; CODE XREF: VESA_SCANLINE_LEN:loc_C74BFp C000:7632 push cx C000:7633 call sub_C7A83 C000:7636 call sub_C7690 C000:7639 shl ax, cl C000:763B pop cx C000:763C retn C000:763C sub_C7632 endp C000:763C C000:763D C000:763D ; =============== S U B R O U T I N E ======================================= C000:763D C000:763D C000:763D sub_C763D proc near ; CODE XREF: VESA_SCANLINE_LEN+39p C000:763D push dx C000:763E push cx C000:763F call sub_C7828 C000:7642 mov ch, al C000:7644 call sub_C7609 C000:7647 mov cl, al C000:7649 mov al, ch C000:764B cbw C000:764C mul bx C000:764E sub ch, ch C000:7650 div cx C000:7652 pop cx C000:7653 pop dx C000:7654 retn C000:7654 sub_C763D endp C000:7654 C000:7655 C000:7655 ; =============== S U B R O U T I N E ======================================= C000:7655 C000:7655 C000:7655 sub_C7655 proc near ; CODE XREF: sub_C7509+11p C000:7655 push bx C000:7656 push dx C000:7657 call get_CRTC_port C000:765A mov al, 7 C000:765C call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:765F mov al, ah C000:7661 and ax, 4002h C000:7664 shr al, 1 C000:7666 shr ah, 5 C000:7669 or al, ah C000:766B mov bh, al C000:766D mov al, 12h C000:766F call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7672 mov bl, ah C000:7674 mov al, 45h ; 'E' C000:7676 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7679 and ah, 0FCh C000:767C or bh, ah C000:767E mov al, 17h C000:7680 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7683 test ah, 4 C000:7686 jz short loc_C768A C000:7688 shl bx, 1 C000:768A C000:768A loc_C768A: ; CODE XREF: sub_C7655+31j C000:768A mov ax, bx C000:768C inc ax C000:768D pop dx C000:768E pop bx C000:768F retn C000:768F sub_C7655 endp C000:768F C000:7690 C000:7690 ; =============== S U B R O U T I N E ======================================= C000:7690 C000:7690 C000:7690 sub_C7690 proc near ; CODE XREF: sub_C7593+20p C000:7690 ; sub_C7593:loc_C75BCp ... C000:7690 push ax C000:7691 push dx C000:7692 mov cl, 2 C000:7694 mov dx, 3C4h C000:7697 mov al, 4 C000:7699 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:769C test ah, 4 C000:769F jz short loc_C76AF C000:76A1 call sub_C68BE C000:76A4 call sub_C2CDD C000:76A7 mov cl, 1 C000:76A9 cmp al, 4 C000:76AB jbe short loc_C76AF C000:76AD mov cl, 3 C000:76AF C000:76AF loc_C76AF: ; CODE XREF: sub_C7690+Fj C000:76AF ; sub_C7690+1Bj C000:76AF pop dx C000:76B0 pop ax C000:76B1 retn C000:76B1 sub_C7690 endp C000:76B1 C000:76B1 ; --------------------------------------------------------------------------- C000:76B2 off_C76B2 dw offset sub_C7741 ; DATA XREF: VESA_SET_DISP_START+1Dr C000:76B4 dw offset sub_C7784 C000:76B6 dw offset sub_C7784 C000:76B8 dw offset sub_C779D C000:76BA dw offset sub_C77B8 C000:76BC dw offset sub_C77D2 C000:76BE dw offset sub_C77EA C000:76C0 off_C76C0 dw offset sub_C785B ; DATA XREF: VESA_SET_DISP_START+43r C000:76C2 dw offset sub_C789E C000:76C4 dw offset sub_C789E C000:76C6 dw offset sub_C78B5 C000:76C8 dw offset sub_C78CE C000:76CA dw offset sub_C78E2 C000:76CC dw offset sub_C78F5 C000:76CE C000:76CE ; =============== S U B R O U T I N E ======================================= C000:76CE C000:76CE C000:76CE VESA_SET_DISP_START proc near ; CODE XREF: C000:7095p C000:76CE ; DATA XREF: C000:706Eo C000:76CE call vga_init3_1 C000:76D1 cmp bl, 1 C000:76D4 jz short loc_C770A C000:76D6 or bl, bl C000:76D8 jz short loc_C76E4 C000:76DA cmp bl, 80h ; 'Ç' C000:76DD jnz short loc_C7705 C000:76DF push dx C000:76E0 call sub_C2C00 C000:76E3 pop dx C000:76E4 C000:76E4 loc_C76E4: ; CODE XREF: VESA_SET_DISP_START+Aj C000:76E4 pushad C000:76E6 call sub_C7911 C000:76E9 shl bx, 1 C000:76EB call cs:off_C76B2[bx] C000:76F0 popad C000:76F2 jb short loc_C7705 C000:76F4 cmp bl, 80h ; 'Ç' C000:76F7 jnz short loc_C76FE C000:76F9 push dx C000:76FA call sub_C2BED C000:76FD pop dx C000:76FE C000:76FE loc_C76FE: ; CODE XREF: VESA_SET_DISP_START+29j C000:76FE ; VESA_SET_DISP_START+4Cj C000:76FE mov ax, 4Fh ; 'O' C000:7701 C000:7701 loc_C7701: ; CODE XREF: VESA_SET_DISP_START+3Aj C000:7701 call set_crtc30h_0 C000:7704 retn C000:7705 ; --------------------------------------------------------------------------- C000:7705 C000:7705 loc_C7705: ; CODE XREF: VESA_SET_DISP_START+Fj C000:7705 ; VESA_SET_DISP_START+24j C000:7705 mov ax, 14Fh C000:7708 jmp short loc_C7701 C000:770A ; --------------------------------------------------------------------------- C000:770A C000:770A loc_C770A: ; CODE XREF: VESA_SET_DISP_START+6j C000:770A push bx C000:770B push di C000:770C call sub_C7911 C000:770F shl bx, 1 C000:7711 call cs:off_C76C0[bx] C000:7716 pop di C000:7717 pop bx C000:7718 sub bh, bh C000:771A jmp short loc_C76FE C000:771A VESA_SET_DISP_START endp C000:771A C000:771C C000:771C ; =============== S U B R O U T I N E ======================================= C000:771C C000:771C C000:771C sub_C771C proc near ; CODE XREF: sub_C7741+2Fp C000:771C ; sub_C7784+Ep ... C000:771C push bx C000:771D push ax C000:771E mov bl, al C000:7720 and dl, 1Fh C000:7723 mov bh, dl C000:7725 call vga_init3_1 C000:7728 call get_CRTC_port C000:772B mov ax, 8044h C000:772E out dx, ax C000:772F pop ax C000:7730 mov al, 0Ch C000:7732 out dx, ax C000:7733 inc ax C000:7734 mov ah, bl C000:7736 out dx, ax C000:7737 mov al, 44h ; 'D' C000:7739 mov ah, bh C000:773B out dx, ax C000:773C call set_crtc30h_0 C000:773F pop bx C000:7740 retn C000:7740 sub_C771C endp C000:7740 C000:7741 C000:7741 ; =============== S U B R O U T I N E ======================================= C000:7741 C000:7741 C000:7741 sub_C7741 proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:7741 ; DATA XREF: C000:off_C76B2o C000:7741 sub ax, ax C000:7743 xchg ax, dx C000:7744 div word ptr ds:485h C000:7748 mov si, ax C000:774A mov bl, dl C000:774C call get_CRTC_port C000:774F mov al, 8 C000:7751 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7754 and ah, 80h C000:7757 or ah, bl C000:7759 out dx, ax C000:775A call sub_C7A83 C000:775D shl ax, 1 C000:775F mul si C000:7761 mov bx, ax C000:7763 call sub_C7828 C000:7766 cbw C000:7767 cwd C000:7768 xchg ax, cx C000:7769 div cx C000:776B add ax, bx C000:776D mov bx, dx C000:776F cwd C000:7770 call sub_C771C C000:7773 cmp cl, 9 C000:7776 jnz short loc_C777D C000:7778 dec bx C000:7779 jns short loc_C777D C000:777B mov bl, 8 C000:777D C000:777D loc_C777D: ; CODE XREF: sub_C7741+35j C000:777D ; sub_C7741+38j C000:777D mov al, bl C000:777F call sub_C7839 C000:7782 clc C000:7783 retn C000:7783 sub_C7741 endp C000:7783 C000:7784 C000:7784 ; =============== S U B R O U T I N E ======================================= C000:7784 C000:7784 C000:7784 sub_C7784 proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:7784 ; DATA XREF: C000:76B4o ... C000:7784 call sub_C7A83 C000:7787 mul dx C000:7789 push cx C000:778A shr cx, 3 C000:778D add ax, cx C000:778F adc dx, 0 C000:7792 call sub_C771C C000:7795 pop ax C000:7796 and al, 7 C000:7798 call sub_C7839 C000:779B clc C000:779C retn C000:779C sub_C7784 endp C000:779C C000:779D C000:779D ; =============== S U B R O U T I N E ======================================= C000:779D C000:779D C000:779D sub_C779D proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:779D ; DATA XREF: C000:76B8o C000:779D call sub_C7A83 C000:77A0 shl ax, 1 C000:77A2 mul dx C000:77A4 push cx C000:77A5 shr cx, 3 C000:77A8 add ax, cx C000:77AA adc dx, 0 C000:77AD call sub_C771C C000:77B0 pop ax C000:77B1 and al, 7 C000:77B3 call sub_C7839 C000:77B6 clc C000:77B7 retn C000:77B7 sub_C779D endp C000:77B7 C000:77B8 C000:77B8 ; =============== S U B R O U T I N E ======================================= C000:77B8 C000:77B8 C000:77B8 sub_C77B8 proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:77B8 ; DATA XREF: C000:76BAo C000:77B8 test cl, 3 C000:77BB stc C000:77BC jnz short locret_C77D1 C000:77BE call sub_C7A83 C000:77C1 shl ax, 1 C000:77C3 mul dx C000:77C5 shr cx, 2 C000:77C8 add ax, cx C000:77CA adc dx, 0 C000:77CD call sub_C771C C000:77D0 clc C000:77D1 C000:77D1 locret_C77D1: ; CODE XREF: sub_C77B8+4j C000:77D1 retn C000:77D1 sub_C77B8 endp C000:77D1 C000:77D2 C000:77D2 ; =============== S U B R O U T I N E ======================================= C000:77D2 C000:77D2 C000:77D2 sub_C77D2 proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:77D2 ; DATA XREF: C000:76BCo C000:77D2 test cl, 1 C000:77D5 stc C000:77D6 jnz short locret_C77E9 C000:77D8 call sub_C7A83 C000:77DB shl ax, 1 C000:77DD mul dx C000:77DF shr cx, 1 C000:77E1 add ax, cx C000:77E3 adc dx, 0 C000:77E6 call sub_C771C C000:77E9 C000:77E9 locret_C77E9: ; CODE XREF: sub_C77D2+4j C000:77E9 retn C000:77E9 sub_C77D2 endp C000:77E9 C000:77EA C000:77EA ; =============== S U B R O U T I N E ======================================= C000:77EA C000:77EA C000:77EA sub_C77EA proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:77EA ; DATA XREF: C000:76BEo C000:77EA imul cx, 3 C000:77ED test cl, 3 C000:77F0 stc C000:77F1 jnz short locret_C7806 C000:77F3 shr cx, 2 C000:77F6 call sub_C7A83 C000:77F9 shl ax, 1 C000:77FB mul dx C000:77FD add ax, cx C000:77FF adc dx, 0 C000:7802 call sub_C771C C000:7805 clc C000:7806 C000:7806 locret_C7806: ; CODE XREF: sub_C77EA+7j C000:7806 retn C000:7806 sub_C77EA endp C000:7806 C000:7807 C000:7807 ; =============== S U B R O U T I N E ======================================= C000:7807 C000:7807 C000:7807 sub_C7807 proc near ; CODE XREF: sub_C785B+7p C000:7807 ; sub_C789E+5p ... C000:7807 push bx C000:7808 call get_CRTC_port C000:780B mov al, 0Ch C000:780D call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7810 mov bh, ah C000:7812 inc ax C000:7813 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7816 mov bl, ah C000:7818 mov al, 44h ; 'D' C000:781A call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:781D and ah, 1Fh C000:7820 mov dl, ah C000:7822 sub dh, dh C000:7824 mov ax, bx C000:7826 pop bx C000:7827 retn C000:7827 sub_C7807 endp C000:7827 C000:7828 C000:7828 ; =============== S U B R O U T I N E ======================================= C000:7828 C000:7828 C000:7828 sub_C7828 proc near ; CODE XREF: sub_C756F+1Cp C000:7828 ; sub_C7593+3p ... C000:7828 push dx C000:7829 mov dx, 3C4h C000:782C mov al, 1 C000:782E out dx, al ; EGA: sequencer address reg C000:782E ; clocking mode. Data bits: C000:782E ; 0: 1=8 dots/char; 0=9 dots/char C000:782E ; 1: CRT bandwidth: 1=low; 0=high C000:782E ; 2: 1=shift every char; 0=every 2nd char C000:782E ; 3: dot clock: 1=halved C000:782F inc dx C000:7830 in al, dx ; EGA port: sequencer data register C000:7831 and al, 1 C000:7833 add al, 0F7h ; '¸' C000:7835 neg al C000:7837 pop dx C000:7838 retn C000:7838 sub_C7828 endp C000:7838 C000:7839 C000:7839 ; =============== S U B R O U T I N E ======================================= C000:7839 C000:7839 C000:7839 sub_C7839 proc near ; CODE XREF: sub_C7741+3Ep C000:7839 ; sub_C7784+14p ... C000:7839 push dx C000:783A cli C000:783B call sub_C2CF4 C000:783E mov dx, 3C0h C000:7841 push ax C000:7842 mov al, 33h ; '3' C000:7844 out dx, al ; EGA: horizontal pixel panning: C000:7844 ; Number of dots to shift data left. C000:7844 ; Bits 0-3 valid (0-0fH) C000:7845 pop ax C000:7846 out dx, al ; EGA: palette register: select colors for attribute AL: C000:7846 ; 0: RED C000:7846 ; 1: GREEN C000:7846 ; 2: BLUE C000:7846 ; 3: blue C000:7846 ; 4: green C000:7846 ; 5: red C000:7847 sti C000:7848 pop dx C000:7849 retn C000:7849 sub_C7839 endp C000:7849 C000:784A C000:784A ; =============== S U B R O U T I N E ======================================= C000:784A C000:784A C000:784A sub_C784A proc near ; CODE XREF: sub_C785B+2Dp C000:784A ; sub_C789E+11p ... C000:784A push dx C000:784B cli C000:784C call sub_C2CF4 C000:784F mov dx, 3C0h C000:7852 mov al, 33h ; '3' C000:7854 out dx, al ; EGA: horizontal pixel panning: C000:7854 ; Number of dots to shift data left. C000:7854 ; Bits 0-3 valid (0-0fH) C000:7855 inc dx C000:7856 in al, dx C000:7857 sti C000:7858 cbw C000:7859 pop dx C000:785A retn C000:785A sub_C784A endp C000:785A C000:785B C000:785B ; =============== S U B R O U T I N E ======================================= C000:785B C000:785B C000:785B sub_C785B proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:785B ; VESA_SET_DISP_START+43p C000:785B ; DATA XREF: ... C000:785B call sub_C7A83 C000:785E shl ax, 1 C000:7860 mov bx, ax C000:7862 call sub_C7807 C000:7865 div bx C000:7867 mov si, ax C000:7869 mov di, dx C000:786B call sub_C7828 C000:786E mov cl, al C000:7870 cbw C000:7871 imul di, ax C000:7874 imul si, ds:485h C000:7879 call get_CRTC_port C000:787C mov al, 8 C000:787E call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7881 mov al, ah C000:7883 and ax, 1Fh C000:7886 add si, ax C000:7888 call sub_C784A C000:788B cmp cl, 9 C000:788E jnz short loc_C7897 C000:7890 inc ax C000:7891 cmp al, 9 C000:7893 jb short loc_C7897 C000:7895 sub al, al C000:7897 C000:7897 loc_C7897: ; CODE XREF: sub_C785B+33j C000:7897 ; sub_C785B+38j C000:7897 add ax, di C000:7899 mov cx, ax C000:789B mov dx, si C000:789D retn C000:789D sub_C785B endp C000:789D C000:789E C000:789E ; =============== S U B R O U T I N E ======================================= C000:789E C000:789E C000:789E sub_C789E proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:789E ; VESA_SET_DISP_START+43p C000:789E ; DATA XREF: ... C000:789E call sub_C7A83 C000:78A1 mov bx, ax C000:78A3 call sub_C7807 C000:78A6 div bx C000:78A8 mov cx, dx C000:78AA mov dx, ax C000:78AC shl cx, 3 C000:78AF call sub_C784A C000:78B2 add cx, ax C000:78B4 retn C000:78B4 sub_C789E endp C000:78B4 C000:78B5 C000:78B5 ; =============== S U B R O U T I N E ======================================= C000:78B5 C000:78B5 C000:78B5 sub_C78B5 proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:78B5 ; VESA_SET_DISP_START+43p C000:78B5 ; DATA XREF: ... C000:78B5 call sub_C7A83 C000:78B8 shl ax, 1 C000:78BA mov bx, ax C000:78BC call sub_C7807 C000:78BF div bx C000:78C1 mov cx, dx C000:78C3 mov dx, ax C000:78C5 shl cx, 3 C000:78C8 call sub_C784A C000:78CB add cx, ax C000:78CD retn C000:78CD sub_C78B5 endp C000:78CD C000:78CE C000:78CE ; =============== S U B R O U T I N E ======================================= C000:78CE C000:78CE C000:78CE sub_C78CE proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:78CE ; VESA_SET_DISP_START+43p C000:78CE ; DATA XREF: ... C000:78CE call sub_C7A83 C000:78D1 shl ax, 1 C000:78D3 mov bx, ax C000:78D5 call sub_C7807 C000:78D8 div bx C000:78DA mov cx, dx C000:78DC mov dx, ax C000:78DE shl cx, 2 C000:78E1 retn C000:78E1 sub_C78CE endp C000:78E1 C000:78E2 C000:78E2 ; =============== S U B R O U T I N E ======================================= C000:78E2 C000:78E2 C000:78E2 sub_C78E2 proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:78E2 ; VESA_SET_DISP_START+43p C000:78E2 ; DATA XREF: ... C000:78E2 call sub_C7A83 C000:78E5 shl ax, 1 C000:78E7 mov bx, ax C000:78E9 call sub_C7807 C000:78EC div bx C000:78EE mov cx, dx C000:78F0 mov dx, ax C000:78F2 shl cx, 1 C000:78F4 retn C000:78F4 sub_C78E2 endp C000:78F4 C000:78F5 C000:78F5 ; =============== S U B R O U T I N E ======================================= C000:78F5 C000:78F5 C000:78F5 sub_C78F5 proc near ; CODE XREF: VESA_SET_DISP_START+1Dp C000:78F5 ; VESA_SET_DISP_START+43p C000:78F5 ; DATA XREF: ... C000:78F5 call sub_C7A83 C000:78F8 shl ax, 1 C000:78FA mov bx, ax C000:78FC call sub_C7807 C000:78FF div bx C000:7901 push ax C000:7902 mov ax, dx C000:7904 cwd C000:7905 shl ax, 2 C000:7908 mov cx, 3 C000:790B div cx C000:790D mov cx, ax C000:790F pop dx C000:7910 retn C000:7910 sub_C78F5 endp C000:7910 C000:7911 C000:7911 ; =============== S U B R O U T I N E ======================================= C000:7911 C000:7911 C000:7911 sub_C7911 proc near ; CODE XREF: VESA_SET_DISP_START+18p C000:7911 ; VESA_SET_DISP_START+3Ep C000:7911 push ax C000:7912 push dx C000:7913 sub bx, bx C000:7915 call sub_C68BE C000:7918 call sub_C2B45 C000:791B jz short loc_C7947 C000:791D inc bx C000:791E cmp al, 5 C000:7920 jbe short loc_C7947 C000:7922 inc bx C000:7923 cmp al, 6 C000:7925 jz short loc_C7947 C000:7927 inc bx C000:7928 call get_CRTC_port C000:792B mov al, 43h ; 'C' C000:792D call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7930 test ah, 1 C000:7933 jz short loc_C7947 C000:7935 inc bx C000:7936 mov al, 46h ; 'F' C000:7938 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:793B test ah, 7 C000:793E jz short loc_C7947 C000:7940 inc bx C000:7941 test ah, 3 C000:7944 jnz short loc_C7947 C000:7946 inc bx C000:7947 C000:7947 loc_C7947: ; CODE XREF: sub_C7911+Aj C000:7947 ; sub_C7911+Fj ... C000:7947 pop dx C000:7948 pop ax C000:7949 retn C000:7949 sub_C7911 endp C000:7949 C000:794A C000:794A ; =============== S U B R O U T I N E ======================================= C000:794A C000:794A C000:794A VESA_DAC_PAL_CTL proc near ; CODE XREF: C000:7095p C000:794A ; DATA XREF: C000:7070o C000:794A push es C000:794B cmp bl, 1 C000:794E ja short loc_C7959 C000:7950 jb short loc_C795E C000:7952 C000:7952 loc_C7952: ; CODE XREF: VESA_DAC_PAL_CTL+28j C000:7952 mov bh, 6 C000:7954 mov ax, 4Fh ; 'O' C000:7957 C000:7957 loc_C7957: ; CODE XREF: VESA_DAC_PAL_CTL+12j C000:7957 ; VESA_DAC_PAL_CTL+2Dj C000:7957 pop es C000:7958 retn C000:7959 ; --------------------------------------------------------------------------- C000:7959 C000:7959 loc_C7959: ; CODE XREF: VESA_DAC_PAL_CTL+4j C000:7959 ; VESA_DAC_PAL_CTL+26j C000:7959 mov ax, 14Fh C000:795C jmp short loc_C7957 C000:795E ; --------------------------------------------------------------------------- C000:795E C000:795E loc_C795E: ; CODE XREF: VESA_DAC_PAL_CTL+6j C000:795E push bx C000:795F call sub_C68BE C000:7962 call sub_C2C61 C000:7965 cmp byte ptr es:[bx+7], 8 C000:796A pop bx C000:796B ja short loc_C7974 C000:796D cmp bh, 6 C000:7970 jb short loc_C7959 C000:7972 jmp short loc_C7952 C000:7974 ; --------------------------------------------------------------------------- C000:7974 C000:7974 loc_C7974: ; CODE XREF: VESA_DAC_PAL_CTL+21j C000:7974 mov ax, 34Fh C000:7977 jmp short loc_C7957 C000:7977 VESA_DAC_PAL_CTL endp C000:7977 C000:7979 C000:7979 ; =============== S U B R O U T I N E ======================================= C000:7979 C000:7979 C000:7979 VESA_PAL_ENTRY proc near ; CODE XREF: C000:7095p C000:7979 ; DATA XREF: C000:7072o C000:7979 or bl, bl C000:797B jz short loc_C7991 C000:797D cmp bl, 1 C000:7980 jz short loc_C79B9 C000:7982 cmp bl, 3 C000:7985 jbe short loc_C79DD C000:7987 cmp bl, 80h ; 'Ç' C000:798A jnz short loc_C79D9 C000:798C push dx C000:798D call sub_C2BED C000:7990 pop dx C000:7991 C000:7991 loc_C7991: ; CODE XREF: VESA_PAL_ENTRY+2j C000:7991 pushad C000:7993 push ds C000:7994 push es C000:7995 pop ds C000:7996 mov si, di C000:7998 mov al, dl C000:799A mov dx, 3C8h C000:799D out dx, al C000:799E inc dx C000:799F C000:799F loc_C799F: ; CODE XREF: VESA_PAL_ENTRY+37j C000:799F lodsd C000:79A1 ror eax, 10h C000:79A5 out dx, al C000:79A6 rol eax, 8 C000:79AA out dx, al C000:79AB rol eax, 8 C000:79AF out dx, al C000:79B0 loop loc_C799F C000:79B2 pop ds C000:79B3 popad C000:79B5 C000:79B5 loc_C79B5: ; CODE XREF: VESA_PAL_ENTRY+5Ej C000:79B5 mov ax, 4Fh ; 'O' C000:79B8 retn C000:79B9 ; --------------------------------------------------------------------------- C000:79B9 C000:79B9 loc_C79B9: ; CODE XREF: VESA_PAL_ENTRY+7j C000:79B9 pushad C000:79BB mov al, dl C000:79BD mov dx, 3C7h C000:79C0 out dx, al C000:79C1 inc dx C000:79C2 inc dx C000:79C3 C000:79C3 loc_C79C3: ; CODE XREF: VESA_PAL_ENTRY+5Aj C000:79C3 sub eax, eax C000:79C6 in al, dx C000:79C7 shl eax, 8 C000:79CB in al, dx C000:79CC shl eax, 8 C000:79D0 in al, dx C000:79D1 stosd C000:79D3 loop loc_C79C3 C000:79D5 popad C000:79D7 jmp short loc_C79B5 C000:79D9 ; --------------------------------------------------------------------------- C000:79D9 C000:79D9 loc_C79D9: ; CODE XREF: VESA_PAL_ENTRY+11j C000:79D9 mov ax, 14Fh C000:79DC retn C000:79DD ; --------------------------------------------------------------------------- C000:79DD C000:79DD loc_C79DD: ; CODE XREF: VESA_PAL_ENTRY+Cj C000:79DD mov ax, 24Fh C000:79E0 retn C000:79E0 VESA_PAL_ENTRY endp C000:79E0 C000:79E1 C000:79E1 ; =============== S U B R O U T I N E ======================================= C000:79E1 C000:79E1 C000:79E1 VESA_GET_PM_IFACE proc near ; CODE XREF: C000:7095p C000:79E1 ; DATA XREF: C000:7074o C000:79E1 mov ax, 14Fh C000:79E4 cmp bx, 0 C000:79E7 jnz short locret_C79F4 C000:79E9 mov di, 6F8Ah C000:79EC push cs C000:79ED pop es C000:79EE assume es:nothing C000:79EE mov cx, 0D4h ; 'ï' C000:79F1 mov ax, 4Fh ; 'O' C000:79F4 C000:79F4 locret_C79F4: ; CODE XREF: VESA_GET_PM_IFACE+6j C000:79F4 retn C000:79F4 VESA_GET_PM_IFACE endp C000:79F4 C000:79F4 ; --------------------------------------------------------------------------- C000:79F5 db 0 C000:79F6 db 1 C000:79F7 db 2 C000:79F8 db 4 C000:79F9 db 0 C000:79FA db 10h C000:79FB db 20h C000:79FC db 30h ; 0 C000:79FD C000:79FD ; =============== S U B R O U T I N E ======================================= C000:79FD C000:79FD C000:79FD VESA_PWR_MNGMT proc near ; CODE XREF: C000:7095p C000:79FD ; DATA XREF: C000:7080o C000:79FD push dx C000:79FE call get_CRTC_port C000:7A01 mov al, 50h ; 'P' C000:7A03 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7A06 cmp bl, 2 C000:7A09 jb short loc_C7A1F C000:7A0B jz short $+2 C000:7A0D shr ah, 4 C000:7A10 and ah, 3 C000:7A13 mov si, ax C000:7A15 shr si, 8 C000:7A18 mov bh, cs:[si+79F5h] C000:7A1D jmp short loc_C7A48 C000:7A1F ; --------------------------------------------------------------------------- C000:7A1F C000:7A1F loc_C7A1F: ; CODE XREF: VESA_PWR_MNGMT+Cj C000:7A1F cmp bl, 1 C000:7A22 jb short loc_C7A45 C000:7A24 mov si, bx C000:7A26 shr si, 8 C000:7A29 and ah, 0CFh C000:7A2C cmp si, 2 C000:7A2F jbe short loc_C7A37 C000:7A31 cmp si, 4 C000:7A34 jnz short loc_C7A4D C000:7A36 dec si C000:7A37 C000:7A37 loc_C7A37: ; CODE XREF: VESA_PWR_MNGMT+32j C000:7A37 call vga_init3_1 C000:7A3A or ah, cs:[si+79F9h] C000:7A3F out dx, ax C000:7A40 call set_crtc30h_0 C000:7A43 jmp short loc_C7A48 C000:7A45 ; --------------------------------------------------------------------------- C000:7A45 C000:7A45 loc_C7A45: ; CODE XREF: VESA_PWR_MNGMT+25j C000:7A45 mov bx, 710h C000:7A48 C000:7A48 loc_C7A48: ; CODE XREF: VESA_PWR_MNGMT+20j C000:7A48 ; VESA_PWR_MNGMT+46j C000:7A48 mov ax, 4Fh ; 'O' C000:7A4B C000:7A4B loc_C7A4B: ; CODE XREF: VESA_PWR_MNGMT+53j C000:7A4B pop dx C000:7A4C retn C000:7A4D ; --------------------------------------------------------------------------- C000:7A4D C000:7A4D loc_C7A4D: ; CODE XREF: VESA_PWR_MNGMT+37j C000:7A4D mov ax, 14Fh C000:7A50 jmp short loc_C7A4B C000:7A50 VESA_PWR_MNGMT endp C000:7A50 C000:7A52 C000:7A52 ; =============== S U B R O U T I N E ======================================= C000:7A52 C000:7A52 C000:7A52 sub_C7A52 proc near ; CODE XREF: sub_C724B+A5p C000:7A52 ; VESA_SCANLINE_LEN+41p ... C000:7A52 push bx C000:7A53 mov bl, al C000:7A55 sub dx, dx C000:7A57 mov ax, 8000h C000:7A5A cmp bl, 7 C000:7A5D jbe short loc_C7A81 C000:7A5F push ax C000:7A60 mov al, bl C000:7A62 call sub_C2B45 C000:7A65 pop ax C000:7A66 jz short loc_C7A81 C000:7A68 mov ax, dx C000:7A6A inc dx C000:7A6B cmp bl, 13h C000:7A6E jz short loc_C7A81 C000:7A70 mov dx, 4 C000:7A73 jb short loc_C7A81 C000:7A75 call get_vram_size C000:7A78 mov bx, ax C000:7A7A mov ax, 8000h C000:7A7D shl bx, 1 C000:7A7F mul bx C000:7A81 C000:7A81 loc_C7A81: ; CODE XREF: sub_C7A52+Bj C000:7A81 ; sub_C7A52+14j ... C000:7A81 pop bx C000:7A82 retn C000:7A82 sub_C7A52 endp C000:7A82 C000:7A83 C000:7A83 ; =============== S U B R O U T I N E ======================================= C000:7A83 C000:7A83 C000:7A83 sub_C7A83 proc near ; CODE XREF: sub_C7632+1p C000:7A83 ; sub_C7741+19p ... C000:7A83 push cx C000:7A84 push dx C000:7A85 call get_CRTC_port C000:7A88 mov al, 13h C000:7A8A call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7A8D mov ch, ah C000:7A8F mov al, 45h ; 'E' C000:7A91 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7A94 and ah, 3 C000:7A97 mov al, ch C000:7A99 pop dx C000:7A9A pop cx C000:7A9B retn C000:7A9B sub_C7A83 endp C000:7A9B C000:7A9C C000:7A9C ; =============== S U B R O U T I N E ======================================= C000:7A9C C000:7A9C C000:7A9C VESA_OEM_SPECF proc near ; CODE XREF: C000:7095p C000:7A9C ; DATA XREF: C000:7088o C000:7A9C call vga_init3_1 C000:7A9F cmp bl, 0 C000:7AA2 jnz short loc_C7AAE C000:7AA4 mov ah, dl C000:7AA6 mov al, 4Fh ; 'O' C000:7AA8 call get_CRTC_port C000:7AAB out dx, ax C000:7AAC jmp short loc_C7AE1 C000:7AAE ; --------------------------------------------------------------------------- C000:7AAE C000:7AAE loc_C7AAE: ; CODE XREF: VESA_OEM_SPECF+6j C000:7AAE cmp bl, 1 C000:7AB1 jnz short $+2 C000:7AB3 cmp bl, 2 C000:7AB6 jnz short loc_C7ACB C000:7AB8 call get_CRTC_port C000:7ABB mov al, 50h ; 'P' C000:7ABD call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7AC0 and ah, 0F8h C000:7AC3 and bh, 7 C000:7AC6 or ah, bh C000:7AC8 out dx, ax C000:7AC9 jmp short loc_C7AE1 C000:7ACB ; --------------------------------------------------------------------------- C000:7ACB C000:7ACB loc_C7ACB: ; CODE XREF: VESA_OEM_SPECF+1Aj C000:7ACB cmp bl, 3 C000:7ACE jnz short loc_C7ADA C000:7AD0 cmp bh, 1 C000:7AD3 jnz short loc_C7AED C000:7AD5 call sub_C6560 C000:7AD8 jmp short loc_C7AE1 C000:7ADA ; --------------------------------------------------------------------------- C000:7ADA C000:7ADA loc_C7ADA: ; CODE XREF: VESA_OEM_SPECF+32j C000:7ADA cmp bl, 4 C000:7ADD jnz short loc_C7AF2 C000:7ADF jmp short loc_C7AED C000:7AE1 ; --------------------------------------------------------------------------- C000:7AE1 C000:7AE1 loc_C7AE1: ; CODE XREF: VESA_OEM_SPECF+10j C000:7AE1 ; VESA_OEM_SPECF+2Dj ... C000:7AE1 mov ax, 14h C000:7AE4 jmp short loc_C7AE9 C000:7AE6 ; --------------------------------------------------------------------------- C000:7AE6 C000:7AE6 loc_C7AE6: ; CODE XREF: VESA_OEM_SPECF+C1j C000:7AE6 ; VESA_OEM_SPECF+CFj ... C000:7AE6 mov ax, 14h C000:7AE9 C000:7AE9 loc_C7AE9: ; CODE XREF: VESA_OEM_SPECF+48j C000:7AE9 ; VESA_OEM_SPECF+54j C000:7AE9 call set_crtc30h_0 C000:7AEC retn C000:7AED ; --------------------------------------------------------------------------- C000:7AED C000:7AED loc_C7AED: ; CODE XREF: VESA_OEM_SPECF+37j C000:7AED ; VESA_OEM_SPECF+43j ... C000:7AED mov ax, 114h C000:7AF0 jmp short loc_C7AE9 C000:7AF2 ; --------------------------------------------------------------------------- C000:7AF2 C000:7AF2 loc_C7AF2: ; CODE XREF: VESA_OEM_SPECF+41j C000:7AF2 cmp bl, 5 C000:7AF5 jnz short loc_C7B49 C000:7AF7 cmp bh, 0 C000:7AFA jnz short loc_C7B01 C000:7AFC call sub_C7C80 C000:7AFF jmp short loc_C7AE1 C000:7B01 ; --------------------------------------------------------------------------- C000:7B01 C000:7B01 loc_C7B01: ; CODE XREF: VESA_OEM_SPECF+5Ej C000:7B01 cmp bh, 1 C000:7B04 jnz short loc_C7B0B C000:7B06 call sub_C7CFD C000:7B09 jmp short loc_C7AE1 C000:7B0B ; --------------------------------------------------------------------------- C000:7B0B C000:7B0B loc_C7B0B: ; CODE XREF: VESA_OEM_SPECF+68j C000:7B0B cmp bh, 2 C000:7B0E jnz short loc_C7B15 C000:7B10 call sub_C7CC0 C000:7B13 jmp short loc_C7AE1 C000:7B15 ; --------------------------------------------------------------------------- C000:7B15 C000:7B15 loc_C7B15: ; CODE XREF: VESA_OEM_SPECF+72j C000:7B15 cmp bh, 3 C000:7B18 jnz short loc_C7B1F C000:7B1A call sub_C7CE2 C000:7B1D jmp short loc_C7AE1 C000:7B1F ; --------------------------------------------------------------------------- C000:7B1F C000:7B1F loc_C7B1F: ; CODE XREF: VESA_OEM_SPECF+7Cj C000:7B1F cmp bh, 4 C000:7B22 jnz short loc_C7B29 C000:7B24 call sub_C7D2E C000:7B27 jmp short loc_C7AE1 C000:7B29 ; --------------------------------------------------------------------------- C000:7B29 C000:7B29 loc_C7B29: ; CODE XREF: VESA_OEM_SPECF+86j C000:7B29 cmp bh, 5 C000:7B2C jnz short loc_C7B33 C000:7B2E call sub_C7D3B C000:7B31 jmp short loc_C7AE1 C000:7B33 ; --------------------------------------------------------------------------- C000:7B33 C000:7B33 loc_C7B33: ; CODE XREF: VESA_OEM_SPECF+90j C000:7B33 cmp bh, 6 C000:7B36 jnz short loc_C7B3D C000:7B38 call sub_C7D48 C000:7B3B jmp short loc_C7AE1 C000:7B3D ; --------------------------------------------------------------------------- C000:7B3D C000:7B3D loc_C7B3D: ; CODE XREF: VESA_OEM_SPECF+9Aj C000:7B3D cmp bh, 7 C000:7B40 jnz short loc_C7B47 C000:7B42 call sub_C7D55 C000:7B45 jmp short loc_C7AE1 C000:7B47 ; --------------------------------------------------------------------------- C000:7B47 C000:7B47 loc_C7B47: ; CODE XREF: VESA_OEM_SPECF+A4j C000:7B47 jmp short loc_C7AED C000:7B49 ; --------------------------------------------------------------------------- C000:7B49 C000:7B49 loc_C7B49: ; CODE XREF: VESA_OEM_SPECF+59j C000:7B49 cmp bl, 6 C000:7B4C jnz short loc_C7BC2 C000:7B4E call get_CRTC_port C000:7B51 cmp bh, 0 C000:7B54 jnz short loc_C7B5F C000:7B56 mov al, 68h ; 'h' C000:7B58 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7B5B mov cl, ah C000:7B5D jmp short loc_C7AE6 C000:7B5F ; --------------------------------------------------------------------------- C000:7B5F C000:7B5F loc_C7B5F: ; CODE XREF: VESA_OEM_SPECF+B8j C000:7B5F cmp bh, 1 C000:7B62 jnz short loc_C7B6E C000:7B64 mov al, 67h ; 'g' C000:7B66 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7B69 mov cl, ah C000:7B6B jmp loc_C7AE6 C000:7B6E ; --------------------------------------------------------------------------- C000:7B6E C000:7B6E loc_C7B6E: ; CODE XREF: VESA_OEM_SPECF+C6j C000:7B6E cmp bh, 2 C000:7B71 jnz short loc_C7B84 C000:7B73 mov al, 69h ; 'i' C000:7B75 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7B78 mov cl, ah C000:7B7A mov al, 6Ah ; 'j' C000:7B7C call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7B7F mov ch, ah C000:7B81 jmp loc_C7AE6 C000:7B84 ; --------------------------------------------------------------------------- C000:7B84 C000:7B84 loc_C7B84: ; CODE XREF: VESA_OEM_SPECF+D5j C000:7B84 cmp bh, 3 C000:7B87 jnz short loc_C7B93 C000:7B89 mov al, 6Bh ; 'k' C000:7B8B call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7B8E mov cl, ah C000:7B90 jmp loc_C7AE6 C000:7B93 ; --------------------------------------------------------------------------- C000:7B93 C000:7B93 loc_C7B93: ; CODE XREF: VESA_OEM_SPECF+EBj C000:7B93 cmp bh, 4 C000:7B96 jnz short loc_C7B9E C000:7B98 call sub_C7D62 C000:7B9B jmp loc_C7AE1 C000:7B9E ; --------------------------------------------------------------------------- C000:7B9E C000:7B9E loc_C7B9E: ; CODE XREF: VESA_OEM_SPECF+FAj C000:7B9E cmp bh, 5 C000:7BA1 jnz short loc_C7BA9 C000:7BA3 call sub_C7D6F C000:7BA6 jmp loc_C7AE1 C000:7BA9 ; --------------------------------------------------------------------------- C000:7BA9 C000:7BA9 loc_C7BA9: ; CODE XREF: VESA_OEM_SPECF+105j C000:7BA9 cmp bh, 6 C000:7BAC jnz short loc_C7BB4 C000:7BAE call sub_C7D7C C000:7BB1 jmp loc_C7AE1 C000:7BB4 ; --------------------------------------------------------------------------- C000:7BB4 C000:7BB4 loc_C7BB4: ; CODE XREF: VESA_OEM_SPECF+110j C000:7BB4 cmp bh, 7 C000:7BB7 jnz short loc_C7BBF C000:7BB9 call sub_C7D89 C000:7BBC jmp loc_C7AE1 C000:7BBF ; --------------------------------------------------------------------------- C000:7BBF C000:7BBF loc_C7BBF: ; CODE XREF: VESA_OEM_SPECF+11Bj C000:7BBF jmp loc_C7AED C000:7BC2 ; --------------------------------------------------------------------------- C000:7BC2 C000:7BC2 loc_C7BC2: ; CODE XREF: VESA_OEM_SPECF+B0j C000:7BC2 cmp bl, 7 C000:7BC5 jz short loc_C7BCA C000:7BC7 jmp loc_C7AED C000:7BCA ; --------------------------------------------------------------------------- C000:7BCA C000:7BCA loc_C7BCA: ; CODE XREF: VESA_OEM_SPECF+129j C000:7BCA mov bh, 2 C000:7BCC mov bl, 0 C000:7BCE add bl, 7 C000:7BD1 call get_CRTC_port C000:7BD4 mov al, 37h ; '7' C000:7BD6 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7BD9 mov ch, ah C000:7BDB mov al, 38h ; '8' C000:7BDD call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7BE0 mov cl, ah C000:7BE2 mov dx, 0DEADh C000:7BE5 jmp loc_C7AE1 C000:7BE5 VESA_OEM_SPECF endp C000:7BE5 C000:7BE5 ; --------------------------------------------------------------------------- C000:7BE8 db 0 C000:7BE9 db 0 C000:7BEA db 0 C000:7BEB db 0 C000:7BEC db 0 C000:7BED db 0 C000:7BEE db 0 C000:7BEF db 0 C000:7BF0 C000:7BF0 ; =============== S U B R O U T I N E ======================================= C000:7BF0 C000:7BF0 C000:7BF0 VESA_VBE_DC proc near ; CODE XREF: C000:7095p C000:7BF0 ; DATA XREF: C000:708Ao C000:7BF0 mov ah, 1 C000:7BF2 cmp bl, 1 C000:7BF5 jb short loc_C7C01 C000:7BF7 jz short loc_C7C21 C000:7BF9 cmp bl, 2 C000:7BFC jz short loc_C7C64 C000:7BFE C000:7BFE loc_C7BFE: ; CODE XREF: VESA_VBE_DC+2Fj C000:7BFE ; VESA_VBE_DC+6Ej ... C000:7BFE mov al, 4Fh ; 'O' C000:7C00 retn C000:7C01 ; --------------------------------------------------------------------------- C000:7C01 C000:7C01 loc_C7C01: ; CODE XREF: VESA_VBE_DC+5j C000:7C01 mov si, 8 C000:7C04 C000:7C04 loc_C7C04: ; CODE XREF: VESA_VBE_DC+23j C000:7C04 push si C000:7C05 mov ax, 0BF01h C000:7C08 mov bx, 4358h C000:7C0B mov ch, 10h C000:7C0D int 15h C000:7C0F pop si C000:7C10 jb short loc_C7C1A C000:7C12 dec si C000:7C13 jnz short loc_C7C04 C000:7C15 mov bx, 301h C000:7C18 jmp short loc_C7C1D C000:7C1A ; --------------------------------------------------------------------------- C000:7C1A C000:7C1A loc_C7C1A: ; CODE XREF: VESA_VBE_DC+20j C000:7C1A mov bx, 302h C000:7C1D C000:7C1D loc_C7C1D: ; CODE XREF: VESA_VBE_DC+28j C000:7C1D sub ah, ah C000:7C1F jmp short loc_C7BFE C000:7C21 ; --------------------------------------------------------------------------- C000:7C21 C000:7C21 loc_C7C21: ; CODE XREF: VESA_VBE_DC+7j C000:7C21 or dx, dx C000:7C23 jnz short loc_C7C5C C000:7C25 mov si, 8 C000:7C28 C000:7C28 loc_C7C28: ; CODE XREF: VESA_VBE_DC+51j C000:7C28 push es C000:7C29 push di C000:7C2A push si C000:7C2B mov ax, 0BF01h C000:7C2E mov bx, 4358h C000:7C31 mov ch, 11h C000:7C33 int 15h C000:7C35 pop si C000:7C36 pop di C000:7C37 pop es C000:7C38 assume es:nothing C000:7C38 call loc_C7C68 C000:7C3B jz short loc_C7C60 C000:7C3D call sub_C2BED C000:7C40 dec si C000:7C41 jnz short loc_C7C28 C000:7C43 mov dx, 3D4h C000:7C46 mov ax, 32h ; '2' C000:7C49 out dx, ax ; Video: CRT cntrlr addr C000:7C49 ; C000:7C4A inc dx C000:7C4B mov cx, 80h ; 'Ç' C000:7C4E push di C000:7C4F C000:7C4F loc_C7C4F: ; CODE XREF: VESA_VBE_DC+64j C000:7C4F in al, dx ; Video: CRT controller internal registers C000:7C50 mov es:[di], al C000:7C53 inc di C000:7C54 loop loc_C7C4F C000:7C56 pop di C000:7C57 call loc_C7C68 C000:7C5A jz short loc_C7C60 C000:7C5C C000:7C5C loc_C7C5C: ; CODE XREF: VESA_VBE_DC+33j C000:7C5C mov ah, 1 C000:7C5E jmp short loc_C7BFE C000:7C60 ; --------------------------------------------------------------------------- C000:7C60 C000:7C60 loc_C7C60: ; CODE XREF: VESA_VBE_DC+4Bj C000:7C60 ; VESA_VBE_DC+6Aj C000:7C60 sub ah, ah C000:7C62 jmp short loc_C7BFE C000:7C64 ; --------------------------------------------------------------------------- C000:7C64 C000:7C64 loc_C7C64: ; CODE XREF: VESA_VBE_DC+Cj C000:7C64 mov ah, 1 C000:7C66 jmp short loc_C7BFE C000:7C66 VESA_VBE_DC endp C000:7C66 C000:7C68 ; --------------------------------------------------------------------------- C000:7C68 C000:7C68 loc_C7C68: ; CODE XREF: VESA_VBE_DC+48p C000:7C68 ; VESA_VBE_DC+67p C000:7C68 push di C000:7C69 mov cx, 80h ; 'Ç' C000:7C6C sub al, al C000:7C6E C000:7C6E loc_C7C6E: ; CODE XREF: C000:7C72j C000:7C6E add al, es:[di] C000:7C71 inc di C000:7C72 loop loc_C7C6E C000:7C74 test al, al C000:7C76 jnz short loc_C7C7E C000:7C78 cmp word ptr es:[di-80h], 0FF00h C000:7C7E C000:7C7E loc_C7C7E: ; CODE XREF: C000:7C76j C000:7C7E pop di C000:7C7F retn C000:7C80 C000:7C80 ; =============== S U B R O U T I N E ======================================= C000:7C80 C000:7C80 C000:7C80 sub_C7C80 proc near ; CODE XREF: VESA_OEM_SPECF+60p C000:7C80 call get_CRTC_port C000:7C83 call vga_init3_1 C000:7C86 mov al, 68h ; 'h' C000:7C88 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7C8B and ah, 1Ch C000:7C8E and cl, 3 C000:7C91 or ah, cl C000:7C93 mov cl, ah C000:7C95 out dx, ax C000:7C96 call set_crtc30h_0 C000:7C99 mov al, 67h ; 'g' C000:7C9B call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7C9E and ah, 0E0h C000:7CA1 or cl, ah C000:7CA3 mov dl, cl C000:7CA5 mov ax, 0BF01h C000:7CA8 mov bx, 4358h C000:7CAB mov ch, 1 C000:7CAD int 15h ; CASSETTE - TURN ON MOTOR (PC,Jr) C000:7CAD ; Return: CX = signed X count, DX = signed Y count C000:7CAF call get_CRTC_port C000:7CB2 call vga_init3_1 C000:7CB5 mov ax, 69h ; 'i' C000:7CB8 out dx, ax C000:7CB9 mov al, 6Ah ; 'j' C000:7CBB out dx, ax C000:7CBC call set_crtc30h_0 C000:7CBF retn C000:7CBF sub_C7C80 endp C000:7CBF C000:7CC0 C000:7CC0 ; =============== S U B R O U T I N E ======================================= C000:7CC0 C000:7CC0 C000:7CC0 sub_C7CC0 proc near ; CODE XREF: VESA_OEM_SPECF+74p C000:7CC0 push cx C000:7CC1 mov dx, cx C000:7CC3 mov ax, 0BF01h C000:7CC6 mov bx, 4358h C000:7CC9 mov ch, 2 C000:7CCB int 15h C000:7CCD pop cx C000:7CCE call vga_init3_1 C000:7CD1 call get_CRTC_port C000:7CD4 mov al, 69h ; 'i' C000:7CD6 mov ah, cl C000:7CD8 out dx, ax C000:7CD9 mov al, 6Ah ; 'j' C000:7CDB mov ah, ch C000:7CDD out dx, ax C000:7CDE call set_crtc30h_0 C000:7CE1 retn C000:7CE1 sub_C7CC0 endp C000:7CE1 C000:7CE2 C000:7CE2 ; =============== S U B R O U T I N E ======================================= C000:7CE2 C000:7CE2 C000:7CE2 sub_C7CE2 proc near ; CODE XREF: VESA_OEM_SPECF+7Ep C000:7CE2 call vga_init3_1 C000:7CE5 mov al, 6Bh ; 'k' C000:7CE7 mov ah, cl C000:7CE9 call get_CRTC_port C000:7CEC out dx, ax C000:7CED call set_crtc30h_0 C000:7CF0 mov dl, cl C000:7CF2 mov ax, 0BF01h C000:7CF5 mov bx, 4358h C000:7CF8 mov ch, 3 C000:7CFA int 15h C000:7CFC retn C000:7CFC sub_C7CE2 endp C000:7CFC C000:7CFD C000:7CFD ; =============== S U B R O U T I N E ======================================= C000:7CFD C000:7CFD C000:7CFD sub_C7CFD proc near ; CODE XREF: VESA_OEM_SPECF+6Ap C000:7CFD push cx C000:7CFE mov dl, cl C000:7D00 shr dl, 2 C000:7D03 mov ax, 0BF01h C000:7D06 mov bx, 4358h C000:7D09 mov ch, 4 C000:7D0B int 15h C000:7D0D pop cx C000:7D0E call vga_init3_1 C000:7D11 call get_CRTC_port C000:7D14 mov al, 67h ; 'g' C000:7D16 call read_CRTC_al_ah ; read CRTC register [AL] to AH, DX have to be set to CRTC index port (3B4/3D4h) C000:7D19 and ah, 0E3h C000:7D1C and cl, 1Ch C000:7D1F test cl, 0Ch C000:7D22 jz short loc_C7D27 C000:7D24 or cl, 1 C000:7D27 C000:7D27 loc_C7D27: ; CODE XREF: sub_C7CFD+25j C000:7D27 or ah, cl C000:7D29 out dx, ax C000:7D2A call set_crtc30h_0 C000:7D2D retn C000:7D2D sub_C7CFD endp C000:7D2D C000:7D2E C000:7D2E ; =============== S U B R O U T I N E ======================================= C000:7D2E C000:7D2E C000:7D2E sub_C7D2E proc near ; CODE XREF: VESA_OEM_SPECF+88p C000:7D2E mov dl, cl C000:7D30 mov ax, 0BF01h C000:7D33 mov bx, 4358h C000:7D36 mov ch, 7 C000:7D38 int 15h C000:7D3A retn C000:7D3A sub_C7D2E endp C000:7D3A C000:7D3B C000:7D3B ; =============== S U B R O U T I N E ======================================= C000:7D3B C000:7D3B C000:7D3B sub_C7D3B proc near ; CODE XREF: VESA_OEM_SPECF+92p C000:7D3B mov dl, cl C000:7D3D mov ax, 0BF01h C000:7D40 mov bx, 4358h C000:7D43 mov ch, 8 C000:7D45 int 15h C000:7D47 retn C000:7D47 sub_C7D3B endp C000:7D47 C000:7D48 C000:7D48 ; =============== S U B R O U T I N E ======================================= C000:7D48 C000:7D48 C000:7D48 sub_C7D48 proc near ; CODE XREF: VESA_OEM_SPECF+9Cp C000:7D48 mov dl, cl C000:7D4A mov ax, 0BF01h C000:7D4D mov bx, 4358h C000:7D50 mov ch, 9 C000:7D52 int 15h C000:7D54 retn C000:7D54 sub_C7D48 endp C000:7D54 C000:7D55 C000:7D55 ; =============== S U B R O U T I N E ======================================= C000:7D55 C000:7D55 C000:7D55 sub_C7D55 proc near ; CODE XREF: VESA_OEM_SPECF+A6p C000:7D55 mov dl, cl C000:7D57 mov ax, 0BF01h C000:7D5A mov bx, 4358h C000:7D5D mov ch, 0Ah C000:7D5F int 15h C000:7D61 retn C000:7D61 sub_C7D55 endp C000:7D61 C000:7D62 C000:7D62 ; =============== S U B R O U T I N E ======================================= C000:7D62 C000:7D62 C000:7D62 sub_C7D62 proc near ; CODE XREF: VESA_OEM_SPECF+FCp C000:7D62 mov ax, 0BF01h C000:7D65 mov bx, 4358h C000:7D68 mov ch, 12h C000:7D6A int 15h C000:7D6C mov cl, dl C000:7D6E retn C000:7D6E sub_C7D62 endp C000:7D6E C000:7D6F C000:7D6F ; =============== S U B R O U T I N E ======================================= C000:7D6F C000:7D6F C000:7D6F sub_C7D6F proc near ; CODE XREF: VESA_OEM_SPECF+107p C000:7D6F mov ax, 0BF01h C000:7D72 mov bx, 4358h C000:7D75 mov ch, 13h C000:7D77 int 15h C000:7D79 mov cl, dl C000:7D7B retn C000:7D7B sub_C7D6F endp C000:7D7B C000:7D7C C000:7D7C ; =============== S U B R O U T I N E ======================================= C000:7D7C C000:7D7C C000:7D7C sub_C7D7C proc near ; CODE XREF: VESA_OEM_SPECF+112p C000:7D7C mov ax, 0BF01h C000:7D7F mov bx, 4358h C000:7D82 mov ch, 14h C000:7D84 int 15h C000:7D86 mov cl, dl C000:7D88 retn C000:7D88 sub_C7D7C endp C000:7D88 C000:7D89 C000:7D89 ; =============== S U B R O U T I N E ======================================= C000:7D89 C000:7D89 C000:7D89 sub_C7D89 proc near ; CODE XREF: VESA_OEM_SPECF+11Dp C000:7D89 mov ax, 0BF01h C000:7D8C mov bx, 4358h C000:7D8F mov ch, 15h C000:7D91 int 15h C000:7D93 mov cl, dl C000:7D95 retn C000:7D95 sub_C7D89 endp C000:7D95 C000:7D95 ; --------------------------------------------------------------------------- C000:7D96 db 0,0,0,0,0,0,0,0,0,0 C000:7DA0 aLarryCoffey db 'Larry Coffey',0 C000:7DAD db 252h dup(0FFh) ; padding C000:7FFF byte_C7FFF db 0 ; DATA XREF: vga_init+25r C000:7FFF ; vga_init+2Ew C000:7FFF end