F000:0000 ; Compaq EVO T20 (48MB NTE FW) System BIOS F0000-FFFFFh (64kB) range F000:0000 ; Source : ULC_CODE.BIN (offset 30000-3FFFFh) F000:0000 ; Disassembled and commented by RayeR, 4.1.2009 F000:0000 ; Format : Binary file F000:0000 ; Base Address: F000h Range: F0000h - 3FFFFh Loaded length: 10000h F000:0000 F000:0000 .686p F000:0000 .mmx F000:0000 .model flat F000:0000 F000:0000 ; =========================================================================== F000:0000 F000:0000 ; Segment type: Pure code F000:0000 BIOS_F000 segment byte public 'CODE' use16 F000:0000 assume cs:BIOS_F000 F000:0000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing F000:0000 dword_F0000 dd 81h ; DATA XREF: sub_F36E0+98o F000:0000 ; F000:B515w ... F000:0004 dword_F0004 dd 0 ; DATA XREF: BIOS_INIT2+DBw F000:0004 ; replaced by F000:4464h F000:0008 byte_F0008 db 8 dup(0), 3, 523h dup(0) F000:0534 ; --------------------------------------------------------------------------- F000:0534 jmp near ptr sub_F58A3 F000:0537 ; --------------------------------------------------------------------------- F000:0537 jmp near ptr sub_FA750 F000:053A ; --------------------------------------------------------------------------- F000:053A jmp near ptr sub_FA780 F000:053D ; --------------------------------------------------------------------------- F000:053D jmp near ptr sub_FA7B0 F000:0540 ; --------------------------------------------------------------------------- F000:0540 jmp near ptr sub_FA7D0 F000:0543 ; --------------------------------------------------------------------------- F000:0543 jmp near ptr sub_FA7E0 F000:0546 ; --------------------------------------------------------------------------- F000:0546 jmp near ptr sub_FA7F0 F000:0549 ; --------------------------------------------------------------------------- F000:0549 jmp loc_FAAC0 F000:054C ; --------------------------------------------------------------------------- F000:054C jmp loc_FABA0 F000:054F ; --------------------------------------------------------------------------- F000:054F jmp loc_FACC6 F000:0552 ; --------------------------------------------------------------------------- F000:0552 jmp loc_FAE30 F000:0555 ; --------------------------------------------------------------------------- F000:0555 jmp loc_FAED0 F000:0558 ; --------------------------------------------------------------------------- F000:0558 jmp loc_FAF50 F000:055B ; --------------------------------------------------------------------------- F000:055B jmp loc_FAF70 F000:055E ; --------------------------------------------------------------------------- F000:055E jmp loc_FAF72 F000:0561 ; --------------------------------------------------------------------------- F000:0561 jmp loc_FAF74 F000:0561 ; --------------------------------------------------------------------------- F000:0564 word_F0564 dw 89E9h ; DATA XREF: SET_INTVECT+1Ao F000:0566 db 2Ah ; * F000:0567 word_F0567 dw 1CE9h ; DATA XREF: SET_INTVECT+2Ao F000:0569 db 0C4h ; ¦ F000:056A word_F056A dw 13E9h ; DATA XREF: SET_INTVECT+3Ao F000:056C db 0AAh ; ¬ F000:056D byte_F056D db 197h dup(0), 7, 16h, 7FBh dup(0), 4 dup(20h), 1BCh dup(0) F000:056D db 4, 422h dup(0) F000:14E4 db 0E0h ; Ó F000:14E5 db 1 F000:14E6 db 0 F000:14E7 db 0 F000:14E8 db 80h ; Ç F000:14E9 db 2 F000:14EA db 0 F000:14EB db 0 F000:14EC db 0 F000:14ED dd 0 F000:14F1 db 0 F000:14F2 db 0 F000:14F3 db 0 F000:14F4 db 0 F000:14F5 db 0 F000:14F6 db 0 F000:14F7 db 0 F000:14F8 db 0 F000:14F9 db 0 F000:14FA db 4Bh ; K F000:14FB db 0 F000:14FC db 0 F000:14FD byte_F14FD db 0 ; DATA XREF: F000:5CA6r F000:14FD ; F000:5CCEr F000:14FE db 0 F000:14FF IDT db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:14FF db 20h, 2Eh, 8, 0, 0, 8Eh, 0, 0 F000:15FF db 1811h dup(0) F000:2E10 aMiniromstart db 'MiniRomStart',0 F000:2E1D db 3 dup(0) F000:2E20 F000:2E20 ; =============== S U B R O U T I N E ======================================= F000:2E20 F000:2E20 F000:2E20 sub_F2E20 proc near F000:2E20 push ax F000:2E21 mov al, 20h ; ' ' F000:2E23 out 20h, al ; Interrupt controller, 8259A. F000:2E25 out 0A0h, al ; PIC 2 same as 0020 for PIC 1 F000:2E27 pop ax F000:2E28 iretd F000:2E28 sub_F2E20 endp F000:2E28 F000:2E2A F000:2E2A ; =============== S U B R O U T I N E ======================================= F000:2E2A F000:2E2A F000:2E2A nullsub_2 proc near ; CODE XREF: F000:2E53p F000:2E2A ; F000:2E9Bp ... F000:2E2A retn F000:2E2A nullsub_2 endp F000:2E2A F000:2E2B ; --------------------------------------------------------------------------- F000:2E2B F000:2E2B loc_F2E2B: ; CODE XREF: F000:4EDDj F000:2E2B ; F000:52FAj ... F000:2E2B jmp bx F000:2E2D ; --------------------------------------------------------------------------- F000:2E2D retf F000:2E2D ; --------------------------------------------------------------------------- F000:2E2E db 2 dup(0) F000:2E30 ; --------------------------------------------------------------------------- F000:2E30 F000:2E30 BIOS_INIT1: ; CODE XREF: F000:BIOS_ENTRYj F000:2E30 cli F000:2E31 xor ax, ax ; AX = 0 F000:2E33 mov es, ax ; ES = 0 F000:2E35 assume es:nothing F000:2E35 mov bx, 2E3Bh ; BX = 2E3Bh F000:2E38 jmp BIOS_INIT2 ; return and continue at CS:[2E3Bh] F000:2E3B ; --------------------------------------------------------------------------- F000:2E3B F000:2E3B BIOS_INIT3: ; F000:2E3B call GDT_INIT1 ; EBX = 47472E3Bh F000:2E3E call SET_BC_XMAP_3 ; set Region ctl field for F0000-FFFFFh to 4 F000:2E41 mov eax, cr0 F000:2E44 and eax, 9FFFFFFFh ; paging = 0, align.chk = 0 F000:2E4A mov cr0, eax F000:2E4D call PCI_WR_LOOP ; setting PCI bridge regs in a loop F000:2E50 call SET_USB ; set USB controller MMIO base 42000000h and some basic settings F000:2E53 call nullsub_2 ; do nothing F000:2E56 int 1 ; - internal hardware - SINGLE-STEP F000:2E56 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:2E58 mov ebp, ds:420h ; = 0 F000:2E5D mov dword ptr ds:420h, 0 F000:2E66 mov eax, ds:428h ; = 0 F000:2E6A mov ds:14EDh, eax ; = 0 F000:2E6E mov dx, 0CF8h ; PCI address port F000:2E71 mov eax, 80009090h ; PCI bus 0, dev 12h, func 0, reg 90h (CS5530 ISA bridge) F000:2E77 out dx, eax ; write PCI address F000:2E79 mov dx, 0CFEh ; PCI data port F000:2E7C in al, dx ; read GPIO Pin Direction Register 1 F000:2E7D and al, 0FBh ; GPIO2 is an input F000:2E7F out dx, al ; update GPIO Pin Direction Register 1 F000:2E80 call SET_CRTC1 ; do some magic with CRTC port 3D4h F000:2E83 call SET_VGA1 ; set VGA Base Address = 40010000h F000:2E86 call SET_CCR1 ; set some CCR F000:2E89 call SET_BRIDGE1 ; basic bridge settings F000:2E8C call SET_IDE1 ; basic IDE controller settings F000:2E8F call SET_AUDIO ; Audio Base Address = C0000000h F000:2E92 mov bx, 2E98h F000:2E95 jmp loc_F3A80 ; return and continue at CS:[2E98h] F000:2E98 ; --------------------------------------------------------------------------- F000:2E98 call SET_IDT ; set IDT table F000:2E9B call nullsub_2 ; do nothing F000:2E9E call SET_BC_XMAP_3 F000:2EA1 call SET_BRIDGE2 F000:2EA4 call PCI_BRIDGE_TB90h_13 F000:2EA7 call PCI_WR_LOOP F000:2EAA call nullsub_2 ; do nothing F000:2EAD jz short loc_F2EB2 F000:2EAF call PCI_BRIDGE_CB90h_13 F000:2EB2 F000:2EB2 loc_F2EB2: ; CODE XREF: F000:2EADj F000:2EB2 mov bx, 2EB8h F000:2EB5 jmp SET_INTVECT ; return and continue at CS:[2EB8h] F000:2EB8 ; --------------------------------------------------------------------------- F000:2EB8 call nullsub_2 ; do nothing F000:2EBB mov byte ptr ds:14ECh, 0 F000:2EC0 mov eax, ds:42Ch F000:2EC4 cmp ax, 100h F000:2EC7 jz short loc_F2ED2 F000:2EC9 cmp ax, 101h F000:2ECC jnz short loc_F2ED5 F000:2ECE shr eax, 10h F000:2ED2 F000:2ED2 loc_F2ED2: ; CODE XREF: F000:2EC7j F000:2ED2 mov ds:14ECh, al F000:2ED5 F000:2ED5 loc_F2ED5: ; CODE XREF: F000:2ECCj F000:2ED5 mov eax, ds:424h F000:2ED9 mov ds:14E0h, eax F000:2EDD call ZERO_00400h ; zero memory area 00400-004FFh F000:2EE0 call SET_INTCTL2 F000:2EE3 call SET_IDE2 F000:2EE6 mov edi, 40010004h F000:2EEC mov eax, [edi] ; EAX = VGA MMIO[4] F000:2EF0 and al, 0BFh ; cleat bit6 F000:2EF2 mov [edi], eax ; update VGA MMIO[4] F000:2EF6 call CMOS_RTC F000:2EF9 mov bx, 2EFFh F000:2EFC jmp loc_F52CC ; return and continue at CS:[2EFFh] F000:2EFF ; --------------------------------------------------------------------------- F000:2EFF call nullsub_2 ; do nothing F000:2F02 int 1 ; - internal hardware - SINGLE-STEP F000:2F02 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:2F04 mov dx, 0CF8h ; PCI address port F000:2F07 mov eax, 80009090h ; PCI bus 0, dev 12h, func 0, reg 90h (CS5530 bridge) F000:2F0D out dx, eax ; write PCI address F000:2F0F mov dx, 0CFCh ; PCI data port F000:2F12 in eax, dx ; read GPIO Pin Direction 1, GPIO Pin Data 1, GPIO Control Register 1, Miscellaneous Device Control reg. F000:2F14 or eax, 40000h ; Enable GPIO2 as an External SMI Source F000:2F1A and eax, 0FFDFFFFBh ; GPIO2 SMI sens. on rising edge (0), GPIO2 Direction: GPIO2 is an input F000:2F20 out dx, eax ; update GPIO Pin Direction 1, GPIO Pin Data 1, GPIO Control Register 1, Miscellaneous Device Control reg. F000:2F22 xor ax, ax ; AX = 0 F000:2F24 mov ds, ax ; DS = 0 F000:2F26 assume ds:nothing F000:2F26 mov es, ax ; ES = 0 F000:2F28 call sub_F57B4 F000:2F2B call SET_IO_F800h ; set something on IO ports F800h, F80Ch, F810h F000:2F2E call SET_BC_XMAP_2 F000:2F31 call SET_CMOS1 ; check CMOS settings F000:2F34 call SET_CRTC2 ; do some magic with CRTC port 3D4h F000:2F37 call SET_STACK F000:2F3A call SET_PMODE F000:2F3D ; --------------------------------------------------------------------------- F000:2F3D call SET_BC_XMAP_3 F000:2F40 push ds F000:2F41 call sub_F3A40 ; copy 3847 Bytes [F000:0700h++] -> [0018:0700h++] F000:2F44 pop ds F000:2F45 assume ds:nothing F000:2F45 mov cx, 3 ; count = 3 F000:2F48 mov dx, 3DAh F000:2F4B F000:2F4B loc_F2F4B: ; CODE XREF: F000:2F4Ej F000:2F4B ; F000:2F55j F000:2F4B in al, dx ; Video status bits: F000:2F4B ; 0: retrace. 1=display is in vert or horiz retrace. F000:2F4B ; 1: 1=light pen is triggered; 0=armed F000:2F4B ; 2: 1=light pen switch is open; 0=closed F000:2F4B ; 3: 1=vertical sync pulse is occurring. F000:2F4C test al, 8 F000:2F4E jz short loc_F2F4B F000:2F50 F000:2F50 loc_F2F50: ; CODE XREF: F000:2F53j F000:2F50 in al, dx ; Video status bits: F000:2F50 ; 0: retrace. 1=display is in vert or horiz retrace. F000:2F50 ; 1: 1=light pen is triggered; 0=armed F000:2F50 ; 2: 1=light pen switch is open; 0=closed F000:2F50 ; 3: 1=vertical sync pulse is occurring. F000:2F51 test al, 8 F000:2F53 jnz short loc_F2F50 F000:2F55 loop loc_F2F4B F000:2F57 call SET_CRTC1 F000:2F5A call sub_F3ADF ; write few Bytest just above 1 megabyte F000:2F5D push ds F000:2F5E pop fs F000:2F60 cmp ebp, 12341234h F000:2F67 jz short loc_F2F6C F000:2F69 call sub_F4CE8 F000:2F6C F000:2F6C loc_F2F6C: ; CODE XREF: F000:2F67j F000:2F6C push ebp F000:2F6E call sub_F6A2F F000:2F71 pop ebp F000:2F73 mov edi, 300000h F000:2F79 mov al, 1Bh F000:2F7B mov ecx, 400h F000:2F81 repne scas byte ptr es:[edi] F000:2F84 jnz short loc_F2F93 F000:2F86 cmp dword ptr [edi+2], 4C646E42h F000:2F8F jnz short loc_F2F93 F000:2F91 jmp short loc_F2F96 F000:2F93 ; --------------------------------------------------------------------------- F000:2F93 F000:2F93 loc_F2F93: ; CODE XREF: F000:2F84j F000:2F93 ; F000:2F8Fj F000:2F93 call sub_F3189 F000:2F96 F000:2F96 loc_F2F96: ; CODE XREF: F000:2F91j F000:2F96 cmp ebp, 12341234h F000:2F9D jz short loc_F2FA2 F000:2F9F call sub_F3B97 F000:2FA2 F000:2FA2 loc_F2FA2: ; CODE XREF: F000:2F9Dj F000:2FA2 call sub_F634C F000:2FA5 call SET_IO_224h F000:2FA8 call sub_F5065 F000:2FAB call SET_VGA2 F000:2FAE call SET_BRIDGE3 F000:2FB1 mov al, 1 F000:2FB3 call SET_CCR2 F000:2FB6 int 1 ; - internal hardware - SINGLE-STEP F000:2FB6 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:2FB8 call loc_F5C58 F000:2FBB F000:2FBB loc_F2FBB: ; CODE XREF: F000:loc_F2FBBj F000:2FBB jmp short loc_F2FBB F000:2FBD ; --------------------------------------------------------------------------- F000:2FBD jmp loc_F4ED8 F000:2FC0 F000:2FC0 ; =============== S U B R O U T I N E ======================================= F000:2FC0 F000:2FC0 F000:2FC0 sub_F2FC0 proc far F000:2FC0 pushad F000:2FC2 mov al, 0B6h ; 'Â' F000:2FC4 out 43h, al ; Timer 8253-5 (AT: 8254.2). F000:2FC6 mov al, 2 F000:2FC8 out 42h, al ; Timer 8253-5 (AT: 8254.2). F000:2FCA out 42h, al ; Timer 8253-5 (AT: 8254.2). F000:2FCC in al, 61h ; PC/XT PPI port B bits: F000:2FCC ; 0: Tmr 2 gate =T= OR 03H=spkr ON F000:2FCC ; 1: Tmr 2 data =- AND 0fcH=spkr OFF F000:2FCC ; 3: 1=read high switches F000:2FCC ; 4: 0=enable RAM parity checking F000:2FCC ; 5: 0=enable I/O channel check F000:2FCC ; 6: 0=hold keyboard clock low F000:2FCC ; 7: 0=enable kbrd F000:2FCE or al, 3 F000:2FD0 out 61h, al ; PC/XT PPI port B bits: F000:2FD0 ; 0: Tmr 2 gate =T= OR 03H=spkr ON F000:2FD0 ; 1: Tmr 2 data =- AND 0fcH=spkr OFF F000:2FD0 ; 3: 1=read high switches F000:2FD0 ; 4: 0=enable RAM parity checking F000:2FD0 ; 5: 0=enable I/O channel check F000:2FD0 ; 6: 0=hold keyboard clock low F000:2FD0 ; 7: 0=enable kbrd F000:2FD2 mov ecx, 28000h F000:2FD8 F000:2FD8 loc_F2FD8: ; CODE XREF: sub_F2FC0+1Aj F000:2FD8 in al, 80h ; manufacture's diagnostic checkpoint F000:2FDA loopd loc_F2FD8 F000:2FDD in al, 61h ; PC/XT PPI port B bits: F000:2FDD ; 0: Tmr 2 gate =T= OR 03H=spkr ON F000:2FDD ; 1: Tmr 2 data =- AND 0fcH=spkr OFF F000:2FDD ; 3: 1=read high switches F000:2FDD ; 4: 0=enable RAM parity checking F000:2FDD ; 5: 0=enable I/O channel check F000:2FDD ; 6: 0=hold keyboard clock low F000:2FDD ; 7: 0=enable kbrd F000:2FDF and al, 0FCh F000:2FE1 out 61h, al ; PC/XT PPI port B bits: F000:2FE1 ; 0: Tmr 2 gate =T= OR 03H=spkr ON F000:2FE1 ; 1: Tmr 2 data =- AND 0fcH=spkr OFF F000:2FE1 ; 3: 1=read high switches F000:2FE1 ; 4: 0=enable RAM parity checking F000:2FE1 ; 5: 0=enable I/O channel check F000:2FE1 ; 6: 0=hold keyboard clock low F000:2FE1 ; 7: 0=enable kbrd F000:2FE3 popad F000:2FE5 mov al, 20h ; ' ' F000:2FE7 out 0A0h, al ; PIC 2 same as 0020 for PIC 1 F000:2FE9 iret F000:2FE9 sub_F2FC0 endp F000:2FE9 F000:2FE9 ; --------------------------------------------------------------------------- F000:2FEA db 6 dup(0) F000:2FF0 F000:2FF0 ; =============== S U B R O U T I N E ======================================= F000:2FF0 F000:2FF0 F000:2FF0 sub_F2FF0 proc far F000:2FF0 sti F000:2FF1 pusha F000:2FF2 push es F000:2FF3 push ds F000:2FF4 mov bp, sp F000:2FF6 call sub_F58D0 F000:2FF9 mov sp, bp F000:2FFB pop ds F000:2FFC pop es F000:2FFD assume es:nothing F000:2FFD popa F000:2FFE iret F000:2FFE sub_F2FF0 endp F000:2FFE F000:2FFE ; --------------------------------------------------------------------------- F000:2FFF db 0 F000:3000 db 0 F000:3001 aVsaIsWyse2_13B db 'VSA is WYSE 2.13',0Dh,0Ah F000:3001 db 0Dh,0Ah F000:3001 db ' B0 Codes : Disabled',0Dh,0Ah F000:3031 aCodecFixInclud db ' CODEC fix: Included',0Dh,0Ah F000:304D aIic_dataOpenDr db ' IIC_DATA: Open drain',0Dh,0Ah F000:306B aIic_clockOpenD db ' IIC_CLOCK: Open drain',0Dh,0Ah F000:3089 db 0Dh,0Ah F000:308B db 0 F000:308C db 0 F000:308D db 0 F000:308E db 0 F000:308F db 0 F000:3090 db 2 F000:3091 db 30h ; 0 F000:3092 db 0 F000:3093 db 41h ; A F000:3094 db 28h ; ( F000:3095 db 26h ; & F000:3096 db 5 F000:3097 db 16h F000:3098 db 4 F000:3099 db 0Ah F000:309A db 5 F000:309B db 16h F000:309C db 4 F000:309D db 0Ah F000:309E F000:309E ; =============== S U B R O U T I N E ======================================= F000:309E F000:309E F000:309E SET_CRTC2 proc near ; CODE XREF: F000:2F34p F000:309E mov dx, 3D4h F000:30A1 mov al, 30h ; '0' F000:30A3 out dx, al ; Video: CRT cntrlr addr F000:30A3 ; F000:30A4 inc dx F000:30A5 mov al, 57h ; 'W' F000:30A7 out dx, al ; Video: CRT controller internal registers F000:30A8 mov al, 4Ch ; 'L' F000:30AA out dx, al ; Video: CRT controller internal registers F000:30AB dec dx F000:30AC mov al, 4Fh ; 'O' F000:30AE out dx, al ; Video: CRT cntrlr addr F000:30AE ; F000:30AF inc dx F000:30B0 mov al, 3Ch ; '<' F000:30B2 out dx, al ; Video: CRT controller internal registers F000:30B3 dec dx F000:30B4 mov al, 30h ; '0' F000:30B6 out dx, al ; Video: CRT cntrlr addr F000:30B6 ; F000:30B7 inc dx F000:30B8 xor al, al F000:30BA out dx, al ; Video: CRT controller internal registers F000:30BB mov ax, 0 F000:30BE mov es, ax F000:30C0 assume es:nothing F000:30C0 test byte ptr ds:14ECh, 80h F000:30C5 jz short loc_F30E5 F000:30C7 mov dx, 3D4h F000:30CA mov ax, 5730h F000:30CD out dx, ax ; Video: CRT cntrlr addr F000:30CD ; F000:30CE mov ax, 4C30h F000:30D1 out dx, ax ; Video: CRT cntrlr addr F000:30D1 ; F000:30D2 mov ax, 550h F000:30D5 out dx, ax ; Video: CRT cntrlr addr F000:30D5 ; F000:30D6 mov ax, 4F14h F000:30D9 mov bx, 103h F000:30DC mov di, cs F000:30DE mov es, di F000:30E0 assume es:BIOS_F000 F000:30E0 mov di, 3090h F000:30E3 int 10h ; - VIDEO - VESA SuperVGA BIOS - F000:30E5 F000:30E5 loc_F30E5: ; CODE XREF: SET_CRTC2+27j F000:30E5 mov ax, 5Fh ; '_' F000:30E8 cmp dword ptr ds:14E0h, 4000300h F000:30F1 jnz short loc_F30F6 F000:30F3 mov ax, 60h ; '`' F000:30F6 F000:30F6 loc_F30F6: ; CODE XREF: SET_CRTC2+53j F000:30F6 mov bx, 0F000h F000:30F9 mov es, bx F000:30FB int 10h ; - VIDEO - SET VIDEO MODE F000:30FB ; AL = mode F000:30FD mov al, 0C3h ; '+' F000:30FF out 22h, al F000:3101 xchg ah, al F000:3103 in al, 23h F000:3105 or al, 10h F000:3107 xchg ah, al F000:3109 out 22h, al F000:310B xchg ah, al F000:310D out 23h, al F000:310F mov al, 0B8h ; 'ª' F000:3111 out 22h, al F000:3113 xchg al, ah F000:3115 in al, 23h F000:3117 and al, 0FCh F000:3119 or al, 1 F000:311B xchg al, ah F000:311D out 22h, al F000:311F xchg al, ah F000:3121 out 23h, al F000:3123 retn F000:3123 SET_CRTC2 endp F000:3123 F000:3123 ; --------------------------------------------------------------------------- F000:3124 db 0Ch dup(0) F000:3130 aPoweron_bmp db 'POWERON.BMP',0 F000:313C F000:313C ; =============== S U B R O U T I N E ======================================= F000:313C F000:313C F000:313C sub_F313C proc near F000:313C push es F000:313D push ds F000:313E mov esi, 0FFFE8000h F000:3144 cmp dword ptr [esi+6], 12344444h F000:314D jnz short loc_F3186 F000:314F mov ecx, [esi] F000:3153 or ecx, ecx F000:3156 jcxz short loc_F3186 F000:3158 cmp ecx, 8000h F000:315F ja short loc_F3186 F000:3161 mov dx, [esi+4] F000:3165 lea esi, [esi+0Ah] F000:316A xor edi, edi F000:316D mov ax, 58h ; 'X' F000:3170 mov es, ax F000:3172 assume es:nothing F000:3172 xor bx, bx F000:3174 F000:3174 loc_F3174: ; CODE XREF: sub_F313C+41j F000:3174 lods byte ptr [esi] F000:3176 add bl, al F000:3178 adc bh, 0 F000:317B stos byte ptr es:[edi] F000:317D loop loc_F3174 F000:317F cmp dx, bx F000:3181 jnz short loc_F3186 F000:3183 call sub_F31A8 F000:3186 F000:3186 loc_F3186: ; CODE XREF: sub_F313C+11j F000:3186 ; sub_F313C+1Aj ... F000:3186 pop ds F000:3187 pop es F000:3188 assume es:nothing F000:3188 retn F000:3188 sub_F313C endp F000:3188 F000:3189 F000:3189 ; =============== S U B R O U T I N E ======================================= F000:3189 F000:3189 F000:3189 sub_F3189 proc near ; CODE XREF: F000:loc_F2F93p F000:3189 push es F000:318A push ds F000:318B mov esi, 3130h F000:3191 xor edi, edi F000:3194 mov ax, 58h ; 'X' F000:3197 mov es, ax F000:3199 assume es:nothing F000:3199 mov ax, cs F000:319B mov ds, ax F000:319D assume ds:BIOS_F000 F000:319D call sub_F609A F000:31A0 jb short loc_F31A5 F000:31A2 call sub_F31A8 F000:31A5 F000:31A5 loc_F31A5: ; CODE XREF: sub_F3189+17j F000:31A5 pop ds F000:31A6 assume ds:nothing F000:31A6 pop es F000:31A7 assume es:nothing F000:31A7 retn F000:31A7 sub_F3189 endp F000:31A7 F000:31A8 F000:31A8 ; =============== S U B R O U T I N E ======================================= F000:31A8 F000:31A8 F000:31A8 sub_F31A8 proc near ; CODE XREF: sub_F313C+47p F000:31A8 ; sub_F3189+19p F000:31A8 push fs F000:31AA mov ax, 18h F000:31AD mov fs, ax F000:31AF assume fs:nothing F000:31AF mov ax, es F000:31B1 mov ds, ax F000:31B3 mov ax, 30h ; '0' F000:31B6 mov es, ax F000:31B8 assume es:nothing F000:31B8 xor edi, edi F000:31BB mov ecx, 40000h F000:31C1 mov eax, 10101010h F000:31C7 rep stos dword ptr es:[edi] F000:31CB mov bx, 0Eh F000:31CE cmp dword ptr [bx+20h], 0 F000:31D3 jnz short loc_F31E4 F000:31D5 mov eax, 1 F000:31DB mov cl, [bx+0Eh] F000:31DE shl ax, cl F000:31E0 mov [bx+20h], eax F000:31E4 F000:31E4 loc_F31E4: ; CODE XREF: sub_F31A8+2Bj F000:31E4 mov si, 36h ; '6' F000:31E7 mov cx, [bx+20h] F000:31EA mov di, cx F000:31EC cmp cx, 0F0h ; '­' F000:31F0 jbe short loc_F31F5 F000:31F2 mov cx, 0F0h ; '­' F000:31F5 F000:31F5 loc_F31F5: ; CODE XREF: sub_F31A8+48j F000:31F5 sub di, cx F000:31F7 mov dx, 3C8h F000:31FA mov al, 10h F000:31FC out dx, al F000:31FD inc dx F000:31FE F000:31FE loc_F31FE: ; CODE XREF: sub_F31A8+6Dj F000:31FE mov al, [si+2] F000:3201 shr al, 2 F000:3204 out dx, al F000:3205 mov al, [si+1] F000:3208 shr al, 2 F000:320B out dx, al F000:320C mov al, [si] F000:320E shr al, 2 F000:3211 out dx, al F000:3212 add si, 4 F000:3215 loop loc_F31FE F000:3217 shl di, 2 F000:321A add si, di F000:321C cmp word ptr [bx+0Eh], 4 F000:3220 jz short loc_F322A F000:3222 cmp word ptr [bx+0Eh], 8 F000:3226 jnz loc_F32F3 F000:322A F000:322A loc_F322A: ; CODE XREF: sub_F31A8+78j F000:322A mov esi, large ds:0Ah F000:3232 add si, 0 F000:3235 mov eax, fs:14E4h F000:323A mov edx, [bx+8] F000:323E sub eax, edx F000:3241 jb loc_F32F3 F000:3245 shr eax, 1 F000:3248 add eax, [bx+8] F000:324C dec eax F000:324E mov ecx, fs:14E8h F000:3254 mul ecx F000:3257 sub ecx, large ds:12h F000:325F jb loc_F32F3 F000:3263 shr ecx, 1 F000:3266 add eax, ecx F000:3269 mov edi, eax F000:326C mov ebx, eax F000:326F mov ecx, large ds:16h F000:3277 cmp ecx, fs:14E4h F000:327D ja short loc_F32F3 F000:327F or edx, ecx F000:3282 jz short loc_F32F3 F000:3284 mov dx, 3CEh F000:3287 mov al, 1 F000:3289 out dx, al ; EGA: graph 1 and 2 addr reg: F000:3289 ; enable set/reset F000:328A inc dx F000:328B mov al, 0Fh F000:328D out dx, al ; EGA port: graphics controller data register F000:328E cmp large word ptr ds:1Ch, 4 F000:3296 jnz loc_F3357 F000:329A cmp large dword ptr ds:1Eh, 2 F000:32A3 jz short loc_F32F6 F000:32A5 F000:32A5 loc_F32A5: ; CODE XREF: sub_F31A8+149j F000:32A5 push ecx F000:32A7 mov ecx, large ds:12h F000:32AF shr ecx, 1 F000:32B2 F000:32B2 loc_F32B2: ; CODE XREF: sub_F31A8+11Cj F000:32B2 mov al, [esi] F000:32B5 shr al, 4 F000:32B8 add al, 10h F000:32BA stos byte ptr es:[edi] F000:32BC lods byte ptr [esi] F000:32BE and al, 0Fh F000:32C0 add al, 10h F000:32C2 stos byte ptr es:[edi] F000:32C4 loopd loc_F32B2 F000:32C7 mov ecx, large ds:12h F000:32CF test cl, 1 F000:32D2 jz short loc_F32DD F000:32D4 lods byte ptr [esi] F000:32D6 shr al, 4 F000:32D9 add al, 10h F000:32DB stos byte ptr es:[edi] F000:32DD F000:32DD loc_F32DD: ; CODE XREF: sub_F31A8+12Aj F000:32DD sub edi, fs:14E8h F000:32E3 sub edi, ecx F000:32E6 test cl, 3 F000:32E9 jp short loc_F32ED F000:32EB inc esi F000:32ED F000:32ED loc_F32ED: ; CODE XREF: sub_F31A8+141j F000:32ED pop ecx F000:32EF dec ecx F000:32F1 jnz short loc_F32A5 F000:32F3 F000:32F3 loc_F32F3: ; CODE XREF: sub_F31A8+7Ej F000:32F3 ; sub_F31A8+99j ... F000:32F3 pop fs F000:32F5 assume fs:nothing F000:32F5 retn F000:32F6 ; --------------------------------------------------------------------------- F000:32F6 F000:32F6 loc_F32F6: ; CODE XREF: sub_F31A8+FBj F000:32F6 ; sub_F31A8:loc_F3314j ... F000:32F6 lods byte ptr [esi] F000:32F8 and al, al F000:32FA jz short loc_F3316 F000:32FC xor ah, ah F000:32FE mov cx, ax F000:3300 lods byte ptr [esi] F000:3302 ror ax, 4 F000:3305 ror ah, 4 F000:3308 add ax, 1010h F000:330B shr cx, 1 F000:330D rep stos word ptr es:[edi] F000:3310 jnb short loc_F3314 F000:3312 stos byte ptr es:[edi] F000:3314 F000:3314 loc_F3314: ; CODE XREF: sub_F31A8+168j F000:3314 jmp short loc_F32F6 F000:3316 ; --------------------------------------------------------------------------- F000:3316 F000:3316 loc_F3316: ; CODE XREF: sub_F31A8+152j F000:3316 lods byte ptr [esi] F000:3318 cmp al, 2 F000:331A jbe short loc_F3346 F000:331C movzx cx, al F000:331F shr cx, 1 F000:3321 pushf F000:3322 F000:3322 loc_F3322: ; CODE XREF: sub_F31A8+189j F000:3322 lods byte ptr [esi] F000:3324 xor ah, ah F000:3326 ror ax, 4 F000:3329 ror ah, 4 F000:332C add ax, 1010h F000:332F stos word ptr es:[edi] F000:3331 loop loc_F3322 F000:3333 popf F000:3334 jnb short loc_F333F F000:3336 lods byte ptr [esi] F000:3338 shr al, 4 F000:333B add al, 10h F000:333D stos byte ptr es:[edi] F000:333F F000:333F loc_F333F: ; CODE XREF: sub_F31A8+18Cj F000:333F inc esi F000:3341 and si, 0FFFEh F000:3344 jmp short loc_F32F6 F000:3346 ; --------------------------------------------------------------------------- F000:3346 F000:3346 loc_F3346: ; CODE XREF: sub_F31A8+172j F000:3346 cmp al, 1 F000:3348 jnb short loc_F32F3 F000:334A sub ebx, fs:14E8h F000:3350 mov edi, ebx F000:3353 jnb short loc_F32F6 F000:3355 jmp short loc_F32F3 F000:3357 ; --------------------------------------------------------------------------- F000:3357 F000:3357 loc_F3357: ; CODE XREF: sub_F31A8+EEj F000:3357 cmp large dword ptr ds:1Eh, 1 F000:3360 jz short loc_F33B4 F000:3362 F000:3362 loc_F3362: ; CODE XREF: sub_F31A8+206j F000:3362 push ecx F000:3364 mov ecx, large ds:12h F000:336C shr ecx, 1 F000:336F jnb short loc_F3377 F000:3371 lods byte ptr [esi] F000:3373 add al, 10h F000:3375 stos byte ptr es:[edi] F000:3377 F000:3377 loc_F3377: ; CODE XREF: sub_F31A8+1C7j F000:3377 shr ecx, 1 F000:337A jnb short loc_F3383 F000:337C lods word ptr [esi] F000:337E add ax, 1010h F000:3381 stos word ptr es:[edi] F000:3383 F000:3383 loc_F3383: ; CODE XREF: sub_F31A8+1D2j F000:3383 ; sub_F31A8+1E7j F000:3383 lods dword ptr [esi] F000:3386 add eax, 10101010h F000:338C stos dword ptr es:[edi] F000:338F loopd loc_F3383 F000:3392 sub ebx, fs:14E8h F000:3398 mov edi, ebx F000:339B mov eax, large ds:12h F000:33A2 neg eax F000:33A5 and eax, 3 F000:33A9 add esi, eax F000:33AC pop ecx F000:33AE loopd loc_F3362 F000:33B1 jmp loc_F32F3 F000:33B4 ; --------------------------------------------------------------------------- F000:33B4 F000:33B4 loc_F33B4: ; CODE XREF: sub_F31A8+1B8j F000:33B4 ; sub_F31A8+23Aj ... F000:33B4 lods byte ptr [esi] F000:33B6 and al, al F000:33B8 jz short loc_F33E4 F000:33BA movzx ecx, al F000:33BE lods byte ptr [esi] F000:33C0 add al, 10h F000:33C2 mov ah, al F000:33C4 ror eax, 8 F000:33C8 mov ah, al F000:33CA ror eax, 8 F000:33CE mov ah, al F000:33D0 shr ecx, 1 F000:33D3 jnb short loc_F33D7 F000:33D5 stos byte ptr es:[edi] F000:33D7 F000:33D7 loc_F33D7: ; CODE XREF: sub_F31A8+22Bj F000:33D7 shr ecx, 1 F000:33DA jnb short loc_F33DE F000:33DC stos word ptr es:[edi] F000:33DE F000:33DE loc_F33DE: ; CODE XREF: sub_F31A8+232j F000:33DE rep stos dword ptr es:[edi] F000:33E2 jmp short loc_F33B4 F000:33E4 ; --------------------------------------------------------------------------- F000:33E4 F000:33E4 loc_F33E4: ; CODE XREF: sub_F31A8+210j F000:33E4 lods byte ptr [esi] F000:33E6 cmp al, 2 F000:33E8 jbe short loc_F3407 F000:33EA movzx ecx, al F000:33EE shr cx, 1 F000:33F0 jcxz short loc_F33FD F000:33F2 pushf F000:33F3 F000:33F3 loc_F33F3: ; CODE XREF: sub_F31A8+252j F000:33F3 lods word ptr [esi] F000:33F5 add ax, 1010h F000:33F8 stos word ptr es:[edi] F000:33FA loop loc_F33F3 F000:33FC popf F000:33FD F000:33FD loc_F33FD: ; CODE XREF: sub_F31A8+248j F000:33FD jnb short loc_F3405 F000:33FF lods word ptr [esi] F000:3401 add al, 10h F000:3403 stos byte ptr es:[edi] F000:3405 F000:3405 loc_F3405: ; CODE XREF: sub_F31A8:loc_F33FDj F000:3405 jmp short loc_F33B4 F000:3407 ; --------------------------------------------------------------------------- F000:3407 F000:3407 loc_F3407: ; CODE XREF: sub_F31A8+240j F000:3407 cmp al, 1 F000:3409 jnb loc_F32F3 F000:340D sub ebx, fs:14E8h F000:3413 mov edi, ebx F000:3416 jnb short loc_F33B4 F000:3418 jmp loc_F32F3 F000:3418 sub_F31A8 endp F000:3418 F000:3418 ; --------------------------------------------------------------------------- F000:341B db 5 dup(0) F000:3420 ; --------------------------------------------------------------------------- F000:3420 F000:3420 loc_F3420: ; CODE XREF: F000:3444j F000:3420 ; F000:3470j ... F000:3420 mov dx, 15Ch F000:3423 F000:3423 loc_F3423: ; CODE XREF: F000:342Bj F000:3423 mov al, cs:[si] F000:3426 inc si F000:3427 out dx, al F000:3428 xor dl, 1 F000:342B loop loc_F3423 F000:342D jmp bx F000:342F ; --------------------------------------------------------------------------- F000:342F ror ebx, 10h F000:3433 mov dx, 2Eh ; '.' F000:3436 mov ax, 222h F000:3439 out dx, ax F000:343A mov cx, 8 F000:343D lea si, ds:0A25Eh F000:3441 mov bx, 3446h F000:3444 jmp short loc_F3420 F000:3446 ; --------------------------------------------------------------------------- F000:3446 mov dx, 0E800h F000:3449 mov ax, 8703h F000:344C out dx, ax F000:344D xor cx, cx F000:344F F000:344F loc_F344F: ; CODE XREF: F000:3459j F000:344F mov dx, 0E800h F000:3452 mov al, 3 F000:3454 out dx, al F000:3455 inc dx F000:3456 in al, dx F000:3457 test al, 80h F000:3459 loope loc_F344F F000:345B mov dx, 0E800h F000:345E mov al, 1 F000:3460 out dx, al F000:3461 inc dx F000:3462 in al, dx F000:3463 or al, 8 F000:3465 out dx, al F000:3466 mov cx, 2Eh ; '.' F000:3469 lea si, ds:0A230h F000:346D mov bx, 3472h F000:3470 jmp short loc_F3420 F000:3472 ; --------------------------------------------------------------------------- F000:3472 mov cx, 0Eh F000:3475 lea si, ds:0A282h F000:3479 mov bx, 347Eh F000:347C jmp short loc_F3484 F000:347E ; --------------------------------------------------------------------------- F000:347E ror ebx, 10h F000:3482 jmp bx F000:3484 ; --------------------------------------------------------------------------- F000:3484 F000:3484 loc_F3484: ; CODE XREF: F000:347Cj F000:3484 xor dh, dh F000:3486 F000:3486 loc_F3486: ; CODE XREF: F000:348Fj F000:3486 mov dl, cs:[si] F000:3489 inc si F000:348A mov al, cs:[si] F000:348D inc si F000:348E out dx, al F000:348F loop loc_F3486 F000:3491 jmp bx F000:3493 ; --------------------------------------------------------------------------- F000:3493 mov gs, bx F000:3495 assume gs:nothing F000:3495 mov al, 60h ; '`' F000:3497 mov ah, al F000:3499 and eax, 0FF0h F000:349F shr al, 4 F000:34A2 cmp al, 9 F000:34A4 jle short loc_F34AA F000:34A6 add al, 37h ; '7' F000:34A8 jmp short loc_F34AC F000:34AA ; --------------------------------------------------------------------------- F000:34AA F000:34AA loc_F34AA: ; CODE XREF: F000:34A4j F000:34AA add al, 30h ; '0' F000:34AC F000:34AC loc_F34AC: ; CODE XREF: F000:34A8j F000:34AC out 80h, al ; manufacture's diagnostic checkpoint F000:34AE shl eax, 10h F000:34B2 mov ax, 800h F000:34B5 F000:34B5 loc_F34B5: ; CODE XREF: F000:34B6j F000:34B5 dec ax F000:34B6 jnz short loc_F34B5 F000:34B8 shr eax, 10h F000:34BC mov al, ah F000:34BE cmp al, 9 F000:34C0 jle short loc_F34C6 F000:34C2 add al, 37h ; '7' F000:34C4 jmp short loc_F34C8 F000:34C6 ; --------------------------------------------------------------------------- F000:34C6 F000:34C6 loc_F34C6: ; CODE XREF: F000:34C0j F000:34C6 add al, 30h ; '0' F000:34C8 F000:34C8 loc_F34C8: ; CODE XREF: F000:34C4j F000:34C8 out 80h, al ; manufacture's diagnostic checkpoint F000:34CA mov ax, 800h F000:34CD F000:34CD loc_F34CD: ; CODE XREF: F000:34CEj F000:34CD dec ax F000:34CE jnz short loc_F34CD F000:34D0 mov al, 20h ; ' ' F000:34D2 out 80h, al ; manufacture's diagnostic checkpoint F000:34D4 mov ax, 800h F000:34D7 F000:34D7 loc_F34D7: ; CODE XREF: F000:34D8j F000:34D7 dec ax F000:34D8 jnz short loc_F34D7 F000:34DA mov dx, 15Ch F000:34DD mov al, 20h ; ' ' F000:34DF out dx, al F000:34E0 xor dx, 1 F000:34E3 in al, dx F000:34E4 and al, 0EFh F000:34E6 cmp al, 0CFh ; '¤' F000:34E8 jnz HALT_CPU1 F000:34EC mov al, 61h ; 'a' F000:34EE mov ah, al F000:34F0 and eax, 0FF0h F000:34F6 shr al, 4 F000:34F9 cmp al, 9 F000:34FB jle short loc_F3501 F000:34FD add al, 37h ; '7' F000:34FF jmp short loc_F3503 F000:3501 ; --------------------------------------------------------------------------- F000:3501 F000:3501 loc_F3501: ; CODE XREF: F000:34FBj F000:3501 add al, 30h ; '0' F000:3503 F000:3503 loc_F3503: ; CODE XREF: F000:34FFj F000:3503 out 80h, al ; manufacture's diagnostic checkpoint F000:3505 shl eax, 10h F000:3509 mov ax, 800h F000:350C F000:350C loc_F350C: ; CODE XREF: F000:350Dj F000:350C dec ax F000:350D jnz short loc_F350C F000:350F shr eax, 10h F000:3513 mov al, ah F000:3515 cmp al, 9 F000:3517 jle short loc_F351D F000:3519 add al, 37h ; '7' F000:351B jmp short loc_F351F F000:351D ; --------------------------------------------------------------------------- F000:351D F000:351D loc_F351D: ; CODE XREF: F000:3517j F000:351D add al, 30h ; '0' F000:351F F000:351F loc_F351F: ; CODE XREF: F000:351Bj F000:351F out 80h, al ; manufacture's diagnostic checkpoint F000:3521 mov ax, 800h F000:3524 F000:3524 loc_F3524: ; CODE XREF: F000:3525j F000:3524 dec ax F000:3525 jnz short loc_F3524 F000:3527 mov al, 20h ; ' ' F000:3529 out 80h, al ; manufacture's diagnostic checkpoint F000:352B mov ax, 800h F000:352E F000:352E loc_F352E: ; CODE XREF: F000:352Fj F000:352E dec ax F000:352F jnz short loc_F352E F000:3531 mov cx, 0Ch F000:3534 lea si, ds:0A266h F000:3538 mov bx, 353Eh F000:353B jmp loc_F3420 F000:353E ; --------------------------------------------------------------------------- F000:353E mov cx, 2 F000:3541 lea si, ds:0A280h F000:3545 mov bx, 354Bh F000:3548 jmp loc_F3420 F000:354B ; --------------------------------------------------------------------------- F000:354B mov cx, 0Ch F000:354E lea si, ds:0A272h F000:3552 mov bx, 3558h F000:3555 jmp loc_F3420 F000:3558 ; --------------------------------------------------------------------------- F000:3558 mov al, 6Eh ; 'n' F000:355A mov ah, al F000:355C and eax, 0FF0h F000:3562 shr al, 4 F000:3565 cmp al, 9 F000:3567 jle short loc_F356D F000:3569 add al, 37h ; '7' F000:356B jmp short loc_F356F F000:356D ; --------------------------------------------------------------------------- F000:356D F000:356D loc_F356D: ; CODE XREF: F000:3567j F000:356D add al, 30h ; '0' F000:356F F000:356F loc_F356F: ; CODE XREF: F000:356Bj F000:356F out 80h, al ; manufacture's diagnostic checkpoint F000:3571 shl eax, 10h F000:3575 mov ax, 800h F000:3578 F000:3578 loc_F3578: ; CODE XREF: F000:3579j F000:3578 dec ax F000:3579 jnz short loc_F3578 F000:357B shr eax, 10h F000:357F mov al, ah F000:3581 cmp al, 9 F000:3583 jle short loc_F3589 F000:3585 add al, 37h ; '7' F000:3587 jmp short loc_F358B F000:3589 ; --------------------------------------------------------------------------- F000:3589 F000:3589 loc_F3589: ; CODE XREF: F000:3583j F000:3589 add al, 30h ; '0' F000:358B F000:358B loc_F358B: ; CODE XREF: F000:3587j F000:358B out 80h, al ; manufacture's diagnostic checkpoint F000:358D mov ax, 800h F000:3590 F000:3590 loc_F3590: ; CODE XREF: F000:3591j F000:3590 dec ax F000:3591 jnz short loc_F3590 F000:3593 mov al, 20h ; ' ' F000:3595 out 80h, al ; manufacture's diagnostic checkpoint F000:3597 mov ax, 800h F000:359A F000:359A loc_F359A: ; CODE XREF: F000:359Bj F000:359A dec ax F000:359B jnz short loc_F359A F000:359D mov bx, gs F000:359F jmp bx F000:35A1 ; --------------------------------------------------------------------------- F000:35A1 F000:35A1 HALT_CPU1: ; CODE XREF: F000:34E8j F000:35A1 hlt F000:35A1 ; --------------------------------------------------------------------------- F000:35A2 db 0Eh dup(0) F000:35B0 F000:35B0 ; =============== S U B R O U T I N E ======================================= F000:35B0 F000:35B0 F000:35B0 sub_F35B0 proc near ; CODE XREF: sub_F35F0+Bp F000:35B0 ; sub_F35F0+1Cp ... F000:35B0 pusha F000:35B1 mov cx, 0FFFFh F000:35B4 F000:35B4 loc_F35B4: ; CODE XREF: sub_F35B0+Aj F000:35B4 in al, 64h ; AT Keyboard controller 8042. F000:35B6 and al, 2 F000:35B8 cmp al, 2 F000:35BA loope loc_F35B4 F000:35BC popa F000:35BD retn F000:35BD sub_F35B0 endp F000:35BD F000:35BE F000:35BE ; =============== S U B R O U T I N E ======================================= F000:35BE F000:35BE F000:35BE sub_F35BE proc near ; CODE XREF: sub_F35F0+8p F000:35BE ; sub_F35F0+19p ... F000:35BE pusha F000:35BF mov cx, 0FFFFh F000:35C2 F000:35C2 loc_F35C2: ; CODE XREF: sub_F35BE+Aj F000:35C2 in al, 64h ; AT Keyboard controller 8042. F000:35C4 and al, 1 F000:35C6 cmp al, 1 F000:35C8 loope loc_F35C2 F000:35CA popa F000:35CB retn F000:35CB sub_F35BE endp F000:35CB F000:35CC F000:35CC ; =============== S U B R O U T I N E ======================================= F000:35CC F000:35CC F000:35CC sub_F35CC proc near ; CODE XREF: sub_F35E0p F000:35CC pusha F000:35CD mov cx, 0FFFFh F000:35D0 F000:35D0 loc_F35D0: ; CODE XREF: sub_F35CC+Aj F000:35D0 in al, 64h ; AT Keyboard controller 8042. F000:35D2 and al, 1 F000:35D4 cmp al, 1 F000:35D6 loopne loc_F35D0 F000:35D8 popa F000:35D9 retn F000:35D9 sub_F35CC endp F000:35D9 F000:35DA F000:35DA ; =============== S U B R O U T I N E ======================================= F000:35DA F000:35DA F000:35DA sub_F35DA proc near ; CODE XREF: sub_F35F0+10p F000:35DA ; sub_F35F0+21p ... F000:35DA out 64h, al ; AT Keyboard controller 8042. F000:35DC retn F000:35DC sub_F35DA endp F000:35DC F000:35DD F000:35DD ; =============== S U B R O U T I N E ======================================= F000:35DD F000:35DD F000:35DD sub_F35DD proc near ; CODE XREF: sub_F35F0+34p F000:35DD ; sub_F35F0+48p ... F000:35DD out 60h, al ; AT Keyboard controller 8042. F000:35DF retn F000:35DF sub_F35DD endp F000:35DF F000:35E0 F000:35E0 ; =============== S U B R O U T I N E ======================================= F000:35E0 F000:35E0 F000:35E0 sub_F35E0 proc near ; CODE XREF: sub_F35F0+13p F000:35E0 ; sub_F35F0+37p ... F000:35E0 call sub_F35CC F000:35E3 in al, 60h ; AT Keyboard controller 8042. F000:35E5 retn F000:35E5 sub_F35E0 endp F000:35E5 F000:35E6 F000:35E6 ; =============== S U B R O U T I N E ======================================= F000:35E6 F000:35E6 F000:35E6 sub_F35E6 proc near ; CODE XREF: sub_F35F0+5p F000:35E6 ; sub_F35F0+16p ... F000:35E6 pusha F000:35E7 mov cx, 1FFh F000:35EA F000:35EA loc_F35EA: ; CODE XREF: sub_F35E6+6j F000:35EA in al, 60h ; AT Keyboard controller 8042. F000:35EC loop loc_F35EA F000:35EE popa F000:35EF retn F000:35EF sub_F35E6 endp F000:35EF F000:35F0 F000:35F0 ; =============== S U B R O U T I N E ======================================= F000:35F0 F000:35F0 F000:35F0 sub_F35F0 proc near F000:35F0 push bx F000:35F1 mov al, 0FFh F000:35F3 out 60h, al ; AT Keyboard controller 8042. F000:35F3 ; Reset the keyboard and start internal diagnostics F000:35F5 call sub_F35E6 F000:35F8 call sub_F35BE F000:35FB call sub_F35B0 F000:35FE mov al, 0AAh ; '¬' F000:3600 call sub_F35DA F000:3603 call sub_F35E0 F000:3606 call sub_F35E6 F000:3609 call sub_F35BE F000:360C call sub_F35B0 F000:360F mov al, 0AEh ; '«' F000:3611 call sub_F35DA F000:3614 call sub_F35E6 F000:3617 call sub_F35BE F000:361A call sub_F35B0 F000:361D mov cx, 10h F000:3620 mov dl, 0FEh ; '¦' F000:3622 F000:3622 loc_F3622: ; CODE XREF: sub_F35F0+3Cj F000:3622 mov al, 0FFh F000:3624 call sub_F35DD F000:3627 call sub_F35E0 F000:362A cmp al, dl F000:362C loope loc_F3622 F000:362E call sub_F35E6 F000:3631 mov cx, 10h F000:3634 mov dl, 0FEh ; '¦' F000:3636 F000:3636 loc_F3636: ; CODE XREF: sub_F35F0+50j F000:3636 mov al, 0F0h ; '­' F000:3638 call sub_F35DD F000:363B call sub_F35E0 F000:363E cmp al, dl F000:3640 loope loc_F3636 F000:3642 mov al, 0 F000:3644 call sub_F35DD F000:3647 call sub_F35E0 F000:364A call sub_F35E6 F000:364D mov cx, 10h F000:3650 mov dl, 0FEh ; '¦' F000:3652 F000:3652 loc_F3652: ; CODE XREF: sub_F35F0+6Cj F000:3652 mov al, 0F4h ; '¢' F000:3654 call sub_F35DD F000:3657 call sub_F35E0 F000:365A cmp al, dl F000:365C loope loc_F3652 F000:365E mov al, 0A8h ; 'Ê' F000:3660 call sub_F35DA F000:3663 call sub_F35E6 F000:3666 call sub_F35BE F000:3669 call sub_F35B0 F000:366C mov al, 60h ; '`' F000:366E call sub_F35DA F000:3671 call sub_F35E6 F000:3674 call sub_F35BE F000:3677 mov al, 65h ; 'e' F000:3679 call sub_F35DD F000:367C call sub_F35E6 F000:367F call sub_F35BE F000:3682 call sub_F35B0 F000:3685 pop bx F000:3686 jmp bx F000:3686 sub_F35F0 endp F000:3686 F000:3688 F000:3688 ; =============== S U B R O U T I N E ======================================= F000:3688 F000:3688 F000:3688 sub_F3688 proc near F000:3688 push ax F000:3689 in al, 60h ; AT Keyboard controller 8042. F000:368B mov bl, al F000:368D F000:368D loc_F368D: ; CODE XREF: sub_F3688+9j F000:368D in al, 60h ; AT Keyboard controller 8042. F000:368F cmp al, bl F000:3691 jz short loc_F368D F000:3693 mov bl, al F000:3695 F000:3695 loc_F3695: ; CODE XREF: sub_F3688+11j F000:3695 in al, 60h ; AT Keyboard controller 8042. F000:3697 cmp al, bl F000:3699 jz short loc_F3695 F000:369B pop ax F000:369C retn F000:369C sub_F3688 endp F000:369C F000:369C ; --------------------------------------------------------------------------- F000:369D db 3 dup(0) F000:36A0 ; --------------------------------------------------------------------------- F000:36A0 mov dx, 3FBh F000:36A3 mov al, 83h ; 'â' F000:36A5 out dx, al ; COM: line control register bits: F000:36A5 ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:36A5 ; 2: stop bits: 0=1,1=2 F000:36A5 ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:36A5 ; 5: stuck parity F000:36A5 ; 6: enable break control. 1=start sending 0s (spaces) F000:36A5 ; 7: DLAB (Divisor Latch Access Bit) F000:36A6 mov dx, 3F8h F000:36A9 mov al, 3 F000:36AB out dx, al ; COM: transmitter holding register F000:36AB ; or (when DLAB=1) divisor latch low byte. F000:36AC mov dx, 3F9h F000:36AF mov al, 0 F000:36B1 out dx, al ; COM: divisor latch high byte(when DLAB=1) F000:36B1 ; or interrupt enable register bits: F000:36B1 ; 0:1=an interrupt when rec'd data is available F000:36B1 ; 1:1=interrupt when transmit buffer is empty F000:36B1 ; 2:1=int on rec'r line status (error or break) F000:36B1 ; 3:1=int on modem status (CTS,DSR,RI,RLSD) F000:36B2 mov dx, 3FBh F000:36B5 mov al, 3 F000:36B7 out dx, al ; COM: line control register bits: F000:36B7 ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:36B7 ; 2: stop bits: 0=1,1=2 F000:36B7 ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:36B7 ; 5: stuck parity F000:36B7 ; 6: enable break control. 1=start sending 0s (spaces) F000:36B7 ; 7: DLAB (Divisor Latch Access Bit) F000:36B8 mov dx, 2FBh F000:36BB mov al, 83h ; 'â' F000:36BD out dx, al ; COM: line control register bits: F000:36BD ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:36BD ; 2: stop bits: 0=1,1=2 F000:36BD ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:36BD ; 5: stuck parity F000:36BD ; 6: enable break control. 1=start sending 0s (spaces) F000:36BD ; 7: DLAB (Divisor Latch Access Bit) F000:36BE mov dx, 2F8h F000:36C1 mov al, 0Ch F000:36C3 out dx, al ; COM: transmitter holding register F000:36C3 ; or (when DLAB=1) divisor latch low byte. F000:36C4 mov dx, 2F9h F000:36C7 mov al, 0 F000:36C9 out dx, al ; COM: divisor latch high byte(when DLAB=1) F000:36C9 ; or interrupt enable register bits: F000:36C9 ; 0:1=an interrupt when rec'd data is available F000:36C9 ; 1:1=interrupt when transmit buffer is empty F000:36C9 ; 2:1=int on rec'r line status (error or break) F000:36C9 ; 3:1=int on modem status (CTS,DSR,RI,RLSD) F000:36CA mov dx, 2FBh F000:36CD mov al, 3 F000:36CF out dx, al ; COM: line control register bits: F000:36CF ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:36CF ; 2: stop bits: 0=1,1=2 F000:36CF ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:36CF ; 5: stuck parity F000:36CF ; 6: enable break control. 1=start sending 0s (spaces) F000:36CF ; 7: DLAB (Divisor Latch Access Bit) F000:36D0 jmp bx F000:36D0 ; --------------------------------------------------------------------------- F000:36D2 db 0Eh dup(0) F000:36E0 F000:36E0 ; =============== S U B R O U T I N E ======================================= F000:36E0 F000:36E0 ; Attributes: bp-based frame F000:36E0 F000:36E0 sub_F36E0 proc near F000:36E0 F000:36E0 var_10 = word ptr -10h F000:36E0 var_E = word ptr -0Eh F000:36E0 var_C = byte ptr -0Ch F000:36E0 var_6 = byte ptr -6 F000:36E0 F000:36E0 push bp F000:36E1 mov bp, sp F000:36E3 add sp, 0FFF0h F000:36E6 push ds F000:36E7 push es F000:36E8 mov esi, 0FFFE8000h F000:36EE xor edx, edx F000:36F1 cmp dword ptr [esi+6], 12345679h F000:36FA jnz loc_F37B3 F000:36FE mov eax, 800000h F000:3704 cmp ds:700h, eax F000:3709 jb loc_F37B3 F000:370D sidt fword ptr [bp+var_6] F000:3711 sidt fword ptr [bp+var_C] F000:3715 and dword ptr [bp+var_C+2], 0FFFFh F000:371D lidt fword ptr [bp+var_C] F000:3721 mov eax, dword ptr [bp+var_C+2] F000:3725 mov cx, 37D0h F000:3728 xchg cx, es:[eax+40h] F000:372D mov [bp+var_E], cx F000:3730 mov cx, 37EBh F000:3733 xchg cx, es:[eax+20h] F000:3738 mov [bp+var_10], cx F000:373B in al, 21h ; Interrupt controller, 8259A. F000:373D and al, 0FEh F000:373F out 21h, al ; Interrupt controller, 8259A. F000:3741 sti F000:3742 mov edi, [esi+1] F000:3747 mov ecx, 2000h F000:374D mov ebx, edi F000:3750 rep movs dword ptr es:[edi], dword ptr [esi] F000:3754 xor eax, eax F000:3757 mov ecx, 4000h F000:375D rep stos dword ptr es:[edi] F000:3761 mov word ptr ds:15FFh, ss F000:3766 mov ds:1603h, esp F000:376B mov ax, ds F000:376D mov ss, ax F000:376F mov esp, 14DEh F000:3775 push 0 F000:3777 push cs F000:3778 push offset dword_F0000 F000:377A call loc_F37BE F000:377D mov edx, eax F000:3780 db 66h F000:3780 mov ss, word ptr ds:15FFh F000:3785 mov esp, ds:1603h F000:378A in al, 21h ; Interrupt controller, 8259A. F000:378C or al, 1 F000:378E out 21h, al ; Interrupt controller, 8259A. F000:3790 mov eax, dword ptr [bp+var_6+2] F000:3794 mov cx, [bp+var_E] F000:3797 mov es:[eax+40h], cx F000:379C mov cx, [bp+var_10] F000:379F mov es:[eax+20h], cx F000:37A4 lidt fword ptr [bp+var_6] F000:37A8 or edx, edx F000:37AB jz short loc_F37B3 F000:37AD call sub_F38B1 F000:37B0 xor edx, edx F000:37B3 F000:37B3 loc_F37B3: ; CODE XREF: sub_F36E0+1Aj F000:37B3 ; sub_F36E0+29j ... F000:37B3 mov ds:14F2h, edx F000:37B8 pop es F000:37B9 assume es:nothing F000:37B9 pop ds F000:37BA mov sp, bp F000:37BC pop bp F000:37BD retn F000:37BD sub_F36E0 endp F000:37BD F000:37BE ; --------------------------------------------------------------------------- F000:37BE F000:37BE loc_F37BE: ; CODE XREF: sub_F36E0+9Ap F000:37BE mov edx, 0F37CDh F000:37C4 push 0 F000:37C6 push 78h ; 'x' F000:37C9 push edx F000:37CB db 66h F000:37CB retf F000:37CD ; --------------------------------------------------------------------------- F000:37CD call bx F000:37CF retf F000:37D0 F000:37D0 ; =============== S U B R O U T I N E ======================================= F000:37D0 F000:37D0 F000:37D0 sub_F37D0 proc near F000:37D0 push eax F000:37D2 push ds F000:37D3 mov ax, 18h F000:37D6 mov ds, ax F000:37D8 assume ds:nothing F000:37D8 mov eax, 46Ch F000:37DE inc dword ptr [eax] F000:37E2 mov al, 20h ; ' ' F000:37E4 out 20h, al ; Interrupt controller, 8259A. F000:37E6 pop ds F000:37E7 assume ds:nothing F000:37E7 pop eax F000:37E9 iretd F000:37E9 sub_F37D0 endp F000:37E9 F000:37EB F000:37EB ; =============== S U B R O U T I N E ======================================= F000:37EB F000:37EB F000:37EB sub_F37EB proc near F000:37EB pushad F000:37ED movzx eax, ah F000:37F1 cmp ah, 1 F000:37F4 ja short loc_F37FF F000:37F6 call cs:off_F3803[eax*2] F000:37FF F000:37FF loc_F37FF: ; CODE XREF: sub_F37EB+9j F000:37FF popad F000:3801 iretd F000:3801 sub_F37EB endp F000:3801 F000:3801 ; --------------------------------------------------------------------------- F000:3803 off_F3803 dw offset sub_F3821 ; DATA XREF: sub_F37EB+Br F000:3805 dw offset sub_F388E F000:3807 aEbootFirmwareT db ' EBOOT Firmware Transfer ',0 F000:3821 F000:3821 ; =============== S U B R O U T I N E ======================================= F000:3821 F000:3821 F000:3821 sub_F3821 proc near ; CODE XREF: sub_F37EB+Bp F000:3821 ; DATA XREF: F000:off_F3803o F000:3821 mov ds:0EB1h, ebx F000:3826 mov ds:0EB9h, ebx F000:382B mov dword ptr ds:0EADh, 0 F000:3834 mov dword ptr ds:0EB5h, 0 F000:383D mov word ptr ds:0E95h, 140h F000:3843 mov word ptr ds:0E97h, 0FAh ; 'ÿ' F000:3849 mov word ptr ds:0E99h, 3807h F000:384F mov dword ptr ds:0E9Bh, 0 F000:3858 mov edi, 0E91h F000:385E mov esi, 7A21h F000:3864 call sub_F96CB F000:3867 mov ds:10B9h, ebx F000:386C call sub_F968E F000:386F mov ds:10B5h, ebx F000:3874 mov byte ptr [ebx+4], 6 F000:3879 mov word ptr [ebx+0Ah], 0EADh F000:387F mov byte ptr [ebx+5], 0 F000:3884 mov esi, 0E91h F000:388A call sub_F975A F000:388D retn F000:388D sub_F3821 endp F000:388D F000:388E F000:388E ; =============== S U B R O U T I N E ======================================= F000:388E F000:388E F000:388E sub_F388E proc near ; CODE XREF: sub_F37EB+Bp F000:388E ; DATA XREF: F000:3805o F000:388E add ds:0EB5h, ebx F000:3893 mov eax, ds:0EB9h F000:3897 cmp ds:0EB5h, eax F000:389C jb short loc_F38A2 F000:389E mov ds:0EB5h, eax F000:38A2 F000:38A2 loc_F38A2: ; CODE XREF: sub_F388E+Ej F000:38A2 mov ebx, ds:10B5h F000:38A7 mov esi, 0E91h F000:38AD call sub_F990D F000:38B0 retn F000:38B0 sub_F388E endp F000:38B0 F000:38B1 F000:38B1 ; =============== S U B R O U T I N E ======================================= F000:38B1 F000:38B1 F000:38B1 sub_F38B1 proc near ; CODE XREF: sub_F36E0+CDp F000:38B1 mov ebx, ds:10B5h F000:38B6 mov byte ptr [ebx+5], 1 F000:38BB mov ax, 7A36h F000:38BE call sub_F8BA1 F000:38C1 mov ds:0FCFh, edx F000:38C6 mov edx, 1 F000:38CC F000:38CC loc_F38CC: ; CODE XREF: sub_F38B1+23j F000:38CC call sub_F799D F000:38CF jnb short loc_F38D6 F000:38D1 xor edx, edx F000:38D4 jmp short loc_F38CC F000:38D6 ; --------------------------------------------------------------------------- F000:38D6 F000:38D6 loc_F38D6: ; CODE XREF: sub_F38B1+1Ej F000:38D6 xor ebx, ebx F000:38D9 F000:38D9 loc_F38D9: ; CODE XREF: sub_F38B1+52j F000:38D9 mov edi, 0D86h F000:38DF push ebx F000:38E1 call sub_F6768 F000:38E4 pop eax F000:38E6 jb short loc_F3931 F000:38E8 movzx ecx, byte ptr ds:0D86h F000:38EE movzx esi, byte ptr ds:0D87h F000:38F4 sub ecx, esi F000:38F7 add edi, esi F000:38FA mov esi, 0F39E7h F000:3900 call sub_F61EE F000:3903 jnz short loc_F38D9 F000:3905 mov byte ptr [edi], 0 F000:3909 mov esi, edi F000:390C movzx edi, byte ptr ds:0D87h F000:3912 add edi, eax F000:3915 mov ecx, 1 F000:391B mov ebx, 1 F000:3921 call loc_F7468 F000:3924 xor ecx, ecx F000:3927 xor edi, edi F000:392A mov bx, ds:0D92h F000:392E call loc_F7468 F000:3931 F000:3931 loc_F3931: ; CODE XREF: sub_F38B1+35j F000:3931 call sub_F773D F000:3934 mov ds:0D92h, ax F000:3937 mov ecx, ds:0FCFh F000:393C mov ds:0D8Ah, ecx F000:3941 mov word ptr ds:0D98h, 1 F000:3947 mov dword ptr ds:0D8Eh, 0 F000:3950 mov esi, 0F39E7h F000:3956 mov edi, 0D9Ah F000:395C F000:395C loc_F395C: ; CODE XREF: sub_F38B1+B7j F000:395C lods byte ptr [esi] F000:395E cmp al, 20h ; ' ' F000:3960 jnz short loc_F3964 F000:3962 xor al, al F000:3964 F000:3964 loc_F3964: ; CODE XREF: sub_F38B1+AFj F000:3964 stos byte ptr es:[edi] F000:3966 and al, al F000:3968 jnz short loc_F395C F000:396A cmp byte ptr es:[edi-2], 2Eh ; '.' F000:3970 jnz short loc_F397A F000:3972 mov byte ptr es:[edi-2], 0 F000:3978 dec edi F000:397A F000:397A loc_F397A: ; CODE XREF: sub_F38B1+BFj F000:397A mov byte ptr ds:0D87h, 14h F000:397F mov esi, 0D86h F000:3985 mov eax, edi F000:3988 sub eax, esi F000:398B dec eax F000:398D mov ds:0D86h, al F000:3990 mov ebx, 0FFFFFFFFh F000:3996 call sub_F616F F000:3999 mov ax, 7A4Ah F000:399C call sub_F8BA1 F000:399F mov eax, ds:0D8Ah F000:39A3 mov esi, 100000h F000:39A9 xor edi, edi F000:39AC F000:39AC loc_F39AC: ; CODE XREF: sub_F38B1+125j F000:39AC mov ecx, eax F000:39AF cmp ecx, 2000h F000:39B6 jb short loc_F39BE F000:39B8 mov ecx, 2000h F000:39BE F000:39BE loc_F39BE: ; CODE XREF: sub_F38B1+105j F000:39BE mov bx, ds:0D92h F000:39C2 call loc_F7468 F000:39C5 add esi, ecx F000:39C8 add edi, ecx F000:39CB add ds:0EADh, ecx F000:39D0 call sub_F90F8 F000:39D3 sub eax, ecx F000:39D6 jnz short loc_F39AC F000:39D8 call sub_F7394 F000:39DB mov eax, ds:0EB5h F000:39DF mov ds:0EADh, eax F000:39E3 call sub_F90F8 F000:39E6 retn F000:39E6 sub_F38B1 endp F000:39E6 F000:39E6 ; --------------------------------------------------------------------------- F000:39E7 aNk_bin db 'NK.BIN',0 F000:39EE db 2 dup(0) F000:39F0 F000:39F0 ; =============== S U B R O U T I N E ======================================= F000:39F0 F000:39F0 F000:39F0 SET_IO_F800h proc near ; CODE XREF: F000:2F2Bp F000:39F0 ; sub_FB1B0+4p ... F000:39F0 mov dx, 0F800h F000:39F3 mov eax, 100h F000:39F9 out dx, eax ; 386EX: power management F000:39FB mov ecx, 100h F000:3A01 F000:3A01 loc_F3A01: ; CODE XREF: SET_IO_F800h+19j F000:3A01 in eax, dx F000:3A03 test eax, 100h F000:3A09 loopne loc_F3A01 F000:3A0B mov ecx, 1000h F000:3A11 F000:3A11 loc_F3A11: ; CODE XREF: SET_IO_F800h+2Cj F000:3A11 mov dx, 0F810h F000:3A14 in eax, dx F000:3A16 test eax, 3000000h F000:3A1C loope loc_F3A11 F000:3A1E mov dx, 0F80Ch F000:3A21 in eax, dx F000:3A23 or eax, 4 F000:3A27 out dx, eax F000:3A29 mov ecx, 8000h F000:3A2F F000:3A2F loc_F3A2F: ; CODE XREF: SET_IO_F800h+46j F000:3A2F mov dx, 0F80Ch F000:3A32 in eax, dx F000:3A34 test al, 4 F000:3A36 loopne loc_F3A2F F000:3A38 retn F000:3A38 SET_IO_F800h endp F000:3A38 F000:3A38 ; --------------------------------------------------------------------------- F000:3A39 db 7 dup(0) F000:3A40 F000:3A40 ; =============== S U B R O U T I N E ======================================= F000:3A40 F000:3A40 F000:3A40 sub_F3A40 proc near ; CODE XREF: F000:2F41p F000:3A40 push ds F000:3A41 push es F000:3A42 push cs F000:3A43 pop ds ; DS = F000h F000:3A44 assume ds:BIOS_F000 F000:3A44 mov ax, 18h F000:3A47 mov es, ax ; ES = 0018h F000:3A49 assume es:nothing F000:3A49 push large [dword ptr es:14E0h] F000:3A4F mov al, es:14ECh F000:3A53 push large [dword ptr es:14EDh] F000:3A59 mov si, 700h ; SI = 0700h F000:3A5C mov di, si ; DI = 0700h F000:3A5E mov cx, 0F07h ; count = 3847 F000:3A61 rep movsb ; copy [F000:0700h++] to [0018:0700h++] F000:3A63 pop large [dword ptr es:14EDh] F000:3A69 mov es:14ECh, al F000:3A6D pop word ptr es:14E4h F000:3A72 pop word ptr es:14E8h F000:3A77 pop es F000:3A78 assume es:nothing F000:3A78 pop ds F000:3A79 assume ds:nothing F000:3A79 retn F000:3A79 sub_F3A40 endp F000:3A79 F000:3A79 ; --------------------------------------------------------------------------- F000:3A7A db 6 dup(0) F000:3A80 ; --------------------------------------------------------------------------- F000:3A80 F000:3A80 loc_F3A80: ; CODE XREF: F000:2E95j F000:3A80 cli F000:3A81 mov ax, 2000h F000:3A84 mov ss, ax F000:3A86 assume ss:nothing F000:3A86 mov sp, 8000h F000:3A89 mov cx, 100h F000:3A8C mov ax, 69h ; 'i' F000:3A8F F000:3A8F loc_F3A8F: ; CODE XREF: F000:3A93j F000:3A8F push ax F000:3A90 inc ax F000:3A91 rol ax, 1 F000:3A93 loop loc_F3A8F F000:3A95 mov dx, ax F000:3A97 mov cx, 100h F000:3A9A F000:3A9A loc_F3A9A: ; CODE XREF: F000:3AA5j F000:3A9A ror dx, 1 F000:3A9C dec dx F000:3A9D mov ax, 0 F000:3AA0 pop ax F000:3AA1 cmp ax, dx F000:3AA3 jnz short loc_F3AC7 F000:3AA5 loop loc_F3A9A F000:3AA7 mov cx, 100h F000:3AAA mov ax, 0FF96h F000:3AAD F000:3AAD loc_F3AAD: ; CODE XREF: F000:3AB1j F000:3AAD push ax F000:3AAE inc ax F000:3AAF rol ax, 1 F000:3AB1 loop loc_F3AAD F000:3AB3 mov dx, ax F000:3AB5 mov cx, 100h F000:3AB8 F000:3AB8 loc_F3AB8: ; CODE XREF: F000:3AC3j F000:3AB8 ror dx, 1 F000:3ABA dec dx F000:3ABB mov ax, 0 F000:3ABE pop ax F000:3ABF cmp ax, dx F000:3AC1 jnz short loc_F3AC7 F000:3AC3 loop loc_F3AB8 F000:3AC5 jmp bx F000:3AC7 ; --------------------------------------------------------------------------- F000:3AC7 F000:3AC7 loc_F3AC7: ; CODE XREF: F000:3AA3j F000:3AC7 ; F000:3AC1j F000:3AC7 mov al, 20h ; ' ' F000:3AC9 jmp loc_F4ED1 F000:3AC9 ; --------------------------------------------------------------------------- F000:3ACC db 4 dup(0) F000:3AD0 F000:3AD0 ; =============== S U B R O U T I N E ======================================= F000:3AD0 F000:3AD0 F000:3AD0 ZERO_00400h proc near ; CODE XREF: F000:2EDDp F000:3AD0 xor ax, ax F000:3AD2 mov es, ax ; ES = 0, AX = 0 F000:3AD4 assume es:nothing F000:3AD4 mov di, 400h ; DI = 0400h F000:3AD7 mov cx, 100h ; count = 256 F000:3ADA xor al, al ; AL = 0 F000:3ADC rep stosb ; fill 256 Bytes at ES:[DI] with AL F000:3ADE retn F000:3ADE ZERO_00400h endp F000:3ADE F000:3ADF F000:3ADF ; =============== S U B R O U T I N E ======================================= F000:3ADF F000:3ADF F000:3ADF sub_F3ADF proc near ; CODE XREF: F000:2F5Ap F000:3ADF mov esi, 100000h F000:3AE5 mov edx, ds:0 F000:3AEA F000:3AEA loc_F3AEA: ; CODE XREF: sub_F3ADF+4Bj F000:3AEA mov eax, [esi] ; read just behind 1st megabyte F000:3AEE mov ebx, [esi+4] F000:3AF3 mov dword ptr [esi], 12345678h F000:3AFB mov dword ptr [esi+4], 44445555h F000:3B04 xor dword ptr [esi], 66666666h F000:3B0C cmp dword ptr [esi], 7452301Eh F000:3B14 jnz short loc_F3B2C F000:3B16 cmp edx, ds:0 F000:3B1B jnz short loc_F3B2C F000:3B1D mov [esi], eax F000:3B21 mov [esi+4], ebx F000:3B26 add esi, 40h ; '@' F000:3B2A jnb short loc_F3AEA ; read just behind 1st megabyte F000:3B2C F000:3B2C loc_F3B2C: ; CODE XREF: sub_F3ADF+35j F000:3B2C ; sub_F3ADF+3Cj F000:3B2C mov [esi], eax F000:3B30 mov [esi+4], ebx F000:3B35 mov ds:0, edx F000:3B3A mov edx, esi F000:3B3D mov ds:700h, edx F000:3B42 shr edx, 0Ah F000:3B46 mov ax, dx F000:3B48 cmp edx, 280h F000:3B4F jbe short loc_F3B54 F000:3B51 mov ax, 280h F000:3B54 F000:3B54 loc_F3B54: ; CODE XREF: sub_F3ADF+70j F000:3B54 mov ds:413h, ax F000:3B57 sub edx, 400h F000:3B5E jnb short loc_F3B63 F000:3B60 xor edx, edx F000:3B63 F000:3B63 loc_F3B63: ; CODE XREF: sub_F3ADF+7Fj F000:3B63 mov ecx, edx F000:3B66 mov al, 0B0h ; '-' F000:3B68 out 70h, al ; CMOS Memory: F000:3B68 ; F000:3B6A mov al, dl F000:3B6C out 71h, al ; CMOS Memory: F000:3B6C ; used by real-time clock F000:3B6E mov al, 0B1h ; '-' F000:3B70 out 70h, al ; CMOS Memory: F000:3B70 ; F000:3B72 mov al, dh F000:3B74 out 71h, al ; CMOS Memory: F000:3B74 ; used by real-time clock F000:3B76 shr edx, 10h F000:3B7A mov al, 0B2h ; '-' F000:3B7C out 70h, al ; CMOS Memory: F000:3B7C ; F000:3B7E mov al, dl F000:3B80 out 71h, al ; CMOS Memory: F000:3B80 ; used by real-time clock F000:3B82 shr ecx, 6 F000:3B86 mov al, 34h ; '4' F000:3B88 out 70h, al ; CMOS Memory: F000:3B88 ; unknown address F000:3B8A mov al, cl F000:3B8C out 71h, al ; CMOS Memory: F000:3B8C ; used by real-time clock F000:3B8E mov al, 35h ; '5' F000:3B90 out 70h, al ; CMOS Memory: F000:3B90 ; F000:3B92 mov al, ch F000:3B94 out 71h, al ; CMOS Memory: F000:3B94 ; used by real-time clock F000:3B96 retn F000:3B96 sub_F3ADF endp F000:3B96 F000:3B97 F000:3B97 ; =============== S U B R O U T I N E ======================================= F000:3B97 F000:3B97 F000:3B97 sub_F3B97 proc near ; CODE XREF: F000:2F9Fp F000:3B97 mov esi, 100000h F000:3B9D mov edi, esi F000:3BA0 mov ecx, ds:700h F000:3BA5 sub ecx, esi F000:3BA8 shr ecx, 2 F000:3BAC xor eax, eax F000:3BAF push ecx F000:3BB1 F000:3BB1 loc_F3BB1: ; CODE XREF: sub_F3B97+25j F000:3BB1 inc eax F000:3BB3 or al, al F000:3BB5 jnz short loc_F3BB9 F000:3BB7 inc eax F000:3BB9 F000:3BB9 loc_F3BB9: ; CODE XREF: sub_F3B97+1Ej F000:3BB9 stos dword ptr es:[edi] F000:3BBC loopd loc_F3BB1 F000:3BBF pop ecx F000:3BC1 xor eax, eax F000:3BC4 F000:3BC4 loc_F3BC4: ; CODE XREF: sub_F3B97+3Fj F000:3BC4 inc eax F000:3BC6 or al, al F000:3BC8 jnz short loc_F3BCC F000:3BCA inc eax F000:3BCC F000:3BCC loc_F3BCC: ; CODE XREF: sub_F3B97+31j F000:3BCC cmp eax, [esi] F000:3BD0 jnz short loc_F3BD9 F000:3BD2 add esi, 4 F000:3BD6 loopd loc_F3BC4 F000:3BD9 F000:3BD9 loc_F3BD9: ; CODE XREF: sub_F3B97+39j F000:3BD9 mov ds:0EEEh, esi F000:3BDE mov ds:0EF2h, eax F000:3BE2 mov eax, [esi] F000:3BE6 mov ds:0EF6h, eax F000:3BEA or ecx, ecx F000:3BED retn F000:3BED sub_F3B97 endp F000:3BED F000:3BEE ; --------------------------------------------------------------------------- F000:3BEE mov si, 3C0Fh F000:3BF1 mov al, 0FFh F000:3BF3 out 22h, al F000:3BF5 in al, 23h F000:3BF7 cmp al, 50h ; 'P' F000:3BF9 jb short loc_F3BFE F000:3BFB mov si, 3C17h F000:3BFE F000:3BFE loc_F3BFE: ; CODE XREF: F000:3BF9j F000:3BFE mov al, 0FEh ; '¦' F000:3C00 out 22h, al F000:3C02 in al, 23h F000:3C04 and al, 7 F000:3C06 xor ah, ah F000:3C08 add si, ax F000:3C0A mov al, cs:[si] F000:3C0D jmp bx F000:3C0D ; --------------------------------------------------------------------------- F000:3C0F db 4, 6, 4, 6, 7, 8, 7, 5, 4, 0Ah, 4, 6, 9, 5, 7, 8 F000:3C1F ; --------------------------------------------------------------------------- F000:3C1F mov al, 74h ; 't' F000:3C21 out 43h, al ; Timer 8253-5 (AT: 8254.2). F000:3C23 mov al, 12h F000:3C25 out 41h, al ; Timer 8253-5 (AT: 8254.2). F000:3C27 mov al, 0 F000:3C29 out 41h, al ; Timer 8253-5 (AT: 8254.2). F000:3C2B F000:3C2B loc_F3C2B: ; CODE XREF: F000:3C6Fj F000:3C2B push ax F000:3C2C push bx F000:3C2D mov al, 0C1h ; '+' F000:3C2F out 22h, al F000:3C31 in al, 23h F000:3C33 and al, 0FDh F000:3C35 mov bl, al F000:3C37 mov al, 0C1h ; '+' F000:3C39 out 22h, al F000:3C3B mov al, bl F000:3C3D out 23h, al F000:3C3F pop bx F000:3C40 pop ax F000:3C41 pushf F000:3C42 cli F000:3C43 rdtsc F000:3C45 mov esi, edx F000:3C48 mov edi, eax F000:3C4B call sub_F3C92 F000:3C4E rdtsc F000:3C50 popf F000:3C51 push ax F000:3C52 push bx F000:3C53 mov al, 0C1h ; '+' F000:3C55 out 22h, al F000:3C57 in al, 23h F000:3C59 or al, 2 F000:3C5B mov bl, al F000:3C5D mov al, 0C1h ; '+' F000:3C5F out 22h, al F000:3C61 mov al, bl F000:3C63 out 23h, al F000:3C65 pop bx F000:3C66 pop ax F000:3C67 cmp eax, edi F000:3C6A jz short loc_F3C8E F000:3C6C cmp esi, edx F000:3C6F jnz short loc_F3C2B F000:3C71 sub eax, edi F000:3C74 mov ebx, eax F000:3C77 shl eax, 3 F000:3C7B add eax, ebx F000:3C7E add eax, ebx F000:3C81 xor edx, edx F000:3C84 mov ebx, 0F4240h F000:3C8A div ebx F000:3C8D retn F000:3C8E ; --------------------------------------------------------------------------- F000:3C8E F000:3C8E loc_F3C8E: ; CODE XREF: F000:3C6Aj F000:3C8E xor eax, eax F000:3C91 retn F000:3C92 F000:3C92 ; =============== S U B R O U T I N E ======================================= F000:3C92 F000:3C92 F000:3C92 sub_F3C92 proc near ; CODE XREF: F000:3C4Bp F000:3C92 pushf F000:3C93 pushad F000:3C95 cli F000:3C96 mov ebx, 19E6h F000:3C9C xor ax, ax F000:3C9E F000:3C9E loc_F3C9E: ; CODE XREF: sub_F3C92+1Ej F000:3C9E mov dx, 0C8h ; 'L' F000:3CA1 F000:3CA1 loc_F3CA1: ; CODE XREF: sub_F3C92+18j F000:3CA1 in al, 61h ; PC/XT PPI port B bits: F000:3CA1 ; 0: Tmr 2 gate =T= OR 03H=spkr ON F000:3CA1 ; 1: Tmr 2 data =- AND 0fcH=spkr OFF F000:3CA1 ; 3: 1=read high switches F000:3CA1 ; 4: 0=enable RAM parity checking F000:3CA1 ; 5: 0=enable I/O channel check F000:3CA1 ; 6: 0=hold keyboard clock low F000:3CA1 ; 7: 0=enable kbrd F000:3CA3 and al, 10h F000:3CA5 cmp al, ah F000:3CA7 jnz short loc_F3CAC F000:3CA9 dec dx F000:3CAA jnz short loc_F3CA1 F000:3CAC F000:3CAC loc_F3CAC: ; CODE XREF: sub_F3C92+15j F000:3CAC mov ah, al F000:3CAE dec ebx F000:3CB0 jnz short loc_F3C9E F000:3CB2 popad F000:3CB4 popf F000:3CB5 retn F000:3CB5 sub_F3C92 endp F000:3CB5 F000:3CB5 ; --------------------------------------------------------------------------- F000:3CB6 db 0Ah dup(0) F000:3CC0 ; --------------------------------------------------------------------------- F000:3CC0 mov al, 0C3h ; '+' F000:3CC2 out 22h, al F000:3CC4 in al, 23h F000:3CC6 mov ah, al F000:3CC8 mov al, 0C3h ; '+' F000:3CCA out 22h, al F000:3CCC mov al, ah F000:3CCE or al, 10h F000:3CD0 out 23h, al F000:3CD2 mov al, 0B8h ; 'ª' F000:3CD4 out 22h, al F000:3CD6 in al, 23h F000:3CD8 mov ah, al F000:3CDA mov al, 0B8h ; 'ª' F000:3CDC out 22h, al F000:3CDE mov al, ah F000:3CE0 and al, 0F3h F000:3CE2 out 23h, al F000:3CE4 mov esi, 40008008h F000:3CEA mov eax, [esi] F000:3CEE or eax, 77770000h F000:3CF4 mov [esi], eax F000:3CF8 mov edi, 0D0000h F000:3CFE mov ecx, 4000h F000:3D04 xor eax, eax F000:3D07 rep stos dword ptr es:[edi] F000:3D0B mov eax, cr0 F000:3D0E and eax, 9FFFFFFFh F000:3D14 mov cr0, eax F000:3D17 or eax, 40000000h F000:3D1D mov edx, eax F000:3D20 mov esi, 0D0000h F000:3D26 mov ecx, 4000h F000:3D2C rep lods dword ptr [esi] F000:3D30 mov cr0, edx F000:3D33 jmp short $+2 F000:3D35 mov esi, 40008008h F000:3D3B mov eax, [esi] F000:3D3F and eax, 9999FFFFh F000:3D45 mov [esi], eax F000:3D49 mov ecx, 8000h F000:3D4F mov eax, 55AA55AAh F000:3D55 call sub_F3DBD F000:3D58 cmp cx, 4000h F000:3D5C jnz short loc_F3D6D F000:3D5E mov eax, 0AA55AA55h F000:3D64 call sub_F3DBD F000:3D67 cmp cx, 4000h F000:3D6B jz short loc_F3D72 F000:3D6D F000:3D6D loc_F3D6D: ; CODE XREF: F000:3D5Cj F000:3D6D mov al, 3Ch ; '<' F000:3D6F jmp loc_F4ED1 F000:3D72 ; --------------------------------------------------------------------------- F000:3D72 F000:3D72 loc_F3D72: ; CODE XREF: F000:3D6Bj F000:3D72 mov esi, 40008008h F000:3D78 mov eax, [esi] F000:3D7C and eax, 8888FFFFh F000:3D82 mov [esi], eax F000:3D86 mov al, 0B8h ; 'ª' F000:3D88 out 22h, al F000:3D8A in al, 23h F000:3D8C mov ah, al F000:3D8E mov al, 0B8h ; 'ª' F000:3D90 out 22h, al F000:3D92 mov al, ah F000:3D94 or al, 8 F000:3D96 out 23h, al F000:3D98 mov al, 0C3h ; '+' F000:3D9A out 22h, al F000:3D9C in al, 23h F000:3D9E mov ah, al F000:3DA0 mov al, 0C3h ; '+' F000:3DA2 out 22h, al F000:3DA4 mov al, ah F000:3DA6 and al, 0EFh F000:3DA8 out 23h, al F000:3DAA mov bx, 3DB0h F000:3DAD jmp SET_FB_SIZE F000:3DB0 ; --------------------------------------------------------------------------- F000:3DB0 mov eax, cr0 F000:3DB3 and eax, 9FFFFFFFh F000:3DB9 mov cr0, eax F000:3DBC retn F000:3DBD F000:3DBD ; =============== S U B R O U T I N E ======================================= F000:3DBD F000:3DBD F000:3DBD sub_F3DBD proc near ; CODE XREF: F000:3D55p F000:3DBD ; F000:3D64p F000:3DBD mov edi, 0E0000h F000:3DC3 sub edi, ecx F000:3DC6 shr ecx, 2 F000:3DCA rep stos dword ptr es:[edi] F000:3DCE mov edi, 0DFFFCh F000:3DD4 xor ecx, ecx F000:3DD7 F000:3DD7 loc_F3DD7: ; CODE XREF: sub_F3DBD+30j F000:3DD7 cmp es:[edi], eax F000:3DDC jnz short locret_F3DEF F000:3DDE add ecx, 4 F000:3DE2 sub edi, 4 F000:3DE6 cmp edi, 0D0000h F000:3DED jnb short loc_F3DD7 F000:3DEF F000:3DEF locret_F3DEF: ; CODE XREF: sub_F3DBD+1Fj F000:3DEF retn F000:3DEF sub_F3DBD endp F000:3DEF F000:3DF0 F000:3DF0 ; =============== S U B R O U T I N E ======================================= F000:3DF0 F000:3DF0 F000:3DF0 SET_CCR2 proc near ; CODE XREF: F000:2FB3p F000:3DF0 push ax F000:3DF1 mov al, 0C3h ; '+' F000:3DF3 out 22h, al F000:3DF5 in al, 23h F000:3DF7 mov ah, al F000:3DF9 mov al, 0C3h ; '+' F000:3DFB out 22h, al F000:3DFD mov al, ah F000:3DFF or al, 10h F000:3E01 out 23h, al F000:3E03 mov eax, cr0 F000:3E06 pop bx F000:3E07 and ebx, 1 F000:3E0B shl ebx, 1Dh F000:3E0F and eax, 9FFFFFFFh F000:3E15 or eax, ebx F000:3E18 mov cr0, eax F000:3E1B wbinvd F000:3E1D mov al, 0C2h ; 'T' F000:3E1F out 22h, al F000:3E21 in al, 23h F000:3E23 or al, 4 F000:3E25 mov ah, al F000:3E27 mov al, 0C2h ; 'T' F000:3E29 out 22h, al F000:3E2B mov al, ah F000:3E2D out 23h, al F000:3E2F mov al, 0C3h ; '+' F000:3E31 out 22h, al F000:3E33 in al, 23h F000:3E35 mov ah, al F000:3E37 mov al, 0C3h ; '+' F000:3E39 out 22h, al F000:3E3B mov al, ah F000:3E3D and al, 0EFh F000:3E3F out 23h, al F000:3E41 retn F000:3E41 SET_CCR2 endp F000:3E41 F000:3E41 ; --------------------------------------------------------------------------- F000:3E42 db 0 F000:3E43 db 0 F000:3E44 db 0 F000:3E45 db 0 F000:3E46 db 0 F000:3E47 db 0 F000:3E48 db 0 F000:3E49 db 0 F000:3E4A db 0 F000:3E4B db 0 F000:3E4C db 0 F000:3E4D db 0 F000:3E4E db 0 F000:3E4F db 0 F000:3E50 db 2 F000:3E51 db 4 F000:3E52 db 0 F000:3E53 byte_F3E53 db 0 ; DATA XREF: F000:4065r F000:3E54 db 0 F000:3E55 db 0 F000:3E56 db 0 F000:3E57 db 0 F000:3E58 db 0 F000:3E59 db 0 F000:3E5A db 0 F000:3E5B db 0 F000:3E5C db 0 F000:3E5D db 0 F000:3E5E db 0 F000:3E5F byte_F3E5F db 0 ; DATA XREF: F000:4070r F000:3E60 db 0 F000:3E61 db 0 F000:3E62 db 0 F000:3E63 db 11h F000:3E64 db 0 F000:3E65 db 0 F000:3E66 db 0 F000:3E67 db 20h F000:3E68 db 32h ; 2 F000:3E69 db 73h ; s F000:3E6A db 0Ah F000:3E6B db 0 F000:3E6C db 18h F000:3E6D db 4 F000:3E6E db 0 F000:3E6F db 64h ; d F000:3E70 db 0 F000:3E71 db 11h F000:3E72 db 0 F000:3E73 db 0 F000:3E74 db 0 F000:3E75 db 20h F000:3E76 db 32h ; 2 F000:3E77 db 73h ; s F000:3E78 db 0Ah F000:3E79 db 0 F000:3E7A db 18h F000:3E7B db 4 F000:3E7C db 0 F000:3E7D db 78h ; x F000:3E7E db 0 F000:3E7F db 11h F000:3E80 db 0 F000:3E81 db 0 F000:3E82 db 0 F000:3E83 db 20h F000:3E84 db 32h ; 2 F000:3E85 db 73h ; s F000:3E86 db 0Ah F000:3E87 db 0 F000:3E88 db 1Dh F000:3E89 db 4 F000:3E8A db 0 F000:3E8B db 85h ; ù F000:3E8C db 0 F000:3E8D db 11h F000:3E8E db 0 F000:3E8F db 0 F000:3E90 db 0 F000:3E91 db 20h F000:3E92 db 32h ; 2 F000:3E93 db 73h ; s F000:3E94 db 0Ah F000:3E95 db 0 F000:3E96 db 20h F000:3E97 db 4 F000:3E98 db 0 F000:3E99 db 96h ; ¾ F000:3E9A db 0 F000:3E9B db 19h F000:3E9C db 0 F000:3E9D db 0 F000:3E9E db 0 F000:3E9F db 20h F000:3EA0 db 32h ; 2 F000:3EA1 db 73h ; s F000:3EA2 db 0Ah F000:3EA3 db 0 F000:3EA4 db 24h ; $ F000:3EA5 db 0Ch F000:3EA6 db 0 F000:3EA7 db 0A6h ; Ž F000:3EA8 db 0 F000:3EA9 db 19h F000:3EAA db 0 F000:3EAB db 0 F000:3EAC db 0 F000:3EAD db 15h F000:3EAE db 21h ; ! F000:3EAF db 42h ; B F000:3EB0 db 6 F000:3EB1 db 0Ch F000:3EB2 db 27h ; ' F000:3EB3 db 8Ah ; Õ F000:3EB4 db 0B6h ;  F000:3EB5 db 0B4h ; + F000:3EB6 db 0 F000:3EB7 db 19h F000:3EB8 db 0 F000:3EB9 db 0 F000:3EBA db 0 F000:3EBB db 15h F000:3EBC db 21h ; ! F000:3EBD db 42h ; B F000:3EBE db 5 F000:3EBF db 0Ch F000:3EC0 db 2Bh ; + F000:3EC1 db 8Eh ; Ä F000:3EC2 db 0B6h ;  F000:3EC3 db 0BCh ; - F000:3EC4 db 0 F000:3EC5 db 19h F000:3EC6 db 0 F000:3EC7 db 0 F000:3EC8 db 0 F000:3EC9 db 10h F000:3ECA db 21h ; ! F000:3ECB db 42h ; B F000:3ECC db 6 F000:3ECD db 0 F000:3ECE db 2Eh ; . F000:3ECF db 0Ch F000:3ED0 db 0 F000:3ED1 db 0C8h ; L F000:3ED2 db 0 F000:3ED3 db 21h ; ! F000:3ED4 db 0 F000:3ED5 db 0 F000:3ED6 db 0 F000:3ED7 db 15h F000:3ED8 db 21h ; ! F000:3ED9 db 42h ; B F000:3EDA db 6 F000:3EDB db 0Ch F000:3EDC db 31h ; 1 F000:3EDD db 8Eh ; Ä F000:3EDE db 0B6h ;  F000:3EDF db 0E9h ; Ú F000:3EE0 db 0 F000:3EE1 db 20h F000:3EE2 db 0 F000:3EE3 db 0 F000:3EE4 db 0 F000:3EE5 db 15h F000:3EE6 db 21h ; ! F000:3EE7 db 42h ; B F000:3EE8 db 6 F000:3EE9 db 0Ch F000:3EEA db 39h ; 9 F000:3EEB db 92h ; å F000:3EEC db 0B6h ;  F000:3EED db 0F0h ; ­ F000:3EEE db 0 F000:3EEF db 20h F000:3EF0 db 0 F000:3EF1 db 0 F000:3EF2 db 0 F000:3EF3 db 15h F000:3EF4 db 31h ; 1 F000:3EF5 db 53h ; S F000:3EF6 db 7 F000:3EF7 db 0 F000:3EF8 db 3Ah ; : F000:3EF9 db 14h F000:3EFA db 0 F000:3EFB db 0Ah F000:3EFC db 1 F000:3EFD db 20h F000:3EFE db 0 F000:3EFF db 0 F000:3F00 db 0 F000:3F01 db 15h F000:3F02 db 21h ; ! F000:3F03 db 42h ; B F000:3F04 db 6 F000:3F05 db 0Ch F000:3F06 db 3Fh ; ? F000:3F07 db 96h ; ¾ F000:3F08 db 0B6h ;  F000:3F09 db 2Ch ; , F000:3F0A db 1 F000:3F0B db 20h F000:3F0C db 0 F000:3F0D db 0 F000:3F0E db 0 F000:3F0F db 15h F000:3F10 db 21h ; ! F000:3F11 db 42h ; B F000:3F12 db 6 F000:3F13 db 0Ch F000:3F14 db 47h ; G F000:3F15 db 9Ah ; Ü F000:3F16 db 0B6h ;  F000:3F17 db 0 F000:3F18 db 0 F000:3F19 db 11h F000:3F1A db 0 F000:3F1B db 0 F000:3F1C db 0 F000:3F1D db 20h F000:3F1E db 32h ; 2 F000:3F1F db 73h ; s F000:3F20 db 0Ah F000:3F21 db 0 F000:3F22 db 18h F000:3F23 db 4 F000:3F24 db 0 F000:3F25 db 0A6h ; Ž F000:3F26 db 0 F000:3F27 db 19h F000:3F28 db 0 F000:3F29 db 0 F000:3F2A db 0 F000:3F2B db 15h F000:3F2C db 21h ; ! F000:3F2D db 42h ; B F000:3F2E db 6 F000:3F2F db 0Ch F000:3F30 db 27h ; ' F000:3F31 db 8Ah ; Õ F000:3F32 db 0B6h ;  F000:3F33 db 0B4h ; + F000:3F34 db 0 F000:3F35 db 19h F000:3F36 db 0 F000:3F37 db 0 F000:3F38 db 0 F000:3F39 db 15h F000:3F3A db 31h ; 1 F000:3F3B db 53h ; S F000:3F3C db 7 F000:3F3D db 0Ch F000:3F3E db 2Bh ; + F000:3F3F db 8Ah ; Õ F000:3F40 db 0B6h ;  F000:3F41 db 0C8h ; L F000:3F42 db 0 F000:3F43 db 21h ; ! F000:3F44 db 0 F000:3F45 db 0 F000:3F46 db 0 F000:3F47 db 15h F000:3F48 db 21h ; ! F000:3F49 db 42h ; B F000:3F4A db 6 F000:3F4B db 0Ch F000:3F4C db 31h ; 1 F000:3F4D db 8Eh ; Ä F000:3F4E db 0B6h ;  F000:3F4F db 0E9h ; Ú F000:3F50 db 0 F000:3F51 db 20h F000:3F52 db 0 F000:3F53 db 0 F000:3F54 db 0 F000:3F55 db 15h F000:3F56 db 31h ; 1 F000:3F57 db 53h ; S F000:3F58 db 7 F000:3F59 db 0Ch F000:3F5A db 39h ; 9 F000:3F5B db 8Eh ; Ä F000:3F5C db 0B6h ;  F000:3F5D db 0Ah F000:3F5E db 1 F000:3F5F db 20h F000:3F60 db 0 F000:3F61 db 0 F000:3F62 db 0 F000:3F63 db 15h F000:3F64 db 31h ; 1 F000:3F65 db 53h ; S F000:3F66 db 7 F000:3F67 db 0Ch F000:3F68 db 3Fh ; ? F000:3F69 db 92h ; å F000:3F6A db 0B6h ;  F000:3F6B db 2Ch ; , F000:3F6C db 1 F000:3F6D db 20h F000:3F6E db 0 F000:3F6F db 0 F000:3F70 db 0 F000:3F71 db 15h F000:3F72 db 31h ; 1 F000:3F73 db 53h ; S F000:3F74 db 7 F000:3F75 db 0Ch F000:3F76 db 47h ; G F000:3F77 db 96h ; ¾ F000:3F78 db 0B6h ;  F000:3F79 db 53h ; S F000:3F7A db 0B8h ; ª F000:3F7B db 0C8h ; L F000:3F7C db 0 F000:3F7D db 33h ; 3 F000:3F7E db 0DBh ; - F000:3F7F db 75h ; u F000:3F80 db 0 F000:3F81 db 0BEh ; ¿ F000:3F82 db 61h ; a F000:3F83 db 3Eh ; > F000:3F84 ; --------------------------------------------------------------------------- F000:3F84 F000:3F84 loc_F3F84: ; CODE XREF: F000:3F93j F000:3F84 ; F000:3FAAj F000:3F84 mov dx, cs:[bx+si] F000:3F87 cmp ax, dx F000:3F89 jbe short loc_F3FB2 ; MC_MEM_CNTRL1 F000:3F8B add bx, 0Eh F000:3F8F cmp bx, 0B6h ; 'Â' F000:3F93 jb short loc_F3F84 F000:3F95 sub bx, 0Eh F000:3F99 jmp short loc_F3FB2 ; MC_MEM_CNTRL1 F000:3F9B ; --------------------------------------------------------------------------- F000:3F9B mov dx, cs:[bx+si] F000:3F9E cmp ax, dx F000:3FA0 jbe short loc_F3FB2 ; MC_MEM_CNTRL1 F000:3FA2 add bx, 0Eh F000:3FA6 cmp bx, 62h ; 'b' F000:3FAA jb short loc_F3F84 F000:3FAC sub bx, 0Eh F000:3FB0 jmp short $+2 F000:3FB2 F000:3FB2 loc_F3FB2: ; CODE XREF: F000:3F89j F000:3FB2 ; F000:3F99j ... F000:3FB2 mov eax, 8400h ; MC_MEM_CNTRL1 F000:3FB8 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:3FBB and edx, 0FFFDFFFFh F000:3FC2 call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:3FC5 add bx, 2 F000:3FC8 mov eax, 8404h ; MC_MEM_CNTRL2 F000:3FCE call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:3FD1 and edx, 0FFFFFFC6h F000:3FD5 mov ecx, cs:[bx+si] F000:3FD9 or edx, ecx F000:3FDC call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:3FDF add bx, 4 F000:3FE2 mov eax, 840Ch ; MC_SYNC_TIM1 F000:3FE8 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:3FEB mov ecx, cs:[bx+si] F000:3FEF and edx, 0F000000Fh F000:3FF6 or edx, ecx F000:3FF9 call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:3FFC add bx, 4 F000:3FFF mov eax, 8400h ; MC_MEM_CNTRL1 F000:4005 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:4008 and edx, 0FFFDFFFFh F000:400F call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:4012 or edx, 10h F000:4016 call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:4019 and edx, 0FFE200EFh F000:4020 mov ecx, cs:[bx+si] F000:4024 or edx, ecx F000:4027 call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:402A mov eax, 8400h ; MC_MEM_CNTRL1 F000:4030 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:4033 and edx, 0FFFDFFFFh F000:403A call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:403D or edx, 20000h F000:4044 call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:4047 xor dx, dx F000:4049 xor cx, cx F000:404B push cx F000:404C push dx F000:404D mov eax, 8408h ; MC_BANK_CFG F000:4053 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:4056 mov ax, dx F000:4058 pop dx F000:4059 pop cx F000:405A and ax, 70h F000:405D out 80h, al ; manufacture's diagnostic checkpoint F000:405F cmp ax, 70h ; 'p' F000:4062 or dl, 1 F000:4065 cmp cs:byte_F3E53, 1 F000:406B jnz short loc_F4077 F000:406D or dl, 2 F000:4070 mov cl, cs:byte_F3E5F F000:4075 jmp short $+2 F000:4077 F000:4077 loc_F4077: ; CODE XREF: F000:406Bj F000:4077 push cx F000:4078 push dx F000:4079 mov eax, 8408h ; MC_BANK_CFG F000:407F call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:4082 shr edx, 10h F000:4086 mov ax, dx F000:4088 pop dx F000:4089 pop cx F000:408A and ax, 70h F000:408D cmp ax, 70h ; 'p' F000:4090 jz short loc_F4095 F000:4092 or dl, 4 F000:4095 F000:4095 loc_F4095: ; CODE XREF: F000:4090j F000:4095 and dl, 0Fh F000:4098 cmp dl, 3 F000:409B jz short loc_F40AD F000:409D cmp dl, 0Ch F000:40A0 jnz short loc_F40A6 F000:40A2 mov cl, ch F000:40A4 jz short loc_F40AD F000:40A6 F000:40A6 loc_F40A6: ; CODE XREF: F000:40A0j F000:40A6 cmp dl, 0Fh F000:40A9 jnz short loc_F40D1 ; MC_MEM_CNTRL1 F000:40AB and cl, ch F000:40AD F000:40AD loc_F40AD: ; CODE XREF: F000:409Bj F000:40AD ; F000:40A4j F000:40AD test cl, 2 F000:40B0 jz short loc_F40D1 ; MC_MEM_CNTRL1 F000:40B2 mov ax, 840Ch ; MC_SYNC_TIM1 F000:40B5 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:40B8 and edx, 8FFFFFFFh F000:40BF or edx, 30000000h F000:40C6 call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:40C9 mov si, 40CFh F000:40CC jmp set_dimm_timing F000:40CF ; --------------------------------------------------------------------------- F000:40CF jmp short loc_F40E4 F000:40D1 ; --------------------------------------------------------------------------- F000:40D1 F000:40D1 loc_F40D1: ; CODE XREF: F000:40A9j F000:40D1 ; F000:40B0j F000:40D1 mov eax, 8400h ; MC_MEM_CNTRL1 F000:40D7 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:40DA or edx, 20000h F000:40E1 call WR_GX_BASE_AX ; Write MMIO register: GX_BASE[EAX] = EDX F000:40E4 F000:40E4 loc_F40E4: ; CODE XREF: F000:40CFj F000:40E4 pop bx F000:40E5 jmp bx F000:40E7 ; --------------------------------------------------------------------------- F000:40E7 push bx F000:40E8 call sub_FBBE1 F000:40EB xor dx, dx F000:40ED xor cx, cx F000:40EF push cx F000:40F0 push edx F000:40F2 mov eax, 8408h ; MC_BANK_CFG F000:40F8 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:40FB mov ax, dx F000:40FD pop edx F000:40FF pop cx F000:4100 and ax, 70h F000:4103 cmp ax, 70h ; 'p' F000:4106 jz short loc_F412B F000:4108 or dl, 1 F000:410B push cx F000:410C push dx F000:410D mov bx, 0 F000:4110 mov bl, cs:[bx+3E51h] F000:4115 shl bl, 1 F000:4117 or bl, 0A0h F000:411A mov cx, 7Eh ; '~' F000:411D call sub_FB9F0 F000:4120 pop dx F000:4121 pop cx F000:4122 mov cl, bl F000:4124 jb short loc_F412B F000:4126 or dl, 2 F000:4129 mov cl, bl F000:412B F000:412B loc_F412B: ; CODE XREF: F000:4106j F000:412B ; F000:4124j F000:412B push cx F000:412C push edx F000:412E mov eax, 8408h ; MC_BANK_CFG F000:4134 call RD_GX_BASE_AX1 ; Read MMIO register: EDX = GX_BASE[EAX] F000:4137 shr edx, 10h F000:413B mov ax, dx F000:413D pop edx F000:413F pop cx F000:4140 and ax, 70h F000:4143 cmp ax, 70h ; 'p' F000:4146 jz short loc_F416B F000:4148 or dl, 4 F000:414B push cx F000:414C push dx F000:414D mov bx, 1 F000:4150 mov bl, cs:[bx+3E51h] F000:4155 shl bl, 1 F000:4157 or bl, 0A0h F000:415A mov cx, 7Eh ; '~' F000:415D call sub_FB9F0 F000:4160 pop dx F000:4161 pop cx F000:4162 mov ch, bl F000:4164 jb short loc_F416B F000:4166 or dl, 8 F000:4169 mov ch, bl F000:416B F000:416B loc_F416B: ; CODE XREF: F000:4146j F000:416B ; F000:4164j F000:416B mov al, 0 F000:416D and dl, 0Fh F000:4170 cmp dl, 3 F000:4173 jz short loc_F417F F000:4175 cmp dl, 0Ch F000:4178 jz short loc_F417F F000:417A cmp dl, 0Fh F000:417D jnz short loc_F418D F000:417F F000:417F loc_F417F: ; CODE XREF: F000:4173j F000:417F ; F000:4178j F000:417F add cl, ch F000:4181 cmp cl, 0C8h ; 'L' F000:4184 jz short loc_F418B F000:4186 cmp cl, 64h ; 'd' F000:4189 jnz short loc_F418D F000:418B F000:418B loc_F418B: ; CODE XREF: F000:4184j F000:418B mov al, 64h ; 'd' F000:418D F000:418D loc_F418D: ; CODE XREF: F000:417Dj F000:418D ; F000:4189j F000:418D pop bx F000:418E retn F000:418E ; --------------------------------------------------------------------------- F000:418F db 0 F000:4190 ; --------------------------------------------------------------------------- F000:4190 mov fs, bx F000:4192 assume es:nothing F000:4192 mov edi, 200000h F000:4198 mov eax, 53454C24h F000:419E mov es:[edi], eax F000:41A3 mov edi, 0 F000:41A9 mov eax, es:[edi] F000:41AE cmp eax, 53454C24h F000:41B4 jz short loc_F41E9 F000:41B6 mov eax, 4A454B24h F000:41BC mov es:[edi], eax F000:41C1 mov edi, 200000h F000:41C7 mov eax, es:[edi] F000:41CC cmp eax, 53454C24h F000:41D2 jnz short loc_F41E9 F000:41D4 mov edi, 0 F000:41DA mov eax, es:[edi] F000:41DF cmp eax, 4A454B24h F000:41E5 jnz short loc_F41E9 F000:41E7 jmp short loc_F41EC F000:41E9 ; --------------------------------------------------------------------------- F000:41E9 F000:41E9 loc_F41E9: ; CODE XREF: F000:41B4j F000:41E9 ; F000:41D2j ... F000:41E9 hlt F000:41EA ; --------------------------------------------------------------------------- F000:41EA F000:41EA loc_F41EA: ; CODE XREF: F000:loc_F41EAj F000:41EA jmp short loc_F41EA F000:41EC ; --------------------------------------------------------------------------- F000:41EC F000:41EC loc_F41EC: ; CODE XREF: F000:41E7j F000:41EC mov bx, fs F000:41EE jmp bx F000:41F0 ; --------------------------------------------------------------------------- F000:41F0 push bx F000:41F1 mov ax, 8408h F000:41F4 mov bx, 41FAh F000:41F7 jmp RD_GX_BASE_AX2 F000:41FA ; --------------------------------------------------------------------------- F000:41FA xor eax, eax F000:41FD xor esi, esi F000:4200 mov ebx, edx F000:4203 shr ebx, 4 F000:4207 and ebx, 7 F000:420B cmp bl, 7 F000:420E jz short loc_F4226 F000:4210 mov eax, 400000h F000:4216 mov ecx, edx F000:4219 shr ecx, 8 F000:421D and cl, 7 F000:4220 shl eax, cl F000:4223 mov esi, eax F000:4226 F000:4226 loc_F4226: ; CODE XREF: F000:420Ej F000:4226 mov ebx, edx F000:4229 shr ebx, 14h F000:422D and ebx, 7 F000:4231 cmp bl, 7 F000:4234 jz short loc_F424C F000:4236 mov eax, 400000h F000:423C mov ecx, edx F000:423F shr ecx, 18h F000:4243 and cl, 7 F000:4246 shl eax, cl F000:4249 add esi, eax F000:424C F000:424C loc_F424C: ; CODE XREF: F000:4234j F000:424C push esi F000:424E pop edx F000:4250 shr edx, 14h F000:4254 pop bx F000:4255 retn F000:4255 ; --------------------------------------------------------------------------- F000:4256 db 0Ah dup(0) F000:4260 F000:4260 ; =============== S U B R O U T I N E ======================================= F000:4260 F000:4260 F000:4260 BIOS_INIT2 proc near ; CODE XREF: F000:2E38j F000:4260 mov fs, bx F000:4262 xor ax, ax ; AX = 0, FS = 2E3Bh (return address) F000:4264 mov ds, ax ; DS = 0 F000:4266 assume ds:nothing F000:4266 mov es, ax ; ES = 0 F000:4268 assume es:nothing F000:4268 mov al, 0C3h ; '+' ; CCR3 F000:426A out 22h, al F000:426C in al, 23h ; AL = CCR3 F000:426E and al, 0EFh ; clear MAPEN = 0 F000:4270 mov ah, al F000:4272 mov al, 0C3h ; '+' ; CCR3 F000:4274 out 22h, al F000:4276 mov al, ah F000:4278 or al, 10h ; set MAPEN = 1 F000:427A out 23h, al ; update CCR3 F000:427C mov al, 0B8h ; 'ª' ; GCR F000:427E out 22h, al F000:4280 in al, 23h ; AL = GCR F000:4282 and al, 0 ; AL = 0 F000:4284 mov ah, al F000:4286 mov al, 0B8h ; 'ª' ; GCR F000:4288 out 22h, al F000:428A mov al, ah F000:428C or al, 1 ; GCR = 1 (GX_BASE = 40000000h) F000:428E out 23h, al ; update GCR F000:4290 mov eax, cr0 F000:4293 and eax, 9FFFFFFFh ; paging = 0, align.chk = 0 F000:4299 mov cr0, eax F000:429C mov eax, cr0 F000:429F or eax, 40000000h ; cache disable = 1 F000:42A5 mov cr0, eax F000:42A8 mov cx, 400h ; count = 1024 F000:42AB mov eax, 4400h ; fill cache F000:42B1 mov edx, 1 F000:42B7 F000:42B7 fill_cache1: ; CODE XREF: BIOS_INIT2:loc_F42D5j F000:42B7 mov tr4, eax F000:42BA mov tr5, edx F000:42BD add edx, 4 F000:42C1 add eax, 1000h F000:42C7 cmp eax, 8000h F000:42CD jb short loc_F42D5 ; cache fill loop F000:42CF sub eax, 4000h F000:42D5 F000:42D5 loc_F42D5: ; CODE XREF: BIOS_INIT2+6Dj F000:42D5 loop fill_cache1 ; cache fill loop F000:42D7 mov si, 0F000h ; SI = F000h F000:42DA mov ds, si ; DS = F000h F000:42DC assume ds:BIOS_F000 F000:42DC mov si, 0 ; SI = 0 F000:42DF mov di, 0 ; DI = 0 F000:42E2 mov es, di ; ES = 0 F000:42E4 mov di, 5000h ; DI = 5000h F000:42E7 mov cx, 100h ; count = 256 F000:42EA rep movsd ; copy 256 DWords from DS:SI -> ES:DI (initial IVT) F000:42ED mov cx, 40h ; '@' ; count = 64 F000:42F0 mov eax, 0F0400h F000:42F6 mov edx, 1 F000:42FC F000:42FC fill_cache2: ; CODE XREF: BIOS_INIT2+A6j F000:42FC mov tr4, eax F000:42FF mov tr5, edx F000:4302 add edx, 10h F000:4306 loop fill_cache2 ; cache fill loop F000:4308 mov cx, 0C0h ; 'L' ; count = 192 F000:430B mov eax, 0FFE00400h F000:4311 mov edx, 401h F000:4317 F000:4317 fill_cache3: ; CODE XREF: BIOS_INIT2+C1j F000:4317 mov tr4, eax F000:431A mov tr5, edx F000:431D add edx, 10h F000:4321 loop fill_cache3 ; cache fill loop F000:4323 mov ax, ds ; AX = F000h F000:4325 mov dx, es ; DX = 0 F000:4327 mov es, ax ; ES = F000h F000:4329 assume es:BIOS_F000 F000:4329 mov ds, dx ; DS = 0 F000:432B assume ds:nothing F000:432B xchg si, di ; SI = 5000h, DI = 0 F000:432D sub si, 400h ; SI = 4C00h F000:4331 sub di, 400h ; DI = FC00h F000:4335 mov cx, 100h ; count = 256 F000:4338 rep movsd ; copy 256 DWords from DS:SI -> ES:DI F000:433B mov es:dword_F0004, 0F0004464h ; replaced by F000:4464h F000:4345 xor ax, ax ; AX = 0 F000:4347 mov ds, ax ; DS = 0 F000:4349 mov es, ax ; ES = 0 F000:434B assume es:nothing F000:434B mov ax, 0F000h ; AX = F000h F000:434E mov ss, ax ; SS = F000h F000:4350 assume ss:BIOS_F000 F000:4350 mov esp, 400h ; ESP = 400h F000:4356 push fs ; ESP = 3FEh, FS = 2E3Bh (return address) F000:4358 push eax ; ESP = 3FAh, EAX = 0000F000h F000:435A push ax ; ESP = 3F8h. AX = F000h F000:435B sidt fword ptr [esp] ; store IDTR F000:4360 mov eax, 0F0000h ; EAX = 000F0000h F000:4366 mov [esp+2], eax ; ESP+2 = 3FAh F000:436C lidt fword ptr [esp] ; load IDTR F000:4371 pop ax F000:4372 pop eax ; ESP = 3FEh F000:4374 mov al, 0B8h ; 'ª' ; GCR F000:4376 out 22h, al F000:4378 in al, 23h ; AL = GCR F000:437A and al, 0 ; AL = 0 F000:437C mov ah, al F000:437E mov al, 0B8h ; 'ª' ; GCR F000:4380 out 22h, al F000:4382 mov al, ah F000:4384 or al, 0Dh ; GCR = 0Dh (GX_BASE = 40000000h, 4kB scrpad) F000:4386 out 23h, al ; update GCR F000:4388 mov al, 0C3h ; '+' ; CCR3 F000:438A out 22h, al F000:438C in al, 23h ; AL = CCR3 F000:438E and al, 10h F000:4390 mov ah, al F000:4392 mov al, 0C3h ; '+' ; CCR3 F000:4394 out 22h, al F000:4396 mov al, ah F000:4398 or al, 0 F000:439A out 23h, al ; update CCR3 F000:439C retn ; continue at CS:[2E3Bh] F000:439C BIOS_INIT2 endp F000:439C F000:439D ; --------------------------------------------------------------------------- F000:439D mov edi, 4000h F000:43A3 shr ecx, 2 F000:43A7 rep stos dword ptr es:[edi] F000:43AB mov edi, 4000h F000:43B1 xor ecx, ecx F000:43B4 F000:43B4 loc_F43B4: ; CODE XREF: F000:43CAj F000:43B4 cmp es:[edi], eax F000:43B9 jnz short loc_F43CC F000:43BB add ecx, 4 F000:43BF add edi, 4 F000:43C3 cmp edi, 8000h F000:43CA jb short loc_F43B4 F000:43CC F000:43CC loc_F43CC: ; CODE XREF: F000:43B9j F000:43CC jmp bx F000:43CE ; --------------------------------------------------------------------------- F000:43CE mov eax, cr0 F000:43D1 or eax, 40000000h F000:43D7 mov cr0, eax F000:43DA mov cx, 100h F000:43DD mov eax, 0FFD00400h F000:43E3 mov edx, 1 F000:43E9 F000:43E9 loc_F43E9: ; CODE XREF: F000:4411j F000:43E9 add edx, 4 F000:43ED mov tr4, eax F000:43F0 mov tr5, edx F000:43F3 add edx, 4 F000:43F7 mov tr4, eax F000:43FA mov tr5, edx F000:43FD add edx, 4 F000:4401 mov tr4, eax F000:4404 mov tr5, edx F000:4407 add edx, 4 F000:440B add eax, 1000h F000:4411 loop loc_F43E9 F000:4413 retn F000:4414 F000:4414 ; =============== S U B R O U T I N E ======================================= F000:4414 F000:4414 F000:4414 SET_IDT proc near ; CODE XREF: F000:2E98p F000:4414 mov esi, 0F0000h F000:441A mov edi, 0 F000:4420 mov ecx, 100h F000:4426 rep movs dword ptr es:[edi], dword ptr [esi] F000:442A xor eax, eax F000:442D push eax F000:442F mov ax, 3FFh F000:4432 push ax F000:4433 lidt fword ptr [esp] ; load IDRT from ESS:ESP F000:4438 pop ax F000:4439 pop eax F000:443B mov eax, cr0 F000:443E and eax, 9FFFFFFFh ; paging = 0, align.chk = 0 F000:4444 mov cr0, eax F000:4447 mov si, 0C000h F000:444A mov cx, 1000h F000:444D rep lods dword ptr cs:[si] F000:4451 mov bx, 4457h F000:4454 jmp SET_FB_SIZE ; 53000003h F000:4454 SET_IDT endp F000:4454 F000:4457 ; --------------------------------------------------------------------------- F000:4457 mov eax, cr0 F000:445A and eax, 9FFFFFFFh F000:4460 mov cr0, eax F000:4463 retn F000:4464 ; --------------------------------------------------------------------------- F000:4464 iret F000:4464 ; --------------------------------------------------------------------------- F000:4465 db 0Bh dup(0) F000:4470 F000:4470 ; =============== S U B R O U T I N E ======================================= F000:4470 F000:4470 F000:4470 sub_F4470 proc near ; CODE XREF: F000:loc_F44C5p F000:4470 mov ecx, 3E8h F000:4476 F000:4476 loc_F4476: ; CODE XREF: sub_F4470+8j F000:4476 out 0EBh, al F000:4478 loopd loc_F4476 F000:447B retn F000:447B sub_F4470 endp F000:447B F000:447C F000:447C ; =============== S U B R O U T I N E ======================================= F000:447C F000:447C F000:447C PCI_WRITE_AX_ECX proc near ; CODE XREF: SET_VGA1+1Fp F000:447C ; SET_VGA1+2Bp F000:447C movzx eax, ax F000:4480 mov dx, 0CF8h ; PCI address port F000:4483 or eax, 80000000h ; EAX = 8000xxxxh F000:4489 out dx, eax ; write PCI address F000:448B mov dx, 0CFCh ; PCI data port F000:448E mov eax, ecx F000:4491 out dx, eax ; write PCI 32-bit register F000:4493 retn F000:4493 PCI_WRITE_AX_ECX endp F000:4493 F000:4494 ; --------------------------------------------------------------------------- F000:4494 F000:4494 loc_F4494: ; CODE XREF: F000:44C3j F000:4494 ; F000:44CBj F000:4494 movzx esi, word ptr cs:[bx] F000:4499 cmp si, 0FFFFh F000:449C jz short locret_F44CD F000:449E cmp si, 0FFFEh F000:44A1 jz short loc_F44C5 F000:44A3 add esi, 40000000h F000:44AA test si, 8000h F000:44AE jnz short loc_F44B7 F000:44B0 add esi, 10000h F000:44B7 F000:44B7 loc_F44B7: ; CODE XREF: F000:44AEj F000:44B7 mov eax, cs:[bx+2] F000:44BC mov [esi], eax F000:44C0 add bx, 6 F000:44C3 jmp short loc_F4494 F000:44C5 ; --------------------------------------------------------------------------- F000:44C5 F000:44C5 loc_F44C5: ; CODE XREF: F000:44A1j F000:44C5 call sub_F4470 F000:44C8 add bx, 6 F000:44CB jmp short loc_F4494 F000:44CD ; --------------------------------------------------------------------------- F000:44CD F000:44CD locret_F44CD: ; CODE XREF: F000:449Cj F000:44CD retn F000:44CD ; --------------------------------------------------------------------------- F000:44CE db 8 F000:44CF db 0 F000:44D0 db 90h ; É F000:44D1 db 2 F000:44D2 db 30h ; 0 F000:44D3 db 82h ; é F000:44D4 db 0Ch F000:44D5 db 0 F000:44D6 db 1Ch F000:44D7 db 1 F000:44D8 db 2Ah ; * F000:44D9 db 2 F000:44DA db 10h F000:44DB db 0 F000:44DC db 1Ch F000:44DD db 1 F000:44DE db 2Ah ; * F000:44DF db 2 F000:44E0 db 14h F000:44E1 db 0 F000:44E2 db 80h ; Ç F000:44E3 db 15h F000:44E4 db 15h F000:44E5 db 18h F000:44E6 db 18h F000:44E7 db 0 F000:44E8 db 23h ; # F000:44E9 db 0 F000:44EA db 1 F000:44EB db 0 F000:44EC db 28h ; ( F000:44ED db 0 F000:44EE db 0 F000:44EF db 1 F000:44F0 db 0 F000:44F1 db 0 F000:44F2 db 4 F000:44F3 db 0 F000:44F4 db 2Fh ; / F000:44F5 db 3 F000:44F6 db 21h ; ! F000:44F7 db 80h ; Ç F000:44F8 db 24h ; $ F000:44F9 db 0 F000:44FA db 0 F000:44FB db 0 F000:44FC db 0 F000:44FD db 80h ; Ç F000:44FE db 24h ; $ F000:44FF db 0 F000:4500 db 0 F000:4501 db 1 F000:4502 db 0 F000:4503 db 80h ; Ç F000:4504 db 0FEh ; ¦ F000:4505 db 0FFh F000:4506 db 0 F000:4507 db 0 F000:4508 db 0 F000:4509 db 0 F000:450A db 24h ; $ F000:450B db 0 F000:450C db 1 F000:450D db 88h ; ³ F000:450E db 8 F000:450F db 23h ; # F000:4510 db 0FEh ; ¦ F000:4511 db 0FFh F000:4512 db 0 F000:4513 db 0 F000:4514 db 0 F000:4515 db 0 F000:4516 db 0 F000:4517 db 83h ; â F000:4518 db 58h ; X F000:4519 db 47h ; G F000:451A db 0 F000:451B db 0 F000:451C db 8 F000:451D db 83h ; â F000:451E db 40h ; @ F000:451F db 0 F000:4520 db 0 F000:4521 db 80h ; Ç F000:4522 db 4 F000:4523 db 83h ; â F000:4524 db 40h ; @ F000:4525 db 0 F000:4526 db 0 F000:4527 db 0 F000:4528 db 0FEh ; ¦ F000:4529 db 0FFh F000:452A db 0 F000:452B db 0 F000:452C db 0 F000:452D db 0 F000:452E db 4 F000:452F db 0 F000:4530 db 2Fh ; / F000:4531 db 0 F000:4532 db 21h ; ! F000:4533 db 80h ; Ç F000:4534 db 30h ; 0 F000:4535 db 83h ; â F000:4536 db 7Fh ;  F000:4537 db 0AAh ; ¬ F000:4538 db 1Fh F000:4539 db 3 F000:453A db 34h ; 4 F000:453B db 83h ; â F000:453C db 87h ; ç F000:453D db 0AAh ; ¬ F000:453E db 17h F000:453F db 3 F000:4540 db 38h ; 8 F000:4541 db 83h ; â F000:4542 db 8Fh ; Æ F000:4543 db 0AAh ; ¬ F000:4544 db 0E7h ; š F000:4545 db 2 F000:4546 db 3Ch ; < F000:4547 db 83h ; â F000:4548 db 8Fh ; Æ F000:4549 db 0AAh ; ¬ F000:454A db 0E7h ; š F000:454B db 2 F000:454C db 40h ; @ F000:454D db 83h ; â F000:454E db 0DFh ; - F000:454F db 0A9h ; ê F000:4550 db 0Ch F000:4551 db 2 F000:4552 db 44h ; D F000:4553 db 83h ; â F000:4554 db 0E7h ; š F000:4555 db 0A9h ; ê F000:4556 db 4 F000:4557 db 2 F000:4558 db 48h ; H F000:4559 db 83h ; â F000:455A db 0E9h ; Ú F000:455B db 0A9h ; ê F000:455C db 0EBh ; Û F000:455D db 1 F000:455E db 4Ch ; L F000:455F db 83h ; â F000:4560 db 0E9h ; Ú F000:4561 db 0A9h ; ê F000:4562 db 0EBh ; Û F000:4563 db 1 F000:4564 db 10h F000:4565 db 83h ; â F000:4566 db 0 F000:4567 db 0 F000:4568 db 0 F000:4569 db 0 F000:456A db 14h F000:456B db 83h ; â F000:456C db 0 F000:456D db 0C4h ; ¦ F000:456E db 4 F000:456F db 0 F000:4570 db 18h F000:4571 db 83h ; â F000:4572 db 0 F000:4573 db 0FEh ; ¦ F000:4574 db 22h ; " F000:4575 db 0 F000:4576 db 24h ; $ F000:4577 db 83h ; â F000:4578 db 0A0h ; á F000:4579 db 40h ; @ F000:457A db 4 F000:457B db 0 F000:457C db 28h ; ( F000:457D db 83h ; â F000:457E db 52h ; R F000:457F db 82h ; é F000:4580 db 0 F000:4581 db 0 F000:4582 db 0Ch F000:4583 db 83h ; â F000:4584 db 5 F000:4585 db 0 F000:4586 db 0 F000:4587 db 80h ; Ç F000:4588 db 8 F000:4589 db 83h ; â F000:458A db 67h ; g F000:458B db 0 F000:458C db 0 F000:458D db 80h ; Ç F000:458E db 0FFh F000:458F db 0FFh F000:4590 db 0 F000:4591 db 0 F000:4592 db 0 F000:4593 db 0 F000:4594 F000:4594 ; =============== S U B R O U T I N E ======================================= F000:4594 F000:4594 F000:4594 SET_VGA1 proc near ; CODE XREF: F000:2E83p F000:4594 mov eax, 40008000h F000:459A or dword ptr [eax], 7F0000h ; BC_DRAM_TOP | 7F0000h F000:45A2 call PCI_BRIDGE_TB90h_13 F000:45A5 jz short skip F000:45A7 mov ax, 9410h ; PCI bus 0, dev 12h, func 4, reg 10h (VGA controller) F000:45AA mov ecx, 40010000h ; VGA Base Address Register = 40010000h F000:45B0 mov esi, ecx ; ESI = 40010000h F000:45B3 call PCI_WRITE_AX_ECX ; write 40010000h to reg. 10h F000:45B6 mov ax, 9404h ; PCI bus 0, dev 12h, func 4, reg 4 (VGA controller) F000:45B9 mov ecx, 7 F000:45BF call PCI_WRITE_AX_ECX ; write 7 to reg. 4 F000:45C2 F000:45C2 skip: ; CODE XREF: SET_VGA1+11j F000:45C2 retn F000:45C2 SET_VGA1 endp F000:45C2 F000:45C2 ; --------------------------------------------------------------------------- F000:45C3 db 0Dh dup(0) F000:45D0 F000:45D0 ; =============== S U B R O U T I N E ======================================= F000:45D0 F000:45D0 F000:45D0 sub_F45D0 proc near F000:45D0 call sub_FBBF0 F000:45D3 call sub_FBC26 F000:45D6 jnb short loc_F45ED F000:45D8 call sub_FBBF0 F000:45DB call sub_FBBF8 F000:45DE jnb short loc_F45ED F000:45E0 call sub_FBBF4 F000:45E3 call sub_FBBF8 F000:45E6 jnb short loc_F45ED F000:45E8 call sub_FBC49 F000:45EB jb short locret_F45F2 F000:45ED F000:45ED loc_F45ED: ; CODE XREF: sub_F45D0+6j F000:45ED ; sub_F45D0+Ej ... F000:45ED or byte ptr ds:14F1h, 1 F000:45F2 F000:45F2 locret_F45F2: ; CODE XREF: sub_F45D0+1Bj F000:45F2 retn F000:45F2 sub_F45D0 endp F000:45F2 F000:45F2 ; --------------------------------------------------------------------------- F000:45F3 db 0Dh dup(0) F000:4600 F000:4600 ; =============== S U B R O U T I N E ======================================= F000:4600 F000:4600 F000:4600 SET_STACK proc near ; CODE XREF: F000:2F37p F000:4600 pop cx F000:4601 mov ax, 9000h F000:4604 mov ss, ax ; SS = 9000h F000:4606 assume ss:nothing F000:4606 xor sp, sp ; SP = 0 F000:4608 push cx F000:4609 retn F000:4609 SET_STACK endp F000:4609 F000:460A ; --------------------------------------------------------------------------- F000:460A F000:460A SET_PMODE: ; CODE XREF: F000:2F3Ap F000:460A pop bx F000:460B cli ; disable interrupts F000:460C mov eax, cr0 F000:460F or eax, 1 ; enable protected mode F000:4613 mov cr0, eax F000:4616 call SET_GDT2 ; set GDT F000:4619 call SET_IDT1 ; set IDT F000:461C jmp far ptr 8:4621h ; jump somewhere out of ROM F000:4621 ; --------------------------------------------------------------------------- F000:4621 mov ax, 18h ; AX = selector 18h - GDT[3], RPL=0 F000:4624 mov ds, ax ; DS = 18h F000:4626 assume ds:nothing F000:4626 mov es, ax ; ES = 18h F000:4628 assume es:nothing F000:4628 mov fs, ax ; FS = 18h F000:462A assume fs:nothing F000:462A mov ax, 10h ; AX = selector 10h - GDT[2], RPL=0 F000:462D mov gs, ax ; GS = 10h F000:462F assume gs:nothing F000:462F mov ax, 70h ; 'p' ; AX = selector 70h - GDT[14], RPL=0 F000:4632 mov ss, ax ; SS = 70h F000:4634 assume ss:nothing F000:4634 push bx F000:4635 sti F000:4636 retn F000:4637 ; --------------------------------------------------------------------------- F000:4637 pop cx F000:4638 cli F000:4639 mov eax, cr0 F000:463C and eax, 0FFFFFFFEh F000:4640 mov cr0, eax F000:4643 jmp far ptr loc_F4648 F000:4648 F000:4648 loc_F4648: F000:4648 mov ax, 9000h F000:464B mov ss, ax F000:464D assume ss:nothing F000:464D lidt fword ptr cs:IDTR2 ; IDT size F000:4653 push cx F000:4654 mov bx, 465Ah F000:4657 jmp GDT_INIT2 F000:4657 ; --------------------------------------------------------------------------- F000:465A db 0C3h ; + F000:465B byte_F465B db 1 ; DATA XREF: sub_F5381-515r F000:465C ; --------------------------------------------------------------------------- F000:465C mov esi, 0FFFF0000h F000:4662 mov edi, 0F0000h F000:4668 mov ecx, 4000h F000:466E cld F000:466F rep movs dword ptr es:[edi], dword ptr es:[esi] F000:4674 mov edi, 0F0000h F000:467A mov byte ptr es:[edi+465Bh], 0 F000:4683 retn F000:4684 F000:4684 ; =============== S U B R O U T I N E ======================================= F000:4684 F000:4684 F000:4684 SET_BC_XMAP_2 proc near ; CODE XREF: F000:2F2Ep F000:4684 mov eax, 8008h F000:468A mov bx, 4690h ; read BC_XMAP_2 F000:468D jmp RD_GX_BASE_AX2 ; continue at CS:[4690h] F000:468D SET_BC_XMAP_2 endp F000:468D F000:4690 ; --------------------------------------------------------------------------- F000:4690 and dx, 0FFFh F000:4694 mov bx, 469Ah F000:4697 jmp WR_GX_BASE_AX2 ; continue at CS:[469Ah] F000:469A ; --------------------------------------------------------------------------- F000:469A retn F000:469B ; --------------------------------------------------------------------------- F000:469B mov eax, 800Ch F000:46A1 mov bx, 46A7h ; read BC_XMAP_3 F000:46A4 jmp RD_GX_BASE_AX2 F000:46A7 ; --------------------------------------------------------------------------- F000:46A7 and edx, 0FFFFh F000:46AE or edx, 22220000h F000:46B5 mov bx, 46BBh F000:46B8 jmp WR_GX_BASE_AX2 F000:46BB ; --------------------------------------------------------------------------- F000:46BB retn F000:46BC ; --------------------------------------------------------------------------- F000:46BC mov eax, 800Ch F000:46C2 mov bx, 46C8h ; read BC_XMAP_3 F000:46C5 jmp RD_GX_BASE_AX2 F000:46C8 ; --------------------------------------------------------------------------- F000:46C8 and edx, 0FFFFh F000:46CF or edx, 33330000h F000:46D6 mov bx, 46DCh F000:46D9 jmp WR_GX_BASE_AX2 F000:46DC ; --------------------------------------------------------------------------- F000:46DC retn F000:46DD ; --------------------------------------------------------------------------- F000:46DD mov eax, 800Ch ; read BC_XMAP_3 F000:46E3 mov bx, 46E9h F000:46E6 jmp RD_GX_BASE_AX2 F000:46E9 ; --------------------------------------------------------------------------- F000:46E9 and edx, 0FFFFh F000:46F0 or edx, 11110000h F000:46F7 mov bx, 46FDh F000:46FA jmp WR_GX_BASE_AX2 F000:46FD ; --------------------------------------------------------------------------- F000:46FD retn F000:46FE ; --------------------------------------------------------------------------- F000:46FE ror ebx, 10h F000:4702 mov eax, 800Ch ; write BC_XMAP_3 F000:4708 xor edx, edx F000:470B mov bx, 4711h F000:470E jmp WR_GX_BASE_AX2 F000:4711 ; --------------------------------------------------------------------------- F000:4711 mov eax, 8008h ; write BC_XMAP_2 F000:4717 mov bx, 471Dh F000:471A jmp WR_GX_BASE_AX2 F000:471D ; --------------------------------------------------------------------------- F000:471D ror ebx, 10h F000:4721 jmp bx F000:4721 ; --------------------------------------------------------------------------- F000:4723 GDT1_GDTR1 dw 17h ; DATA XREF: GDT_INIT1+24r F000:4723 ; GDT limit = 23 (3 descriptors) F000:4725 dd 0F4723h ; GDT base = F4723h F000:4729 dw 0 F000:472B db 0FFh,0FFh, 0, 0, 0,93h, 0, 0 F000:4733 db 0FFh,0FFh, 0, 0, 0,93h,8Fh, 0 F000:473B F000:473B ; =============== S U B R O U T I N E ======================================= F000:473B F000:473B F000:473B GDT_INIT1 proc near ; CODE XREF: F000:BIOS_INIT3p F000:473B ror ebx, 10h F000:473F mov cx, 10h ; EBX = 2E3B0000h F000:4742 mov bx, 4747h ; EBX = 2E3B4747h F000:4745 jmp short GDT_INIT3 F000:4747 ; --------------------------------------------------------------------------- F000:4747 ror ebx, 10h ; EBX = 47472E3Bh F000:474B retn F000:474C ; --------------------------------------------------------------------------- F000:474C F000:474C GDT_INIT2: ; CODE XREF: F000:4657j F000:474C ; F000:5367j F000:474C ror ebx, 10h F000:4750 mov cx, 8 F000:4753 mov bx, 4758h F000:4756 jmp short GDT_INIT3 F000:4758 ; --------------------------------------------------------------------------- F000:4758 ror ebx, 10h F000:475C jmp bx F000:475E ; --------------------------------------------------------------------------- F000:475E F000:475E GDT_INIT3: ; CODE XREF: GDT_INIT1+Aj F000:475E ; GDT_INIT1+1Bj F000:475E cli F000:475F lgdt fword ptr cs:GDT1_GDTR1 ; load GDTR from physical address/limit F000:4765 mov eax, cr0 F000:4768 or al, 1 F000:476A mov cr0, eax F000:476D mov ds, cx F000:476F assume ds:nothing F000:476F mov es, cx F000:4771 assume es:nothing F000:4771 mov fs, cx F000:4773 assume fs:nothing F000:4773 mov gs, cx F000:4775 assume gs:nothing F000:4775 and al, 0FEh F000:4777 mov cr0, eax F000:477A xor ax, ax F000:477C mov ds, ax F000:477E assume ds:nothing F000:477E mov es, ax F000:4780 assume es:nothing F000:4780 mov fs, ax F000:4782 assume fs:nothing F000:4782 mov gs, ax F000:4784 assume gs:nothing F000:4784 jmp bx ; continue at CS:[4747h] F000:4784 GDT_INIT1 endp F000:4784 F000:4784 ; --------------------------------------------------------------------------- F000:4786 db 0 F000:4787 db 0 F000:4788 db 0 F000:4789 db 0 F000:478A db 0 F000:478B db 0 F000:478C db 0 F000:478D db 0 F000:478E db 0 F000:478F db 0 F000:4790 dw 0C1h F000:4792 db 0C3h ; + F000:4793 db 14h F000:4794 db 20h F000:4795 db 0 F000:4796 db 0B8h ; ª F000:4797 db 0Dh F000:4798 db 0C2h ; T F000:4799 db 42h ; B F000:479A db 0E8h ; À F000:479B db 98h ; œ F000:479C db 0C3h ; + F000:479D db 0E4h ; ñ F000:479E F000:479E ; =============== S U B R O U T I N E ======================================= F000:479E F000:479E F000:479E SET_CCR1 proc near ; CODE XREF: F000:2E86p F000:479E F000:479E ; FUNCTION CHUNK AT F000:C886 SIZE 00000008 BYTES F000:479E F000:479E mov cx, 7 F000:47A1 lea si, ds:4790h ; SI = 00C1h F000:47A5 F000:47A5 loc_F47A5: ; CODE XREF: F000:47B3j F000:47A5 mov al, cs:[si] ; AL = 0 F000:47A8 inc si ; SI = 00C2h F000:47A9 mov dl, cs:[si] ; DL = 0 F000:47AC inc si ; SI = 00C3h F000:47AD mov bx, 47B3h ; continue at CS:[47B3h] F000:47B0 jmp IO_WR_22h_AL_DL F000:47B0 SET_CCR1 endp F000:47B0 F000:47B3 ; --------------------------------------------------------------------------- F000:47B3 loop loc_F47A5 ; AL = 0 F000:47B5 retn F000:47B5 ; --------------------------------------------------------------------------- F000:47B6 db 0 F000:47B7 db 83h ; â F000:47B8 db 0 F000:47B9 db 0 F000:47BA db 58h ; X F000:47BB db 47h ; G F000:47BC db 0 F000:47BD db 0 F000:47BE db 4 F000:47BF db 83h ; â F000:47C0 db 0 F000:47C1 db 0 F000:47C2 db 0 F000:47C3 db 0 F000:47C4 db 0 F000:47C5 db 0 F000:47C6 db 0 F000:47C7 db 83h ; â F000:47C8 db 0 F000:47C9 db 0 F000:47CA db 0 F000:47CB db 0 F000:47CC db 0 F000:47CD db 0 F000:47CE db 0 F000:47CF db 80h ; Ç F000:47D0 db 0 F000:47D1 db 0 F000:47D2 db 0FFh F000:47D3 db 0FFh F000:47D4 db 0FFh F000:47D5 db 3Fh ; ? F000:47D6 db 4 F000:47D7 db 80h ; Ç F000:47D8 db 0 F000:47D9 db 0 F000:47DA db 60h ; ` F000:47DB db 0 F000:47DC db 0 F000:47DD db 0 F000:47DE db 8 F000:47DF db 80h ; Ç F000:47E0 db 0 F000:47E1 db 0 F000:47E2 db 0 F000:47E3 db 0 F000:47E4 db 0 F000:47E5 db 0 F000:47E6 db 0Ch F000:47E7 db 80h ; Ç F000:47E8 db 0 F000:47E9 db 0 F000:47EA db 0 F000:47EB db 0 F000:47EC db 0 F000:47ED db 0 F000:47EE db 8 F000:47EF db 84h ; ä F000:47F0 db 0 F000:47F1 db 0 F000:47F2 db 70h ; p F000:47F3 db 0 F000:47F4 db 70h ; p F000:47F5 db 0 F000:47F6 db 0 F000:47F7 db 84h ; ä F000:47F8 db 0 F000:47F9 db 0 F000:47FA db 8 F000:47FB db 0 F000:47FC db 0 F000:47FD db 0 F000:47FE db 14h F000:47FF db 84h ; ä F000:4800 db 0 F000:4801 db 0 F000:4802 db 0FFh F000:4803 db 7 F000:4804 db 0 F000:4805 db 0 F000:4806 ; --------------------------------------------------------------------------- F000:4806 shl ebx, 10h F000:480A mov cx, 0Ah F000:480D lea si, ds:47B6h F000:4811 F000:4811 loc_F4811: ; CODE XREF: F000:4826j F000:4811 mov eax, cs:[si] F000:4815 add si, 4 F000:4818 mov edx, cs:[si] F000:481C add si, 4 F000:481F mov di, ax F000:4821 mov es:[edi], edx F000:4826 loop loc_F4811 F000:4828 shr ebx, 10h F000:482C jmp bx F000:482C ; --------------------------------------------------------------------------- F000:482E db 2 dup(0) F000:4830 F000:4830 ; =============== S U B R O U T I N E ======================================= F000:4830 F000:4830 F000:4830 SET_INTCTL2 proc near ; CODE XREF: F000:2EE0p F000:4830 mov al, 15h F000:4832 out 20h, al ; Interrupt controller, 8259A. F000:4834 mov al, 8 F000:4836 out 21h, al ; Interrupt controller, 8259A. F000:4838 mov al, 4 F000:483A out 21h, al ; Interrupt controller, 8259A. F000:483C mov al, 1 F000:483E out 21h, al ; Interrupt controller, 8259A. F000:4840 mov al, 0FFh F000:4842 out 21h, al ; Interrupt controller, 8259A. F000:4844 mov al, 15h F000:4846 mov al, 11h F000:4848 out 0A0h, al ; PIC 2 same as 0020 for PIC 1 F000:484A mov al, 70h ; 'p' F000:484C out 0A1h, al ; Interrupt Controller #2, 8259A F000:484E mov al, 2 F000:4850 out 0A1h, al ; Interrupt Controller #2, 8259A F000:4852 mov al, 1 F000:4854 out 0A1h, al ; Interrupt Controller #2, 8259A F000:4856 mov al, 0FFh F000:4858 out 0A1h, al ; Interrupt Controller #2, 8259A F000:485A mov al, 0Eh F000:485C out 0DEh, al F000:485E mov al, 0C0h ; 'L' F000:4860 out 0D6h, al F000:4862 retn F000:4862 SET_INTCTL2 endp F000:4862 F000:4862 ; --------------------------------------------------------------------------- F000:4863 db 0Dh dup(0) F000:4870 ; --------------------------------------------------------------------------- F000:4870 push cx F000:4871 mov cx, 14h F000:4874 F000:4874 loc_F4874: ; CODE XREF: F000:4882j F000:4874 call sub_F48BC F000:4877 in al, 64h ; AT Keyboard controller 8042. F000:4879 test al, 1 F000:487B jz short loc_F488A F000:487D call sub_F48BC F000:4880 in al, 60h ; AT Keyboard controller 8042. F000:4882 loop loc_F4874 F000:4884 pop cx F000:4885 mov al, 35h ; '5' F000:4887 jmp loc_F4ED1 F000:488A ; --------------------------------------------------------------------------- F000:488A F000:488A loc_F488A: ; CODE XREF: F000:487Bj F000:488A call sub_F48BC F000:488D pop cx F000:488E retn F000:488F F000:488F ; =============== S U B R O U T I N E ======================================= F000:488F F000:488F F000:488F sub_F488F proc near ; CODE XREF: sub_F493E+3p F000:488F ; sub_F493E+8p ... F000:488F call sub_F48BC F000:4892 push ax F000:4893 push edx F000:4895 mov edx, fs:1009h F000:489B add edx, 9 F000:489F F000:489F loc_F489F: ; CODE XREF: sub_F488F+1Cj F000:489F cmp edx, fs:1009h F000:48A5 jz short loc_F48B7 F000:48A7 in al, 64h ; AT Keyboard controller 8042. F000:48A9 test al, 2 F000:48AB jnz short loc_F489F F000:48AD pop edx F000:48AF pop ax F000:48B0 out 64h, al ; AT Keyboard controller 8042. F000:48B2 call sub_F48BC F000:48B5 clc F000:48B6 retn F000:48B7 ; --------------------------------------------------------------------------- F000:48B7 F000:48B7 loc_F48B7: ; CODE XREF: sub_F488F+16j F000:48B7 pop edx F000:48B9 pop ax F000:48BA stc F000:48BB retn F000:48BB sub_F488F endp F000:48BB F000:48BC F000:48BC ; =============== S U B R O U T I N E ======================================= F000:48BC F000:48BC F000:48BC sub_F48BC proc near ; CODE XREF: F000:loc_F4874p F000:48BC ; F000:487Dp ... F000:48BC push ax F000:48BD push cx F000:48BE mov cx, 12Ch F000:48C1 F000:48C1 loc_F48C1: ; CODE XREF: sub_F48BC+7j F000:48C1 in al, 64h ; AT Keyboard controller 8042. F000:48C3 loop loc_F48C1 F000:48C5 pop cx F000:48C6 pop ax F000:48C7 retn F000:48C7 sub_F48BC endp F000:48C7 F000:48C8 F000:48C8 ; =============== S U B R O U T I N E ======================================= F000:48C8 F000:48C8 F000:48C8 sub_F48C8 proc near F000:48C8 pushf F000:48C9 pushad F000:48CB xor eax, eax F000:48CE mov ax, [ebp+18h] F000:48D2 shl eax, 4 F000:48D6 movzx edi, di F000:48DA add edi, eax F000:48DD mov ax, 18h F000:48E0 mov es, ax F000:48E2 assume es:nothing F000:48E2 mov ax, 8 F000:48E5 mov ds, ax F000:48E7 assume ds:nothing F000:48E7 mov esi, 0FFF5h F000:48ED mov cx, 8 F000:48F0 rep movs byte ptr es:[edi], byte ptr [esi] F000:48F3 mov al, 20h ; ' ' F000:48F5 stos byte ptr es:[edi] F000:48F7 mov si, 0FFD0h F000:48FA mov cx, 8 F000:48FD rep movs byte ptr es:[edi], byte ptr [esi] F000:4900 popad F000:4902 popf F000:4903 retn F000:4903 sub_F48C8 endp F000:4903 F000:4903 ; --------------------------------------------------------------------------- F000:4904 db 0B8h ; ª F000:4905 db 0B9h ; ¦ F000:4906 db 0BAh ; ¦ F000:4907 db 0BBh ; ¬ F000:4908 db 0 F000:4909 db 0 F000:490A db 0 F000:490B db 0 F000:490C db 0 F000:490D db 0 F000:490E db 0BCh ; - F000:490F db 0BDh ; ¯ F000:4910 F000:4910 ; =============== S U B R O U T I N E ======================================= F000:4910 F000:4910 F000:4910 sub_F4910 proc near F000:4910 push ds F000:4911 pushad F000:4913 mov al, bl F000:4915 mov bx, 4904h F000:4918 xlat byte ptr cs:[bx] F000:491A call sub_F493E F000:491D popad F000:491F pop ds F000:4920 assume ds:nothing F000:4920 retn F000:4920 sub_F4910 endp F000:4920 F000:4920 ; --------------------------------------------------------------------------- F000:4921 db 0B0h ; - F000:4922 db 0B1h ; - F000:4923 db 0B2h ; - F000:4924 db 0B3h ; - F000:4925 db 6 dup(0) F000:492B F000:492B ; =============== S U B R O U T I N E ======================================= F000:492B F000:492B F000:492B sub_F492B proc near F000:492B mov ah, 0B5h ; 'Á' F000:492D push ds F000:492E pushad F000:4930 mov al, bl F000:4932 mov bx, 4921h F000:4935 xlat byte ptr cs:[bx] F000:4937 call sub_F493E F000:493A popad F000:493C pop ds F000:493D retn F000:493D sub_F492B endp F000:493D F000:493E F000:493E ; =============== S U B R O U T I N E ======================================= F000:493E F000:493E F000:493E sub_F493E proc near ; CODE XREF: sub_F4910+Ap F000:493E ; sub_F492B+Cp F000:493E push ax F000:493F mov al, 0A7h ; 'ž' F000:4941 call sub_F488F F000:4944 mov al, 0ADh ; 'º' F000:4946 call sub_F488F F000:4949 call sub_F48BC F000:494C F000:494C loc_F494C: ; CODE XREF: sub_F493E+16j F000:494C in al, 64h ; AT Keyboard controller 8042. F000:494E test al, 1 F000:4950 jz short loc_F4956 F000:4952 int 0FDh F000:4954 jmp short loc_F494C F000:4956 ; --------------------------------------------------------------------------- F000:4956 F000:4956 loc_F4956: ; CODE XREF: sub_F493E+12j F000:4956 pop ax F000:4957 pushf F000:4958 cli F000:4959 call sub_F488F F000:495C F000:495C loc_F495C: ; CODE XREF: sub_F493E+22j F000:495C in al, 64h ; AT Keyboard controller 8042. F000:495E test al, 1 F000:4960 jz short loc_F495C F000:4962 call sub_F4971 F000:4965 mov al, 0AEh ; '«' F000:4967 call sub_F488F F000:496A mov al, 0A8h ; 'Ê' F000:496C call sub_F488F F000:496F popf F000:4970 retn F000:4970 sub_F493E endp F000:4970 F000:4971 F000:4971 ; =============== S U B R O U T I N E ======================================= F000:4971 F000:4971 F000:4971 sub_F4971 proc near ; CODE XREF: sub_F493E+24p F000:4971 call sub_F48BC F000:4974 push edx F000:4976 mov edx, fs:1009h F000:497C add edx, 12h F000:4980 F000:4980 loc_F4980: ; CODE XREF: sub_F4971+1Bj F000:4980 ; sub_F4971+26j F000:4980 cmp edx, fs:1009h F000:4986 jz short loc_F49A2 F000:4988 in al, 64h ; AT Keyboard controller 8042. F000:498A test al, 1 F000:498C jz short loc_F4980 F000:498E test al, 20h F000:4990 jz short loc_F4999 F000:4992 in al, 60h ; AT Keyboard controller 8042. F000:4994 call sub_F48BC F000:4997 jmp short loc_F4980 F000:4999 ; --------------------------------------------------------------------------- F000:4999 F000:4999 loc_F4999: ; CODE XREF: sub_F4971+1Fj F000:4999 in al, 60h ; AT Keyboard controller 8042. F000:499B call sub_F48BC F000:499E pop edx F000:49A0 clc F000:49A1 retn F000:49A2 ; --------------------------------------------------------------------------- F000:49A2 F000:49A2 loc_F49A2: ; CODE XREF: sub_F4971+15j F000:49A2 pop edx F000:49A4 stc F000:49A5 retn F000:49A5 sub_F4971 endp F000:49A5 F000:49A6 ; --------------------------------------------------------------------------- F000:49A6 F000:49A6 loc_F49A6: ; CODE XREF: F000:8578j F000:49A6 ; F000:8765j F000:49A6 jmp loc_F4ED8 F000:49A6 ; --------------------------------------------------------------------------- F000:49A9 db 0EBh ; Û F000:49AA db 0FBh ; û F000:49AB dw 0 F000:49AD db 0 F000:49AE db 0 F000:49AF db 0 F000:49B0 db 0 F000:49B1 db 0 F000:49B2 db 0 F000:49B3 db 0 F000:49B4 db 0 F000:49B5 db 0 F000:49B6 db 0 F000:49B7 db 0A9h ; ê F000:49B8 db 49h ; I F000:49B9 db 0 F000:49BA db 0 F000:49BB db 0C8h ; L F000:49BC db 48h ; H F000:49BD db 2Dh ; - F000:49BE db 49h ; I F000:49BF db 10h F000:49C0 db 49h ; I F000:49C1 db 0 F000:49C2 db 0 F000:49C3 db 0 F000:49C4 db 0 F000:49C5 db 0 F000:49C6 db 0 F000:49C7 db 0 F000:49C8 db 0 F000:49C9 db 0 F000:49CA db 0 F000:49CB db 28h ; ( F000:49CC db 5Bh ; [ F000:49CD db 0 F000:49CE db 0 F000:49CF db 0 F000:49D0 db 0 F000:49D1 db 0 F000:49D2 db 0 F000:49D3 db 0 F000:49D4 db 0 F000:49D5 db 0 F000:49D6 db 0 F000:49D7 db 0 F000:49D8 db 0 F000:49D9 db 0 F000:49DA db 0 F000:49DB db 0 F000:49DC db 0 F000:49DD db 0B3h ; - F000:49DE db 77h ; w F000:49DF db 68h ; h F000:49E0 db 74h ; t F000:49E1 db 9Ah ; Ü F000:49E2 db 60h ; ` F000:49E3 db 94h ; ö F000:49E4 db 73h ; s F000:49E5 db 86h ; æ F000:49E6 db 73h ; s F000:49E7 db 2Ch ; , F000:49E8 db 5Bh ; [ F000:49E9 db 7Bh ; { F000:49EA db 8Bh ; õ F000:49EB db 66h ; f F000:49EC db 0Fh F000:49ED db 0B7h ; Ì F000:49EE db 0C0h ; L F000:49EF db 0FBh ; û F000:49F0 db 67h ; g F000:49F1 db 2Eh ; . F000:49F2 db 0FFh F000:49F3 db 14h F000:49F4 db 45h ; E F000:49F5 db 0ABh ; Ÿ F000:49F6 db 49h ; I F000:49F7 db 0 F000:49F8 db 0 F000:49F9 db 66h ; f F000:49FA db 0CBh ; T F000:49FB db 0 F000:49FC db 0 F000:49FD db 0 F000:49FE db 0 F000:49FF db 0 F000:4A00 F000:4A00 ; =============== S U B R O U T I N E ======================================= F000:4A00 F000:4A00 F000:4A00 SET_CMOS1 proc near ; CODE XREF: F000:2F31p F000:4A00 pushad F000:4A02 call SET_CMOS2 F000:4A05 popad F000:4A07 retn F000:4A07 SET_CMOS1 endp F000:4A07 F000:4A08 F000:4A08 ; =============== S U B R O U T I N E ======================================= F000:4A08 F000:4A08 F000:4A08 CMOS_RTC proc near ; CODE XREF: F000:2EF6p F000:4A08 mov dx, 0CF8h F000:4A0B mov eax, 80009050h ; PCI bus 0, dev 12h, func 0, reg 50h (CS5530 bridge) F000:4A11 out dx, eax ; write PCI address F000:4A13 F000:4A13 loc_F4A13: ; PCI data port F000:4A13 mov dx, 0CFCh F000:4A16 in eax, dx ; read PIT Ctl/ISA CLK div, ISA I/O Rcvr Ctl, ROM/AT Logic Ctl, Alternate CPU Support F000:4A18 or eax, 4000000h ; RTC Enable/RTC Pin Configuration F000:4A1E out dx, eax ; update Alternate CPU Support Register F000:4A20 mov al, 0Ah F000:4A22 out 70h, al ; CMOS Memory: F000:4A22 ; used by real-time clock F000:4A24 mov al, 20h ; ' ' F000:4A26 out 71h, al ; CMOS Memory: F000:4A26 ; F000:4A28 mov al, 0Eh F000:4A2A out 70h, al ; CMOS Memory: F000:4A2A ; POST diagnostics status byte F000:4A2C in al, 71h ; CMOS Memory F000:4A2E mov ah, al F000:4A30 mov al, 0Eh F000:4A32 out 70h, al ; CMOS Memory: F000:4A32 ; POST diagnostics status byte F000:4A34 mov al, 55h ; 'U' F000:4A36 out 71h, al ; CMOS Memory: F000:4A36 ; F000:4A38 mov al, 0Eh F000:4A3A out 70h, al ; CMOS Memory: F000:4A3A ; POST diagnostics status byte F000:4A3C in al, 71h ; CMOS Memory F000:4A3E cmp al, 55h ; 'U' F000:4A40 jnz short loc_F4A67 ; PCI address port F000:4A42 mov al, 0Eh F000:4A44 out 70h, al ; CMOS Memory: F000:4A44 ; POST diagnostics status byte F000:4A46 mov al, 0AAh ; '¬' F000:4A48 out 71h, al ; CMOS Memory: F000:4A48 ; F000:4A4A mov al, 0Eh F000:4A4C out 70h, al ; CMOS Memory: F000:4A4C ; POST diagnostics status byte F000:4A4E in al, 71h ; CMOS Memory F000:4A50 cmp al, 0AAh ; '¬' F000:4A52 jnz short loc_F4A67 ; PCI address port F000:4A54 mov al, 0Eh F000:4A56 out 70h, al ; CMOS Memory: F000:4A56 ; POST diagnostics status byte F000:4A58 xchg ah, al F000:4A5A out 71h, al ; CMOS Memory: F000:4A5A ; used by real-time clock F000:4A5C or dword ptr ds:14EDh, 1000h F000:4A65 jmp short locret_F4A88 F000:4A67 ; --------------------------------------------------------------------------- F000:4A67 F000:4A67 loc_F4A67: ; CODE XREF: CMOS_RTC+38j F000:4A67 ; CMOS_RTC+4Aj F000:4A67 mov dx, 0CF8h ; PCI address port F000:4A6A mov eax, 80009050h ; PCI bus 0, dev 12h, func 0, reg 50h (CS5530 bridge) F000:4A70 out dx, eax ; write PCI address F000:4A72 mov dx, 0CFCh ; PCI data port F000:4A75 in eax, dx ; read PIT Ctl/ISA CLK div, ISA I/O Rcvr Ctl, ROM/AT Logic Ctl, Alternate CPU Support F000:4A77 and eax, 0FBFFFFFFh ; RTC Enable/RTC Pin Configuration F000:4A7D out dx, eax ; update Alternate CPU Support Register F000:4A7F and dword ptr ds:14EDh, 0FFFFCFFFh F000:4A88 F000:4A88 locret_F4A88: ; CODE XREF: CMOS_RTC+5Dj F000:4A88 retn F000:4A88 CMOS_RTC endp F000:4A88 F000:4A89 ; --------------------------------------------------------------------------- F000:4A89 retn F000:4A8A ; --------------------------------------------------------------------------- F000:4A8A F000:4A8A loc_F4A8A: ; CODE XREF: F000:4A94j F000:4A8A in al, 60h ; AT Keyboard controller 8042. F000:4A8C cmp al, ah F000:4A8E jnz short locret_F4AA2 F000:4A90 in al, 20h ; Interrupt controller, 8259A. F000:4A92 test al, 1 F000:4A94 jz short loc_F4A8A F000:4A96 F000:4A96 loc_F4A96: ; CODE XREF: F000:4AA0j F000:4A96 in al, 60h ; AT Keyboard controller 8042. F000:4A98 cmp al, ah F000:4A9A jnz short locret_F4AA2 F000:4A9C in al, 20h ; Interrupt controller, 8259A. F000:4A9E test al, 1 F000:4AA0 jnz short loc_F4A96 F000:4AA2 F000:4AA2 locret_F4AA2: ; CODE XREF: F000:4A8Ej F000:4AA2 ; F000:4A9Aj F000:4AA2 retn F000:4AA3 F000:4AA3 ; =============== S U B R O U T I N E ======================================= F000:4AA3 F000:4AA3 F000:4AA3 CMOS_WRITE_AL_AH proc near ; CODE XREF: F000:4AC0p F000:4AA3 ; F000:4ACBp ... F000:4AA3 push ax F000:4AA4 out 70h, al ; CMOS memory address port (AL) F000:4AA6 jmp short $+2 ; shot delay F000:4AA8 mov al, ah ; AH = CMOS data F000:4AAA out 71h, al ; write AH to CMOS memory F000:4AAC jmp short $+2 ; shot delay F000:4AAE pop ax F000:4AAF retn F000:4AAF CMOS_WRITE_AL_AH endp F000:4AAF F000:4AB0 F000:4AB0 ; =============== S U B R O U T I N E ======================================= F000:4AB0 F000:4AB0 F000:4AB0 CMOS_READ_AL_AH proc near ; CODE XREF: F000:4AC5p F000:4AB0 ; SET_CMOS2+7p ... F000:4AB0 out 70h, al ; CMOS memory address port (AL) F000:4AB2 jmp short $+2 ; shot delay F000:4AB4 xchg al, ah F000:4AB6 in al, 71h ; read CMOS memory to AL F000:4AB8 xchg al, ah ; AH = CMOS meory data F000:4ABA jmp short $+2 ; shot delay F000:4ABC retn F000:4ABC CMOS_READ_AL_AH endp F000:4ABC F000:4ABD ; --------------------------------------------------------------------------- F000:4ABD mov ax, 400Ah F000:4AC0 call CMOS_WRITE_AL_AH F000:4AC3 mov al, 42h ; 'B' F000:4AC5 call CMOS_READ_AL_AH F000:4AC8 mov ax, 41h ; 'A' F000:4ACB call CMOS_WRITE_AL_AH F000:4ACE mov ax, 200Ah F000:4AD1 call CMOS_WRITE_AL_AH F000:4AD4 retn F000:4AD5 F000:4AD5 ; =============== S U B R O U T I N E ======================================= F000:4AD5 F000:4AD5 F000:4AD5 SET_CMOS2 proc near ; CODE XREF: SET_CMOS1+2p F000:4AD5 call sub_F5212 F000:4AD8 jz short loc_F4B04 ; RTC A status = 30h F000:4ADA mov al, 0Eh ; read POST status F000:4ADC call CMOS_READ_AL_AH F000:4ADF and ah, ah F000:4AE1 jnz short loc_F4B04 ; RTC A status = 30h F000:4AE3 mov al, 0Bh ; read RTC B status F000:4AE5 call CMOS_READ_AL_AH F000:4AE8 and ah, 6 F000:4AEB cmp ah, 2 F000:4AEE jnz short loc_F4B04 ; RTC A status = 30h F000:4AF0 mov al, 15h ; read base memory low F000:4AF2 call CMOS_READ_AL_AH F000:4AF5 cmp ah, 80h ; 'Ç' F000:4AF8 jnz short loc_F4B04 ; RTC A status = 30h F000:4AFA mov al, 16h ; read base memory high F000:4AFC call CMOS_READ_AL_AH F000:4AFF cmp ah, 2 F000:4B02 jz short locret_F4B5E F000:4B04 F000:4B04 loc_F4B04: ; CODE XREF: SET_CMOS2+3j F000:4B04 ; SET_CMOS2+Cj ... F000:4B04 mov ax, 300Ah ; RTC A status = 30h F000:4B07 call CMOS_WRITE_AL_AH F000:4B0A mov ax, 20Bh ; RTC B status = 02h F000:4B0D call CMOS_WRITE_AL_AH F000:4B10 mov ax, 0Eh ; POST status = 0 F000:4B13 call CMOS_WRITE_AL_AH F000:4B16 mov ax, 306h ; day of week = 3 F000:4B19 call CMOS_WRITE_AL_AH F000:4B1C mov ax, 107h ; day of month = 1 F000:4B1F call CMOS_WRITE_AL_AH F000:4B22 mov ax, 408h ; month = 4 F000:4B25 call CMOS_WRITE_AL_AH F000:4B28 mov ax, 9 ; year = 0 F000:4B2B call CMOS_WRITE_AL_AH F000:4B2E mov ax, 2048h ; CMOS[48h] = 20h F000:4B31 call CMOS_WRITE_AL_AH F000:4B34 mov ax, 2037h ; CMOS[37h] = 20h F000:4B37 call CMOS_WRITE_AL_AH F000:4B3A mov ax, 100h ; seconds = 1 F000:4B3D call CMOS_WRITE_AL_AH F000:4B40 mov ax, 102h ; minutes = 0 F000:4B43 call CMOS_WRITE_AL_AH F000:4B46 mov ax, 104h ; hours = 0 F000:4B49 call CMOS_WRITE_AL_AH F000:4B4C mov ax, 200Ah F000:4B4C RTC A status = 20h F000:4B4F call CMOS_WRITE_AL_AH F000:4B52 mov ax, 8015h ; base memory low F000:4B55 call CMOS_WRITE_AL_AH F000:4B58 mov ax, 216h ; base memory high (640kB) F000:4B5B call CMOS_WRITE_AL_AH F000:4B5E F000:4B5E locret_F4B5E: ; CODE XREF: SET_CMOS2+2Dj F000:4B5E retn F000:4B5E SET_CMOS2 endp F000:4B5E F000:4B5F ; --------------------------------------------------------------------------- F000:4B5F mov ecx, 20000h F000:4B65 mov al, 55h ; 'U' F000:4B67 out dx, al F000:4B68 F000:4B68 loc_F4B68: ; CODE XREF: F000:4B6Bj F000:4B68 ; F000:4B76j F000:4B68 in al, dx F000:4B69 cmp al, 55h ; 'U' F000:4B6B loopdne loc_F4B68 F000:4B6E jnz short locret_F4B79 F000:4B70 mov al, 0AAh ; '¬' F000:4B72 out dx, al F000:4B73 in al, dx F000:4B74 cmp al, 0AAh ; '¬' F000:4B76 loopdne loc_F4B68 F000:4B79 F000:4B79 locret_F4B79: ; CODE XREF: F000:4B6Ej F000:4B79 retn F000:4B7A F000:4B7A ; =============== S U B R O U T I N E ======================================= F000:4B7A F000:4B7A F000:4B7A sub_F4B7A proc near ; CODE XREF: sub_F4B90+1p F000:4B7A ; sub_F4BB1+1p F000:4B7A push dx F000:4B7B push ax F000:4B7C mov ecx, 10000h F000:4B82 add dx, 5 F000:4B85 F000:4B85 loc_F4B85: ; CODE XREF: sub_F4B7A+10j F000:4B85 in al, dx F000:4B86 xor al, 20h F000:4B88 test al, 20h F000:4B8A loopdne loc_F4B85 F000:4B8D pop ax F000:4B8E pop dx F000:4B8F retn F000:4B8F sub_F4B7A endp F000:4B8F F000:4B90 F000:4B90 ; =============== S U B R O U T I N E ======================================= F000:4B90 F000:4B90 F000:4B90 sub_F4B90 proc near ; CODE XREF: F000:4BC5p F000:4B90 push dx F000:4B91 call sub_F4B7A F000:4B94 out dx, al F000:4B95 pop dx F000:4B96 retn F000:4B96 sub_F4B90 endp F000:4B96 F000:4B97 F000:4B97 ; =============== S U B R O U T I N E ======================================= F000:4B97 F000:4B97 F000:4B97 sub_F4B97 proc near ; CODE XREF: sub_F4BB1+9p F000:4B97 ; F000:loc_F4BCAp F000:4B97 add dx, 5 F000:4B9A mov ecx, 40000h F000:4BA0 F000:4BA0 loc_F4BA0: ; CODE XREF: sub_F4B97+Ej F000:4BA0 in al, dx F000:4BA1 xor al, 1 F000:4BA3 test al, 1 F000:4BA5 loopdne loc_F4BA0 F000:4BA8 jnz short locret_F4BB0 F000:4BAA sub dx, 5 F000:4BAD xor al, al F000:4BAF in al, dx F000:4BB0 F000:4BB0 locret_F4BB0: ; CODE XREF: sub_F4B97+11j F000:4BB0 retn F000:4BB0 sub_F4B97 endp F000:4BB0 F000:4BB1 F000:4BB1 ; =============== S U B R O U T I N E ======================================= F000:4BB1 F000:4BB1 F000:4BB1 sub_F4BB1 proc near ; CODE XREF: F000:4BD5p F000:4BB1 ; F000:4BDCp F000:4BB1 push dx F000:4BB2 call sub_F4B7A F000:4BB5 jnz short loc_F4BC1 F000:4BB7 out dx, al F000:4BB8 mov ah, al F000:4BBA call sub_F4B97 F000:4BBD jnz short loc_F4BC1 F000:4BBF cmp al, ah F000:4BC1 F000:4BC1 loc_F4BC1: ; CODE XREF: sub_F4BB1+4j F000:4BC1 ; sub_F4BB1+Cj F000:4BC1 pop dx F000:4BC2 retn F000:4BC2 sub_F4BB1 endp F000:4BC2 F000:4BC3 ; --------------------------------------------------------------------------- F000:4BC3 mov al, 7Fh ; '' F000:4BC5 call sub_F4B90 F000:4BC8 jnz short locret_F4BDF F000:4BCA F000:4BCA loc_F4BCA: ; CODE XREF: F000:4BD1j F000:4BCA call sub_F4B97 F000:4BCD jnz short locret_F4BDF F000:4BCF cmp al, 7Fh ; '' F000:4BD1 jnz short loc_F4BCA F000:4BD3 mov al, 55h ; 'U' F000:4BD5 call sub_F4BB1 F000:4BD8 jnz short locret_F4BDF F000:4BDA mov al, 0AAh ; '¬' F000:4BDC call sub_F4BB1 F000:4BDF F000:4BDF locret_F4BDF: ; CODE XREF: F000:4BC8j F000:4BDF ; F000:4BCDj ... F000:4BDF retn F000:4BE0 ; --------------------------------------------------------------------------- F000:4BE0 call sub_F5A47 F000:4BE3 jnb short loc_F4BE9 F000:4BE5 or al, 1 F000:4BE7 jmp short locret_F4BEB F000:4BE9 ; --------------------------------------------------------------------------- F000:4BE9 F000:4BE9 loc_F4BE9: ; CODE XREF: F000:4BE3j F000:4BE9 xor al, al F000:4BEB F000:4BEB locret_F4BEB: ; CODE XREF: F000:4BE7j F000:4BEB retn F000:4BEC ; --------------------------------------------------------------------------- F000:4BEC mov al, 0Dh F000:4BEE mov ah, 0Eh F000:4BF0 int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) F000:4BF0 ; AL = character, BH = display page (alpha modes) F000:4BF0 ; BL = foreground color (graphics modes) F000:4BF2 mov al, 0Ah F000:4BF4 mov ah, 0Eh F000:4BF6 int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) F000:4BF6 ; AL = character, BH = display page (alpha modes) F000:4BF6 ; BL = foreground color (graphics modes) F000:4BF8 retn F000:4BF9 ; --------------------------------------------------------------------------- F000:4BF9 mov dl, al F000:4BFB mov cx, 2 F000:4BFE F000:4BFE loc_F4BFE: ; CODE XREF: F000:4C11j F000:4BFE ror dl, 4 F000:4C01 mov al, dl F000:4C03 and al, 0Fh F000:4C05 cmp al, 0Ah F000:4C07 jb short loc_F4C0B F000:4C09 add al, 7 F000:4C0B F000:4C0B loc_F4C0B: ; CODE XREF: F000:4C07j F000:4C0B add al, 30h ; '0' F000:4C0D mov ah, 0Eh F000:4C0F int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) F000:4C0F ; AL = character, BH = display page (alpha modes) F000:4C0F ; BL = foreground color (graphics modes) F000:4C11 loop loc_F4BFE F000:4C13 retn F000:4C13 ; --------------------------------------------------------------------------- F000:4C14 aAllDataWillBeD db ' All data will be destroyed !! ',0Ah,0 F000:4C35 aFlashEraseMenu db ' FLASH ERASE MENU ',0 F000:4C48 aMemoryError db ' Memory Error ',0 F000:4C57 aHardwareTest db 'Hardware Test',0 F000:4C65 aMinimumMemoryR db 'Minimum memory requirement is 16 Mbyte',0 F000:4C8C aAddressOfTheMe db 'Address of the memory error: ',0 F000:4CAA aExpectedData db 0Ah F000:4CAA db ' Expected data: ',0 F000:4CC9 aActualData db 0Ah F000:4CC9 db ' Actual data: ',0 F000:4CE8 F000:4CE8 ; =============== S U B R O U T I N E ======================================= F000:4CE8 F000:4CE8 F000:4CE8 sub_F4CE8 proc near ; CODE XREF: F000:2F69p F000:4CE8 pushad F000:4CEA cmp byte ptr ds:500h, 12h F000:4CEF jnz short loc_F4D29 F000:4CF1 mov word ptr ds:0E95h, 140h F000:4CF7 mov word ptr ds:0E97h, 0FAh ; 'ÿ' F000:4CFD mov word ptr ds:0E99h, 4C35h F000:4D03 mov dword ptr ds:0E9Bh, 0 F000:4D0C mov edi, 0E91h F000:4D12 mov esi, 4C14h F000:4D18 call sub_F96CB F000:4D1B mov esi, 0E91h F000:4D21 call sub_F975A F000:4D24 mov byte ptr ds:14DEh, 1 F000:4D29 F000:4D29 loc_F4D29: ; CODE XREF: sub_F4CE8+7j F000:4D29 popad F000:4D2B retn F000:4D2B sub_F4CE8 endp F000:4D2B F000:4D2B ; --------------------------------------------------------------------------- F000:4D2C aFlashMemoryVer db ' Flash memory verification ',0 F000:4D48 aVerifyingSecto db ': Verifying sectors... ',0Ah,0 F000:4D62 aDevice db 'Device ',0 F000:4D6A F000:4D6A ; =============== S U B R O U T I N E ======================================= F000:4D6A F000:4D6A F000:4D6A sub_F4D6A proc near ; CODE XREF: sub_F6ACC+6p F000:4D6A pushad F000:4D6C or eax, eax F000:4D6F jz loc_F4E0F F000:4D73 movzx ebx, bl F000:4D77 push word ptr ds:10C1h F000:4D7B mov byte ptr ds:10C1h, 2 F000:4D80 mov ds:0EF2h, ebx F000:4D85 mov ds:0EB1h, eax F000:4D89 mov ds:0EB9h, eax F000:4D8D mov dword ptr ds:0EADh, 0 F000:4D96 mov dword ptr ds:0EB5h, 0 F000:4D9F mov word ptr ds:0E95h, 140h F000:4DA5 mov word ptr ds:0E97h, 0FAh ; 'ÿ' F000:4DAB mov word ptr ds:0E99h, 4D2Ch F000:4DB1 mov dword ptr ds:0E9Bh, 0 F000:4DBA mov edi, 0E91h F000:4DC0 mov esi, 4D62h F000:4DC6 call sub_F96CB F000:4DC9 call sub_F968E F000:4DCC mov byte ptr [ebx+4], 2 F000:4DD1 mov word ptr [ebx+0Ah], 0EF2h F000:4DD7 mov byte ptr [ebx+5], 1 F000:4DDC mov esi, 4D48h F000:4DE2 call sub_F96CB F000:4DE5 mov ds:10B9h, ebx F000:4DEA call sub_F968E F000:4DED mov ds:10B5h, ebx F000:4DF2 mov byte ptr [ebx+4], 6 F000:4DF7 mov word ptr [ebx+0Ah], 0EADh F000:4DFD mov byte ptr [ebx+5], 0 F000:4E02 mov esi, 0E91h F000:4E08 call sub_F975A F000:4E0B pop word ptr ds:10C1h F000:4E0F F000:4E0F loc_F4E0F: ; CODE XREF: sub_F4D6A+5j F000:4E0F popad F000:4E11 retn F000:4E11 sub_F4D6A endp F000:4E11 F000:4E12 F000:4E12 ; =============== S U B R O U T I N E ======================================= F000:4E12 F000:4E12 F000:4E12 sub_F4E12 proc near ; CODE XREF: sub_F6ACC+17Dp F000:4E12 pushad F000:4E14 mov ds:0EB5h, ebx F000:4E19 mov eax, ds:0EB9h F000:4E1D cmp ds:0EB5h, eax F000:4E22 jb short loc_F4E28 F000:4E24 mov ds:0EB5h, eax F000:4E28 F000:4E28 loc_F4E28: ; CODE XREF: sub_F4E12+10j F000:4E28 mov ebx, ds:10B5h F000:4E2D mov esi, 0E91h F000:4E33 call sub_F990D F000:4E36 popad F000:4E38 retn F000:4E38 sub_F4E12 endp F000:4E38 F000:4E39 ; --------------------------------------------------------------------------- F000:4E39 F000:4E39 loc_F4E39: ; CODE XREF: F000:4E44j F000:4E39 push ax F000:4E3A mov di, 4E3Fh F000:4E3D jmp short loc_F4E5C F000:4E3F ; --------------------------------------------------------------------------- F000:4E3F in al, 60h ; AT Keyboard controller 8042. F000:4E41 cmp al, 1 F000:4E43 pop ax F000:4E44 jnz short loc_F4E39 F000:4E46 retn F000:4E47 F000:4E47 ; =============== S U B R O U T I N E ======================================= F000:4E47 F000:4E47 F000:4E47 sub_F4E47 proc near ; CODE XREF: F000:5ED8p F000:4E47 in al, 0E0h F000:4E49 and al, 0F3h F000:4E4B or al, 4 F000:4E4D out 0E0h, al F000:4E4F retn F000:4E4F sub_F4E47 endp F000:4E4F F000:4E50 ; --------------------------------------------------------------------------- F000:4E50 jmp bx F000:4E52 ; --------------------------------------------------------------------------- F000:4E52 ; START OF FUNCTION CHUNK FOR sub_F4E54 F000:4E52 F000:4E52 loc_F4E52: ; CODE XREF: sub_F4E54+4j F000:4E52 ; F000:4EE3j ... F000:4E52 jmp bx F000:4E52 ; END OF FUNCTION CHUNK FOR sub_F4E54 F000:4E54 F000:4E54 ; =============== S U B R O U T I N E ======================================= F000:4E54 F000:4E54 F000:4E54 sub_F4E54 proc near ; CODE XREF: F000:5EE0p F000:4E54 F000:4E54 ; FUNCTION CHUNK AT F000:4E52 SIZE 00000002 BYTES F000:4E54 F000:4E54 push bx F000:4E55 mov bx, 4E5Ah F000:4E58 jmp short loc_F4E52 F000:4E58 sub_F4E54 endp F000:4E58 F000:4E5A ; --------------------------------------------------------------------------- F000:4E5A pop bx F000:4E5B retn F000:4E5C ; --------------------------------------------------------------------------- F000:4E5C ; START OF FUNCTION CHUNK FOR sub_F5381 F000:4E5C F000:4E5C loc_F4E5C: ; CODE XREF: F000:4E3Dj F000:4E5C ; sub_F5381-4ADj F000:4E5C mov ah, al F000:4E5E in al, 0E0h F000:4E60 mov bh, al F000:4E62 shl ebx, 10h F000:4E66 mov ecx, 28000h F000:4E6C cmp cs:byte_F465B, 1 F000:4E72 jnz short loc_F4E7A F000:4E74 mov ecx, 4000h F000:4E7A F000:4E7A loc_F4E7A: ; CODE XREF: sub_F5381-50Fj F000:4E7A mov esi, ecx F000:4E7D mov bl, 9 F000:4E7F mov ecx, esi F000:4E82 shl ecx, 3 F000:4E86 in al, 0E0h F000:4E88 and al, 0F3h F000:4E8A or al, 8 F000:4E8C out 0E0h, al F000:4E8E jmp short loc_F4EA3 F000:4E90 ; --------------------------------------------------------------------------- F000:4E90 F000:4E90 loc_F4E90: ; CODE XREF: sub_F5381-4BEj F000:4E90 mov bh, 4 F000:4E92 ror ah, 1 F000:4E94 jb short loc_F4E98 F000:4E96 mov bh, 8 F000:4E98 F000:4E98 loc_F4E98: ; CODE XREF: sub_F5381-4EDj F000:4E98 mov ecx, esi F000:4E9B in al, 0E0h F000:4E9D and al, 0F3h F000:4E9F or al, bh F000:4EA1 out 0E0h, al F000:4EA3 F000:4EA3 loc_F4EA3: ; CODE XREF: sub_F5381-4F3j F000:4EA3 ; sub_F5381-4DCj F000:4EA3 in al, 90h F000:4EA5 loopd loc_F4EA3 F000:4EA8 in al, 0E0h F000:4EAA and al, 0F3h F000:4EAC out 0E0h, al F000:4EAE mov ecx, esi F000:4EB1 shl ecx, 1 F000:4EB4 F000:4EB4 loc_F4EB4: ; CODE XREF: sub_F5381-4CBj F000:4EB4 in al, 90h F000:4EB6 loopd loc_F4EB4 F000:4EB9 in al, 0E0h F000:4EBB and al, 0F3h F000:4EBD or al, 8 F000:4EBF out 0E0h, al F000:4EC1 dec bl F000:4EC3 jnz short loc_F4E90 F000:4EC5 shr ebx, 10h F000:4EC9 mov al, bh F000:4ECB out 0E0h, al F000:4ECD mov al, ah F000:4ECF jmp di F000:4ED1 ; --------------------------------------------------------------------------- F000:4ED1 F000:4ED1 loc_F4ED1: ; CODE XREF: F000:3AC9j F000:4ED1 ; F000:3D6Fj ... F000:4ED1 mov di, 4ED6h F000:4ED4 jmp short loc_F4E5C ; continue at CS:[4ED6h] F000:4ED4 ; END OF FUNCTION CHUNK FOR sub_F5381 F000:4ED6 ; --------------------------------------------------------------------------- F000:4ED6 jmp short loc_F4ED1 F000:4ED8 ; --------------------------------------------------------------------------- F000:4ED8 F000:4ED8 loc_F4ED8: ; CODE XREF: F000:2FBDj F000:4ED8 ; F000:loc_F49A6j F000:4ED8 mov al, 55h ; 'U' F000:4EDA mov bx, 4EE0h F000:4EDD jmp loc_F2E2B F000:4EE0 ; --------------------------------------------------------------------------- F000:4EE0 mov bx, 4EE6h F000:4EE3 jmp loc_F4E52 F000:4EE6 ; --------------------------------------------------------------------------- F000:4EE6 mov edi, 100000h F000:4EEC mov ecx, 100000h F000:4EF2 xor eax, eax F000:4EF5 rep stos dword ptr es:[edi] F000:4EF9 in al, 0E0h F000:4EFB and al, 0F3h F000:4EFD out 0E0h, al F000:4EFF mov ecx, 20000h F000:4F05 F000:4F05 loc_F4F05: ; CODE XREF: F000:4F07j F000:4F05 in al, 80h ; manufacture's diagnostic checkpoint F000:4F07 loopd loc_F4F05 F000:4F0A mov ax, 400Ah F000:4F0D call CMOS_WRITE_AL_AH F000:4F10 mov ax, 41h ; 'A' F000:4F13 call CMOS_WRITE_AL_AH F000:4F16 mov ax, 4040h F000:4F19 call CMOS_WRITE_AL_AH F000:4F1C mov ax, 200Ah F000:4F1F call CMOS_WRITE_AL_AH F000:4F22 mov dx, 0CF8h F000:4F25 mov eax, 80009044h F000:4F2B out dx, eax F000:4F2D mov al, 1 F000:4F2F mov dx, 0CFCh F000:4F32 out dx, al F000:4F33 F000:4F33 loc_F4F33: ; CODE XREF: F000:loc_F4F33j F000:4F33 jmp short loc_F4F33 F000:4F35 ; --------------------------------------------------------------------------- F000:4F35 xor al, al F000:4F37 retn F000:4F38 F000:4F38 ; =============== S U B R O U T I N E ======================================= F000:4F38 F000:4F38 F000:4F38 sub_F4F38 proc near ; CODE XREF: sub_F4FB3+54p F000:4F38 ; F000:loc_F80B3p F000:4F38 call sub_F520F F000:4F3B jz short locret_F4F70 F000:4F3D test byte ptr ds:14ECh, 80h F000:4F42 jz short loc_F4F5C F000:4F44 mov dx, 3D4h F000:4F47 mov ax, 5730h F000:4F4A out dx, ax ; Video: CRT cntrlr addr F000:4F4A ; F000:4F4B mov ax, 4C30h F000:4F4E out dx, ax ; Video: CRT cntrlr addr F000:4F4E ; F000:4F4F mov ax, 550h F000:4F52 out dx, ax ; Video: CRT cntrlr addr F000:4F52 ; F000:4F53 mov dx, 3D4h F000:4F56 mov ax, 30h ; '0' F000:4F59 out dx, ax ; Video: CRT cntrlr addr F000:4F59 ; F000:4F5A jmp short locret_F4F70 F000:4F5C ; --------------------------------------------------------------------------- F000:4F5C F000:4F5C loc_F4F5C: ; CODE XREF: sub_F4F38+Aj F000:4F5C mov esi, 40010000h F000:4F62 mov eax, es:[esi+4] F000:4F68 or al, 26h F000:4F6A mov es:[esi+4], eax F000:4F70 F000:4F70 locret_F4F70: ; CODE XREF: sub_F4F38+3j F000:4F70 ; sub_F4F38+22j F000:4F70 retn F000:4F70 sub_F4F38 endp F000:4F70 F000:4F71 F000:4F71 ; =============== S U B R O U T I N E ======================================= F000:4F71 F000:4F71 F000:4F71 SET_CRTC1 proc near ; CODE XREF: F000:2E80p F000:4F71 ; F000:2F57p F000:4F71 call sub_F520F F000:4F74 jz short locret_F4FAE F000:4F76 call PCI_BRIDGE_TB90h_13 F000:4F79 jnz short locret_F4FAE F000:4F7B test byte ptr ds:14ECh, 80h F000:4F80 jz short loc_F4F9A F000:4F82 mov dx, 3D4h ; CRTC F000:4F85 mov ax, 5730h F000:4F88 out dx, ax ; Video: CRT cntrlr addr F000:4F88 ; F000:4F89 mov ax, 4C30h F000:4F8C out dx, ax ; Video: CRT cntrlr addr F000:4F8C ; F000:4F8D mov ax, 50h ; 'P' F000:4F90 out dx, ax ; Video: CRT cntrlr addr F000:4F90 ; F000:4F91 mov dx, 3D4h ; CRTC F000:4F94 mov ax, 30h ; '0' F000:4F97 out dx, ax ; Video: CRT cntrlr addr F000:4F97 ; F000:4F98 jmp short locret_F4FAE F000:4F9A ; --------------------------------------------------------------------------- F000:4F9A F000:4F9A loc_F4F9A: ; CODE XREF: SET_CRTC1+Fj F000:4F9A mov esi, 40010000h F000:4FA0 mov eax, es:[esi+4] F000:4FA6 and al, 0DBh F000:4FA8 mov es:[esi+4], eax F000:4FAE F000:4FAE locret_F4FAE: ; CODE XREF: SET_CRTC1+3j F000:4FAE ; SET_CRTC1+8j ... F000:4FAE retn F000:4FAE SET_CRTC1 endp F000:4FAE F000:4FAF F000:4FAF ; =============== S U B R O U T I N E ======================================= F000:4FAF F000:4FAF F000:4FAF sub_F4FAF proc near ; CODE XREF: F000:loc_F5ECCp F000:4FAF call sub_F4FB3 F000:4FB2 retn F000:4FB2 sub_F4FAF endp F000:4FB2 F000:4FB3 F000:4FB3 ; =============== S U B R O U T I N E ======================================= F000:4FB3 F000:4FB3 F000:4FB3 sub_F4FB3 proc near ; CODE XREF: sub_F4FAFp F000:4FB3 ; SET_VGA2+22p F000:4FB3 call sub_F520F F000:4FB6 jz short locret_F5035 F000:4FB8 call PCI_BRIDGE_TB90h_13 F000:4FBB jnz short locret_F5035 F000:4FBD mov al, 0C3h ; '+' F000:4FBF out 22h, al F000:4FC1 in al, 23h F000:4FC3 or al, 1 F000:4FC5 mov ah, al F000:4FC7 mov al, 0C3h ; '+' F000:4FC9 out 22h, al F000:4FCB mov al, ah F000:4FCD out 23h, al F000:4FCF mov al, 0C2h ; 'T' F000:4FD1 out 22h, al F000:4FD3 in al, 23h F000:4FD5 push ax F000:4FD6 or al, 88h F000:4FD8 mov ah, al F000:4FDA mov al, 0C2h ; 'T' F000:4FDC out 22h, al F000:4FDE mov al, ah F000:4FE0 out 23h, al F000:4FE2 in al, 21h ; Interrupt controller, 8259A. F000:4FE4 mov ah, al F000:4FE6 in al, 0A1h ; Interrupt Controller #2, 8259A F000:4FE8 push ax F000:4FE9 pushf F000:4FEA mov al, 0FEh ; '¦' F000:4FEC out 21h, al ; Interrupt controller, 8259A. F000:4FEE mov al, 0FFh F000:4FF0 out 0A1h, al ; Interrupt Controller #2, 8259A F000:4FF2 sti F000:4FF3 call sub_FB1B0 F000:4FF6 F000:4FF6 loc_F4FF6: ; CODE XREF: sub_F4FB3+5Aj F000:4FF6 call PCI_BRIDGE_TB90h_13 F000:4FF9 jnz short loc_F500F F000:4FFB xor al, al F000:4FFD call sub_FB1FD F000:5000 or al, al F000:5002 jz short loc_F500C F000:5004 call PCI_BRIDGE_CB90h_13 F000:5007 call sub_F4F38 F000:500A jmp short loc_F500F F000:500C ; --------------------------------------------------------------------------- F000:500C F000:500C loc_F500C: ; CODE XREF: sub_F4FB3+4Fj F000:500C hlt F000:500D ; --------------------------------------------------------------------------- F000:500D jmp short loc_F4FF6 F000:500F ; --------------------------------------------------------------------------- F000:500F F000:500F loc_F500F: ; CODE XREF: sub_F4FB3+46j F000:500F ; sub_F4FB3+57j F000:500F popf F000:5010 pop ax F000:5011 out 0A1h, al ; Interrupt Controller #2, 8259A F000:5013 mov al, ah F000:5015 out 21h, al ; Interrupt controller, 8259A. F000:5017 call sub_FB1F9 F000:501A mov al, 0C3h ; '+' F000:501C out 22h, al F000:501E in al, 23h F000:5020 or al, 1 F000:5022 mov ah, al F000:5024 mov al, 0C3h ; '+' F000:5026 out 22h, al F000:5028 mov al, ah F000:502A out 23h, al F000:502C mov al, 0C2h ; 'T' F000:502E out 22h, al F000:5030 mov al, ah F000:5032 pop ax F000:5033 out 23h, al F000:5035 F000:5035 locret_F5035: ; CODE XREF: sub_F4FB3+3j F000:5035 ; sub_F4FB3+8j F000:5035 retn F000:5035 sub_F4FB3 endp F000:5035 F000:5036 F000:5036 ; =============== S U B R O U T I N E ======================================= F000:5036 F000:5036 F000:5036 SET_VGA2 proc near ; CODE XREF: F000:2FABp F000:5036 call sub_F520F F000:5039 jz short locret_F5062 F000:503B call PCI_BRIDGE_TB90h_13 F000:503E jnz short locret_F5062 F000:5040 mov esi, 40010000h F000:5046 mov eax, [esi+24h] F000:504B push eax F000:504D and eax, 0FFFFF7FFh F000:5053 mov [esi+24h], eax F000:5058 call sub_F4FB3 F000:505B pop eax F000:505D mov [esi+24h], eax F000:5062 F000:5062 locret_F5062: ; CODE XREF: SET_VGA2+3j F000:5062 ; SET_VGA2+8j F000:5062 retn F000:5062 SET_VGA2 endp F000:5062 F000:5062 ; --------------------------------------------------------------------------- F000:5063 db 6Bh ; k F000:5064 db 0 F000:5065 F000:5065 ; =============== S U B R O U T I N E ======================================= F000:5065 F000:5065 F000:5065 sub_F5065 proc near ; CODE XREF: F000:2FA8p F000:5065 push ds F000:5066 push cs F000:5067 pop ds F000:5068 assume ds:BIOS_F000 F000:5068 mov esi, 5063h F000:506E mov edi, 100000h F000:5074 call sub_F609A F000:5077 pop ds F000:5078 assume ds:nothing F000:5078 jb locret_F510F F000:507C mov si, 14F6h F000:507F call sub_FB114 F000:5082 mov eax, [edi+4] F000:5087 not eax F000:508A and ds:14F6h, eax F000:508F not eax F000:5092 and eax, [edi] F000:5096 or ds:14F6h, eax F000:509B mov si, 14F6h F000:509E call sub_FB100 F000:50A1 call sub_FB0B5 F000:50A4 mov edx, 1 F000:50AA F000:50AA loc_F50AA: ; CODE XREF: sub_F5065+4Dj F000:50AA call sub_F799D F000:50AD jnb short loc_F50B4 F000:50AF xor edx, edx F000:50B2 jmp short loc_F50AA F000:50B4 ; --------------------------------------------------------------------------- F000:50B4 F000:50B4 loc_F50B4: ; CODE XREF: sub_F5065+48j F000:50B4 xor ebx, ebx F000:50B7 F000:50B7 loc_F50B7: ; CODE XREF: sub_F5065+7Cj F000:50B7 mov edi, 0D86h F000:50BD push ebx F000:50BF call sub_F6768 F000:50C2 pop eax F000:50C4 jb short locret_F510F F000:50C6 movzx ecx, byte ptr ds:0D86h F000:50CC movzx esi, byte ptr ds:0D87h F000:50D2 sub ecx, esi F000:50D5 add edi, esi F000:50D8 mov esi, 0F5063h F000:50DE call sub_F61EE F000:50E1 jnz short loc_F50B7 F000:50E3 mov byte ptr [edi], 0 F000:50E7 mov esi, edi F000:50EA movzx edi, byte ptr ds:0D87h F000:50F0 add edi, eax F000:50F3 mov ecx, 1 F000:50F9 mov ebx, 1 F000:50FF call loc_F7468 F000:5102 xor ecx, ecx F000:5105 xor edi, edi F000:5108 mov bx, ds:0D92h F000:510C call loc_F7468 F000:510F F000:510F locret_F510F: ; CODE XREF: sub_F5065+13j F000:510F ; sub_F5065+5Fj F000:510F retn F000:510F sub_F5065 endp F000:510F F000:5110 ; --------------------------------------------------------------------------- F000:5110 call sub_F520F F000:5113 jz short locret_F5127 F000:5115 and byte ptr ds:14F1h, 0FEh F000:511A call sub_FBC60 F000:511D test byte ptr ds:14F1h, 1 F000:5122 jz short locret_F5127 F000:5124 call PCI_BRIDGE_CB90h_13 F000:5127 F000:5127 locret_F5127: ; CODE XREF: F000:5113j F000:5127 ; F000:5122j F000:5127 retn F000:5128 F000:5128 ; =============== S U B R O U T I N E ======================================= F000:5128 F000:5128 F000:5128 SET_USB proc near ; CODE XREF: F000:2E50p F000:5128 mov edx, 0CF8h ; PCI address port F000:512E mov eax, 80009804h ; PCI bus 0, dev 13h, func 0, reg 04h (CS5530 USB Controller) F000:5134 out dx, eax ; write PCI address F000:5136 add edx, 4 ; PCI data port F000:513A mov eax, 2800007h F000:5140 out dx, eax ; write to PCI register, PCI[04h]=02800007h (Command Register) F000:5142 mov edx, 0CF8h ; PCI address port F000:5148 mov eax, 80009810h ; PCI bus 0, dev 13h, func 0, reg 10h (CS5530 USB Controller) F000:514E out dx, eax ; write PCI address F000:5150 add edx, 4 ; PCI data port F000:5154 mov eax, 42000000h F000:515A out dx, eax ; write to PCI register, PCI[10h]=42000000h (Base Address Register) F000:515C mov ebx, 42000000h ; USB Base Address = 42000000h F000:5162 mov dword ptr [ebx+18h], 0FFFFFF00h ; set USB MMIO regs F000:516B mov dword ptr [ebx+18h], 10000h F000:5174 mov dword ptr [ebx+40h], 3E67h F000:517D mov dword ptr [ebx+3Ch], 0 F000:5186 mov dword ptr [ebx+4], 831h F000:518F mov cx, 1000h ; count = 4096 F000:5192 F000:5192 loc_F5192: ; CODE XREF: SET_USB:loc_F5192j F000:5192 loop loc_F5192 ; delay loop F000:5194 mov dword ptr [ebx+48h], 20001300h ; set USB MMIO regs F000:519D mov dword ptr [ebx+4Ch], 0 F000:51A6 mov dword ptr [ebx+50h], 80030000h F000:51AF mov dword ptr [ebx+34h], 27752EDFh F000:51B8 mov eax, [ebx+0Ch] F000:51BD or eax, 4000007Fh F000:51C3 mov [ebx+0Ch], eax F000:51C8 mov eax, [ebx+10h] F000:51CD or eax, 80000006h F000:51D3 mov [ebx+10h], eax F000:51D8 retn F000:51D8 SET_USB endp F000:51D8 F000:51D8 ; --------------------------------------------------------------------------- F000:51D9 db 7 dup(0) F000:51E0 F000:51E0 ; =============== S U B R O U T I N E ======================================= F000:51E0 F000:51E0 F000:51E0 PCI_BRIDGE_TB90h_13 proc near ; CODE XREF: F000:2EA4p F000:51E0 ; SET_VGA1+Ep ... F000:51E0 push dx F000:51E1 mov dx, 0CF8h ; PCI address port F000:51E4 mov eax, 80009090h ; PCI bus 0, dev 12h, func 0, reg 90h (CS5530 bridge) F000:51EA out dx, eax ; write PCI address F000:51EC mov dx, 0CFDh ; PCI data port F000:51EF in al, dx ; AL = bits15:8 F000:51F0 and al, 20h ; mask bit 13 F000:51F2 xor al, 20h ; toggle bit 13 F000:51F4 pop dx F000:51F5 retn F000:51F5 PCI_BRIDGE_TB90h_13 endp F000:51F5 F000:51F6 F000:51F6 ; =============== S U B R O U T I N E ======================================= F000:51F6 F000:51F6 F000:51F6 PCI_BRIDGE_CB90h_13 proc near ; CODE XREF: F000:2EAFp F000:51F6 ; sub_F4FB3+51p ... F000:51F6 push dx F000:51F7 push eax F000:51F9 mov dx, 0CF8h ; PCI address port F000:51FC mov eax, 80009090h ; PCI bus 0, dev 12h, func 0, reg 90h (CS5530 bridge) F000:5202 out dx, eax ; write PCI address F000:5204 mov dx, 0CFDh ; PCI data port F000:5207 in al, dx ; AL = bits15:8 F000:5208 and al, 0DFh ; clear bit 13 F000:520A out dx, al ; update PCI reg. F000:520B pop eax F000:520D pop dx F000:520E retn F000:520E PCI_BRIDGE_CB90h_13 endp F000:520E F000:520F F000:520F ; =============== S U B R O U T I N E ======================================= F000:520F F000:520F F000:520F sub_F520F proc near ; CODE XREF: sub_F4F38p F000:520F ; SET_CRTC1p ... F000:520F or al, 1 F000:5211 retn F000:5211 sub_F520F endp F000:5211 F000:5212 F000:5212 ; =============== S U B R O U T I N E ======================================= F000:5212 F000:5212 F000:5212 sub_F5212 proc near ; CODE XREF: SET_CMOS2p F000:5212 mov al, 0Dh F000:5214 call CMOS_READ_AL_AH F000:5217 test ah, 80h F000:521A retn F000:521A sub_F5212 endp F000:521A F000:521B F000:521B ; =============== S U B R O U T I N E ======================================= F000:521B F000:521B F000:521B SET_BRIDGE2 proc near ; CODE XREF: F000:2EA1p F000:521B mov dx, 0CF8h F000:521E mov eax, 80009090h F000:5224 out dx, eax F000:5226 mov dx, 0CFDh F000:5229 in al, dx F000:522A and al, 0DFh F000:522C cmp ebp, 12345678h F000:5233 jz short loc_F528A F000:5235 cmp ebp, 12341234h F000:523C jz short loc_F528A F000:523E mov ebx, 40008000h F000:5244 mov ebx, [ebx] F000:5248 and ebx, 0FFFFFFF0h F000:524C cmp dword ptr [ebx], 12345678h F000:5254 jz short loc_F528A F000:5256 push ax F000:5257 mov dx, 0CF8h F000:525A mov eax, 80009050h F000:5260 out dx, eax F000:5262 mov dx, 0CFCh F000:5265 in eax, dx F000:5267 or eax, 4000000h F000:526D out dx, eax F000:526F mov al, 61h ; 'a' F000:5271 out 70h, al ; CMOS Memory: F000:5271 ; F000:5273 in al, 71h ; CMOS Memory F000:5275 cmp al, 5Ch ; '\' F000:5277 mov dx, 0CF8h F000:527A mov eax, 80009090h F000:5280 out dx, eax F000:5282 mov dx, 0CFDh F000:5285 pop ax F000:5286 jz short loc_F528A F000:5288 or al, 30h F000:528A F000:528A loc_F528A: ; CODE XREF: SET_BRIDGE2+18j F000:528A ; SET_BRIDGE2+21j ... F000:528A out dx, al F000:528B mov al, 61h ; 'a' F000:528D out 70h, al ; CMOS Memory: F000:528D ; F000:528F mov al, 0 F000:5291 out 71h, al ; CMOS Memory: F000:5291 ; used by real-time clock F000:5293 retn F000:5293 SET_BRIDGE2 endp F000:5293 F000:5294 ; --------------------------------------------------------------------------- F000:5294 mov dx, 0CF8h F000:5297 mov eax, 800090F4h F000:529D out dx, eax F000:529F mov dx, 0CFFh F000:52A2 in al, dx F000:52A3 test al, 80h F000:52A5 jz short loc_F52B9 F000:52A7 mov dx, 0CF8h F000:52AA mov eax, 80009090h F000:52B0 out dx, eax F000:52B2 mov dx, 0CFDh F000:52B5 in al, dx F000:52B6 xor al, 20h F000:52B8 out dx, al F000:52B9 F000:52B9 loc_F52B9: ; CODE XREF: F000:52A5j F000:52B9 jmp bx F000:52B9 ; --------------------------------------------------------------------------- F000:52BB db 0 F000:52BC dd 0 F000:52C0 dword_F52C0 dd 80000020h ; DATA XREF: F000:52E4r F000:52C4 dword_F52C4 dd 0C0000003h ; DATA XREF: F000:5373r F000:52C8 dd 40000003h F000:52CC ; --------------------------------------------------------------------------- F000:52CC F000:52CC loc_F52CC: ; CODE XREF: F000:2EFCj F000:52CC pusha F000:52CD mov esi, 100000h F000:52D3 mov edi, 80000h F000:52D9 mov ecx, 20000h F000:52DF mov al, 0A0h ; 'á' F000:52E1 call sub_F5381 F000:52E4 call cs:dword_F52C0 F000:52E9 mov eax, cr0 F000:52EC and eax, 9FFFFFFFh F000:52F2 mov cr0, eax F000:52F5 mov al, 0A3h ; 'ú' F000:52F7 mov bx, 52FDh F000:52FA jmp loc_F2E2B F000:52FD ; --------------------------------------------------------------------------- F000:52FD mov bx, 5303h F000:5300 jmp loc_F4E52 F000:5303 ; --------------------------------------------------------------------------- F000:5303 mov eax, 8008h F000:5309 mov bx, 530Fh F000:530C jmp RD_GX_BASE_AX2 F000:530F ; --------------------------------------------------------------------------- F000:530F mov dl, 33h ; '3' F000:5311 mov bx, 5317h F000:5314 jmp WR_GX_BASE_AX2 F000:5317 ; --------------------------------------------------------------------------- F000:5317 mov al, 0A4h ; '¥' F000:5319 mov bx, 531Fh F000:531C jmp loc_F2E2B F000:531F ; --------------------------------------------------------------------------- F000:531F mov bx, 5325h F000:5322 jmp loc_F4E52 F000:5325 ; --------------------------------------------------------------------------- F000:5325 mov esi, 120000h F000:532B mov edi, 0C0000h F000:5331 mov ecx, 8000h F000:5337 mov al, 0A4h ; '¥' F000:5339 call sub_F5381 F000:533C mov eax, 8008h F000:5342 mov bx, 5348h F000:5345 jmp RD_GX_BASE_AX2 F000:5348 ; --------------------------------------------------------------------------- F000:5348 mov dl, 11h F000:534A mov bx, 5350h F000:534D jmp WR_GX_BASE_AX2 F000:5350 ; --------------------------------------------------------------------------- F000:5350 mov bx, 5356h F000:5353 jmp loc_F5420 F000:5356 ; --------------------------------------------------------------------------- F000:5356 mov al, 0ABh ; 'Ÿ' F000:5358 mov bx, 535Eh F000:535B jmp loc_F2E2B F000:535E ; --------------------------------------------------------------------------- F000:535E mov bx, 5364h F000:5361 jmp loc_F4E52 F000:5364 ; --------------------------------------------------------------------------- F000:5364 mov bx, 536Ah F000:5367 jmp GDT_INIT2 F000:536A ; --------------------------------------------------------------------------- F000:536A push 0 F000:536C pop ds F000:536D assume ds:nothing F000:536D push 40h ; '@' F000:536F pop es F000:5370 assume es:nothing F000:5370 mov ax, 0 F000:5373 call cs:dword_F52C4 F000:5378 push 0F000h F000:537B pop es F000:537C assume es:BIOS_F000 F000:537C push es F000:537D pop ds F000:537E assume ds:BIOS_F000 F000:537E popa F000:537F jmp bx F000:5381 F000:5381 ; =============== S U B R O U T I N E ======================================= F000:5381 F000:5381 F000:5381 sub_F5381 proc near ; CODE XREF: F000:52E1p F000:5381 ; F000:5339p F000:5381 F000:5381 ; FUNCTION CHUNK AT F000:4E5C SIZE 0000007A BYTES F000:5381 F000:5381 push 0 F000:5383 pop es F000:5384 assume es:nothing F000:5384 push es F000:5385 pop ds F000:5386 assume ds:nothing F000:5386 cld F000:5387 shr ecx, 2 F000:538B push edi F000:538D push esi F000:538F push ecx F000:5391 rep movs dword ptr es:[edi], dword ptr es:[esi] F000:5396 pop ecx F000:5398 pop esi F000:539A pop edi F000:539C repe cmps byte ptr es:[esi], byte ptr es:[edi] F000:53A0 jnz short loc_F53A3 F000:53A2 retn F000:53A3 ; --------------------------------------------------------------------------- F000:53A3 F000:53A3 loc_F53A3: ; CODE XREF: sub_F5381+1Fj F000:53A3 mov al, al F000:53A5 jmp loc_F4ED1 F000:53A5 sub_F5381 endp F000:53A5 F000:53A5 ; --------------------------------------------------------------------------- F000:53A8 db 6Ah ; j F000:53A9 db 0 F000:53AA db 7 F000:53AB db 6 F000:53AC db 1Fh F000:53AD db 0FCh ; Ø F000:53AE db 66h ; f F000:53AF db 0C1h ; + F000:53B0 db 0E9h ; Ú F000:53B1 db 2 F000:53B2 db 0F3h ; ¡ F000:53B3 db 67h ; g F000:53B4 db 26h ; & F000:53B5 db 0A6h ; Ž F000:53B6 db 75h ; u F000:53B7 db 1 F000:53B8 db 0C3h ; + F000:53B9 db 8Ah ; Õ F000:53BA db 0C0h ; L F000:53BB db 0E9h ; Ú F000:53BC db 13h F000:53BD db 0FBh ; û F000:53BE F000:53BE ; =============== S U B R O U T I N E ======================================= F000:53BE F000:53BE F000:53BE SET_BRIDGE3 proc near ; CODE XREF: F000:2FAEp F000:53BE pushad F000:53C0 mov dx, 0CF8h ; PCI address port F000:53C3 mov eax, 80009094h ; PCI bus 0, dev 12h, func 0, reg 94h (CS5530 bridge) F000:53C9 out dx, eax ; write PCI address F000:53CB mov dx, 0CFCh ; PCI data port F000:53CE in eax, dx ; read Suspend cfg, GPIO Control Register 2 F000:53D0 and eax, 0FFFCFFFFh F000:53D6 out dx, eax F000:53D8 mov dx, 0CF8h ; IRQ Speedup Timer Count Register F000:53DB mov eax, 8000908Ch ; PCI bus 0, dev 12h, func 0, reg 8Ch (CS5530 bridge) F000:53E1 out dx, eax ; IRQ Speedup Timer Count Register F000:53E3 mov dx, 0CFCh ; PCI data port F000:53E6 in eax, dx ; read IRQ Speedup Timer Count Register F000:53E8 mov al, 4 F000:53EA mov ah, 32h ; '2' F000:53EC out dx, eax F000:53EE mov dx, 0CF8h ; IRQ Speedup Timer Count Register F000:53F1 mov eax, 80009094h ; PCI bus 0, dev 12h, func 0, reg 94h (CS5530 bridge) F000:53F7 out dx, eax ; IRQ Speedup Timer Count Register F000:53F9 mov dx, 0CFCh ; PCI data port F000:53FC in eax, dx ; read Suspend cfg, GPIO Control Register 2 F000:53FE mov al, 0Dh F000:5400 mov ah, 7 F000:5402 or eax, 30000h F000:5408 out dx, eax F000:540A mov al, 0C2h ; 'T' F000:540C out 22h, al F000:540E in al, 23h F000:5410 xchg ah, al F000:5412 or ah, 80h F000:5415 mov al, 0C2h ; 'T' F000:5417 out 22h, al F000:5419 xchg al, ah F000:541B out 23h, al F000:541D popad F000:541F retn F000:541F SET_BRIDGE3 endp F000:541F F000:5420 ; --------------------------------------------------------------------------- F000:5420 F000:5420 loc_F5420: ; CODE XREF: F000:5353j F000:5420 shl ebx, 10h F000:5424 mov eax, cr0 F000:5427 and eax, 9FFFFFFFh F000:542D mov cr0, eax F000:5430 wbinvd F000:5432 mov eax, cr0 F000:5435 or eax, 20000000h F000:543B mov cr0, eax F000:543E mov al, 0C2h ; 'T' F000:5440 mov bx, 5446h F000:5443 jmp IO_RD_23h_AL F000:5446 ; --------------------------------------------------------------------------- F000:5446 or al, 4 F000:5448 or al, 10h F000:544A mov dl, 0C2h ; 'T' F000:544C mov bx, 5452h F000:544F jmp IO_WR_22h_AL_DL F000:5452 ; --------------------------------------------------------------------------- F000:5452 mov edi, esi F000:5455 mov ecx, 40000h F000:545B mov esi, 100000h F000:5461 cld F000:5462 rep lods dword ptr es:[esi] F000:5467 mov esi, edi F000:546A invd F000:546C shr ebx, 10h F000:5470 jmp bx F000:5470 ; --------------------------------------------------------------------------- F000:5472 db 0Eh dup(0) F000:5480 F000:5480 ; =============== S U B R O U T I N E ======================================= F000:5480 F000:5480 F000:5480 SET_BRIDGE1 proc near ; CODE XREF: F000:2E89p F000:5480 F000:5480 ; FUNCTION CHUNK AT F000:C88E SIZE 0000000F BYTES F000:5480 ; FUNCTION CHUNK AT F000:C8AF SIZE 0000003B BYTES F000:5480 F000:5480 mov eax, 80009000h F000:5486 mov edx, 0 ; PCI bus 0, dev 12h, func 0, reg 0 (CS5530 bridge) F000:548C mov bx, 5492h ; read PCI VID&DID F000:548F jmp PCI_READ_EAX_EDX ; continue at CS:[5492h] F000:5492 ; --------------------------------------------------------------------------- F000:5492 cmp edx, 1001078h ; check if VID = 1078h & DID = 0100h F000:5499 jnz locret_F5608 ; if not then skip F000:549D mov eax, 80009000h ; PCI bus 0, dev 12h, func 0, reg 0 (CS5530 bridge) F000:54A3 mov edx, 0 F000:54A9 mov bx, 54AFh ; set PCI VID = 0 F000:54AC jmp PCI_READ_EAX_DX ; continue at CS:[54AFh] F000:54AF ; --------------------------------------------------------------------------- F000:54AF mov al, 34h ; '4' F000:54B1 mov ah, al F000:54B3 and eax, 0FF0h F000:54B9 shr al, 4 F000:54BC cmp al, 9 F000:54BE jle short loc_F54C4 F000:54C0 add al, 37h ; '7' F000:54C2 jmp short loc_F54C6 F000:54C4 ; --------------------------------------------------------------------------- F000:54C4 F000:54C4 loc_F54C4: ; CODE XREF: SET_BRIDGE1+3Ej F000:54C4 add al, 30h ; '0' F000:54C6 F000:54C6 loc_F54C6: ; CODE XREF: SET_BRIDGE1+42j F000:54C6 out 80h, al ; manufacture's diagnostic checkpoint F000:54C8 shl eax, 10h F000:54CC mov ax, 800h F000:54CF F000:54CF loc_F54CF: ; CODE XREF: SET_BRIDGE1+50j F000:54CF dec ax F000:54D0 jnz short loc_F54CF F000:54D2 shr eax, 10h F000:54D6 mov al, ah F000:54D8 cmp al, 9 F000:54DA jle short loc_F54E0 F000:54DC add al, 37h ; '7' F000:54DE jmp short loc_F54E2 F000:54E0 ; --------------------------------------------------------------------------- F000:54E0 F000:54E0 loc_F54E0: ; CODE XREF: SET_BRIDGE1+5Aj F000:54E0 add al, 30h ; '0' F000:54E2 F000:54E2 loc_F54E2: ; CODE XREF: SET_BRIDGE1+5Ej F000:54E2 out 80h, al ; manufacture's diagnostic checkpoint F000:54E4 mov ax, 800h F000:54E7 F000:54E7 loc_F54E7: ; CODE XREF: SET_BRIDGE1+68j F000:54E7 dec ax F000:54E8 jnz short loc_F54E7 F000:54EA mov al, 20h ; ' ' F000:54EC out 80h, al ; manufacture's diagnostic checkpoint F000:54EE mov ax, 800h F000:54F1 F000:54F1 loc_F54F1: ; CODE XREF: SET_BRIDGE1+72j F000:54F1 dec ax F000:54F2 jnz short loc_F54F1 F000:54F4 cmp dx, 1078h ; PCI VID F000:54F8 jnz locret_F5608 F000:54FC mov eax, 80009000h ; PCI bus 0, dev 12h, func 0, reg 0 (CS5530 bridge) F000:5502 mov edx, 0 ; write 0 to PCI VID F000:5508 mov bx, 550Eh F000:550B jmp PCI_WRITE_EAX_DL ; continue at CS:[550Eh] F000:550E ; --------------------------------------------------------------------------- F000:550E mov al, 36h ; '6' F000:5510 mov ah, al F000:5512 and eax, 0FF0h F000:5518 shr al, 4 F000:551B cmp al, 9 F000:551D jle short loc_F5523 F000:551F add al, 37h ; '7' F000:5521 jmp short loc_F5525 F000:5523 ; --------------------------------------------------------------------------- F000:5523 F000:5523 loc_F5523: ; CODE XREF: SET_BRIDGE1+9Dj F000:5523 add al, 30h ; '0' F000:5525 F000:5525 loc_F5525: ; CODE XREF: SET_BRIDGE1+A1j F000:5525 out 80h, al ; manufacture's diagnostic checkpoint F000:5527 shl eax, 10h F000:552B mov ax, 800h F000:552E F000:552E loc_F552E: ; CODE XREF: SET_BRIDGE1+AFj F000:552E dec ax F000:552F jnz short loc_F552E F000:5531 shr eax, 10h F000:5535 mov al, ah F000:5537 cmp al, 9 F000:5539 jle short loc_F553F F000:553B add al, 37h ; '7' F000:553D jmp short loc_F5541 F000:553F ; --------------------------------------------------------------------------- F000:553F F000:553F loc_F553F: ; CODE XREF: SET_BRIDGE1+B9j F000:553F add al, 30h ; '0' F000:5541 F000:5541 loc_F5541: ; CODE XREF: SET_BRIDGE1+BDj F000:5541 out 80h, al ; manufacture's diagnostic checkpoint F000:5543 mov ax, 800h F000:5546 F000:5546 loc_F5546: ; CODE XREF: SET_BRIDGE1+C7j F000:5546 dec ax F000:5547 jnz short loc_F5546 F000:5549 mov al, 20h ; ' ' F000:554B out 80h, al ; manufacture's diagnostic checkpoint F000:554D mov ax, 800h F000:5550 F000:5550 loc_F5550: ; CODE XREF: SET_BRIDGE1+D1j F000:5550 dec ax F000:5551 jnz short loc_F5550 F000:5553 cmp dl, 78h ; 'x' F000:5556 jnz locret_F5608 F000:555A mov edx, 12345678h F000:5560 mov eax, 80009110h ; PCI bus 0, dev 12h, func 1, reg 10h (CS5530 SMI & ACPI) F000:5566 mov bx, 556Ch ; set SMI Base Address Register = 12345678h F000:5569 jmp PCI_WRITE_EAX_EDX ; continue at CS:[556Ch] F000:556C ; --------------------------------------------------------------------------- F000:556C mov eax, 80009110h ; PCI bus 0, dev 12h, func 1, reg 10h (CS5530 SMI & ACPI) F000:5572 mov bx, 5578h ; read SMI Base Address Register F000:5575 jmp PCI_READ_EAX_EDX ; continue at CS:[5578h] F000:5578 ; --------------------------------------------------------------------------- F000:5578 cmp edx, 12345600h F000:557F jnz locret_F5608 F000:5583 mov dx, 9876h F000:5586 mov eax, 80009112h ; PCI bus 0, dev 12h, func 1, reg 12h (CS5530 SMI & ACPI) F000:558C mov bx, 5592h ; set SMI Base Address Register = 98765678h F000:558F jmp PCI_WRITE_EAX_DX ; continue at CS:[5592h] F000:5592 ; --------------------------------------------------------------------------- F000:5592 mov eax, 80009112h ; PCI bus 0, dev 12h, func 1, reg 12h (CS5530 SMI & ACPI) F000:5598 mov bx, 559Eh ; read SMI Base Address Register bits31:16 F000:559B jmp PCI_READ_EAX_DX ; continue at CS:[559Eh] F000:559E ; --------------------------------------------------------------------------- F000:559E mov al, 3Ah ; ':' F000:55A0 mov ah, al F000:55A2 and eax, 0FF0h F000:55A8 shr al, 4 F000:55AB cmp al, 9 F000:55AD jle short loc_F55B3 F000:55AF add al, 37h ; '7' F000:55B1 jmp short loc_F55B5 F000:55B3 ; --------------------------------------------------------------------------- F000:55B3 F000:55B3 loc_F55B3: ; CODE XREF: SET_BRIDGE1+12Dj F000:55B3 add al, 30h ; '0' F000:55B5 F000:55B5 loc_F55B5: ; CODE XREF: SET_BRIDGE1+131j F000:55B5 out 80h, al ; manufacture's diagnostic checkpoint F000:55B7 shl eax, 10h F000:55BB mov ax, 800h F000:55BE F000:55BE loc_F55BE: ; CODE XREF: SET_BRIDGE1+13Fj F000:55BE dec ax F000:55BF jnz short loc_F55BE F000:55C1 shr eax, 10h F000:55C5 mov al, ah F000:55C7 cmp al, 9 F000:55C9 jle short loc_F55CF F000:55CB add al, 37h ; '7' F000:55CD jmp short loc_F55D1 F000:55CF ; --------------------------------------------------------------------------- F000:55CF F000:55CF loc_F55CF: ; CODE XREF: SET_BRIDGE1+149j F000:55CF add al, 30h ; '0' F000:55D1 F000:55D1 loc_F55D1: ; CODE XREF: SET_BRIDGE1+14Dj F000:55D1 out 80h, al ; manufacture's diagnostic checkpoint F000:55D3 mov ax, 800h F000:55D6 F000:55D6 loc_F55D6: ; CODE XREF: SET_BRIDGE1+157j F000:55D6 dec ax F000:55D7 jnz short loc_F55D6 F000:55D9 mov al, 20h ; ' ' F000:55DB out 80h, al ; manufacture's diagnostic checkpoint F000:55DD mov ax, 800h F000:55E0 F000:55E0 loc_F55E0: ; CODE XREF: SET_BRIDGE1+161j F000:55E0 dec ax F000:55E1 jnz short loc_F55E0 F000:55E3 cmp dx, 9876h F000:55E7 jnz short locret_F5608 F000:55E9 mov dl, 0A5h ; '¹' F000:55EB mov eax, 80009113h ; PCI bus 0, dev 12h, func 1, reg 13h (CS5530 SMI & ACPI) F000:55F1 mov bx, 55F7h ; set SMI Base Address Register = A5765678h F000:55F4 jmp PCI_WRITE_EAX_CL ; continue at CS:[55F7h] F000:55F7 ; --------------------------------------------------------------------------- F000:55F7 mov eax, 80009113h ; PCI bus 0, dev 12h, func 1, reg 13h (CS5530 SMI & ACPI) F000:55FD mov bx, 5603h ; read SMI Base Address Register bits31:24 F000:5600 jmp PCI_WRITE_EAX_DL ; continue at CS:[5603h] F000:5603 ; --------------------------------------------------------------------------- F000:5603 cmp dl, 0A5h ; '¹' F000:5606 jz short $+2 F000:5608 F000:5608 locret_F5608: ; CODE XREF: SET_BRIDGE1+19j F000:5608 ; SET_BRIDGE1+78j ... F000:5608 retn F000:5608 SET_BRIDGE1 endp F000:5608 F000:5609 F000:5609 ; =============== S U B R O U T I N E ======================================= F000:5609 F000:5609 F000:5609 SET_IDE1 proc near ; CODE XREF: F000:2E8Cp F000:5609 F000:5609 ; FUNCTION CHUNK AT F000:C89D SIZE 00000012 BYTES F000:5609 F000:5609 mov edx, 5000h F000:560F mov eax, 80009220h ; PCI bus 0, dev 12h, func 2, reg 20h (CS5530 IDE interface) F000:5615 mov bx, 561Bh ; write 5000h to IDE0 IO base register F000:5618 jmp PCI_WRITE_EAX_EDX ; continue at CS:[561Bh] F000:5618 SET_IDE1 endp F000:5618 F000:561B ; --------------------------------------------------------------------------- F000:561B mov eax, 80009204h ; PCI bus 0, dev 12h, func 2, reg 4 (CS5530 IDE interface) F000:5621 mov bx, 5627h ; read IDE Bus Master 0 PRD Table Address F000:5624 jmp PCI_READ_EAX_EDX ; continue at CS:[5627h] F000:5627 ; --------------------------------------------------------------------------- F000:5627 or edx, 1 ; set bit0 F000:562B mov eax, 80009204h ; PCI bus 0, dev 12h, func 2, reg 4 (CS5530 IDE interface) F000:5631 mov bx, 5637h ; update IDE Bus Master 0 PRD Table Address F000:5634 jmp PCI_WRITE_EAX_EDX ; continue at CS:[5637h] F000:5637 ; --------------------------------------------------------------------------- F000:5637 mov dx, 5014h ; write to IDE0 IO F000:563A mov eax, 0A5A5A5A5h F000:5640 out dx, eax F000:5642 xor eax, eax F000:5645 in eax, dx F000:5647 mov ecx, eax F000:564A cmp ecx, 0A5A5A5A5h F000:5651 jnz short SET_IDE1_FAILED F000:5653 add dx, 2 F000:5656 mov ax, 5A5Ah F000:5659 out dx, ax F000:565A xor eax, eax F000:565D in ax, dx F000:565E mov cx, ax F000:5660 cmp cx, 5A5Ah F000:5664 jnz short SET_IDE1_FAILED F000:5666 add dx, 1 F000:5669 mov al, 0A5h ; '¹' F000:566B out dx, al F000:566C xor eax, eax F000:566F in al, dx F000:5670 mov cl, al F000:5672 cmp cl, 0A5h ; '¹' F000:5675 jnz short SET_IDE1_FAILED F000:5677 mov eax, 80009204h ; PCI bus 0, dev 12h, func 2, reg 4 (CS5530 IDE interface) F000:567D mov bx, 5683h ; read IDE Bus Master 0 PRD Table Address F000:5680 jmp PCI_READ_EAX_EDX ; continue at CS:[5683h] F000:5683 ; --------------------------------------------------------------------------- F000:5683 and edx, 0FFFFFFFEh ; clear bit0 F000:5687 mov eax, 80009204h ; PCI bus 0, dev 12h, func 2, reg 4 (CS5530 IDE interface) F000:568D mov bx, 5693h ; update IDE Bus Master 0 PRD Table Address F000:5690 jmp PCI_WRITE_EAX_EDX ; continue at CS:[5693h] F000:5693 ; --------------------------------------------------------------------------- F000:5693 mov edx, 0 F000:5699 mov eax, 80009220h ; PCI bus 0, dev 12h, func 2, reg 20h (CS5530 IDE interface) F000:569F mov bx, 56A5h ; write 0 to IDE0 IO base register F000:56A2 jmp PCI_WRITE_EAX_EDX ; continue at CS:[56A5h] F000:56A5 ; --------------------------------------------------------------------------- F000:56A5 jmp short SET_IDE1_END F000:56A7 ; --------------------------------------------------------------------------- F000:56A7 F000:56A7 SET_IDE1_FAILED: ; CODE XREF: F000:5651j F000:56A7 ; F000:5664j ... F000:56A7 mov al, 14h F000:56A9 jmp loc_F4ED1 F000:56AC ; --------------------------------------------------------------------------- F000:56AC F000:56AC SET_IDE1_END: ; CODE XREF: F000:56A5j F000:56AC retn F000:56AD F000:56AD ; =============== S U B R O U T I N E ======================================= F000:56AD F000:56AD ; Audio Base Address = C0000000h F000:56AD F000:56AD SET_AUDIO proc near ; CODE XREF: F000:2E8Fp F000:56AD mov edx, 0C0000000h F000:56B3 mov eax, 80009310h ; PCI bus 0, dev 12h, func 3, reg 10h (CS5530 Multimedia audio controller) F000:56B9 mov bx, 56BFh ; write C0000000h to reg. 10h F000:56BC jmp PCI_WRITE_EAX_EDX ; continue at CS:[56BFh] F000:56BC SET_AUDIO endp F000:56BC F000:56BF ; --------------------------------------------------------------------------- F000:56BF mov eax, 80009304h ; PCI bus 0, dev 12h, func 3, reg 4 (CS5530 Multimedia audio controller) F000:56C5 mov bx, 56CBh ; read reg. 4 to EDX F000:56C8 jmp PCI_READ_EAX_EDX ; continue at CS:[56CBh] F000:56CB ; --------------------------------------------------------------------------- F000:56CB or edx, 2 ; set bit1 F000:56CF mov eax, 80009304h ; PCI bus 0, dev 12h, func 3, reg 4 (CS5530 Multimedia audio controller) F000:56D5 mov bx, 56DBh ; update reg. 4 F000:56D8 jmp PCI_WRITE_EAX_EDX ; continue at CS:[56DBh] F000:56DB ; --------------------------------------------------------------------------- F000:56DB mov esi, 0C0000024h F000:56E1 mov dword ptr es:[esi], 5A5A5A5Ah F000:56EA xor eax, eax F000:56ED mov eax, es:[esi] F000:56F2 mov ecx, eax F000:56F5 cmp ecx, 5A5A5A5Ah F000:56FC jnz short HALT_CPU2 F000:56FE add si, 2 F000:5701 mov ax, 0A5A5h F000:5704 mov es:[esi], ax F000:5708 xor eax, eax F000:570B mov ax, es:[esi] F000:570F mov cx, ax F000:5711 cmp cx, 0A5A5h F000:5715 jnz short HALT_CPU2 F000:5717 add si, 1 F000:571A mov al, 5Ah ; 'Z' F000:571C mov es:[esi], al F000:5720 xor eax, eax F000:5723 mov al, es:[esi] F000:5727 mov cl, al F000:5729 cmp cl, 5Ah ; 'Z' F000:572C jnz short HALT_CPU2 F000:572E mov eax, 80009304h ; PCI bus 0, dev 12h, func 3, reg 4 (CS5530 Multimedia audio controller) F000:5734 mov bx, 573Ah ; read reg. 4 to EDX F000:5737 jmp PCI_READ_EAX_EDX ; continue at CS:[573Ah] F000:573A ; --------------------------------------------------------------------------- F000:573A and edx, 0FFFFFFFCh ; clear bit1:0 F000:573E mov eax, 80009304h ; PCI bus 0, dev 12h, func 3, reg 4 (CS5530 Multimedia audio controller) F000:5744 mov bx, 574Ah ; update reg. 4 F000:5747 jmp PCI_WRITE_EAX_EDX ; continue at CS:[574Ah] F000:574A ; --------------------------------------------------------------------------- F000:574A mov edx, 0 ; Audio Base Address = 0 F000:5750 mov eax, 80009310h ; PCI bus 0, dev 12h, func 3, reg 10h (CS5530 Multimedia audio controller) F000:5756 mov bx, 575Ch ; write 0 to reg. 10h F000:5759 jmp PCI_WRITE_EAX_EDX ; continue at CS:[575Ch] F000:575C ; --------------------------------------------------------------------------- F000:575C jmp short SET_AUDIO_END F000:575E ; --------------------------------------------------------------------------- F000:575E F000:575E HALT_CPU2: ; CODE XREF: F000:56FCj F000:575E ; F000:5715j ... F000:575E hlt F000:575F ; --------------------------------------------------------------------------- F000:575F F000:575F SET_AUDIO_END: ; CODE XREF: F000:575Cj F000:575F retn F000:575F ; --------------------------------------------------------------------------- F000:5760 db 0 F000:5761 db 78h ; x F000:5762 db 0 F000:5763 db 1 F000:5764 db 10h F000:5765 db 0 F000:5766 db 0 F000:5767 db 1 F000:5768 db 11h F000:5769 db 0 F000:576A db 0F8h ; ° F000:576B db 1 F000:576C db 3Ch ; < F000:576D db 0 F000:576E db 0Ah F000:576F db 1 F000:5770 db 4 F000:5771 db 0FFh F000:5772 db 7 F000:5773 db 0 F000:5774 db 90h ; É F000:5775 db 0 F000:5776 db 1 F000:5777 db 5Ch ; \ F000:5778 db 0 F000:5779 db 0E6h ; Š F000:577A db 1 F000:577B db 5Dh ; ] F000:577C db 0 F000:577D db 0AAh ; ¬ F000:577E db 1 F000:577F db 43h ; C F000:5780 db 0FEh ; ¦ F000:5781 db 1 F000:5782 db 0 F000:5783 db 98h ; œ F000:5784 db 0 F000:5785 db 1 F000:5786 db 4 F000:5787 db 0FFh F000:5788 db 7 F000:5789 db 1 F000:578A db 10h F000:578B db 0 F000:578C db 0 F000:578D db 1 F000:578E db 11h F000:578F db 0 F000:5790 db 0C0h ; L F000:5791 db 1 F000:5792 db 12h F000:5793 db 0 F000:5794 db 0Ch F000:5795 db 1 F000:5796 db 13h F000:5797 db 0 F000:5798 db 0 F000:5799 db 1 F000:579A db 3Ch ; < F000:579B db 0 F000:579C db 6 F000:579D db 2 F000:579E F000:579E ; =============== S U B R O U T I N E ======================================= F000:579E F000:579E F000:579E SET_IO_224h proc near ; CODE XREF: F000:2FA5p F000:579E mov dx, 224h F000:57A1 mov al, 80h ; 'Ç' F000:57A3 out dx, al ; 80h -> IO port 224h F000:57A4 inc dx F000:57A5 in al, dx ; AL <- IO port 225h F000:57A6 and al, 0F0h ; mask bits7:4 F000:57A8 or al, 2 ; set bit 1 F000:57AA out dx, al F000:57AB dec dx F000:57AC mov al, 81h ; 'ü' F000:57AE out dx, al ; 81h -> IO port 224h F000:57AF inc dx F000:57B0 mov al, 20h ; ' ' F000:57B2 out dx, al ; 20h -> IO port 225h F000:57B3 retn F000:57B3 SET_IO_224h endp F000:57B3 F000:57B4 F000:57B4 ; =============== S U B R O U T I N E ======================================= F000:57B4 F000:57B4 F000:57B4 sub_F57B4 proc near ; CODE XREF: F000:2F28p F000:57B4 push si F000:57B5 push bx F000:57B6 push di F000:57B7 mov si, 5760h F000:57BA F000:57BA loc_F57BA: ; CODE XREF: sub_F57B4+17j F000:57BA movzx bx, byte ptr cs:[si] ; F000:5760h = 0 F000:57BE inc si F000:57BF cmp bx, 1 F000:57C2 ja short loc_F57D1 F000:57C4 shl bx, 1 F000:57C6 call cs:off_F57CD[bx] F000:57CB jmp short loc_F57BA ; F000:5760h = 0 F000:57CB ; --------------------------------------------------------------------------- F000:57CD off_F57CD dw offset sub_F57DC ; DATA XREF: sub_F57B4+12r F000:57CF dw offset sub_F57EC F000:57D1 ; --------------------------------------------------------------------------- F000:57D1 F000:57D1 loc_F57D1: ; CODE XREF: sub_F57B4+Ej F000:57D1 mov dx, 4D0h F000:57D4 mov ax, 4440h F000:57D7 out dx, ax F000:57D8 pop di F000:57D9 pop bx F000:57DA pop si F000:57DB retn F000:57DB sub_F57B4 endp F000:57DB F000:57DC F000:57DC ; =============== S U B R O U T I N E ======================================= F000:57DC F000:57DC F000:57DC sub_F57DC proc near ; CODE XREF: sub_F57B4+12p F000:57DC ; DATA XREF: sub_F57B4:off_F57CDo F000:57DC mov al, 80h ; 'Ç' F000:57DE shl eax, 10h F000:57E2 lods word ptr cs:[si] F000:57E4 shl eax, 8 F000:57E8 mov edx, eax F000:57EB retn F000:57EB sub_F57DC endp F000:57EB F000:57EC F000:57EC ; =============== S U B R O U T I N E ======================================= F000:57EC F000:57EC F000:57EC sub_F57EC proc near ; CODE XREF: sub_F57B4+12p F000:57EC ; DATA XREF: sub_F57B4+1Bo F000:57EC mov dl, cs:[si] F000:57EF call sub_F5801 F000:57F2 and al, cs:[si+1] F000:57F6 or al, cs:[si+2] F000:57FA call sub_F5822 F000:57FD add si, 3 F000:5800 retn F000:5800 sub_F57EC endp F000:5800 F000:5801 F000:5801 ; =============== S U B R O U T I N E ======================================= F000:5801 F000:5801 F000:5801 sub_F5801 proc near ; CODE XREF: sub_F57EC+3p F000:5801 push edx F000:5803 push cx F000:5804 mov eax, edx F000:5807 mov cl, al F000:5809 and al, 0FCh F000:580B mov dx, 0CF8h F000:580E out dx, eax F000:5810 mov dx, 0CFCh F000:5813 in eax, dx F000:5815 and cl, 3 F000:5818 shl cl, 3 F000:581B shr eax, cl F000:581E pop cx F000:581F pop edx F000:5821 retn F000:5821 sub_F5801 endp F000:5821 F000:5822 F000:5822 ; =============== S U B R O U T I N E ======================================= F000:5822 F000:5822 F000:5822 sub_F5822 proc near ; CODE XREF: sub_F57EC+Ep F000:5822 push edx F000:5824 push eax F000:5826 push cx F000:5827 mov ch, al F000:5829 mov eax, edx F000:582C mov cl, al F000:582E and al, 0FCh F000:5830 mov dx, 0CF8h F000:5833 out dx, eax F000:5835 mov dx, 0CFCh F000:5838 in eax, dx F000:583A and cl, 3 F000:583D shl cl, 3 F000:5840 ror eax, cl F000:5843 mov al, ch F000:5845 rol eax, cl F000:5848 out dx, eax F000:584A pop cx F000:584B pop eax F000:584D pop edx F000:584F retn F000:584F sub_F5822 endp F000:584F F000:5850 F000:5850 ; =============== S U B R O U T I N E ======================================= F000:5850 F000:5850 F000:5850 SET_INTVECT proc near ; CODE XREF: F000:2EB5j F000:5850 push bx F000:5851 push ax F000:5852 push ds F000:5853 push 0 F000:5855 pop ds ; DS = 0 F000:5856 mov bx, 0 ; BX = 0 F000:5859 F000:5859 loc_F5859: ; CODE XREF: SET_INTVECT+18j F000:5859 mov ax, 534h ; AX = 0534h F000:585C mov [bx], ax ; [0000:0000] = 0534h F000:585E mov word ptr [bx+2], cs ; [0000:0000] = CS:0534h (INT0 - division by zero vector) F000:5861 add bx, 4 ; BX = 4 F000:5864 cmp bx, 400h F000:5868 jnz short loc_F5859 ; setup some vectors CS:xxxx F000:586A mov large word ptr ds:54h, offset word_F0564 ; = 89E9h F000:5873 mov large word ptr ds:56h, cs ; [0000:0054h] = CS:89E9h - INT15h F000:587A mov large word ptr ds:20h, offset word_F0567 ; = 1CE9h F000:5883 mov large word ptr ds:22h, cs ; [0000:0020h] = CS:1CE9h - INT8h F000:588A mov large word ptr ds:0C8h, offset word_F056A ; = 13E9h F000:5893 mov large word ptr ds:0CAh, cs ; [0000:00C8h] = CS:13E9h - INT32h F000:589A call SET_INTCTL1 ; set interrupt controller F000:589D sti ; global enable interrupts F000:589E pop ds F000:589F assume ds:nothing F000:589F pop ax F000:58A0 pop bx F000:58A1 jmp bx F000:58A1 SET_INTVECT endp F000:58A1 F000:58A3 F000:58A3 ; =============== S U B R O U T I N E ======================================= F000:58A3 F000:58A3 F000:58A3 sub_F58A3 proc far ; CODE XREF: F000:0534j F000:58A3 push ax F000:58A4 mov al, 20h ; ' ' F000:58A6 out 0A0h, al ; PIC 2 same as 0020 for PIC 1 F000:58A8 mov al, 20h ; ' ' F000:58AA out 20h, al ; Interrupt controller, 8259A. F000:58AC pop ax F000:58AD iret F000:58AD sub_F58A3 endp F000:58AD F000:58AD ; --------------------------------------------------------------------------- F000:58AE db 0 F000:58AF db 0 F000:58B0 off_F58B0 dw offset sub_F58FC ; DATA XREF: sub_F58D0+24r F000:58B2 dw offset sub_F5912 F000:58B4 dw offset sub_F591E F000:58B6 dw offset sub_F5925 F000:58B8 dw offset sub_F592F F000:58BA dw offset sub_F5939 F000:58BC dw offset sub_F5939 F000:58BE dw offset sub_F5939 F000:58C0 dw offset sub_F5939 F000:58C2 dw offset sub_F5939 F000:58C4 dw offset sub_F5939 F000:58C6 dw offset sub_F5939 F000:58C8 dw offset sub_F5939 F000:58CA dw offset sub_F5939 F000:58CC dw offset sub_F595E F000:58CE dw offset sub_F594B F000:58D0 F000:58D0 ; =============== S U B R O U T I N E ======================================= F000:58D0 F000:58D0 F000:58D0 sub_F58D0 proc near ; CODE XREF: sub_F2FF0+6p F000:58D0 cmp bx, 4358h F000:58D4 jnz short loc_F58FA F000:58D6 cmp ax, 0BF00h F000:58D9 jz short loc_F58E6 F000:58DB cmp ax, 0BF01h F000:58DE jnz short loc_F58FA F000:58E0 mov dx, 0 F000:58E3 jmp short loc_F590A F000:58E3 ; --------------------------------------------------------------------------- F000:58E5 db 0C3h ; + F000:58E6 ; --------------------------------------------------------------------------- F000:58E6 F000:58E6 loc_F58E6: ; CODE XREF: sub_F58D0+9j F000:58E6 cmp ch, 10h F000:58E9 jnb short loc_F58FA F000:58EB mov di, cx F000:58ED shr di, 7 F000:58F0 and di, 0FEh F000:58F4 call cs:off_F58B0[di] F000:58F9 retn F000:58FA ; --------------------------------------------------------------------------- F000:58FA F000:58FA loc_F58FA: ; CODE XREF: sub_F58D0+4j F000:58FA ; sub_F58D0+Ej ... F000:58FA stc F000:58FB retn F000:58FB sub_F58D0 endp F000:58FB F000:58FC F000:58FC ; =============== S U B R O U T I N E ======================================= F000:58FC F000:58FC F000:58FC sub_F58FC proc near ; CODE XREF: sub_F58D0+24p F000:58FC ; DATA XREF: F000:off_F58B0o F000:58FC cmp cl, 1 F000:58FF ja short loc_F58FA F000:5901 mov dl, 3 F000:5903 xor dh, dh F000:5905 shl dx, 1 F000:5907 or dx, 1 F000:590A F000:590A loc_F590A: ; CODE XREF: sub_F58D0+13j F000:590A ; sub_F5912+Aj ... F000:590A mov [bp+0Eh], dx F000:590D mov [bp+12h], ax F000:5910 clc F000:5911 retn F000:5911 sub_F58FC endp F000:5911 F000:5912 F000:5912 ; =============== S U B R O U T I N E ======================================= F000:5912 F000:5912 F000:5912 sub_F5912 proc near ; CODE XREF: sub_F58D0+24p F000:5912 ; DATA XREF: F000:58B2o F000:5912 mov ax, 12h F000:5915 mov dx, ax F000:5917 shl dx, 1 F000:5919 or dl, 1 F000:591C jmp short loc_F590A F000:591C sub_F5912 endp F000:591C F000:591E F000:591E ; =============== S U B R O U T I N E ======================================= F000:591E F000:591E F000:591E sub_F591E proc near ; CODE XREF: sub_F58D0+24p F000:591E ; DATA XREF: F000:58B4o F000:591E mov dx, 523h F000:5921 jmp short loc_F590A F000:5921 sub_F591E endp F000:5921 F000:5921 ; --------------------------------------------------------------------------- F000:5923 db 0F8h ; ° F000:5924 db 0C3h ; + F000:5925 F000:5925 ; =============== S U B R O U T I N E ======================================= F000:5925 F000:5925 F000:5925 sub_F5925 proc near ; CODE XREF: sub_F58D0+24p F000:5925 ; DATA XREF: F000:58B6o F000:5925 cmp cl, 1 F000:5928 ja short loc_F58FA F000:592A mov dx, 0 F000:592D jmp short loc_F590A F000:592D sub_F5925 endp F000:592D F000:592F F000:592F ; =============== S U B R O U T I N E ======================================= F000:592F F000:592F F000:592F sub_F592F proc near ; CODE XREF: sub_F58D0+24p F000:592F ; DATA XREF: F000:58B8o F000:592F cmp cl, 1 F000:5932 ja short loc_F58FA F000:5934 mov dx, 0 F000:5937 jmp short loc_F590A F000:5937 sub_F592F endp F000:5937 F000:5939 F000:5939 ; =============== S U B R O U T I N E ======================================= F000:5939 F000:5939 F000:5939 sub_F5939 proc near ; CODE XREF: sub_F58D0+24p F000:5939 ; DATA XREF: F000:58BAo ... F000:5939 xor dx, dx F000:593B jmp short loc_F590A F000:593B sub_F5939 endp F000:593B F000:593B ; --------------------------------------------------------------------------- F000:593D db 0F9h ; ¨ F000:593E db 0C3h ; + F000:593F off_F593F dw offset sub_F5963 ; DATA XREF: sub_F594B+Dr F000:5941 dw offset sub_F5968 F000:5943 dw offset sub_F596D F000:5945 dw offset sub_F5972 F000:5947 dw offset sub_F5977 F000:5949 dw offset sub_F597C F000:594B F000:594B ; =============== S U B R O U T I N E ======================================= F000:594B F000:594B F000:594B sub_F594B proc near ; CODE XREF: sub_F58D0+24p F000:594B ; DATA XREF: F000:58CEo F000:594B cmp cl, 6 F000:594E jnb short loc_F58FA F000:5950 mov di, cx F000:5952 shl di, 1 F000:5954 and di, 0FEh F000:5958 call cs:off_F593F[di] F000:595D retn F000:595D sub_F594B endp F000:595D F000:595E F000:595E ; =============== S U B R O U T I N E ======================================= F000:595E F000:595E F000:595E sub_F595E proc near ; CODE XREF: sub_F58D0+24p F000:595E ; DATA XREF: F000:58CCo F000:595E mov dx, 0 F000:5961 jmp short loc_F590A F000:5961 sub_F595E endp F000:5961 F000:5963 F000:5963 ; =============== S U B R O U T I N E ======================================= F000:5963 F000:5963 F000:5963 sub_F5963 proc near ; CODE XREF: sub_F594B+Dp F000:5963 ; DATA XREF: F000:off_F593Fo F000:5963 mov dx, 0 F000:5966 jmp short loc_F590A F000:5966 sub_F5963 endp F000:5966 F000:5968 F000:5968 ; =============== S U B R O U T I N E ======================================= F000:5968 F000:5968 F000:5968 sub_F5968 proc near ; CODE XREF: sub_F594B+Dp F000:5968 ; DATA XREF: F000:5941o F000:5968 mov dx, 0 F000:596B jmp short loc_F590A F000:596B sub_F5968 endp F000:596B F000:596D F000:596D ; =============== S U B R O U T I N E ======================================= F000:596D F000:596D F000:596D sub_F596D proc near ; CODE XREF: sub_F594B+Dp F000:596D ; DATA XREF: F000:5943o F000:596D mov dx, 0 F000:5970 jmp short loc_F590A F000:5970 sub_F596D endp F000:5970 F000:5972 F000:5972 ; =============== S U B R O U T I N E ======================================= F000:5972 F000:5972 F000:5972 sub_F5972 proc near ; CODE XREF: sub_F594B+Dp F000:5972 ; DATA XREF: F000:5945o F000:5972 mov dx, 0 F000:5975 jmp short loc_F590A F000:5975 sub_F5972 endp F000:5975 F000:5977 F000:5977 ; =============== S U B R O U T I N E ======================================= F000:5977 F000:5977 F000:5977 sub_F5977 proc near ; CODE XREF: sub_F594B+Dp F000:5977 ; DATA XREF: F000:5947o F000:5977 mov dx, 0 F000:597A jmp short loc_F590A F000:597A sub_F5977 endp F000:597A F000:597C F000:597C ; =============== S U B R O U T I N E ======================================= F000:597C F000:597C F000:597C sub_F597C proc near ; CODE XREF: sub_F594B+Dp F000:597C ; DATA XREF: F000:5949o F000:597C mov dx, 0 F000:597F jmp short loc_F590A F000:597F sub_F597C endp F000:597F F000:597F ; --------------------------------------------------------------------------- F000:5981 db 0Fh dup(0) F000:5990 F000:5990 ; =============== S U B R O U T I N E ======================================= F000:5990 F000:5990 F000:5990 PCI_WRITE_REGS proc near ; CODE XREF: PCI_WR_LOOP+9p F000:5990 ; PCI_WR_LOOP+13p F000:5990 F000:5990 ; FUNCTION CHUNK AT F000:C8EA SIZE 00000016 BYTES F000:5990 F000:5990 mov eax, 80009000h F000:5996 mov ah, 90h ; 'É' ; PCI bus 0, dev 12h, func 0, reg 0 (CS5530 ISA bridge) F000:5998 F000:5998 PCI_reg_loop: ; CODE XREF: PCI_WRITE_REGS:skip_PCIj F000:5998 mov al, cs:[si] F000:599B inc si F000:599C mov dl, cs:[si] F000:599F inc si F000:59A0 cmp al, 0FFh F000:59A2 jnz short set_PCI F000:59A4 cmp dl, 0FFh F000:59A7 jnz short set_PCI F000:59A9 inc ah F000:59AB jmp short skip_PCI F000:59AD ; --------------------------------------------------------------------------- F000:59AD F000:59AD set_PCI: ; CODE XREF: PCI_WRITE_REGS+12j F000:59AD ; PCI_WRITE_REGS+17j F000:59AD push edx F000:59AF push eax F000:59B1 push ecx F000:59B3 mov bx, 59B9h F000:59B6 jmp PCI_WRITE_EAX_CL ; continue at CS:[59B9h] F000:59B9 ; --------------------------------------------------------------------------- F000:59B9 pop ecx F000:59BB pop eax F000:59BD pop edx F000:59BF F000:59BF skip_PCI: ; CODE XREF: PCI_WRITE_REGS+1Bj F000:59BF loop PCI_reg_loop F000:59C1 retn F000:59C1 PCI_WRITE_REGS endp F000:59C1 F000:59C2 F000:59C2 ; =============== S U B R O U T I N E ======================================= F000:59C2 F000:59C2 F000:59C2 PCI_WR_LOOP proc near ; CODE XREF: F000:2E4Dp F000:59C2 ; F000:2EA7p F000:59C2 pushf F000:59C3 push bx F000:59C4 mov cx, 43h ; 'C' ; count = 67 F000:59C7 lea si, ds:0CE80h F000:59CB call PCI_WRITE_REGS F000:59CE mov cx, 3 ; count = 3 F000:59D1 lea si, ds:0CF10h F000:59D5 call PCI_WRITE_REGS F000:59D8 pop bx F000:59D9 popf F000:59DA retn F000:59DA PCI_WR_LOOP endp F000:59DA F000:59DA ; --------------------------------------------------------------------------- F000:59DB db 5 dup(0) F000:59E0 F000:59E0 ; =============== S U B R O U T I N E ======================================= F000:59E0 F000:59E0 F000:59E0 sub_F59E0 proc near ; CODE XREF: sub_F59F5+7p F000:59E0 ; sub_F5A02+7p ... F000:59E0 mov dx, 0CF8h F000:59E3 mov eax, 800090D0h F000:59E9 out dx, eax F000:59EB mov dx, 0CFCh F000:59EE mov ax, 0FFF0h F000:59F1 out dx, ax F000:59F2 nop F000:59F3 nop F000:59F4 retn F000:59F4 sub_F59E0 endp F000:59F4 F000:59F5 F000:59F5 ; =============== S U B R O U T I N E ======================================= F000:59F5 F000:59F5 F000:59F5 sub_F59F5 proc near F000:59F5 push di F000:59F6 push cx F000:59F7 mov di, ax F000:59F9 mov si, 2 F000:59FC call sub_F59E0 F000:59FF pop cx F000:5A00 pop di F000:5A01 retn F000:5A01 sub_F59F5 endp F000:5A01 F000:5A02 F000:5A02 ; =============== S U B R O U T I N E ======================================= F000:5A02 F000:5A02 F000:5A02 sub_F5A02 proc near ; CODE XREF: sub_F5C13+33p F000:5A02 push si F000:5A03 push cx F000:5A04 push ax F000:5A05 push dx F000:5A06 mov si, 8 F000:5A09 call sub_F59E0 F000:5A0C pop dx F000:5A0D pop ax F000:5A0E pop cx F000:5A0F pop si F000:5A10 retn F000:5A10 sub_F5A02 endp F000:5A10 F000:5A10 ; --------------------------------------------------------------------------- F000:5A11 db 0 F000:5A12 db 0 F000:5A13 db 0 F000:5A14 db 0 F000:5A15 db 0 F000:5A16 db 0 F000:5A17 db 0 F000:5A18 db 0 F000:5A19 db 0 F000:5A1A db 0 F000:5A1B db 0 F000:5A1C db 0 F000:5A1D db 0 F000:5A1E db 0 F000:5A1F db 0 F000:5A20 db 1 F000:5A21 db 3 F000:5A22 db 0D9h ; - F000:5A23 db 1 F000:5A24 db 0FFh F000:5A25 db 18h F000:5A26 db 2 F000:5A27 db 0DFh ; - F000:5A28 db 1 F000:5A29 db 20h F000:5A2A F000:5A2A ; =============== S U B R O U T I N E ======================================= F000:5A2A F000:5A2A F000:5A2A sub_F5A2A proc near ; CODE XREF: sub_FDBF0+9p F000:5A2A ; sub_FDC40+9p ... F000:5A2A push bx F000:5A2B mov bx, fs:0F22h F000:5A30 call word ptr cs:[bx] F000:5A33 pop bx F000:5A34 retn F000:5A34 sub_F5A2A endp F000:5A34 F000:5A35 F000:5A35 ; =============== S U B R O U T I N E ======================================= F000:5A35 F000:5A35 F000:5A35 sub_F5A35 proc near ; CODE XREF: sub_FCF70+Cp F000:5A35 ; sub_FDF00+9p F000:5A35 push bx F000:5A36 xor ah, ah F000:5A38 shl ax, 1 F000:5A3A add ax, 0CF45h F000:5A3D mov bx, ax F000:5A3F mov bx, cs:[bx] F000:5A42 call word ptr cs:[bx] F000:5A45 pop bx F000:5A46 retn F000:5A46 sub_F5A35 endp F000:5A46 F000:5A47 F000:5A47 ; =============== S U B R O U T I N E ======================================= F000:5A47 F000:5A47 F000:5A47 sub_F5A47 proc near ; CODE XREF: F000:4BE0p F000:5A47 mov bx, 0CF41h F000:5A4A F000:5A4A loc_F5A4A: ; CODE XREF: sub_F5A47+13j F000:5A4A mov dl, cs:[bx] F000:5A4D add dl, 1 F000:5A50 jz short locret_F5A5D F000:5A52 dec dl F000:5A54 inc bx F000:5A55 call sub_FCF70 F000:5A58 or ax, ax F000:5A5A jz short loc_F5A4A F000:5A5C clc F000:5A5D F000:5A5D locret_F5A5D: ; CODE XREF: sub_F5A47+9j F000:5A5D retn F000:5A5D sub_F5A47 endp F000:5A5D F000:5A5D ; --------------------------------------------------------------------------- F000:5A5E aFlashMemoryCor db 'Flash Memory Corrupted',0 F000:5A75 aTheTerminalSFl db 'The terminal',27h,'s flash file system has been corrupted. Normally' F000:5A75 db ', this problem can be corrected by reloading the terminal',27h,'s fi' F000:5A75 db 'rmware.',0Ah,0 F000:5AFA aProblemTooMany db ' PROBLEM: Too many bad flash memory blocks.',0 F000:5B28 ; --------------------------------------------------------------------------- F000:5B28 call sub_F799D F000:5B2B retn F000:5B2C F000:5B2C ; =============== S U B R O U T I N E ======================================= F000:5B2C F000:5B2C F000:5B2C sub_F5B2C proc near F000:5B2C pushad F000:5B2E pushf F000:5B2F push ds F000:5B30 push es F000:5B31 cld F000:5B32 call sub_FD019 F000:5B35 cli F000:5B36 xor dl, dl F000:5B38 push esi F000:5B3A call sub_F799D F000:5B3D pop esi F000:5B3F cmp dword ptr fs:0F5Fh, 30323043h F000:5B49 jnz loc_F5C01 F000:5B4D mov edi, 30000h F000:5B53 cmp word ptr [esi], 0AA55h F000:5B58 jnz short loc_F5B63 F000:5B5A call sub_F61B2 F000:5B5D jnz loc_F5C01 F000:5B61 jmp short loc_F5B7C F000:5B63 ; --------------------------------------------------------------------------- F000:5B63 F000:5B63 loc_F5B63: ; CODE XREF: sub_F5B2C+2Cj F000:5B63 mov edi, 38000h F000:5B69 cmp byte ptr [esi+7FF0h], 0E9h ; 'Ú' F000:5B71 jnz loc_F5C01 F000:5B75 call sub_F61D7 F000:5B78 jnz loc_F5C01 F000:5B7C F000:5B7C loc_F5B7C: ; CODE XREF: sub_F5B2C+35j F000:5B7C sub esi, 8000h F000:5B83 mov ax, 50h ; 'P' F000:5B86 mov es, ax F000:5B88 assume es:nothing F000:5B88 mov ax, 18h F000:5B8B mov ds, ax F000:5B8D assume ds:nothing F000:5B8D mov ecx, 80h ; 'Ç' F000:5B93 F000:5B93 loc_F5B93: ; CODE XREF: sub_F5B2C+C9j F000:5B93 push ecx F000:5B95 push esi F000:5B97 push edi F000:5B99 mov ecx, 40h ; '@' F000:5B9F repe cmps dword ptr [esi], dword ptr es:[edi] F000:5BA3 pop edi F000:5BA5 pop esi F000:5BA7 jz short loc_F5BE5 F000:5BA9 mov large byte ptr es:5555h, 0AAh ; '¬' F000:5BB2 mov large byte ptr es:2AAAh, 55h ; 'U' F000:5BBB mov large byte ptr es:5555h, 0A0h ; 'á' F000:5BC4 push esi F000:5BC6 push edi F000:5BC8 mov ecx, 100h F000:5BCE F000:5BCE loc_F5BCE: ; CODE XREF: sub_F5B2C+AAj F000:5BCE lods byte ptr [esi] F000:5BD0 mov es:[edi], al F000:5BD4 inc edi F000:5BD6 loopd loc_F5BCE F000:5BD9 dec edi F000:5BDB F000:5BDB loc_F5BDB: ; CODE XREF: sub_F5B2C+B3j F000:5BDB cmp es:[edi], al F000:5BDF jnz short loc_F5BDB F000:5BE1 pop edi F000:5BE3 pop esi F000:5BE5 F000:5BE5 loc_F5BE5: ; CODE XREF: sub_F5B2C+7Bj F000:5BE5 add esi, 100h F000:5BEC add edi, 100h F000:5BF3 pop ecx F000:5BF5 loop loc_F5B93 F000:5BF7 call sub_FD038 F000:5BFA pop es F000:5BFB assume es:nothing F000:5BFB pop ds F000:5BFC assume ds:nothing F000:5BFC popf F000:5BFD popad F000:5BFF clc F000:5C00 retn F000:5C01 ; --------------------------------------------------------------------------- F000:5C01 F000:5C01 loc_F5C01: ; CODE XREF: sub_F5B2C+1Dj F000:5C01 ; sub_F5B2C+31j ... F000:5C01 call sub_FD038 F000:5C04 pop es F000:5C05 pop ds F000:5C06 popf F000:5C07 popad F000:5C09 stc F000:5C0A retn F000:5C0A sub_F5B2C endp F000:5C0A F000:5C0A ; --------------------------------------------------------------------------- F000:5C0B IDTR2 dw 400h ; DATA XREF: F000:464Dr F000:5C0B ; F000:loc_F5E43r ... F000:5C0B ; IDT size F000:5C0D dd 0 ; IDT base F000:5C11 db 2 dup(0) F000:5C13 F000:5C13 ; =============== S U B R O U T I N E ======================================= F000:5C13 F000:5C13 F000:5C13 sub_F5C13 proc near ; CODE XREF: F000:loc_F5F0Ap F000:5C13 pushad F000:5C15 mov ax, 18h F000:5C18 mov es, ax F000:5C1A assume es:nothing F000:5C1A mov eax, 0 F000:5C20 mov di, 0 F000:5C23 mov ecx, 100h F000:5C29 rep stosd F000:5C2C mov bp, 0 F000:5C2F mov dx, 0CF8h F000:5C32 mov eax, 800090D0h F000:5C38 out dx, eax F000:5C3A mov dx, 0CFCh F000:5C3D mov eax, 0A00Bh F000:5C43 out dx, ax F000:5C44 nop F000:5C45 nop F000:5C46 call sub_F5A02 F000:5C49 mov si, 0Bh F000:5C4C mov edi, 20h ; ' ' F000:5C52 call sub_F59E0 F000:5C55 popad F000:5C57 retn F000:5C57 sub_F5C13 endp F000:5C57 F000:5C58 ; --------------------------------------------------------------------------- F000:5C58 F000:5C58 loc_F5C58: ; CODE XREF: F000:2FB8p F000:5C58 cli F000:5C59 mov dl, 1 F000:5C5B mov ax, 5A5Eh F000:5C5E F000:5C5E loc_F5C5E: ; CODE XREF: F000:5C7Ej F000:5C5E call sub_F799D F000:5C61 jb short loc_F5C88 F000:5C63 test byte ptr fs:0F47h, 10h F000:5C69 mov si, 5A75h F000:5C6C jnz short loc_F5C80 F000:5C6E test byte ptr fs:0F47h, 40h F000:5C74 jz short loc_F5C7C F000:5C76 mov si, 5AFAh F000:5C79 call sub_F5C84 F000:5C7C ; --------------------------------------------------------------------------- F000:5C7C F000:5C7C loc_F5C7C: ; CODE XREF: F000:5C74j F000:5C7C inc dl F000:5C7E jmp short loc_F5C5E F000:5C80 ; --------------------------------------------------------------------------- F000:5C80 F000:5C80 loc_F5C80: ; CODE XREF: F000:5C6Cj F000:5C80 call sub_F95A7 F000:5C83 ; --------------------------------------------------------------------------- F000:5C83 retn F000:5C84 F000:5C84 ; =============== S U B R O U T I N E ======================================= F000:5C84 F000:5C84 ; Attributes: noreturn thunk F000:5C84 F000:5C84 sub_F5C84 proc near ; CODE XREF: F000:5C79p F000:5C84 call sub_F95D6 F000:5C84 sub_F5C84 endp F000:5C84 F000:5C87 ; --------------------------------------------------------------------------- F000:5C87 retn F000:5C88 ; --------------------------------------------------------------------------- F000:5C88 F000:5C88 loc_F5C88: ; CODE XREF: F000:5C61j F000:5C88 cmp large byte ptr ds:500h, 13h F000:5C90 jnz short loc_F5C95 F000:5C92 call sub_F6238 F000:5C95 F000:5C95 loc_F5C95: ; CODE XREF: F000:5C90j F000:5C95 call sub_FA290 F000:5C98 cmp byte ptr fs:14F1h, 0 F000:5C9E jz short loc_F5D00 F000:5CA0 F000:5CA0 loc_F5CA0: ; CODE XREF: F000:5EA5j F000:5CA0 ; F000:5EBCj F000:5CA0 mov esi, 5F40h F000:5CA6 test cs:byte_F14FD, 1 F000:5CAC jz short loc_F5CB4 F000:5CAE mov esi, 5F47h F000:5CB4 F000:5CB4 loc_F5CB4: ; CODE XREF: F000:5CACj F000:5CB4 mov edi, 100000h F000:5CBA push ds F000:5CBB push cs F000:5CBC pop ds F000:5CBD assume ds:BIOS_F000 F000:5CBD call sub_F609A F000:5CC0 pop ds F000:5CC1 assume ds:nothing F000:5CC1 mov bp, 0 F000:5CC4 jnb loc_F5ECC F000:5CC8 mov esi, 5F40h F000:5CCE test cs:byte_F14FD, 1 F000:5CD4 jnz short loc_F5CDC F000:5CD6 mov esi, 5F47h F000:5CDC F000:5CDC loc_F5CDC: ; CODE XREF: F000:5CD4j F000:5CDC mov edi, 100000h F000:5CE2 push ds F000:5CE3 push cs F000:5CE4 pop ds F000:5CE5 assume ds:BIOS_F000 F000:5CE5 call sub_F609A F000:5CE8 pop ds F000:5CE9 assume ds:nothing F000:5CE9 mov bp, 0 F000:5CEC jb short loc_F5CF6 F000:5CEE xor byte ptr ds:14FDh, 1 F000:5CF3 jmp loc_F5ECC F000:5CF6 ; --------------------------------------------------------------------------- F000:5CF6 F000:5CF6 loc_F5CF6: ; CODE XREF: F000:5CECj F000:5CF6 cmp byte ptr fs:14F1h, 0 F000:5CFC jz locret_F5F3F F000:5D00 F000:5D00 loc_F5D00: ; CODE XREF: F000:5C9Ej F000:5D00 mov esi, 5F54h F000:5D06 mov edi, 100000h F000:5D0C push ds F000:5D0D push cs F000:5D0E pop ds F000:5D0F assume ds:BIOS_F000 F000:5D0F mov dl, 1 F000:5D11 call sub_F6022 F000:5D14 mov fs:10C3h, bx F000:5D19 mov fs:10C9h, ecx F000:5D1F pop ds F000:5D20 assume ds:nothing F000:5D20 jb loc_F5E9A F000:5D24 mov ecx, 200h F000:5D2A mov dl, 1 F000:5D2C xor esi, esi F000:5D2F mov edi, 11DEh F000:5D35 call sub_F77B3 F000:5D38 movzx ax, byte ptr fs:13A1h F000:5D3E inc ax F000:5D3F mov fs:10D7h, ax F000:5D43 mov cx, fs:13A2h F000:5D48 mov fs:10DBh, cx F000:5D4D mov bx, cx F000:5D4F shr bl, 6 F000:5D52 xchg bl, bh F000:5D54 inc bx F000:5D55 mov fs:10D5h, bx F000:5D5A and cx, 3Fh F000:5D5D mov fs:10D9h, cx F000:5D62 mov esi, 5F61h F000:5D68 mov edi, 100000h F000:5D6E push ds F000:5D6F push cs F000:5D70 pop ds F000:5D71 assume ds:BIOS_F000 F000:5D71 mov dl, 2 F000:5D73 call sub_F6022 F000:5D76 mov fs:10C5h, bx F000:5D7B mov fs:10CDh, ecx F000:5D81 pop ds F000:5D82 assume ds:nothing F000:5D82 mov esi, 5F6Eh F000:5D88 mov edi, 100000h F000:5D8E push ds F000:5D8F push cs F000:5D90 pop ds F000:5D91 assume ds:BIOS_F000 F000:5D91 mov dl, 3 F000:5D93 call sub_F6022 F000:5D96 mov fs:10C7h, bx F000:5D9B mov fs:10D1h, ecx F000:5DA1 pop ds F000:5DA2 assume ds:nothing F000:5DA2 call sub_F5F7B F000:5DA5 mov al, 61h ; 'a' F000:5DA7 out 70h, al ; CMOS Memory: F000:5DA7 ; F000:5DA9 mov al, 5Ch ; '\' F000:5DAB out 71h, al ; CMOS Memory: F000:5DAB ; F000:5DAD mov dx, 0CF8h F000:5DB0 mov eax, 80009090h F000:5DB6 out dx, eax F000:5DB8 mov dx, 0CFCh F000:5DBB in eax, dx F000:5DBD and eax, 0FFFBFFFFh F000:5DC3 or ah, 10h F000:5DC6 and ah, 0DFh F000:5DC9 out dx, eax F000:5DCB mov al, 0Ah F000:5DCD out 70h, al ; CMOS Memory: F000:5DCD ; used by real-time clock F000:5DCF mov al, 26h ; '&' F000:5DD1 out 71h, al ; CMOS Memory: F000:5DD1 ; F000:5DD3 test dword ptr ds:14EDh, 1000h F000:5DDC jnz short loc_F5E16 F000:5DDE mov dx, 0CF8h F000:5DE1 mov eax, 80009080h F000:5DE7 out dx, eax F000:5DE9 mov dx, 0CFCh F000:5DEC in eax, dx F000:5DEE and eax, 0FEFFFFFFh F000:5DF4 out dx, eax F000:5DF6 or eax, 1000000h F000:5DFC out dx, eax F000:5DFE mov bp, 0 F000:5E01 mov dx, 0CF8h F000:5E04 mov eax, 800090D0h F000:5E0A out dx, eax F000:5E0C mov dx, 0CFCh F000:5E0F mov eax, 0A00Eh F000:5E15 out dx, ax F000:5E16 F000:5E16 loc_F5E16: ; CODE XREF: F000:5DDCj F000:5E16 mov al, 0Bh F000:5E18 call CMOS_READ_AL_AH F000:5E1B and ah, 7Ah F000:5E1E or ah, 2 F000:5E21 mov al, 0Bh F000:5E23 call CMOS_WRITE_AL_AH F000:5E26 mov ax, 68h ; 'h' F000:5E29 mov ds, ax F000:5E2B assume ds:nothing F000:5E2B mov es, ax F000:5E2D assume es:nothing F000:5E2D mov fs, ax F000:5E2F assume fs:nothing F000:5E2F mov ss, ax F000:5E31 assume ss:nothing F000:5E31 jmp far ptr 60h:5E36h F000:5E36 ; --------------------------------------------------------------------------- F000:5E36 mov eax, cr0 F000:5E39 and al, 0FEh F000:5E3B mov cr0, eax F000:5E3E jmp far ptr loc_F5E43 F000:5E43 F000:5E43 loc_F5E43: ; load IDTR with physical address of IDT F000:5E43 lidt fword ptr cs:IDTR2 F000:5E49 xor ax, ax F000:5E4B mov ss, ax F000:5E4D assume ss:nothing F000:5E4D mov ds, ax F000:5E4F assume ds:nothing F000:5E4F mov es, ax F000:5E51 assume es:nothing F000:5E51 mov ax, 3 F000:5E54 xor bx, bx F000:5E56 int 10h ; - VIDEO - SET VIDEO MODE F000:5E56 ; AL = mode F000:5E58 mov dx, 3FBh F000:5E5B in al, dx ; COM: line control register bits: F000:5E5B ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:5E5B ; 2: stop bits: 0=1,1=2 F000:5E5B ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:5E5B ; 5: stuck parity F000:5E5B ; 6: enable break control. 1=start sending 0s (spaces) F000:5E5B ; 7: DLAB (Divisor Latch Access Bit) F000:5E5C or al, 80h F000:5E5E out dx, al ; COM: line control register bits: F000:5E5E ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:5E5E ; 2: stop bits: 0=1,1=2 F000:5E5E ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:5E5E ; 5: stuck parity F000:5E5E ; 6: enable break control. 1=start sending 0s (spaces) F000:5E5E ; 7: DLAB (Divisor Latch Access Bit) F000:5E5F mov dl, 0F8h ; '°' F000:5E61 mov al, 1 F000:5E63 out dx, al ; COM: transmitter holding register F000:5E63 ; or (when DLAB=1) divisor latch low byte. F000:5E64 inc dl F000:5E66 xor al, al F000:5E68 out dx, al ; COM: divisor latch high byte(when DLAB=1) F000:5E68 ; or interrupt enable register bits: F000:5E68 ; 0:1=an interrupt when rec'd data is available F000:5E68 ; 1:1=interrupt when transmit buffer is empty F000:5E68 ; 2:1=int on rec'r line status (error or break) F000:5E68 ; 3:1=int on modem status (CTS,DSR,RI,RLSD) F000:5E69 mov dl, 0FBh ; 'û' F000:5E6B in al, dx ; COM: line control register bits: F000:5E6B ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:5E6B ; 2: stop bits: 0=1,1=2 F000:5E6B ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:5E6B ; 5: stuck parity F000:5E6B ; 6: enable break control. 1=start sending 0s (spaces) F000:5E6B ; 7: DLAB (Divisor Latch Access Bit) F000:5E6C and al, 7Fh F000:5E6E out dx, al ; COM: line control register bits: F000:5E6E ; 0-1: word length: 00=5, 01=6, 10=7, 11=8 F000:5E6E ; 2: stop bits: 0=1,1=2 F000:5E6E ; 3-4: parity: x0=None, 01=Odd, 11=Even F000:5E6E ; 5: stuck parity F000:5E6E ; 6: enable break control. 1=start sending 0s (spaces) F000:5E6E ; 7: DLAB (Divisor Latch Access Bit) F000:5E6F mov ax, 201h F000:5E72 mov bx, 7C00h F000:5E75 mov cx, 2 F000:5E78 mov dx, 80h ; 'Ç' F000:5E7B int 13h ; DISK - READ SECTORS INTO MEMORY F000:5E7B ; AL = number of sectors to read, CH = track, CL = sector F000:5E7B ; DH = head, DL = drive, ES:BX -> buffer to fill F000:5E7B ; Return: CF set on error, AH = status, AL = number of sectors read F000:5E7D xor eax, eax F000:5E80 xor ebx, ebx F000:5E83 xor ecx, ecx F000:5E86 xor edx, edx F000:5E89 xor esi, esi F000:5E8C xor edi, edi F000:5E8F xor ebp, ebp F000:5E92 mov sp, 7C00h F000:5E95 jmp far ptr 0:7C00h F000:5E9A ; --------------------------------------------------------------------------- F000:5E9A F000:5E9A loc_F5E9A: ; CODE XREF: F000:5D20j F000:5E9A mov eax, 800000h F000:5EA0 cmp ds:700h, eax F000:5EA5 jb loc_F5CA0 F000:5EA9 mov esi, 5F4Dh F000:5EAF mov edi, 100000h F000:5EB5 push ds F000:5EB6 push cs F000:5EB7 pop ds F000:5EB8 assume ds:BIOS_F000 F000:5EB8 call sub_F609A F000:5EBB pop ds F000:5EBC assume ds:nothing F000:5EBC jb loc_F5CA0 F000:5EC0 and byte ptr ds:14FDh, 0FEh F000:5EC5 inc bp F000:5EC6 push large [dword ptr fs:11E2h] F000:5ECC F000:5ECC loc_F5ECC: ; CODE XREF: F000:5CC4j F000:5ECC ; F000:5CF3j F000:5ECC call sub_F4FAF F000:5ECF mov bx, fs:0FACh F000:5ED4 call sub_F5F7B F000:5ED7 cli F000:5ED8 call sub_F4E47 F000:5EDB mov al, 55h ; 'U' F000:5EDD call nullsub_2 F000:5EE0 call sub_F4E54 F000:5EE3 xor eax, eax F000:5EE6 xor di, di F000:5EE8 mov edi, 700h F000:5EEE mov cx, 2000h F000:5EF1 rep stosd F000:5EF4 mov al, 0FFh F000:5EF6 out 21h, al ; Interrupt controller, 8259A. F000:5EF8 and bp, bp F000:5EFA jnz short loc_F5F0A F000:5EFC mov dx, bx F000:5EFE xor ax, ax F000:5F00 xor bx, bx F000:5F02 xor cx, cx F000:5F04 push 20h ; ' ' F000:5F07 push 0 F000:5F09 retf F000:5F0A ; --------------------------------------------------------------------------- F000:5F0A F000:5F0A loc_F5F0A: ; CODE XREF: F000:5EFAj F000:5F0A call sub_F5C13 F000:5F0D mov eax, 0 F000:5F13 mov large ds:0, eax F000:5F1A pop ebx F000:5F1C mov ax, 80h ; 'Ç' F000:5F1F mov ds, ax F000:5F21 assume ds:nothing F000:5F21 mov es, ax F000:5F23 assume es:nothing F000:5F23 mov ss, ax F000:5F25 assume ss:nothing F000:5F25 mov ax, 10h F000:5F28 mov fs, ax F000:5F2A assume fs:nothing F000:5F2A mov gs, ax F000:5F2C assume gs:nothing F000:5F2C push 78h ; 'x' F000:5F2F push ebx F000:5F31 xor eax, eax F000:5F34 xor ebx, ebx F000:5F37 xor ecx, ecx F000:5F3A xor edx, edx F000:5F3D db 66h F000:5F3D retf F000:5F3F ; --------------------------------------------------------------------------- F000:5F3F F000:5F3F locret_F5F3F: ; CODE XREF: F000:5CFCj F000:5F3F retn F000:5F3F ; --------------------------------------------------------------------------- F000:5F40 aKernel db 'KERNEL',0 F000:5F47 aDelta db 'DELTA',0 F000:5F4D aNk_bin_0 db 'NK.BIN',0 F000:5F54 aFilesys0_img db 'FILESYS0.IMG',0 F000:5F61 aFilesys1_img db 'FILESYS1.IMG',0 F000:5F6E aFilesys2_img db 'FILESYS2.IMG',0 F000:5F7B F000:5F7B ; =============== S U B R O U T I N E ======================================= F000:5F7B F000:5F7B F000:5F7B sub_F5F7B proc near ; CODE XREF: F000:5DA2p F000:5F7B ; F000:5ED4p F000:5F7B mov ecx, fs:704h F000:5F81 add ecx, 1004Bh F000:5F88 xor cx, cx F000:5F8A sub ecx, 48h ; 'H' F000:5F8E mov al, 35h ; '5' F000:5F90 out 70h, al ; CMOS Memory: F000:5F90 ; F000:5F92 in al, 71h ; CMOS Memory F000:5F94 mov ah, al F000:5F96 mov al, 34h ; '4' F000:5F98 out 70h, al ; CMOS Memory: F000:5F98 ; unknown address F000:5F9A in al, 71h ; CMOS Memory F000:5F9C mov di, ax F000:5F9E shl edi, 10h F000:5FA2 add edi, 100000h F000:5FA9 mov [edi-4], ecx F000:5FAE shr ecx, 10h F000:5FB2 inc ecx F000:5FB4 sub ax, cx F000:5FB6 mov cx, ax F000:5FB8 mov al, 34h ; '4' F000:5FBA out 70h, al ; CMOS Memory: F000:5FBA ; unknown address F000:5FBC mov al, cl F000:5FBE out 71h, al ; CMOS Memory: F000:5FBE ; used by real-time clock F000:5FC0 mov al, 35h ; '5' F000:5FC2 out 70h, al ; CMOS Memory: F000:5FC2 ; F000:5FC4 mov al, ch F000:5FC6 out 71h, al ; CMOS Memory: F000:5FC6 ; used by real-time clock F000:5FC8 mov di, cx F000:5FCA shl edi, 10h F000:5FCE add edi, 100000h F000:5FD5 mov eax, edi F000:5FD8 add edi, 48h ; 'H' F000:5FDC mov [eax], edi F000:5FE0 mov ecx, fs:704h F000:5FE6 mov [eax+4], ecx F000:5FEB lea eax, [eax+8] F000:5FF0 xor dl, dl F000:5FF2 F000:5FF2 loc_F5FF2: ; CODE XREF: sub_F5F7B+8Fj F000:5FF2 call sub_F799D F000:5FF5 jb short loc_F600C F000:5FF7 mov esi, fs:0F10h F000:5FFD add esi, edi F000:6000 mov [eax], esi F000:6004 inc dl F000:6006 add eax, 4 F000:600A jmp short loc_F5FF2 F000:600C ; --------------------------------------------------------------------------- F000:600C F000:600C loc_F600C: ; CODE XREF: sub_F5F7B+7Aj F000:600C mov ecx, fs:704h F000:6012 add ecx, 3 F000:6016 shr ecx, 2 F000:601A xor esi, esi F000:601D rep movs dword ptr es:[edi], dword ptr [esi] F000:6021 retn F000:6021 sub_F5F7B endp F000:6021 F000:6022 F000:6022 ; =============== S U B R O U T I N E ======================================= F000:6022 F000:6022 F000:6022 sub_F6022 proc near ; CODE XREF: F000:5D11p F000:6022 ; F000:5D73p ... F000:6022 push ebp F000:6024 push esi F000:6026 call sub_F799D F000:6029 mov bx, 1 F000:602C mov ecx, 1 F000:6032 xor esi, esi F000:6035 call sub_F77B3 F000:6038 pop esi F000:603A jb short loc_F6096 F000:603C mov ebp, 1 F000:6042 xor ecx, ecx F000:6045 F000:6045 loc_F6045: ; CODE XREF: sub_F6022+63j F000:6045 add ecx, edi F000:6048 movzx ecx, byte ptr es:[ecx] F000:604E and cl, cl F000:6050 jz short loc_F6096 F000:6052 cmp cl, 0FFh F000:6055 jz short loc_F6096 F000:6057 mov bx, 1 F000:605A push esi F000:605C mov esi, ebp F000:605F inc edi F000:6061 call sub_F77B3 F000:6064 dec edi F000:6066 pop esi F000:6068 jb short loc_F6096 F000:606A add ebp, ecx F000:606D push ecx F000:606F push edi F000:6071 movzx eax, byte ptr es:[edi+1] F000:6078 sub ecx, eax F000:607B add edi, eax F000:607E call sub_F61EE F000:6081 pop edi F000:6083 pop ecx F000:6085 jnz short loc_F6045 F000:6087 mov bx, es:[edi+0Ch] F000:608C mov ecx, es:[edi+4] F000:6092 clc F000:6093 pop ebp F000:6095 retn F000:6096 ; --------------------------------------------------------------------------- F000:6096 F000:6096 loc_F6096: ; CODE XREF: sub_F6022+18j F000:6096 ; sub_F6022+2Ej ... F000:6096 stc F000:6097 pop ebp F000:6099 retn F000:6099 sub_F6022 endp F000:6099 F000:609A F000:609A ; =============== S U B R O U T I N E ======================================= F000:609A F000:609A F000:609A sub_F609A proc near ; CODE XREF: sub_F3189+14p F000:609A ; sub_F5065+Fp ... F000:609A pushad F000:609C mov dl, 1 F000:609E push esi F000:60A0 call sub_F799D F000:60A3 jb short loc_F60B4 F000:60A5 mov bx, 1 F000:60A8 mov ecx, 1 F000:60AE xor esi, esi F000:60B1 call sub_F77B3 F000:60B4 F000:60B4 loc_F60B4: ; CODE XREF: sub_F609A+9j F000:60B4 pop esi F000:60B6 jb loc_F616A F000:60BA mov ebp, 1 F000:60C0 xor ecx, ecx F000:60C3 F000:60C3 loc_F60C3: ; CODE XREF: sub_F609A+72j F000:60C3 add ecx, edi F000:60C6 movzx ecx, byte ptr es:[ecx] F000:60CC and cl, cl F000:60CE jz loc_F616A F000:60D2 cmp cl, 0FFh F000:60D5 jz loc_F616A F000:60D9 mov bx, 1 F000:60DC push esi F000:60DE mov esi, ebp F000:60E1 inc edi F000:60E3 call sub_F77B3 F000:60E6 dec edi F000:60E8 pop esi F000:60EA jb short loc_F616A F000:60EC add ebp, ecx F000:60EF movzx eax, byte ptr es:[edi+1] F000:60F6 cmp ecx, eax F000:60F9 jb short loc_F616A F000:60FB push ecx F000:60FD push edi F000:60FF sub ecx, eax F000:6102 add edi, eax F000:6105 call sub_F61EE F000:6108 pop edi F000:610A pop ecx F000:610C jnz short loc_F60C3 F000:610E cmp dword ptr [esi], 422E4B4Eh F000:6116 jnz short loc_F614E F000:6118 mov bx, es:[edi+0Ch] F000:611D mov esi, 0Fh F000:6123 F000:6123 loc_F6123: ; CODE XREF: sub_F609A+B2j F000:6123 mov ecx, 0Ch F000:6129 mov edi, 11DEh F000:612F call sub_F77B3 F000:6132 add esi, ecx F000:6135 mov ecx, fs:11E2h F000:613B mov edi, fs:11DEh F000:6141 and edi, edi F000:6144 jz short loc_F615F F000:6146 call sub_F77B3 F000:6149 add esi, ecx F000:614C jmp short loc_F6123 F000:614E ; --------------------------------------------------------------------------- F000:614E F000:614E loc_F614E: ; CODE XREF: sub_F609A+7Cj F000:614E mov bx, es:[edi+0Ch] F000:6153 mov ecx, es:[edi+4] F000:6159 xor esi, esi F000:615C call sub_F77B3 F000:615F F000:615F loc_F615F: ; CODE XREF: sub_F609A+AAj F000:615F xor dh, dh F000:6161 mov fs:0FACh, dx F000:6166 clc F000:6167 F000:6167 loc_F6167: ; CODE XREF: sub_F609A+D3j F000:6167 popad F000:6169 retn F000:616A ; --------------------------------------------------------------------------- F000:616A F000:616A loc_F616A: ; CODE XREF: sub_F609A+1Cj F000:616A ; sub_F609A+34j ... F000:616A dec dl F000:616C stc F000:616D jmp short loc_F6167 F000:616D sub_F609A endp F000:616D F000:616F F000:616F ; =============== S U B R O U T I N E ======================================= F000:616F F000:616F F000:616F sub_F616F proc near ; CODE XREF: sub_F38B1+E5p F000:616F pushad F000:6171 push esi F000:6173 mov ebp, ebx F000:6176 inc ebp F000:6178 mov bx, 1 F000:617B mov ecx, 1 F000:6181 xor esi, esi F000:6184 mov edi, 0F6Fh F000:618A F000:618A loc_F618A: ; CODE XREF: sub_F616F+2Ej F000:618A call sub_F77B3 F000:618D movzx eax, byte ptr fs:0F6Fh F000:6194 cmp al, 0FFh F000:6196 jz short loc_F61A2 F000:6198 add esi, eax F000:619B dec ebp F000:619D jnz short loc_F618A F000:619F sub esi, eax F000:61A2 F000:61A2 loc_F61A2: ; CODE XREF: sub_F616F+27j F000:61A2 mov edi, esi F000:61A5 pop esi F000:61A7 movzx ecx, byte ptr [esi] F000:61AC call loc_F7468 F000:61AF popad F000:61B1 retn F000:61B1 sub_F616F endp F000:61B1 F000:61B2 F000:61B2 ; =============== S U B R O U T I N E ======================================= F000:61B2 F000:61B2 F000:61B2 sub_F61B2 proc near ; CODE XREF: sub_F5B2C+2Ep F000:61B2 ; F000:85F3p F000:61B2 mov ecx, 2000h F000:61B8 xor bl, bl F000:61BA F000:61BA loc_F61BA: ; CODE XREF: sub_F61B2+20j F000:61BA mov eax, [esi] F000:61BE add bl, al F000:61C0 xchg al, ah F000:61C2 add bl, al F000:61C4 shr eax, 10h F000:61C8 add bl, al F000:61CA xchg al, ah F000:61CC add bl, al F000:61CE add esi, 4 F000:61D2 loop loc_F61BA F000:61D4 and bl, bl F000:61D6 retn F000:61D6 sub_F61B2 endp F000:61D6 F000:61D7 F000:61D7 ; =============== S U B R O U T I N E ======================================= F000:61D7 F000:61D7 F000:61D7 sub_F61D7 proc near ; CODE XREF: sub_F5B2C+49p F000:61D7 ; F000:85F8p F000:61D7 mov ecx, 2000h F000:61DD xor eax, eax F000:61E0 F000:61E0 loc_F61E0: ; CODE XREF: sub_F61D7+11j F000:61E0 add eax, [esi] F000:61E4 add esi, 4 F000:61E8 loop loc_F61E0 F000:61EA and eax, eax F000:61ED retn F000:61ED sub_F61D7 endp F000:61ED F000:61EE F000:61EE ; =============== S U B R O U T I N E ======================================= F000:61EE F000:61EE F000:61EE sub_F61EE proc near ; CODE XREF: sub_F38B1+4Fp F000:61EE ; sub_F5065+79p ... F000:61EE pushad F000:61F0 xor ebx, ebx F000:61F3 F000:61F3 loc_F61F3: ; CODE XREF: sub_F61EE+1Cj F000:61F3 mov al, es:[ebx+edi] F000:61F8 call sub_F675D F000:61FB mov ah, al F000:61FD mov al, [ebx+esi] F000:6201 call sub_F675D F000:6204 cmp al, ah F000:6206 jnz short loc_F6224 F000:6208 inc bl F000:620A loop loc_F61F3 F000:620C cmp byte ptr [ebx+esi], 2Eh ; '.' F000:6211 jnz short loc_F6215 F000:6213 inc ebx F000:6215 F000:6215 loc_F6215: ; CODE XREF: sub_F61EE+23j F000:6215 cmp byte ptr [ebx+esi], 0 F000:621A jz short loc_F6221 F000:621C cmp byte ptr [ebx+esi], 20h ; ' ' F000:6221 F000:6221 loc_F6221: ; CODE XREF: sub_F61EE+2Cj F000:6221 ; sub_F61EE+3Bj ... F000:6221 popad F000:6223 retn F000:6224 ; --------------------------------------------------------------------------- F000:6224 F000:6224 loc_F6224: ; CODE XREF: sub_F61EE+18j F000:6224 cmp byte ptr [ebx+esi], 0 F000:6229 jnz short loc_F6221 F000:622B cmp byte ptr es:[ebx+edi], 2Eh ; '.' F000:6231 jnz short loc_F6221 F000:6233 cmp cl, 1 F000:6236 jmp short loc_F6221 F000:6236 sub_F61EE endp F000:6236 F000:6238 F000:6238 ; =============== S U B R O U T I N E ======================================= F000:6238 F000:6238 F000:6238 sub_F6238 proc near ; CODE XREF: F000:5C92p F000:6238 ; sub_F896D+1A8p F000:6238 call sub_F62F8 F000:623B pushad F000:623D mov ax, ds F000:623F mov fs, ax F000:6241 assume fs:nothing F000:6241 mov es, ax F000:6243 mov dx, 1 F000:6246 mov bx, 1 F000:6249 mov edi, 0D86h F000:624F F000:624F loc_F624F: ; CODE XREF: sub_F6238+A6j F000:624F call sub_F799D F000:6252 jb loc_F62E1 F000:6256 mov ecx, 1 F000:625C xor esi, esi F000:625F call sub_F77B3 F000:6262 jb short loc_F62DC F000:6264 mov ebp, 1 F000:626A xor ecx, ecx F000:626D F000:626D loc_F626D: ; CODE XREF: sub_F6238+5Cj F000:626D ; sub_F6238+A2j F000:626D add ecx, edi F000:6270 movzx ecx, byte ptr es:[ecx] F000:6276 and cl, cl F000:6278 jz short loc_F62DC F000:627A cmp cl, 0FFh F000:627D jz short loc_F62DC F000:627F mov esi, ebp F000:6282 inc edi F000:6284 call sub_F77B3 F000:6287 jb short loc_F62EA F000:6289 dec edi F000:628B F000:628B loc_F628B: ; CODE XREF: sub_F6238+BEj F000:628B add ebp, ecx F000:628E cmp word ptr es:[edi+12h], 0 F000:6294 jnz short loc_F626D F000:6296 push ecx F000:6298 movzx esi, byte ptr es:[edi+1] F000:629F add esi, edi F000:62A2 cmp byte ptr es:[esi], 0 F000:62A7 jz short loc_F62CF F000:62A9 mov byte ptr es:[esi], 0 F000:62AE mov edi, ebp F000:62B1 sub edi, ecx F000:62B4 dec ecx F000:62B6 mov esi, 0D87h F000:62BC call loc_F7468 F000:62BF xor ecx, ecx F000:62C2 xor edi, edi F000:62C5 dec esi F000:62C7 mov bx, es:[esi+0Ch] F000:62CC call loc_F7468 F000:62CF F000:62CF loc_F62CF: ; CODE XREF: sub_F6238+6Fj F000:62CF mov edi, 0D86h F000:62D5 mov bx, 1 F000:62D8 pop ecx F000:62DA jmp short loc_F626D F000:62DC ; --------------------------------------------------------------------------- F000:62DC F000:62DC loc_F62DC: ; CODE XREF: sub_F6238+2Aj F000:62DC ; sub_F6238+40j ... F000:62DC inc dl F000:62DE jmp loc_F624F F000:62E1 ; --------------------------------------------------------------------------- F000:62E1 F000:62E1 loc_F62E1: ; CODE XREF: sub_F6238+1Aj F000:62E1 call sub_F7394 F000:62E4 popad F000:62E6 call sub_F62FF F000:62E9 retn F000:62EA ; --------------------------------------------------------------------------- F000:62EA F000:62EA loc_F62EA: ; CODE XREF: sub_F6238+4Fj F000:62EA call sub_F77B3 F000:62ED dec edi F000:62EF jb short loc_F62DC F000:62F1 mov byte ptr [ecx+edi], 0FFh F000:62F6 jmp short loc_F628B F000:62F6 sub_F6238 endp F000:62F6 F000:62F8 F000:62F8 ; =============== S U B R O U T I N E ======================================= F000:62F8 F000:62F8 F000:62F8 sub_F62F8 proc near ; CODE XREF: sub_F6238p F000:62F8 ; sub_F896D+1C0p F000:62F8 or byte ptr fs:10DDh, 10h F000:62FE retn F000:62FE sub_F62F8 endp F000:62FE F000:62FF F000:62FF ; =============== S U B R O U T I N E ======================================= F000:62FF F000:62FF F000:62FF sub_F62FF proc near ; CODE XREF: sub_F6238+AEp F000:62FF ; sub_F896D+1F8p F000:62FF and byte ptr fs:10DDh, 0EFh F000:6305 retn F000:6305 sub_F62FF endp F000:6305 F000:6306 F000:6306 ; =============== S U B R O U T I N E ======================================= F000:6306 F000:6306 F000:6306 sub_F6306 proc near ; CODE XREF: sub_F634C+BEp F000:6306 ; sub_F634C+FCp F000:6306 pushad F000:6308 mov eax, ebx F000:630B mov esi, fs:0F41h F000:6311 push edx F000:6313 mul esi F000:6316 pop edx F000:6318 mov ebx, eax F000:631B F000:631B loc_F631B: ; CODE XREF: sub_F6306+40j F000:631B mov edi, 91Ch F000:6321 call word ptr fs:0F2Ah F000:6326 mov al, fs:921h F000:632A cmp al, 0FFh F000:632C jz short loc_F6342 F000:632E xor ah, ah F000:6330 mov ecx, 8 F000:6336 F000:6336 loc_F6336: ; CODE XREF: sub_F6306+35j F000:6336 rcr al, 1 F000:6338 adc ah, 0 F000:633B loop loc_F6336 F000:633D cmp ah, 7 F000:6340 jb short loc_F6349 F000:6342 F000:6342 loc_F6342: ; CODE XREF: sub_F6306+26j F000:6342 inc ebx F000:6344 dec esi F000:6346 jnz short loc_F631B F000:6348 clc F000:6349 F000:6349 loc_F6349: ; CODE XREF: sub_F6306+3Aj F000:6349 popad F000:634B retn F000:634B sub_F6306 endp F000:634B F000:634C F000:634C ; =============== S U B R O U T I N E ======================================= F000:634C F000:634C F000:634C sub_F634C proc near ; CODE XREF: F000:loc_F2FA2p F000:634C mov dl, 1 F000:634E F000:634E loc_F634E: ; CODE XREF: sub_F634C+1A7j F000:634E call sub_F799D F000:6351 jb loc_F64F6 F000:6355 mov byte ptr fs:92Ch, 0FFh F000:635B mov eax, 0FFFFFFFFh F000:6361 F000:6361 loc_F6361: ; CODE XREF: sub_F634C+21j F000:6361 ; sub_F634C+48j ... F000:6361 inc eax F000:6363 cmp ax, fs:0F20h F000:6368 jnb short loc_F63D2 F000:636A call sub_F6E04 F000:636D jb short loc_F6361 F000:636F push eax F000:6371 mov ecx, fs:0F41h F000:6377 push edx F000:6379 mul ecx F000:637C pop edx F000:637E mov ebx, eax F000:6381 pop eax F000:6383 mov edi, 91Ch F000:6389 call word ptr fs:0F2Ah F000:638E cmp byte ptr fs:91Ch, 0FEh ; '¦' F000:6394 jnz short loc_F6361 F000:6396 add ebx, ecx F000:6399 dec ebx F000:639B call word ptr fs:0F2Ah F000:63A0 cmp byte ptr fs:91Ch, 0FFh F000:63A6 jnz short loc_F6361 F000:63A8 sub ebx, ecx F000:63AB mov ecx, 0FFFFFFFFh F000:63B1 F000:63B1 loc_F63B1: ; CODE XREF: sub_F634C+74j F000:63B1 inc ebx F000:63B3 inc ecx F000:63B5 call word ptr fs:0F2Ah F000:63BA cmp byte ptr fs:91Ch, 0FFh F000:63C0 jnz short loc_F63B1 F000:63C2 mov esi, fs:0F90h F000:63C8 mov fs:[esi+3Ah], ax F000:63CD mov fs:[esi+25h], cx F000:63D2 F000:63D2 loc_F63D2: ; CODE XREF: sub_F634C+1Cj F000:63D2 test byte ptr fs:0F47h, 1 F000:63D8 jz loc_F64F1 F000:63DC test byte ptr fs:0F47h, 2 F000:63E2 jnz short loc_F63F2 F000:63E4 mov esi, fs:0F90h F000:63EA or byte ptr [esi+3Ch], 50h F000:63EF jmp loc_F64F1 F000:63F2 ; --------------------------------------------------------------------------- F000:63F2 F000:63F2 loc_F63F2: ; CODE XREF: sub_F634C+96j F000:63F2 test byte ptr fs:0F47h, 20h F000:63F8 jz loc_F64EE F000:63FC mov ebx, 0FFFFFFFFh F000:6402 F000:6402 loc_F6402: ; CODE XREF: sub_F634C+C1j F000:6402 inc ebx F000:6404 cmp ebx, 14h F000:6408 jnb short loc_F6456 F000:640A call sub_F6306 F000:640D jb short loc_F6402 F000:640F mov eax, ebx F000:6412 push edx F000:6414 mul dword ptr fs:0F41h F000:641A pop edx F000:641C mov ebx, eax F000:641F mov ecx, fs:0F18h F000:6425 mov edi, 71Ch F000:642B call word ptr fs:0F28h F000:6430 mov esi, 5A20h F000:6436 mov ecx, 0Ah F000:643C repe cmps byte ptr cs:[esi], byte ptr es:[edi] F000:6440 jnz short loc_F6456 F000:6442 mov bx, fs:0F20h F000:6447 F000:6447 loc_F6447: ; CODE XREF: sub_F634C+108j F000:6447 dec bx F000:6448 call sub_F6306 F000:644B jb short loc_F6452 F000:644D call word ptr fs:0F2Ch F000:6452 F000:6452 loc_F6452: ; CODE XREF: sub_F634C+FFj F000:6452 and bx, bx F000:6454 jnz short loc_F6447 F000:6456 F000:6456 loc_F6456: ; CODE XREF: sub_F634C+BCj F000:6456 ; sub_F634C+F4j F000:6456 xor bx, bx F000:6458 add esi, 2 F000:645C xor dh, dh F000:645E cmp dword ptr fs:0F3Dh, 0 F000:6465 jz short loc_F64E1 F000:6467 mov byte ptr fs:92Ch, 0FFh F000:646D F000:646D loc_F646D: ; CODE XREF: sub_F634C+185j F000:646D mov ecx, fs:0F18h F000:6473 mov edi, 71Ch F000:6479 call word ptr fs:0F28h F000:647E shr ecx, 2 F000:6482 mov eax, 0FFFFFFFFh F000:6488 repe scas dword ptr es:[edi] F000:648C jnz short loc_F64A5 F000:648E mov edi, 91Ch F000:6494 call word ptr fs:0F2Ah F000:6499 mov ecx, 2 F000:649F repe scas dword ptr es:[edi] F000:64A3 jz short loc_F64CB F000:64A5 F000:64A5 loc_F64A5: ; CODE XREF: sub_F634C+140j F000:64A5 push edx F000:64A7 movzx eax, bx F000:64AB xor edx, edx F000:64AE div dword ptr fs:0F41h F000:64B4 call sub_F6A0A F000:64B7 pop edx F000:64B9 jb short loc_F6500 F000:64BB inc eax F000:64BD push edx F000:64BF mul dword ptr fs:0F41h F000:64C5 pop edx F000:64C7 dec eax F000:64C9 mov bx, ax F000:64CB F000:64CB loc_F64CB: ; CODE XREF: sub_F634C+157j F000:64CB inc bx F000:64CC cmp bx, fs:0F1Ch F000:64D1 jb short loc_F646D F000:64D3 mov esi, fs:704h F000:64D9 mov [esi], dh F000:64DC mov byte ptr [esi+1], 0 F000:64E1 F000:64E1 loc_F64E1: ; CODE XREF: sub_F634C+119j F000:64E1 call sub_F680B F000:64E4 mov eax, fs:0F90h F000:64E9 and byte ptr [eax+3Ch], 0ACh F000:64EE F000:64EE loc_F64EE: ; CODE XREF: sub_F634C+ACj F000:64EE call sub_F67A0 F000:64F1 F000:64F1 loc_F64F1: ; CODE XREF: sub_F634C+8Cj F000:64F1 ; sub_F634C+A3j ... F000:64F1 inc dl F000:64F3 jmp loc_F634E F000:64F6 ; --------------------------------------------------------------------------- F000:64F6 F000:64F6 loc_F64F6: ; CODE XREF: sub_F634C+5j F000:64F6 call sub_F652B F000:64F9 mov byte ptr fs:0F7Eh, 0FFh F000:64FF retn F000:6500 ; --------------------------------------------------------------------------- F000:6500 F000:6500 loc_F6500: ; CODE XREF: sub_F634C+16Dj F000:6500 cmp dword ptr fs:0F3Dh, 0 F000:6507 jz short loc_F64F1 F000:6509 mov eax, fs:0F90h F000:650E or byte ptr [eax+3Ch], 40h F000:6513 jmp short loc_F64F1 F000:6513 sub_F634C endp F000:6513 F000:6515 F000:6515 ; =============== S U B R O U T I N E ======================================= F000:6515 F000:6515 F000:6515 sub_F6515 proc near ; CODE XREF: sub_F680B:loc_F6851p F000:6515 ; sub_F680B:loc_F6893p ... F000:6515 inc dword ptr fs:0EBDh F000:651B mov ebx, fs:0D82h F000:6521 mov esi, 0ECDh F000:6527 call sub_F990D F000:652A retn F000:652A sub_F6515 endp F000:652A F000:652B F000:652B ; =============== S U B R O U T I N E ======================================= F000:652B F000:652B F000:652B sub_F652B proc near ; CODE XREF: sub_F634C:loc_F64F6p F000:652B mov ax, ds F000:652D mov fs, ax F000:652F mov dl, 1 F000:6531 F000:6531 loc_F6531: ; CODE XREF: sub_F652B+1F5j F000:6531 call sub_F799D F000:6534 jnb short loc_F6537 F000:6536 retn F000:6537 ; --------------------------------------------------------------------------- F000:6537 F000:6537 loc_F6537: ; CODE XREF: sub_F652B+9j F000:6537 mov edi, 200000h F000:653D mov ecx, fs:0F1Ch F000:6543 shr ecx, 1 F000:6546 xor eax, eax F000:6549 rep stos dword ptr es:[edi] F000:654D mov bx, 1 F000:6550 call sub_F6723 F000:6553 test byte ptr [esi+3Ch], 10h F000:6558 jnz loc_F671E F000:655C mov edi, 100000h F000:6562 xor ebx, ebx F000:6565 F000:6565 loc_F6565: ; CODE XREF: sub_F652B+67j F000:6565 push ebx F000:6567 push esi F000:6569 mov esi, ebx F000:656C mov bx, 1 F000:656F mov ecx, 1 F000:6575 call sub_F77B3 F000:6578 pop esi F000:657A pop ebx F000:657C jb short loc_F659C F000:657E movzx ecx, byte ptr [edi] F000:6583 cmp cl, 0FFh F000:6586 jz short loc_F659C F000:6588 call sub_F6768 F000:658B jb short loc_F6594 F000:658D add edi, ecx F000:6590 and cl, cl F000:6592 jnz short loc_F6565 F000:6594 F000:6594 loc_F6594: ; CODE XREF: sub_F652B+60j F000:6594 or byte ptr [esi+3Ch], 10h F000:6599 jmp loc_F671E F000:659C ; --------------------------------------------------------------------------- F000:659C F000:659C loc_F659C: ; CODE XREF: sub_F652B+51j F000:659C ; sub_F652B+5Bj F000:659C mov byte ptr [edi], 0 F000:65A0 mov esi, 100000h F000:65A6 F000:65A6 loc_F65A6: ; CODE XREF: sub_F652B+CEj F000:65A6 movzx ecx, byte ptr [esi] F000:65AB and cl, cl F000:65AD jz short loc_F65FB F000:65AF mov edi, esi F000:65B2 F000:65B2 loc_F65B2: ; CODE XREF: sub_F652B+C4j F000:65B2 add edi, ecx F000:65B5 movzx ecx, byte ptr [edi] F000:65BA and cl, cl F000:65BC jz short loc_F65F1 F000:65BE push esi F000:65C0 push edi F000:65C2 movzx eax, byte ptr [esi+1] F000:65C8 add esi, eax F000:65CB movzx eax, byte ptr [edi+1] F000:65D1 add edi, eax F000:65D4 F000:65D4 loc_F65D4: ; CODE XREF: sub_F652B+BEj F000:65D4 lods byte ptr [esi] F000:65D6 call sub_F675D F000:65D9 mov ah, al F000:65DB mov al, [edi] F000:65DE call sub_F675D F000:65E1 cmp al, ah F000:65E3 jnz short loc_F65EB F000:65E5 inc edi F000:65E7 and ah, ah F000:65E9 jnz short loc_F65D4 F000:65EB F000:65EB loc_F65EB: ; CODE XREF: sub_F652B+B8j F000:65EB pop edi F000:65ED pop esi F000:65EF jnz short loc_F65B2 F000:65F1 F000:65F1 loc_F65F1: ; CODE XREF: sub_F652B+91j F000:65F1 movzx ecx, byte ptr [esi] F000:65F6 add esi, ecx F000:65F9 jmp short loc_F65A6 F000:65FB ; --------------------------------------------------------------------------- F000:65FB F000:65FB loc_F65FB: ; CODE XREF: sub_F652B+82j F000:65FB mov edi, 200000h F000:6601 mov ecx, fs:0F1Ch F000:6607 shr ecx, 1 F000:660A xor eax, eax F000:660D rep stos dword ptr es:[edi] F000:6611 mov esi, 100000h F000:6617 F000:6617 loc_F6617: ; CODE XREF: sub_F652B+168j F000:6617 movzx ecx, byte ptr [esi] F000:661C and cl, cl F000:661E jz short loc_F6695 F000:6620 movzx ebx, byte ptr [esi+1] F000:6626 cmp byte ptr [ebx+esi], 0 F000:662B jz short loc_F6690 F000:662D movzx ebx, word ptr [esi+0Ch] F000:6633 call sub_F6723 F000:6636 mov eax, [esi+4] F000:663B push edx F000:663D xor edx, edx F000:6640 div dword ptr fs:0F18h F000:6646 and edx, edx F000:6649 pop edx F000:664B jz short loc_F664F F000:664D inc eax F000:664F F000:664F loc_F664F: ; CODE XREF: sub_F652B+120j F000:664F cmp eax, ebp F000:6652 jz short loc_F6690 F000:6654 cmp word ptr [esi+12h], 0 F000:6659 jz short loc_F6669 F000:665B mov esi, fs:0F90h F000:6661 or byte ptr [esi+3Ch], 10h F000:6666 jmp loc_F671E F000:6669 ; --------------------------------------------------------------------------- F000:6669 F000:6669 loc_F6669: ; CODE XREF: sub_F652B+12Ej F000:6669 movzx ebx, byte ptr [esi+1] F000:666F pushad F000:6671 add esi, ebx F000:6674 mov edi, esi F000:6677 sub edi, 100000h F000:667E mov byte ptr [esi], 0 F000:6682 mov bx, 1 F000:6685 mov ecx, 1 F000:668B call loc_F7468 F000:668E popad F000:6690 F000:6690 loc_F6690: ; CODE XREF: sub_F652B+100j F000:6690 ; sub_F652B+127j F000:6690 add esi, ecx F000:6693 jmp short loc_F6617 F000:6695 ; --------------------------------------------------------------------------- F000:6695 F000:6695 loc_F6695: ; CODE XREF: sub_F652B+F3j F000:6695 mov bx, 1 F000:6698 call sub_F6723 F000:669B mov eax, fs:0F90h F000:66A0 mov ebx, 2 F000:66A6 mov esi, fs:0F10h F000:66AC mov edi, 200000h F000:66B2 mov ecx, fs:0F1Ch F000:66B8 dec ecx F000:66BA F000:66BA loc_F66BA: ; CODE XREF: sub_F652B+1B2j F000:66BA cmp word ptr [ebx+esi], 0FFFFh F000:66BF jz short loc_F66D9 F000:66C1 cmp byte ptr [ebx+edi], 0 F000:66C6 jnz short loc_F66D9 F000:66C8 mov word ptr [ebx+esi], 0FFFFh F000:66CE inc dword ptr fs:0F32h F000:66D4 inc dword ptr [eax+27h] F000:66D9 F000:66D9 loc_F66D9: ; CODE XREF: sub_F652B+194j F000:66D9 ; sub_F652B+19Bj F000:66D9 add ebx, 2 F000:66DD loopd loc_F66BA F000:66E0 mov edi, 0D5Ah F000:66E6 xor bx, bx F000:66E8 F000:66E8 loc_F66E8: ; CODE XREF: sub_F652B+1F1j F000:66E8 call word ptr fs:0F2Ah F000:66ED cmp byte ptr fs:0D5Ah, 0FEh ; '¦' F000:66F3 jnz short loc_F6716 F000:66F5 mov ax, bx F000:66F7 mov bx, fs:0D5Ch F000:66FC call sub_F6EC4 F000:66FF xchg ax, bx F000:6700 cmp ax, bx F000:6702 jz short loc_F6716 F000:6704 mov byte ptr fs:0D5Ah, 0 F000:670A push esi F000:670C mov esi, edi F000:670F call word ptr fs:0F3Ah F000:6714 pop esi F000:6716 F000:6716 loc_F6716: ; CODE XREF: sub_F652B+1C8j F000:6716 ; sub_F652B+1D7j F000:6716 inc bx F000:6717 cmp bx, fs:0F1Ch F000:671C jb short loc_F66E8 F000:671E F000:671E loc_F671E: ; CODE XREF: sub_F652B+2Dj F000:671E ; sub_F652B+6Ej ... F000:671E inc dl F000:6720 jmp loc_F6531 F000:6720 sub_F652B endp F000:6720 F000:6723 F000:6723 ; =============== S U B R O U T I N E ======================================= F000:6723 F000:6723 F000:6723 sub_F6723 proc near ; CODE XREF: sub_F652B+25p F000:6723 ; sub_F652B+108p ... F000:6723 xor ebp, ebp F000:6726 mov edi, 0D5Ah F000:672C mov eax, 200000h F000:6732 F000:6732 loc_F6732: ; CODE XREF: sub_F6723+2Cj F000:6732 cmp bx, 0FFFFh F000:6735 jz short locret_F6751 F000:6737 cmp byte ptr [eax+ebx*2], 0 F000:673C jnz short loc_F6752 F000:673E mov byte ptr [eax+ebx*2], 1 F000:6743 call sub_F7402 F000:6746 jb short locret_F6751 F000:6748 inc ebp F000:674A mov bx, fs:0D5Eh F000:674F jmp short loc_F6732 F000:6751 ; --------------------------------------------------------------------------- F000:6751 F000:6751 locret_F6751: ; CODE XREF: sub_F6723+12j F000:6751 ; sub_F6723+23j F000:6751 retn F000:6752 ; --------------------------------------------------------------------------- F000:6752 F000:6752 loc_F6752: ; CODE XREF: sub_F6723+19j F000:6752 mov eax, fs:0F90h F000:6757 or byte ptr [eax+3Ch], 10h F000:675C retn F000:675C sub_F6723 endp F000:675C F000:675D F000:675D ; =============== S U B R O U T I N E ======================================= F000:675D F000:675D F000:675D sub_F675D proc near ; CODE XREF: sub_F61EE+Ap F000:675D ; sub_F61EE+13p ... F000:675D cmp al, 61h ; 'a' F000:675F jb short locret_F6767 F000:6761 cmp al, 7Ah ; 'z' F000:6763 ja short locret_F6767 F000:6765 and al, 0DFh F000:6767 F000:6767 locret_F6767: ; CODE XREF: sub_F675D+2j F000:6767 ; sub_F675D+6j F000:6767 retn F000:6767 sub_F675D endp F000:6767 F000:6768 F000:6768 ; =============== S U B R O U T I N E ======================================= F000:6768 F000:6768 F000:6768 sub_F6768 proc near ; CODE XREF: sub_F38B1+30p F000:6768 ; sub_F5065+5Ap ... F000:6768 pushad F000:676A mov esi, ebx F000:676D mov bx, 1 F000:6770 mov ecx, 1 F000:6776 call sub_F77B3 F000:6779 jb short loc_F679C F000:677B mov dh, [edi] F000:677E cmp dh, 0FFh F000:6781 jz short loc_F679C F000:6783 movzx ecx, dh F000:6787 call sub_F77B3 F000:678A jb short loc_F679C F000:678C popad F000:678E push eax F000:6790 movzx eax, byte ptr [edi] F000:6795 add ebx, eax F000:6798 pop eax F000:679A clc F000:679B retn F000:679C ; --------------------------------------------------------------------------- F000:679C F000:679C loc_F679C: ; CODE XREF: sub_F6768+11j F000:679C ; sub_F6768+19j ... F000:679C popad F000:679E stc F000:679F retn F000:679F sub_F6768 endp F000:679F F000:67A0 F000:67A0 ; =============== S U B R O U T I N E ======================================= F000:67A0 F000:67A0 F000:67A0 sub_F67A0 proc near ; CODE XREF: sub_F634C:loc_F64EEp F000:67A0 ; sub_F896D+191p F000:67A0 pushad F000:67A2 push ds F000:67A3 push es F000:67A4 mov ax, fs F000:67A6 mov ds, ax F000:67A8 mov es, ax F000:67AA call sub_F799D F000:67AD mov eax, 0FFFFFFFFh F000:67B3 mov edi, 70Ch F000:67B9 mov esi, edi F000:67BC mov ecx, 4 F000:67C2 rep stos dword ptr es:[edi] F000:67C6 mov dword ptr fs:70Ch, 65737957h F000:67D0 mov dword ptr fs:710h, 0 F000:67DA mov ecx, 10h F000:67E0 xor bx, bx F000:67E2 xor edi, edi F000:67E5 call sub_F75D7 F000:67E8 mov esi, fs:0F3Dh F000:67EE and esi, esi F000:67F1 jz short loc_F6803 F000:67F3 add edi, ecx F000:67F6 movzx ecx, word ptr [esi] F000:67FB inc ecx F000:67FD shl ecx, 1 F000:6800 call sub_F75D7 F000:6803 F000:6803 loc_F6803: ; CODE XREF: sub_F67A0+51j F000:6803 call sub_F7394 F000:6806 pop es F000:6807 assume es:nothing F000:6807 pop ds F000:6808 assume ds:nothing F000:6808 popad F000:680A retn F000:680A sub_F67A0 endp F000:680A F000:680B F000:680B ; =============== S U B R O U T I N E ======================================= F000:680B F000:680B F000:680B sub_F680B proc near ; CODE XREF: sub_F634C:loc_F64E1p F000:680B ; sub_F896D+133p F000:680B pushad F000:680D movzx eax, word ptr fs:0F20h F000:6814 push edx F000:6816 imul ax, 3 F000:6819 mov fs:0EC9h, eax F000:681E mov fs:0EC1h, eax F000:6823 call sub_F9625 F000:6826 pop edx F000:6828 call sub_F7394 F000:682B mov byte ptr fs:92Ch, 0FFh F000:6831 mov ax, 0FFFFh F000:6834 F000:6834 loc_F6834: ; CODE XREF: sub_F680B+49j F000:6834 inc ax F000:6835 cmp ax, fs:0F20h F000:683A jnb short loc_F6856 F000:683C call sub_F6E04 F000:683F jb short loc_F6851 F000:6841 mov bx, ax F000:6843 call word ptr fs:0F2Ch F000:6848 mov ebx, 55AA55AAh F000:684E call sub_F69D4 F000:6851 F000:6851 loc_F6851: ; CODE XREF: sub_F680B+34j F000:6851 call sub_F6515 F000:6854 jmp short loc_F6834 F000:6856 ; --------------------------------------------------------------------------- F000:6856 F000:6856 loc_F6856: ; CODE XREF: sub_F680B+2Fj F000:6856 mov ax, 0FFFFh F000:6859 F000:6859 loc_F6859: ; CODE XREF: sub_F680B+8Bj F000:6859 inc ax F000:685A cmp ax, fs:0F20h F000:685F jnb short loc_F6898 F000:6861 call sub_F6E04 F000:6864 jb short loc_F6893 F000:6866 mov ebx, 55AA55AAh F000:686C call sub_F6986 F000:686F jnz short loc_F6890 F000:6871 mov bx, ax F000:6873 call word ptr fs:0F2Ch F000:6878 jb short loc_F6890 F000:687A mov ebx, 0FFFFFFFFh F000:6880 call sub_F6986 F000:6883 jnz short loc_F6890 F000:6885 mov ebx, 0AA55AA55h F000:688B call sub_F69D4 F000:688E jnb short loc_F6893 F000:6890 F000:6890 loc_F6890: ; CODE XREF: sub_F680B+64j F000:6890 ; sub_F680B+6Dj ... F000:6890 call sub_F6A0A F000:6893 F000:6893 loc_F6893: ; CODE XREF: sub_F680B+59j F000:6893 ; sub_F680B+83j F000:6893 call sub_F6515 F000:6896 jmp short loc_F6859 F000:6898 ; --------------------------------------------------------------------------- F000:6898 F000:6898 loc_F6898: ; CODE XREF: sub_F680B+54j F000:6898 not ebx F000:689B mov ax, 0FFFFh F000:689E F000:689E loc_F689E: ; CODE XREF: sub_F680B+C5j F000:689E inc ax F000:689F cmp ax, fs:0F20h F000:68A4 jnb short loc_F68D2 F000:68A6 call sub_F6E04 F000:68A9 jb short loc_F68CD F000:68AB mov ebx, 0AA55AA55h F000:68B1 call sub_F6986 F000:68B4 jnz short loc_F68CA F000:68B6 mov bx, ax F000:68B8 call word ptr fs:0F2Ch F000:68BD jb short loc_F68CA F000:68BF mov ebx, 0FFFFFFFFh F000:68C5 call sub_F6986 F000:68C8 jz short loc_F68CD F000:68CA F000:68CA loc_F68CA: ; CODE XREF: sub_F680B+A9j F000:68CA ; sub_F680B+B2j F000:68CA call sub_F6A0A F000:68CD F000:68CD loc_F68CD: ; CODE XREF: sub_F680B+9Ej F000:68CD ; sub_F680B+BDj F000:68CD call sub_F6515 F000:68D0 jmp short loc_F689E F000:68D2 ; --------------------------------------------------------------------------- F000:68D2 F000:68D2 loc_F68D2: ; CODE XREF: sub_F680B+99j F000:68D2 call sub_F68DE F000:68D5 mov ax, 9337h F000:68D8 call sub_F96D8 F000:68DB popad F000:68DD retn F000:68DD sub_F680B endp F000:68DD F000:68DE F000:68DE ; =============== S U B R O U T I N E ======================================= F000:68DE F000:68DE F000:68DE sub_F68DE proc near ; CODE XREF: sub_F680B:loc_F68D2p F000:68DE ; sub_F896D:loc_F8AFBp F000:68DE pushad F000:68E0 mov ax, 0FFFFh F000:68E3 xor ebx, ebx F000:68E6 F000:68E6 loc_F68E6: ; CODE XREF: sub_F68DE+13j F000:68E6 ; sub_F68DE+1Bj F000:68E6 inc ax F000:68E7 cmp ax, fs:0F20h F000:68EC jnb short loc_F68FB F000:68EE call sub_F6E04 F000:68F1 jb short loc_F68E6 F000:68F3 add ebx, fs:0F41h F000:68F9 jmp short loc_F68E6 F000:68FB ; --------------------------------------------------------------------------- F000:68FB F000:68FB loc_F68FB: ; CODE XREF: sub_F68DE+Ej F000:68FB mov esi, fs:0F90h F000:6901 mov fs:[esi+3Dh], ebx F000:6907 mov word ptr fs:[esi+3Ah], 0 F000:690E mov word ptr fs:[esi+25h], 0 F000:6915 mov eax, 0FFFFFFFFh F000:691B mov ecx, fs:0F1Ch F000:6921 shr ecx, 1 F000:6924 mov edi, fs:0F10h F000:692A push es F000:692B push fs F000:692D pop es F000:692E assume es:nothing F000:692E rep stos dword ptr es:[edi] F000:6932 pop es F000:6933 assume es:nothing F000:6933 movzx eax, word ptr fs:[esi+15h] F000:693A test byte ptr fs:[esi+3Ch], 4 F000:6940 jz short loc_F6946 F000:6942 sub eax, 14h F000:6946 F000:6946 loc_F6946: ; CODE XREF: sub_F68DE+62j F000:6946 push edx F000:6948 mul dword ptr fs:[esi+36h] F000:694E pop edx F000:6950 sub eax, 2 F000:6954 mov fs:[esi+27h], eax F000:695A mov edi, fs:0D56h F000:6960 F000:6960 loc_F6960: ; CODE XREF: sub_F68DE+A3j F000:6960 and edi, edi F000:6963 jz short loc_F6983 F000:6965 cmp fs:[edi+210h], dl F000:696D jnz short loc_F6978 F000:696F mov byte ptr fs:[edi+210h], 0FFh F000:6978 F000:6978 loc_F6978: ; CODE XREF: sub_F68DE+8Fj F000:6978 mov edi, fs:[edi+20Ch] F000:6981 jmp short loc_F6960 F000:6983 ; --------------------------------------------------------------------------- F000:6983 F000:6983 loc_F6983: ; CODE XREF: sub_F68DE+85j F000:6983 popad F000:6985 retn F000:6985 sub_F68DE endp F000:6985 F000:6986 F000:6986 ; =============== S U B R O U T I N E ======================================= F000:6986 F000:6986 F000:6986 sub_F6986 proc near ; CODE XREF: sub_F680B+61p F000:6986 ; sub_F680B+75p ... F000:6986 pushad F000:6988 mov ebp, fs:0F41h F000:698E mul bp F000:6990 xchg eax, ebx F000:6992 F000:6992 loc_F6992: ; CODE XREF: sub_F6986+47j F000:6992 mov edi, 71Ch F000:6998 mov ecx, fs:0F18h F000:699E call word ptr fs:0F28h F000:69A3 mov ecx, fs:0F18h F000:69A9 shr ecx, 2 F000:69AD repe scas dword ptr es:[edi] F000:69B1 jnz short loc_F69D1 F000:69B3 mov edi, 71Ch F000:69B9 call word ptr fs:0F2Ah F000:69BE mov ecx, 2 F000:69C4 repe scas dword ptr es:[edi] F000:69C8 jnz short loc_F69D1 F000:69CA inc bx F000:69CB dec ebp F000:69CD jnz short loc_F6992 F000:69CF xor ax, ax F000:69D1 F000:69D1 loc_F69D1: ; CODE XREF: sub_F6986+2Bj F000:69D1 ; sub_F6986+42j F000:69D1 popad F000:69D3 retn F000:69D3 sub_F6986 endp F000:69D3 F000:69D4 F000:69D4 ; =============== S U B R O U T I N E ======================================= F000:69D4 F000:69D4 F000:69D4 sub_F69D4 proc near ; CODE XREF: sub_F680B+43p F000:69D4 ; sub_F680B+80p F000:69D4 pushad F000:69D6 xchg eax, ebx F000:69D8 mov edi, 71Ch F000:69DE mov ecx, 82h ; 'é' F000:69E4 rep stos dword ptr es:[edi] F000:69E8 xchg eax, ebx F000:69EA movzx eax, ax F000:69EE mov ecx, fs:0F41h F000:69F4 mul ecx F000:69F7 xchg eax, ebx F000:69F9 F000:69F9 loc_F69F9: ; CODE XREF: sub_F69D4+2Fj F000:69F9 mov esi, 71Ch F000:69FF call sub_F6EEB F000:6A02 inc bx F000:6A03 loopd loc_F69F9 F000:6A06 popad F000:6A08 clc F000:6A09 retn F000:6A09 sub_F69D4 endp F000:6A09 F000:6A0A F000:6A0A ; =============== S U B R O U T I N E ======================================= F000:6A0A F000:6A0A F000:6A0A sub_F6A0A proc near ; CODE XREF: sub_F634C+168p F000:6A0A ; sub_F680B:loc_F6890p ... F000:6A0A pushad F000:6A0C mov esi, fs:0F3Dh F000:6A12 cmp word ptr fs:[esi], 14h F000:6A17 jnb short loc_F6A2C F000:6A19 inc word ptr fs:[esi] F000:6A1D movzx ebx, word ptr fs:[esi] F000:6A23 mov fs:[esi+ebx*2], ax F000:6A28 clc F000:6A29 F000:6A29 loc_F6A29: ; CODE XREF: sub_F6A0A+23j F000:6A29 popad F000:6A2B retn F000:6A2C ; --------------------------------------------------------------------------- F000:6A2C F000:6A2C loc_F6A2C: ; CODE XREF: sub_F6A0A+Dj F000:6A2C stc F000:6A2D jmp short loc_F6A29 F000:6A2D sub_F6A0A endp F000:6A2D F000:6A2F F000:6A2F ; =============== S U B R O U T I N E ======================================= F000:6A2F F000:6A2F F000:6A2F sub_F6A2F proc near ; CODE XREF: F000:2F6Ep F000:6A2F call sub_FCFD1 F000:6A32 mov byte ptr fs:0F7Eh, 0FFh F000:6A38 mov ecx, 3 F000:6A3E mov esi, 71Ch F000:6A44 xor ebx, ebx F000:6A47 F000:6A47 loc_F6A47: ; CODE XREF: sub_F6A2F+37j F000:6A47 mov [esi+208h], ebx F000:6A4F mov byte ptr [esi+210h], 0FFh F000:6A57 mov ebx, esi F000:6A5A add esi, 212h F000:6A61 mov [esi-6], esi F000:6A66 loop loc_F6A47 F000:6A68 mov dword ptr [esi-6], 0 F000:6A71 mov fs:0D52h, ebx F000:6A77 mov dword ptr fs:0D56h, 71Ch F000:6A81 mov ebp, 708h F000:6A87 xor bx, bx F000:6A89 xor dh, dh F000:6A8B F000:6A8B loc_F6A8B: ; CODE XREF: sub_F6A2F+83j F000:6A8B mov dl, cs:[bx-30C0h] F000:6A90 cmp dl, 0FFh F000:6A93 jz short loc_F6AC5 F000:6A95 mov esi, 0CF50h F000:6A9B mov si, cs:[si] F000:6A9E F000:6A9E loc_F6A9E: ; CODE XREF: sub_F6A2F+94j F000:6A9E call word ptr cs:[si+49h] F000:6AA2 cmp ah, cs:[si+4Eh] F000:6AA6 jnz short loc_F6AB4 F000:6AA8 push dx F000:6AA9 xchg dl, dh F000:6AAB call sub_F6ACC F000:6AAE pop dx F000:6AAF inc dh F000:6AB1 F000:6AB1 loc_F6AB1: ; CODE XREF: sub_F6A2F+8Bj F000:6AB1 ; sub_F6A2F+92j F000:6AB1 inc bx F000:6AB2 jmp short loc_F6A8B F000:6AB4 ; --------------------------------------------------------------------------- F000:6AB4 F000:6AB4 loc_F6AB4: ; CODE XREF: sub_F6A2F+77j F000:6AB4 mov si, cs:[si+4Bh] F000:6AB8 or si, si F000:6ABA jz short loc_F6AB1 F000:6ABC mov si, cs:[si] F000:6ABF or si, si F000:6AC1 jz short loc_F6AB1 F000:6AC3 jmp short loc_F6A9E F000:6AC5 ; --------------------------------------------------------------------------- F000:6AC5 F000:6AC5 loc_F6AC5: ; CODE XREF: sub_F6A2F+64j F000:6AC5 mov byte ptr fs:0F7Eh, 0FFh F000:6ACB retn F000:6ACB sub_F6A2F endp F000:6ACB F000:6ACC F000:6ACC ; =============== S U B R O U T I N E ======================================= F000:6ACC F000:6ACC F000:6ACC sub_F6ACC proc near ; CODE XREF: sub_F6A2F+7Cp F000:6ACC push bx F000:6ACD mov eax, cs:[si+11h] F000:6AD2 call sub_F4D6A F000:6AD5 mov edi, fs:704h F000:6ADB mov ebx, edi F000:6ADE mov fs:0F90h, edi F000:6AE4 mov dword ptr [edi], 0 F000:6AEC mov ds:[ebp+0], edi F000:6AF2 mov ebp, edi F000:6AF5 mov ecx, 50h ; 'P' F000:6AFB push es F000:6AFC push ds F000:6AFD pop es F000:6AFE rep movs byte ptr es:[edi], byte ptr cs:[esi] F000:6B02 F000:6B02 loc_F6B02: ; CODE XREF: sub_F6ACC+3Dj F000:6B02 lods byte ptr cs:[esi] F000:6B05 stos byte ptr es:[edi] F000:6B07 and al, al F000:6B09 jnz short loc_F6B02 F000:6B0B pop es F000:6B0C mov fs:704h, edi F000:6B12 mov [ebx+4Fh], dh F000:6B16 push bx F000:6B17 mov ax, 0CF45h F000:6B1A shl dh, 1 F000:6B1C add al, dh F000:6B1E adc ah, 0 F000:6B21 mov bx, ax F000:6B23 mov ax, cs:[bx] F000:6B26 pop bx F000:6B27 mov [ebx+17h], ax F000:6B2B mov [ebx+5], edi F000:6B30 mov esi, ebx F000:6B33 mov ax, ds F000:6B35 mov es, ax F000:6B37 mov ecx, [esi+11h] F000:6B3C and ecx, ecx F000:6B3F jz loc_F6DBB F000:6B43 mov [esi+27h], ecx F000:6B48 shr ecx, 1 F000:6B4B mov eax, 0FFFFFFFFh F000:6B51 rep stos dword ptr es:[edi] F000:6B55 mov fs:704h, edi F000:6B5B mov [esi+32h], edi F000:6B60 xor eax, eax F000:6B63 mov ecx, 0Bh F000:6B69 rep stos dword ptr es:[edi] F000:6B6D mov fs:704h, edi F000:6B73 call sub_F799D F000:6B76 xor ebx, ebx F000:6B79 mov dword ptr fs:0F8Ch, 0 F000:6B83 mov eax, 0FFFFFFFFh F000:6B89 mov esi, fs:704h F000:6B8F mov edi, esi F000:6B92 mov ecx, fs:0F1Ch F000:6B98 shr ecx, 1 F000:6B9B rep stos dword ptr es:[edi] F000:6B9F push es F000:6BA0 mov ax, 18h F000:6BA3 mov es, ax F000:6BA5 assume es:nothing F000:6BA5 F000:6BA5 loc_F6BA5: ; CODE XREF: sub_F6ACC+186j F000:6BA5 jmp short loc_F6BDB F000:6BA7 ; --------------------------------------------------------------------------- F000:6BA7 mov ecx, fs:0F18h F000:6BAD mov edi, 71Ch F000:6BB3 call word ptr fs:0F28h F000:6BB8 mov edi, 91Ch F000:6BBE call word ptr fs:0F2Ah F000:6BC3 cmp byte ptr fs:91Ch, 0FEh ; '¦' F000:6BC9 jz short loc_F6C20 F000:6BCB cmp byte ptr fs:91Ch, 0FFh F000:6BD1 jz short loc_F6BF8 F000:6BD3 F000:6BD3 loc_F6BD3: ; CODE XREF: sub_F6ACC+13Bj F000:6BD3 ; sub_F6ACC+150j ... F000:6BD3 mov word ptr [esi+ebx*2], 0FFFEh F000:6BD9 jmp short loc_F6C42 F000:6BDB ; --------------------------------------------------------------------------- F000:6BDB F000:6BDB loc_F6BDB: ; CODE XREF: sub_F6ACC:loc_F6BA5j F000:6BDB mov edi, 91Ch F000:6BE1 call word ptr fs:0F2Ah F000:6BE6 cmp byte ptr fs:91Ch, 0FEh ; '¦' F000:6BEC jnz short loc_F6C42 F000:6BEE mov ax, fs:91Eh F000:6BF2 mov [esi+ebx*2], ax F000:6BF6 jmp short loc_F6C42 F000:6BF8 ; --------------------------------------------------------------------------- F000:6BF8 F000:6BF8 loc_F6BF8: ; CODE XREF: sub_F6ACC+105j F000:6BF8 mov ecx, 2 F000:6BFE mov eax, 0FFFFFFFFh F000:6C04 repe scasd F000:6C07 jnz short loc_F6BD3 F000:6C09 mov edi, 71Ch F000:6C0F mov ecx, fs:0F18h F000:6C15 shr ecx, 2 F000:6C19 repe scasd F000:6C1C jnz short loc_F6BD3 F000:6C1E jmp short loc_F6C42 F000:6C20 ; --------------------------------------------------------------------------- F000:6C20 F000:6C20 loc_F6C20: ; CODE XREF: sub_F6ACC+FDj F000:6C20 mov eax, fs:0F18h F000:6C25 mov edi, 71Ch F000:6C2B push fs F000:6C2D push es F000:6C2E pop fs F000:6C30 assume fs:nothing F000:6C30 call sub_F6DBD F000:6C33 pop fs F000:6C35 assume fs:nothing F000:6C35 cmp ax, 0AA55h F000:6C38 jnz short loc_F6BD3 F000:6C3A mov ax, fs:91Eh F000:6C3E mov [esi+ebx*2], ax F000:6C42 F000:6C42 loc_F6C42: ; CODE XREF: sub_F6ACC+10Dj F000:6C42 ; sub_F6ACC+120j ... F000:6C42 inc ebx F000:6C44 test bl, 3Fh F000:6C47 jnz short loc_F6C4C F000:6C49 call sub_F4E12 F000:6C4C F000:6C4C loc_F6C4C: ; CODE XREF: sub_F6ACC+17Bj F000:6C4C cmp ebx, fs:0F1Ch F000:6C52 jb loc_F6BA5 F000:6C56 pop es F000:6C57 assume es:nothing F000:6C57 xor ebx, ebx F000:6C5A mov edi, fs:0F10h F000:6C60 F000:6C60 loc_F6C60: ; CODE XREF: sub_F6ACC+202j F000:6C60 movzx eax, word ptr [esi+ebx*2] F000:6C66 cmp ax, 0FFFEh F000:6C69 jnb short loc_F6CC6 F000:6C6B cmp eax, fs:0F1Ch F000:6C71 jb short loc_F6C7B F000:6C73 mov word ptr [esi+ebx*2], 0FFFEh F000:6C79 jmp short loc_F6CC6 F000:6C7B ; --------------------------------------------------------------------------- F000:6C7B F000:6C7B loc_F6C7B: ; CODE XREF: sub_F6ACC+1A5j F000:6C7B push ebx F000:6C7D cmp word ptr [edi+eax*2], 0FFFFh F000:6C82 jz short loc_F6CBA F000:6C84 push edi F000:6C86 mov edi, 91Ch F000:6C8C call word ptr fs:0F2Ah F000:6C91 pop edi F000:6C93 xchg bx, [edi+eax*2] F000:6C97 push edi F000:6C99 mov edi, 0D5Ah F000:6C9F call word ptr fs:0F2Ah F000:6CA4 pop edi F000:6CA6 mov dh, fs:91Dh F000:6CAB cmp dh, fs:0D5Bh F000:6CB0 js short loc_F6CB4 F000:6CB2 jmp short loc_F6CC4 F000:6CB4 ; --------------------------------------------------------------------------- F000:6CB4 F000:6CB4 loc_F6CB4: ; CODE XREF: sub_F6ACC+1E4j F000:6CB4 dec dword ptr fs:0F8Ch F000:6CBA F000:6CBA loc_F6CBA: ; CODE XREF: sub_F6ACC+1B6j F000:6CBA mov [edi+eax*2], bx F000:6CBE inc dword ptr fs:0F8Ch F000:6CC4 F000:6CC4 loc_F6CC4: ; CODE XREF: sub_F6ACC+1E6j F000:6CC4 pop ebx F000:6CC6 F000:6CC6 loc_F6CC6: ; CODE XREF: sub_F6ACC+19Dj F000:6CC6 ; sub_F6ACC+1ADj F000:6CC6 inc ebx F000:6CC8 cmp ebx, fs:0F1Ch F000:6CCE jb short loc_F6C60 F000:6CD0 xor bx, bx F000:6CD2 call sub_F6E2C F000:6CD5 jb short loc_F6CE7 F000:6CD7 mov esi, fs:0D56h F000:6CDD cmp dword ptr [esi], 65737957h F000:6CE5 jz short loc_F6D02 F000:6CE7 F000:6CE7 loc_F6CE7: ; CODE XREF: sub_F6ACC+209j F000:6CE7 mov edi, fs:0F90h F000:6CED or byte ptr [edi+3Ch], 1 F000:6CF2 cmp dword ptr fs:0F8Ch, 5 F000:6CF9 jnb short loc_F6D32 F000:6CFB or byte ptr [edi+3Ch], 2 F000:6D00 jmp short loc_F6D32 F000:6D02 ; --------------------------------------------------------------------------- F000:6D02 F000:6D02 loc_F6D02: ; CODE XREF: sub_F6ACC+219j F000:6D02 mov esi, fs:0D56h F000:6D08 add esi, 10h F000:6D0C movzx ecx, word ptr [esi] F000:6D11 cmp cx, 14h F000:6D14 jbe short loc_F6D19 F000:6D16 mov cx, 14h F000:6D19 F000:6D19 loc_F6D19: ; CODE XREF: sub_F6ACC+248j F000:6D19 mov edi, fs:0F3Dh F000:6D1F mov ax, cx F000:6D21 inc cx F000:6D22 F000:6D22 loc_F6D22: ; CODE XREF: sub_F6ACC+264j F000:6D22 mov [edi], ax F000:6D25 add edi, 2 F000:6D29 add esi, 2 F000:6D2D mov ax, [esi] F000:6D30 loop loc_F6D22 F000:6D32 F000:6D32 loc_F6D32: ; CODE XREF: sub_F6ACC+22Dj F000:6D32 ; sub_F6ACC+234j F000:6D32 mov esi, fs:0F90h F000:6D38 mov edi, fs:704h F000:6D3E mov eax, 0FFFFFFFFh F000:6D44 F000:6D44 loc_F6D44: ; CODE XREF: sub_F6ACC+284j F000:6D44 ; sub_F6ACC+2BCj F000:6D44 inc eax F000:6D46 cmp ax, fs:0F20h F000:6D4B jnb short loc_F6D8A F000:6D4D call sub_F6E04 F000:6D50 jb short loc_F6D44 F000:6D52 mov ecx, fs:0F41h F000:6D58 push eax F000:6D5A push edx F000:6D5C mul ecx F000:6D5F pop edx F000:6D61 mov ebx, eax F000:6D64 xor eax, eax F000:6D67 F000:6D67 loc_F6D67: ; CODE XREF: sub_F6ACC+2A6j F000:6D67 cmp word ptr [edi+ebx*2], 0FFFFh F000:6D6C jnz short loc_F6D70 F000:6D6E inc eax F000:6D70 F000:6D70 loc_F6D70: ; CODE XREF: sub_F6ACC+2A0j F000:6D70 inc ebx F000:6D72 loop loc_F6D67 F000:6D74 add [esi+3Dh], eax F000:6D79 cmp eax, fs:0F41h F000:6D7F jnz short loc_F6D86 F000:6D81 or byte ptr [esi+3Ch], 80h F000:6D86 F000:6D86 loc_F6D86: ; CODE XREF: sub_F6ACC+2B3j F000:6D86 pop eax F000:6D88 jmp short loc_F6D44 F000:6D8A ; --------------------------------------------------------------------------- F000:6D8A F000:6D8A loc_F6D8A: ; CODE XREF: sub_F6ACC+27Fj F000:6D8A test byte ptr [esi+3Ch], 80h F000:6D8F jnz short loc_F6D96 F000:6D91 or byte ptr [esi+3Ch], 10h F000:6D96 F000:6D96 loc_F6D96: ; CODE XREF: sub_F6ACC+2C3j F000:6D96 movzx eax, word ptr [esi+15h] F000:6D9C test byte ptr [esi+3Ch], 4 F000:6DA1 jz short loc_F6DA7 F000:6DA3 sub eax, 14h F000:6DA7 F000:6DA7 loc_F6DA7: ; CODE XREF: sub_F6ACC+2D5j F000:6DA7 push edx F000:6DA9 mul dword ptr [esi+36h] F000:6DAE pop edx F000:6DB0 sub eax, fs:0F8Ch F000:6DB6 mov [esi+27h], eax F000:6DBB F000:6DBB loc_F6DBB: ; CODE XREF: sub_F6ACC+73j F000:6DBB pop bx F000:6DBC retn F000:6DBC sub_F6ACC endp F000:6DBC F000:6DBD F000:6DBD ; =============== S U B R O U T I N E ======================================= F000:6DBD F000:6DBD F000:6DBD sub_F6DBD proc near ; CODE XREF: sub_F6ACC+164p F000:6DBD ; sub_F6EF1+8Bp F000:6DBD push ecx F000:6DBF push edx F000:6DC1 push edi F000:6DC3 mov ecx, eax F000:6DC6 shr ecx, 2 F000:6DCA xor edx, edx F000:6DCD push edi F000:6DCF F000:6DCF loc_F6DCF: ; CODE XREF: sub_F6DBD+23j F000:6DCF mov eax, fs:[edi] F000:6DD4 add edi, 4 F000:6DD8 add dx, ax F000:6DDA shr eax, 10h F000:6DDE add dx, ax F000:6DE0 loop loc_F6DCF F000:6DE2 mov ecx, 4 F000:6DE8 pop edi F000:6DEA add edi, 200h F000:6DF1 F000:6DF1 loc_F6DF1: ; CODE XREF: sub_F6DBD+3Cj F000:6DF1 add dx, fs:[edi] F000:6DF5 add edi, 2 F000:6DF9 loop loc_F6DF1 F000:6DFB mov ax, dx F000:6DFD pop edi F000:6DFF pop edx F000:6E01 pop ecx F000:6E03 retn F000:6E03 sub_F6DBD endp F000:6E03 F000:6E04 F000:6E04 ; =============== S U B R O U T I N E ======================================= F000:6E04 F000:6E04 F000:6E04 sub_F6E04 proc near ; CODE XREF: sub_F634C+1Ep F000:6E04 ; sub_F680B+31p ... F000:6E04 push cx F000:6E05 push edi F000:6E07 mov edi, fs:0F3Dh F000:6E0D and edi, edi F000:6E10 jz short loc_F6E24 F000:6E12 mov cx, fs:[edi] F000:6E16 jcxz short loc_F6E24 F000:6E18 F000:6E18 loc_F6E18: ; CODE XREF: sub_F6E04+1Ej F000:6E18 add edi, 2 F000:6E1C cmp ax, fs:[edi] F000:6E20 jz short loc_F6E29 F000:6E22 loop loc_F6E18 F000:6E24 F000:6E24 loc_F6E24: ; CODE XREF: sub_F6E04+Cj F000:6E24 ; sub_F6E04+12j F000:6E24 clc F000:6E25 F000:6E25 loc_F6E25: ; CODE XREF: sub_F6E04+26j F000:6E25 pop edi F000:6E27 pop cx F000:6E28 retn F000:6E29 ; --------------------------------------------------------------------------- F000:6E29 F000:6E29 loc_F6E29: ; CODE XREF: sub_F6E04+1Cj F000:6E29 stc F000:6E2A jmp short loc_F6E25 F000:6E2A sub_F6E04 endp F000:6E2A F000:6E2C F000:6E2C ; =============== S U B R O U T I N E ======================================= F000:6E2C F000:6E2C F000:6E2C sub_F6E2C proc near ; CODE XREF: sub_F6ACC+206p F000:6E2C ; sub_F6FF8+16Bp ... F000:6E2C pushad F000:6E2E mov esi, fs:0D56h F000:6E34 F000:6E34 loc_F6E34: ; CODE XREF: sub_F6E2C+37j F000:6E34 cmp fs:[esi+210h], dl F000:6E3C jnz short loc_F6E57 F000:6E3E cmp fs:[esi+202h], bx F000:6E46 jnz short loc_F6E57 F000:6E48 cmp esi, fs:0D56h F000:6E4E jz short loc_F6E53 F000:6E50 F000:6E50 loc_F6E50: ; CODE XREF: sub_F6E2C:loc_F6EBFj F000:6E50 call sub_F7938 F000:6E53 F000:6E53 loc_F6E53: ; CODE XREF: sub_F6E2C+22j F000:6E53 clc F000:6E54 F000:6E54 loc_F6E54: ; CODE XREF: sub_F6E2C+96j F000:6E54 popad F000:6E56 retn F000:6E57 ; --------------------------------------------------------------------------- F000:6E57 F000:6E57 loc_F6E57: ; CODE XREF: sub_F6E2C+10j F000:6E57 ; sub_F6E2C+1Aj F000:6E57 mov esi, fs:[esi+20Ch] F000:6E60 and esi, esi F000:6E63 jnz short loc_F6E34 F000:6E65 mov esi, fs:0D52h F000:6E6B call sub_F6EF1 F000:6E6E mov byte ptr fs:[esi+210h], 0FFh F000:6E77 mov fs:[esi+202h], bx F000:6E7F mov byte ptr fs:[esi+211h], 0 F000:6E88 call sub_F6EC4 F000:6E8B jb short loc_F6EC1 F000:6E8D mov ecx, fs:0F18h F000:6E93 mov edi, fs:0D52h F000:6E99 push es F000:6E9A push fs F000:6E9C pop es F000:6E9D call word ptr fs:0F28h F000:6EA2 add edi, 200h F000:6EA9 call word ptr fs:0F2Ah F000:6EAE pop es F000:6EAF mov esi, fs:0D52h F000:6EB5 jb short loc_F6EBF F000:6EB7 mov fs:[esi+210h], dl F000:6EBF F000:6EBF loc_F6EBF: ; CODE XREF: sub_F6E2C+89j F000:6EBF jmp short loc_F6E50 F000:6EC1 ; --------------------------------------------------------------------------- F000:6EC1 F000:6EC1 loc_F6EC1: ; CODE XREF: sub_F6E2C+5Fj F000:6EC1 stc F000:6EC2 jmp short loc_F6E54 F000:6EC2 sub_F6E2C endp F000:6EC2 F000:6EC4 F000:6EC4 ; =============== S U B R O U T I N E ======================================= F000:6EC4 F000:6EC4 F000:6EC4 sub_F6EC4 proc near ; CODE XREF: sub_F652B+1D1p F000:6EC4 ; sub_F6E2C+5Cp ... F000:6EC4 cmp bx, 0FFFEh F000:6EC7 jnb short loc_F6EE3 F000:6EC9 movzx ebx, bx F000:6ECD shl ebx, 1 F000:6ED0 add ebx, fs:0F10h F000:6ED6 movzx ebx, word ptr fs:[ebx] F000:6EDC cmp bx, 0FFFEh F000:6EDF jnb short loc_F6EE3 F000:6EE1 clc F000:6EE2 retn F000:6EE3 ; --------------------------------------------------------------------------- F000:6EE3 F000:6EE3 loc_F6EE3: ; CODE XREF: sub_F6EC4+3j F000:6EE3 ; sub_F6EC4+1Bj F000:6EE3 stc F000:6EE4 retn F000:6EE4 sub_F6EC4 endp F000:6EE4 F000:6EE5 F000:6EE5 ; =============== S U B R O U T I N E ======================================= F000:6EE5 F000:6EE5 F000:6EE5 sub_F6EE5 proc near ; CODE XREF: sub_F6FF8+368p F000:6EE5 call word ptr fs:0F2Ch F000:6EEA retn F000:6EEA sub_F6EE5 endp F000:6EEA F000:6EEB F000:6EEB ; =============== S U B R O U T I N E ======================================= F000:6EEB F000:6EEB F000:6EEB sub_F6EEB proc near ; CODE XREF: sub_F69D4+2Bp F000:6EEB ; sub_F6EF1+9Dp ... F000:6EEB call word ptr fs:0F2Eh F000:6EF0 retn F000:6EF0 sub_F6EEB endp F000:6EF0 F000:6EF1 F000:6EF1 ; =============== S U B R O U T I N E ======================================= F000:6EF1 F000:6EF1 F000:6EF1 sub_F6EF1 proc near ; CODE XREF: sub_F6E2C+3Fp F000:6EF1 ; sub_F7394:loc_F739Cp ... F000:6EF1 pushad F000:6EF3 test byte ptr fs:[esi+211h], 1 F000:6EFC jz loc_F6FE9 F000:6F00 mov dl, fs:[esi+210h] F000:6F08 cmp dl, 0FFh F000:6F0B jz loc_F6FE9 F000:6F0F or byte ptr fs:10DDh, 20h F000:6F15 mov al, fs:0F7Eh F000:6F19 push eax F000:6F1B push esi F000:6F1D call sub_F799D F000:6F20 pop esi F000:6F22 movzx ebx, word ptr fs:[esi+202h] F000:6F2C shl ebx, 1 F000:6F2F add ebx, fs:0F10h F000:6F35 mov bx, fs:[ebx] F000:6F39 mov byte ptr fs:0D6Ah, 0FFh F000:6F3F mov byte ptr fs:0D6Bh, 0FFh F000:6F45 cmp bx, 0FFFEh F000:6F48 jnb short loc_F6F57 F000:6F4A push edi F000:6F4C mov edi, 0D6Ah F000:6F52 call sub_F6FED F000:6F55 pop edi F000:6F57 F000:6F57 loc_F6F57: ; CODE XREF: sub_F6EF1+57j F000:6F57 call sub_F7875 F000:6F5A jnb short $+2 F000:6F5C mov byte ptr fs:[esi+200h], 0FEh ; '¦' F000:6F65 mov dh, fs:0D6Bh F000:6F6A inc dh F000:6F6C mov fs:[esi+201h], dh F000:6F74 mov eax, fs:0F18h F000:6F79 mov edi, esi F000:6F7C call sub_F6DBD F000:6F7F sub ax, 0AA55h F000:6F82 sub fs:[esi+206h], ax F000:6F8A push ds F000:6F8B push fs F000:6F8D pop ds F000:6F8E call sub_F6EEB F000:6F91 pop ds F000:6F92 movzx eax, word ptr fs:[esi+202h] F000:6F9C shl eax, 1 F000:6F9F add eax, fs:0F10h F000:6FA5 xchg bx, fs:[eax] F000:6FA9 mov byte ptr fs:[esi+211h], 0 F000:6FB2 mov esi, fs:0F90h F000:6FB8 dec dword ptr fs:[esi+3Dh] F000:6FBE dec dword ptr fs:0F48h F000:6FC4 mov esi, 0D6Ah F000:6FCA call sub_F7828 F000:6FCD and byte ptr fs:10DDh, 0DFh F000:6FD3 mov esi, fs:0F90h F000:6FD9 test byte ptr fs:[esi+3Ch], 8 F000:6FDF jz short loc_F6FE4 F000:6FE1 call sub_F6FF8 F000:6FE4 F000:6FE4 loc_F6FE4: ; CODE XREF: sub_F6EF1+EEj F000:6FE4 pop edx F000:6FE6 call sub_F799D F000:6FE9 F000:6FE9 loc_F6FE9: ; CODE XREF: sub_F6EF1+Bj F000:6FE9 ; sub_F6EF1+1Aj F000:6FE9 clc F000:6FEA popad F000:6FEC retn F000:6FEC sub_F6EF1 endp F000:6FEC F000:6FED F000:6FED ; =============== S U B R O U T I N E ======================================= F000:6FED F000:6FED F000:6FED sub_F6FED proc near ; CODE XREF: sub_F6EF1+61p F000:6FED ; sub_F7828+10p ... F000:6FED push es F000:6FEE push fs F000:6FF0 pop es F000:6FF1 call word ptr fs:0F2Ah F000:6FF6 pop es F000:6FF7 retn F000:6FF7 sub_F6FED endp F000:6FF7 F000:6FF8 F000:6FF8 ; =============== S U B R O U T I N E ======================================= F000:6FF8 F000:6FF8 F000:6FF8 sub_F6FF8 proc near ; CODE XREF: sub_F6EF1+F0p F000:6FF8 ; F000:738Fp ... F000:6FF8 test byte ptr fs:10DDh, 28h F000:6FFE jnz locret_F7385 F000:7002 or byte ptr fs:10DDh, 8 F000:7008 pushad F000:700A push ds F000:700B push es F000:700C mov ax, fs F000:700E mov ds, ax F000:7010 mov es, ax F000:7012 test byte ptr fs:10DDh, 10h F000:7018 jnz loc_F722C F000:701C mov esi, fs:0F90h F000:7022 and byte ptr fs:[esi+3Ch], 0F7h F000:7028 mov bx, 1 F000:702B mov ecx, 1 F000:7031 xor esi, esi F000:7034 mov edi, 10DEh F000:703A call sub_F77B3 F000:703D jb loc_F721F F000:7041 movzx ecx, byte ptr fs:10DEh F000:7048 inc edi F000:704A inc esi F000:704C F000:704C loc_F704C: ; CODE XREF: sub_F6FF8+8Aj F000:704C cmp cl, 0FFh F000:704F jz loc_F721F F000:7053 mov bx, 1 F000:7056 call sub_F77B3 F000:7059 jnb short loc_F706B F000:705B dec ecx F000:705D call sub_F77B3 F000:7060 jb loc_F722C F000:7064 mov byte ptr [ecx+edi], 0FFh F000:7069 inc ecx F000:706B F000:706B loc_F706B: ; CODE XREF: sub_F6FF8+61j F000:706B movzx ebx, byte ptr [edi] F000:7070 cmp byte ptr [ebx+edi-1], 0 F000:7076 jz short loc_F7084 F000:7078 add esi, ecx F000:707B movzx ecx, byte ptr [ecx+edi-1] F000:7082 jmp short loc_F704C F000:7084 ; --------------------------------------------------------------------------- F000:7084 F000:7084 loc_F7084: ; CODE XREF: sub_F6FF8+7Ej F000:7084 dec esi F000:7086 mov fs:0FA8h, esi F000:708C mov eax, esi F000:708F push edx F000:7091 xor edx, edx F000:7094 div dword ptr fs:0F18h F000:709A mov fs:0FA6h, ax F000:709E mov ecx, edx F000:70A1 sub esi, edx F000:70A4 pop edx F000:70A6 mov edi, 11DEh F000:70AC mov bx, 1 F000:70AF call sub_F77B3 F000:70B2 mov ebp, esi F000:70B5 mov esi, edi F000:70B8 xor edi, edi F000:70BB mov word ptr fs:0FA4h, 0 F000:70C2 jecxz loc_F70D1 F000:70C5 call sub_F773D F000:70C8 mov fs:0FA4h, ax F000:70CC mov bx, ax F000:70CE call loc_F7468 F000:70D1 F000:70D1 loc_F70D1: ; CODE XREF: sub_F6FF8+CAj F000:70D1 add edi, ecx F000:70D4 mov esi, ebp F000:70D7 add esi, ecx F000:70DA mov fs:0F9Ch, esi F000:70E0 mov fs:0FA0h, edi F000:70E6 F000:70E6 loc_F70E6: ; CODE XREF: sub_F6FF8+128j F000:70E6 ; sub_F6FF8+154j F000:70E6 mov esi, fs:0F9Ch F000:70EC mov edi, 11DEh F000:70F2 mov ecx, 1 F000:70F8 mov bx, 1 F000:70FB call sub_F77B3 F000:70FE jb short loc_F714E F000:7100 movzx ecx, byte ptr [edi] F000:7105 cmp cl, 0FFh F000:7108 jz short loc_F714E F000:710A call sub_F77B3 F000:710D jb short loc_F714E F000:710F add fs:0F9Ch, ecx F000:7115 movzx ebx, byte ptr [edi+1] F000:711B cmp byte ptr [ebx+edi], 0 F000:7120 jz short loc_F70E6 F000:7122 mov esi, 11DEh F000:7128 mov edi, fs:0FA0h F000:712E mov bx, fs:0FA4h F000:7133 and bx, bx F000:7135 jnz short loc_F7140 F000:7137 call sub_F773D F000:713A mov fs:0FA4h, ax F000:713E mov bx, ax F000:7140 F000:7140 loc_F7140: ; CODE XREF: sub_F6FF8+13Dj F000:7140 jecxz loc_F7146 F000:7143 call loc_F7468 F000:7146 F000:7146 loc_F7146: ; CODE XREF: sub_F6FF8:loc_F7140j F000:7146 add fs:0FA0h, ecx F000:714C jmp short loc_F70E6 F000:714E ; --------------------------------------------------------------------------- F000:714E F000:714E loc_F714E: ; CODE XREF: sub_F6FF8+106j F000:714E ; sub_F6FF8+110j ... F000:714E call sub_F7394 F000:7151 mov eax, fs:0FA8h F000:7156 cmp eax, fs:0F18h F000:715C jb short loc_F71AC F000:715E mov bx, fs:0FA4h F000:7163 call sub_F6E2C F000:7166 jnb short loc_F716F F000:7168 mov word ptr fs:0FA4h, 0 F000:716F F000:716F loc_F716F: ; CODE XREF: sub_F6FF8+16Ej F000:716F mov ecx, 1 F000:7175 mov esi, eax F000:7178 sub esi, fs:0F18h F000:717E mov edi, 11DEh F000:7184 mov bx, 1 F000:7187 call sub_F77B3 F000:718A mov esi, fs:0D56h F000:7190 mov ax, fs:0FA4h F000:7194 and ax, ax F000:7196 jnz short loc_F719B F000:7198 mov ax, 0FFFFh F000:719B F000:719B loc_F719B: ; CODE XREF: sub_F6FF8+19Ej F000:719B xchg ax, [esi+204h] F000:71A2 mov byte ptr [esi+211h], 1 F000:71AA jmp short loc_F7214 F000:71AC ; --------------------------------------------------------------------------- F000:71AC F000:71AC loc_F71AC: ; CODE XREF: sub_F6FF8+164j F000:71AC mov edi, 11DEh F000:71B2 mov bx, 1 F000:71B5 call sub_F7402 F000:71B8 mov ax, 1 F000:71BB mov bx, fs:0FA4h F000:71C0 and bx, bx F000:71C2 jz short loc_F7214 F000:71C4 call sub_F6E2C F000:71C7 jb short loc_F7214 F000:71C9 mov esi, fs:0D56h F000:71CF mov word ptr [esi+202h], 1 F000:71D8 mov byte ptr [esi+211h], 1 F000:71E0 mov al, fs:11DFh F000:71E4 mov [esi+201h], al F000:71EB mov byte ptr [esi+200h], 0FEh ; '¦' F000:71F3 mov ax, fs:11E2h F000:71F7 mov edi, 11DEh F000:71FD mov bx, fs:0FA4h F000:7202 call sub_F7402 F000:7205 mov byte ptr fs:11DEh, 0 F000:720B mov esi, edi F000:720E call loc_F73B0 F000:7211 call sub_F7394 F000:7214 F000:7214 loc_F7214: ; CODE XREF: sub_F6FF8+1B2j F000:7214 ; sub_F6FF8+1CAj ... F000:7214 mov bx, ax F000:7216 xor ecx, ecx F000:7219 xor edi, edi F000:721C call loc_F7468 F000:721F F000:721F loc_F721F: ; CODE XREF: sub_F6FF8+45j F000:721F ; sub_F6FF8+57j F000:721F mov esi, fs:0F90h F000:7225 mov word ptr fs:[esi+47h], 32h ; '2' F000:722C F000:722C loc_F722C: ; CODE XREF: sub_F6FF8+20j F000:722C ; sub_F6FF8+68j F000:722C call sub_F7394 F000:722F mov edi, 71Ch F000:7235 mov byte ptr fs:[edi+210h], 0FFh F000:723E cmp word ptr fs:0F30h, 0 F000:7244 jz short loc_F7288 F000:7246 movzx eax, word ptr fs:0F45h F000:724D mov ecx, fs:0F41h F000:7253 push edx F000:7255 mul ecx F000:7258 pop edx F000:725A mov ebx, eax F000:725D mov edi, 91Ch F000:7263 F000:7263 loc_F7263: ; CODE XREF: sub_F6FF8+27Aj F000:7263 call word ptr fs:0F2Ah F000:7268 inc ebx F000:726A cmp byte ptr fs:91Ch, 0 F000:7270 jz short loc_F7276 F000:7272 loop loc_F7263 F000:7274 jmp short loc_F7288 F000:7276 ; --------------------------------------------------------------------------- F000:7276 F000:7276 loc_F7276: ; CODE XREF: sub_F6FF8+278j F000:7276 mov esi, fs:0F90h F000:727C inc word ptr fs:[esi+3Ah] F000:7281 mov word ptr fs:[esi+25h], 0 F000:7288 F000:7288 loc_F7288: ; CODE XREF: sub_F6FF8+24Cj F000:7288 ; sub_F6FF8+27Cj F000:7288 mov dword ptr fs:0F94h, 0FFFFFFFFh F000:7292 F000:7292 loc_F7292: ; CODE XREF: sub_F6FF8+2B1j F000:7292 ; sub_F6FF8+2DAj ... F000:7292 inc dword ptr fs:0F94h F000:7298 mov eax, fs:0F94h F000:729D cmp ax, fs:0F20h F000:72A2 jnb loc_F7378 F000:72A6 call sub_F6E04 F000:72A9 jb short loc_F7292 F000:72AB mov ecx, fs:0F41h F000:72B1 push edx F000:72B3 mul ecx F000:72B6 pop edx F000:72B8 mov ebx, eax F000:72BB mov fs:0F98h, ebx F000:72C1 mov edi, 91Ch F000:72C7 call word ptr fs:0F2Ah F000:72CC cmp byte ptr fs:91Ch, 0FFh F000:72D2 jz short loc_F7292 F000:72D4 F000:72D4 loc_F72D4: ; CODE XREF: sub_F6FF8+2EBj F000:72D4 call word ptr fs:0F2Ah F000:72D9 cmp byte ptr fs:91Ch, 0 F000:72DF jz short loc_F72E7 F000:72E1 inc ebx F000:72E3 loop loc_F72D4 F000:72E5 jnz short loc_F7292 F000:72E7 F000:72E7 loc_F72E7: ; CODE XREF: sub_F6FF8+2E7j F000:72E7 mov ecx, fs:0F41h F000:72ED F000:72ED loc_F72ED: ; CODE XREF: sub_F6FF8+360j F000:72ED push ecx F000:72EF mov ebx, fs:0F98h F000:72F5 mov edi, 91Ch F000:72FB call word ptr fs:0F2Ah F000:7300 mov ax, bx F000:7302 mov bx, fs:[edi+2] F000:7307 call sub_F6EC4 F000:730A jb short loc_F7350 F000:730C cmp ax, bx F000:730E jnz short loc_F7350 F000:7310 mov ecx, fs:0F18h F000:7316 mov edi, 71Ch F000:731C call word ptr fs:0F28h F000:7321 call sub_F7875 F000:7324 mov esi, 71Ch F000:732A call sub_F6EEB F000:732D movzx eax, word ptr fs:[esi+202h] F000:7337 shl eax, 1 F000:733A add eax, fs:0F10h F000:7340 mov fs:[eax], bx F000:7344 mov esi, fs:0F90h F000:734A dec dword ptr fs:[esi+3Dh] F000:7350 F000:7350 loc_F7350: ; CODE XREF: sub_F6FF8+312j F000:7350 ; sub_F6FF8+316j F000:7350 inc dword ptr fs:0F98h F000:7356 pop ecx F000:7358 loop loc_F72ED F000:735A mov ebx, fs:0F94h F000:7360 call sub_F6EE5 F000:7363 mov esi, fs:0F90h F000:7369 mov ebx, fs:0F41h F000:736F add fs:[esi+3Dh], ebx F000:7375 jmp loc_F7292 F000:7378 ; --------------------------------------------------------------------------- F000:7378 F000:7378 loc_F7378: ; CODE XREF: sub_F6FF8+2AAj F000:7378 call sub_F7394 F000:737B pop es F000:737C pop ds F000:737D popad F000:737F and byte ptr fs:10DDh, 0F7h F000:7385 F000:7385 locret_F7385: ; CODE XREF: sub_F6FF8+6j F000:7385 retn F000:7385 sub_F6FF8 endp F000:7385 F000:7386 ; --------------------------------------------------------------------------- F000:7386 push esi F000:7388 call sub_F799D F000:738B pop esi F000:738D jb short locret_F7393 F000:738F call sub_F6FF8 F000:7392 clc F000:7393 F000:7393 locret_F7393: ; CODE XREF: F000:738Dj F000:7393 retn F000:7394 F000:7394 ; =============== S U B R O U T I N E ======================================= F000:7394 F000:7394 F000:7394 sub_F7394 proc near ; CODE XREF: sub_F38B1+127p F000:7394 ; sub_F6238:loc_F62E1p ... F000:7394 push esi F000:7396 mov esi, fs:0D56h F000:739C F000:739C loc_F739C: ; CODE XREF: sub_F7394+17j F000:739C call sub_F6EF1 F000:739F mov esi, fs:[esi+20Ch] F000:73A8 and esi, esi F000:73AB jnz short loc_F739C F000:73AD pop esi F000:73AF retn F000:73AF sub_F7394 endp F000:73AF F000:73B0 ; --------------------------------------------------------------------------- F000:73B0 F000:73B0 loc_F73B0: ; CODE XREF: sub_F6FF8+216p F000:73B0 ; F000:7577p ... F000:73B0 pushad F000:73B2 cmp byte ptr [esi], 0 F000:73B6 jz short loc_F73E4 F000:73B8 pushad F000:73BA call sub_F6E2C F000:73BD mov edi, fs:0D56h F000:73C3 mov byte ptr fs:[edi+211h], 1 F000:73CC add edi, 200h F000:73D3 mov ecx, 8 F000:73D9 push es F000:73DA push fs F000:73DC pop es F000:73DD rep movs byte ptr es:[edi], byte ptr [esi] F000:73E0 pop es F000:73E1 F000:73E1 loc_F73E1: ; CODE XREF: F000:loc_F7400j F000:73E1 popad F000:73E3 retn F000:73E4 ; --------------------------------------------------------------------------- F000:73E4 F000:73E4 loc_F73E4: ; CODE XREF: F000:73B6j F000:73E4 call sub_F6E2C F000:73E7 jb short loc_F73F8 F000:73E9 mov esi, fs:0D56h F000:73EF mov byte ptr fs:[esi+210h], 0FFh F000:73F8 F000:73F8 loc_F73F8: ; CODE XREF: F000:73E7j F000:73F8 call sub_F6EC4 F000:73FB jb short loc_F7400 F000:73FD call sub_F7828 F000:7400 F000:7400 loc_F7400: ; CODE XREF: F000:73FBj F000:7400 jmp short loc_F73E1 F000:7402 F000:7402 ; =============== S U B R O U T I N E ======================================= F000:7402 F000:7402 F000:7402 sub_F7402 proc near ; CODE XREF: sub_F6723+20p F000:7402 ; sub_F6FF8+1BDp ... F000:7402 push ebx F000:7404 push esi F000:7406 cmp bx, 0FFFEh F000:7409 jnb short loc_F7465 F000:740B mov esi, fs:0D56h F000:7411 F000:7411 loc_F7411: ; CODE XREF: sub_F7402+4Ej F000:7411 cmp bx, fs:[esi+202h] F000:7419 jnz short loc_F7444 F000:741B cmp dl, fs:[esi+210h] F000:7423 jnz short loc_F7444 F000:7425 add esi, 200h F000:742C push ecx F000:742E push edi F000:7430 mov ecx, 8 F000:7436 push ds F000:7437 push fs F000:7439 pop ds F000:743A rep movs byte ptr es:[edi], byte ptr [esi] F000:743D pop ds F000:743E pop edi F000:7440 pop ecx F000:7442 jmp short loc_F745F F000:7444 ; --------------------------------------------------------------------------- F000:7444 F000:7444 loc_F7444: ; CODE XREF: sub_F7402+17j F000:7444 ; sub_F7402+21j F000:7444 mov esi, fs:[esi+20Ch] F000:744D and esi, esi F000:7450 jnz short loc_F7411 F000:7452 call sub_F6EC4 F000:7455 cmp bx, 0FFFEh F000:7458 jnb short loc_F7465 F000:745A call word ptr fs:0F2Ah F000:745F F000:745F loc_F745F: ; CODE XREF: sub_F7402+40j F000:745F clc F000:7460 F000:7460 loc_F7460: ; CODE XREF: sub_F7402+64j F000:7460 pop esi F000:7462 pop ebx F000:7464 retn F000:7465 ; --------------------------------------------------------------------------- F000:7465 F000:7465 loc_F7465: ; CODE XREF: sub_F7402+7j F000:7465 ; sub_F7402+56j F000:7465 stc F000:7466 jmp short loc_F7460 F000:7466 sub_F7402 endp F000:7466 F000:7468 ; --------------------------------------------------------------------------- F000:7468 F000:7468 loc_F7468: ; CODE XREF: sub_F38B1+70p F000:7468 ; sub_F38B1+7Dp ... F000:7468 enterd 10h, 0 F000:746D and ecx, ecx F000:7470 jz loc_F7538 F000:7474 or byte ptr fs:10DDh, 2 F000:747A mov [ebp-10h], bx F000:747E pushad F000:7480 push esi F000:7482 call sub_F799D F000:7485 pop esi F000:7487 cmp bx, 0FFFFh F000:748A jnz short loc_F749C F000:748C call sub_F773D F000:748F mov [ebp-10h], ax F000:7493 mov bx, ax F000:7495 mov eax, fs:0F18h F000:749A jmp short loc_F74A6 F000:749C ; --------------------------------------------------------------------------- F000:749C F000:749C loc_F749C: ; CODE XREF: F000:748Aj F000:749C call sub_F7673 F000:749F jnb short loc_F74A6 F000:74A1 call sub_F773D F000:74A4 mov bx, ax F000:74A6 F000:74A6 loc_F74A6: ; CODE XREF: F000:749Aj F000:74A6 ; F000:749Fj F000:74A6 mov eax, fs:0F18h F000:74AB sub eax, edi F000:74AE mov [ebp-0Eh], ecx F000:74B3 F000:74B3 loc_F74B3: ; CODE XREF: F000:7509j F000:74B3 mov word ptr [ebp-6], 0FFFFh F000:74B9 push edi F000:74BB lea edi, [ebp-0Ah] F000:74C0 push es F000:74C1 push ss F000:74C2 pop es F000:74C3 assume es:nothing F000:74C3 call sub_F7402 F000:74C6 pop es F000:74C7 assume es:nothing F000:74C7 pop edi F000:74C9 push word ptr [ebp-6] F000:74CD pop word ptr [ebp-2] F000:74D1 mov ecx, [ebp-0Eh] F000:74D6 cmp ecx, eax F000:74D9 jbe short loc_F74EE F000:74DB mov ecx, eax F000:74DE mov ax, [ebp-6] F000:74E2 cmp ax, 0FFFFh F000:74E5 jnz short loc_F74EA F000:74E7 call sub_F773D F000:74EA F000:74EA loc_F74EA: ; CODE XREF: F000:74E5j F000:74EA mov [ebp-2], ax F000:74EE F000:74EE loc_F74EE: ; CODE XREF: F000:74D9j F000:74EE mov ax, [ebp-2] F000:74F2 call sub_F75D7 F000:74F5 mov bx, [ebp-2] F000:74F9 xor edi, edi F000:74FC mov eax, fs:0F18h F000:7501 add esi, ecx F000:7504 sub [ebp-0Eh], ecx F000:7509 ja short loc_F74B3 F000:750B popad F000:750D mov bx, [ebp-10h] F000:7511 and byte ptr fs:10DDh, 0FDh F000:7517 cmp bx, 1 F000:751A jz short loc_F751F F000:751C leaved F000:751E retn F000:751F ; --------------------------------------------------------------------------- F000:751F F000:751F loc_F751F: ; CODE XREF: F000:751Aj F000:751F push esi F000:7521 mov esi, fs:0F90h F000:7527 dec word ptr fs:[esi+47h] F000:752C jz short loc_F7533 F000:752E F000:752E loc_F752E: ; CODE XREF: F000:7536j F000:752E pop esi F000:7530 leaved F000:7532 retn F000:7533 ; --------------------------------------------------------------------------- F000:7533 F000:7533 loc_F7533: ; CODE XREF: F000:752Cj F000:7533 call sub_F6FF8 F000:7536 jmp short loc_F752E F000:7538 ; --------------------------------------------------------------------------- F000:7538 F000:7538 loc_F7538: ; CODE XREF: F000:7470j F000:7538 pushad F000:753A mov esi, 0D72h F000:7540 mov ax, bx F000:7542 and edi, edi F000:7545 jz short loc_F757C F000:7547 F000:7547 loc_F7547: ; CODE XREF: F000:756Ej F000:7547 cmp ax, 0FFFEh F000:754A jnb loc_F75D2 F000:754E mov bx, ax F000:7550 push edi F000:7552 mov edi, 0D72h F000:7558 push es F000:7559 push fs F000:755B pop es F000:755C call sub_F7402 F000:755F pop es F000:7560 pop edi F000:7562 jb short loc_F75D2 F000:7564 mov ax, fs:0D76h F000:7568 sub edi, fs:0F18h F000:756E ja short loc_F7547 F000:7570 mov word ptr fs:0D76h, 0FFFFh F000:7577 call loc_F73B0 F000:757A mov bx, ax F000:757C F000:757C loc_F757C: ; CODE XREF: F000:7545j F000:757C call sub_F799D F000:757F F000:757F loc_F757F: ; CODE XREF: F000:75D0j F000:757F cmp bx, 0FFFEh F000:7582 jnb short loc_F75D2 F000:7584 mov edi, 0D72h F000:758A push es F000:758B push fs F000:758D pop es F000:758E call sub_F7402 F000:7591 pop es F000:7592 jb short loc_F75D2 F000:7594 mov byte ptr fs:0D72h, 0 F000:759A push esi F000:759C mov esi, 0D72h F000:75A2 push ds F000:75A3 push fs F000:75A5 pop ds F000:75A6 call loc_F73B0 F000:75A9 pop ds F000:75AA pop esi F000:75AC inc dword ptr fs:[esi+27h] F000:75B2 inc dword ptr fs:0F32h F000:75B8 movzx ebx, bx F000:75BC shl ebx, 1 F000:75BF add ebx, fs:[esi+5] F000:75C5 mov word ptr fs:[ebx], 0FFFFh F000:75CB mov bx, fs:0D76h F000:75D0 jmp short loc_F757F F000:75D2 ; --------------------------------------------------------------------------- F000:75D2 F000:75D2 loc_F75D2: ; CODE XREF: F000:754Aj F000:75D2 ; F000:7562j ... F000:75D2 popad F000:75D4 leaved F000:75D6 retn F000:75D7 F000:75D7 ; =============== S U B R O U T I N E ======================================= F000:75D7 F000:75D7 F000:75D7 sub_F75D7 proc near ; CODE XREF: sub_F67A0+45p F000:75D7 ; sub_F67A0+60p ... F000:75D7 pushad F000:75D9 call sub_F6E2C F000:75DC jnb short loc_F7629 F000:75DE pushad F000:75E0 mov esi, fs:0D52h F000:75E6 call sub_F6EF1 F000:75E9 call sub_F7938 F000:75EC cmp bx, fs:0F1Ch F000:75F1 jbe short $+2 F000:75F3 mov fs:[esi+202h], bx F000:75FB mov fs:[esi+210h], dl F000:7603 mov byte ptr fs:[esi+211h], 1 F000:760C mov edi, esi F000:760F mov eax, 0FFFFFFFFh F000:7615 mov ecx, fs:0F18h F000:761B shr ecx, 2 F000:761F push es F000:7620 push fs F000:7622 pop es F000:7623 rep stosd F000:7626 pop es F000:7627 popad F000:7629 F000:7629 loc_F7629: ; CODE XREF: sub_F75D7+5j F000:7629 push es F000:762A push fs F000:762C pop es F000:762D add edi, es:0D56h F000:7633 pushad F000:7635 repe cmps byte ptr [esi], byte ptr es:[edi] F000:7638 popad F000:763A jz short loc_F764E F000:763C rep movs byte ptr es:[edi], byte ptr [esi] F000:763F mov esi, es:0D56h F000:7645 mov byte ptr fs:[esi+211h], 1 F000:764E F000:764E loc_F764E: ; CODE XREF: sub_F75D7+63j F000:764E pop es F000:764F mov esi, fs:0D56h F000:7655 cmp fs:[esi+204h], ax F000:765D jz short loc_F7670 F000:765F mov fs:[esi+204h], ax F000:7667 mov byte ptr fs:[esi+211h], 1 F000:7670 F000:7670 loc_F7670: ; CODE XREF: sub_F75D7+86j F000:7670 popad F000:7672 retn F000:7672 sub_F75D7 endp F000:7672 F000:7673 F000:7673 ; =============== S U B R O U T I N E ======================================= F000:7673 F000:7673 F000:7673 sub_F7673 proc near ; CODE XREF: F000:loc_F749Cp F000:7673 ; sub_F77B3+Bp F000:7673 push edx F000:7675 mov eax, edi F000:7678 xor edx, edx F000:767B div dword ptr fs:0F18h F000:7681 test byte ptr fs:10DDh, 40h F000:7687 jz short loc_F768D F000:7689 add bx, ax F000:768B jmp short loc_F76F9 F000:768D ; --------------------------------------------------------------------------- F000:768D F000:768D loc_F768D: ; CODE XREF: sub_F7673+14j F000:768D cmp bx, fs:0F70h F000:7692 jnz short loc_F76B2 F000:7694 cmp ax, fs:0F72h F000:7699 jz short loc_F76F4 F000:769B jb short loc_F76B2 F000:769D xchg ax, fs:0F72h F000:76A2 mul dword ptr fs:0F18h F000:76A8 sub edi, eax F000:76AB mov bx, fs:0F74h F000:76B0 jmp short loc_F76BB F000:76B2 ; --------------------------------------------------------------------------- F000:76B2 F000:76B2 loc_F76B2: ; CODE XREF: sub_F7673+1Fj F000:76B2 ; sub_F7673+28j F000:76B2 mov fs:0F70h, bx F000:76B7 mov fs:0F72h, ax F000:76BB F000:76BB loc_F76BB: ; CODE XREF: sub_F7673+3Dj F000:76BB pop edx F000:76BD mov eax, fs:0F18h F000:76C2 F000:76C2 loc_F76C2: ; CODE XREF: sub_F7673+78j F000:76C2 cmp edi, eax F000:76C5 jb short loc_F76ED F000:76C7 F000:76C7 loc_F76C7: ; CODE XREF: sub_F7673+C8j F000:76C7 push edi F000:76C9 mov edi, 0D5Ah F000:76CF push es F000:76D0 push fs F000:76D2 pop es F000:76D3 call sub_F7402 F000:76D6 pop es F000:76D7 pop edi F000:76D9 jb short loc_F7705 F000:76DB cmp word ptr fs:0D5Eh, 0FFFEh F000:76E1 jnb short loc_F770E F000:76E3 mov bx, fs:0D5Eh F000:76E8 sub edi, eax F000:76EB jmp short loc_F76C2 F000:76ED ; --------------------------------------------------------------------------- F000:76ED F000:76ED loc_F76ED: ; CODE XREF: sub_F7673+52j F000:76ED mov fs:0F74h, bx F000:76F2 clc F000:76F3 retn F000:76F4 ; --------------------------------------------------------------------------- F000:76F4 F000:76F4 loc_F76F4: ; CODE XREF: sub_F7673+26j F000:76F4 mov bx, fs:0F74h F000:76F9 F000:76F9 loc_F76F9: ; CODE XREF: sub_F7673+18j F000:76F9 mov edi, edx F000:76FC mov eax, fs:0F18h F000:7701 pop edx F000:7703 clc F000:7704 retn F000:7705 ; --------------------------------------------------------------------------- F000:7705 F000:7705 loc_F7705: ; CODE XREF: sub_F7673+66j F000:7705 ; sub_F7673+A1j F000:7705 mov word ptr fs:0F72h, 0FFFFh F000:770C stc F000:770D retn F000:770E ; --------------------------------------------------------------------------- F000:770E F000:770E loc_F770E: ; CODE XREF: sub_F7673+6Ej F000:770E test byte ptr fs:10DDh, 2 F000:7714 jz short loc_F7705 F000:7716 call sub_F6E2C F000:7719 push eax F000:771B push esi F000:771D mov esi, fs:0D56h F000:7723 call sub_F773D F000:7726 mov fs:[esi+204h], ax F000:772E mov byte ptr fs:[esi+211h], 1 F000:7737 pop esi F000:7739 pop eax F000:773B jmp short loc_F76C7 F000:773B sub_F7673 endp F000:773B F000:773D F000:773D ; =============== S U B R O U T I N E ======================================= F000:773D F000:773D F000:773D sub_F773D proc near ; CODE XREF: sub_F38B1:loc_F3931p F000:773D ; sub_F6FF8+CDp ... F000:773D pushad F000:773F movzx ebx, word ptr fs:0F50h F000:7746 shl ebx, 1 F000:7749 mov edx, fs:0F10h F000:774F add ebx, edx F000:7752 mov ecx, fs:0F1Ch F000:7758 add edx, ecx F000:775B add edx, ecx F000:775E sub ecx, 2 F000:7762 F000:7762 loc_F7762: ; CODE XREF: sub_F773D+3Dj F000:7762 add ebx, 2 F000:7766 cmp ebx, edx F000:7769 jb short loc_F7775 F000:776B mov ebx, fs:0F10h F000:7771 add ebx, 4 F000:7775 F000:7775 loc_F7775: ; CODE XREF: sub_F773D+2Cj F000:7775 cmp word ptr fs:[ebx], 0FFFFh F000:777A loopne loc_F7762 F000:777C jz short $+2 F000:777E mov word ptr fs:[ebx], 0FFFEh F000:7784 mov esi, fs:0F90h F000:778A dec dword ptr fs:[esi+27h] F000:7790 dec dword ptr fs:0F32h F000:7796 sub ebx, fs:0F10h F000:779C shr ebx, 1 F000:779F mov fs:[esi+45h], bx F000:77A4 mov fs:0F50h, bx F000:77A9 popad F000:77AB movzx eax, word ptr fs:0F50h F000:77B2 retn F000:77B2 sub_F773D endp F000:77B2 F000:77B3 F000:77B3 ; =============== S U B R O U T I N E ======================================= F000:77B3 F000:77B3 F000:77B3 sub_F77B3 proc near ; CODE XREF: F000:5D35p F000:77B3 ; sub_F6022+13p ... F000:77B3 pushad F000:77B5 push edi F000:77B7 push esi F000:77B9 call sub_F799D F000:77BC pop edi F000:77BE call sub_F7673 F000:77C1 mov esi, edi F000:77C4 pop edi F000:77C6 jb short loc_F7805 F000:77C8 mov eax, fs:0F18h F000:77CD sub eax, esi F000:77D0 mov ebp, ecx F000:77D3 F000:77D3 loc_F77D3: ; CODE XREF: sub_F77B3+4Cj F000:77D3 mov ecx, ebp F000:77D6 cmp ecx, eax F000:77D9 jbe short loc_F77DE F000:77DB mov ecx, eax F000:77DE F000:77DE loc_F77DE: ; CODE XREF: sub_F77B3+26j F000:77DE call sub_F7808 F000:77E1 jb short loc_F7805 F000:77E3 mov esi, fs:0D56h F000:77E9 mov bx, fs:[esi+204h] F000:77F1 xor esi, esi F000:77F4 mov eax, fs:0F18h F000:77F9 add edi, ecx F000:77FC sub ebp, ecx F000:77FF ja short loc_F77D3 F000:7801 clc F000:7802 F000:7802 loc_F7802: ; CODE XREF: sub_F77B3+53j F000:7802 popad F000:7804 retn F000:7805 ; --------------------------------------------------------------------------- F000:7805 F000:7805 loc_F7805: ; CODE XREF: sub_F77B3+13j F000:7805 ; sub_F77B3+2Ej F000:7805 stc F000:7806 jmp short loc_F7802 F000:7806 sub_F77B3 endp F000:7806 F000:7808 F000:7808 ; =============== S U B R O U T I N E ======================================= F000:7808 F000:7808 F000:7808 sub_F7808 proc near ; CODE XREF: sub_F77B3:loc_F77DEp F000:7808 push ecx F000:780A push esi F000:780C push edi F000:780E call sub_F6E2C F000:7811 jb short loc_F7821 F000:7813 add esi, fs:0D56h F000:7819 push ds F000:781A push fs F000:781C pop ds F000:781D rep movs byte ptr es:[edi], byte ptr [esi] F000:7820 pop ds F000:7821 F000:7821 loc_F7821: ; CODE XREF: sub_F7808+9j F000:7821 pop edi F000:7823 pop esi F000:7825 pop ecx F000:7827 retn F000:7827 sub_F7808 endp F000:7827 F000:7828 F000:7828 ; =============== S U B R O U T I N E ======================================= F000:7828 F000:7828 F000:7828 sub_F7828 proc near ; CODE XREF: sub_F6EF1+D9p F000:7828 ; F000:73FDp F000:7828 cmp bx, 0FFFEh F000:782B jnb short locret_F7874 F000:782D pushad F000:782F mov edi, 0D7Ah F000:7835 mov esi, edi F000:7838 call sub_F6FED F000:783B test byte ptr fs:0F3Ch, 1 F000:7841 jz short loc_F7862 F000:7843 mov al, 0FFh F000:7845 inc edi F000:7847 mov ecx, 7 F000:784D push es F000:784E push fs F000:7850 pop es F000:7851 rep stos byte ptr es:[edi] F000:7854 pop es F000:7855 not byte ptr fs:0D7Ah F000:785A mov edi, 0D7Ah F000:7860 jmp short loc_F7868 F000:7862 ; --------------------------------------------------------------------------- F000:7862 F000:7862 loc_F7862: ; CODE XREF: sub_F7828+19j F000:7862 mov byte ptr fs:0D7Ah, 0 F000:7868 F000:7868 loc_F7868: ; CODE XREF: sub_F7828+38j F000:7868 push ds F000:7869 push fs F000:786B pop ds F000:786C call word ptr fs:0F3Ah F000:7871 pop ds F000:7872 popad F000:7874 F000:7874 locret_F7874: ; CODE XREF: sub_F7828+3j F000:7874 retn F000:7874 sub_F7828 endp F000:7874 F000:7875 F000:7875 ; =============== S U B R O U T I N E ======================================= F000:7875 F000:7875 F000:7875 sub_F7875 proc near ; CODE XREF: sub_F6EF1:loc_F6F57p F000:7875 ; sub_F6FF8+329p F000:7875 push eax F000:7877 push ecx F000:7879 push edx F000:787B push esi F000:787D push edi F000:787F mov dl, fs:0F7Eh F000:7884 call sub_F799D F000:7887 test byte ptr fs:10DDh, 8 F000:788D jnz short loc_F78AC F000:788F mov eax, fs:[esi+41h] F000:7895 cmp fs:[esi+3Dh], eax F000:789B ja short loc_F78AC F000:789D or byte ptr fs:[esi+3Ch], 8 F000:78A3 cmp dword ptr fs:[esi+3Dh], 0 F000:78AA jz short loc_F7926 F000:78AC F000:78AC loc_F78AC: ; CODE XREF: sub_F7875+18j F000:78AC ; sub_F7875+26j F000:78AC push es F000:78AD push fs F000:78AF pop es F000:78B0 cmp word ptr fs:[esi+25h], 0 F000:78B6 jnz short loc_F78D4 F000:78B8 F000:78B8 loc_F78B8: ; CODE XREF: sub_F7875+58j F000:78B8 ; sub_F7875+AFj F000:78B8 movzx eax, word ptr fs:[esi+3Ah] F000:78BF cmp ax, fs:[esi+15h] F000:78C4 jb short loc_F78CF F000:78C6 mov word ptr fs:[esi+3Ah], 0 F000:78CD jmp short loc_F78B8 F000:78CF ; --------------------------------------------------------------------------- F000:78CF F000:78CF loc_F78CF: ; CODE XREF: sub_F7875+4Fj F000:78CF call sub_F6E04 F000:78D2 jb short loc_F7918 F000:78D4 F000:78D4 loc_F78D4: ; CODE XREF: sub_F7875+41j F000:78D4 movzx eax, word ptr fs:[esi+3Ah] F000:78DB push edx F000:78DD mul dword ptr fs:[esi+36h] F000:78E3 pop edx F000:78E5 mov di, fs:[esi+25h] F000:78EA cmp di, fs:[esi+36h] F000:78EF jnb short loc_F7918 F000:78F1 mov bx, ax F000:78F3 add bx, di F000:78F5 mov edi, 0D5Ah F000:78FB call sub_F6FED F000:78FE inc word ptr fs:[esi+25h] F000:7903 cmp byte ptr fs:0D5Ah, 0FFh F000:7909 jnz short loc_F7918 F000:790B clc F000:790C pop es F000:790D F000:790D loc_F790D: ; CODE XREF: sub_F7875+B2j F000:790D pop edi F000:790F pop esi F000:7911 pop edx F000:7913 pop ecx F000:7915 pop eax F000:7917 retn F000:7918 ; --------------------------------------------------------------------------- F000:7918 F000:7918 loc_F7918: ; CODE XREF: sub_F7875+5Dj F000:7918 ; sub_F7875+7Aj ... F000:7918 inc word ptr fs:[esi+3Ah] F000:791D mov word ptr fs:[esi+25h], 0 F000:7924 jmp short loc_F78B8 F000:7926 ; --------------------------------------------------------------------------- F000:7926 F000:7926 loc_F7926: ; CODE XREF: sub_F7875+35j F000:7926 stc F000:7927 jmp short loc_F790D F000:7927 sub_F7875 endp F000:7927 F000:7929 F000:7929 ; =============== S U B R O U T I N E ======================================= F000:7929 F000:7929 F000:7929 sub_F7929 proc near ; CODE XREF: F000:83ECp F000:7929 push esi F000:792B xchg edi, esi F000:792E push ds F000:792F push cs F000:7930 pop ds F000:7931 assume ds:BIOS_F000 F000:7931 call sub_F61EE F000:7934 pop ds F000:7935 assume ds:nothing F000:7935 pop esi F000:7937 retn F000:7937 sub_F7929 endp F000:7937 F000:7938 F000:7938 ; =============== S U B R O U T I N E ======================================= F000:7938 F000:7938 F000:7938 sub_F7938 proc near ; CODE XREF: sub_F6E2C:loc_F6E50p F000:7938 ; sub_F75D7+12p F000:7938 push ecx F000:793A push edi F000:793C mov ecx, fs:[esi+208h] F000:7945 mov edi, fs:[esi+20Ch] F000:794E mov fs:[ecx+20Ch], edi F000:7957 and edi, edi F000:795A jz short loc_F7967 F000:795C mov fs:[edi+208h], ecx F000:7965 jmp short loc_F796D F000:7967 ; --------------------------------------------------------------------------- F000:7967 F000:7967 loc_F7967: ; CODE XREF: sub_F7938+22j F000:7967 mov fs:0D52h, ecx F000:796D F000:796D loc_F796D: ; CODE XREF: sub_F7938+2Dj F000:796D mov edi, fs:0D56h F000:7973 mov fs:0D56h, esi F000:7979 mov fs:[esi+20Ch], edi F000:7982 mov fs:[edi+208h], esi F000:798B mov dword ptr fs:[esi+208h], 0 F000:7998 pop edi F000:799A pop ecx F000:799C retn F000:799C sub_F7938 endp F000:799C F000:799D F000:799D ; =============== S U B R O U T I N E ======================================= F000:799D F000:799D F000:799D sub_F799D proc near ; CODE XREF: sub_F38B1:loc_F38CCp F000:799D ; sub_F5065:loc_F50AAp ... F000:799D cld F000:799E push dx F000:799F mov esi, fs:708h F000:79A5 F000:79A5 loc_F79A5: ; CODE XREF: sub_F799D+18j F000:79A5 and esi, esi F000:79A8 jz short loc_F7A09 F000:79AA and dl, dl F000:79AC jz short loc_F79B7 F000:79AE mov esi, fs:[esi] F000:79B3 dec dl F000:79B5 jmp short loc_F79A5 F000:79B7 ; --------------------------------------------------------------------------- F000:79B7 F000:79B7 loc_F79B7: ; CODE XREF: sub_F799D+Fj F000:79B7 pop dx F000:79B8 mov fs:0F90h, esi F000:79BE cmp fs:0F7Eh, dl F000:79C3 jz short loc_F7A07 F000:79C5 mov word ptr fs:0F72h, 0FFFFh F000:79CC mov dword ptr fs:0F76h, 0FFFFFFFFh F000:79D6 mov fs:0F7Eh, dl F000:79DB push ax F000:79DC push ecx F000:79DE push esi F000:79E0 push edi F000:79E2 mov edi, 0F0Bh F000:79E8 mov ecx, 50h ; 'P' F000:79EE push es F000:79EF push fs F000:79F1 pop es F000:79F2 rep movs byte ptr es:[edi], byte ptr fs:[esi] F000:79F6 F000:79F6 loc_F79F6: ; CODE XREF: sub_F799D+60j F000:79F6 lods byte ptr fs:[esi] F000:79F9 stos byte ptr es:[edi] F000:79FB and al, al F000:79FD jnz short loc_F79F6 F000:79FF pop es F000:7A00 pop edi F000:7A02 pop esi F000:7A04 pop ecx F000:7A06 pop ax F000:7A07 F000:7A07 loc_F7A07: ; CODE XREF: sub_F799D+26j F000:7A07 clc F000:7A08 retn F000:7A09 ; --------------------------------------------------------------------------- F000:7A09 F000:7A09 loc_F7A09: ; CODE XREF: sub_F799D+Bj F000:7A09 pop dx F000:7A0A stc F000:7A0B retn F000:7A0B sub_F799D endp F000:7A0B F000:7A0B ; --------------------------------------------------------------------------- F000:7A0C db 4 dup(0) F000:7A10 aFirmwareUpgrad db 'Firmware Upgrade',0 F000:7A21 aReceivingData_ db 'Receiving data... ',0Ah,0 F000:7A36 aErasingFlash__ db 'Erasing flash... ',0 F000:7A4A aWritingToFlash db 'Writing to flash...',0 F000:7A5E aImageCorrupted db 'Image corrupted',0 F000:7A6E aChecksumErrorO db 'Checksum error occured. ',0Ah,0 F000:7A88 aDone_ db 'Done. ',0 F000:7A9C aDone_BootBlock db 'Done. (Boot block updated.)',0 F000:7AB9 aDone_BootBlo_0 db 'Done. (Boot block is at current rev.)',0 F000:7AE0 aDone_BootBlo_1 db 'Done. (Boot block not updated.)',0 F000:7B01 aDownloadFailed db 'Download failed.',0 F000:7B12 aNandFlashMemor db 'NAND Flash Memory Verification',0 F000:7B31 aTesting___ db 'Testing...',0Ah,0 F000:7B3D aInvalidFirmwar db 'Invalid Firmware Image',0 F000:7B54 aTheNewFirmware db 'The new firmware image is not valid for this terminal.',0Ah,0 F000:7B8C aInsufficientFl db 'Insufficient Flash Memory',0 F000:7BA6 aThereIsInsuffi db 'There is insufficient flash memory to complete the requested down' F000:7BA6 db 'load.',0Ah F000:7BA6 db 0Ah F000:7BA6 db '(No changes have been made.)',0Ah,0 F000:7C0C aNoFlashDeviceS db 'No Flash Device Support',0 F000:7C24 aTheFirmwareIma db 'The firmware image that is being downloaded to the terminal is an' F000:7C24 db ' older revision that does not support the terminal',27h,'s SST flash' F000:7C24 db ' device.',0Ah F000:7C24 db 0Ah F000:7C24 db 'Download aborted.',0Ah,0 F000:7CC0 aOk db 'OK',0 F000:7CC3 db 0 F000:7CC4 db 0 F000:7CC5 db 0 F000:7CC6 db 0FFh F000:7CC7 db 0FFh F000:7CC8 db 0FFh F000:7CC9 db 0FFh F000:7CCA db 0 F000:7CCB db 0 F000:7CCC db 0 F000:7CCD db 0 F000:7CCE F000:7CCE ; =============== S U B R O U T I N E ======================================= F000:7CCE F000:7CCE F000:7CCE sub_F7CCE proc near ; CODE XREF: F000:84DDp F000:7CCE ; sub_F896D+15Ap ... F000:7CCE pushad F000:7CD0 mov si, 4 F000:7CD3 call sub_F59E0 F000:7CD6 popad F000:7CD8 retn F000:7CD8 sub_F7CCE endp F000:7CD8 F000:7CD9 F000:7CD9 ; =============== S U B R O U T I N E ======================================= F000:7CD9 F000:7CD9 F000:7CD9 sub_F7CD9 proc near ; CODE XREF: F000:8575p F000:7CD9 ; F000:8752p F000:7CD9 pushad F000:7CDB mov si, 5 F000:7CDE call sub_F59E0 F000:7CE1 popad F000:7CE3 retn F000:7CE3 sub_F7CD9 endp F000:7CE3 F000:7CE4 ; --------------------------------------------------------------------------- F000:7CE4 int 1 ; - internal hardware - SINGLE-STEP F000:7CE4 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:7CE6 mov dword ptr ds:0EB1h, 80000h F000:7CEF mov dword ptr ds:0EB9h, 80000h F000:7CF8 mov dword ptr ds:0FAEh, 100000h F000:7D01 mov eax, ds:700h F000:7D05 sub eax, 140100h F000:7D0B and eax, 0FFE00000h F000:7D11 add eax, 140000h F000:7D17 mov ds:0FB2h, eax F000:7D1B mov byte ptr ds:0FB6h, 0 F000:7D20 jmp loc_F8852 F000:7D23 ; --------------------------------------------------------------------------- F000:7D23 mov edx, dword ptr cs:aUlc_code_ce ; "ulc_code.ce" F000:7D29 or edx, 20202020h F000:7D30 cmp eax, edx F000:7D33 jnz loc_F80AD F000:7D37 mov eax, ds:0FBFh F000:7D3B or eax, 20202020h F000:7D41 mov edx, dword ptr cs:aUlc_code_ce+4 F000:7D47 cmp eax, edx F000:7D4A jnz loc_F7EC7 F000:7D4E mov dword ptr ds:0EB1h, 40000h F000:7D57 mov dword ptr ds:0EB9h, 40000h F000:7D60 mov word ptr ds:0FD3h, 8E69h F000:7D66 mov dword ptr ds:0EB5h, 0 F000:7D6F call sub_F9112 F000:7D72 mov word ptr ds:0FD5h, 0 F000:7D78 mov dword ptr ds:0FD7h, 100000h F000:7D81 mov byte ptr ds:0FDBh, 0 F000:7D86 mov edi, 100000h F000:7D8C mov ecx, 200h F000:7D92 call word ptr ds:0FD3h F000:7D96 xor dl, dl F000:7D98 mov ds:0FDBh, dl F000:7D9C mov bx, ds:0FD5h F000:7DA0 mov ecx, 40000h F000:7DA6 mov esi, 0 F000:7DAC mov ax, 7A21h F000:7DAF call sub_F8BA1 F000:7DB2 push ecx F000:7DB4 mov edi, 100000h F000:7DBA cmp word ptr ds:0FD5h, 0 F000:7DBF jnz short loc_F7DCF F000:7DC1 add edi, 200h F000:7DC8 sub ecx, 200h F000:7DCF F000:7DCF loc_F7DCF: ; CODE XREF: F000:7DBFj F000:7DCF call word ptr ds:0FD3h F000:7DD3 mov edi, 200000h F000:7DD9 pop ecx F000:7DDB and byte ptr ds:0FDCh, 0F4h F000:7DE0 or byte ptr ds:0FDCh, 2 F000:7DE5 pushad F000:7DE7 mov esi, ds:0FD7h F000:7DEC repe cmps byte ptr [esi], byte ptr es:[edi] F000:7DEF popad F000:7DF1 jz loc_F80A1 F000:7DF5 and byte ptr ds:0FDCh, 0FDh F000:7DFA mov edi, ds:0FD7h F000:7DFF and dl, dl F000:7E01 jnz short loc_F7E22 F000:7E03 cmp esi, ds:0FDDh F000:7E08 jnz short loc_F7E22 F000:7E0A pushad F000:7E0C shr ecx, 2 F000:7E10 xor eax, eax F000:7E13 F000:7E13 loc_F7E13: ; CODE XREF: F000:7E1Bj F000:7E13 add eax, [edi] F000:7E17 add edi, 4 F000:7E1B loop loc_F7E13 F000:7E1D and eax, eax F000:7E20 popad F000:7E22 F000:7E22 loc_F7E22: ; CODE XREF: F000:7E01j F000:7E22 ; F000:7E08j ... F000:7E22 xor dl, dl F000:7E24 F000:7E24 loc_F7E24: ; CODE XREF: F000:7E3Fj F000:7E24 call sub_F799D F000:7E27 cmp dword ptr ds:0F5Fh, 30323043h F000:7E30 jz short loc_F7E54 F000:7E32 cmp dword ptr ds:0F5Fh, 30454539h F000:7E3B jz short loc_F7E41 F000:7E3D inc dl F000:7E3F jmp short loc_F7E24 F000:7E41 ; --------------------------------------------------------------------------- F000:7E41 F000:7E41 loc_F7E41: ; CODE XREF: F000:7E3Bj F000:7E41 mov esi, 100000h F000:7E47 cmp dword ptr [esi+3FFDCh], 0 F000:7E50 jz loc_F862D F000:7E54 F000:7E54 loc_F7E54: ; CODE XREF: F000:7E30j F000:7E54 call sub_F8B89 F000:7E57 call sub_FD019 F000:7E5A mov ax, 50h ; 'P' F000:7E5D mov es, ax F000:7E5F assume es:nothing F000:7E5F mov esi, 100000h F000:7E65 xor edi, edi F000:7E68 mov ebx, 400h F000:7E6E cmp dword ptr ds:0F14h, 100h F000:7E77 jz short loc_F7E7F F000:7E79 mov ebx, 800h F000:7E7F F000:7E7F loc_F7E7F: ; CODE XREF: F000:7E77j F000:7E7F ; F000:7EBFj F000:7E7F mov byte ptr es:5555h, 0AAh ; '¬' F000:7E85 mov byte ptr es:2AAAh, 55h ; 'U' F000:7E8B mov byte ptr es:5555h, 0A0h ; 'á' F000:7E91 mov ecx, ds:0F14h F000:7E96 F000:7E96 loc_F7E96: ; CODE XREF: F000:7E9Ej F000:7E96 lods byte ptr [esi] F000:7E98 mov es:[edi], al F000:7E9C inc edi F000:7E9E loopd loc_F7E96 F000:7EA1 dec edi F000:7EA3 F000:7EA3 loc_F7EA3: ; CODE XREF: F000:7EA7j F000:7EA3 cmp es:[edi], al F000:7EA7 jnz short loc_F7EA3 F000:7EA9 inc edi F000:7EAB mov eax, ds:0F14h F000:7EAF add ds:0EADh, eax F000:7EB4 test bx, 0Fh F000:7EB8 jnz short loc_F7EBD F000:7EBA call sub_F90F8 F000:7EBD F000:7EBD loc_F7EBD: ; CODE XREF: F000:7EB8j F000:7EBD dec ebx F000:7EBF jnz short loc_F7E7F F000:7EC1 call sub_F90F8 F000:7EC4 jmp loc_F856F F000:7EC7 ; --------------------------------------------------------------------------- F000:7EC7 F000:7EC7 loc_F7EC7: ; CODE XREF: F000:7D4Aj F000:7EC7 cmp word ptr ds:0FBFh, 3436h F000:7ECD jnz loc_F80AD F000:7ED1 mov dword ptr ds:0EB1h, 10000h F000:7EDA mov dword ptr ds:0EB9h, 10000h F000:7EE3 mov word ptr ds:0FD3h, 8E69h F000:7EE9 mov dword ptr ds:0EB5h, 0 F000:7EF2 call sub_F9112 F000:7EF5 mov word ptr ds:0FD5h, 0 F000:7EFB mov dword ptr ds:0FD7h, 100000h F000:7F04 mov byte ptr ds:0FDBh, 0 F000:7F09 mov edi, 100000h F000:7F0F mov ecx, 200h F000:7F15 call word ptr ds:0FD3h F000:7F19 xor dl, dl F000:7F1B mov ds:0FDBh, dl F000:7F1F mov bx, ds:0FD5h F000:7F23 mov ecx, 10000h F000:7F29 mov esi, 0 F000:7F2F mov ax, 7A21h F000:7F32 call sub_F8BA1 F000:7F35 push ecx F000:7F37 mov edi, 100000h F000:7F3D cmp word ptr ds:0FD5h, 0 F000:7F42 jnz short loc_F7F52 F000:7F44 add edi, 200h F000:7F4B sub ecx, 200h F000:7F52 F000:7F52 loc_F7F52: ; CODE XREF: F000:7F42j F000:7F52 call word ptr ds:0FD3h F000:7F56 mov edi, 200000h F000:7F5C pop ecx F000:7F5E and byte ptr ds:0FDCh, 0F4h F000:7F63 or byte ptr ds:0FDCh, 2 F000:7F68 pushad F000:7F6A mov esi, ds:0FD7h F000:7F6F repe cmps byte ptr [esi], byte ptr es:[edi] F000:7F72 popad F000:7F74 jz loc_F80A1 F000:7F78 and byte ptr ds:0FDCh, 0FDh F000:7F7D mov edi, ds:0FD7h F000:7F82 and dl, dl F000:7F84 jnz short loc_F7FA5 F000:7F86 cmp esi, ds:0FDDh F000:7F8B jnz short loc_F7FA5 F000:7F8D pushad F000:7F8F shr ecx, 2 F000:7F93 xor eax, eax F000:7F96 F000:7F96 loc_F7F96: ; CODE XREF: F000:7F9Ej F000:7F96 add eax, [edi] F000:7F9A add edi, 4 F000:7F9E loop loc_F7F96 F000:7FA0 and eax, eax F000:7FA3 popad F000:7FA5 F000:7FA5 loc_F7FA5: ; CODE XREF: F000:7F84j F000:7FA5 ; F000:7F8Bj F000:7FA5 mov esi, 100000h F000:7FAB mov edi, 1F0000h F000:7FB1 push ds F000:7FB2 F000:7FB2 loc_F7FB2: ; CODE XREF: F000:7FC2j F000:7FB2 call sub_F799D F000:7FB5 cmp dword ptr ds:0F5Fh, 56533631h F000:7FBE jz short loc_F7FC4 F000:7FC0 inc dl F000:7FC2 jmp short loc_F7FB2 F000:7FC4 ; --------------------------------------------------------------------------- F000:7FC4 F000:7FC4 loc_F7FC4: ; CODE XREF: F000:7FBEj F000:7FC4 mov ax, 50h ; 'P' F000:7FC7 mov ds, ax F000:7FC9 assume ds:nothing F000:7FC9 F000:7FC9 loc_F7FC9: ; CODE XREF: F000:7FF8j F000:7FC9 pushad F000:7FCB mov byte ptr [edi], 50h ; 'P' F000:7FCF mov byte ptr [edi], 20h ; ' ' F000:7FD3 mov byte ptr [edi], 0D0h ; 'ð' F000:7FD7 F000:7FD7 loc_F7FD7: ; CODE XREF: F000:7FDDj F000:7FD7 test byte ptr [edi], 80h F000:7FDB jnz short loc_F7FDF F000:7FDD jmp short loc_F7FD7 F000:7FDF ; --------------------------------------------------------------------------- F000:7FDF F000:7FDF loc_F7FDF: ; CODE XREF: F000:7FDBj F000:7FDF test byte ptr [edi], 8 F000:7FE3 jnz short loc_F7FF6 F000:7FE5 test byte ptr [edi], 20h F000:7FE9 stc F000:7FEA jnz short loc_F7FED F000:7FEC clc F000:7FED F000:7FED loc_F7FED: ; CODE XREF: F000:7FEAj F000:7FED mov byte ptr [edi], 0FFh F000:7FF1 popad F000:7FF3 pop ds F000:7FF4 assume ds:nothing F000:7FF4 jmp short loc_F7FFA F000:7FF6 ; --------------------------------------------------------------------------- F000:7FF6 F000:7FF6 loc_F7FF6: ; CODE XREF: F000:7FE3j F000:7FF6 popad F000:7FF8 jmp short loc_F7FC9 F000:7FFA ; --------------------------------------------------------------------------- F000:7FFA F000:7FFA loc_F7FFA: ; CODE XREF: F000:7FF4j F000:7FFA mov ecx, 10000h F000:8000 mov esi, 100000h F000:8006 mov edi, 1F0000h F000:800C and ecx, ecx F000:800F jz loc_F8093 F000:8013 push bp F000:8014 mov bp, 0Ah F000:8017 F000:8017 loc_F8017: ; CODE XREF: F000:809Aj F000:8017 ; F000:809Ej F000:8017 pushad F000:8019 push es F000:801A pushf F000:801B cld F000:801C mov ax, 50h ; 'P' F000:801F mov es, ax F000:8021 mov ebx, edi F000:8024 and bl, 0FEh F000:8027 mov byte ptr es:[ebx], 50h ; 'P' F000:802C test di, 1 F000:8030 jz short loc_F804B F000:8032 lods byte ptr [esi] F000:8034 mov ah, al F000:8036 mov al, 0FFh F000:8038 dec edi F000:803A mov word ptr es:[edi], 40h ; '@' F000:8040 stos word ptr es:[edi] F000:8042 F000:8042 loc_F8042: ; CODE XREF: F000:8047j F000:8042 test byte ptr es:[ebx], 80h F000:8047 jz short loc_F8042 F000:8049 dec ecx F000:804B F000:804B loc_F804B: ; CODE XREF: F000:8030j F000:804B shr ecx, 1 F000:804E pushf F000:804F jecxz loc_F8065 F000:8052 F000:8052 loc_F8052: ; CODE XREF: F000:8063j F000:8052 mov word ptr es:[edi], 40h ; '@' F000:8058 movs word ptr es:[edi], word ptr [esi] F000:805A F000:805A loc_F805A: ; CODE XREF: F000:805Fj F000:805A test byte ptr es:[ebx], 80h F000:805F jz short loc_F805A F000:8061 dec ecx F000:8063 jnz short loc_F8052 F000:8065 F000:8065 loc_F8065: ; CODE XREF: F000:804Fj F000:8065 popf F000:8066 jnb short loc_F807B F000:8068 lods byte ptr [esi] F000:806A mov ah, 0FFh F000:806C mov word ptr es:[edi], 40h ; '@' F000:8072 stos word ptr es:[edi] F000:8074 F000:8074 loc_F8074: ; CODE XREF: F000:8079j F000:8074 test byte ptr es:[ebx], 80h F000:8079 jz short loc_F8074 F000:807B F000:807B loc_F807B: ; CODE XREF: F000:8066j F000:807B popf F000:807C mov ch, es:[ebx] F000:8080 mov byte ptr es:[ebx], 0FFh F000:8085 test ch, 8 F000:8088 jnz short loc_F8096 F000:808A pop es F000:808B assume es:nothing F000:808B test ch, 18h F000:808E popad F000:8090 jnz short loc_F8095 F000:8092 pop bp F000:8093 F000:8093 loc_F8093: ; CODE XREF: F000:800Fj F000:8093 jmp short loc_F80A1 F000:8095 ; --------------------------------------------------------------------------- F000:8095 F000:8095 loc_F8095: ; CODE XREF: F000:8090j F000:8095 pop bp F000:8096 F000:8096 loc_F8096: ; CODE XREF: F000:8088j F000:8096 pop es F000:8097 popad F000:8099 dec bp F000:809A jnz loc_F8017 F000:809E jmp loc_F8017 F000:80A1 ; --------------------------------------------------------------------------- F000:80A1 F000:80A1 loc_F80A1: ; CODE XREF: F000:7DF1j F000:80A1 ; F000:7F74j ... F000:80A1 add dword ptr ds:0EADh, 10000h F000:80AA jmp loc_F856F F000:80AD ; --------------------------------------------------------------------------- F000:80AD F000:80AD loc_F80AD: ; CODE XREF: F000:7D33j F000:80AD ; F000:7ECDj F000:80AD mov word ptr ds:0FD3h, 8E69h F000:80B3 F000:80B3 loc_F80B3: ; CODE XREF: F000:884Fj F000:80B3 ; F000:888Bj F000:80B3 call sub_F4F38 F000:80B6 mov dword ptr ds:0EB1h, 10000000h F000:80BF mov dword ptr ds:0EB9h, 10000000h F000:80C8 call sub_F9112 F000:80CB F000:80CB loc_F80CB: ; CODE XREF: F000:8745j F000:80CB mov dword ptr ds:0FE1h, 400h F000:80D4 cmp word ptr ds:0FD3h, 8E69h F000:80DA jnz short loc_F80EB F000:80DC mov eax, ds:0FCFh F000:80E0 cmp eax, ds:0FE1h F000:80E5 ja short loc_F80EB F000:80E7 mov ds:0FE1h, eax F000:80EB F000:80EB loc_F80EB: ; CODE XREF: F000:80DAj F000:80EB ; F000:80E5j F000:80EB mov dword ptr ds:0FE5h, 100000h F000:80F4 xor ebx, ebx F000:80F7 mov al, 1Bh F000:80F9 F000:80F9 loc_F80F9: ; CODE XREF: F000:8148j F000:80F9 ; F000:8162j F000:80F9 mov ecx, 80h ; 'Ç' F000:80FF cmp word ptr ds:0FD3h, 8E69h F000:8105 jnz short loc_F8115 F000:8107 cmp word ptr ds:0FD3h, 8CDEh F000:810D jz short loc_F8115 F000:810F mov ecx, 200h F000:8115 F000:8115 loc_F8115: ; CODE XREF: F000:8105j F000:8115 ; F000:810Dj F000:8115 cmp ecx, ds:0FE1h F000:811A jb short loc_F8128 F000:811C mov ecx, ds:0FE1h F000:8121 and ecx, ecx F000:8124 jz loc_F857B F000:8128 F000:8128 loc_F8128: ; CODE XREF: F000:811Aj F000:8128 mov edi, ds:0FE5h F000:812D call word ptr ds:0FD3h F000:8131 mov edi, ds:0FE5h F000:8136 add ds:0FE5h, ecx F000:813B sub ds:0FE1h, ecx F000:8140 and ebx, ebx F000:8143 jnz short loc_F8164 F000:8145 repne scas byte ptr es:[edi] F000:8148 jnz short loc_F80F9 F000:814A mov ebx, edi F000:814D mov ds:0FE9h, edi F000:8152 neg edi F000:8155 add edi, ds:0FE5h F000:815A movzx ecx, word ptr [ebx] F000:815F cmp edi, eax F000:8162 jbe short loc_F80F9 F000:8164 F000:8164 loc_F8164: ; CODE XREF: F000:8143j F000:8164 cmp dword ptr [ebx+2], 4C646E42h F000:816D jnz loc_F857B F000:8171 mov edi, ebx F000:8174 movzx eax, word ptr [ebx] F000:8179 add edi, eax F000:817C mov ecx, edi F000:817F cmp dword ptr [ebx+1Ah], 0 F000:8185 lea edi, [edi+1Ah] F000:818A jz loc_F821B F000:818E mov edi, 100000h F000:8194 mov ecx, [ebx+1Ah] F000:8199 add edi, [ebx+16h] F000:819E inc edi F000:81A0 pushad F000:81A2 call sub_FAFF4 F000:81A5 cmp ax, 1 F000:81A8 jnz short loc_F8217 F000:81AA mov si, 14F6h F000:81AD call sub_FB114 F000:81B0 mov eax, ds:14F6h F000:81B4 or eax, eax F000:81B7 jz short loc_F81F5 F000:81B9 mov ecx, [edi+8] F000:81BE or ecx, ecx F000:81C1 jz short loc_F81F0 F000:81C3 lea esi, [edi+0Ch] F000:81C8 and ecx, 0FFh F000:81CF jnz short loc_F81D2 F000:81D1 inc cx F000:81D2 F000:81D2 loc_F81D2: ; CODE XREF: F000:81CFj F000:81D2 ; F000:81EEj F000:81D2 mov ebx, ds:14F6h F000:81D7 and ebx, [esi+4] F000:81DC mov eax, [esi] F000:81E0 and eax, [esi+4] F000:81E5 cmp ebx, eax F000:81E8 jz short loc_F81F5 F000:81EA add esi, 8 F000:81EE loop loc_F81D2 F000:81F0 F000:81F0 loc_F81F0: ; CODE XREF: F000:81C1j F000:81F0 popad F000:81F2 jmp loc_F857B F000:81F5 ; --------------------------------------------------------------------------- F000:81F5 F000:81F5 loc_F81F5: ; CODE XREF: F000:81B7j F000:81F5 ; F000:81E8j F000:81F5 mov eax, [edi+4] F000:81FA not eax F000:81FD and ds:14F6h, eax F000:8202 not eax F000:8205 and eax, [edi] F000:8209 or ds:14F6h, eax F000:820E mov si, 14F6h F000:8211 call sub_FB100 F000:8214 call sub_FB0B5 F000:8217 F000:8217 loc_F8217: ; CODE XREF: F000:81A8j F000:8217 popad F000:8219 jmp short loc_F8258 F000:821B ; --------------------------------------------------------------------------- F000:821B F000:821B loc_F821B: ; CODE XREF: F000:818Aj F000:821B mov eax, [edi] F000:821F or eax, 20202020h F000:8225 mov ecx, dword ptr cs:aUlc_code_ce ; "ulc_code.ce" F000:822B or ecx, 20202020h F000:8232 cmp eax, ecx F000:8235 jnz loc_F857B F000:8239 mov eax, [edi+4] F000:823E or eax, 20202020h F000:8244 mov ecx, dword ptr cs:aUlc_code_ce+4 F000:824A or ecx, 20202020h F000:8251 cmp eax, ecx F000:8254 jnz loc_F857B F000:8258 F000:8258 loc_F8258: ; CODE XREF: F000:8219j F000:8258 mov eax, [ebx+6] F000:825D mov ds:0FEDh, eax F000:8261 mov eax, [ebx+12h] F000:8266 mov ds:0FCFh, eax F000:826A mov ds:0EB1h, eax F000:826E mov ax, 7A21h F000:8271 call sub_F8BA1 F000:8274 mov ecx, ds:0FCFh F000:8279 mov ebx, ds:0FB2h F000:827E sub ebx, 100000h F000:8285 push ecx F000:8287 push ebx F000:8289 cmp ecx, ebx F000:828C jb short loc_F8291 F000:828E mov ecx, ebx F000:8291 F000:8291 loc_F8291: ; CODE XREF: F000:828Cj F000:8291 sub ecx, ds:0FE5h F000:8296 add ecx, 100000h F000:829D mov edi, ds:0FE5h F000:82A2 call word ptr ds:0FD3h F000:82A6 add edi, ecx F000:82A9 mov ds:0FE5h, edi F000:82AE sub edi, 100000h F000:82B5 mov eax, ds:0FCFh F000:82B9 sub eax, edi F000:82BC mov ds:0FF1h, eax F000:82C0 call sub_F90F8 F000:82C3 pop ebx F000:82C5 pop ecx F000:82C7 cmp ecx, ebx F000:82CA jnb short loc_F82F5 F000:82CC mov esi, 100001h F000:82D2 mov ecx, [esi+12h] F000:82D7 dec esi F000:82D9 shr ecx, 2 F000:82DD xor edx, edx F000:82E0 F000:82E0 loc_F82E0: ; CODE XREF: F000:82E6j F000:82E0 lods dword ptr [esi] F000:82E3 add edx, eax F000:82E6 loopd loc_F82E0 F000:82E9 cmp edx, 0FFFE1000h F000:82F0 jz short loc_F82F5 F000:82F2 jmp loc_F8615 F000:82F5 ; --------------------------------------------------------------------------- F000:82F5 F000:82F5 loc_F82F5: ; CODE XREF: F000:82CAj F000:82F5 ; F000:82F0j F000:82F5 call sub_F896D F000:82F8 jb loc_F8621 F000:82FC mov ebx, 1 F000:8302 mov byte ptr ds:0D87h, 14h F000:8307 mov esi, ds:0FF5h F000:830C F000:830C loc_F830C: ; CODE XREF: F000:8569j F000:830C call sub_F90F8 F000:830F cmp word ptr [esi], 0 F000:8313 jz loc_F856C F000:8317 mov ds:0FF9h, esi F000:831C xor dl, dl F000:831E F000:831E loc_F831E: ; CODE XREF: F000:844Ej F000:831E call sub_F799D F000:8321 jb loc_F8451 F000:8325 mov word ptr ds:0E87h[edx*2], 0 F000:832F mov esi, ds:0FF9h F000:8334 xor al, al F000:8336 cmp dword ptr ds:0FEDh, 1 F000:833C jb short loc_F8342 F000:833E mov al, [esi+19h] F000:8342 F000:8342 loc_F8342: ; CODE XREF: F000:833Cj F000:8342 sub al, 1 F000:8344 jb short loc_F834E F000:8346 cmp al, dl F000:8348 jnz loc_F844C F000:834C jmp short loc_F8372 F000:834E ; --------------------------------------------------------------------------- F000:834E F000:834E loc_F834E: ; CODE XREF: F000:8344j F000:834E cmp dl, 1 F000:8351 ja loc_F8451 F000:8355 call sub_F8CB4 F000:8358 jbe short loc_F8365 F000:835A test dword ptr [esi+3], 20000h F000:8363 jmp short loc_F836E F000:8365 ; --------------------------------------------------------------------------- F000:8365 F000:8365 loc_F8365: ; CODE XREF: F000:8358j F000:8365 test dword ptr [esi+3], 10000h F000:836E F000:836E loc_F836E: ; CODE XREF: F000:8363j F000:836E jz loc_F844C F000:8372 F000:8372 loc_F8372: ; CODE XREF: F000:834Cj F000:8372 xor esi, esi F000:8375 mov bx, 1 F000:8378 mov ecx, 1 F000:837E mov edi, 0D86h F000:8384 F000:8384 loc_F8384: ; CODE XREF: F000:8396j F000:8384 call sub_F77B3 F000:8387 jb short loc_F8398 F000:8389 movzx eax, byte ptr ds:0D86h F000:838F cmp al, 0FFh F000:8391 jz short loc_F8398 F000:8393 add esi, eax F000:8396 jmp short loc_F8384 F000:8398 ; --------------------------------------------------------------------------- F000:8398 F000:8398 loc_F8398: ; CODE XREF: F000:8387j F000:8398 ; F000:8391j F000:8398 mov ds:0FFDh, esi F000:839D mov esi, ds:0FF9h F000:83A2 mov cx, [esi+3] F000:83A6 mov ds:0D88h, cx F000:83AA mov ecx, [esi+13h] F000:83AF mov ds:0D94h, ecx F000:83B4 mov cx, [esi+17h] F000:83B8 mov ds:0D98h, cx F000:83BC mov ecx, [esi+0Fh] F000:83C1 mov ds:0D8Eh, ecx F000:83C6 mov ecx, [esi+0Bh] F000:83CB mov ds:0D8Ah, ecx F000:83D0 mov ds:1001h, ecx F000:83D5 movzx ecx, byte ptr [esi+2] F000:83DB movzx ebx, word ptr [esi] F000:83E0 add esi, ebx F000:83E3 sub esi, ecx F000:83E6 mov edi, 14FAh F000:83EC call sub_F7929 F000:83EF jz loc_F855C F000:83F3 push esi F000:83F5 mov edi, esi F000:83F8 mov esi, 0D060h F000:83FE push ds F000:83FF push cs F000:8400 pop ds F000:8401 assume ds:BIOS_F000 F000:8401 call sub_F61EE F000:8404 pop ds F000:8405 assume ds:nothing F000:8405 pop esi F000:8407 jz loc_F8639 F000:840B cmp dl, 0 F000:840E jz short loc_F844C F000:8410 mov edi, 0D9Ah F000:8416 rep movs byte ptr es:[edi], byte ptr [esi] F000:8419 call sub_F773D F000:841C mov ds:0D92h, ax F000:841F movzx edx, dl F000:8423 mov ds:0E87h[edx*2], ax F000:842B mov ecx, edi F000:842E mov esi, 0D86h F000:8434 sub ecx, esi F000:8437 mov ds:0D86h, cl F000:843B movzx ecx, byte ptr ds:0D86h F000:8441 mov bx, 1 F000:8444 mov edi, ds:0FFDh F000:8449 call loc_F7468 F000:844C F000:844C loc_F844C: ; CODE XREF: F000:8348j F000:844C ; F000:loc_F836Ej ... F000:844C inc dl F000:844E jmp loc_F831E F000:8451 ; --------------------------------------------------------------------------- F000:8451 F000:8451 loc_F8451: ; CODE XREF: F000:8321j F000:8451 ; F000:8351j F000:8451 mov dword ptr ds:1005h, 0 F000:845A mov esi, ds:0FF9h F000:845F mov esi, [esi+7] F000:8464 add esi, ds:0FAEh F000:8469 F000:8469 loc_F8469: ; CODE XREF: F000:8558j F000:8469 mov ecx, ds:0D8Ah F000:846E mov ebx, ds:0FE5h F000:8473 cmp esi, ebx F000:8476 jb short loc_F84E6 F000:8478 lea eax, [ebx+200000h] F000:8480 cmp eax, ds:0FB2h F000:8485 jbe short loc_F849C F000:8487 mov eax, 140000h F000:848D sub ebx, eax F000:8490 sub ds:0FAEh, ebx F000:8495 mov ds:0FE5h, eax F000:8499 mov esi, eax F000:849C F000:849C loc_F849C: ; CODE XREF: F000:8485j F000:849C mov ecx, ds:0FF1h F000:84A1 cmp ecx, 200000h F000:84A8 jb short loc_F84B0 F000:84AA mov ecx, 200000h F000:84B0 F000:84B0 loc_F84B0: ; CODE XREF: F000:84A8j F000:84B0 mov eax, ds:0FB2h F000:84B4 mov edi, ds:0FE5h F000:84B9 sub eax, edi F000:84BC cmp ecx, eax F000:84BF jb short loc_F84C4 F000:84C1 mov ecx, eax F000:84C4 F000:84C4 loc_F84C4: ; CODE XREF: F000:84BFj F000:84C4 mov ax, 7A21h F000:84C7 call sub_F8BA1 F000:84CA call word ptr ds:0FD3h F000:84CE sub ds:0FF1h, ecx F000:84D3 add ds:0FE5h, ecx F000:84D8 mov ecx, ds:0D8Ah F000:84DD call sub_F7CCE F000:84E0 mov ax, 7A4Ah F000:84E3 call sub_F8BA1 F000:84E6 F000:84E6 loc_F84E6: ; CODE XREF: F000:8476j F000:84E6 mov eax, ds:0FE5h F000:84EA sub eax, esi F000:84ED cmp ecx, eax F000:84F0 jb short loc_F84F5 F000:84F2 mov ecx, eax F000:84F5 F000:84F5 loc_F84F5: ; CODE XREF: F000:84F0j F000:84F5 mov dl, 1 F000:84F7 F000:84F7 loc_F84F7: ; CODE XREF: F000:8549j F000:84F7 push esi F000:84F9 call sub_F799D F000:84FC pop esi F000:84FE jb short loc_F854B F000:8500 cmp word ptr ds:0E87h[edx*2], 0 F000:8509 jz short loc_F8547 F000:850B mov edi, ds:1005h F000:8510 pushad F000:8512 mov eax, ecx F000:8515 F000:8515 loc_F8515: ; CODE XREF: F000:8543j F000:8515 mov ecx, eax F000:8518 cmp ecx, 1000h F000:851F jb short loc_F8527 F000:8521 mov ecx, 1000h F000:8527 F000:8527 loc_F8527: ; CODE XREF: F000:851Fj F000:8527 mov bx, ds:0E87h[edx*2] F000:852F call loc_F7468 F000:8532 add esi, ecx F000:8535 add edi, ecx F000:8538 add ds:0EADh, ecx F000:853D call sub_F90F8 F000:8540 sub eax, ecx F000:8543 jnz short loc_F8515 F000:8545 popad F000:8547 F000:8547 loc_F8547: ; CODE XREF: F000:8509j F000:8547 inc dl F000:8549 jmp short loc_F84F7 F000:854B ; --------------------------------------------------------------------------- F000:854B F000:854B loc_F854B: ; CODE XREF: F000:84FEj F000:854B add esi, ecx F000:854E add ds:1005h, ecx F000:8553 sub ds:0D8Ah, ecx F000:8558 ja loc_F8469 F000:855C F000:855C loc_F855C: ; CODE XREF: F000:83EFj F000:855C ; F000:8677j ... F000:855C mov esi, ds:0FF9h F000:8561 movzx eax, word ptr [esi] F000:8566 add esi, eax F000:8569 jmp loc_F830C F000:856C ; --------------------------------------------------------------------------- F000:856C F000:856C loc_F856C: ; CODE XREF: F000:8313j F000:856C call sub_F7394 F000:856F F000:856F loc_F856F: ; CODE XREF: F000:7EC4j F000:856F ; F000:80AAj F000:856F mov ax, 7A88h F000:8572 call sub_F8BA1 F000:8575 call sub_F7CD9 F000:8578 jmp loc_F49A6 F000:857B ; --------------------------------------------------------------------------- F000:857B F000:857B loc_F857B: ; CODE XREF: F000:8124j F000:857B ; F000:816Dj ... F000:857B cmp word ptr ds:0FD3h, 8E69h F000:8581 jnz loc_F8609 F000:8585 mov eax, ds:0FCFh F000:8589 mov ds:0EB1h, eax F000:858D mov ecx, ds:0FCFh F000:8592 mov ebx, ds:0FB2h F000:8597 sub ebx, 100000h F000:859E cmp ecx, ebx F000:85A1 ja short loc_F8609 F000:85A3 sub ecx, ds:0FE5h F000:85A8 add ecx, 100000h F000:85AF mov edi, ds:0FE5h F000:85B4 jecxz loc_F85BB F000:85B7 call word ptr ds:0FD3h F000:85BB F000:85BB loc_F85BB: ; CODE XREF: F000:85B4j F000:85BB add edi, ecx F000:85BE mov ds:0FE5h, edi F000:85C3 call sub_F90F8 F000:85C6 cmp dword ptr ds:0FCFh, 40000h F000:85CF jnz short loc_F8609 F000:85D1 mov esi, 100000h F000:85D7 cmp byte ptr [esi+3FFF0h], 0E9h ; 'Ú' F000:85DF jnz short loc_F8609 F000:85E1 cmp word ptr [esi+30000h], 0AA55h F000:85EA jnz short loc_F8609 F000:85EC add esi, 30000h F000:85F3 call sub_F61B2 F000:85F6 jnz short loc_F8609 F000:85F8 call sub_F61D7 F000:85FB jnz short loc_F8609 F000:85FD mov dword ptr ds:0EB9h, 40000h F000:8606 jmp loc_F7E22 F000:8609 ; --------------------------------------------------------------------------- F000:8609 F000:8609 loc_F8609: ; CODE XREF: F000:8581j F000:8609 ; F000:85A1j ... F000:8609 mov ax, 7B3Dh F000:860C mov esi, 7B54h F000:8612 jmp sub_F95A7 F000:8615 ; --------------------------------------------------------------------------- F000:8615 F000:8615 loc_F8615: ; CODE XREF: F000:82F2j F000:8615 mov ax, 7A5Eh F000:8618 mov esi, 7A6Eh F000:861E jmp sub_F95A7 F000:8621 ; --------------------------------------------------------------------------- F000:8621 F000:8621 loc_F8621: ; CODE XREF: F000:82F8j F000:8621 mov ax, 7B8Ch F000:8624 mov esi, 7BA6h F000:862A jmp sub_F95A7 F000:862D ; --------------------------------------------------------------------------- F000:862D F000:862D loc_F862D: ; CODE XREF: F000:7E50j F000:862D ; F000:8682j F000:862D mov ax, 7C0Ch F000:8630 mov esi, 7C24h F000:8636 jmp sub_F95A7 F000:8639 ; --------------------------------------------------------------------------- F000:8639 F000:8639 loc_F8639: ; CODE XREF: F000:8407j F000:8639 mov esi, ds:0FF9h F000:863E mov ebx, [esi+0Bh] F000:8643 mov edi, 80000h F000:8649 sub edi, ebx F000:864C mov esi, [esi+7] F000:8651 add esi, 100000h F000:8658 cmp dword ptr ds:0F5Fh, 30323043h F000:8661 jz short loc_F8684 F000:8663 cmp dword ptr ds:0F5Fh, 30343043h F000:866C jz short loc_F8684 F000:866E cmp dword ptr ds:0F5Fh, 30454539h F000:8677 jnz loc_F855C F000:867B cmp dword ptr [ebx+esi-24h], 0 F000:8682 jz short loc_F862D F000:8684 F000:8684 loc_F8684: ; CODE XREF: F000:8661j F000:8684 ; F000:866Cj F000:8684 cmp byte ptr [ebx+esi-10h], 0EAh ; 'à' F000:868A jz short loc_F8696 F000:868C cmp byte ptr [ebx+esi-10h], 0E9h ; 'Ú' F000:8692 jnz loc_F8609 F000:8696 F000:8696 loc_F8696: ; CODE XREF: F000:868Aj F000:8696 call sub_FD019 F000:8699 call sub_FCFFB F000:869C push es F000:869D mov ax, 50h ; 'P' F000:86A0 mov es, ax F000:86A2 assume es:nothing F000:86A2 shr ebx, 8 F000:86A6 cmp dword ptr ds:0F14h, 100h F000:86AF jz short loc_F86B4 F000:86B1 shl ebx, 1 F000:86B4 F000:86B4 loc_F86B4: ; CODE XREF: F000:86AFj F000:86B4 ; F000:8734j F000:86B4 cmp edi, 40000h F000:86BB jb short loc_F86C7 F000:86BD call sub_FCFE0 F000:86C0 sub edi, 40000h F000:86C7 F000:86C7 loc_F86C7: ; CODE XREF: F000:86BBj F000:86C7 push esi F000:86C9 push edi F000:86CB mov ecx, ds:0F14h F000:86D0 shr ecx, 2 F000:86D4 repe cmps dword ptr [esi], dword ptr es:[edi] F000:86D8 pop edi F000:86DA pop esi F000:86DC jz short loc_F8715 F000:86DE mov byte ptr es:5555h, 0AAh ; '¬' F000:86E4 mov byte ptr es:2AAAh, 55h ; 'U' F000:86EA mov byte ptr es:5555h, 0A0h ; 'á' F000:86F0 mov ecx, ds:0F14h F000:86F5 push esi F000:86F7 push edi F000:86F9 F000:86F9 loc_F86F9: ; CODE XREF: F000:8701j F000:86F9 lods byte ptr [esi] F000:86FB mov es:[edi], al F000:86FF inc edi F000:8701 loopd loc_F86F9 F000:8704 dec edi F000:8706 F000:8706 loc_F8706: ; CODE XREF: F000:870Aj F000:8706 cmp es:[edi], al F000:870A jnz short loc_F8706 F000:870C pop edi F000:870E pop esi F000:8710 or byte ptr ds:0FDCh, 1 F000:8715 F000:8715 loc_F8715: ; CODE XREF: F000:86DCj F000:8715 mov eax, ds:0F14h F000:8719 add esi, eax F000:871C add edi, eax F000:871F add ds:0EADh, eax F000:8724 test dword ptr ds:0EADh, 0F00h F000:872D jnz short loc_F8732 F000:872F call sub_F90F8 F000:8732 F000:8732 loc_F8732: ; CODE XREF: F000:872Dj F000:8732 dec ebx F000:8734 jnz loc_F86B4 F000:8738 pop es F000:8739 assume es:nothing F000:8739 jmp loc_F855C F000:873C ; --------------------------------------------------------------------------- F000:873C F000:873C loc_F873C: ; CODE XREF: F000:8771j F000:873C mov eax, ds:0EADh F000:8740 cmp eax, ds:0EB9h F000:8745 jnz loc_F80CB F000:8749 mov ax, 7A88h F000:874C call sub_F8BA1 F000:874F call sub_F90F8 F000:8752 call sub_F7CD9 F000:8755 mov edx, ds:1009h F000:875A add edx, 36h ; '6' F000:875E F000:875E loc_F875E: ; CODE XREF: F000:8763j F000:875E cmp edx, ds:1009h F000:8763 jnz short loc_F875E F000:8765 jmp loc_F49A6 F000:8768 ; --------------------------------------------------------------------------- F000:8768 add dword ptr ds:100Dh, 7FE00h F000:8771 jmp short loc_F873C F000:8773 ; --------------------------------------------------------------------------- F000:8773 mov dx, 3FCh F000:8776 xor al, al F000:8778 call sub_F8CCA F000:877B jnz short loc_F8786 F000:877D mov al, 2 F000:877F call sub_F8CCA F000:8782 cmp al, 50h ; 'P' F000:8784 jz short loc_F8792 F000:8786 F000:8786 loc_F8786: ; CODE XREF: F000:877Bj F000:8786 and dl, 0F8h F000:8789 add dl, 4 F000:878C xor al, al F000:878E out dx, al F000:878F jmp loc_F8852 F000:8792 ; --------------------------------------------------------------------------- F000:8792 F000:8792 loc_F8792: ; CODE XREF: F000:8784j F000:8792 mov dl, 0F8h ; '°' F000:8794 mov ds:1011h, dx F000:8798 mov byte ptr ds:0FB6h, 1 F000:879D mov word ptr ds:0FD3h, 8CDEh F000:87A3 and dl, 0F8h F000:87A6 add dl, 1 F000:87A9 xor al, al F000:87AB out dx, al F000:87AC mov bx, 1 F000:87AF mov ds:102Ch, bx F000:87B3 call sub_F90E3 F000:87B6 cli F000:87B7 push eax F000:87B9 push ax F000:87BA sidt fword ptr [esp] F000:87BF and dword ptr [esp+2], 0FFFFh F000:87C9 mov eax, [esp+2] F000:87CF mov word ptr es:[eax+60h], 8FADh F000:87D6 lidt fword ptr [esp] F000:87DB add esp, 6 F000:87DF sti F000:87E0 and dl, 0F8h F000:87E3 add dl, 2 F000:87E6 mov al, 1 F000:87E8 out dx, al F000:87E9 jmp short $+2 F000:87EB jmp short $+2 F000:87ED mov al, 87h ; 'ç' F000:87EF out dx, al F000:87F0 and dl, 0F8h F000:87F3 add dl, 4 F000:87F6 mov al, 8 F000:87F8 out dx, al F000:87F9 F000:87F9 loc_F87F9: ; CODE XREF: F000:880Bj F000:87F9 and dl, 0F8h F000:87FC add dl, 5 F000:87FF in al, dx F000:8800 test al, 1 F000:8802 jz short loc_F880D F000:8804 and dl, 0F8h F000:8807 add dl, 0 F000:880A in al, dx F000:880B jmp short loc_F87F9 F000:880D ; --------------------------------------------------------------------------- F000:880D F000:880D loc_F880D: ; CODE XREF: F000:8802j F000:880D xor al, al F000:880F mov ecx, 102Eh F000:8815 mov edi, 1013h F000:881B sub ecx, edi F000:881E rep stosb F000:8820 mov byte ptr ds:1024h, 4 F000:8825 mov dword ptr ds:1013h, 100000h F000:882E mov ebx, 24h ; '$' F000:8834 call sub_F907C F000:8837 mov word ptr ds:1028h, 8FDFh F000:883D and dl, 0F8h F000:8840 add dl, 1 F000:8843 mov al, 5 F000:8845 out dx, al F000:8846 mov al, 0EFh ; '´' F000:8848 out 21h, al ; Interrupt controller, 8259A. F000:884A mov al, 15h F000:884C call sub_F8F9E F000:884F jmp loc_F80B3 F000:8852 ; --------------------------------------------------------------------------- F000:8852 F000:8852 loc_F8852: ; CODE XREF: F000:7D20j F000:8852 ; F000:878Fj F000:8852 mov edi, 300000h F000:8858 mov al, 1Bh F000:885A mov ecx, 400h F000:8860 repne scas byte ptr es:[edi] F000:8863 jnz short locret_F88B1 F000:8865 cmp dword ptr [edi+2], 4C646E42h F000:886E jnz short locret_F88B1 F000:8870 mov dword ptr ds:100Dh, 0 F000:8879 or byte ptr ds:0FDCh, 4 F000:887E mov word ptr ds:0FD3h, 0CF20h F000:8884 call sub_F893D F000:8887 cmp ebx, 0 F000:888B jz loc_F80B3 F000:888F cmp ebx, 8 F000:8896 jbe short loc_F889F F000:8898 mov ebx, 0 F000:889E retn F000:889F ; --------------------------------------------------------------------------- F000:889F F000:889F loc_F889F: ; CODE XREF: F000:8896j F000:889F mov edi, 8935h F000:88A5 mov esi, cs:[ebx+edi] F000:88AB mov ax, 7B3Dh F000:88AE jmp sub_F95A7 F000:88B1 ; --------------------------------------------------------------------------- F000:88B1 F000:88B1 locret_F88B1: ; CODE XREF: F000:8863j F000:88B1 ; F000:886Ej F000:88B1 retn F000:88B1 ; --------------------------------------------------------------------------- F000:88B2 aTheFirmwareYou db 'The firmware you are downloading does not support the GEODE CPU.',0Ah F000:88B2 db 0 F000:88F4 aTheFirmwareY_0 db 'The firmware you are downloading does not support a 300MHz CPU.',0Ah F000:88F4 db 0 F000:8935 db 0 F000:8936 db 0 F000:8937 db 24h ; $ F000:8938 db 7Ch ; | F000:8939 db 0B2h ; - F000:893A db 88h ; ³ F000:893B db 0F4h ; ¢ F000:893C db 88h ; ³ F000:893D F000:893D ; =============== S U B R O U T I N E ======================================= F000:893D F000:893D F000:893D sub_F893D proc near ; CODE XREF: F000:8884p F000:893D mov edi, 180000h F000:8943 mov edx, 0FFFEF000h F000:8949 mov esi, edx F000:894C cmp dword ptr [esi], 12346666h F000:8954 jz short loc_F895D F000:8956 mov ebx, 0 F000:895C retn F000:895D ; --------------------------------------------------------------------------- F000:895D F000:895D loc_F895D: ; CODE XREF: sub_F893D+17j F000:895D mov ecx, 400h F000:8963 rep movs dword ptr es:[edi], dword ptr [esi] F000:8967 call far ptr 90h:4 F000:896C retn F000:896C sub_F893D endp F000:896C F000:896D F000:896D ; =============== S U B R O U T I N E ======================================= F000:896D F000:896D F000:896D sub_F896D proc near ; CODE XREF: F000:loc_F82F5p F000:896D ; F000:8B85p F000:896D mov dword ptr fs:0EB9h, 0 F000:8977 mov ecx, 5 F000:897D xor edx, edx F000:8980 F000:8980 loc_F8980: ; CODE XREF: sub_F896D+28j F000:8980 call sub_F799D F000:8983 jb short loc_F8997 F000:8985 mov eax, fs:0F32h F000:898A mov ds:10A1h[edx*4], eax F000:8993 inc edx F000:8995 loop loc_F8980 F000:8997 F000:8997 loc_F8997: ; CODE XREF: sub_F896D+16j F000:8997 mov edi, ds:0FE9h F000:899C movzx eax, word ptr [edi] F000:89A1 add eax, edi F000:89A4 mov ds:0FF5h, eax F000:89A8 mov ds:0FE9h, edi F000:89AD mov dl, 1 F000:89AF F000:89AF loc_F89AF: ; CODE XREF: sub_F896D+86j F000:89AF call sub_F799D F000:89B2 jb short loc_F89F5 F000:89B4 test byte ptr fs:0F47h, 10h F000:89BA jnz short loc_F89F5 F000:89BC xor esi, esi F000:89BF mov bx, 1 F000:89C2 mov edi, 0D86h F000:89C8 push es F000:89C9 push fs F000:89CB pop es F000:89CC F000:89CC loc_F89CC: ; CODE XREF: sub_F896D+81j F000:89CC mov ecx, 1 F000:89D2 call sub_F77B3 F000:89D5 jb short loc_F89F0 F000:89D7 movzx ecx, byte ptr fs:0D86h F000:89DE cmp cl, 0FFh F000:89E1 jz short loc_F89F0 F000:89E3 call sub_F77B3 F000:89E6 jb short loc_F89F0 F000:89E8 call sub_F8BBF F000:89EB add esi, ecx F000:89EE jmp short loc_F89CC F000:89F0 ; --------------------------------------------------------------------------- F000:89F0 F000:89F0 loc_F89F0: ; CODE XREF: sub_F896D+68j F000:89F0 ; sub_F896D+74j ... F000:89F0 pop es F000:89F1 inc dl F000:89F3 jmp short loc_F89AF F000:89F5 ; --------------------------------------------------------------------------- F000:89F5 F000:89F5 loc_F89F5: ; CODE XREF: sub_F896D+45j F000:89F5 ; sub_F896D+4Dj F000:89F5 mov edx, 1 F000:89FB F000:89FB loc_F89FB: ; CODE XREF: sub_F896D+E3j F000:89FB call sub_F799D F000:89FE jb short loc_F8A52 F000:8A00 mov edi, ds:0FE9h F000:8A05 call sub_F8CB4 F000:8A08 mov al, 2 F000:8A0A ja short loc_F8A0E F000:8A0C mov al, 1 F000:8A0E F000:8A0E loc_F8A0E: ; CODE XREF: sub_F896D+9Dj F000:8A0E test byte ptr fs:0F47h, 10h F000:8A14 jz short loc_F8A1A F000:8A16 or [edi+0Eh], al F000:8A1A F000:8A1A loc_F8A1A: ; CODE XREF: sub_F896D+A7j F000:8A1A test [edi+0Eh], al F000:8A1E jz short loc_F8A4E F000:8A20 movzx eax, word ptr fs:0F20h F000:8A27 test byte ptr fs:0F47h, 4 F000:8A2D jz short loc_F8A33 F000:8A2F sub eax, 14h F000:8A33 F000:8A33 loc_F8A33: ; CODE XREF: sub_F896D+C0j F000:8A33 push edx F000:8A35 mul dword ptr fs:0F41h F000:8A3B pop edx F000:8A3D sub eax, fs:0F4Ch F000:8A43 dec eax F000:8A45 mov ds:10A1h[edx*4], eax F000:8A4E F000:8A4E loc_F8A4E: ; CODE XREF: sub_F896D+B1j F000:8A4E inc dl F000:8A50 jmp short loc_F89FB F000:8A52 ; --------------------------------------------------------------------------- F000:8A52 F000:8A52 loc_F8A52: ; CODE XREF: sub_F896D+91j F000:8A52 call sub_F9175 F000:8A55 add fs:0EB9h, esi F000:8A5B mov ecx, 5 F000:8A61 mov esi, 10A1h F000:8A67 F000:8A67 loc_F8A67: ; CODE XREF: sub_F896D+108j F000:8A67 cmp dword ptr fs:[esi], 0 F000:8A6D jl loc_F8B76 F000:8A71 add esi, 4 F000:8A75 loop loc_F8A67 F000:8A77 test byte ptr ds:0FDCh, 20h F000:8A7C jnz short loc_F8AA5 F000:8A7E mov dl, 0FFh F000:8A80 F000:8A80 loc_F8A80: ; CODE XREF: sub_F896D+120j F000:8A80 ; sub_F896D+136j F000:8A80 inc dl F000:8A82 call sub_F799D F000:8A85 jb short loc_F8AA5 F000:8A87 test byte ptr fs:0F47h, 40h F000:8A8D jz short loc_F8A80 F000:8A8F mov ax, 9337h F000:8A92 call sub_F8BA1 F000:8A95 mov eax, fs:0F3Dh F000:8A9A mov word ptr fs:[eax], 0 F000:8AA0 call sub_F680B F000:8AA3 jmp short loc_F8A80 F000:8AA5 ; --------------------------------------------------------------------------- F000:8AA5 F000:8AA5 loc_F8AA5: ; CODE XREF: sub_F896D+10Fj F000:8AA5 ; sub_F896D+118j F000:8AA5 mov dl, 1 F000:8AA7 F000:8AA7 loc_F8AA7: ; CODE XREF: sub_F896D+196j F000:8AA7 call sub_F799D F000:8AAA jb short loc_F8B05 F000:8AAC mov edi, ds:0FE9h F000:8AB1 call sub_F8CB4 F000:8AB4 mov al, 2 F000:8AB6 ja short loc_F8ABA F000:8AB8 mov al, 1 F000:8ABA F000:8ABA loc_F8ABA: ; CODE XREF: sub_F896D+149j F000:8ABA test [edi+0Eh], al F000:8ABE jz short loc_F8B01 F000:8AC0 test byte ptr ds:0FDCh, 20h F000:8AC5 jnz short loc_F8AD0 F000:8AC7 call sub_F7CCE F000:8ACA mov ax, 7A36h F000:8ACD call sub_F8BA1 F000:8AD0 F000:8AD0 loc_F8AD0: ; CODE XREF: sub_F896D+158j F000:8AD0 mov ax, 0FFFFh F000:8AD3 mov esi, fs:0F90h F000:8AD9 F000:8AD9 loc_F8AD9: ; CODE XREF: sub_F896D+177j F000:8AD9 ; sub_F896D+18Cj F000:8AD9 inc ax F000:8ADA cmp ax, fs:0F20h F000:8ADF jnb short loc_F8AFB F000:8AE1 call sub_F6E04 F000:8AE4 jb short loc_F8AD9 F000:8AE6 mov bx, ax F000:8AE8 call word ptr fs:0F2Ch F000:8AED mov ecx, fs:[esi+36h] F000:8AF3 add fs:[esi+3Dh], ecx F000:8AF9 jmp short loc_F8AD9 F000:8AFB ; --------------------------------------------------------------------------- F000:8AFB F000:8AFB loc_F8AFB: ; CODE XREF: sub_F896D+172j F000:8AFB call sub_F68DE F000:8AFE call sub_F67A0 F000:8B01 F000:8B01 loc_F8B01: ; CODE XREF: sub_F896D+151j F000:8B01 inc dl F000:8B03 jmp short loc_F8AA7 F000:8B05 ; --------------------------------------------------------------------------- F000:8B05 F000:8B05 loc_F8B05: ; CODE XREF: sub_F896D+13Dj F000:8B05 mov edi, ds:0FE9h F000:8B0A test byte ptr [edi+0Eh], 4 F000:8B0F jz short loc_F8B19 F000:8B11 push ds F000:8B12 push fs F000:8B14 pop ds F000:8B15 call sub_F6238 F000:8B18 pop ds F000:8B19 F000:8B19 loc_F8B19: ; CODE XREF: sub_F896D+1A2j F000:8B19 test byte ptr ds:0FDCh, 20h F000:8B1E jnz short loc_F8B23 F000:8B20 call sub_F8B89 F000:8B23 F000:8B23 loc_F8B23: ; CODE XREF: sub_F896D+1B1j F000:8B23 mov dl, 1 F000:8B25 F000:8B25 loc_F8B25: ; CODE XREF: sub_F896D+200j F000:8B25 call sub_F799D F000:8B28 jb short loc_F8B6F F000:8B2A call sub_F6FF8 F000:8B2D call sub_F62F8 F000:8B30 xor esi, esi F000:8B33 mov bx, 1 F000:8B36 mov edi, 0D86h F000:8B3C push es F000:8B3D push fs F000:8B3F pop es F000:8B40 F000:8B40 loc_F8B40: ; CODE XREF: sub_F896D+1F5j F000:8B40 mov ecx, 1 F000:8B46 call sub_F77B3 F000:8B49 jb short loc_F8B64 F000:8B4B movzx ecx, byte ptr fs:0D86h F000:8B52 cmp cl, 0FFh F000:8B55 jz short loc_F8B64 F000:8B57 call sub_F77B3 F000:8B5A jb short loc_F8B64 F000:8B5C call sub_F8C28 F000:8B5F add esi, ecx F000:8B62 jmp short loc_F8B40 F000:8B64 ; --------------------------------------------------------------------------- F000:8B64 F000:8B64 loc_F8B64: ; CODE XREF: sub_F896D+1DCj F000:8B64 ; sub_F896D+1E8j ... F000:8B64 pop es F000:8B65 call sub_F62FF F000:8B68 call sub_F6FF8 F000:8B6B inc dl F000:8B6D jmp short loc_F8B25 F000:8B6F ; --------------------------------------------------------------------------- F000:8B6F F000:8B6F loc_F8B6F: ; CODE XREF: sub_F896D+1BBj F000:8B6F mov eax, fs:0EB9h F000:8B74 clc F000:8B75 retn F000:8B76 ; --------------------------------------------------------------------------- F000:8B76 F000:8B76 loc_F8B76: ; CODE XREF: sub_F896D+100j F000:8B76 xor eax, eax F000:8B79 stc F000:8B7A retn F000:8B7A sub_F896D endp F000:8B7A F000:8B7B ; --------------------------------------------------------------------------- F000:8B7B or byte ptr ds:0FDCh, 20h F000:8B80 mov ds:0FE9h, esi F000:8B85 call sub_F896D F000:8B88 retn F000:8B89 F000:8B89 ; =============== S U B R O U T I N E ======================================= F000:8B89 F000:8B89 F000:8B89 sub_F8B89 proc near ; CODE XREF: F000:loc_F7E54p F000:8B89 ; sub_F896D+1B3p F000:8B89 pushad F000:8B8B call sub_F7CCE F000:8B8E mov ax, 7A4Ah F000:8B91 call sub_F8BA1 F000:8B94 mov ebx, ds:10B5h F000:8B99 mov byte ptr [ebx+5], 1 F000:8B9E popad F000:8BA0 retn F000:8BA0 sub_F8B89 endp F000:8BA0 F000:8BA1 F000:8BA1 ; =============== S U B R O U T I N E ======================================= F000:8BA1 F000:8BA1 F000:8BA1 sub_F8BA1 proc near ; CODE XREF: sub_F38B1+Dp F000:8BA1 ; sub_F38B1+EBp ... F000:8BA1 pushad F000:8BA3 push es F000:8BA4 mov bx, 18h F000:8BA7 mov es, bx F000:8BA9 assume es:nothing F000:8BA9 mov esi, 0E91h F000:8BAF mov ebx, ds:10B9h F000:8BB4 mov [ebx+0Ah], ax F000:8BB8 call sub_F990D F000:8BBB pop es F000:8BBC assume es:nothing F000:8BBC popad F000:8BBE retn F000:8BBE sub_F8BA1 endp F000:8BBE F000:8BBF F000:8BBF ; =============== S U B R O U T I N E ======================================= F000:8BBF F000:8BBF F000:8BBF sub_F8BBF proc near ; CODE XREF: sub_F896D+7Bp F000:8BBF and byte ptr ds:0FDCh, 0EFh F000:8BC4 pushad F000:8BC6 mov esi, ds:0FF5h F000:8BCB F000:8BCB loc_F8BCB: ; CODE XREF: sub_F8BBF+3Cj F000:8BCB movzx ebx, word ptr [esi] F000:8BD0 and ebx, ebx F000:8BD3 jz short loc_F8C25 F000:8BD5 pushad F000:8BD7 movzx ecx, byte ptr [esi+2] F000:8BDD mov edi, esi F000:8BE0 add edi, ebx F000:8BE3 sub edi, ecx F000:8BE6 mov ax, [esi+17h] F000:8BEA cmp ax, fs:0D98h F000:8BEF jz short loc_F8BFD F000:8BF1 popad F000:8BF3 movzx eax, word ptr [esi] F000:8BF8 add esi, eax F000:8BFB jmp short loc_F8BCB F000:8BFD ; --------------------------------------------------------------------------- F000:8BFD F000:8BFD loc_F8BFD: ; CODE XREF: sub_F8BBF+30j F000:8BFD mov eax, fs:0D8Ah F000:8C02 push edx F000:8C04 xor edx, edx F000:8C07 div dword ptr fs:0F18h F000:8C0D and edx, edx F000:8C10 jz short loc_F8C14 F000:8C12 inc eax F000:8C14 F000:8C14 loc_F8C14: ; CODE XREF: sub_F8BBF+51j F000:8C14 pop edx F000:8C16 movzx edx, dl F000:8C1A add ds:10A1h[edx*4], eax F000:8C23 popad F000:8C25 F000:8C25 loc_F8C25: ; CODE XREF: sub_F8BBF+14j F000:8C25 popad F000:8C27 retn F000:8C27 sub_F8BBF endp F000:8C27 F000:8C28 F000:8C28 ; =============== S U B R O U T I N E ======================================= F000:8C28 F000:8C28 F000:8C28 sub_F8C28 proc near ; CODE XREF: sub_F896D+1EFp F000:8C28 and byte ptr ds:0FDCh, 0EFh F000:8C2D pushad F000:8C2F mov ds:0FFDh, esi F000:8C34 mov esi, ds:0FF5h F000:8C39 F000:8C39 loc_F8C39: ; CODE XREF: sub_F8C28+87j F000:8C39 movzx ebx, word ptr [esi] F000:8C3E and ebx, ebx F000:8C41 jz short loc_F8CB1 F000:8C43 pushad F000:8C45 movzx ecx, byte ptr [esi+2] F000:8C4B mov edi, esi F000:8C4E add edi, ebx F000:8C51 sub edi, ecx F000:8C54 mov ax, [esi+17h] F000:8C58 cmp ax, fs:0D98h F000:8C5D jnz short loc_F8CA5 F000:8C5F movzx ebx, byte ptr fs:0D87h F000:8C66 mov edi, ds:0FFDh F000:8C6B add edi, ebx F000:8C6E mov esi, 0D86h F000:8C74 add esi, ebx F000:8C77 add ebx, 0D86h F000:8C7E mov byte ptr fs:[esi], 0 F000:8C83 mov ecx, 1 F000:8C89 mov ebx, 1 F000:8C8F push ds F000:8C90 push fs F000:8C92 pop ds F000:8C93 call loc_F7468 F000:8C96 xor ecx, ecx F000:8C99 xor edi, edi F000:8C9C mov bx, fs:0D92h F000:8CA1 call loc_F7468 F000:8CA4 pop ds F000:8CA5 F000:8CA5 loc_F8CA5: ; CODE XREF: sub_F8C28+35j F000:8CA5 popad F000:8CA7 movzx eax, word ptr [esi] F000:8CAC add esi, eax F000:8CAF jmp short loc_F8C39 F000:8CB1 ; --------------------------------------------------------------------------- F000:8CB1 F000:8CB1 loc_F8CB1: ; CODE XREF: sub_F8C28+19j F000:8CB1 popad F000:8CB3 retn F000:8CB3 sub_F8C28 endp F000:8CB3 F000:8CB4 F000:8CB4 ; =============== S U B R O U T I N E ======================================= F000:8CB4 F000:8CB4 F000:8CB4 sub_F8CB4 proc near ; CODE XREF: F000:8355p F000:8CB4 ; sub_F896D+98p ... F000:8CB4 pushad F000:8CB6 mov eax, fs:0F1Ch F000:8CBB mul dword ptr fs:0F18h F000:8CC1 cmp eax, 40000h F000:8CC7 popad F000:8CC9 retn F000:8CC9 sub_F8CB4 endp F000:8CC9 F000:8CCA F000:8CCA ; =============== S U B R O U T I N E ======================================= F000:8CCA F000:8CCA F000:8CCA sub_F8CCA proc near ; CODE XREF: F000:8778p F000:8CCA ; F000:877Fp ... F000:8CCA and dl, 0F8h F000:8CCD add dl, 4 F000:8CD0 out dx, al F000:8CD1 and dl, 0F8h F000:8CD4 add dl, 6 F000:8CD7 call sub_F48BC F000:8CDA in al, dx F000:8CDB and al, 0F0h F000:8CDD retn F000:8CDD sub_F8CCA endp F000:8CDD F000:8CDE ; --------------------------------------------------------------------------- F000:8CDE pushad F000:8CE0 xor esi, esi F000:8CE3 mov ds:10BDh, ecx F000:8CE8 F000:8CE8 loc_F8CE8: ; CODE XREF: F000:8D1Dj F000:8CE8 ; F000:8D8Cj F000:8CE8 inc esi F000:8CEA push esi F000:8CEC cmp word ptr ds:102Ah, 20h ; ' ' F000:8CF1 jb short loc_F8D04 F000:8CF3 sub word ptr ds:102Ah, 20h ; ' ' F000:8CF8 add dword ptr ds:0EB5h, 1000h F000:8D01 call sub_F90F8 F000:8D04 F000:8D04 loc_F8D04: ; CODE XREF: F000:8CF1j F000:8D04 pop esi F000:8D06 mov ecx, ds:10BDh F000:8D0B cmp ds:1017h, ecx F000:8D10 jnb short loc_F8D8F F000:8D12 mov eax, ds:101Fh F000:8D16 cmp esi, 800000h F000:8D1D jb short loc_F8CE8 F000:8D1F inc byte ptr ds:1023h F000:8D23 mov al, ds:1024h F000:8D26 cmp ds:1023h, al F000:8D2A jbe short loc_F8D62 F000:8D2C cmp byte ptr ds:1024h, 8 F000:8D31 jnz short loc_F8D44 F000:8D33 mov al, 18h F000:8D35 mov dx, ds:1011h F000:8D39 call sub_F8F9E F000:8D3C mov ax, 7B01h F000:8D3F call sub_F8BA1 F000:8D42 F000:8D42 loc_F8D42: ; CODE XREF: F000:loc_F8D42j F000:8D42 jmp short loc_F8D42 F000:8D44 ; --------------------------------------------------------------------------- F000:8D44 F000:8D44 loc_F8D44: ; CODE XREF: F000:8D31j F000:8D44 mov bx, ds:102Ch F000:8D48 shl bx, 1 F000:8D4A cmp bx, 3 F000:8D4D jnb short loc_F8D52 F000:8D4F mov bx, 3 F000:8D52 F000:8D52 loc_F8D52: ; CODE XREF: F000:8D4Dj F000:8D52 mov ds:102Ch, bx F000:8D56 cmp bx, 0Ch F000:8D59 jbe short loc_F8D5F F000:8D5B popad F000:8D5D pop ax F000:8D5E retn F000:8D5F ; --------------------------------------------------------------------------- F000:8D5F F000:8D5F loc_F8D5F: ; CODE XREF: F000:8D59j F000:8D5F call sub_F90E3 F000:8D62 F000:8D62 loc_F8D62: ; CODE XREF: F000:8D2Aj F000:8D62 mov ebx, 24h ; '$' F000:8D68 call sub_F907C F000:8D6B movzx eax, byte ptr ds:1025h F000:8D71 sub ds:1013h, eax F000:8D76 mov byte ptr ds:1025h, 0 F000:8D7B mov al, 15h F000:8D7D mov dx, ds:1011h F000:8D81 cli F000:8D82 mov word ptr ds:1028h, 8FDFh F000:8D88 call sub_F8F9E F000:8D8B sti F000:8D8C jmp loc_F8CE8 F000:8D8F ; --------------------------------------------------------------------------- F000:8D8F F000:8D8F loc_F8D8F: ; CODE XREF: F000:8D10j F000:8D8F sub ds:1017h, ecx F000:8D94 cmp word ptr ds:0FD5h, 0 F000:8D99 jz short loc_F8DB8 F000:8D9B mov eax, ds:101Bh F000:8D9F add ds:0FD7h, eax F000:8DA4 cmp dword ptr ds:0FD7h, 200000h F000:8DAD jb short loc_F8DB8 F000:8DAF mov dword ptr ds:0FD7h, 100000h F000:8DB8 F000:8DB8 loc_F8DB8: ; CODE XREF: F000:8D99j F000:8DB8 ; F000:8DADj F000:8DB8 mov ds:101Bh, ecx F000:8DBD cmp word ptr ds:0FD5h, 0 F000:8DC2 jnz short loc_F8DCD F000:8DC4 add dword ptr ds:101Bh, 200h F000:8DCD F000:8DCD loc_F8DCD: ; CODE XREF: F000:8DC2j F000:8DCD popad F000:8DCF retn F000:8DD0 ; --------------------------------------------------------------------------- F000:8DD0 mov word ptr ds:1032h, 0FFFFh F000:8DD6 mov al, ds:1034h F000:8DD9 inc al F000:8DDB inc al F000:8DDD mov ds:1038h, al F000:8DE0 add al, 0Ah F000:8DE2 mov ds:1039h, al F000:8DE5 mov dx, 379h F000:8DE8 F000:8DE8 loc_F8DE8: ; CODE XREF: F000:8E25j F000:8DE8 test byte ptr ds:103Ah, 80h F000:8DED in al, dx ; Printer Status Bits: F000:8DED ; 3: 0=printer signals an error F000:8DED ; 4: 1=printer is selected F000:8DED ; 5: 1=out of paper F000:8DED ; 6: 0=ready for next character F000:8DED ; 7: 0=busy or offline or error F000:8DEE jz short loc_F8DF7 F000:8DF0 and al, al F000:8DF2 js short loc_F8E21 F000:8DF4 mov ds:103Ah, al F000:8DF7 F000:8DF7 loc_F8DF7: ; CODE XREF: F000:8DEEj F000:8DF7 and al, al F000:8DF9 jns short loc_F8E21 F000:8DFB or byte ptr ds:103Ah, 80h F000:8E00 shr al, 3 F000:8E03 mov ah, ds:103Ah F000:8E07 shl ah, 1 F000:8E09 rol ax, 4 F000:8E0C mov edi, 103Bh F000:8E12 call sub_F8E3E F000:8E15 jz short locret_F8E28 F000:8E17 mov al, ds:1034h F000:8E1A inc al F000:8E1C inc al F000:8E1E mov ds:1038h, al F000:8E21 F000:8E21 loc_F8E21: ; CODE XREF: F000:8DF2j F000:8E21 ; F000:8DF9j F000:8E21 dec word ptr ds:1032h F000:8E25 jnz short loc_F8DE8 F000:8E27 stc F000:8E28 F000:8E28 locret_F8E28: ; CODE XREF: F000:8E15j F000:8E28 retn F000:8E28 ; --------------------------------------------------------------------------- F000:8E29 aRequestHandsha db '- Request handshake -' F000:8E3E F000:8E3E ; =============== S U B R O U T I N E ======================================= F000:8E3E F000:8E3E F000:8E3E sub_F8E3E proc near ; CODE XREF: F000:8E12p F000:8E3E mov bx, di F000:8E40 inc di F000:8E41 inc di F000:8E42 mov cx, [bx] F000:8E44 push di F000:8E45 add di, cx F000:8E47 mov [di], al F000:8E49 pop di F000:8E4A inc word ptr [bx] F000:8E4C mov si, 8E29h F000:8E4F inc cx F000:8E50 push cx F000:8E51 repe cmps byte ptr cs:[si], byte ptr es:[di] F000:8E54 pop cx F000:8E55 jz short loc_F8E65 F000:8E57 cmp cx, 2 F000:8E5A jbe short loc_F8E5D F000:8E5C nop F000:8E5D F000:8E5D loc_F8E5D: ; CODE XREF: sub_F8E3E+1Cj F000:8E5D mov word ptr [bx], 1 F000:8E61 mov [bx+2], al F000:8E64 retn F000:8E65 ; --------------------------------------------------------------------------- F000:8E65 F000:8E65 loc_F8E65: ; CODE XREF: sub_F8E3E+17j F000:8E65 cmp cx, 15h F000:8E68 retn F000:8E68 sub_F8E3E endp F000:8E68 F000:8E69 F000:8E69 ; =============== S U B R O U T I N E ======================================= F000:8E69 F000:8E69 F000:8E69 sub_F8E69 proc near F000:8E69 pushad F000:8E6B mov dx, 378h F000:8E6E xor bl, bl F000:8E70 F000:8E70 loc_F8E70: ; CODE XREF: sub_F8E69+28j F000:8E70 call sub_F8E96 F000:8E73 add dword ptr ds:0EB5h, 200h F000:8E7C test dword ptr ds:0EB5h, 1FFFh F000:8E85 jnz short loc_F8E8A F000:8E87 call sub_F90F8 F000:8E8A F000:8E8A loc_F8E8A: ; CODE XREF: sub_F8E69+1Cj F000:8E8A sub ecx, 200h F000:8E91 ja short loc_F8E70 F000:8E93 popad F000:8E95 retn F000:8E95 sub_F8E69 endp F000:8E95 F000:8E96 F000:8E96 ; =============== S U B R O U T I N E ======================================= F000:8E96 F000:8E96 F000:8E96 sub_F8E96 proc near ; CODE XREF: sub_F8E69:loc_F8E70p F000:8E96 ; sub_F8E96+B4j F000:8E96 push ecx F000:8E98 cmp ecx, 200h F000:8E9F jbe short loc_F8EA7 F000:8EA1 mov ecx, 200h F000:8EA7 F000:8EA7 loc_F8EA7: ; CODE XREF: sub_F8E96+9j F000:8EA7 add ecx, 4 F000:8EAB mov ds:102Eh, ecx F000:8EB0 F000:8EB0 loc_F8EB0: ; CODE XREF: sub_F8E96+34j F000:8EB0 call sub_F8F71 F000:8EB3 ror ax, 7 F000:8EB6 mov al, 0FFh F000:8EB8 out dx, al F000:8EB9 call sub_F8F7B F000:8EBC shr al, 3 F000:8EBF ror ax, 4 F000:8EC2 mov al, 0EFh ; '´' F000:8EC4 out dx, al F000:8EC5 mov [edi], ah F000:8EC8 inc edi F000:8ECA loop loc_F8EB0 F000:8ECC mov al, 58h ; 'X' F000:8ECE call sub_F8F85 F000:8ED1 mov al, 4Dh ; 'M' F000:8ED3 call sub_F8F85 F000:8ED6 mov al, 49h ; 'I' F000:8ED8 call sub_F8F85 F000:8EDB mov al, 54h ; 'T' F000:8EDD call sub_F8F85 F000:8EE0 mov ecx, ds:102Eh F000:8EE5 push edi F000:8EE7 sub edi, ecx F000:8EEA xor eax, eax F000:8EED shr ecx, 2 F000:8EF1 F000:8EF1 loc_F8EF1: ; CODE XREF: sub_F8E96+63j F000:8EF1 add eax, [edi] F000:8EF5 add edi, 4 F000:8EF9 loop loc_F8EF1 F000:8EFB mov ecx, ds:102Eh F000:8F00 and ecx, 3 F000:8F04 jz short loc_F8F15 F000:8F06 sub edi, 4 F000:8F0A sub eax, [edi] F000:8F0E add edi, ecx F000:8F11 add eax, [edi] F000:8F15 F000:8F15 loc_F8F15: ; CODE XREF: sub_F8E96+6Ej F000:8F15 pop edi F000:8F17 and eax, eax F000:8F1A jnz short loc_F8F35 F000:8F1C inc byte ptr ds:0FB6h F000:8F20 mov al, ds:0FB6h F000:8F23 call sub_F8F85 F000:8F26 mov al, ds:0FB6h F000:8F29 not al F000:8F2B call sub_F8F85 F000:8F2E sub edi, 4 F000:8F32 pop ecx F000:8F34 retn F000:8F35 ; --------------------------------------------------------------------------- F000:8F35 F000:8F35 loc_F8F35: ; CODE XREF: sub_F8E96+84j F000:8F35 mov al, ds:0FB6h F000:8F38 call sub_F8F85 F000:8F3B mov al, ds:0FB6h F000:8F3E not al F000:8F40 call sub_F8F85 F000:8F43 sub edi, ds:102Eh F000:8F48 pop ecx F000:8F4A jmp sub_F8E96 F000:8F4A sub_F8E96 endp F000:8F4A F000:8F4D ; --------------------------------------------------------------------------- F000:8F4D call sub_F8F71 F000:8F50 ror ax, 7 F000:8F53 mov al, 0FFh F000:8F55 out dx, al F000:8F56 call sub_F8F7B F000:8F59 shr al, 3 F000:8F5C ror ax, 4 F000:8F5F mov al, 0EFh ; '´' F000:8F61 out dx, al F000:8F62 retn F000:8F63 F000:8F63 ; =============== S U B R O U T I N E ======================================= F000:8F63 F000:8F63 F000:8F63 sub_F8F63 proc near ; CODE XREF: sub_F8F85+Dp F000:8F63 and al, 0EFh F000:8F65 out dx, al F000:8F66 or al, 10h F000:8F68 out dx, al F000:8F69 retn F000:8F69 sub_F8F63 endp F000:8F69 F000:8F6A F000:8F6A ; =============== S U B R O U T I N E ======================================= F000:8F6A F000:8F6A F000:8F6A sub_F8F6A proc near ; CODE XREF: sub_F8F85+15p F000:8F6A or al, 10h F000:8F6C out dx, al F000:8F6D and al, 0EFh F000:8F6F out dx, al F000:8F70 retn F000:8F70 sub_F8F6A endp F000:8F70 F000:8F71 F000:8F71 ; =============== S U B R O U T I N E ======================================= F000:8F71 F000:8F71 F000:8F71 sub_F8F71 proc near ; CODE XREF: sub_F8E96:loc_F8EB0p F000:8F71 ; F000:8F4Dp ... F000:8F71 mov dl, 79h ; 'y' F000:8F73 F000:8F73 loc_F8F73: ; CODE XREF: sub_F8F71+5j F000:8F73 in al, dx F000:8F74 and al, al F000:8F76 js short loc_F8F73 F000:8F78 mov dl, 78h ; 'x' F000:8F7A retn F000:8F7A sub_F8F71 endp F000:8F7A F000:8F7B F000:8F7B ; =============== S U B R O U T I N E ======================================= F000:8F7B F000:8F7B F000:8F7B sub_F8F7B proc near ; CODE XREF: sub_F8E96+23p F000:8F7B ; F000:8F56p ... F000:8F7B mov dl, 79h ; 'y' F000:8F7D F000:8F7D loc_F8F7D: ; CODE XREF: sub_F8F7B+5j F000:8F7D in al, dx F000:8F7E and al, al F000:8F80 jns short loc_F8F7D F000:8F82 mov dl, 78h ; 'x' F000:8F84 retn F000:8F84 sub_F8F7B endp F000:8F84 F000:8F85 F000:8F85 ; =============== S U B R O U T I N E ======================================= F000:8F85 F000:8F85 F000:8F85 sub_F8F85 proc near ; CODE XREF: sub_F8E96+38p F000:8F85 ; sub_F8E96+3Dp ... F000:8F85 mov dx, 378h F000:8F88 mov ah, al F000:8F8A call sub_F8F71 F000:8F8D mov al, ah F000:8F8F shr ah, 4 F000:8F92 call sub_F8F63 F000:8F95 call sub_F8F7B F000:8F98 mov al, ah F000:8F9A call sub_F8F6A F000:8F9D retn F000:8F9D sub_F8F85 endp F000:8F9D F000:8F9E F000:8F9E ; =============== S U B R O U T I N E ======================================= F000:8F9E F000:8F9E F000:8F9E sub_F8F9E proc near ; CODE XREF: F000:884Cp F000:8F9E ; F000:8D39p ... F000:8F9E mov dl, 0FDh ; 'ø' F000:8FA0 mov ah, al F000:8FA2 F000:8FA2 loc_F8FA2: ; CODE XREF: sub_F8F9E+7j F000:8FA2 in al, dx F000:8FA3 test al, 20h F000:8FA5 jz short loc_F8FA2 F000:8FA7 mov al, ah F000:8FA9 mov dl, 0F8h ; '°' F000:8FAB out dx, al F000:8FAC retn F000:8FAC sub_F8F9E endp F000:8FAC F000:8FAD F000:8FAD ; =============== S U B R O U T I N E ======================================= F000:8FAD F000:8FAD F000:8FAD sub_F8FAD proc near F000:8FAD pushad F000:8FAF push ds F000:8FB0 push es F000:8FB1 mov ax, 18h F000:8FB4 mov ds, ax F000:8FB6 assume ds:nothing F000:8FB6 mov es, ax F000:8FB8 assume es:nothing F000:8FB8 mov dx, ds:1011h F000:8FBC F000:8FBC loc_F8FBC: ; CODE XREF: sub_F8FAD+26j F000:8FBC mov dl, 0FAh ; 'ÿ' F000:8FBE in al, dx F000:8FBF test al, 1 F000:8FC1 jz short loc_F8FCC F000:8FC3 jmp short loc_F8FD5 F000:8FC5 ; --------------------------------------------------------------------------- F000:8FC5 F000:8FC5 loc_F8FC5: ; CODE XREF: sub_F8FAD+24j F000:8FC5 mov dl, 0F8h ; '°' F000:8FC7 in al, dx F000:8FC8 call word ptr ds:1028h F000:8FCC F000:8FCC loc_F8FCC: ; CODE XREF: sub_F8FAD+14j F000:8FCC mov dl, 0FDh ; 'ø' F000:8FCE in al, dx F000:8FCF test al, 1 F000:8FD1 jnz short loc_F8FC5 F000:8FD3 jmp short loc_F8FBC F000:8FD5 ; --------------------------------------------------------------------------- F000:8FD5 F000:8FD5 loc_F8FD5: ; CODE XREF: sub_F8FAD+16j F000:8FD5 mov al, 20h ; ' ' F000:8FD7 out 20h, al ; Interrupt controller, 8259A. F000:8FD9 pop es F000:8FDA assume es:nothing F000:8FDA pop ds F000:8FDB assume ds:nothing F000:8FDB popad F000:8FDD iretd F000:8FDD sub_F8FAD endp F000:8FDD F000:8FDF ; --------------------------------------------------------------------------- F000:8FDF mov word ptr ds:1028h, 9001h F000:8FE5 cmp al, 1 F000:8FE7 jz loc_F9076 F000:8FEB cmp al, 4 F000:8FED jnz short loc_F900C F000:8FEF mov word ptr ds:1028h, 9014h F000:8FF5 mov dl, 0F9h ; '¨' F000:8FF7 xor al, al F000:8FF9 out dx, al F000:8FFA mov dl, 0FCh ; 'Ø' F000:8FFC out dx, al F000:8FFD mov al, 6 F000:8FFF jmp short sub_F8F9E F000:9001 ; --------------------------------------------------------------------------- F000:9001 mov word ptr ds:1028h, 9015h F000:9007 mov ds:1026h, al F000:900A jmp short loc_F9076 F000:900C ; --------------------------------------------------------------------------- F000:900C F000:900C loc_F900C: ; CODE XREF: F000:8FEDj F000:900C ; F000:902Bj ... F000:900C mov word ptr ds:1028h, 9014h F000:9012 jmp short loc_F9076 F000:9014 ; --------------------------------------------------------------------------- F000:9014 retn F000:9015 ; --------------------------------------------------------------------------- F000:9015 mov word ptr ds:1028h, 9053h F000:901B xor ah, ah F000:901D mov ds:1027h, ah F000:9021 mov ds:1025h, ah F000:9025 not al F000:9027 cmp al, ds:1026h F000:902B jnz short loc_F900C F000:902D cmp al, ds:0FB6h F000:9031 jz short loc_F9076 F000:9033 ja short loc_F900C F000:9035 inc al F000:9037 cmp al, ds:0FB6h F000:903B jnz short loc_F900C F000:903D dec byte ptr ds:0FB6h F000:9041 mov eax, 80h ; 'Ç' F000:9047 sub ds:1013h, eax F000:904C sub ds:1017h, eax F000:9051 jmp short loc_F9076 F000:9053 ; --------------------------------------------------------------------------- F000:9053 mov edi, ds:1013h F000:9058 stos byte ptr es:[edi] F000:905A mov ds:1013h, edi F000:905F add ds:1027h, al F000:9063 inc byte ptr ds:1025h F000:9067 cmp byte ptr ds:1025h, 80h ; 'Ç' F000:906C jb short loc_F9074 F000:906E mov word ptr ds:1028h, 9087h F000:9074 F000:9074 loc_F9074: ; CODE XREF: F000:906Cj F000:9074 jmp short $+2 F000:9076 F000:9076 loc_F9076: ; CODE XREF: F000:8FE7j F000:9076 ; F000:900Aj ... F000:9076 mov ebx, 12h F000:907C F000:907C ; =============== S U B R O U T I N E ======================================= F000:907C F000:907C F000:907C sub_F907C proc near ; CODE XREF: F000:8834p F000:907C ; F000:8D68p ... F000:907C add ebx, ds:1009h F000:9081 mov ds:101Fh, ebx F000:9086 retn F000:9086 sub_F907C endp F000:9086 F000:9087 ; --------------------------------------------------------------------------- F000:9087 int 0Ah ; - IRQ2 - EGA VERTICAL RETRACE F000:9089 mov word ptr ds:1028h, 8FDFh F000:908F mov byte ptr ds:1025h, 0 F000:9094 cmp al, ds:1027h F000:9098 jz short loc_F90A6 F000:909A sub dword ptr ds:1013h, 80h ; 'Ç' F000:90A3 jmp loc_F900C F000:90A6 ; --------------------------------------------------------------------------- F000:90A6 F000:90A6 loc_F90A6: ; CODE XREF: F000:9098j F000:90A6 mov byte ptr ds:1024h, 8 F000:90AB mov byte ptr ds:1023h, 0 F000:90B0 inc word ptr ds:102Ah F000:90B4 inc byte ptr ds:0FB6h F000:90B8 add dword ptr ds:1017h, 80h ; 'Ç' F000:90C1 mov ebx, ds:0FB2h F000:90C6 cmp ds:1013h, ebx F000:90CB jb short loc_F90D6 F000:90CD mov dword ptr ds:1013h, 140000h F000:90D6 F000:90D6 loc_F90D6: ; CODE XREF: F000:90CBj F000:90D6 mov al, 6 F000:90D8 call sub_F8F9E F000:90DB mov ebx, 24h ; '$' F000:90E1 jmp short sub_F907C F000:90E3 F000:90E3 ; =============== S U B R O U T I N E ======================================= F000:90E3 F000:90E3 F000:90E3 sub_F90E3 proc near ; CODE XREF: F000:87B3p F000:90E3 ; F000:loc_F8D5Fp F000:90E3 mov al, 83h ; 'â' F000:90E5 mov dl, 0FBh ; 'û' F000:90E7 out dx, al F000:90E8 mov al, bl F000:90EA mov dl, 0F8h ; '°' F000:90EC out dx, al F000:90ED mov al, bh F000:90EF mov dl, 0F9h ; '¨' F000:90F1 out dx, al F000:90F2 mov al, 3 F000:90F4 mov dl, 0FBh ; 'û' F000:90F6 out dx, al F000:90F7 retn F000:90F7 sub_F90E3 endp F000:90F7 F000:90F8 F000:90F8 ; =============== S U B R O U T I N E ======================================= F000:90F8 F000:90F8 F000:90F8 sub_F90F8 proc near ; CODE XREF: sub_F38B1+11Fp F000:90F8 ; sub_F38B1+132p ... F000:90F8 pushad F000:90FA push es F000:90FB mov si, 18h F000:90FE mov es, si F000:9100 assume es:nothing F000:9100 mov ebx, ds:10B5h F000:9105 mov esi, 0E91h F000:910B call sub_F990D F000:910E pop es F000:910F assume es:nothing F000:910F popad F000:9111 retn F000:9111 sub_F90F8 endp F000:9111 F000:9112 F000:9112 ; =============== S U B R O U T I N E ======================================= F000:9112 F000:9112 F000:9112 sub_F9112 proc near ; CODE XREF: F000:7D6Fp F000:9112 ; F000:7EF2p ... F000:9112 mov dword ptr ds:0EADh, 0 F000:911B mov dword ptr ds:0EB5h, 0 F000:9124 mov word ptr ds:0E95h, 140h F000:912A mov word ptr ds:0E97h, 0FAh ; 'ÿ' F000:9130 mov word ptr ds:0E99h, 7A10h F000:9136 mov dword ptr ds:0E9Bh, 0 F000:913F mov edi, 0E91h F000:9145 mov esi, 7A21h F000:914B call sub_F96CB F000:914E mov ds:10B9h, ebx F000:9153 call sub_F968E F000:9156 mov ds:10B5h, ebx F000:915B mov byte ptr [ebx+4], 6 F000:9160 mov word ptr [ebx+0Ah], 0EADh F000:9166 mov byte ptr [ebx+5], 0 F000:916B mov esi, 0E91h F000:9171 call sub_F975A F000:9174 retn F000:9174 sub_F9112 endp F000:9174 F000:9175 F000:9175 ; =============== S U B R O U T I N E ======================================= F000:9175 F000:9175 F000:9175 sub_F9175 proc near ; CODE XREF: sub_F896D:loc_F8A52p F000:9175 xor esi, esi F000:9178 xor edx, edx F000:917B F000:917B loc_F917B: ; CODE XREF: sub_F9175+A8j F000:917B push esi F000:917D call sub_F799D F000:9180 pop esi F000:9182 jb locret_F9220 F000:9186 call sub_F8CB4 F000:9189 mov edi, 20000h F000:918F jnb short loc_F9197 F000:9191 mov edi, 10000h F000:9197 F000:9197 loc_F9197: ; CODE XREF: sub_F9175+1Aj F000:9197 mov ebx, ds:0FF5h F000:919C F000:919C loc_F919C: ; CODE XREF: sub_F9175+A4j F000:919C movzx ecx, word ptr [ebx] F000:91A1 jecxz loc_F921B F000:91A4 xor al, al F000:91A6 cmp dword ptr ds:0FEDh, 1 F000:91AC jb short loc_F91B2 F000:91AE mov al, [ebx+19h] F000:91B2 F000:91B2 loc_F91B2: ; CODE XREF: sub_F9175+37j F000:91B2 sub al, 1 F000:91B4 jb short loc_F91BC F000:91B6 cmp al, dl F000:91B8 jnz short loc_F9216 F000:91BA jmp short loc_F91C8 F000:91BC ; --------------------------------------------------------------------------- F000:91BC F000:91BC loc_F91BC: ; CODE XREF: sub_F9175+3Fj F000:91BC cmp dl, 1 F000:91BF ja short loc_F9216 F000:91C1 test [ebx+3], edi F000:91C6 jz short loc_F9216 F000:91C8 F000:91C8 loc_F91C8: ; CODE XREF: sub_F9175+45j F000:91C8 mov eax, [ebx+0Bh] F000:91CD add esi, eax F000:91D0 pushad F000:91D2 mov edi, ebx F000:91D5 add edi, ecx F000:91D8 mov esi, 0D060h F000:91DE movzx ecx, byte ptr [ebx+2] F000:91E4 sub edi, ecx F000:91E7 push ds F000:91E8 push cs F000:91E9 pop ds F000:91EA assume ds:BIOS_F000 F000:91EA call sub_F61EE F000:91ED pop ds F000:91EE assume ds:nothing F000:91EE popad F000:91F0 jz short loc_F9216 F000:91F2 cmp dl, 0 F000:91F5 jz short loc_F9216 F000:91F7 push edx F000:91F9 xor edx, edx F000:91FC div dword ptr fs:0F18h F000:9202 and edx, edx F000:9205 jz short loc_F9209 F000:9207 inc eax F000:9209 F000:9209 loc_F9209: ; CODE XREF: sub_F9175+90j F000:9209 pop edx F000:920B inc eax F000:920D sub ds:10A1h[edx*4], eax F000:9216 F000:9216 loc_F9216: ; CODE XREF: sub_F9175+43j F000:9216 ; sub_F9175+4Aj ... F000:9216 add ebx, ecx F000:9219 jmp short loc_F919C F000:921B ; --------------------------------------------------------------------------- F000:921B F000:921B loc_F921B: ; CODE XREF: sub_F9175+2Cj F000:921B inc dl F000:921D jmp loc_F917B F000:9220 ; --------------------------------------------------------------------------- F000:9220 F000:9220 locret_F9220: ; CODE XREF: sub_F9175+Dj F000:9220 retn F000:9220 sub_F9175 endp F000:9220 F000:9220 ; --------------------------------------------------------------------------- F000:9221 db 0Fh dup(0) F000:9230 F000:9230 ; =============== S U B R O U T I N E ======================================= F000:9230 F000:9230 F000:9230 SET_IDE2 proc near ; CODE XREF: F000:2EE3p F000:9230 mov bx, 9204h F000:9233 call PCI_READ_BX_DX ; PCI bus 0, dev 12h, func 2, reg 4 (CS5530 IDE interface) F000:9236 mov al, 0FFh F000:9238 call PCI_WRITE_BX_EAX F000:923B mov bx, 9204h ; PCI bus 0, dev 12h, func 2, reg 4 (CS5530 IDE interface) F000:923E call PCI_READ_BX_DX F000:9241 mov bx, 9220h ; PCI bus 0, dev 12h, func 2, reg 20h (CS5530 IDE interface) F000:9244 mov eax, 0FB00h F000:924A call PCI_WRITE_BX_EAX F000:924D mov bx, 9220h ; PCI bus 0, dev 12h, func 2, reg 20h (CS5530 IDE interface) F000:9250 call PCI_READ_BX_DX F000:9253 mov bx, 9044h ; PCI bus 0, dev 12h, func 0, reg 44h (CS5530 bridge) F000:9256 call PCI_READ_BX_DX F000:9259 mov al, 8 F000:925B call PCI_WRITE_BX_EAX F000:925E mov al, 0 F000:9260 call PCI_WRITE_BX_EAX F000:9263 mov eax, 40010h F000:9269 mov dx, 0FB20h F000:926C out dx, eax F000:926E mov dx, 0FB28h F000:9271 out dx, eax F000:9273 mov dx, 0FB30h F000:9276 out dx, eax F000:9278 mov dx, 0FB38h F000:927B out dx, eax F000:927D mov bx, 9044h ; PCI bus 0, dev 12h, func 0, reg 44h (CS5530 bridge) F000:9280 call PCI_READ_BX_DX F000:9283 mov al, 4 F000:9285 call PCI_WRITE_BX_EAX F000:9288 mov al, 0 F000:928A call PCI_WRITE_BX_EAX F000:928D mov bx, 9058h ; PCI bus 0, dev 12h, func 0, reg 58h (CS5530 bridge) F000:9290 call PCI_READ_BX_DX F000:9293 or eax, 8000000h F000:9299 call PCI_WRITE_BX_EAX F000:929C mov dx, 1F3h F000:929F xor al, al F000:92A1 out dx, al ; AT hard disk controller: F000:92A1 ; Sector number. F000:92A1 ; Read/Write current/starting logical sector number F000:92A2 mov dx, 1F4h F000:92A5 mov al, 0FFh F000:92A7 out dx, al ; AT hard disk controller: F000:92A7 ; Cylinder high (bits 0-1 are bits 8-9 of 10-bit cylinder number) F000:92A8 mov dx, 1F3h F000:92AB xor al, al F000:92AD out dx, al ; AT hard disk controller: F000:92AD ; Sector number. F000:92AD ; Read/Write current/starting logical sector number F000:92AE mov dx, 1F5h F000:92B1 mov al, 0FFh F000:92B3 out dx, al ; AT hard disk controller: F000:92B3 ; Cylinder low (bits 0-7 of 10-bit cylinder number) F000:92B4 mov dx, 1F3h F000:92B7 xor al, al F000:92B9 out dx, al ; AT hard disk controller: F000:92B9 ; Sector number. F000:92B9 ; Read/Write current/starting logical sector number F000:92BA mov dx, 1F6h F000:92BD mov al, 0FFh F000:92BF out dx, al ; AT hard disk controller: F000:92BF ; Drive & Head. F000:92BF ; Read/Write: bits indicate head, drive for operation F000:92C0 mov dx, 1F3h F000:92C3 xor al, al F000:92C5 out dx, al ; AT hard disk controller: F000:92C5 ; Sector number. F000:92C5 ; Read/Write current/starting logical sector number F000:92C6 mov al, 90h ; 'É' F000:92C8 mov dx, 1F4h F000:92CB out dx, al ; AT hard disk controller: F000:92CB ; Cylinder high (bits 0-1 are bits 8-9 of 10-bit cylinder number) F000:92CC xor al, al F000:92CE mov dl, 0F1h ; '½' F000:92D0 out dx, al ; AT hard disk controller F000:92D0 ; Write Precompensation register. F000:92D0 ; Turn on write precompensation. F000:92D1 mov dl, 0F2h ; '²' F000:92D3 out dx, al ; AT hard disk controller: F000:92D3 ; Sector count. F000:92D3 ; Read/Write count of sectors for operation F000:92D4 mov dl, 0F7h ; '¸' F000:92D6 in al, dx ; AT hard disk F000:92D6 ; status register bits: F000:92D6 ; 0: 1=prev cmd error F000:92D6 ; 2: Corrected data F000:92D6 ; 3: Data Request. Buffer is busy F000:92D6 ; 4: Seek completed F000:92D6 ; 5: Write fault F000:92D6 ; 6: Drive ready (unless bit 4=0) F000:92D6 ; 7: Busy F000:92D7 in al, dx ; AT hard disk F000:92D7 ; status register bits: F000:92D7 ; 0: 1=prev cmd error F000:92D7 ; 2: Corrected data F000:92D7 ; 3: Data Request. Buffer is busy F000:92D7 ; 4: Seek completed F000:92D7 ; 5: Write fault F000:92D7 ; 6: Drive ready (unless bit 4=0) F000:92D7 ; 7: Busy F000:92D8 mov dl, 0F3h ; '¡' F000:92DA out dx, al ; AT hard disk controller: F000:92DA ; Sector number. F000:92DA ; Read/Write current/starting logical sector number F000:92DB retn F000:92DB SET_IDE2 endp F000:92DB F000:92DB ; --------------------------------------------------------------------------- F000:92DC db 4 dup(0) F000:92E0 aLeo_code db 'LEO_CODE',0 F000:92E9 aFirmwareUpgr_0 db 'Firmware Upgrade',0 F000:92FA aReceivingDat_0 db 'Receiving data... ',0Ah,0 F000:930F aErasingFlash_0 db 'Erasing flash... ',0 F000:9323 aWritingToFla_0 db 'Writing to flash...',0 F000:9337 db ' ',0 F000:934B aDone__0 db 'Done. ',0 F000:935F aDone_BootBlo_2 db 'Done. (Boot block updated.)',0 F000:937C aDone_BootBlo_3 db 'Done. (Boot block is at current rev.)',0 F000:93A3 aDone_BootBlo_4 db 'Done. (Boot block not updated.)',0 F000:93C4 aDownloadFail_0 db 'Download failed.',0 F000:93D5 aNandFlashMem_0 db 'NAND Flash Memory Verification',0 F000:93F4 aTesting____0 db 'Testing...',0Ah,0 F000:9400 aInvalidFirmw_0 db 'Invalid Firmware Image',0 F000:9417 aTheNewFirmwa_0 db 'The new firmware image is not valid for this terminal.',0Ah,0 F000:944F aInsufficient_0 db 'Insufficient Flash Memory',0 F000:9469 aThereIsInsuf_0 db 'There is insufficient flash memory to complete the requested down' F000:9469 db 'load.',0Ah F000:9469 db 0Ah F000:9469 db '(No changes have been made.)',0Ah,0 F000:94CF aTerminalSelfTe db 'Terminal Self Test',0 F000:94E2 aTheInternalDia db 'The internal diagnostics have detected a problem.',0Ah F000:94E2 db 0Ah,0 F000:9516 db 0Ah F000:9517 db 0Ah F000:9518 aThisIsAHardwar db 'This is a hardware problem. If the problem occurs every time the' F000:9518 db ' terminal is turned on, the terminal must be serviced to correct ' F000:9518 db 'the problem.',0 F000:95A7 F000:95A7 ; =============== S U B R O U T I N E ======================================= F000:95A7 F000:95A7 ; Attributes: noreturn F000:95A7 F000:95A7 sub_F95A7 proc near ; CODE XREF: F000:loc_F5C80p F000:95A7 ; F000:8612j ... F000:95A7 mov word ptr ds:0EA3h, 140h F000:95AD mov ds:0EA7h, ax F000:95B0 mov dword ptr ds:0EA9h, 0 F000:95B9 mov edi, 0E9Fh F000:95BF push large [dword ptr ds:704h] F000:95C4 call sub_F96CB F000:95C7 mov esi, 0E9Fh F000:95CD call sub_F9620 F000:95CD sub_F95A7 endp F000:95CD F000:95CD ; --------------------------------------------------------------------------- F000:95D0 db 66h ; f F000:95D1 db 8Fh ; Æ F000:95D2 db 6 F000:95D3 db 4 F000:95D4 db 7 F000:95D5 db 0C3h ; + F000:95D6 F000:95D6 ; =============== S U B R O U T I N E ======================================= F000:95D6 F000:95D6 ; Attributes: noreturn F000:95D6 F000:95D6 sub_F95D6 proc near ; CODE XREF: sub_F5C84p F000:95D6 push esi F000:95D8 mov word ptr ds:0E9Fh, 0 F000:95DE mov word ptr ds:0EA1h, 0 F000:95E4 mov word ptr ds:0EA3h, 140h F000:95EA mov word ptr ds:0EA7h, 94CFh F000:95F0 mov dword ptr ds:0EA9h, 0 F000:95F9 mov edi, 0E9Fh F000:95FF mov esi, 94E2h F000:9605 call sub_F96CB F000:9608 pop esi F000:960A call sub_F96CB F000:960D mov esi, 9516h F000:9613 call sub_F96CB F000:9616 mov esi, 0E9Fh F000:961C call sub_F9620 F000:961C sub_F95D6 endp F000:961C F000:961C ; --------------------------------------------------------------------------- F000:961F db 0C3h ; + F000:9620 F000:9620 ; =============== S U B R O U T I N E ======================================= F000:9620 F000:9620 ; Attributes: noreturn F000:9620 F000:9620 sub_F9620 proc near ; CODE XREF: sub_F95A7+26p F000:9620 ; sub_F95D6+46p F000:9620 call sub_F975A F000:9623 F000:9623 loc_F9623: ; CODE XREF: sub_F9620:loc_F9623j F000:9623 jmp short loc_F9623 F000:9623 sub_F9620 endp F000:9623 F000:9625 F000:9625 ; =============== S U B R O U T I N E ======================================= F000:9625 F000:9625 F000:9625 sub_F9625 proc near ; CODE XREF: sub_F680B+18p F000:9625 mov dword ptr ds:0EC5h, 0 F000:962E mov dword ptr ds:0EBDh, 0 F000:9637 mov word ptr ds:0ED1h, 140h F000:963D mov word ptr ds:0ED3h, 0FAh ; 'ÿ' F000:9643 mov word ptr ds:0ECFh, 154h F000:9649 mov word ptr ds:0ED5h, 93D5h F000:964F mov dword ptr ds:0ED7h, 0 F000:9658 mov edi, 0ECDh F000:965E mov esi, 93F4h F000:9664 call sub_F96CB F000:9667 mov ds:0EDBh, ebx F000:966C call sub_F968E F000:966F mov ds:0D82h, ebx F000:9674 mov byte ptr [ebx+4], 6 F000:9679 mov word ptr [ebx+0Ah], 0EBDh F000:967F mov byte ptr [ebx+5], 1 F000:9684 mov esi, 0ECDh F000:968A call sub_F975A F000:968D retn F000:968D sub_F9625 endp F000:968D F000:968E F000:968E ; =============== S U B R O U T I N E ======================================= F000:968E F000:968E F000:968E sub_F968E proc near ; CODE XREF: sub_F3821+4Bp F000:968E ; sub_F4D6A+5Fp ... F000:968E push edi F000:9690 mov ebx, ds:704h F000:9695 add dword ptr ds:704h, 0Ch F000:969B cmp dword ptr [edi+0Ah], 0 F000:96A1 jz short loc_F96BB F000:96A3 mov edi, [edi+0Ah] F000:96A8 F000:96A8 loc_F96A8: ; CODE XREF: sub_F968E+25j F000:96A8 cmp dword ptr [edi], 0 F000:96AD jz short loc_F96B5 F000:96AF mov edi, [edi] F000:96B3 jmp short loc_F96A8 F000:96B5 ; --------------------------------------------------------------------------- F000:96B5 F000:96B5 loc_F96B5: ; CODE XREF: sub_F968E+1Fj F000:96B5 mov [edi], ebx F000:96B9 jmp short loc_F96C0 F000:96BB ; --------------------------------------------------------------------------- F000:96BB F000:96BB loc_F96BB: ; CODE XREF: sub_F968E+13j F000:96BB mov [edi+0Ah], ebx F000:96C0 F000:96C0 loc_F96C0: ; CODE XREF: sub_F968E+2Bj F000:96C0 mov dword ptr [ebx], 0 F000:96C8 pop edi F000:96CA retn F000:96CA sub_F968E endp F000:96CA F000:96CB F000:96CB ; =============== S U B R O U T I N E ======================================= F000:96CB F000:96CB F000:96CB sub_F96CB proc near ; CODE XREF: sub_F3821+43p F000:96CB ; sub_F4CE8+30p ... F000:96CB call sub_F968E F000:96CE mov byte ptr [ebx+4], 0 F000:96D3 mov [ebx+0Ah], si F000:96D7 retn F000:96D7 sub_F96CB endp F000:96D7 F000:96D8 F000:96D8 ; =============== S U B R O U T I N E ======================================= F000:96D8 F000:96D8 F000:96D8 sub_F96D8 proc near ; CODE XREF: sub_F680B+CDp F000:96D8 pushad F000:96DA push es F000:96DB mov bx, 18h F000:96DE mov es, bx F000:96E0 assume es:nothing F000:96E0 mov esi, 0ECDh F000:96E6 mov ebx, ds:0EDBh F000:96EB mov [ebx+0Ah], ax F000:96EF call sub_F990D F000:96F2 pop es F000:96F3 assume es:nothing F000:96F3 popad F000:96F5 retn F000:96F5 sub_F96D8 endp F000:96F5 F000:96F6 F000:96F6 ; =============== S U B R O U T I N E ======================================= F000:96F6 F000:96F6 F000:96F6 sub_F96F6 proc near ; CODE XREF: sub_F990D+Fp F000:96F6 ; sub_F990D+61p ... F000:96F6 push eax F000:96F8 push edx F000:96FA add ax, [esi+2] F000:96FE add ax, 20h ; ' ' F000:9701 add dx, [esi] F000:9704 add dx, 8 F000:9707 call sub_F970F F000:970A pop edx F000:970C pop eax F000:970E retn F000:970E sub_F96F6 endp F000:970E F000:970F F000:970F ; =============== S U B R O U T I N E ======================================= F000:970F F000:970F F000:970F sub_F970F proc near ; CODE XREF: sub_F96F6+11p F000:970F ; sub_F975A+EEp ... F000:970F push ebx F000:9711 movzx edi, dx F000:9715 movzx eax, ax F000:9719 mov ebx, fs:14E8h F000:971F mul ebx F000:9722 add edi, eax F000:9725 add edi, 40800000h F000:972C pop ebx F000:972E retn F000:972E sub_F970F endp F000:972E F000:972F F000:972F ; =============== S U B R O U T I N E ======================================= F000:972F F000:972F F000:972F sub_F972F proc near ; CODE XREF: sub_F9745+2p F000:972F mov eax, edi F000:9732 sub eax, 40800000h F000:9738 xor edx, edx F000:973B mov ebx, fs:14E8h F000:9741 div ebx F000:9744 retn F000:9744 sub_F972F endp F000:9744 F000:9745 F000:9745 ; =============== S U B R O U T I N E ======================================= F000:9745 F000:9745 F000:9745 sub_F9745 proc near ; CODE XREF: sub_F990D+59p F000:9745 push ebx F000:9747 call sub_F972F F000:974A pop ebx F000:974C sub ax, [esi+2] F000:9750 sub ax, 20h ; ' ' F000:9753 sub dx, [esi] F000:9756 sub dx, 8 F000:9759 retn F000:9759 sub_F9745 endp F000:9759 F000:975A F000:975A ; =============== S U B R O U T I N E ======================================= F000:975A F000:975A F000:975A sub_F975A proc near ; CODE XREF: sub_F3821+69p F000:975A ; sub_F4CE8+39p ... F000:975A push es F000:975B push esi F000:975D mov bp, 18h F000:9760 mov es, bp F000:9762 assume es:nothing F000:9762 mov word ptr ds:0EDFh, 3 F000:9768 mov bp, [esi+4] F000:976C shr bp, 3 F000:976F mov ebx, [esi+0Ah] F000:9774 mov word ptr ds:0EE1h, 0 F000:977A mov word ptr ds:0EE3h, 0 F000:9780 F000:9780 loc_F9780: ; CODE XREF: sub_F975A+A2j F000:9780 mov ax, ds:0EE1h F000:9783 shl ax, 3 F000:9786 mov [ebx+6], ax F000:978A mov ax, ds:0EE3h F000:978D mov [ebx+8], ax F000:9791 mov si, [ebx+0Ah] F000:9795 movzx di, byte ptr [ebx+4] F000:979A jmp cs:off_F979F[di] F000:979A ; --------------------------------------------------------------------------- F000:979F off_F979F dw offset loc_F97A7 ; DATA XREF: sub_F975A+40r F000:97A1 dw offset loc_F97D4 F000:97A3 dw offset loc_F97F5 F000:97A5 dw offset loc_F97DF F000:97A7 ; --------------------------------------------------------------------------- F000:97A7 F000:97A7 loc_F97A7: ; CODE XREF: sub_F975A+40j F000:97A7 ; sub_F975A+78j F000:97A7 ; DATA XREF: ... F000:97A7 call sub_F9ADB F000:97AA add si, cx F000:97AC add ds:0EE1h, cx F000:97B0 F000:97B0 loc_F97B0: ; CODE XREF: sub_F975A+5Aj F000:97B0 ; sub_F975A+5Ej F000:97B0 lods byte ptr cs:[si] F000:97B2 cmp al, 20h ; ' ' F000:97B4 jz short loc_F97B0 F000:97B6 cmp al, 9 F000:97B8 jz short loc_F97B0 F000:97BA and al, al F000:97BC jz short loc_F97F5 F000:97BE cmp al, 0Ah F000:97C0 jz short loc_F97C3 F000:97C2 dec si F000:97C3 F000:97C3 loc_F97C3: ; CODE XREF: sub_F975A+66j F000:97C3 inc word ptr ds:0EDFh F000:97C7 add word ptr ds:0EE3h, 10h F000:97CC mov word ptr ds:0EE1h, 0 F000:97D2 jmp short loc_F97A7 F000:97D4 ; --------------------------------------------------------------------------- F000:97D4 F000:97D4 loc_F97D4: ; CODE XREF: sub_F975A+40j F000:97D4 ; DATA XREF: sub_F975A+47o F000:97D4 movzx ax, byte ptr [ebx+5] F000:97D9 add ds:0EE1h, ax F000:97DD jmp short loc_F97F5 F000:97DF ; --------------------------------------------------------------------------- F000:97DF F000:97DF loc_F97DF: ; CODE XREF: sub_F975A+40j F000:97DF ; DATA XREF: sub_F975A+4Bo F000:97DF add word ptr ds:0EDFh, 3 F000:97E4 add word ptr ds:0EE3h, 30h ; '0' F000:97E9 mov word ptr [ebx+6], 28h ; '(' F000:97EF mov word ptr ds:0EE1h, 0 F000:97F5 F000:97F5 loc_F97F5: ; CODE XREF: sub_F975A+40j F000:97F5 ; sub_F975A+62j ... F000:97F5 mov ebx, [ebx] F000:97F9 and ebx, ebx F000:97FC jnz short loc_F9780 F000:97FE mov ax, 10h F000:9801 mul word ptr ds:0EDFh F000:9805 pop esi F000:9807 mov [esi+6], ax F000:980B cmp word ptr [esi], 0 F000:980F jnz short loc_F9821 F000:9811 mov eax, fs:14E8h F000:9816 sub ax, [esi+4] F000:981A shr ax, 1 F000:981C and al, 0F8h F000:981E mov [esi], ax F000:9821 F000:9821 loc_F9821: ; CODE XREF: sub_F975A+B5j F000:9821 cmp word ptr [esi+2], 0 F000:9826 jnz short loc_F9837 F000:9828 mov eax, fs:14E4h F000:982D sub ax, [esi+6] F000:9831 shr ax, 1 F000:9833 mov [esi+2], ax F000:9837 F000:9837 loc_F9837: ; CODE XREF: sub_F975A+CCj F000:9837 mov al, 0Fh F000:9839 call sub_F9AD7 F000:983C mov al, 0 F000:983E call sub_F9AD3 F000:9841 mov ax, [esi+2] F000:9845 mov dx, [esi] F000:9848 call sub_F970F F000:984B mov ax, [esi+6] F000:984F mov dx, [esi+4] F000:9853 call sub_F9BE8 F000:9856 mov bx, 0 F000:9859 mov cx, 1 F000:985C call sub_F9C05 F000:985F mov bx, 8 F000:9862 mov cx, 2 F000:9865 call sub_F9C05 F000:9868 mov bx, 8 F000:986B mov cx, 3 F000:986E call sub_F9C05 F000:9871 mov bx, 0 F000:9874 mov cx, 4 F000:9877 call sub_F9C05 F000:987A mov ax, [esi+2] F000:987E mov dx, [esi] F000:9881 call sub_F970F F000:9884 mov al, ds:10C1h F000:9887 call sub_F9AD7 F000:988A mov ax, 10h F000:988D mov dx, [esi+4] F000:9891 call sub_F9BE8 F000:9894 mov al, 0Fh F000:9896 call sub_F9AD3 F000:9899 push esi F000:989B mov ax, [esi+2] F000:989F mov dx, [esi] F000:98A2 call sub_F970F F000:98A5 push edi F000:98A7 movzx eax, word ptr [esi+4] F000:98AD mov si, [esi+8] F000:98B1 push si F000:98B2 mov cx, 0FFFFh F000:98B5 dec si F000:98B6 F000:98B6 loc_F98B6: ; CODE XREF: sub_F975A+162j F000:98B6 inc si F000:98B7 inc cx F000:98B8 cmp byte ptr cs:[si], 0 F000:98BC jnz short loc_F98B6 F000:98BE pop si F000:98BF shl cx, 3 F000:98C2 sub ax, cx F000:98C4 shr ax, 1 F000:98C6 add edi, eax F000:98C9 call sub_F9B88 F000:98CC pop edi F000:98CE pop esi F000:98D0 push edx F000:98D2 push eax F000:98D4 mov eax, fs:14E8h F000:98D9 mov edx, 10h F000:98DF mul edx F000:98E2 shl eax, 1 F000:98E5 add eax, 8 F000:98E9 add edi, eax F000:98EC pop eax F000:98EE pop edx F000:98F0 mov al, 0 F000:98F2 call sub_F9AD3 F000:98F5 mov al, 0Fh F000:98F7 call sub_F9AD7 F000:98FA mov ebx, [esi+0Ah] F000:98FF F000:98FF loc_F98FF: ; CODE XREF: sub_F975A+1AFj F000:98FF call sub_F990D F000:9902 mov ebx, [ebx] F000:9906 and ebx, ebx F000:9909 jnz short loc_F98FF F000:990B pop es F000:990C assume es:nothing F000:990C retn F000:990C sub_F975A endp F000:990C F000:990D F000:990D ; =============== S U B R O U T I N E ======================================= F000:990D F000:990D F000:990D sub_F990D proc near ; CODE XREF: sub_F388E+1Fp F000:990D ; sub_F4E12+21p ... F000:990D pushad F000:990F mov ds:0EE5h, esi F000:9914 mov ax, [ebx+8] F000:9918 mov dx, [ebx+6] F000:991C call sub_F96F6 F000:991F movzx bp, byte ptr [ebx+4] F000:9924 jmp cs:off_F9929[bp] F000:9924 ; --------------------------------------------------------------------------- F000:9929 off_F9929 dw offset loc_F9931 ; DATA XREF: sub_F990D+17r F000:992B dw offset loc_F9978 F000:992D dw offset loc_F9978 F000:992F dw offset loc_F99A5 F000:9931 ; --------------------------------------------------------------------------- F000:9931 F000:9931 loc_F9931: ; CODE XREF: sub_F990D+17j F000:9931 ; DATA XREF: sub_F990D:off_F9929o F000:9931 mov bp, [esi+4] F000:9935 shr bp, 3 F000:9938 mov si, [ebx+0Ah] F000:993C mov ds:0EE9h, si F000:9940 F000:9940 loc_F9940: ; CODE XREF: sub_F990D+66j F000:9940 call sub_F9ADB F000:9943 jcxz short loc_F994C F000:9945 F000:9945 loc_F9945: ; CODE XREF: sub_F990D+3Dj F000:9945 lods byte ptr cs:[si] F000:9947 call sub_F9B00 F000:994A loop loc_F9945 F000:994C F000:994C loc_F994C: ; CODE XREF: sub_F990D+36j F000:994C ; sub_F990D+43j ... F000:994C lods byte ptr cs:[si] F000:994E cmp al, 20h ; ' ' F000:9950 jz short loc_F994C F000:9952 cmp al, 9 F000:9954 jz short loc_F994C F000:9956 and al, al F000:9958 jz short loc_F9975 F000:995A cmp al, 0Ah F000:995C jz short loc_F995F F000:995E dec si F000:995F F000:995F loc_F995F: ; CODE XREF: sub_F990D+4Fj F000:995F push esi F000:9961 mov esi, ds:0EE5h F000:9966 call sub_F9745 F000:9969 xor dx, dx F000:996B add ax, 10h F000:996E call sub_F96F6 F000:9971 pop esi F000:9973 jmp short loc_F9940 F000:9975 ; --------------------------------------------------------------------------- F000:9975 F000:9975 loc_F9975: ; CODE XREF: sub_F990D+4Bj F000:9975 jmp loc_F9AD0 F000:9978 ; --------------------------------------------------------------------------- F000:9978 F000:9978 loc_F9978: ; CODE XREF: sub_F990D+17j F000:9978 ; DATA XREF: sub_F990D+1Eo ... F000:9978 movzx cx, byte ptr [ebx+5] F000:997D mov bx, [ebx+0Ah] F000:9981 mov ebx, [bx] F000:9984 shl cl, 2 F000:9987 ror ebx, cl F000:998A shr cl, 2 F000:998D F000:998D loc_F998D: ; CODE XREF: sub_F990D+93j F000:998D rol ebx, 4 F000:9991 mov al, bl F000:9993 and al, 0Fh F000:9995 add al, 30h ; '0' F000:9997 cmp al, 39h ; '9' F000:9999 jbe short loc_F999D F000:999B add al, 7 F000:999D F000:999D loc_F999D: ; CODE XREF: sub_F990D+8Cj F000:999D call sub_F9B00 F000:99A0 loop loc_F998D F000:99A2 jmp loc_F9AD0 F000:99A5 ; --------------------------------------------------------------------------- F000:99A5 F000:99A5 loc_F99A5: ; CODE XREF: sub_F990D+17j F000:99A5 ; DATA XREF: sub_F990D+22o F000:99A5 add ax, 0Fh F000:99A8 dec dx F000:99A9 call sub_F96F6 F000:99AC mov al, 0 F000:99AE call sub_F9AD3 F000:99B1 mov ax, 22h ; '"' F000:99B4 mov dx, 0F2h ; '²' F000:99B7 call sub_F9B4F F000:99BA mov si, [ebx+0Ah] F000:99BE mov eax, 0F0h ; '­' F000:99C4 mul dword ptr [si+8] F000:99C8 div dword ptr [si+4] F000:99CC mov ds:0EFAh, ax F000:99CF mov eax, 0F0h ; '­' F000:99D5 mul dword ptr [si] F000:99D8 div dword ptr [si+0Ch] F000:99DC mov ds:0EFCh, ax F000:99DF mov dword ptr ds:0F01h, 20202020h F000:99E8 mov byte ptr ds:0F00h, 0 F000:99ED cmp byte ptr [ebx+5], 0 F000:99F2 jz short loc_F9A27 F000:99F4 mov eax, 64h ; 'd' F000:99FA mul dword ptr [si] F000:99FD div dword ptr [si+0Ch] F000:9A01 mov byte ptr ds:0F00h, 1 F000:9A06 mov byte ptr ds:0F04h, 25h ; '%' F000:9A0B mov di, 0F03h F000:9A0E mov cl, 0Ah F000:9A10 F000:9A10 loc_F9A10: ; CODE XREF: sub_F990D+113j F000:9A10 xor ah, ah F000:9A12 div cl F000:9A14 add ah, 30h ; '0' F000:9A17 mov [di], ah F000:9A19 dec di F000:9A1A inc byte ptr ds:0F00h F000:9A1E and al, al F000:9A20 jnz short loc_F9A10 F000:9A22 shl byte ptr ds:0F00h, 3 F000:9A27 F000:9A27 loc_F9A27: ; CODE XREF: sub_F990D+E5j F000:9A27 mov ax, [ebx+8] F000:9A2B add ax, 10h F000:9A2E mov dx, [ebx+6] F000:9A32 mov esi, ds:0EE5h F000:9A37 call sub_F96F6 F000:9A3A mov word ptr ds:0EFEh, 0 F000:9A40 mov cx, 0F0h ; '­' F000:9A43 mov si, 0EF4h F000:9A46 mov dh, 80h ; 'Ç' F000:9A48 movzx bp, byte ptr [si] F000:9A4B shl bp, 4 F000:9A4E add bp, 9A2Ah F000:9A52 F000:9A52 loc_F9A52: ; CODE XREF: sub_F990D+1C1j F000:9A52 push cx F000:9A53 mov cx, 20h ; ' ' F000:9A56 mov al, 1 F000:9A58 mov bx, ds:0EFEh F000:9A5C cmp bx, ds:0EFCh F000:9A60 jb short loc_F9A6C F000:9A62 mov al, 9 F000:9A64 cmp bx, ds:0EFAh F000:9A68 jb short loc_F9A6C F000:9A6A mov al, 0Fh F000:9A6C F000:9A6C loc_F9A6C: ; CODE XREF: sub_F990D+153j F000:9A6C ; sub_F990D+15Bj ... F000:9A6C mov ah, al F000:9A6E cmp cx, 8 F000:9A71 jb short loc_F9A96 F000:9A73 cmp cx, 18h F000:9A76 jnb short loc_F9A96 F000:9A78 cmp si, 0F01h F000:9A7C jb short loc_F9A96 F000:9A7E cmp si, 0F05h F000:9A82 jnb short loc_F9A96 F000:9A84 mov dl, cs:[bp+0] F000:9A88 inc bp F000:9A89 and dl, dh F000:9A8B jz short loc_F9A96 F000:9A8D cmp ah, 0Fh F000:9A90 mov ah, 1 F000:9A92 jz short loc_F9A96 F000:9A94 mov ah, 0Fh F000:9A96 F000:9A96 loc_F9A96: ; CODE XREF: sub_F990D+164j F000:9A96 ; sub_F990D+169j ... F000:9A96 mov es:[edi], ah F000:9A9A add edi, fs:14E8h F000:9AA0 loop loc_F9A6C F000:9AA2 sub bp, 10h F000:9AA5 ror dh, 1 F000:9AA7 jnb short loc_F9AB4 F000:9AA9 inc si F000:9AAA movzx bp, byte ptr [si] F000:9AAD shl bp, 4 F000:9AB0 add bp, 9A2Ah F000:9AB4 F000:9AB4 loc_F9AB4: ; CODE XREF: sub_F990D+19Aj F000:9AB4 mov eax, fs:14E8h F000:9AB9 mov edx, 20h ; ' ' F000:9ABF mul edx F000:9AC2 sub eax, 1 F000:9AC6 sub edi, eax F000:9AC9 inc word ptr ds:0EFEh F000:9ACD pop cx F000:9ACE loop loc_F9A52 F000:9AD0 F000:9AD0 loc_F9AD0: ; CODE XREF: sub_F990D:loc_F9975j F000:9AD0 ; sub_F990D+95j F000:9AD0 popad F000:9AD2 retn F000:9AD2 sub_F990D endp F000:9AD2 F000:9AD3 F000:9AD3 ; =============== S U B R O U T I N E ======================================= F000:9AD3 F000:9AD3 F000:9AD3 sub_F9AD3 proc near ; CODE XREF: sub_F975A+E4p F000:9AD3 ; sub_F975A+13Cp ... F000:9AD3 mov ds:0F09h, al F000:9AD6 retn F000:9AD6 sub_F9AD3 endp F000:9AD6 F000:9AD7 F000:9AD7 ; =============== S U B R O U T I N E ======================================= F000:9AD7 F000:9AD7 F000:9AD7 sub_F9AD7 proc near ; CODE XREF: sub_F975A+DFp F000:9AD7 ; sub_F975A+12Dp ... F000:9AD7 mov ds:0F0Ah, al F000:9ADA retn F000:9ADA sub_F9AD7 endp F000:9ADA F000:9ADB F000:9ADB ; =============== S U B R O U T I N E ======================================= F000:9ADB F000:9ADB F000:9ADB sub_F9ADB proc near ; CODE XREF: sub_F975A:loc_F97A7p F000:9ADB ; sub_F990D:loc_F9940p F000:9ADB mov ds:0F05h, edi F000:9AE0 push si F000:9AE1 xor cx, cx F000:9AE3 xor dx, dx F000:9AE5 F000:9AE5 loc_F9AE5: ; CODE XREF: sub_F9ADB+1Bj F000:9AE5 ; sub_F9ADB+1Fj F000:9AE5 lods byte ptr cs:[si] F000:9AE7 and al, al F000:9AE9 jz short loc_F9AFC F000:9AEB cmp al, 0Ah F000:9AED jz short loc_F9AFC F000:9AEF inc dx F000:9AF0 cmp dx, bp F000:9AF2 jnb short loc_F9AFE F000:9AF4 cmp al, 20h ; ' ' F000:9AF6 jnz short loc_F9AE5 F000:9AF8 mov cx, dx F000:9AFA jmp short loc_F9AE5 F000:9AFC ; --------------------------------------------------------------------------- F000:9AFC F000:9AFC loc_F9AFC: ; CODE XREF: sub_F9ADB+Ej F000:9AFC ; sub_F9ADB+12j F000:9AFC mov cx, dx F000:9AFE F000:9AFE loc_F9AFE: ; CODE XREF: sub_F9ADB+17j F000:9AFE pop si F000:9AFF retn F000:9AFF sub_F9ADB endp F000:9AFF F000:9B00 F000:9B00 ; =============== S U B R O U T I N E ======================================= F000:9B00 F000:9B00 F000:9B00 sub_F9B00 proc near ; CODE XREF: sub_F990D+3Ap F000:9B00 ; sub_F990D:loc_F999Dp F000:9B00 push bp F000:9B01 push bx F000:9B02 movzx bx, al F000:9B05 pushf F000:9B06 cli F000:9B07 mov dx, 3CEh F000:9B0A mov al, 8 F000:9B0C out dx, al ; EGA: graph 1 and 2 addr reg: F000:9B0C ; bit mask F000:9B0C ; Bits 0-7 select bits to be masked in all planes F000:9B0D inc dx F000:9B0E shl bx, 4 F000:9B11 add bx, 9A2Ah F000:9B15 mov ah, 10h F000:9B17 F000:9B17 loc_F9B17: ; CODE XREF: sub_F9B00+35j F000:9B17 mov al, es:[edi] F000:9B1B mov al, cs:[bx] F000:9B1E out dx, al ; EGA port: graphics controller data register F000:9B1F inc bx F000:9B20 call sub_F9BD0 F000:9B23 push eax F000:9B25 mov eax, fs:14E8h F000:9B2A sub eax, 8 F000:9B2E add edi, eax F000:9B31 pop eax F000:9B33 dec ah F000:9B35 jnz short loc_F9B17 F000:9B37 push eax F000:9B39 mov eax, fs:14E8h F000:9B3E shl eax, 4 F000:9B42 sub eax, 8 F000:9B46 sub edi, eax F000:9B49 pop eax F000:9B4B popf F000:9B4C pop bx F000:9B4D pop bp F000:9B4E retn F000:9B4E sub_F9B00 endp F000:9B4E F000:9B4F F000:9B4F ; =============== S U B R O U T I N E ======================================= F000:9B4F F000:9B4F F000:9B4F sub_F9B4F proc near ; CODE XREF: sub_F990D+AAp F000:9B4F ; sub_F9C05+21p F000:9B4F pushad F000:9B51 mov esi, fs:14E8h F000:9B57 movzx edx, dx F000:9B5B mov ecx, edx F000:9B5E sub esi, ecx F000:9B61 mov bx, ax F000:9B63 mov al, ds:0F09h F000:9B66 rep stos byte ptr es:[edi] F000:9B69 dec bx F000:9B6A dec bx F000:9B6B F000:9B6B loc_F9B6B: ; CODE XREF: sub_F9B4F+2Cj F000:9B6B add edi, esi F000:9B6E mov es:[edi], al F000:9B72 add edi, edx F000:9B75 mov es:[edi-1], al F000:9B7A dec bx F000:9B7B jnz short loc_F9B6B F000:9B7D add edi, esi F000:9B80 mov cx, dx F000:9B82 rep stos byte ptr es:[edi] F000:9B85 popad F000:9B87 retn F000:9B87 sub_F9B4F endp F000:9B87 F000:9B88 F000:9B88 ; =============== S U B R O U T I N E ======================================= F000:9B88 F000:9B88 F000:9B88 sub_F9B88 proc near ; CODE XREF: sub_F975A+16Fp F000:9B88 pushf F000:9B89 cli F000:9B8A F000:9B8A loc_F9B8A: ; CODE XREF: sub_F9B88+44j F000:9B8A movzx bp, byte ptr cs:[si] F000:9B8E and bp, bp F000:9B90 jz short loc_F9BCE F000:9B92 inc si F000:9B93 shl bp, 4 F000:9B96 add bp, 9A2Ah F000:9B9A mov ah, 10h F000:9B9C F000:9B9C loc_F9B9C: ; CODE XREF: sub_F9B88+2Ej F000:9B9C mov al, cs:[bp+0] F000:9BA0 inc bp F000:9BA1 call sub_F9BD0 F000:9BA4 push eax F000:9BA6 mov eax, fs:14E8h F000:9BAB sub eax, 8 F000:9BAF add edi, eax F000:9BB2 pop eax F000:9BB4 dec ah F000:9BB6 jnz short loc_F9B9C F000:9BB8 push eax F000:9BBA mov eax, fs:14E8h F000:9BBF shl eax, 4 F000:9BC3 sub eax, 8 F000:9BC7 sub edi, eax F000:9BCA pop eax F000:9BCC jmp short loc_F9B8A F000:9BCE ; --------------------------------------------------------------------------- F000:9BCE F000:9BCE loc_F9BCE: ; CODE XREF: sub_F9B88+8j F000:9BCE popf F000:9BCF retn F000:9BCF sub_F9B88 endp F000:9BCF F000:9BD0 F000:9BD0 ; =============== S U B R O U T I N E ======================================= F000:9BD0 F000:9BD0 F000:9BD0 sub_F9BD0 proc near ; CODE XREF: sub_F9B00+20p F000:9BD0 ; sub_F9B88+19p F000:9BD0 push cx F000:9BD1 push ax F000:9BD2 mov cx, 8 F000:9BD5 mov ah, al F000:9BD7 F000:9BD7 loc_F9BD7: ; CODE XREF: sub_F9BD0+13j F000:9BD7 mov al, ds:0F0Ah F000:9BDA rol ah, 1 F000:9BDC jnb short loc_F9BE1 F000:9BDE mov al, ds:0F09h F000:9BE1 F000:9BE1 loc_F9BE1: ; CODE XREF: sub_F9BD0+Cj F000:9BE1 stos byte ptr es:[edi] F000:9BE3 loop loc_F9BD7 F000:9BE5 pop ax F000:9BE6 pop cx F000:9BE7 retn F000:9BE7 sub_F9BD0 endp F000:9BE7 F000:9BE8 F000:9BE8 ; =============== S U B R O U T I N E ======================================= F000:9BE8 F000:9BE8 F000:9BE8 sub_F9BE8 proc near ; CODE XREF: sub_F975A+F9p F000:9BE8 ; sub_F975A+137p F000:9BE8 mov bx, ax F000:9BEA mov al, ds:0F0Ah F000:9BED movzx edx, dx F000:9BF1 F000:9BF1 loc_F9BF1: ; CODE XREF: sub_F9BE8+1Aj F000:9BF1 movzx ecx, dx F000:9BF5 rep stos byte ptr es:[edi] F000:9BF8 add edi, fs:14E8h F000:9BFE sub edi, edx F000:9C01 dec bx F000:9C02 jnz short loc_F9BF1 F000:9C04 retn F000:9C04 sub_F9BE8 endp F000:9C04 F000:9C05 F000:9C05 ; =============== S U B R O U T I N E ======================================= F000:9C05 F000:9C05 F000:9C05 sub_F9C05 proc near ; CODE XREF: sub_F975A+102p F000:9C05 ; sub_F975A+10Bp ... F000:9C05 mov al, bl F000:9C07 call sub_F9AD3 F000:9C0A mov ax, [esi+2] F000:9C0E sub ax, cx F000:9C10 mov dx, [esi] F000:9C13 sub dx, cx F000:9C15 call sub_F970F F000:9C18 shl cx, 1 F000:9C1A mov ax, [esi+6] F000:9C1E add ax, cx F000:9C20 mov dx, [esi+4] F000:9C24 add dx, cx F000:9C26 call sub_F9B4F F000:9C29 retn F000:9C29 sub_F9C05 endp F000:9C29 F000:9C29 ; --------------------------------------------------------------------------- F000:9C2A db 0 F000:9C2B db 0 F000:9C2C db 0 F000:9C2D db 0 F000:9C2E db 0 F000:9C2F db 0 F000:9C30 db 0 F000:9C31 db 0 F000:9C32 db 0 F000:9C33 db 0 F000:9C34 db 0 F000:9C35 db 0 F000:9C36 db 0 F000:9C37 db 0 F000:9C38 db 0 F000:9C39 db 0 F000:9C3A db 0 F000:9C3B db 0 F000:9C3C db 10h F000:9C3D db 10h F000:9C3E db 10h F000:9C3F db 10h F000:9C40 db 10h F000:9C41 db 10h F000:9C42 db 10h F000:9C43 db 0 F000:9C44 db 10h F000:9C45 db 0 F000:9C46 db 0 F000:9C47 db 0 F000:9C48 db 0 F000:9C49 db 0 F000:9C4A db 0 F000:9C4B db 24h ; $ F000:9C4C db 24h ; $ F000:9C4D db 0 F000:9C4E db 0 F000:9C4F db 0 F000:9C50 db 0 F000:9C51 db 0 F000:9C52 db 0 F000:9C53 db 0 F000:9C54 db 0 F000:9C55 db 0 F000:9C56 db 0 F000:9C57 db 0 F000:9C58 db 0 F000:9C59 db 0 F000:9C5A db 0 F000:9C5B db 0 F000:9C5C db 0 F000:9C5D db 44h ; D F000:9C5E db 0FEh ; ¦ F000:9C5F db 44h ; D F000:9C60 db 44h ; D F000:9C61 db 44h ; D F000:9C62 db 44h ; D F000:9C63 db 0FEh ; ¦ F000:9C64 db 44h ; D F000:9C65 db 0 F000:9C66 db 0 F000:9C67 db 0 F000:9C68 db 0 F000:9C69 db 0 F000:9C6A db 0 F000:9C6B db 0 F000:9C6C db 10h F000:9C6D db 7Ch ; | F000:9C6E db 92h ; å F000:9C6F db 90h ; É F000:9C70 db 70h ; p F000:9C71 db 1Ch F000:9C72 db 12h F000:9C73 db 92h ; å F000:9C74 db 7Ch ; | F000:9C75 db 10h F000:9C76 db 0 F000:9C77 db 0 F000:9C78 db 0 F000:9C79 db 0 F000:9C7A db 0 F000:9C7B db 0 F000:9C7C db 0 F000:9C7D db 0 F000:9C7E db 62h ; b F000:9C7F db 94h ; ö F000:9C80 db 68h ; h F000:9C81 db 10h F000:9C82 db 2Ch ; , F000:9C83 db 52h ; R F000:9C84 db 8Ch ; î F000:9C85 db 0 F000:9C86 db 0 F000:9C87 db 0 F000:9C88 db 0 F000:9C89 db 0 F000:9C8A db 0 F000:9C8B db 0 F000:9C8C db 0 F000:9C8D db 30h ; 0 F000:9C8E db 48h ; H F000:9C8F db 48h ; H F000:9C90 db 30h ; 0 F000:9C91 db 4Ah ; J F000:9C92 db 84h ; ä F000:9C93 db 84h ; ä F000:9C94 db 7Ah ; z F000:9C95 db 0 F000:9C96 db 0 F000:9C97 db 0 F000:9C98 db 0 F000:9C99 db 0 F000:9C9A db 0 F000:9C9B db 0 F000:9C9C db 0Ch F000:9C9D db 8 F000:9C9E db 10h F000:9C9F db 0 F000:9CA0 db 0 F000:9CA1 db 0 F000:9CA2 db 0 F000:9CA3 db 0 F000:9CA4 db 0 F000:9CA5 db 0 F000:9CA6 db 0 F000:9CA7 db 0 F000:9CA8 db 0 F000:9CA9 db 0 F000:9CAA db 0 F000:9CAB db 0 F000:9CAC db 0Ch F000:9CAD db 10h F000:9CAE db 20h F000:9CAF db 20h F000:9CB0 db 20h F000:9CB1 db 20h F000:9CB2 db 20h F000:9CB3 db 20h F000:9CB4 db 10h F000:9CB5 db 0Ch F000:9CB6 db 0 F000:9CB7 db 0 F000:9CB8 db 0 F000:9CB9 db 0 F000:9CBA db 0 F000:9CBB db 0 F000:9CBC db 30h ; 0 F000:9CBD db 8 F000:9CBE db 4 F000:9CBF db 4 F000:9CC0 db 4 F000:9CC1 db 4 F000:9CC2 db 4 F000:9CC3 db 4 F000:9CC4 db 8 F000:9CC5 db 30h ; 0 F000:9CC6 db 0 F000:9CC7 db 0 F000:9CC8 db 0 F000:9CC9 db 0 F000:9CCA db 0 F000:9CCB db 0 F000:9CCC db 0 F000:9CCD db 10h F000:9CCE db 54h ; T F000:9CCF db 38h ; 8 F000:9CD0 db 0FEh ; ¦ F000:9CD1 db 38h ; 8 F000:9CD2 db 54h ; T F000:9CD3 db 10h F000:9CD4 db 0 F000:9CD5 db 0 F000:9CD6 db 0 F000:9CD7 db 0 F000:9CD8 db 0 F000:9CD9 db 0 F000:9CDA db 0 F000:9CDB db 0 F000:9CDC db 0 F000:9CDD db 10h F000:9CDE db 10h F000:9CDF db 10h F000:9CE0 db 0FEh ; ¦ F000:9CE1 db 10h F000:9CE2 db 10h F000:9CE3 db 10h F000:9CE4 db 0 F000:9CE5 db 0 F000:9CE6 db 0 F000:9CE7 db 0 F000:9CE8 db 0 F000:9CE9 db 0 F000:9CEA db 0 F000:9CEB db 0 F000:9CEC db 0 F000:9CED db 0 F000:9CEE db 0 F000:9CEF db 0 F000:9CF0 db 0 F000:9CF1 db 0 F000:9CF2 db 0 F000:9CF3 db 0 F000:9CF4 db 18h F000:9CF5 db 10h F000:9CF6 db 20h F000:9CF7 db 0 F000:9CF8 db 0 F000:9CF9 db 0 F000:9CFA db 0 F000:9CFB db 0 F000:9CFC db 0 F000:9CFD db 0 F000:9CFE db 0 F000:9CFF db 0 F000:9D00 db 0FEh ; ¦ F000:9D01 db 0 F000:9D02 db 0 F000:9D03 db 0 F000:9D04 db 0 F000:9D05 db 0 F000:9D06 db 0 F000:9D07 db 0 F000:9D08 db 0 F000:9D09 db 0 F000:9D0A db 0 F000:9D0B db 0 F000:9D0C db 0 F000:9D0D db 0 F000:9D0E db 0 F000:9D0F db 0 F000:9D10 db 0 F000:9D11 db 0 F000:9D12 db 0 F000:9D13 db 0 F000:9D14 db 18h F000:9D15 db 0 F000:9D16 db 0 F000:9D17 db 0 F000:9D18 db 0 F000:9D19 db 0 F000:9D1A db 0 F000:9D1B db 0 F000:9D1C db 0 F000:9D1D db 0 F000:9D1E db 2 F000:9D1F db 4 F000:9D20 db 8 F000:9D21 db 10h F000:9D22 db 20h F000:9D23 db 40h ; @ F000:9D24 db 80h ; Ç F000:9D25 db 0 F000:9D26 db 0 F000:9D27 db 0 F000:9D28 db 0 F000:9D29 db 0 F000:9D2A db 0 F000:9D2B db 0 F000:9D2C db 7Ch ; | F000:9D2D db 82h ; é F000:9D2E db 82h ; é F000:9D2F db 8Ah ; Õ F000:9D30 db 92h ; å F000:9D31 db 0A2h ; ó F000:9D32 db 82h ; é F000:9D33 db 82h ; é F000:9D34 db 7Ch ; | F000:9D35 db 0 F000:9D36 db 0 F000:9D37 db 0 F000:9D38 db 0 F000:9D39 db 0 F000:9D3A db 0 F000:9D3B db 0 F000:9D3C db 10h F000:9D3D db 30h ; 0 F000:9D3E db 10h F000:9D3F db 10h F000:9D40 db 10h F000:9D41 db 10h F000:9D42 db 10h F000:9D43 db 10h F000:9D44 db 7Ch ; | F000:9D45 db 0 F000:9D46 db 0 F000:9D47 db 0 F000:9D48 db 0 F000:9D49 db 0 F000:9D4A db 0 F000:9D4B db 0 F000:9D4C db 7Ch ; | F000:9D4D db 82h ; é F000:9D4E db 2 F000:9D4F db 4 F000:9D50 db 18h F000:9D51 db 20h F000:9D52 db 40h ; @ F000:9D53 db 80h ; Ç F000:9D54 db 0FEh ; ¦ F000:9D55 db 0 F000:9D56 db 0 F000:9D57 db 0 F000:9D58 db 0 F000:9D59 db 0 F000:9D5A db 0 F000:9D5B db 0 F000:9D5C db 7Ch ; | F000:9D5D db 82h ; é F000:9D5E db 2 F000:9D5F db 2 F000:9D60 db 3Ch ; < F000:9D61 db 2 F000:9D62 db 2 F000:9D63 db 82h ; é F000:9D64 db 7Ch ; | F000:9D65 db 0 F000:9D66 db 0 F000:9D67 db 0 F000:9D68 db 0 F000:9D69 db 0 F000:9D6A db 0 F000:9D6B db 0 F000:9D6C db 8 F000:9D6D db 18h F000:9D6E db 28h ; ( F000:9D6F db 48h ; H F000:9D70 db 88h ; ³ F000:9D71 db 0FEh ; ¦ F000:9D72 db 8 F000:9D73 db 8 F000:9D74 db 8 F000:9D75 db 0 F000:9D76 db 0 F000:9D77 db 0 F000:9D78 db 0 F000:9D79 db 0 F000:9D7A db 0 F000:9D7B db 0 F000:9D7C db 0FEh ; ¦ F000:9D7D db 80h ; Ç F000:9D7E db 80h ; Ç F000:9D7F db 0FCh ; Ø F000:9D80 db 2 F000:9D81 db 2 F000:9D82 db 2 F000:9D83 db 82h ; é F000:9D84 db 7Ch ; | F000:9D85 db 0 F000:9D86 db 0 F000:9D87 db 0 F000:9D88 db 0 F000:9D89 db 0 F000:9D8A db 0 F000:9D8B db 0 F000:9D8C db 7Ch ; | F000:9D8D db 82h ; é F000:9D8E db 80h ; Ç F000:9D8F db 80h ; Ç F000:9D90 db 0FCh ; Ø F000:9D91 db 82h ; é F000:9D92 db 82h ; é F000:9D93 db 82h ; é F000:9D94 db 7Ch ; | F000:9D95 db 0 F000:9D96 db 0 F000:9D97 db 0 F000:9D98 db 0 F000:9D99 db 0 F000:9D9A db 0 F000:9D9B db 0 F000:9D9C db 0FEh ; ¦ F000:9D9D db 82h ; é F000:9D9E db 2 F000:9D9F db 4 F000:9DA0 db 8 F000:9DA1 db 10h F000:9DA2 db 10h F000:9DA3 db 10h F000:9DA4 db 10h F000:9DA5 db 0 F000:9DA6 db 0 F000:9DA7 db 0 F000:9DA8 db 0 F000:9DA9 db 0 F000:9DAA db 0 F000:9DAB db 0 F000:9DAC db 7Ch ; | F000:9DAD db 82h ; é F000:9DAE db 82h ; é F000:9DAF db 82h ; é F000:9DB0 db 7Ch ; | F000:9DB1 db 82h ; é F000:9DB2 db 82h ; é F000:9DB3 db 82h ; é F000:9DB4 db 7Ch ; | F000:9DB5 db 0 F000:9DB6 db 0 F000:9DB7 db 0 F000:9DB8 db 0 F000:9DB9 db 0 F000:9DBA db 0 F000:9DBB db 0 F000:9DBC db 7Ch ; | F000:9DBD db 82h ; é F000:9DBE db 82h ; é F000:9DBF db 82h ; é F000:9DC0 db 7Eh ; ~ F000:9DC1 db 2 F000:9DC2 db 2 F000:9DC3 db 82h ; é F000:9DC4 db 7Ch ; | F000:9DC5 db 0 F000:9DC6 db 0 F000:9DC7 db 0 F000:9DC8 db 0 F000:9DC9 db 0 F000:9DCA db 0 F000:9DCB db 0 F000:9DCC db 0 F000:9DCD db 0 F000:9DCE db 18h F000:9DCF db 0 F000:9DD0 db 0 F000:9DD1 db 0 F000:9DD2 db 0 F000:9DD3 db 0 F000:9DD4 db 18h F000:9DD5 db 0 F000:9DD6 db 0 F000:9DD7 db 0 F000:9DD8 db 0 F000:9DD9 db 0 F000:9DDA db 0 F000:9DDB db 0 F000:9DDC db 0 F000:9DDD db 0 F000:9DDE db 18h F000:9DDF db 0 F000:9DE0 db 0 F000:9DE1 db 0 F000:9DE2 db 0 F000:9DE3 db 0 F000:9DE4 db 18h F000:9DE5 db 10h F000:9DE6 db 20h F000:9DE7 db 0 F000:9DE8 db 0 F000:9DE9 db 0 F000:9DEA db 0 F000:9DEB db 0 F000:9DEC db 0 F000:9DED db 4 F000:9DEE db 8 F000:9DEF db 10h F000:9DF0 db 20h F000:9DF1 db 10h F000:9DF2 db 8 F000:9DF3 db 4 F000:9DF4 db 0 F000:9DF5 db 0 F000:9DF6 db 0 F000:9DF7 db 0 F000:9DF8 db 0 F000:9DF9 db 0 F000:9DFA db 0 F000:9DFB db 0 F000:9DFC db 0 F000:9DFD db 0 F000:9DFE db 0 F000:9DFF db 0FEh ; ¦ F000:9E00 db 0 F000:9E01 db 0 F000:9E02 db 0FEh ; ¦ F000:9E03 db 0 F000:9E04 db 0 F000:9E05 db 0 F000:9E06 db 0 F000:9E07 db 0 F000:9E08 db 0 F000:9E09 db 0 F000:9E0A db 0 F000:9E0B db 0 F000:9E0C db 0 F000:9E0D db 20h F000:9E0E db 10h F000:9E0F db 8 F000:9E10 db 4 F000:9E11 db 8 F000:9E12 db 10h F000:9E13 db 20h F000:9E14 db 0 F000:9E15 db 0 F000:9E16 db 0 F000:9E17 db 0 F000:9E18 db 0 F000:9E19 db 0 F000:9E1A db 0 F000:9E1B db 0 F000:9E1C db 7Ch ; | F000:9E1D db 82h ; é F000:9E1E db 2 F000:9E1F db 4 F000:9E20 db 8 F000:9E21 db 10h F000:9E22 db 10h F000:9E23 db 0 F000:9E24 db 10h F000:9E25 db 0 F000:9E26 db 0 F000:9E27 db 0 F000:9E28 db 0 F000:9E29 db 0 F000:9E2A db 0 F000:9E2B db 0 F000:9E2C db 3Ch ; < F000:9E2D db 42h ; B F000:9E2E db 82h ; é F000:9E2F db 8Eh ; Ä F000:9E30 db 92h ; å F000:9E31 db 92h ; å F000:9E32 db 8Ch ; î F000:9E33 db 40h ; @ F000:9E34 db 3Ch ; < F000:9E35 db 0 F000:9E36 db 0 F000:9E37 db 0 F000:9E38 db 0 F000:9E39 db 0 F000:9E3A db 0 F000:9E3B db 0 F000:9E3C db 10h F000:9E3D db 28h ; ( F000:9E3E db 44h ; D F000:9E3F db 82h ; é F000:9E40 db 82h ; é F000:9E41 db 0FEh ; ¦ F000:9E42 db 82h ; é F000:9E43 db 82h ; é F000:9E44 db 82h ; é F000:9E45 db 0 F000:9E46 db 0 F000:9E47 db 0 F000:9E48 db 0 F000:9E49 db 0 F000:9E4A db 0 F000:9E4B db 0 F000:9E4C db 0FCh ; Ø F000:9E4D db 42h ; B F000:9E4E db 42h ; B F000:9E4F db 42h ; B F000:9E50 db 7Ch ; | F000:9E51 db 42h ; B F000:9E52 db 42h ; B F000:9E53 db 42h ; B F000:9E54 db 0FCh ; Ø F000:9E55 db 0 F000:9E56 db 0 F000:9E57 db 0 F000:9E58 db 0 F000:9E59 db 0 F000:9E5A db 0 F000:9E5B db 0 F000:9E5C db 7Ch ; | F000:9E5D db 82h ; é F000:9E5E db 80h ; Ç F000:9E5F db 80h ; Ç F000:9E60 db 80h ; Ç F000:9E61 db 80h ; Ç F000:9E62 db 80h ; Ç F000:9E63 db 82h ; é F000:9E64 db 7Ch ; | F000:9E65 db 0 F000:9E66 db 0 F000:9E67 db 0 F000:9E68 db 0 F000:9E69 db 0 F000:9E6A db 0 F000:9E6B db 0 F000:9E6C db 0F8h ; ° F000:9E6D db 44h ; D F000:9E6E db 42h ; B F000:9E6F db 42h ; B F000:9E70 db 42h ; B F000:9E71 db 42h ; B F000:9E72 db 42h ; B F000:9E73 db 44h ; D F000:9E74 db 0F8h ; ° F000:9E75 db 0 F000:9E76 db 0 F000:9E77 db 0 F000:9E78 db 0 F000:9E79 db 0 F000:9E7A db 0 F000:9E7B db 0 F000:9E7C db 0FEh ; ¦ F000:9E7D db 80h ; Ç F000:9E7E db 80h ; Ç F000:9E7F db 80h ; Ç F000:9E80 db 0FCh ; Ø F000:9E81 db 80h ; Ç F000:9E82 db 80h ; Ç F000:9E83 db 80h ; Ç F000:9E84 db 0FEh ; ¦ F000:9E85 db 0 F000:9E86 db 0 F000:9E87 db 0 F000:9E88 db 0 F000:9E89 db 0 F000:9E8A db 0 F000:9E8B db 0 F000:9E8C db 0FEh ; ¦ F000:9E8D db 80h ; Ç F000:9E8E db 80h ; Ç F000:9E8F db 80h ; Ç F000:9E90 db 0F8h ; ° F000:9E91 db 80h ; Ç F000:9E92 db 80h ; Ç F000:9E93 db 80h ; Ç F000:9E94 db 80h ; Ç F000:9E95 db 0 F000:9E96 db 0 F000:9E97 db 0 F000:9E98 db 0 F000:9E99 db 0 F000:9E9A db 0 F000:9E9B db 0 F000:9E9C db 7Ch ; | F000:9E9D db 82h ; é F000:9E9E db 80h ; Ç F000:9E9F db 80h ; Ç F000:9EA0 db 80h ; Ç F000:9EA1 db 8Eh ; Ä F000:9EA2 db 82h ; é F000:9EA3 db 82h ; é F000:9EA4 db 7Ch ; | F000:9EA5 db 0 F000:9EA6 db 0 F000:9EA7 db 0 F000:9EA8 db 0 F000:9EA9 db 0 F000:9EAA db 0 F000:9EAB db 0 F000:9EAC db 82h ; é F000:9EAD db 82h ; é F000:9EAE db 82h ; é F000:9EAF db 82h ; é F000:9EB0 db 0FEh ; ¦ F000:9EB1 db 82h ; é F000:9EB2 db 82h ; é F000:9EB3 db 82h ; é F000:9EB4 db 82h ; é F000:9EB5 db 0 F000:9EB6 db 0 F000:9EB7 db 0 F000:9EB8 db 0 F000:9EB9 db 0 F000:9EBA db 0 F000:9EBB db 0 F000:9EBC db 7Ch ; | F000:9EBD db 10h F000:9EBE db 10h F000:9EBF db 10h F000:9EC0 db 10h F000:9EC1 db 10h F000:9EC2 db 10h F000:9EC3 db 10h F000:9EC4 db 7Ch ; | F000:9EC5 db 0 F000:9EC6 db 0 F000:9EC7 db 0 F000:9EC8 db 0 F000:9EC9 db 0 F000:9ECA db 0 F000:9ECB db 0 F000:9ECC db 1Eh F000:9ECD db 4 F000:9ECE db 4 F000:9ECF db 4 F000:9ED0 db 4 F000:9ED1 db 4 F000:9ED2 db 84h ; ä F000:9ED3 db 84h ; ä F000:9ED4 db 78h ; x F000:9ED5 db 0 F000:9ED6 db 0 F000:9ED7 db 0 F000:9ED8 db 0 F000:9ED9 db 0 F000:9EDA db 0 F000:9EDB db 0 F000:9EDC db 82h ; é F000:9EDD db 84h ; ä F000:9EDE db 88h ; ³ F000:9EDF db 90h ; É F000:9EE0 db 0E0h ; Ó F000:9EE1 db 90h ; É F000:9EE2 db 88h ; ³ F000:9EE3 db 84h ; ä F000:9EE4 db 82h ; é F000:9EE5 db 0 F000:9EE6 db 0 F000:9EE7 db 0 F000:9EE8 db 0 F000:9EE9 db 0 F000:9EEA db 0 F000:9EEB db 0 F000:9EEC db 80h ; Ç F000:9EED db 80h ; Ç F000:9EEE db 80h ; Ç F000:9EEF db 80h ; Ç F000:9EF0 db 80h ; Ç F000:9EF1 db 80h ; Ç F000:9EF2 db 80h ; Ç F000:9EF3 db 80h ; Ç F000:9EF4 db 0FEh ; ¦ F000:9EF5 db 0 F000:9EF6 db 0 F000:9EF7 db 0 F000:9EF8 db 0 F000:9EF9 db 0 F000:9EFA db 0 F000:9EFB db 0 F000:9EFC db 82h ; é F000:9EFD db 0C6h ; à F000:9EFE db 0AAh ; ¬ F000:9EFF db 92h ; å F000:9F00 db 82h ; é F000:9F01 db 82h ; é F000:9F02 db 82h ; é F000:9F03 db 82h ; é F000:9F04 db 82h ; é F000:9F05 db 0 F000:9F06 db 0 F000:9F07 db 0 F000:9F08 db 0 F000:9F09 db 0 F000:9F0A db 0 F000:9F0B db 0 F000:9F0C db 82h ; é F000:9F0D db 82h ; é F000:9F0E db 0C2h ; T F000:9F0F db 0A2h ; ó F000:9F10 db 92h ; å F000:9F11 db 8Ah ; Õ F000:9F12 db 86h ; æ F000:9F13 db 82h ; é F000:9F14 db 82h ; é F000:9F15 db 0 F000:9F16 db 0 F000:9F17 db 0 F000:9F18 db 0 F000:9F19 db 0 F000:9F1A db 0 F000:9F1B db 0 F000:9F1C db 7Ch ; | F000:9F1D db 82h ; é F000:9F1E db 82h ; é F000:9F1F db 82h ; é F000:9F20 db 82h ; é F000:9F21 db 82h ; é F000:9F22 db 82h ; é F000:9F23 db 82h ; é F000:9F24 db 7Ch ; | F000:9F25 db 0 F000:9F26 db 0 F000:9F27 db 0 F000:9F28 db 0 F000:9F29 db 0 F000:9F2A db 0 F000:9F2B db 0 F000:9F2C db 0FCh ; Ø F000:9F2D db 82h ; é F000:9F2E db 82h ; é F000:9F2F db 82h ; é F000:9F30 db 0FCh ; Ø F000:9F31 db 80h ; Ç F000:9F32 db 80h ; Ç F000:9F33 db 80h ; Ç F000:9F34 db 80h ; Ç F000:9F35 db 0 F000:9F36 db 0 F000:9F37 db 0 F000:9F38 db 0 F000:9F39 db 0 F000:9F3A db 0 F000:9F3B db 0 F000:9F3C db 7Ch ; | F000:9F3D db 82h ; é F000:9F3E db 82h ; é F000:9F3F db 82h ; é F000:9F40 db 82h ; é F000:9F41 db 92h ; å F000:9F42 db 8Ah ; Õ F000:9F43 db 84h ; ä F000:9F44 db 7Ah ; z F000:9F45 db 0 F000:9F46 db 0 F000:9F47 db 0 F000:9F48 db 0 F000:9F49 db 0 F000:9F4A db 0 F000:9F4B db 0 F000:9F4C db 0FCh ; Ø F000:9F4D db 82h ; é F000:9F4E db 82h ; é F000:9F4F db 82h ; é F000:9F50 db 0FCh ; Ø F000:9F51 db 90h ; É F000:9F52 db 88h ; ³ F000:9F53 db 84h ; ä F000:9F54 db 82h ; é F000:9F55 db 0 F000:9F56 db 0 F000:9F57 db 0 F000:9F58 db 0 F000:9F59 db 0 F000:9F5A db 0 F000:9F5B db 0 F000:9F5C db 7Ch ; | F000:9F5D db 82h ; é F000:9F5E db 80h ; Ç F000:9F5F db 80h ; Ç F000:9F60 db 7Ch ; | F000:9F61 db 2 F000:9F62 db 2 F000:9F63 db 82h ; é F000:9F64 db 7Ch ; | F000:9F65 db 0 F000:9F66 db 0 F000:9F67 db 0 F000:9F68 db 0 F000:9F69 db 0 F000:9F6A db 0 F000:9F6B db 0 F000:9F6C db 0FEh ; ¦ F000:9F6D db 10h F000:9F6E db 10h F000:9F6F db 10h F000:9F70 db 10h F000:9F71 db 10h F000:9F72 db 10h F000:9F73 db 10h F000:9F74 db 10h F000:9F75 db 0 F000:9F76 db 0 F000:9F77 db 0 F000:9F78 db 0 F000:9F79 db 0 F000:9F7A db 0 F000:9F7B db 0 F000:9F7C db 82h ; é F000:9F7D db 82h ; é F000:9F7E db 82h ; é F000:9F7F db 82h ; é F000:9F80 db 82h ; é F000:9F81 db 82h ; é F000:9F82 db 82h ; é F000:9F83 db 82h ; é F000:9F84 db 7Ch ; | F000:9F85 db 0 F000:9F86 db 0 F000:9F87 db 0 F000:9F88 db 0 F000:9F89 db 0 F000:9F8A db 0 F000:9F8B db 0 F000:9F8C db 82h ; é F000:9F8D db 82h ; é F000:9F8E db 82h ; é F000:9F8F db 82h ; é F000:9F90 db 82h ; é F000:9F91 db 82h ; é F000:9F92 db 44h ; D F000:9F93 db 28h ; ( F000:9F94 db 10h F000:9F95 db 0 F000:9F96 db 0 F000:9F97 db 0 F000:9F98 db 0 F000:9F99 db 0 F000:9F9A db 0 F000:9F9B db 0 F000:9F9C db 82h ; é F000:9F9D db 82h ; é F000:9F9E db 82h ; é F000:9F9F db 82h ; é F000:9FA0 db 92h ; å F000:9FA1 db 92h ; å F000:9FA2 db 0AAh ; ¬ F000:9FA3 db 0C6h ; à F000:9FA4 db 82h ; é F000:9FA5 db 0 F000:9FA6 db 0 F000:9FA7 db 0 F000:9FA8 db 0 F000:9FA9 db 0 F000:9FAA db 0 F000:9FAB db 0 F000:9FAC db 82h ; é F000:9FAD db 82h ; é F000:9FAE db 44h ; D F000:9FAF db 28h ; ( F000:9FB0 db 10h F000:9FB1 db 28h ; ( F000:9FB2 db 44h ; D F000:9FB3 db 82h ; é F000:9FB4 db 82h ; é F000:9FB5 db 0 F000:9FB6 db 0 F000:9FB7 db 0 F000:9FB8 db 0 F000:9FB9 db 0 F000:9FBA db 0 F000:9FBB db 0 F000:9FBC db 82h ; é F000:9FBD db 82h ; é F000:9FBE db 82h ; é F000:9FBF db 44h ; D F000:9FC0 db 28h ; ( F000:9FC1 db 10h F000:9FC2 db 10h F000:9FC3 db 10h F000:9FC4 db 10h F000:9FC5 db 0 F000:9FC6 db 0 F000:9FC7 db 0 F000:9FC8 db 0 F000:9FC9 db 0 F000:9FCA db 0 F000:9FCB db 0 F000:9FCC db 0FEh ; ¦ F000:9FCD db 2 F000:9FCE db 4 F000:9FCF db 8 F000:9FD0 db 10h F000:9FD1 db 20h F000:9FD2 db 40h ; @ F000:9FD3 db 80h ; Ç F000:9FD4 db 0FEh ; ¦ F000:9FD5 db 0 F000:9FD6 db 0 F000:9FD7 db 0 F000:9FD8 db 0 F000:9FD9 db 0 F000:9FDA db 0 F000:9FDB db 0 F000:9FDC db 78h ; x F000:9FDD db 40h ; @ F000:9FDE db 40h ; @ F000:9FDF db 40h ; @ F000:9FE0 db 40h ; @ F000:9FE1 db 40h ; @ F000:9FE2 db 40h ; @ F000:9FE3 db 40h ; @ F000:9FE4 db 78h ; x F000:9FE5 db 0 F000:9FE6 db 0 F000:9FE7 db 0 F000:9FE8 db 0 F000:9FE9 db 0 F000:9FEA db 0 F000:9FEB db 0 F000:9FEC db 0 F000:9FED db 0 F000:9FEE db 80h ; Ç F000:9FEF db 40h ; @ F000:9FF0 db 20h F000:9FF1 db 10h F000:9FF2 db 8 F000:9FF3 db 4 F000:9FF4 db 2 F000:9FF5 db 0 F000:9FF6 db 0 F000:9FF7 db 0 F000:9FF8 db 0 F000:9FF9 db 0 F000:9FFA db 0 F000:9FFB db 0 F000:9FFC db 3Ch ; < F000:9FFD db 4 F000:9FFE db 4 F000:9FFF db 4 F000:A000 db 4 F000:A001 db 4 F000:A002 db 4 F000:A003 db 4 F000:A004 db 3Ch ; < F000:A005 db 0 F000:A006 db 0 F000:A007 db 0 F000:A008 db 0 F000:A009 db 0 F000:A00A db 0 F000:A00B db 10h F000:A00C db 28h ; ( F000:A00D db 44h ; D F000:A00E db 0 F000:A00F db 0 F000:A010 db 0 F000:A011 db 0 F000:A012 db 0 F000:A013 db 0 F000:A014 db 0 F000:A015 db 0 F000:A016 db 0 F000:A017 db 0 F000:A018 db 0 F000:A019 db 0 F000:A01A db 0 F000:A01B db 0 F000:A01C db 0 F000:A01D db 0 F000:A01E db 0 F000:A01F db 0 F000:A020 db 0 F000:A021 db 0 F000:A022 db 0 F000:A023 db 0 F000:A024 db 0 F000:A025 db 0FEh ; ¦ F000:A026 db 0 F000:A027 db 0 F000:A028 db 0 F000:A029 db 0 F000:A02A db 0 F000:A02B db 0 F000:A02C db 30h ; 0 F000:A02D db 10h F000:A02E db 8 F000:A02F db 0 F000:A030 db 0 F000:A031 db 0 F000:A032 db 0 F000:A033 db 0 F000:A034 db 0 F000:A035 db 0 F000:A036 db 0 F000:A037 db 0 F000:A038 db 0 F000:A039 db 0 F000:A03A db 0 F000:A03B db 0 F000:A03C db 0 F000:A03D db 0 F000:A03E db 7Ch ; | F000:A03F db 2 F000:A040 db 2 F000:A041 db 7Eh ; ~ F000:A042 db 82h ; é F000:A043 db 82h ; é F000:A044 db 7Eh ; ~ F000:A045 db 0 F000:A046 db 0 F000:A047 db 0 F000:A048 db 0 F000:A049 db 0 F000:A04A db 0 F000:A04B db 0 F000:A04C db 80h ; Ç F000:A04D db 80h ; Ç F000:A04E db 0BCh ; - F000:A04F db 0C2h ; T F000:A050 db 82h ; é F000:A051 db 82h ; é F000:A052 db 82h ; é F000:A053 db 0C2h ; T F000:A054 db 0BCh ; - F000:A055 db 0 F000:A056 db 0 F000:A057 db 0 F000:A058 db 0 F000:A059 db 0 F000:A05A db 0 F000:A05B db 0 F000:A05C db 0 F000:A05D db 0 F000:A05E db 7Ch ; | F000:A05F db 82h ; é F000:A060 db 80h ; Ç F000:A061 db 80h ; Ç F000:A062 db 80h ; Ç F000:A063 db 82h ; é F000:A064 db 7Ch ; | F000:A065 db 0 F000:A066 db 0 F000:A067 db 0 F000:A068 db 0 F000:A069 db 0 F000:A06A db 0 F000:A06B db 0 F000:A06C db 2 F000:A06D db 2 F000:A06E db 7Ah ; z F000:A06F db 86h ; æ F000:A070 db 82h ; é F000:A071 db 82h ; é F000:A072 db 82h ; é F000:A073 db 86h ; æ F000:A074 db 7Ah ; z F000:A075 db 0 F000:A076 db 0 F000:A077 db 0 F000:A078 db 0 F000:A079 db 0 F000:A07A db 0 F000:A07B db 0 F000:A07C db 0 F000:A07D db 0 F000:A07E db 7Ch ; | F000:A07F db 82h ; é F000:A080 db 82h ; é F000:A081 db 0FEh ; ¦ F000:A082 db 80h ; Ç F000:A083 db 80h ; Ç F000:A084 db 7Ch ; | F000:A085 db 0 F000:A086 db 0 F000:A087 db 0 F000:A088 db 0 F000:A089 db 0 F000:A08A db 0 F000:A08B db 0 F000:A08C db 1Ch F000:A08D db 22h ; " F000:A08E db 20h F000:A08F db 20h F000:A090 db 0F8h ; ° F000:A091 db 20h F000:A092 db 20h F000:A093 db 20h F000:A094 db 20h F000:A095 db 0 F000:A096 db 0 F000:A097 db 0 F000:A098 db 0 F000:A099 db 0 F000:A09A db 0 F000:A09B db 0 F000:A09C db 0 F000:A09D db 0 F000:A09E db 7Ch ; | F000:A09F db 82h ; é F000:A0A0 db 82h ; é F000:A0A1 db 82h ; é F000:A0A2 db 7Eh ; ~ F000:A0A3 db 2 F000:A0A4 db 2 F000:A0A5 db 82h ; é F000:A0A6 db 7Ch ; | F000:A0A7 db 0 F000:A0A8 db 0 F000:A0A9 db 0 F000:A0AA db 0 F000:A0AB db 0 F000:A0AC db 80h ; Ç F000:A0AD db 80h ; Ç F000:A0AE db 0BCh ; - F000:A0AF db 0C2h ; T F000:A0B0 db 82h ; é F000:A0B1 db 82h ; é F000:A0B2 db 82h ; é F000:A0B3 db 82h ; é F000:A0B4 db 82h ; é F000:A0B5 db 0 F000:A0B6 db 0 F000:A0B7 db 0 F000:A0B8 db 0 F000:A0B9 db 0 F000:A0BA db 0 F000:A0BB db 0 F000:A0BC db 10h F000:A0BD db 0 F000:A0BE db 70h ; p F000:A0BF db 10h F000:A0C0 db 10h F000:A0C1 db 10h F000:A0C2 db 10h F000:A0C3 db 10h F000:A0C4 db 7Ch ; | F000:A0C5 db 0 F000:A0C6 db 0 F000:A0C7 db 0 F000:A0C8 db 0 F000:A0C9 db 0 F000:A0CA db 0 F000:A0CB db 0 F000:A0CC db 4 F000:A0CD db 0 F000:A0CE db 1Ch F000:A0CF db 4 F000:A0D0 db 4 F000:A0D1 db 4 F000:A0D2 db 4 F000:A0D3 db 4 F000:A0D4 db 84h ; ä F000:A0D5 db 84h ; ä F000:A0D6 db 78h ; x F000:A0D7 db 0 F000:A0D8 db 0 F000:A0D9 db 0 F000:A0DA db 0 F000:A0DB db 0 F000:A0DC db 80h ; Ç F000:A0DD db 80h ; Ç F000:A0DE db 84h ; ä F000:A0DF db 88h ; ³ F000:A0E0 db 0F0h ; ­ F000:A0E1 db 90h ; É F000:A0E2 db 88h ; ³ F000:A0E3 db 84h ; ä F000:A0E4 db 82h ; é F000:A0E5 db 0 F000:A0E6 db 0 F000:A0E7 db 0 F000:A0E8 db 0 F000:A0E9 db 0 F000:A0EA db 0 F000:A0EB db 0 F000:A0EC db 70h ; p F000:A0ED db 10h F000:A0EE db 10h F000:A0EF db 10h F000:A0F0 db 10h F000:A0F1 db 10h F000:A0F2 db 10h F000:A0F3 db 10h F000:A0F4 db 7Ch ; | F000:A0F5 db 0 F000:A0F6 db 0 F000:A0F7 db 0 F000:A0F8 db 0 F000:A0F9 db 0 F000:A0FA db 0 F000:A0FB db 0 F000:A0FC db 0 F000:A0FD db 0 F000:A0FE db 0ECh ; ý F000:A0FF db 92h ; å F000:A100 db 92h ; å F000:A101 db 92h ; å F000:A102 db 92h ; å F000:A103 db 92h ; å F000:A104 db 92h ; å F000:A105 db 0 F000:A106 db 0 F000:A107 db 0 F000:A108 db 0 F000:A109 db 0 F000:A10A db 0 F000:A10B db 0 F000:A10C db 0 F000:A10D db 0 F000:A10E db 0FCh ; Ø F000:A10F db 82h ; é F000:A110 db 82h ; é F000:A111 db 82h ; é F000:A112 db 82h ; é F000:A113 db 82h ; é F000:A114 db 82h ; é F000:A115 db 0 F000:A116 db 0 F000:A117 db 0 F000:A118 db 0 F000:A119 db 0 F000:A11A db 0 F000:A11B db 0 F000:A11C db 0 F000:A11D db 0 F000:A11E db 7Ch ; | F000:A11F db 82h ; é F000:A120 db 82h ; é F000:A121 db 82h ; é F000:A122 db 82h ; é F000:A123 db 82h ; é F000:A124 db 7Ch ; | F000:A125 db 0 F000:A126 db 0 F000:A127 db 0 F000:A128 db 0 F000:A129 db 0 F000:A12A db 0 F000:A12B db 0 F000:A12C db 0 F000:A12D db 0 F000:A12E db 0B8h ; ª F000:A12F db 0C4h ; ¦ F000:A130 db 82h ; é F000:A131 db 82h ; é F000:A132 db 82h ; é F000:A133 db 0C4h ; ¦ F000:A134 db 0B8h ; ª F000:A135 db 80h ; Ç F000:A136 db 80h ; Ç F000:A137 db 0 F000:A138 db 0 F000:A139 db 0 F000:A13A db 0 F000:A13B db 0 F000:A13C db 0 F000:A13D db 0 F000:A13E db 3Ah ; : F000:A13F db 46h ; F F000:A140 db 82h ; é F000:A141 db 82h ; é F000:A142 db 82h ; é F000:A143 db 46h ; F F000:A144 db 3Ah ; : F000:A145 db 2 F000:A146 db 2 F000:A147 db 0 F000:A148 db 0 F000:A149 db 0 F000:A14A db 0 F000:A14B db 0 F000:A14C db 0 F000:A14D db 0 F000:A14E db 0BCh ; - F000:A14F db 42h ; B F000:A150 db 40h ; @ F000:A151 db 40h ; @ F000:A152 db 40h ; @ F000:A153 db 40h ; @ F000:A154 db 40h ; @ F000:A155 db 0 F000:A156 db 0 F000:A157 db 0 F000:A158 db 0 F000:A159 db 0 F000:A15A db 0 F000:A15B db 0 F000:A15C db 0 F000:A15D db 0 F000:A15E db 7Ch ; | F000:A15F db 82h ; é F000:A160 db 40h ; @ F000:A161 db 38h ; 8 F000:A162 db 4 F000:A163 db 82h ; é F000:A164 db 7Ch ; | F000:A165 db 0 F000:A166 db 0 F000:A167 db 0 F000:A168 db 0 F000:A169 db 0 F000:A16A db 0 F000:A16B db 0 F000:A16C db 10h F000:A16D db 10h F000:A16E db 7Ch ; | F000:A16F db 10h F000:A170 db 10h F000:A171 db 10h F000:A172 db 10h F000:A173 db 12h F000:A174 db 0Ch F000:A175 db 0 F000:A176 db 0 F000:A177 db 0 F000:A178 db 0 F000:A179 db 0 F000:A17A db 0 F000:A17B db 0 F000:A17C db 0 F000:A17D db 0 F000:A17E db 82h ; é F000:A17F db 82h ; é F000:A180 db 82h ; é F000:A181 db 82h ; é F000:A182 db 82h ; é F000:A183 db 82h ; é F000:A184 db 7Ch ; | F000:A185 db 0 F000:A186 db 0 F000:A187 db 0 F000:A188 db 0 F000:A189 db 0 F000:A18A db 0 F000:A18B db 0 F000:A18C db 0 F000:A18D db 0 F000:A18E db 82h ; é F000:A18F db 82h ; é F000:A190 db 82h ; é F000:A191 db 82h ; é F000:A192 db 44h ; D F000:A193 db 28h ; ( F000:A194 db 10h F000:A195 db 0 F000:A196 db 0 F000:A197 db 0 F000:A198 db 0 F000:A199 db 0 F000:A19A db 0 F000:A19B db 0 F000:A19C db 0 F000:A19D db 0 F000:A19E db 82h ; é F000:A19F db 82h ; é F000:A1A0 db 82h ; é F000:A1A1 db 92h ; å F000:A1A2 db 92h ; å F000:A1A3 db 92h ; å F000:A1A4 db 6Ch ; l F000:A1A5 db 0 F000:A1A6 db 0 F000:A1A7 db 0 F000:A1A8 db 0 F000:A1A9 db 0 F000:A1AA db 0 F000:A1AB db 0 F000:A1AC db 0 F000:A1AD db 0 F000:A1AE db 84h ; ä F000:A1AF db 48h ; H F000:A1B0 db 30h ; 0 F000:A1B1 db 30h ; 0 F000:A1B2 db 30h ; 0 F000:A1B3 db 48h ; H F000:A1B4 db 84h ; ä F000:A1B5 db 0 F000:A1B6 db 0 F000:A1B7 db 0 F000:A1B8 db 0 F000:A1B9 db 0 F000:A1BA db 0 F000:A1BB db 0 F000:A1BC db 0 F000:A1BD db 0 F000:A1BE db 82h ; é F000:A1BF db 82h ; é F000:A1C0 db 82h ; é F000:A1C1 db 82h ; é F000:A1C2 db 44h ; D F000:A1C3 db 28h ; ( F000:A1C4 db 10h F000:A1C5 db 20h F000:A1C6 db 0C0h ; L F000:A1C7 db 0 F000:A1C8 db 0 F000:A1C9 db 0 F000:A1CA db 0 F000:A1CB db 0 F000:A1CC db 0 F000:A1CD db 0 F000:A1CE db 0FEh ; ¦ F000:A1CF db 4 F000:A1D0 db 8 F000:A1D1 db 10h F000:A1D2 db 20h F000:A1D3 db 40h ; @ F000:A1D4 db 0FEh ; ¦ F000:A1D5 db 0 F000:A1D6 db 0 F000:A1D7 db 0 F000:A1D8 db 0 F000:A1D9 db 0 F000:A1DA db 0 F000:A1DB db 0 F000:A1DC db 18h F000:A1DD db 20h F000:A1DE db 20h F000:A1DF db 20h F000:A1E0 db 0C0h ; L F000:A1E1 db 20h F000:A1E2 db 20h F000:A1E3 db 20h F000:A1E4 db 18h F000:A1E5 db 0 F000:A1E6 db 0 F000:A1E7 db 0 F000:A1E8 db 0 F000:A1E9 db 0 F000:A1EA db 0 F000:A1EB db 0 F000:A1EC db 10h F000:A1ED db 10h F000:A1EE db 10h F000:A1EF db 10h F000:A1F0 db 0 F000:A1F1 db 10h F000:A1F2 db 10h F000:A1F3 db 10h F000:A1F4 db 10h F000:A1F5 db 0 F000:A1F6 db 0 F000:A1F7 db 0 F000:A1F8 db 0 F000:A1F9 db 0 F000:A1FA db 0 F000:A1FB db 0 F000:A1FC db 60h ; ` F000:A1FD db 10h F000:A1FE db 10h F000:A1FF db 10h F000:A200 db 0Ch F000:A201 db 10h F000:A202 db 10h F000:A203 db 10h F000:A204 db 60h ; ` F000:A205 db 0 F000:A206 db 0 F000:A207 db 0 F000:A208 db 0 F000:A209 db 0 F000:A20A db 0 F000:A20B db 0 F000:A20C db 22h ; " F000:A20D db 54h ; T F000:A20E db 88h ; ³ F000:A20F db 0 F000:A210 db 0 F000:A211 db 0 F000:A212 db 0 F000:A213 db 0 F000:A214 db 0 F000:A215 db 0 F000:A216 db 0 F000:A217 db 0 F000:A218 db 0 F000:A219 db 0 F000:A21A db 0 F000:A21B db 0 F000:A21C db 0 F000:A21D db 0 F000:A21E db 10h F000:A21F db 28h ; ( F000:A220 db 44h ; D F000:A221 db 82h ; é F000:A222 db 82h ; é F000:A223 db 82h ; é F000:A224 db 0FEh ; ¦ F000:A225 db 0 F000:A226 db 0 F000:A227 db 0 F000:A228 db 0 F000:A229 db 0 F000:A22A db 0 F000:A22B db 0 F000:A22C db 0 F000:A22D db 0 F000:A22E db 0 F000:A22F db 0 F000:A230 db 7 F000:A231 db 4 F000:A232 db 60h ; ` F000:A233 db 3 F000:A234 db 61h ; a F000:A235 db 78h ; x F000:A236 db 0F0h ; ­ F000:A237 db 2Ah ; * F000:A238 db 71h ; q F000:A239 db 3 F000:A23A db 30h ; 0 F000:A23B db 1 F000:A23C db 7 F000:A23D db 2 F000:A23E db 60h ; ` F000:A23F db 0 F000:A240 db 61h ; a F000:A241 db 70h ; p F000:A242 db 30h ; 0 F000:A243 db 1 F000:A244 db 7 F000:A245 db 6 F000:A246 db 60h ; ` F000:A247 db 3 F000:A248 db 61h ; a F000:A249 db 0F8h ; ° F000:A24A db 30h ; 0 F000:A24B db 1 F000:A24C db 7 F000:A24D db 5 F000:A24E db 60h ; ` F000:A24F db 2 F000:A250 db 61h ; a F000:A251 db 0F8h ; ° F000:A252 db 30h ; 0 F000:A253 db 1 F000:A254 db 7 F000:A255 db 7 F000:A256 db 60h ; ` F000:A257 db 0 F000:A258 db 61h ; a F000:A259 db 0E0h ; Ó F000:A25A db 30h ; 0 F000:A25B db 1 F000:A25C db 22h ; " F000:A25D db 6 F000:A25E db 7 F000:A25F db 8 F000:A260 db 61h ; a F000:A261 db 0 F000:A262 db 60h ; ` F000:A263 db 0E8h ; À F000:A264 db 30h ; 0 F000:A265 db 1 F000:A266 db 7 F000:A267 db 0 F000:A268 db 70h ; p F000:A269 db 1 F000:A26A db 30h ; 0 F000:A26B db 1 F000:A26C db 7 F000:A26D db 1 F000:A26E db 30h ; 0 F000:A26F db 1 F000:A270 db 21h ; ! F000:A271 db 7 F000:A272 db 23h ; # F000:A273 db 0 F000:A274 db 24h ; $ F000:A275 db 10h F000:A276 db 23h ; # F000:A277 db 1 F000:A278 db 24h ; $ F000:A279 db 0 F000:A27A db 23h ; # F000:A27B db 2 F000:A27C db 24h ; $ F000:A27D db 0CFh ; ¤ F000:A27E db 0 F000:A27F db 0 F000:A280 db 7 F000:A281 db 7 F000:A282 db 0E0h ; Ó F000:A283 db 3 F000:A284 db 0E1h ; ß F000:A285 db 3 F000:A286 db 0E2h ; Ô F000:A287 db 3 F000:A288 db 0E3h ; Ñ F000:A289 db 0 F000:A28A db 0E5h ; ò F000:A28B db 2 F000:A28C db 0E6h ; Š F000:A28D db 2 F000:A28E db 0E4h ; ñ F000:A28F db 0 F000:A290 F000:A290 ; =============== S U B R O U T I N E ======================================= F000:A290 F000:A290 F000:A290 sub_FA290 proc near ; CODE XREF: F000:loc_F5C95p F000:A290 mov word ptr ds:1Ch, 537h F000:A296 mov word ptr ds:20h, 53Ah F000:A29C mov word ptr ds:24h, 53Dh F000:A2A2 mov word ptr ds:44h, 540h F000:A2A8 mov word ptr ds:48h, 543h F000:A2AE mov word ptr ds:4Ch, 546h F000:A2B4 mov word ptr ds:50h, 549h F000:A2BA mov word ptr ds:54h, 54Ch F000:A2C0 mov word ptr ds:58h, 54Fh F000:A2C6 mov word ptr ds:5Ch, 552h F000:A2CC mov word ptr ds:68h, 555h F000:A2D2 mov word ptr ds:0BCh, 558h F000:A2D8 mov word ptr ds:3E4h, 55Bh F000:A2DE mov word ptr ds:3ECh, 55Eh F000:A2E4 mov word ptr ds:3F4h, 561h F000:A2EA mov al, 36h ; '6' F000:A2EC out 43h, al ; Timer 8253-5 (AT: 8254.2). F000:A2EE xor al, al F000:A2F0 out 40h, al ; Timer 8253-5 (AT: 8254.2). F000:A2F2 out 40h, al ; Timer 8253-5 (AT: 8254.2). F000:A2F4 mov word ptr ds:400h, 3F8h F000:A2FA mov word ptr ds:402h, 2F8h F000:A300 mov word ptr ds:408h, 378h F000:A306 mov ax, 1Eh F000:A309 or word ptr ds:410h, 4 F000:A30E mov ds:41Ah, ax F000:A311 mov ds:41Ch, ax F000:A314 mov ds:480h, ax F000:A317 add ax, 20h ; ' ' F000:A31A mov ds:482h, ax F000:A31D mov dx, 3FAh F000:A320 mov al, 1 F000:A322 out dx, al ; COM: interrupt identification register bits: F000:A322 ; 0: 1=no interrupt pending F000:A322 ; 1: 00=receiver line status interrupt. Occurs upon: F000:A322 ; overrun, parity, or framing error, or break F000:A322 ; 01=received data available F000:A322 ; 10=transmitter buffer empty F000:A322 ; 11=modem status. F000:A323 mov dh, 2 F000:A325 out dx, al ; COM: interrupt identification register bits: F000:A325 ; 0: 1=no interrupt pending F000:A325 ; 1: 00=receiver line status interrupt. Occurs upon: F000:A325 ; overrun, parity, or framing error, or break F000:A325 ; 01=received data available F000:A325 ; 10=transmitter buffer empty F000:A325 ; 11=modem status. F000:A326 mov al, 0FEh ; '¦' F000:A328 out 21h, al ; Interrupt controller, 8259A. F000:A32A mov al, 0AEh ; '«' F000:A32C out 64h, al ; AT Keyboard controller 8042. F000:A32E retn F000:A32E sub_FA290 endp F000:A32E F000:A32F F000:A32F ; =============== S U B R O U T I N E ======================================= F000:A32F F000:A32F F000:A32F sub_FA32F proc far F000:A32F pusha F000:A330 mov bp, sp F000:A332 push es F000:A333 mov bx, [bp+14h] F000:A336 cmp bx, 2 F000:A339 jb short loc_FA33D F000:A33B int 1 ; - internal hardware - SINGLE-STEP F000:A33B ; generated at end of each machine instruction if TF bit in FLAGS is set F000:A33D F000:A33D loc_FA33D: ; CODE XREF: sub_FA32F+Aj F000:A33D shl bx, 1 F000:A33F call cs:off_FA371[bx] F000:A344 pop es F000:A345 popa F000:A346 xor ax, ax F000:A348 retf F000:A348 sub_FA32F endp F000:A348 F000:A348 ; --------------------------------------------------------------------------- F000:A349 db 0CDh ; = F000:A34A db 1 F000:A34B db 0CBh ; T F000:A34C db 2Eh ; . F000:A34D db 8Bh ; õ F000:A34E db 0C0h ; L F000:A34F db 90h ; É F000:A350 db 24h ; $ F000:A351 db 50h ; P F000:A352 db 6Eh ; n F000:A353 db 50h ; P F000:A354 db 10h F000:A355 db 21h ; ! F000:A356 db 0 F000:A357 db 0 F000:A358 db 0E0h ; Ó F000:A359 db 0 F000:A35A db 0 F000:A35B db 0 F000:A35C db 0 F000:A35D db 2Fh ; / F000:A35E db 0A3h ; ú F000:A35F db 0 F000:A360 db 0F0h ; ­ F000:A361 db 49h ; I F000:A362 db 0A3h ; ú F000:A363 db 0 F000:A364 db 0 F000:A365 db 0Fh F000:A366 db 0 F000:A367 db 0 F000:A368 db 0 F000:A369 db 0 F000:A36A db 0 F000:A36B db 0 F000:A36C db 0 F000:A36D db 0 F000:A36E db 0 F000:A36F db 0 F000:A370 db 0 F000:A371 off_FA371 dw offset sub_FA375 ; DATA XREF: sub_FA32F+10r F000:A373 dw offset sub_FA386 F000:A375 F000:A375 ; =============== S U B R O U T I N E ======================================= F000:A375 F000:A375 F000:A375 sub_FA375 proc near ; CODE XREF: sub_FA32F+10p F000:A375 ; DATA XREF: F000:off_FA371o F000:A375 les bx, [bp+16h] F000:A378 mov word ptr es:[bx], 1 F000:A37D les bx, [bp+1Ah] F000:A380 mov word ptr es:[bx], 400h F000:A385 retn F000:A385 sub_FA375 endp F000:A385 F000:A386 F000:A386 ; =============== S U B R O U T I N E ======================================= F000:A386 F000:A386 F000:A386 sub_FA386 proc near ; CODE XREF: sub_FA32F+10p F000:A386 ; DATA XREF: F000:A373o F000:A386 les si, [bp+16h] F000:A389 movzx bx, byte ptr es:[si] F000:A38D inc byte ptr es:[si] F000:A390 cmp bl, 0 F000:A393 jb short loc_FA399 F000:A395 mov byte ptr es:[si], 0FFh F000:A399 F000:A399 loc_FA399: ; CODE XREF: sub_FA386+Dj F000:A399 shl bx, 1 F000:A39B mov si, cs:[bx-5C55h] F000:A3A0 les di, [bp+1Ah] F000:A3A3 mov cx, cs:[si] F000:A3A6 cld F000:A3A7 rep movs byte ptr es:[di], byte ptr cs:[si] F000:A3AA retn F000:A3AA sub_FA386 endp F000:A3AA F000:A3AA ; --------------------------------------------------------------------------- F000:A3AB db 0ADh ; º F000:A3AC db 0A3h ; ú F000:A3AD db 25h ; % F000:A3AE db 0 F000:A3AF db 0 F000:A3B0 db 41h ; A F000:A3B1 db 0D0h ; ð F000:A3B2 db 0 F000:A3B3 db 0 F000:A3B4 db 8 F000:A3B5 db 0 F000:A3B6 db 0 F000:A3B7 db 3 F000:A3B8 db 0 F000:A3B9 db 22h ; " F000:A3BA db 4 F000:A3BB db 0 F000:A3BC db 47h ; G F000:A3BD db 1 F000:A3BE db 20h F000:A3BF db 0 F000:A3C0 db 20h F000:A3C1 db 0 F000:A3C2 db 0 F000:A3C3 db 2 F000:A3C4 db 47h ; G F000:A3C5 db 1 F000:A3C6 db 0A0h ; á F000:A3C7 db 0 F000:A3C8 db 0A0h ; á F000:A3C9 db 0 F000:A3CA db 0 F000:A3CB db 2 F000:A3CC db 79h ; y F000:A3CD db 4Dh ; M F000:A3CE db 79h ; y F000:A3CF db 87h ; ç F000:A3D0 db 79h ; y F000:A3D1 db 87h ; ç F000:A3D2 db 45h ; E F000:A3D3 db 0 F000:A3D4 db 1 F000:A3D5 db 41h ; A F000:A3D6 db 0D0h ; ð F000:A3D7 db 2 F000:A3D8 db 0 F000:A3D9 db 2 F000:A3DA db 0 F000:A3DB db 8 F000:A3DC db 1 F000:A3DD db 0 F000:A3DE db 3 F000:A3DF db 0 F000:A3E0 db 2Ah ; * F000:A3E1 db 10h F000:A3E2 db 0 F000:A3E3 db 47h ; G F000:A3E4 db 1 F000:A3E5 db 0 F000:A3E6 db 0 F000:A3E7 db 0 F000:A3E8 db 0 F000:A3E9 db 0 F000:A3EA db 10h F000:A3EB db 47h ; G F000:A3EC db 1 F000:A3ED db 81h ; ü F000:A3EE db 0 F000:A3EF db 81h ; ü F000:A3F0 db 0 F000:A3F1 db 0 F000:A3F2 db 3 F000:A3F3 db 47h ; G F000:A3F4 db 1 F000:A3F5 db 87h ; ç F000:A3F6 db 0 F000:A3F7 db 87h ; ç F000:A3F8 db 0 F000:A3F9 db 0 F000:A3FA db 1 F000:A3FB db 47h ; G F000:A3FC db 1 F000:A3FD db 89h ; ë F000:A3FE db 0 F000:A3FF db 89h ; ë F000:A400 db 0 F000:A401 db 0 F000:A402 db 3 F000:A403 db 47h ; G F000:A404 db 1 F000:A405 db 8Fh ; Æ F000:A406 db 0 F000:A407 db 8Fh ; Æ F000:A408 db 0 F000:A409 db 0 F000:A40A db 3 F000:A40B db 47h ; G F000:A40C db 1 F000:A40D db 0C0h ; L F000:A40E db 0 F000:A40F db 0C0h ; L F000:A410 db 0 F000:A411 db 20h F000:A412 db 79h ; y F000:A413 db 0A3h ; ú F000:A414 db 79h ; y F000:A415 db 87h ; ç F000:A416 db 79h ; y F000:A417 db 87h ; ç F000:A418 db 1Dh F000:A419 db 0 F000:A41A db 2 F000:A41B db 41h ; A F000:A41C db 0D0h ; ð F000:A41D db 1 F000:A41E db 0 F000:A41F db 8 F000:A420 db 2 F000:A421 db 1 F000:A422 db 3 F000:A423 db 0 F000:A424 db 22h ; " F000:A425 db 1 F000:A426 db 0 F000:A427 db 47h ; G F000:A428 db 1 F000:A429 db 40h ; @ F000:A42A db 0 F000:A42B db 40h ; @ F000:A42C db 0 F000:A42D db 0 F000:A42E db 4 F000:A42F db 79h ; y F000:A430 db 98h ; œ F000:A431 db 79h ; y F000:A432 db 87h ; ç F000:A433 db 79h ; y F000:A434 db 87h ; ç F000:A435 db 1Dh F000:A436 db 0 F000:A437 db 3 F000:A438 db 41h ; A F000:A439 db 0D0h ; ð F000:A43A db 0Bh F000:A43B db 0 F000:A43C db 8 F000:A43D db 3 F000:A43E db 0 F000:A43F db 3 F000:A440 db 0 F000:A441 db 22h ; " F000:A442 db 0 F000:A443 db 1 F000:A444 db 47h ; G F000:A445 db 1 F000:A446 db 70h ; p F000:A447 db 0 F000:A448 db 70h ; p F000:A449 db 0 F000:A44A db 0 F000:A44B db 2 F000:A44C db 79h ; y F000:A44D db 3Ah ; : F000:A44E db 79h ; y F000:A44F db 87h ; ç F000:A450 db 79h ; y F000:A451 db 87h ; ç F000:A452 db 25h ; % F000:A453 db 0 F000:A454 db 4 F000:A455 db 41h ; A F000:A456 db 0D0h ; ð F000:A457 db 3 F000:A458 db 3 F000:A459 db 9 F000:A45A db 0 F000:A45B db 0 F000:A45C db 0Bh F000:A45D db 0 F000:A45E db 22h ; " F000:A45F db 2 F000:A460 db 0 F000:A461 db 47h ; G F000:A462 db 1 F000:A463 db 60h ; ` F000:A464 db 0 F000:A465 db 60h ; ` F000:A466 db 0 F000:A467 db 0 F000:A468 db 1 F000:A469 db 47h ; G F000:A46A db 1 F000:A46B db 64h ; d F000:A46C db 0 F000:A46D db 64h ; d F000:A46E db 0 F000:A46F db 0 F000:A470 db 1 F000:A471 db 79h ; y F000:A472 db 49h ; I F000:A473 db 79h ; y F000:A474 db 87h ; ç F000:A475 db 79h ; y F000:A476 db 87h ; ç F000:A477 db 1Ah F000:A478 db 0 F000:A479 db 5 F000:A47A db 41h ; A F000:A47B db 0D0h ; ð F000:A47C db 8 F000:A47D db 0 F000:A47E db 8 F000:A47F db 80h ; Ç F000:A480 db 0 F000:A481 db 3 F000:A482 db 0 F000:A483 db 47h ; G F000:A484 db 1 F000:A485 db 61h ; a F000:A486 db 0 F000:A487 db 61h ; a F000:A488 db 0 F000:A489 db 0 F000:A48A db 1 F000:A48B db 79h ; y F000:A48C db 7Ch ; | F000:A48D db 79h ; y F000:A48E db 87h ; ç F000:A48F db 79h ; y F000:A490 db 87h ; ç F000:A491 db 1Dh F000:A492 db 0 F000:A493 db 6 F000:A494 db 41h ; A F000:A495 db 0D0h ; ð F000:A496 db 0Ch F000:A497 db 4 F000:A498 db 0Bh F000:A499 db 1 F000:A49A db 0 F000:A49B db 3 F000:A49C db 0 F000:A49D db 22h ; " F000:A49E db 0 F000:A49F db 20h F000:A4A0 db 47h ; G F000:A4A1 db 1 F000:A4A2 db 0F0h ; ­ F000:A4A3 db 0 F000:A4A4 db 0F0h ; ­ F000:A4A5 db 0 F000:A4A6 db 0 F000:A4A7 db 10h F000:A4A8 db 79h ; y F000:A4A9 db 0Dh F000:A4AA db 79h ; y F000:A4AB db 87h ; ç F000:A4AC db 79h ; y F000:A4AD db 87h ; ç F000:A4AE db 66h ; f F000:A4AF db 0 F000:A4B0 db 7 F000:A4B1 db 41h ; A F000:A4B2 db 0D0h ; ð F000:A4B3 db 0Ch F000:A4B4 db 1 F000:A4B5 db 5 F000:A4B6 db 0 F000:A4B7 db 0 F000:A4B8 db 3 F000:A4B9 db 0 F000:A4BA db 86h ; æ F000:A4BB db 9 F000:A4BC db 0 F000:A4BD db 7 F000:A4BE db 0 F000:A4BF db 0 F000:A4C0 db 0 F000:A4C1 db 0 F000:A4C2 db 0 F000:A4C3 db 0 F000:A4C4 db 0Ah F000:A4C5 db 0 F000:A4C6 db 86h ; æ F000:A4C7 db 9 F000:A4C8 db 0 F000:A4C9 db 12h F000:A4CA db 0 F000:A4CB db 0 F000:A4CC db 1 F000:A4CD db 40h ; @ F000:A4CE db 0 F000:A4CF db 10h F000:A4D0 db 0 F000:A4D1 db 0 F000:A4D2 db 86h ; æ F000:A4D3 db 9 F000:A4D4 db 0 F000:A4D5 db 12h F000:A4D6 db 0 F000:A4D7 db 80h ; Ç F000:A4D8 db 0 F000:A4D9 db 40h ; @ F000:A4DA db 0 F000:A4DB db 80h ; Ç F000:A4DC db 0 F000:A4DD db 0 F000:A4DE db 86h ; æ F000:A4DF db 9 F000:A4E0 db 0 F000:A4E1 db 12h F000:A4E2 db 0 F000:A4E3 db 80h ; Ç F000:A4E4 db 1 F000:A4E5 db 40h ; @ F000:A4E6 db 0 F000:A4E7 db 80h ; Ç F000:A4E8 db 7Eh ; ~ F000:A4E9 db 0 F000:A4EA db 86h ; æ F000:A4EB db 9 F000:A4EC db 0 F000:A4ED db 12h F000:A4EE db 0 F000:A4EF db 0 F000:A4F0 db 0 F000:A4F1 db 41h ; A F000:A4F2 db 0 F000:A4F3 db 80h ; Ç F000:A4F4 db 1 F000:A4F5 db 0 F000:A4F6 db 86h ; æ F000:A4F7 db 9 F000:A4F8 db 0 F000:A4F9 db 12h F000:A4FA db 0 F000:A4FB db 0 F000:A4FC db 0FCh ; Ø F000:A4FD db 0FFh F000:A4FE db 0 F000:A4FF db 0 F000:A500 db 4 F000:A501 db 0 F000:A502 db 86h ; æ F000:A503 db 9 F000:A504 db 0 F000:A505 db 7 F000:A506 db 0 F000:A507 db 0 F000:A508 db 10h F000:A509 db 0 F000:A50A db 0 F000:A50B db 0 F000:A50C db 0C0h ; L F000:A50D db 1 F000:A50E db 79h ; y F000:A50F db 4Ah ; J F000:A510 db 79h ; y F000:A511 db 87h ; ç F000:A512 db 79h ; y F000:A513 db 87h ; ç F000:A514 db 42h ; B F000:A515 db 0 F000:A516 db 8 F000:A517 db 41h ; A F000:A518 db 0D0h ; ð F000:A519 db 0Ch F000:A51A db 2 F000:A51B db 8 F000:A51C db 80h ; Ç F000:A51D db 0 F000:A51E db 3 F000:A51F db 0 F000:A520 db 86h ; æ F000:A521 db 9 F000:A522 db 0 F000:A523 db 32h ; 2 F000:A524 db 0 F000:A525 db 0 F000:A526 db 0Fh F000:A527 db 0 F000:A528 db 0 F000:A529 db 40h ; @ F000:A52A db 0 F000:A52B db 0 F000:A52C db 86h ; æ F000:A52D db 9 F000:A52E db 0 F000:A52F db 32h ; 2 F000:A530 db 0 F000:A531 db 40h ; @ F000:A532 db 0Fh F000:A533 db 0 F000:A534 db 0 F000:A535 db 40h ; @ F000:A536 db 0 F000:A537 db 0 F000:A538 db 86h ; æ F000:A539 db 9 F000:A53A db 0 F000:A53B db 32h ; 2 F000:A53C db 0 F000:A53D db 80h ; Ç F000:A53E db 0Fh F000:A53F db 0 F000:A540 db 0 F000:A541 db 40h ; @ F000:A542 db 0 F000:A543 db 0 F000:A544 db 86h ; æ F000:A545 db 9 F000:A546 db 0 F000:A547 db 32h ; 2 F000:A548 db 0 F000:A549 db 0C0h ; L F000:A54A db 0Fh F000:A54B db 0 F000:A54C db 0 F000:A54D db 40h ; @ F000:A54E db 0 F000:A54F db 0 F000:A550 db 79h ; y F000:A551 db 0C7h ; ã F000:A552 db 79h ; y F000:A553 db 87h ; ç F000:A554 db 79h ; y F000:A555 db 87h ; ç F000:A556 db 2Ah ; * F000:A557 db 0 F000:A558 db 9 F000:A559 db 41h ; A F000:A55A db 0D0h ; ð F000:A55B db 0Ah F000:A55C db 3 F000:A55D db 6 F000:A55E db 4 F000:A55F db 0 F000:A560 db 3 F000:A561 db 0 F000:A562 db 47h ; G F000:A563 db 1 F000:A564 db 0D0h ; ð F000:A565 db 4 F000:A566 db 0D0h ; ð F000:A567 db 4 F000:A568 db 0 F000:A569 db 2 F000:A56A db 47h ; G F000:A56B db 1 F000:A56C db 0F8h ; ° F000:A56D db 0Ch F000:A56E db 0F8h ; ° F000:A56F db 0Ch F000:A570 db 0 F000:A571 db 8 F000:A572 db 47h ; G F000:A573 db 1 F000:A574 db 80h ; Ç F000:A575 db 4 F000:A576 db 80h ; Ç F000:A577 db 4 F000:A578 db 0 F000:A579 db 10h F000:A57A db 79h ; y F000:A57B db 0DDh ; Þ F000:A57C db 79h ; y F000:A57D db 87h ; ç F000:A57E db 79h ; y F000:A57F db 87h ; ç F000:A580 db 1Ah F000:A581 db 0 F000:A582 db 0Ah F000:A583 db 41h ; A F000:A584 db 0D0h ; ð F000:A585 db 0Fh F000:A586 db 13h F000:A587 db 9 F000:A588 db 2 F000:A589 db 0 F000:A58A db 80h ; Ç F000:A58B db 1 F000:A58C db 22h ; " F000:A58D db 0 F000:A58E db 10h F000:A58F db 79h ; y F000:A590 db 55h ; U F000:A591 db 30h ; 0 F000:A592 db 22h ; " F000:A593 db 0 F000:A594 db 10h F000:A595 db 38h ; 8 F000:A596 db 79h ; y F000:A597 db 0EDh ; Ý F000:A598 db 79h ; y F000:A599 db 87h ; ç F000:A59A db 1Eh F000:A59B db 0 F000:A59C db 0Bh F000:A59D db 41h ; A F000:A59E db 0D0h ; ð F000:A59F db 0Ch F000:A5A0 db 2 F000:A5A1 db 8 F000:A5A2 db 80h ; Ç F000:A5A3 db 0 F000:A5A4 db 3 F000:A5A5 db 0 F000:A5A6 db 86h ; æ F000:A5A7 db 9 F000:A5A8 db 0 F000:A5A9 db 11h F000:A5AA db 0 F000:A5AB db 0 F000:A5AC db 0Eh F000:A5AD db 0 F000:A5AE db 0 F000:A5AF db 0 F000:A5B0 db 1 F000:A5B1 db 0 F000:A5B2 db 79h ; y F000:A5B3 db 0D8h ; ì F000:A5B4 db 79h ; y F000:A5B5 db 87h ; ç F000:A5B6 db 79h ; y F000:A5B7 db 87h ; ç F000:A5B8 db 22h ; " F000:A5B9 db 0 F000:A5BA db 0Ch F000:A5BB db 41h ; A F000:A5BC db 0D0h ; ð F000:A5BD db 0Ch F000:A5BE db 2 F000:A5BF db 8 F000:A5C0 db 80h ; Ç F000:A5C1 db 0 F000:A5C2 db 3 F000:A5C3 db 0 F000:A5C4 db 47h ; G F000:A5C5 db 1 F000:A5C6 db 0 F000:A5C7 db 4 F000:A5C8 db 0 F000:A5C9 db 4 F000:A5CA db 0 F000:A5CB db 8 F000:A5CC db 47h ; G F000:A5CD db 1 F000:A5CE db 0 F000:A5CF db 8 F000:A5D0 db 0 F000:A5D1 db 8 F000:A5D2 db 0 F000:A5D3 db 8 F000:A5D4 db 79h ; y F000:A5D5 db 0CFh ; ¤ F000:A5D6 db 79h ; y F000:A5D7 db 87h ; ç F000:A5D8 db 79h ; y F000:A5D9 db 87h ; ç F000:A5DA db 45h ; E F000:A5DB db 0 F000:A5DC db 0Dh F000:A5DD db 41h ; A F000:A5DE db 0D0h ; ð F000:A5DF db 5 F000:A5E0 db 1 F000:A5E1 db 7 F000:A5E2 db 0 F000:A5E3 db 2 F000:A5E4 db 80h ; Ç F000:A5E5 db 1 F000:A5E6 db 22h ; " F000:A5E7 db 0 F000:A5E8 db 0 F000:A5E9 db 47h ; G F000:A5EA db 0 F000:A5EB db 0 F000:A5EC db 0 F000:A5ED db 0 F000:A5EE db 0 F000:A5EF db 0 F000:A5F0 db 0 F000:A5F1 db 79h ; y F000:A5F2 db 1Eh F000:A5F3 db 22h ; " F000:A5F4 db 0F8h ; ° F000:A5F5 db 1Fh F000:A5F6 db 30h ; 0 F000:A5F7 db 47h ; G F000:A5F8 db 1 F000:A5F9 db 0F8h ; ° F000:A5FA db 3 F000:A5FB db 0F8h ; ° F000:A5FC db 3 F000:A5FD db 0 F000:A5FE db 8 F000:A5FF db 30h ; 0 F000:A600 db 47h ; G F000:A601 db 1 F000:A602 db 0F8h ; ° F000:A603 db 2 F000:A604 db 0F8h ; ° F000:A605 db 2 F000:A606 db 0 F000:A607 db 8 F000:A608 db 30h ; 0 F000:A609 db 47h ; G F000:A60A db 1 F000:A60B db 0E8h ; À F000:A60C db 3 F000:A60D db 0E8h ; À F000:A60E db 3 F000:A60F db 0 F000:A610 db 8 F000:A611 db 30h ; 0 F000:A612 db 47h ; G F000:A613 db 1 F000:A614 db 0E8h ; À F000:A615 db 2 F000:A616 db 0E8h ; À F000:A617 db 2 F000:A618 db 0 F000:A619 db 8 F000:A61A db 38h ; 8 F000:A61B db 79h ; y F000:A61C db 82h ; é F000:A61D db 79h ; y F000:A61E db 87h ; ç F000:A61F db 30h ; 0 F000:A620 db 0 F000:A621 db 0Eh F000:A622 db 41h ; A F000:A623 db 0D0h ; ð F000:A624 db 7 F000:A625 db 0 F000:A626 db 1 F000:A627 db 2 F000:A628 db 0 F000:A629 db 3 F000:A62A db 0 F000:A62B db 2Ah ; * F000:A62C db 0 F000:A62D db 0 F000:A62E db 47h ; G F000:A62F db 0 F000:A630 db 0 F000:A631 db 0 F000:A632 db 0 F000:A633 db 0 F000:A634 db 0 F000:A635 db 0 F000:A636 db 22h ; " F000:A637 db 0 F000:A638 db 0 F000:A639 db 79h ; y F000:A63A db 0F4h ; ¢ F000:A63B db 30h ; 0 F000:A63C db 2Ah ; * F000:A63D db 4 F000:A63E db 0 F000:A63F db 47h ; G F000:A640 db 1 F000:A641 db 0F2h ; ² F000:A642 db 3 F000:A643 db 0F2h ; ² F000:A644 db 3 F000:A645 db 0 F000:A646 db 4 F000:A647 db 22h ; " F000:A648 db 40h ; @ F000:A649 db 0 F000:A64A db 38h ; 8 F000:A64B db 79h ; y F000:A64C db 59h ; Y F000:A64D db 79h ; y F000:A64E db 87h ; ç F000:A64F db 3Ch ; < F000:A650 db 0 F000:A651 db 0Fh F000:A652 db 41h ; A F000:A653 db 0D0h ; ð F000:A654 db 4 F000:A655 db 0 F000:A656 db 7 F000:A657 db 1 F000:A658 db 0 F000:A659 db 80h ; Ç F000:A65A db 1 F000:A65B db 22h ; " F000:A65C db 0 F000:A65D db 0 F000:A65E db 47h ; G F000:A65F db 0 F000:A660 db 0 F000:A661 db 0 F000:A662 db 0 F000:A663 db 0 F000:A664 db 0 F000:A665 db 0 F000:A666 db 79h ; y F000:A667 db 1Eh F000:A668 db 22h ; " F000:A669 db 0F8h ; ° F000:A66A db 1Fh F000:A66B db 30h ; 0 F000:A66C db 47h ; G F000:A66D db 1 F000:A66E db 78h ; x F000:A66F db 3 F000:A670 db 78h ; x F000:A671 db 3 F000:A672 db 0 F000:A673 db 8 F000:A674 db 30h ; 0 F000:A675 db 47h ; G F000:A676 db 1 F000:A677 db 78h ; x F000:A678 db 2 F000:A679 db 78h ; x F000:A67A db 2 F000:A67B db 0 F000:A67C db 8 F000:A67D db 30h ; 0 F000:A67E db 47h ; G F000:A67F db 1 F000:A680 db 0BCh ; - F000:A681 db 3 F000:A682 db 0BCh ; - F000:A683 db 3 F000:A684 db 0 F000:A685 db 4 F000:A686 db 38h ; 8 F000:A687 db 79h ; y F000:A688 db 32h ; 2 F000:A689 db 79h ; y F000:A68A db 87h ; ç F000:A68B db 45h ; E F000:A68C db 0 F000:A68D db 10h F000:A68E db 41h ; A F000:A68F db 0D0h ; ð F000:A690 db 5 F000:A691 db 1 F000:A692 db 7 F000:A693 db 0 F000:A694 db 2 F000:A695 db 80h ; Ç F000:A696 db 1 F000:A697 db 22h ; " F000:A698 db 0 F000:A699 db 0 F000:A69A db 47h ; G F000:A69B db 0 F000:A69C db 0 F000:A69D db 0 F000:A69E db 0 F000:A69F db 0 F000:A6A0 db 0 F000:A6A1 db 0 F000:A6A2 db 79h ; y F000:A6A3 db 1Eh F000:A6A4 db 22h ; " F000:A6A5 db 0F8h ; ° F000:A6A6 db 1Fh F000:A6A7 db 30h ; 0 F000:A6A8 db 47h ; G F000:A6A9 db 1 F000:A6AA db 0F8h ; ° F000:A6AB db 3 F000:A6AC db 0F8h ; ° F000:A6AD db 3 F000:A6AE db 0 F000:A6AF db 8 F000:A6B0 db 30h ; 0 F000:A6B1 db 47h ; G F000:A6B2 db 1 F000:A6B3 db 0F8h ; ° F000:A6B4 db 2 F000:A6B5 db 0F8h ; ° F000:A6B6 db 2 F000:A6B7 db 0 F000:A6B8 db 8 F000:A6B9 db 30h ; 0 F000:A6BA db 47h ; G F000:A6BB db 1 F000:A6BC db 0E8h ; À F000:A6BD db 3 F000:A6BE db 0E8h ; À F000:A6BF db 3 F000:A6C0 db 0 F000:A6C1 db 8 F000:A6C2 db 30h ; 0 F000:A6C3 db 47h ; G F000:A6C4 db 1 F000:A6C5 db 0E8h ; À F000:A6C6 db 2 F000:A6C7 db 0E8h ; À F000:A6C8 db 2 F000:A6C9 db 0 F000:A6CA db 8 F000:A6CB db 38h ; 8 F000:A6CC db 79h ; y F000:A6CD db 82h ; é F000:A6CE db 79h ; y F000:A6CF db 87h ; ç F000:A6D0 db 56h ; V F000:A6D1 db 0 F000:A6D2 db 11h F000:A6D3 db 0Eh F000:A6D4 db 58h ; X F000:A6D5 db 0 F000:A6D6 db 2 F000:A6D7 db 4 F000:A6D8 db 1 F000:A6D9 db 0 F000:A6DA db 80h ; Ç F000:A6DB db 1 F000:A6DC db 47h ; G F000:A6DD db 0 F000:A6DE db 20h F000:A6DF db 2 F000:A6E0 db 20h F000:A6E1 db 2 F000:A6E2 db 20h F000:A6E3 db 10h F000:A6E4 db 47h ; G F000:A6E5 db 1 F000:A6E6 db 88h ; ³ F000:A6E7 db 3 F000:A6E8 db 88h ; ³ F000:A6E9 db 3 F000:A6EA db 0 F000:A6EB db 4 F000:A6EC db 47h ; G F000:A6ED db 0 F000:A6EE db 30h ; 0 F000:A6EF db 3 F000:A6F0 db 0 F000:A6F1 db 0 F000:A6F2 db 30h ; 0 F000:A6F3 db 2 F000:A6F4 db 23h ; # F000:A6F5 db 20h F000:A6F6 db 0 F000:A6F7 db 0 F000:A6F8 db 2Ah ; * F000:A6F9 db 2 F000:A6FA db 0 F000:A6FB db 2Ah ; * F000:A6FC db 20h F000:A6FD db 0 F000:A6FE db 79h ; y F000:A6FF db 5 F000:A700 db 47h ; G F000:A701 db 1 F000:A702 db 20h F000:A703 db 2 F000:A704 db 80h ; Ç F000:A705 db 2 F000:A706 db 20h F000:A707 db 10h F000:A708 db 47h ; G F000:A709 db 1 F000:A70A db 88h ; ³ F000:A70B db 3 F000:A70C db 88h ; ³ F000:A70D db 3 F000:A70E db 0 F000:A70F db 4 F000:A710 db 47h ; G F000:A711 db 1 F000:A712 db 0 F000:A713 db 3 F000:A714 db 30h ; 0 F000:A715 db 3 F000:A716 db 30h ; 0 F000:A717 db 2 F000:A718 db 23h ; # F000:A719 db 0A0h ; á F000:A71A db 4 F000:A71B db 0 F000:A71C db 2Ah ; * F000:A71D db 0Bh F000:A71E db 0 F000:A71F db 2Ah ; * F000:A720 db 0E0h ; Ó F000:A721 db 0 F000:A722 db 79h ; y F000:A723 db 53h ; S F000:A724 db 79h ; y F000:A725 db 87h ; ç F000:A726 db 22h ; " F000:A727 db 0 F000:A728 db 12h F000:A729 db 41h ; A F000:A72A db 0D0h ; ð F000:A72B db 0B0h ; - F000:A72C db 2Fh ; / F000:A72D db 9 F000:A72E db 80h ; Ç F000:A72F db 0 F000:A730 db 80h ; Ç F000:A731 db 1 F000:A732 db 47h ; G F000:A733 db 1 F000:A734 db 0 F000:A735 db 2 F000:A736 db 1 F000:A737 db 2 F000:A738 db 1 F000:A739 db 1 F000:A73A db 79h ; y F000:A73B db 38h ; 8 F000:A73C db 47h ; G F000:A73D db 1 F000:A73E db 0 F000:A73F db 2 F000:A740 db 1 F000:A741 db 2 F000:A742 db 1 F000:A743 db 1 F000:A744 db 79h ; y F000:A745 db 38h ; 8 F000:A746 db 79h ; y F000:A747 db 87h ; ç F000:A748 db 8 dup(0) F000:A750 F000:A750 ; =============== S U B R O U T I N E ======================================= F000:A750 F000:A750 ; Attributes: bp-based frame F000:A750 F000:A750 sub_FA750 proc far ; CODE XREF: F000:0537j F000:A750 enter 0, 0 F000:A754 push bx F000:A755 push ds F000:A756 lds bx, [bp+2] F000:A759 cmp word ptr [bx], 0E3DBh F000:A75D jz short loc_FA769 F000:A75F cmp word ptr [bx], 3ED9h F000:A763 jz short loc_FA76F F000:A765 F000:A765 loc_FA765: ; CODE XREF: sub_FA750+1Dj F000:A765 ; sub_FA750+23j F000:A765 pop ds F000:A766 pop bx F000:A767 leave F000:A768 iret F000:A769 ; --------------------------------------------------------------------------- F000:A769 F000:A769 loc_FA769: ; CODE XREF: sub_FA750+Dj F000:A769 add word ptr [bp+2], 2 F000:A76D jmp short loc_FA765 F000:A76F ; --------------------------------------------------------------------------- F000:A76F F000:A76F loc_FA76F: ; CODE XREF: sub_FA750+13j F000:A76F add word ptr [bp+2], 4 F000:A773 jmp short loc_FA765 F000:A773 sub_FA750 endp F000:A773 F000:A773 ; --------------------------------------------------------------------------- F000:A775 db 0Bh dup(0) F000:A780 F000:A780 ; =============== S U B R O U T I N E ======================================= F000:A780 F000:A780 F000:A780 sub_FA780 proc far ; CODE XREF: F000:053Aj F000:A780 push eax F000:A782 push ds F000:A783 xor ax, ax F000:A785 mov ds, ax F000:A787 assume ds:nothing F000:A787 mov eax, ds:46Ch F000:A78B inc eax F000:A78D cmp eax, 17FE80h F000:A793 jb short loc_FA79D F000:A795 xor eax, eax F000:A798 mov byte ptr ds:470h, 1 F000:A79D F000:A79D loc_FA79D: ; CODE XREF: sub_FA780+13j F000:A79D mov ds:46Ch, eax F000:A7A1 int 1Ch ; CLOCK TICK F000:A7A3 mov al, 20h ; ' ' F000:A7A5 out 20h, al ; Interrupt controller, 8259A. F000:A7A7 pop ds F000:A7A8 assume ds:nothing F000:A7A8 pop eax F000:A7AA iret F000:A7AA sub_FA780 endp F000:A7AA F000:A7AA ; --------------------------------------------------------------------------- F000:A7AB db 5 dup(0) F000:A7B0 F000:A7B0 ; =============== S U B R O U T I N E ======================================= F000:A7B0 F000:A7B0 F000:A7B0 sub_FA7B0 proc far ; CODE XREF: F000:053Dj F000:A7B0 push ax F000:A7B1 in al, 64h ; AT Keyboard controller 8042. F000:A7B3 test al, 1 F000:A7B5 jz short loc_FA7B9 F000:A7B7 in al, 60h ; AT Keyboard controller 8042. F000:A7B9 F000:A7B9 loc_FA7B9: ; CODE XREF: sub_FA7B0+5j F000:A7B9 mov al, 20h ; ' ' F000:A7BB out 20h, al ; Interrupt controller, 8259A. F000:A7BD pop ax F000:A7BE call sub_F48BC F000:A7C1 iret F000:A7C1 sub_FA7B0 endp F000:A7C1 F000:A7C1 ; --------------------------------------------------------------------------- F000:A7C2 db 0Eh dup(0) F000:A7D0 F000:A7D0 ; =============== S U B R O U T I N E ======================================= F000:A7D0 F000:A7D0 F000:A7D0 sub_FA7D0 proc far ; CODE XREF: F000:0540j F000:A7D0 push ds F000:A7D1 xor ax, ax F000:A7D3 mov ds, ax F000:A7D5 assume ds:nothing F000:A7D5 mov ax, ds:410h F000:A7D8 pop ds F000:A7D9 assume ds:nothing F000:A7D9 iret F000:A7D9 sub_FA7D0 endp F000:A7D9 F000:A7D9 ; --------------------------------------------------------------------------- F000:A7DA db 6 dup(0) F000:A7E0 F000:A7E0 ; =============== S U B R O U T I N E ======================================= F000:A7E0 F000:A7E0 F000:A7E0 sub_FA7E0 proc far ; CODE XREF: F000:0543j F000:A7E0 push ds F000:A7E1 xor ax, ax F000:A7E3 mov ds, ax F000:A7E5 assume ds:nothing F000:A7E5 mov ax, ds:413h F000:A7E8 pop ds F000:A7E9 assume ds:nothing F000:A7E9 iret F000:A7E9 sub_FA7E0 endp F000:A7E9 F000:A7E9 ; --------------------------------------------------------------------------- F000:A7EA db 6 dup(0) F000:A7F0 F000:A7F0 ; =============== S U B R O U T I N E ======================================= F000:A7F0 F000:A7F0 F000:A7F0 sub_FA7F0 proc far ; CODE XREF: F000:0546j F000:A7F0 F000:A7F0 var_52 = dword ptr -52h F000:A7F0 var_4E = dword ptr -4Eh F000:A7F0 var_4A = word ptr -4Ah F000:A7F0 var_48 = dword ptr -48h F000:A7F0 var_44 = word ptr -44h F000:A7F0 var_42 = dword ptr -42h F000:A7F0 var_3E = dword ptr -3Eh F000:A7F0 var_3A = word ptr -3Ah F000:A7F0 var_38 = dword ptr -38h F000:A7F0 var_34 = word ptr -34h F000:A7F0 var_32 = byte ptr -32h F000:A7F0 var_2C = word ptr -2Ch F000:A7F0 arg_0 = byte ptr 4 F000:A7F0 F000:A7F0 push ax F000:A7F1 mov al, 2 F000:A7F3 out 92h, al F000:A7F5 pop ax F000:A7F6 pushad F000:A7F8 push ds F000:A7F9 mov ax, 3000h F000:A7FC mov ds, ax F000:A7FE assume ds:nothing F000:A7FE cmp word ptr ds:600Ch, 9B00h F000:A804 jnz short loc_FA82F F000:A806 mov word ptr ds:60F8h, 0FFFFh F000:A80C mov word ptr ds:60FAh, 0 F000:A812 mov word ptr ds:60FCh, 9B0Fh F000:A818 mov word ptr ds:60FEh, 0 F000:A81E mov ax, 3000h F000:A821 mov ds, ax F000:A823 mov word ptr ds:6408h, 5E61h F000:A829 mov word ptr ds:640Ah, 0F8h ; '°' F000:A82F F000:A82F loc_FA82F: ; CODE XREF: sub_FA7F0+14j F000:A82F pop ds F000:A830 assume ds:nothing F000:A830 popad F000:A832 cmp dl, 80h ; 'Ç' F000:A835 jnz loc_FAAAD F000:A839 cmp ah, 2 F000:A83C ja loc_FAA17 F000:A840 pushad F000:A842 push ds F000:A843 push es F000:A844 push fs F000:A846 push gs F000:A848 push ss F000:A849 xor ah, ah F000:A84B mov si, ax F000:A84D movzx ebx, bx F000:A851 mov di, es F000:A853 movzx edi, di F000:A857 shl edi, 4 F000:A85B add edi, ebx F000:A85E movzx esp, sp F000:A862 sub esp, 30h F000:A866 mov [esp+5Ah+var_52], 0FFFFh F000:A870 mov [esp+5Ah+var_4E], 9B0Fh F000:A87A mov [esp+5Ah+var_42], 0FFFFh F000:A884 mov [esp+5Ah+var_3E], 8F9300h F000:A88E mov ax, ss F000:A890 movzx eax, ax F000:A894 shl eax, 4 F000:A898 mov [esp+5Ah+var_38], eax F000:A89E mov [esp+5Ah+var_3A], 0FFFFh F000:A8A5 mov byte ptr [esp+5Ah+var_38+3], 93h ; 'ô' F000:A8AB shr eax, 10h F000:A8AF xor al, al F000:A8B1 mov [esp+5Ah+var_34], ax F000:A8B6 mov ax, ss F000:A8B8 movzx eax, ax F000:A8BC shl eax, 4 F000:A8C0 add eax, esp F000:A8C3 mov word ptr [esp+5Ah+var_32], 28h ; '(' F000:A8CA mov dword ptr [esp+5Ah+var_32+2], eax F000:A8D0 mov [esp+5Ah+var_2C], 0 F000:A8D7 cli F000:A8D8 mov eax, cr0 F000:A8DB or eax, 1 F000:A8DF mov cr0, eax F000:A8E2 db 66h F000:A8E2 lgdt fword ptr [esp+5Ah+var_32] F000:A8E9 call SET_IDT1 F000:A8EC jmp far ptr 8:0A8F1h F000:A8F1 ; --------------------------------------------------------------------------- F000:A8F1 mov ax, 18h F000:A8F4 mov ds, ax F000:A8F6 assume ds:nothing F000:A8F6 mov es, ax F000:A8F8 assume es:nothing F000:A8F8 mov fs, ax F000:A8FA assume fs:nothing F000:A8FA mov ax, 20h ; ' ' F000:A8FD mov ss, ax F000:A8FF assume ss:nothing F000:A8FF mov al, 35h ; '5' F000:A901 out 70h, al ; CMOS Memory: F000:A901 ; F000:A903 in al, 71h ; CMOS Memory F000:A905 mov ah, al F000:A907 mov al, 34h ; '4' F000:A909 out 70h, al ; CMOS Memory: F000:A909 ; unknown address F000:A90B in al, 71h ; CMOS Memory F000:A90D movzx eax, ax F000:A911 add eax, 10h F000:A915 shl eax, 10h F000:A919 mov eax, [eax] F000:A91D mov [esp+5Ah+var_48], eax F000:A923 mov [esp+5Ah+var_4A], 0FFFFh F000:A92A mov byte ptr [esp+5Ah+var_48+3], 93h ; 'ô' F000:A930 shr eax, 10h F000:A934 mov al, 8Fh ; 'Æ' F000:A936 mov [esp+5Ah+var_44], ax F000:A93B db 66h F000:A93B lgdt fword ptr [esp+5Ah+var_32] F000:A942 mov ax, 10h F000:A945 mov fs, ax F000:A947 assume fs:nothing F000:A947 movzx bx, cl F000:A94A shl bx, 2 F000:A94D mov bl, ch F000:A94F imul bx, fs:10D7h F000:A955 add bl, dh F000:A957 adc bh, 0 F000:A95A movzx eax, word ptr fs:10D9h F000:A961 movzx ebx, bx F000:A965 mul ebx F000:A968 and ecx, 3Fh F000:A96C add eax, ecx F000:A96F dec eax F000:A971 movzx ecx, si F000:A975 shl ecx, 9 F000:A979 mov esi, eax F000:A97C shl esi, 9 F000:A980 mov eax, ecx F000:A983 xor edx, edx F000:A986 F000:A986 loc_FA986: ; CODE XREF: sub_FA7F0+1A2j F000:A986 sub esi, fs:10C9h[edx*4] F000:A990 inc dl F000:A992 jnb short loc_FA986 F000:A994 add esi, fs:10C5h[edx*4] F000:A99E F000:A99E loc_FA99E: ; CODE XREF: sub_FA7F0+1EBj F000:A99E mov bx, fs:10C1h[edx*2] F000:A9A7 mov ebp, fs:10C5h[edx*4] F000:A9B1 sub ebp, esi F000:A9B4 cmp ebp, ecx F000:A9B7 jnb short loc_FA9BC F000:A9B9 mov ecx, ebp F000:A9BC F000:A9BC loc_FA9BC: ; CODE XREF: sub_FA7F0+1C7j F000:A9BC or byte ptr fs:10DDh, 40h F000:A9C2 call sub_F77B3 F000:A9C5 and byte ptr fs:10DDh, 0BFh F000:A9CB sub eax, ecx F000:A9CE jz short loc_FA9DD F000:A9D0 add edi, ecx F000:A9D3 xor esi, esi F000:A9D6 mov ecx, eax F000:A9D9 inc dl F000:A9DB jmp short loc_FA99E F000:A9DD ; --------------------------------------------------------------------------- F000:A9DD F000:A9DD loc_FA9DD: ; CODE XREF: sub_FA7F0+1DEj F000:A9DD mov ax, 20h ; ' ' F000:A9E0 mov ds, ax F000:A9E2 assume ds:nothing F000:A9E2 mov es, ax F000:A9E4 assume es:nothing F000:A9E4 mov fs, ax F000:A9E6 assume fs:nothing F000:A9E6 mov eax, cr0 F000:A9E9 and al, 0FEh F000:A9EB mov cr0, eax F000:A9EE jmp loc_FA9F3 F000:A9F3 F000:A9F3 loc_FA9F3: ; load IDTR with physical address of IDT F000:A9F3 lidt fword ptr cs:IDTR2 F000:A9F9 add esp, 30h F000:A9FD pop ss F000:A9FE assume ss:nothing F000:A9FE pop gs F000:AA00 assume gs:nothing F000:AA00 pop fs F000:AA02 assume fs:nothing F000:AA02 pop es F000:AA03 assume es:nothing F000:AA03 pop ds F000:AA04 assume ds:nothing F000:AA04 popad F000:AA06 xor ah, ah F000:AA08 F000:AA08 loc_FAA08: ; CODE XREF: sub_FA7F0+268j F000:AA08 ; sub_FA7F0+2BAj F000:AA08 push esp F000:AA0A movzx esp, sp F000:AA0E and [esp+4+arg_0], 0FEh F000:AA14 pop esp F000:AA16 iret F000:AA17 ; --------------------------------------------------------------------------- F000:AA17 F000:AA17 loc_FAA17: ; CODE XREF: sub_FA7F0+4Cj F000:AA17 cmp ah, 15h F000:AA1A jz short loc_FAA5C F000:AA1C cmp ah, 8 F000:AA1F jnz loc_FAAAD F000:AA23 push ebx F000:AA25 push es F000:AA26 sub sp, 200h F000:AA2A mov ax, ss F000:AA2C mov es, ax F000:AA2E mov ax, 201h F000:AA31 mov bx, sp F000:AA33 mov cx, 1 F000:AA36 mov dx, 80h ; 'Ç' F000:AA39 int 13h ; DISK - READ SECTORS INTO MEMORY F000:AA39 ; AL = number of sectors to read, CH = track, CL = sector F000:AA39 ; DH = head, DL = drive, ES:BX -> buffer to fill F000:AA39 ; Return: CF set on error, AH = status, AL = number of sectors read F000:AA3B mov dl, 1 F000:AA3D movzx ebx, sp F000:AA41 mov dh, ss:[ebx+1C3h] F000:AA49 mov cx, ss:[ebx+1C4h] F000:AA51 add sp, 200h F000:AA55 pop es F000:AA56 pop ebx F000:AA58 jmp short loc_FAA08 F000:AA58 ; --------------------------------------------------------------------------- F000:AA5A db 0EBh ; Û F000:AA5B db 0ACh ; È F000:AA5C ; --------------------------------------------------------------------------- F000:AA5C F000:AA5C loc_FAA5C: ; CODE XREF: sub_FA7F0+22Aj F000:AA5C push ebx F000:AA5E push es F000:AA5F sub sp, 200h F000:AA63 mov ax, ss F000:AA65 mov es, ax F000:AA67 mov ax, 201h F000:AA6A mov bx, sp F000:AA6C mov cx, 1 F000:AA6F mov dx, 80h ; 'Ç' F000:AA72 int 13h ; DISK - READ SECTORS INTO MEMORY F000:AA72 ; AL = number of sectors to read, CH = track, CL = sector F000:AA72 ; DH = head, DL = drive, ES:BX -> buffer to fill F000:AA72 ; Return: CF set on error, AH = status, AL = number of sectors read F000:AA74 movzx ebx, sp F000:AA78 movzx dx, byte ptr ss:[ebx+1C3h] F000:AA81 inc dx F000:AA82 mov ax, ss:[ebx+1C4h] F000:AA8A and ax, 3Fh F000:AA8D mul dx F000:AA8F mov cx, ss:[ebx+1C4h] F000:AA97 shr cl, 6 F000:AA9A xchg cl, ch F000:AA9C inc cx F000:AA9D mul cx F000:AA9F mov cx, ax F000:AAA1 add sp, 200h F000:AAA5 pop es F000:AAA6 pop ebx F000:AAA8 mov ah, 3 F000:AAAA jmp loc_FAA08 F000:AAAD ; --------------------------------------------------------------------------- F000:AAAD F000:AAAD loc_FAAAD: ; CODE XREF: sub_FA7F0+45j F000:AAAD ; sub_FA7F0+22Fj F000:AAAD push esp F000:AAAF movzx esp, sp F000:AAB3 or [esp+4+arg_0], 1 F000:AAB9 pop esp F000:AABB iret F000:AABB sub_FA7F0 endp F000:AABB F000:AABB ; --------------------------------------------------------------------------- F000:AABC db 4 dup(0) F000:AAC0 ; --------------------------------------------------------------------------- F000:AAC0 F000:AAC0 loc_FAAC0: ; CODE XREF: F000:0549j F000:AAC0 cmp dx, 2 F000:AAC3 jnb locret_FAB7D F000:AAC7 cmp ah, 3 F000:AACA ja locret_FAB7D F000:AACE push bx F000:AACF push cx F000:AAD0 push dx F000:AAD1 push ds F000:AAD2 xor bx, bx F000:AAD4 mov ds, bx F000:AAD6 assume ds:nothing F000:AAD6 mov bx, dx F000:AAD8 shl bx, 1 F000:AADA mov dx, [bx+400h] F000:AADE xor bl, bl F000:AAE0 cmp ah, 1 F000:AAE3 jz short loc_FAB0B F000:AAE5 jb short loc_FAB2C F000:AAE7 cmp ah, 2 F000:AAEA ja short loc_FAB66 F000:AAEC or dl, 0Ch F000:AAEF mov al, 3 F000:AAF1 out dx, al F000:AAF2 inc dl F000:AAF4 in al, dx F000:AAF5 test al, 1 F000:AAF7 jnz short loc_FAB03 F000:AAF9 mov bh, 1 F000:AAFB call sub_FAB7E F000:AAFE test bl, 80h F000:AB01 jnz short loc_FAB6C F000:AB03 F000:AB03 loc_FAB03: ; CODE XREF: F000:AAF7j F000:AB03 and dl, 0F8h F000:AB06 in al, dx F000:AB07 mov ah, al F000:AB09 jmp short loc_FAB6C F000:AB0B ; --------------------------------------------------------------------------- F000:AB0B F000:AB0B loc_FAB0B: ; CODE XREF: F000:AAE3j F000:AB0B mov ah, al F000:AB0D or dl, 0Ch F000:AB10 mov al, 3 F000:AB12 out dx, al F000:AB13 inc dl F000:AB15 in al, dx F000:AB16 test al, 20h F000:AB18 jnz short loc_FAB24 F000:AB1A mov bh, 20h ; ' ' F000:AB1C call sub_FAB7E F000:AB1F test bl, 80h F000:AB22 jnz short loc_FAB6C F000:AB24 F000:AB24 loc_FAB24: ; CODE XREF: F000:AB18j F000:AB24 mov al, ah F000:AB26 and dl, 0F8h F000:AB29 out dx, al F000:AB2A jmp short loc_FAB6C F000:AB2C ; --------------------------------------------------------------------------- F000:AB2C F000:AB2C loc_FAB2C: ; CODE XREF: F000:AAE5j F000:AB2C mov bh, al F000:AB2E or dl, 0Ch F000:AB31 xor al, al F000:AB33 out dx, al F000:AB34 sub dl, 3 F000:AB37 out dx, al F000:AB38 inc dl F000:AB3A out dx, al F000:AB3B inc dl F000:AB3D mov al, 80h ; 'Ç' F000:AB3F out dx, al F000:AB40 mov ax, 417h F000:AB43 cmp bh, 1Fh F000:AB46 jbe short loc_FAB52 F000:AB48 mov ax, 600h F000:AB4B mov cl, bh F000:AB4D shr cl, 5 F000:AB50 shr ax, cl F000:AB52 F000:AB52 loc_FAB52: ; CODE XREF: F000:AB46j F000:AB52 and dl, 0F8h F000:AB55 out dx, al F000:AB56 mov al, ah F000:AB58 inc dl F000:AB5A out dx, al F000:AB5B mov al, bh F000:AB5D and al, 1Fh F000:AB5F add dl, 2 F000:AB62 out dx, al F000:AB63 and dl, 0F8h F000:AB66 F000:AB66 loc_FAB66: ; CODE XREF: F000:AAEAj F000:AB66 or dl, 0Eh F000:AB69 in al, dx F000:AB6A mov ah, al F000:AB6C F000:AB6C loc_FAB6C: ; CODE XREF: F000:AB01j F000:AB6C ; F000:AB09j ... F000:AB6C and dl, 0F8h F000:AB6F or dl, 0Dh F000:AB72 in al, dx F000:AB73 and al, 7Fh F000:AB75 or al, bl F000:AB77 xchg al, ah F000:AB79 pop ds F000:AB7A assume ds:nothing F000:AB7A pop dx F000:AB7B pop cx F000:AB7C pop bx F000:AB7D F000:AB7D locret_FAB7D: ; CODE XREF: F000:AAC3j F000:AB7D ; F000:AACAj F000:AB7D iret F000:AB7E F000:AB7E ; =============== S U B R O U T I N E ======================================= F000:AB7E F000:AB7E F000:AB7E sub_FAB7E proc near ; CODE XREF: F000:AAFBp F000:AB7E ; F000:AB1Cp F000:AB7E mov cx, 0FFFFh F000:AB81 F000:AB81 loc_FAB81: ; CODE XREF: sub_FAB7E+Cj F000:AB81 jmp short $+2 F000:AB83 jmp short $+2 F000:AB85 jmp short $+2 F000:AB87 in al, dx F000:AB88 test al, bh F000:AB8A loope loc_FAB81 F000:AB8C jnz short locret_FAB90 F000:AB8E mov bl, 80h ; 'Ç' F000:AB90 F000:AB90 locret_FAB90: ; CODE XREF: sub_FAB7E+Ej F000:AB90 retn F000:AB90 sub_FAB7E endp F000:AB90 F000:AB90 ; --------------------------------------------------------------------------- F000:AB91 db 0Fh dup(0) F000:ABA0 ; --------------------------------------------------------------------------- F000:ABA0 F000:ABA0 loc_FABA0: ; CODE XREF: F000:054Cj F000:ABA0 enter 0, 0 F000:ABA4 cmp ah, 88h ; '³' F000:ABA7 jz short loc_FABC9 F000:ABA9 cmp ah, 0C0h ; 'L' F000:ABAC jz short loc_FABF0 F000:ABAE cmp ah, 0C2h ; 'T' F000:ABB1 jz short loc_FAC0A F000:ABB3 cmp ah, 0E8h ; 'À' F000:ABB6 jz short loc_FAC2A F000:ABB8 cmp ah, 53h ; 'S' F000:ABBB jz loc_FAC60 F000:ABBF int 1 ; - internal hardware - SINGLE-STEP F000:ABBF ; generated at end of each machine instruction if TF bit in FLAGS is set F000:ABC1 F000:ABC1 loc_FABC1: ; CODE XREF: F000:AC1Ej F000:ABC1 ; F000:AC2Ej F000:ABC1 mov ah, 86h ; 'æ' F000:ABC3 or byte ptr [bp+6], 1 F000:ABC7 leave F000:ABC8 iret F000:ABC9 ; --------------------------------------------------------------------------- F000:ABC9 F000:ABC9 loc_FABC9: ; CODE XREF: F000:ABA7j F000:ABC9 mov al, 35h ; '5' F000:ABCB out 70h, al ; CMOS Memory: F000:ABCB ; F000:ABCD in al, 71h ; CMOS Memory F000:ABCF mov ah, al F000:ABD1 mov al, 34h ; '4' F000:ABD3 out 70h, al ; CMOS Memory: F000:ABD3 ; unknown address F000:ABD5 in al, 71h ; CMOS Memory F000:ABD7 movzx eax, ax F000:ABDB shl eax, 6 F000:ABDF cmp eax, 0FFFFh F000:ABE5 jbe short loc_FABEA F000:ABE7 mov ax, 0FFFFh F000:ABEA F000:ABEA loc_FABEA: ; CODE XREF: F000:ABE5j F000:ABEA and byte ptr [bp+6], 0FEh F000:ABEE leave F000:ABEF iret F000:ABF0 ; --------------------------------------------------------------------------- F000:ABF0 F000:ABF0 loc_FABF0: ; CODE XREF: F000:ABACj F000:ABF0 mov bx, 0F000h F000:ABF3 mov es, bx F000:ABF5 assume es:BIOS_F000 F000:ABF5 mov bx, 0AC00h F000:ABF8 xor ah, ah F000:ABFA and byte ptr [bp+6], 0FEh F000:ABFE leave F000:ABFF iret F000:ABFF ; --------------------------------------------------------------------------- F000:AC00 db 8 F000:AC01 db 0 F000:AC02 db 0FCh ; Ø F000:AC03 db 4 F000:AC04 db 0 F000:AC05 db 40h ; @ F000:AC06 db 0 F000:AC07 db 0 F000:AC08 db 0 F000:AC09 db 0 F000:AC0A ; --------------------------------------------------------------------------- F000:AC0A F000:AC0A loc_FAC0A: ; CODE XREF: F000:ABB1j F000:AC0A and al, al F000:AC0C jz short loc_FAC22 F000:AC0E cmp al, 1 F000:AC10 jz short loc_FAC20 F000:AC12 cmp al, 3 F000:AC14 jz short loc_FAC20 F000:AC16 cmp al, 4 F000:AC18 jz short loc_FAC20 F000:AC1A cmp al, 5 F000:AC1C jz short loc_FAC22 F000:AC1E jmp short loc_FABC1 F000:AC20 ; --------------------------------------------------------------------------- F000:AC20 F000:AC20 loc_FAC20: ; CODE XREF: F000:AC10j F000:AC20 ; F000:AC14j ... F000:AC20 xor bh, bh F000:AC22 F000:AC22 loc_FAC22: ; CODE XREF: F000:AC0Cj F000:AC22 ; F000:AC1Cj F000:AC22 xor ah, ah F000:AC24 and byte ptr [bp+6], 0FEh F000:AC28 leave F000:AC29 iret F000:AC2A ; --------------------------------------------------------------------------- F000:AC2A F000:AC2A loc_FAC2A: ; CODE XREF: F000:ABB6j F000:AC2A cmp al, 1 F000:AC2C jz short loc_FAC30 F000:AC2E jmp short loc_FABC1 F000:AC30 ; --------------------------------------------------------------------------- F000:AC30 F000:AC30 loc_FAC30: ; CODE XREF: F000:AC2Cj F000:AC30 mov al, 35h ; '5' F000:AC32 out 70h, al ; CMOS Memory: F000:AC32 ; F000:AC34 in al, 71h ; CMOS Memory F000:AC36 mov ah, al F000:AC38 mov al, 34h ; '4' F000:AC3A out 70h, al ; CMOS Memory: F000:AC3A ; unknown address F000:AC3C in al, 71h ; CMOS Memory F000:AC3E sub ax, 0F0h ; '­' F000:AC41 jb short loc_FAC52 F000:AC43 mov bx, ax F000:AC45 mov dx, ax F000:AC47 mov ax, 3C00h F000:AC4A mov cx, ax F000:AC4C F000:AC4C loc_FAC4C: ; CODE XREF: F000:AC5Ej F000:AC4C and byte ptr [bp+6], 0FEh F000:AC50 leave F000:AC51 iret F000:AC52 ; --------------------------------------------------------------------------- F000:AC52 F000:AC52 loc_FAC52: ; CODE XREF: F000:AC41j F000:AC52 add ax, 0F0h ; '­' F000:AC55 shl ax, 6 F000:AC58 mov cx, ax F000:AC5A xor bx, bx F000:AC5C xor dx, dx F000:AC5E jmp short loc_FAC4C F000:AC60 ; --------------------------------------------------------------------------- F000:AC60 F000:AC60 loc_FAC60: ; CODE XREF: F000:ABBBj F000:AC60 mov ax, 0F000h F000:AC63 xor ebx, ebx F000:AC66 mov bx, 0AC7Ah F000:AC69 mov cx, 0F000h F000:AC6C xor dx, dx F000:AC6E mov si, 0FFFFh F000:AC71 mov di, 0FFFFh F000:AC74 and byte ptr [bp+6], 0FEh F000:AC78 leave F000:AC79 iret F000:AC7A ; --------------------------------------------------------------------------- F000:AC7A cmp al, 0Eh F000:AC7C jnz short loc_FAC84 F000:AC7E mov ah, 1 F000:AC80 mov al, 1 F000:AC82 clc F000:AC83 retf F000:AC84 ; --------------------------------------------------------------------------- F000:AC84 F000:AC84 loc_FAC84: ; CODE XREF: F000:AC7Cj F000:AC84 cmp al, 7 F000:AC86 jnz short loc_FAC94 F000:AC88 mov al, 61h ; 'a' F000:AC8A out 70h, al ; CMOS Memory: F000:AC8A ; F000:AC8C mov al, 0 F000:AC8E out 71h, al ; CMOS Memory: F000:AC8E ; used by real-time clock F000:AC90 mov al, 1 F000:AC92 out 92h, al F000:AC94 F000:AC94 loc_FAC94: ; CODE XREF: F000:AC86j F000:AC94 stc F000:AC95 retf F000:AC95 ; --------------------------------------------------------------------------- F000:AC96 db 0Ah dup(0) F000:ACA0 off_FACA0 dw offset sub_FACE7 ; DATA XREF: F000:ACDDr F000:ACA2 dw offset sub_FAD2A F000:ACA4 dw offset loc_FAE21 F000:ACA6 dw offset sub_FAE25 F000:ACA8 dw offset sub_FAE25 F000:ACAA dw offset sub_FADE6 F000:ACAC dw offset sub_FAE25 F000:ACAE dw offset sub_FAE25 F000:ACB0 dw offset sub_FAE25 F000:ACB2 dw offset sub_FAE25 F000:ACB4 dw offset sub_FAE25 F000:ACB6 dw offset sub_FAE25 F000:ACB8 dw offset sub_FAE25 F000:ACBA dw offset sub_FAE25 F000:ACBC dw offset sub_FAE25 F000:ACBE dw offset sub_FAE25 F000:ACC0 dw offset sub_FACE7 F000:ACC2 dw offset sub_FAD2A F000:ACC4 dw offset loc_FAE0A F000:ACC6 ; --------------------------------------------------------------------------- F000:ACC6 F000:ACC6 loc_FACC6: ; CODE XREF: F000:054Fj F000:ACC6 sti F000:ACC7 enter 0, 0 F000:ACCB push bx F000:ACCC push dx F000:ACCD push ds F000:ACCE xor bx, bx F000:ACD0 mov ds, bx F000:ACD2 assume ds:nothing F000:ACD2 movzx bx, ah F000:ACD5 shl bx, 1 F000:ACD7 cmp bx, 26h ; '&' F000:ACDB jnb short loc_FACE2 F000:ACDD call cs:off_FACA0[bx] F000:ACE2 F000:ACE2 loc_FACE2: ; CODE XREF: F000:ACDBj F000:ACE2 pop ds F000:ACE3 assume ds:nothing F000:ACE3 pop dx F000:ACE4 pop bx F000:ACE5 leave F000:ACE6 iret F000:ACE7 F000:ACE7 ; =============== S U B R O U T I N E ======================================= F000:ACE7 F000:ACE7 F000:ACE7 sub_FACE7 proc near ; CODE XREF: F000:ACDDp F000:ACE7 ; sub_FACE7+8j F000:ACE7 ; DATA XREF: ... F000:ACE7 mov bx, ds:41Ah F000:ACEB cmp bx, ds:41Ch F000:ACEF jz short sub_FACE7 F000:ACF1 mov dh, ah F000:ACF3 mov ax, [bx+400h] F000:ACF7 inc bx F000:ACF8 inc bx F000:ACF9 cmp bx, ds:482h F000:ACFD jb short loc_FAD03 F000:ACFF mov bx, ds:480h F000:AD03 F000:AD03 loc_FAD03: ; CODE XREF: sub_FACE7+16j F000:AD03 mov ds:41Ah, bx F000:AD07 cmp dh, 1 F000:AD0A ja short locret_FAD12 F000:AD0C F000:AD0C loc_FAD0C: ; CODE XREF: sub_FAD2A+1Ej F000:AD0C cmp al, 0E0h ; 'Ó' F000:AD0E jnz short loc_FAD13 F000:AD10 mov al, 0 F000:AD12 F000:AD12 locret_FAD12: ; CODE XREF: sub_FACE7+23j F000:AD12 ; sub_FACE7+2Fj ... F000:AD12 retn F000:AD13 ; --------------------------------------------------------------------------- F000:AD13 F000:AD13 loc_FAD13: ; CODE XREF: sub_FACE7+27j F000:AD13 cmp ah, 0E0h ; 'Ó' F000:AD16 jnz short locret_FAD12 F000:AD18 cmp al, 0Dh F000:AD1A jz short loc_FAD20 F000:AD1C cmp al, 0Ah F000:AD1E jnz short loc_FAD23 F000:AD20 F000:AD20 loc_FAD20: ; CODE XREF: sub_FACE7+33j F000:AD20 mov ah, 1Ch F000:AD22 retn F000:AD23 ; --------------------------------------------------------------------------- F000:AD23 F000:AD23 loc_FAD23: ; CODE XREF: sub_FACE7+37j F000:AD23 cmp al, 2Fh ; '/' F000:AD25 jnz short locret_FAD12 F000:AD27 mov ah, 35h ; '5' F000:AD29 retn F000:AD29 sub_FACE7 endp F000:AD29 F000:AD2A F000:AD2A ; =============== S U B R O U T I N E ======================================= F000:AD2A F000:AD2A F000:AD2A sub_FAD2A proc near ; CODE XREF: F000:ACDDp F000:AD2A ; DATA XREF: F000:ACA2o ... F000:AD2A call sub_FAD4B F000:AD2D or byte ptr [bp+6], 40h F000:AD31 mov bx, ds:41Ah F000:AD35 cmp bx, ds:41Ch F000:AD39 jz short locret_FAD4A F000:AD3B mov dh, ah F000:AD3D mov ax, [bx+400h] F000:AD41 and byte ptr [bp+6], 0BFh F000:AD45 cmp dh, 1 F000:AD48 jbe short loc_FAD0C F000:AD4A F000:AD4A locret_FAD4A: ; CODE XREF: sub_FAD2A+Fj F000:AD4A retn F000:AD4A sub_FAD2A endp F000:AD4A F000:AD4B F000:AD4B ; =============== S U B R O U T I N E ======================================= F000:AD4B F000:AD4B F000:AD4B sub_FAD4B proc near ; CODE XREF: sub_FAD2Ap F000:AD4B push ax F000:AD4C push cx F000:AD4D cli F000:AD4E mov al, ds:497h F000:AD51 or byte ptr ds:497h, 40h F000:AD56 test al, 40h F000:AD58 jnz short loc_FAD8D F000:AD5A mov ah, ds:417h F000:AD5E mov cl, 4 F000:AD60 shr ah, cl F000:AD62 and ax, 707h F000:AD65 cmp ah, al F000:AD67 clc F000:AD68 jz short loc_FAD81 F000:AD6A xchg al, ah F000:AD6C mov ah, 0EDh ; 'Ý' F000:AD6E call sub_FAD90 F000:AD71 jnb short loc_FAD7C F000:AD73 mov ah, 0F4h ; '¢' F000:AD75 call sub_FAD90 F000:AD78 xchg al, ah F000:AD7A jmp short loc_FAD81 F000:AD7C ; --------------------------------------------------------------------------- F000:AD7C F000:AD7C loc_FAD7C: ; CODE XREF: sub_FAD4B+26j F000:AD7C xchg al, ah F000:AD7E call sub_FAD90 F000:AD81 F000:AD81 loc_FAD81: ; CODE XREF: sub_FAD4B+1Dj F000:AD81 ; sub_FAD4B+2Fj F000:AD81 pushf F000:AD82 cli F000:AD83 and byte ptr ds:497h, 0B8h F000:AD88 or ds:497h, ah F000:AD8C popf F000:AD8D F000:AD8D loc_FAD8D: ; CODE XREF: sub_FAD4B+Dj F000:AD8D pop cx F000:AD8E pop ax F000:AD8F retn F000:AD8F sub_FAD4B endp F000:AD8F F000:AD90 F000:AD90 ; =============== S U B R O U T I N E ======================================= F000:AD90 F000:AD90 F000:AD90 sub_FAD90 proc near ; CODE XREF: sub_FAD4B+23p F000:AD90 ; sub_FAD4B+2Ap ... F000:AD90 push bx F000:AD91 mov bx, 3 F000:AD94 push ax F000:AD95 push cx F000:AD96 and byte ptr ds:497h, 0CFh F000:AD9B F000:AD9B loc_FAD9B: ; CODE XREF: sub_FAD90+39j F000:AD9B mov cx, 9 F000:AD9E call sub_FADD0 F000:ADA1 mov al, ah F000:ADA3 out 60h, al ; AT Keyboard controller 8042. F000:ADA5 sti F000:ADA6 mov cx, ds:46Ch F000:ADAA add cx, 2 F000:ADAD F000:ADAD loc_FADAD: ; CODE XREF: sub_FAD90+28j F000:ADAD test byte ptr ds:497h, 30h F000:ADB2 jnz short loc_FADBC F000:ADB4 cmp cx, ds:46Ch F000:ADB8 jnb short loc_FADAD F000:ADBA jmp short loc_FADC8 F000:ADBC ; --------------------------------------------------------------------------- F000:ADBC F000:ADBC loc_FADBC: ; CODE XREF: sub_FAD90+22j F000:ADBC test byte ptr ds:497h, 10h F000:ADC1 jnz short loc_FADCC F000:ADC3 and byte ptr ds:97h, 0CFh F000:ADC8 F000:ADC8 loc_FADC8: ; CODE XREF: sub_FAD90+2Aj F000:ADC8 dec bx F000:ADC9 jnz short loc_FAD9B F000:ADCB stc F000:ADCC F000:ADCC loc_FADCC: ; CODE XREF: sub_FAD90+31j F000:ADCC pop cx F000:ADCD pop ax F000:ADCE pop bx F000:ADCF retn F000:ADCF sub_FAD90 endp F000:ADCF F000:ADD0 F000:ADD0 ; =============== S U B R O U T I N E ======================================= F000:ADD0 F000:ADD0 F000:ADD0 sub_FADD0 proc near ; CODE XREF: sub_FAD90+Ep F000:ADD0 sti F000:ADD1 push ax F000:ADD2 push cx F000:ADD3 add cx, ds:46Ch F000:ADD7 F000:ADD7 loc_FADD7: ; CODE XREF: sub_FADD0+11j F000:ADD7 in al, 64h ; AT Keyboard controller 8042. F000:ADD9 test al, 2 F000:ADDB jz short loc_FADE3 F000:ADDD cmp cx, ds:46Ch F000:ADE1 jnb short loc_FADD7 F000:ADE3 F000:ADE3 loc_FADE3: ; CODE XREF: sub_FADD0+Bj F000:ADE3 pop cx F000:ADE4 pop ax F000:ADE5 retn F000:ADE5 sub_FADD0 endp F000:ADE5 F000:ADE6 F000:ADE6 ; =============== S U B R O U T I N E ======================================= F000:ADE6 F000:ADE6 F000:ADE6 sub_FADE6 proc near ; CODE XREF: F000:ACDDp F000:ADE6 ; DATA XREF: F000:ACAAo F000:ADE6 cli F000:ADE7 mov bx, ds:41Ch F000:ADEB inc bx F000:ADEC inc bx F000:ADED cmp bx, ds:482h F000:ADF1 jnz short loc_FADF7 F000:ADF3 mov bx, ds:480h F000:ADF7 F000:ADF7 loc_FADF7: ; CODE XREF: sub_FADE6+Bj F000:ADF7 mov al, 1 F000:ADF9 cmp bx, ds:41Ah F000:ADFD jz short locret_FAE09 F000:ADFF dec al F000:AE01 xchg bx, ds:41Ch F000:AE05 mov [bx+400h], cx F000:AE09 F000:AE09 locret_FAE09: ; CODE XREF: sub_FADE6+17j F000:AE09 retn F000:AE09 sub_FADE6 endp F000:AE09 F000:AE0A ; --------------------------------------------------------------------------- F000:AE0A F000:AE0A loc_FAE0A: ; CODE XREF: F000:ACDDp F000:AE0A ; DATA XREF: F000:ACC4o F000:AE0A mov ah, ds:418h F000:AE0E mov al, ah F000:AE10 and ah, 4 F000:AE13 shl ah, 5 F000:AE16 and al, 73h F000:AE18 or ah, al F000:AE1A mov al, ds:496h F000:AE1D and al, 0Ch F000:AE1F or ah, al F000:AE21 F000:AE21 loc_FAE21: ; CODE XREF: F000:ACDDp F000:AE21 ; DATA XREF: F000:ACA4o F000:AE21 mov al, ds:417h F000:AE24 retn F000:AE25 F000:AE25 ; =============== S U B R O U T I N E ======================================= F000:AE25 F000:AE25 F000:AE25 sub_FAE25 proc near ; CODE XREF: F000:ACDDp F000:AE25 ; DATA XREF: F000:ACA6o ... F000:AE25 or byte ptr [bp+6], 1 F000:AE29 retn F000:AE29 sub_FAE25 endp F000:AE29 F000:AE29 ; --------------------------------------------------------------------------- F000:AE2A db 6 dup(0) F000:AE30 ; --------------------------------------------------------------------------- F000:AE30 F000:AE30 loc_FAE30: ; CODE XREF: F000:0552j F000:AE30 sti F000:AE31 cmp dx, 2 F000:AE34 ja locret_FAEBB F000:AE38 cmp ah, 2 F000:AE3B ja short locret_FAEBB F000:AE3D push bx F000:AE3E push dx F000:AE3F push ds F000:AE40 xor bx, bx F000:AE42 mov ds, bx F000:AE44 assume ds:nothing F000:AE44 mov bx, dx F000:AE46 mov dx, [bx+408h] F000:AE4A and dx, dx F000:AE4C jz short loc_FAEBC F000:AE4E xchg ah, al F000:AE50 inc dx F000:AE51 cmp al, 1 F000:AE53 jb short loc_FAE81 F000:AE55 ja short loc_FAEB0 F000:AE57 inc dx F000:AE58 mov al, 0Ch F000:AE5A out dx, al F000:AE5B mov bx, 3E8h F000:AE5E F000:AE5E loc_FAE5E: ; CODE XREF: F000:AE63j F000:AE5E jmp short $+2 F000:AE60 sub bx, 1 F000:AE63 ja short loc_FAE5E F000:AE65 mov al, 8 F000:AE67 out dx, al F000:AE68 dec dx F000:AE69 mov al, 0Ah F000:AE6B mov bx, ds:46Ch F000:AE6F hlt F000:AE6F ; --------------------------------------------------------------------------- F000:AE70 db 3Bh ; ; F000:AE71 db 1Eh F000:AE72 db 6Ch ; l F000:AE73 db 4 F000:AE74 db 74h ; t F000:AE75 db 0F9h ; ¨ F000:AE76 db 0FEh ; ¦ F000:AE77 db 0C8h ; L F000:AE78 db 75h ; u F000:AE79 db 0F1h ; ½ F000:AE7A db 42h ; B F000:AE7B db 0B0h ; - F000:AE7C db 0Ch F000:AE7D db 0EEh ; þ F000:AE7E db 4Ah ; J F000:AE7F db 0EBh ; Û F000:AE80 db 2Fh ; / F000:AE81 ; --------------------------------------------------------------------------- F000:AE81 F000:AE81 loc_FAE81: ; CODE XREF: F000:AE53j F000:AE81 mov bh, 25h ; '%' F000:AE83 F000:AE83 loc_FAE83: ; CODE XREF: F000:AEC2j F000:AE83 mov bl, ds:46Ch F000:AE87 F000:AE87 loc_FAE87: ; CODE XREF: F000:AE90j F000:AE87 cmp bl, ds:46Ch F000:AE8B jnz short loc_FAEC0 F000:AE8D in al, dx F000:AE8E test al, 80h F000:AE90 jz short loc_FAE87 F000:AE92 dec dx F000:AE93 mov al, ah F000:AE95 out dx, al F000:AE96 add dx, 2 F000:AE99 mov al, 0Dh F000:AE9B out dx, al F000:AE9C mov bx, 0Ah F000:AE9F F000:AE9F loc_FAE9F: ; CODE XREF: F000:AEA4j F000:AE9F jmp short $+2 F000:AEA1 sub bx, 1 F000:AEA4 ja short loc_FAE9F F000:AEA6 mov al, 0Ch F000:AEA8 out dx, al F000:AEA9 sub dx, 1 F000:AEAC jmp short $+2 F000:AEAE jmp short $+2 F000:AEB0 F000:AEB0 loc_FAEB0: ; CODE XREF: F000:AE55j F000:AEB0 in al, dx F000:AEB1 and al, 0F8h F000:AEB3 F000:AEB3 loc_FAEB3: ; CODE XREF: F000:AEC6j F000:AEB3 xchg ah, al F000:AEB5 xor ah, 8 F000:AEB8 F000:AEB8 loc_FAEB8: ; CODE XREF: F000:AEBEj F000:AEB8 pop ds F000:AEB9 assume ds:nothing F000:AEB9 pop dx F000:AEBA pop bx F000:AEBB F000:AEBB locret_FAEBB: ; CODE XREF: F000:AE34j F000:AEBB ; F000:AE3Bj F000:AEBB iret F000:AEBC ; --------------------------------------------------------------------------- F000:AEBC F000:AEBC loc_FAEBC: ; CODE XREF: F000:AE4Cj F000:AEBC mov ah, 7Fh ; '' F000:AEBE jmp short loc_FAEB8 F000:AEC0 ; --------------------------------------------------------------------------- F000:AEC0 F000:AEC0 loc_FAEC0: ; CODE XREF: F000:AE8Bj F000:AEC0 dec bh F000:AEC2 jnz short loc_FAE83 F000:AEC4 or al, 1 F000:AEC6 jmp short loc_FAEB3 F000:AEC6 ; --------------------------------------------------------------------------- F000:AEC8 db 8 dup(0) F000:AED0 ; --------------------------------------------------------------------------- F000:AED0 F000:AED0 loc_FAED0: ; CODE XREF: F000:0555j F000:AED0 cmp ah, 0AFh ; '»' F000:AED3 jz short loc_FAF1E F000:AED5 cmp ah, 0B1h ; '-' F000:AED8 jz short loc_FAF2D F000:AEDA cmp ah, 0B0h ; '-' F000:AEDD jz short loc_FAF1E F000:AEDF cmp ah, 4 F000:AEE2 jz short loc_FAF17 F000:AEE4 push bx F000:AEE5 push ds F000:AEE6 xor bx, bx F000:AEE8 cmp ah, 1 F000:AEEB jbe short $+2 F000:AEED mov ds, bx F000:AEEF assume ds:nothing F000:AEEF jz short loc_FAEFE F000:AEF1 mov al, ds:470h F000:AEF4 mov dx, ds:46Ch F000:AEF8 mov cx, ds:46Eh F000:AEFC jmp short loc_FAF06 F000:AEFE ; --------------------------------------------------------------------------- F000:AEFE F000:AEFE loc_FAEFE: ; CODE XREF: F000:AEEFj F000:AEFE mov ds:46Ch, dx F000:AF02 mov ds:46Eh, cx F000:AF06 F000:AF06 loc_FAF06: ; CODE XREF: F000:AEFCj F000:AF06 pop ds F000:AF07 assume ds:nothing F000:AF07 pop bx F000:AF08 push esp F000:AF0A movzx esp, sp F000:AF0E and byte ptr [esp+8], 0FEh F000:AF14 pop esp F000:AF16 iret F000:AF17 ; --------------------------------------------------------------------------- F000:AF17 F000:AF17 loc_FAF17: ; CODE XREF: F000:AEE2j F000:AF17 mov cx, 2000h F000:AF1A mov dx, 401h F000:AF1D iret F000:AF1E ; --------------------------------------------------------------------------- F000:AF1E F000:AF1E loc_FAF1E: ; CODE XREF: F000:AED3j F000:AF1E ; F000:AEDDj F000:AF1E push esp F000:AF20 movzx esp, sp F000:AF24 or byte ptr [esp+4], 1 F000:AF2A pop esp F000:AF2C iret F000:AF2D ; --------------------------------------------------------------------------- F000:AF2D F000:AF2D loc_FAF2D: ; CODE XREF: F000:AED8j F000:AF2D mov ax, 2 F000:AF30 mov bx, 210h F000:AF33 xor cl, cl F000:AF35 mov edx, 20494350h F000:AF3B and byte ptr [esp+4], 0FEh F000:AF41 iret F000:AF41 ; --------------------------------------------------------------------------- F000:AF42 db 0Eh dup(0) F000:AF50 ; --------------------------------------------------------------------------- F000:AF50 F000:AF50 loc_FAF50: ; CODE XREF: F000:0558j F000:AF50 cmp ah, 43h ; 'C' F000:AF53 jnz short locret_FAF63 F000:AF55 and al, al F000:AF57 jnz short loc_FAF5C F000:AF59 mov al, 80h ; 'Ç' F000:AF5B iret F000:AF5C ; --------------------------------------------------------------------------- F000:AF5C F000:AF5C loc_FAF5C: ; CODE XREF: F000:AF57j F000:AF5C mov bx, cs F000:AF5E mov es, bx F000:AF60 mov bx, 0AF64h F000:AF63 F000:AF63 locret_FAF63: ; CODE XREF: F000:AF53j F000:AF63 iret F000:AF64 ; --------------------------------------------------------------------------- F000:AF64 int 0F8h ; 10 ms INTERVAL TIMER (TANDY???) F000:AF66 retf F000:AF66 ; --------------------------------------------------------------------------- F000:AF67 db 9 dup(0) F000:AF70 ; --------------------------------------------------------------------------- F000:AF70 F000:AF70 loc_FAF70: ; CODE XREF: F000:055Bj F000:AF70 int 0F9h F000:AF72 F000:AF72 loc_FAF72: ; CODE XREF: F000:055Ej F000:AF72 int 0FBh ; USART Rx READY (keyboard) (TANDY???) F000:AF74 F000:AF74 loc_FAF74: ; CODE XREF: F000:0561j F000:AF74 sti F000:AF75 nop F000:AF76 nop F000:AF77 nop F000:AF78 nop F000:AF79 nop F000:AF7A nop F000:AF7B int 0FDh F000:AF7B ; --------------------------------------------------------------------------- F000:AF7D db 3 dup(0) F000:AF80 ; --------------------------------------------------------------------------- F000:AF80 cmp ah, 0F0h ; '­' F000:AF83 jnz short locret_FAF9F F000:AF85 cmp al, 3Ch ; '<' F000:AF87 jb short loc_FAF8B F000:AF89 xor al, al F000:AF8B F000:AF8B loc_FAF8B: ; CODE XREF: F000:AF87j F000:AF8B movzx eax, al F000:AF8F and edx, 0FFFFh F000:AF96 call cs:off_FAFA0[eax*2] F000:AF9F F000:AF9F locret_FAF9F: ; CODE XREF: F000:AF83j F000:AF9F iret F000:AF9F ; --------------------------------------------------------------------------- F000:AFA0 off_FAFA0 dw offset sub_FAFDC ; DATA XREF: F000:AF96r F000:AFA2 dw offset TEST_IO_F808h F000:AFA4 dw offset sub_FD250 F000:AFA6 dw offset sub_FD290 F000:AFA8 dw offset sub_FD2BB F000:AFAA dw offset sub_FB0F0 F000:AFAC dw offset sub_FB0F8 F000:AFAE dw offset sub_FD340 F000:AFB0 dw offset nullsub_1 F000:AFB2 dw offset sub_FAFF4 F000:AFB4 dw offset sub_FB056 F000:AFB6 dw offset sub_FB0B5 F000:AFB8 dw offset sub_FD2F3 F000:AFBA dw offset sub_FD0C3 F000:AFBC dw offset sub_FD070 F000:AFBE dw offset sub_FD07D F000:AFC0 dw offset sub_FD0DB F000:AFC2 dw offset sub_FD11C F000:AFC4 dw offset sub_FAFDC F000:AFC6 dw offset sub_FAFDC F000:AFC8 dw offset sub_FAFDC F000:AFCA dw offset sub_FB1A1 F000:AFCC dw offset sub_FB17A F000:AFCE dw offset sub_FB194 F000:AFD0 dw offset sub_FB187 F000:AFD2 dw offset sub_FB100 F000:AFD4 dw offset sub_FB114 F000:AFD6 dw offset sub_FB1B0 F000:AFD8 dw offset sub_FB1FD F000:AFDA dw offset sub_FB1F9 F000:AFDC F000:AFDC ; =============== S U B R O U T I N E ======================================= F000:AFDC F000:AFDC F000:AFDC sub_FAFDC proc near ; CODE XREF: F000:AF96p F000:AFDC ; DATA XREF: F000:off_FAFA0o ... F000:AFDC mov bx, 55AAh F000:AFDF mov ax, 1 F000:AFE2 retn F000:AFE2 sub_FAFDC endp F000:AFE2 F000:AFE2 ; --------------------------------------------------------------------------- F000:AFE3 db 0Dh dup(0) F000:AFF0 ; --------------------------------------------------------------------------- F000:AFF0 clc F000:AFF1 retn F000:AFF2 ; --------------------------------------------------------------------------- F000:AFF2 clc F000:AFF3 retn F000:AFF4 F000:AFF4 ; =============== S U B R O U T I N E ======================================= F000:AFF4 F000:AFF4 F000:AFF4 sub_FAFF4 proc near ; CODE XREF: F000:81A2p F000:AFF4 ; F000:AF96p ... F000:AFF4 push si F000:AFF5 mov si, 0D200h F000:AFF8 F000:AFF8 loc_FAFF8: ; CODE XREF: sub_FAFF4+25j F000:AFF8 mov bl, cs:[si] F000:AFFB cmp bl, 0FFh F000:AFFE jz short loc_FB021 F000:B000 shr bl, 1 F000:B002 movzx cx, byte ptr cs:[si+1] F000:B007 shr cx, 1 F000:B009 F000:B009 loc_FB009: ; CODE XREF: sub_FAFF4+20j F000:B009 call TEST_IO_F808h F000:B00C xor dx, dx F000:B00E cmp ax, dx F000:B010 jnz short loc_FB01B F000:B012 inc bl F000:B014 loop loc_FB009 F000:B016 add si, 2 F000:B019 jmp short loc_FAFF8 F000:B01B ; --------------------------------------------------------------------------- F000:B01B F000:B01B loc_FB01B: ; CODE XREF: sub_FAFF4+1Cj F000:B01B ; sub_FAFF4+4Bj F000:B01B mov cx, ax F000:B01D xor ax, ax F000:B01F jmp short loc_FB054 F000:B021 ; --------------------------------------------------------------------------- F000:B021 F000:B021 loc_FB021: ; CODE XREF: sub_FAFF4+Aj F000:B021 mov si, 0D203h F000:B024 F000:B024 loc_FB024: ; CODE XREF: sub_FAFF4+50j F000:B024 mov bl, cs:[si] F000:B027 cmp bl, 0FFh F000:B02A jz short loc_FB046 F000:B02C shr bl, 1 F000:B02E call TEST_IO_F808h F000:B031 mov dx, cs:[si+1] F000:B035 and dx, cs:[si+3] F000:B039 and ax, cs:[si+3] F000:B03D cmp ax, dx F000:B03F jnz short loc_FB01B F000:B041 add si, 5 F000:B044 jmp short loc_FB024 F000:B046 ; --------------------------------------------------------------------------- F000:B046 F000:B046 loc_FB046: ; CODE XREF: sub_FAFF4+36j F000:B046 call sub_FB0D1 F000:B049 mov cx, 0FFFFh F000:B04C xor ax, ax F000:B04E or dx, dx F000:B050 jnz short loc_FB054 F000:B052 inc al F000:B054 F000:B054 loc_FB054: ; CODE XREF: sub_FAFF4+2Bj F000:B054 ; sub_FAFF4+5Cj F000:B054 pop si F000:B055 retn F000:B055 sub_FAFF4 endp F000:B055 F000:B056 F000:B056 ; =============== S U B R O U T I N E ======================================= F000:B056 F000:B056 F000:B056 sub_FB056 proc near ; CODE XREF: F000:AF96p F000:B056 ; DATA XREF: F000:AFB4o F000:B056 pushad F000:B058 mov cx, 40h ; '@' F000:B05B xor bl, bl F000:B05D F000:B05D loc_FB05D: ; CODE XREF: sub_FB056+Ej F000:B05D xor dx, dx F000:B05F call sub_FD250 F000:B062 inc bl F000:B064 loop loc_FB05D F000:B066 mov si, 0D200h F000:B069 F000:B069 loc_FB069: ; CODE XREF: sub_FB056+30j F000:B069 mov bl, cs:[si] F000:B06C cmp bl, 0FFh F000:B06F jz short loc_FB088 F000:B071 shr bl, 1 F000:B073 movzx cx, byte ptr cs:[si+1] F000:B078 shr cx, 1 F000:B07A F000:B07A loc_FB07A: ; CODE XREF: sub_FB056+2Bj F000:B07A xor dx, dx F000:B07C call sub_FD250 F000:B07F inc bl F000:B081 loop loc_FB07A F000:B083 add si, 2 F000:B086 jmp short loc_FB069 F000:B088 ; --------------------------------------------------------------------------- F000:B088 F000:B088 loc_FB088: ; CODE XREF: sub_FB056+19j F000:B088 mov si, 0D203h F000:B08B F000:B08B loc_FB08B: ; CODE XREF: sub_FB056+5Aj F000:B08B mov bl, cs:[si] F000:B08E cmp bl, 0FFh F000:B091 jz short loc_FB0B2 F000:B093 shr bl, 1 F000:B095 call TEST_IO_F808h F000:B098 mov dx, cs:[si+3] F000:B09C not dx F000:B09E and ax, dx F000:B0A0 mov dx, cs:[si+1] F000:B0A4 and dx, cs:[si+3] F000:B0A8 or dx, ax F000:B0AA call sub_FD250 F000:B0AD add si, 5 F000:B0B0 jmp short loc_FB08B F000:B0B2 ; --------------------------------------------------------------------------- F000:B0B2 F000:B0B2 loc_FB0B2: ; CODE XREF: sub_FB056+3Bj F000:B0B2 popad F000:B0B4 retn F000:B0B4 sub_FB056 endp F000:B0B4 F000:B0B5 F000:B0B5 ; =============== S U B R O U T I N E ======================================= F000:B0B5 F000:B0B5 F000:B0B5 sub_FB0B5 proc near ; CODE XREF: sub_F5065+3Cp F000:B0B5 ; F000:8214p ... F000:B0B5 call sub_FD3A5 F000:B0B8 jb short locret_FB0D0 F000:B0BA pushad F000:B0BC call sub_FB0D1 F000:B0BF mov bl, 3Fh ; '?' F000:B0C1 call TEST_IO_F808h F000:B0C4 sub ax, dx F000:B0C6 mov dx, ax F000:B0C8 call sub_FD250 F000:B0CB popad F000:B0CD call sub_FAFF4 F000:B0D0 F000:B0D0 locret_FB0D0: ; CODE XREF: sub_FB0B5+3j F000:B0D0 retn F000:B0D0 sub_FB0B5 endp F000:B0D0 F000:B0D1 F000:B0D1 ; =============== S U B R O U T I N E ======================================= F000:B0D1 F000:B0D1 F000:B0D1 sub_FB0D1 proc near ; CODE XREF: sub_FAFF4:loc_FB046p F000:B0D1 ; sub_FB0B5+7p F000:B0D1 call sub_FD3C2 F000:B0D4 jb short locret_FB0E6 F000:B0D6 xor bl, bl F000:B0D8 xor dx, dx F000:B0DA mov cx, 40h ; '@' F000:B0DD F000:B0DD loc_FB0DD: ; CODE XREF: sub_FB0D1+13j F000:B0DD call TEST_IO_F808h F000:B0E0 add dx, ax F000:B0E2 inc bl F000:B0E4 loop loc_FB0DD F000:B0E6 F000:B0E6 locret_FB0E6: ; CODE XREF: sub_FB0D1+3j F000:B0E6 retn F000:B0E6 sub_FB0D1 endp F000:B0E6 F000:B0E6 ; --------------------------------------------------------------------------- F000:B0E7 db 9 dup(0) F000:B0F0 F000:B0F0 ; =============== S U B R O U T I N E ======================================= F000:B0F0 F000:B0F0 F000:B0F0 sub_FB0F0 proc near ; CODE XREF: F000:AF96p F000:B0F0 ; DATA XREF: F000:AFAAo F000:B0F0 push bx F000:B0F1 mov bl, 0Ch F000:B0F3 call sub_FB13C F000:B0F6 pop bx F000:B0F7 retn F000:B0F7 sub_FB0F0 endp F000:B0F7 F000:B0F8 F000:B0F8 ; =============== S U B R O U T I N E ======================================= F000:B0F8 F000:B0F8 F000:B0F8 sub_FB0F8 proc near ; CODE XREF: F000:AF96p F000:B0F8 ; DATA XREF: F000:AFACo F000:B0F8 push bx F000:B0F9 mov bl, 0Ch F000:B0FB call sub_FB126 F000:B0FE pop bx F000:B0FF retn F000:B0FF sub_FB0F8 endp F000:B0FF F000:B100 F000:B100 ; =============== S U B R O U T I N E ======================================= F000:B100 F000:B100 F000:B100 sub_FB100 proc near ; CODE XREF: sub_F5065+39p F000:B100 ; F000:8211p ... F000:B100 push bx F000:B101 push dx F000:B102 mov bl, 16h F000:B104 mov dx, [si] F000:B106 call sub_FD250 F000:B109 inc bl F000:B10B mov dx, [si+2] F000:B10E call sub_FD250 F000:B111 pop dx F000:B112 pop bx F000:B113 retn F000:B113 sub_FB100 endp F000:B113 F000:B114 F000:B114 ; =============== S U B R O U T I N E ======================================= F000:B114 F000:B114 F000:B114 sub_FB114 proc near ; CODE XREF: sub_F5065+1Ap F000:B114 ; F000:81ADp ... F000:B114 push bx F000:B115 mov bl, 16h F000:B117 call TEST_IO_F808h F000:B11A mov [si], ax F000:B11C inc bl F000:B11E call TEST_IO_F808h F000:B121 mov [si+2], ax F000:B124 pop bx F000:B125 retn F000:B125 sub_FB114 endp F000:B125 F000:B126 F000:B126 ; =============== S U B R O U T I N E ======================================= F000:B126 F000:B126 F000:B126 sub_FB126 proc near ; CODE XREF: sub_FB0F8+3p F000:B126 push dx F000:B127 push ax F000:B128 mov dx, [si+2] F000:B12B xchg dl, dh F000:B12D call sub_FD250 F000:B130 inc bl F000:B132 mov dx, [si] F000:B134 xchg dl, dh F000:B136 call sub_FD250 F000:B139 pop ax F000:B13A pop dx F000:B13B retn F000:B13B sub_FB126 endp F000:B13B F000:B13C F000:B13C ; =============== S U B R O U T I N E ======================================= F000:B13C F000:B13C F000:B13C sub_FB13C proc near ; CODE XREF: sub_FB0F0+3p F000:B13C push ax F000:B13D call TEST_IO_F808h F000:B140 xchg al, ah F000:B142 mov [si+2], ax F000:B145 inc bl F000:B147 call TEST_IO_F808h F000:B14A xchg al, ah F000:B14C mov [si], ax F000:B14E pop ax F000:B14F retn F000:B14F sub_FB13C endp F000:B14F F000:B150 F000:B150 ; =============== S U B R O U T I N E ======================================= F000:B150 F000:B150 F000:B150 sub_FB150 proc near ; CODE XREF: sub_FB17A+7p F000:B150 ; sub_FB1A1+7p F000:B150 push si F000:B151 push dx F000:B152 push ax F000:B153 add bl, cl F000:B155 dec bl F000:B157 F000:B157 loc_FB157: ; CODE XREF: sub_FB150+Fj F000:B157 lodsw F000:B158 mov dx, ax F000:B15A call sub_FD250 F000:B15D dec bl F000:B15F loop loc_FB157 F000:B161 pop ax F000:B162 pop dx F000:B163 pop si F000:B164 retn F000:B164 sub_FB150 endp F000:B164 F000:B165 F000:B165 ; =============== S U B R O U T I N E ======================================= F000:B165 F000:B165 F000:B165 sub_FB165 proc near ; CODE XREF: sub_FB187+7p F000:B165 ; sub_FB194+7p F000:B165 push si F000:B166 push ax F000:B167 add bl, cl F000:B169 dec bl F000:B16B F000:B16B loc_FB16B: ; CODE XREF: sub_FB165+10j F000:B16B call TEST_IO_F808h F000:B16E mov [si], ax F000:B170 add si, 2 F000:B173 dec bl F000:B175 loop loc_FB16B F000:B177 pop ax F000:B178 pop si F000:B179 retn F000:B179 sub_FB165 endp F000:B179 F000:B17A F000:B17A ; =============== S U B R O U T I N E ======================================= F000:B17A F000:B17A F000:B17A sub_FB17A proc near ; CODE XREF: F000:AF96p F000:B17A ; DATA XREF: F000:AFCCo F000:B17A push bx F000:B17B push cx F000:B17C mov bl, 0Eh F000:B17E mov cx, 6 F000:B181 call sub_FB150 F000:B184 pop cx F000:B185 pop bx F000:B186 retn F000:B186 sub_FB17A endp F000:B186 F000:B187 F000:B187 ; =============== S U B R O U T I N E ======================================= F000:B187 F000:B187 F000:B187 sub_FB187 proc near ; CODE XREF: F000:AF96p F000:B187 ; DATA XREF: F000:AFD0o F000:B187 push bx F000:B188 push cx F000:B189 mov bl, 0Eh F000:B18B mov cx, 6 F000:B18E call sub_FB165 F000:B191 pop cx F000:B192 pop bx F000:B193 retn F000:B193 sub_FB187 endp F000:B193 F000:B194 F000:B194 ; =============== S U B R O U T I N E ======================================= F000:B194 F000:B194 F000:B194 sub_FB194 proc near ; CODE XREF: F000:AF96p F000:B194 ; DATA XREF: F000:AFCEo F000:B194 push bx F000:B195 push cx F000:B196 mov bl, 14h F000:B198 mov cx, 2 F000:B19B call sub_FB165 F000:B19E pop cx F000:B19F pop bx F000:B1A0 retn F000:B1A0 sub_FB194 endp F000:B1A0 F000:B1A1 F000:B1A1 ; =============== S U B R O U T I N E ======================================= F000:B1A1 F000:B1A1 F000:B1A1 sub_FB1A1 proc near ; CODE XREF: F000:AF96p F000:B1A1 ; DATA XREF: F000:AFCAo F000:B1A1 push bx F000:B1A2 push cx F000:B1A3 mov bl, 14h F000:B1A5 mov cx, 2 F000:B1A8 call sub_FB150 F000:B1AB pop cx F000:B1AC pop bx F000:B1AD retn F000:B1AD sub_FB1A1 endp F000:B1AD F000:B1AD ; --------------------------------------------------------------------------- F000:B1AE db 2 dup(0) F000:B1B0 F000:B1B0 ; =============== S U B R O U T I N E ======================================= F000:B1B0 F000:B1B0 F000:B1B0 sub_FB1B0 proc near ; CODE XREF: sub_F4FB3+40p F000:B1B0 ; F000:AF96p F000:B1B0 ; DATA XREF: ... F000:B1B0 push dx F000:B1B1 push cx F000:B1B2 push eax F000:B1B4 call SET_IO_F800h F000:B1B7 mov dx, 0F840h F000:B1BA mov eax, 200h F000:B1C0 out dx, eax F000:B1C2 mov dx, 0F814h F000:B1C5 mov eax, 2000h F000:B1CB out dx, eax F000:B1CD mov dx, 0F818h F000:B1D0 mov eax, 1 F000:B1D6 out dx, eax F000:B1D8 mov dx, 0CF8h F000:B1DB mov eax, 80007844h F000:B1E1 out dx, eax F000:B1E3 mov dx, 0CFCh F000:B1E6 in eax, dx F000:B1E8 out dx, eax F000:B1EA mov dx, 0F840h F000:B1ED in eax, dx F000:B1EF mov dx, 0F810h F000:B1F2 in eax, dx F000:B1F4 pop eax F000:B1F6 pop cx F000:B1F7 pop dx F000:B1F8 retn F000:B1F8 sub_FB1B0 endp F000:B1F8 F000:B1F9 F000:B1F9 ; =============== S U B R O U T I N E ======================================= F000:B1F9 F000:B1F9 F000:B1F9 sub_FB1F9 proc near ; CODE XREF: sub_F4FB3+64p F000:B1F9 ; F000:AF96p F000:B1F9 ; DATA XREF: ... F000:B1F9 call SET_IO_F800h F000:B1FC retn F000:B1FC sub_FB1F9 endp F000:B1FC F000:B1FD F000:B1FD ; =============== S U B R O U T I N E ======================================= F000:B1FD F000:B1FD F000:B1FD sub_FB1FD proc near ; CODE XREF: sub_F4FB3+4Ap F000:B1FD ; F000:AF96p F000:B1FD ; DATA XREF: ... F000:B1FD push ebx F000:B1FF push dx F000:B200 xchg eax, ebx F000:B202 mov dx, 0F810h F000:B205 in eax, dx F000:B207 shr ax, 0Dh F000:B20A and al, 1 F000:B20C xchg eax, ebx F000:B20E mov al, bl F000:B210 pop dx F000:B211 pop ebx F000:B213 retn F000:B213 sub_FB1FD endp F000:B213 F000:B213 ; --------------------------------------------------------------------------- F000:B214 db 0Ch dup(0) F000:B220 ; --------------------------------------------------------------------------- F000:B220 F000:B220 DETECT_RAM1: F000:B220 mov fs, bx F000:B222 assume fs:nothing F000:B222 mov ax, 8404h ; read GX_BASE+8404h (MC_MEM_CNTRL2) F000:B225 mov bx, 0B22Bh ; (SDRAM clock enable/disable) F000:B228 jmp RD_GX_BASE_AX2 ; continue at CS:[B22Bh] F000:B22B ; --------------------------------------------------------------------------- F000:B22B and edx, 0FFFFC7C7h ; Shift SDCLK = No shift F000:B232 or edx, 7C0h ; Enable SDCLK0-3 F000:B239 or edx, 18h ; Shift SDCLK = Shift 1.5 core clock F000:B23D mov bx, 0B243h ; write GX_BASE+8404h (MC_MEM_CNTRL2) F000:B240 jmp WR_GX_BASE_AX2 ; continue at CS:[B243h] F000:B243 ; --------------------------------------------------------------------------- F000:B243 mov ax, 8400h ; read GX_BASE+8400h (MC_MEM_CNTRL1) F000:B246 mov bx, 0B24Ch ; (SDRAM clock and refresh timing) F000:B249 jmp RD_GX_BASE_AX2 ; continue at CS:[B24Ch] F000:B24C ; --------------------------------------------------------------------------- F000:B24C and edx, 0FFFC003Fh F000:B253 and edx, 63FFFBh F000:B25A or edx, 0B6800000h F000:B261 or edx, 140000h F000:B268 mov bx, 0B26Eh ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B26B jmp WR_GX_BASE_AX2 ; continue at CS:[B26Eh] F000:B26E ; --------------------------------------------------------------------------- F000:B26E mov ax, 8408h ; read GX_BASE+8408h (MC_BANK_CFG) F000:B271 mov bx, 0B277h ; (DIMM0,1 Module Parameters) F000:B274 jmp RD_GX_BASE_AX2 ; continue at CS:[B277h] F000:B277 ; --------------------------------------------------------------------------- F000:B277 and edx, 700070h F000:B27E or edx, 700070h F000:B285 mov bx, 0B28Bh ; write GX_BASE+8408h (MC_BANK_CFG) F000:B288 jmp WR_GX_BASE_AX2 ; continue at CS:[B28Bh] F000:B28B ; --------------------------------------------------------------------------- F000:B28B mov ax, 840Ch ; read GX_BASE+840Ch (MC_SYNC_TIM1) F000:B28E mov bx, 0B294h ; (Memory Module Timings) F000:B291 jmp RD_GX_BASE_AX2 ; continue at CS:[B294h] F000:B294 ; --------------------------------------------------------------------------- F000:B294 and edx, 8FFFFFFFh F000:B29B or edx, 30000000h F000:B2A2 mov bx, 0B2A8h ; write GX_BASE+840Ch (MC_SYNC_TIM1) F000:B2A5 jmp WR_GX_BASE_AX2 ; continue at CS:[B2A8h] F000:B2A8 ; --------------------------------------------------------------------------- F000:B2A8 mov bx, 0B2AEh F000:B2AB jmp loc_FB4BB ; continue at CS:[B2AEh] F000:B2AE ; --------------------------------------------------------------------------- F000:B2AE mov edx, ebp F000:B2B1 mov ax, 8408h F000:B2B4 mov bx, 0B2BAh ; write GX_BASE+8408h (MC_BANK_CFG) F000:B2B7 jmp WR_GX_BASE_AX2 ; continue at CS:[B2BAh] F000:B2BA ; --------------------------------------------------------------------------- F000:B2BA cmp ebp, 700070h F000:B2C1 jnz short loc_FB30D F000:B2C3 mov al, 1Ch F000:B2C5 jmp loc_F4ED1 F000:B2C8 ; --------------------------------------------------------------------------- F000:B2C8 mov al, 55h ; 'U' F000:B2CA mov ah, al F000:B2CC and eax, 0FF0h F000:B2D2 shr al, 4 F000:B2D5 cmp al, 9 F000:B2D7 jle short loc_FB2DD F000:B2D9 add al, 37h ; '7' F000:B2DB jmp short loc_FB2DF F000:B2DD ; --------------------------------------------------------------------------- F000:B2DD F000:B2DD loc_FB2DD: ; CODE XREF: F000:B2D7j F000:B2DD add al, 30h ; '0' F000:B2DF F000:B2DF loc_FB2DF: ; CODE XREF: F000:B2DBj F000:B2DF out 80h, al ; manufacture's diagnostic checkpoint F000:B2E1 shl eax, 10h F000:B2E5 mov ax, 800h F000:B2E8 F000:B2E8 loc_FB2E8: ; CODE XREF: F000:B2E9j F000:B2E8 dec ax F000:B2E9 jnz short loc_FB2E8 F000:B2EB shr eax, 10h F000:B2EF mov al, ah F000:B2F1 cmp al, 9 F000:B2F3 jle short loc_FB2F9 F000:B2F5 add al, 37h ; '7' F000:B2F7 jmp short loc_FB2FB F000:B2F9 ; --------------------------------------------------------------------------- F000:B2F9 F000:B2F9 loc_FB2F9: ; CODE XREF: F000:B2F3j F000:B2F9 add al, 30h ; '0' F000:B2FB F000:B2FB loc_FB2FB: ; CODE XREF: F000:B2F7j F000:B2FB out 80h, al ; manufacture's diagnostic checkpoint F000:B2FD mov ax, 800h F000:B300 F000:B300 loc_FB300: ; CODE XREF: F000:B301j F000:B300 dec ax F000:B301 jnz short loc_FB300 F000:B303 mov al, 20h ; ' ' F000:B305 out 80h, al ; manufacture's diagnostic checkpoint F000:B307 mov ax, 800h F000:B30A F000:B30A loc_FB30A: ; CODE XREF: F000:B30Bj F000:B30A dec ax F000:B30B jnz short loc_FB30A F000:B30D F000:B30D loc_FB30D: ; CODE XREF: F000:B2C1j F000:B30D mov di, 8400h F000:B310 mov eax, es:[edi] F000:B315 or eax, 10h F000:B319 mov es:[edi], eax F000:B31E and eax, 0FFFFFFEFh F000:B322 mov es:[edi], eax F000:B327 mov si, 0B32Dh F000:B32A jmp set_dimm_timing F000:B32D ; --------------------------------------------------------------------------- F000:B32D mov bx, 0B332h F000:B330 jmp short DETECT_RAM2 ; continue at CS:[B332h] F000:B332 ; --------------------------------------------------------------------------- F000:B332 mov bx, fs ; restore BX F000:B334 jmp bx ; return F000:B336 ; --------------------------------------------------------------------------- F000:B336 F000:B336 DETECT_RAM2: ; CODE XREF: F000:B330j F000:B336 mov ebp, ebx ; return address F000:B339 mov ax, 8408h ; read GX_BASE+8408h (MC_BANK_CFG) F000:B33C mov bx, 0B342h ; (DIMM0,1 Module Parameters) F000:B33F jmp RD_GX_BASE_AX2 ; continue at CS:[B342h] F000:B342 ; --------------------------------------------------------------------------- F000:B342 mov esi, edx ; ESI = EDX = MC_BANK_CFG F000:B345 shr edx, 4 F000:B349 mov ax, dx F000:B34B and ax, 7 ; mask bits 6:4 (DIMM0_PG_SZ) F000:B34E mov edx, esi ; EDX = ESI = MC_BANK_CFG F000:B351 shr edx, 8 F000:B355 mov ax, dx F000:B357 and ax, 7 ; mask bits 10:8 (DIMM0_SZ) F000:B35A mov edx, esi ; EDX = ESI = MC_BANK_CFG F000:B35D shr edx, 14h F000:B361 mov ax, dx F000:B363 and ax, 7 ; mask bits 22:20 (DIMM1_PG_SZ) F000:B366 mov edx, esi ; EDX = ESI = MC_BANK_CFG F000:B369 shr edx, 18h F000:B36D mov ax, dx F000:B36F and ax, 7 ; mask bits 26:24 (DIMM1_SZ) F000:B372 mov ax, 840Ch ; read GX_BASE+840Ch (MC_SYNC_TIM1) F000:B375 mov bx, 0B37Bh ; (Memory Module Timings) F000:B378 jmp RD_GX_BASE_AX2 ; continue at CS:[B37Bh] F000:B37B ; --------------------------------------------------------------------------- F000:B37B xchg esi, edx ; ESI = EDX = MC_SYNC_TIM1 F000:B37E shr esi, 1Ch F000:B382 mov ax, si F000:B384 and ax, 7 ; mask bits 30:28 (CAS latency) F000:B387 mov ax, 8408h ; read GX_BASE+8408h (MC_BANK_CFG) F000:B38A mov bx, 0B390h ; (DIMM0,1 Module Parameters) F000:B38D jmp RD_GX_BASE_AX2 ; continue at CS:[B390h] F000:B390 ; --------------------------------------------------------------------------- F000:B390 xor eax, eax ; EAX = 0 F000:B393 xor esi, esi ; ESI = 0 F000:B396 mov ebx, edx ; EBX = EDX = MC_BANK_CFG F000:B399 shr ebx, 4 F000:B39D and ebx, 7 ; mask bits 6:4 (DIMM0_PG_SZ) F000:B3A1 cmp bl, 7 ; DIMM0 not installed? F000:B3A4 jz short skip_dimm0 ; then skip F000:B3A6 mov eax, 400000h ; EAX = 00400000h F000:B3AC mov ecx, edx ; ECX = EDX = MC_BANK_CFG F000:B3AF shr ecx, 8 F000:B3B3 and cl, 7 ; mask bits 10:8 (DIMM0_SZ, in my case 3=32MB) F000:B3B6 shl eax, cl ; EAX = 2000000h F000:B3B9 mov esi, eax ; ESI = 2000000h F000:B3BC F000:B3BC skip_dimm0: ; CODE XREF: F000:B3A4j F000:B3BC mov ebx, edx ; EBX = EDX = MC_BANK_CFG F000:B3BF shr ebx, 14h ; mask bits 22:20 (DIMM1_PG_SZ) F000:B3C3 and ebx, 7 ; mask bits 22:20 (DIMM1_PG_SZ) F000:B3C7 cmp bl, 7 ; DIMM1 not installed? F000:B3CA jz short skip_dimm1 ; then skip F000:B3CC mov eax, 400000h ; EAX = 00400000h F000:B3D2 mov ecx, edx ; ECX = EDX = MC_BANK_CFG F000:B3D5 shr ecx, 18h F000:B3D9 and cl, 7 ; mask bits 26:24 (DIMM1_SZ, in my case 6=256MB) F000:B3DC shl eax, cl ; EAX = 10000000h F000:B3DF add esi, eax ; ESI = 12000000h (total RAM size) F000:B3E2 F000:B3E2 skip_dimm1: ; CODE XREF: F000:B3CAj F000:B3E2 dec esi ; ESI = 11FFFFFFh (RAM top) F000:B3E4 mov edx, esi ; EDX = 11FFFFFFh (RAM top) F000:B3E7 mov ax, 8000h ; write GX_BASE+8000h (BC_DRAM_TOP) F000:B3EA mov bx, 0B3F0h F000:B3ED jmp WR_GX_BASE_AX2 ; continue at CS:[B3F0h] F000:B3F0 ; --------------------------------------------------------------------------- F000:B3F0 inc esi ; ESI = 12000000h (total RAM size) F000:B3F2 mov ax, 8414h ; read GX_BASE+8414h (MC_GBASE_ADD) F000:B3F5 mov bx, 0B3FBh ; (bit10:0 = Graphics Base Address29:19, GRBA18:0 is always 0) F000:B3F8 jmp RD_GX_BASE_AX2 ; continue at CS:[B3FBh] F000:B3FB ; --------------------------------------------------------------------------- F000:B3FB and edx, 0FFFFF000h ; EDX = 11FFF000h F000:B402 shr esi, 13h ; ESI = 240h F000:B406 or edx, esi ; set GRBA to RAM top F000:B409 mov bx, 0B40Fh ; write GX_BASE+8414h (MC_GBASE_ADD) F000:B40C jmp WR_GX_BASE_AX2 ; continue at CS:[B40Fh] F000:B40F ; --------------------------------------------------------------------------- F000:B40F mov ebx, ebp F000:B412 jmp bx ; return F000:B414 ; --------------------------------------------------------------------------- F000:B414 F000:B414 set_dimm_timing: ; CODE XREF: F000:40CCj F000:B414 ; F000:B32Aj ... F000:B414 shl esi, 10h F000:B418 mov ax, 8400h ; read GX_BASE+8400h (MC_MEM_CNTRL1) F000:B41B mov bx, 0B421h ; (SDRAM clock and refresh timing) F000:B41E jmp RD_GX_BASE_AX2 ; continue at CS:[B421h] F000:B421 ; --------------------------------------------------------------------------- F000:B421 and edx, 0FFFDFFFFh F000:B428 mov bx, 0B42Eh ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B42B jmp WR_GX_BASE_AX2 ; continue at CS:[B42Eh] F000:B42E ; --------------------------------------------------------------------------- F000:B42E or edx, 20000h F000:B435 mov bx, 0B43Bh ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B438 jmp WR_GX_BASE_AX2 ; continue at CS:[B43Bh] F000:B43B ; --------------------------------------------------------------------------- F000:B43B mov ax, 8404h ; read GX_BASE+8404h (MC_MEM_CNTRL2) F000:B43E mov bx, 0B444h ; (SDRAM clock enable/disable) F000:B441 jmp RD_GX_BASE_AX2 ; continue at CS:[B444h] F000:B444 ; --------------------------------------------------------------------------- F000:B444 and edx, 0FFFFF83Fh F000:B44B mov bx, 0B451h ; write GX_BASE+8404h (MC_MEM_CNTRL2) F000:B44E jmp WR_GX_BASE_AX2 ; continue at CS:[B451h] F000:B451 ; --------------------------------------------------------------------------- F000:B451 mov cx, 1388h ; count = 5000 F000:B454 F000:B454 EDh_fill_loop: ; CODE XREF: F000:B456j F000:B454 out 0EDh, al F000:B456 loop EDh_fill_loop F000:B458 mov ax, 8400h ; read GX_BASE+8400h (MC_MEM_CNTRL1) F000:B45B mov bx, 0B461h ; (SDRAM clock and refresh timing) F000:B45E jmp RD_GX_BASE_AX2 ; continue at CS:[B461h] F000:B461 ; --------------------------------------------------------------------------- F000:B461 mov cx, 8 ; count = 8 F000:B464 or edx, 10h F000:B468 F000:B468 loc_FB468: ; CODE XREF: F000:B46Ej F000:B468 mov bx, 0B46Eh ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B46B jmp WR_GX_BASE_AX2 ; continue at CS:[B46Eh] F000:B46E ; --------------------------------------------------------------------------- F000:B46E loop loc_FB468 ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B470 and edx, 0FFFFFFEFh F000:B474 and edx, 0FFFFFFFEh F000:B478 mov bx, 0B47Eh ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B47B jmp WR_GX_BASE_AX2 ; continue at CS:[B47Eh] F000:B47E ; --------------------------------------------------------------------------- F000:B47E or edx, 2001h F000:B485 mov bx, 0B48Bh ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B488 jmp WR_GX_BASE_AX2 ; continue at CS:[B48Bh] F000:B48B ; --------------------------------------------------------------------------- F000:B48B and edx, 0FFFFFFFEh F000:B48F mov bx, 0B495h ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B492 jmp WR_GX_BASE_AX2 ; continue at CS:[B495h] F000:B495 ; --------------------------------------------------------------------------- F000:B495 mov cx, 8 F000:B498 or edx, 10h F000:B49C F000:B49C loc_FB49C: ; CODE XREF: F000:B4A2j F000:B49C mov bx, 0B4A2h ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B49F jmp WR_GX_BASE_AX2 ; continue at CS:[B4A2h] F000:B4A2 ; --------------------------------------------------------------------------- F000:B4A2 loop loc_FB49C ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B4A4 and edx, 0FFFFFFEFh F000:B4A8 mov bx, 0B4AEh ; write GX_BASE+8400h (MC_MEM_CNTRL1) F000:B4AB jmp WR_GX_BASE_AX2 ; continue at CS:[B4AEh] F000:B4AE ; --------------------------------------------------------------------------- F000:B4AE mov cx, 7D0h F000:B4B1 F000:B4B1 loc_FB4B1: ; CODE XREF: F000:B4B3j F000:B4B1 out 0EDh, al F000:B4B3 loop loc_FB4B1 F000:B4B5 shr esi, 10h F000:B4B9 jmp si F000:B4BB ; --------------------------------------------------------------------------- F000:B4BB F000:B4BB loc_FB4BB: ; CODE XREF: F000:B2ABj F000:B4BB mov gs, bx F000:B4BD assume gs:nothing F000:B4BD mov bx, 0B4C3h F000:B4C0 jmp loc_FB814 F000:B4C3 ; --------------------------------------------------------------------------- F000:B4C3 mov edx, 57405740h F000:B4C9 mov di, 8408h F000:B4CC mov es:[edi], edx F000:B4D1 mov si, 0B4D7h F000:B4D4 jmp set_dimm_timing F000:B4D7 ; --------------------------------------------------------------------------- F000:B4D7 mov edx, 705740h F000:B4DD mov ebp, 700070h F000:B4E3 mov cx, 0 F000:B4E6 mov bx, 0B4ECh F000:B4E9 jmp loc_FB814 F000:B4EC ; --------------------------------------------------------------------------- F000:B4EC F000:B4EC loc_FB4EC: ; CODE XREF: F000:B555j F000:B4EC cmp cx, 20h ; ' ' F000:B4EF jz loc_FB805 F000:B4F3 mov di, 8408h F000:B4F6 mov es:[edi], edx F000:B4FB mov di, 8400h F000:B4FE mov eax, es:[edi] F000:B503 or eax, 10h F000:B507 mov es:[edi], eax F000:B50C and eax, 0FFFFFFEFh F000:B510 mov es:[edi], eax F000:B515 mov large es:dword_F0000, 5A5A5A5Ah F000:B522 mov large dword ptr es:byte_F0008+0F8h, 0 F000:B52F mov eax, large es:dword_F0000 F000:B537 mov large es:dword_F0000, 0 F000:B544 cmp eax, 5A5A5A5Ah F000:B54A jz short loc_FB557 F000:B54C F000:B54C loc_FB54C: ; CODE XREF: F000:B802j F000:B54C add cx, 10h F000:B54F mov edx, 57400070h F000:B555 jmp short loc_FB4EC F000:B557 ; --------------------------------------------------------------------------- F000:B557 F000:B557 loc_FB557: ; CODE XREF: F000:B54Aj F000:B557 mov ebx, 40h ; '@' F000:B55D mov esi, 2000h F000:B563 F000:B563 loc_FB563: ; CODE XREF: F000:B5F1j F000:B563 mov large es:dword_F0000, 5A5A5A5Ah F000:B570 mov dword ptr es:[esi], 0DEADBEEFh F000:B579 mov large dword ptr es:byte_F0008+0F8h, 0 F000:B586 mov eax, large es:dword_F0000 F000:B58E mov large es:dword_F0000, 0 F000:B59B cmp eax, 5A5A5A5Ah F000:B5A1 jz short loc_FB5F4 F000:B5A3 mov di, 8408h F000:B5A6 mov edx, es:[edi] F000:B5AB mov eax, 0FFFFFF0Fh F000:B5B1 rol eax, cl F000:B5B4 and edx, eax F000:B5B7 dec ebx F000:B5B9 cmp bl, 0FFh F000:B5BC jz loc_FB7DD F000:B5C0 and ebx, 70h F000:B5C4 shl ebx, cl F000:B5C7 or edx, ebx F000:B5CA shr ebx, cl F000:B5CD mov di, 8408h F000:B5D0 mov es:[edi], edx F000:B5D5 mov di, 8400h F000:B5D8 mov eax, es:[edi] F000:B5DD or eax, 10h F000:B5E1 mov es:[edi], eax F000:B5E6 and eax, 0FFFFFFEFh F000:B5EA mov es:[edi], eax F000:B5EF shr si, 1 F000:B5F1 jmp loc_FB563 F000:B5F4 ; --------------------------------------------------------------------------- F000:B5F4 F000:B5F4 loc_FB5F4: ; CODE XREF: F000:B5A1j F000:B5F4 mov eax, 0FFFFFF0Fh F000:B5FA rol eax, cl F000:B5FD and ebp, eax F000:B600 mov eax, ebx F000:B603 shl eax, cl F000:B606 or ebp, eax F000:B609 shl ecx, 10h F000:B60D shr bx, 4 F000:B610 mov esi, 800h F000:B616 mov cl, bl F000:B618 shl esi, cl F000:B61B shr ecx, 10h F000:B61F mov large es:dword_F0000, 5A5A5A5Ah F000:B62C mov dword ptr es:[esi], 0DEADBEEFh F000:B635 mov large dword ptr es:byte_F0008+0F8h, 0 F000:B642 mov eax, large es:dword_F0000 F000:B64A cmp eax, 5A5A5A5Ah F000:B650 jz short loc_FB685 F000:B652 mov eax, 0FFFFEFFFh F000:B658 rol eax, cl F000:B65B and ebp, eax F000:B65E and edx, eax F000:B661 mov di, 8408h F000:B664 mov es:[edi], edx F000:B669 mov di, 8400h F000:B66C mov eax, es:[edi] F000:B671 or eax, 10h F000:B675 mov es:[edi], eax F000:B67A and eax, 0FFFFFFEFh F000:B67E mov es:[edi], eax F000:B683 jmp short loc_FB691 F000:B685 ; --------------------------------------------------------------------------- F000:B685 F000:B685 loc_FB685: ; CODE XREF: F000:B650j F000:B685 mov eax, 1000h F000:B68B rol eax, cl F000:B68E or ebp, eax F000:B691 F000:B691 loc_FB691: ; CODE XREF: F000:B683j F000:B691 mov esi, 800h F000:B697 mov eax, edx F000:B69A shr eax, cl F000:B69D shr ax, 4 F000:B6A0 and al, 7 F000:B6A2 shl ecx, 10h F000:B6A6 mov cl, al F000:B6A8 shl esi, cl F000:B6AB shr ecx, 10h F000:B6AF mov eax, edx F000:B6B2 shr eax, cl F000:B6B5 shr ax, 0Ch F000:B6B8 and ax, 1 F000:B6BB shl ecx, 10h F000:B6BF mov cl, al F000:B6C1 shl esi, cl F000:B6C4 shr ecx, 10h F000:B6C8 mov large es:dword_F0000, 5A5A5A5Ah F000:B6D5 mov dword ptr es:[esi], 0DEADBEEFh F000:B6DE mov large dword ptr es:byte_F0008+0F8h, 0 F000:B6EB mov eax, es:[esi] F000:B6F0 cmp eax, 0DEADBEEFh F000:B6F6 jz short loc_FB72B F000:B6F8 mov eax, 0FFFFBFFFh F000:B6FE rol eax, cl F000:B701 and ebp, eax F000:B704 and edx, eax F000:B707 mov di, 8408h F000:B70A mov es:[edi], edx F000:B70F mov di, 8400h F000:B712 mov eax, es:[edi] F000:B717 or eax, 10h F000:B71B mov es:[edi], eax F000:B720 and eax, 0FFFFFFEFh F000:B724 mov es:[edi], eax F000:B729 jmp short loc_FB737 F000:B72B ; --------------------------------------------------------------------------- F000:B72B F000:B72B loc_FB72B: ; CODE XREF: F000:B6F6j F000:B72B mov eax, 4000h F000:B731 rol eax, cl F000:B734 or ebp, eax F000:B737 F000:B737 loc_FB737: ; CODE XREF: F000:B729j F000:B737 mov ebx, 700h F000:B73D mov esi, 10000000h F000:B743 F000:B743 loc_FB743: ; CODE XREF: F000:B7C6j F000:B743 mov large es:dword_F0000, 5A5A5A5Ah F000:B750 mov dword ptr es:[esi], 0DEADBEEFh F000:B759 mov large dword ptr es:byte_F0008+0F8h, 0 F000:B766 mov eax, large es:dword_F0000 F000:B76E cmp eax, 5A5A5A5Ah F000:B774 jz short loc_FB7C9 F000:B776 mov di, 8408h F000:B779 mov edx, es:[edi] F000:B77E mov eax, 0FFFFF0FFh F000:B784 rol eax, cl F000:B787 and edx, eax F000:B78A dec ebx F000:B78C cmp bh, 0FFh F000:B78F jz short loc_FB7DD F000:B791 and ebx, 700h F000:B798 shl ebx, cl F000:B79B or edx, ebx F000:B79E shr ebx, cl F000:B7A1 mov di, 8408h F000:B7A4 mov es:[edi], edx F000:B7A9 mov di, 8400h F000:B7AC mov eax, es:[edi] F000:B7B1 or eax, 10h F000:B7B5 mov es:[edi], eax F000:B7BA and eax, 0FFFFFFEFh F000:B7BE mov es:[edi], eax F000:B7C3 shr esi, 1 F000:B7C6 jmp loc_FB743 F000:B7C9 ; --------------------------------------------------------------------------- F000:B7C9 F000:B7C9 loc_FB7C9: ; CODE XREF: F000:B774j F000:B7C9 mov eax, 0FFFFF0FFh F000:B7CF rol eax, cl F000:B7D2 and ebp, eax F000:B7D5 shl ebx, cl F000:B7D8 or ebp, ebx F000:B7DB jmp short loc_FB7F5 F000:B7DD ; --------------------------------------------------------------------------- F000:B7DD F000:B7DD loc_FB7DD: ; CODE XREF: F000:B5BCj F000:B7DD ; F000:B78Fj F000:B7DD mov eax, 0FFFF0000h F000:B7E3 rol eax, cl F000:B7E6 and ebp, eax F000:B7E9 mov eax, 70h ; 'p' F000:B7EF shl eax, cl F000:B7F2 or ebp, eax F000:B7F5 F000:B7F5 loc_FB7F5: ; CODE XREF: F000:B7DBj F000:B7F5 mov large es:dword_F0000, 12345678h F000:B802 jmp loc_FB54C F000:B805 ; --------------------------------------------------------------------------- F000:B805 F000:B805 loc_FB805: ; CODE XREF: F000:B4EFj F000:B805 stc F000:B806 cmp ebp, 700070h F000:B80D jz short loc_FB810 F000:B80F clc F000:B810 F000:B810 loc_FB810: ; CODE XREF: F000:B80Dj F000:B810 mov bx, gs F000:B812 jmp bx F000:B814 ; --------------------------------------------------------------------------- F000:B814 F000:B814 loc_FB814: ; CODE XREF: F000:B4C0j F000:B814 ; F000:B4E9j F000:B814 mov al, 0C3h ; '+' F000:B816 out 22h, al F000:B818 xchg ah, al F000:B81A in al, 23h F000:B81C or al, 10h F000:B81E xchg ah, al F000:B820 out 22h, al F000:B822 xchg ah, al F000:B824 out 23h, al F000:B826 mov al, 0B8h ; 'ª' F000:B828 out 22h, al F000:B82A in al, 23h F000:B82C shl eax, 1Eh F000:B830 mov edi, eax F000:B833 mov al, 0C3h ; '+' F000:B835 out 22h, al F000:B837 xchg ah, al F000:B839 in al, 23h F000:B83B and al, 0EFh F000:B83D xchg ah, al F000:B83F out 22h, al F000:B841 xchg ah, al F000:B843 out 23h, al F000:B845 jmp bx F000:B847 ; --------------------------------------------------------------------------- F000:B847 ; START OF FUNCTION CHUNK FOR SET_BC_XMAP_3 F000:B847 F000:B847 RD_GX_BASE_AX2: ; CODE XREF: F000:41F7j F000:B847 ; SET_BC_XMAP_2+9j ... F000:B847 and eax, 0FFFFh ; read 32bit reg. from GX_BASE+EAX15:0 (MMIO) to EDX F000:B84D mov edi, eax ; EDI = 0000xxxxh F000:B850 mov dx, 0CF8h ; PCI address port F000:B853 mov eax, 800090D0h ; PCI bus 0, dev 12h, func 0, reg D0h (CS5530 ISA bridge) F000:B859 out dx, eax ; write PCI address F000:B85B mov eax, edi ; EAX = 0000xxxxh F000:B85E shl eax, 10h ; EAX = xxxx0000h F000:B862 mov dx, 0CFCh ; PCI data port F000:B865 mov ax, 0FFFDh ; EAX = xxxxFFFDh F000:B868 stc ; set CARRY flag F000:B869 out dx, ax ; write to PCI register, PCI[D0h]=FFFDh F000:B86A nop ; this write call software SMI F000:B86B jb short RD_GX_BASE_AX3 ; jump if CARRY flag is set F000:B86D mov edx, eax ; EDX = xxxxFFFDh F000:B870 mov eax, edi ; EDI = 0000xxxxh F000:B873 jmp bx ; continue at CS:[C81Ch] F000:B875 ; --------------------------------------------------------------------------- F000:B875 F000:B875 RD_GX_BASE_AX3: ; CODE XREF: SET_BC_XMAP_3-FA5j F000:B875 mov eax, edi ; EAX = 0000xxxxh F000:B878 mov al, 0C3h ; '+' ; CCR3 F000:B87A out 22h, al F000:B87C xchg ah, al F000:B87E in al, 23h ; AL = CCR3 F000:B880 or al, 10h ; set MAPEN = 1 F000:B882 xchg ah, al F000:B884 out 22h, al F000:B886 xchg ah, al F000:B888 out 23h, al ; update CCR3 F000:B88A mov al, 0B8h ; 'ª' ; GCR F000:B88C out 22h, al F000:B88E in al, 23h ; AL = GCR F000:B890 shl eax, 1Eh ; EAX31:30 = GCR1:0 - get GX_BASE F000:B894 mov ax, di ; AX = xxxxh - add MMIO reg. number F000:B896 shl edi, 10h ; EDI = xxxx0000h F000:B89A mov edx, es:[eax] ; EDX = ES:[4000xxxxh] - read MMIO register F000:B89F shr edi, arg_E ; EDI = 0000xxxxh F000:B8A3 mov al, 0C3h ; '+' ; CCR3 F000:B8A5 out 22h, al F000:B8A7 xchg ah, al F000:B8A9 in al, 23h ; AL = CCR3 F000:B8AB and al, 0EFh ; clear MAPEN = 0 F000:B8AD xchg ah, al F000:B8AF out 22h, al F000:B8B1 xchg ah, al F000:B8B3 out 23h, al ; update CCR3 F000:B8B5 mov eax, edi ; EAX = 0000xxxxh F000:B8B8 jmp bx ; return MMIO reg. value in EDX, preserve EAX F000:B8B8 ; END OF FUNCTION CHUNK FOR SET_BC_XMAP_3 F000:B8BA ; --------------------------------------------------------------------------- F000:B8BA ; START OF FUNCTION CHUNK FOR WR_GX_BASE_AX F000:B8BA F000:B8BA WR_GX_BASE_AX2: ; CODE XREF: F000:4697j F000:B8BA ; F000:46B8j ... F000:B8BA and eax, 0FFFFh ; write EDX to GX_BASE+EAX15:0 32bit register (MMIO) F000:B8C0 mov edi, edx ; EDI = 0000xxxxh F000:B8C3 shl eax, 10h ; EAX = xxxx0000h F000:B8C7 mov edx, eax ; EDX = xxxx0000h F000:B8CA mov dx, 0CF8h ; PCI address port F000:B8CD mov eax, 800090D0h ; PCI bus 0, dev 12h, func 0, reg D0h (CS5530 ISA bridge) F000:B8D3 out dx, eax ; write PCI address F000:B8D5 mov eax, edx ; EAX = xxxx0CF8h F000:B8D8 mov dx, 0CFCh ; EAX = xxxx0CFCh, PCI data port F000:B8DB mov ax, 0FFFCh ; EAX = xxxxFFFCh F000:B8DE stc ; set CARRY flag F000:B8DF out dx, ax ; write to PCI register, PCI[D0h]=FFFCh F000:B8E0 nop ; this write call software SMI F000:B8E1 jb short WR_GX_BASE_AX3 ; EAX = 0000xxxxh F000:B8E3 mov edx, edi ; EDX = 0000xxxxh F000:B8E6 shr eax, 10h ; EAX = 0000xxxxh F000:B8EA jmp bx ; continue at CS:[C829h] F000:B8EC ; --------------------------------------------------------------------------- F000:B8EC F000:B8EC WR_GX_BASE_AX3: ; CODE XREF: WR_GX_BASE_AX-6Aj F000:B8EC shr eax, 10h ; EAX = 0000xxxxh F000:B8F0 mov edx, edi ; EDX = 0000xxxxh F000:B8F3 mov edi, eax ; EAX = 0000xxxxh F000:B8F6 mov al, 0C3h ; '+' ; CCR3 F000:B8F8 out 22h, al F000:B8FA xchg ah, al F000:B8FC in al, 23h ; AL = CCR3 F000:B8FE or al, 10h ; set MAPEN = 1 F000:B900 xchg ah, al F000:B902 out 22h, al F000:B904 xchg ah, al F000:B906 out 23h, al ; update CCR3 F000:B908 mov al, 0B8h ; 'ª' ; GCR F000:B90A out 22h, al F000:B90C in al, 23h ; AL = GCR F000:B90E shl eax, 1Eh ; EAX31:30 = GCR1:0 - get GX_BASE F000:B912 mov ax, di ; AX = xxxxh - add MMIO reg. number F000:B914 shl edi, 10h ; EDI = xxxx0000h F000:B918 mov es:[eax], edx ; ES:[4000xxxxh] = EDX - write MMIO register F000:B91D shr edi, 10h ; EDI = 0000xxxxh F000:B921 mov al, 0C3h ; '+' ; CCR3 F000:B923 out 22h, al F000:B925 xchg ah, al F000:B927 in al, 23h ; AL = CCR3 F000:B929 and al, 0EFh ; clear MAPEN = 0 F000:B92B xchg ah, al F000:B92D out 22h, al F000:B92F xchg ah, al F000:B931 out 23h, al ; update CCR3 F000:B933 mov eax, edi ; EAX = 0000xxxxh F000:B936 jmp bx ; preserve EAX F000:B936 ; END OF FUNCTION CHUNK FOR WR_GX_BASE_AX F000:B938 F000:B938 ; =============== S U B R O U T I N E ======================================= F000:B938 F000:B938 ; Read MMIO register: EDX = GX_BASE[EAX] F000:B938 F000:B938 RD_GX_BASE_AX1 proc near ; CODE XREF: F000:3FB8p F000:B938 ; F000:3FCEp ... F000:B938 push eax F000:B93A push edi F000:B93C push es F000:B93D push bx F000:B93E mov bx, 0B944h F000:B941 jmp RD_GX_BASE_AX2 ; continue at CS:[B944h] F000:B944 ; --------------------------------------------------------------------------- F000:B944 pop bx F000:B945 pop es F000:B946 assume es:nothing F000:B946 pop edi F000:B948 pop eax F000:B94A retn F000:B94A RD_GX_BASE_AX1 endp F000:B94A F000:B94B F000:B94B ; =============== S U B R O U T I N E ======================================= F000:B94B F000:B94B ; Write MMIO register: GX_BASE[EAX] = EDX F000:B94B F000:B94B WR_GX_BASE_AX proc near ; CODE XREF: F000:3FC2p F000:B94B ; F000:3FDCp ... F000:B94B F000:B94B ; FUNCTION CHUNK AT F000:B8BA SIZE 0000007E BYTES F000:B94B F000:B94B push eax F000:B94D push edx F000:B94F push edi F000:B951 push es F000:B952 push bx F000:B953 mov bx, 0B959h ; continue at CS:[B959h] F000:B956 jmp WR_GX_BASE_AX2 F000:B959 ; --------------------------------------------------------------------------- F000:B959 pop bx F000:B95A pop es F000:B95B pop edi F000:B95D pop edx F000:B95F pop eax F000:B961 retn F000:B961 WR_GX_BASE_AX endp F000:B961 F000:B962 ; --------------------------------------------------------------------------- F000:B962 mov edi, esi F000:B965 mov ecx, 40000h F000:B96B mov esi, 100000h F000:B971 cld F000:B972 rep lods dword ptr es:[esi] F000:B977 mov esi, edi F000:B97A jmp bx F000:B97C ; --------------------------------------------------------------------------- F000:B97C shl edi, 10h F000:B980 mov eax, cr0 F000:B983 or eax, 60000000h F000:B989 mov cr0, eax F000:B98C wbinvd F000:B98E shr edi, 10h F000:B992 jmp bx F000:B992 ; --------------------------------------------------------------------------- F000:B994 db 0Ch dup(0) F000:B9A0 F000:B9A0 ; =============== S U B R O U T I N E ======================================= F000:B9A0 F000:B9A0 F000:B9A0 sub_FB9A0 proc near F000:B9A0 push bx F000:B9A1 push cx F000:B9A2 push di F000:B9A3 push si F000:B9A4 mov si, bx F000:B9A6 mov cx, 0 F000:B9A9 call sub_FB9F0 F000:B9AC jb short loc_FB9D0 F000:B9AE cmp bx, 64h ; 'd' F000:B9B1 jb short loc_FB9D0 F000:B9B3 xor cx, cx F000:B9B5 mov di, cx F000:B9B7 F000:B9B7 loc_FB9B7: ; CODE XREF: sub_FB9A0+28j F000:B9B7 push si F000:B9B8 mov bx, si F000:B9BA mov cx, di F000:B9BC call sub_FB9F0 F000:B9BF pop si F000:B9C0 jb short loc_FB9D0 F000:B9C2 mov [bp+di], bl F000:B9C4 inc di F000:B9C5 cmp di, 3Fh ; '?' F000:B9C8 jbe short loc_FB9B7 F000:B9CA clc F000:B9CB call sub_FB9D6 F000:B9CE jnb short loc_FB9D1 F000:B9D0 F000:B9D0 loc_FB9D0: ; CODE XREF: sub_FB9A0+Cj F000:B9D0 ; sub_FB9A0+11j ... F000:B9D0 stc F000:B9D1 F000:B9D1 loc_FB9D1: ; CODE XREF: sub_FB9A0+2Ej F000:B9D1 pop si F000:B9D2 pop di F000:B9D3 pop cx F000:B9D4 pop bx F000:B9D5 retn F000:B9D5 sub_FB9A0 endp F000:B9D5 F000:B9D6 F000:B9D6 ; =============== S U B R O U T I N E ======================================= F000:B9D6 F000:B9D6 F000:B9D6 sub_FB9D6 proc near ; CODE XREF: sub_FB9A0+2Bp F000:B9D6 push cx F000:B9D7 push si F000:B9D8 xor ax, ax F000:B9DA xor si, si F000:B9DC mov cx, 3Fh ; '?' F000:B9DF F000:B9DF loc_FB9DF: ; CODE XREF: sub_FB9D6+Cj F000:B9DF add al, [bp+si] F000:B9E1 inc si F000:B9E2 loop loc_FB9DF F000:B9E4 cmp al, [bp+3Fh] F000:B9E7 jz short loc_FB9EC F000:B9E9 stc F000:B9EA jmp short loc_FB9ED F000:B9EC ; --------------------------------------------------------------------------- F000:B9EC F000:B9EC loc_FB9EC: ; CODE XREF: sub_FB9D6+11j F000:B9EC clc F000:B9ED F000:B9ED loc_FB9ED: ; CODE XREF: sub_FB9D6+14j F000:B9ED pop si F000:B9EE pop cx F000:B9EF retn F000:B9EF sub_FB9D6 endp F000:B9EF F000:B9F0 F000:B9F0 ; =============== S U B R O U T I N E ======================================= F000:B9F0 F000:B9F0 F000:B9F0 sub_FB9F0 proc near ; CODE XREF: F000:411Dp F000:B9F0 ; F000:415Dp ... F000:B9F0 jmp loc_FBAA2 F000:B9F3 ; --------------------------------------------------------------------------- F000:B9F3 F000:B9F3 loc_FB9F3: ; CODE XREF: sub_FB9F0+BBj F000:B9F3 mov bp, dx F000:B9F5 mov ax, bx F000:B9F7 shl ebx, 10h F000:B9FB mov bh, cl F000:B9FD mov bl, al F000:B9FF mov si, 0BA05h F000:BA02 jmp loc_FBBBB F000:BA05 ; --------------------------------------------------------------------------- F000:BA05 mov si, 0BA0Bh F000:BA08 jmp loc_FBAB5 F000:BA0B ; --------------------------------------------------------------------------- F000:BA0B and bl, 0FEh F000:BA0E mov si, 0BA14h F000:BA11 jmp loc_FBB11 F000:BA14 ; --------------------------------------------------------------------------- F000:BA14 jb short loc_FBA48 F000:BA16 shr ebx, 8 F000:BA1A mov si, 0BA20h F000:BA1D jmp loc_FBB11 F000:BA20 ; --------------------------------------------------------------------------- F000:BA20 jb short loc_FBA48 F000:BA22 mov si, 0BA28h F000:BA25 jmp loc_FBAB5 F000:BA28 ; --------------------------------------------------------------------------- F000:BA28 shr ebx, 8 F000:BA2C or bl, 1 F000:BA2F mov si, 0BA35h F000:BA32 jmp loc_FBB11 F000:BA35 ; --------------------------------------------------------------------------- F000:BA35 jb short loc_FBA48 F000:BA37 in ax, dx F000:BA38 and ah, 0FBh F000:BA3B out dx, ax F000:BA3C mov si, 0BA42h F000:BA3F jmp loc_FBB78 F000:BA42 ; --------------------------------------------------------------------------- F000:BA42 mov si, 0BA48h F000:BA45 jmp loc_FBADE F000:BA48 ; --------------------------------------------------------------------------- F000:BA48 F000:BA48 loc_FBA48: ; CODE XREF: sub_FB9F0+24j F000:BA48 ; sub_FB9F0+30j ... F000:BA48 jmp bp F000:BA4A ; --------------------------------------------------------------------------- F000:BA4A F000:BA4A loc_FBA4A: ; CODE XREF: sub_FB9F0+A9j F000:BA4A mov ch, bl F000:BA4C xor ebx, ebx F000:BA4F mov bl, al F000:BA51 shl ebx, 10h F000:BA55 mov bh, cl F000:BA57 mov bl, ch F000:BA59 mov bp, dx F000:BA5B mov si, 0BA61h F000:BA5E jmp loc_FBBBB F000:BA61 ; --------------------------------------------------------------------------- F000:BA61 mov si, 0BA66h F000:BA64 jmp short loc_FBAB5 F000:BA66 ; --------------------------------------------------------------------------- F000:BA66 and bl, 0FEh F000:BA69 mov si, 0BA6Fh F000:BA6C jmp loc_FBB11 F000:BA6F ; --------------------------------------------------------------------------- F000:BA6F jb short loc_FBA8E F000:BA71 shr ebx, 8 F000:BA75 mov si, 0BA7Bh F000:BA78 jmp loc_FBB11 F000:BA7B ; --------------------------------------------------------------------------- F000:BA7B jb short loc_FBA8E F000:BA7D shr ebx, 8 F000:BA81 mov si, 0BA87h F000:BA84 jmp loc_FBB11 F000:BA87 ; --------------------------------------------------------------------------- F000:BA87 jb short loc_FBA8E F000:BA89 mov si, 0BA8Eh F000:BA8C jmp short loc_FBADE F000:BA8E ; --------------------------------------------------------------------------- F000:BA8E F000:BA8E loc_FBA8E: ; CODE XREF: sub_FB9F0+7Fj F000:BA8E ; sub_FB9F0+8Bj ... F000:BA8E jmp bp F000:BA90 ; --------------------------------------------------------------------------- F000:BA90 push edx F000:BA92 push ebp F000:BA94 push gs F000:BA96 mov dx, 0BA9Bh F000:BA99 jmp short loc_FBA4A F000:BA9B ; --------------------------------------------------------------------------- F000:BA9B pop gs F000:BA9D assume gs:nothing F000:BA9D pop ebp F000:BA9F pop edx F000:BAA1 retn F000:BAA2 ; --------------------------------------------------------------------------- F000:BAA2 F000:BAA2 loc_FBAA2: ; CODE XREF: sub_FB9F0j F000:BAA2 push eax F000:BAA4 push edx F000:BAA6 push ebp F000:BAA8 mov dx, 0BAAEh F000:BAAB jmp loc_FB9F3 F000:BAAE ; --------------------------------------------------------------------------- F000:BAAE pop ebp F000:BAB0 pop edx F000:BAB2 pop eax F000:BAB4 retn F000:BAB5 ; --------------------------------------------------------------------------- F000:BAB5 F000:BAB5 loc_FBAB5: ; CODE XREF: sub_FB9F0+18j F000:BAB5 ; sub_FB9F0+35j ... F000:BAB5 in ax, dx F000:BAB6 or ah, 8 F000:BAB9 out dx, ax F000:BABA in ax, dx F000:BABB or ah, 4 F000:BABE out dx, ax F000:BABF out 0EDh, al F000:BAC1 out 0EDh, al F000:BAC3 out 0EDh, al F000:BAC5 in ax, dx F000:BAC6 and ah, 0F7h F000:BAC9 out dx, ax F000:BACA out 0EDh, al F000:BACC out 0EDh, al F000:BACE out 0EDh, al F000:BAD0 out 0EDh, al F000:BAD2 out 0EDh, al F000:BAD4 out 0EDh, al F000:BAD6 in ax, dx F000:BAD7 and ah, 0FBh F000:BADA out dx, ax F000:BADB clc F000:BADC jmp si F000:BADE ; --------------------------------------------------------------------------- F000:BADE F000:BADE loc_FBADE: ; CODE XREF: sub_FB9F0+55j F000:BADE ; sub_FB9F0+9Cj F000:BADE in al, dx F000:BADF or al, 8 F000:BAE1 out dx, al F000:BAE2 in ax, dx F000:BAE3 and ah, 0F7h F000:BAE6 out dx, ax F000:BAE7 out 0EDh, al F000:BAE9 out 0EDh, al F000:BAEB out 0EDh, al F000:BAED out 0EDh, al F000:BAEF in ax, dx F000:BAF0 or ah, 4 F000:BAF3 out dx, ax F000:BAF4 out 0EDh, al F000:BAF6 out 0EDh, al F000:BAF8 out 0EDh, al F000:BAFA out 0EDh, al F000:BAFC in ax, dx F000:BAFD or ah, 8 F000:BB00 out dx, ax F000:BB01 out 0EDh, al F000:BB03 out 0EDh, al F000:BB05 out 0EDh, al F000:BB07 out 0EDh, al F000:BB09 in ax, dx F000:BB0A and ah, 0FBh F000:BB0D out dx, ax F000:BB0E clc F000:BB0F jmp si F000:BB11 ; --------------------------------------------------------------------------- F000:BB11 F000:BB11 loc_FBB11: ; CODE XREF: sub_FB9F0+21j F000:BB11 ; sub_FB9F0+2Dj ... F000:BB11 in ax, dx F000:BB12 and ah, 0FBh F000:BB15 out dx, ax F000:BB16 mov cx, 8 F000:BB19 F000:BB19 loc_FBB19: ; CODE XREF: sub_FB9F0+154j F000:BB19 test bl, 80h F000:BB1C jz short loc_FBB25 F000:BB1E in ax, dx F000:BB1F or ah, 8 F000:BB22 out dx, ax F000:BB23 jmp short loc_FBB2A F000:BB25 ; --------------------------------------------------------------------------- F000:BB25 F000:BB25 loc_FBB25: ; CODE XREF: sub_FB9F0+12Cj F000:BB25 in ax, dx F000:BB26 and ah, 0F7h F000:BB29 out dx, ax F000:BB2A F000:BB2A loc_FBB2A: ; CODE XREF: sub_FB9F0+133j F000:BB2A in ax, dx F000:BB2B or ah, 4 F000:BB2E out dx, ax F000:BB2F out 0EDh, al F000:BB31 out 0EDh, al F000:BB33 out 0EDh, al F000:BB35 out 0EDh, al F000:BB37 in ax, dx F000:BB38 and ah, 0FBh F000:BB3B out dx, ax F000:BB3C out 0EDh, al F000:BB3E out 0EDh, al F000:BB40 out 0EDh, al F000:BB42 shl bl, 1 F000:BB44 loop loc_FBB19 F000:BB46 in ax, dx F000:BB47 or ah, 8 F000:BB4A out dx, ax F000:BB4B in al, dx F000:BB4C and al, 0F7h F000:BB4E out dx, al F000:BB4F in ax, dx F000:BB50 or ah, 4 F000:BB53 out dx, ax F000:BB54 out 0EDh, al F000:BB56 out 0EDh, al F000:BB58 out 0EDh, al F000:BB5A in ax, dx F000:BB5B shr ax, 8 F000:BB5E mov cl, al F000:BB60 in ax, dx F000:BB61 and ah, 0FBh F000:BB64 out dx, ax F000:BB65 in al, dx F000:BB66 or al, 8 F000:BB68 out dx, al F000:BB69 in ax, dx F000:BB6A and ah, 0F7h F000:BB6D out dx, ax F000:BB6E mov al, cl F000:BB70 test al, 8 F000:BB72 stc F000:BB73 jnz short loc_FBB76 F000:BB75 clc F000:BB76 F000:BB76 loc_FBB76: ; CODE XREF: sub_FB9F0+183j F000:BB76 jmp si F000:BB78 ; --------------------------------------------------------------------------- F000:BB78 F000:BB78 loc_FBB78: ; CODE XREF: sub_FB9F0+4Fj F000:BB78 in ax, dx F000:BB79 and ah, 0FBh F000:BB7C out dx, ax F000:BB7D in al, dx F000:BB7E and al, 0F7h F000:BB80 out dx, al F000:BB81 mov cx, 8 F000:BB84 xor bx, bx F000:BB86 F000:BB86 loc_FBB86: ; CODE XREF: sub_FB9F0+1BDj F000:BB86 shl bl, 1 F000:BB88 out 0EDh, al F000:BB8A out 0EDh, al F000:BB8C out 0EDh, al F000:BB8E out 0EDh, al F000:BB90 in ax, dx F000:BB91 or ah, 4 F000:BB94 out dx, ax F000:BB95 out 0EDh, al F000:BB97 out 0EDh, al F000:BB99 out 0EDh, al F000:BB9B out 0EDh, al F000:BB9D in ax, dx F000:BB9E shr ax, 8 F000:BBA1 test al, 8 F000:BBA3 jz short loc_FBBA8 F000:BBA5 or bx, 1 F000:BBA8 F000:BBA8 loc_FBBA8: ; CODE XREF: sub_FB9F0+1B3j F000:BBA8 in ax, dx F000:BBA9 and ah, 0FBh F000:BBAC out dx, ax F000:BBAD loop loc_FBB86 F000:BBAF in al, dx F000:BBB0 or al, 8 F000:BBB2 out dx, al F000:BBB3 in ax, dx F000:BBB4 and ah, 0F7h F000:BBB7 out dx, ax F000:BBB8 clc F000:BBB9 jmp si F000:BBBB ; --------------------------------------------------------------------------- F000:BBBB F000:BBBB loc_FBBBB: ; CODE XREF: sub_FB9F0+12j F000:BBBB ; sub_FB9F0+6Ej ... F000:BBBB mov dx, 0CF8h F000:BBBE mov eax, 80009090h F000:BBC4 out dx, eax F000:BBC6 mov dl, 0FCh ; 'Ø' F000:BBC8 in al, dx F000:BBC9 or al, 4 F000:BBCB out dx, al F000:BBCC in al, dx F000:BBCD or al, 8 F000:BBCF out dx, al F000:BBD0 in ax, dx F000:BBD1 and ah, 0FBh F000:BBD4 out dx, ax F000:BBD5 in ax, dx F000:BBD6 or ah, 8 F000:BBD9 out dx, ax F000:BBDA in ax, dx F000:BBDB or ah, 4 F000:BBDE out dx, ax F000:BBDF jmp si F000:BBDF sub_FB9F0 endp F000:BBDF F000:BBE1 F000:BBE1 ; =============== S U B R O U T I N E ======================================= F000:BBE1 F000:BBE1 F000:BBE1 sub_FBBE1 proc near ; CODE XREF: F000:40E8p F000:BBE1 push esi F000:BBE3 mov si, 0BBE8h F000:BBE6 jmp short loc_FBBBB F000:BBE6 sub_FBBE1 endp F000:BBE6 F000:BBE8 ; --------------------------------------------------------------------------- F000:BBE8 pop esi F000:BBEA retn F000:BBEA ; --------------------------------------------------------------------------- F000:BBEB db 5 dup(0) F000:BBF0 F000:BBF0 ; =============== S U B R O U T I N E ======================================= F000:BBF0 F000:BBF0 F000:BBF0 sub_FBBF0 proc near ; CODE XREF: sub_F45D0p F000:BBF0 ; sub_F45D0+8p ... F000:BBF0 mov dx, 2F8h F000:BBF3 retn F000:BBF3 sub_FBBF0 endp F000:BBF3 F000:BBF4 F000:BBF4 ; =============== S U B R O U T I N E ======================================= F000:BBF4 F000:BBF4 F000:BBF4 sub_FBBF4 proc near ; CODE XREF: sub_F45D0+10p F000:BBF4 ; sub_FBC60+10p F000:BBF4 mov dx, 3F8h F000:BBF7 retn F000:BBF7 sub_FBBF4 endp F000:BBF7 F000:BBF8 F000:BBF8 ; =============== S U B R O U T I N E ======================================= F000:BBF8 F000:BBF8 F000:BBF8 sub_FBBF8 proc near ; CODE XREF: sub_F45D0+Bp F000:BBF8 ; sub_F45D0+13p ... F000:BBF8 add dx, 1 F000:BBFB xor al, al F000:BBFD out dx, al F000:BBFE and dl, 0F8h F000:BC01 add dl, 2 F000:BC04 out dx, al F000:BC05 and dl, 0F8h F000:BC08 add dl, 4 F000:BC0B call sub_F8CCA F000:BC0E jnz short loc_FBC1B F000:BC10 mov al, 2 F000:BC12 call sub_F8CCA F000:BC15 cmp al, 10h F000:BC17 jnz short loc_FBC1B F000:BC19 clc F000:BC1A retn F000:BC1B ; --------------------------------------------------------------------------- F000:BC1B F000:BC1B loc_FBC1B: ; CODE XREF: sub_FBBF8+16j F000:BC1B ; sub_FBBF8+1Fj F000:BC1B and dl, 0F8h F000:BC1E add dl, 4 F000:BC21 xor al, al F000:BC23 out dx, al F000:BC24 stc F000:BC25 retn F000:BC25 sub_FBBF8 endp F000:BC25 F000:BC26 F000:BC26 ; =============== S U B R O U T I N E ======================================= F000:BC26 F000:BC26 F000:BC26 sub_FBC26 proc near ; CODE XREF: sub_F45D0+3p F000:BC26 ; sub_FBC60+3p F000:BC26 xor al, al F000:BC28 call sub_F8CCA F000:BC2B jnz short loc_FBC38 F000:BC2D mov al, 2 F000:BC2F call sub_F8CCA F000:BC32 cmp al, 50h ; 'P' F000:BC34 jnz short loc_FBC38 F000:BC36 clc F000:BC37 retn F000:BC38 ; --------------------------------------------------------------------------- F000:BC38 F000:BC38 loc_FBC38: ; CODE XREF: sub_FBC26+5j F000:BC38 ; sub_FBC26+Ej F000:BC38 stc F000:BC39 retn F000:BC39 sub_FBC26 endp F000:BC39 F000:BC3A F000:BC3A ; =============== S U B R O U T I N E ======================================= F000:BC3A F000:BC3A F000:BC3A sub_FBC3A proc near ; CODE XREF: sub_FBC49+2p F000:BC3A ; sub_FBC49+Bp F000:BC3A mov dx, 378h F000:BC3D out dx, al ; Printer Data Latch: F000:BC3D ; send byte to printer F000:BC3E mov dx, 379h F000:BC41 in al, dx ; Printer Status Bits: F000:BC41 ; 3: 0=printer signals an error F000:BC41 ; 4: 1=printer is selected F000:BC41 ; 5: 1=out of paper F000:BC41 ; 6: 0=ready for next character F000:BC41 ; 7: 0=busy or offline or error F000:BC42 and al, 0E8h F000:BC44 xor al, 80h F000:BC46 xor al, ah F000:BC48 retn F000:BC48 sub_FBC3A endp F000:BC48 F000:BC49 F000:BC49 ; =============== S U B R O U T I N E ======================================= F000:BC49 F000:BC49 F000:BC49 sub_FBC49 proc near ; CODE XREF: sub_F45D0+18p F000:BC49 ; sub_FBC60+18p F000:BC49 xor ax, ax F000:BC4B call sub_FBC3A F000:BC4E stc F000:BC4F jnz short locret_FBC5B F000:BC51 mov ax, 0E8FFh F000:BC54 call sub_FBC3A F000:BC57 stc F000:BC58 jnz short locret_FBC5B F000:BC5A clc F000:BC5B F000:BC5B locret_FBC5B: ; CODE XREF: sub_FBC49+6j F000:BC5B ; sub_FBC49+Fj F000:BC5B retn F000:BC5B sub_FBC49 endp F000:BC5B F000:BC5B ; --------------------------------------------------------------------------- F000:BC5C db 4 dup(0) F000:BC60 F000:BC60 ; =============== S U B R O U T I N E ======================================= F000:BC60 F000:BC60 F000:BC60 sub_FBC60 proc near ; CODE XREF: F000:511Ap F000:BC60 call sub_FBBF0 F000:BC63 call sub_FBC26 F000:BC66 jnb short loc_FBC7D F000:BC68 call sub_FBBF0 F000:BC6B call sub_FBBF8 F000:BC6E jb short locret_FBC82 F000:BC70 call sub_FBBF4 F000:BC73 call sub_FBBF8 F000:BC76 jb short locret_FBC82 F000:BC78 call sub_FBC49 F000:BC7B jb short locret_FBC82 F000:BC7D F000:BC7D loc_FBC7D: ; CODE XREF: sub_FBC60+6j F000:BC7D or byte ptr ds:14F1h, 1 F000:BC82 F000:BC82 locret_FBC82: ; CODE XREF: sub_FBC60+Ej F000:BC82 ; sub_FBC60+16j ... F000:BC82 retn F000:BC82 sub_FBC60 endp F000:BC82 F000:BC82 ; --------------------------------------------------------------------------- F000:BC83 db 0Dh dup(0) F000:BC90 GDT2 db 0, 0, 0, 0, 0, 0, 0, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0Fh, 9Bh, 0, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0Fh, 93h, 0, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0, 93h, 8Fh, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 10h, 9Bh, 8Fh, 0 F000:BC90 db 1Fh, 0, 0, 0, 0Eh, 93h, 80h, 0 F000:BC90 db 0FFh, 1, 0, 0, 80h, 93h, 80h, 40h F000:BC90 db 0FFh, 0FFh, 0, 0, 4, 9Bh, 0, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 1, 9Bh, 8Fh, 0 F000:BC90 db 0FFh, 7, 0, 0, 0, 93h, 80h, 3 F000:BC90 db 0FFh, 7, 0, 0, 0FCh, 93h, 80h, 0FFh F000:BC90 db 0FFh, 0FFh, 0, 0, 10h, 93h, 8Fh, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0Fh, 9Bh, 0, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0, 93h, 0, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 9, 93h, 0, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0, 9Bh, 0CFh, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0, 93h, 0CFh, 0 F000:BC90 db 0FFh, 0FFh, 0, 0, 0, 93h, 0CFh, 0 F000:BC90 db 0, 0, 0, 0, 18h, 9Bh, 80h, 0 F000:BD28 GDTR2 dw 98h ; DATA XREF: SET_GDT2r F000:BD28 ; GDT limit (19 descriptors) F000:BD2A dd 0FBC90h ; GDT base = FBC90h F000:BD2E db 2 dup(0) F000:BD30 F000:BD30 ; =============== S U B R O U T I N E ======================================= F000:BD30 F000:BD30 F000:BD30 SET_GDT2 proc near ; CODE XREF: F000:4616p F000:BD30 db 66h F000:BD30 lgdt fword ptr cs:GDTR2 ; load GDTR limit, base F000:BD37 retn F000:BD37 SET_GDT2 endp F000:BD37 F000:BD37 ; --------------------------------------------------------------------------- F000:BD38 db 8 dup(0) F000:BD40 ; --------------------------------------------------------------------------- F000:BD40 push ax F000:BD41 mov al, 20h ; ' ' F000:BD43 out 20h, al ; Interrupt controller, 8259A. F000:BD45 out 0A0h, al ; PIC 2 same as 0020 for PIC 1 F000:BD47 pop ax F000:BD48 add sp, 0Ch F000:BD4B iretd F000:BD4B ; --------------------------------------------------------------------------- F000:BD4D db 20h dup(0CCh) F000:BD6D IDTR1 dw 100h ; DATA XREF: SET_IDT1r F000:BD6D ; IDT size F000:BD6F dd 0F14FFh ; IDT base = F14FFh F000:BD73 db 2 dup(0) F000:BD75 F000:BD75 ; =============== S U B R O U T I N E ======================================= F000:BD75 F000:BD75 F000:BD75 SET_IDT1 proc near ; CODE XREF: F000:4619p F000:BD75 ; sub_FA7F0+F9p F000:BD75 db 66h F000:BD75 lidt fword ptr cs:IDTR1 ; load IDTR with physical address of IDT F000:BD7C retn F000:BD7C SET_IDT1 endp F000:BD7C F000:BD7C ; --------------------------------------------------------------------------- F000:BD7D db 3 dup(0) F000:BD80 F000:BD80 ; =============== S U B R O U T I N E ======================================= F000:BD80 F000:BD80 F000:BD80 sub_FBD80 proc near F000:BD80 push eax F000:BD82 push ebx F000:BD84 push ecx F000:BD86 push edx F000:BD88 push esi F000:BD8A push ds F000:BD8B mov ax, cs F000:BD8D mov ds, ax F000:BD8F assume ds:BIOS_F000 F000:BD8F mov al, 0DFh ; '-' F000:BD91 out 80h, al ; manufacture's diagnostic checkpoint F000:BD93 mov dx, 300h F000:BD96 in al, dx F000:BD97 cmp al, 0FFh F000:BD99 jz short loc_FBDB9 F000:BD9B mov si, 0BDC6h F000:BD9E call sub_FC676 F000:BDA1 mov si, 0BE95h F000:BDA4 call sub_FC676 F000:BDA7 mov eax, 300h F000:BDAD call sub_FC4EC F000:BDB0 call sub_FBECA F000:BDB3 mov si, 0BEAAh F000:BDB6 call sub_FC676 F000:BDB9 F000:BDB9 loc_FBDB9: ; CODE XREF: sub_FBD80+19j F000:BDB9 pop ds F000:BDBA assume ds:nothing F000:BDBA pop esi F000:BDBC pop edx F000:BDBE pop ecx F000:BDC0 pop ebx F000:BDC2 pop eax F000:BDC4 jmp bx F000:BDC4 sub_FBD80 endp F000:BDC4 F000:BDC4 ; --------------------------------------------------------------------------- F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDC6 db 0Dh,0Ah F000:BDE0 db '**********************************************************',0Dh,0Ah F000:BE1C aStartingIsawat db '***** Starting ISAWatch Debugger ver 09/15/97 *****',0Dh,0Ah F000:BE58 db '**********************************************************',0Dh,0Ah,'$' F000:BE95 aIsawatcherAtIO db 0Dh,0Ah F000:BE95 db 'ISAWatcher at I/O=$',0Dh,0Ah F000:BE95 db 'Exiting ISAWatch Debugger... $' F000:BECA F000:BECA ; =============== S U B R O U T I N E ======================================= F000:BECA F000:BECA F000:BECA sub_FBECA proc near ; CODE XREF: sub_FBD80+30p F000:BECA push si F000:BECB push eax F000:BECD push ebx F000:BECF push ecx F000:BED1 push edx F000:BED3 F000:BED3 loc_FBED3: ; CODE XREF: sub_FBECA+1Cj F000:BED3 ; sub_FBECA+25j ... F000:BED3 mov si, 0BF25h F000:BED6 call sub_FC676 F000:BED9 call sub_FC648 F000:BEDC call sub_FC62E F000:BEDF cmp al, 49h ; 'I' F000:BEE1 jnz short loc_FBEE8 F000:BEE3 call sub_FC319 F000:BEE6 jmp short loc_FBED3 F000:BEE8 ; --------------------------------------------------------------------------- F000:BEE8 F000:BEE8 loc_FBEE8: ; CODE XREF: sub_FBECA+17j F000:BEE8 cmp al, 4Fh ; 'O' F000:BEEA jnz short loc_FBEF1 F000:BEEC call sub_FC335 F000:BEEF jmp short loc_FBED3 F000:BEF1 ; --------------------------------------------------------------------------- F000:BEF1 F000:BEF1 loc_FBEF1: ; CODE XREF: sub_FBECA+20j F000:BEF1 cmp al, 4Dh ; 'M' F000:BEF3 jnz short loc_FBEFA F000:BEF5 call sub_FC255 F000:BEF8 jmp short loc_FBED3 F000:BEFA ; --------------------------------------------------------------------------- F000:BEFA F000:BEFA loc_FBEFA: ; CODE XREF: sub_FBECA+29j F000:BEFA cmp al, 50h ; 'P' F000:BEFC jnz short loc_FBF03 F000:BEFE call sub_FC34B F000:BF01 jmp short loc_FBED3 F000:BF03 ; --------------------------------------------------------------------------- F000:BF03 F000:BF03 loc_FBF03: ; CODE XREF: sub_FBECA+32j F000:BF03 cmp al, 53h ; 'S' F000:BF05 jnz short loc_FBF0C F000:BF07 call sub_FC3D5 F000:BF0A jmp short loc_FBED3 F000:BF0C ; --------------------------------------------------------------------------- F000:BF0C F000:BF0C loc_FBF0C: ; CODE XREF: sub_FBECA+3Bj F000:BF0C cmp al, 54h ; 'T' F000:BF0E jnz short loc_FBF15 F000:BF10 call sub_FBFDC F000:BF13 jmp short loc_FBED3 F000:BF15 ; --------------------------------------------------------------------------- F000:BF15 F000:BF15 loc_FBF15: ; CODE XREF: sub_FBECA+44j F000:BF15 cmp al, 1Bh F000:BF17 jz short loc_FBF1B F000:BF19 jmp short loc_FBED3 F000:BF1B ; --------------------------------------------------------------------------- F000:BF1B F000:BF1B loc_FBF1B: ; CODE XREF: sub_FBECA+4Dj F000:BF1B pop edx F000:BF1D pop ecx F000:BF1F pop ebx F000:BF21 pop eax F000:BF23 pop si F000:BF24 retn F000:BF24 sub_FBECA endp F000:BF24 F000:BF24 ; --------------------------------------------------------------------------- F000:BF25 aIsawatchDebugg db 0Dh,0Ah F000:BF25 db 0Dh,0Ah F000:BF25 db '============= ISAWatch Debugger Main Menu ============',0Dh,0Ah F000:BF61 aMMemoryPPciIOI db '| M=Memory P=PCI I/O=I/O T=Test S=SIO ESC=exit |',0Dh,0Ah F000:BF99 db '======================================================',0Dh,0Ah,'$' F000:BFD2 aData db 0Dh,0Ah F000:BFD2 db 'Data = $' F000:BFDC F000:BFDC ; =============== S U B R O U T I N E ======================================= F000:BFDC F000:BFDC F000:BFDC sub_FBFDC proc near ; CODE XREF: sub_FBECA+46p F000:BFDC push esi F000:BFDE push eax F000:BFE0 push ebx F000:BFE2 push ecx F000:BFE4 push edx F000:BFE6 F000:BFE6 loc_FBFE6: ; CODE XREF: sub_FBFDC+2Ej F000:BFE6 mov si, 0C0F3h F000:BFE9 call sub_FC676 F000:BFEC call sub_FC648 F000:BFEF call sub_FC62E F000:BFF2 cmp al, 52h ; 'R' F000:BFF4 jz short loc_FC00C F000:BFF6 cmp al, 43h ; 'C' F000:BFF8 jz short loc_FC067 F000:BFFA cmp al, 57h ; 'W' F000:BFFC jz short loc_FC032 F000:BFFE cmp al, 4Ch ; 'L' F000:C000 jz loc_FC0A8 F000:C004 cmp al, 1Bh F000:C006 jz loc_FC0E8 F000:C00A jmp short loc_FBFE6 F000:C00C ; --------------------------------------------------------------------------- F000:C00C F000:C00C loc_FC00C: ; CODE XREF: sub_FBFDC+18j F000:C00C call sub_FC489 F000:C00F mov ebx, edx F000:C012 mov si, 0C22Ah F000:C015 call sub_FC676 F000:C018 F000:C018 loc_FC018: ; CODE XREF: sub_FBFDC+4Ej F000:C018 mov cx, 40h ; '@' F000:C01B mov edx, ebx F000:C01E F000:C01E loc_FC01E: ; CODE XREF: sub_FBFDC+49j F000:C01E call sub_FC5B8 F000:C021 add edx, 4 F000:C025 loop loc_FC01E F000:C027 call sub_FC637 F000:C02A jnb short loc_FC018 F000:C02C call sub_FC648 F000:C02F jmp loc_FC0E8 F000:C032 ; --------------------------------------------------------------------------- F000:C032 F000:C032 loc_FC032: ; CODE XREF: sub_FBFDC+20j F000:C032 call sub_FC489 F000:C035 mov ebx, edx F000:C038 mov si, 0C22Ah F000:C03B call sub_FC676 F000:C03E F000:C03E loc_FC03E: ; CODE XREF: sub_FBFDC+83j F000:C03E mov ecx, 40h ; '@' F000:C044 mov esi, 11111111h F000:C04A mov edx, ebx F000:C04D F000:C04D loc_FC04D: ; CODE XREF: sub_FBFDC+7Ej F000:C04D mov eax, esi F000:C050 call sub_FC5C5 F000:C053 add edx, 4 F000:C057 rol esi, 1 F000:C05A loop loc_FC04D F000:C05C call sub_FC637 F000:C05F jnb short loc_FC03E F000:C061 call sub_FC648 F000:C064 jmp loc_FC0E8 F000:C067 ; --------------------------------------------------------------------------- F000:C067 F000:C067 loc_FC067: ; CODE XREF: sub_FBFDC+1Cj F000:C067 call sub_FC489 F000:C06A mov ebx, edx F000:C06D mov si, 0C22Ah F000:C070 call sub_FC676 F000:C073 F000:C073 loc_FC073: ; CODE XREF: sub_FBFDC+C5j F000:C073 mov ecx, 40h ; '@' F000:C079 mov esi, 11111111h F000:C07F mov edx, ebx F000:C082 F000:C082 loc_FC082: ; CODE XREF: sub_FBFDC+C0j F000:C082 mov eax, esi F000:C085 call sub_FC5C5 F000:C088 call sub_FC5B8 F000:C08B cmp eax, esi F000:C08E jz short loc_FC095 F000:C090 mov al, 45h ; 'E' F000:C092 call sub_FC62E F000:C095 F000:C095 loc_FC095: ; CODE XREF: sub_FBFDC+B2j F000:C095 add edx, 4 F000:C099 rol esi, 1 F000:C09C loop loc_FC082 F000:C09E call sub_FC637 F000:C0A1 jnb short loc_FC073 F000:C0A3 call sub_FC648 F000:C0A6 jmp short loc_FC0E8 F000:C0A8 ; --------------------------------------------------------------------------- F000:C0A8 F000:C0A8 loc_FC0A8: ; CODE XREF: sub_FBFDC+24j F000:C0A8 call sub_FC489 F000:C0AB mov ebx, edx F000:C0AE mov si, 0C22Ah F000:C0B1 call sub_FC676 F000:C0B4 F000:C0B4 loc_FC0B4: ; CODE XREF: sub_FBFDC+105j F000:C0B4 mov ecx, 8000h F000:C0BA mov esi, 0 F000:C0C0 mov edx, ebx F000:C0C3 F000:C0C3 loc_FC0C3: ; CODE XREF: sub_FBFDC+100j F000:C0C3 mov eax, esi F000:C0C6 call sub_FC5C5 F000:C0C9 call sub_FC5B8 F000:C0CC cmp eax, esi F000:C0CF jz short loc_FC0D6 F000:C0D1 mov al, 45h ; 'E' F000:C0D3 call sub_FC62E F000:C0D6 F000:C0D6 loc_FC0D6: ; CODE XREF: sub_FBFDC+F3j F000:C0D6 add edx, 4 F000:C0DA inc esi F000:C0DC loop loc_FC0C3 F000:C0DE call sub_FC637 F000:C0E1 jnb short loc_FC0B4 F000:C0E3 call sub_FC648 F000:C0E6 jmp short $+2 F000:C0E8 F000:C0E8 loc_FC0E8: ; CODE XREF: sub_FBFDC+2Aj F000:C0E8 ; sub_FBFDC+53j ... F000:C0E8 pop edx F000:C0EA pop ecx F000:C0EC pop ebx F000:C0EE pop eax F000:C0F0 pop esi F000:C0F2 retn F000:C0F2 sub_FBFDC endp F000:C0F2 F000:C0F2 ; --------------------------------------------------------------------------- F000:C0F3 aTestMenu db 0Dh,0Ah F000:C0F3 db '============= Test Menu ==================',0Dh,0Ah F000:C121 aRRead256ByteLo db '| R=Read 256 byte loop |',0Dh,0Ah F000:C14D aWWrite256Bytes db '| W=Write 256 bytes |',0Dh,0Ah F000:C179 aCWriteRead256B db '| C=Write/read 256 byte loop (1,2,4,8) |',0Dh,0Ah F000:C1A5 aLWriteRead32kD db '| L=Write/read 32k dword loop (0,1,2,3) |',0Dh,0Ah F000:C1D1 aEscExit db '| ESC=exit |',0Dh,0Ah F000:C1FD db '==========================================',0Dh,0Ah,'$' F000:C22A aRunningTest___ db 0Dh,0Ah F000:C22A db 'running test ... (hit a key to stop)... $' F000:C255 F000:C255 ; =============== S U B R O U T I N E ======================================= F000:C255 F000:C255 F000:C255 sub_FC255 proc near ; CODE XREF: sub_FBECA+2Bp F000:C255 push esi F000:C257 push eax F000:C259 push ecx F000:C25B push edx F000:C25D call sub_FC489 F000:C260 call sub_FC404 F000:C263 cmp al, 44h ; 'D' F000:C265 jz short loc_FC281 F000:C267 cmp al, 57h ; 'W' F000:C269 jz short loc_FC279 F000:C26B call sub_FC5B8 F000:C26E mov si, 0BFD2h F000:C271 call sub_FC676 F000:C274 call sub_FC4FF F000:C277 jmp short loc_FC2DA F000:C279 ; --------------------------------------------------------------------------- F000:C279 F000:C279 loc_FC279: ; CODE XREF: sub_FC255+14j F000:C279 call sub_FC44F F000:C27C call sub_FC5C5 F000:C27F jmp short loc_FC2DA F000:C281 ; --------------------------------------------------------------------------- F000:C281 F000:C281 loc_FC281: ; CODE XREF: sub_FC255+10j F000:C281 ; sub_FC255:loc_FC2C6j ... F000:C281 mov cx, 40h ; '@' F000:C284 F000:C284 loc_FC284: ; CODE XREF: sub_FC255+50j F000:C284 push cx F000:C285 and cl, 3 F000:C288 pop cx F000:C289 jnz short loc_FC298 F000:C28B xchg eax, edx F000:C28D call sub_FC621 F000:C290 call sub_FC4FF F000:C293 call sub_FC619 F000:C296 xchg eax, edx F000:C298 F000:C298 loc_FC298: ; CODE XREF: sub_FC255+34j F000:C298 call sub_FC5B8 F000:C29B call sub_FC619 F000:C29E call sub_FC4FF F000:C2A1 add edx, 4 F000:C2A5 loop loc_FC284 F000:C2A7 mov si, 0C2E3h F000:C2AA call sub_FC676 F000:C2AD call sub_FC648 F000:C2B0 cmp al, 0Dh F000:C2B2 jz short loc_FC2C6 F000:C2B4 cmp al, 20h ; ' ' F000:C2B6 jz short loc_FC2C6 F000:C2B8 cmp al, 53h ; 'S' F000:C2BA jz short loc_FC2C8 F000:C2BC cmp al, 4Eh ; 'N' F000:C2BE jz short loc_FC2C6 F000:C2C0 cmp al, 50h ; 'P' F000:C2C2 jz short loc_FC2D1 F000:C2C4 jmp short loc_FC2DA F000:C2C6 ; --------------------------------------------------------------------------- F000:C2C6 F000:C2C6 loc_FC2C6: ; CODE XREF: sub_FC255+5Dj F000:C2C6 ; sub_FC255+61j ... F000:C2C6 jmp short loc_FC281 F000:C2C8 ; --------------------------------------------------------------------------- F000:C2C8 F000:C2C8 loc_FC2C8: ; CODE XREF: sub_FC255+65j F000:C2C8 sub edx, 100h F000:C2CF jmp short loc_FC281 F000:C2D1 ; --------------------------------------------------------------------------- F000:C2D1 F000:C2D1 loc_FC2D1: ; CODE XREF: sub_FC255+6Dj F000:C2D1 sub edx, 200h F000:C2D8 jmp short loc_FC281 F000:C2DA ; --------------------------------------------------------------------------- F000:C2DA F000:C2DA loc_FC2DA: ; CODE XREF: sub_FC255+22j F000:C2DA ; sub_FC255+2Aj ... F000:C2DA pop edx F000:C2DC pop ecx F000:C2DE pop eax F000:C2E0 pop esi F000:C2E2 retn F000:C2E2 sub_FC255 endp F000:C2E2 F000:C2E2 ; --------------------------------------------------------------------------- F000:C2E3 aSSamePPrevious db 0Dh,0Ah F000:C2E3 db 'S=same, P=Previous, N/CR/Space=Next, else exit ... $' F000:C319 F000:C319 ; =============== S U B R O U T I N E ======================================= F000:C319 F000:C319 F000:C319 sub_FC319 proc near ; CODE XREF: sub_FBECA+19p F000:C319 push esi F000:C31B push eax F000:C31D push edx F000:C31F call sub_FC489 F000:C322 call sub_FC5D2 F000:C325 mov si, 0BFD2h F000:C328 call sub_FC676 F000:C32B call sub_FC4D9 F000:C32E pop edx F000:C330 pop eax F000:C332 pop esi F000:C334 retn F000:C334 sub_FC319 endp F000:C334 F000:C335 F000:C335 ; =============== S U B R O U T I N E ======================================= F000:C335 F000:C335 F000:C335 sub_FC335 proc near ; CODE XREF: sub_FBECA+22p F000:C335 push esi F000:C337 push eax F000:C339 push edx F000:C33B call sub_FC489 F000:C33E call sub_FC44F F000:C341 call sub_FC5D7 F000:C344 pop edx F000:C346 pop eax F000:C348 pop esi F000:C34A retn F000:C34A sub_FC335 endp F000:C34A F000:C34B F000:C34B ; =============== S U B R O U T I N E ======================================= F000:C34B F000:C34B F000:C34B sub_FC34B proc near ; CODE XREF: sub_FBECA+34p F000:C34B push esi F000:C34D push eax F000:C34F push ecx F000:C351 push edx F000:C353 call sub_FC489 F000:C356 call sub_FC404 F000:C359 cmp al, 57h ; 'W' F000:C35B jz short loc_FC36F F000:C35D cmp al, 44h ; 'D' F000:C35F jz short loc_FC377 F000:C361 call sub_FC5D9 F000:C364 mov si, 0BFD2h F000:C367 call sub_FC676 F000:C36A call sub_FC4FF F000:C36D jmp short loc_FC3CC F000:C36F ; --------------------------------------------------------------------------- F000:C36F F000:C36F loc_FC36F: ; CODE XREF: sub_FC34B+10j F000:C36F call sub_FC44F F000:C372 call sub_FC5EB F000:C375 jmp short loc_FC3CC F000:C377 ; --------------------------------------------------------------------------- F000:C377 F000:C377 loc_FC377: ; CODE XREF: sub_FC34B+14j F000:C377 ; sub_FC34B:loc_FC3B8j ... F000:C377 mov cx, 40h ; '@' F000:C37A F000:C37A loc_FC37A: ; CODE XREF: sub_FC34B+50j F000:C37A push cx F000:C37B and cl, 3 F000:C37E pop cx F000:C37F jnz short loc_FC38E F000:C381 xchg eax, edx F000:C383 call sub_FC621 F000:C386 call sub_FC4FF F000:C389 call sub_FC619 F000:C38C xchg eax, edx F000:C38E F000:C38E loc_FC38E: ; CODE XREF: sub_FC34B+34j F000:C38E call sub_FC5D9 F000:C391 call sub_FC619 F000:C394 call sub_FC4FF F000:C397 add edx, 4 F000:C39B loop loc_FC37A F000:C39D mov si, 0C2E3h F000:C3A0 call sub_FC676 F000:C3A3 call sub_FC648 F000:C3A6 cmp al, 0Dh F000:C3A8 jz short loc_FC3B8 F000:C3AA cmp al, 53h ; 'S' F000:C3AC jz short loc_FC3BA F000:C3AE cmp al, 4Eh ; 'N' F000:C3B0 jz short loc_FC3B8 F000:C3B2 cmp al, 50h ; 'P' F000:C3B4 jz short loc_FC3C3 F000:C3B6 jmp short loc_FC3CC F000:C3B8 ; --------------------------------------------------------------------------- F000:C3B8 F000:C3B8 loc_FC3B8: ; CODE XREF: sub_FC34B+5Dj F000:C3B8 ; sub_FC34B+65j F000:C3B8 jmp short loc_FC377 F000:C3BA ; --------------------------------------------------------------------------- F000:C3BA F000:C3BA loc_FC3BA: ; CODE XREF: sub_FC34B+61j F000:C3BA sub edx, 100h F000:C3C1 jmp short loc_FC377 F000:C3C3 ; --------------------------------------------------------------------------- F000:C3C3 F000:C3C3 loc_FC3C3: ; CODE XREF: sub_FC34B+69j F000:C3C3 sub edx, 200h F000:C3CA jmp short loc_FC377 F000:C3CC ; --------------------------------------------------------------------------- F000:C3CC F000:C3CC loc_FC3CC: ; CODE XREF: sub_FC34B+22j F000:C3CC ; sub_FC34B+2Aj ... F000:C3CC pop edx F000:C3CE pop ecx F000:C3D0 pop eax F000:C3D2 pop esi F000:C3D4 retn F000:C3D4 sub_FC34B endp F000:C3D4 F000:C3D5 F000:C3D5 ; =============== S U B R O U T I N E ======================================= F000:C3D5 F000:C3D5 F000:C3D5 sub_FC3D5 proc near ; CODE XREF: sub_FBECA+3Dp F000:C3D5 push esi F000:C3D7 push eax F000:C3D9 push ecx F000:C3DB push edx F000:C3DD call sub_FC489 F000:C3E0 call sub_FC404 F000:C3E3 cmp al, 57h ; 'W' F000:C3E5 jz short loc_FC3F5 F000:C3E7 call sub_FC601 F000:C3EA mov si, 0BFD2h F000:C3ED call sub_FC676 F000:C3F0 call sub_FC4D9 F000:C3F3 jmp short loc_FC3FB F000:C3F5 ; --------------------------------------------------------------------------- F000:C3F5 F000:C3F5 loc_FC3F5: ; CODE XREF: sub_FC3D5+10j F000:C3F5 call sub_FC44F F000:C3F8 call sub_FC60C F000:C3FB F000:C3FB loc_FC3FB: ; CODE XREF: sub_FC3D5+1Ej F000:C3FB pop edx F000:C3FD pop ecx F000:C3FF pop eax F000:C401 pop esi F000:C403 retn F000:C403 sub_FC3D5 endp F000:C403 F000:C404 F000:C404 ; =============== S U B R O U T I N E ======================================= F000:C404 F000:C404 F000:C404 sub_FC404 proc near ; CODE XREF: sub_FC255+Bp F000:C404 ; sub_FC34B+Bp ... F000:C404 push si F000:C405 mov si, 0C435h F000:C408 call sub_FC676 F000:C40B F000:C40B loc_FC40B: ; CODE XREF: sub_FC404+21j F000:C40B call sub_FC648 F000:C40E call sub_FC62E F000:C411 cmp al, 0Dh F000:C413 jz short loc_FC427 F000:C415 cmp al, 1Bh F000:C417 jz short loc_FC42B F000:C419 cmp al, 44h ; 'D' F000:C41B jz short loc_FC427 F000:C41D cmp al, 52h ; 'R' F000:C41F jz short loc_FC42B F000:C421 cmp al, 57h ; 'W' F000:C423 jz short loc_FC42F F000:C425 jmp short loc_FC40B F000:C427 ; --------------------------------------------------------------------------- F000:C427 F000:C427 loc_FC427: ; CODE XREF: sub_FC404+Fj F000:C427 ; sub_FC404+17j F000:C427 mov al, 44h ; 'D' F000:C429 jmp short loc_FC433 F000:C42B ; --------------------------------------------------------------------------- F000:C42B F000:C42B loc_FC42B: ; CODE XREF: sub_FC404+13j F000:C42B ; sub_FC404+1Bj F000:C42B mov al, 52h ; 'R' F000:C42D jmp short loc_FC433 F000:C42F ; --------------------------------------------------------------------------- F000:C42F F000:C42F loc_FC42F: ; CODE XREF: sub_FC404+1Fj F000:C42F mov al, 57h ; 'W' F000:C431 jmp short $+2 F000:C433 F000:C433 loc_FC433: ; CODE XREF: sub_FC404+25j F000:C433 ; sub_FC404+29j F000:C433 pop si F000:C434 retn F000:C434 sub_FC404 endp F000:C434 F000:C434 ; --------------------------------------------------------------------------- F000:C435 aReadWriteDump? db 0Dh,0Ah F000:C435 db 'Read/Write/Dump ? CR=D $' F000:C44F F000:C44F ; =============== S U B R O U T I N E ======================================= F000:C44F F000:C44F F000:C44F sub_FC44F proc near ; CODE XREF: sub_FC255:loc_FC279p F000:C44F ; sub_FC335+9p ... F000:C44F push si F000:C450 push cx F000:C451 mov si, 0C469h F000:C454 call sub_FC676 F000:C457 mov cx, 20h ; ' ' F000:C45A call sub_FC543 F000:C45D mov si, 0C47Fh F000:C460 call sub_FC676 F000:C463 call sub_FC4FF F000:C466 pop cx F000:C467 pop si F000:C468 retn F000:C468 sub_FC44F endp F000:C468 F000:C468 ; --------------------------------------------------------------------------- F000:C469 aEnterTheData__ db 0Dh,0Ah F000:C469 db 'Enter the data ... $',0Dh,0Ah F000:C469 db 'Data = $' F000:C489 F000:C489 ; =============== S U B R O U T I N E ======================================= F000:C489 F000:C489 F000:C489 sub_FC489 proc near ; CODE XREF: sub_FBFDC:loc_FC00Cp F000:C489 ; sub_FBFDC:loc_FC032p ... F000:C489 push eax F000:C48B push si F000:C48C push cx F000:C48D mov si, 0C4B6h F000:C490 call sub_FC676 F000:C493 mov eax, ebx F000:C496 call sub_FC4FF F000:C499 call sub_FC619 F000:C49C mov cx, 20h ; ' ' F000:C49F call sub_FC543 F000:C4A2 mov si, 0C4CFh F000:C4A5 call sub_FC676 F000:C4A8 call sub_FC4FF F000:C4AB mov edx, eax F000:C4AE mov ebx, eax F000:C4B1 pop cx F000:C4B2 pop si F000:C4B3 pop eax F000:C4B5 retn F000:C4B5 sub_FC489 endp F000:C4B5 F000:C4B5 ; --------------------------------------------------------------------------- F000:C4B6 aEnterTheAddres db 0Dh,0Ah F000:C4B6 db 'Enter the address ... $',0Dh,0Ah F000:C4B6 db 'Addr = $' F000:C4D9 F000:C4D9 ; =============== S U B R O U T I N E ======================================= F000:C4D9 F000:C4D9 F000:C4D9 sub_FC4D9 proc near ; CODE XREF: sub_FC319+12p F000:C4D9 ; sub_FC3D5+1Bp F000:C4D9 push eax F000:C4DB push ecx F000:C4DD mov cx, 2 F000:C4E0 rol eax, 18h F000:C4E4 call sub_FC50A F000:C4E7 pop ecx F000:C4E9 pop eax F000:C4EB retn F000:C4EB sub_FC4D9 endp F000:C4EB F000:C4EC F000:C4EC ; =============== S U B R O U T I N E ======================================= F000:C4EC F000:C4EC F000:C4EC sub_FC4EC proc near ; CODE XREF: sub_FBD80+2Dp F000:C4EC push eax F000:C4EE push ecx F000:C4F0 mov cx, 4 F000:C4F3 rol eax, 10h F000:C4F7 call sub_FC50A F000:C4FA pop ecx F000:C4FC pop eax F000:C4FE retn F000:C4FE sub_FC4EC endp F000:C4FE F000:C4FF F000:C4FF ; =============== S U B R O U T I N E ======================================= F000:C4FF F000:C4FF F000:C4FF sub_FC4FF proc near ; CODE XREF: sub_FC255+1Fp F000:C4FF ; sub_FC255+3Bp ... F000:C4FF push ecx F000:C501 mov cx, 8 F000:C504 call sub_FC50A F000:C507 pop ecx F000:C509 retn F000:C509 sub_FC4FF endp F000:C509 F000:C50A F000:C50A ; =============== S U B R O U T I N E ======================================= F000:C50A F000:C50A F000:C50A sub_FC50A proc near ; CODE XREF: sub_FC4D9+Bp F000:C50A ; sub_FC4EC+Bp ... F000:C50A push si F000:C50B push eax F000:C50D push ebx F000:C50F push ecx F000:C511 push edx F000:C513 mov ebx, eax F000:C516 F000:C516 loc_FC516: ; CODE XREF: sub_FC50A+1Dj F000:C516 rol ebx, 4 F000:C51A push bx F000:C51B and bx, 0Fh F000:C51E mov si, 0C533h F000:C521 mov al, [bx+si] F000:C523 pop bx F000:C524 call sub_FC62E F000:C527 loop loc_FC516 F000:C529 pop edx F000:C52B pop ecx F000:C52D pop ebx F000:C52F pop eax F000:C531 pop si F000:C532 retn F000:C532 sub_FC50A endp F000:C532 F000:C532 ; --------------------------------------------------------------------------- F000:C533 a0123456789abcd db '0123456789ABCDEF' F000:C543 F000:C543 ; =============== S U B R O U T I N E ======================================= F000:C543 F000:C543 F000:C543 sub_FC543 proc near ; CODE XREF: sub_FC44F+Bp F000:C543 ; sub_FC489+16p F000:C543 push ebx F000:C545 push ecx F000:C547 push edx F000:C549 push esi F000:C54B mov esi, ebx F000:C54E shr cx, 2 F000:C551 cmp cx, 0 F000:C554 jnz short loc_FC559 F000:C556 mov cx, 8 F000:C559 F000:C559 loc_FC559: ; CODE XREF: sub_FC543+11j F000:C559 mov bx, cx F000:C55B shl ebx, 10h F000:C55F mov bx, cx F000:C561 mov ecx, ebx F000:C564 xor ebx, ebx F000:C567 F000:C567 loc_FC567: ; CODE XREF: sub_FC543+31j F000:C567 ; sub_FC543+39j ... F000:C567 call sub_FC648 F000:C56A cmp al, 0Dh F000:C56C jz short loc_FC59A F000:C56E cmp al, 20h ; ' ' F000:C570 jz short loc_FC59A F000:C572 cmp al, 30h ; '0' F000:C574 jb short loc_FC567 F000:C576 cmp al, 39h ; '9' F000:C578 jbe short loc_FC584 F000:C57A cmp al, 41h ; 'A' F000:C57C jb short loc_FC567 F000:C57E cmp al, 46h ; 'F' F000:C580 jbe short loc_FC58B F000:C582 jmp short loc_FC567 F000:C584 ; --------------------------------------------------------------------------- F000:C584 F000:C584 loc_FC584: ; CODE XREF: sub_FC543+35j F000:C584 call sub_FC62E F000:C587 sub al, 30h ; '0' F000:C589 jmp short loc_FC590 F000:C58B ; --------------------------------------------------------------------------- F000:C58B F000:C58B loc_FC58B: ; CODE XREF: sub_FC543+3Dj F000:C58B call sub_FC62E F000:C58E sub al, 37h ; '7' F000:C590 F000:C590 loc_FC590: ; CODE XREF: sub_FC543+46j F000:C590 and al, 0Fh F000:C592 shl ebx, 4 F000:C596 or bl, al F000:C598 loop loc_FC567 F000:C59A F000:C59A loc_FC59A: ; CODE XREF: sub_FC543+29j F000:C59A ; sub_FC543+2Dj F000:C59A cmp al, 0Dh F000:C59C jnz short loc_FC5AC F000:C59E mov eax, ecx F000:C5A1 shr eax, 10h F000:C5A5 cmp ax, cx F000:C5A7 jnz short loc_FC5AC F000:C5A9 mov ebx, esi F000:C5AC F000:C5AC loc_FC5AC: ; CODE XREF: sub_FC543+59j F000:C5AC ; sub_FC543+64j F000:C5AC mov eax, ebx F000:C5AF pop esi F000:C5B1 pop edx F000:C5B3 pop ecx F000:C5B5 pop ebx F000:C5B7 retn F000:C5B7 sub_FC543 endp F000:C5B7 F000:C5B8 F000:C5B8 ; =============== S U B R O U T I N E ======================================= F000:C5B8 F000:C5B8 F000:C5B8 sub_FC5B8 proc near ; CODE XREF: sub_FBFDC:loc_FC01Ep F000:C5B8 ; sub_FBFDC+ACp ... F000:C5B8 push esi F000:C5BA mov esi, edx F000:C5BD mov eax, es:[esi] F000:C5C2 pop esi F000:C5C4 retn F000:C5C4 sub_FC5B8 endp F000:C5C4 F000:C5C5 F000:C5C5 ; =============== S U B R O U T I N E ======================================= F000:C5C5 F000:C5C5 F000:C5C5 sub_FC5C5 proc near ; CODE XREF: sub_FBFDC+74p F000:C5C5 ; sub_FBFDC+A9p ... F000:C5C5 push esi F000:C5C7 mov esi, edx F000:C5CA mov es:[esi], eax F000:C5CF pop esi F000:C5D1 retn F000:C5D1 sub_FC5C5 endp F000:C5D1 F000:C5D2 F000:C5D2 ; =============== S U B R O U T I N E ======================================= F000:C5D2 F000:C5D2 F000:C5D2 sub_FC5D2 proc near ; CODE XREF: sub_FC319+9p F000:C5D2 xor eax, eax F000:C5D5 in al, dx F000:C5D6 retn F000:C5D6 sub_FC5D2 endp F000:C5D6 F000:C5D7 F000:C5D7 ; =============== S U B R O U T I N E ======================================= F000:C5D7 F000:C5D7 F000:C5D7 sub_FC5D7 proc near ; CODE XREF: sub_FC335+Cp F000:C5D7 out dx, al F000:C5D8 retn F000:C5D8 sub_FC5D7 endp F000:C5D8 F000:C5D9 F000:C5D9 ; =============== S U B R O U T I N E ======================================= F000:C5D9 F000:C5D9 F000:C5D9 sub_FC5D9 proc near ; CODE XREF: sub_FC34B+16p F000:C5D9 ; sub_FC34B:loc_FC38Ep F000:C5D9 push edx F000:C5DB mov eax, edx F000:C5DE mov dx, 0CF8h F000:C5E1 out dx, eax F000:C5E3 mov dx, 0CFCh F000:C5E6 in eax, dx F000:C5E8 pop edx F000:C5EA retn F000:C5EA sub_FC5D9 endp F000:C5EA F000:C5EB F000:C5EB ; =============== S U B R O U T I N E ======================================= F000:C5EB F000:C5EB F000:C5EB sub_FC5EB proc near ; CODE XREF: sub_FC34B+27p F000:C5EB push edx F000:C5ED push eax F000:C5EF mov eax, edx F000:C5F2 mov dx, 0CF8h F000:C5F5 out dx, eax F000:C5F7 mov dx, 0CFCh F000:C5FA pop eax F000:C5FC out dx, eax F000:C5FE pop edx F000:C600 retn F000:C600 sub_FC5EB endp F000:C600 F000:C601 F000:C601 ; =============== S U B R O U T I N E ======================================= F000:C601 F000:C601 F000:C601 sub_FC601 proc near ; CODE XREF: sub_FC3D5+12p F000:C601 push dx F000:C602 mov ax, dx F000:C604 mov dx, 370h F000:C607 out dx, al F000:C608 inc dx F000:C609 in al, dx F000:C60A pop dx F000:C60B retn F000:C60B sub_FC601 endp F000:C60B F000:C60C F000:C60C ; =============== S U B R O U T I N E ======================================= F000:C60C F000:C60C F000:C60C sub_FC60C proc near ; CODE XREF: sub_FC3D5+23p F000:C60C push dx F000:C60D push ax F000:C60E mov ax, dx F000:C610 mov dx, 370h F000:C613 out dx, al F000:C614 inc dx F000:C615 pop ax F000:C616 out dx, al F000:C617 pop dx F000:C618 retn F000:C618 sub_FC60C endp F000:C618 F000:C619 F000:C619 ; =============== S U B R O U T I N E ======================================= F000:C619 F000:C619 F000:C619 sub_FC619 proc near ; CODE XREF: sub_FC255+3Ep F000:C619 ; sub_FC255+46p ... F000:C619 push ax F000:C61A mov al, 20h ; ' ' F000:C61C call sub_FC62E F000:C61F pop ax F000:C620 retn F000:C620 sub_FC619 endp F000:C620 F000:C621 F000:C621 ; =============== S U B R O U T I N E ======================================= F000:C621 F000:C621 F000:C621 sub_FC621 proc near ; CODE XREF: sub_FC255+38p F000:C621 ; sub_FC34B+38p F000:C621 push ax F000:C622 mov al, 0Dh F000:C624 call sub_FC62E F000:C627 mov al, 0Ah F000:C629 call sub_FC62E F000:C62C pop ax F000:C62D retn F000:C62D sub_FC621 endp F000:C62D F000:C62E F000:C62E ; =============== S U B R O U T I N E ======================================= F000:C62E F000:C62E F000:C62E sub_FC62E proc near ; CODE XREF: sub_FBECA+12p F000:C62E ; sub_FBFDC+13p ... F000:C62E push ax F000:C62F push dx F000:C630 mov dx, 300h F000:C633 out dx, al F000:C634 pop dx F000:C635 pop ax F000:C636 retn F000:C636 sub_FC62E endp F000:C636 F000:C637 F000:C637 ; =============== S U B R O U T I N E ======================================= F000:C637 F000:C637 F000:C637 sub_FC637 proc near ; CODE XREF: sub_FBFDC+4Bp F000:C637 ; sub_FBFDC+80p ... F000:C637 push ax F000:C638 push dx F000:C639 mov dx, 301h F000:C63C in al, dx F000:C63D and al, 1 F000:C63F cmp al, 1 F000:C641 clc F000:C642 jnz short loc_FC645 F000:C644 stc F000:C645 F000:C645 loc_FC645: ; CODE XREF: sub_FC637+Bj F000:C645 pop dx F000:C646 pop ax F000:C647 retn F000:C647 sub_FC637 endp F000:C647 F000:C648 F000:C648 ; =============== S U B R O U T I N E ======================================= F000:C648 F000:C648 F000:C648 sub_FC648 proc near ; CODE XREF: sub_FBECA+Fp F000:C648 ; sub_FBFDC+10p ... F000:C648 push cx F000:C649 push dx F000:C64A F000:C64A loc_FC64A: ; CODE XREF: sub_FC648+5j F000:C64A call sub_FC637 F000:C64D jnb short loc_FC64A F000:C64F mov cx, 10h F000:C652 mov dx, 301h F000:C655 F000:C655 loc_FC655: ; CODE XREF: sub_FC648+Ej F000:C655 in al, dx F000:C656 loop loc_FC655 F000:C658 mov dx, 300h F000:C65B in al, dx F000:C65C xchg al, ah F000:C65E mov dx, 301h F000:C661 mov cx, 10h F000:C664 F000:C664 loc_FC664: ; CODE XREF: sub_FC648+1Dj F000:C664 in al, dx F000:C665 loop loc_FC664 F000:C667 xchg al, ah F000:C669 cmp al, 61h ; 'a' F000:C66B jb short loc_FC673 F000:C66D cmp al, 7Ah ; 'z' F000:C66F ja short loc_FC673 F000:C671 sub al, 20h ; ' ' F000:C673 F000:C673 loc_FC673: ; CODE XREF: sub_FC648+23j F000:C673 ; sub_FC648+27j F000:C673 pop dx F000:C674 pop cx F000:C675 retn F000:C675 sub_FC648 endp F000:C675 F000:C676 F000:C676 ; =============== S U B R O U T I N E ======================================= F000:C676 F000:C676 F000:C676 sub_FC676 proc near ; CODE XREF: sub_FBD80+1Ep F000:C676 ; sub_FBD80+24p ... F000:C676 push ax F000:C677 push dx F000:C678 push si F000:C679 mov dx, 300h F000:C67C F000:C67C loc_FC67C: ; CODE XREF: sub_FC676+Ej F000:C67C mov al, [si] F000:C67E cmp al, 24h ; '$' F000:C680 jz short loc_FC686 F000:C682 out dx, al F000:C683 inc si F000:C684 jmp short loc_FC67C F000:C686 ; --------------------------------------------------------------------------- F000:C686 F000:C686 loc_FC686: ; CODE XREF: sub_FC676+Aj F000:C686 pop si F000:C687 pop dx F000:C688 pop ax F000:C689 retn F000:C689 sub_FC676 endp F000:C689 F000:C689 ; --------------------------------------------------------------------------- F000:C68A db 6 dup(0) F000:C690 FB_SIZE1 dd 4 ; possible FrameBuffer size: 2MB - default on my EVO T20 F000:C694 FB_SIZE2 dd 8 ; possible FrameBuffer size: 4MB F000:C698 FB_SIZE3 dd 0Ch ; possible FrameBuffer size: 6MB F000:C69C FB_SIZE4 dd 10h ; possible FrameBuffer size: 8MB F000:C6A0 ; --------------------------------------------------------------------------- F000:C6A0 F000:C6A0 SET_FB_SIZE: ; CODE XREF: F000:3DADj F000:C6A0 ; SET_IDT+40j F000:C6A0 push bx ; save return address F000:C6A1 mov dx, 0CF8h ; PCI address port F000:C6A4 mov eax, 80009090h ; PCI bus 0, dev 12h, func 0, reg 90h (CS5530 bridge) F000:C6AA out dx, eax ; write PCI address F000:C6AC mov dx, 0CFDh ; PCI data port F000:C6AF in al, dx ; AL = GPIO Pin Data Register 1 F000:C6B0 or al, 20h ; GPIO5 = 1 F000:C6B2 out dx, al ; update GPIO Pin Data Register 1 F000:C6B3 mov esi, 40010000h ; F4BAR = 40010000h F000:C6B9 mov eax, es:[esi+4] ; read Video Configuration Register F000:C6BF and al, 0D9h ; bit1=0: video reg update disabled, bit3:2: video input format, bit5=0: overlay data pass through CSC F000:C6C1 mov es:[esi+4], eax ; update Video Configuration Register F000:C6C7 mov bl, 18h F000:C6C9 call TEST_IO_F808h F000:C6CC F000:C6CC FB_SIZE5_NOT_USED: ; FrameBuffer size in 0,5MB units F000:C6CC mov si, 5 ; this is some default value, my EVO T20 desn't use it F000:C6CF test eax, 1 ; if EAX!=1 then skip (depends on reading IO port F808h) F000:C6D5 jnz short skip_fb_size_rd ; read GX_BASE+8000h (BC_DRAM_TOP) F000:C6D7 mov ebx, eax ; my EVO T20 didn't jump there F000:C6DA and ebx, 0Ch ; mask bits3:2 F000:C6DE mov esi, cs:[ebx+0C690h] ; ESI = [F000:C690/C694/C698/C69Ch] F000:C6E7 or si, 1 ; FrameBuffer size + 0,5MB F000:C6E7 ; Patch this with MOV SI,8 to get 4MB FrameBuffer F000:C6EA F000:C6EA skip_fb_size_rd: ; CODE XREF: F000:C6D5j F000:C6EA mov ax, 8000h ; read GX_BASE+8000h (BC_DRAM_TOP) F000:C6ED mov bx, 0C6F3h ; (bit28:17=highest avail. mem. address not including framebuffer, LSB=128kB) F000:C6F0 jmp RD_GX_BASE_AX2 ; continue at CS:[C6F3h] F000:C6F3 ; --------------------------------------------------------------------------- F000:C6F3 inc edx ; EDX = 11FFFFFFh + 1, bit28:17 = 8FFh (32 + 256 MB RAM) F000:C6F5 shr edx, 13h ; 12000000h>>19 = 240h F000:C6F9 sub dx, si ; DX = 240h - 5 -> GRBA = 11D80000h -> 2.5MB framebuffer F000:C6FB and dx, 7FFh ; mask Graphics Base Address29:19 bits F000:C6FF mov ax, 8414h ; write GX_BASE+8414h (MC_GBASE_ADD) F000:C702 mov bx, 0C708h ; (bit10:0 = Graphics Base Address29:19, GRBA18:0 is always 0) F000:C705 jmp WR_GX_BASE_AX2 ; continue at CS:[C708h] F000:C708 ; --------------------------------------------------------------------------- F000:C708 shl edx, 13h ; EDX = 11D80000h F000:C70C dec edx ; EDX = 11D7FFFFh F000:C70E mov ax, 8000h ; write GX_BASE+8000h (BC_DRAM_TOP) F000:C711 mov bx, 0C717h ; update RAM top according to new FB size F000:C714 jmp WR_GX_BASE_AX2 ; continue at CS:[C717h] F000:C717 ; --------------------------------------------------------------------------- F000:C717 mov ax, si ; AX = SI = 5 F000:C719 shl eax, 13h ; EAX = 2621440 Bytes (FB size) F000:C71D mov eax, cr0 F000:C720 or eax, 40000000h ; disable cache F000:C726 mov cr0, eax F000:C729 wbinvd ; write back and invalidate cache F000:C72B mov al, 0C3h ; '+' F000:C72D mov bx, 0C733h ; read CCR3 F000:C730 jmp IO_RD_23h_AL ; continue at CS:[C733h] F000:C733 ; --------------------------------------------------------------------------- F000:C733 or al, 10h ; set MAPEN = 1 F000:C735 mov dl, al F000:C737 mov al, 0C3h ; '+' F000:C739 mov bx, 0C73Fh ; update CCR3 F000:C73C jmp IO_WR_22h_AL_DL ; continue at CS:[C73Fh] F000:C73F ; --------------------------------------------------------------------------- F000:C73F mov al, 0B8h ; 'ª' F000:C741 mov bx, 0C747h ; read GCR F000:C744 jmp IO_RD_23h_AL ; continue at CS:[C747h] F000:C747 ; --------------------------------------------------------------------------- F000:C747 and al, 3 ; mask GX_BASE bits F000:C749 mov dl, al ; scratchpad size = 0kB F000:C74B mov al, 0B8h ; 'ª' F000:C74D mov bx, 0C753h ; update GCR F000:C750 jmp IO_WR_22h_AL_DL ; continue at CS:[C753h] F000:C753 ; --------------------------------------------------------------------------- F000:C753 mov al, 0C3h ; '+' F000:C755 mov bx, 0C75Bh ; read CCR3 F000:C758 jmp IO_RD_23h_AL ; continue at CS:[C75Bh] F000:C75B ; --------------------------------------------------------------------------- F000:C75B or al, 0F0h F000:C75D mov dl, al F000:C75F mov al, 0C3h ; '+' F000:C761 mov bx, 0C767h ; update CCR3 F000:C764 jmp IO_WR_22h_AL_DL ; continue at CS:[C767h] F000:C767 ; --------------------------------------------------------------------------- F000:C767 mov eax, 400h F000:C76D mov bx, 0C772h F000:C770 jmp short loc_FC793 ; continue at CS:[C772h] F000:C772 ; --------------------------------------------------------------------------- F000:C772 mov al, 0C3h ; '+' F000:C774 mov bx, 0C77Ah ; read CCR3 F000:C777 jmp IO_RD_23h_AL ; continue at CS:[C77Ah] F000:C77A ; --------------------------------------------------------------------------- F000:C77A and al, 0EFh ; clear MAPEN = 0 F000:C77C mov dl, al F000:C77E mov al, 0C3h ; '+' F000:C780 mov bx, 0C786h ; update CCR3 F000:C783 jmp IO_WR_22h_AL_DL ; continue at CS:[C786h] F000:C786 ; --------------------------------------------------------------------------- F000:C786 mov ecx, 50000h ; count = 327680 F000:C78C F000:C78C delay_loop: ; CODE XREF: F000:delay_loopj F000:C78C loopd delay_loop F000:C78F pop bx F000:C790 clc ; clear CARRY flag F000:C791 jmp bx ; return F000:C793 ; --------------------------------------------------------------------------- F000:C793 F000:C793 loc_FC793: ; CODE XREF: F000:C770j F000:C793 push ebx F000:C795 mov esi, eax F000:C798 mov al, 0B8h ; 'ª' F000:C79A mov bx, 0C7A0h F000:C79D jmp IO_RD_23h_AL F000:C7A0 ; --------------------------------------------------------------------------- F000:C7A0 and eax, 3 F000:C7A4 shl eax, 1Eh F000:C7A8 mov tr4, eax F000:C7AB mov eax, esi F000:C7AE and eax, 0FFFFh F000:C7B4 or al, 1 F000:C7B6 F000:C7B6 loc_FC7B6: ; CODE XREF: F000:C7C3j F000:C7B6 mov tr5, eax F000:C7B9 add eax, 10h F000:C7BD cmp eax, 1001h F000:C7C3 jb short loc_FC7B6 F000:C7C5 mov si, 8 F000:C7C8 mov al, 0B8h ; 'ª' F000:C7CA mov bx, 0C7D0h F000:C7CD jmp IO_RD_23h_AL F000:C7D0 ; --------------------------------------------------------------------------- F000:C7D0 and al, 3 F000:C7D2 or ax, si F000:C7D4 mov dl, al F000:C7D6 mov al, 0B8h ; 'ª' F000:C7D8 mov bx, 0C7DEh F000:C7DB jmp IO_WR_22h_AL_DL F000:C7DB ; --------------------------------------------------------------------------- F000:C7DE db 66h ; f F000:C7DF db 0B8h ; ª F000:C7E0 db 0 F000:C7E1 db 4 F000:C7E2 db 0 F000:C7E3 db 0 F000:C7E4 db 66h ; f F000:C7E5 db 0BBh ; ¬ F000:C7E6 db 0Ch F000:C7E7 db 0FFh F000:C7E8 db 0FFh F000:C7E9 db 0FFh F000:C7EA db 0Fh F000:C7EB db 3Ch ; < F000:C7EC db 0B3h ; - F000:C7ED db 2Ch ; , F000:C7EE db 0Fh F000:C7EF db 3Ch ; < F000:C7F0 db 66h ; f F000:C7F1 db 0B8h ; ª F000:C7F2 db 30h ; 0 F000:C7F3 db 9 F000:C7F4 db 0 F000:C7F5 db 0 F000:C7F6 db 0B3h ; - F000:C7F7 db 1Ch F000:C7F8 db 0Fh F000:C7F9 db 3Ch ; < F000:C7FA db 0B3h ; - F000:C7FB db 3Ch ; < F000:C7FC db 0Fh F000:C7FD db 3Ch ; < F000:C7FE db 66h ; f F000:C7FF db 33h ; 3 F000:C800 db 0C0h ; L F000:C801 db 0B3h ; - F000:C802 db 7Ch ; | F000:C803 db 0Fh F000:C804 db 3Ch ; < F000:C805 db 0B3h ; - F000:C806 db 6Ch ; l F000:C807 db 0Fh F000:C808 db 3Ch ; < F000:C809 db 66h ; f F000:C80A db 5Bh ; [ F000:C80B db 0FFh F000:C80C db 0E3h ; Ñ F000:C80D db 0 F000:C80E db 0 F000:C80F db 0 F000:C810 F000:C810 ; =============== S U B R O U T I N E ======================================= F000:C810 F000:C810 F000:C810 SET_BC_XMAP_3 proc near ; CODE XREF: F000:2E3Ep F000:C810 ; F000:2E9Ep ... F000:C810 F000:C810 arg_E = byte ptr 10h F000:C810 F000:C810 ; FUNCTION CHUNK AT F000:B847 SIZE 00000073 BYTES F000:C810 F000:C810 mov eax, 800Ch F000:C816 mov bx, 0C81Ch ; read BC_XMAP_3 MMIO register to EDX F000:C819 jmp RD_GX_BASE_AX2 ; continue at CS:[C81Ch] F000:C81C ; --------------------------------------------------------------------------- F000:C81C or edx, 44440000h ; set Region control field for F0000h-FFFFFh. F000:C823 mov bx, 0C829h ; write BC_XMAP_3 MMIO register F000:C826 jmp WR_GX_BASE_AX2 ; continue at CS:[C829h] F000:C829 ; --------------------------------------------------------------------------- F000:C829 retn F000:C829 SET_BC_XMAP_3 endp F000:C829 F000:C829 ; --------------------------------------------------------------------------- F000:C82A db 6 dup(0) F000:C830 F000:C830 ; =============== S U B R O U T I N E ======================================= F000:C830 F000:C830 F000:C830 PCI_READ_BX_DX proc near ; CODE XREF: SET_IDE2+3p F000:C830 ; SET_IDE2+Ep ... F000:C830 push dx F000:C831 mov dx, 0CF8h ; PCI address port F000:C834 mov eax, 80000000h F000:C83A mov ax, bx ; combine PCI address F000:C83C out dx, eax ; write PCI address F000:C83E mov dx, 0CFCh ; PCI data port F000:C841 in eax, dx F000:C843 pop dx ; retun PCI value in DX F000:C844 retn F000:C844 PCI_READ_BX_DX endp F000:C844 F000:C845 F000:C845 ; =============== S U B R O U T I N E ======================================= F000:C845 F000:C845 F000:C845 PCI_WRITE_BX_EAX proc near ; CODE XREF: SET_IDE2+8p F000:C845 ; SET_IDE2+1Ap ... F000:C845 push dx F000:C846 push eax F000:C848 mov dx, 0CF8h ; PCI address port F000:C84B mov eax, 80000000h F000:C851 mov ax, bx ; combine PCI address F000:C853 out dx, eax ; write PCI address F000:C855 pop eax F000:C857 mov dx, 0CFCh ; PCI data port F000:C85A out dx, eax ; write PCI 32-bit register F000:C85C pop dx F000:C85D retn F000:C85D PCI_WRITE_BX_EAX endp F000:C85D F000:C85D ; --------------------------------------------------------------------------- F000:C85E db 2 dup(0) F000:C860 F000:C860 ; =============== S U B R O U T I N E ======================================= F000:C860 F000:C860 F000:C860 sub_FC860 proc near F000:C860 mov dx, 0CF8h F000:C863 mov eax, 80009050h F000:C869 out dx, eax F000:C86B mov dx, 0CFCh ; PCI data port F000:C86E in ax, dx F000:C86F and al, 0F8h F000:C871 or al, 3 F000:C873 out dx, al F000:C874 retn F000:C874 sub_FC860 endp F000:C874 F000:C874 ; --------------------------------------------------------------------------- F000:C875 db 0Bh dup(0) F000:C880 ; --------------------------------------------------------------------------- F000:C880 F000:C880 IO_RD_23h_AL: ; CODE XREF: F000:5443j F000:C880 ; F000:C730j ... F000:C880 out 22h, al F000:C882 in al, 23h F000:C884 jmp bx F000:C886 ; --------------------------------------------------------------------------- F000:C886 ; START OF FUNCTION CHUNK FOR SET_CCR1 F000:C886 F000:C886 IO_WR_22h_AL_DL: ; CODE XREF: SET_CCR1+12j F000:C886 ; F000:544Fj ... F000:C886 out 22h, al F000:C888 mov al, dl F000:C88A out 23h, al F000:C88C jmp bx F000:C88C ; END OF FUNCTION CHUNK FOR SET_CCR1 F000:C88E ; --------------------------------------------------------------------------- F000:C88E ; START OF FUNCTION CHUNK FOR SET_BRIDGE1 F000:C88E F000:C88E PCI_READ_EAX_EDX: ; CODE XREF: SET_BRIDGE1+Fj F000:C88E ; SET_BRIDGE1+F5j ... F000:C88E mov dx, 0CF8h F000:C891 out dx, eax ; write PCI address F000:C893 mov dx, 0CFCh ; PCI data port F000:C896 in eax, dx ; read PCI 32-bit register F000:C898 mov edx, eax ; retun PCI value in EDX F000:C89B jmp bx F000:C89B ; END OF FUNCTION CHUNK FOR SET_BRIDGE1 F000:C89D ; --------------------------------------------------------------------------- F000:C89D ; START OF FUNCTION CHUNK FOR SET_IDE1 F000:C89D F000:C89D PCI_WRITE_EAX_EDX: ; CODE XREF: SET_BRIDGE1+E9j F000:C89D ; SET_IDE1+Fj ... F000:C89D mov ecx, edx F000:C8A0 mov dx, 0CF8h ; PCI address port F000:C8A3 out dx, eax ; write PCI address F000:C8A5 mov dx, 0CFCh ; PCI data port F000:C8A8 mov eax, ecx F000:C8AB out dx, eax ; write PCI 32-bit register F000:C8AD jmp bx F000:C8AD ; END OF FUNCTION CHUNK FOR SET_IDE1 F000:C8AF ; --------------------------------------------------------------------------- F000:C8AF ; START OF FUNCTION CHUNK FOR SET_BRIDGE1 F000:C8AF F000:C8AF PCI_READ_EAX_DX: ; CODE XREF: SET_BRIDGE1+2Cj F000:C8AF ; SET_BRIDGE1+11Bj F000:C8AF mov dx, 0CF8h F000:C8B2 out dx, eax ; write PCI address F000:C8B4 and eax, 2 ; mask bits1:0 F000:C8B8 mov dx, 0CFCh ; PCI data port F000:C8BB or dx, ax ; adjust PCI data port according to lowest PCI reg bits F000:C8BD in ax, dx ; read 16bit PCI reg to AX F000:C8BE mov dx, ax ; return in DX F000:C8C0 jmp bx F000:C8C2 ; --------------------------------------------------------------------------- F000:C8C2 F000:C8C2 PCI_WRITE_EAX_DX: ; CODE XREF: SET_BRIDGE1+10Fj F000:C8C2 mov cx, dx F000:C8C4 mov dx, 0CF8h ; PCI address port F000:C8C7 out dx, eax ; write PCI address F000:C8C9 and eax, 2 ; mask bits1:0 F000:C8CD mov dx, 0CFCh ; PCI data port F000:C8D0 or dx, ax ; adjust PCI data port according to lowest PCI reg bits F000:C8D2 mov ax, cx F000:C8D4 out dx, ax ; write AX to 16bit PCI reg F000:C8D5 jmp bx F000:C8D7 ; --------------------------------------------------------------------------- F000:C8D7 F000:C8D7 PCI_WRITE_EAX_DL: ; CODE XREF: SET_BRIDGE1+8Bj F000:C8D7 ; SET_BRIDGE1+180j F000:C8D7 mov dx, 0CF8h F000:C8DA out dx, eax ; write PCI address F000:C8DC and eax, 3 ; mask bits1:0 F000:C8E0 mov dx, 0CFCh ; PCI data port F000:C8E3 or dx, ax ; adjust PCI data port according to lowest PCI reg bits F000:C8E5 in al, dx ; read 8bit PCI reg to AL F000:C8E6 mov dl, al ; return in DL F000:C8E8 jmp bx F000:C8E8 ; END OF FUNCTION CHUNK FOR SET_BRIDGE1 F000:C8EA ; --------------------------------------------------------------------------- F000:C8EA ; START OF FUNCTION CHUNK FOR PCI_WRITE_REGS F000:C8EA F000:C8EA PCI_WRITE_EAX_CL: ; CODE XREF: SET_BRIDGE1+174j F000:C8EA ; PCI_WRITE_REGS+26j F000:C8EA mov ecx, edx F000:C8ED mov dx, 0CF8h ; PCI address port F000:C8F0 out dx, eax F000:C8F2 and eax, 3 ; mask bits1:0 F000:C8F6 mov dx, 0CFCh ; PCI data port F000:C8F9 or dx, ax ; adjust PCI data port according to lowest PCI reg bits F000:C8FB mov al, cl F000:C8FD out dx, al ; write CL to 8bit PCI reg F000:C8FE jmp bx ; return F000:C8FE ; END OF FUNCTION CHUNK FOR PCI_WRITE_REGS F000:C900 F000:C900 ; =============== S U B R O U T I N E ======================================= F000:C900 F000:C900 F000:C900 SET_INTCTL1 proc near ; CODE XREF: SET_INTVECT+4Ap F000:C900 pusha F000:C901 cli F000:C902 mov al, 11h F000:C904 out 20h, al ; Interrupt controller, 8259A. F000:C906 out 0A0h, al ; PIC 2 same as 0020 for PIC 1 F000:C908 mov al, 8 F000:C90A out 21h, al ; Interrupt controller, 8259A. F000:C90C mov al, 70h ; 'p' F000:C90E out 0A1h, al ; Interrupt Controller #2, 8259A F000:C910 mov al, 4 F000:C912 out 21h, al ; Interrupt controller, 8259A. F000:C914 mov al, 2 F000:C916 out 0A1h, al ; Interrupt Controller #2, 8259A F000:C918 mov al, 1 F000:C91A out 21h, al ; Interrupt controller, 8259A. F000:C91C out 0A1h, al ; Interrupt Controller #2, 8259A F000:C91E mov dx, 21h ; '!' F000:C921 in al, dx ; Interrupt controller, 8259A. F000:C922 mov al, 0FEh ; '¦' F000:C924 out 0EDh, al F000:C926 out dx, al ; Interrupt controller, 8259A. F000:C927 mov dx, 0A1h ; 'í' F000:C92A in al, dx ; Interrupt Controller #2, 8259A F000:C92B mov al, 0FCh ; 'Ø' F000:C92D out 0EDh, al F000:C92F out dx, al ; Interrupt Controller #2, 8259A F000:C930 mov ax, 0 F000:C933 call SET_TIMER F000:C936 sti F000:C937 popa F000:C938 retn F000:C938 SET_INTCTL1 endp F000:C938 F000:C939 F000:C939 ; =============== S U B R O U T I N E ======================================= F000:C939 F000:C939 F000:C939 sub_FC939 proc near F000:C939 cli F000:C93A push ds F000:C93B mov ax, 40h ; '@' F000:C93E mov ds, ax F000:C940 assume ds:nothing F000:C940 mov ax, large ds:6Ch F000:C946 pop ds F000:C947 assume ds:nothing F000:C947 sti F000:C948 retn F000:C948 sub_FC939 endp F000:C948 F000:C949 F000:C949 ; =============== S U B R O U T I N E ======================================= F000:C949 F000:C949 F000:C949 sub_FC949 proc near F000:C949 cli F000:C94A push ds F000:C94B mov ax, 40h ; '@' F000:C94E mov ds, ax F000:C950 assume ds:nothing F000:C950 mov large word ptr ds:6Ch, 0 F000:C959 pop ds F000:C95A assume ds:nothing F000:C95A sti F000:C95B retn F000:C95B sub_FC949 endp F000:C95B F000:C95C F000:C95C ; =============== S U B R O U T I N E ======================================= F000:C95C F000:C95C F000:C95C SET_TIMER proc near ; CODE XREF: SET_INTCTL1+33p F000:C95C cli F000:C95D push ax F000:C95E mov al, 36h ; '6' F000:C960 out 43h, al ; Timer 8253-5 (AT: 8254.2). F000:C962 pop ax F000:C963 out 40h, al ; Timer 8253-5 (AT: 8254.2). F000:C965 mov al, ah F000:C967 out 0EDh, al F000:C969 out 40h, al ; Timer 8253-5 (AT: 8254.2). F000:C96B out 0EDh, al F000:C96D sti F000:C96E retn F000:C96E SET_TIMER endp F000:C96E F000:C96F F000:C96F ; =============== S U B R O U T I N E ======================================= F000:C96F F000:C96F F000:C96F GET_TIMER proc near F000:C96F mov al, 6 F000:C971 out 43h, al ; Timer 8253-5 (AT: 8254.2). F000:C973 out 0EDh, al F000:C975 mov al, 36h ; '6' F000:C977 out 43h, al ; Timer 8253-5 (AT: 8254.2). F000:C979 out 0EDh, al F000:C97B in al, 40h ; Timer 8253-5 (AT: 8254.2). F000:C97D mov ah, al F000:C97F out 0EDh, al F000:C981 in al, 40h ; Timer 8253-5 (AT: 8254.2). F000:C983 xchg ah, al F000:C985 retn F000:C985 GET_TIMER endp F000:C985 F000:C986 F000:C986 ; =============== S U B R O U T I N E ======================================= F000:C986 F000:C986 F000:C986 sub_FC986 proc far F000:C986 push eax F000:C988 push ecx F000:C98A push ds F000:C98B push dx F000:C98C push bx F000:C98D mov ax, 40h ; '@' F000:C990 mov ds, ax F000:C992 assume ds:nothing F000:C992 mov dl, large ds:6Ch F000:C999 shr dl, 2 F000:C99C and dl, 3 F000:C99F inc large word ptr ds:6Ch F000:C9A6 jnz short loc_FC9AF F000:C9A8 inc large word ptr ds:6Eh F000:C9AF F000:C9AF loc_FC9AF: ; CODE XREF: sub_FC986+20j F000:C9AF cmp large word ptr ds:6Eh, 18h F000:C9B7 jnz short loc_FC9DE F000:C9B9 cmp large word ptr ds:6Ch, 0B0h ; '-' F000:C9C2 jnz short loc_FC9DE F000:C9C4 mov large word ptr ds:6Eh, 0 F000:C9CD mov large word ptr ds:6Ch, 0 F000:C9D6 mov large byte ptr ds:70h, 1 F000:C9DE F000:C9DE loc_FC9DE: ; CODE XREF: sub_FC986+31j F000:C9DE ; sub_FC986+3Cj F000:C9DE dec large byte ptr ds:40h F000:C9E5 jnz short loc_FC9EF F000:C9E7 and large byte ptr ds:3Fh, 0F0h F000:C9EF F000:C9EF loc_FC9EF: ; CODE XREF: sub_FC986+5Fj F000:C9EF mov al, 20h ; ' ' F000:C9F1 out 20h, al ; Interrupt controller, 8259A. F000:C9F3 pop bx F000:C9F4 pop dx F000:C9F5 pop ds F000:C9F6 assume ds:nothing F000:C9F6 pop ecx F000:C9F8 pop eax F000:C9FA iret F000:C9FA sub_FC986 endp F000:C9FA F000:C9FA ; --------------------------------------------------------------------------- F000:C9FB db 0 F000:C9FC db 0 F000:C9FD db 0 F000:C9FE db 0 F000:C9FF db 0 F000:CA00 dw 4 F000:CA02 db 6 F000:CA03 db 50h ; P F000:CA04 db 0Dh F000:CA05 db 0 F000:CA06 db 0FFh F000:CA07 db 0 F000:CA08 db 0 F000:CA09 db 60h ; ` F000:CA0A db 7 F000:CA0B db 0C8h ; L F000:CA0C db 8 F000:CA0D db 0 F000:CA0E db 13h F000:CA0F db 0 F000:CA10 db 14h F000:CA11 db 0Fh F000:CA12 db 15h F000:CA13 db 16h F000:CA14 db 18h F000:CA15 db 3 F000:CA16 db 19h F000:CA17 db 0 F000:CA18 db 1Ah F000:CA19 db 0 F000:CA1A db 1Bh F000:CA1B db 9 F000:CA1C db 1Ch F000:CA1D db 0Ah F000:CA1E db 1Dh F000:CA1F db 0Ch F000:CA20 db 1Eh F000:CA21 db 0Ah F000:CA22 db 1Fh F000:CA23 db 3 F000:CA24 db 0FFh F000:CA25 db 0 F000:CA26 db 0 F000:CA27 db 61h ; a F000:CA28 db 7 F000:CA29 db 60h ; ` F000:CA2A db 8 F000:CA2B db 0 F000:CA2C db 13h F000:CA2D db 0 F000:CA2E db 14h F000:CA2F db 6 F000:CA30 db 15h F000:CA31 db 0Bh F000:CA32 db 18h F000:CA33 db 2 F000:CA34 db 19h F000:CA35 db 6 F000:CA36 db 1Ah F000:CA37 db 6 F000:CA38 db 1Bh F000:CA39 db 0Eh F000:CA3A db 1Ch F000:CA3B db 2 F000:CA3C db 1Dh F000:CA3D db 3 F000:CA3E db 1Eh F000:CA3F db 0Bh F000:CA40 db 1Fh F000:CA41 db 6 F000:CA42 db 0FFh F000:CA43 db 0 F000:CA44 db 0 F000:CA45 db 63h ; c F000:CA46 db 7 F000:CA47 db 0C8h ; L F000:CA48 db 8 F000:CA49 db 0 F000:CA4A db 13h F000:CA4B db 0 F000:CA4C db 14h F000:CA4D db 5 F000:CA4E db 15h F000:CA4F db 0Bh F000:CA50 db 18h F000:CA51 db 2 F000:CA52 db 19h F000:CA53 db 0 F000:CA54 db 1Ah F000:CA55 db 0 F000:CA56 db 1Bh F000:CA57 db 6 F000:CA58 db 1Ch F000:CA59 db 7 F000:CA5A db 1Dh F000:CA5B db 0Eh F000:CA5C db 1Eh F000:CA5D db 0Eh F000:CA5E db 1Fh F000:CA5F db 0Dh F000:CA60 db 0FFh F000:CA61 db 0 F000:CA62 db 0 F000:CA63 db 69h ; i F000:CA64 db 7 F000:CA65 db 28h ; ( F000:CA66 db 8 F000:CA67 db 0 F000:CA68 db 13h F000:CA69 db 0 F000:CA6A db 14h F000:CA6B db 41h ; A F000:CA6C db 15h F000:CA6D db 70h ; p F000:CA6E db 18h F000:CA6F db 2 F000:CA70 db 19h F000:CA71 db 5 F000:CA72 db 1Ah F000:CA73 db 2 F000:CA74 db 1Bh F000:CA75 db 3 F000:CA76 db 1Ch F000:CA77 db 0Ah F000:CA78 db 1Dh F000:CA79 db 7 F000:CA7A db 1Eh F000:CA7B db 0Eh F000:CA7C db 1Fh F000:CA7D db 9 F000:CA7E db 0FFh F000:CA7F db 0 F000:CA80 db 0 F000:CA81 db 6Ah ; j F000:CA82 db 7 F000:CA83 db 90h ; É F000:CA84 db 8 F000:CA85 db 0 F000:CA86 db 13h F000:CA87 db 0 F000:CA88 db 14h F000:CA89 db 41h ; A F000:CA8A db 15h F000:CA8B db 80h ; Ç F000:CA8C db 18h F000:CA8D db 2 F000:CA8E db 19h F000:CA8F db 0 F000:CA90 db 1Ah F000:CA91 db 7 F000:CA92 db 1Bh F000:CA93 db 0Dh F000:CA94 db 1Ch F000:CA95 db 3 F000:CA96 db 1Dh F000:CA97 db 0Fh F000:CA98 db 1Eh F000:CA99 db 9 F000:CA9A db 1Fh F000:CA9B db 9 F000:CA9C db 0FFh F000:CA9D db 0 F000:CA9E db 0 F000:CA9F db 6Bh ; k F000:CAA0 db 7 F000:CAA1 db 0A0h ; á F000:CAA2 db 8 F000:CAA3 db 0 F000:CAA4 db 13h F000:CAA5 db 0 F000:CAA6 db 14h F000:CAA7 db 5Bh ; [ F000:CAA8 db 15h F000:CAA9 db 0C0h ; L F000:CAAA db 18h F000:CAAB db 1 F000:CAAC db 19h F000:CAAD db 0Eh F000:CAAE db 1Ah F000:CAAF db 5 F000:CAB0 db 1Bh F000:CAB1 db 7 F000:CAB2 db 1Ch F000:CAB3 db 8 F000:CAB4 db 1Dh F000:CAB5 db 2 F000:CAB6 db 1Eh F000:CAB7 db 0Eh F000:CAB8 db 1Fh F000:CAB9 db 9 F000:CABA db 0FFh F000:CABB db 0 F000:CABC db 0 F000:CABD db 81h ; ü F000:CABE db 7 F000:CABF db 90h ; É F000:CAC0 db 8 F000:CAC1 db 0 F000:CAC2 db 13h F000:CAC3 db 5 F000:CAC4 db 14h F000:CAC5 db 3Bh ; ; F000:CAC6 db 15h F000:CAC7 db 89h ; ë F000:CAC8 db 18h F000:CAC9 db 2 F000:CACA db 19h F000:CACB db 0 F000:CACC db 1Ah F000:CACD db 0 F000:CACE db 1Bh F000:CACF db 6 F000:CAD0 db 1Ch F000:CAD1 db 7 F000:CAD2 db 1Dh F000:CAD3 db 0Eh F000:CAD4 db 1Eh F000:CAD5 db 0Eh F000:CAD6 db 1Fh F000:CAD7 db 0Dh F000:CAD8 db 0FFh F000:CAD9 db 0 F000:CADA db 0 F000:CADB db 83h ; â F000:CADC db 7 F000:CADD db 0A0h ; á F000:CADE db 8 F000:CADF db 0 F000:CAE0 db 13h F000:CAE1 db 0 F000:CAE2 db 14h F000:CAE3 db 23h ; # F000:CAE4 db 15h F000:CAE5 db 58h ; X F000:CAE6 db 18h F000:CAE7 db 1 F000:CAE8 db 19h F000:CAE9 db 0Fh F000:CAEA db 1Ah F000:CAEB db 8 F000:CAEC db 1Bh F000:CAED db 6 F000:CAEE db 1Ch F000:CAEF db 5 F000:CAF0 db 1Dh F000:CAF1 db 9 F000:CAF2 db 1Eh F000:CAF3 db 4 F000:CAF4 db 1Fh F000:CAF5 db 0Bh F000:CAF6 db 0FFh F000:CAF7 db 0 F000:CAF8 db 0 F000:CAF9 db 84h ; ä F000:CAFA db 7 F000:CAFB db 87h ; ç F000:CAFC db 8 F000:CAFD db 0 F000:CAFE db 13h F000:CAFF db 2 F000:CB00 db 14h F000:CB01 db 69h ; i F000:CB02 db 15h F000:CB03 db 1Eh F000:CB04 db 18h F000:CB05 db 1 F000:CB06 db 19h F000:CB07 db 0Dh F000:CB08 db 1Ah F000:CB09 db 1 F000:CB0A db 1Bh F000:CB0B db 8 F000:CB0C db 1Ch F000:CB0D db 0Ah F000:CB0E db 1Dh F000:CB0F db 7 F000:CB10 db 1Eh F000:CB11 db 9 F000:CB12 db 1Fh F000:CB13 db 7 F000:CB14 db 0FFh F000:CB15 db 0 F000:CB16 db 0 F000:CB17 db 8Bh ; õ F000:CB18 db 7 F000:CB19 db 0DFh ; - F000:CB1A db 8 F000:CB1B db 0 F000:CB1C db 13h F000:CB1D db 0 F000:CB1E db 14h F000:CB1F db 23h ; # F000:CB20 db 15h F000:CB21 db 60h ; ` F000:CB22 db 18h F000:CB23 db 1 F000:CB24 db 19h F000:CB25 db 0Fh F000:CB26 db 1Ah F000:CB27 db 1 F000:CB28 db 1Bh F000:CB29 db 0Bh F000:CB2A db 1Ch F000:CB2B db 0Ah F000:CB2C db 1Dh F000:CB2D db 0Dh F000:CB2E db 1Eh F000:CB2F db 7 F000:CB30 db 1Fh F000:CB31 db 7 F000:CB32 db 0FFh F000:CB33 db 0 F000:CB34 db 0 F000:CB35 db 8Ch ; î F000:CB36 db 7 F000:CB37 db 0DFh ; - F000:CB38 db 8 F000:CB39 db 0 F000:CB3A db 13h F000:CB3B db 0 F000:CB3C db 14h F000:CB3D db 40h ; @ F000:CB3E db 15h F000:CB3F db 15h F000:CB40 db 18h F000:CB41 db 1 F000:CB42 db 19h F000:CB43 db 0Bh F000:CB44 db 1Ah F000:CB45 db 0Fh F000:CB46 db 1Bh F000:CB47 db 0Fh F000:CB48 db 1Ch F000:CB49 db 4 F000:CB4A db 1Dh F000:CB4B db 0Fh F000:CB4C db 1Eh F000:CB4D db 5 F000:CB4E db 1Fh F000:CB4F db 1 F000:CB50 db 0FFh F000:CB51 db 0 F000:CB52 db 0 F000:CB53 db 8Dh ; F000:CB54 db 4 F000:CB55 db 0 F000:CB56 db 7 F000:CB57 db 0F7h ; ¸ F000:CB58 db 13h F000:CB59 db 2 F000:CB5A db 14h F000:CB5B db 5Bh ; [ F000:CB5C db 15h F000:CB5D db 30h ; 0 F000:CB5E db 18h F000:CB5F db 1 F000:CB60 db 19h F000:CB61 db 0Ah F000:CB62 db 1Ah F000:CB63 db 2 F000:CB64 db 1Bh F000:CB65 db 0 F000:CB66 db 1Ch F000:CB67 db 5 F000:CB68 db 1Dh F000:CB69 db 6 F000:CB6A db 1Eh F000:CB6B db 0Dh F000:CB6C db 1Fh F000:CB6D db 0Eh F000:CB6E db 0FFh F000:CB6F db 0 F000:CB70 db 62h ; b F000:CB71 db 0CAh ; ¦ F000:CB72 db 80h ; Ç F000:CB73 db 0CAh ; ¦ F000:CB74 db 16h F000:CB75 db 0CBh ; T F000:CB76 db 34h ; 4 F000:CB77 db 0CBh ; T F000:CB78 dw 0CA08h F000:CB7A db 26h ; & F000:CB7B db 0CAh ; ¦ F000:CB7C db 0BCh ; - F000:CB7D db 0CAh ; ¦ F000:CB7E db 0DAh ; - F000:CB7F db 0CAh ; ¦ F000:CB80 db 80h ; Ç F000:CB81 db 0FDh ; ø F000:CB82 db 12h F000:CB83 db 73h ; s F000:CB84 db 0Bh F000:CB85 db 8Ah ; Õ F000:CB86 db 0DDh ; Þ F000:CB87 db 32h ; 2 F000:CB88 db 0FFh F000:CB89 db 3 F000:CB8A db 0DBh ; - F000:CB8B db 2Eh ; . F000:CB8C db 0FFh F000:CB8D db 0A7h ; ž F000:CB8E db 92h ; å F000:CB8F db 0CBh ; T F000:CB90 db 0F9h ; ¨ F000:CB91 db 0C3h ; + F000:CB92 db 0B6h ;  F000:CB93 db 0CBh ; T F000:CB94 db 0F6h ; ÷ F000:CB95 db 0CBh ; T F000:CB96 db 0CBh ; T F000:CB97 db 0CCh ; ¦ F000:CB98 db 0E0h ; Ó F000:CB99 db 0CCh ; ¦ F000:CB9A db 0F2h ; ² F000:CB9B db 0CCh ; ¦ F000:CB9C db 12h F000:CB9D db 0CDh ; = F000:CB9E db 90h ; É F000:CB9F db 0CBh ; T F000:CBA0 db 90h ; É F000:CBA1 db 0CBh ; T F000:CBA2 db 90h ; É F000:CBA3 db 0CBh ; T F000:CBA4 db 90h ; É F000:CBA5 db 0CBh ; T F000:CBA6 db 90h ; É F000:CBA7 db 0CBh ; T F000:CBA8 db 90h ; É F000:CBA9 db 0CBh ; T F000:CBAA db 90h ; É F000:CBAB db 0CBh ; T F000:CBAC db 90h ; É F000:CBAD db 0CBh ; T F000:CBAE db 90h ; É F000:CBAF db 0CBh ; T F000:CBB0 db 90h ; É F000:CBB1 db 0CBh ; T F000:CBB2 db 14h F000:CBB3 db 0CDh ; = F000:CBB4 db 2Ch ; , F000:CBB5 db 0CDh ; = F000:CBB6 db 0B3h ; - F000:CBB7 db 0EAh ; à F000:CBB8 db 0B1h ; - F000:CBB9 db 9 F000:CBBA db 0E8h ; À F000:CBBB db 1Ah F000:CBBC db 2 F000:CBBD db 80h ; Ç F000:CBBE db 0FBh ; û F000:CBBF db 33h ; 3 F000:CBC0 db 72h ; r F000:CBC1 db 30h ; 0 F000:CBC2 db 80h ; Ç F000:CBC3 db 0FBh ; û F000:CBC4 db 0D0h ; ð F000:CBC5 db 77h ; w F000:CBC6 db 2Bh ; + F000:CBC7 db 8Ah ; Õ F000:CBC8 db 0D3h ; Ë F000:CBC9 db 80h ; Ç F000:CBCA db 0F2h ; ² F000:CBCB db 55h ; U F000:CBCC db 80h ; Ç F000:CBCD db 0E2h ; Ô F000:CBCE db 7Fh ;  F000:CBCF db 8Ah ; Õ F000:CBD0 db 0FAh ; ÿ F000:CBD1 db 53h ; S F000:CBD2 db 0B3h ; - F000:CBD3 db 0EAh ; à F000:CBD4 db 0B1h ; - F000:CBD5 db 9 F000:CBD6 db 0E8h ; À F000:CBD7 db 93h ; ô F000:CBD8 db 1 F000:CBD9 db 0B3h ; - F000:CBDA db 0EAh ; à F000:CBDB db 0B1h ; - F000:CBDC db 9 F000:CBDD db 0E8h ; À F000:CBDE db 0F7h ; ¸ F000:CBDF db 1 F000:CBE0 db 58h ; X F000:CBE1 db 38h ; 8 F000:CBE2 db 0E3h ; Ñ F000:CBE3 db 75h ; u F000:CBE4 db 0Dh F000:CBE5 db 8Ah ; Õ F000:CBE6 db 0D0h ; ð F000:CBE7 db 0B3h ; - F000:CBE8 db 0EAh ; à F000:CBE9 db 0B1h ; - F000:CBEA db 9 F000:CBEB db 0E8h ; À F000:CBEC db 7Eh ; ~ F000:CBED db 1 F000:CBEE db 0BAh ; ¦ F000:CBEF db 2 F000:CBF0 db 0 F000:CBF1 db 0C3h ; + F000:CBF2 db 0BAh ; ¦ F000:CBF3 db 0 F000:CBF4 db 0 F000:CBF5 db 0C3h ; + F000:CBF6 ; --------------------------------------------------------------------------- F000:CBF6 push dx F000:CBF7 lea si, ds:0CA00h F000:CBFB call sub_FCD8A F000:CBFE pop dx F000:CBFF push dx F000:CC00 lea di, ds:0CB70h F000:CC04 test dl, 80h F000:CC07 jz short loc_FCC0D F000:CC09 lea di, ds:0CB78h F000:CC0D F000:CC0D loc_FCC0D: ; CODE XREF: F000:CC07j F000:CC0D mov bx, dx F000:CC0F and bx, 3 F000:CC12 shl bx, 1 F000:CC14 mov si, cs:[bx+di] F000:CC17 call sub_FCD8A F000:CC1A pop dx F000:CC1B lea di, ds:0CC5Bh F000:CC1F test dl, 80h F000:CC22 jz short loc_FCC28 F000:CC24 lea di, ds:0CC93h F000:CC28 F000:CC28 loc_FCC28: ; CODE XREF: F000:CC22j F000:CC28 mov bl, dl F000:CC2A and bx, 3 F000:CC2D mov al, 0Eh F000:CC2F mul bl F000:CC31 add di, ax F000:CC33 push cs F000:CC34 pop es ; ES = F000h F000:CC35 assume es:BIOS_F000 F000:CC35 mov ax, 4F14h ; VESA OEM function F000:CC38 mov bx, 103h ; BL = 03h - Set Fixed Timings F000:CC3B int 10h ; ES:DI - Pointer to fixed timings table F000:CC3D clc F000:CC3E retn F000:CC3E ; --------------------------------------------------------------------------- F000:CC3F db 0 F000:CC40 db 31h ; 1 F000:CC41 db 0 F000:CC42 db 32h ; 2 F000:CC43 db 14h F000:CC44 db 2Dh ; - F000:CC45 db 2 F000:CC46 db 0Eh F000:CC47 db 9 F000:CC48 db 0Bh F000:CC49 db 2 F000:CC4A db 0Eh F000:CC4B db 0Ah F000:CC4C db 0Ch F000:CC4D db 1 F000:CC4E db 31h ; 1 F000:CC4F db 0 F000:CC50 db 50h ; P F000:CC51 db 20h F000:CC52 db 1Ch F000:CC53 db 5 F000:CC54 db 15h F000:CC55 db 0 F000:CC56 db 4 F000:CC57 db 5 F000:CC58 db 15h F000:CC59 db 0Bh F000:CC5A db 0Fh F000:CC5B dw 3120h F000:CC5D db 0 F000:CC5E db 33h ; 3 F000:CC5F db 14h F000:CC60 db 2Dh ; - F000:CC61 db 5 F000:CC62 db 0Fh F000:CC63 db 7 F000:CC64 db 0Ah F000:CC65 db 5 F000:CC66 db 0Fh F000:CC67 db 7 F000:CC68 db 0Ah F000:CC69 db 20h F000:CC6A db 31h ; 1 F000:CC6B db 0 F000:CC6C db 38h ; 8 F000:CC6D db 12h F000:CC6E db 78h ; x F000:CC6F db 5 F000:CC70 db 0Fh F000:CC71 db 3Ch ; < F000:CC72 db 3Fh ; ? F000:CC73 db 5 F000:CC74 db 0Fh F000:CC75 db 3Ch ; < F000:CC76 db 3Fh ; ? F000:CC77 db 21h ; ! F000:CC78 db 31h ; 1 F000:CC79 db 0 F000:CC7A db 57h ; W F000:CC7B db 1Eh F000:CC7C db 64h ; d F000:CC7D db 5 F000:CC7E db 15h F000:CC7F db 32h ; 2 F000:CC80 db 35h ; 5 F000:CC81 db 5 F000:CC82 db 15h F000:CC83 db 32h ; 2 F000:CC84 db 35h ; 5 F000:CC85 db 21h ; ! F000:CC86 db 31h ; 1 F000:CC87 db 0 F000:CC88 db 57h ; W F000:CC89 db 1Eh F000:CC8A db 64h ; d F000:CC8B db 5 F000:CC8C db 15h F000:CC8D db 32h ; 2 F000:CC8E db 35h ; 5 F000:CC8F db 5 F000:CC90 db 15h F000:CC91 db 32h ; 2 F000:CC92 db 35h ; 5 F000:CC93 dw 3120h F000:CC95 db 0 F000:CC96 db 32h ; 2 F000:CC97 db 14h F000:CC98 db 91h ; Å F000:CC99 db 5 F000:CC9A db 0Fh F000:CC9B db 48h ; H F000:CC9C db 4Bh ; K F000:CC9D db 5 F000:CC9E db 0Fh F000:CC9F db 48h ; H F000:CCA0 db 4Bh ; K F000:CCA1 db 20h F000:CCA2 db 31h ; 1 F000:CCA3 db 0 F000:CCA4 db 32h ; 2 F000:CCA5 db 14h F000:CCA6 db 91h ; Å F000:CCA7 db 5 F000:CCA8 db 0Fh F000:CCA9 db 48h ; H F000:CCAA db 4Bh ; K F000:CCAB db 5 F000:CCAC db 0Fh F000:CCAD db 48h ; H F000:CCAE db 4Bh ; K F000:CCAF db 21h ; ! F000:CCB0 db 31h ; 1 F000:CCB1 db 0 F000:CCB2 db 47h ; G F000:CCB3 db 12h F000:CCB4 db 96h ; ¾ F000:CCB5 db 1 F000:CCB6 db 0Ah F000:CCB7 db 4Bh ; K F000:CCB8 db 4Eh ; N F000:CCB9 db 1 F000:CCBA db 0Ah F000:CCBB db 4Bh ; K F000:CCBC db 4Eh ; N F000:CCBD db 21h ; ! F000:CCBE db 31h ; 1 F000:CCBF db 0 F000:CCC0 db 47h ; G F000:CCC1 db 12h F000:CCC2 db 96h ; ¾ F000:CCC3 db 1 F000:CCC4 db 0Ah F000:CCC5 db 4Bh ; K F000:CCC6 db 4Eh ; N F000:CCC7 db 1 F000:CCC8 db 0Ah F000:CCC9 db 4Bh ; K F000:CCCA db 4Eh ; N F000:CCCB db 51h ; Q F000:CCCC db 52h ; R F000:CCCD db 0B1h ; - F000:CCCE db 0Ah F000:CCCF db 0E8h ; À F000:CCD0 db 98h ; œ F000:CCD1 db 0 F000:CCD2 db 5Ah ; Z F000:CCD3 db 5Ah ; Z F000:CCD4 db 52h ; R F000:CCD5 db 86h ; æ F000:CCD6 db 0F2h ; ² F000:CCD7 db 0B1h ; - F000:CCD8 db 0Bh F000:CCD9 db 0E8h ; À F000:CCDA db 8Eh ; Ä F000:CCDB db 0 F000:CCDC db 5Ah ; Z F000:CCDD db 59h ; Y F000:CCDE db 0F8h ; ° F000:CCDF db 0C3h ; + F000:CCE0 db 8Ah ; Õ F000:CCE1 db 0C2h ; T F000:CCE2 db 0B3h ; - F000:CCE3 db 9Dh ; £ F000:CCE4 db 0F6h ; ÷ F000:CCE5 db 0E3h ; Ñ F000:CCE6 db 80h ; Ç F000:CCE7 db 0C4h ; ¦ F000:CCE8 db 33h ; 3 F000:CCE9 db 8Ah ; Õ F000:CCEA db 0D4h ; ï F000:CCEB db 0B1h ; - F000:CCEC db 9 F000:CCED db 0E8h ; À F000:CCEE db 7Ah ; z F000:CCEF db 0 F000:CCF0 db 0F8h ; ° F000:CCF1 db 0C3h ; + F000:CCF2 db 8Ah ; Õ F000:CCF3 db 0CAh ; ¦ F000:CCF4 db 0B2h ; - F000:CCF5 db 1 F000:CCF6 db 80h ; Ç F000:CCF7 db 0E1h ; ß F000:CCF8 db 3 F000:CCF9 db 74h ; t F000:CCFA db 10h F000:CCFB db 0B2h ; - F000:CCFC db 3 F000:CCFD db 80h ; Ç F000:CCFE db 0F9h ; ¨ F000:CCFF db 3 F000:CD00 db 74h ; t F000:CD01 db 9 F000:CD02 db 0B2h ; - F000:CD03 db 2 F000:CD04 db 80h ; Ç F000:CD05 db 0F9h ; ¨ F000:CD06 db 2 F000:CD07 db 74h ; t F000:CD08 db 2 F000:CD09 db 0B2h ; - F000:CD0A db 0 F000:CD0B db 0B1h ; - F000:CD0C db 0Eh F000:CD0D db 0E8h ; À F000:CD0E db 5Ah ; Z F000:CD0F db 0 F000:CD10 db 0F8h ; ° F000:CD11 db 0C3h ; + F000:CD12 db 0F8h ; ° F000:CD13 db 0C3h ; + F000:CD14 db 0B9h ; ¦ F000:CD15 db 8 F000:CD16 db 0 F000:CD17 db 51h ; Q F000:CD18 db 0BEh ; ¿ F000:CD19 db 80h ; Ç F000:CD1A db 0 F000:CD1B db 0E8h ; À F000:CD1C db 0E5h ; ò F000:CD1D db 0 F000:CD1E db 0B3h ; - F000:CD1F db 0A0h ; á F000:CD20 db 0E8h ; À F000:CD21 db 7Ch ; | F000:CD22 db 0 F000:CD23 db 59h ; Y F000:CD24 db 74h ; t F000:CD25 db 4 F000:CD26 db 0E2h ; Ô F000:CD27 db 0EFh ; ´ F000:CD28 db 0F8h ; ° F000:CD29 db 0C3h ; + F000:CD2A db 0F9h ; ¨ F000:CD2B db 0C3h ; + F000:CD2C ; --------------------------------------------------------------------------- F000:CD2C push si F000:CD2D push di F000:CD2E mov si, 80h ; 'Ç' F000:CD31 call sub_FCE03 F000:CD34 mov bl, 0A0h ; 'á' F000:CD36 call sub_FCD9F F000:CD39 mov bl, 0 F000:CD3B call sub_FCD9F F000:CD3E call sub_FCE03 F000:CD41 mov bl, 0A1h ; 'í' F000:CD43 call sub_FCD9F F000:CD46 call sub_FCE6E F000:CD49 mov cx, 80h ; 'Ç' F000:CD4C F000:CD4C loc_FCD4C: ; CODE XREF: F000:CD55j F000:CD4C push cx F000:CD4D call sub_FCE11 F000:CD50 mov al, bl F000:CD52 cld F000:CD53 stosb F000:CD54 pop cx F000:CD55 loop loc_FCD4C F000:CD57 call sub_FCDF5 F000:CD5A pop di F000:CD5B pop si F000:CD5C clc F000:CD5D retn F000:CD5E ; --------------------------------------------------------------------------- F000:CD5E mov ax, 0BF00h F000:CD61 mov bx, 4358h F000:CD64 mov cx, 0E02h F000:CD67 int 15h F000:CD69 retn F000:CD6A ; --------------------------------------------------------------------------- F000:CD6A F000:CD6A loc_FCD6A: ; CODE XREF: sub_FCD8A+Dp F000:CD6A mov bl, 0EAh ; 'à' F000:CD6C mov si, 0 F000:CD6F F000:CD6F ; =============== S U B R O U T I N E ======================================= F000:CD6F F000:CD6F F000:CD6F sub_FCD6F proc near F000:CD6F push cx F000:CD70 push dx F000:CD71 push cx F000:CD72 push bx F000:CD73 call sub_FCE03 F000:CD76 pop bx F000:CD77 and bl, 0FEh F000:CD7A call sub_FCD9F F000:CD7D pop bx F000:CD7E call sub_FCD9F F000:CD81 pop bx F000:CD82 call sub_FCD9F F000:CD85 call sub_FCDF5 F000:CD88 pop cx F000:CD89 retn F000:CD89 sub_FCD6F endp F000:CD89 F000:CD8A F000:CD8A ; =============== S U B R O U T I N E ======================================= F000:CD8A F000:CD8A F000:CD8A sub_FCD8A proc near ; CODE XREF: F000:CBFBp F000:CD8A ; F000:CC17p ... F000:CD8A mov al, cs:[si] F000:CD8D cmp al, 0FFh F000:CD8F jz short locret_FCD9E F000:CD91 mov cl, al F000:CD93 mov dl, cs:[si+1] F000:CD97 call loc_FCD6A F000:CD9A inc si F000:CD9B inc si F000:CD9C jmp short sub_FCD8A F000:CD9E ; --------------------------------------------------------------------------- F000:CD9E F000:CD9E locret_FCD9E: ; CODE XREF: sub_FCD8A+5j F000:CD9E retn F000:CD9E sub_FCD8A endp F000:CD9E F000:CD9F F000:CD9F ; =============== S U B R O U T I N E ======================================= F000:CD9F F000:CD9F F000:CD9F sub_FCD9F proc near ; CODE XREF: F000:CD36p F000:CD9F ; F000:CD3Bp ... F000:CD9F call sub_FCE6E F000:CDA2 mov cx, 8 F000:CDA5 F000:CDA5 loc_FCDA5: ; CODE XREF: sub_FCD9F+1Fj F000:CDA5 push bx F000:CDA6 push cx F000:CDA7 test bl, 80h F000:CDAA jz short loc_FCDB1 F000:CDAC call sub_FCE7A F000:CDAF jmp short loc_FCDB4 F000:CDB1 ; --------------------------------------------------------------------------- F000:CDB1 F000:CDB1 loc_FCDB1: ; CODE XREF: sub_FCD9F+Bj F000:CDB1 call sub_FCE76 F000:CDB4 F000:CDB4 loc_FCDB4: ; CODE XREF: sub_FCD9F+10j F000:CDB4 call sub_FCE72 F000:CDB7 call sub_FCE6E F000:CDBA pop cx F000:CDBB pop bx F000:CDBC shl bx, 1 F000:CDBE loop loc_FCDA5 F000:CDC0 call sub_FCE76 F000:CDC3 call sub_FCE6A F000:CDC6 call sub_FCE72 F000:CDC9 call sub_FCE56 F000:CDCC push ax F000:CDCD call sub_FCE6E F000:CDD0 call sub_FCE66 F000:CDD3 pop ax F000:CDD4 test al, 2 F000:CDD6 retn F000:CDD6 sub_FCD9F endp F000:CDD6 F000:CDD7 ; --------------------------------------------------------------------------- F000:CDD7 push bx F000:CDD8 push cx F000:CDD9 push bx F000:CDDA call sub_FCE03 F000:CDDD pop bx F000:CDDE call sub_FCD9F F000:CDE1 pop bx F000:CDE2 call sub_FCD9F F000:CDE5 call sub_FCE03 F000:CDE8 pop bx F000:CDE9 or bl, 1 F000:CDEC call sub_FCD9F F000:CDEF call sub_FCE6E F000:CDF2 call sub_FCE11 F000:CDF5 F000:CDF5 ; =============== S U B R O U T I N E ======================================= F000:CDF5 F000:CDF5 F000:CDF5 sub_FCDF5 proc near ; CODE XREF: F000:CD57p F000:CDF5 ; sub_FCD6F+16p F000:CDF5 call sub_FCE66 F000:CDF8 call sub_FCE76 F000:CDFB call sub_FCE72 F000:CDFE call sub_FCE7A F000:CE01 jmp short sub_FCE6E F000:CE01 sub_FCDF5 endp F000:CE01 F000:CE03 F000:CE03 ; =============== S U B R O U T I N E ======================================= F000:CE03 F000:CE03 F000:CE03 sub_FCE03 proc near ; CODE XREF: F000:CD31p F000:CE03 ; F000:CD3Ep ... F000:CE03 call sub_FCE66 F000:CE06 call sub_FCE7A F000:CE09 call sub_FCE72 F000:CE0C call sub_FCE76 F000:CE0F jmp short sub_FCE6E F000:CE0F sub_FCE03 endp F000:CE0F F000:CE11 F000:CE11 ; =============== S U B R O U T I N E ======================================= F000:CE11 F000:CE11 F000:CE11 sub_FCE11 proc near ; CODE XREF: F000:CD4Dp F000:CE11 ; F000:CDF2p F000:CE11 call sub_FCE6E F000:CE14 call sub_FCE6A F000:CE17 mov cx, 8 F000:CE1A xor bx, bx F000:CE1C F000:CE1C loc_FCE1C: ; CODE XREF: sub_FCE11+23j F000:CE1C call sub_FCE6E F000:CE1F call sub_FCE6E F000:CE22 shl bx, 1 F000:CE24 call sub_FCE56 F000:CE27 test al, 2 F000:CE29 jz short loc_FCE2E F000:CE2B or bx, 1 F000:CE2E F000:CE2E loc_FCE2E: ; CODE XREF: sub_FCE11+18j F000:CE2E call sub_FCE72 F000:CE31 call sub_FCE72 F000:CE34 loop loc_FCE1C F000:CE36 call sub_FCE6E F000:CE39 call sub_FCE66 F000:CE3C test si, 80h F000:CE40 jz short locret_FCE4B F000:CE42 call sub_FCE76 F000:CE45 call sub_FCE72 F000:CE48 call sub_FCE6E F000:CE4B F000:CE4B locret_FCE4B: ; CODE XREF: sub_FCE11+2Fj F000:CE4B retn F000:CE4B sub_FCE11 endp F000:CE4B F000:CE4C ; --------------------------------------------------------------------------- F000:CE4C ; START OF FUNCTION CHUNK FOR sub_FCE66 F000:CE4C F000:CE4C loc_FCE4C: ; CODE XREF: sub_FCE66+2j F000:CE4C ; sub_FCE6A+2j ... F000:CE4C pusha F000:CE4D or dx, si F000:CE4F mov cl, 0 F000:CE51 call sub_FD3F0 F000:CE54 popa F000:CE55 retn F000:CE55 ; END OF FUNCTION CHUNK FOR sub_FCE66 F000:CE56 F000:CE56 ; =============== S U B R O U T I N E ======================================= F000:CE56 F000:CE56 F000:CE56 sub_FCE56 proc near ; CODE XREF: sub_FCD9F+2Ap F000:CE56 ; sub_FCE11+13p F000:CE56 push bx F000:CE57 push cx F000:CE58 push dx F000:CE59 push si F000:CE5A or dx, si F000:CE5C mov cl, 1 F000:CE5E call sub_FD3F0 F000:CE61 pop si F000:CE62 pop dx F000:CE63 pop cx F000:CE64 pop bx F000:CE65 retn F000:CE65 sub_FCE56 endp F000:CE65 F000:CE66 F000:CE66 ; =============== S U B R O U T I N E ======================================= F000:CE66 F000:CE66 F000:CE66 sub_FCE66 proc near ; CODE XREF: sub_FCD9F+31p F000:CE66 ; sub_FCDF5p ... F000:CE66 F000:CE66 ; FUNCTION CHUNK AT F000:CE4C SIZE 0000000A BYTES F000:CE66 F000:CE66 mov dl, 44h ; 'D' F000:CE68 jmp short loc_FCE4C F000:CE68 sub_FCE66 endp F000:CE68 F000:CE6A F000:CE6A ; =============== S U B R O U T I N E ======================================= F000:CE6A F000:CE6A F000:CE6A sub_FCE6A proc near ; CODE XREF: sub_FCD9F+24p F000:CE6A ; sub_FCE11+3p F000:CE6A mov dl, 40h ; '@' F000:CE6C jmp short loc_FCE4C F000:CE6C sub_FCE6A endp F000:CE6C F000:CE6E F000:CE6E ; =============== S U B R O U T I N E ======================================= F000:CE6E F000:CE6E F000:CE6E sub_FCE6E proc near ; CODE XREF: F000:CD46p F000:CE6E ; sub_FCD9Fp ... F000:CE6E mov dl, 10h F000:CE70 jmp short loc_FCE4C F000:CE70 sub_FCE6E endp F000:CE70 F000:CE72 F000:CE72 ; =============== S U B R O U T I N E ======================================= F000:CE72 F000:CE72 F000:CE72 sub_FCE72 proc near ; CODE XREF: sub_FCD9F:loc_FCDB4p F000:CE72 ; sub_FCD9F+27p ... F000:CE72 mov dl, 11h F000:CE74 jmp short loc_FCE4C F000:CE74 sub_FCE72 endp F000:CE74 F000:CE76 F000:CE76 ; =============== S U B R O U T I N E ======================================= F000:CE76 F000:CE76 F000:CE76 sub_FCE76 proc near ; CODE XREF: sub_FCD9F:loc_FCDB1p F000:CE76 ; sub_FCD9F+21p ... F000:CE76 mov dl, 20h ; ' ' F000:CE78 jmp short loc_FCE4C F000:CE78 sub_FCE76 endp F000:CE78 F000:CE7A F000:CE7A ; =============== S U B R O U T I N E ======================================= F000:CE7A F000:CE7A F000:CE7A sub_FCE7A proc near ; CODE XREF: sub_FCD9F+Dp F000:CE7A ; sub_FCDF5+9p ... F000:CE7A mov dl, 22h ; '"' F000:CE7C jmp short loc_FCE4C F000:CE7C sub_FCE7A endp F000:CE7C F000:CE7C ; --------------------------------------------------------------------------- F000:CE7E db 0 F000:CE7F db 0 F000:CE80 db 4 F000:CE81 db 0Fh F000:CE82 db 5 F000:CE83 db 0 F000:CE84 db 6 F000:CE85 db 80h ; Ç F000:CE86 db 7 F000:CE87 db 2 F000:CE88 db 0Ch F000:CE89 db 0 F000:CE8A db 40h ; @ F000:CE8B db 81h ; ü F000:CE8C db 41h ; A F000:CE8D db 10h F000:CE8E db 42h ; B F000:CE8F db 8Ch ; î F000:CE90 db 43h ; C F000:CE91 db 43h ; C F000:CE92 db 50h ; P F000:CE93 db 7Bh ; { F000:CE94 db 51h ; Q F000:CE95 db 44h ; D F000:CE96 db 52h ; R F000:CE97 db 0A9h ; ê F000:CE98 db 53h ; S F000:CE99 db 3 F000:CE9A db 58h ; X F000:CE9B db 0 F000:CE9C db 5Ah ; Z F000:CE9D db 0 F000:CE9E db 5Bh ; [ F000:CE9F db 20h F000:CEA0 db 5Ch ; \ F000:CEA1 db 0AAh ; ¬ F000:CEA2 db 5Dh ; ] F000:CEA3 db 0AAh ; ¬ F000:CEA4 db 70h ; p F000:CEA5 db 0 F000:CEA6 db 71h ; q F000:CEA7 db 0 F000:CEA8 db 72h ; r F000:CEA9 db 0 F000:CEAA db 80h ; Ç F000:CEAB db 0 F000:CEAC db 81h ; ü F000:CEAD db 0 F000:CEAE db 82h ; é F000:CEAF db 0 F000:CEB0 db 83h ; â F000:CEB1 db 0 F000:CEB2 db 90h ; É F000:CEB3 db 0 F000:CEB4 db 91h ; Å F000:CEB5 db 0 F000:CEB6 db 0FFh F000:CEB7 db 0FFh F000:CEB8 db 4 F000:CEB9 db 0Fh F000:CEBA db 5 F000:CEBB db 0 F000:CEBC db 6 F000:CEBD db 80h ; Ç F000:CEBE db 7 F000:CEBF db 2 F000:CEC0 db 0Ch F000:CEC1 db 0 F000:CEC2 db 10h F000:CEC3 db 0 F000:CEC4 db 11h F000:CEC5 db 20h F000:CEC6 db 12h F000:CEC7 db 1 F000:CEC8 db 13h F000:CEC9 db 40h ; @ F000:CECA db 0FFh F000:CECB db 0FFh F000:CECC db 4 F000:CECD db 0 F000:CECE db 5 F000:CECF db 0 F000:CED0 db 6 F000:CED1 db 80h ; Ç F000:CED2 db 7 F000:CED3 db 2 F000:CED4 db 0Ch F000:CED5 db 0 F000:CED6 db 10h F000:CED7 db 0 F000:CED8 db 11h F000:CED9 db 50h ; P F000:CEDA db 12h F000:CEDB db 0 F000:CEDC db 13h F000:CEDD db 0 F000:CEDE db 0FFh F000:CEDF db 0FFh F000:CEE0 db 4 F000:CEE1 db 0Fh F000:CEE2 db 5 F000:CEE3 db 0 F000:CEE4 db 6 F000:CEE5 db 80h ; Ç F000:CEE6 db 7 F000:CEE7 db 2 F000:CEE8 db 0Ch F000:CEE9 db 0 F000:CEEA db 10h F000:CEEB db 0 F000:CEEC db 11h F000:CEED db 10h F000:CEEE db 12h F000:CEEF db 1 F000:CEF0 db 13h F000:CEF1 db 40h ; @ F000:CEF2 db 0FFh F000:CEF3 db 0FFh F000:CEF4 db 4 F000:CEF5 db 0Fh F000:CEF6 db 5 F000:CEF7 db 0 F000:CEF8 db 6 F000:CEF9 db 80h ; Ç F000:CEFA db 7 F000:CEFB db 2 F000:CEFC db 0Ch F000:CEFD db 0 F000:CEFE db 10h F000:CEFF db 0 F000:CF00 db 11h F000:CF01 db 0 F000:CF02 db 12h F000:CF03 db 1 F000:CF04 db 13h F000:CF05 db 40h ; @ F000:CF06 db 0 F000:CF07 db 0 F000:CF08 db 0 F000:CF09 db 0 F000:CF0A db 0 F000:CF0B db 0 F000:CF0C db 0 F000:CF0D db 0 F000:CF0E db 0 F000:CF0F db 0 F000:CF10 db 43h ; C F000:CF11 db 3 F000:CF12 db 90h ; É F000:CF13 db 30h ; 0 F000:CF14 db 91h ; Å F000:CF15 db 30h ; 0 F000:CF16 db 0 F000:CF17 db 0 F000:CF18 db 0 F000:CF19 db 0 F000:CF1A db 0 F000:CF1B db 0 F000:CF1C db 0 F000:CF1D db 0 F000:CF1E db 0 F000:CF1F db 0 F000:CF20 F000:CF20 ; =============== S U B R O U T I N E ======================================= F000:CF20 F000:CF20 F000:CF20 sub_FCF20 proc near F000:CF20 pushad F000:CF22 mov esi, 300000h F000:CF28 add esi, ds:100Dh F000:CF2D add ds:100Dh, ecx F000:CF32 shr ecx, 2 F000:CF36 rep movs dword ptr es:[edi], dword ptr [esi] F000:CF3A popad F000:CF3C retn F000:CF3C sub_FCF20 endp F000:CF3C F000:CF3C ; --------------------------------------------------------------------------- F000:CF3D db 0 F000:CF3E db 0 F000:CF3F db 0 F000:CF40 db 0 F000:CF41 db 1 F000:CF42 db 2 F000:CF43 db 3 F000:CF44 db 0FFh F000:CF45 db 0E0h ; Ó F000:CF46 db 0D9h ; - F000:CF47 db 30h ; 0 F000:CF48 db 0D7h ; Î F000:CF49 db 32h ; 2 F000:CF4A db 0D7h ; Î F000:CF4B db 34h ; 4 F000:CF4C db 0D7h ; Î F000:CF4D db 0 F000:CF4E db 0 F000:CF4F db 0 F000:CF50 db 80h ; Ç F000:CF51 db 0D5h ; Ò F000:CF52 db 0E0h ; Ó F000:CF53 db 0D5h ; Ò F000:CF54 db 40h ; @ F000:CF55 db 0D6h ; Í F000:CF56 db 0A0h ; á F000:CF57 db 0D6h ; Í F000:CF58 db 0C0h ; L F000:CF59 db 0D7h ; Î F000:CF5A db 72h ; r F000:CF5B db 0D8h ; ì F000:CF5C db 0CBh ; T F000:CF5D db 0D8h ; ì F000:CF5E db 24h ; $ F000:CF5F db 0D9h ; - F000:CF60 db 19h F000:CF61 db 0D8h ; ì F000:CF62 db 7Dh ; } F000:CF63 db 0D9h ; - F000:CF64 db 0Ch dup(0) F000:CF70 F000:CF70 ; =============== S U B R O U T I N E ======================================= F000:CF70 F000:CF70 ; Attributes: bp-based frame F000:CF70 F000:CF70 sub_FCF70 proc near ; CODE XREF: sub_F5A47+Ep F000:CF70 F000:CF70 var_1 = byte ptr -1 F000:CF70 F000:CF70 push bp F000:CF71 mov bp, sp F000:CF73 add sp, 0FFFEh F000:CF76 push cx F000:CF77 push dx F000:CF78 push ebp F000:CF7A mov al, dl F000:CF7C call sub_F5A35 F000:CF7F mov [bp+var_1], al F000:CF82 cmp al, 55h ; 'U' F000:CF84 mov ax, 0 F000:CF87 jz short loc_FCFB2 F000:CF89 mov ah, 0FFh F000:CF8B mov al, [bp+var_1] F000:CF8E call sub_FD709 F000:CF91 call sub_FD7A0 F000:CF94 jz short loc_FCFBE F000:CF96 mov ah, 90h ; 'É' F000:CF98 mov al, [bp+var_1] F000:CF9B call sub_FD709 F000:CF9E mov dx, 1F1h F000:CFA1 mov ax, 0 F000:CFA4 out dx, al ; AT hard disk controller F000:CFA4 ; Write Precompensation register. F000:CFA4 ; Turn on write precompensation. F000:CFA5 mov dx, 1F2h F000:CFA8 out dx, al ; AT hard disk controller: F000:CFA8 ; Sector count. F000:CFA8 ; Read/Write count of sectors for operation F000:CFA9 mov dx, 1F7h F000:CFAC in al, dx ; AT hard disk F000:CFAC ; status register bits: F000:CFAC ; 0: 1=prev cmd error F000:CFAC ; 2: Corrected data F000:CFAC ; 3: Data Request. Buffer is busy F000:CFAC ; 4: Seek completed F000:CFAC ; 5: Write fault F000:CFAC ; 6: Drive ready (unless bit 4=0) F000:CFAC ; 7: Busy F000:CFAD mov ah, al F000:CFAF in al, dx ; AT hard disk F000:CFAF ; status register bits: F000:CFAF ; 0: 1=prev cmd error F000:CFAF ; 2: Corrected data F000:CFAF ; 3: Data Request. Buffer is busy F000:CFAF ; 4: Seek completed F000:CFAF ; 5: Write fault F000:CFAF ; 6: Drive ready (unless bit 4=0) F000:CFAF ; 7: Busy F000:CFB0 xchg al, ah F000:CFB2 F000:CFB2 loc_FCFB2: ; CODE XREF: sub_FCF70+17j F000:CFB2 call sub_FD700 F000:CFB5 clc F000:CFB6 pop ebp F000:CFB8 pop dx F000:CFB9 pop cx F000:CFBA mov sp, bp F000:CFBC pop bp F000:CFBD retn F000:CFBE ; --------------------------------------------------------------------------- F000:CFBE F000:CFBE loc_FCFBE: ; CODE XREF: sub_FCF70+24j F000:CFBE call sub_FD700 F000:CFC1 stc F000:CFC2 pop ebp F000:CFC4 pop dx F000:CFC5 pop cx F000:CFC6 mov sp, bp F000:CFC8 pop bp F000:CFC9 retn F000:CFC9 sub_FCF70 endp F000:CFC9 F000:CFC9 ; --------------------------------------------------------------------------- F000:CFCA db 6 dup(0) F000:CFD0 ; --------------------------------------------------------------------------- F000:CFD0 retn F000:CFD1 F000:CFD1 ; =============== S U B R O U T I N E ======================================= F000:CFD1 F000:CFD1 F000:CFD1 sub_FCFD1 proc near ; CODE XREF: sub_F6A2Fp F000:CFD1 push di F000:CFD2 pop di F000:CFD3 retn F000:CFD3 sub_FCFD1 endp F000:CFD3 F000:CFD4 ; --------------------------------------------------------------------------- F000:CFD4 push bx F000:CFD5 pop bx F000:CFD6 retn F000:CFD7 ; --------------------------------------------------------------------------- F000:CFD7 push bx F000:CFD8 pop bx F000:CFD9 retn F000:CFDA ; --------------------------------------------------------------------------- F000:CFDA push bx F000:CFDB pop bx F000:CFDC retn F000:CFDD ; --------------------------------------------------------------------------- F000:CFDD push bx F000:CFDE pop bx F000:CFDF retn F000:CFE0 F000:CFE0 ; =============== S U B R O U T I N E ======================================= F000:CFE0 F000:CFE0 F000:CFE0 sub_FCFE0 proc near ; CODE XREF: F000:86BDp F000:CFE0 push dx F000:CFE1 push eax F000:CFE3 mov dx, 0CF8h F000:CFE6 mov eax, 80009090h F000:CFEC out dx, eax F000:CFEE mov dx, 0CFCh F000:CFF1 in eax, dx F000:CFF3 and al, 7Fh F000:CFF5 out dx, eax F000:CFF7 pop eax F000:CFF9 pop dx F000:CFFA retn F000:CFFA sub_FCFE0 endp F000:CFFA F000:CFFB F000:CFFB ; =============== S U B R O U T I N E ======================================= F000:CFFB F000:CFFB F000:CFFB sub_FCFFB proc near ; CODE XREF: F000:8699p F000:CFFB push dx F000:CFFC push eax F000:CFFE mov dx, 0CF8h F000:D001 mov eax, 80009090h F000:D007 out dx, eax F000:D009 mov dx, 0CFCh F000:D00C in eax, dx F000:D00E or al, 80h F000:D010 and ah, 7Fh F000:D013 out dx, eax F000:D015 pop eax F000:D017 pop dx F000:D018 retn F000:D018 sub_FCFFB endp F000:D018 F000:D019 F000:D019 ; =============== S U B R O U T I N E ======================================= F000:D019 F000:D019 F000:D019 sub_FD019 proc near ; CODE XREF: sub_F5B2C+6p F000:D019 ; F000:7E57p ... F000:D019 push dx F000:D01A push eax F000:D01C mov dx, 0CF8h F000:D01F mov eax, 80009050h F000:D025 out dx, eax F000:D027 mov dx, 0CFCh F000:D02A in eax, dx F000:D02C or eax, 20000h F000:D032 out dx, eax F000:D034 pop eax F000:D036 pop dx F000:D037 retn F000:D037 sub_FD019 endp F000:D037 F000:D038 F000:D038 ; =============== S U B R O U T I N E ======================================= F000:D038 F000:D038 F000:D038 sub_FD038 proc near ; CODE XREF: sub_F5B2C+CBp F000:D038 ; sub_F5B2C:loc_F5C01p ... F000:D038 push dx F000:D039 push eax F000:D03B mov dx, 0CF8h F000:D03E mov eax, 80009050h F000:D044 out dx, eax F000:D046 mov dx, 0CFCh F000:D049 in eax, dx F000:D04B and eax, 0FFFDFFFFh F000:D051 out dx, eax F000:D053 pop eax F000:D055 pop dx F000:D056 retn F000:D056 sub_FD038 endp F000:D056 F000:D056 ; --------------------------------------------------------------------------- F000:D057 db 9 dup(0) F000:D060 aUlc_code_ce db 'ulc_code.ce',0 ; DATA XREF: F000:7D23r F000:D060 ; F000:8225r ... F000:D06C db 4 dup(0) F000:D070 F000:D070 ; =============== S U B R O U T I N E ======================================= F000:D070 F000:D070 F000:D070 sub_FD070 proc near ; CODE XREF: F000:AF96p F000:D070 ; sub_FD07D+18p ... F000:D070 push ax F000:D071 push bx F000:D072 mov al, bl F000:D074 xor bx, bx F000:D076 mov ah, 0Eh F000:D078 int 10h ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) F000:D078 ; AL = character, BH = display page (alpha modes) F000:D078 ; BL = foreground color (graphics modes) F000:D07A pop bx F000:D07B pop ax F000:D07C retn F000:D07C sub_FD070 endp F000:D07C F000:D07D F000:D07D ; =============== S U B R O U T I N E ======================================= F000:D07D F000:D07D F000:D07D sub_FD07D proc near ; CODE XREF: F000:AF96p F000:D07D ; DATA XREF: F000:AFBEo F000:D07D push si F000:D07E push ax F000:D07F push cx F000:D080 push bx F000:D081 push dx F000:D082 mov dl, cl F000:D084 lodsb F000:D085 movzx cx, al F000:D088 jcxz short loc_FD09A F000:D08A or dl, dl F000:D08C jz short loc_FD092 F000:D08E add si, cx F000:D090 dec si F000:D091 std F000:D092 F000:D092 loc_FD092: ; CODE XREF: sub_FD07D+Fj F000:D092 ; sub_FD07D+1Bj F000:D092 lodsb F000:D093 mov bl, al F000:D095 call sub_FD070 F000:D098 loop loc_FD092 F000:D09A F000:D09A loc_FD09A: ; CODE XREF: sub_FD07D+Bj F000:D09A cld F000:D09B pop dx F000:D09C pop bx F000:D09D pop cx F000:D09E pop ax F000:D09F pop si F000:D0A0 retn F000:D0A0 sub_FD07D endp F000:D0A0 F000:D0A1 F000:D0A1 ; =============== S U B R O U T I N E ======================================= F000:D0A1 F000:D0A1 F000:D0A1 sub_FD0A1 proc near ; CODE XREF: sub_FD0C3+4p F000:D0A1 ; sub_FD0C3+8p F000:D0A1 push bx F000:D0A2 push cx F000:D0A3 mov bh, bl F000:D0A5 mov cx, 2 F000:D0A8 F000:D0A8 loc_FD0A8: ; CODE XREF: sub_FD0A1+1Dj F000:D0A8 ror bh, 4 F000:D0AB mov bl, bh F000:D0AD and bl, 0Fh F000:D0B0 cmp bl, 9 F000:D0B3 jbe short loc_FD0B8 F000:D0B5 add bl, 7 F000:D0B8 F000:D0B8 loc_FD0B8: ; CODE XREF: sub_FD0A1+12j F000:D0B8 add bl, 30h ; '0' F000:D0BB call sub_FD070 F000:D0BE loop loc_FD0A8 F000:D0C0 pop cx F000:D0C1 pop bx F000:D0C2 retn F000:D0C2 sub_FD0A1 endp F000:D0C2 F000:D0C3 F000:D0C3 ; =============== S U B R O U T I N E ======================================= F000:D0C3 F000:D0C3 F000:D0C3 sub_FD0C3 proc near ; CODE XREF: F000:AF96p F000:D0C3 ; DATA XREF: F000:AFBAo F000:D0C3 push bx F000:D0C4 push bx F000:D0C5 mov bl, bh F000:D0C7 call sub_FD0A1 F000:D0CA pop bx F000:D0CB call sub_FD0A1 F000:D0CE pop bx F000:D0CF retn F000:D0CF sub_FD0C3 endp F000:D0CF F000:D0D0 F000:D0D0 ; =============== S U B R O U T I N E ======================================= F000:D0D0 F000:D0D0 F000:D0D0 sub_FD0D0 proc near ; CODE XREF: sub_FD0DB+19p F000:D0D0 ; sub_FD0DB+21p F000:D0D0 cmp al, 41h ; 'A' F000:D0D2 jb short locret_FD0DA F000:D0D4 cmp al, 5Ah ; 'Z' F000:D0D6 ja short locret_FD0DA F000:D0D8 or al, 20h F000:D0DA F000:D0DA locret_FD0DA: ; CODE XREF: sub_FD0D0+2j F000:D0DA ; sub_FD0D0+6j F000:D0DA retn F000:D0DA sub_FD0D0 endp F000:D0DA F000:D0DB F000:D0DB ; =============== S U B R O U T I N E ======================================= F000:D0DB F000:D0DB F000:D0DB sub_FD0DB proc near ; CODE XREF: F000:AF96p F000:D0DB ; DATA XREF: F000:AFC0o F000:D0DB push dx F000:D0DC push bx F000:D0DD push cx F000:D0DE push di F000:D0DF push si F000:D0E0 mov dl, es:[bx] F000:D0E3 inc bx F000:D0E4 mov dh, dl F000:D0E6 mov di, bx F000:D0E8 movzx cx, byte ptr [si] F000:D0EB jcxz short loc_FD113 F000:D0ED F000:D0ED loc_FD0ED: ; CODE XREF: sub_FD0DB:loc_FD111j F000:D0ED inc si F000:D0EE mov al, [si] F000:D0F0 cmp al, 20h ; ' ' F000:D0F2 jz short loc_FD10D F000:D0F4 call sub_FD0D0 F000:D0F7 mov ah, al F000:D0F9 mov al, es:[bx] F000:D0FC call sub_FD0D0 F000:D0FF cmp al, ah F000:D101 jnz short loc_FD10D F000:D103 inc bx F000:D104 dec dl F000:D106 jnz short loc_FD111 F000:D108 mov ax, 1 F000:D10B jmp short loc_FD116 F000:D10D ; --------------------------------------------------------------------------- F000:D10D F000:D10D loc_FD10D: ; CODE XREF: sub_FD0DB+17j F000:D10D ; sub_FD0DB+26j F000:D10D mov bx, di F000:D10F mov dl, dh F000:D111 F000:D111 loc_FD111: ; CODE XREF: sub_FD0DB+2Bj F000:D111 loop loc_FD0ED F000:D113 F000:D113 loc_FD113: ; CODE XREF: sub_FD0DB+10j F000:D113 mov ax, 0 F000:D116 F000:D116 loc_FD116: ; CODE XREF: sub_FD0DB+30j F000:D116 pop si F000:D117 pop di F000:D118 pop cx F000:D119 pop bx F000:D11A pop dx F000:D11B retn F000:D11B sub_FD0DB endp F000:D11B F000:D11C F000:D11C ; =============== S U B R O U T I N E ======================================= F000:D11C F000:D11C F000:D11C sub_FD11C proc near ; CODE XREF: F000:AF96p F000:D11C ; DATA XREF: F000:AFC2o F000:D11C pushad F000:D11E mov dx, cx F000:D120 F000:D120 loc_FD120: ; CODE XREF: sub_FD11C+12j F000:D120 ; sub_FD11C+30j ... F000:D120 xor ax, ax F000:D122 int 16h ; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY F000:D122 ; Return: AH = scan code, AL = character F000:D124 cmp al, 0Dh F000:D126 jz short loc_FD190 F000:D128 cmp al, 8 F000:D12A jnz short loc_FD14E F000:D12C cmp dl, cl F000:D12E jz short loc_FD120 F000:D130 mov bl, 8 F000:D132 call sub_FD070 F000:D135 mov bl, 20h ; ' ' F000:D137 call sub_FD070 F000:D13A mov bl, 8 F000:D13C call sub_FD070 F000:D13F inc dl F000:D141 test dh, 1 F000:D144 jz short loc_FD149 F000:D146 call sub_FD1A6 F000:D149 F000:D149 loc_FD149: ; CODE XREF: sub_FD11C+28j F000:D149 call sub_FD1A6 F000:D14C jmp short loc_FD120 F000:D14E ; --------------------------------------------------------------------------- F000:D14E F000:D14E loc_FD14E: ; CODE XREF: sub_FD11C+Ej F000:D14E or dl, dl F000:D150 jz short loc_FD120 F000:D152 mov ah, al F000:D154 test dh, 1 F000:D157 jnz short loc_FD17A F000:D159 or ah, 20h F000:D15C cmp ah, 30h ; '0' F000:D15F jb short loc_FD120 F000:D161 cmp ah, 39h ; '9' F000:D164 jbe short loc_FD177 F000:D166 and al, 0DFh F000:D168 cmp ah, 61h ; 'a' F000:D16B jb short loc_FD120 F000:D16D cmp ah, 66h ; 'f' F000:D170 ja short loc_FD120 F000:D172 mov ah, al F000:D174 sub ah, 7 F000:D177 F000:D177 loc_FD177: ; CODE XREF: sub_FD11C+48j F000:D177 sub ah, 30h ; '0' F000:D17A F000:D17A loc_FD17A: ; CODE XREF: sub_FD11C+3Bj F000:D17A dec dl F000:D17C test dh, 1 F000:D17F jz short loc_FD184 F000:D181 call sub_FD1D1 F000:D184 F000:D184 loc_FD184: ; CODE XREF: sub_FD11C+63j F000:D184 call sub_FD1D1 F000:D187 or [si], ah F000:D189 mov bl, al F000:D18B call sub_FD070 F000:D18E jmp short loc_FD120 F000:D190 ; --------------------------------------------------------------------------- F000:D190 F000:D190 loc_FD190: ; CODE XREF: sub_FD11C+Aj F000:D190 test dh, 1 F000:D193 jz short loc_FD1A3 F000:D195 or dl, dl F000:D197 jz short loc_FD1A3 F000:D199 F000:D199 loc_FD199: ; CODE XREF: sub_FD11C+85j F000:D199 call sub_FD1D1 F000:D19C call sub_FD1D1 F000:D19F dec dl F000:D1A1 jnz short loc_FD199 F000:D1A3 F000:D1A3 loc_FD1A3: ; CODE XREF: sub_FD11C+77j F000:D1A3 ; sub_FD11C+7Bj F000:D1A3 popad F000:D1A5 retn F000:D1A5 sub_FD11C endp F000:D1A5 F000:D1A6 F000:D1A6 ; =============== S U B R O U T I N E ======================================= F000:D1A6 F000:D1A6 F000:D1A6 sub_FD1A6 proc near ; CODE XREF: sub_FD11C+2Ap F000:D1A6 ; sub_FD11C:loc_FD149p F000:D1A6 push cx F000:D1A7 push ax F000:D1A8 push si F000:D1A9 push bx F000:D1AA xor ch, ch F000:D1AC mov al, cl F000:D1AE test dh, 1 F000:D1B1 jnz short loc_FD1B5 F000:D1B3 shr cx, 1 F000:D1B5 F000:D1B5 loc_FD1B5: ; CODE XREF: sub_FD1A6+Bj F000:D1B5 jcxz short loc_FD1C5 F000:D1B7 F000:D1B7 loc_FD1B7: ; CODE XREF: sub_FD1A6+1Cj F000:D1B7 mov bh, [si+1] F000:D1BA mov bl, [si] F000:D1BC shr bx, 4 F000:D1BF mov [si], bl F000:D1C1 inc si F000:D1C2 loop loc_FD1B7 F000:D1C4 dec si F000:D1C5 F000:D1C5 loc_FD1C5: ; CODE XREF: sub_FD1A6:loc_FD1B5j F000:D1C5 test al, 1 F000:D1C7 jz short loc_FD1CC F000:D1C9 mov byte ptr [si], 0 F000:D1CC F000:D1CC loc_FD1CC: ; CODE XREF: sub_FD1A6+21j F000:D1CC pop bx F000:D1CD pop si F000:D1CE pop ax F000:D1CF pop cx F000:D1D0 retn F000:D1D0 sub_FD1A6 endp F000:D1D0 F000:D1D1 F000:D1D1 ; =============== S U B R O U T I N E ======================================= F000:D1D1 F000:D1D1 F000:D1D1 sub_FD1D1 proc near ; CODE XREF: sub_FD11C+65p F000:D1D1 ; sub_FD11C:loc_FD184p ... F000:D1D1 push cx F000:D1D2 push si F000:D1D3 push ax F000:D1D4 xor ch, ch F000:D1D6 test dh, 1 F000:D1D9 jnz short loc_FD1DD F000:D1DB shr cx, 1 F000:D1DD F000:D1DD loc_FD1DD: ; CODE XREF: sub_FD1D1+8j F000:D1DD jcxz short loc_FD1F0 F000:D1DF add si, cx F000:D1E1 dec si F000:D1E2 F000:D1E2 loc_FD1E2: ; CODE XREF: sub_FD1D1+1Cj F000:D1E2 mov bh, [si] F000:D1E4 mov bl, [si-1] F000:D1E7 shl bx, 4 F000:D1EA mov [si], bh F000:D1EC dec si F000:D1ED loop loc_FD1E2 F000:D1EF inc si F000:D1F0 F000:D1F0 loc_FD1F0: ; CODE XREF: sub_FD1D1:loc_FD1DDj F000:D1F0 and byte ptr [si], 0F0h F000:D1F3 pop ax F000:D1F4 pop si F000:D1F5 pop cx F000:D1F6 retn F000:D1F6 sub_FD1D1 endp F000:D1F6 F000:D1F6 ; --------------------------------------------------------------------------- F000:D1F7 db 9 dup(0) F000:D200 dd 0FFFF4E30h F000:D204 db 0Ch dup(0) F000:D210 F000:D210 ; =============== S U B R O U T I N E ======================================= F000:D210 F000:D210 F000:D210 TEST_IO_F808h proc near ; CODE XREF: F000:AF96p F000:D210 ; sub_FAFF4:loc_FB009p ... F000:D210 push ebx F000:D212 push edx F000:D214 push ecx F000:D216 push eax F000:D218 call IO_WR_F808h_0 ; 0 -> IO port F808h F000:D21B mov al, 6 F000:D21D call IO_WR_F808h_4_AX ; write 4x to IO port F808h F000:D220 mov al, bl ; AL = BL = 18h F000:D222 call IO_WR_F808h_6_AX ; write 6x to IO port F808h F000:D225 xor bx, bx ; BX = 0 F000:D227 mov cx, 10h ; count = 16 F000:D22A F000:D22A loc_FD22A: ; CODE XREF: TEST_IO_F808h+25j F000:D22A call IO_WR_F808h_Ch ; Ch -> IO port F808h F000:D22D call IO_RD_F808h_DUMMY ; read from IO port F808h, lower bit is rotated to CARRY flag (SHR 2) F000:D230 rcl bx, 1 ; rotate 1 bit left through CARRY flag F000:D232 call IO_WR_F808h_8h ; 8h -> IO port F808h F000:D235 loop loc_FD22A ; Ch -> IO port F808h F000:D237 call IO_WR_F808h_0 ; 0 -> IO port F808h F000:D23A pop eax F000:D23C mov ax, bx ; return value F000:D23E pop ecx F000:D240 pop edx F000:D242 pop ebx F000:D244 retn F000:D244 TEST_IO_F808h endp F000:D244 F000:D244 ; --------------------------------------------------------------------------- F000:D245 db 0Bh dup(0) F000:D250 F000:D250 ; =============== S U B R O U T I N E ======================================= F000:D250 F000:D250 F000:D250 sub_FD250 proc near ; CODE XREF: F000:AF96p F000:D250 ; sub_FB056+9p ... F000:D250 push dx F000:D251 push bx F000:D252 push cx F000:D253 push es F000:D254 call sub_FDAB8 F000:D257 call IO_WR_F808h_0 F000:D25A mov al, 5 F000:D25C call IO_WR_F808h_4_AX F000:D25F mov al, bl F000:D261 call IO_WR_F808h_6_AX F000:D264 mov ax, dx F000:D266 mov cx, 10h F000:D269 call IO_WR_F808h_CX_AX F000:D26C call sub_FDAD8 F000:D26F pushf F000:D270 call IO_WR_F808h_0 F000:D273 call sub_FDAC8 F000:D276 popf F000:D277 mov ax, 1 F000:D27A jnb short loc_FD27E F000:D27C xor ax, ax F000:D27E F000:D27E loc_FD27E: ; CODE XREF: sub_FD250+2Aj F000:D27E pop es F000:D27F assume es:nothing F000:D27F pop cx F000:D280 pop bx F000:D281 pop dx F000:D282 retn F000:D282 sub_FD250 endp F000:D282 F000:D282 ; --------------------------------------------------------------------------- F000:D283 db 0Dh dup(0) F000:D290 F000:D290 ; =============== S U B R O U T I N E ======================================= F000:D290 F000:D290 F000:D290 sub_FD290 proc near ; CODE XREF: F000:AF96p F000:D290 ; DATA XREF: F000:AFA6o F000:D290 push bx F000:D291 push ax F000:D292 call sub_FD340 F000:D295 add bl, 2 F000:D298 mov cl, 1 F000:D29A call sub_FD34A F000:D29D call sub_FD322 F000:D2A0 mov [si+4], ax F000:D2A3 dec bl F000:D2A5 call sub_FD34A F000:D2A8 call sub_FD322 F000:D2AB mov [si+2], ax F000:D2AE dec bl F000:D2B0 call sub_FD34A F000:D2B3 call sub_FD322 F000:D2B6 mov [si], ax F000:D2B8 pop ax F000:D2B9 pop bx F000:D2BA retn F000:D2BA sub_FD290 endp F000:D2BA F000:D2BB F000:D2BB ; =============== S U B R O U T I N E ======================================= F000:D2BB F000:D2BB F000:D2BB sub_FD2BB proc near ; CODE XREF: F000:AF96p F000:D2BB ; DATA XREF: F000:AFA8o F000:D2BB push bx F000:D2BC push ax F000:D2BD push dx F000:D2BE push cx F000:D2BF call sub_FD340 F000:D2C2 call nullsub_1 F000:D2C5 add bl, 2 F000:D2C8 mov ax, [si+4] F000:D2CB call sub_FD334 F000:D2CE mov dx, ax F000:D2D0 mov cl, 1 F000:D2D2 call sub_FD36F F000:D2D5 dec bl F000:D2D7 mov ax, [si+2] F000:D2DA call sub_FD334 F000:D2DD mov dx, ax F000:D2DF call sub_FD36F F000:D2E2 dec bl F000:D2E4 mov ax, [si] F000:D2E6 call sub_FD334 F000:D2E9 mov dx, ax F000:D2EB call sub_FD36F F000:D2EE pop cx F000:D2EF pop dx F000:D2F0 pop ax F000:D2F1 pop bx F000:D2F2 retn F000:D2F2 sub_FD2BB endp F000:D2F2 F000:D2F3 F000:D2F3 ; =============== S U B R O U T I N E ======================================= F000:D2F3 F000:D2F3 F000:D2F3 sub_FD2F3 proc near ; CODE XREF: F000:AF96p F000:D2F3 ; DATA XREF: F000:AFB8o F000:D2F3 push bx F000:D2F4 push ax F000:D2F5 push dx F000:D2F6 mov bl, 6 F000:D2F8 mov ax, [si+4] F000:D2FB call sub_FD334 F000:D2FE mov dx, ax F000:D300 mov cl, 1 F000:D302 call sub_FD36F F000:D305 dec bl F000:D307 mov ax, [si+2] F000:D30A call sub_FD334 F000:D30D mov dx, ax F000:D30F call sub_FD36F F000:D312 dec bl F000:D314 mov ax, [si] F000:D316 call sub_FD334 F000:D319 mov dx, ax F000:D31B call sub_FD36F F000:D31E pop dx F000:D31F pop ax F000:D320 pop bx F000:D321 retn F000:D321 sub_FD2F3 endp F000:D321 F000:D322 F000:D322 ; =============== S U B R O U T I N E ======================================= F000:D322 F000:D322 F000:D322 sub_FD322 proc near ; CODE XREF: sub_FD290+Dp F000:D322 ; sub_FD290+18p ... F000:D322 push cx F000:D323 push bx F000:D324 xchg al, ah F000:D326 mov cx, 10h F000:D329 mov bx, ax F000:D32B F000:D32B loc_FD32B: ; CODE XREF: sub_FD322+Dj F000:D32B ror bx, 1 F000:D32D rcl ax, 1 F000:D32F loop loc_FD32B F000:D331 pop bx F000:D332 pop cx F000:D333 retn F000:D333 sub_FD322 endp F000:D333 F000:D334 F000:D334 ; =============== S U B R O U T I N E ======================================= F000:D334 F000:D334 F000:D334 sub_FD334 proc near ; CODE XREF: sub_FD2BB+10p F000:D334 ; sub_FD2BB+1Fp ... F000:D334 jmp short sub_FD322 F000:D334 sub_FD334 endp F000:D334 F000:D334 ; --------------------------------------------------------------------------- F000:D336 db 0Ah dup(0) F000:D340 F000:D340 ; =============== S U B R O U T I N E ======================================= F000:D340 F000:D340 F000:D340 sub_FD340 proc near ; CODE XREF: F000:AF96p F000:D340 ; sub_FD290+2p ... F000:D340 push ax F000:D341 mov al, 0Eh F000:D343 mov bl, al F000:D345 shr bl, 1 F000:D347 pop ax F000:D348 retn F000:D348 sub_FD340 endp F000:D348 F000:D349 F000:D349 ; =============== S U B R O U T I N E ======================================= F000:D349 F000:D349 F000:D349 nullsub_1 proc near ; CODE XREF: F000:AF96p F000:D349 ; sub_FD2BB+7p F000:D349 ; DATA XREF: ... F000:D349 retn F000:D349 nullsub_1 endp F000:D349 F000:D34A F000:D34A ; =============== S U B R O U T I N E ======================================= F000:D34A F000:D34A F000:D34A sub_FD34A proc near ; CODE XREF: sub_FD290+Ap F000:D34A ; sub_FD290+15p ... F000:D34A push bx F000:D34B push cx F000:D34C push eax F000:D34E call TEST_IO_F808h F000:D351 shl eax, 10h F000:D355 sub bl, 1 F000:D358 mov ax, 0 F000:D35B jb short loc_FD360 F000:D35D call TEST_IO_F808h F000:D360 F000:D360 loc_FD360: ; CODE XREF: sub_FD34A+11j F000:D360 add cl, 10h F000:D363 ror eax, cl F000:D366 mov bx, ax F000:D368 pop eax F000:D36A mov ax, bx F000:D36C pop cx F000:D36D pop bx F000:D36E retn F000:D36E sub_FD34A endp F000:D36E F000:D36F F000:D36F ; =============== S U B R O U T I N E ======================================= F000:D36F F000:D36F F000:D36F sub_FD36F proc near ; CODE XREF: sub_FD2BB+17p F000:D36F ; sub_FD2BB+24p ... F000:D36F push bx F000:D370 push cx F000:D371 push dx F000:D372 push eax F000:D374 push dx F000:D375 call TEST_IO_F808h F000:D378 ror eax, cl F000:D37B mov ax, dx F000:D37D rol eax, cl F000:D380 mov dx, ax F000:D382 call sub_FD250 F000:D385 pop dx F000:D386 sub bl, 1 F000:D389 cmc F000:D38A jnb short loc_FD39F F000:D38C call TEST_IO_F808h F000:D38F add cl, 10h F000:D392 ror eax, cl F000:D395 mov ax, dx F000:D397 rol eax, cl F000:D39A mov dx, ax F000:D39C call sub_FD250 F000:D39F F000:D39F loc_FD39F: ; CODE XREF: sub_FD36F+1Bj F000:D39F pop eax F000:D3A1 pop dx F000:D3A2 pop cx F000:D3A3 pop bx F000:D3A4 retn F000:D3A4 sub_FD36F endp F000:D3A4 F000:D3A5 F000:D3A5 ; =============== S U B R O U T I N E ======================================= F000:D3A5 F000:D3A5 F000:D3A5 sub_FD3A5 proc near ; CODE XREF: sub_FB0B5p F000:D3A5 pushad F000:D3A7 mov bl, 0Bh F000:D3A9 mov dx, 55h ; 'U' F000:D3AC call sub_FD250 F000:D3AF call sub_FD3C2 F000:D3B2 mov bl, 0Bh F000:D3B4 call TEST_IO_F808h F000:D3B7 sub ah, dl F000:D3B9 mov dx, ax F000:D3BB call sub_FD250 F000:D3BE popad F000:D3C0 clc F000:D3C1 retn F000:D3C1 sub_FD3A5 endp F000:D3C1 F000:D3C2 F000:D3C2 ; =============== S U B R O U T I N E ======================================= F000:D3C2 F000:D3C2 F000:D3C2 sub_FD3C2 proc near ; CODE XREF: sub_FB0D1p F000:D3C2 ; sub_FD3A5+Ap F000:D3C2 or edx, 55AB0000h F000:D3C9 xor bl, bl F000:D3CB xor dx, dx F000:D3CD mov cx, 0Ch F000:D3D0 F000:D3D0 loc_FD3D0: ; CODE XREF: sub_FD3C2+17j F000:D3D0 call TEST_IO_F808h F000:D3D3 add dl, al F000:D3D5 add dl, ah F000:D3D7 inc bl F000:D3D9 loop loc_FD3D0 F000:D3DB or dl, dl F000:D3DD clc F000:D3DE jz short loc_FD3E1 F000:D3E0 stc F000:D3E1 F000:D3E1 loc_FD3E1: ; CODE XREF: sub_FD3C2+1Cj F000:D3E1 and edx, 0FFFFh F000:D3E8 retn F000:D3E8 sub_FD3C2 endp F000:D3E8 F000:D3E8 ; --------------------------------------------------------------------------- F000:D3E9 db 7 dup(0) F000:D3F0 F000:D3F0 ; =============== S U B R O U T I N E ======================================= F000:D3F0 F000:D3F0 F000:D3F0 sub_FD3F0 proc near ; CODE XREF: sub_FCE66-15p F000:D3F0 ; sub_FCE56+8p F000:D3F0 cmp cl, 0 F000:D3F3 jz short loc_FD406 F000:D3F5 cmp cl, 1 F000:D3F8 jz short loc_FD415 F000:D3FA cmp cl, 2 F000:D3FD jz short loc_FD401 F000:D3FF stc F000:D400 retn F000:D401 ; --------------------------------------------------------------------------- F000:D401 F000:D401 loc_FD401: ; CODE XREF: sub_FD3F0+Dj F000:D401 call sub_FDAF0 F000:D404 clc F000:D405 retn F000:D406 ; --------------------------------------------------------------------------- F000:D406 F000:D406 loc_FD406: ; CODE XREF: sub_FD3F0+3j F000:D406 mov bl, dl F000:D408 test bl, 80h F000:D40B jz short loc_FD411 F000:D40D call sub_FD4AF F000:D410 retn F000:D411 ; --------------------------------------------------------------------------- F000:D411 F000:D411 loc_FD411: ; CODE XREF: sub_FD3F0+1Bj F000:D411 call sub_FD460 F000:D414 retn F000:D415 ; --------------------------------------------------------------------------- F000:D415 F000:D415 loc_FD415: ; CODE XREF: sub_FD3F0+8j F000:D415 mov bl, 0 F000:D417 test dl, 80h F000:D41A jnz short loc_FD431 F000:D41C call sub_FDB22 F000:D41F jz short loc_FD424 F000:D421 or bl, 1 F000:D424 F000:D424 loc_FD424: ; CODE XREF: sub_FD3F0+2Fj F000:D424 call sub_FDB28 F000:D427 jz short loc_FD42C F000:D429 or bl, 2 F000:D42C F000:D42C loc_FD42C: ; CODE XREF: sub_FD3F0+37j F000:D42C call sub_FDB1D F000:D42F jmp short loc_FD456 F000:D431 ; --------------------------------------------------------------------------- F000:D431 F000:D431 loc_FD431: ; CODE XREF: sub_FD3F0+2Aj F000:D431 call sub_FD499 F000:D434 jz short loc_FD443 F000:D436 mov dx, 3D4h F000:D439 mov al, 32h ; '2' F000:D43B out dx, al ; Video: CRT cntrlr addr F000:D43B ; F000:D43C inc dl F000:D43E in al, dx ; Video: CRT controller internal registers F000:D43F mov bl, al F000:D441 jmp short loc_FD45B F000:D443 ; --------------------------------------------------------------------------- F000:D443 F000:D443 loc_FD443: ; CODE XREF: sub_FD3F0+44j F000:D443 call sub_FDBBE F000:D446 jz short loc_FD44B F000:D448 or bl, 1 F000:D44B F000:D44B loc_FD44B: ; CODE XREF: sub_FD3F0+56j F000:D44B call sub_FDBC2 F000:D44E jz short loc_FD453 F000:D450 or bl, 2 F000:D453 F000:D453 loc_FD453: ; CODE XREF: sub_FD3F0+5Ej F000:D453 call sub_FDBCF F000:D456 F000:D456 loc_FD456: ; CODE XREF: sub_FD3F0+3Fj F000:D456 jz short loc_FD45B F000:D458 or bl, 4 F000:D45B F000:D45B loc_FD45B: ; CODE XREF: sub_FD3F0+51j F000:D45B ; sub_FD3F0:loc_FD456j F000:D45B mov [bp+12h], bl F000:D45E clc F000:D45F retn F000:D45F sub_FD3F0 endp F000:D45F F000:D460 F000:D460 ; =============== S U B R O U T I N E ======================================= F000:D460 F000:D460 F000:D460 sub_FD460 proc near ; CODE XREF: sub_FD3F0:loc_FD411p F000:D460 test bl, 10h F000:D463 jz short loc_FD472 F000:D465 test bl, 1 F000:D468 jz short loc_FD46F F000:D46A call sub_FDB6B F000:D46D jmp short loc_FD472 F000:D46F ; --------------------------------------------------------------------------- F000:D46F F000:D46F loc_FD46F: ; CODE XREF: sub_FD460+8j F000:D46F call sub_FDB59 F000:D472 F000:D472 loc_FD472: ; CODE XREF: sub_FD460+3j F000:D472 ; sub_FD460+Dj F000:D472 test bl, 20h F000:D475 jz short loc_FD487 F000:D477 call sub_FDB35 F000:D47A test bl, 2 F000:D47D jz short loc_FD484 F000:D47F call sub_FDB7F F000:D482 jmp short loc_FD487 F000:D484 ; --------------------------------------------------------------------------- F000:D484 F000:D484 loc_FD484: ; CODE XREF: sub_FD460+1Dj F000:D484 call sub_FDB79 F000:D487 F000:D487 loc_FD487: ; CODE XREF: sub_FD460+15j F000:D487 ; sub_FD460+22j F000:D487 test bl, 40h F000:D48A jz short locret_FD494 F000:D48C test bl, 4 F000:D48F jz short loc_FD495 F000:D491 call sub_FDB35 F000:D494 F000:D494 locret_FD494: ; CODE XREF: sub_FD460+2Aj F000:D494 retn F000:D495 ; --------------------------------------------------------------------------- F000:D495 F000:D495 loc_FD495: ; CODE XREF: sub_FD460+2Fj F000:D495 call sub_FDB55 F000:D498 retn F000:D498 sub_FD460 endp F000:D498 F000:D499 F000:D499 ; =============== S U B R O U T I N E ======================================= F000:D499 F000:D499 F000:D499 sub_FD499 proc near ; CODE XREF: sub_FD3F0:loc_FD431p F000:D499 ; sub_FD4AFp F000:D499 mov dx, 0CF8h F000:D49C push eax F000:D49E mov eax, 80009000h F000:D4A4 out dx, eax F000:D4A6 pop eax F000:D4A8 add dl, 6 F000:D4AB in ax, dx F000:D4AC or ax, ax F000:D4AE retn F000:D4AE sub_FD499 endp F000:D4AE F000:D4AF F000:D4AF ; =============== S U B R O U T I N E ======================================= F000:D4AF F000:D4AF F000:D4AF sub_FD4AF proc near ; CODE XREF: sub_FD3F0+1Dp F000:D4AF call sub_FD499 F000:D4B2 jz short loc_FD4BD F000:D4B4 mov dx, 3D4h F000:D4B7 mov al, 32h ; '2' F000:D4B9 mov ah, bl F000:D4BB out dx, ax ; Video: CRT cntrlr addr F000:D4BB ; horizontal total F000:D4BC retn F000:D4BD ; --------------------------------------------------------------------------- F000:D4BD F000:D4BD loc_FD4BD: ; CODE XREF: sub_FD4AF+3j F000:D4BD test bl, 10h F000:D4C0 jz short loc_FD4D2 F000:D4C2 call sub_FDB85 F000:D4C5 test bl, 1 F000:D4C8 jz short loc_FD4CF F000:D4CA call sub_FDBAE F000:D4CD jmp short loc_FD4D2 F000:D4CF ; --------------------------------------------------------------------------- F000:D4CF F000:D4CF loc_FD4CF: ; CODE XREF: sub_FD4AF+19j F000:D4CF call sub_FDBA6 F000:D4D2 F000:D4D2 loc_FD4D2: ; CODE XREF: sub_FD4AF+11j F000:D4D2 ; sub_FD4AF+1Ej F000:D4D2 test bl, 20h F000:D4D5 jz short loc_FD4E4 F000:D4D7 test bl, 2 F000:D4DA jz short loc_FD4E1 F000:D4DC call sub_FDBBA F000:D4DF jmp short loc_FD4E4 F000:D4E1 ; --------------------------------------------------------------------------- F000:D4E1 F000:D4E1 loc_FD4E1: ; CODE XREF: sub_FD4AF+2Bj F000:D4E1 call sub_FDBB2 F000:D4E4 F000:D4E4 loc_FD4E4: ; CODE XREF: sub_FD4AF+26j F000:D4E4 ; sub_FD4AF+30j F000:D4E4 test bl, 40h F000:D4E7 jz short locret_FD4F1 F000:D4E9 test bl, 4 F000:D4EC jz short loc_FD4F2 F000:D4EE call sub_FDB8B F000:D4F1 F000:D4F1 locret_FD4F1: ; CODE XREF: sub_FD4AF+38j F000:D4F1 retn F000:D4F2 ; --------------------------------------------------------------------------- F000:D4F2 F000:D4F2 loc_FD4F2: ; CODE XREF: sub_FD4AF+3Dj F000:D4F2 call sub_FDBA2 F000:D4F5 retn F000:D4F5 sub_FD4AF endp F000:D4F5 F000:D4F5 ; --------------------------------------------------------------------------- F000:D4F6 db 0Ah dup(0) F000:D500 F000:D500 ; =============== S U B R O U T I N E ======================================= F000:D500 F000:D500 F000:D500 sub_FD500 proc near F000:D500 push ax F000:D501 cli F000:D502 pushf F000:D503 mov al, 0C3h ; '+' F000:D505 out 22h, al F000:D507 in al, 23h F000:D509 mov ah, al F000:D50B mov al, 0C3h ; '+' F000:D50D out 22h, al F000:D50F push ax F000:D510 mov al, ah F000:D512 or al, 10h F000:D514 and al, 0FEh F000:D516 out 23h, al F000:D518 mov al, 0C1h ; '+' F000:D51A out 22h, al F000:D51C in al, 23h F000:D51E mov ah, al F000:D520 mov al, 0C1h ; '+' F000:D522 out 22h, al F000:D524 mov al, ah F000:D526 and al, 0FDh F000:D528 out 23h, al F000:D52A mov al, 0C3h ; '+' F000:D52C out 22h, al F000:D52E in al, 23h F000:D530 mov ah, al F000:D532 mov al, 0C3h ; '+' F000:D534 out 22h, al F000:D536 pop ax F000:D537 mov al, ah F000:D539 out 23h, al F000:D53B popf F000:D53C pop ax F000:D53D retn F000:D53D sub_FD500 endp F000:D53D F000:D53E F000:D53E ; =============== S U B R O U T I N E ======================================= F000:D53E F000:D53E F000:D53E sub_FD53E proc near F000:D53E push ax F000:D53F pushf F000:D540 mov al, 0C3h ; '+' F000:D542 out 22h, al F000:D544 in al, 23h F000:D546 mov ah, al F000:D548 mov al, 0C3h ; '+' F000:D54A out 22h, al F000:D54C push ax F000:D54D mov al, ah F000:D54F or al, 10h F000:D551 and al, 0FEh F000:D553 out 23h, al F000:D555 mov al, 0C1h ; '+' F000:D557 out 22h, al F000:D559 in al, 23h F000:D55B mov ah, al F000:D55D mov al, 0C1h ; '+' F000:D55F out 22h, al F000:D561 mov al, ah F000:D563 or al, 2 F000:D565 out 23h, al F000:D567 mov al, 0C3h ; '+' F000:D569 out 22h, al F000:D56B in al, 23h F000:D56D mov ah, al F000:D56F mov al, 0C3h ; '+' F000:D571 out 22h, al F000:D573 pop ax F000:D574 mov al, ah F000:D576 out 23h, al F000:D578 popf F000:D579 pop ax F000:D57A retn F000:D57A sub_FD53E endp F000:D57A F000:D57A ; --------------------------------------------------------------------------- F000:D57B db 0 F000:D57C db 0 F000:D57D db 0 F000:D57E db 0 F000:D57F db 0 F000:D580 db 0 F000:D581 db 0 F000:D582 db 0 F000:D583 db 0 F000:D584 db 0 F000:D585 db 0 F000:D586 db 0 F000:D587 db 0 F000:D588 db 0 F000:D589 db 0 F000:D58A db 20h F000:D58B db 0 F000:D58C db 0 F000:D58D db 0 F000:D58E db 2 F000:D58F db 0 F000:D590 db 0 F000:D591 db 0 F000:D592 db 40h ; @ F000:D593 db 0 F000:D594 db 0 F000:D595 db 0 F000:D596 db 4 F000:D597 db 0 F000:D598 db 0 F000:D599 db 0FFh F000:D59A db 0FFh F000:D59B db 0FFh F000:D59C db 0FFh F000:D59D db 0F0h ; ­ F000:D59E db 0DBh ; - F000:D59F db 0B0h ; - F000:D5A0 db 0DCh ; - F000:D5A1 db 0A0h ; á F000:D5A2 db 0DDh ; Þ F000:D5A3 db 40h ; @ F000:D5A4 db 0DCh ; - F000:D5A5 db 0 F000:D5A6 db 0 F000:D5A7 db 0 F000:D5A8 db 0 F000:D5A9 db 0 F000:D5AA db 0 F000:D5AB db 0 F000:D5AC db 0 F000:D5AD db 0 F000:D5AE db 0 F000:D5AF db 30h ; 0 F000:D5B0 db 0DDh ; Þ F000:D5B1 db 1 F000:D5B2 db 0FFh F000:D5B3 db 0FFh F000:D5B4 db 0FFh F000:D5B5 db 0FFh F000:D5B6 db 10h F000:D5B7 db 0 F000:D5B8 db 0 F000:D5B9 db 0 F000:D5BA db 0 F000:D5BB db 0 F000:D5BC db 24h ; $ F000:D5BD db 0 F000:D5BE db 0 F000:D5BF db 0 F000:D5C0 db 0 F000:D5C1 db 50h ; P F000:D5C2 db 0 F000:D5C3 db 0 F000:D5C4 db 0 F000:D5C5 db 1 F000:D5C6 db 0 F000:D5C7 db 1 F000:D5C8 db 0 F000:D5C9 db 70h ; p F000:D5CA db 0CFh ; ¤ F000:D5CB db 52h ; R F000:D5CC db 0CFh ; ¤ F000:D5CD db 98h ; œ F000:D5CE db 0E6h ; Š F000:D5CF db 0 F000:D5D0 a5864_0 db '5864',0 F000:D5D5 db 0 F000:D5D6 db 0 F000:D5D7 db 0 F000:D5D8 db 0 F000:D5D9 db 0 F000:D5DA db 0 F000:D5DB db 0 F000:D5DC db 0 F000:D5DD db 0 F000:D5DE db 0 F000:D5DF db 0 F000:D5E0 db 0 F000:D5E1 db 0 F000:D5E2 db 0 F000:D5E3 db 0 F000:D5E4 db 0 F000:D5E5 db 0 F000:D5E6 db 0 F000:D5E7 db 0 F000:D5E8 db 0 F000:D5E9 db 0 F000:D5EA db 40h ; @ F000:D5EB db 0 F000:D5EC db 0 F000:D5ED db 0 F000:D5EE db 2 F000:D5EF db 0 F000:D5F0 db 0 F000:D5F1 db 0 F000:D5F2 db 80h ; Ç F000:D5F3 db 0 F000:D5F4 db 0 F000:D5F5 db 0 F000:D5F6 db 4 F000:D5F7 db 0 F000:D5F8 db 0 F000:D5F9 db 0FFh F000:D5FA db 0FFh F000:D5FB db 0FFh F000:D5FC db 0FFh F000:D5FD db 0F0h ; ­ F000:D5FE db 0DBh ; - F000:D5FF db 0B0h ; - F000:D600 db 0DCh ; - F000:D601 db 0A0h ; á F000:D602 db 0DDh ; Þ F000:D603 db 40h ; @ F000:D604 db 0DCh ; - F000:D605 db 0 F000:D606 db 0 F000:D607 db 0 F000:D608 db 0 F000:D609 db 0 F000:D60A db 0 F000:D60B db 0 F000:D60C db 0 F000:D60D db 0 F000:D60E db 0 F000:D60F db 30h ; 0 F000:D610 db 0DDh ; Þ F000:D611 db 1 F000:D612 db 0FFh F000:D613 db 0FFh F000:D614 db 0FFh F000:D615 db 0FFh F000:D616 db 20h F000:D617 db 0 F000:D618 db 0 F000:D619 db 0 F000:D61A db 0 F000:D61B db 0 F000:D61C db 24h ; $ F000:D61D db 0 F000:D61E db 0 F000:D61F db 0 F000:D620 db 0 F000:D621 db 50h ; P F000:D622 db 0 F000:D623 db 0 F000:D624 db 0 F000:D625 db 1 F000:D626 db 0 F000:D627 db 1 F000:D628 db 0 F000:D629 db 70h ; p F000:D62A db 0CFh ; ¤ F000:D62B db 54h ; T F000:D62C db 0CFh ; ¤ F000:D62D db 98h ; œ F000:D62E db 73h ; s F000:D62F db 0 F000:D630 a58128 db '58128',0 F000:D636 db 0 F000:D637 db 0 F000:D638 db 0 F000:D639 db 0 F000:D63A db 0 F000:D63B db 0 F000:D63C db 0 F000:D63D db 0 F000:D63E db 0 F000:D63F db 0 F000:D640 db 0 F000:D641 db 0 F000:D642 db 0 F000:D643 db 0 F000:D644 db 0 F000:D645 db 0 F000:D646 db 0 F000:D647 db 0 F000:D648 db 0 F000:D649 db 0 F000:D64A db 40h ; @ F000:D64B db 0 F000:D64C db 0 F000:D64D db 0 F000:D64E db 2 F000:D64F db 0 F000:D650 db 0 F000:D651 db 0E0h ; Ó F000:D652 db 0FFh F000:D653 db 0 F000:D654 db 0 F000:D655 db 0FFh F000:D656 db 7 F000:D657 db 0 F000:D658 db 0 F000:D659 db 0FFh F000:D65A db 0FFh F000:D65B db 0FFh F000:D65C db 0FFh F000:D65D db 0F0h ; ­ F000:D65E db 0DBh ; - F000:D65F db 0B0h ; - F000:D660 db 0DCh ; - F000:D661 db 0A0h ; á F000:D662 db 0DDh ; Þ F000:D663 db 40h ; @ F000:D664 db 0DCh ; - F000:D665 db 0 F000:D666 db 0 F000:D667 db 0 F000:D668 db 0 F000:D669 db 0 F000:D66A db 0 F000:D66B db 0 F000:D66C db 0 F000:D66D db 0 F000:D66E db 0 F000:D66F db 30h ; 0 F000:D670 db 0DDh ; Þ F000:D671 db 1 F000:D672 db 0FFh F000:D673 db 0FFh F000:D674 db 0FFh F000:D675 db 0FFh F000:D676 db 20h F000:D677 db 0 F000:D678 db 0 F000:D679 db 0 F000:D67A db 0 F000:D67B db 0 F000:D67C db 24h ; $ F000:D67D db 0 F000:D67E db 0 F000:D67F db 0 F000:D680 db 0 F000:D681 db 50h ; P F000:D682 db 0 F000:D683 db 0 F000:D684 db 0 F000:D685 db 1 F000:D686 db 0 F000:D687 db 1 F000:D688 db 0 F000:D689 db 70h ; p F000:D68A db 0CFh ; ¤ F000:D68B db 56h ; V F000:D68C db 0CFh ; ¤ F000:D68D db 8 F000:D68E db 75h ; u F000:D68F db 0 F000:D690 a58256 db '58256',0 F000:D696 db 0 F000:D697 db 0 F000:D698 db 0 F000:D699 db 0 F000:D69A db 0 F000:D69B db 0 F000:D69C db 0 F000:D69D db 0 F000:D69E db 0 F000:D69F db 0 F000:D6A0 db 0 F000:D6A1 db 0 F000:D6A2 db 0 F000:D6A3 db 0 F000:D6A4 db 0 F000:D6A5 db 0 F000:D6A6 db 0 F000:D6A7 db 0 F000:D6A8 db 0 F000:D6A9 db 0 F000:D6AA db 20h F000:D6AB db 0 F000:D6AC db 0 F000:D6AD db 0 F000:D6AE db 2 F000:D6AF db 0 F000:D6B0 db 0 F000:D6B1 db 0 F000:D6B2 db 40h ; @ F000:D6B3 db 0 F000:D6B4 db 0 F000:D6B5 db 0 F000:D6B6 db 4 F000:D6B7 db 0 F000:D6B8 db 0 F000:D6B9 db 0FFh F000:D6BA db 0FFh F000:D6BB db 0FFh F000:D6BC db 0FFh F000:D6BD db 0F0h ; ­ F000:D6BE db 0DBh ; - F000:D6BF db 0B0h ; - F000:D6C0 db 0DCh ; - F000:D6C1 db 0A0h ; á F000:D6C2 db 0DDh ; Þ F000:D6C3 db 40h ; @ F000:D6C4 db 0DCh ; - F000:D6C5 db 0 F000:D6C6 db 0 F000:D6C7 db 0 F000:D6C8 db 0 F000:D6C9 db 0 F000:D6CA db 0 F000:D6CB db 0 F000:D6CC db 0 F000:D6CD db 0 F000:D6CE db 0 F000:D6CF db 30h ; 0 F000:D6D0 db 0DDh ; Þ F000:D6D1 db 1 F000:D6D2 db 0FFh F000:D6D3 db 0FFh F000:D6D4 db 0FFh F000:D6D5 db 0FFh F000:D6D6 db 10h F000:D6D7 db 0 F000:D6D8 db 0 F000:D6D9 db 0 F000:D6DA db 0 F000:D6DB db 0 F000:D6DC db 24h ; $ F000:D6DD db 0 F000:D6DE db 0 F000:D6DF db 0 F000:D6E0 db 0 F000:D6E1 db 50h ; P F000:D6E2 db 0 F000:D6E3 db 0 F000:D6E4 db 0 F000:D6E5 db 1 F000:D6E6 db 0 F000:D6E7 db 1 F000:D6E8 db 0 F000:D6E9 db 70h ; p F000:D6EA db 0CFh ; ¤ F000:D6EB db 58h ; X F000:D6EC db 0CFh ; ¤ F000:D6ED db 1 F000:D6EE db 0E6h ; Š F000:D6EF db 0 F000:D6F0 a5864 db '5864',0 F000:D6F5 db 0Bh dup(0) F000:D700 F000:D700 ; =============== S U B R O U T I N E ======================================= F000:D700 F000:D700 F000:D700 sub_FD700 proc near ; CODE XREF: sub_FCF70:loc_FCFB2p F000:D700 ; sub_FCF70:loc_FCFBEp ... F000:D700 push dx F000:D701 push ax F000:D702 mov dx, 1F3h F000:D705 out dx, al ; AT hard disk controller: F000:D705 ; Sector number. F000:D705 ; Read/Write current/starting logical sector number F000:D706 pop ax F000:D707 pop dx F000:D708 retn F000:D708 sub_FD700 endp F000:D708 F000:D709 F000:D709 ; =============== S U B R O U T I N E ======================================= F000:D709 F000:D709 F000:D709 sub_FD709 proc near ; CODE XREF: sub_FCF70+1Ep F000:D709 ; sub_FCF70+2Bp ... F000:D709 push dx F000:D70A mov dx, 1F0h F000:D70D add dl, al F000:D70F mov al, ah F000:D711 out dx, al F000:D712 pop dx F000:D713 retn F000:D713 sub_FD709 endp F000:D713 F000:D714 F000:D714 ; =============== S U B R O U T I N E ======================================= F000:D714 F000:D714 F000:D714 sub_FD714 proc near ; CODE XREF: sub_FDBF0+2Ep F000:D714 ; sub_FDC40+1Dp ... F000:D714 mov dx, 1F1h F000:D717 xor ax, ax F000:D719 out dx, al ; AT hard disk controller F000:D719 ; Write Precompensation register. F000:D719 ; Turn on write precompensation. F000:D71A mov al, bl F000:D71C out dx, al ; AT hard disk controller F000:D71C ; Write Precompensation register. F000:D71C ; Turn on write precompensation. F000:D71D mov al, bh F000:D71F out dx, al ; AT hard disk controller F000:D71F ; Write Precompensation register. F000:D71F ; Turn on write precompensation. F000:D720 mov dx, 1F2h F000:D723 out dx, al ; AT hard disk controller: F000:D723 ; Sector count. F000:D723 ; Read/Write count of sectors for operation F000:D724 retn F000:D724 sub_FD714 endp F000:D724 F000:D724 ; --------------------------------------------------------------------------- F000:D725 db 0 F000:D726 db 0 F000:D727 db 0 F000:D728 db 0 F000:D729 db 0 F000:D72A db 0 F000:D72B db 0 F000:D72C db 0 F000:D72D db 0 F000:D72E db 0 F000:D72F db 0 F000:D730 db 36h ; 6 F000:D731 db 0D7h ; Î F000:D732 db 39h ; 9 F000:D733 db 0D7h ; Î F000:D734 db 3Ch ; < F000:D735 db 0D7h ; Î F000:D736 db 0B0h ; - F000:D737 db 4 F000:D738 db 0C3h ; + F000:D739 db 0B0h ; - F000:D73A db 5 F000:D73B db 0C3h ; + F000:D73C db 0B0h ; - F000:D73D db 6 F000:D73E db 0C3h ; + F000:D73F db 0 F000:D740 F000:D740 ; =============== S U B R O U T I N E ======================================= F000:D740 F000:D740 F000:D740 sub_FD740 proc near F000:D740 push ax F000:D741 in al, 0E4h F000:D743 or al, 20h F000:D745 out 0E4h, al F000:D747 pop ax F000:D748 retn F000:D748 sub_FD740 endp F000:D748 F000:D749 F000:D749 ; =============== S U B R O U T I N E ======================================= F000:D749 F000:D749 F000:D749 sub_FD749 proc near F000:D749 push ax F000:D74A pushf F000:D74B in al, 0E4h F000:D74D and al, 0DFh F000:D74F out 0E4h, al F000:D751 popf F000:D752 pop ax F000:D753 retn F000:D753 sub_FD749 endp F000:D753 F000:D754 F000:D754 ; =============== S U B R O U T I N E ======================================= F000:D754 F000:D754 F000:D754 sub_FD754 proc near F000:D754 push ax F000:D755 in al, 0E4h F000:D757 or al, 10h F000:D759 out 0E4h, al F000:D75B pop ax F000:D75C retn F000:D75C sub_FD754 endp F000:D75C F000:D75D F000:D75D ; =============== S U B R O U T I N E ======================================= F000:D75D F000:D75D F000:D75D sub_FD75D proc near F000:D75D push ax F000:D75E in al, 0E4h F000:D760 and al, 0EFh F000:D762 out 0E4h, al F000:D764 pop ax F000:D765 retn F000:D765 sub_FD75D endp F000:D765 F000:D765 ; --------------------------------------------------------------------------- F000:D766 db 0Ah dup(0) F000:D770 F000:D770 ; =============== S U B R O U T I N E ======================================= F000:D770 F000:D770 F000:D770 sub_FD770 proc near F000:D770 push ax F000:D771 in al, 0E0h F000:D773 or al, 20h F000:D775 out 0E0h, al F000:D777 pop ax F000:D778 retn F000:D778 sub_FD770 endp F000:D778 F000:D779 F000:D779 ; =============== S U B R O U T I N E ======================================= F000:D779 F000:D779 F000:D779 sub_FD779 proc near F000:D779 push ax F000:D77A pushf F000:D77B in al, 0E0h F000:D77D and al, 0DFh F000:D77F out 0E0h, al F000:D781 popf F000:D782 pop ax F000:D783 retn F000:D783 sub_FD779 endp F000:D783 F000:D784 F000:D784 ; =============== S U B R O U T I N E ======================================= F000:D784 F000:D784 F000:D784 sub_FD784 proc near F000:D784 push ax F000:D785 in al, 0E0h F000:D787 or al, 10h F000:D789 out 0E0h, al F000:D78B pop ax F000:D78C retn F000:D78C sub_FD784 endp F000:D78C F000:D78D F000:D78D ; =============== S U B R O U T I N E ======================================= F000:D78D F000:D78D F000:D78D sub_FD78D proc near F000:D78D push ax F000:D78E in al, 0E0h F000:D790 and al, 0EFh F000:D792 out 0E0h, al F000:D794 pop ax F000:D795 retn F000:D795 sub_FD78D endp F000:D795 F000:D795 ; --------------------------------------------------------------------------- F000:D796 db 0Ah dup(0) F000:D7A0 F000:D7A0 ; =============== S U B R O U T I N E ======================================= F000:D7A0 F000:D7A0 F000:D7A0 sub_FD7A0 proc near ; CODE XREF: sub_FCF70+21p F000:D7A0 ; sub_FDBF0+Fp ... F000:D7A0 push ecx F000:D7A2 push bx F000:D7A3 push eax F000:D7A5 mov cx, 0 F000:D7A8 F000:D7A8 loc_FD7A8: ; CODE XREF: sub_FD7A0+11j F000:D7A8 mov bx, 9090h F000:D7AB call PCI_READ_BX_DX F000:D7AE test ah, 8 F000:D7B1 loope loc_FD7A8 F000:D7B3 stc F000:D7B4 pop eax F000:D7B6 pop bx F000:D7B7 pop ecx F000:D7B9 retn F000:D7B9 sub_FD7A0 endp F000:D7B9 F000:D7B9 ; --------------------------------------------------------------------------- F000:D7BA db 0 F000:D7BB db 0 F000:D7BC db 0 F000:D7BD db 0 F000:D7BE db 0 F000:D7BF db 0 F000:D7C0 db 0 F000:D7C1 db 0 F000:D7C2 db 0 F000:D7C3 db 0 F000:D7C4 db 0 F000:D7C5 db 0 F000:D7C6 db 0 F000:D7C7 db 0 F000:D7C8 db 0 F000:D7C9 db 0 F000:D7CA db 1 F000:D7CB db 0 F000:D7CC db 0 F000:D7CD db 0F8h ; ° F000:D7CE db 0 F000:D7CF db 0 F000:D7D0 db 0 F000:D7D1 db 0 F000:D7D2 db 0 F000:D7D3 db 0 F000:D7D4 db 0 F000:D7D5 db 0 F000:D7D6 db 0 F000:D7D7 db 0 F000:D7D8 db 0 F000:D7D9 db 0FFh F000:D7DA db 0FFh F000:D7DB db 0FFh F000:D7DC db 0FFh F000:D7DD db 60h ; ` F000:D7DE db 0DEh ; Ù F000:D7DF db 0F0h ; ­ F000:D7E0 db 0DEh ; Ù F000:D7E1 db 10h F000:D7E2 db 0DEh ; Ù F000:D7E3 db 70h ; p F000:D7E4 db 0DEh ; Ù F000:D7E5 db 0 F000:D7E6 db 0 F000:D7E7 db 0 F000:D7E8 db 0 F000:D7E9 db 0 F000:D7EA db 0 F000:D7EB db 0 F000:D7EC db 0 F000:D7ED db 0 F000:D7EE db 0 F000:D7EF db 80h ; Ç F000:D7F0 db 0DFh ; - F000:D7F1 db 0 F000:D7F2 db 0 F000:D7F3 db 0 F000:D7F4 db 0 F000:D7F5 db 0 F000:D7F6 db 1 F000:D7F7 db 0 F000:D7F8 db 0 F000:D7F9 db 0 F000:D7FA db 0 F000:D7FB db 0 F000:D7FC db 0 F000:D7FD db 0 F000:D7FE db 0 F000:D7FF db 0 F000:D800 db 0 F000:D801 db 0 F000:D802 db 0 F000:D803 db 0 F000:D804 db 0 F000:D805 db 1 F000:D806 db 0 F000:D807 db 1 F000:D808 db 0 F000:D809 db 0 F000:D80A db 0DFh ; - F000:D80B db 5Ah ; Z F000:D80C db 0CFh ; ¤ F000:D80D db 1Fh F000:D80E db 0DAh ; - F000:D80F db 0 F000:D810 aAt29c020 db 'AT29C020',0 F000:D819 db 0 F000:D81A db 0 F000:D81B db 0 F000:D81C db 0 F000:D81D db 0 F000:D81E db 0 F000:D81F db 0 F000:D820 db 0 F000:D821 db 0 F000:D822 db 0 F000:D823 db 1 F000:D824 db 0 F000:D825 db 0 F000:D826 db 0F8h ; ° F000:D827 db 0 F000:D828 db 0 F000:D829 db 0 F000:D82A db 0 F000:D82B db 0 F000:D82C db 0 F000:D82D db 0 F000:D82E db 0 F000:D82F db 0 F000:D830 db 0 F000:D831 db 0 F000:D832 db 0FFh F000:D833 db 0FFh F000:D834 db 0FFh F000:D835 db 0FFh F000:D836 db 60h ; ` F000:D837 db 0DEh ; Ù F000:D838 db 0F0h ; ­ F000:D839 db 0DEh ; Ù F000:D83A db 10h F000:D83B db 0DEh ; Ù F000:D83C db 70h ; p F000:D83D db 0DEh ; Ù F000:D83E db 0 F000:D83F db 0 F000:D840 db 0 F000:D841 db 0 F000:D842 db 0 F000:D843 db 0 F000:D844 db 0 F000:D845 db 0 F000:D846 db 0 F000:D847 db 0 F000:D848 db 80h ; Ç F000:D849 db 0DFh ; - F000:D84A db 0 F000:D84B db 0 F000:D84C db 0 F000:D84D db 0 F000:D84E db 0 F000:D84F db 1 F000:D850 db 0 F000:D851 db 0 F000:D852 db 0 F000:D853 db 0 F000:D854 db 0 F000:D855 db 0 F000:D856 db 0 F000:D857 db 0 F000:D858 db 0 F000:D859 db 0 F000:D85A db 0 F000:D85B db 0 F000:D85C db 0 F000:D85D db 0 F000:D85E db 1 F000:D85F db 0 F000:D860 db 1 F000:D861 db 0 F000:D862 db 0 F000:D863 db 0DFh ; - F000:D864 db 62h ; b F000:D865 db 0CFh ; ¤ F000:D866 db 1Fh F000:D867 db 0A4h ; ¥ F000:D868 db 0 F000:D869 aAt29c040 db 'AT29C040',0 F000:D872 db 0 F000:D873 db 0 F000:D874 db 0 F000:D875 db 0 F000:D876 db 0 F000:D877 db 0 F000:D878 db 0 F000:D879 db 0 F000:D87A db 0 F000:D87B db 80h ; Ç F000:D87C db 0 F000:D87D db 0 F000:D87E db 0 F000:D87F db 0F8h ; ° F000:D880 db 0 F000:D881 db 0 F000:D882 db 0 F000:D883 db 0 F000:D884 db 0 F000:D885 db 0 F000:D886 db 0 F000:D887 db 0 F000:D888 db 0 F000:D889 db 0 F000:D88A db 0 F000:D88B db 0FFh F000:D88C db 0FFh F000:D88D db 0FFh F000:D88E db 0FFh F000:D88F db 60h ; ` F000:D890 db 0DEh ; Ù F000:D891 db 0F0h ; ­ F000:D892 db 0DEh ; Ù F000:D893 db 10h F000:D894 db 0DEh ; Ù F000:D895 db 70h ; p F000:D896 db 0DEh ; Ù F000:D897 db 0 F000:D898 db 0 F000:D899 db 0 F000:D89A db 0 F000:D89B db 0 F000:D89C db 0 F000:D89D db 0 F000:D89E db 0 F000:D89F db 0 F000:D8A0 db 0 F000:D8A1 db 80h ; Ç F000:D8A2 db 0DFh ; - F000:D8A3 db 0 F000:D8A4 db 0 F000:D8A5 db 0 F000:D8A6 db 0 F000:D8A7 db 0 F000:D8A8 db 1 F000:D8A9 db 0 F000:D8AA db 0 F000:D8AB db 0 F000:D8AC db 0 F000:D8AD db 0 F000:D8AE db 0 F000:D8AF db 0 F000:D8B0 db 0 F000:D8B1 db 0 F000:D8B2 db 0 F000:D8B3 db 0 F000:D8B4 db 0 F000:D8B5 db 0 F000:D8B6 db 0 F000:D8B7 db 1 F000:D8B8 db 0 F000:D8B9 db 1 F000:D8BA db 0 F000:D8BB db 0 F000:D8BC db 0DFh ; - F000:D8BD db 5Ch ; \ F000:D8BE db 0CFh ; ¤ F000:D8BF db 0DAh ; - F000:D8C0 db 45h ; E F000:D8C1 db 0 F000:D8C2 db 5Fh ; _ F000:D8C3 aW29c020_0 db 'W29C020',0 F000:D8CB db 0 F000:D8CC db 0 F000:D8CD db 0 F000:D8CE db 0 F000:D8CF db 0 F000:D8D0 db 0 F000:D8D1 db 0 F000:D8D2 db 0 F000:D8D3 db 0 F000:D8D4 db 0 F000:D8D5 db 1 F000:D8D6 db 0 F000:D8D7 db 0 F000:D8D8 db 0F8h ; ° F000:D8D9 db 0 F000:D8DA db 0 F000:D8DB db 0 F000:D8DC db 0 F000:D8DD db 0 F000:D8DE db 0 F000:D8DF db 0 F000:D8E0 db 0 F000:D8E1 db 0 F000:D8E2 db 0 F000:D8E3 db 0 F000:D8E4 db 0FFh F000:D8E5 db 0FFh F000:D8E6 db 0FFh F000:D8E7 db 0FFh F000:D8E8 db 60h ; ` F000:D8E9 db 0DEh ; Ù F000:D8EA db 0F0h ; ­ F000:D8EB db 0DEh ; Ù F000:D8EC db 10h F000:D8ED db 0DEh ; Ù F000:D8EE db 70h ; p F000:D8EF db 0DEh ; Ù F000:D8F0 db 0 F000:D8F1 db 0 F000:D8F2 db 0 F000:D8F3 db 0 F000:D8F4 db 0 F000:D8F5 db 0 F000:D8F6 db 0 F000:D8F7 db 0 F000:D8F8 db 0 F000:D8F9 db 0 F000:D8FA db 80h ; Ç F000:D8FB db 0DFh ; - F000:D8FC db 0 F000:D8FD db 0 F000:D8FE db 0 F000:D8FF db 0 F000:D900 db 0 F000:D901 db 1 F000:D902 db 0 F000:D903 db 0 F000:D904 db 0 F000:D905 db 0 F000:D906 db 0 F000:D907 db 0 F000:D908 db 0 F000:D909 db 0 F000:D90A db 0 F000:D90B db 0 F000:D90C db 0 F000:D90D db 0 F000:D90E db 0 F000:D90F db 0 F000:D910 db 1 F000:D911 db 0 F000:D912 db 1 F000:D913 db 0 F000:D914 db 0 F000:D915 db 0DFh ; - F000:D916 db 5Eh ; ^ F000:D917 db 0CFh ; ¤ F000:D918 db 0DAh ; - F000:D919 db 46h ; F F000:D91A db 0 F000:D91B db 5Fh ; _ F000:D91C aW29c040_0 db 'W29C040',0 F000:D924 db 0 F000:D925 db 0 F000:D926 db 0 F000:D927 db 0 F000:D928 db 0 F000:D929 db 0 F000:D92A db 0 F000:D92B db 0 F000:D92C db 0 F000:D92D db 80h ; Ç F000:D92E db 0 F000:D92F db 0 F000:D930 db 0 F000:D931 db 0F8h ; ° F000:D932 db 0 F000:D933 db 0 F000:D934 db 0 F000:D935 db 0 F000:D936 db 0 F000:D937 db 0 F000:D938 db 0 F000:D939 db 0 F000:D93A db 0 F000:D93B db 0 F000:D93C db 0 F000:D93D db 0FFh F000:D93E db 0FFh F000:D93F db 0FFh F000:D940 db 0FFh F000:D941 db 60h ; ` F000:D942 db 0DEh ; Ù F000:D943 db 0F0h ; ­ F000:D944 db 0DEh ; Ù F000:D945 db 10h F000:D946 db 0DEh ; Ù F000:D947 db 70h ; p F000:D948 db 0DEh ; Ù F000:D949 db 0 F000:D94A db 0 F000:D94B db 0 F000:D94C db 0 F000:D94D db 0 F000:D94E db 0 F000:D94F db 0 F000:D950 db 0 F000:D951 db 0 F000:D952 db 0 F000:D953 db 80h ; Ç F000:D954 db 0DFh ; - F000:D955 db 0 F000:D956 db 0 F000:D957 db 0 F000:D958 db 0 F000:D959 db 0 F000:D95A db 1 F000:D95B db 0 F000:D95C db 0 F000:D95D db 0 F000:D95E db 0 F000:D95F db 0 F000:D960 db 0 F000:D961 db 0 F000:D962 db 0 F000:D963 db 0 F000:D964 db 0 F000:D965 db 0 F000:D966 db 0 F000:D967 db 0 F000:D968 db 0 F000:D969 db 1 F000:D96A db 0 F000:D96B db 1 F000:D96C db 0 F000:D96D db 0 F000:D96E db 0DFh ; - F000:D96F db 60h ; ` F000:D970 db 0CFh ; ¤ F000:D971 db 0BFh ; ¬ F000:D972 db 10h F000:D973 db 0 F000:D974 db 5Fh ; _ F000:D975 aW29c020 db 'W29C020',0 F000:D97D db 0 F000:D97E db 0 F000:D97F db 0 F000:D980 db 0 F000:D981 db 0 F000:D982 db 0 F000:D983 db 0 F000:D984 db 0 F000:D985 db 0 F000:D986 db 0 F000:D987 db 1 F000:D988 db 0 F000:D989 db 0 F000:D98A db 0F8h ; ° F000:D98B db 0 F000:D98C db 0 F000:D98D db 0 F000:D98E db 0 F000:D98F db 0 F000:D990 db 0 F000:D991 db 0 F000:D992 db 0 F000:D993 db 0 F000:D994 db 0 F000:D995 db 0 F000:D996 db 0FFh F000:D997 db 0FFh F000:D998 db 0FFh F000:D999 db 0FFh F000:D99A db 60h ; ` F000:D99B db 0DEh ; Ù F000:D99C db 0F0h ; ­ F000:D99D db 0DEh ; Ù F000:D99E db 10h F000:D99F db 0DEh ; Ù F000:D9A0 db 70h ; p F000:D9A1 db 0DEh ; Ù F000:D9A2 db 0 F000:D9A3 db 0 F000:D9A4 db 0 F000:D9A5 db 0 F000:D9A6 db 0 F000:D9A7 db 0 F000:D9A8 db 0 F000:D9A9 db 0 F000:D9AA db 0 F000:D9AB db 0 F000:D9AC db 80h ; Ç F000:D9AD db 0DFh ; - F000:D9AE db 0 F000:D9AF db 0 F000:D9B0 db 0 F000:D9B1 db 0 F000:D9B2 db 0 F000:D9B3 db 1 F000:D9B4 db 0 F000:D9B5 db 0 F000:D9B6 db 0 F000:D9B7 db 0 F000:D9B8 db 0 F000:D9B9 db 0 F000:D9BA db 0 F000:D9BB db 0 F000:D9BC db 0 F000:D9BD db 0 F000:D9BE db 0 F000:D9BF db 0 F000:D9C0 db 0 F000:D9C1 db 0 F000:D9C2 db 1 F000:D9C3 db 0 F000:D9C4 db 1 F000:D9C5 db 0 F000:D9C6 db 0 F000:D9C7 db 0DFh ; - F000:D9C8 db 64h ; d F000:D9C9 db 0CFh ; ¤ F000:D9CA db 0BFh ; ¬ F000:D9CB db 4 F000:D9CC db 0 F000:D9CD db 5Fh ; _ F000:D9CE aW29c040 db 'W29C040',0 F000:D9D6 db 0 F000:D9D7 db 0 F000:D9D8 db 0 F000:D9D9 db 0 F000:D9DA db 0 F000:D9DB db 0 F000:D9DC db 0 F000:D9DD db 0 F000:D9DE db 0 F000:D9DF db 0 F000:D9E0 db 0E2h ; Ô F000:D9E1 db 0D9h ; - F000:D9E2 db 0B0h ; - F000:D9E3 db 55h ; U F000:D9E4 db 0C3h ; + F000:D9E5 db 0Bh dup(0) F000:D9F0 F000:D9F0 ; =============== S U B R O U T I N E ======================================= F000:D9F0 F000:D9F0 F000:D9F0 IO_WR_F8xxh_DX_EAX proc near ; CODE XREF: IO_WR_F808h_AX+17p F000:D9F0 ; IO_WR_F808h_AX+23p ... F000:D9F0 push dx F000:D9F1 add dx, 0F800h F000:D9F5 out dx, eax F000:D9F7 pop dx F000:D9F8 retn F000:D9F8 IO_WR_F8xxh_DX_EAX endp F000:D9F8 F000:D9F9 F000:D9F9 ; =============== S U B R O U T I N E ======================================= F000:D9F9 F000:D9F9 F000:D9F9 IO_RD_F8xxh_DX_EAX proc near ; CODE XREF: IO_RD_F808h_DUMMY+6p F000:D9F9 push dx F000:D9FA add dx, 0F800h F000:D9FE in eax, dx F000:DA00 pop dx F000:DA01 retn F000:DA01 IO_RD_F8xxh_DX_EAX endp F000:DA01 F000:DA02 F000:DA02 ; =============== S U B R O U T I N E ======================================= F000:DA02 F000:DA02 F000:DA02 IO_WR_F808h_AX proc near ; CODE XREF: IO_WR_F808h_CX_AX+13p F000:DA02 push eax F000:DA04 push dx F000:DA05 push ebx F000:DA07 and al, 1 ; mask bit0 F000:DA09 movzx ebx, ax ; EBX = 0000AX F000:DA0D mov dx, 8 ; DX = 8 F000:DA10 mov eax, 8 ; EAX = 8 F000:DA16 add eax, ebx ; EAX = 00000008h + 0000xx0x F000:DA19 call IO_WR_F8xxh_DX_EAX ; 0000xx0x -> IO port F808h F000:DA1C mov eax, 0Ch ; EAX = 0000000Ch F000:DA22 add eax, ebx ; EAX = 0000000Ch + 0000xx0x F000:DA25 call IO_WR_F8xxh_DX_EAX ; 0000xx0x -> IO port F808h F000:DA28 mov eax, 8 ; EAX = 8 F000:DA2E add eax, ebx ; EAX = 00000008h + 0000xx0x F000:DA31 call IO_WR_F8xxh_DX_EAX ; 0000xx0x -> IO port F808h F000:DA34 pop ebx F000:DA36 pop dx F000:DA37 pop eax F000:DA39 retn F000:DA39 IO_WR_F808h_AX endp F000:DA39 F000:DA3A F000:DA3A ; =============== S U B R O U T I N E ======================================= F000:DA3A F000:DA3A F000:DA3A IO_WR_F808h_0 proc near ; CODE XREF: TEST_IO_F808h+8p F000:DA3A ; TEST_IO_F808h+27p ... F000:DA3A push dx F000:DA3B push eax F000:DA3D mov dx, 8 F000:DA40 mov eax, 0 F000:DA46 call IO_WR_F8xxh_DX_EAX ; 0 -> IO port F808h F000:DA49 pop eax F000:DA4B pop dx F000:DA4C retn F000:DA4C IO_WR_F808h_0 endp F000:DA4C F000:DA4D F000:DA4D ; =============== S U B R O U T I N E ======================================= F000:DA4D F000:DA4D F000:DA4D IO_WR_F808h_CX_AX proc near ; CODE XREF: sub_FD250+19p F000:DA4D ; IO_WR_F808h_4_AX+6p ... F000:DA4D push dx ; AL = 6, CX = 4 F000:DA4E push cx F000:DA4F mov dx, ax ; DX = 6 F000:DA51 mov ax, cx ; AX = 4 F000:DA53 mov cx, 10h ; CX = 16 F000:DA56 sub cx, ax ; CX = 12 F000:DA58 rol dx, cl ; DX = 3 F000:DA5A mov cx, ax ; CX = 4 = count F000:DA5C F000:DA5C io_wr_loop: ; CODE XREF: IO_WR_F808h_CX_AX+16j F000:DA5C rol dx, 1 ; DX = 6h, Ch, 18h, 30h F000:DA5E mov al, dl ; AL = 6h, Ch, 18h, 30h F000:DA60 call IO_WR_F808h_AX ; write 3x AX&FF01h+8 or Ch to IO port F808h F000:DA63 loop io_wr_loop ; DX = 6h, Ch, 18h, 30h F000:DA65 pop cx ; CX = 4 F000:DA66 pop dx F000:DA67 retn F000:DA67 IO_WR_F808h_CX_AX endp F000:DA67 F000:DA68 F000:DA68 ; =============== S U B R O U T I N E ======================================= F000:DA68 F000:DA68 F000:DA68 IO_WR_F808h_4_AX proc near ; CODE XREF: TEST_IO_F808h+Dp F000:DA68 ; sub_FD250+Cp F000:DA68 push ax F000:DA69 push dx F000:DA6A push cx F000:DA6B mov cx, 4 F000:DA6E call IO_WR_F808h_CX_AX F000:DA71 pop cx F000:DA72 pop dx F000:DA73 pop ax F000:DA74 retn F000:DA74 IO_WR_F808h_4_AX endp F000:DA74 F000:DA75 F000:DA75 ; =============== S U B R O U T I N E ======================================= F000:DA75 F000:DA75 F000:DA75 IO_WR_F808h_6_AX proc near ; CODE XREF: TEST_IO_F808h+12p F000:DA75 ; sub_FD250+11p F000:DA75 push bx F000:DA76 push ax F000:DA77 push cx F000:DA78 mov cx, 6 F000:DA7B call IO_WR_F808h_CX_AX F000:DA7E pop cx F000:DA7F pop ax F000:DA80 pop bx F000:DA81 retn F000:DA81 IO_WR_F808h_6_AX endp F000:DA81 F000:DA82 F000:DA82 ; =============== S U B R O U T I N E ======================================= F000:DA82 F000:DA82 F000:DA82 IO_WR_F808h_Ch proc near ; CODE XREF: TEST_IO_F808h:loc_FD22Ap F000:DA82 push dx F000:DA83 push eax F000:DA85 mov dx, 8 F000:DA88 mov eax, 0Ch F000:DA8E call IO_WR_F8xxh_DX_EAX F000:DA91 pop eax F000:DA93 pop dx F000:DA94 retn F000:DA94 IO_WR_F808h_Ch endp F000:DA94 F000:DA95 F000:DA95 ; =============== S U B R O U T I N E ======================================= F000:DA95 F000:DA95 F000:DA95 IO_WR_F808h_8h proc near ; CODE XREF: TEST_IO_F808h+22p F000:DA95 ; sub_FDAD8+3p F000:DA95 push dx F000:DA96 push eax F000:DA98 mov dx, 8 F000:DA9B mov eax, 8 F000:DAA1 call IO_WR_F8xxh_DX_EAX F000:DAA4 pop eax F000:DAA6 pop dx F000:DAA7 retn F000:DAA7 IO_WR_F808h_8h endp F000:DAA7 F000:DAA8 F000:DAA8 ; =============== S U B R O U T I N E ======================================= F000:DAA8 F000:DAA8 F000:DAA8 IO_RD_F808h_DUMMY proc near ; CODE XREF: TEST_IO_F808h+1Dp F000:DAA8 ; sub_FDAD8:loc_FDAE0p F000:DAA8 push dx F000:DAA9 push eax F000:DAAB mov dx, 8 F000:DAAE call IO_RD_F8xxh_DX_EAX ; read from IO port F808h to EAX F000:DAB1 shr ax, 2 ; The low-order bit is shifted into the carry flag F000:DAB4 pop eax ; EAX is restored from stack, AX is lost F000:DAB6 pop dx F000:DAB7 retn F000:DAB7 IO_RD_F808h_DUMMY endp F000:DAB7 F000:DAB8 F000:DAB8 ; =============== S U B R O U T I N E ======================================= F000:DAB8 F000:DAB8 F000:DAB8 sub_FDAB8 proc near ; CODE XREF: sub_FD250+4p F000:DAB8 call IO_WR_F808h_0 F000:DABB mov ax, 130h F000:DABE mov cx, 0Ah F000:DAC1 call IO_WR_F808h_CX_AX F000:DAC4 call IO_WR_F808h_0 F000:DAC7 retn F000:DAC7 sub_FDAB8 endp F000:DAC7 F000:DAC8 F000:DAC8 ; =============== S U B R O U T I N E ======================================= F000:DAC8 F000:DAC8 F000:DAC8 sub_FDAC8 proc near ; CODE XREF: sub_FD250+23p F000:DAC8 call IO_WR_F808h_0 F000:DACB mov ax, 100h F000:DACE mov cx, 0Ah F000:DAD1 call IO_WR_F808h_CX_AX F000:DAD4 call IO_WR_F808h_0 F000:DAD7 retn F000:DAD7 sub_FDAC8 endp F000:DAD7 F000:DAD8 F000:DAD8 ; =============== S U B R O U T I N E ======================================= F000:DAD8 F000:DAD8 F000:DAD8 sub_FDAD8 proc near ; CODE XREF: sub_FD250+1Cp F000:DAD8 call IO_WR_F808h_0 F000:DADB call IO_WR_F808h_8h F000:DADE xor cx, cx F000:DAE0 F000:DAE0 loc_FDAE0: ; CODE XREF: sub_FDAD8+Dj F000:DAE0 call IO_RD_F808h_DUMMY F000:DAE3 jb short loc_FDAE9 F000:DAE5 loop loc_FDAE0 F000:DAE7 stc F000:DAE8 retn F000:DAE9 ; --------------------------------------------------------------------------- F000:DAE9 F000:DAE9 loc_FDAE9: ; CODE XREF: sub_FDAD8+Bj F000:DAE9 clc F000:DAEA retn F000:DAEA sub_FDAD8 endp F000:DAEA F000:DAEA ; --------------------------------------------------------------------------- F000:DAEB db 5 dup(0) F000:DAF0 F000:DAF0 ; =============== S U B R O U T I N E ======================================= F000:DAF0 F000:DAF0 F000:DAF0 sub_FDAF0 proc near ; CODE XREF: sub_FD3F0:loc_FD401p F000:DAF0 mov dx, 370h F000:DAF3 mov al, 55h ; 'U' F000:DAF5 out dx, al F000:DAF6 out dx, al F000:DAF7 mov al, 7 F000:DAF9 out dx, al F000:DAFA inc dx F000:DAFB mov al, 8 F000:DAFD out dx, al F000:DAFE dec dx F000:DAFF mov al, 3 F000:DB01 out dx, al F000:DB02 inc dx F000:DB03 mov al, 80h ; 'Ç' F000:DB05 out dx, al F000:DB06 dec dx F000:DB07 mov al, 30h ; '0' F000:DB09 out dx, al F000:DB0A inc dx F000:DB0B mov al, 1 F000:DB0D out dx, al F000:DB0E dec dx F000:DB0F mov al, 0E9h ; 'Ú' F000:DB11 out dx, al F000:DB12 inc dx F000:DB13 mov al, 0 F000:DB15 out dx, al F000:DB16 mov dx, 370h F000:DB19 mov al, 0AAh ; '¬' F000:DB1B out dx, al F000:DB1C retn F000:DB1C sub_FDAF0 endp F000:DB1C F000:DB1D F000:DB1D ; =============== S U B R O U T I N E ======================================= F000:DB1D F000:DB1D F000:DB1D sub_FDB1D proc near ; CODE XREF: sub_FD3F0:loc_FD42Cp F000:DB1D mov al, 1 F000:DB1F or al, al F000:DB21 retn F000:DB21 sub_FDB1D endp F000:DB21 F000:DB22 F000:DB22 ; =============== S U B R O U T I N E ======================================= F000:DB22 F000:DB22 F000:DB22 sub_FDB22 proc near ; CODE XREF: sub_FD3F0+2Cp F000:DB22 mov al, 2 F000:DB24 mov ah, 2 F000:DB26 jmp short loc_FDB2C F000:DB26 sub_FDB22 endp F000:DB26 F000:DB28 F000:DB28 ; =============== S U B R O U T I N E ======================================= F000:DB28 F000:DB28 F000:DB28 sub_FDB28 proc near ; CODE XREF: sub_FD3F0:loc_FD424p F000:DB28 mov al, 2 F000:DB2A mov ah, 10h F000:DB2C F000:DB2C loc_FDB2C: ; CODE XREF: sub_FDB22+4j F000:DB2C mov dx, 0E0h ; 'Ó' F000:DB2F out dx, al F000:DB30 inc dx F000:DB31 in al, dx F000:DB32 test al, ah F000:DB34 retn F000:DB34 sub_FDB28 endp F000:DB34 F000:DB35 F000:DB35 ; =============== S U B R O U T I N E ======================================= F000:DB35 F000:DB35 F000:DB35 sub_FDB35 proc near ; CODE XREF: sub_FD460+17p F000:DB35 ; sub_FD460+31p F000:DB35 mov ah, 0 F000:DB37 F000:DB37 loc_FDB37: ; CODE XREF: sub_FDB55+2j F000:DB37 pushf F000:DB38 cli F000:DB39 mov dx, 370h F000:DB3C mov al, 55h ; 'U' F000:DB3E out dx, al F000:DB3F out dx, al F000:DB40 mov al, 7 F000:DB42 out dx, al F000:DB43 inc dx F000:DB44 mov al, 8 F000:DB46 out dx, al F000:DB47 dec dx F000:DB48 mov al, 0ECh ; 'ý' F000:DB4A out dx, al F000:DB4B inc dx F000:DB4C mov al, ah F000:DB4E out dx, al F000:DB4F dec dx F000:DB50 mov al, 0AAh ; '¬' F000:DB52 out dx, al F000:DB53 popf F000:DB54 retn F000:DB54 sub_FDB35 endp F000:DB54 F000:DB55 F000:DB55 ; =============== S U B R O U T I N E ======================================= F000:DB55 F000:DB55 F000:DB55 sub_FDB55 proc near ; CODE XREF: sub_FD460:loc_FD495p F000:DB55 mov ah, 1 F000:DB57 jmp short loc_FDB37 F000:DB57 sub_FDB55 endp F000:DB57 F000:DB59 F000:DB59 ; =============== S U B R O U T I N E ======================================= F000:DB59 F000:DB59 F000:DB59 sub_FDB59 proc near ; CODE XREF: sub_FD460:loc_FD46Fp F000:DB59 mov al, 2 F000:DB5B mov ah, 2 F000:DB5D F000:DB5D loc_FDB5D: ; CODE XREF: sub_FDB79+4j F000:DB5D mov dx, 0E0h ; 'Ó' F000:DB60 out dx, al F000:DB61 inc dx F000:DB62 in al, dx F000:DB63 not ah F000:DB65 and al, ah F000:DB67 F000:DB67 loc_FDB67: ; CODE XREF: sub_FDB6B+Cj F000:DB67 out dx, al F000:DB68 out dx, al F000:DB69 out dx, al F000:DB6A retn F000:DB6A sub_FDB59 endp F000:DB6A F000:DB6B F000:DB6B ; =============== S U B R O U T I N E ======================================= F000:DB6B F000:DB6B F000:DB6B sub_FDB6B proc near ; CODE XREF: sub_FD460+Ap F000:DB6B mov al, 2 F000:DB6D mov ah, 2 F000:DB6F F000:DB6F loc_FDB6F: ; CODE XREF: sub_FDB7F+4j F000:DB6F mov dx, 0E0h ; 'Ó' F000:DB72 out dx, al F000:DB73 inc dx F000:DB74 in al, dx F000:DB75 or al, ah F000:DB77 jmp short loc_FDB67 F000:DB77 sub_FDB6B endp F000:DB77 F000:DB79 F000:DB79 ; =============== S U B R O U T I N E ======================================= F000:DB79 F000:DB79 F000:DB79 sub_FDB79 proc near ; CODE XREF: sub_FD460:loc_FD484p F000:DB79 mov al, 2 F000:DB7B mov ah, 10h F000:DB7D jmp short loc_FDB5D F000:DB7D sub_FDB79 endp F000:DB7D F000:DB7F F000:DB7F ; =============== S U B R O U T I N E ======================================= F000:DB7F F000:DB7F F000:DB7F sub_FDB7F proc near ; CODE XREF: sub_FD460+1Fp F000:DB7F mov al, 2 F000:DB81 mov ah, 10h F000:DB83 jmp short loc_FDB6F F000:DB83 sub_FDB7F endp F000:DB83 F000:DB85 F000:DB85 ; =============== S U B R O U T I N E ======================================= F000:DB85 F000:DB85 F000:DB85 sub_FDB85 proc near ; CODE XREF: sub_FD4AF+13p F000:DB85 mov ch, 40h ; '@' F000:DB87 mov cl, 0BFh ; '¬' F000:DB89 jmp short loc_FDB8F F000:DB89 sub_FDB85 endp F000:DB89 F000:DB8B F000:DB8B ; =============== S U B R O U T I N E ======================================= F000:DB8B F000:DB8B F000:DB8B sub_FDB8B proc near ; CODE XREF: sub_FD4AF+3Fp F000:DB8B mov ch, 20h ; ' ' F000:DB8D F000:DB8D loc_FDB8D: ; CODE XREF: sub_FDBA2+2j F000:DB8D mov cl, 0DFh ; '-' F000:DB8F F000:DB8F loc_FDB8F: ; CODE XREF: sub_FDB85+4j F000:DB8F mov al, 0 F000:DB91 F000:DB91 loc_FDB91: ; CODE XREF: sub_FDBA6+6j F000:DB91 ; sub_FDBB2+6j F000:DB91 call sub_FDBD5 F000:DB94 add dl, al F000:DB96 push dx F000:DB97 in al, dx F000:DB98 and al, cl F000:DB9A or al, ch F000:DB9C call sub_FDBD5 F000:DB9F pop dx F000:DBA0 out dx, al F000:DBA1 retn F000:DBA1 sub_FDB8B endp F000:DBA1 F000:DBA2 F000:DBA2 ; =============== S U B R O U T I N E ======================================= F000:DBA2 F000:DBA2 F000:DBA2 sub_FDBA2 proc near ; CODE XREF: sub_FD4AF:loc_FD4F2p F000:DBA2 mov ch, 0 F000:DBA4 jmp short loc_FDB8D F000:DBA4 sub_FDBA2 endp F000:DBA4 F000:DBA6 F000:DBA6 ; =============== S U B R O U T I N E ======================================= F000:DBA6 F000:DBA6 F000:DBA6 sub_FDBA6 proc near ; CODE XREF: sub_FD4AF:loc_FD4CFp F000:DBA6 mov ch, 0 F000:DBA8 F000:DBA8 loc_FDBA8: ; CODE XREF: sub_FDBAE+2j F000:DBA8 mov cl, 0BFh ; '¬' F000:DBAA mov al, 1 F000:DBAC jmp short loc_FDB91 F000:DBAC sub_FDBA6 endp F000:DBAC F000:DBAE F000:DBAE ; =============== S U B R O U T I N E ======================================= F000:DBAE F000:DBAE F000:DBAE sub_FDBAE proc near ; CODE XREF: sub_FD4AF+1Bp F000:DBAE mov ch, 40h ; '@' F000:DBB0 jmp short loc_FDBA8 F000:DBB0 sub_FDBAE endp F000:DBB0 F000:DBB2 F000:DBB2 ; =============== S U B R O U T I N E ======================================= F000:DBB2 F000:DBB2 F000:DBB2 sub_FDBB2 proc near ; CODE XREF: sub_FD4AF:loc_FD4E1p F000:DBB2 mov ch, 0 F000:DBB4 F000:DBB4 loc_FDBB4: ; CODE XREF: sub_FDBBA+2j F000:DBB4 mov cl, 0DFh ; '-' F000:DBB6 mov al, 1 F000:DBB8 jmp short loc_FDB91 F000:DBB8 sub_FDBB2 endp F000:DBB8 F000:DBBA F000:DBBA ; =============== S U B R O U T I N E ======================================= F000:DBBA F000:DBBA F000:DBBA sub_FDBBA proc near ; CODE XREF: sub_FD4AF+2Dp F000:DBBA mov ch, 20h ; ' ' F000:DBBC jmp short loc_FDBB4 F000:DBBC sub_FDBBA endp F000:DBBC F000:DBBE F000:DBBE ; =============== S U B R O U T I N E ======================================= F000:DBBE F000:DBBE F000:DBBE sub_FDBBE proc near ; CODE XREF: sub_FD3F0:loc_FD443p F000:DBBE mov ah, 40h ; '@' F000:DBC0 jmp short loc_FDBC4 F000:DBC0 sub_FDBBE endp F000:DBC0 F000:DBC2 F000:DBC2 ; =============== S U B R O U T I N E ======================================= F000:DBC2 F000:DBC2 F000:DBC2 sub_FDBC2 proc near ; CODE XREF: sub_FD3F0:loc_FD44Bp F000:DBC2 mov ah, 20h ; ' ' F000:DBC4 F000:DBC4 loc_FDBC4: ; CODE XREF: sub_FDBBE+2j F000:DBC4 mov al, 1 F000:DBC6 F000:DBC6 loc_FDBC6: ; CODE XREF: sub_FDBCF+4j F000:DBC6 call sub_FDBD5 F000:DBC9 add dl, al F000:DBCB in al, dx F000:DBCC and al, ah F000:DBCE retn F000:DBCE sub_FDBC2 endp F000:DBCE F000:DBCF F000:DBCF ; =============== S U B R O U T I N E ======================================= F000:DBCF F000:DBCF F000:DBCF sub_FDBCF proc near ; CODE XREF: sub_FD3F0:loc_FD453p F000:DBCF mov ah, 20h ; ' ' F000:DBD1 mov al, 0 F000:DBD3 jmp short loc_FDBC6 F000:DBD3 sub_FDBCF endp F000:DBD3 F000:DBD5 F000:DBD5 ; =============== S U B R O U T I N E ======================================= F000:DBD5 F000:DBD5 F000:DBD5 sub_FDBD5 proc near ; CODE XREF: sub_FDB8B:loc_FDB91p F000:DBD5 ; sub_FDB8B+11p ... F000:DBD5 push eax F000:DBD7 mov dx, 0CF8h F000:DBDA mov eax, 80009090h F000:DBE0 out dx, eax F000:DBE2 pop eax F000:DBE4 add dl, 4 F000:DBE7 retn F000:DBE7 sub_FDBD5 endp F000:DBE7 F000:DBE7 ; --------------------------------------------------------------------------- F000:DBE8 db 8 dup(0) F000:DBF0 F000:DBF0 ; =============== S U B R O U T I N E ======================================= F000:DBF0 F000:DBF0 ; Attributes: bp-based frame F000:DBF0 F000:DBF0 sub_FDBF0 proc near F000:DBF0 F000:DBF0 var_1 = byte ptr -1 F000:DBF0 F000:DBF0 push bp F000:DBF1 mov bp, sp F000:DBF3 add sp, 0FFFEh F000:DBF6 pushad F000:DBF8 pushf F000:DBF9 call sub_F5A2A F000:DBFC mov [bp+var_1], al F000:DBFF call sub_FD7A0 F000:DC02 jz short loc_FDC2D F000:DC04 cmp byte ptr fs:14DEh, 0 F000:DC0A jz short loc_FDC13 F000:DC0C mov al, 0FFh F000:DC0E rep stos byte ptr es:[edi] F000:DC11 jmp short loc_FDC2F F000:DC13 ; --------------------------------------------------------------------------- F000:DC13 F000:DC13 loc_FDC13: ; CODE XREF: sub_FDBF0+1Aj F000:DC13 mov ah, 0 F000:DC15 mov al, [bp+var_1] F000:DC18 call sub_FD709 F000:DC1B mov al, [bp+var_1] F000:DC1E call sub_FD714 F000:DC21 call sub_FD7A0 F000:DC24 jz short loc_FDC2D F000:DC26 mov dx, 1F7h F000:DC29 rep ins byte ptr es:[edi], dx F000:DC2C clc F000:DC2D F000:DC2D loc_FDC2D: ; CODE XREF: sub_FDBF0+12j F000:DC2D ; sub_FDBF0+34j F000:DC2D jb short loc_FDC33 F000:DC2F F000:DC2F loc_FDC2F: ; CODE XREF: sub_FDBF0+21j F000:DC2F popf F000:DC30 clc F000:DC31 jmp short loc_FDC35 F000:DC33 ; --------------------------------------------------------------------------- F000:DC33 F000:DC33 loc_FDC33: ; CODE XREF: sub_FDBF0:loc_FDC2Dj F000:DC33 popf F000:DC34 stc F000:DC35 F000:DC35 loc_FDC35: ; CODE XREF: sub_FDBF0+41j F000:DC35 call sub_FD700 F000:DC38 popad F000:DC3A mov sp, bp F000:DC3C pop bp F000:DC3D retn F000:DC3D sub_FDBF0 endp F000:DC3D F000:DC3D ; --------------------------------------------------------------------------- F000:DC3E dw 0 F000:DC40 F000:DC40 ; =============== S U B R O U T I N E ======================================= F000:DC40 F000:DC40 ; Attributes: bp-based frame F000:DC40 F000:DC40 sub_FDC40 proc near F000:DC40 F000:DC40 var_1 = byte ptr -1 F000:DC40 F000:DC40 push bp F000:DC41 mov bp, sp F000:DC43 add sp, 0FFFEh F000:DC46 pushad F000:DC48 pushf F000:DC49 call sub_F5A2A F000:DC4C mov [bp+var_1], al F000:DC4F call sub_FD7A0 F000:DC52 mov ah, 80h ; 'Ç' F000:DC54 mov al, [bp+var_1] F000:DC57 call sub_FD709 F000:DC5A mov al, [bp+var_1] F000:DC5D call sub_FD714 F000:DC60 mov ecx, fs:0F18h F000:DC66 add cx, 8 F000:DC69 mov dx, 1F7h F000:DC6C rep outs dx, byte ptr [esi] F000:DC6F mov ecx, 8 F000:DC75 mov al, 0FFh F000:DC77 F000:DC77 loc_FDC77: ; CODE XREF: sub_FDC40+38j F000:DC77 out dx, al ; AT hard disk F000:DC77 ; command register: F000:DC77 ; 1?H = Restore to cylinder 0 F000:DC77 ; 7?H = Seek to cylinder F000:DC77 ; 2?H = Read sector F000:DC77 ; 3xH = Write sector F000:DC77 ; 50H = Format track F000:DC77 ; 4xH = verify read F000:DC77 ; 90H = diagnose F000:DC77 ; 91H = set parameters for drive F000:DC78 loop loc_FDC77 F000:DC7A mov ah, 10h F000:DC7C mov al, [bp+var_1] F000:DC7F call sub_FD709 F000:DC82 call sub_FD7A0 F000:DC85 mov ah, 70h ; 'p' F000:DC87 mov al, [bp+var_1] F000:DC8A call sub_FD709 F000:DC8D mov dx, 1F7h F000:DC90 in al, dx ; AT hard disk F000:DC90 ; status register bits: F000:DC90 ; 0: 1=prev cmd error F000:DC90 ; 2: Corrected data F000:DC90 ; 3: Data Request. Buffer is busy F000:DC90 ; 4: Seek completed F000:DC90 ; 5: Write fault F000:DC90 ; 6: Drive ready (unless bit 4=0) F000:DC90 ; 7: Busy F000:DC91 call sub_FD7A0 F000:DC94 jz short loc_FDC9A F000:DC96 popf F000:DC97 clc F000:DC98 jmp short loc_FDC9C F000:DC9A ; --------------------------------------------------------------------------- F000:DC9A F000:DC9A loc_FDC9A: ; CODE XREF: sub_FDC40+54j F000:DC9A popf F000:DC9B stc F000:DC9C F000:DC9C loc_FDC9C: ; CODE XREF: sub_FDC40+58j F000:DC9C call sub_FD700 F000:DC9F popad F000:DCA1 mov sp, bp F000:DCA3 pop bp F000:DCA4 retn F000:DCA4 sub_FDC40 endp F000:DCA4 F000:DCA4 ; --------------------------------------------------------------------------- F000:DCA5 db 0Bh dup(0) F000:DCB0 F000:DCB0 ; =============== S U B R O U T I N E ======================================= F000:DCB0 F000:DCB0 ; Attributes: bp-based frame F000:DCB0 F000:DCB0 sub_FDCB0 proc near F000:DCB0 F000:DCB0 var_1 = byte ptr -1 F000:DCB0 F000:DCB0 push bp F000:DCB1 mov bp, sp F000:DCB3 add sp, 0FFFEh F000:DCB6 pushad F000:DCB8 pushf F000:DCB9 call sub_F5A2A F000:DCBC mov [bp+var_1], al F000:DCBF call sub_FD7A0 F000:DCC2 jz short loc_FDD11 F000:DCC4 cmp byte ptr fs:14DEh, 0 F000:DCCA jz short loc_FDCD9 F000:DCCC mov ecx, 8 F000:DCD2 mov al, 0FFh F000:DCD4 rep stos byte ptr es:[edi] F000:DCD7 jmp short loc_FDD13 F000:DCD9 ; --------------------------------------------------------------------------- F000:DCD9 F000:DCD9 loc_FDCD9: ; CODE XREF: sub_FDCB0+1Aj F000:DCD9 mov ah, 50h ; 'P' F000:DCDB mov al, [bp+var_1] F000:DCDE call sub_FD709 F000:DCE1 mov al, [bp+var_1] F000:DCE4 call sub_FD714 F000:DCE7 call sub_FD7A0 F000:DCEA jz short loc_FDD11 F000:DCEC mov ecx, 8 F000:DCF2 mov dx, 1F7h F000:DCF5 rep ins byte ptr es:[edi], dx F000:DCF8 call sub_FD7A0 F000:DCFB mov ah, 0 F000:DCFD mov al, [bp+var_1] F000:DD00 call sub_FD709 F000:DD03 xor bx, bx F000:DD05 mov al, [bp+var_1] F000:DD08 call sub_FD714 F000:DD0B call sub_FD7A0 F000:DD0E jz short loc_FDD11 F000:DD10 clc F000:DD11 F000:DD11 loc_FDD11: ; CODE XREF: sub_FDCB0+12j F000:DD11 ; sub_FDCB0+3Aj ... F000:DD11 jb short loc_FDD17 F000:DD13 F000:DD13 loc_FDD13: ; CODE XREF: sub_FDCB0+27j F000:DD13 popf F000:DD14 clc F000:DD15 jmp short loc_FDD19 F000:DD17 ; --------------------------------------------------------------------------- F000:DD17 F000:DD17 loc_FDD17: ; CODE XREF: sub_FDCB0:loc_FDD11j F000:DD17 popf F000:DD18 stc F000:DD19 F000:DD19 loc_FDD19: ; CODE XREF: sub_FDCB0+65j F000:DD19 call sub_FD700 F000:DD1C popad F000:DD1E mov sp, bp F000:DD20 pop bp F000:DD21 retn F000:DD21 sub_FDCB0 endp F000:DD21 F000:DD21 ; --------------------------------------------------------------------------- F000:DD22 db 0Eh dup(0) F000:DD30 F000:DD30 ; =============== S U B R O U T I N E ======================================= F000:DD30 F000:DD30 ; Attributes: bp-based frame F000:DD30 F000:DD30 sub_FDD30 proc near F000:DD30 F000:DD30 var_1 = byte ptr -1 F000:DD30 F000:DD30 push bp F000:DD31 mov bp, sp F000:DD33 add sp, 0FFFEh F000:DD36 pushad F000:DD38 pushf F000:DD39 call sub_F5A2A F000:DD3C mov [bp+var_1], al F000:DD3F call sub_FD7A0 F000:DD42 mov ah, 80h ; 'Ç' F000:DD44 mov al, [bp+var_1] F000:DD47 call sub_FD709 F000:DD4A mov al, [bp+var_1] F000:DD4D call sub_FD714 F000:DD50 mov ecx, fs:0F18h F000:DD56 mov dx, 1F7h F000:DD59 mov al, 0FFh F000:DD5B F000:DD5B loc_FDD5B: ; CODE XREF: sub_FDD30+2Cj F000:DD5B out dx, al ; AT hard disk F000:DD5B ; command register: F000:DD5B ; 1?H = Restore to cylinder 0 F000:DD5B ; 7?H = Seek to cylinder F000:DD5B ; 2?H = Read sector F000:DD5B ; 3xH = Write sector F000:DD5B ; 50H = Format track F000:DD5B ; 4xH = verify read F000:DD5B ; 90H = diagnose F000:DD5B ; 91H = set parameters for drive F000:DD5C loop loc_FDD5B F000:DD5E mov cx, 8 F000:DD61 rep outs dx, byte ptr [esi] F000:DD64 mov cx, 8 F000:DD67 jcxz short loc_FDD6E F000:DD69 mov al, 0FFh F000:DD6B F000:DD6B loc_FDD6B: ; CODE XREF: sub_FDD30+3Cj F000:DD6B out dx, al ; AT hard disk F000:DD6B ; command register: F000:DD6B ; 1?H = Restore to cylinder 0 F000:DD6B ; 7?H = Seek to cylinder F000:DD6B ; 2?H = Read sector F000:DD6B ; 3xH = Write sector F000:DD6B ; 50H = Format track F000:DD6B ; 4xH = verify read F000:DD6B ; 90H = diagnose F000:DD6B ; 91H = set parameters for drive F000:DD6C loop loc_FDD6B F000:DD6E F000:DD6E loc_FDD6E: ; CODE XREF: sub_FDD30+37j F000:DD6E mov ah, 10h F000:DD70 mov al, [bp+var_1] F000:DD73 call sub_FD709 F000:DD76 call sub_FD7A0 F000:DD79 mov ah, 70h ; 'p' F000:DD7B mov al, [bp+var_1] F000:DD7E call sub_FD709 F000:DD81 mov dx, 1F7h F000:DD84 in ax, dx ; AT hard disk F000:DD84 ; status register bits: F000:DD84 ; 0: 1=prev cmd error F000:DD84 ; 2: Corrected data F000:DD84 ; 3: Data Request. Buffer is busy F000:DD84 ; 4: Seek completed F000:DD84 ; 5: Write fault F000:DD84 ; 6: Drive ready (unless bit 4=0) F000:DD84 ; 7: Busy F000:DD85 call sub_FD7A0 F000:DD88 jz short loc_FDD8E F000:DD8A popf F000:DD8B clc F000:DD8C jmp short loc_FDD90 F000:DD8E ; --------------------------------------------------------------------------- F000:DD8E F000:DD8E loc_FDD8E: ; CODE XREF: sub_FDD30+58j F000:DD8E popf F000:DD8F stc F000:DD90 F000:DD90 loc_FDD90: ; CODE XREF: sub_FDD30+5Cj F000:DD90 call sub_FD700 F000:DD93 popad F000:DD95 mov sp, bp F000:DD97 pop bp F000:DD98 retn F000:DD98 sub_FDD30 endp F000:DD98 F000:DD98 ; --------------------------------------------------------------------------- F000:DD99 db 7 dup(0) F000:DDA0 F000:DDA0 ; =============== S U B R O U T I N E ======================================= F000:DDA0 F000:DDA0 ; Attributes: bp-based frame F000:DDA0 F000:DDA0 sub_FDDA0 proc near F000:DDA0 F000:DDA0 var_1 = byte ptr -1 F000:DDA0 F000:DDA0 push bp F000:DDA1 mov bp, sp F000:DDA3 add sp, 0FFFEh F000:DDA6 pushad F000:DDA8 pushf F000:DDA9 call sub_F5A2A F000:DDAC mov [bp+var_1], al F000:DDAF call sub_FD7A0 F000:DDB2 jz short loc_FDDFB F000:DDB4 mov byte ptr fs:14DEh, 0 F000:DDBA mov ah, 60h ; '`' F000:DDBC mov al, [bp+var_1] F000:DDBF call sub_FD709 F000:DDC2 mov dx, 1F1h F000:DDC5 push dx F000:DDC6 mov eax, fs:0F41h F000:DDCB mul bx F000:DDCD mov bx, ax F000:DDCF pop dx F000:DDD0 mov al, bl F000:DDD2 out dx, al F000:DDD3 mov al, bh F000:DDD5 out dx, al F000:DDD6 mov dx, 1F2h F000:DDD9 out dx, al ; AT hard disk controller: F000:DDD9 ; Sector count. F000:DDD9 ; Read/Write count of sectors for operation F000:DDDA mov ah, 0D0h ; 'ð' F000:DDDC mov al, [bp+var_1] F000:DDDF call sub_FD709 F000:DDE2 call sub_FD7A0 F000:DDE5 jz short loc_FDDFB F000:DDE7 mov ah, 70h ; 'p' F000:DDE9 mov al, [bp+var_1] F000:DDEC call sub_FD709 F000:DDEF mov dx, 1F7h F000:DDF2 in al, dx ; AT hard disk F000:DDF2 ; status register bits: F000:DDF2 ; 0: 1=prev cmd error F000:DDF2 ; 2: Corrected data F000:DDF2 ; 3: Data Request. Buffer is busy F000:DDF2 ; 4: Seek completed F000:DDF2 ; 5: Write fault F000:DDF2 ; 6: Drive ready (unless bit 4=0) F000:DDF2 ; 7: Busy F000:DDF3 cmp al, 0C0h ; 'L' F000:DDF5 jnz short loc_FDDFB F000:DDF7 popf F000:DDF8 clc F000:DDF9 jmp short loc_FDDFF F000:DDFB ; --------------------------------------------------------------------------- F000:DDFB F000:DDFB loc_FDDFB: ; CODE XREF: sub_FDDA0+12j F000:DDFB ; sub_FDDA0+45j ... F000:DDFB popf F000:DDFC stc F000:DDFD jmp short $+2 F000:DDFF F000:DDFF loc_FDDFF: ; CODE XREF: sub_FDDA0+59j F000:DDFF call sub_FD700 F000:DE02 popad F000:DE04 mov sp, bp F000:DE06 pop bp F000:DE07 retn F000:DE07 sub_FDDA0 endp F000:DE07 F000:DE07 ; --------------------------------------------------------------------------- F000:DE08 db 8 dup(0) F000:DE10 db 0C3h ; + F000:DE11 F000:DE11 ; =============== S U B R O U T I N E ======================================= F000:DE11 F000:DE11 F000:DE11 sub_FDE11 proc near F000:DE11 int 1 ; - internal hardware - SINGLE-STEP F000:DE11 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:DE13 pushad F000:DE15 push es F000:DE16 call sub_FD019 F000:DE19 mov di, 50h ; 'P' F000:DE1C mov es, di F000:DE1E assume es:nothing F000:DE1E mov large byte ptr es:5555h, 0AAh ; '¬' F000:DE27 mov large byte ptr es:2AAAh, 55h ; 'U' F000:DE30 mov large byte ptr es:5555h, 0A0h ; 'á' F000:DE39 mov eax, 0FFFFFFFFh F000:DE3F mov ecx, 40h ; '@' F000:DE45 movzx edi, bx F000:DE49 shl edi, 8 F000:DE4D rep stos dword ptr es:[edi] F000:DE51 dec edi F000:DE53 F000:DE53 loc_FDE53: ; CODE XREF: sub_FDE11+46j F000:DE53 cmp es:[edi], al F000:DE57 jnz short loc_FDE53 F000:DE59 call sub_FD038 F000:DE5C pop es F000:DE5D assume es:nothing F000:DE5D popad F000:DE5F retn F000:DE5F sub_FDE11 endp F000:DE5F F000:DE60 F000:DE60 ; =============== S U B R O U T I N E ======================================= F000:DE60 F000:DE60 F000:DE60 sub_FDE60 proc near ; CODE XREF: F000:DF9Ap F000:DE60 stc F000:DE61 retn F000:DE61 sub_FDE60 endp F000:DE61 F000:DE61 ; --------------------------------------------------------------------------- F000:DE62 db 0Eh dup(0) F000:DE70 F000:DE70 ; =============== S U B R O U T I N E ======================================= F000:DE70 F000:DE70 F000:DE70 sub_FDE70 proc near F000:DE70 stc F000:DE71 retn F000:DE71 sub_FDE70 endp F000:DE71 F000:DE72 F000:DE72 ; =============== S U B R O U T I N E ======================================= F000:DE72 F000:DE72 F000:DE72 sub_FDE72 proc near F000:DE72 pushad F000:DE74 pushf F000:DE75 push es F000:DE76 call sub_FD019 F000:DE79 cli F000:DE7A mov ax, 50h ; 'P' F000:DE7D movzx ebx, bx F000:DE81 mov es, ax F000:DE83 assume es:nothing F000:DE83 shl ebx, 8 F000:DE87 mov large byte ptr es:5555h, 0AAh ; '¬' F000:DE90 mov large byte ptr es:2AAAh, 55h ; 'U' F000:DE99 mov large byte ptr es:5555h, 0A0h ; 'á' F000:DEA2 mov ecx, 0F8h ; '°' F000:DEA8 F000:DEA8 loc_FDEA8: ; CODE XREF: sub_FDE72+3Ej F000:DEA8 lods byte ptr [esi] F000:DEAA mov es:[ebx], al F000:DEAE inc ebx F000:DEB0 loopd loc_FDEA8 F000:DEB3 mov ecx, 8 F000:DEB9 add esi, 108h F000:DEC0 F000:DEC0 loc_FDEC0: ; CODE XREF: sub_FDE72+56j F000:DEC0 lods byte ptr [esi] F000:DEC2 mov es:[ebx], al F000:DEC6 inc ebx F000:DEC8 loopd loc_FDEC0 F000:DECB test ebx, 0FFh F000:DED2 jnz short loc_FDEDC F000:DED4 dec ebx F000:DED6 F000:DED6 loc_FDED6: ; CODE XREF: sub_FDE72+68j F000:DED6 cmp es:[ebx], al F000:DEDA jnz short loc_FDED6 F000:DEDC F000:DEDC loc_FDEDC: ; CODE XREF: sub_FDE72+60j F000:DEDC call sub_FD038 F000:DEDF pop es F000:DEE0 assume es:nothing F000:DEE0 popf F000:DEE1 popad F000:DEE3 retn F000:DEE3 sub_FDE72 endp F000:DEE3 F000:DEE3 ; --------------------------------------------------------------------------- F000:DEE4 db 0Ch dup(0) F000:DEF0 F000:DEF0 ; =============== S U B R O U T I N E ======================================= F000:DEF0 F000:DEF0 F000:DEF0 sub_FDEF0 proc near F000:DEF0 stc F000:DEF1 retn F000:DEF1 sub_FDEF0 endp F000:DEF1 F000:DEF1 ; --------------------------------------------------------------------------- F000:DEF2 db 0Eh dup(0) F000:DF00 F000:DF00 ; =============== S U B R O U T I N E ======================================= F000:DF00 F000:DF00 F000:DF00 sub_FDF00 proc near F000:DF00 push ecx F000:DF02 push dx F000:DF03 push es F000:DF04 push ebx F000:DF06 push bp F000:DF07 mov al, dl F000:DF09 call sub_F5A35 F000:DF0C cmp al, 55h ; 'U' F000:DF0E mov ax, 0 F000:DF11 jnz short loc_FDF68 F000:DF13 call sub_FD019 F000:DF16 pushf F000:DF17 cli F000:DF18 mov ax, 50h ; 'P' F000:DF1B mov es, ax F000:DF1D assume es:nothing F000:DF1D mov large byte ptr es:5555h, 0AAh ; '¬' F000:DF26 mov large byte ptr es:2AAAh, 55h ; 'U' F000:DF2F mov large byte ptr es:5555h, 90h ; 'É' F000:DF38 call sub_FDF70 F000:DF3B mov ebx, large es:0 F000:DF44 mov large byte ptr es:5555h, 0AAh ; '¬' F000:DF4D mov large byte ptr es:2AAAh, 55h ; 'U' F000:DF56 mov large byte ptr es:5555h, 0F0h ; '­' F000:DF5F call sub_FDF70 F000:DF62 call sub_FD038 F000:DF65 mov ax, bx F000:DF67 popf F000:DF68 F000:DF68 loc_FDF68: ; CODE XREF: sub_FDF00+11j F000:DF68 pop bp F000:DF69 pop ebx F000:DF6B pop es F000:DF6C assume es:nothing F000:DF6C pop dx F000:DF6D pop ecx F000:DF6F retn F000:DF6F sub_FDF00 endp F000:DF6F F000:DF70 F000:DF70 ; =============== S U B R O U T I N E ======================================= F000:DF70 F000:DF70 F000:DF70 sub_FDF70 proc near ; CODE XREF: sub_FDF00+38p F000:DF70 ; sub_FDF00+5Fp F000:DF70 mov ecx, 2710h F000:DF76 F000:DF76 loc_FDF76: ; CODE XREF: sub_FDF70+8j F000:DF76 out 0EDh, al F000:DF78 loopd loc_FDF76 F000:DF7B retn F000:DF7B sub_FDF70 endp F000:DF7B F000:DF7B ; --------------------------------------------------------------------------- F000:DF7C db 4 dup(0) F000:DF80 F000:DF80 ; =============== S U B R O U T I N E ======================================= F000:DF80 F000:DF80 F000:DF80 sub_FDF80 proc near F000:DF80 stc F000:DF81 retn F000:DF81 sub_FDF80 endp F000:DF81 F000:DF82 ; --------------------------------------------------------------------------- F000:DF82 int 1 ; - internal hardware - SINGLE-STEP F000:DF82 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:DF84 pushad F000:DF86 pushf F000:DF87 push es F000:DF88 push ds F000:DF89 push esi F000:DF8B mov edi, 13DEh F000:DF91 push fs F000:DF93 pop es F000:DF94 assume es:nothing F000:DF94 mov ecx, fs:0F18h F000:DF9A call sub_FDE60 F000:DF9D add edi, ecx F000:DFA0 int 1 ; - internal hardware - SINGLE-STEP F000:DFA0 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:DFA2 mov cx, 8 F000:DFA5 rep movs byte ptr es:[edi], byte ptr [esi] F000:DFA8 mov esi, 13DEh F000:DFAE push fs F000:DFB0 pop ds F000:DFB1 assume ds:nothing F000:DFB1 call sub_FD019 F000:DFB4 cli F000:DFB5 cld F000:DFB6 mov ax, 50h ; 'P' F000:DFB9 movzx edi, bx F000:DFBD mov es, ax F000:DFBF assume es:nothing F000:DFBF shl edi, 8 F000:DFC3 mov large byte ptr es:5555h, 0AAh ; '¬' F000:DFCC mov large byte ptr es:2AAAh, 55h ; 'U' F000:DFD5 mov large byte ptr es:5555h, 0A0h ; 'á' F000:DFDE mov ecx, 100h F000:DFE4 rep movs byte ptr es:[edi], byte ptr [esi] F000:DFE7 dec edi F000:DFE9 int 1 ; - internal hardware - SINGLE-STEP F000:DFE9 ; generated at end of each machine instruction if TF bit in FLAGS is set F000:DFEB F000:DFEB loc_FDFEB: ; CODE XREF: F000:DFEFj F000:DFEB cmp es:[edi], al F000:DFEF jnz short loc_FDFEB F000:DFF1 call sub_FD038 F000:DFF4 pop ds F000:DFF5 assume ds:nothing F000:DFF5 pop es F000:DFF6 assume es:nothing F000:DFF6 popf F000:DFF7 popad F000:DFF9 retn F000:DFF9 ; --------------------------------------------------------------------------- F000:DFFA db 185Fh dup(0), 0E9h, 94h, 37h, 685h dup(0) F000:FEE1 dw 0AA0Fh F000:FEE3 db 2Ah dup(0) F000:FF0D dw 0F859h F000:FF0F db 71h dup(0) F000:FF80 db 62h ; b F000:FF81 db 30h ; 0 F000:FF82 db 2Eh ; . F000:FF83 db 36h ; 6 F000:FF84 db 30h ; 0 F000:FF85 db 0Bh dup(0) F000:FF90 aThu01032002102 db 'Thu 01/03/2002 10:27a',0 F000:FFA9 db 33h dup(0), 2, 3 dup(0) F000:FFE0 db 68h F000:FFE1 db 0EBh ; Û F000:FFE2 db 49h ; I F000:FFE3 db 0C3h ; + F000:FFE4 db 0Ch dup(0) F000:FFF0 ; --------------------------------------------------------------------------- F000:FFF0 F000:FFF0 BIOS_ENTRY: F000:FFF0 jmp BIOS_INIT1 F000:FFF0 ; --------------------------------------------------------------------------- F000:FFF3 aUlc_code db 'ulc_code',0 F000:FFFC db 0FCh ; Ø ; BIOS is not protected by checksum F000:FFFD dw 0 F000:FFFD BIOS_F000 ends F000:FFFE db 0 F000:FFFF db 0