; ; ROM BIOS for COMPAQ DeskPro 386-16 ; Rev J.4, from parts 109592-001 and 109591-001, dated '01/28/88' ; (C)Copyright COMPAQ Computer Corporation 1982,83,84,85,86,87-All rights reserved. ; ; Listing produced by NDISASM, 2015-Apr-04 ; Additional post-processing performed by the PCjs TextOut module ; All post-processing, comments, etc., copyright © 2012-2017 Jeff Parsons ; ; This file is part of PCjs, a computer emulation software project at . ; ; Overview ; -------- ; This 32Kb ROM image is ORG'ed at 0x8000, because most of its code is designed to run ; at real-mode addresses F000:8000 through F000:FFFF. ; ; And even though the 80386 resets with CS:IP set to F000:FFF0, the physical base address ; of CS is set to %FFFF0000, which means the ROM must also be mapped at physical addresses ; %FFFF8000 through %FFFFFFFF. ; ; Additionally, DeskPro 386 systems mirror this 32Kb ROM at real-mode address F000:0000 ; through F000:7FFF. And that region is similarly mirrored at physical addresses %FFFF0000 ; through %FFFF7FFFF. ; ; In other words, both 32Kb halves of the last 64Kb of both the first and last megabyte ; of the 80386's 4Gb address space are physically mapped to this ROM image. ; ; Finally, the DeskPro 386 has a "RAM Relocation" feature that allows 128Kb of RAM at ; %00FE0000 through %00FFFFFF to be mapped to %000E0000 through %000FFFFF, effectively ; replacing the ROM in the first megabyte with write-protected RAM; the top 64Kb of that ; RAM must first be initialized with the 64Kb at %000F0000 prior to remapping. It's also ; possible to copy external ROMs from %000C0000 through %000EFFFF into the bottom 64Kb of ; that RAM, but this is only done for ROMs known to contain relocatable code; eg, a COMPAQ ; Video Graphics Controller (VGC) Board. ; ; Every DeskPro 386 system must have a MINIMUM of 1Mb of RAM, of which either 256Kb, ; 512Kb, or 640Kb can be physically mapped as conventional memory (at the bottom of the ; first megabyte), with the remainder (either 768Kb, 512Kb, or 384Kb) physically mapped ; to the top of the 16th megabyte (ending at address %00FFFFFF), the last 128Kb of which ; is used by the "RAM Relocation" feature. The remaining memory immediately below that ; 128Kb (ie, below %00FE0000) can only be accessed by special system software, such as CEMM. ; ; COMPAQ refers to that remaining memory as "Compaq Built-in Memory". ; ; As the COMPAQ 386/25 TechRef explains: ; ; A data structure in memory indicates how much of the COMPAQ Built-in Memory (F40000h ; to FE0000h) is [available and] in use. This memory is allocated downward (decreasing ; addresses) starting at address FE0000h. Applications developed specifically for the ; COMPAQ DESKPRO 386/25 Personal Computer, such as CEMM, read and modify this data ; structure to allocate and deallocate portions of the COMPAQ Built-in Memory for their ; use. The built-in memory data structure is located in write-protected memory at segment ; F000h. The offset is specified by the word at F000:FFE0. ; ; The format of the data structure is given [below]. Because the data structure resides ; in write-protected memory, the write-protection must be disabled when updating the data ; structure. ; ; Word Description ; ---- ----------- ; 0 FFFFh indicates that no COMPAQ Built-in Memory is available. Otherwise, words ; 1, 2, and 3 define the amount of memory available. ; ; 1 Total COMPAQ Built-in Memory size in 16-byte blocks. ; ; 2 Available built-in memory in 16-byte blocks. ; ; 3 Address for the last-used byte. The byte below (lower address) this byte is the ; first free byte in the COMPAQ Built-in Memory. ; org 0x8000 CMD8042_WRITE_OUTPORT equ 0xD1 ; ; BIOS DATA OFFSETS (RELATIVE TO SEGMENT 0x40) ; MOTOR_STATUS equ 0x3F MOTOR_COUNT equ 0x40 xchg bh,bl ; 00008000 86FB '..' xor bh,bh ; 00008002 32FF '2.' shl bx,1 ; 00008004 D1E3 '..' mov dx,[bx+0x50] ; 00008006 8B975000 '..P.' mov [bp+0x2],dx ; 0000800A 895602 '.V.' mov cx,[0x60] ; 0000800D 8B0E6000 '..`.' mov [bp+0x4],cx ; 00008011 894E04 '.N.' mov word [bp+0x0],0x0 ; 00008014 C746000000 '.F...' ret ; 00008019 C3 '.' mov al,0xe ; 0000801A B00E '..' out dx,al ; 0000801C EE '.' inc dx ; 0000801D 42 'B' in al,dx ; 0000801E EC '.' mov ah,al ; 0000801F 8AE0 '..' dec dx ; 00008021 4A 'J' mov al,0xf ; 00008022 B00F '..' out dx,al ; 00008024 EE '.' inc dx ; 00008025 42 'B' in al,dx ; 00008026 EC '.' ret ; 00008027 C3 '.' ; ; Protected-mode memory probe ; x8028: push ax ; 00008028 50 'P' push bx ; 00008029 53 'S' push cx ; 0000802A 51 'Q' push es ; 0000802B 06 '.' mov ax,0x48 ; 0000802C B84800 '.H.' mov es,ax ; 0000802F 8EC0 '..' mov cl,0x2 ; 00008031 B102 '..' mov ch,0x9 ; 00008033 B509 '..' mov al,0x1 ; 00008035 B001 '..' call x8051 ; 00008037 E81700 '...' add ax,0x80 ; 0000803A 058000 '...' mov [0x7c],ax ; 0000803D A37C00 '.|.' mov cl,0x10 ; 00008040 B110 '..' mov ch,0xfd ; 00008042 B5FD '..' mov al,0x1 ; 00008044 B001 '..' call x8051 ; 00008046 E80800 '...' mov [0x7e],ax ; 00008049 A37E00 '.~.' pop es ; 0000804C 07 '.' pop cx ; 0000804D 59 'Y' pop bx ; 0000804E 5B '[' pop ax ; 0000804F 58 'X' ret ; 00008050 C3 '.' ; ; (AL) == block increment (eg, 0x1) ; (CL) == starting 64Kb block number (eg, 0x02, or 0x10) ; (CH) == maximum 64Kb block number (eg, 0x09, or 0xFD) ; x8051: push bx ; 00008051 53 'S' push dx ; 00008052 52 'R' push bp ; 00008053 55 'U' mov dl,al ; 00008054 8AD0 '..' mov bp,es ; 00008056 8CC5 '..' ; ; 0x4C is the base portion of the descriptor at DS:0x48 ; mov [0x4c],cl ; 00008058 880E4C00 '..L.' x805c: mov es,bp ; 0000805C 8EC5 '..' mov bx,0x0 ; 0000805E BB0000 '...' mov word [es:bx],0x0 ; 00008061 26C7070000 '&....' mov word [es:bx+0x2],0xffff ; 00008066 26C74702FFFF '&.G...' cld ; 0000806C FC '.' cld ; 0000806D FC '.' mov bx,[es:bx] ; 0000806E 268B1F '&..' cld ; 00008071 FC '.' cld ; 00008072 FC '.' cld ; 00008073 FC '.' cld ; 00008074 FC '.' cld ; 00008075 FC '.' cmp bx,byte +0x0 ; 00008076 83FB00 '...' mov byte [es:0x0],0x0 ; 00008079 26C606000000 '&.....' jz x8089 ; 0000807F 7408 't.' mov al,[0x4c] ; 00008081 A04C00 '.L.' sub al,cl ; 00008084 2AC1 '*.' jmp short x809c ; 00008086 EB14 '..' nop ; 00008088 90 '.' x8089: cmp [0x4c],ch ; 00008089 382E4C00 '8.L.' jz x8095 ; 0000808D 7406 't.' ; ; Bump the base portion of the descriptor at DS:0x48 to the next 64Kb block ; add [0x4c],dl ; 0000808F 00164C00 '..L.' jmp short x805c ; 00008093 EBC7 '..' x8095: mov al,[0x4c] ; 00008095 A04C00 '.L.' sub al,cl ; 00008098 2AC1 '*.' inc al ; 0000809A FEC0 '..' x809c: xor ah,ah ; 0000809C 32E4 '2.' shl ax,0x6 ; 0000809E C1E006 '...' pop bp ; 000080A1 5D ']' pop dx ; 000080A2 5A 'Z' pop bx ; 000080A3 5B '[' ret ; 000080A4 C3 '.' ; ; Display (AX) as a 5-digit, zero-padded number in the top-left corner of ; the display, using (ES) as the segment of the video buffer. ; ; The number is followed by " KB OK", for a total of 11 (0x0B) characters. ; ; This function works for both Mono and CGA displays because it writes to both ; video buffers (%B0000 via ES:0000 and %B8000 via ES:8000). ; ; Called by CS:DBD6 in the normal case, where CS == 0x30 and ES == 0x40. ; x80a5: push bx ; 000080A5 53 'S' push cx ; 000080A6 51 'Q' push dx ; 000080A7 52 'R' push si ; 000080A8 56 'V' push di ; 000080A9 57 'W' mov bx,0xa ; 000080AA BB0A00 '.',0x0A,'.' mov cx,0x5 ; 000080AD B90500 '...' mov di,0x8 ; 000080B0 BF0800 '...' x80b3: xor dx,dx ; 000080B3 33D2 '3.' div bx ; 000080B5 F7F3 '..' add dl,0x30 ; 000080B7 80C230 '..0' mov dh,0x7 ; 000080BA B607 '..' mov [di+0x93],dx ; 000080BC 89959300 '....' dec di ; 000080C0 4F 'O' dec di ; 000080C1 4F 'O' loop x80b3 ; 000080C2 E2EF '..' cld ; 000080C4 FC '.' mov si,0x93 ; 000080C5 BE9300 '...' mov di,0x0 ; 000080C8 BF0000 '...' mov cx,0xb ; 000080CB B90B00 '...' rep movsw ; 000080CE F3A5 '..' cld ; 000080D0 FC '.' mov si,0x93 ; 000080D1 BE9300 '...' mov di,0x8000 ; 000080D4 BF0080 '...' mov cx,0xb ; 000080D7 B90B00 '...' rep movsw ; 000080DA F3A5 '..' pop di ; 000080DC 5F '_' pop si ; 000080DD 5E '^' pop dx ; 000080DE 5A 'Z' pop cx ; 000080DF 59 'Y' pop bx ; 000080E0 5B '[' ret ; 000080E1 C3 '.' ; ; Use INT 0x15, (AH) == 0x89, to enter protected-mode ; ; Returns ZF set if successful ; ; See COMPAQ 386/25 TechRef, p.4-98 for details ; x80e2: push bx ; 000080E2 53 'S' push cx ; 000080E3 51 'Q' push dx ; 000080E4 52 'R' push di ; 000080E5 57 'W' push si ; 000080E6 56 'V' call x8102 ; 000080E7 E81800 '...' mov bh,0x8 ; 000080EA B708 '..' mov bl,0x70 ; 000080EC B370 '.p' mov ax,0x1c00 ; 000080EE B8001C '...' mov es,ax ; 000080F1 8EC0 '..' mov si,0x0 ; 000080F3 BE0000 '...' mov ah,0x89 ; 000080F6 B489 '..' int 0x15 ; 000080F8 CD15 '..' or ah,ah ; 000080FA 0AE4 0x0A,'.' pop si ; 000080FC 5E '^' pop di ; 000080FD 5F '_' pop dx ; 000080FE 5A 'Z' pop cx ; 000080FF 59 'Y' pop bx ; 00008100 5B '[' ret ; 00008101 C3 '.' ; ; Descriptor table initialization ; ; Used by x80e2 to prepare for an INT 0x15 call to enter protected-mode ; x8102: pusha ; 00008102 60 '`' push ds ; 00008103 1E '.' push es ; 00008104 06 '.' mov ax,0x1c00 ; 00008105 B8001C '...' mov ds,ax ; 00008108 8ED8 '..' mov es,ax ; 0000810A 8EC0 '..' cld ; 0000810C FC '.' xor ax,ax ; 0000810D 33C0 '3.' mov di,0x0 ; 0000810F BF0000 '...' mov cx,0x4 ; 00008112 B90400 '...' rep stosw ; 00008115 F3AB '..' mov si,0x8 ; 00008117 BE0800 '...' mov ax,0x1c00 ; 0000811A B8001C '...' mov bx,0x10 ; 0000811D BB1000 '...' mul bx ; 00008120 F7E3 '..' add ax,0x0 ; 00008122 050000 '...' adc dl,0x0 ; 00008125 80D200 '...' mov [si+0x2],ax ; 00008128 894402 '.D.' mov [si+0x4],dl ; 0000812B 885404 '.T.' mov byte [si+0x5],0x92 ; 0000812E C6440592 '.D..' mov word [si],0x5f ; 00008132 C7045F00 '.._.' mov si,0x10 ; 00008136 BE1000 '...' mov ax,0xf000 ; 00008139 B800F0 '...' mov bx,0x10 ; 0000813C BB1000 '...' mul bx ; 0000813F F7E3 '..' add ax,0xf821 ; 00008141 0521F8 '.!.' adc dl,0x0 ; 00008144 80D200 '...' mov [si+0x2],ax ; 00008147 894402 '.D.' mov [si+0x4],dl ; 0000814A 885404 '.T.' mov byte [si+0x5],0x92 ; 0000814D C6440592 '.D..' mov word [si],0x7 ; 00008151 C7040700 '....' mov si,0x30 ; 00008155 BE3000 '.0.' mov ax,cs ; 00008158 8CC8 '..' mov bl,0x9a ; 0000815A B39A '..' call x81cb ; 0000815C E86C00 '.l.' mov si,0x18 ; 0000815F BE1800 '...' mov ax,0x1c00 ; 00008162 B8001C '...' mov bl,0x92 ; 00008165 B392 '..' call x81cb ; 00008167 E86100 '.a.' mov si,0x20 ; 0000816A BE2000 '. .' mov ax,0x40 ; 0000816D B84000 '.@.' mov bl,0x92 ; 00008170 B392 '..' call x81cb ; 00008172 E85600 '.V.' mov si,0x28 ; 00008175 BE2800 '.(.' mov ax,ss ; 00008178 8CD0 '..' mov bl,0x92 ; 0000817A B392 '..' call x81cb ; 0000817C E84C00 '.L.' mov si,0x40 ; 0000817F BE4000 '.@.' mov ax,0xb000 ; 00008182 B800B0 '...' mov bl,0x92 ; 00008185 B392 '..' call x81cb ; 00008187 E84100 '.A.' mov si,0x48 ; 0000818A BE4800 '.H.' mov ax,0x2000 ; 0000818D B80020 '.. ' mov bl,0x92 ; 00008190 B392 '..' call x81cb ; 00008192 E83600 '.6.' mov si,0x50 ; 00008195 BE5000 '.P.' mov ax,0xc000 ; 00008198 B800C0 '...' mov bl,0x92 ; 0000819B B392 '..' call x81cb ; 0000819D E82B00 '.+.' mov byte [0x54],0xc0 ; 000081A0 C6065400C0 '..T..' mov byte [0x57],0x80 ; 000081A5 C606570080 '..W..' mov si,0x58 ; 000081AA BE5800 '.X.' mov ax,0xf000 ; 000081AD B800F0 '...' mov bl,0x92 ; 000081B0 B392 '..' call x81cb ; 000081B2 E81600 '...' mov ax,cs ; 000081B5 8CC8 '..' mov ds,ax ; 000081B7 8ED8 '..' mov si,0xf821 ; 000081B9 BE21F8 '.!.' mov di,0xa9 ; 000081BC BFA900 '...' mov cx,0x7 ; 000081BF B90700 '...' inc cx ; 000081C2 41 'A' shr cx,1 ; 000081C3 D1E9 '..' rep movsw ; 000081C5 F3A5 '..' pop es ; 000081C7 07 '.' pop ds ; 000081C8 1F '.' popa ; 000081C9 61 'a' ret ; 000081CA C3 '.' ; ; Descriptor initializer ; ; Used by x8102 to initialize a descriptor table ; x81cb: mov word [si],0xffff ; 000081CB C704FFFF '....' mov bh,ah ; 000081CF 8AFC '..' shl ax,0x4 ; 000081D1 C1E004 '...' shr bh,0x4 ; 000081D4 C0EF04 '...' mov [si+0x2],ax ; 000081D7 894402 '.D.' mov [si+0x4],bh ; 000081DA 887C04 '.|.' mov [si+0x5],bl ; 000081DD 885C05 '.\.' mov word [si+0x6],0x0 ; 000081E0 C744060000 '.D...' ret ; 000081E5 C3 '.' x81e6: push ax ; 000081E6 50 'P' mov al,0x8e ; 000081E7 B08E '..' call xb544 ; 000081E9 E85833 '.X3' test al,0xc0 ; 000081EC A8C0 '..' jz x81f3 ; 000081EE 7403 't.' stc ; 000081F0 F9 '.' jmp short x8212 ; 000081F1 EB1F '..' x81f3: mov al,0x96 ; 000081F3 B096 '..' call xb544 ; 000081F5 E84C33 '.L3' mov ah,al ; 000081F8 8AE0 '..' mov al,0x95 ; 000081FA B095 '..' call xb544 ; 000081FC E84533 '.E3' mov [0x76],ax ; 000081FF A37600 '.v.' mov al,0x98 ; 00008202 B098 '..' call xb544 ; 00008204 E83D33 '.=3' mov ah,al ; 00008207 8AE0 '..' mov al,0x97 ; 00008209 B097 '..' call xb544 ; 0000820B E83633 '.63' mov [0x78],ax ; 0000820E A37800 '.x.' clc ; 00008211 F8 '.' x8212: pop ax ; 00008212 58 'X' ret ; 00008213 C3 '.' x8214: push ax ; 00008214 50 'P' mov al,0x8e ; 00008215 B08E '..' call xb544 ; 00008217 E82A33 '.*3' mov ah,al ; 0000821A 8AE0 '..' or ah,0x10 ; 0000821C 80CC10 '...' or cl,cl ; 0000821F 0AC9 0x0A,'.' jnz x8226 ; 00008221 7503 'u.' and ah,0xef ; 00008223 80E4EF '...' x8226: mov al,0x8e ; 00008226 B08E '..' call xb549 ; 00008228 E81E33 '..3' pop ax ; 0000822B 58 'X' ret ; 0000822C C3 '.' x822d: push si ; 0000822D 56 'V' call xc704 ; 0000822E E8D344 '..D' pop bx ; 00008231 5B '[' call x8257 ; 00008232 E82200 '.".' mov dx,0x0 ; 00008235 BA0000 '...' mov bx,err201 ; 00008238 BBA6B6 '...' mov cx,err201_len ; 0000823B B91100 '...' call xc745 ; 0000823E E80445 '..E' ret ; 00008241 C3 '.' x8242: push si ; 00008242 56 'V' call xc704 ; 00008243 E8BE44 '..D' pop bx ; 00008246 5B '[' call x8257 ; 00008247 E80D00 '.',0x0D,'.' mov dx,0x0 ; 0000824A BA0000 '...' mov bx,err203 ; 0000824D BBB7B6 '...' mov cx,err203_len ; 00008250 B91900 '...' call xc745 ; 00008253 E8EF44 '..D' ret ; 00008256 C3 '.' x8257: mov ax,[0x60] ; 00008257 A16000 '.`.' and al,0xc0 ; 0000825A 24C0 '$.' cmp al,0x40 ; 0000825C 3C40 '<@' jz x8263 ; 0000825E 7403 't.' jmp x82e7 ; 00008260 E98400 '...' x8263: mov si,0xb706 ; 00008263 BE06B7 '...' cmp bl,0xfe ; 00008266 80FBFE '...' jz x82de ; 00008269 7473 'ts' cmp bl,0xff ; 0000826B 80FBFF '...' jz x82de ; 0000826E 746E 'tn' or bl,bl ; 00008270 0ADB 0x0A,'.' jz x82de ; 00008272 746A 'tj' mov bh,0x10 ; 00008274 B710 '..' mov al,ah ; 00008276 8AC4 '..' and al,0x3 ; 00008278 2403 '$.' cmp al,0x3 ; 0000827A 3C03 '<.' jz x82e7 ; 0000827C 7469 'ti' cmp al,0x2 ; 0000827E 3C02 '<.' jz x8284 ; 00008280 7402 't.' mov bh,0x40 ; 00008282 B740 '.@' x8284: cmp bl,bh ; 00008284 3ADF ':.' jc x82de ; 00008286 7256 'rV' mov si,0xb713 ; 00008288 BE13B7 '...' add bh,0x10 ; 0000828B 80C710 '...' mov al,ah ; 0000828E 8AC4 '..' and al,0xc ; 00008290 240C '$.' shr al,0x2 ; 00008292 C0E802 '...' cmp al,0x3 ; 00008295 3C03 '<.' jz x82e7 ; 00008297 744E 'tN' cmp al,0x2 ; 00008299 3C02 '<.' jz x82a0 ; 0000829B 7403 't.' add bh,0x30 ; 0000829D 80C730 '..0' x82a0: cmp bl,bh ; 000082A0 3ADF ':.' jc x82de ; 000082A2 723A 'r:' mov si,0xb71d ; 000082A4 BE1DB7 '...' add bh,0x10 ; 000082A7 80C710 '...' mov al,ah ; 000082AA 8AC4 '..' and al,0x30 ; 000082AC 2430 '$0' shr al,0x4 ; 000082AE C0E804 '...' cmp al,0x3 ; 000082B1 3C03 '<.' jz x82e7 ; 000082B3 7432 't2' cmp al,0x2 ; 000082B5 3C02 '<.' jz x82bc ; 000082B7 7403 't.' add bh,0x30 ; 000082B9 80C730 '..0' x82bc: cmp bl,bh ; 000082BC 3ADF ':.' jc x82de ; 000082BE 721E 'r.' mov si,0xb727 ; 000082C0 BE27B7 '.',0x27,'.' add bh,0x10 ; 000082C3 80C710 '...' mov al,ah ; 000082C6 8AC4 '..' and al,0xc0 ; 000082C8 24C0 '$.' shr al,0x6 ; 000082CA C0E806 '...' cmp al,0x3 ; 000082CD 3C03 '<.' jz x82e7 ; 000082CF 7416 't.' cmp al,0x2 ; 000082D1 3C02 '<.' jz x82da ; 000082D3 7405 't.' add bh,0x30 ; 000082D5 80C730 '..0' jz x82de ; 000082D8 7404 't.' x82da: cmp bl,bh ; 000082DA 3ADF ':.' jnc x82e7 ; 000082DC 7309 's.' x82de: push ds ; 000082DE 1E '.' mov ax,cs ; 000082DF 8CC8 '..' mov ds,ax ; 000082E1 8ED8 '..' call xe282 ; 000082E3 E89C5F '.._' pop ds ; 000082E6 1F '.' x82e7: ret ; 000082E7 C3 '.' x82e8: push ds ; 000082E8 1E '.' mov ax,cs ; 000082E9 8CC8 '..' mov ds,ax ; 000082EB 8ED8 '..' mov si,0x8000 ; 000082ED BE0080 '...' xor ah,ah ; 000082F0 32E4 '2.' mov cx,0x8000 ; 000082F2 B90080 '...' x82f5: lodsb ; 000082F5 AC '.' add ah,al ; 000082F6 02E0 '..' loop x82f5 ; 000082F8 E2FB '..' jz x830a ; 000082FA 740E 't.' mov dx,0x5000 ; 000082FC BA0050 '..P' mov bx,err101 ; 000082FF BB5AB7 '.Z.' mov cx,err101_len ; 00008302 B90F00 '...' call xc745 ; 00008305 E83D44 '.=D' x8308: jmp short x8308 ; 00008308 EBFE ; HANG THE MACHINE x830a: pop ds ; 0000830A 1F '.' ret ; 0000830B C3 '.' xor [bx],al ; 0000830C 3007 '0.' xor [bx],al ; 0000830E 3007 '0.' xor [bx],al ; 00008310 3007 '0.' xor [bx],al ; 00008312 3007 '0.' xor [bx],al ; 00008314 3007 '0.' and [bx],al ; 00008316 2007 ' .' dec bx ; 00008318 4B 'K' pop es ; 00008319 07 '.' inc dx ; 0000831A 42 'B' pop es ; 0000831B 07 '.' and [bx],al ; 0000831C 2007 ' .' dec di ; 0000831E 4F 'O' pop es ; 0000831F 07 '.' dec bx ; 00008320 4B 'K' pop es ; 00008321 07 '.' mov ah,[0x49] ; 00008322 8A264900 '.&I.' mov [bp+0x1],ah ; 00008326 886601 '.f.' ret ; 00008329 C3 '.' push ds ; 0000832A 1E '.' cmp al,0x3 ; 0000832B 3C03 '<.' ja x838c ; 0000832D 775D 'w]' push es ; 0000832F 06 '.' mov bh,[bp+0x7] ; 00008330 8A7E07 '.~.' mov ah,0x3 ; 00008333 B403 '..' call x83db ; 00008335 E8A300 '...' push dx ; 00008338 52 'R' mov dx,[bp+0x2] ; 00008339 8B5602 '.V.' mov ah,0x2 ; 0000833C B402 '..' call x83db ; 0000833E E89A00 '...' mov cx,[bp+0x4] ; 00008341 8B4E04 '.N.' jcxz x837c ; 00008344 E336 '.6' mov si,[bp+0xc] ; 00008346 8B760C '.v.' mov ax,[bp+0x10] ; 00008349 8B4610 '.F.' mov ds,ax ; 0000834C 8ED8 '..' cld ; 0000834E FC '.' x834f: lodsb ; 0000834F AC '.' mov bx,[bp+0x6] ; 00008350 8B5E06 '.^.' cmp byte [bp+0x0],0x1 ; 00008353 807E0001 '.~..' jna x836c ; 00008357 7613 'v.' cmp al,0x7 ; 00008359 3C07 '<.' jz x836c ; 0000835B 740F 't.' cmp al,0x8 ; 0000835D 3C08 '<.' jz x836c ; 0000835F 740B 't.' cmp al,0xa ; 00008361 3C0A '<',0x0A jz x836c ; 00008363 7407 't.' cmp al,0xd ; 00008365 3C0D '<',0x0D jz x836c ; 00008367 7403 't.' xchg ax,bx ; 00008369 93 '.' lodsb ; 0000836A AC '.' xchg ax,bx ; 0000836B 93 '.' x836c: push cx ; 0000836C 51 'Q' push ds ; 0000836D 1E '.' push ax ; 0000836E 50 'P' mov ax,0x40 ; 0000836F B84000 '.@.' mov ds,ax ; 00008372 8ED8 '..' pop ax ; 00008374 58 'X' call x8395 ; 00008375 E81D00 '...' pop ds ; 00008378 1F '.' pop cx ; 00008379 59 'Y' loop x834f ; 0000837A E2D3 '..' x837c: pop dx ; 0000837C 5A 'Z' pop es ; 0000837D 07 '.' mov bh,[bp+0x7] ; 0000837E 8A7E07 '.~.' test byte [bp+0x0],0x1 ; 00008381 F6460001 '.F..' jnz x838c ; 00008385 7505 'u.' mov ah,0x2 ; 00008387 B402 '..' call x83db ; 00008389 E84F00 '.O.' x838c: pop ds ; 0000838C 1F '.' mov ah,[0x49] ; 0000838D 8A264900 '.&I.' mov [bp+0x1],ah ; 00008391 886601 '.f.' ret ; 00008394 C3 '.' x8395: cmp al,0x7 ; 00008395 3C07 '<.' jz x83d4 ; 00008397 743B 't;' cmp al,0x8 ; 00008399 3C08 '<.' db 't7<',0x0A,'t3<',0x0D,'t/' mov cx,0x1 ; 000083A5 B90100 '...' mov ah,0x9 ; 000083A8 B409 '..' call x83db ; 000083AA E82E00 '...' mov ah,0x3 ; 000083AD B403 '..' call x83db ; 000083AF E82900 '.).' inc dl ; 000083B2 FEC2 '..' cmp dl,[0x4a] ; 000083B4 3A164A00 ':.J.' jnz x83ce ; 000083B8 7514 'u.' xor dl,dl ; 000083BA 32D2 '2.' inc dh ; 000083BC FEC6 '..' cmp dh,0x19 ; 000083BE 80FE19 '...' jnz x83ce ; 000083C1 750B 'u.' dec dh ; 000083C3 FECE '..' mov al,0xa ; 000083C5 B00A '.',0x0A mov ah,0xe ; 000083C7 B40E '..' call x83db ; 000083C9 E80F00 '...' xor dl,dl ; 000083CC 32D2 '2.' x83ce: mov ah,0x2 ; 000083CE B402 '..' call x83db ; 000083D0 E80800 '...' x83d3: ret ; 000083D3 C3 '.' x83d4: mov ah,0xe ; 000083D4 B40E '..' call x83db ; 000083D6 E80200 '...' jmp short x83d3 ; 000083D9 EBF8 '..' x83db: push ax ; 000083DB 50 'P' push bx ; 000083DC 53 'S' push es ; 000083DD 06 '.' mov bx,0x0 ; 000083DE BB0000 '...' mov es,bx ; 000083E1 8EC3 '..' mov bx,0x42 ; 000083E3 BB4200 '.B.' mov ax,cs ; 000083E6 8CC8 '..' cmp [es:bx],ax ; 000083E8 263907 '&9.' pop es ; 000083EB 07 '.' pop bx ; 000083EC 5B '[' pop ax ; 000083ED 58 'X' jz x83f3 ; 000083EE 7403 't.' int 0x10 ; 000083F0 CD10 '..' ret ; 000083F2 C3 '.' x83f3: pushf ; 000083F3 9C '.' push cs ; 000083F4 0E '.' call xf065 ; 000083F5 E86D6C '.ml' ret ; 000083F8 C3 '.' x83f9: push cs ; 000083F9 0E '.' pop ds ; 000083FA 1F '.' cld ; 000083FB FC '.' mov al,0xa0 ; 000083FC B0A0 '..' out 0x84,al ; 000083FE E684 '..' mov dx,0x3f2 ; 00008400 BAF203 '...' mov al,0x0 ; 00008403 B000 '..' out dx,al ; 00008405 EE '.' mov al,0xa1 ; 00008406 B0A1 '..' out 0x84,al ; 00008408 E684 '..' mov bx,0x64 ; 0000840A BB6400 '.d.' call xc638 ; 0000840D E82842 '.(B' ; CALL DELAY(BX) mov al,0xc ; 00008410 B00C '..' out dx,al ; 00008412 EE '.' mov al,0xa2 ; 00008413 B0A2 '..' out 0x84,al ; 00008415 E684 '..' mov bx,0x64 ; 00008417 BB6400 '.d.' call xc638 ; 0000841A E81B42 '..B' ; CALL DELAY(BX) mov si,0x849f ; 0000841D BE9F84 '...' mov di,0x4 ; 00008420 BF0400 '...' call x8d8d ; 00008423 E86709 '.g.' jc x847c ; 00008426 7254 'rT' mov al,0x1c ; 00008428 B01C '..' mov dx,0x3f2 ; 0000842A BAF203 '...' out dx,al ; 0000842D EE '.' mov al,0xa3 ; 0000842E B0A3 '..' out 0x84,al ; 00008430 E684 '..' xor bp,bp ; 00008432 33ED '3.' x8434: call x8d8d ; 00008434 E85609 '.V.' jc x847c ; 00008437 7243 'rC' mov bx,0x1f4 ; 00008439 BBF401 '...' call xc638 ; 0000843C E8F941 '..A' ; CALL DELAY(BX) call x8d8d ; 0000843F E84B09 '.K.' jc x847c ; 00008442 7238 'r8' mov cx,0x64 ; 00008444 B96400 '.d.' x8447: call xe944 ; 00008447 E8FA64 '..d' jc x847c ; 0000844A 7230 'r0' loope x8447 ; 0000844C E1F9 '..' jz x847c ; 0000844E 742C 't,' call x919a ; 00008450 E8470D '.G',0x0D in al,dx ; 00008453 EC '.' test al,0xc0 ; 00008454 A8C0 '..' jnz x845b ; 00008456 7503 'u.' in al,dx ; 00008458 EC '.' jmp short x848e ; 00008459 EB33 '.3' x845b: xor bp,0x1 ; 0000845B 81F50100 '....' jz x8476 ; 0000845F 7415 't.' cmp al,0x70 ; 00008461 3C70 ' 0x7FB6 ; mov bx,bim_table_offset ; 00008593 BBE0FF '...' mov di,[bx] ; 00008596 8B3F '.?' ; ; (SI) -> 0x7FBE ; mov bx,cpu_idrev_offset ; 00008598 BBE2FF '...' mov si,[bx] ; 0000859B 8B37 '.7' pop ds ; 0000859D 1F '.' mov word [0x50],0xffff ; 0000859E C7065000FFFF '..P...' mov word [0x52],0x0 ; 000085A4 C70652000000 '..R...' mov byte [0x54],0xc0 ; 000085AA C6065400C0 '..T..' mov byte [0x55],0x92 ; 000085AF C606550092 '..U..' mov byte [0x56],0x0 ; 000085B4 C606560000 '..V..' mov byte [0x57],0x80 ; 000085B9 C606570080 '..W..' ; ; (BX) is 0x100 (256Kb) ; mov bx,[0x8d] ; 000085BE 8B1E8D00 '....' push ds ; 000085C2 1E '.' ; ; (DS) -> 0x80C00000 ; mov ax,0x50 ; 000085C3 B85000 '.P.' mov ds,ax ; 000085C6 8ED8 '..' ; ; Disable IOCHK NMI, since it is possible to generate a ; parity error by simply reading the RAM Diagnostics Register. ; in al,0x61 ; 000085C8 E461 '.a' push ax ; 000085CA 50 'P' or al,0x8 ; 000085CB 0C08 '..' out 0x61,al ; 000085CD E661 '.a' ; ; (AL) == RAM Diagnostics Register (from 0x80C00000) ; mov al,[0x0] ; 000085CF A00000 '...' ; ; Ensure that relocatable RAM at %FE0000 is NEITHER currently remapped NOR write-protected ; mov byte [0x0],0xff ; 000085D2 C6060000FF '.....' ; ; Isolate the base memory settings in bits 5-4 (00=640Kb, 10=512Kb, 11=256Kb) ; and al,0xf0 ; 000085D7 24F0 '$.' ; ; Update [bim_table_offset]+1 (eg, %FF7FB7) with base memory settings ; mov [es:di+0x1],al ; 000085D9 26884501 '&.E.' pop ax ; 000085DD 58 'X' out 0x61,al ; 000085DE E661 '.a' ; ; Update [bim_table_offset]+0 (eg, %FF7FB6) with 0x10; that will set the first word of the built-in ; memory table to one of these values: ; ; 0x0010 256kb (1024 - 640 - 128) ; 0x2010 384Kb (1024 - 512 - 128) ; 0x3010 640Kb (1024 - 256 - 128) ; mov byte [es:di],0x10 ; 000085E0 26C60510 mov al,0xb1 ; 000085E4 B0B1 '..' out 0x70,al ; 000085E6 E670 '.p' in al,0x71 ; 000085E8 E471 '.q' mov ah,al ; 000085EA 8AE0 '..' mov al,0xb0 ; 000085EC B0B0 '..' out 0x70,al ; 000085EE E670 '.p' in al,0x71 ; 000085F0 E471 '.q' ; ; (AX) contains CMOS EXTMEM2 value (eg, 0x400 or 1024Kb), to which we add another 1024Kb (for conventional memory) ; add ax,0x400 ; 000085F2 050004 '...' mov cx,0x3f80 ; 000085F5 B9803F '..?' ; ; (CX) contains 0x3F80 (maximum # of supported Kb), reduced by the amount of built-in memory ; sub cx,bx ; 000085F8 2BCB '+.' ; ; Compare (AX), total conventional+extended memory, to (CX) ; cmp ax,cx ; 000085FA 3BC1 ';.' jc x8600 ; 000085FC 7202 'r.' xor bx,bx ; 000085FE 33DB '3.' ; ; Assuming no problems, convert Kb of built-in memory to paragraphs, by multiplying by 64 ; x8600: shl bx,0x6 ; 00008600 C1E306 '...' ; ; If (BX) was 0x100 (256Kb), we'll move the equivalent number of paragraphs ; (0x4000) to [bim_table_offset]+2 and +4 (eg, %FF7FB8 and %FF7FBA). ; mov [es:di+0x2],bx ; 00008603 26895D02 '&.].' mov [es:di+0x4],bx ; 00008607 26895D04 '&.].' mov ch,0xfe ; 0000860B B5FE '..' xor cl,cl ; 0000860D 32C9 '2.' shl cx,0x4 ; 0000860F C1E104 '...' ; ; Move 0xE000 to [bim_table_offset]+6 (eg, %FF7FBC) ; mov [es:di+0x6],cx ; 00008612 26894D06 '&.M.' mov di,si ; 00008616 8BFE '..' mov ax,gs ; 00008618 8CE8 '..' ; ; (AX) contains the processor type and revision (AH=0x03, AL=0x04), ; which were preserved on reset in (GS); store them at the offset specified ; by cpu_idrev_offset (eg, type in %FF7FBE and revision in %FF7FBF). ; mov [es:di],ah ; 0000861A 268825 '&.%' mov [es:di+0x1],al ; 0000861D 26884501 '&.E.' mov cx,0x7fff ; 00008621 B9FF7F '...' mov si,0x8000 ; 00008624 BE0080 '...' xor ah,ah ; 00008627 32E4 '2.' cld ; 00008629 FC '.' x862a: es lodsb ; 0000862A 26AC '&.' add ah,al ; 0000862C 02E0 '..' loop x862a ; 0000862E E2FA '..' not ah ; 00008630 F6D4 '..' inc ah ; 00008632 FEC4 '..' mov [es:si],ah ; 00008634 268824 '&.$' ; ; Relocate RAM at %FF0000 to %0F0000 ; mov byte [0x0],0xfc ; 00008637 C6060000FC '.....' pop ds ; 0000863C 1F '.' pop es ; 0000863D 07 '.' ret ; 0000863E C3 '.' x863f: call x86db ; 0000863F E89900 '...' mov [0x60],ax ; 00008642 A36000 '.`.' mov cx,ax ; 00008645 8BC8 '..' mov bx,0x280 ; 00008647 BB8002 '...' test cl,0x20 ; 0000864A F6C120 '.. ' jz x865a ; 0000864D 740B 't.' mov bx,0x200 ; 0000864F BB0002 '...' test cl,0x10 ; 00008652 F6C110 '...' jz x865a ; 00008655 7403 't.' mov bx,0x100 ; 00008657 BB0001 '...' x865a: mov ax,0x400 ; 0000865A B80004 '...' mul bx ; 0000865D F7E3 '..' dec dl ; 0000865F FECA '..' mov [0x90],dl ; 00008661 88169000 '....' mov al,cl ; 00008665 8AC1 '..' and al,0xc0 ; 00008667 24C0 '$.' cmp al,0x40 ; 00008669 3C40 '<@' jz x868c ; 0000866B 741F 't.' mov bx,0x400 ; 0000866D BB0004 '...' test cl,0x40 ; 00008670 F6C140 '..@' jnz x8680 ; 00008673 750B 'u.' mov bx,0x800 ; 00008675 BB0008 '...' test cl,0x80 ; 00008678 F6C180 '...' jnz x8680 ; 0000867B 7503 'u.' mov bx,0x2800 ; 0000867D BB0028 '..(' x8680: mov ax,0x400 ; 00008680 B80004 '...' mul bx ; 00008683 F7E3 '..' dec dl ; 00008685 FECA '..' mov [0x91],dl ; 00008687 88169100 '....' ret ; 0000868B C3 '.' x868c: mov bh,ch ; 0000868C 8AFD '..' mov bl,0x0 ; 0000868E B300 '..' mov cx,0x4 ; 00008690 B90400 '...' x8693: mov al,bh ; 00008693 8AC7 '..' shr bh,0x2 ; 00008695 C0EF02 '...' and al,0x3 ; 00008698 2403 '$.' cmp al,0x2 ; 0000869A 3C02 '<.' jnz x86a3 ; 0000869C 7505 'u.' add bl,0x1 ; 0000869E 80C301 '...' jmp short x86aa ; 000086A1 EB07 '..' x86a3: cmp al,0x1 ; 000086A3 3C01 '<.' jnz x86ac ; 000086A5 7505 'u.' add bl,0x4 ; 000086A7 80C304 '...' x86aa: loop x8693 ; 000086AA E2E7 '..' x86ac: push ds ; 000086AC 1E '.' mov ax,0x50 ; 000086AD B85000 '.P.' mov ds,ax ; 000086B0 8ED8 '..' mov al,[0x2] ; 000086B2 A00200 '...' and al,0xf0 ; 000086B5 24F0 '$.' or al,bl ; 000086B7 0AC3 0x0A,'.' mov [0x2],al ; 000086B9 A20200 '...' pop ds ; 000086BC 1F '.' xor ah,ah ; 000086BD 32E4 '2.' mov [0x62],ax ; 000086BF A36200 '.b.' or bl,bl ; 000086C2 0ADB 0x0A,'.' jnz x86c8 ; 000086C4 7502 'u.' mov bl,0x1 ; 000086C6 B301 '..' x86c8: xor bh,bh ; 000086C8 32FF '2.' mov ax,0x400 ; 000086CA B80004 '...' mul bx ; 000086CD F7E3 '..' mov bx,0x400 ; 000086CF BB0004 '...' mul bx ; 000086D2 F7E3 '..' dec dl ; 000086D4 FECA '..' mov [0x91],dl ; 000086D6 88169100 '....' ret ; 000086DA C3 '.' x86db: mov word [0x50],0xffff ; 000086DB C7065000FFFF '..P...' mov word [0x52],0x0 ; 000086E1 C70652000000 '..R...' mov byte [0x54],0xc0 ; 000086E7 C6065400C0 '..T..' mov byte [0x55],0x92 ; 000086EC C606550092 '..U..' mov byte [0x56],0x0 ; 000086F1 C606560000 '..V..' mov byte [0x57],0x80 ; 000086F6 C606570080 '..W..' push ds ; 000086FB 1E '.' push bx ; 000086FC 53 'S' mov ax,0x50 ; 000086FD B85000 '.P.' mov ds,ax ; 00008700 8ED8 '..' in al,0x61 ; 00008702 E461 '.a' mov ah,al ; 00008704 8AE0 '..' or al,0x8 ; 00008706 0C08 '..' out 0x61,al ; 00008708 E661 '.a' out 0x84,al ; 0000870A E684 '..' ; ; Read the memory-mapped settings/diagnostic register at 0x80C00000 into BX ; mov bx,[0x0] ; 0000870C 8B1E0000 '....' mov byte [0x0],0xff ; 00008710 C6060000FF '.....' out 0x84,al ; 00008715 E684 '..' cld ; 00008717 FC '.' cld ; 00008718 FC '.' cld ; 00008719 FC '.' cld ; 0000871A FC '.' cld ; 0000871B FC '.' cld ; 0000871C FC '.' cld ; 0000871D FC '.' cld ; 0000871E FC '.' cld ; 0000871F FC '.' cld ; 00008720 FC '.' cld ; 00008721 FC '.' cld ; 00008722 FC '.' cld ; 00008723 FC '.' cld ; 00008724 FC '.' cld ; 00008725 FC '.' cld ; 00008726 FC '.' xchg ah,al ; 00008727 86E0 '..' out 0x61,al ; 00008729 E661 '.a' mov ax,bx ; 0000872B 8BC3 '..' pop bx ; 0000872D 5B '[' pop ds ; 0000872E 1F '.' ret ; 0000872F C3 '.' romgdt: ; 00008730 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xFF,0xFF,0x00,0x00,0xC0,0x92,0x00,0x80 db 0xFF,0xFF,0x00,0x00,0x00,0x92,0x00,0x00, 0xFF,0xFF,0x00,0x00,0x0F,0x9A,0x00,0x00 db 0xFF,0xFF,0x00,0x00,0x00,0x92,0x00,0xC0, 0xFF,0xFF,0x00,0x00,0xFF,0x9A,0x00,0x00 db 0xFF,0xFF,0x00,0x00,0xFF,0x92,0x00,0x00, 0xFF,0xFF,0x00,0x00,0x0E,0x92,0x00,0x00 db 0xFF,0xFF,0x00,0x00,0xFD,0x92,0x00,0x00 gdtr_lo: ; accessed via offset 0x0778 (and also 0x8778) dw 0x0047,0x0730,0x000F ; 00008778 ; GDTR referencing the above GDT in the 0th Mb gdtr_hi: ; accessed via offset 0x077E dw 0x0047,0x0730,0x00FF ; 0000877E ; GDTR referencing the above GDT in the 15th Mb idtr_lo: ; accessed via offset 0x0784 dw 0xFFFF,0x0000,0x0000 ; 00008784 ; IDTR db 0xAA,0x87,0x18,0x00,0xF8,0x87 db 0x18,0x00,0x28,0x88,0x18,0x00 x8796: lgdt [cs:0x0778] ; 00008796 2E0F01167807; load [gdtr_lo] into GDTR mov eax,cr0 ; 0000879C 0F2000 or ax,0x1 ; 0000879F 0D0100 mov cr0,eax ; 000087A2 0F2200 jmp far [cs:0x878a] ; 000087A5 2EFF2E8A87 mov ax,0x8 ; 000087AA B80800 '...' mov es,ax ; 000087AD 8EC0 '..' mov al,0x2f ; 000087AF B02F './' mov [es:di],bl ; 000087B1 26881D '&..' out 0x84,al ; 000087B4 E684 '..' cld ; 000087B6 FC '.' cld ; 000087B7 FC '.' cld ; 000087B8 FC '.' cld ; 000087B9 FC '.' cld ; 000087BA FC '.' cld ; 000087BB FC '.' cld ; 000087BC FC '.' cld ; 000087BD FC '.' cld ; 000087BE FC '.' cld ; 000087BF FC '.' cld ; 000087C0 FC '.' cld ; 000087C1 FC '.' cld ; 000087C2 FC '.' cld ; 000087C3 FC '.' cld ; 000087C4 FC '.' cld ; 000087C5 FC '.' x87c6: mov ax,0x10 ; 000087C6 B81000 mov es,ax ; 000087C9 8EC0 mov eax,cr0 ; 000087CB 0F2000 and eax,0x7ffffffe ; 000087CE 6625FEFFFF7F mov cr0,eax ; 000087D4 0F2200 jmp 0xf000:x87dc ; 000087D7 EADC8700F0 x87dc: lidt [cs:0x0784] ; 000087DC 2E0F011E8407; load [idtr_lo] into IDTR jmp bp ; 000087E2 FFE5 x87e4: lgdt [cs:0x0778] ; 000087E4 2E0F01167807; load [gdtr_lo] into GDTR mov eax,cr0 ; 000087EA 0F2000 or ax,0x1 ; 000087ED 0D0100 mov cr0,eax ; 000087F0 0F2200 jmp far [cs:0x878e] ; 000087F3 2EFF2E8E87 mov ax,0x8 ; 000087F8 B80800 '...' mov es,ax ; 000087FB 8EC0 '..' in al,0x61 ; 000087FD E461 '.a' mov ah,al ; 000087FF 8AE0 '..' or al,0x8 ; 00008801 0C08 '..' out 0x61,al ; 00008803 E661 '.a' mov al,ah ; 00008805 8AC4 '..' mov bl,[es:di] ; 00008807 268A1D '&..' mov byte [es:0x0],0xff ; 0000880A 26C6060000FF '&.....' out 0x61,al ; 00008810 E661 '.a' jmp short x87c6 ; 00008812 EBB2 '..' x8814: lgdt [cs:0x8778] ; 00008814 2E0F01167887; load [gdtr_lo] into GDTR mov eax,cr0 ; 0000881A 0F2000 or ax,0x1 ; 0000881D 0D0100 mov cr0,eax ; 00008820 0F2200 jmp far [cs:0x8792] ; 00008823 2EFF2E9287 mov ax,0x20 ; 00008828 B82000 '. .' mov ds,ax ; 0000882B 8ED8 '..' mov al,0xc0 ; 0000882D B0C0 '..' out 0x64,al ; 0000882F E664 '.d' mov cx,0xffff ; 00008831 B9FFFF '...' cli ; 00008834 FA '.' x8835: in al,0x64 ; 00008835 E464 '.d' test al,0x2 ; 00008837 A802 '..' jz x8840 ; 00008839 7405 't.' loop x8835 ; 0000883B E2F8 '..' jmp x88d0 ; 0000883D E99000 '...' x8840: mov cx,0xffff ; 00008840 B9FFFF '...' x8843: in al,0x64 ; 00008843 E464 '.d' test al,0x1 ; 00008845 A801 '..' jnz x884e ; 00008847 7505 'u.' loop x8843 ; 00008849 E2F8 '..' jmp x88d0 ; 0000884B E98200 '...' x884e: in al,0x60 ; 0000884E E460 '.`' test al,0x8 ; 00008850 A808 '..' jnz x88d0 ; 00008852 757C 'u|' mov dword [0xc000],0xb8000000; 00008854 66C70600C0000000 'f.......' jmp short x885f ; 0000885D EB00 '..' x885f: mov eax,[0xc400] ; 0000885F 66A100C4 'f...' jmp short x8865 ; 00008863 EB00 '..' x8865: and eax,0x8000 ; 00008865 662500800000 'f%....' jnz x887a ; 0000886B 750D 'u',0x0D jmp short x886f ; 0000886D EB00 '..' x886f: mov dword [0xc000],0x16000000; 0000886F 66C70600C0000000 'f.......' jmp short x8890 ; 00008878 EB16 '..' x887a: jmp short x887c ; 0000887A EB00 '..' x887c: mov dword [0xc000],0x56000000; 0000887C 66C70600C0000000 'f.......' jmp short x8887 ; 00008885 EB00 '..' x8887: mov dword [0xc000],0x98000000; 00008887 66C70600C0000000 'f.......' x8890: jmp short x8892 ; 00008890 EB00 '..' x8892: mov dword [0xc000],0x64000000; 00008892 66C70600C0000000 'f.......' jmp short x889d ; 0000889B EB00 '..' x889d: mov dword [0xc000],0xa0000000; 0000889D 66C70600C0000000 'f.......' jmp short x88a8 ; 000088A6 EB00 '..' x88a8: mov dword [0xc000],0x30000000; 000088A8 66C70600C0000000 'f.......' jmp short x88b3 ; 000088B1 EB00 '..' x88b3: mov dword [0xc000],0x3ff0000; 000088B3 66C70600C00000FF 'f.......' mov al,0xb3 ; 000088BC B0B3 '..' out 0x70,al ; 000088BE E670 '.p' in al,0x71 ; 000088C0 E471 '.q' xchg ah,al ; 000088C2 86E0 '..' mov al,0xb3 ; 000088C4 B0B3 '..' out 0x70,al ; 000088C6 E670 '.p' xchg al,ah ; 000088C8 86C4 '..' or al,0x20 ; 000088CA 0C20 '. ' out 0x71,al ; 000088CC E671 '.q' jmp short x88e2 ; 000088CE EB12 '..' x88d0: mov al,0xb3 ; 000088D0 B0B3 '..' out 0x70,al ; 000088D2 E670 '.p' in al,0x71 ; 000088D4 E471 '.q' xchg ah,al ; 000088D6 86E0 '..' mov al,0xb3 ; 000088D8 B0B3 '..' out 0x70,al ; 000088DA E670 '.p' xchg al,ah ; 000088DC 86C4 '..' and al,0xdf ; 000088DE 24DF '$.' out 0x71,al ; 000088E0 E671 '.q' x88e2: mov ax,0x10 ; 000088E2 B81000 '...' mov ds,ax ; 000088E5 8ED8 '..' jmp x87c6 ; 000088E7 E9DCFE '...' x88ea: sti ; 000088EA FB '.' push bx ; 000088EB 53 'S' push cx ; 000088EC 51 'Q' push dx ; 000088ED 52 'R' push si ; 000088EE 56 'V' push ds ; 000088EF 1E '.' mov bx,0x40 ; 000088F0 BB4000 '.@.' mov ds,bx ; 000088F3 8EDB '..' and dx,0x3 ; 000088F5 81E20300 '....' mov si,dx ; 000088F9 8BF2 '..' mov bl,[si+0x78] ; 000088FB 8A9C7800 '..x.' shl si,1 ; 000088FF D1E6 '..' mov dx,[si+0x8] ; 00008901 8B940800 '....' or dx,dx ; 00008905 0BD2 '..' jz x8980 ; 00008907 7477 'tw' push ax ; 00008909 50 'P' test ah,ah ; 0000890A 84E4 '..' jz x8919 ; 0000890C 740B 't.' dec ah ; 0000890E FECC '..' jz x895b ; 00008910 7449 'tI' dec ah ; 00008912 FECC '..' jz x8971 ; 00008914 745B 't[' pop ax ; 00008916 58 'X' jmp short x8980 ; 00008917 EB67 '.g' x8919: out dx,al ; 00008919 EE '.' inc dx ; 0000891A 42 'B' jmp short x891d ; 0000891B EB00 '..' x891d: jmp short x891f ; 0000891D EB00 '..' x891f: in al,dx ; 0000891F EC '.' and al,0xf8 ; 00008920 24F8 '$.' js x894c ; 00008922 7828 'x(' push ax ; 00008924 50 'P' mov ax,0x90fe ; 00008925 B8FE90 '...' clc ; 00008928 F8 '.' int 0x15 ; 00008929 CD15 '..' pop ax ; 0000892B 58 'X' jc x893f ; 0000892C 7211 'r.' x892e: mov cx,0xf424 ; 0000892E B924F4 '.$.' x8931: call x919a ; 00008931 E86608 '.f.' in al,dx ; 00008934 EC '.' and al,0xf8 ; 00008935 24F8 '$.' js x894c ; 00008937 7813 'x.' loop x8931 ; 00008939 E2F6 '..' dec bl ; 0000893B FECB '..' jnz x892e ; 0000893D 75EF 'u.' x893f: jmp short x8941 ; 0000893F EB00 '..' x8941: jmp short x8943 ; 00008941 EB00 '..' x8943: in al,dx ; 00008943 EC '.' and al,0xf8 ; 00008944 24F8 '$.' js x894c ; 00008946 7804 'x.' or al,0x1 ; 00008948 0C01 '..' jmp short x8979 ; 0000894A EB2D '.-' x894c: inc dx ; 0000894C 42 'B' in al,dx ; 0000894D EC '.' and al,0x1c ; 0000894E 241C '$.' or al,0x1 ; 00008950 0C01 '..' jmp short x8954 ; 00008952 EB00 '..' x8954: jmp short x8956 ; 00008954 EB00 '..' x8956: out dx,al ; 00008956 EE '.' and al,0x1c ; 00008957 241C '$.' jmp short x896a ; 00008959 EB0F '..' x895b: inc dx ; 0000895B 42 'B' inc dx ; 0000895C 42 'B' mov al,0x8 ; 0000895D B008 '..' jmp short x8961 ; 0000895F EB00 '..' x8961: out dx,al ; 00008961 EE '.' mov bx,0x5 ; 00008962 BB0500 '...' call xc638 ; 00008965 E8D03C '..<' ; CALL DELAY(BX) or al,0x4 ; 00008968 0C04 '..' x896a: jmp short x896c ; 0000896A EB00 '..' x896c: jmp short x896e ; 0000896C EB00 '..' x896e: out dx,al ; 0000896E EE '.' dec dx ; 0000896F 4A 'J' dec dx ; 00008970 4A 'J' x8971: inc dx ; 00008971 42 'B' jmp short x8974 ; 00008972 EB00 '..' x8974: jmp short x8976 ; 00008974 EB00 '..' x8976: in al,dx ; 00008976 EC '.' and al,0xf8 ; 00008977 24F8 '$.' x8979: xor al,0x48 ; 00008979 3448 '4H' mov bh,al ; 0000897B 8AF8 '..' pop ax ; 0000897D 58 'X' mov ah,bh ; 0000897E 8AE7 '..' x8980: pop ds ; 00008980 1F '.' pop si ; 00008981 5E '^' pop dx ; 00008982 5A 'Z' pop cx ; 00008983 59 'Y' pop bx ; 00008984 5B '[' iret ; 00008985 CF '.' add [ss:bp+di+0xada5],ch ; 00008986 2E3E2664653600AB '.>&de6..' cmpsw ; 00008990 A7 '.' scasw ; 00008991 AF '.' insw ; 00008992 6D 'm' outsw ; 00008993 6F 'o' add [di],bl ; 00008994 001D '..' mov dh,[bp+di] ; 00008996 8A33 '.3' mov al,[bp+di+0x918a] ; 00008998 8A838A91 '....' mov dl,dh ; 0000899C 8AD6 '..' mov ah,ah ; 0000899E 8AE4 '..' mov bh,dl ; 000089A0 8AFA '..' mov dl,[bx+di+0x55] ; 000089A2 8A5155 '.QU' mov bp,sp ; 000089A5 8BEC '..' push ax ; 000089A7 50 'P' push bx ; 000089A8 53 'S' push dx ; 000089A9 52 'R' push es ; 000089AA 06 '.' push ds ; 000089AB 1E '.' mov al,0xb ; 000089AC B00B '..' out 0x20,al ; 000089AE E620 '. ' in al,0x20 ; 000089B0 E420 '. ' test al,0x20 ; 000089B2 A820 '. ' jnz x8a0b ; 000089B4 7555 'uU' xor ch,ch ; 000089B6 32ED '2.' mov ax,cs ; 000089B8 8CC8 '..' mov ds,ax ; 000089BA 8ED8 '..' mov es,[bp+0x6] ; 000089BC 8E4606 '.F.' mov bx,[bp+0x4] ; 000089BF 8B5E04 '.^.' x89c2: mov cl,[es:bx] ; 000089C2 268A0F '&..' cmp cl,0xf2 ; 000089C5 80F9F2 '...' jz x89cf ; 000089C8 7405 't.' cmp cl,0xf3 ; 000089CA 80F9F3 '...' jnz x89d7 ; 000089CD 7508 'u.' x89cf: inc bx ; 000089CF 43 'C' dec word [bp+0x2] ; 000089D0 FF4E02 '.N.' mov ch,0x1 ; 000089D3 B501 '..' jmp short x89c2 ; 000089D5 EBEB '..' x89d7: mov dx,si ; 000089D7 8BD6 '..' cld ; 000089D9 FC '.' mov si,0x8986 ; 000089DA BE8689 '...' x89dd: lodsb ; 000089DD AC '.' cmp al,0x0 ; 000089DE 3C00 '<.' jz x89eb ; 000089E0 7409 't.' cmp al,cl ; 000089E2 3AC1 ':.' jnz x89dd ; 000089E4 75F7 'u.' inc bx ; 000089E6 43 'C' mov si,dx ; 000089E7 8BF2 '..' jmp short x89c2 ; 000089E9 EBD7 '..' x89eb: mov si,0x898d ; 000089EB BE8D89 '...' mov bx,si ; 000089EE 8BDE '..' x89f0: lodsb ; 000089F0 AC '.' cmp al,0x0 ; 000089F1 3C00 '<.' jz x8a0b ; 000089F3 7416 't.' cmp al,cl ; 000089F5 3AC1 ':.' jnz x89f0 ; 000089F7 75F7 'u.' mov ax,[bp+0x8] ; 000089F9 8B4608 '.F.' and ah,0x4 ; 000089FC 80E404 '...' sub si,bx ; 000089FF 2BF3 '+.' dec si ; 00008A01 4E 'N' shl si,1 ; 00008A02 D1E6 '..' call near [cs:si+0x8995] ; 00008A04 2EFF949589 '.....' jmp short x8a15 ; 00008A09 EB0A '.',0x0A x8a0b: pop ds ; 00008A0B 1F '.' pop es ; 00008A0C 07 '.' pop dx ; 00008A0D 5A 'Z' pop bx ; 00008A0E 5B '[' pop ax ; 00008A0F 58 'X' pop bp ; 00008A10 5D ']' pop cx ; 00008A11 59 'Y' jmp x9bd0 ; 00008A12 E9BB11 x8a15: pop ds ; 00008A15 1F '.' pop es ; 00008A16 07 '.' pop dx ; 00008A17 5A 'Z' pop bx ; 00008A18 5B '[' pop ax ; 00008A19 58 'X' pop bp ; 00008A1A 5D ']' pop cx ; 00008A1B 59 'Y' iret ; 00008A1C CF '.' mov si,dx ; 00008A1D 8BF2 '..' cmp ch,0x1 ; 00008A1F 80FD01 '...' jnz x8a27 ; 00008A22 7503 'u.' dec word [bp+0x2] ; 00008A24 FF4E02 '.N.' x8a27: cmp ah,0x0 ; 00008A27 80FC00 '...' jz x8a30 ; 00008A2A 7404 't.' dec di ; 00008A2C 4F 'O' dec di ; 00008A2D 4F 'O' jmp short x8a32 ; 00008A2E EB02 '..' x8a30: inc di ; 00008A30 47 'G' inc di ; 00008A31 47 'G' x8a32: ret ; 00008A32 C3 '.' mov si,dx ; 00008A33 8BF2 '..' cmp si,di ; 00008A35 3BF7 ';.' jnz 0x8a59 ; 00008A37 7520 'u ' cmp ch,0x1 ; 00008A39 80FD01 '...' jnz x8a44 ; 00008A3C 7506 'u.' dec word [bp+0x2] ; 00008A3E FF4E02 '.N.' dec word [bp+0x2] ; 00008A41 FF4E02 '.N.' x8a44: cmp ah,0x0 ; 00008A44 80FC00 '...' jz x8a51 ; 00008A47 7408 't.' dec di ; 00008A49 4F 'O' dec di ; 00008A4A 4F 'O' dec si ; 00008A4B 4E 'N' dec si ; 00008A4C 4E 'N' dec si ; 00008A4D 4E 'N' dec si ; 00008A4E 4E 'N' jmp short x8a82 ; 00008A4F EB31 '.1' x8a51: inc di ; 00008A51 47 'G' inc di ; 00008A52 47 'G' inc si ; 00008A53 46 'F' inc si ; 00008A54 46 'F' inc si ; 00008A55 46 'F' inc si ; 00008A56 46 'F' jmp short x8a82 ; 00008A57 EB29 '.)' cmp si,byte -0x1 ; 00008A59 83FEFF '...' jnz x8a6b ; 00008A5C 750D 'u',0x0D cmp ah,0x0 ; 00008A5E 80FC00 '...' jz x8a67 ; 00008A61 7404 't.' dec si ; 00008A63 4E 'N' dec si ; 00008A64 4E 'N' jmp short x8a82 ; 00008A65 EB1B '..' x8a67: inc si ; 00008A67 46 'F' inc si ; 00008A68 46 'F' jmp short x8a82 ; 00008A69 EB17 '..' x8a6b: cmp ch,0x1 ; 00008A6B 80FD01 '...' jnz x8a73 ; 00008A6E 7503 'u.' dec word [bp+0x2] ; 00008A70 FF4E02 '.N.' x8a73: cmp ah,0x0 ; 00008A73 80FC00 '...' jz x8a7e ; 00008A76 7406 't.' dec di ; 00008A78 4F 'O' dec di ; 00008A79 4F 'O' dec si ; 00008A7A 4E 'N' dec si ; 00008A7B 4E 'N' jmp short x8a82 ; 00008A7C EB04 '..' x8a7e: inc di ; 00008A7E 47 'G' inc di ; 00008A7F 47 'G' inc si ; 00008A80 46 'F' inc si ; 00008A81 46 'F' x8a82: ret ; 00008A82 C3 '.' mov si,dx ; 00008A83 8BF2 '..' cmp ah,0x0 ; 00008A85 80FC00 '...' jz x8a8e ; 00008A88 7404 't.' dec si ; 00008A8A 4E 'N' dec si ; 00008A8B 4E 'N' jmp short x8a90 ; 00008A8C EB02 '..' x8a8e: inc si ; 00008A8E 46 'F' inc si ; 00008A8F 46 'F' x8a90: ret ; 00008A90 C3 '.' mov si,dx ; 00008A91 8BF2 '..' cmp si,di ; 00008A93 3BF7 ';.' jnz x8aac ; 00008A95 7515 'u.' cmp ah,0x0 ; 00008A97 80FC00 '...' jz x8aa4 ; 00008A9A 7408 't.' dec di ; 00008A9C 4F 'O' dec di ; 00008A9D 4F 'O' dec di ; 00008A9E 4F 'O' dec di ; 00008A9F 4F 'O' dec si ; 00008AA0 4E 'N' dec si ; 00008AA1 4E 'N' jmp short x8ad5 ; 00008AA2 EB31 '.1' x8aa4: inc di ; 00008AA4 47 'G' inc di ; 00008AA5 47 'G' inc di ; 00008AA6 47 'G' inc di ; 00008AA7 47 'G' inc si ; 00008AA8 46 'F' inc si ; 00008AA9 46 'F' jmp short x8ad5 ; 00008AAA EB29 '.)' x8aac: cmp si,byte -0x1 ; 00008AAC 83FEFF '...' jnz x8ac2 ; 00008AAF 7511 'u.' cmp ah,0x0 ; 00008AB1 80FC00 '...' jz x8abc ; 00008AB4 7406 't.' dec si ; 00008AB6 4E 'N' dec si ; 00008AB7 4E 'N' dec di ; 00008AB8 4F 'O' dec di ; 00008AB9 4F 'O' jmp short x8ad5 ; 00008ABA EB19 '..' x8abc: inc si ; 00008ABC 46 'F' inc si ; 00008ABD 46 'F' inc di ; 00008ABE 47 'G' inc di ; 00008ABF 47 'G' jmp short x8ad5 ; 00008AC0 EB13 '..' x8ac2: cmp ch,0x1 ; 00008AC2 80FD01 '...' jnz x8aca ; 00008AC5 7503 'u.' inc word [bp+0x2] ; 00008AC7 FF4602 '.F.' x8aca: cmp ah,0x0 ; 00008ACA 80FC00 '...' jz x8ad3 ; 00008ACD 7404 't.' dec di ; 00008ACF 4F 'O' dec di ; 00008AD0 4F 'O' jmp short x8ad5 ; 00008AD1 EB02 '..' x8ad3: inc di ; 00008AD3 47 'G' inc di ; 00008AD4 47 'G' x8ad5: ret ; 00008AD5 C3 '.' mov si,dx ; 00008AD6 8BF2 '..' cmp ah,0x0 ; 00008AD8 80FC00 '...' jz x8ae1 ; 00008ADB 7404 't.' dec di ; 00008ADD 4F 'O' dec di ; 00008ADE 4F 'O' jmp short x8ae3 ; 00008ADF EB02 '..' x8ae1: inc di ; 00008AE1 47 'G' inc di ; 00008AE2 47 'G' x8ae3: ret ; 00008AE3 C3 '.' mov si,dx ; 00008AE4 8BF2 '..' cmp ch,0x1 ; 00008AE6 80FD01 '...' jnz x8aee ; 00008AE9 7503 'u.' dec word [bp+0x2] ; 00008AEB FF4E02 '.N.' x8aee: cmp ah,0x0 ; 00008AEE 80FC00 '...' jz x8af7 ; 00008AF1 7404 't.' dec di ; 00008AF3 4F 'O' dec di ; 00008AF4 4F 'O' jmp short x8af9 ; 00008AF5 EB02 '..' x8af7: inc di ; 00008AF7 47 'G' inc di ; 00008AF8 47 'G' x8af9: ret ; 00008AF9 C3 '.' mov si,dx ; 00008AFA 8BF2 '..' cmp ah,0x0 ; 00008AFC 80FC00 '...' jz x8b05 ; 00008AFF 7404 't.' dec si ; 00008B01 4E 'N' dec si ; 00008B02 4E 'N' jmp short x8b07 ; 00008B03 EB02 '..' x8b05: inc si ; 00008B05 46 'F' inc si ; 00008B06 46 'F' x8b07: ret ; 00008B07 C3 '.' std ; 00008B08 FD '.' mov bl,[0x4a] ; 00008B09 8A1E4A00 '..J.' mov dx,[bp+0x2] ; 00008B0D 8B5602 '.V.' cmp dl,bl ; 00008B10 3AD3 ':.' jc x8b18 ; 00008B12 7204 'r.' mov dl,bl ; 00008B14 8AD3 '..' dec dl ; 00008B16 FECA '..' x8b18: test ah,0x1 ; 00008B18 F6C401 '...' jz x8b29 ; 00008B1B 740C 't.' xchg cx,dx ; 00008B1D 87CA '..' sub dh,ch ; 00008B1F 2AF5 '*.' sub dl,cl ; 00008B21 2AD1 '*.' neg dh ; 00008B23 F6DE '..' neg dl ; 00008B25 F6DA '..' jmp short x8b2d ; 00008B27 EB04 '..' x8b29: sub dh,ch ; 00008B29 2AF5 '*.' sub dl,cl ; 00008B2B 2AD1 '*.' x8b2d: inc dh ; 00008B2D FEC6 '..' inc dl ; 00008B2F FEC2 '..' call x8da9 ; 00008B31 E87502 '.u.' jz x8b57 ; 00008B34 7421 't!' cmp byte [0x49],0x2 ; 00008B36 803E490002 '.>I..' jc x8b65 ; 00008B3B 7228 'r(' cmp byte [0x49],0x3 ; 00008B3D 803E490003 '.>I..' ja x8b57 ; 00008B42 7713 'w.' push ax ; 00008B44 50 'P' push dx ; 00008B45 52 'R' mov dx,[0x63] ; 00008B46 8B166300 '..c.' add dx,byte +0x4 ; 00008B4A 83C204 '...' mov al,[0x65] ; 00008B4D A06500 '.e.' and al,0xf7 ; 00008B50 24F7 '$.' out dx,al ; 00008B52 EE '.' pop dx ; 00008B53 5A 'Z' pop ax ; 00008B54 58 'X' jmp short x8b65 ; 00008B55 EB0E '..' x8b57: cmp byte [0x49],0x4 ; 00008B57 803E490004 '.>I..' jc x8b65 ; 00008B5C 7207 'r.' cmp byte [0x49],0x7 ; 00008B5E 803E490007 '.>I..' jnz x8be1 ; 00008B63 757C 'u|' x8b65: mov bp,bx ; 00008B65 8BEB '..' sub bp,dx ; 00008B67 2BEA '+.' and bp,0xff ; 00008B69 81E5FF00 '....' shl bp,1 ; 00008B6D D1E5 '..' mov di,ax ; 00008B6F 8BF8 '..' mov al,ch ; 00008B71 8AC5 '..' mul bl ; 00008B73 F6E3 '..' xor ch,ch ; 00008B75 32ED '2.' add ax,cx ; 00008B77 03C1 '..' shl ax,1 ; 00008B79 D1E0 '..' add ax,[0x4e] ; 00008B7B 03064E00 '..N.' xchg ax,di ; 00008B7F 97 '.' mov si,es ; 00008B80 8CC6 '..' mov ds,si ; 00008B82 8EDE '..' mov si,ax ; 00008B84 8BF0 '..' mul bl ; 00008B86 F6E3 '..' test si,0x100 ; 00008B88 F7C60001 '....' jz x8b92 ; 00008B8C 7404 't.' neg ax ; 00008B8E F7D8 '..' neg bp ; 00008B90 F7DD '..' x8b92: shl ax,1 ; 00008B92 D1E0 '..' add ax,di ; 00008B94 03C7 '..' xchg ax,si ; 00008B96 96 '.' or al,al ; 00008B97 0AC0 0x0A,'.' jz x8baf ; 00008B99 7414 't.' cmp al,dh ; 00008B9B 3AC6 ':.' jnc x8baf ; 00008B9D 7310 's.' sub dh,al ; 00008B9F 2AF0 '*.' x8ba1: mov cl,dl ; 00008BA1 8ACA '..' rep movsw ; 00008BA3 F3A5 '..' add si,bp ; 00008BA5 03F5 '..' add di,bp ; 00008BA7 03FD '..' dec dh ; 00008BA9 FECE '..' jnz x8ba1 ; 00008BAB 75F4 'u.' mov dh,al ; 00008BAD 8AF0 '..' x8baf: mov ah,bh ; 00008BAF 8AE7 '..' mov al,0x20 ; 00008BB1 B020 '. ' x8bb3: mov cl,dl ; 00008BB3 8ACA '..' rep stosw ; 00008BB5 F3AB '..' add di,bp ; 00008BB7 03FD '..' dec dh ; 00008BB9 FECE '..' jnz x8bb3 ; 00008BBB 75F6 'u.' mov ax,0x40 ; 00008BBD B84000 '.@.' mov ds,ax ; 00008BC0 8ED8 '..' call x8da9 ; 00008BC2 E8E401 '...' jz x8be0 ; 00008BC5 7419 't.' cmp byte [0x49],0x2 ; 00008BC7 803E490002 '.>I..' jc x8be0 ; 00008BCC 7212 'r.' cmp byte [0x49],0x3 ; 00008BCE 803E490003 '.>I..' ja x8be0 ; 00008BD3 770B 'w.' mov dx,[0x63] ; 00008BD5 8B166300 '..c.' add dx,byte +0x4 ; 00008BD9 83C204 '...' mov al,[0x65] ; 00008BDC A06500 '.e.' out dx,al ; 00008BDF EE '.' x8be0: ret ; 00008BE0 C3 '.' x8be1: cmp byte [0x49],0x6 ; 00008BE1 803E490006 '.>I..' jz x8bec ; 00008BE6 7404 't.' shl cl,1 ; 00008BE8 D0E1 '..' shl dl,1 ; 00008BEA D0E2 '..' x8bec: mov bp,0x50 ; 00008BEC BD5000 '.P.' push dx ; 00008BEF 52 'R' mov di,ax ; 00008BF0 8BF8 '..' mov al,ch ; 00008BF2 8AC5 '..' xor ch,ch ; 00008BF4 32ED '2.' cbw ; 00008BF6 98 '.' mov dx,0x140 ; 00008BF7 BA4001 '.@.' mul dx ; 00008BFA F7E2 '..' add ax,cx ; 00008BFC 03C1 '..' add ax,[0x4e] ; 00008BFE 03064E00 '..N.' xchg ax,di ; 00008C02 97 '.' mov si,ax ; 00008C03 8BF0 '..' cbw ; 00008C05 98 '.' mov dx,0x140 ; 00008C06 BA4001 '.@.' mul dx ; 00008C09 F7E2 '..' test si,0x100 ; 00008C0B F7C60001 '....' jz x8c21 ; 00008C0F 7410 't.' neg ax ; 00008C11 F7D8 '..' neg bp ; 00008C13 F7DD '..' add di,0x20f0 ; 00008C15 81C7F020 '... ' cmp byte [0x49],0x6 ; 00008C19 803E490006 '.>I..' jz x8c21 ; 00008C1E 7401 't.' inc di ; 00008C20 47 'G' x8c21: add ax,di ; 00008C21 03C7 '..' mov dx,es ; 00008C23 8CC2 '..' mov ds,dx ; 00008C25 8EDA '..' xchg ax,si ; 00008C27 96 '.' pop dx ; 00008C28 5A 'Z' push bx ; 00008C29 53 'S' mov bx,di ; 00008C2A 8BDF '..' or al,al ; 00008C2C 0AC0 0x0A,'.' jz x8c60 ; 00008C2E 7430 't0' cmp al,dh ; 00008C30 3AC6 ':.' jnc x8c60 ; 00008C32 732C 's,' sub dh,al ; 00008C34 2AF0 '*.' push ax ; 00008C36 50 'P' shl dh,1 ; 00008C37 D0E6 '..' shl dh,1 ; 00008C39 D0E6 '..' mov ax,si ; 00008C3B 8BC6 '..' x8c3d: mov si,ax ; 00008C3D 8BF0 '..' mov di,bx ; 00008C3F 8BFB '..' mov cl,dl ; 00008C41 8ACA '..' rep movsb ; 00008C43 F3A4 '..' mov si,ax ; 00008C45 8BF0 '..' mov di,bx ; 00008C47 8BFB '..' xor si,0x2000 ; 00008C49 81F60020 '... ' xor di,0x2000 ; 00008C4D 81F70020 '... ' mov cl,dl ; 00008C51 8ACA '..' rep movsb ; 00008C53 F3A4 '..' add ax,bp ; 00008C55 03C5 '..' add bx,bp ; 00008C57 03DD '..' dec dh ; 00008C59 FECE '..' jnz x8c3d ; 00008C5B 75E0 'u.' pop ax ; 00008C5D 58 'X' mov dh,al ; 00008C5E 8AF0 '..' x8c60: shl dh,1 ; 00008C60 D0E6 '..' shl dh,1 ; 00008C62 D0E6 '..' pop ax ; 00008C64 58 'X' mov al,ah ; 00008C65 8AC4 '..' x8c67: mov di,bx ; 00008C67 8BFB '..' mov cl,dl ; 00008C69 8ACA '..' rep stosb ; 00008C6B F3AA '..' mov di,bx ; 00008C6D 8BFB '..' xor di,0x2000 ; 00008C6F 81F70020 '... ' mov cl,dl ; 00008C73 8ACA '..' rep stosb ; 00008C75 F3AA '..' add bx,bp ; 00008C77 03DD '..' dec dh ; 00008C79 FECE '..' jnz x8c67 ; 00008C7B 75EA 'u.' ret ; 00008C7D C3 '.' x8c7e: push ds ; 00008C7E 1E '.' xor ebp,ebp ; 00008C7F 6633ED 'f3.' x8c82: mov eax,0x1 ; 00008C82 66B801000000 'f.....' xor eax,ebp ; 00008C88 6633C5 'f3.' mov cx,0x4000 ; 00008C8B B90040 '..@' xor di,di ; 00008C8E 33FF '3.' sahf ; 00008C90 9E '.' x8c91: rcl eax,1 ; 00008C91 66D1D0 'f..' stosd ; 00008C94 66AB 'f.' loop x8c91 ; 00008C96 E2F9 '..' in al,0x61 ; 00008C98 E461 '.a' or al,0xc ; 00008C9A 0C0C '..' out 0x61,al ; 00008C9C E661 '.a' and al,0xf3 ; 00008C9E 24F3 '$.' out 0x61,al ; 00008CA0 E661 '.a' mov ebx,0x1 ; 00008CA2 66BB01000000 'f.....' xor ebx,ebp ; 00008CA8 6633DD 'f3.' mov eax,ebp ; 00008CAB 668BC5 'f..' push es ; 00008CAE 06 '.' pop ds ; 00008CAF 1F '.' xor si,si ; 00008CB0 33F6 '3.' x8cb2: mov cx,0x4000 ; 00008CB2 B90040 '..@' x8cb5: sahf ; 00008CB5 9E '.' rcl ebx,1 ; 00008CB6 66D1D3 'f..' lahf ; 00008CB9 9F '.' lodsb ; 00008CBA AC '.' inc si ; 00008CBB 46 'F' inc si ; 00008CBC 46 'F' inc si ; 00008CBD 46 'F' xor al,bl ; 00008CBE 32C3 '2.' loope x8cb5 ; 00008CC0 E1F3 '..' jnz x8ce7 ; 00008CC2 7523 'u#' in al,0x61 ; 00008CC4 E461 '.a' test al,0xc0 ; 00008CC6 A8C0 '..' mov al,0x0 ; 00008CC8 B000 '..' jnz x8ce7 ; 00008CCA 751B 'u.' mov cl,0x9 ; 00008CCC B109 '..' sahf ; 00008CCE 9E '.' rcl ebx,cl ; 00008CCF 66D3D3 'f..' inc si ; 00008CD2 46 'F' cmp si,byte +0x4 ; 00008CD3 83FE04 '...' jc x8cb2 ; 00008CD6 72DA 'r.' sahf ; 00008CD8 9E '.' mov cl,0x1f ; 00008CD9 B11F '..' rcl ebx,cl ; 00008CDB 66D3D3 'f..' lahf ; 00008CDE 9F '.' dec ebp ; 00008CDF 664D 'fM' jpe x8c82 ; 00008CE1 7A9F 'z.' pop ds ; 00008CE3 1F '.' xor ax,ax ; 00008CE4 33C0 '3.' ret ; 00008CE6 C3 '.' x8ce7: mov byte [si],0x0 ; 00008CE7 C60400 '...' push ax ; 00008CEA 50 'P' in al,0x61 ; 00008CEB E461 '.a' or al,0xc ; 00008CED 0C0C '..' out 0x61,al ; 00008CEF E661 '.a' and al,0xf3 ; 00008CF1 24F3 '$.' out 0x61,al ; 00008CF3 E661 '.a' pop cx ; 00008CF5 59 'Y' mov dx,si ; 00008CF6 8BD6 '..' pop ds ; 00008CF8 1F '.' stc ; 00008CF9 F9 '.' ret ; 00008CFA C3 '.' call x8d30 ; 00008CFB E83200 '.2.' mov al,[es:di] ; 00008CFE 268A05 '&..' not bh ; 00008D01 F6D7 '..' and al,bh ; 00008D03 22C7 '".' shr al,cl ; 00008D05 D2E8 '..' mov [bp+0x0],al ; 00008D07 884600 '.F.' ret ; 00008D0A C3 '.' call x8d30 ; 00008D0B E82200 '.".' cbw ; 00008D0E 98 '.' and al,bl ; 00008D0F 22C3 '".' shl al,cl ; 00008D11 D2E0 '..' sar ah,1 ; 00008D13 D0FC '..' jns x8d22 ; 00008D15 790B 'y.' xor [es:di],al ; 00008D17 263005 '&0.' mov ah,[0x49] ; 00008D1A 8A264900 '.&I.' mov [bp+0x1],ah ; 00008D1E 886601 '.f.' ret ; 00008D21 C3 '.' x8d22: and bh,[es:di] ; 00008D22 26223D '&"=' or al,bh ; 00008D25 0AC7 0x0A,'.' stosb ; 00008D27 AA '.' mov ah,[0x49] ; 00008D28 8A264900 '.&I.' mov [bp+0x1],ah ; 00008D2C 886601 '.f.' ret ; 00008D2F C3 '.' x8d30: xor di,di ; 00008D30 33FF '3.' mov dx,[bp+0x2] ; 00008D32 8B5602 '.V.' shr dx,1 ; 00008D35 D1EA '..' jnc x8d3c ; 00008D37 7303 's.' mov di,0x2000 ; 00008D39 BF0020 '.. ' x8d3c: shl dx,1 ; 00008D3C D1E2 '..' shl dx,1 ; 00008D3E D1E2 '..' shl dx,1 ; 00008D40 D1E2 '..' shl dx,1 ; 00008D42 D1E2 '..' add di,dx ; 00008D44 03FA '..' shl dx,1 ; 00008D46 D1E2 '..' shl dx,1 ; 00008D48 D1E2 '..' add di,dx ; 00008D4A 03FA '..' mov bh,0xfe ; 00008D4C B7FE '..' cmp byte [0x49],0x6 ; 00008D4E 803E490006 '.>I..' jnc x8d59 ; 00008D53 7304 's.' rcl cx,1 ; 00008D55 D1D1 '..' shl bh,1 ; 00008D57 D0E7 '..' x8d59: mov bl,bh ; 00008D59 8ADF '..' not bl ; 00008D5B F6D3 '..' mov dx,cx ; 00008D5D 8BD1 '..' shr dx,1 ; 00008D5F D1EA '..' shr dx,1 ; 00008D61 D1EA '..' shr dx,1 ; 00008D63 D1EA '..' not cl ; 00008D65 F6D1 '..' and cl,0x7 ; 00008D67 80E107 '...' rol bh,cl ; 00008D6A D2C7 '..' add di,dx ; 00008D6C 03FA '..' ret ; 00008D6E C3 '.' x8d6f: mov al,0xd ; 00008D6F B00D '.',0x0D call x8d78 ; 00008D71 E80400 '...' jc x8d8c ; 00008D74 7216 'r.' mov al,0xa ; 00008D76 B00A '.',0x0A x8d78: push dx ; 00008D78 52 'R' xor dx,dx ; 00008D79 33D2 '3.' test al,al ; 00008D7B 84C0 '..' jnz x8d81 ; 00008D7D 7502 'u.' mov al,0x20 ; 00008D7F B020 '. ' x8d81: mov ah,0x0 ; 00008D81 B400 '..' int 0x17 ; 00008D83 CD17 '..' test ah,0x1 ; 00008D85 F6C401 '...' jz x8d8b ; 00008D88 7401 't.' stc ; 00008D8A F9 '.' x8d8b: pop dx ; 00008D8B 5A 'Z' x8d8c: ret ; 00008D8C C3 '.' x8d8d: dec di ; 00008D8D 4F 'O' mov cx,di ; 00008D8E 8BCF '..' x8d90: push cx ; 00008D90 51 'Q' mov cx,0x64 ; 00008D91 B96400 '.d.' x8d94: call xe944 ; 00008D94 E8AD5B '..[' jz x8d9f ; 00008D97 7406 't.' loop x8d94 ; 00008D99 E2F9 '..' pop cx ; 00008D9B 59 'Y' stc ; 00008D9C F9 '.' jmp short x8da8 ; 00008D9D EB09 '..' x8d9f: call x919a ; 00008D9F E8F803 '...' lodsb ; 00008DA2 AC '.' out dx,al ; 00008DA3 EE '.' pop cx ; 00008DA4 59 'Y' loop x8d90 ; 00008DA5 E2E9 '..' clc ; 00008DA7 F8 '.' x8da8: ret ; 00008DA8 C3 '.' x8da9: test byte [0x87],0x4 ; 00008DA9 F606870004 '.....' ret ; 00008DAE C3 '.' db 0xFF ; 00008DAF FF '.' jmp 0xf000:0x8e31 ; 00008DB0 EA318E00F0 '.1...' push ax ; 00008DB5 50 'P' push si ; 00008DB6 56 'V' push ds ; 00008DB7 1E '.' mov ax,0x40 ; 00008DB8 B84000 '.@.' mov ds,ax ; 00008DBB 8ED8 '..' mov ax,0x3 ; 00008DBD B80300 '...' call xd3b4 ; 00008DC0 E8F145 '..E' pop ds ; 00008DC3 1F '.' pop si ; 00008DC4 5E '^' pop ax ; 00008DC5 58 'X' iret ; 00008DC6 CF '.' x8dc7: mov bp,bx ; 00008DC7 8BEB '..' add bx,byte +0x10 ; 00008DC9 83C310 '...' cli ; 00008DCC FA '.' mov ss,bx ; 00008DCD 8ED3 '..' mov sp,cx ; 00008DCF 8BE1 '..' mov es,cx ; 00008DD1 8EC1 '..' mov cx,0x420 ; 00008DD3 B92004 '. .' add cx,bx ; 00008DD6 03CB '..' mov ss,cx ; 00008DD8 8ED1 '..' mov cx,0x49 ; 00008DDA B94900 '.I.' cld ; 00008DDD FC '.' mov di,0x300 ; 00008DDE BF0003 '...' mov si,0x8eea ; 00008DE1 BEEA8E '...' cs rep movsw ; 00008DE4 F32EA5 '...' mov ax,[0x250] ; 00008DE7 A15002 '.P.' cmp ax,[0x258] ; 00008DEA 3B065802 ';.X.' jnz x8df3 ; 00008DEE 7503 'u.' mov [0x300],al ; 00008DF0 A20003 '...' x8df3: cmp ax,0x157 ; 00008DF3 3D5701 '=W.' jnz x8e02 ; 00008DF6 750A 'u',0x0A mov di,0x24 ; 00008DF8 BF2400 '.$.' mov ax,0xe987 ; 00008DFB B887E9 '...' stosw ; 00008DFE AB '.' mov ax,cs ; 00008DFF 8CC8 '..' stosw ; 00008E01 AB '.' x8e02: mov di,0x6c ; 00008E02 BF6C00 '.l.' mov ax,0x8db5 ; 00008E05 B8B58D '...' stosw ; 00008E08 AB '.' mov ax,cs ; 00008E09 8CC8 '..' stosw ; 00008E0B AB '.' mov ax,0xff53 ; 00008E0C B853FF '.S.' stosw ; 00008E0F AB '.' mov ax,cs ; 00008E10 8CC8 '..' stosw ; 00008E12 AB '.' mov es,bp ; 00008E13 8EC5 '..' les ax,[es:0x12] ; 00008E15 26C4061200 '&....' mov [0x90],ax ; 00008E1A A39000 '...' mov [0x92],es ; 00008E1D 8C069200 '....' sti ; 00008E21 FB '.' mov ds,sp ; 00008E22 8EDC '..' push bx ; 00008E24 53 'S' x8e25: mov di,0x301 ; 00008E25 BF0103 '...' mov dx,0x385 ; 00008E28 BA8503 '...' mov ah,0xf ; 00008E2B B40F '..' int 0x21 ; 00008E2D CD21 '.!' jmp short x8e40 ; 00008E2F EB0F '..' xor cx,cx ; 00008E31 33C9 '3.' mov ds,cx ; 00008E33 8ED9 '..' mov bx,[0x252] ; 00008E35 8B1E5202 '..R.' test bx,bx ; 00008E39 85DB '..' jnz x8dc7 ; 00008E3B 758A 'u.' jmp xe7c0 ; 00008E3D E98059 '..Y' x8e40: or al,al ; 00008E40 0AC0 0x0A,'.' jz x8e72 ; 00008E42 742E 't.' x8e44: mov dx,0x302 ; 00008E44 BA0203 '...' mov ah,0x9 ; 00008E47 B409 '..' int 0x21 ; 00008E49 CD21 '.!' mov ax,0xc01 ; 00008E4B B8010C '...' int 0x21 ; 00008E4E CD21 '.!' cmp byte [di],0x0 ; 00008E50 803D00 '.=.' jnz x8e62 ; 00008E53 750D 'u',0x0D mov byte [di],0xff ; 00008E55 C605FF '...' cmp al,0xd ; 00008E58 3C0D '<',0x0D jnz x8e62 ; 00008E5A 7506 'u.' mov ah,0x19 ; 00008E5C B419 '..' int 0x21 ; 00008E5E CD21 '.!' add al,0x41 ; 00008E60 0441 '.A' x8e62: and al,0x5f ; 00008E62 245F '$_' cmp al,0x41 ; 00008E64 3C41 '..' jz x9240 ; 0000923C 7402 't.' inc ch ; 0000923E FEC5 '..' x9240: or ch,ch ; 00009240 0AED 0x0A,'.' jz x9250 ; 00009242 740C 't.' dec ch ; 00009244 FECD '..' shl ch,0x6 ; 00009246 C0E506 '...' or ch,0x1 ; 00009249 80CD01 '...' or [0x10],ch ; 0000924C 082E1000 '....' x9250: cli ; 00009250 FA '.' call xd42c ; 00009251 E8D841 '..A' test al,0x40 ; 00009254 A840 '.@' jnz x9291 ; 00009256 7539 'u9' call xd3fb ; 00009258 E8A041 '..A' mov ah,al ; 0000925B 8AE0 '..' shr al,0x4 ; 0000925D C0E804 '...' and ah,0xf ; 00009260 80E40F '...' or bl,bl ; 00009263 0ADB 0x0A,'.' jz x9276 ; 00009265 740F 't.' xchg bl,ah ; 00009267 86DC '..' call x9303 ; 00009269 E89700 '...' jnz x9276 ; 0000926C 7508 'u.' xchg ax,bx ; 0000926E 93 '.' call x9303 ; 0000926F E89100 '...' jz x9291 ; 00009272 741D 't.' jmp short x9284 ; 00009274 EB0E '..' x9276: mov al,0xb3 ; 00009276 B0B3 '..' mov ah,al ; 00009278 8AE0 '..' call xb544 ; 0000927A E8C722 '.."' or al,0x4 ; 0000927D 0C04 '..' xchg al,ah ; 0000927F 86C4 '..' call xb549 ; 00009281 E8C522 '.."' x9284: call xd42c ; 00009284 E8A541 '..A' mov ah,al ; 00009287 8AE0 '..' or ah,0x20 ; 00009289 80CC20 '.. ' mov al,0x8e ; 0000928C B08E '..' call xb549 ; 0000928E E8B822 '.."' x9291: sti ; 00009291 FB '.' ret ; 00009292 C3 '.' x9293: push word [bp+0x5] ; 00009293 FF7605 '.v.' mov al,0x7 ; 00009296 B007 '..' call xd468 ; 00009298 E8CD41 '..A' mov ah,0x93 ; 0000929B B493 '..' call xd490 ; 0000929D E8F041 '..A' call x9190 ; 000092A0 E8EDFE '...' mov byte [bx],0x0 ; 000092A3 C60700 '...' mov byte [bp+0x5],0x30 ; 000092A6 C6460530 '.F.0' call xee9c ; 000092AA E8EF5B '..[' mov byte [bp+0x5],0x8 ; 000092AD C6460508 '.F..' x92b1: call xee9c ; 000092B1 E8E85B '..[' mov bh,0x4 ; 000092B4 B704 '..' call xd4c4 ; 000092B6 E80B42 '..B' mov bh,[bp+0x6] ; 000092B9 8A7E06 '.~.' call xd4c4 ; 000092BC E80542 '..B' mov cx,0xa86b ; 000092BF B96BA8 '.k.' x92c2: call xc9bf ; 000092C2 E8FA36 '..6' jnz x92cb ; 000092C5 7504 'u.' loop x92c2 ; 000092C7 E2F9 '..' jmp short x92fe ; 000092C9 EB33 '.3' x92cb: call x919a ; 000092CB E8CCFE '...' in al,dx ; 000092CE EC '.' test al,0x10 ; 000092CF A810 '..' jnz x92de ; 000092D1 750B 'u.' cmp byte [bp+0x5],0x0 ; 000092D3 807E0500 '.~..' jz x92ff ; 000092D7 7426 't&' dec byte [bp+0x5] ; 000092D9 FE4E05 '.N.' jmp short x92b1 ; 000092DC EBD3 '..' x92de: mov ah,0x7 ; 000092DE B407 '..' mov al,0x1 ; 000092E0 B001 '..' cmp byte [bp+0x5],0x0 ; 000092E2 807E0500 '.~..' jnz x92ed ; 000092E6 7505 'u.' call xd455 ; 000092E8 E86A41 '.jA' jmp short x92f4 ; 000092EB EB07 '..' x92ed: mov ah,0x93 ; 000092ED B493 '..' mov al,0x1 ; 000092EF B001 '..' call xd468 ; 000092F1 E87441 '.tA' x92f4: call x9190 ; 000092F4 E899FE '...' mov [bx],ah ; 000092F7 8827 '.',0x27 call xd490 ; 000092F9 E89441 '..A' jmp short x92ff ; 000092FC EB01 '..' x92fe: stc ; 000092FE F9 '.' x92ff: pop word [bp+0x5] ; 000092FF 8F4605 '.F.' ret ; 00009302 C3 '.' x9303: cmp al,0x0 ; 00009303 3C00 '<.' jz x9311 ; 00009305 740A 't',0x0A cmp al,0x1 ; 00009307 3C01 '<.' jnz x930f ; 00009309 7504 'u.' mov al,0x93 ; 0000930B B093 '..' jmp short x9311 ; 0000930D EB02 '..' x930f: mov al,0x7 ; 0000930F B007 '..' x9311: cmp ah,al ; 00009311 3AE0 ':.' ret ; 00009313 C3 '.' boot_prompt: db 0x0D,0x0A,'Non-System disk or disk error',0x0D,0x0A,'replace and strike any key when ready',0x0D,0x0A,'$' boot_error: db 0x0D,0x0A,'602-Diskette Boot Record Error',0x0D,0x0A,'$' ; ; WAIT FOR RTC SECONDS TO *NOT* BE 0xFF ; x9380: mov bx,0x2 ; 00009380 BB0200 '...' ; WAIT BEGIN mov cx,0xfde8 ; 00009383 B9E8FD '...' x9386: mov al,0x80 ; 00009386 B080 '..' out 0x70,al ; 00009388 E670 '.p' in al,0x71 ; 0000938A E471 '.q' cmp al,0xff ; 0000938C 3CFF '<.' jnz x939a ; 0000938E 750A 'u',0x0A loop x9386 ; 00009390 E2F4 '..' dec bx ; 00009392 4B 'K' jz x939a ; 00009393 7405 't.' mov cx,0xfde8 ; 00009395 B9E8FD '...' jmp short x9386 ; 00009398 EBEC '..' x939a: jmp bp ; 0000939A FFE5 '..' ; WAIT END db 0xFF ; 0000939C FF '.' db 0xFF ; 0000939D FF '.' db 0xFF ; 0000939E FF '.' inc word [bx+si] ; 0000939F FF00 '..' times 255 dw 0x0000 ; 000093A1 - 0000959D add [di-0x75],dl ; 0000959F 00558B '.U.' in al,dx ; 000095A2 EC '.' push eax ; 000095A3 6650 'fP' push bx ; 000095A5 53 'S' push ds ; 000095A6 1E '.' cld ; 000095A7 FC '.' mov al,0x1 ; 000095A8 B001 '..' out 0x85,al ; 000095AA E685 '..' mov bx,[bp+0x4] ; 000095AC 8B5E04 '.^.' mov ds,bx ; 000095AF 8EDB '..' mov bx,[bp+0x2] ; 000095B1 8B5E02 '.^.' mov bx,[bx] ; 000095B4 8B1F '..' cmp bl,0xf0 ; 000095B6 80FBF0 '...' jnz x95c5 ; 000095B9 750A 'u',0x0A mov al,0x12 ; 000095BB B012 '..' out 0x84,al ; 000095BD E684 '..' inc word [bp+0x2] ; 000095BF FF4602 '.F.' jmp x976a ; 000095C2 E9A501 '...' x95c5: cmp bx,0x50f ; 000095C5 81FB0F05 '....' jz x95d7 ; 000095C9 740C 't.' mov al,0x14 ; 000095CB B014 '..' out 0x84,al ; 000095CD E684 '..' pop ds ; 000095CF 1F '.' pop bx ; 000095D0 5B '[' pop eax ; 000095D1 6658 'fX' pop bp ; 000095D3 5D ']' jmp x9bd0 ; 000095D4 E9F905 x95d7: mov al,0x13 ; 000095D7 B013 '..' out 0x84,al ; 000095D9 E684 '..' call xf305 ; 000095DB E8275D '.',0x27,']' push cs ; 000095DE 0E '.' pop es ; 000095DF 07 '.' mov di,0x13a0 ; 000095E0 BFA013 '...' mov bx,0x80 ; 000095E3 BB8000 '...' mov ds,bx ; 000095E6 8EDB '..' mov eax,cr0 ; 000095E8 0F2000 and eax,0x80000011 ; 000095EB 662511000080 'f%....' mov cx,[0x6] ; 000095F1 8B0E0600 '....' and ecx,0xf ; 000095F5 6681E10F000000 'f......' or eax,ecx ; 000095FC 660BC1 'f..' stosd ; 000095FF 66AB 'f.' xor eax,eax ; 00009601 6633C0 'f3.' mov ax,[0x18] ; 00009604 A11800 '...' stosd ; 00009607 66AB 'f.' mov ax,[0x1a] ; 00009609 A11A00 '...' stosd ; 0000960C 66AB 'f.' mov si,0x26 ; 0000960E BE2600 '.&.' mov cx,0x8 ; 00009611 B90800 '...' x9614: lodsw ; 00009614 AD '.' stosd ; 00009615 66AB 'f.' loop x9614 ; 00009617 E2FB '..' mov eax,dr6 ; 00009619 0F21F0 '.!.' stosd ; 0000961C 66AB 'f.' mov eax,dr7 ; 0000961E 0F21F8 '.!.' stosd ; 00009621 66AB 'f.' xor eax,eax ; 00009623 6633C0 'f3.' mov ax,[0x16] ; 00009626 A11600 '...' stosd ; 00009629 66AB 'f.' mov si,0x1c ; 0000962B BE1C00 '...' lodsw ; 0000962E AD '.' stosd ; 0000962F 66AB 'f.' mov ax,gs ; 00009631 8CE8 '..' stosd ; 00009633 66AB 'f.' mov ax,fs ; 00009635 8CE0 '..' stosd ; 00009637 66AB 'f.' mov cx,0x4 ; 00009639 B90400 '...' x963c: lodsw ; 0000963C AD '.' stosd ; 0000963D 66AB 'f.' loop x963c ; 0000963F E2FB '..' mov si,0x60 ; 00009641 BE6000 '.`.' xor eax,eax ; 00009644 6633C0 'f3.' mov ax,[si+0x2] ; 00009647 8B4402 '.D.' stosd ; 0000964A 66AB 'f.' mov eax,[si] ; 0000964C 668B04 'f..' and eax,0xffffff ; 0000964F 6625FFFFFF00 'f%....' stosd ; 00009655 66AB 'f.' xor eax,eax ; 00009657 6633C0 'f3.' mov ax,[si+0x4] ; 0000965A 8B4404 '.D.' stosd ; 0000965D 66AB 'f.' mov si,0x5a ; 0000965F BE5A00 '.Z.' xor eax,eax ; 00009662 6633C0 'f3.' mov ax,[si+0x2] ; 00009665 8B4402 '.D.' stosd ; 00009668 66AB 'f.' mov eax,[si] ; 0000966A 668B04 'f..' and eax,0xffffff ; 0000966D 6625FFFFFF00 'f%....' stosd ; 00009673 66AB 'f.' xor eax,eax ; 00009675 6633C0 'f3.' mov ax,[si+0x4] ; 00009678 8B4404 '.D.' stosd ; 0000967B 66AB 'f.' mov si,0x4e ; 0000967D BE4E00 '.N.' xor eax,eax ; 00009680 6633C0 'f3.' mov ax,[si+0x2] ; 00009683 8B4402 '.D.' stosd ; 00009686 66AB 'f.' mov eax,[si] ; 00009688 668B04 'f..' and eax,0xffffff ; 0000968B 6625FFFFFF00 'f%....' stosd ; 00009691 66AB 'f.' xor eax,eax ; 00009693 6633C0 'f3.' mov ax,[si+0x4] ; 00009696 8B4404 '.D.' stosd ; 00009699 66AB 'f.' mov si,0x54 ; 0000969B BE5400 '.T.' xor eax,eax ; 0000969E 6633C0 'f3.' mov ax,[si+0x2] ; 000096A1 8B4402 '.D.' stosd ; 000096A4 66AB 'f.' mov eax,[si] ; 000096A6 668B04 'f..' and eax,0xffffff ; 000096A9 6625FFFFFF00 'f%....' stosd ; 000096AF 66AB 'f.' xor eax,eax ; 000096B1 6633C0 'f3.' mov ax,[si+0x4] ; 000096B4 8B4404 '.D.' stosd ; 000096B7 66AB 'f.' mov eax,0x920000 ; 000096B9 66B800009200 'f.....' stosd ; 000096BF 66AB 'f.' xor eax,eax ; 000096C1 6633C0 'f3.' mov ax,gs ; 000096C4 8CE8 '..' shl ax,0x4 ; 000096C6 C1E004 '...' stosd ; 000096C9 66AB 'f.' mov ax,0xffff ; 000096CB B8FFFF '...' stosd ; 000096CE 66AB 'f.' mov eax,0x920000 ; 000096D0 66B800009200 'f.....' stosd ; 000096D6 66AB 'f.' xor eax,eax ; 000096D8 6633C0 'f3.' mov ax,fs ; 000096DB 8CE0 '..' shl ax,0x4 ; 000096DD C1E004 '...' stosd ; 000096E0 66AB 'f.' mov ax,0xffff ; 000096E2 B8FFFF '...' stosd ; 000096E5 66AB 'f.' mov si,0x48 ; 000096E7 BE4800 '.H.' xor eax,eax ; 000096EA 6633C0 'f3.' mov ax,[si+0x2] ; 000096ED 8B4402 '.D.' stosd ; 000096F0 66AB 'f.' mov eax,[si] ; 000096F2 668B04 'f..' and eax,0xffffff ; 000096F5 6625FFFFFF00 'f%....' stosd ; 000096FB 66AB 'f.' xor eax,eax ; 000096FD 6633C0 'f3.' mov ax,[si+0x4] ; 00009700 8B4404 '.D.' stosd ; 00009703 66AB 'f.' mov si,0x42 ; 00009705 BE4200 '.B.' xor eax,eax ; 00009708 6633C0 'f3.' mov ax,[si+0x2] ; 0000970B 8B4402 '.D.' stosd ; 0000970E 66AB 'f.' mov eax,[si] ; 00009710 668B04 'f..' and eax,0xffffff ; 00009713 6625FFFFFF00 'f%....' stosd ; 00009719 66AB 'f.' xor eax,eax ; 0000971B 6633C0 'f3.' mov ax,[si+0x4] ; 0000971E 8B4404 '.D.' stosd ; 00009721 66AB 'f.' mov si,0x3c ; 00009723 BE3C00 '.<.' xor eax,eax ; 00009726 6633C0 'f3.' mov ax,[si+0x2] ; 00009729 8B4402 '.D.' stosd ; 0000972C 66AB 'f.' mov eax,[si] ; 0000972E 668B04 'f..' and eax,0xffffff ; 00009731 6625FFFFFF00 'f%....' stosd ; 00009737 66AB 'f.' xor eax,eax ; 00009739 6633C0 'f3.' mov ax,[si+0x4] ; 0000973C 8B4404 '.D.' stosd ; 0000973F 66AB 'f.' mov si,0x36 ; 00009741 BE3600 '.6.' xor eax,eax ; 00009744 6633C0 'f3.' mov ax,[si+0x2] ; 00009747 8B4402 '.D.' stosd ; 0000974A 66AB 'f.' mov eax,[si] ; 0000974C 668B04 'f..' and eax,0xffffff ; 0000974F 6625FFFFFF00 'f%....' stosd ; 00009755 66AB 'f.' xor eax,eax ; 00009757 6633C0 'f3.' mov ax,[si+0x4] ; 0000975A 8B4404 '.D.' stosd ; 0000975D 66AB 'f.' call xf2eb ; 0000975F E8895B '..[' xor edi,edi ; 00009762 6633FF 'f3.' mov di,0x13a0 ; 00009765 BFA013 '...' loadall ; 00009768 0F07 '..' x976a: pop ds ; 0000976A 1F '.' pop bx ; 0000976B 5B '[' pop eax ; 0000976C 6658 'fX' pop bp ; 0000976E 5D ']' iret ; 0000976F CF '.' test ax,0xa99e ; 00009770 A99EA9 '...' sahf ; 00009773 9E '.' mov dx,[bx+0x978b] ; 00009774 8B978B97 '....' mov [bx+0x979c],ss ; 00009778 8C979C97 '....' cmp al,0x5 ; 0000977C 3C05 '<.' ja x978b ; 0000977E 770B 'w.' xor ah,ah ; 00009780 32E4 '2.' mov si,ax ; 00009782 8BF0 '..' shl si,1 ; 00009784 D1E6 '..' jmp near [cs:si+0x9770] ; 00009786 2EFFA47097 '...p.' x978b: ret ; 0000978B C3 '.' and byte [0x87],0xef ; 0000978C 80268700EF '.&...' or bl,bl ; 00009791 0ADB 0x0A,'.' jnz x979a ; 00009793 7505 'u.' or byte [0x87],0x10 ; 00009795 800E870010 '.....' x979a: clc ; 0000979A F8 '.' ret ; 0000979B C3 '.' push dx ; 0000979C 52 'R' or bl,bl ; 0000979D 0ADB 0x0A,'.' jz x97b3 ; 0000979F 7412 't.' mov dx,[0x63] ; 000097A1 8B166300 '..c.' add dx,byte +0x4 ; 000097A5 83C204 '...' mov al,[0x65] ; 000097A8 A06500 '.e.' or al,0x8 ; 000097AB 0C08 '..' mov [0x65],al ; 000097AD A26500 '.e.' out dx,al ; 000097B0 EE '.' jmp short x97c3 ; 000097B1 EB10 '..' x97b3: mov dx,[0x63] ; 000097B3 8B166300 '..c.' add dx,byte +0x4 ; 000097B7 83C204 '...' mov al,[0x65] ; 000097BA A06500 '.e.' and al,0xf7 ; 000097BD 24F7 '$.' mov [0x65],al ; 000097BF A26500 '.e.' out dx,al ; 000097C2 EE '.' x97c3: pop dx ; 000097C3 5A 'Z' clc ; 000097C4 F8 '.' ret ; 000097C5 C3 '.' xchg ax,dx ; 000097C6 92 '.' cmpsb ; 000097C7 A6 '.' db 0x7E,0xAC retf 0xac ; 000097CA CAAC00 '...' add ah,0xd0 ; 000097CD 80C4D0 '...' mov dx,0x9a7 ; 000097D0 BAA709 '...' mov cx,[bx+si] ; 000097D3 8B08 '..' mov bp,[di-0x3e] ; 000097D5 8B6DC2 '.m.' scasw ; 000097D8 AF '.' cbw ; 000097D9 98 '.' fs cbw ; 000097DA 6498 'd.' fsub qword [bx+0x8d0b] ; 000097DC DCA70B8D '....' sti ; 000097E0 FB '.' mov [bp-0x2f],fs ; 000097E1 8C66D1 '.f.' jmp near [bx+0x8322] ; 000097E4 FFA72283 '..".' and al,[bp+di+0x8322] ; 000097E8 22832283 '".".' sub al,[bp+di+0x977c] ; 000097EC 2A837C97 '*.|.' x97f0: pop ax ; 000097F0 58 'X' pop dx ; 000097F1 5A 'Z' pop cx ; 000097F2 59 'Y' pop bx ; 000097F3 5B '[' pop si ; 000097F4 5E '^' pop di ; 000097F5 5F '_' pop bp ; 000097F6 5D ']' pop ds ; 000097F7 1F '.' pop es ; 000097F8 07 '.' iret ; 000097F9 CF '.' times 11 db 0xFF ; 000097FA - 00009804 jmp x9bd0 ; 00009805 E9C803 times 74 db 0xFF ; 00009808 - 00009851 jmp x9c28 ; 00009852 E9D303 times 12 db 0xFF ; 00009855 - 00009860 jmp x9c1f ; 00009861 E9BB03 '...' call x8da9 ; 00009864 E842F5 '.B.' jz x9899 ; 00009867 7430 't0' cmp byte [0x49],0x4 ; 00009869 803E490004 '.>I..' jc x987a ; 0000986E 720A 'r',0x0A cmp byte [0x49],0x7 ; 00009870 803E490007 '.>I..' jz x987a ; 00009875 7403 't.' jmp short x98f8 ; 00009877 EB7F '..' nop ; 00009879 90 '.' x987a: call xc32b ; 0000987A E8AE2A '..*' mov dx,[0x63] ; 0000987D 8B166300 '..c.' add dx,byte +0x6 ; 00009881 83C206 '...' mov ah,al ; 00009884 8AE0 '..' x9886: in al,dx ; 00009886 EC '.' test al,0x1 ; 00009887 A801 '..' jnz x9886 ; 00009889 75FB 'u.' cli ; 0000988B FA '.' x988c: in al,dx ; 0000988C EC '.' test al,0x1 ; 0000988D A801 '..' jz x988c ; 0000988F 74FB 't.' mov al,ah ; 00009891 8AC4 '..' stosb ; 00009893 AA '.' inc di ; 00009894 47 'G' sti ; 00009895 FB '.' loop x9886 ; 00009896 E2EE '..' ret ; 00009898 C3 '.' x9899: cmp byte [0x49],0x4 ; 00009899 803E490004 '.>I..' jc x98a7 ; 0000989E 7207 'r.' cmp byte [0x49],0x7 ; 000098A0 803E490007 '.>I..' jnz x98f8 ; 000098A5 7551 'uQ' x98a7: call xc32b ; 000098A7 E8812A '..*' x98aa: stosb ; 000098AA AA '.' inc di ; 000098AB 47 'G' loop x98aa ; 000098AC E2FC '..' ret ; 000098AE C3 '.' call x8da9 ; 000098AF E8F7F4 '...' jz x98e2 ; 000098B2 742E 't.' cmp byte [0x49],0x4 ; 000098B4 803E490004 '.>I..' jc x98c2 ; 000098B9 7207 'r.' cmp byte [0x49],0x7 ; 000098BB 803E490007 '.>I..' jc x98f8 ; 000098C0 7236 'r6' x98c2: mov ah,bl ; 000098C2 8AE3 '..' call xc32b ; 000098C4 E8642A '.d*' mov dx,[0x63] ; 000098C7 8B166300 '..c.' add dx,byte +0x6 ; 000098CB 83C206 '...' mov bx,ax ; 000098CE 8BD8 '..' x98d0: in al,dx ; 000098D0 EC '.' test al,0x1 ; 000098D1 A801 '..' jnz x98d0 ; 000098D3 75FB 'u.' cli ; 000098D5 FA '.' x98d6: in al,dx ; 000098D6 EC '.' test al,0x1 ; 000098D7 A801 '..' jz x98d6 ; 000098D9 74FB 't.' mov ax,bx ; 000098DB 8BC3 '..' stosw ; 000098DD AB '.' sti ; 000098DE FB '.' loop x98d0 ; 000098DF E2EF '..' ret ; 000098E1 C3 '.' x98e2: cmp byte [0x49],0x4 ; 000098E2 803E490004 '.>I..' jc x98f0 ; 000098E7 7207 'r.' cmp byte [0x49],0x7 ; 000098E9 803E490007 '.>I..' jnz x98f8 ; 000098EE 7508 'u.' x98f0: mov ah,bl ; 000098F0 8AE3 '..' call xc32b ; 000098F2 E8362A '.6*' rep stosw ; 000098F5 F3AB '..' ret ; 000098F7 C3 '.' x98f8: call xc34d ; 000098F8 E8522A '.R*' mov bl,[bp+0x6] ; 000098FB 8A5E06 '.^.' mov bh,[0x49] ; 000098FE 8A3E4900 '.>I.' mov dx,cs ; 00009902 8CCA '..' mov ds,dx ; 00009904 8EDA '..' mov si,0xfa6e ; 00009906 BE6EFA '.n.' or al,al ; 00009909 0AC0 0x0A,'.' jns x9915 ; 0000990B 7908 'y.' xor dx,dx ; 0000990D 33D2 '3.' mov ds,dx ; 0000990F 8EDA '..' lds si,[0x7c] ; 00009911 C5367C00 '.6|.' x9915: and ax,0x7f ; 00009915 257F00 '%..' shl ax,1 ; 00009918 D1E0 '..' shl ax,1 ; 0000991A D1E0 '..' shl ax,1 ; 0000991C D1E0 '..' add si,ax ; 0000991E 03F0 '..' cmp bh,0x6 ; 00009920 80FF06 '...' jz x9988 ; 00009923 7463 'tc' sub sp,byte +0x10 ; 00009925 83EC10 '...' mov ax,sp ; 00009928 8BC4 '..' push di ; 0000992A 57 'W' push es ; 0000992B 06 '.' mov di,ss ; 0000992C 8CD7 '..' mov es,di ; 0000992E 8EC7 '..' push cx ; 00009930 51 'Q' push bx ; 00009931 53 'S' mov di,ax ; 00009932 8BF8 '..' and bl,0x3 ; 00009934 80E303 '...' mov ch,0x8 ; 00009937 B508 '..' x9939: lodsb ; 00009939 AC '.' mov cl,0x8 ; 0000993A B108 '..' x993c: shl dx,1 ; 0000993C D1E2 '..' shl dx,1 ; 0000993E D1E2 '..' shl al,1 ; 00009940 D0E0 '..' jnc x9946 ; 00009942 7302 's.' or dl,bl ; 00009944 0AD3 0x0A,'.' x9946: dec cl ; 00009946 FEC9 '..' jnz x993c ; 00009948 75F2 'u.' mov al,dh ; 0000994A 8AC6 '..' mov ah,dl ; 0000994C 8AE2 '..' stosw ; 0000994E AB '.' dec ch ; 0000994F FECD '..' jnz x9939 ; 00009951 75E6 'u.' pop bx ; 00009953 5B '[' pop dx ; 00009954 5A 'Z' pop es ; 00009955 07 '.' pop di ; 00009956 5F '_' mov ax,ss ; 00009957 8CD0 '..' mov ds,ax ; 00009959 8ED8 '..' x995b: mov cx,0x4 ; 0000995B B90400 '...' mov si,sp ; 0000995E 8BF4 '..' x9960: lodsw ; 00009960 AD '.' sar bl,1 ; 00009961 D0FB '..' jns x9968 ; 00009963 7903 'y.' xor ax,[es:di] ; 00009965 263305 '&3.' x9968: stosw ; 00009968 AB '.' add di,0x1ffe ; 00009969 81C7FE1F '....' lodsw ; 0000996D AD '.' sar bl,1 ; 0000996E D0FB '..' jns x9975 ; 00009970 7903 'y.' xor ax,[es:di] ; 00009972 263305 '&3.' x9975: stosw ; 00009975 AB '.' sub di,0x1fb2 ; 00009976 81EFB21F '....' loop x9960 ; 0000997A E2E4 '..' sub di,0x13e ; 0000997C 81EF3E01 '..>.' dec dx ; 00009980 4A 'J' jnz x995b ; 00009981 75D8 'u.' add sp,byte +0x10 ; 00009983 83C410 '...' jmp short x99b6 ; 00009986 EB2E '..' x9988: mov ah,bl ; 00009988 8AE3 '..' mov dx,cx ; 0000998A 8BD1 '..' mov bx,si ; 0000998C 8BDE '..' x998e: mov cx,0x4 ; 0000998E B90400 '...' mov si,bx ; 00009991 8BF3 '..' x9993: lodsb ; 00009993 AC '.' sar ah,1 ; 00009994 D0FC '..' jns x999b ; 00009996 7903 'y.' xor al,[es:di] ; 00009998 263205 '&2.' x999b: stosb ; 0000999B AA '.' add di,0x1fff ; 0000999C 81C7FF1F '....' lodsb ; 000099A0 AC '.' sar ah,1 ; 000099A1 D0FC '..' jns x99a8 ; 000099A3 7903 'y.' xor al,[es:di] ; 000099A5 263205 '&2.' x99a8: stosb ; 000099A8 AA '.' sub di,0x1fb1 ; 000099A9 81EFB11F '....' loop x9993 ; 000099AD E2E4 '..' sub di,0x13f ; 000099AF 81EF3F01 '..?.' dec dx ; 000099B3 4A 'J' jnz x998e ; 000099B4 75D8 'u.' x99b6: ret ; 000099B6 C3 '.' x99b7: mov ax,0xc800 ; 000099B7 B800C8 '...' cld ; 000099BA FC '.' x99bb: call x9a0f ; 000099BB E85100 '.Q.' cmp ax,0xdf80 ; 000099BE 3D80DF '=..' jna x99bb ; 000099C1 76F8 'v.' mov ax,0xe000 ; 000099C3 B800E0 '...' mov ds,ax ; 000099C6 8ED8 '..' xor bx,bx ; 000099C8 33DB '3.' cmp word [bx],0xaa55 ; 000099CA 813F55AA '.?U.' jnz x9a09 ; 000099CE 7539 'u9' xor si,si ; 000099D0 33F6 '3.' mov cx,0x8000 ; 000099D2 B90080 '...' x99d5: lodsw ; 000099D5 AD '.' add bl,al ; 000099D6 02D8 '..' add bl,ah ; 000099D8 02DC '..' loop x99d5 ; 000099DA E2F9 '..' jz x99f6 ; 000099DC 7418 't.' mov ax,0x40 ; 000099DE B84000 '.@.' mov ds,ax ; 000099E1 8ED8 '..' or byte [0x12],0xff ; 000099E3 800E1200FF '.....' mov dx,0x5000 ; 000099E8 BA0050 '..P' mov bx,err101 ; 000099EB BB5AB7 '.Z.' mov cx,err101_len ; 000099EE B90F00 '...' call xc745 ; 000099F1 E8512D '.Q-' jmp short x9a09 ; 000099F4 EB13 '..' x99f6: mov ax,0x40 ; 000099F6 B84000 '.@.' mov es,ax ; 000099F9 8EC0 '..' push ds ; 000099FB 1E '.' mov ds,ax ; 000099FC 8ED8 '..' mov ax,0x3 ; 000099FE B80300 '...' push ax ; 00009A01 50 'P' mov bp,sp ; 00009A02 8BEC '..' call far [bp+0x0] ; 00009A04 FF5E00 '.^.' pop ax ; 00009A07 58 'X' pop ax ; 00009A08 58 'X' x9a09: mov ax,0x40 ; 00009A09 B84000 '.@.' mov ds,ax ; 00009A0C 8ED8 '..' ret ; 00009A0E C3 '.' x9a0f: mov ds,ax ; 00009A0F 8ED8 '..' xor bx,bx ; 00009A11 33DB '3.' cmp word [bx],0xaa55 ; 00009A13 813F55AA '.?U.' jnz x9a7b ; 00009A17 7562 'ub' xor si,si ; 00009A19 33F6 '3.' xor cx,cx ; 00009A1B 33C9 '3.' mov ch,[bx+0x2] ; 00009A1D 8A6F02 '.o.' shl cx,1 ; 00009A20 D1E1 '..' mov dx,cx ; 00009A22 8BD1 '..' x9a24: lodsb ; 00009A24 AC '.' add bl,al ; 00009A25 02D8 '..' loop x9a24 ; 00009A27 E2FB '..' jnz x9a69 ; 00009A29 753E 'u>' mov cl,0x4 ; 00009A2B B104 '..' shr dx,cl ; 00009A2D D3EA '..' push dx ; 00009A2F 52 'R' mov ax,0x40 ; 00009A30 B84000 '.@.' mov es,ax ; 00009A33 8EC0 '..' push ds ; 00009A35 1E '.' mov ds,ax ; 00009A36 8ED8 '..' mov ax,0x3 ; 00009A38 B80300 '...' push ax ; 00009A3B 50 'P' mov si,sp ; 00009A3C 8BF4 '..' push bp ; 00009A3E 55 'U' xor bp,bp ; 00009A3F 33ED '3.' call far [ss:si] ; 00009A41 36FF1C '6..' or bp,bp ; 00009A44 0BED '..' jz x9a54 ; 00009A46 740C 't.' push ds ; 00009A48 1E '.' mov ax,0x40 ; 00009A49 B84000 '.@.' mov ds,ax ; 00009A4C 8ED8 '..' or byte [0x12],0xff ; 00009A4E 800E1200FF '.....' pop ds ; 00009A53 1F '.' x9a54: pop bp ; 00009A54 5D ']' pop ax ; 00009A55 58 'X' mov ax,ds ; 00009A56 8CD8 '..' pop ds ; 00009A58 1F '.' pop dx ; 00009A59 5A 'Z' mov bx,ds ; 00009A5A 8CDB '..' add bx,dx ; 00009A5C 03DA '..' cmp ax,bx ; 00009A5E 3BC3 ';.' jna x9a7e ; 00009A60 761C 'v.' cmp ax,0xdf80 ; 00009A62 3D80DF '=..' jc x9a82 ; 00009A65 721B 'r.' jmp short x9a7e ; 00009A67 EB15 '..' x9a69: pusha ; 00009A69 60 '`' push es ; 00009A6A 06 '.' push ds ; 00009A6B 1E '.' mov dx,0x5000 ; 00009A6C BA0050 '..P' mov bx,0xb88c ; 00009A6F BB8CB8 '...' mov cx,0x14 ; 00009A72 B91400 '...' call xc745 ; 00009A75 E8CD2C '..,' pop ds ; 00009A78 1F '.' pop es ; 00009A79 07 '.' popa ; 00009A7A 61 'a' x9a7b: mov dx,0x80 ; 00009A7B BA8000 '...' x9a7e: mov ax,ds ; 00009A7E 8CD8 '..' add ax,dx ; 00009A80 03C2 '..' x9a82: ret ; 00009A82 C3 '.' x9a83: push ds ; 00009A83 1E '.' push es ; 00009A84 06 '.' mov ax,0xc000 ; 00009A85 B800C0 '...' x9a88: call x9ab2 ; 00009A88 E82700 '.',0x27,'.' jnz x9a94 ; 00009A8B 7507 'u.' cmp ax,0xc780 ; 00009A8D 3D80C7 '=..' jna x9a88 ; 00009A90 76F6 'v.' xor ax,ax ; 00009A92 33C0 '3.' x9a94: pop es ; 00009A94 07 '.' pop ds ; 00009A95 1F '.' ret ; 00009A96 C3 '.' x9a97: push ds ; 00009A97 1E '.' push es ; 00009A98 06 '.' mov ax,0xc000 ; 00009A99 B800C0 '...' x9a9c: push ax ; 00009A9C 50 'P' call x9ab2 ; 00009A9D E81200 '...' pop dx ; 00009AA0 5A 'Z' jz x9aaa ; 00009AA1 7407 't.' push ax ; 00009AA3 50 'P' mov ax,dx ; 00009AA4 8BC2 '..' call x9af4 ; 00009AA6 E84B00 '.K.' pop ax ; 00009AA9 58 'X' x9aaa: cmp ax,0xc780 ; 00009AAA 3D80C7 '=..' jna x9a9c ; 00009AAD 76ED 'v.' pop es ; 00009AAF 07 '.' pop ds ; 00009AB0 1F '.' ret ; 00009AB1 C3 '.' x9ab2: cld ; 00009AB2 FC '.' mov ds,ax ; 00009AB3 8ED8 '..' xor bx,bx ; 00009AB5 33DB '3.' cmp word [bx],0xaa55 ; 00009AB7 813F55AA '.?U.' jnz x9aea ; 00009ABB 752D 'u-' xor si,si ; 00009ABD 33F6 '3.' xor cx,cx ; 00009ABF 33C9 '3.' mov ch,[bx+0x2] ; 00009AC1 8A6F02 '.o.' shl cx,1 ; 00009AC4 D1E1 '..' mov dx,cx ; 00009AC6 8BD1 '..' x9ac8: lodsb ; 00009AC8 AC '.' add bl,al ; 00009AC9 02D8 '..' loop x9ac8 ; 00009ACB E2FB '..' jnz x9ad8 ; 00009ACD 7509 'u.' mov cl,0x4 ; 00009ACF B104 '..' shr dx,cl ; 00009AD1 D3EA '..' mov ax,ds ; 00009AD3 8CD8 '..' add ax,dx ; 00009AD5 03C2 '..' ret ; 00009AD7 C3 '.' x9ad8: pusha ; 00009AD8 60 '`' push es ; 00009AD9 06 '.' push ds ; 00009ADA 1E '.' mov dx,0x5000 ; 00009ADB BA0050 '..P' mov bx,0xb88c ; 00009ADE BB8CB8 '...' mov cx,0x14 ; 00009AE1 B91400 '...' call xc745 ; 00009AE4 E85E2C '.^,' pop ds ; 00009AE7 1F '.' pop es ; 00009AE8 07 '.' popa ; 00009AE9 61 'a' x9aea: mov dx,0x80 ; 00009AEA BA8000 '...' mov ax,ds ; 00009AED 8CD8 '..' add ax,dx ; 00009AEF 03C2 '..' xor dx,dx ; 00009AF1 33D2 '3.' ret ; 00009AF3 C3 '.' x9af4: mov ds,ax ; 00009AF4 8ED8 '..' mov ax,0x40 ; 00009AF6 B84000 '.@.' mov es,ax ; 00009AF9 8EC0 '..' push ds ; 00009AFB 1E '.' mov ax,0x3 ; 00009AFC B80300 '...' push ax ; 00009AFF 50 'P' mov bp,sp ; 00009B00 8BEC '..' call far [bp+0x0] ; 00009B02 FF5E00 '.^.' pop ax ; 00009B05 58 'X' pop ds ; 00009B06 1F '.' ret ; 00009B07 C3 '.' x9b08: push cx ; 00009B08 51 'Q' mov cx,[cs:si] ; 00009B09 2E8B0C '...' x9b0c: inc si ; 00009B0C 46 'F' inc si ; 00009B0D 46 'F' cmp ah,[cs:si] ; 00009B0E 2E3A24 '.:$' jz x9b18 ; 00009B11 7405 't.' loop x9b0c ; 00009B13 E2F7 '..' clc ; 00009B15 F8 '.' jmp short x9b1d ; 00009B16 EB05 '..' x9b18: inc si ; 00009B18 46 'F' mov al,[cs:si] ; 00009B19 2E8A04 '...' stc ; 00009B1C F9 '.' x9b1d: pop cx ; 00009B1D 59 'Y' ret ; 00009B1E C3 '.' db 0xFF,0x1B,0xB1,0x32,0xB3,0xB4,0xB5,0x36,0xB7,0xB8,0xB9,0xB0,0x2D,0xBD,0x08,0x89 db 'qwertyuiop[]' db 0x0D,0xFF db 'asdfghjkl' db 0xBB,0xA7,0xE0,0xFF db '\zxcvbnm' db 0xAC,0xAE,0xAF,0xFF,0x2A,0xFF,0x20,0xFF,0x1B db '!@#$%^&*()_+' db 0x08,0x0F,0x0B,0x00,0x1A,0x7B,0x1B,0x7D,0x1C,0x0D,0x27 db ':(")~+|3<4>5?9 789-456+1230.' db 0x0D,0x00 db 0x47,0x77,0x49,0x84,0x4B,0x73 db 'MtOuQvH' db 0x8D,0x4A,0x8E db 0x4C,0x8F,0x4E,0x90,0x50,0x91,0x52,0x92,0x53,0x93,0x06,0x00,0x07,0x1E,0x0C,0x1F,0x1A,0x1B,0x1B,0x1D db 0x1C,0x0A,0x2B,0x1C,0x0A,0x00,0x47,0x97,0x48,0x98,0x49,0x99,0x4B,0x9B,0x4D,0x9D,0x4F,0x9F,0x50,0xA0 db 0x51,0xA1,0x52,0xA2,0x53,0xA3 db 0xFF,0xFF x9bd0: push ax ; 00009BD0 50 mov al,0x01 ; 00009BD1 B001 out 0x85,al ; 00009BD3 E685 mov al,0x10 ; 00009BD5 B010 out 0x84,al ; 00009BD7 E684 pop ax ; 00009BD9 58 jmp xe900 ; 00009BDA E9234D x9bdd: cli ; 00009BDD FA and al,0xf7 ; 00009BDE 24F7 '$.' add dx,byte +0x4 ; 00009BE0 83C204 '...' out dx,al ; 00009BE3 EE '.' xchg ah,al ; 00009BE4 86E0 '..' inc dx ; 00009BE6 42 'B' out dx,al ; 00009BE7 EE '.' sub dx,byte +0x5 ; 00009BE8 83EA05 '...' x9beb: xor ah,ah ; 00009BEB 32E4 '2.' x9bed: mov al,ah ; 00009BED 8AC4 '..' out dx,al ; 00009BEF EE '.' inc dx ; 00009BF0 42 'B' inc ah ; 00009BF1 FEC4 '..' lodsb ; 00009BF3 AC '.' out dx,al ; 00009BF4 EE '.' dec dx ; 00009BF5 4A 'J' loop x9bed ; 00009BF6 E2F5 '..' jmp bp ; 00009BF8 FFE5 '..' ; ; Clear the screen (DS=F000, BX=BA77 for CGA or BA86 for Mono) ; x9bfa: mov ax,0x720 ; 00009BFA B82007 '. .' mov es,[bx+0x6] ; 00009BFD 8E4706 '.G.' xor di,di ; 00009C00 33FF '3.' mov cx,0x2000 ; 00009C02 B90020 '.. ' rep stosw ; 00009C05 F3AB '..' mov dx,[bx] ; 00009C07 8B17 '..' mov al,[bx+0x3] ; 00009C09 8A4703 '.G.' out dx,al ; 00009C0C EE '.' jmp bp ; 00009C0D FFE5 '..' times 16 db 0xFF ; 00009C0F - 00009C1E x9c1f: jmp x9cac ; 00009C1F E98A00 '...' times 6 db 0xFF ; 00009C22 - 00009C27 x9c28: push ax ; 00009C28 50 push es ; 00009C29 06 mov al,0x1 ; 00009C2A B001 '..' out 0x85,al ; 00009C2C E685 '..' mov al,0x17 ; 00009C2E B017 '..' out 0x84,al ; 00009C30 E684 '..' mov ax,0x40 ; 00009C32 B84000 '.@.' mov es,ax ; 00009C35 8EC0 '..' mov al,0x20 ; 00009C37 B020 '. ' out 0xa0,al ; 00009C39 E6A0 '..' out 0x20,al ; 00009C3B E620 '. ' xor al,al ; 00009C3D 32C0 '2.' out 0xf0,al ; 00009C3F E6F0 '..' test byte [es:0x97],0x20 ; 00009C41 26F606970020 '&.... ' jz x9c54 ; 00009C47 740B 't.' and byte [es:0x97],0xdf ; 00009C49 2680269700DF '&.&...' pop es ; 00009C4F 07 '.' pop ax ; 00009C50 58 'X' int 0x2 ; 00009C51 CD02 '..' iret ; 00009C53 CF '.' x9c54: cld ; 00009C54 FC '.' push bp ; 00009C55 55 'U' push bx ; 00009C56 53 'S' push si ; 00009C57 56 'V' push cx ; 00009C58 51 'Q' push ds ; 00009C59 1E '.' sub sp,byte +0x10 ; 00009C5A 83EC10 '...' mov bp,sp ; 00009C5D 8BEC '..' or byte [es:0x97],0x20 ; 00009C5F 26800E970020 '&.... ' fnstenv [bp+0x0] ; 00009C65 D97600 '.v.' wait ; 00009C68 9B '.' mov ax,[bp+0x6] ; 00009C69 8B4606 '.F.' mov si,ax ; 00009C6C 8BF0 '..' and si,0xf ; 00009C6E 81E60F00 '....' shr ax,0x4 ; 00009C72 C1E804 '...' mov bx,[bp+0x8] ; 00009C75 8B5E08 '.^.' and bx,0xf000 ; 00009C78 81E300F0 '....' or ax,bx ; 00009C7C 0BC3 '..' mov ds,ax ; 00009C7E 8ED8 '..' mov cx,0x10 ; 00009C80 B91000 '...' x9c83: lodsb ; 00009C83 AC '.' mov ah,al ; 00009C84 8AE0 '..' and al,0xf8 ; 00009C86 24F8 '$.' cmp al,0xd8 ; 00009C88 3CD8 '<.' jz x9c91 ; 00009C8A 7405 't.' loop x9c83 ; 00009C8C E2F5 '..' jmp short x9c9d ; 00009C8E EB0D '.',0x0D nop ; 00009C90 90 '.' x9c91: lodsb ; 00009C91 AC '.' and ax,0x7ff ; 00009C92 25FF07 '%..' and word [bp+0x8],0xf800 ; 00009C95 81660800F8 '.f...' or [bp+0x8],ax ; 00009C9A 094608 '.F.' x9c9d: wait ; 00009C9D 9B '.' fldenv [bp+0x0] ; 00009C9E D96600 '.f.' add sp,byte +0x10 ; 00009CA1 83C410 '...' pop ds ; 00009CA4 1F '.' pop cx ; 00009CA5 59 'Y' pop si ; 00009CA6 5E '^' pop bx ; 00009CA7 5B '[' pop bp ; 00009CA8 5D ']' pop es ; 00009CA9 07 '.' pop ax ; 00009CAA 58 'X' iret ; 00009CAB CF '.' x9cac: push ax ; 00009CAC 50 'P' mov al,0x1 ; 00009CAD B001 '..' out 0x85,al ; 00009CAF E685 '..' mov al,0x16 ; 00009CB1 B016 '..' out 0x84,al ; 00009CB3 E684 '..' mov al,0x20 ; 00009CB5 B020 '. ' out 0xa0,al ; 00009CB7 E6A0 '..' pop ax ; 00009CB9 58 'X' int 0xa ; 00009CBA CD0A '.',0x0A iret ; 00009CBC CF '.' push ds ; 00009CBD 1E '.' push ax ; 00009CBE 50 'P' mov ax,0x40 ; 00009CBF B84000 '.@.' mov ds,ax ; 00009CC2 8ED8 '..' pop ax ; 00009CC4 58 'X' xor al,al ; 00009CC5 32C0 '2.' cli ; 00009CC7 FA '.' xchg al,[0x70] ; 00009CC8 86067000 '..p.' mov cx,[0x6e] ; 00009CCC 8B0E6E00 '..n.' mov dx,[0x6c] ; 00009CD0 8B166C00 '..l.' sti ; 00009CD4 FB '.' pop ds ; 00009CD5 1F '.' jmp xfe81 ; 00009CD6 E9A861 '..a' push ds ; 00009CD9 1E '.' push ax ; 00009CDA 50 'P' mov ax,0x40 ; 00009CDB B84000 '.@.' mov ds,ax ; 00009CDE 8ED8 '..' cli ; 00009CE0 FA '.' mov [0x6e],cx ; 00009CE1 890E6E00 '..n.' mov [0x6c],dx ; 00009CE5 89166C00 '..l.' mov byte [0x70],0x0 ; 00009CE9 C606700000 '..p..' sti ; 00009CEE FB '.' pop ax ; 00009CEF 58 'X' pop ds ; 00009CF0 1F '.' jmp xfe81 ; 00009CF1 E98D61 '..a' call x9d0f ; 00009CF4 E81800 '...' mov al,0x0 ; 00009CF7 B000 '..' call xb544 ; 00009CF9 E84818 '.H.' mov dh,al ; 00009CFC 8AF0 '..' mov al,0x2 ; 00009CFE B002 '..' call xb544 ; 00009D00 E84118 '.A.' mov cl,al ; 00009D03 8AC8 '..' mov al,0x4 ; 00009D05 B004 '..' call xb544 ; 00009D07 E83A18 '.:.' mov ch,al ; 00009D0A 8AE8 '..' jmp xfe81 ; 00009D0C E97261 '.ra' x9d0f: mov al,0xa ; 00009D0F B00A '.',0x0A cli ; 00009D11 FA '.' call xb544 ; 00009D12 E82F18 './.' test al,0x80 ; 00009D15 A880 '..' jz x9d1c ; 00009D17 7403 't.' sti ; 00009D19 FB '.' jmp short x9d0f ; 00009D1A EBF3 '..' x9d1c: ret ; 00009D1C C3 '.' call x9d0f ; 00009D1D E8EFFF '...' mov al,0x0 ; 00009D20 B000 '..' mov ah,dh ; 00009D22 8AE6 '..' call xb549 ; 00009D24 E82218 '.".' mov al,0x2 ; 00009D27 B002 '..' mov ah,cl ; 00009D29 8AE1 '..' call xb549 ; 00009D2B E81B18 '...' mov al,0x4 ; 00009D2E B004 '..' mov ah,ch ; 00009D30 8AE5 '..' call xb549 ; 00009D32 E81418 '...' mov al,0xb ; 00009D35 B00B '..' call xb544 ; 00009D37 E80A18 '.',0x0A,'.' or al,0x2 ; 00009D3A 0C02 '..' and al,0xfb ; 00009D3C 24FB '$.' and al,0xfe ; 00009D3E 24FE '$.' test dl,dl ; 00009D40 84D2 '..' jz x9d46 ; 00009D42 7402 't.' or al,0x1 ; 00009D44 0C01 '..' x9d46: mov ah,al ; 00009D46 8AE0 '..' mov al,0xb ; 00009D48 B00B '..' call xb549 ; 00009D4A E8FC17 '...' jmp xfe81 ; 00009D4D E93161 '.1a' call x9d0f ; 00009D50 E8BCFF '...' mov al,0x7 ; 00009D53 B007 '..' call xb544 ; 00009D55 E8EC17 '...' mov dl,al ; 00009D58 8AD0 '..' mov al,0x8 ; 00009D5A B008 '..' call xb544 ; 00009D5C E8E517 '...' mov dh,al ; 00009D5F 8AF0 '..' mov al,0x9 ; 00009D61 B009 '..' call xb544 ; 00009D63 E8DE17 '...' mov cl,al ; 00009D66 8AC8 '..' mov al,0x32 ; 00009D68 B032 '.2' call xb544 ; 00009D6A E8D717 '...' mov ch,al ; 00009D6D 8AE8 '..' jmp xfe81 ; 00009D6F E90F61 '..a' call x9d0f ; 00009D72 E89AFF '...' mov ax,0x6 ; 00009D75 B80600 '...' call xb549 ; 00009D78 E8CE17 '...' mov al,0x7 ; 00009D7B B007 '..' mov ah,dl ; 00009D7D 8AE2 '..' call xb549 ; 00009D7F E8C717 '...' mov al,0x8 ; 00009D82 B008 '..' mov ah,dh ; 00009D84 8AE6 '..' call xb549 ; 00009D86 E8C017 '...' mov al,0x9 ; 00009D89 B009 '..' mov ah,cl ; 00009D8B 8AE1 '..' call xb549 ; 00009D8D E8B917 '...' mov al,0xb ; 00009D90 B00B '..' call xb544 ; 00009D92 E8AF17 '...' or al,0x2 ; 00009D95 0C02 '..' and al,0xfb ; 00009D97 24FB '$.' mov ah,al ; 00009D99 8AE0 '..' mov al,0xb ; 00009D9B B00B '..' call xb549 ; 00009D9D E8A917 '...' mov al,0x32 ; 00009DA0 B032 '.2' mov ah,ch ; 00009DA2 8AE5 '..' call xb549 ; 00009DA4 E8A217 '...' jmp xfe81 ; 00009DA7 E9D760 '..`' cli ; 00009DAA FA '.' mov al,0xb ; 00009DAB B00B '..' call xb544 ; 00009DAD E89417 '...' test al,0x20 ; 00009DB0 A820 '. ' jz x9dbc ; 00009DB2 7408 't.' sti ; 00009DB4 FB '.' pop bx ; 00009DB5 5B '[' xor ax,ax ; 00009DB6 33C0 '3.' stc ; 00009DB8 F9 '.' retf 0x2 ; 00009DB9 CA0200 '...' x9dbc: mov al,0xa ; 00009DBC B00A '.',0x0A call xb544 ; 00009DBE E88317 '...' test al,0x80 ; 00009DC1 A880 '..' jnz x9dbc ; 00009DC3 75F7 'u.' mov al,0x1 ; 00009DC5 B001 '..' mov ah,dh ; 00009DC7 8AE6 '..' call xb549 ; 00009DC9 E87D17 '.}.' mov al,0x3 ; 00009DCC B003 '..' mov ah,cl ; 00009DCE 8AE1 '..' call xb549 ; 00009DD0 E87617 '.v.' mov al,0x5 ; 00009DD3 B005 '..' mov ah,ch ; 00009DD5 8AE5 '..' call xb549 ; 00009DD7 E86F17 '.o.' in al,0xa1 ; 00009DDA E4A1 '..' and al,0xfe ; 00009DDC 24FE '$.' out 0xa1,al ; 00009DDE E6A1 '..' mov al,0xb ; 00009DE0 B00B '..' call xb544 ; 00009DE2 E85F17 '._.' or al,0x20 ; 00009DE5 0C20 '. ' mov ah,al ; 00009DE7 8AE0 '..' mov al,0xb ; 00009DE9 B00B '..' call xb549 ; 00009DEB E85B17 '.[.' jmp xfe81 ; 00009DEE E99060 '..`' cli ; 00009DF1 FA '.' mov al,0xb ; 00009DF2 B00B '..' call xb544 ; 00009DF4 E84D17 '.M.' and al,0xdf ; 00009DF7 24DF '$.' mov ah,al ; 00009DF9 8AE0 '..' mov al,0xb ; 00009DFB B00B '..' call xb549 ; 00009DFD E84917 '.I.' jmp xfe81 ; 00009E00 E97E60 '.~`' x9e03: mov ah,bl ; 00009E03 8AE3 '..' x9e05: mov cx,0xf424 ; 00009E05 B924F4 '.$.' x9e08: in al,dx ; 00009E08 EC '.' test bh,al ; 00009E09 84C7 '..' jnz x9e19 ; 00009E0B 750C 'u.' call x919a ; 00009E0D E88AF3 '...' loop x9e08 ; 00009E10 E2F6 '..' dec ah ; 00009E12 FECC '..' jnz x9e05 ; 00009E14 75EF 'u.' mov ah,0x80 ; 00009E16 B480 '..' ret ; 00009E18 C3 '.' x9e19: mov ah,0x0 ; 00009E19 B400 '..' ret ; 00009E1B C3 '.' x9e1c: xor ax,ax ; 00009E1C 33C0 '3.' mov di,0xffe ; 00009E1E BFFE0F '...' mov [es:di],ax ; 00009E21 268905 '&..' stc ; 00009E24 F9 '.' stc ; 00009E25 F9 '.' stc ; 00009E26 F9 '.' stc ; 00009E27 F9 '.' stc ; 00009E28 F9 '.' cmp [es:di],ax ; 00009E29 263905 '&9.' stc ; 00009E2C F9 '.' stc ; 00009E2D F9 '.' stc ; 00009E2E F9 '.' stc ; 00009E2F F9 '.' stc ; 00009E30 F9 '.' ret ; 00009E31 C3 '.' x9e32: mov al,0xe ; 00009E32 B00E '..' pushf ; 00009E34 9C '.' cli ; 00009E35 FA '.' call xb544 ; 00009E36 E80B17 '...' push cs ; 00009E39 0E '.' call x9e40 ; 00009E3A E80300 '...' jmp short x9e41 ; 00009E3D EB02 '..' nop ; 00009E3F 90 '.' x9e40: iret ; 00009E40 CF '.' x9e41: test al,0xc0 ; 00009E41 A8C0 '..' jnz x9e57 ; 00009E43 7512 'u.' pushf ; 00009E45 9C '.' cli ; 00009E46 FA '.' mov al,0x2d ; 00009E47 B02D '.-' call xb544 ; 00009E49 E8F816 '...' push cs ; 00009E4C 0E '.' call x9e53 ; 00009E4D E80300 '...' jmp short x9e54 ; 00009E50 EB02 '..' nop ; 00009E52 90 '.' x9e53: iret ; 00009E53 CF '.' x9e54: and al,0x1 ; 00009E54 2401 '$.' ret ; 00009E56 C3 '.' x9e57: xor ax,ax ; 00009E57 33C0 '3.' ret ; 00009E59 C3 '.' x9e5a: mov al,0x8e ; 00009E5A B08E '..' pushf ; 00009E5C 9C '.' cli ; 00009E5D FA '.' call xb544 ; 00009E5E E8E316 '...' push cs ; 00009E61 0E '.' call x9e68 ; 00009E62 E80300 '...' jmp short x9e69 ; 00009E65 EB02 '..' nop ; 00009E67 90 '.' x9e68: iret ; 00009E68 CF '.' x9e69: test al,0xc0 ; 00009E69 A8C0 '..' jnz x9e7f ; 00009E6B 7512 'u.' pushf ; 00009E6D 9C '.' cli ; 00009E6E FA '.' mov al,0xad ; 00009E6F B0AD '..' call xb544 ; 00009E71 E8D016 '...' push cs ; 00009E74 0E '.' call x9e7b ; 00009E75 E80300 '...' jmp short x9e7c ; 00009E78 EB02 '..' nop ; 00009E7A 90 '.' x9e7b: iret ; 00009E7B CF '.' x9e7c: and al,0x1 ; 00009E7C 2401 '$.' ret ; 00009E7E C3 '.' x9e7f: xor ax,ax ; 00009E7F 33C0 '3.' ret ; 00009E81 C3 '.' x9e82: sti ; 00009E82 FB '.' push ds ; 00009E83 1E '.' mov ax,0x40 ; 00009E84 B84000 '.@.' mov ds,ax ; 00009E87 8ED8 '..' mov eax,[0x10] ; 00009E89 66A11000 'f...' and eax,0xffff ; 00009E8D 6625FFFF0000 'f%....' push eax ; 00009E93 6650 'fP' mov al,0x33 ; 00009E95 B033 '.3' out 0x70,al ; 00009E97 E670 '.p' in al,0x71 ; 00009E99 E471 '.q' test al,0x20 ; 00009E9B A820 '. ' pop eax ; 00009E9D 6658 'fX' jz x9ea7 ; 00009E9F 7406 't.' or eax,0x1000000 ; 00009EA1 660D00000001 'f',0x0D,'....' x9ea7: pop ds ; 00009EA7 1F '.' ret ; 00009EA8 C3 '.' call x9e32 ; 00009EA9 E886FF '...' jz x9f16 ; 00009EAC 7468 'th' cmp byte [0x49],0x2 ; 00009EAE 803E490002 '.>I..' jz x9ebe ; 00009EB3 7409 't.' cmp byte [0x49],0x3 ; 00009EB5 803E490003 '.>I..' jz x9ebe ; 00009EBA 7402 't.' jmp short x9f16 ; 00009EBC EB58 '.X' x9ebe: xor di,di ; 00009EBE 33FF '3.' mov es,di ; 00009EC0 8EC7 '..' mov di,0x74 ; 00009EC2 BF7400 '.t.' mov al,[bp+0x0] ; 00009EC5 8A4600 '.F.' cmp al,0x0 ; 00009EC8 3C00 '<.' jz x9ed5 ; 00009ECA 7409 't.' cmp al,0x1 ; 00009ECC 3C01 '<.' jnz x9f16 ; 00009ECE 7546 'uF' mov ax,0xf0e4 ; 00009ED0 B8E4F0 '...' jmp short x9ed8 ; 00009ED3 EB03 '..' x9ed5: mov ax,0xf0a4 ; 00009ED5 B8A4F0 '...' x9ed8: cmp ax,[es:di] ; 00009ED8 263B05 '&;.' jz x9f16 ; 00009EDB 7439 't9' cld ; 00009EDD FC '.' cli ; 00009EDE FA '.' stosw ; 00009EDF AB '.' mov ax,cs ; 00009EE0 8CC8 '..' stosw ; 00009EE2 AB '.' sti ; 00009EE3 FB '.' mov al,[0x65] ; 00009EE4 A06500 '.e.' mov ah,[0x66] ; 00009EE7 8A266600 '.&f.' mov dx,[0x63] ; 00009EEB 8B166300 '..c.' mov cx,0xc ; 00009EEF B90C00 '...' call xa795 ; 00009EF2 E8A008 '...' mov bx,0x1f4 ; 00009EF5 BBF401 '...' call xc638 ; 00009EF8 E83D27 '.=',0x27 ; CALL DELAY(BX) add dx,byte +0x4 ; 00009EFB 83C204 '...' mov al,[0x65] ; 00009EFE A06500 '.e.' out dx,al ; 00009F01 EE '.' mov ah,0xf ; 00009F02 B40F '..' call x83db ; 00009F04 E8D4E4 '...' mov ah,0x3 ; 00009F07 B403 '..' call x83db ; 00009F09 E8CFE4 '...' mov ah,0x2 ; 00009F0C B402 '..' call x83db ; 00009F0E E8CAE4 '...' mov ah,0x1 ; 00009F11 B401 '..' call x83db ; 00009F13 E8C5E4 '...' x9f16: ret ; 00009F16 C3 '.' x9f17: cld ; 00009F17 FC '.' lodsd ; 00009F18 66AD 'f.' push ax ; 00009F1A 50 'P' in al,0x61 ; 00009F1B E461 '.a' test al,0x40 ; 00009F1D A840 '.@' pop ax ; 00009F1F 58 'X' jz x9f47 ; 00009F20 7425 't%' sub si,byte +0x4 ; 00009F22 83EE04 '...' mov [si],eax ; 00009F25 668904 'f..' push ds ; 00009F28 1E '.' push ax ; 00009F29 50 'P' mov ax,0x48 ; 00009F2A B84800 '.H.' mov ds,ax ; 00009F2D 8ED8 '..' in al,0x61 ; 00009F2F E461 '.a' mov ah,al ; 00009F31 8AE0 '..' or al,0x8 ; 00009F33 0C08 '..' out 0x61,al ; 00009F35 E661 '.a' mov dl,[0x0] ; 00009F37 8A160000 '....' mov byte [0x0],0xff ; 00009F3B C6060000FF '.....' xchg al,ah ; 00009F40 86C4 '..' out 0x61,al ; 00009F42 E661 '.a' pop ax ; 00009F44 58 'X' pop ds ; 00009F45 1F '.' stc ; 00009F46 F9 '.' x9f47: retf ; 00009F47 CB '.' xchg si,di ; 00009F48 87F7 '..' cmp byte [bp+0x6],0x0 ; 00009F4A 807E0600 '.~..' jnz x9f67 ; 00009F4E 7517 'u.' call xd3f3 ; 00009F50 E8A034 '..4' jnz x9f6c ; 00009F53 7517 'u.' mov al,0x33 ; 00009F55 B033 '.3' out 0x70,al ; 00009F57 E670 '.p' in al,0x71 ; 00009F59 E471 '.q' test al,0x4 ; 00009F5B A804 '..' jz x9f67 ; 00009F5D 7408 't.' and al,0xfc ; 00009F5F 24FC '$.' jnz x9f9a ; 00009F61 7537 'u7' or al,0x4 ; 00009F63 0C04 '..' jmp short x9f9a ; 00009F65 EB33 '.3' x9f67: call xd405 ; 00009F67 E89B34 '..4' jnc x9f9a ; 00009F6A 732E 's.' x9f6c: call xd423 ; 00009F6C E8B434 '..4' jz x9fac ; 00009F6F 743B 't;' mov si,0xa024 ; 00009F71 BE24A0 '.$.' call xd47d ; 00009F74 E80635 '..5' test al,0x1 ; 00009F77 A801 '..' jz x9fcb ; 00009F79 7450 'tP' mov si,0xa029 ; 00009F7B BE29A0 '.).' call x9190 ; 00009F7E E80FF2 '...' mov bh,[bx] ; 00009F81 8A3F '.?' mov bl,bh ; 00009F83 8ADF '..' and bh,0x6 ; 00009F85 80E706 '...' cmp bh,0x4 ; 00009F88 80FF04 '...' jz x9fcb ; 00009F8B 743E 't>' mov si,0xa033 ; 00009F8D BE33A0 '.3.' and bl,0xc0 ; 00009F90 80E3C0 '...' jz x9fcb ; 00009F93 7436 't6' mov si,0xa02e ; 00009F95 BE2EA0 '...' jmp short x9fcb ; 00009F98 EB31 '.1' x9f9a: mov si,0xa024 ; 00009F9A BE24A0 '.$.' mov ah,0x4 ; 00009F9D B404 '..' x9f9f: dec ah ; 00009F9F FECC '..' jz x9fcb ; 00009FA1 7428 't(' dec al ; 00009FA3 FEC8 '..' jz x9fcb ; 00009FA5 7424 't$' add si,byte +0x5 ; 00009FA7 83C605 '...' jmp short x9f9f ; 00009FAA EBF3 '..' x9fac: mov word [bp+0x2],0x0 ; 00009FAC C746020000 '.F...' mov word [bp+0x4],0x0 ; 00009FB1 C746040000 '.F...' mov byte [bp+0x7],0x0 ; 00009FB6 C6460700 '.F..' mov word [bp+0xc],0x0 ; 00009FBA C7460C0000 '.F...' mov word [bp+0xa],0x0 ; 00009FBF C7460A0000 '.F',0x0A,'..' call xd3f3 ; 00009FC4 E82C34 '.,4' jnz xa005 ; 00009FC7 753C 'u<' jmp short xa014 ; 00009FC9 EB49 '.I' x9fcb: call xd436 ; 00009FCB E86834 '.h4' jc x9fac ; 00009FCE 72DC 'r.' mov [bp+0xc],cs ; 00009FD0 8C4E0C '.N.' mov dx,[cs:si+0x3] ; 00009FD3 2E8B5403 '..T.' mov [bp+0xa],dx ; 00009FD7 89560A '.V',0x0A xor bx,bx ; 00009FDA 33DB '3.' call xd3f3 ; 00009FDC E81434 '..4' jnz x9feb ; 00009FDF 750A 'u',0x0A call xd405 ; 00009FE1 E82134 '.!4' jc x9feb ; 00009FE4 7205 'r.' mov bl,[cs:si] ; 00009FE6 2E8A1C '...' xor bh,bh ; 00009FE9 32FF '2.' x9feb: mov [bp+0x2],bx ; 00009FEB 895E02 '.^.' mov ch,[cs:si+0x2] ; 00009FEE 2E8A6C02 '..l.' mov [bp+0x5],ch ; 00009FF2 886E05 '.n.' mov cl,[cs:si+0x1] ; 00009FF5 2E8A4C01 '..L.' mov [bp+0x4],cl ; 00009FF9 884E04 '.N.' mov byte [bp+0x7],0x1 ; 00009FFC C6460701 '.F..' call 0xd423 ; 0000A000 E82034 '. 4' jnz xa014 ; 0000A003 750F 'u.' xa005: call x9190 ; 0000A005 E888F1 '...' cmp byte [bx],0x0 ; 0000A008 803F00 '.?.' jnz xa014 ; 0000A00B 7507 'u.' xchg si,di ; 0000A00D 87F7 '..' call x9293 ; 0000A00F E881F2 '...' xchg si,di ; 0000A012 87F7 '..' xa014: call xd436 ; 0000A014 E81F34 '..4' mov [bp+0x6],dl ; 0000A017 885606 '.V.' xor ax,ax ; 0000A01A 33C0 '3.' and word [bp+0x16],0xfffe ; 0000A01C 816616FEFF '.f...' xchg si,di ; 0000A021 87F7 '..' ret ; 0000A023 C3 '.' add [bx+di],cx ; 0000A024 0109 '..' daa ; 0000A026 27 0x27 sti ; 0000A027 FB '.' and [bp+si],al ; 0000A028 2002 ' .' cmovg dx,[di] ; 0000A02A 0F4F15 '.O.' and [bp+di],ax ; 0000A02D 2103 '!.' or [bx+0x22],cx ; 0000A02F 094F22 '.O"' and [si],ax ; 0000A032 2104 '!.' adc cl,[bx+0x3c] ; 0000A034 124F3C '.O<' and [bx+0xbef7],ax ; 0000A037 2187F7BE '!...' int 0xa0 ; 0000A03B CDA0 '..' mov dx,[bp+0x4] ; 0000A03D 8B5604 '.V.' call xd3f3 ; 0000A040 E8B033 '..3' jnz xa074 ; 0000A043 752F 'u/' call xd405 ; 0000A045 E8BD33 '..3' jc xa070 ; 0000A048 7226 'r&' cmp al,0x1 ; 0000A04A 3C01 '<.' jz xa068 ; 0000A04C 741A 't.' add si,byte +0x6 ; 0000A04E 83C606 '...' cmp al,0x2 ; 0000A051 3C02 '<.' jz xa05f ; 0000A053 740A 't',0x0A add si,byte +0xc ; 0000A055 83C60C '...' cmp al,0x3 ; 0000A058 3C03 '<.' jz xa068 ; 0000A05A 740C 't.' add si,byte +0x6 ; 0000A05C 83C606 '...' xa05f: cmp dx,[cs:si+0x1] ; 0000A05F 2E3B5401 '.;T.' jz xa07a ; 0000A063 7415 't.' add si,byte +0x6 ; 0000A065 83C606 '...' xa068: cmp dx,[cs:si+0x1] ; 0000A068 2E3B5401 '.;T.' jz xa07a ; 0000A06C 740C 't.' jmp short xa0a5 ; 0000A06E EB35 '.5' xa070: cmp al,0x0 ; 0000A070 3C00 '<.' jz xa09c ; 0000A072 7428 't(' xa074: cmp dx,[cs:si+0x1] ; 0000A074 2E3B5401 '.;T.' jnz xa0b0 ; 0000A078 7536 'u6' xa07a: call x9190 ; 0000A07A E813F1 '...' cmp byte [bx],0x0 ; 0000A07D 803F00 '.?.' jnz xa089 ; 0000A080 7507 'u.' xchg si,di ; 0000A082 87F7 '..' call x9293 ; 0000A084 E80CF2 '...' xchg si,di ; 0000A087 87F7 '..' xa089: mov dl,[cs:si+0x3] ; 0000A089 2E8A5403 '..T.' call x9190 ; 0000A08D E800F1 '...' mov [bx],dl ; 0000A090 8817 '..' mov [bp+0xc],cs ; 0000A092 8C4E0C '.N.' mov dx,[cs:si+0x4] ; 0000A095 2E8B5404 '..T.' mov [bp+0xa],dx ; 0000A099 89560A '.V',0x0A xa09c: and word [bp+0x16],0x1 ; 0000A09C 8166160100 '.f...' xor ax,ax ; 0000A0A1 33C0 '3.' jmp short xa0b9 ; 0000A0A3 EB14 '..' xa0a5: or word [bp+0x16],0x1 ; 0000A0A5 814E160100 '.N...' mov ah,0xc ; 0000A0AA B40C '..' xor al,al ; 0000A0AC 32C0 '2.' jmp short xa0ca ; 0000A0AE EB1A '..' xa0b0: or word [bp+0x16],0x1 ; 0000A0B0 814E160100 '.N...' mov ah,0xc ; 0000A0B5 B40C '..' xor al,al ; 0000A0B7 32C0 '2.' xa0b9: call x9190 ; 0000A0B9 E8D4F0 '...' cmp byte [bx],0x0 ; 0000A0BC 803F00 '.?.' jnz xa0ca ; 0000A0BF 7509 'u.' xchg si,di ; 0000A0C1 87F7 '..' push ax ; 0000A0C3 50 'P' call x9293 ; 0000A0C4 E8CCF1 '...' pop ax ; 0000A0C7 58 'X' xchg si,di ; 0000A0C8 87F7 '..' xa0ca: xchg si,di ; 0000A0CA 87F7 '..' ret ; 0000A0CC C3 '.' add [bx+di],cx ; 0000A0CD 0109 '..' daa ; 0000A0CF 27 0x27 xchg ax,bx ; 0000A0D0 93 '.' sti ; 0000A0D1 FB '.' and [bp+si],al ; 0000A0D2 2002 ' .' or [bx],sp ; 0000A0D4 0927 '.',0x27 jz xa0e0 ; 0000A0D6 7408 't.' and [bp+si],ax ; 0000A0D8 2102 '!.' cmovg dx,[di] ; 0000A0DA 0F4F15 '.O.' adc ax,0x321 ; 0000A0DD 152103 '.!.' xa0e0: or [bx-0x69],cx ; 0000A0E0 094F97 '.O.' and ah,[bx+di] ; 0000A0E3 2221 '"!' add cx,[bx+di] ; 0000A0E5 0309 '..' dec di ; 0000A0E7 4F 'O' xchg ax,di ; 0000A0E8 97 '.' das ; 0000A0E9 2F '/' and [si],ax ; 0000A0EA 2104 '!.' adc cl,[bx+0x17] ; 0000A0EC 124F17 '.O.' cmp al,0x21 ; 0000A0EF 3C21 '.' sub bx,cx ; 0000A241 2BD9 '+.' test ah,0x1 ; 0000A243 F6C401 '...' jz xa24b ; 0000A246 7403 't.' mov [bp+0x2],bx ; 0000A248 895E02 '.^.' xa24b: test ah,0x2 ; 0000A24B F6C402 '...' jz xa253 ; 0000A24E 7403 't.' mov [bp+0x4],bx ; 0000A250 895E04 '.^.' xa253: test ah,0x4 ; 0000A253 F6C404 '...' jz xa25b ; 0000A256 7403 't.' mov [bp+0x6],bx ; 0000A258 895E06 '.^.' xa25b: test ah,0x8 ; 0000A25B F6C408 '...' jz xa263 ; 0000A25E 7403 't.' mov [bp+0x8],bx ; 0000A260 895E08 '.^.' xa263: cmp [bp+0x0],al ; 0000A263 384600 '8F.' jnz xa21c ; 0000A266 75B4 'u.' xa268: sti ; 0000A268 FB '.' pop ax ; 0000A269 58 'X' pop ax ; 0000A26A 58 'X' pop bx ; 0000A26B 5B '[' pop cx ; 0000A26C 59 'Y' pop dx ; 0000A26D 5A 'Z' pop bp ; 0000A26E 5D ']' pop bp ; 0000A26F 5D ']' pop bp ; 0000A270 5D ']' shr ax,0x4 ; 0000A271 C1E804 '...' shr bx,0x4 ; 0000A274 C1EB04 '...' shr cx,0x4 ; 0000A277 C1E904 '...' shr dx,0x4 ; 0000A27A C1EA04 '...' xa27d: clc ; 0000A27D F8 '.' ret ; 0000A27E C3 '.' xa27f: push ax ; 0000A27F 50 'P' mov al,0x0 ; 0000A280 B000 '..' out 0x43,al ; 0000A282 E643 '.C' in al,0x40 ; 0000A284 E440 '.@' mov cl,al ; 0000A286 8AC8 '..' in al,0x40 ; 0000A288 E440 '.@' mov ch,al ; 0000A28A 8AE8 '..' pop ax ; 0000A28C 58 'X' ret ; 0000A28D C3 '.' sti ; 0000A28E FB '.' pop di ; 0000A28F 5F '_' push ds ; 0000A290 1E '.' push bx ; 0000A291 53 'S' mov bx,0x40 ; 0000A292 BB4000 '.@.' mov ds,bx ; 0000A295 8EDB '..' test byte [0xa0],0x1 ; 0000A297 F606A00001 '.....' jnz xa2cc ; 0000A29C 752E 'u.' mov byte [0xa0],0x1 ; 0000A29E C606A00001 '.....' push es ; 0000A2A3 06 '.' mov es,bx ; 0000A2A4 8EC3 '..' lea bx,[0xa0] ; 0000A2A6 8D1EA000 '....' call xa1c8 ; 0000A2AA E81BFF '...' pop es ; 0000A2AD 07 '.' cli ; 0000A2AE FA '.' in al,0xa1 ; 0000A2AF E4A1 '..' and al,0xfe ; 0000A2B1 24FE '$.' jmp short xa2b5 ; 0000A2B3 EB00 '..' xa2b5: jmp short xa2b7 ; 0000A2B5 EB00 '..' xa2b7: out 0xa1,al ; 0000A2B7 E6A1 '..' sti ; 0000A2B9 FB '.' call xa1a2 ; 0000A2BA E8E5FE '...' xa2bd: test byte [0xa0],0x80 ; 0000A2BD F606A00080 '.....' jz xa2bd ; 0000A2C2 74F9 't.' and byte [0xa0],0x7f ; 0000A2C4 8026A0007F '.&...' clc ; 0000A2C9 F8 '.' jmp short xa2cd ; 0000A2CA EB01 '..' xa2cc: stc ; 0000A2CC F9 '.' xa2cd: pop bx ; 0000A2CD 5B '[' pop ds ; 0000A2CE 1F '.' pop di ; 0000A2CF 5F '_' retf 0x2 ; 0000A2D0 CA0200 '...' sti ; 0000A2D3 FB '.' pop di ; 0000A2D4 5F '_' pop di ; 0000A2D5 5F '_' pusha ; 0000A2D6 60 '`' push es ; 0000A2D7 06 '.' push ds ; 0000A2D8 1E '.' mov ax,0x40 ; 0000A2D9 B84000 '.@.' mov ds,ax ; 0000A2DC 8ED8 '..' mov [0x67],sp ; 0000A2DE 89266700 '.&g.' mov [0x69],ss ; 0000A2E2 8C166900 '..i.' mov al,0x0 ; 0000A2E6 B000 '..' out 0x80,al ; 0000A2E8 E680 '..' call xa3e0 ; 0000A2EA E8F300 '...' jz xa2f5 ; 0000A2ED 7406 't.' pop ds ; 0000A2EF 1F '.' pop es ; 0000A2F0 07 '.' popa ; 0000A2F1 61 'a' mov ah,0x3 ; 0000A2F2 B403 '..' iret ; 0000A2F4 CF '.' xa2f5: sti ; 0000A2F5 FB '.' lea bx,[si+0x20] ; 0000A2F6 8D5C20 '.\ ' mov word [es:bx],0xffff ; 0000A2F9 26C707FFFF '&....' mov ax,cs ; 0000A2FE 8CC8 '..' shl ax,0x4 ; 0000A300 C1E004 '...' mov [es:bx+0x2],ax ; 0000A303 26894702 '&.G.' mov ax,cs ; 0000A307 8CC8 '..' shr ax,0xc ; 0000A309 C1E80C '...' mov [es:bx+0x4],al ; 0000A30C 26884704 '&.G.' mov byte [es:bx+0x5],0x9a ; 0000A310 26C647059A '&.G..' lea bx,[si+0x28] ; 0000A315 8D5C28 '.\(' mov word [es:bx],0xffff ; 0000A318 26C707FFFF '&....' mov ax,ss ; 0000A31D 8CD0 '..' shl ax,0x4 ; 0000A31F C1E004 '...' mov [es:bx+0x2],ax ; 0000A322 26894702 '&.G.' mov ax,ss ; 0000A326 8CD0 '..' shr ax,0xc ; 0000A328 C1E80C '...' mov [es:bx+0x4],al ; 0000A32B 26884704 '&.G.' mov byte [es:bx+0x5],0x92 ; 0000A32F 26C6470592 '&.G..' push es ; 0000A334 06 '.' push si ; 0000A335 56 'V' mov ax,cs ; 0000A336 8CC8 '..' mov es,ax ; 0000A338 8EC0 '..' lea si,[0xa592] ; 0000A33A 8D3692A5 '.6..' call xa425 ; 0000A33E E8E400 '...' mov dx,ax ; 0000A341 8BD0 '..' call xa42d ; 0000A343 E8E700 '...' pop si ; 0000A346 5E '^' pop es ; 0000A347 07 '.' lea bx,[si+0x8] ; 0000A348 8D5C08 '.\.' mov [es:bx+0x2],dx ; 0000A34B 26895702 '&.W.' mov [es:bx+0x4],al ; 0000A34F 26884704 '&.G.' mov word [es:bx],0xff ; 0000A353 26C707FF00 '&....' cli ; 0000A358 FA '.' mov al,0x80 ; 0000A359 B080 '..' out 0x70,al ; 0000A35B E670 '.p' lidt [es:bx] ; 0000A35D 260F011F '&...' call xa425 ; 0000A361 E8C100 '...' mov [es:bx+0x2],ax ; 0000A364 26894702 '&.G.' call xa42d ; 0000A368 E8C200 '...' mov [es:bx+0x4],al ; 0000A36B 26884704 '&.G.' mov word [es:bx],0xffff ; 0000A36F 26C707FFFF '&....' mov byte [es:bx+0x5],0x92 ; 0000A374 26C6470592 '&.G..' lgdt [es:bx] ; 0000A379 260F0117 '&...' smsw ax ; 0000A37D 0F01E0 '...' or ax,0x1 ; 0000A380 0D0100 0x0D,'..' lmsw ax ; 0000A383 0F01F0 '...' jmp far [cs:0xa149] ; 0000A386 2EFF2E49A1 '...I.' xor ax,ax ; 0000A38B 33C0 '3.' lldt ax ; 0000A38D 0F00D0 '...' mov ax,0x28 ; 0000A390 B82800 '.(.' mov ss,ax ; 0000A393 8ED0 '..' mov ax,0x10 ; 0000A395 B81000 '...' mov ds,ax ; 0000A398 8ED8 '..' mov ax,0x18 ; 0000A39A B81800 '...' mov es,ax ; 0000A39D 8EC0 '..' cld ; 0000A39F FC '.' xor si,si ; 0000A3A0 33F6 '3.' xor di,di ; 0000A3A2 33FF '3.' mov al,0x0 ; 0000A3A4 B000 '..' out 0x70,al ; 0000A3A6 E670 '.p' push cx ; 0000A3A8 51 'Q' shr cx,1 ; 0000A3A9 D1E9 '..' rep movsd ; 0000A3AB 66F3A5 'f..' pop cx ; 0000A3AE 59 'Y' test cx,0x1 ; 0000A3AF F7C10100 '....' jz xa3b6 ; 0000A3B3 7401 't.' movsw ; 0000A3B5 A5 '.' xa3b6: mov al,0x80 ; 0000A3B6 B080 '..' out 0x70,al ; 0000A3B8 E670 '.p' mov ax,0x28 ; 0000A3BA B82800 '.(.' mov ds,ax ; 0000A3BD 8ED8 '..' mov es,ax ; 0000A3BF 8EC0 '..' mov ss,ax ; 0000A3C1 8ED0 '..' push eax ; 0000A3C3 6650 'fP' mov eax,cr0 ; 0000A3C5 0F2000 and eax,0x7ffffffe ; 0000A3C8 6625FEFFFF7F 'f%....' mov cr0,eax ; 0000A3CE 0F2200 pop eax ; 0000A3D1 6658 'fX' jmp 0xf000:0xa3d8 ; 0000A3D3 EAD8A300F0 '.....' lidt [cs:0xa151] ; 0000A3D8 2E0F011E51A1 '....Q.' jmp short xa43c ; 0000A3DE EB5C '.\' ; ; Enable A20 ; xa3e0: cli ; 0000A3E0 FA '.' call xec2e_wait_8042_ready ; 0000A3E1 E84A48 '.JH' jnz xa3ff ; 0000A3E4 7519 'u.' mov al,CMD8042_WRITE_OUTPORT; 0000A3E6 B0D1 '..' out 0x64,al ; 0000A3E8 E664 '.d' call xec2e_wait_8042_ready ; 0000A3EA E84148 '.AH' jnz xa3ff ; 0000A3ED 7510 'u.' mov al,0xdf ; 0000A3EF B0DF '..' out 0x60,al ; 0000A3F1 E660 '.`' call xec2e_wait_8042_ready ; 0000A3F3 E83848 '.8H' jnz xa3ff ; 0000A3F6 7507 'u.' mov al,0xff ; 0000A3F8 B0FF '..' out 0x64,al ; 0000A3FA E664 '.d' call xec2e_wait_8042_ready ; 0000A3FC E82F48 './H' xa3ff: ret ; 0000A3FF C3 '.' mov ah,0x2 ; 0000A400 B402 '..' in al,0x61 ; 0000A402 E461 '.a' test al,0x40 ; 0000A404 A840 '.@' jz xa41f ; 0000A406 7417 't.' dec si ; 0000A408 4E 'N' dec si ; 0000A409 4E 'N' push ax ; 0000A40A 50 'P' call xa544 ; 0000A40B E83601 '.6.' jz xa412 ; 0000A40E 7402 't.' mov ax,[si] ; 0000A410 8B04 '..' xa412: mov [si],ax ; 0000A412 8904 '..' pop ax ; 0000A414 58 'X' or al,0x8 ; 0000A415 0C08 '..' out 0x61,al ; 0000A417 E661 '.a' and al,0xf7 ; 0000A419 24F7 '$.' out 0x61,al ; 0000A41B E661 '.a' mov ah,0x1 ; 0000A41D B401 '..' xa41f: mov al,ah ; 0000A41F 8AC4 '..' out 0x80,al ; 0000A421 E680 '..' jmp short xa3b6 ; 0000A423 EB91 '..' xa425: mov ax,es ; 0000A425 8CC0 '..' shl ax,0x4 ; 0000A427 C1E004 '...' add ax,si ; 0000A42A 03C6 '..' ret ; 0000A42C C3 '.' xa42d: push cx ; 0000A42D 51 'Q' mov cx,es ; 0000A42E 8CC1 '..' mov ax,si ; 0000A430 8BC6 '..' shr ax,0x4 ; 0000A432 C1E804 '...' add ax,cx ; 0000A435 03C1 '..' shr ax,0xc ; 0000A437 C1E80C '...' pop cx ; 0000A43A 59 'Y' ret ; 0000A43B C3 '.' xa43c: mov ax,0x40 ; 0000A43C B84000 '.@.' mov ds,ax ; 0000A43F 8ED8 '..' mov ss,[0x69] ; 0000A441 8E166900 '..i.' mov sp,[0x67] ; 0000A445 8B266700 '.&g.' ; ; Disable A20 ; call xa478 ; 0000A449 E82C00 '.,.' mov al,0x0 ; 0000A44C B000 '..' out 0x70,al ; 0000A44E E670 '.p' pop ds ; 0000A450 1F '.' pop es ; 0000A451 07 '.' popa ; 0000A452 61 'a' xchg al,ah ; 0000A453 86C4 '..' in al,0x80 ; 0000A455 E480 '..' xchg al,ah ; 0000A457 86C4 '..' push bp ; 0000A459 55 'U' mov bp,sp ; 0000A45A 8BEC '..' or ah,ah ; 0000A45C 0AE4 0x0A,'.' jnz xa46c ; 0000A45E 750C 'u.' and word [bp+0x6],0xfffe ; 0000A460 816606FEFF '.f...' or word [bp+0x6],0x40 ; 0000A465 814E064000 '.N.@.' jmp short xa476 ; 0000A46A EB0A '.',0x0A xa46c: and word [bp+0x6],0xffbf ; 0000A46C 816606BFFF '.f...' or word [bp+0x6],0x1 ; 0000A471 814E060100 '.N...' xa476: pop bp ; 0000A476 5D ']' iret ; 0000A477 CF '.' ; ; Disable A20 ; xa478: call xec2e_wait_8042_ready ; 0000A478 E8B347 '..G' jnz xa498 ; 0000A47B 751B 'u.' mov al,CMD8042_WRITE_OUTPORT; 0000A47D B0D1 '..' out 0x64,al ; 0000A47F E664 '.d' call xec2e_wait_8042_ready ; 0000A481 E8AA47 '..G' jnz xa498 ; 0000A484 7512 'u.' mov al,0xdd ; 0000A486 B0DD '..' out 0x60,al ; 0000A488 E660 '.`' call xec2e_wait_8042_ready ; 0000A48A E8A147 '..G' jnz xa498 ; 0000A48D 7509 'u.' mov al,0xff ; 0000A48F B0FF '..' out 0x64,al ; 0000A491 E664 '.d' call xec2e_wait_8042_ready ; 0000A493 E89847 '..G' jz xa49c ; 0000A496 7404 't.' xa498: mov al,0x3 ; 0000A498 B003 '..' out 0x80,al ; 0000A49A E680 '..' xa49c: ret ; 0000A49C C3 '.' pop di ; 0000A49D 5F '_' pop di ; 0000A49E 5F '_' mov al,0x31 ; 0000A49F B031 '.1' call xb544 ; 0000A4A1 E8A010 '...' mov ah,al ; 0000A4A4 8AE0 '..' mov al,0x30 ; 0000A4A6 B030 '.0' call xb544 ; 0000A4A8 E89910 '...' iret ; 0000A4AB CF '.' sti ; 0000A4AC FB '.' pop di ; 0000A4AD 5F '_' pop di ; 0000A4AE 5F '_' call xa3e0 ; 0000A4AF E82EFF '...' jz xa4ba ; 0000A4B2 7406 't.' mov ah,0xff ; 0000A4B4 B4FF '..' stc ; 0000A4B6 F9 '.' retf 0x2 ; 0000A4B7 CA0200 '...' xa4ba: sti ; 0000A4BA FB '.' push bx ; 0000A4BB 53 'S' lea bx,[si+0x38] ; 0000A4BC 8D5C38 '.\8' mov word [es:bx],0xffff ; 0000A4BF 26C707FFFF '&....' mov ax,cs ; 0000A4C4 8CC8 '..' shl ax,0x4 ; 0000A4C6 C1E004 '...' mov [es:bx+0x2],ax ; 0000A4C9 26894702 '&.G.' mov ax,cs ; 0000A4CD 8CC8 '..' shr ax,0xc ; 0000A4CF C1E80C '...' mov [es:bx+0x4],al ; 0000A4D2 26884704 '&.G.' mov byte [es:bx+0x5],0x9a ; 0000A4D6 26C647059A '&.G..' pop bx ; 0000A4DB 5B '[' cli ; 0000A4DC FA '.' mov al,0x11 ; 0000A4DD B011 '..' out 0x20,al ; 0000A4DF E620 '. ' mov al,bh ; 0000A4E1 8AC7 '..' out 0x21,al ; 0000A4E3 E621 '.!' mov al,0x4 ; 0000A4E5 B004 '..' out 0x21,al ; 0000A4E7 E621 '.!' mov al,0x1 ; 0000A4E9 B001 '..' out 0x21,al ; 0000A4EB E621 '.!' mov al,0xff ; 0000A4ED B0FF '..' out 0x21,al ; 0000A4EF E621 '.!' mov al,0x11 ; 0000A4F1 B011 '..' out 0xa0,al ; 0000A4F3 E6A0 '..' mov al,bl ; 0000A4F5 8AC3 '..' out 0xa1,al ; 0000A4F7 E6A1 '..' mov al,0x2 ; 0000A4F9 B002 '..' out 0xa1,al ; 0000A4FB E6A1 '..' mov al,0x1 ; 0000A4FD B001 '..' out 0xa1,al ; 0000A4FF E6A1 '..' mov al,0xff ; 0000A501 B0FF '..' out 0xa1,al ; 0000A503 E6A1 '..' lea bx,[si+0x8] ; 0000A505 8D5C08 '.\.' lgdt [es:bx] ; 0000A508 260F0117 '&...' lea bx,[si+0x10] ; 0000A50C 8D5C10 '.\.' lidt [es:bx] ; 0000A50F 260F011F '&...' push bp ; 0000A513 55 'U' mov bp,sp ; 0000A514 8BEC '..' mov word [bp+0x4],0x30 ; 0000A516 C746043000 '.F.0.' pop bp ; 0000A51B 5D ']' smsw ax ; 0000A51C 0F01E0 '...' or ax,0x1 ; 0000A51F 0D0100 0x0D,'..' lmsw ax ; 0000A522 0F01F0 '...' jmp far [cs:0xa14d] ; 0000A525 2EFF2E4DA1 '...M.' xor ax,ax ; 0000A52A 33C0 '3.' lldt ax ; 0000A52C 0F00D0 '...' mov ax,0x28 ; 0000A52F B82800 '.(.' mov ss,ax ; 0000A532 8ED0 '..' mov ax,0x18 ; 0000A534 B81800 '...' mov ds,ax ; 0000A537 8ED8 '..' mov ax,0x20 ; 0000A539 B82000 '. .' mov es,ax ; 0000A53C 8EC0 '..' xor ah,ah ; 0000A53E 32E4 '2.' clc ; 0000A540 F8 '.' retf 0x2 ; 0000A541 CA0200 '...' xa544: push bx ; 0000A544 53 'S' push ds ; 0000A545 1E '.' push es ; 0000A546 06 '.' mov ax,0x8 ; 0000A547 B80800 '...' mov ds,ax ; 0000A54A 8ED8 '..' mov bx,0x10 ; 0000A54C BB1000 '...' cmp byte [bx+0x6],0x80 ; 0000A54F 807F0680 '....' jnz xa584 ; 0000A553 752F 'u/' cmp byte [bx+0x4],0xc0 ; 0000A555 807F04C0 '....' jnz xa584 ; 0000A559 7529 'u)' cmp word [bx+0x2],byte +0x0 ; 0000A55B 837F0200 '....' jnz xa584 ; 0000A55F 7523 'u#' mov bx,0x20 ; 0000A561 BB2000 '. .' mov byte [bx+0x5],0x92 ; 0000A564 C6470592 '.G..' mov ax,0x20 ; 0000A568 B82000 '. .' mov es,ax ; 0000A56B 8EC0 '..' mov bx,bim_table_offset ; 0000A56D BBE0FF '...' mov bx,[es:bx] ; 0000A570 268B1F '&..' test word [es:bx],0xf00 ; 0000A573 26F707000F '&....' jnz xa57f ; 0000A578 7505 'u.' mov ax,0xff ; 0000A57A B8FF00 '...' jmp short xa582 ; 0000A57D EB03 '..' xa57f: mov ax,0xfc ; 0000A57F B8FC00 '...' xa582: xor bx,bx ; 0000A582 33DB '3.' xa584: pop es ; 0000A584 07 '.' pop ds ; 0000A585 1F '.' pop bx ; 0000A586 5B '[' ret ; 0000A587 C3 '.' mov ax,cs ; 0000A588 8CC8 '..' mov es,ax ; 0000A58A 8EC0 '..' mov bx,0xe6f5 ; 0000A58C BBF5E6 '...' xor ax,ax ; 0000A58F 33C0 '3.' ret ; 0000A591 C3 '.' add [si+0x20],ah ; 0000A592 00A42000 '.. .' add [bp+0x0],al ; 0000A596 00860000 '....' add [si+0x20],ah ; 0000A59A 00A42000 '.. .' add [bp+0x0],al ; 0000A59E 00860000 '....' add [si+0x20],ah ; 0000A5A2 00A42000 '.. .' add [bp+0x0],al ; 0000A5A6 00860000 '....' add [si+0x20],ah ; 0000A5AA 00A42000 '.. .' add [bp+0x0],al ; 0000A5AE 00860000 '....' add [si+0x20],ah ; 0000A5B2 00A42000 '.. .' add [bp+0x0],al ; 0000A5B6 00860000 '....' add [si+0x20],ah ; 0000A5BA 00A42000 '.. .' add [bp+0x0],al ; 0000A5BE 00860000 '....' add [si+0x20],ah ; 0000A5C2 00A42000 '.. .' add [bp+0x0],al ; 0000A5C6 00860000 '....' add [si+0x20],ah ; 0000A5CA 00A42000 '.. .' add [bp+0x0],al ; 0000A5CE 00860000 '....' add [si+0x20],ah ; 0000A5D2 00A42000 '.. .' add [bp+0x0],al ; 0000A5D6 00860000 '....' add [si+0x20],ah ; 0000A5DA 00A42000 '.. .' add [bp+0x0],al ; 0000A5DE 00860000 '....' add [si+0x20],ah ; 0000A5E2 00A42000 '.. .' add [bp+0x0],al ; 0000A5E6 00860000 '....' add [si+0x20],ah ; 0000A5EA 00A42000 '.. .' add [bp+0x0],al ; 0000A5EE 00860000 '....' add [si+0x20],ah ; 0000A5F2 00A42000 '.. .' add [bp+0x0],al ; 0000A5F6 00860000 '....' add [si+0x20],ah ; 0000A5FA 00A42000 '.. .' add [bp+0x0],al ; 0000A5FE 00860000 '....' add [si+0x20],ah ; 0000A602 00A42000 '.. .' add [bp+0x0],al ; 0000A606 00860000 '....' add [si+0x20],ah ; 0000A60A 00A42000 '.. .' add [bp+0x0],al ; 0000A60E 00860000 '....' add [si+0x20],ah ; 0000A612 00A42000 '.. .' add [bp+0x0],al ; 0000A616 00860000 '....' add [si+0x20],ah ; 0000A61A 00A42000 '.. .' add [bp+0x0],al ; 0000A61E 00860000 '....' add [si+0x20],ah ; 0000A622 00A42000 '.. .' add [bp+0x0],al ; 0000A626 00860000 '....' add [si+0x20],ah ; 0000A62A 00A42000 '.. .' add [bp+0x0],al ; 0000A62E 00860000 '....' add [si+0x20],ah ; 0000A632 00A42000 '.. .' add [bp+0x0],al ; 0000A636 00860000 '....' add [si+0x20],ah ; 0000A63A 00A42000 '.. .' add [bp+0x0],al ; 0000A63E 00860000 '....' add [si+0x20],ah ; 0000A642 00A42000 '.. .' add [bp+0x0],al ; 0000A646 00860000 '....' add [si+0x20],ah ; 0000A64A 00A42000 '.. .' add [bp+0x0],al ; 0000A64E 00860000 '....' add [si+0x20],ah ; 0000A652 00A42000 '.. .' add [bp+0x0],al ; 0000A656 00860000 '....' add [si+0x20],ah ; 0000A65A 00A42000 '.. .' add [bp+0x0],al ; 0000A65E 00860000 '....' add [si+0x20],ah ; 0000A662 00A42000 '.. .' add [bp+0x0],al ; 0000A666 00860000 '....' add [si+0x20],ah ; 0000A66A 00A42000 '.. .' add [bp+0x0],al ; 0000A66E 00860000 '....' add [si+0x20],ah ; 0000A672 00A42000 '.. .' add [bp+0x0],al ; 0000A676 00860000 '....' add [si+0x20],ah ; 0000A67A 00A42000 '.. .' add [bp+0x0],al ; 0000A67E 00860000 '....' add [si+0x20],ah ; 0000A682 00A42000 '.. .' add [bp+0x0],al ; 0000A686 00860000 '....' add [si+0x20],ah ; 0000A68A 00A42000 '.. .' add [bp+0x0],al ; 0000A68E 00860000 '....' push ax ; 0000A692 50 'P' mov ax,[0x10] ; 0000A693 A11000 '...' and ax,0x30 ; 0000A696 253000 '%0.' cmp al,0x30 ; 0000A699 3C30 '<0' pop ax ; 0000A69B 58 'X' jz xa6b5 ; 0000A69C 7417 't.' cmp al,0x7 ; 0000A69E 3C07 '<.' jc xa6b7 ; 0000A6A0 7215 'r.' mov bx,[0x10] ; 0000A6A2 8B1E1000 '....' and bl,0x30 ; 0000A6A6 80E330 '..0' shr bl,0x4 ; 0000A6A9 C0EB04 '...' xor bh,bh ; 0000A6AC 32FF '2.' mov al,[cs:bx+0xa842] ; 0000A6AE 2E8A8742A8 '...B.' jmp short xa6b7 ; 0000A6B3 EB02 '..' xa6b5: mov al,0x7 ; 0000A6B5 B007 '..' xa6b7: mov [0x49],al ; 0000A6B7 A24900 '.I.' mov al,[0x49] ; 0000A6BA A04900 '.I.' mov bx,0xb000 ; 0000A6BD BB00B0 '...' mov dx,0x3b4 ; 0000A6C0 BAB403 '...' cmp al,0x7 ; 0000A6C3 3C07 '<.' jz xa6cd ; 0000A6C5 7406 't.' mov bx,0xb800 ; 0000A6C7 BB00B8 '...' mov dx,0x3d4 ; 0000A6CA BAD403 '...' xa6cd: mov es,bx ; 0000A6CD 8EC3 '..' mov [0x63],dx ; 0000A6CF 89166300 '..c.' cbw ; 0000A6D3 98 '.' xchg ax,bx ; 0000A6D4 93 '.' mov al,0x1 ; 0000A6D5 B001 '..' add dx,byte +0x4 ; 0000A6D7 83C204 '...' out dx,al ; 0000A6DA EE '.' sub dx,byte +0x4 ; 0000A6DB 83EA04 '...' xor ax,ax ; 0000A6DE 33C0 '3.' mov [0x4e],ax ; 0000A6E0 A34E00 '.N.' mov [0x62],al ; 0000A6E3 A26200 '.b.' mov al,[cs:bx+0xa812] ; 0000A6E6 2E8A8712A8 '.....' mov [0x4a],ax ; 0000A6EB A34A00 '.J.' shl bx,1 ; 0000A6EE D1E3 '..' mov ax,[cs:bx+0xa81a] ; 0000A6F0 2E8B871AA8 '.....' mov [0x4c],ax ; 0000A6F5 A34C00 '.L.' shr bx,1 ; 0000A6F8 D1EB '..' mov ah,[cs:bx+0xa82a] ; 0000A6FA 2E8AA72AA8 '...*.' and ah,0x3f ; 0000A6FF 80E43F '..?' mov al,[0x65] ; 0000A702 A06500 '.e.' and al,0xc0 ; 0000A705 24C0 '$.' or al,ah ; 0000A707 0AC4 0x0A,'.' mov [0x65],al ; 0000A709 A26500 '.e.' mov ah,[cs:bx+0xa832] ; 0000A70C 2E8AA732A8 '...2.' mov [0x66],ah ; 0000A711 88266600 '.&f.' mov cx,0x10 ; 0000A715 B91000 '...' push es ; 0000A718 06 '.' call xa795 ; 0000A719 E87900 '.y.' mov ch,[es:si+0xa] ; 0000A71C 268A6C0A '&.l',0x0A mov cl,[es:si+0xb] ; 0000A720 268A4C0B '&.L.' mov al,[0x49] ; 0000A724 A04900 '.I.' and al,0xfe ; 0000A727 24FE '$.' cmp al,0x2 ; 0000A729 3C02 '<.' jnz xa742 ; 0000A72B 7515 'u.' cmp byte [es:si+0x9],0xd ; 0000A72D 26807C090D '&.|.',0x0D jnz xa742 ; 0000A732 750E 'u.' mov al,ch ; 0000A734 8AC5 '..' call xa780 ; 0000A736 E84700 '.G.' mov ch,al ; 0000A739 8AE8 '..' mov al,cl ; 0000A73B 8AC1 '..' call xa780 ; 0000A73D E84000 '.@.' mov cl,al ; 0000A740 8AC8 '..' xa742: pop es ; 0000A742 07 '.' mov [0x60],cx ; 0000A743 890E6000 '..`.' mov al,[0x49] ; 0000A747 A04900 '.I.' cmp al,0x7 ; 0000A74A 3C07 '<.' jz xa755 ; 0000A74C 7407 cmp al,0x4 ; 0000A74E 3C04 '<.' mov ax,0x0 ; 0000A750 B80000 '...' jnc xa758 ; 0000A753 7303 's.' xa755: mov ax,0x720 ; 0000A755 B82007 '. .' xa758: xor di,di ; 0000A758 33FF '3.' mov cx,0x2000 ; 0000A75A B90020 '.. ' rep stosw ; 0000A75D F3AB '..' push ds ; 0000A75F 1E '.' pop es ; 0000A760 07 '.' mov di,0x50 ; 0000A761 BF5000 '.P.' xor ax,ax ; 0000A764 33C0 '3.' mov cx,0x8 ; 0000A766 B90800 '...' rep stosw ; 0000A769 F3AB '..' test byte [0x87],0x10 ; 0000A76B F606870010 '.....' jz xa778 ; 0000A770 7406 't.' mov bx,0x1f4 ; 0000A772 BBF401 '...' call xc638 ; 0000A775 E8C01E '...' ; CALL DELAY(BX) xa778: mov al,[0x65] ; 0000A778 A06500 '.e.' add dx,byte +0x4 ; 0000A77B 83C204 '...' out dx,al ; 0000A77E EE '.' ret ; 0000A77F C3 '.' xa780: push cx ; 0000A780 51 'Q' and ax,0x1f ; 0000A781 251F00 '%..' mov cl,0x3 ; 0000A784 B103 '..' shl al,cl ; 0000A786 D2E0 '..' mov cl,0xe ; 0000A788 B10E '..' div cl ; 0000A78A F6F1 '..' cmp ah,0x7 ; 0000A78C 80FC07 '...' jc xa793 ; 0000A78F 7202 'r.' inc al ; 0000A791 FEC0 '..' xa793: pop cx ; 0000A793 59 'Y' ret ; 0000A794 C3 '.' xa795: xor bh,bh ; 0000A795 32FF '2.' mov bl,[0x49] ; 0000A797 8A1E4900 '..I.' push ds ; 0000A79B 1E '.' xor si,si ; 0000A79C 33F6 '3.' mov ds,si ; 0000A79E 8EDE '..' lds si,[0x74] ; 0000A7A0 C5367400 '.6t.' mov bl,[cs:bx+0xa83a] ; 0000A7A4 2E8A9F3AA8 '...:.' add si,bx ; 0000A7A9 03F3 '..' push si ; 0000A7AB 56 'V' mov bp,0xa7b2 ; 0000A7AC BDB2A7 '...' jmp x9bdd ; 0000A7AF E92BF4 sti ; 0000A7B2 FB '.' pop si ; 0000A7B3 5E '^' mov ax,ds ; 0000A7B4 8CD8 '..' mov es,ax ; 0000A7B6 8EC0 '..' pop ds ; 0000A7B8 1F '.' ret ; 0000A7B9 C3 '.' and al,0x7 ; 0000A7BA 2407 '$.' mov [0x62],al ; 0000A7BC A26200 '.b.' cbw ; 0000A7BF 98 '.' push ax ; 0000A7C0 50 'P' push dx ; 0000A7C1 52 'R' mul word [0x4c] ; 0000A7C2 F7264C00 '.&L.' mov [0x4e],ax ; 0000A7C6 A34E00 '.N.' pop dx ; 0000A7C9 5A 'Z' xchg ax,cx ; 0000A7CA 91 '.' shr cx,1 ; 0000A7CB D1E9 '..' mov ah,0xc ; 0000A7CD B40C '..' call xacf9 ; 0000A7CF E82705 '.',0x27,'.' pop si ; 0000A7D2 5E '^' shl si,1 ; 0000A7D3 D1E6 '..' mov cx,[si+0x50] ; 0000A7D5 8B8C5000 '..P.' jmp xace4 ; 0000A7D9 E90805 '...' mov al,[0x66] ; 0000A7DC A06600 '.f.' or bh,bh ; 0000A7DF 0AFF 0x0A,'.' jnz xa7ec ; 0000A7E1 7509 'u.' and bl,0x1f ; 0000A7E3 80E31F '...' and al,0xe0 ; 0000A7E6 24E0 '$.' or al,bl ; 0000A7E8 0AC3 0x0A,'.' jmp short xa7f7 ; 0000A7EA EB0B '..' xa7ec: mov cl,0x5 ; 0000A7EC B105 '..' shl bl,cl ; 0000A7EE D2E3 '..' and bl,0x20 ; 0000A7F0 80E320 '.. ' and al,0xdf ; 0000A7F3 24DF '$.' or al,bl ; 0000A7F5 0AC3 0x0A,'.' xa7f7: mov [0x66],al ; 0000A7F7 A26600 '.f.' add dx,byte +0x5 ; 0000A7FA 83C205 '...' out dx,al ; 0000A7FD EE '.' ret ; 0000A7FE C3 '.' mov al,[0x49] ; 0000A7FF A04900 '.I.' mov [bp+0x0],al ; 0000A802 884600 '.F.' mov al,[0x4a] ; 0000A805 A04A00 '.J.' mov [bp+0x1],al ; 0000A808 884601 '.F.' mov al,[0x62] ; 0000A80B A06200 '.b.' mov [bp+0x7],al ; 0000A80E 884607 '.F.' ret ; 0000A811 C3 '.' db 0x28,0x28,0x50,0x50,0x28,0x28,0x50,0x50,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x10 ; 0000A812 ((PP((PP........ db 0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x2C,0x28,0x2D,0x29,0x2A,0x2E,0x1E,0x29 ; 0000A822 .@.@.@.@,(-)*..) db 0x30,0x30,0x30,0x30,0x30,0x30,0x3F,0x30,0x00,0x00,0x10,0x10,0x20,0x20,0x20,0x30 ; 0000A832 000000?0.... 0 db 0x03,0x01,0x03,0x07,0xD0,0x1B,0xD0,0x1B,0xC3,0xE2,0xD0,0x1B,0xD0,0x1B,0x54,0xFF ; 0000A842 ..............T. db 0xA0,0x95,0xD0,0x1B,0xA5,0xFE,0x87,0xE9,0xD0,0x1B,0xD0,0x1B,0xD0,0x1B,0xA3,0x89 ; 0000A852 ................ db 0x57,0xEF,0xD0,0x1B,0x65,0xF0,0x4D,0xF8,0x41,0xF8,0x59,0xEC,0x39,0xE7,0x59,0xF8 ; 0000A862 W...e.M.A.Y.9.Y. db 0x2E,0xE8,0xD2,0xEF,0xC0,0xE7,0xF2,0xE6,0x6E,0xFE,0x53,0xFF,0x53,0xFF,0xA4,0xF0 ; 0000A872 ........n.S.S... db 0xC7,0xEF,0x00,0x00,0x97,0x4A,0x1F,0x1C,0xD0,0x1B,0xD0,0x1B,0xD0,0x1B,0x28,0x1C ; 0000A882 .....J........(. db 0xD0,0x1B,0xD0,0x1B,0xD0,0x1B,0xF8,0x03,0xF8,0x02,0xBC,0x03,0x78,0x03,0x78,0x02 ; 0000A892 ............x.x. db 0x14,0x14,0x14,0x14,0x01,0x01,0x01,0x01,0x1E,0x00,0x3E,0x00 ; 0000A8A2 ........ xa8ae: mov al,0x30 ; 0000A8AE B030 out 0x84,al ; 0000A8B0 E684 mov ax,0x0040 ; 0000A8B2 B84000 '..@.' mov es,ax ; 0000A8B5 8EC0 '..' mov bx,[0x13] ; 0000A8B7 8B1E1300 '....' pop dx ; 0000A8BB 5A 'Z' xor bp,bp ; 0000A8BC 33ED '3.' xor ax,ax ; 0000A8BE 33C0 '3.' mov si,0x2000 ; 0000A8C0 BE0020 '.. ' xa8c3: xor di,di ; 0000A8C3 33FF '3.' mov es,bp ; 0000A8C5 8EC5 '..' mov cx,0x8000 ; 0000A8C7 B90080 '...' rep stosw ; 0000A8CA F3AB '..' add bp,0x1000 ; 0000A8CC 81C50010 '....' cmp bp,si ; 0000A8D0 3BEE ';.' jc xa8c3 ; 0000A8D2 72EF 'r.' push dx ; 0000A8D4 52 'R' mov ax,0x40 ; 0000A8D5 B84000 '.@.' mov es,ax ; 0000A8D8 8EC0 '..' mov [0x13],bx ; 0000A8DA 891E1300 '....' xor ax,ax ; 0000A8DE 33C0 '3.' mov es,ax ; 0000A8E0 8EC0 '..' mov di,0x80 ; 0000A8E2 BF8000 '...' mov cx,0x50 ; 0000A8E5 B95000 '.P.' mov ax,cs ; 0000A8E8 8CC8 '..' xa8ea: mov si,0xa896 ; 0000A8EA BE96A8 '...' cs movsw ; 0000A8ED 2EA5 '..' stosw ; 0000A8EF AB '.' loop xa8ea ; 0000A8F0 E2F8 '..' xor ax,ax ; 0000A8F2 33C0 '3.' mov es,ax ; 0000A8F4 8EC0 '..' mov di,0x180 ; 0000A8F6 BF8001 '...' mov cx,0x8 ; 0000A8F9 B90800 '...' mov ax,0x0 ; 0000A8FC B80000 '...' xa8ff: stosw ; 0000A8FF AB '.' stosw ; 0000A900 AB '.' loop xa8ff ; 0000A901 E2FC '..' mov al,0x31 ; 0000A903 B031 '.1' out 0x84,al ; 0000A905 E684 '..' xor ax,ax ; 0000A907 33C0 '3.' mov es,ax ; 0000A909 8EC0 '..' mov si,0xa886 ; 0000A90B BE86A8 '...' mov di,0x1c0 ; 0000A90E BFC001 '...' mov cx,0x8 ; 0000A911 B90800 '...' mov ax,cs ; 0000A914 8CC8 '..' xa916: cs movsw ; 0000A916 2EA5 '..' stosw ; 0000A918 AB '.' loop xa916 ; 0000A919 E2FB '..' mov al,0x32 ; 0000A91B B032 '.2' out 0x84,al ; 0000A91D E684 '..' mov si,0xa846 ; 0000A91F BE46A8 '.F.' mov di,0x0 ; 0000A922 BF0000 '...' mov cx,0x20 ; 0000A925 B92000 '. .' mov ax,cs ; 0000A928 8CC8 '..' xa92a: cs movsw ; 0000A92A 2EA5 '..' stosw ; 0000A92C AB '.' loop xa92a ; 0000A92D E2FB '..' push di ; 0000A92F 57 'W' mov di,0x7e ; 0000A930 BF7E00 '.~.' xor ax,ax ; 0000A933 33C0 '3.' mov [es:di],ax ; 0000A935 268905 '&..' pop di ; 0000A938 5F '_' mov al,0x33 ; 0000A939 B033 '.3' out 0x84,al ; 0000A93B E684 '..' mov ax,0x40 ; 0000A93D B84000 '.@.' mov ds,ax ; 0000A940 8ED8 '..' mov dx,0x1200 ; 0000A942 BA0012 '...' in al,0x80 ; 0000A945 E480 '..' cmp al,0x34 ; 0000A947 3C34 '<4' jnz xa94d ; 0000A949 7502 'u.' mov dl,al ; 0000A94B 8AD0 '..' xa94d: mov [0x72],dx ; 0000A94D 89167200 '..r.' mov al,0x34 ; 0000A951 B034 '.4' out 0x84,al ; 0000A953 E684 '..' mov ah,0x90 ; 0000A955 B490 '..' mov cx,0x1e ; 0000A957 B91E00 '...' xor bx,bx ; 0000A95A 33DB '3.' xor dx,dx ; 0000A95C 33D2 '3.' xa95e: mov al,ah ; 0000A95E 8AC4 '..' call xb544 ; 0000A960 E8E10B '...' mov dl,al ; 0000A963 8AD0 '..' add bx,dx ; 0000A965 03DA '..' inc ah ; 0000A967 FEC4 '..' loop xa95e ; 0000A969 E2F3 '..' mov al,0xaf ; 0000A96B B0AF '..' call xb544 ; 0000A96D E8D40B '...' mov dl,al ; 0000A970 8AD0 '..' mov al,0xae ; 0000A972 B0AE '..' call xb544 ; 0000A974 E8CD0B '...' mov dh,al ; 0000A977 8AF0 '..' cmp dx,bx ; 0000A979 3BD3 ';.' jz xa98f ; 0000A97B 7412 't.' mov al,0x8e ; 0000A97D B08E '..' call xb544 ; 0000A97F E8C20B '...' or al,0x40 ; 0000A982 0C40 '.@' mov ah,al ; 0000A984 8AE0 '..' mov al,0x8e ; 0000A986 B08E '..' call xb549 ; 0000A988 E8BE0B '...' mov al,0x35 ; 0000A98B B035 '.5' out 0x84,al ; 0000A98D E684 '..' xa98f: mov al,0x36 ; 0000A98F B036 '.6' out 0x84,al ; 0000A991 E684 '..' mov bx,0x0 ; 0000A993 BB0000 '...' mov ax,ds ; 0000A996 8CD8 '..' mov es,ax ; 0000A998 8EC0 '..' mov al,0x38 ; 0000A99A B038 '.8' out 0x84,al ; 0000A99C E684 '..' mov si,0xa898 ; 0000A99E BE98A8 '...' mov di,0x0 ; 0000A9A1 BF0000 '...' mov cx,0x2 ; 0000A9A4 B90200 '...' xa9a7: cs lodsw ; 0000A9A7 2EAD '..' xchg ax,dx ; 0000A9A9 92 '.' inc dx ; 0000A9AA 42 'B' inc dx ; 0000A9AB 42 'B' in al,dx ; 0000A9AC EC '.' cmp al,0xff ; 0000A9AD 3CFF '<.' jz xa9b8 ; 0000A9AF 7407 't.' add bh,0x2 ; 0000A9B1 80C702 '...' dec dx ; 0000A9B4 4A 'J' dec dx ; 0000A9B5 4A 'J' xchg ax,dx ; 0000A9B6 92 '.' stosw ; 0000A9B7 AB '.' xa9b8: loop xa9a7 ; 0000A9B8 E2ED '..' mov al,0x39 ; 0000A9BA B039 '.9' out 0x84,al ; 0000A9BC E684 '..' mov si,0xa89c ; 0000A9BE BE9CA8 '...' mov di,0x8 ; 0000A9C1 BF0800 '...' mov cx,0x3 ; 0000A9C4 B90300 '...' xa9c7: cs lodsw ; 0000A9C7 2EAD '..' xchg ax,dx ; 0000A9C9 92 '.' in al,dx ; 0000A9CA EC '.' not al ; 0000A9CB F6D0 '..' out dx,al ; 0000A9CD EE '.' mov ah,al ; 0000A9CE 8AE0 '..' in al,dx ; 0000A9D0 EC '.' cmp al,ah ; 0000A9D1 3AC4 ':.' jnz xa9da ; 0000A9D3 7505 'u.' add bh,0x40 ; 0000A9D5 80C740 '..@' xchg ax,dx ; 0000A9D8 92 '.' stosw ; 0000A9D9 AB '.' xa9da: loop xa9c7 ; 0000A9DA E2EB '..' mov al,0x3a ; 0000A9DC B03A '.:' out 0x84,al ; 0000A9DE E684 '..' mov si,0xa8a2 ; 0000A9E0 BEA2A8 '...' mov di,0x78 ; 0000A9E3 BF7800 '.x.' mov cx,0x6 ; 0000A9E6 B90600 '...' xa9e9: cs rep movsw ; 0000A9E9 F32EA5 '...' test cx,cx ; 0000A9EC 85C9 '..' jnz xa9e9 ; 0000A9EE 75F9 'u.' mov ax,0x40 ; 0000A9F0 B84000 '.@.' mov ds,ax ; 0000A9F3 8ED8 '..' mov [0x10],bx ; 0000A9F5 891E1000 '....' mov al,0x3b ; 0000A9F9 B03B '.;' out 0x84,al ; 0000A9FB E684 '..' call xc259 ; 0000A9FD E85918 '.Y.' ; ; Set bit 2 (reserved?) and bit 4 (memory size?) of ROM BIOS Video Mode Options byte @40:0087. ; It would appear that COMPAQ had a different conception of this byte; however, in the case of an ; adapter like the IBM VGA, it doesn't matter, since the IBM VGA ROM will rewrite this byte anyway. ; or byte [0x87],0x14 ; 0000AA00 800E870014 '.....' mov al,0x8e ; 0000AA05 B08E '..' call xb544 ; 0000AA07 E83A0B '.:.' test al,0x40 ; 0000AA0A A840 '.@' jnz xaa1e ; 0000AA0C 7510 'u.' mov al,0xad ; 0000AA0E B0AD '..' call xb544 ; 0000AA10 E8310B '.1.' test al,0x5 ; 0000AA13 A805 '..' jz xaa1e ; 0000AA15 7407 't.' and byte [0x87],0xfb ; 0000AA17 80268700FB '.&...' jmp short xaa2f ; 0000AA1C EB11 '..' xaa1e: mov bx,xba77 ; 0000AA1E BB77BA '.w.' mov es,[cs:bx+0x6] ; 0000AA21 2E8E4706 '..G.' call x9e1c ; 0000AA25 E8F4F3 '...' jz xaa2f ; 0000AA28 7405 't.' and byte [0x87],0xfb ; 0000AA2A 80268700FB '.&...' xaa2f: mov byte [0x84],0x18 ; 0000AA2F C606840018 '.....' mov al,0x94 ; 0000AA34 B094 '..' call xb544 ; 0000AA36 E80B0B '...' and al,0x30 ; 0000AA39 2430 '$0' mov ah,al ; 0000AA3B 8AE0 '..' push ax ; 0000AA3D 50 'P' push ds ; 0000AA3E 1E '.' mov al,0x52 ; 0000AA3F B052 '.R' out 0x84,al ; 0000AA41 E684 '..' call x9a83 ; 0000AA43 E83DF0 '.=.' pop ds ; 0000AA46 1F '.' pop ax ; 0000AA47 58 'X' jz xaa59 ; 0000AA48 740F 't.' cmp ah,0x0 ; 0000AA4A 80FC00 '...' jz xaa52 ; 0000AA4D 7403 't.' call xab87 ; 0000AA4F E83501 '.5.' xaa52: mov al,0x53 ; 0000AA52 B053 '.S' out 0x84,al ; 0000AA54 E684 '..' call x9a97 ; 0000AA56 E83EF0 '.>.' xaa59: ret ; 0000AA59 C3 '.' xaa5a: mov ax,0x40 ; 0000AA5A B84000 '.@.' mov ds,ax ; 0000AA5D 8ED8 '..' call xd03e ; 0000AA5F E8DC25 '..%' jc xaa6d ; 0000AA62 7209 'r.' cmp al,0x5 ; 0000AA64 3C05 '<.' jnz xaa6d ; 0000AA66 7505 'u.' and byte [0x87],0xfb ; 0000AA68 80268700FB '.&...' xaa6d: ret ; 0000AA6D C3 '.' db 0xFF ; 0000AA6E FF '.' db 0xFF ; 0000AA6F FF '.' db 0xFF ; 0000AA70 FF '.' jmp xae12 ; 0000AA71 E99E03 xaa74: mov al,0x50 ; 0000AA74 B050 '.P' out 0x84,al ; 0000AA76 E684 '..' mov ax,0x40 ; 0000AA78 B84000 '.@.' mov ds,ax ; 0000AA7B 8ED8 '..' mov al,0x51 ; 0000AA7D B051 '.Q' out 0x84,al ; 0000AA7F E684 '..' mov al,0x8e ; 0000AA81 B08E '..' call xb544 ; 0000AA83 E8BE0A '..',0x0A test al,0xc0 ; 0000AA86 A8C0 '..' jz xaa8f ; 0000AA88 7405 't.' mov ah,0xff ; 0000AA8A B4FF '..' jmp short xaa98 ; 0000AA8C EB0A '.',0x0A nop ; 0000AA8E 90 '.' xaa8f: mov al,0x94 ; 0000AA8F B094 '..' call xb544 ; 0000AA91 E8B00A '..',0x0A and al,0x30 ; 0000AA94 2430 '$0' mov ah,al ; 0000AA96 8AE0 '..' xaa98: push ax ; 0000AA98 50 'P' push ds ; 0000AA99 1E '.' mov al,0x52 ; 0000AA9A B052 '.R' out 0x84,al ; 0000AA9C E684 '..' call x9a83 ; 0000AA9E E8E2EF '...' pop ds ; 0000AAA1 1F '.' pop ax ; 0000AAA2 58 'X' jz xaab5 ; 0000AAA3 7410 't.' ret ; 0000AAA5 C3 '.' nop ; 0000AAA6 90 '.' nop ; 0000AAA7 90 '.' jz xaaad ; 0000AAA8 7403 't.' call xab87 ; 0000AAAA E8DA00 '...' xaaad: mov al,0x53 ; 0000AAAD B053 '.S' out 0x84,al ; 0000AAAF E684 '..' call x9a97 ; 0000AAB1 E8E3EF '...' ret ; 0000AAB4 C3 '.' xaab5: push ds ; 0000AAB5 1E '.' push es ; 0000AAB6 06 '.' push ax ; 0000AAB7 50 'P' call x9e5a ; 0000AAB8 E89FF3 '...' jz xaac9 ; 0000AABB 740C 't.' xor ax,ax ; 0000AABD 33C0 '3.' mov es,ax ; 0000AABF 8EC0 '..' mov di,0x74 ; 0000AAC1 BF7400 '.t.' mov word [es:di],0xf0e4 ; 0000AAC4 26C705E4F0 '&....' xaac9: and byte [0x10],0xcf ; 0000AAC9 80261000CF '.&...' or byte [0x10],0x30 ; 0000AACE 800E100030 '....0' mov ah,0x0 ; 0000AAD3 B400 '..' mov al,0x7 ; 0000AAD5 B007 '..' int 0x10 ; 0000AAD7 CD10 '..' and byte [0x10],0xcf ; 0000AAD9 80261000CF '.&...' or byte [0x10],0x20 ; 0000AADE 800E100020 '.... ' mov ah,0x0 ; 0000AAE3 B400 '..' mov al,0x3 ; 0000AAE5 B003 '..' int 0x10 ; 0000AAE7 CD10 '..' call xab96 ; 0000AAE9 E8AA00 '...' pop ax ; 0000AAEC 58 'X' pop es ; 0000AAED 07 '.' pop ds ; 0000AAEE 1F '.' mov al,0x54 ; 0000AAEF B054 '.T' out 0x84,al ; 0000AAF1 E684 '..' mov bp,0xaaf9 ; 0000AAF3 BDF9AA '...' jmp xac31 ; 0000AAF6 E93801 '.8.' and al,0x40 ; 0000AAF9 2440 '$@' push ax ; 0000AAFB 50 'P' call 0xab1f ; 0000AAFC E82000 '. .' pop ax ; 0000AAFF 58 'X' jnc xab1e ; 0000AB00 731C 's.' not al ; 0000AB02 F6D0 '..' and al,0x40 ; 0000AB04 2440 '$@' push ax ; 0000AB06 50 'P' mov al,0x55 ; 0000AB07 B055 '.U' out 0x84,al ; 0000AB09 E684 '..' pop ax ; 0000AB0B 58 'X' call xab1f ; 0000AB0C E81000 '...' jnc xab1e ; 0000AB0F 730D 's',0x0D mov al,0x56 ; 0000AB11 B056 '.V' out 0x84,al ; 0000AB13 E684 '..' call xc7ab ; 0000AB15 E8931C call xc791 ; 0000AB18 E8761C '.v.' call xc791 ; 0000AB1B E8731C '.s.' xab1e: ret ; 0000AB1E C3 '.' xab1f: mov dx,xba77 ; 0000AB1F BA77BA '.w.' mov bx,dx ; 0000AB22 8BDA '..' add bx,byte +0xf ; 0000AB24 83C30F '...' or al,al ; 0000AB27 0AC0 0x0A,'.' jnz xab6b ; 0000AB29 7540 'u@' xchg dx,bx ; 0000AB2B 87D3 '..' mov al,0x1 ; 0000AB2D B001 '..' mov ch,0x10 ; 0000AB2F B510 '..' cmp ah,0x10 ; 0000AB31 80FC10 '...' jz xab46 ; 0000AB34 7410 't.' mov al,0x3 ; 0000AB36 B003 '..' mov ch,0x20 ; 0000AB38 B520 '. ' cmp ah,0x20 ; 0000AB3A 80FC20 '.. ' jz xab46 ; 0000AB3D 7407 't.' call xab87 ; 0000AB3F E84500 '.E.' mov al,0x3 ; 0000AB42 B003 '..' mov ch,0x20 ; 0000AB44 B520 '. ' xab46: and byte [0x10],0xcf ; 0000AB46 80261000CF '.&...' or [0x10],ch ; 0000AB4B 082E1000 '....' push ax ; 0000AB4F 50 'P' push bx ; 0000AB50 53 'S' mov es,[cs:bx+0x6] ; 0000AB51 2E8E4706 '..G.' call x9e1c ; 0000AB55 E8C4F2 '...' pop bx ; 0000AB58 5B '[' pop ax ; 0000AB59 58 'X' jz xab5e ; 0000AB5A 7402 't.' stc ; 0000AB5C F9 '.' ret ; 0000AB5D C3 '.' xab5e: push ax ; 0000AB5E 50 'P' mov al,0x57 ; 0000AB5F B057 '.W' out 0x84,al ; 0000AB61 E684 '..' pop ax ; 0000AB63 58 'X' mov ah,0x0 ; 0000AB64 B400 '..' int 0x10 ; 0000AB66 CD10 '..' xor ax,ax ; 0000AB68 33C0 '3.' ret ; 0000AB6A C3 '.' xab6b: push bx ; 0000AB6B 53 'S' cmp ah,0x30 ; 0000AB6C 80FC30 '..0' jz xab74 ; 0000AB6F 7403 't.' call xab87 ; 0000AB71 E81300 '...' xab74: or byte [0x10],0x30 ; 0000AB74 800E100030 '....0' pop bx ; 0000AB79 5B '[' mov es,[cs:bx+0x6] ; 0000AB7A 2E8E4706 '..G.' call x9e1c ; 0000AB7E E89BF2 '...' mov al,0x7 ; 0000AB81 B007 '..' jz xab5e ; 0000AB83 74D9 't.' stc ; 0000AB85 F9 '.' ret ; 0000AB86 C3 '.' xab87: mov al,0x8e ; 0000AB87 B08E '..' call xb544 ; 0000AB89 E8B809 '...' or al,0x20 ; 0000AB8C 0C20 '. ' mov ah,al ; 0000AB8E 8AE0 '..' mov al,0x8e ; 0000AB90 B08E '..' call xb549 ; 0000AB92 E8B409 '...' ret ; 0000AB95 C3 '.' xab96: mov al,0x58 ; 0000AB96 B058 '.X' out 0x84,al ; 0000AB98 E684 '..' push cs ; 0000AB9A 0E '.' pop ds ; 0000AB9B 1F '.' mov bx,xba77 ; 0000AB9C BB77BA '.w.' xab9f: mov al,0x59 ; 0000AB9F B059 '.Y' out 0x84,al ; 0000ABA1 E684 '..' mov es,[bx+0x6] ; 0000ABA3 8E4706 '.G.' call x9e1c ; 0000ABA6 E873F2 '.s.' jz xabae ; 0000ABA9 7403 't.' jmp short xac1c ; 0000ABAB EB6F '.o' nop ; 0000ABAD 90 '.' xabae: mov al,0x5a ; 0000ABAE B05A '.Z' out 0x84,al ; 0000ABB0 E684 '..' mov al,0x1 ; 0000ABB2 B001 '..' cmp word [bx],0x3b8 ; 0000ABB4 813FB803 '.?..' jnz xabbc ; 0000ABB8 7502 'u.' mov al,0x1 ; 0000ABBA B001 '..' xabbc: mov dx,[bx] ; 0000ABBC 8B17 '..' out dx,al ; 0000ABBE EE '.' mov al,0x5b ; 0000ABBF B05B '.[' out 0x84,al ; 0000ABC1 E684 '..' xor dx,dx ; 0000ABC3 33D2 '3.' xabc5: xor di,di ; 0000ABC5 33FF '3.' mov cx,[bx+0xd] ; 0000ABC7 8B4F0D '.O',0x0D xabca: mov ax,di ; 0000ABCA 8BC7 '..' xor al,ah ; 0000ABCC 32C4 '2.' jpo xabd2 ; 0000ABCE 7B02 '{.' inc al ; 0000ABD0 FEC0 '..' xabd2: xor al,dl ; 0000ABD2 32C2 '2.' stosb ; 0000ABD4 AA '.' loop xabca ; 0000ABD5 E2F3 '..' xor di,di ; 0000ABD7 33FF '3.' mov cx,[bx+0xd] ; 0000ABD9 8B4F0D '.O',0x0D xabdc: mov ax,di ; 0000ABDC 8BC7 '..' xor al,ah ; 0000ABDE 32C4 '2.' jpo xabe4 ; 0000ABE0 7B02 '{.' inc al ; 0000ABE2 FEC0 '..' xabe4: xor al,dl ; 0000ABE4 32C2 '2.' scasb ; 0000ABE6 AE '.' loope xabdc ; 0000ABE7 E1F3 '..' jnz xabf0 ; 0000ABE9 7505 'u.' xor dl,0xff ; 0000ABEB 80F2FF '...' jnz xabc5 ; 0000ABEE 75D5 'u.' xabf0: mov al,0x5c ; 0000ABF0 B05C '.\' out 0x84,al ; 0000ABF2 E684 '..' pushf ; 0000ABF4 9C '.' mov bp,0xabfb ; 0000ABF5 BDFBAB '...' jmp x9bfa ; 0000ABF8 E9FFEF xor cx,cx ; 0000ABFB 33C9 '3.' mov dl,[bx+0x2] ; 0000ABFD 8A5702 '.W.' mov ah,0xe ; 0000AC00 B40E '..' call xacf9 ; 0000AC02 E8F400 '...' popf ; 0000AC05 9D '.' jz xac1c ; 0000AC06 7414 't.' mov al,0x5d ; 0000AC08 B05D '.]' out 0x84,al ; 0000AC0A E684 '..' push bx ; 0000AC0C 53 'S' mov dx,[bx+0x8] ; 0000AC0D 8B5708 '.W.' xor cx,cx ; 0000AC10 33C9 '3.' mov cl,[bx+0xc] ; 0000AC12 8A4F0C '.O.' mov bx,[bx+0xa] ; 0000AC15 8B5F0A '._',0x0A call xc745 ; 0000AC18 E82A1B '.*.' pop bx ; 0000AC1B 5B '[' xac1c: mov al,0x5e ; 0000AC1C B05E '.^' out 0x84,al ; 0000AC1E E684 '..' add bx,byte +0xf ; 0000AC20 83C30F '...' cmp bx,0xba95 ; 0000AC23 81FB95BA '....' jnc xac2c ; 0000AC27 7303 's.' jmp xab9f ; 0000AC29 E973FF '.s.' xac2c: mov al,0x5f ; 0000AC2C B05F '._' out 0x84,al ; 0000AC2E E684 '..' ret ; 0000AC30 C3 '.' xac31: mov al,0xc0 ; 0000AC31 B0C0 '..' out 0x64,al ; 0000AC33 E664 '.d' mov cx,0xffff ; 0000AC35 B9FFFF '...' xac38: in al,0x64 ; 0000AC38 E464 '.d' test al,0x2 ; 0000AC3A A802 '..' jz xac42 ; 0000AC3C 7404 't.' loop xac38 ; 0000AC3E E2F8 '..' jmp short xac4d ; 0000AC40 EB0B '..' xac42: mov cx,0xffff ; 0000AC42 B9FFFF '...' xac45: in al,0x64 ; 0000AC45 E464 '.d' test al,0x1 ; 0000AC47 A801 '..' jnz xac5b ; 0000AC49 7510 'u.' loop xac45 ; 0000AC4B E2F8 '..' xac4d: mov bx,0xb810 ; 0000AC4D BB10B8 '...' ; BX -> '303-Keyboard Controller Error' mov cx,0x1d ; 0000AC50 B91D00 '...' mov bp,0xac59 ; 0000AC53 BD59AC '.Y.' jmp xc7f7 ; 0000AC56 E99E1B '...' xac59: jmp short xac59 ; 0000AC59 EBFE ; HANG THE MACHINE xac5b: in al,0x60 ; 0000AC5B E460 '.`' jmp bp ; 0000AC5D FFE5 '..' times 26 db 0xFF ; 0000AC5F - 0000AC78 jmp 0xf000:0x8e31 ; 0000AC79 EA318E00F0 '.1...' mov [0x60],cx ; 0000AC7E 890E6000 '..`.' mov al,[0x49] ; 0000AC82 A04900 '.I.' and al,0xfe ; 0000AC85 24FE '$.' cmp al,0x2 ; 0000AC87 3C02 '<.' jnz xacb5 ; 0000AC89 752A 'u*' xor bx,bx ; 0000AC8B 33DB '3.' mov ds,bx ; 0000AC8D 8EDB '..' lds si,[0x74] ; 0000AC8F C5367400 '.6t.' cmp byte [si+0x19],0xd ; 0000AC93 807C190D '.|.',0x0D jnz xacb5 ; 0000AC97 751C 'u.' test cx,0x1818 ; 0000AC99 F7C11818 '....' jnz xacb5 ; 0000AC9D 7516 'u.' mov bx,cx ; 0000AC9F 8BD9 '..' and bx,0x6060 ; 0000ACA1 81E36060 '..``' mov al,ch ; 0000ACA5 8AC5 '..' call xacbb ; 0000ACA7 E81100 '...' mov ch,al ; 0000ACAA 8AE8 '..' mov al,cl ; 0000ACAC 8AC1 '..' call xacbb ; 0000ACAE E80A00 '.',0x0A,'.' mov cl,al ; 0000ACB1 8AC8 '..' or cx,bx ; 0000ACB3 0BCB '..' xacb5: mov ah,0xa ; 0000ACB5 B40A '.',0x0A call xacf9 ; 0000ACB7 E83F00 '.?.' ret ; 0000ACBA C3 '.' xacbb: and al,0xf ; 0000ACBB 240F '$.' mov ah,0xe ; 0000ACBD B40E '..' mul ah ; 0000ACBF F6E4 '..' shr ax,1 ; 0000ACC1 D1E8 '..' shr ax,1 ; 0000ACC3 D1E8 '..' shr ax,1 ; 0000ACC5 D1E8 '..' adc al,0x0 ; 0000ACC7 1400 '..' ret ; 0000ACC9 C3 '.' cmp bh,0x7 ; 0000ACCA 80FF07 '...' ja xad17 ; 0000ACCD 7748 'wH' xchg bh,bl ; 0000ACCF 86FB '..' xor bh,bh ; 0000ACD1 32FF '2.' shl bx,1 ; 0000ACD3 D1E3 '..' mov cx,[bp+0x2] ; 0000ACD5 8B4E02 '.N.' mov [bx+0x50],cx ; 0000ACD8 898F5000 '..P.' mov al,[0x62] ; 0000ACDC A06200 '.b.' cmp al,[bp+0x7] ; 0000ACDF 3A4607 ':F.' jnz xad17 ; 0000ACE2 7533 'u3' xace4: push dx ; 0000ACE4 52 'R' xor ax,ax ; 0000ACE5 33C0 '3.' xchg al,ch ; 0000ACE7 86C5 '..' mul word [0x4a] ; 0000ACE9 F7264A00 '.&J.' add cx,ax ; 0000ACED 03C8 '..' mov ax,[0x4e] ; 0000ACEF A14E00 '.N.' shr ax,1 ; 0000ACF2 D1E8 '..' add cx,ax ; 0000ACF4 03C8 '..' pop dx ; 0000ACF6 5A 'Z' mov ah,0xe ; 0000ACF7 B40E '..' xacf9: mov al,ah ; 0000ACF9 8AC4 '..' out dx,al ; 0000ACFB EE '.' inc dx ; 0000ACFC 42 'B' mov al,ch ; 0000ACFD 8AC5 '..' jmp short xad01 ; 0000ACFF EB00 '..' xad01: jmp short xad03 ; 0000AD01 EB00 '..' xad03: out dx,al ; 0000AD03 EE '.' dec dx ; 0000AD04 4A 'J' inc ah ; 0000AD05 FEC4 '..' mov al,ah ; 0000AD07 8AC4 '..' jmp short xad0b ; 0000AD09 EB00 '..' xad0b: jmp short xad0d ; 0000AD0B EB00 '..' xad0d: out dx,al ; 0000AD0D EE '.' inc dx ; 0000AD0E 42 'B' mov al,cl ; 0000AD0F 8AC1 '..' jmp short xad13 ; 0000AD11 EB00 '..' xad13: jmp short xad15 ; 0000AD13 EB00 '..' xad15: out dx,al ; 0000AD15 EE '.' dec dx ; 0000AD16 4A 'J' xad17: ret ; 0000AD17 C3 '.' xad18: mov al,ah ; 0000AD18 8AC4 '..' out dx,al ; 0000AD1A EE '.' inc dx ; 0000AD1B 42 'B' mov al,ch ; 0000AD1C 8AC5 '..' jmp short xad20 ; 0000AD1E EB00 '..' xad20: jmp short xad22 ; 0000AD20 EB00 '..' xad22: out dx,al ; 0000AD22 EE '.' dec dx ; 0000AD23 4A 'J' inc ah ; 0000AD24 FEC4 '..' mov al,ah ; 0000AD26 8AC4 '..' jmp short xad2a ; 0000AD28 EB00 '..' xad2a: jmp short xad2c ; 0000AD2A EB00 '..' xad2c: out dx,al ; 0000AD2C EE '.' inc dx ; 0000AD2D 42 'B' mov al,cl ; 0000AD2E 8AC1 '..' jmp short xad32 ; 0000AD30 EB00 '..' xad32: jmp short xad34 ; 0000AD32 EB00 '..' xad34: out dx,al ; 0000AD34 EE '.' dec dx ; 0000AD35 4A 'J' jmp bp ; 0000AD36 FFE5 '..' ; ; This prepares a request to performed a copy of 0x21 DWORDs (0x84 bytes) ; from 0x58:x0F378 (DS:BX) to (ES:DI) for 0x1F0 (DX) times, followed by a ; final copy of 0x10 DWORDs (0x40 bytes). DI advances, BX does not. ; ; Note that 0x84 * 0x1F0 is 0xFFC0, and 0xFFC0 + 0x40 is 0x10000, or exactly ; 64Kb. Also, DS is pointing to %F0000 and ES is pointing to %FF0000 (the ; last 64Kb at the top of 16Mb). ; ; DS:SI is the hard-coded address of a set of hard-coded values at %FF378. ; xad38: push ds ; 0000AD38 1E '.' mov ax,0x58 ; 0000AD39 B85800 '.X.' mov ds,ax ; 0000AD3C 8ED8 '..' mov bx,0xf378 ; 0000AD3E BB78F3 '.x.' xad41: mov dx,0x1f0 ; 0000AD41 BAF001 '...' mov ax,0x10 ; 0000AD44 B81000 '...' xor di,di ; 0000AD47 33FF '3.' mov bp,0xad4f ; 0000AD49 BD4FAD '.O.' jmp xf68d ; 0000AD4C E93E49 '.>I' ; ; Now that the 64Kb buffer at ES:0 has been prepared, call xe80b to verify the buffer contents. ; in al,0x61 ; 0000AD4F E461 '.a' or al,0xc ; 0000AD51 0C0C '..' out 0x61,al ; 0000AD53 E661 '.a' and al,0xf3 ; 0000AD55 24F3 '$.' out 0x61,al ; 0000AD57 E661 '.a' mov dx,0x1f0 ; 0000AD59 BAF001 '...' mov ax,0x10 ; 0000AD5C B81000 '...' xor di,di ; 0000AD5F 33FF '3.' mov bp,0xad67 ; 0000AD61 BD67AD '.g.' jmp xe80b ; 0000AD64 E9A43A '..:' jnc xad74 ; 0000AD67 730B 's.' push si ; 0000AD69 56 'V' push di ; 0000AD6A 57 'W' call xf6a1 ; 0000AD6B E83349 '.3I' pop di ; 0000AD6E 5F '_' pop si ; 0000AD6F 5E '^' jc xad8d ; 0000AD70 721B 'r.' jmp short xadbf ; 0000AD72 EB4B '.K' xad74: in al,0x61 ; 0000AD74 E461 '.a' test al,0x40 ; 0000AD76 A840 '.@' mov eax,0x0 ; 0000AD78 66B800000000 'f.....' jnz xad8f ; 0000AD7E 750F 'u.' cmp bx,pattern2 ; 0000AD80 81FBFCF3 '....' jz xad8b ; 0000AD84 7405 't.' mov bx,pattern2 ; 0000AD86 BBFCF3 '...' jmp short xad41 ; 0000AD89 EBB6 '..' xad8b: xor ax,ax ; 0000AD8B 33C0 '3.' xad8d: pop ds ; 0000AD8D 1F '.' ret ; 0000AD8E C3 '.' xad8f: push ax ; 0000AD8F 50 'P' mov al,[es:di] ; 0000AD90 268A05 '&..' mov [es:di],al ; 0000AD93 268805 '&..' in al,0x61 ; 0000AD96 E461 '.a' or al,0xc ; 0000AD98 0C0C '..' out 0x61,al ; 0000AD9A E661 '.a' and al,0xf3 ; 0000AD9C 24F3 '$.' out 0x61,al ; 0000AD9E E661 '.a' pop ax ; 0000ADA0 58 'X' or eax,eax ; 0000ADA1 660BC0 'f..' jnz xadbf ; 0000ADA4 7519 'u.' call x86db ; 0000ADA6 E832D9 '.2.' xchg ah,al ; 0000ADA9 86E0 '..' and ah,0xf ; 0000ADAB 80E40F '...' xor si,si ; 0000ADAE 33F6 '3.' mov cl,0x4 ; 0000ADB0 B104 '..' xadb2: rcr ah,1 ; 0000ADB2 D0DC '..' jnc xadbb ; 0000ADB4 7305 's.' inc si ; 0000ADB6 46 'F' loop xadb2 ; 0000ADB7 E2F9 '..' xor si,si ; 0000ADB9 33F6 '3.' xadbb: xor al,al ; 0000ADBB 32C0 '2.' jmp short xadd6 ; 0000ADBD EB17 '..' xadbf: mov eax,[si] ; 0000ADBF 668B04 'f..' xor eax,[es:di] ; 0000ADC2 66263305 'f&3.' mov si,di ; 0000ADC6 8BF7 '..' mov cx,0x4 ; 0000ADC8 B90400 '...' xadcb: test al,0xff ; 0000ADCB A8FF '..' jnz xadd6 ; 0000ADCD 7507 'u.' shr eax,0x8 ; 0000ADCF 66C1E808 'f...' inc si ; 0000ADD3 46 'F' loop xadcb ; 0000ADD4 E2F5 '..' xadd6: mov cl,al ; 0000ADD6 8AC8 '..' mov dx,si ; 0000ADD8 8BD6 '..' pop ds ; 0000ADDA 1F '.' stc ; 0000ADDB F9 '.' ret ; 0000ADDC C3 '.' times 8 db 0xFF ; 0000ADDD - 0000ADE4 push word [bp+si-0x52] ; 0000ADE5 FF72AE '.r.' cbw ; 0000ADE8 98 '.' scasb ; 0000ADE9 AE '.' cmpsb ; 0000ADEA A6 '.' scasb ; 0000ADEB AE '.' cmpsw ; 0000ADEC A7 '.' scasw ; 0000ADED AF '.' sub ax,0x5eb0 ; 0000ADEE 2DB05E '-.^' mov al,0xa3 ; 0000ADF1 B0A3 '..' mov dl,0xa3 ; 0000ADF3 B2A3 '..' mov dl,0x9c ; 0000ADF5 B29C '..' mov al,0xe2 ; 0000ADF7 B0E2 '..' mov al,0xa6 ; 0000ADF9 B0A6 '..' scasb ; 0000ADFB AE '.' cmpsw ; 0000ADFC A7 '.' scasw ; 0000ADFD AF '.' dec cx ; 0000ADFE 49 'I' mov cl,0x71 ; 0000ADFF B171 '.q' mov cl,0xa3 ; 0000AE01 B1A3 '..' mov dl,0xa3 ; 0000AE03 B2A3 '..' mov dl,0x3b ; 0000AE05 B23B '.;' mov cl,0x19 ; 0000AE07 B119 '..' mov dl,0xa3 ; 0000AE09 B2A3 '..' mov dl,0xa3 ; 0000AE0B B2A3 '..' mov dl,0x44 ; 0000AE0D B244 '.D' mov dl,0x70 ; 0000AE0F B270 '.p' mov dl,0x80 ; 0000AE11 B2 xae12: cmp dl,0x80 ; 0000AE12 80FA80 jnc xae29 ; 0000AE15 7312 int 0x40 ; 0000AE17 CD40 push ax ; 0000AE19 50 'P' pushf ; 0000AE1A 9C '.' push bp ; 0000AE1B 55 'U' mov bp,sp ; 0000AE1C 8BEC '..' mov ax,[bp+0x2] ; 0000AE1E 8B4602 '.F.' mov [bp+0xa],ax ; 0000AE21 89460A '.F',0x0A pop bp ; 0000AE24 5D ']' popf ; 0000AE25 9D '.' pop ax ; 0000AE26 58 'X' jmp short xae71 ; 0000AE27 EB48 '.H' xae29: pusha ; 0000AE29 60 '`' push ds ; 0000AE2A 1E '.' push es ; 0000AE2B 06 '.' push byte +0x0 ; 0000AE2C 6A00 'j.' mov bp,sp ; 0000AE2E 8BEC '..' cmp ah,0x15 ; 0000AE30 80FC15 '...' jna xae3f ; 0000AE33 760A 'v',0x0A mov ax,0x40 ; 0000AE35 B84000 '.@.' mov ds,ax ; 0000AE38 8ED8 '..' call xb2a3 ; 0000AE3A E86604 '.f.' jmp short xae6d ; 0000AE3D EB2E '..' xae3f: and word [bp+0x1a],0xfffe ; 0000AE3F 81661AFEFF '.f...' or word [bp+0x1a],0x200 ; 0000AE44 814E1A0002 '.N...' sti ; 0000AE49 FB '.' cld ; 0000AE4A FC '.' xor ax,ax ; 0000AE4B 33C0 '3.' mov ds,ax ; 0000AE4D 8ED8 '..' les si,[0x104] ; 0000AE4F C4360401 '.6..' test dl,0x1 ; 0000AE53 F6C201 '...' jz xae5c ; 0000AE56 7404 't.' les si,[0x118] ; 0000AE58 C4361801 '.6..' xae5c: mov bx,0x40 ; 0000AE5C BB4000 '.@.' mov ds,bx ; 0000AE5F 8EDB '..' mov bx,ax ; 0000AE61 8BD8 '..' mov bl,[bp+0x15] ; 0000AE63 8A5E15 '.^.' shl bx,1 ; 0000AE66 D1E3 '..' call near [cs:bx+0xade6] ; 0000AE68 2EFF97E6AD '.....' xae6d: pop es ; 0000AE6D 07 '.' pop es ; 0000AE6E 07 '.' pop ds ; 0000AE6F 1F '.' popa ; 0000AE70 61 'a' xae71: iret ; 0000AE71 CF '.' mov [bp+0x15],ah ; 0000AE72 886615 '.f.' mov [0x74],ah ; 0000AE75 88267400 '.&t.' mov dl,0x0 ; 0000AE79 B200 '..' int 0x40 ; 0000AE7B CD40 '.@' mov al,[bp+0x10] ; 0000AE7D 8A4610 '.F.' and al,0x9f ; 0000AE80 249F '$.' cmp al,0x80 ; 0000AE82 3C80 '<.' jc xae97 ; 0000AE84 7211 'r.' cmp al,0x81 ; 0000AE86 3C81 '<.' ja xae97 ; 0000AE88 770D 'w',0x0D call xc5a2 ; 0000AE8A E81517 '...' call xb17e ; 0000AE8D E8EE02 '...' jnc xae97 ; 0000AE90 7305 's.' mov ah,0x5 ; 0000AE92 B405 '..' call xb471 ; 0000AE94 E8DA05 '...' xae97: ret ; 0000AE97 C3 '.' mov al,[0x74] ; 0000AE98 A07400 '.t.' mov [bp+0x14],al ; 0000AE9B 884614 '.F.' mov [0x74],ah ; 0000AE9E 88267400 '.&t.' mov [bp+0x15],ah ; 0000AEA2 886615 '.f.' ret ; 0000AEA5 C3 '.' call xb483 ; 0000AEA6 E8DA05 '...' jc xaefe ; 0000AEA9 7253 'rS' call xb395 ; 0000AEAB E8E704 '...' mov al,0x20 ; 0000AEAE B020 '. ' test byte [es:si+0x8],0xc0 ; 0000AEB0 26F64408C0 '&.D..' jz xaeb9 ; 0000AEB5 7402 't.' or al,0x1 ; 0000AEB7 0C01 '..' xaeb9: cmp byte [bp+0x15],0xa ; 0000AEB9 807E150A '.~.',0x0A jnz xaed0 ; 0000AEBD 7511 'u.' or al,0x2 ; 0000AEBF 0C02 '..' push ax ; 0000AEC1 50 'P' mov al,[es:si+0x7] ; 0000AEC2 268A4407 '&.D.' or al,al ; 0000AEC6 0AC0 0x0A,'.' jnz xaecc ; 0000AEC8 7502 'u.' mov al,0x4 ; 0000AECA B004 '..' xaecc: mov [bp+0x0],al ; 0000AECC 884600 '.F.' pop ax ; 0000AECF 58 'X' xaed0: mov [0x48],al ; 0000AED0 A24800 '.H.' call xb3e5 ; 0000AED3 E80F05 '...' mov es,dx ; 0000AED6 8EC2 '..' mov di,ax ; 0000AED8 8BF8 '..' mov dh,0x7f ; 0000AEDA B67F '..' cmp byte [bp+0x15],0xa ; 0000AEDC 807E150A '.~.',0x0A jz xaee8 ; 0000AEE0 7406 't.' or al,ah ; 0000AEE2 0AC4 0x0A,'.' jnz xaee8 ; 0000AEE4 7502 'u.' inc dh ; 0000AEE6 FEC6 '..' xaee8: or ah,[bp+0x14] ; 0000AEE8 0A6614 0x0A,'f.' mov [bp+0x1],ah ; 0000AEEB 886601 '.f.' jz xaef4 ; 0000AEEE 7404 't.' cmp ah,dh ; 0000AEF0 3AE6 ':.' jna xaef8 ; 0000AEF2 7604 'v.' xaef4: mov ah,0x9 ; 0000AEF4 B409 '..' jmp short xaf42 ; 0000AEF6 EB4A '.J' xaef8: call xb4bd ; 0000AEF8 E8C205 '...' xaefb: call xb4d0 ; 0000AEFB E8D205 '...' xaefe: jc xaf42 ; 0000AEFE 7242 'rB' call xb2e0 ; 0000AF00 E8DD03 '...' jc xaf42 ; 0000AF03 723D 'r=' mov bh,al ; 0000AF05 8AF8 '..' call xb50e ; 0000AF07 E80406 jnc xaf1e ; 0000AF0A 7312 's.' cmp ah,0x11 ; 0000AF0C 80FC11 '...' jz xaf1b ; 0000AF0F 740A 't',0x0A test bh,0x8 ; 0000AF11 F6C708 '...' jz xaf42 ; 0000AF14 742C 't,' call xb42a ; 0000AF16 E81105 '...' jmp short xaf42 ; 0000AF19 EB27 '.',0x27 xaf1b: call xb471 ; 0000AF1B E85305 '.S.' xaf1e: call xb44d ; 0000AF1E E82C05 '.,.' jc xaf42 ; 0000AF21 721F 'r.' call xb42a ; 0000AF23 E80405 '...' cmp byte [bp+0x15],0xa ; 0000AF26 807E150A '.~.',0x0A jnz xaf31 ; 0000AF2A 7505 'u.' call xb433 ; 0000AF2C E80405 '...' jc xaf42 ; 0000AF2F 7211 'r.' xaf31: dec byte [bp+0x1] ; 0000AF31 FE4E01 '.N.' jnz xaefb ; 0000AF34 75C5 'u.' test word [bp+0x1a],0x1 ; 0000AF36 F7461A0100 '.F...' jnz xaf45 ; 0000AF3B 7508 'u.' call xb468 ; 0000AF3D E82805 '.(.' jmp short xaf45 ; 0000AF40 EB03 '..' xaf42: call xb471 ; 0000AF42 E82C05 '.,.' xaf45: ret ; 0000AF45 C3 '.' db '**********************************************************************************************' jmp xb343 ; 0000AFA4 E99C03 call xb483 ; 0000AFA7 E8D904 '...' jc xb029 ; 0000AFAA 727D 'r}' call xb395 ; 0000AFAC E8E603 '...' mov al,0x30 ; 0000AFAF B030 '.0' test byte [es:si+0x8],0xc0 ; 0000AFB1 26F64408C0 '&.D..' jz xafba ; 0000AFB6 7402 't.' or al,0x1 ; 0000AFB8 0C01 '..' xafba: cmp byte [bp+0x15],0xb ; 0000AFBA 807E150B '.~..' jnz xafd1 ; 0000AFBE 7511 'u.' or al,0x2 ; 0000AFC0 0C02 '..' push ax ; 0000AFC2 50 'P' mov al,[es:si+0x7] ; 0000AFC3 268A4407 '&.D.' or al,al ; 0000AFC7 0AC0 0x0A,'.' jnz xafcd ; 0000AFC9 7502 'u.' mov al,0x4 ; 0000AFCB B004 '..' xafcd: mov [bp+0x0],al ; 0000AFCD 884600 '.F.' pop ax ; 0000AFD0 58 'X' xafd1: mov [0x48],al ; 0000AFD1 A24800 '.H.' call xb3e5 ; 0000AFD4 E80E04 '...' mov dh,0x7f ; 0000AFD7 B67F '..' cmp byte [bp+0x15],0xb ; 0000AFD9 807E150B '.~..' jz xafe5 ; 0000AFDD 7406 't.' or al,ah ; 0000AFDF 0AC4 0x0A,'.' jnz xafe5 ; 0000AFE1 7502 'u.' inc dh ; 0000AFE3 FEC6 '..' xafe5: or ah,[bp+0x14] ; 0000AFE5 0A6614 0x0A,'f.' mov [bp+0x1],ah ; 0000AFE8 886601 '.f.' jz xaff1 ; 0000AFEB 7404 't.' cmp ah,dh ; 0000AFED 3AE6 ':.' jna xaff5 ; 0000AFEF 7604 'v.' xaff1: mov ah,0x9 ; 0000AFF1 B409 '..' jmp short xb029 ; 0000AFF3 EB34 '.4' xaff5: call xb4bd ; 0000AFF5 E8C504 '...' call xb3e5 ; 0000AFF8 E8EA03 '...' mov bx,dx ; 0000AFFB 8BDA '..' mov si,ax ; 0000AFFD 8BF0 '..' xafff: call xb44d ; 0000AFFF E84B04 '.K.' call xb3ff ; 0000B002 E8FA03 '...' cmp byte [bp+0x15],0xb ; 0000B005 807E150B '.~..' jnz xb010 ; 0000B009 7505 'u.' call xb40c ; 0000B00B E8FE03 '...' jc xb029 ; 0000B00E 7219 'r.' xb010: call xb4d0 ; 0000B010 E8BD04 '...' jc xb029 ; 0000B013 7214 'r.' call xb2e0 ; 0000B015 E8C802 '...' jc xb029 ; 0000B018 720F 'r.' call xb50e ; 0000B01A E8F104 jc xb029 ; 0000B01D 720A 'r',0x0A dec byte [bp+0x1] ; 0000B01F FE4E01 '.N.' jnz xafff ; 0000B022 75DB 'u.' call xb468 ; 0000B024 E84104 '.A.' jmp short xb02c ; 0000B027 EB03 '..' xb029: call xb471 ; 0000B029 E84504 '.E.' xb02c: ret ; 0000B02C C3 '.' call xb483 ; 0000B02D E85304 '.S.' jc xb05a ; 0000B030 7228 'r(' call xb395 ; 0000B032 E86003 '.`.' mov al,0x40 ; 0000B035 B040 '.@' test byte [es:si+0x8],0xc0 ; 0000B037 26F64408C0 '&.D..' jz xb040 ; 0000B03C 7402 't.' or al,0x1 ; 0000B03E 0C01 '..' xb040: mov [0x48],al ; 0000B040 A24800 '.H.' call xb4bd ; 0000B043 E87704 '.w.' call xb4d0 ; 0000B046 E88704 '...' jc xb05a ; 0000B049 720F 'r.' call xb2e0 ; 0000B04B E89202 '...' jc xb05a ; 0000B04E 720A 'r',0x0A call xb50e ; 0000B050 E8BB04 jc xb05a ; 0000B053 7205 'r.' call xb468 ; 0000B055 E81004 '...' jmp short xb05d ; 0000B058 EB03 '..' xb05a: call xb471 ; 0000B05A E81404 '...' xb05d: ret ; 0000B05D C3 '.' call xb483 ; 0000B05E E82204 '.".' jc xb098 ; 0000B061 7235 'r5' call xb395 ; 0000B063 E82F03 './.' mov al,[es:si+0xe] ; 0000B066 268A440E '&.D.' mov [0x43],al ; 0000B06A A24300 '.C.' mov byte [0x48],0x50 ; 0000B06D C606480050 '..H.P' call xb4bd ; 0000B072 E84804 '.H.' call xb44d ; 0000B075 E8D503 '...' jc xb098 ; 0000B078 721E 'r.' call xb3e5 ; 0000B07A E86803 '.h.' mov bx,dx ; 0000B07D 8BDA '..' mov si,ax ; 0000B07F 8BF0 '..' call xb3ff ; 0000B081 E87B03 '.{.' call xb4d0 ; 0000B084 E84904 '.I.' jc xb098 ; 0000B087 720F 'r.' call xb2e0 ; 0000B089 E85402 '.T.' jc xb098 ; 0000B08C 720A 'r',0x0A call xb50e ; 0000B08E E87D04 jc xb098 ; 0000B091 7205 'r.' call xb468 ; 0000B093 E8D203 '...' jmp short xb09b ; 0000B096 EB03 '..' xb098: call xb471 ; 0000B098 E8D603 '...' xb09b: ret ; 0000B09B C3 '.' mov [bp+0x14],ax ; 0000B09C 894614 '.F.' mov [0x74],al ; 0000B09F A27400 '.t.' push bx ; 0000B0A2 53 'S' mov bl,[bp+0x10] ; 0000B0A3 8A5E10 '.^.' and bl,0x9f ; 0000B0A6 80E39F '...' cmp bl,0x81 ; 0000B0A9 80FB81 '...' pop bx ; 0000B0AC 5B '[' jna xb0bc ; 0000B0AD 760D 'v',0x0D mov [bp+0x12],ax ; 0000B0AF 894612 '.F.' mov [bp+0x10],ax ; 0000B0B2 894610 '.F.' mov ah,0x7 ; 0000B0B5 B407 '..' call xb471 ; 0000B0B7 E8B703 '...' jmp short xb0e1 ; 0000B0BA EB25 '.%' xb0bc: mov ax,[es:si] ; 0000B0BC 268B04 '&..' dec ax ; 0000B0BF 48 'H' dec ax ; 0000B0C0 48 'H' cmp ax,0x3ff ; 0000B0C1 3DFF03 '=..' jna xb0c9 ; 0000B0C4 7603 'v.' mov ax,0x3ff ; 0000B0C6 B8FF03 '...' xb0c9: xchg ah,al ; 0000B0C9 86E0 '..' shl al,0x6 ; 0000B0CB C0E006 '...' or al,[es:si+0xe] ; 0000B0CE 260A440E '&',0x0A,'D.' mov [bp+0x12],ax ; 0000B0D2 894612 '.F.' mov ah,[es:si+0x2] ; 0000B0D5 268A6402 '&.d.' dec ah ; 0000B0D9 FECC '..' mov al,[0x75] ; 0000B0DB A07500 '.u.' mov [bp+0x10],ax ; 0000B0DE 894610 '.F.' xb0e1: ret ; 0000B0E1 C3 '.' call xb483 ; 0000B0E2 E89E03 '...' jc xb137 ; 0000B0E5 7250 'rP' mov bl,[bp+0x10] ; 0000B0E7 8A5E10 '.^.' xb0ea: mov bh,[es:si+0x2] ; 0000B0EA 268A7C02 '&.|.' dec bh ; 0000B0EE FECF '..' or bh,0xa0 ; 0000B0F0 80CFA0 '...' test bl,0x1 ; 0000B0F3 F6C301 '...' jz xb0fb ; 0000B0F6 7403 't.' or bh,0x10 ; 0000B0F8 80CF10 '...' xb0fb: mov bl,[es:si+0xe] ; 0000B0FB 268A5C0E '&.\.' mov ax,[es:si+0x5] ; 0000B0FF 268B4405 '&.D.' shr ax,0x2 ; 0000B103 C1E802 '...' push es ; 0000B106 06 '.' push ds ; 0000B107 1E '.' pop es ; 0000B108 07 '.' mov di,0x42 ; 0000B109 BF4200 '.B.' stosb ; 0000B10C AA '.' mov al,bl ; 0000B10D 8AC3 '..' stosb ; 0000B10F AA '.' mov al,0x1 ; 0000B110 B001 '..' stosb ; 0000B112 AA '.' mov al,ah ; 0000B113 8AC4 '..' stosb ; 0000B115 AA '.' stosb ; 0000B116 AA '.' mov al,bh ; 0000B117 8AC7 '..' stosb ; 0000B119 AA '.' mov byte [di],0x91 ; 0000B11A C60591 '...' pop es ; 0000B11D 07 '.' call xb4bd ; 0000B11E E89C03 '...' call xb4d0 ; 0000B121 E8AC03 '...' jc xb135 ; 0000B124 720F 'r.' call xb2e0 ; 0000B126 E8B701 '...' jc xb135 ; 0000B129 720A 'r',0x0A call xb50e ; 0000B12B E8E003 jc xb135 ; 0000B12E 7205 'r.' call xb468 ; 0000B130 E83503 '.5.' jmp short xb13a ; 0000B133 EB05 '..' xb135: mov ah,0x7 ; 0000B135 B407 '..' xb137: call xb471 ; 0000B137 E83703 '.7.' xb13a: ret ; 0000B13A C3 '.' call xb483 ; 0000B13B E84503 '.E.' jc xb145 ; 0000B13E 7205 'r.' call xb468 ; 0000B140 E82503 '.%.' jmp short xb148 ; 0000B143 EB03 '..' xb145: call xb471 ; 0000B145 E82903 '.).' xb148: ret ; 0000B148 C3 '.' call xb483 ; 0000B149 E83703 '.7.' jc xb16d ; 0000B14C 721F 'r.' call xb395 ; 0000B14E E84402 '.D.' xb151: mov byte [0x48],0x70 ; 0000B151 C606480070 '..H.p' call xb4bd ; 0000B156 E86403 '.d.' call xb4d0 ; 0000B159 E87403 '.t.' jc xb16d ; 0000B15C 720F 'r.' call xb2e0 ; 0000B15E E87F01 '...' jc xb16d ; 0000B161 720A 'r',0x0A call xb50e ; 0000B163 E8A803 jc xb16d ; 0000B166 7205 'r.' call xb468 ; 0000B168 E8FD02 '...' jmp short xb170 ; 0000B16B EB03 '..' xb16d: call xb471 ; 0000B16D E80103 '...' xb170: ret ; 0000B170 C3 '.' call xb483 ; 0000B171 E80F03 '...' jnc xb17e ; 0000B174 7308 's.' cmp ah,0x1 ; 0000B176 80FC01 '...' jnz xb17e ; 0000B179 7503 'u.' jmp xb215 ; 0000B17B E99700 '...' xb17e: push ds ; 0000B17E 1E '.' xor ax,ax ; 0000B17F 33C0 '3.' mov ds,ax ; 0000B181 8ED8 '..' les si,[0x104] ; 0000B183 C4360401 '.6..' pop ds ; 0000B187 1F '.' call xb395 ; 0000B188 E80A02 '.',0x0A,'.' mov byte [0x45],0x0 ; 0000B18B C606450000 '..E..' mov byte [0x46],0x0 ; 0000B190 C606460000 '..F..' and byte [0x47],0xe0 ; 0000B195 80264700E0 '.&G..' call xb2e0 ; 0000B19A E84301 '.C.' mov al,0xa0 ; 0000B19D B0A0 '..' mov dx,0x1f6 ; 0000B19F BAF601 '...' out dx,al ; 0000B1A2 EE '.' call xb527 ; 0000B1A3 E88103 '...' call xb151 ; 0000B1A6 E8A8FF '...' call xb527 ; 0000B1A9 E87B03 '.{.' cmp byte [0x75],0x2 ; 0000B1AC 803E750002 '.>u..' jc xb1ca ; 0000B1B1 7217 'r.' or byte [0x47],0x10 ; 0000B1B3 800E470010 '..G..' call xb2e0 ; 0000B1B8 E82501 '.%.' mov al,0xb0 ; 0000B1BB B0B0 '..' mov dx,0x1f6 ; 0000B1BD BAF601 '...' out dx,al ; 0000B1C0 EE '.' call xb527 ; 0000B1C1 E86303 '.c.' call xb151 ; 0000B1C4 E88AFF '...' call xb527 ; 0000B1C7 E85D03 '.].' xb1ca: and word [bp+0x1a],0xfffe ; 0000B1CA 81661AFEFF '.f...' mov byte [bp+0x15],0x0 ; 0000B1CF C6461500 '.F..' call xc565 ; 0000B1D3 E88F13 '...' jc xb213 ; 0000B1D6 723B 'r;' push ds ; 0000B1D8 1E '.' xor ax,ax ; 0000B1D9 33C0 '3.' mov ds,ax ; 0000B1DB 8ED8 '..' les si,[0x104] ; 0000B1DD C4360401 '.6..' pop ds ; 0000B1E1 1F '.' mov bl,0x80 ; 0000B1E2 B380 '..' call xb0ea ; 0000B1E4 E803FF '...' jc xb213 ; 0000B1E7 722A 'r*' call xb221 ; 0000B1E9 E83500 '.5.' jc xb213 ; 0000B1EC 7225 'r%' cmp byte [0x75],0x2 ; 0000B1EE 803E750002 '.>u..' jnc xb1f8 ; 0000B1F3 7303 's.' clc ; 0000B1F5 F8 '.' jmp short xb218 ; 0000B1F6 EB20 '. ' xb1f8: push ds ; 0000B1F8 1E '.' xor ax,ax ; 0000B1F9 33C0 '3.' mov ds,ax ; 0000B1FB 8ED8 '..' les si,[0x118] ; 0000B1FD C4361801 '.6..' pop ds ; 0000B201 1F '.' mov bl,0x81 ; 0000B202 B381 '..' call xb0ea ; 0000B204 E8E3FE '...' jc xb213 ; 0000B207 720A 'r',0x0A or byte [0x47],0x10 ; 0000B209 800E470010 '..G..' call xb221 ; 0000B20E E81000 '...' jnc xb218 ; 0000B211 7305 's.' xb213: mov ah,0x5 ; 0000B213 B405 '..' xb215: call xb471 ; 0000B215 E85902 '.Y.' xb218: ret ; 0000B218 C3 '.' call xb483 ; 0000B219 E86702 '.g.' jc xb23d ; 0000B21C 721F 'r.' call xb395 ; 0000B21E E87401 '.t.' xb221: mov byte [0x48],0x10 ; 0000B221 C606480010 '..H..' call xb4bd ; 0000B226 E89402 '...' call xb4d0 ; 0000B229 E8A402 '...' jc xb23d ; 0000B22C 720F 'r.' call xb2e0 ; 0000B22E E8AF00 '...' jc xb23d ; 0000B231 720A 'r',0x0A call xb50e ; 0000B233 E8D802 jc xb23d ; 0000B236 7205 'r.' call xb468 ; 0000B238 E82D02 '.-.' jmp short xb240 ; 0000B23B EB03 '..' xb23d: call xb471 ; 0000B23D E83102 '.1.' xb240: mov [bp+0x14],al ; 0000B240 884614 '.F.' ret ; 0000B243 C3 '.' call xb483 ; 0000B244 E83C02 '.<.' jc xb26c ; 0000B247 7223 'r#' call xb395 ; 0000B249 E84901 '.I.' mov byte [0x48],0x90 ; 0000B24C C606480090 '..H..' call xb4bd ; 0000B251 E86902 '.i.' call xb4d0 ; 0000B254 E87902 '.y.' jc xb26c ; 0000B257 7213 'r.' call xb2e0 ; 0000B259 E88400 '...' jc xb26c ; 0000B25C 720E 'r.' call xb374 ; 0000B25E E81301 xor ah,ah ; 0000B261 32E4 '2.' mov [bp+0x14],ax ; 0000B263 894614 '.F.' cmp al,0x1 ; 0000B266 3C01 '<.' jz xb26f ; 0000B268 7405 't.' mov ah,0x20 ; 0000B26A B420 '. ' xb26c: call xb471 ; 0000B26C E80202 '...' xb26f: ret ; 0000B26F C3 '.' mov bl,[0x75] ; 0000B270 8A1E7500 '..u.' dec bl ; 0000B274 FECB '..' add bl,0x80 ; 0000B276 80C380 '...' sub bl,[bp+0x10] ; 0000B279 2A5E10 '*^.' jnc xb289 ; 0000B27C 730B 's.' mov [bp+0x14],ax ; 0000B27E 894614 '.F.' mov [bp+0x12],ax ; 0000B281 894612 '.F.' mov [bp+0x10],ax ; 0000B284 894610 '.F.' jmp short xb2a2 ; 0000B287 EB19 '..' xb289: mov word [bp+0x14],0x300 ; 0000B289 C746140003 '.F...' mov al,[es:si+0x2] ; 0000B28E 268A4402 '&.D.' mul byte [es:si+0xe] ; 0000B292 26F6640E '&.d.' mov bx,[es:si] ; 0000B296 268B1C '&..' dec bx ; 0000B299 4B 'K' mul bx ; 0000B29A F7E3 '..' mov [bp+0x10],ax ; 0000B29C 894610 '.F.' mov [bp+0x12],dx ; 0000B29F 895612 '.V.' xb2a2: ret ; 0000B2A2 C3 '.' xb2a3: mov byte [bp+0x14],0x0 ; 0000B2A3 C6461400 '.F..' mov ah,0x1 ; 0000B2A7 B401 '..' mov [bp+0x15],ah ; 0000B2A9 886615 '.f.' mov [0x74],ah ; 0000B2AC 88267400 '.&t.' or word [bp+0x1a],0x1 ; 0000B2B0 814E1A0100 '.N...' ret ; 0000B2B5 C3 '.' xb2b6: call xb2e0 ; 0000B2B6 E82700 '.',0x27,'.' jc xb2dc ; 0000B2B9 7221 'r!' mov al,[bp+0x10] ; 0000B2BB 8A4610 '.F.' and al,0x1 ; 0000B2BE 2401 '$.' shl al,0x4 ; 0000B2C0 C0E004 '...' or al,0xa0 ; 0000B2C3 0CA0 '..' mov dx,0x1f6 ; 0000B2C5 BAF601 '...' out dx,al ; 0000B2C8 EE '.' call xb2e0 ; 0000B2C9 E81400 '...' jc xb2dc ; 0000B2CC 720E 'r.' test al,0x20 ; 0000B2CE A820 '. ' jz xb2d6 ; 0000B2D0 7404 't.' mov ah,0xcc ; 0000B2D2 B4CC '..' jmp short xb2dc ; 0000B2D4 EB06 '..' xb2d6: test al,0x40 ; 0000B2D6 A840 '.@' jnz xb2df ; 0000B2D8 7505 'u.' mov ah,0xaa ; 0000B2DA B4AA '..' xb2dc: call xb471 ; 0000B2DC E89201 '...' xb2df: ret ; 0000B2DF C3 '.' xb2e0: push bx ; 0000B2E0 53 'S' push cx ; 0000B2E1 51 'Q' call xb364 ; 0000B2E2 E87F00 '...' cmp al,0xff ; 0000B2E5 3CFF '<.' jnz xb2ed ; 0000B2E7 7504 'u.' xchg al,ah ; 0000B2E9 86C4 '..' jmp short xb304 ; 0000B2EB EB17 '..' xb2ed: mov bx,0x6 ; 0000B2ED BB0600 '...' xb2f0: mov cx,0xf424 ; 0000B2F0 B924F4 '.$.' xb2f3: test al,0x80 ; 0000B2F3 A880 '..' jz xb305 ; 0000B2F5 740E 't.' call x919a ; 0000B2F7 E8A0DE '...' call xb364 ; 0000B2FA E86700 '.g.' loop xb2f3 ; 0000B2FD E2F4 '..' dec bx ; 0000B2FF 4B 'K' jnz xb2f0 ; 0000B300 75EE 'u.' mov ah,0x80 ; 0000B302 B480 '..' xb304: stc ; 0000B304 F9 '.' xb305: pop cx ; 0000B305 59 'Y' pop bx ; 0000B306 5B '[' ret ; 0000B307 C3 '.' db '***********************************************************' xb343: push ax ; 0000B343 50 push ds ; 0000B344 1E mov ax,0x40 ; 0000B345 B84000 '.@.' mov ds,ax ; 0000B348 8ED8 '..' mov byte [0x8e],0xff ; 0000B34A C6068E00FF '.....' mov al,0x20 ; 0000B34F B020 '. ' out 0x20,al ; 0000B351 E620 '. ' out 0xa0,al ; 0000B353 E6A0 '..' xor ax,ax ; 0000B355 33C0 '3.' mov ds,ax ; 0000B357 8ED8 '..' mov ax,0x9100 ; 0000B359 B80091 '...' pushf ; 0000B35C 9C '.' call far [0x54] ; 0000B35D FF1E5400 '..T.' pop ds ; 0000B361 1F '.' pop ax ; 0000B362 58 'X' iret ; 0000B363 CF '.' xb364: mov dx,0x1f7 ; 0000B364 BAF701 '...' in al,dx ; 0000B367 EC '.' mov [0x8c],al ; 0000B368 A28C00 '...' ret ; 0000B36B C3 '.' or dl,[bx+si] ; 0000B36C 0A10 0x0A,'.' add [si],al ; 0000B36E 0004 '..' add [bx+si],ah ; 0000B370 0020 '. ' inc ax ; 0000B372 40 '@' db 0x02 ; 0000B373 02 xb374: mov dx,0x01f1 ; 0000B374 BAF101 '...' in al,dx ; 0000B377 EC '.' mov [0x8d],al ; 0000B378 A28D00 '...' mov ah,0x20 ; 0000B37B B420 '. ' and al,0xd7 ; 0000B37D 24D7 '$.' jz xb391 ; 0000B37F 7410 't.' push si ; 0000B381 56 'V' mov si,0xb36c ; 0000B382 BE6CB3 '.l.' xb385: shl al,1 ; 0000B385 D0E0 '..' jc xb38c ; 0000B387 7203 'r.' inc si ; 0000B389 46 'F' jmp short xb385 ; 0000B38A EBF9 '..' xb38c: cs lodsb ; 0000B38C 2EAC '..' pop si ; 0000B38E 5E '^' xchg ah,al ; 0000B38F 86E0 '..' xb391: mov al,[0x8d] ; 0000B391 A08D00 '...' ret ; 0000B394 C3 '.' xb395: mov ax,[es:si+0x5] ; 0000B395 268B4405 '&.D.' shr ax,0x2 ; 0000B399 C1E802 '...' mov [0x42],al ; 0000B39C A24200 '.B.' mov al,[bp+0x14] ; 0000B39F 8A4614 '.F.' mov [0x43],al ; 0000B3A2 A24300 '.C.' mov al,[bp+0x12] ; 0000B3A5 8A4612 '.F.' and al,0x3f ; 0000B3A8 243F '$?' mov [0x44],al ; 0000B3AA A24400 '.D.' mov al,[bp+0x13] ; 0000B3AD 8A4613 '.F.' mov [0x45],al ; 0000B3B0 A24500 '.E.' mov al,[bp+0x12] ; 0000B3B3 8A4612 '.F.' shr al,0x6 ; 0000B3B6 C0E806 '...' mov ah,[bp+0x10] ; 0000B3B9 8A6610 '.f.' and ah,0x60 ; 0000B3BC 80E460 '..`' shr ah,0x3 ; 0000B3BF C0EC03 '...' or al,ah ; 0000B3C2 0AC4 0x0A,'.' mov [0x46],al ; 0000B3C4 A24600 '.F.' mov al,[bp+0x10] ; 0000B3C7 8A4610 '.F.' and al,0x1 ; 0000B3CA 2401 '$.' shl al,0x4 ; 0000B3CC C0E004 '...' or al,0xa0 ; 0000B3CF 0CA0 '..' mov dh,[bp+0x11] ; 0000B3D1 8A7611 '.v.' and dh,0xf ; 0000B3D4 80E60F '...' or al,dh ; 0000B3D7 0AC6 0x0A,'.' mov [0x47],al ; 0000B3D9 A24700 '.G.' mov al,[es:si+0x8] ; 0000B3DC 268A4408 '&.D.' mov dx,0x3f6 ; 0000B3E0 BAF603 '...' out dx,al ; 0000B3E3 EE '.' ret ; 0000B3E4 C3 '.' xb3e5: mov ax,0x10 ; 0000B3E5 B81000 '...' mul word [bp+0x2] ; 0000B3E8 F76602 '.f.' add ax,[bp+0xe] ; 0000B3EB 03460E '.F.' adc dl,0x0 ; 0000B3EE 80D200 '...' push ax ; 0000B3F1 50 'P' shl dx,0xc ; 0000B3F2 C1E20C '...' shr ax,0x4 ; 0000B3F5 C1E804 '...' or dx,ax ; 0000B3F8 0BD0 '..' pop ax ; 0000B3FA 58 'X' and ax,0xf ; 0000B3FB 250F00 '%..' ret ; 0000B3FE C3 '.' xb3ff: push ds ; 0000B3FF 1E '.' mov ds,bx ; 0000B400 8EDB '..' mov cx,0x100 ; 0000B402 B90001 '...' mov dx,0x1f0 ; 0000B405 BAF001 '...' rep outsw ; 0000B408 F36F '.o' pop ds ; 0000B40A 1F '.' ret ; 0000B40B C3 '.' xb40c: xor ch,ch ; 0000B40C 32ED '2.' mov cl,[bp+0x0] ; 0000B40E 8A4E00 '.N.' xb411: call x919a ; 0000B411 E886DD '...' call xb2e0 ; 0000B414 E8C9FE '...' jc xb429 ; 0000B417 7210 'r.' call xb44d ; 0000B419 E83100 '.1.' jc xb429 ; 0000B41C 720B 'r.' push ds ; 0000B41E 1E '.' mov ds,bx ; 0000B41F 8EDB '..' lodsb ; 0000B421 AC '.' pop ds ; 0000B422 1F '.' mov dx,0x1f0 ; 0000B423 BAF001 '...' out dx,al ; 0000B426 EE '.' loop xb411 ; 0000B427 E2E8 '..' xb429: ret ; 0000B429 C3 '.' xb42a: mov cx,0x100 ; 0000B42A B90001 '...' mov dx,0x1f0 ; 0000B42D BAF001 '...' rep insw ; 0000B430 F36D '.m' ret ; 0000B432 C3 '.' xb433: xor ch,ch ; 0000B433 32ED '2.' mov cl,[bp+0x0] ; 0000B435 8A4E00 '.N.' xb438: call x919a ; 0000B438 E85FDD '._.' call xb2e0 ; 0000B43B E8A2FE '...' jc xb44c ; 0000B43E 720C 'r.' call xb44d ; 0000B440 E80A00 '.',0x0A,'.' jc xb44c ; 0000B443 7207 'r.' mov dx,0x1f0 ; 0000B445 BAF001 '...' in al,dx ; 0000B448 EC '.' stosb ; 0000B449 AA '.' loop xb438 ; 0000B44A E2EC '..' xb44c: ret ; 0000B44C C3 '.' xb44d: push cx ; 0000B44D 51 'Q' mov cx,0xf424 ; 0000B44E B924F4 '.$.' call xb2e0 ; 0000B451 E88CFE '...' jc xb466 ; 0000B454 7210 'r.' xb456: mov dx,0x1f7 ; 0000B456 BAF701 '...' in al,dx ; 0000B459 EC '.' test al,0x8 ; 0000B45A A808 '..' jnz xb466 ; 0000B45C 7508 'u.' call x919a ; 0000B45E E839DD '.9.' loop xb456 ; 0000B461 E2F3 '..' mov ah,0x80 ; 0000B463 B480 '..' stc ; 0000B465 F9 '.' xb466: pop cx ; 0000B466 59 'Y' ret ; 0000B467 C3 '.' xb468: call xb364 ; 0000B468 E8F9FE '...' xor ah,ah ; 0000B46B 32E4 '2.' mov [bp+0x14],ax ; 0000B46D 894614 '.F.' ret ; 0000B470 C3 '.' xb471: mov [bp+0x15],ah ; 0000B471 886615 '.f.' mov byte [bp+0x14],0x0 ; 0000B474 C6461400 '.F..' mov [0x74],ah ; 0000B478 88267400 '.&t.' or word [bp+0x1a],0x1 ; 0000B47C 814E1A0100 '.N...' stc ; 0000B481 F9 '.' ret ; 0000B482 C3 '.' xb483: mov byte [0x8e],0x0 ; 0000B483 C6068E0000 '.....' mov [0x74],ah ; 0000B488 88267400 '.&t.' mov ah,[0x75] ; 0000B48C 8A267500 '.&u.' or ah,ah ; 0000B490 0AE4 0x0A,'.' jz xb4a5 ; 0000B492 7411 't.' mov al,[bp+0x10] ; 0000B494 8A4610 '.F.' and al,0x9f ; 0000B497 249F '$.' cmp al,0x80 ; 0000B499 3C80 '<.' jz xb4ab ; 0000B49B 740E 't.' dec ah ; 0000B49D FECC '..' jz xb4a5 ; 0000B49F 7404 't.' cmp al,0x81 ; 0000B4A1 3C81 '<.' jz xb4ab ; 0000B4A3 7406 't.' xb4a5: call xb2a3 ; 0000B4A5 E8FBFD '...' stc ; 0000B4A8 F9 '.' jmp short xb4bc ; 0000B4A9 EB11 '..' xb4ab: mov dx,0x3f6 ; 0000B4AB BAF603 '...' mov al,0x0 ; 0000B4AE B000 '..' out dx,al ; 0000B4B0 EE '.' call xc5a2 ; 0000B4B1 E8EE10 '...' call xb2b6 ; 0000B4B4 E8FFFD '...' jc xb4bc ; 0000B4B7 7203 'r.' call xb527 ; 0000B4B9 E86B00 '.k.' xb4bc: ret ; 0000B4BC C3 '.' xb4bd: push si ; 0000B4BD 56 'V' push cx ; 0000B4BE 51 'Q' mov si,0x42 ; 0000B4BF BE4200 '.B.' mov dx,0x1f1 ; 0000B4C2 BAF101 '...' mov cx,0x7 ; 0000B4C5 B90700 '...' xb4c8: lodsb ; 0000B4C8 AC '.' out dx,al ; 0000B4C9 EE '.' inc dx ; 0000B4CA 42 'B' loop xb4c8 ; 0000B4CB E2FB '..' pop cx ; 0000B4CD 59 'Y' pop si ; 0000B4CE 5E '^' ret ; 0000B4CF C3 '.' xb4d0: push bx ; 0000B4D0 53 'S' push cx ; 0000B4D1 51 'Q' push ds ; 0000B4D2 1E '.' xor ax,ax ; 0000B4D3 33C0 '3.' mov ds,ax ; 0000B4D5 8ED8 '..' clc ; 0000B4D7 F8 '.' mov ax,0x9000 ; 0000B4D8 B80090 '...' pushf ; 0000B4DB 9C '.' call far [0x54] ; 0000B4DC FF1E5400 '..T.' pop ds ; 0000B4E0 1F '.' jnc xb4ed ; 0000B4E1 730A 's',0x0A xor ax,ax ; 0000B4E3 33C0 '3.' or al,[0x8e] ; 0000B4E5 0A068E00 0x0A,'...' jnz xb506 ; 0000B4E9 751B 'u.' jmp short xb503 ; 0000B4EB EB16 '..' xb4ed: xor ax,ax ; 0000B4ED 33C0 '3.' mov bx,0x14 ; 0000B4EF BB1400 '...' xb4f2: mov cx,0xf424 ; 0000B4F2 B924F4 '.$.' xb4f5: or al,[0x8e] ; 0000B4F5 0A068E00 0x0A,'...' jnz xb506 ; 0000B4F9 750B 'u.' call x919a ; 0000B4FB E89CDC '...' loop xb4f5 ; 0000B4FE E2F5 '..' dec bx ; 0000B500 4B 'K' jnz xb4f2 ; 0000B501 75EF 'u.' xb503: mov ah,0x80 ; 0000B503 B480 '..' stc ; 0000B505 F9 '.' xb506: mov byte [0x8e],0x0 ; 0000B506 C6068E0000 '.....' pop cx ; 0000B50B 59 'Y' pop bx ; 0000B50C 5B '[' ret ; 0000B50D C3 '.' xb50e: test al,0x20 ; 0000B50E A820 '. ' jz xb516 ; 0000B510 7404 't.' mov ah,0xcc ; 0000B512 B4CC '..' jmp short xb525 ; 0000B514 EB0F '..' xb516: test al,0x1 ; 0000B516 A801 '..' jz xb51f ; 0000B518 7405 't.' call xb374 ; 0000B51A E857FE jmp short xb525 ; 0000B51D EB06 '..' xb51f: test al,0x4 ; 0000B51F A804 '..' jz xb526 ; 0000B521 7403 't.' mov ah,0x11 ; 0000B523 B411 '..' xb525: stc ; 0000B525 F9 '.' xb526: ret ; 0000B526 C3 '.' xb527: mov cx,0xf424 ; 0000B527 B924F4 '.$.' mov dx,0x1f7 ; 0000B52A BAF701 '...' xor ax,ax ; 0000B52D 33C0 '3.' xb52f: in al,dx ; 0000B52F EC '.' test al,0x10 ; 0000B530 A810 '..' jnz xb53c ; 0000B532 7508 'u.' call x919a ; 0000B534 E863DC '.c.' loop xb52f ; 0000B537 E2F6 '..' mov ah,0x80 ; 0000B539 B480 '..' stc ; 0000B53B F9 '.' xb53c: ret ; 0000B53C C3 '.' mov dx,0x3f6 ; 0000B53D BAF603 '...' mov al,0x2 ; 0000B540 B002 '..' out dx,al ; 0000B542 EE '.' ret ; 0000B543 C3 '.' xb544: out 0x70,al ; 0000B544 E670 '.p' in al,0x71 ; 0000B546 E471 '.q' ret ; 0000B548 C3 '.' xb549: out 0x70,al ; 0000B549 E670 '.p' mov al,ah ; 0000B54B 8AC4 '..' out 0x71,al ; 0000B54D E671 '.q' ret ; 0000B54F C3 '.' xb550: mov al,0x40 ; 0000B550 B040 '.@' out 0x84,al ; 0000B552 E684 '..' mov ax,0x40 ; 0000B554 B84000 '.@.' mov ds,ax ; 0000B557 8ED8 '..' mov ax,[0x72] ; 0000B559 A17200 '.r.' out 0x80,al ; 0000B55C E680 '..' cmp al,0x34 ; 0000B55E 3C34 '<4' jnz xb564 ; 0000B560 7502 'u.' jmp bp ; 0000B562 FFE5 '..' xb564: mov sp,bp ; 0000B564 8BE5 '..' mov bl,0xff ; 0000B566 B3FF '..' xor di,di ; 0000B568 33FF '3.' mov bp,0xb570 ; 0000B56A BD70B5 '.p.' jmp x8796 ; 0000B56D E926D2 xb570: mov al,0x41 ; 0000B570 B041 '.A' out 0x84,al ; 0000B572 E684 '..' ; ; Verify that RAM refresh is occurring, by confirming that bit 4 (0x10) of port 0x61 is alternating ; in al,0x61 ; 0000B574 E461 '.a' not al ; 0000B576 F6D0 '..' and al,0x10 ; 0000B578 2410 '$.' mov ah,al ; 0000B57A 8AE0 '..' mov cx,0xffff ; 0000B57C B9FFFF '...' xb57f: in al,0x61 ; 0000B57F E461 '.a' and al,0x10 ; 0000B581 2410 '$.' cmp al,ah ; 0000B583 3AC4 ':.' jz xb597 ; 0000B585 7410 't.' loop xb57f ; 0000B587 E2F6 '..' ; ; Verification failed ; mov bx,err102 ; 0000B589 BB8CB6 '...' mov cx,err102_len-2 ; 0000B58C B91800 '...' mov bp,0xb595 ; 0000B58F BD95B5 '...' jmp xc7f7 ; 0000B592 E96212 '.b.' jmp short xb570 ; 0000B595 EBD9 '..' ; ; Checkpoint 0x42: Memory test of the first 128Kb of (conventional) RAM ; xb597: mov al,0x42 ; 0000B597 B042 '.B' out 0x84,al ; 0000B599 E684 '..' init_128kb: xor ebp,ebp ; 0000B59B 6633ED 'f3.' xb59e: mov dx,0x0 ; 0000B59E BA0000 '...' mov eax,0x1 ; 0000B5A1 66B801000000 'f.....' xor eax,ebp ; 0000B5A7 6633C5 'f3.' xb5aa: mov cx,0x4000 ; 0000B5AA B90040 '..@' mov es,dx ; 0000B5AD 8EC2 '..' xor di,di ; 0000B5AF 33FF '3.' sahf ; 0000B5B1 9E '.' xb5b2: rcl eax,1 ; 0000B5B2 66D1D0 'f..' stosd ; 0000B5B5 66AB 'f.' loop xb5b2 ; 0000B5B7 E2F9 '..' add dh,0x10 ; 0000B5B9 80C610 '...' cmp dx,0x2000 ; 0000B5BC 81FA0020 '... ' jc xb5aa ; 0000B5C0 72E8 'r.' mov al,0x43 ; 0000B5C2 B043 '.C' out 0x84,al ; 0000B5C4 E684 '..' in al,0x61 ; 0000B5C6 E461 '.a' or al,0xc ; 0000B5C8 0C0C '..' out 0x61,al ; 0000B5CA E661 '.a' and al,0xf3 ; 0000B5CC 24F3 '$.' out 0x61,al ; 0000B5CE E661 '.a' mov al,0x44 ; 0000B5D0 B044 '.D' out 0x84,al ; 0000B5D2 E684 '..' mov di,0x0 ; 0000B5D4 BF0000 '...' mov ebx,0x1 ; 0000B5D7 66BB01000000 'f.....' xor ebx,ebp ; 0000B5DD 6633DD 'f3.' mov eax,ebp ; 0000B5E0 668BC5 'f..' mov dh,ah ; 0000B5E3 8AF4 '..' xb5e5: mov ds,di ; 0000B5E5 8EDF '..' xor si,si ; 0000B5E7 33F6 '3.' mov cx,0x4000 ; 0000B5E9 B90040 '..@' xb5ec: mov ah,dh ; 0000B5EC 8AE6 '..' sahf ; 0000B5EE 9E '.' rcl ebx,1 ; 0000B5EF 66D1D3 'f..' lahf ; 0000B5F2 9F '.' mov dh,ah ; 0000B5F3 8AF4 '..' lodsd ; 0000B5F5 66AD 'f.' xor eax,ebx ; 0000B5F7 6633C3 'f3.' loope xb5ec ; 0000B5FA E1F0 '..' jnz xb642 ; 0000B5FC 7544 'uD' mov al,0x45 ; 0000B5FE B045 '.E' out 0x84,al ; 0000B600 E684 '..' in al,0x61 ; 0000B602 E461 '.a' test al,0xc0 ; 0000B604 A8C0 '..' mov al,0x0 ; 0000B606 B000 '..' jnz xb625 ; 0000B608 751B 'u.' add di,0x1000 ; 0000B60A 81C70010 '....' cmp di,0x2000 ; 0000B60E 81FF0020 '... ' jc xb5e5 ; 0000B612 72D1 'r.' dec ebp ; 0000B614 664D 'fM' jpo xb61a ; 0000B616 7B02 '{.' jmp short xb59e ; 0000B618 EB84 '..' xb61a: mov al,0x46 ; 0000B61A B046 '.F' out 0x84,al ; 0000B61C E684 '..' mov ax,0x40 ; 0000B61E B84000 '.@.' mov ds,ax ; 0000B621 8ED8 '..' jmp sp ; 0000B623 FFE4 '..' xb625: xor di,di ; 0000B625 33FF '3.' mov bp,0xb62d ; 0000B627 BD2DB6 '.-.' jmp x87e4 ; 0000B62A E9B7D1 '...' and bl,0xf ; 0000B62D 80E30F '...' xor si,si ; 0000B630 33F6 '3.' mov cl,0x4 ; 0000B632 B104 '..' xb634: rcr bl,1 ; 0000B634 D0DB '..' jnc xb63d ; 0000B636 7305 's.' inc si ; 0000B638 46 'F' loop xb634 ; 0000B639 E2F9 '..' xor si,si ; 0000B63B 33F6 '3.' xb63d: xor al,al ; 0000B63D 32C0 '2.' jmp short xb652 ; 0000B63F EB11 '..' nop ; 0000B641 90 '.' ; ; The first 128Kb failed the above memory test ; xb642: mov cx,0x4 ; 0000B642 B90400 '...' sub si,cx ; 0000B645 2BF1 '+.' xb647: test al,0xff ; 0000B647 A8FF '..' jnz xb652 ; 0000B649 7507 'u.' shr eax,0x8 ; 0000B64B 66C1E808 'f...' inc si ; 0000B64F 46 'F' loop xb647 ; 0000B650 E2F5 '..' xb652: mov cx,ax ; 0000B652 8BC8 '..' mov al,0x47 ; 0000B654 B047 '.G' out 0x84,al ; 0000B656 E684 '..' mov dx,si ; 0000B658 8BD6 '..' mov si,ds ; 0000B65A 8CDE '..' mov di,0x0 ; 0000B65C BF0000 '...' mov bp,xb665 ; 0000B65F BD65B6 '.e.' jmp xc6ab ; 0000B662 E94610 '.F.' xb665: mov bx,err201 ; 0000B665 BBA6B6 '...' mov cx,err201_len ; 0000B668 B91100 '...' mov bp,0xb671 ; 0000B66B BD71B6 '.q.' jmp xc7f9 ; 0000B66E E98811 '...' xb671: jmp short xb671 ; 0000B671 EBFE ; HANG THE MACHINE xb673: mov al,[di+0x32] ; 0000B673 8A4532 '.E2' and al,0xfe ; 0000B676 24FE '$.' cmp al,0x2 ; 0000B678 3C02 '<.' jnz xb68a ; 0000B67A 750E 'u.' mov dx,[di+0x4c] ; 0000B67C 8B554C '.UL' add dx,byte +0x4 ; 0000B67F 83C204 '...' xor byte [di+0x4e],0x80 ; 0000B682 80754E80 '.uN.' mov al,[di+0x4e] ; 0000B686 8A454E '.EN' out dx,al ; 0000B689 EE '.' xb68a: stc ; 0000B68A F9 '.' ret ; 0000B68B C3 '.' ; ; Error messages ; err102: db '102-System Board Failure',0x0D,0x0A err102_len equ $-err102 err201: db ' 201-Memory Error' err201_len equ $-err201 err203: db ' 203-Memory Address Error' err203_len equ $-err203 err205: db ' 205-Memory Error',0x0D,0x0A err205_len equ $-err205 err207: db ' 207-Invalid Memory Configuration',0x0A,0x0D err207_len equ $-err207 db ' Base Module',0x00 db ' Module A',0x00 db ' Module B',0x00 db ' Module C',0x00 db 0x0D,0x0A db 'Parity Check 1 ',0x00 db 'Parity Check 2 ',0x00 db '??????',0x00 err101: db '101-ROM Error',0x0D,0x0A err101_len equ $-err101 db ' 402-Monochrome Adapter Failure',0x0D,0x0A db ' 501-Display Adapter Failure',0x0D,0x0A db ' 301-Keyboard Error or Test Fixture Installed',0x0D,0x0A db ' 301-Keyboard Error',0x0D,0x0A db ' 304-Keyboard or System Unit Error',0x0D,0x0A xb810: db '303-Keyboard Controller Error',0x0D,0x0A db ' 601-Diskette Controller Error',0x0D,0x0A db ' 702-Coprocessor Detection Error, Please Check Installation',0x0D,0x0A db ' 101-I/O ROM Error',0x0D,0x0A db ' 162-System Options Not Set-(Run Setup)',0x0D,0x0A db ' Insert DIAGNOSTIC diskette in Drive A:',0x0D,0x0A db ' 162-System Options Error',0x0D,0x0A db ' 164-Memory Size Error',0x0D,0x0A db ' 163-Time & Date Not Set',0x0D,0x0A,0x0D,0x0A db ' (RESUME = "F1" KEY)',0x0D,0x0A,0x0D,0x0A db ' 302-System Unit Security Lock is Locked',0x0D,0x0A db ' - Unlock System Unit Security Lock',0x0D,0x0A db '1790-Disk 0 Error',0x0D,0x0A db '1791-Disk 1 Error',0x0D,0x0A db '1780-Disk 0 Failure',0x0D,0x0A db '1781-Disk 1 Failure',0x0D,0x0A db '1782-Disk Controller Failure',0x0D,0x0A db ' 605-Diskette Drive Type Error-(Run Setup)',0x0D,0x0A db ' Insert DIAGNOSTIC diskette in Drive A:',0x0D,0x0A ; ; Video card data ; xba77: dw 0x03D8 ; 0000BA77 D803 ; +0x00: I/O address of Mode Select Register (CGA) db 0xD4,0x29,0xB4,0xF0 ; 0000BA79 D429B4F0 dw 0xB800 ; 0000BA7D 00B8 ; +0x06: real-mode segment of video buffer db 0x00,0x60,0x8A,0xB7 ; 0000BA7F 00608AB7 db 0x1E,0x00,0x40 ; 0000BA83 1E0040 xba86: dw 0x03B8 ; 0000BA86 B803 ; +0x00: I/O address of Mode Select Register (Mono) db 0xB4,0x29,0xD4,0xF0 ; 0000BA88 B429D4F0 dw 0xB000 ; 0000BA8C 00B0 ; +0x06: real-mode segment of video buffer db 0x00,0x60,0x69,0xB7 ; 0000BA8E 006069B7 db 0x21,0x00,0x10 ; 0000BA92 210010 ; ; Entry point for both SHUTDOWN 0x00 and 0x01 ; xba95: mov bp,xba9b ; 0000BA95 BD9BBA jmp x9380 ; 0000BA98 E9E5D8 ; "CALL" to x9380 (WAIT FOR RTC SECONDS TO *NOT* BE 0xFF) xba9b: mov al,0x8e ; 0000BA9B B08E out 0x70,al ; 0000BA9D E670 xor ax,ax ; 0000BA9F 33C0 out 0x71,al ; 0000BAA1 E671 mov al,0x40 ; 0000BAA3 B040 out 0x86,al ; 0000BAA5 E686 xbaa7: cli ; 0000BAA7 FA '.' mov al,0xf ; 0000BAA8 B00F '..' out 0x84,al ; 0000BAAA E684 '..' mov al,0x0 ; 0000BAAC B000 '..' out 0x85,al ; 0000BAAE E685 '..' mov al,[cs:0xfffe] ; 0000BAB0 2EA0FEFF '....' not al ; 0000BAB4 F6D0 '..' mov [cs:0xfffe],al ; 0000BAB6 2EA2FEFF '....' cmp al,[cs:0xfffe] ; 0000BABA 2E3A06FEFF '.:...' jnz xbad3 ; 0000BABF 7512 'u.' mov di,0x2 ; 0000BAC1 BF0200 '...' mov bp,0xbaca ; 0000BAC4 BDCABA '...' jmp x87e4 ; 0000BAC7 E91ACD '...' and bl,0xbf ; 0000BACA 80E3BF '...' mov bp,0xbad3 ; 0000BACD BDD3BA '...' jmp x8796 ; 0000BAD0 E9C3CC xbad3: cld ; 0000BAD3 FC '.' mov ax,0xf000 ; 0000BAD4 B800F0 '...' mov ds,ax ; 0000BAD7 8ED8 '..' mov al,0xff ; 0000BAD9 B0FF '..' out 0x21,al ; 0000BADB E621 '.!' out 0xa1,al ; 0000BADD E6A1 '..' mov bx,bim_table_offset ; 0000BADF BBE0FF '...' mov bx,[bx] ; 0000BAE2 8B1F '..' test word [bx],0xf00 ; 0000BAE4 F707000F '....' jnz xbaf5 ; 0000BAE8 750B 'u.' mov bx,cpu_idrev_offset ; 0000BAEA BBE2FF '...' mov bx,[bx] ; 0000BAED 8B1F '..' mov ax,[bx] ; 0000BAEF 8B07 '..' xchg al,ah ; 0000BAF1 86C4 '..' mov gs,ax ; 0000BAF3 8EE8 '..' xbaf5: mov al,0xc ; 0000BAF5 B00C '..' out 0x61,al ; 0000BAF7 E661 '.a' mov al,0x10 ; 0000BAF9 B010 '..' out 0x84,al ; 0000BAFB E684 '..' mov al,0x12 ; 0000BAFD B012 '..' out 0x4b,al ; 0000BAFF E64B '.K' mov al,0x42 ; 0000BB01 B042 '.B' out 0x4b,al ; 0000BB03 E64B '.K' mov al,0x92 ; 0000BB05 B092 '..' out 0x4b,al ; 0000BB07 E64B '.K' xor al,al ; 0000BB09 32C0 '2.' out 0x8f,al ; 0000BB0B E68F '..' mov al,0x54 ; 0000BB0D B054 '.T' out 0x43,al ; 0000BB0F E643 '.C' mov al,0x12 ; 0000BB11 B012 '..' out 0x41,al ; 0000BB13 E641 '.A' mov al,0x36 ; 0000BB15 B036 '.6' out 0x43,al ; 0000BB17 E643 '.C' mov al,0x0 ; 0000BB19 B000 '..' out 0x40,al ; 0000BB1B E640 '.@' mov al,0x0 ; 0000BB1D B000 '..' out 0x40,al ; 0000BB1F E640 '.@' mov al,0xc ; 0000BB21 B00C '..' mov dx,0x3f2 ; 0000BB23 BAF203 '...' out dx,al ; 0000BB26 EE '.' mov al,0x11 ; 0000BB27 B011 '..' out 0x84,al ; 0000BB29 E684 '..' mov al,0x1 ; 0000BB2B B001 '..' mov dx,0x3b8 ; 0000BB2D BAB803 '...' out dx,al ; 0000BB30 EE '.' mov al,0x1 ; 0000BB31 B001 '..' mov dx,0x3d8 ; 0000BB33 BAD803 '...' out dx,al ; 0000BB36 EE '.' mov dx,0x3ba ; 0000BB37 BABA03 '...' in al,dx ; 0000BB3A EC '.' mov dx,0x3da ; 0000BB3B BADA03 '...' in al,dx ; 0000BB3E EC '.' mov dx,0x3c0 ; 0000BB3F BAC003 '...' xor al,al ; 0000BB42 32C0 '2.' out dx,al ; 0000BB44 EE '.' mov bx,0xba77 ; 0000BB45 BB77BA '.w.' xbb48: mov di,0xbb6e ; 0000BB48 BF6EBB '.n.' mov al,0x1 ; 0000BB4B B001 '..' mov dx,[bx] ; 0000BB4D 8B17 '..' out dx,al ; 0000BB4F EE '.' mov si,[bx+0x4] ; 0000BB50 8B7704 '.w.' mov dl,[bx+0x2] ; 0000BB53 8A5702 '.W.' mov cx,0x12 ; 0000BB56 B91200 '...' mov bp,0xbb5f ; 0000BB59 BD5FBB '._.' jmp x9beb ; 0000BB5C E98CE0 '...' add dx,byte +0x5 ; 0000BB5F 83C205 '...' cmp dx,0x3d9 ; 0000BB62 81FAD903 '....' jnz xbb6b ; 0000BB66 7503 'u.' mov al,0x30 ; 0000BB68 B030 '.0' out dx,al ; 0000BB6A EE '.' xbb6b: dec dx ; 0000BB6B 4A 'J' jmp di ; 0000BB6C FFE7 '..' mov al,0x12 ; 0000BB6E B012 '..' out 0x84,al ; 0000BB70 E684 '..' mov bp,0xbb78 ; 0000BB72 BD78BB '.x.' jmp x9bfa ; 0000BB75 E982E0 xor cx,cx ; 0000BB78 33C9 '3.' mov dl,[bx+0x2] ; 0000BB7A 8A5702 '.W.' mov ah,0xe ; 0000BB7D B40E '..' mov bp,0xbb85 ; 0000BB7F BD85BB '...' jmp xad18 ; 0000BB82 E993F1 '...' add bx,byte +0xf ; 0000BB85 83C30F '...' cmp bx,0xba95 ; 0000BB88 81FB95BA '....' jc xbb48 ; 0000BB8C 72BA 'r.' mov al,0x13 ; 0000BB8E B013 '..' out 0x84,al ; 0000BB90 E684 '..' mov cx,0x100 ; 0000BB92 B90001 '...' xbb95: xor ax,ax ; 0000BB95 33C0 '3.' loop xbb95 ; 0000BB97 E2FC '..' mov al,0x0 ; 0000BB99 B000 '..' out 0x43,al ; 0000BB9B E643 '.C' in al,0x40 ; 0000BB9D E440 '.@' mov ah,al ; 0000BB9F 8AE0 '..' in al,0x40 ; 0000BBA1 E440 '.@' cmp ax,0x0 ; 0000BBA3 3D0000 '=..' jnz xbbb6 ; 0000BBA6 750E 'u.' mov bx,err102 ; 0000BBA8 BB8CB6 '...' mov cx,err102_len-2 ; 0000BBAB B91800 '...' mov bp,0xbbb4 ; 0000BBAE BDB4BB '...' jmp xc7f7 ; 0000BBB1 E9430C '.C.' xbbb4: jmp short xbbb4 ; 0000BBB4 EBFE ; HANG THE MACHINE xbbb6: mov al,0x14 ; 0000BBB6 B014 '..' out 0x84,al ; 0000BBB8 E684 '..' mov al,0x8b ; 0000BBBA B08B '..' out 0x70,al ; 0000BBBC E670 '.p' jmp short xbbc0 ; 0000BBBE EB00 '..' xbbc0: jmp short xbbc2 ; 0000BBC0 EB00 '..' xbbc2: jmp short xbbc4 ; 0000BBC2 EB00 '..' xbbc4: in al,0x71 ; 0000BBC4 E471 '.q' and al,0x7 ; 0000BBC6 2407 '$.' mov ah,al ; 0000BBC8 8AE0 '..' mov al,0x8b ; 0000BBCA B08B '..' out 0x70,al ; 0000BBCC E670 '.p' mov al,ah ; 0000BBCE 8AC4 '..' out 0x71,al ; 0000BBD0 E671 '.q' mov al,0x8c ; 0000BBD2 B08C '..' out 0x70,al ; 0000BBD4 E670 '.p' mov al,0x15 ; 0000BBD6 B015 '..' out 0x84,al ; 0000BBD8 E684 '..' mov al,0x8d ; 0000BBDA B08D '..' out 0x70,al ; 0000BBDC E670 '.p' jmp short xbbe0 ; 0000BBDE EB00 '..' xbbe0: jmp short xbbe2 ; 0000BBE0 EB00 '..' xbbe2: jmp short xbbe4 ; 0000BBE2 EB00 '..' xbbe4: in al,0x71 ; 0000BBE4 E471 '.q' and al,0x80 ; 0000BBE6 2480 '$.' mov ah,al ; 0000BBE8 8AE0 '..' mov al,0x8e ; 0000BBEA B08E '..' out 0x70,al ; 0000BBEC E670 '.p' jmp short xbbf0 ; 0000BBEE EB00 '..' xbbf0: jmp short xbbf2 ; 0000BBF0 EB00 '..' xbbf2: jmp short xbbf4 ; 0000BBF2 EB00 '..' xbbf4: in al,0x71 ; 0000BBF4 E471 '.q' and al,0x80 ; 0000BBF6 2480 '$.' test ah,0x80 ; 0000BBF8 F6C480 '...' mov ah,al ; 0000BBFB 8AE0 '..' jnz xbc06 ; 0000BBFD 7507 'u.' or ah,0x80 ; 0000BBFF 80CC80 '...' mov al,0x16 ; 0000BC02 B016 '..' out 0x84,al ; 0000BC04 E684 '..' xbc06: mov al,0x17 ; 0000BC06 B017 '..' out 0x84,al ; 0000BC08 E684 '..' mov al,0x8e ; 0000BC0A B08E '..' out 0x70,al ; 0000BC0C E670 '.p' mov al,ah ; 0000BC0E 8AC4 '..' out 0x71,al ; 0000BC10 E671 '.q' mov al,0x18 ; 0000BC12 B018 '..' out 0x84,al ; 0000BC14 E684 '..' ; ; Fall through to BC1C, but only if [40:72] contains 0x1234 (or at least, the low byte is 0x34). ; ; This appears to be the only place where xb550 is invoked (it outputs checkpoint 0x40 to port 0x84, ; along with the low byte of [40:72] to port 0x80. ; ; If we do NOT fall through, then xb550 will take us, um, elsewhere. Investigate that path if needed. ; mov bp,0xbc1c ; 0000BC16 BD1CBC '...' jmp xb550 ; 0000BC19 E934F9 '.4.' in al,0x61 ; 0000BC1C E461 '.a' ; READ 8042 RWREG and al,0xf3 ; 0000BC1E 24F3 '$.' ; CLEAR BITS 2 AND 3 (ENABLE COMPAQ_FSNMI AND COMPAQ_IONMI) out 0x61,al ; 0000BC20 E661 '.a' ; UPDATE 8042 RWREG mov ax,0x30 ; 0000BC22 B83000 '.0.' mov ss,ax ; 0000BC25 8ED0 '..' mov sp,0x100 ; 0000BC27 BC0001 '...' mov al,0x19 ; 0000BC2A B019 '..' out 0x84,al ; 0000BC2C E684 '..' call xa8ae ; 0000BC2E E87DEC mov al,0xad ; 0000BC31 B0AD '..' ; AL = DISABLE_KBD COMMAND out 0x64,al ; 0000BC33 E664 '.d' mov cx,0xffff ; 0000BC35 B9FFFF '...' xbc38: in al,0x64 ; 0000BC38 E464 '.d' test al,0x2 ; 0000BC3A A802 '..' jz xbc4e ; 0000BC3C 7410 't.' loop xbc38 ; 0000BC3E E2F8 '..' mov bx,0xb810 ; 0000BC40 BB10B8 '...' ; BX -> '303-Keyboard Controller Error' mov cx,0x1d ; 0000BC43 B91D00 '...' mov bp,0xbc4c ; 0000BC46 BD4CBC '.L.' jmp xc7f7 ; 0000BC49 E9AB0B '...' xbc4c: jmp short xbc4c ; 0000BC4C EBFE ; HANG THE MACHINE xbc4e: mov cx,0x2 ; 0000BC4E B90200 '...' xbc51: in al,0x60 ; 0000BC51 E460 '.`' push cx ; 0000BC53 51 'Q' mov bx,0x1388 ; 0000BC54 BB8813 '...' ; BX = 5000. call xc638 ; 0000BC57 E8DE09 '...' ; CALL DELAY(BX) (10,000ms? REALLY?) pop cx ; 0000BC5A 59 'Y' in al,0x64 ; 0000BC5B E464 '.d' test al,0x1 ; 0000BC5D A801 '..' jz xbc71 ; 0000BC5F 7410 't.' loop xbc51 ; 0000BC61 E2EE '..' mov bx,0xb810 ; 0000BC63 BB10B8 '...' ; BX -> '303-Keyboard Controller Error' mov cx,0x1d ; 0000BC66 B91D00 '...' mov bp,0xbc6f ; 0000BC69 BD6FBC '.o.' jmp xc7f7 ; 0000BC6C E9880B '...' xbc6f: jmp short xbc6f ; 0000BC6F EBFE ; HANG THE MACHINE xbc71: call xa3e0 ; 0000BC71 E86CE7 '.l.' call xaa5a ; 0000BC74 E8E3ED '...' mov al,0x1a ; 0000BC77 B01A '..' out 0x84,al ; 0000BC79 E684 '..' call xaa74 ; 0000BC7B E8F6ED '...' mov al,0x1b ; 0000BC7E B01B '..' out 0x84,al ; 0000BC80 E684 '..' call x82e8 ; 0000BC82 E863C6 '.c.' mov al,0x1c ; 0000BC85 B01C '..' out 0x84,al ; 0000BC87 E684 '..' call xcc51 ; 0000BC89 E8C50F '...' mov al,0x1d ; 0000BC8C B01D '..' out 0x84,al ; 0000BC8E E684 '..' call xcc88 ; 0000BC90 E8F50F '...' mov al,0x2d ; 0000BC93 B02D '.-' out 0x84,al ; 0000BC95 E684 '..' call xe105 ; 0000BC97 E86B24 mov al,0x1e ; 0000BC9A B01E '..' out 0x84,al ; 0000BC9C E684 '..' call xcfdd ; 0000BC9E E83C13 '.<.' mov al,0x1f ; 0000BCA1 B01F '..' out 0x84,al ; 0000BCA3 E684 '..' call xf745 ; 0000BCA5 E89D3A '..:' mov al,0x20 ; 0000BCA8 B020 '. ' out 0x84,al ; 0000BCAA E684 '..' call xd6dd ; 0000BCAC E82E1A '...' ; ; Switch to protected-mode, relocate the ROM, switch back to real-mode, disable ; the A20 line, and then initialize all conventional RAM. ; call xc825 ; 0000BCAF E8730B call xf480 ; 0000BCB2 E8CB37 call xe7df ; 0000BCB5 E8272B sti ; 0000BCB8 FB '.' mov al,0x21 ; 0000BCB9 B021 '.!' out 0x84,al ; 0000BCBB E684 '..' call xcd6d ; 0000BCBD E8AD10 '...' mov al,0x23 ; 0000BCC0 B023 '.#' out 0x84,al ; 0000BCC2 E684 '..' call xcedb ; 0000BCC4 E81412 '...' mov al,0x22 ; 0000BCC7 B022 '."' out 0x84,al ; 0000BCC9 E684 '..' call xce71 ; 0000BCCB E8A311 '...' mov di,0x0 ; 0000BCCE BF0000 '...' mov bp,0xbcd7 ; 0000BCD1 BDD7BC '...' jmp x87e4 ; 0000BCD4 E90DCB '.',0x0D,'.' and bl,0xc0 ; 0000BCD7 80E3C0 '...' cmp bl,0x40 ; 0000BCDA 80FB40 '..@' jnz xbce9 ; 0000BCDD 750A 'u',0x0A mov al,0xbe ; 0000BCDF B0BE '..' out 0x84,al ; 0000BCE1 E684 '..' mov bp,0xbce9 ; 0000BCE3 BDE9BC '...' jmp x8814 ; 0000BCE6 E92BCB '.+.' xbce9: mov al,0x24 ; 0000BCE9 B024 '.$' out 0x84,al ; 0000BCEB E684 '..' in al,0x60 ; 0000BCED E460 '.`' mov al,0xd0 ; 0000BCEF B0D0 '..' out 0x64,al ; 0000BCF1 E664 '.d' xbcf3: in al,0x64 ; 0000BCF3 E464 '.d' test al,0x2 ; 0000BCF5 A802 '..' jz xbcfb ; 0000BCF7 7402 't.' jmp short xbcf3 ; 0000BCF9 EBF8 '..' xbcfb: in al,0x64 ; 0000BCFB E464 '.d' test al,0x1 ; 0000BCFD A801 '..' jz xbcfb ; 0000BCFF 74FA 't.' in al,0x60 ; 0000BD01 E460 '.`' and al,0xfd ; 0000BD03 24FD '$.' and al,0xf3 ; 0000BD05 24F3 '$.' mov ah,al ; 0000BD07 8AE0 '..' mov al,0xd1 ; 0000BD09 B0D1 '..' out 0x64,al ; 0000BD0B E664 '.d' xbd0d: in al,0x64 ; 0000BD0D E464 '.d' test al,0x2 ; 0000BD0F A802 '..' jnz xbd0d ; 0000BD11 75FA 'u.' mov al,ah ; 0000BD13 8AC4 '..' out 0x60,al ; 0000BD15 E660 '.`' mov al,0x25 ; 0000BD17 B025 '.%' out 0x84,al ; 0000BD19 E684 '..' ; ; Perform some FDC initialization ; call x91b0 ; 0000BD1B mov al,0x26 ; 0000BD1E out 0x84,al ; 0000BD20 ; ; Perform some HDC initialization ; call xc390 ; 0000BD22 E86B06 '.k.' mov al,0x27 ; 0000BD25 B027 '.',0x27 out 0x84,al ; 0000BD27 E684 '..' mov al,0xec ; 0000BD29 B0EC '..' mov dx,0x3be ; 0000BD2B BABE03 '...' out dx,al ; 0000BD2E EE '.' mov al,0x28 ; 0000BD2F B028 '.(' out 0x84,al ; 0000BD31 E684 '..' call x99b7 ; 0000BD33 E881DC '...' mov al,0x29 ; 0000BD36 B029 '.)' out 0x84,al ; 0000BD38 E684 '..' call xe2c8 ; 0000BD3A E88B25 '..%' mov al,0x2a ; 0000BD3D B02A '.*' out 0x84,al ; 0000BD3F E684 '..' mov ah,0xf ; 0000BD41 B40F '..' int 0x10 ; 0000BD43 CD10 '..' mov ah,0x0 ; 0000BD45 B400 '..' int 0x10 ; 0000BD47 CD10 '..' in al,0x61 ; 0000BD49 E461 '.a' mov ah,al ; 0000BD4B 8AE0 '..' or al,0x6c ; 0000BD4D 0C6C '.l' out 0x61,al ; 0000BD4F E661 '.a' xchg ah,al ; 0000BD51 86E0 '..' out 0x61,al ; 0000BD53 E661 '.a' mov al,0x2b ; 0000BD55 B02B '.+' out 0x84,al ; 0000BD57 E684 '..' mov al,0xe ; 0000BD59 B00E '..' call xb544 ; 0000BD5B E8E6F7 '...' test al,0x4 ; 0000BD5E A804 '..' jz xbd6e ; 0000BD60 740C 't.' mov dx,0x2000 ; 0000BD62 BA0020 '.. ' mov bx,0xb929 ; 0000BD65 BB29B9 '.).' mov cx,0x1a ; 0000BD68 B91A00 '...' call xc745 ; 0000BD6B E8D709 '...' xbd6e: in al,0xa1 ; 0000BD6E E4A1 '..' and al,0xfd ; 0000BD70 24FD '$.' out 0xa1,al ; 0000BD72 E6A1 '..' in al,0x21 ; 0000BD74 E421 '.!' and al,0xfb ; 0000BD76 24FB '$.' out 0x21,al ; 0000BD78 E621 '.!' mov ax,0x40 ; 0000BD7A B84000 '.@.' mov ds,ax ; 0000BD7D 8ED8 '..' mov byte [0x12],0x0 ; 0000BD7F C606120000 '.....' or byte [0x96],0x80 ; 0000BD84 800E960080 '.....' or byte [0x96],0x20 ; 0000BD89 800E960020 '.... ' cli ; 0000BD8E FA '.' call xec2e_wait_8042_ready ; 0000BD8F E89C2E '...' mov al,0xf2 ; 0000BD92 B0F2 '..' out 0x60,al ; 0000BD94 E660 '.`' sti ; 0000BD96 FB '.' mov cx,0xffff ; 0000BD97 B9FFFF '...' xbd9a: test byte [0x96],0x20 ; 0000BD9A F606960020 '.... ' jz xbda8 ; 0000BD9F 7407 't.' loop xbd9a ; 0000BDA1 E2F7 mov byte [0x96],0x0 ; 0000BDA3 C606960000 '.....' xbda8: in al,0x86 ; 0000BDA8 E486 '..' cmp word [0x72],0x1234 ; 0000BDAA 813E72003412 '.>r.4.' jz xbdcd ; 0000BDB0 741B 't.' mov al,0x40 ; 0000BDB2 B040 '.@' push ax ; 0000BDB4 50 'P' call xf30f ; 0000BDB5 E85735 '.W5' or al,al ; 0000BDB8 0AC0 0x0A,'.' pop ax ; 0000BDBA 58 'X' jnz xbdbf ; 0000BDBB 7502 'u.' or al,0x80 ; 0000BDBD 0C80 '..' xbdbf: out 0x86,al ; 0000BDBF E686 '..' call xf32b ; 0000BDC1 E86735 '.g5' mov al,0x92 ; 0000BDC4 B092 '..' out 0x4b,al ; 0000BDC6 E64B '.K' call xc79e ; 0000BDC8 E8D309 '...' jmp short xbe04 ; 0000BDCB EB37 '.7' xbdcd: test al,0x40 ; 0000BDCD A840 '.@' jnz xbdd5 ; 0000BDCF 7504 'u.' test al,0x80 ; 0000BDD1 A880 '..' jnz xbddc ; 0000BDD3 7507 'u.' xbdd5: call xc79e ; 0000BDD5 E8C609 '...' ; BEEP mov al,0x0 ; 0000BDD8 B000 '..' jmp short xbded ; 0000BDDA EB11 '..' xbddc: and al,0x3f ; 0000BDDC 243F '$?' cmp al,0x0 ; 0000BDDE 3C00 '<.' jc xbde8 ; 0000BDE0 7206 'r.' cmp al,0x34 ; 0000BDE2 3C34 '<4' ja xbde8 ; 0000BDE4 7702 'w.' jmp short xbded ; 0000BDE6 EB05 '..' xbde8: call xc79e ; 0000BDE8 E8B309 '...' mov al,0x0 ; 0000BDEB B000 '..' xbded: push ax ; 0000BDED 50 'P' call xf32b ; 0000BDEE E83A35 '.:5' cli ; 0000BDF1 FA '.' mov al,0x92 ; 0000BDF2 B092 '..' out 0x4b,al ; 0000BDF4 E64B '.K' pop ax ; 0000BDF6 58 'X' cmp al,0x0 ; 0000BDF7 3C00 '<.' jz xbdfd ; 0000BDF9 7402 't.' out 0x4a,al ; 0000BDFB E64A '.J' xbdfd: mov word [0x72],0x1200 ; 0000BDFD C70672000012 '..r...' sti ; 0000BE03 FB '.' xbe04: call xc79e ; 0000BE04 E89709 '...' mov al,0x2c ; 0000BE07 B02C '.,' out 0x84,al ; 0000BE09 E684 '..' call xf130 ; 0000BE0B E82233 '."3' int 0x19 ; 0000BE0E CD19 '..' xbe10: mov al,ah ; 0000BE10 8AC4 '..' and al,0x7f ; 0000BE12 247F '$.' push cs ; 0000BE14 0E '.' pop es ; 0000BE15 07 '.' push di ; 0000BE16 57 'W' mov di,0xbf5c ; 0000BE17 BF5CBF '.\.' mov cx,0x8 ; 0000BE1A B90800 '...' repne scasb ; 0000BE1D F2AE '..' pop di ; 0000BE1F 5F '_' clc ; 0000BE20 F8 '.' jz xbe26 ; 0000BE21 7403 't.' jmp xbf5b ; 0000BE23 E93501 '.5.' xbe26: cmp ah,0x2a ; 0000BE26 80FC2A '..*' jnz xbe35 ; 0000BE29 750A 'u',0x0A test byte [0x96],0x2 ; 0000BE2B F606960002 '.....' jz xbe35 ; 0000BE30 7403 't.' jmp xbf5a ; 0000BE32 E92501 '.%.' xbe35: mov bx,0x1000 ; 0000BE35 BB0010 '...' rol bx,cl ; 0000BE38 D3C3 '..' or ah,ah ; 0000BE3A 0AE4 0x0A,'.' jns xbeb9 ; 0000BE3C 797B 'y{' cmp ah,0xaa ; 0000BE3E 80FCAA '...' jz xbe48 ; 0000BE41 7405 't.' cmp ah,0xb6 ; 0000BE43 80FCB6 '...' jnz xbe52 ; 0000BE46 750A 'u',0x0A xbe48: test byte [0x96],0x2 ; 0000BE48 F606960002 '.....' jz xbe52 ; 0000BE4D 7403 't.' jmp xbf5a ; 0000BE4F E90801 '...' xbe52: not bx ; 0000BE52 F7D3 '..' cmp ah,0xb8 ; 0000BE54 80FCB8 '...' jnz xbe81 ; 0000BE57 7528 'u(' test byte [0x96],0x2 ; 0000BE59 F606960002 '.....' jz xbe73 ; 0000BE5E 7413 't.' and byte [0x96],0xf7 ; 0000BE60 80269600F7 '.&...' and byte [0x96],0xfd ; 0000BE65 80269600FD '.&...' test byte [0x18],0x2 ; 0000BE6A F606180002 '.....' jz xbeb3 ; 0000BE6F 7442 'tB' jmp short xbeb7 ; 0000BE71 EB44 '.D' xbe73: and byte [0x18],0xfd ; 0000BE73 80261800FD '.&...' test byte [0x96],0x8 ; 0000BE78 F606960008 '.....' jz xbeb3 ; 0000BE7D 7434 't4' jmp short xbeb7 ; 0000BE7F EB36 '.6' xbe81: cmp ah,0x9d ; 0000BE81 80FC9D '...' jnz xbeb3 ; 0000BE84 752D 'u-' test byte [0x96],0x1 ; 0000BE86 F606960001 '.....' jnz xbeb7 ; 0000BE8B 752A 'u*' test byte [0x96],0x2 ; 0000BE8D F606960002 '.....' jz xbea7 ; 0000BE92 7413 't.' and byte [0x96],0xfb ; 0000BE94 80269600FB '.&...' and byte [0x96],0xfd ; 0000BE99 80269600FD '.&...' test byte [0x18],0x1 ; 0000BE9E F606180001 '.....' jz xbeb3 ; 0000BEA3 740E 't.' jmp short xbeb7 ; 0000BEA5 EB10 '..' xbea7: and byte [0x18],0xfe ; 0000BEA7 80261800FE '.&...' test byte [0x96],0x4 ; 0000BEAC F606960004 '.....' jnz xbeb7 ; 0000BEB1 7504 'u.' xbeb3: and [0x17],bx ; 0000BEB3 211E1700 '!...' xbeb7: stc ; 0000BEB7 F9 '.' ret ; 0000BEB8 C3 '.' xbeb9: cmp ah,0x38 ; 0000BEB9 80FC38 '..8' jnz xbedd ; 0000BEBC 751F 'u.' test byte [0x96],0x2 ; 0000BEBE F606960002 '.....' jz xbed1 ; 0000BEC3 740C 't.' or byte [0x96],0x8 ; 0000BEC5 800E960008 '.....' and byte [0x96],0xfd ; 0000BECA 80269600FD '.&...' jmp short xbed6 ; 0000BECF EB05 '..' xbed1: or byte [0x18],0x2 ; 0000BED1 800E180002 '.....' xbed6: or byte [0x17],0x8 ; 0000BED6 800E170008 '.....' stc ; 0000BEDB F9 '.' ret ; 0000BEDC C3 '.' xbedd: cmp ah,0x1d ; 0000BEDD 80FC1D '...' jnz xbf08 ; 0000BEE0 7526 'u&' test byte [0x96],0x1 ; 0000BEE2 F606960001 '.....' jnz xbf06 ; 0000BEE7 751D 'u.' test byte [0x96],0x2 ; 0000BEE9 F606960002 '.....' jz xbefc ; 0000BEEE 740C 't.' or byte [0x96],0x4 ; 0000BEF0 800E960004 '.....' and byte [0x96],0xfd ; 0000BEF5 80269600FD '.&...' jmp short xbf01 ; 0000BEFA EB05 '..' xbefc: or byte [0x18],0x1 ; 0000BEFC 800E180001 '.....' xbf01: or byte [0x17],0x4 ; 0000BF01 800E170004 '.....' xbf06: stc ; 0000BF06 F9 '.' ret ; 0000BF07 C3 '.' xbf08: test [0x17],bx ; 0000BF08 851E1700 '....' jnz xbf55 ; 0000BF0C 7547 'uG' or [0x17],bx ; 0000BF0E 091E1700 '....' test byte [0x17],0x4 ; 0000BF12 F606170004 '.....' jnz xbf55 ; 0000BF17 753C 'u<' cmp ah,0x52 ; 0000BF19 80FC52 '..R' jnz xbf51 ; 0000BF1C 7533 'u3' test byte [0x17],0x8 ; 0000BF1E F606170008 '.....' jnz xbf5b ; 0000BF23 7536 'u6' test byte [0x17],0x3 ; 0000BF25 F606170003 '.....' jz xbf3c ; 0000BF2A 7410 't.' test byte [0x96],0x2 ; 0000BF2C F606960002 '.....' jnz xbf4a ; 0000BF31 7517 'u.' test byte [0x17],0x20 ; 0000BF33 F606170020 '.... ' jz xbf4a ; 0000BF38 7410 't.' jmp short xbf51 ; 0000BF3A EB15 '..' xbf3c: test byte [0x96],0x2 ; 0000BF3C F606960002 '.....' jnz xbf51 ; 0000BF41 750E 'u.' test byte [0x17],0x20 ; 0000BF43 F606170020 '.... ' jz xbf51 ; 0000BF48 7407 't.' xbf4a: and byte [0x18],0x7f ; 0000BF4A 802618007F '.&...' jmp short xbf55 ; 0000BF4F EB04 '..' xbf51: xor [0x17],bh ; 0000BF51 303E1700 '0>..' xbf55: cmp ah,0x52 ; 0000BF55 80FC52 '..R' jz xbf5b ; 0000BF58 7401 't.' xbf5a: stc ; 0000BF5A F9 '.' xbf5b: ret ; 0000BF5B C3 '.' cmp [di],bl ; 0000BF5C 381D '8.' sub dh,[0x3a52] ; 0000BF5E 2A36523A '*6R:' inc bp ; 0000BF62 45 'E' inc si ; 0000BF63 46 'F' xbf64: test byte [0x18],0x4 ; 0000BF64 F606180004 '.....' jnz xbf79 ; 0000BF69 750E 'u.' or byte [0x18],0x4 ; 0000BF6B 800E180004 '.....' mov ax,0x8500 ; 0000BF70 B80085 '...' xbf73: call xeb0c ; 0000BF73 E8962B '..+' int 0x15 ; 0000BF76 CD15 '..' inc bp ; 0000BF78 45 'E' xbf79: stc ; 0000BF79 F9 '.' ret ; 0000BF7A C3 '.' xbf7b: and byte [0x18],0xfb ; 0000BF7B 80261800FB '.&...' mov ax,0x8501 ; 0000BF80 B80185 '...' jmp short xbf73 ; 0000BF83 EBEE '..' xbf85: mov bx,0x7d ; 0000BF85 BB7D00 '.}.' call xc7db ; 0000BF88 E85008 '.P.' stc ; 0000BF8B F9 '.' ret ; 0000BF8C C3 '.' mov ah,0xf0 ; 0000BF8D B4F0 '..' mov al,0x3 ; 0000BF8F B003 '..' pushf ; 0000BF91 9C '.' push cs ; 0000BF92 0E '.' call xe82e ; 0000BF93 E89828 '..(' mov ah,0xf1 ; 0000BF96 B4F1 '..' pushf ; 0000BF98 9C '.' push cs ; 0000BF99 0E '.' call xe82e ; 0000BF9A E89128 '..(' cmp al,0xff ; 0000BF9D 3CFF '<.' jz 0xbfc1 ; 0000BF9F 7420 't ' mov bx,0x7d ; 0000BFA1 BB7D00 '.}.' push ax ; 0000BFA4 50 'P' call xc7db ; 0000BFA5 E83308 '.3.' pop ax ; 0000BFA8 58 'X' cmp al,0x0 ; 0000BFA9 3C00 '<.' jz xbfc1 ; 0000BFAB 7414 't.' cmp al,0x1 ; 0000BFAD 3C01 '<.' jz xbfc1 ; 0000BFAF 7410 't.' cmp al,0x9 ; 0000BFB1 3C09 '<.' jz xbfc1 ; 0000BFB3 740C 't.' mov bx,0x7d ; 0000BFB5 BB7D00 '.}.' call xc638 ; 0000BFB8 E87D06 '.}.' ; CALL DELAY(BX) mov bx,0x7d ; 0000BFBB BB7D00 '.}.' call xc7db ; 0000BFBE E81A08 '...' xbfc1: stc ; 0000BFC1 F9 '.' ret ; 0000BFC2 C3 '.' xbfc3: cmp ah,0xff ; 0000BFC3 80FCFF '...' jnz xbfca ; 0000BFC6 7502 'u.' jmp short xbf85 ; 0000BFC8 EBBB '..' xbfca: cmp ah,0x54 ; 0000BFCA 80FC54 '..T' jnz xbfd1 ; 0000BFCD 7502 'u.' jmp short xbf64 ; 0000BFCF EB93 '..' xbfd1: cmp ah,0xd4 ; 0000BFD1 80FCD4 '...' jnz xbfd8 ; 0000BFD4 7502 'u.' jmp short xbf7b ; 0000BFD6 EBA3 '..' xbfd8: cmp ah,0x45 ; 0000BFD8 80FC45 '..E' jnz xbfe0 ; 0000BFDB 7503 'u.' jmp short xc02e ; 0000BFDD EB4F '.O' nop ; 0000BFDF 90 '.' xbfe0: cmp ah,0xb8 ; 0000BFE0 80FCB8 '...' jnz xbfe8 ; 0000BFE3 7503 'u.' jmp xc07f ; 0000BFE5 E99700 '...' xbfe8: cmp ah,0x37 ; 0000BFE8 80FC37 '..7' jnz xbff0 ; 0000BFEB 7503 'u.' jmp xc09b ; 0000BFED E9AB00 '...' xbff0: cmp ah,0x52 ; 0000BFF0 80FC52 '..R' jnz xbff8 ; 0000BFF3 7503 'u.' jmp xc0cb ; 0000BFF5 E9D300 '...' xbff8: cmp ah,0x46 ; 0000BFF8 80FC46 '..F' jnz xc000 ; 0000BFFB 7503 'u.' jmp xc0d6 ; 0000BFFD E9D600 '...' xc000: call xc24c ; 0000C000 E84902 '.I.' jz xc02c ; 0000C003 7427 't',0x27 cmp ah,[0x15] ; 0000C005 3A261500 ':&..' jz xc07d ; 0000C009 7472 'tr' cmp ah,0x53 ; 0000C00B 80FC53 '..S' jnz xc013 ; 0000C00E 7503 'u.' jmp xc093 ; 0000C010 E98000 '...' xc013: cmp ah,0xc ; 0000C013 80FC0C '...' jz xc090 ; 0000C016 7478 'tx' cmp ah,0x33 ; 0000C018 80FC33 '..3' jnz xc022 ; 0000C01B 7505 'u.' mov al,0x0 ; 0000C01D B000 '..' jmp xc11e ; 0000C01F E9FC00 '...' xc022: cmp ah,0x34 ; 0000C022 80FC34 '..4' jnz xc02c ; 0000C025 7505 'u.' mov al,0x1 ; 0000C027 B001 '..' jmp xc11e ; 0000C029 E9F200 '...' xc02c: clc ; 0000C02C F8 '.' ret ; 0000C02D C3 '.' xc02e: test byte [0x96],0x1 ; 0000C02E F606960001 '.....' jnz xc04f ; 0000C033 751A 'u.' test byte [0x17],0x4 ; 0000C035 F606170004 '.....' jz xc02c ; 0000C03A 74F0 't.' test byte [0x17],0x8 ; 0000C03C F606170008 '.....' jz xc046 ; 0000C041 7403 't.' jmp xc0e4 ; 0000C043 E99E00 '...' xc046: test byte [0x96],0x10 ; 0000C046 F606960010 '.....' jnz xc02c ; 0000C04B 75DF 'u.' jmp short xc054 ; 0000C04D EB05 '..' xc04f: and byte [0x96],0xfe ; 0000C04F 80269600FE '.&...' xc054: or byte [0x18],0x8 ; 0000C054 800E180008 '.....' cli ; 0000C059 FA '.' call xeb0c ; 0000C05A E8AF2A '..*' inc bp ; 0000C05D 45 'E' sti ; 0000C05E FB '.' cmp byte [0x49],0x2 ; 0000C05F 803E490002 '.>I..' jz xc06d ; 0000C064 7407 't.' cmp byte [0x49],0x3 ; 0000C066 803E490003 '.>I..' jnz xc076 ; 0000C06B 7509 'u.' xc06d: push ax ; 0000C06D 50 'P' mov ax,0xbf05 ; 0000C06E B805BF '...' mov bl,0x1 ; 0000C071 B301 '..' int 0x10 ; 0000C073 CD10 '..' pop ax ; 0000C075 58 'X' xc076: test byte [0x18],0x8 ; 0000C076 F606180008 '.....' jnz xc076 ; 0000C07B 75F9 'u.' xc07d: stc ; 0000C07D F9 '.' ret ; 0000C07E C3 '.' xc07f: push ax ; 0000C07F 50 'P' xor ax,ax ; 0000C080 33C0 '3.' xchg al,[0x19] ; 0000C082 86061900 '....' test al,al ; 0000C086 84C0 '..' jz xc08d ; 0000C088 7403 't.' call xd3b4 ; 0000C08A E82713 '.',0x27,'.' xc08d: pop ax ; 0000C08D 58 'X' jmp short xc02c ; 0000C08E EB9C '..' xc090: jmp xb673 ; 0000C090 E9E0F5 '...' xc093: cli ; 0000C093 FA '.' call xeb0c ; 0000C094 E8752A '.u*' sti ; 0000C097 FB '.' jmp xea81 ; 0000C098 E9E629 xc09b: test byte [0x96],0x10 ; 0000C09B F606960010 '.....' jz xc0b7 ; 0000C0A0 7415 't.' test byte [0x96],0x2 ; 0000C0A2 F606960002 '.....' jz xc0be ; 0000C0A7 7415 't.' test byte [0x17],0x4 ; 0000C0A9 F606170004 '.....' jnz xc0be ; 0000C0AE 750E 'u.' and byte [0x96],0xfd ; 0000C0B0 80269600FD '.&...' jmp short xc0c1 ; 0000C0B5 EB0A '.',0x0A xc0b7: test byte [0x17],0x3 ; 0000C0B7 F606170003 '.....' jnz xc0c1 ; 0000C0BC 7503 'u.' xc0be: jmp xc02c ; 0000C0BE E96BFF '.k.' xc0c1: cli ; 0000C0C1 FA '.' call xeb0c ; 0000C0C2 E8472A '.G*' inc bp ; 0000C0C5 45 'E' int 0x5 ; 0000C0C6 CD05 '..' sti ; 0000C0C8 FB '.' stc ; 0000C0C9 F9 '.' ret ; 0000C0CA C3 '.' xc0cb: test byte [0x18],0x80 ; 0000C0CB F606180080 '.....' jz xc0d4 ; 0000C0D0 7402 't.' stc ; 0000C0D2 F9 '.' ret ; 0000C0D3 C3 '.' xc0d4: clc ; 0000C0D4 F8 '.' ret ; 0000C0D5 C3 '.' xc0d6: test byte [0x17],0x4 ; 0000C0D6 F606170004 '.....' jz xc0d4 ; 0000C0DB 74F7 't.' test byte [0x17],0x8 ; 0000C0DD F606170008 '.....' jz xc0d4 ; 0000C0E2 74F0 't.' xc0e4: mov al,0xf2 ; 0000C0E4 B0F2 '..' jmp xc17f ; 0000C0E6 E99600 '...' xc0e9: test byte [0x17],0x4 ; 0000C0E9 F606170004 '.....' jz xc0d4 ; 0000C0EE 74E4 't.' test byte [0x17],0x8 ; 0000C0F0 F606170008 '.....' jnz xc0d4 ; 0000C0F5 75DD 'u.' test byte [0x96],0x10 ; 0000C0F7 F606960010 '.....' jz xc10a ; 0000C0FC 740C 't.' test byte [0x96],0x2 ; 0000C0FE F606960002 '.....' jz xc0d4 ; 0000C103 74CF 't.' and byte [0x96],0xfd ; 0000C105 80269600FD '.&...' xc10a: or byte [0x71],0x80 ; 0000C10A 800E710080 '..q..' call xc259 ; 0000C10F E84701 '.G.' cli ; 0000C112 FA '.' call xeb0c ; 0000C113 E8F629 '..)' inc bp ; 0000C116 45 'E' sti ; 0000C117 FB '.' int 0x1b ; 0000C118 CD1B '..' xor ax,ax ; 0000C11A 33C0 '3.' jmp short xc183 ; 0000C11C EB65 '.e' xc11e: mov ah,0xbf ; 0000C11E B4BF '..' int 0x10 ; 0000C120 CD10 '..' xor bp,bp ; 0000C122 33ED '3.' stc ; 0000C124 F9 '.' ret ; 0000C125 C3 '.' jmp xc02c ; 0000C126 E903FF '...' xc129: or ah,ah ; 0000C129 0AE4 0x0A,'.' js xc160 ; 0000C12B 7833 'x3' cmp ah,0x3b ; 0000C12D 80FC3B '..;' jl xc160 ; 0000C130 7C2E '|.' cmp ah,0x44 ; 0000C132 80FC44 '..D' jng xc162 ; 0000C135 7E2B '~+' cmp ah,0x57 ; 0000C137 80FC57 '..W' jz xc141 ; 0000C13A 7405 't.' cmp ah,0x58 ; 0000C13C 80FC58 '..X' jnz xc160 ; 0000C13F 751F 'u.' xc141: mov al,0x34 ; 0000C141 B034 '.4' test byte [0x17],0x8 ; 0000C143 F606170008 '.....' jnz xc17f ; 0000C148 7535 'u5' mov al,0x32 ; 0000C14A B032 '.2' test byte [0x17],0x4 ; 0000C14C F606170004 '.....' jnz xc17f ; 0000C151 752C 'u,' mov al,0x30 ; 0000C153 B030 '.0' test byte [0x17],0x3 ; 0000C155 F606170003 '.....' jnz xc17f ; 0000C15A 7523 'u#' mov al,0x2e ; 0000C15C B02E '..' jmp short xc17f ; 0000C15E EB1F '..' xc160: clc ; 0000C160 F8 '.' ret ; 0000C161 C3 '.' xc162: mov al,0x2d ; 0000C162 B02D '.-' test byte [0x17],0x8 ; 0000C164 F606170008 '.....' jnz xc17f ; 0000C169 7514 'u.' mov al,0x23 ; 0000C16B B023 '.#' test byte [0x17],0x4 ; 0000C16D F606170004 '.....' jnz xc17f ; 0000C172 750B 'u.' mov al,0x19 ; 0000C174 B019 '..' test byte [0x17],0x3 ; 0000C176 F606170003 '.....' jnz xc17f ; 0000C17B 7502 'u.' xor al,al ; 0000C17D 32C0 '2.' xc17f: add ah,al ; 0000C17F 02E0 '..' xor al,al ; 0000C181 32C0 '2.' xc183: call xd3b4 ; 0000C183 E82E12 '...' stc ; 0000C186 F9 '.' ret ; 0000C187 C3 '.' xc188: or ah,ah ; 0000C188 0AE4 0x0A,'.' js xc19b ; 0000C18A 780F 'x.' mov al,ah ; 0000C18C 8AC4 '..' cmp al,0x47 ; 0000C18E 3C47 '..' mov dl,0x80 ; 0000C3EE B280 '..' call xc40e ; 0000C3F0 E81B00 '...' cmp byte [0x75],0x2 ; 0000C3F3 803E750002 '.>u..' jc xc40c ; 0000C3F8 7212 'r.' mov al,0xb4 ; 0000C3FA B0B4 '..' out 0x84,al ; 0000C3FC E684 '..' xor ax,ax ; 0000C3FE 33C0 '3.' mov es,ax ; 0000C400 8EC0 '..' les di,[es:0x118] ; 0000C402 26C43E1801 '&.>..' mov dl,0x81 ; 0000C407 B281 '..' call xc40e ; 0000C409 E80200 '...' xc40c: pop es ; 0000C40C 07 '.' ret ; 0000C40D C3 '.' xc40e: mov bh,0x5 ; 0000C40E B705 '..' xc410: mov bl,0x2 ; 0000C410 B302 '..' xc412: mov cx,0x7a12 ; 0000C412 B9127A '..z' xc415: mov ah,0x10 ; 0000C415 B410 '..' int 0x13 ; 0000C417 CD13 '..' jnc xc42c ; 0000C419 7311 's.' push dx ; 0000C41B 52 'R' mov dx,0x1f7 ; 0000C41C BAF701 '...' in al,dx ; 0000C41F EC '.' pop dx ; 0000C420 5A 'Z' test al,0x80 ; 0000C421 A880 '..' jnz xc43d ; 0000C423 7518 'u.' cmp ah,0x80 ; 0000C425 80FC80 '...' jz xc439 ; 0000C428 740F 't.' jmp short xc430 ; 0000C42A EB04 '..' xc42c: test al,0x10 ; 0000C42C A810 '..' jnz xc442 ; 0000C42E 7512 'u.' xc430: call x919a ; 0000C430 E867CD '.g.' loop xc415 ; 0000C433 E2E0 '..' dec bl ; 0000C435 FECB '..' jnz xc412 ; 0000C437 75D9 'u.' xc439: dec bh ; 0000C439 FECF '..' jnz xc410 ; 0000C43B 75D3 'u.' xc43d: call xc549 ; 0000C43D E80901 '...' jmp short xc49e ; 0000C440 EB5C '.\' xc442: mov ah,0x9 ; 0000C442 B409 '..' int 0x13 ; 0000C444 CD13 '..' jc xc43d ; 0000C446 72F5 'r.' mov ah,0x11 ; 0000C448 B411 '..' int 0x13 ; 0000C44A CD13 '..' jc xc49b ; 0000C44C 724D 'rM' push dx ; 0000C44E 52 'R' mov ax,[es:di] ; 0000C44F 268B05 '&..' sub ax,0x2 ; 0000C452 2D0200 '-..' mov ch,al ; 0000C455 8AE8 '..' mov cl,ah ; 0000C457 8ACC '..' shl cl,0x6 ; 0000C459 C0E106 '...' or cl,0x1 ; 0000C45C 80C901 '...' and ah,0xc ; 0000C45F 80E40C '...' shl ah,0x4 ; 0000C462 C0E404 '...' mov dl,ah ; 0000C465 8AD4 '..' pop ax ; 0000C467 58 'X' or dl,al ; 0000C468 0AD0 0x0A,'.' mov dh,[es:di+0x2] ; 0000C46A 268A7502 '&.u.' dec dh ; 0000C46E FECE '..' xc470: mov ax,0x401 ; 0000C470 B80104 '...' int 0x13 ; 0000C473 CD13 '..' jnc xc492 ; 0000C475 731B 's.' cmp ah,0xa ; 0000C477 80FC0A '..',0x0A jz xc492 ; 0000C47A 7416 't.' cmp ah,0x11 ; 0000C47C 80FC11 '...' jz xc492 ; 0000C47F 7411 't.' cmp ah,0x10 ; 0000C481 80FC10 '...' jz xc492 ; 0000C484 740C 't.' mov al,cl ; 0000C486 8AC1 '..' and al,0x11 ; 0000C488 2411 '$.' cmp al,0x11 ; 0000C48A 3C11 '<.' jz xc49b ; 0000C48C 740D 't',0x0D inc cl ; 0000C48E FEC1 '..' jmp short xc470 ; 0000C490 EBDE '..' xc492: mov cx,0x1 ; 0000C492 B90100 '...' mov ah,0xc ; 0000C495 B40C '..' int 0x13 ; 0000C497 CD13 '..' jnc xc49f ; 0000C499 7304 's.' xc49b: call xc530 ; 0000C49B E89200 '...' xc49e: stc ; 0000C49E F9 '.' xc49f: ret ; 0000C49F C3 '.' xc4a0: mov al,0x8e ; 0000C4A0 B08E '..' call xb544 ; 0000C4A2 E89FF0 '...' test al,0x40 ; 0000C4A5 A840 '.@' jz xc4b3 ; 0000C4A7 740A 't',0x0A xc4a9: mov al,0xb7 ; 0000C4A9 B0B7 '..' out 0x84,al ; 0000C4AB E684 '..' mov cl,0x0 ; 0000C4AD B100 '..' stc ; 0000C4AF F9 '.' jmp short xc52b ; 0000C4B0 EB79 '.y' nop ; 0000C4B2 90 '.' xc4b3: mov al,0x92 ; 0000C4B3 B092 '..' call xb544 ; 0000C4B5 E88CF0 '...' or al,al ; 0000C4B8 0AC0 0x0A,'.' jz xc4a9 ; 0000C4BA 74ED 't.' mov bl,al ; 0000C4BC 8AD8 '..' push ds ; 0000C4BE 1E '.' xor ax,ax ; 0000C4BF 33C0 '3.' mov cx,ax ; 0000C4C1 8BC8 '..' mov ds,ax ; 0000C4C3 8ED8 '..' mov al,bl ; 0000C4C5 8AC3 '..' shr al,0x4 ; 0000C4C7 C0E804 '...' jz xc4d9 ; 0000C4CA 740D 't',0x0D cmp al,0xf ; 0000C4CC 3C0F '<.' jnz xc4d5 ; 0000C4CE 7505 'u.' mov al,0x99 ; 0000C4D0 B099 '..' call xb544 ; 0000C4D2 E86FF0 '.o.' xc4d5: inc cl ; 0000C4D5 FEC1 '..' dec al ; 0000C4D7 FEC8 '..' xc4d9: mov ch,0x10 ; 0000C4D9 B510 '..' mul ch ; 0000C4DB F6E5 '..' add ax,0xe401 ; 0000C4DD 0501E4 '...' cli ; 0000C4E0 FA '.' mov [0x104],ax ; 0000C4E1 A30401 '...' mov [0x106],cs ; 0000C4E4 8C0E0601 '....' xor ax,ax ; 0000C4E8 33C0 '3.' mov al,bl ; 0000C4EA 8AC3 '..' and al,0xf ; 0000C4EC 240F '$.' jz xc4fd ; 0000C4EE 740D 't',0x0D cmp al,0xf ; 0000C4F0 3C0F '<.' jnz xc4f9 ; 0000C4F2 7505 'u.' mov al,0x9a ; 0000C4F4 B09A '..' call xb544 ; 0000C4F6 E84BF0 '.K.' xc4f9: dec al ; 0000C4F9 FEC8 '..' inc cl ; 0000C4FB FEC1 '..' xc4fd: mul ch ; 0000C4FD F6E5 '..' add ax,0xe401 ; 0000C4FF 0501E4 '...' mov [0x118],ax ; 0000C502 A31801 '...' mov [0x11a],cs ; 0000C505 8C0E1A01 '....' mov ax,[0x4c] ; 0000C509 A14C00 '.L.' mov [0x100],ax ; 0000C50C A30001 '...' mov ax,[0x4e] ; 0000C50F A14E00 '.N.' mov [0x102],ax ; 0000C512 A30201 '...' mov word [0x4c],0x2e12 ; 0000C515 C7064C00122E '..L...' mov [0x4e],cs ; 0000C51B 8C0E4E00 '..N.' mov word [0x1d8],0x3343 ; 0000C51F C706D8014333 '....C3' mov [0x1da],cs ; 0000C525 8C0EDA01 '....' sti ; 0000C529 FB '.' pop ds ; 0000C52A 1F '.' xc52b: mov [0x75],cl ; 0000C52B 880E7500 '..u.' ret ; 0000C52F C3 '.' xc530: mov al,0xb5 ; 0000C530 B0B5 '..' out 0x84,al ; 0000C532 E684 '..' mov bx,0xb9b0 ; 0000C534 BBB0B9 '...' cmp dl,0x80 ; 0000C537 80FA80 '...' jz xc53f ; 0000C53A 7403 't.' mov bx,0xb9c3 ; 0000C53C BBC3B9 '...' xc53f: mov cx,0x13 ; 0000C53F B91300 '...' mov dx,0x0 ; 0000C542 BA0000 '...' call xc745 ; 0000C545 E8FD01 '...' ret ; 0000C548 C3 '.' xc549: mov al,0xb6 ; 0000C549 B0B6 '..' out 0x84,al ; 0000C54B E684 '..' mov bx,0xb9eb ; 0000C54D BBEBB9 '...' cmp dl,0x81 ; 0000C550 80FA81 '...' jz xc55b ; 0000C553 7406 't.' call xc591 ; 0000C555 E83900 '.9.' mov bx,0xb9d6 ; 0000C558 BBD6B9 '...' xc55b: mov cx,0x15 ; 0000C55B B91500 '...' mov dx,0x0 ; 0000C55E BA0000 '...' call xc745 ; 0000C561 E8E101 '...' ret ; 0000C564 C3 '.' xc565: call xc5a2 ; 0000C565 E83A00 '.:.' call xc5af ; 0000C568 E84400 '.D.' mov dx,0x1f7 ; 0000C56B BAF701 '...' mov bx,0x3c ; 0000C56E BB3C00 '.<.' xc571: mov cx,0xf424 ; 0000C571 B924F4 '.$.' xc574: in al,dx ; 0000C574 EC '.' test al,0x80 ; 0000C575 A880 '..' jz xc585 ; 0000C577 740C 't.' call x919a ; 0000C579 E81ECC '...' loop xc574 ; 0000C57C E2F6 '..' dec bx ; 0000C57E 4B 'K' jnz xc571 ; 0000C57F 75F0 'u.' mov ah,0x80 ; 0000C581 B480 '..' jmp short xc58f ; 0000C583 EB0A '.',0x0A xc585: mov dx,0x1f1 ; 0000C585 BAF101 '...' in al,dx ; 0000C588 EC '.' cmp al,0x1 ; 0000C589 3C01 '<.' jz xc590 ; 0000C58B 7403 't.' mov ah,0x20 ; 0000C58D B420 '. ' xc58f: stc ; 0000C58F F9 '.' xc590: ret ; 0000C590 C3 '.' xc591: cli ; 0000C591 FA '.' mov al,0x8e ; 0000C592 B08E '..' call xb544 ; 0000C594 E8ADEF '...' or al,0x8 ; 0000C597 0C08 '..' mov ah,al ; 0000C599 8AE0 '..' mov al,0x8e ; 0000C59B B08E '..' call xb549 ; 0000C59D E8A9EF '...' sti ; 0000C5A0 FB '.' ret ; 0000C5A1 C3 '.' xc5a2: in al,0x21 ; 0000C5A2 E421 '.!' and al,0xfb ; 0000C5A4 24FB '$.' out 0x21,al ; 0000C5A6 E621 '.!' in al,0xa1 ; 0000C5A8 E4A1 '..' and al,0xbf ; 0000C5AA 24BF '$.' out 0xa1,al ; 0000C5AC E6A1 '..' ret ; 0000C5AE C3 '.' xc5af: mov ax,0x0 ; 0000C5AF B80000 '...' mov dx,0x3f6 ; 0000C5B2 BAF603 '...' out dx,al ; 0000C5B5 EE '.' mov al,0x4 ; 0000C5B6 B004 '..' out dx,al ; 0000C5B8 EE '.' call x919a ; 0000C5B9 E8DECB '...' mov al,0x0 ; 0000C5BC B000 '..' out dx,al ; 0000C5BE EE '.' ret ; 0000C5BF C3 '.' xc5c0: sti ; 0000C5C0 FB '.' push bx ; 0000C5C1 53 'S' push cx ; 0000C5C2 51 'Q' push dx ; 0000C5C3 52 'R' push si ; 0000C5C4 56 'V' push di ; 0000C5C5 57 'W' push ds ; 0000C5C6 1E '.' push bp ; 0000C5C7 55 'U' mov bp,sp ; 0000C5C8 8BEC '..' mov si,0x40 ; 0000C5CA BE4000 '.@.' mov ds,si ; 0000C5CD 8EDE '..' and dx,0x3 ; 0000C5CF 81E20300 '....' mov si,dx ; 0000C5D3 8BF2 '..' cmp ah,0x4 ; 0000C5D5 80FC04 '...' jnc xc5de ; 0000C5D8 7304 's.' mov bl,[si+0x7c] ; 0000C5DA 8A9C7C00 '..|.' xc5de: shl si,1 ; 0000C5DE D1E6 '..' mov dx,[si+0x0] ; 0000C5E0 8B940000 '....' or dx,dx ; 0000C5E4 0BD2 '..' jz xc61c ; 0000C5E6 7434 't4' test ah,ah ; 0000C5E8 84E4 '..' jnz xc5f1 ; 0000C5EA 7505 'u.' call xcb01 ; 0000C5EC E81205 '...' jmp short xc61c ; 0000C5EF EB2B '.+' xc5f1: dec ah ; 0000C5F1 FECC '..' jnz xc5fa ; 0000C5F3 7505 'u.' call xcb32 ; 0000C5F5 E83A05 '.:.' jmp short xc61c ; 0000C5F8 EB22 '."' xc5fa: dec ah ; 0000C5FA FECC '..' jnz xc603 ; 0000C5FC 7505 'u.' call xcb5e ; 0000C5FE E85D05 '.].' jmp short xc61c ; 0000C601 EB19 '..' xc603: dec ah ; 0000C603 FECC '..' jnz xc60c ; 0000C605 7505 'u.' call xcb29 ; 0000C607 E81F05 '...' jmp short xc61c ; 0000C60A EB10 '..' xc60c: dec ah ; 0000C60C FECC '..' jnz xc615 ; 0000C60E 7505 'u.' call xcbcb ; 0000C610 E8B805 jmp short xc61c ; 0000C613 EB07 '..' xc615: dec ah ; 0000C615 FECC '..' jnz xc61c ; 0000C617 7503 'u.' call xcc10 ; 0000C619 E8F405 '...' xc61c: pop bp ; 0000C61C 5D ']' pop ds ; 0000C61D 1F '.' pop di ; 0000C61E 5F '_' pop si ; 0000C61F 5E '^' pop dx ; 0000C620 5A 'Z' pop cx ; 0000C621 59 'Y' pop bx ; 0000C622 5B '[' iret ; 0000C623 CF '.' times 6 db 0xFF ; 0000C624 - 0000C629 jmp xca97 ; 0000C62A E96A04 dw 0x0010 ; 0000C62D 1000 xc62f: push bx ; 0000C62F 53 'S' mov bx,0x1 ; 0000C630 BB0100 '...' call xc638 ; 0000C633 E80200 '...' ; CALL DELAY(BX) pop bx ; 0000C636 5B '[' ret ; 0000C637 C3 '.' ; ; DELAY(BX): Wrapper around _DELAY, which spins for 0x950 ticks (2ms) BX times ; ; Modifies BX ; xc638: push bp ; 0000C638 55 'U' ; DELAY() BEGIN push ax ; 0000C639 50 'P' push cx ; 0000C63A 51 'Q' call xc642 ; 0000C63B E80400 '...' ; CALL _DELAY(BX) pop cx ; 0000C63E 59 'Y' pop ax ; 0000C63F 58 'X' pop bp ; 0000C640 5D ']' ; NOTE: SAVE/RESTORE OF BP UNNECESSARY ret ; 0000C641 C3 '.' ; DELAY() END ; ; _DELAY(BX): Spins for 0x950 ticks (2ms) BX times ; ; Modifies AX, BX, CX ; ; BX is immediately copied to CX and then replaced with a snapshot of TIMER0 from AX. TIMER0 is ; repeatedly snapped into AX, and when a delta of 0x950 ticks is observed between AX and BX, CX is ; decremented and the process repeated until CX is zero. ; ; IBM compatibility dictates that TIMER0 ticks at a rate of 1193181.8181 times per second, and the ; ratio of 0x950 (2384.) / 1193181.8181 works out to 2ms. ; ; The first call happens after about 1.5M instructions, and BX is 0x1388 (5000.), so that initial ; delay is 10,000ms or 10 seconds. The call comes from BC54. ; ; xc642: mov cx,bx ; 0000C642 8BCB '..' ; _DELAY() BEGIN xc644: pushf ; 0000C644 9C '.' cli ; 0000C645 FA '.' mov al,0x0 ; 0000C646 B000 '..' out 0x43,al ; 0000C648 E643 '.C' in al,0x40 ; 0000C64A E440 '.@' mov ah,al ; 0000C64C 8AE0 '..' in al,0x40 ; 0000C64E E440 '.@' push cs ; 0000C650 0E '.' ; LIKELY A "POPF" MACRO LEFT OVER TO DEAL WITH THE 80286 POPF ERRATA call xc657 ; 0000C651 E80300 '...' jmp short xc658 ; 0000C654 EB02 '..' nop ; 0000C656 90 '.' xc657: iret ; 0000C657 CF '.' xc658: xchg al,ah ; 0000C658 86C4 '..' mov bx,ax ; 0000C65A 8BD8 '..' xc65c: pushf ; 0000C65C 9C '.' cli ; 0000C65D FA '.' mov al,0x0 ; 0000C65E B000 '..' out 0x43,al ; 0000C660 E643 '.C' in al,0x40 ; 0000C662 E440 '.@' mov ah,al ; 0000C664 8AE0 '..' in al,0x40 ; 0000C666 E440 '.@' push cs ; 0000C668 0E '.' ; LIKELY A "POPF" MACRO LEFT OVER TO DEAL WITH THE 80286 POPF ERRATA call xc66f ; 0000C669 E80300 '...' jmp short xc670 ; 0000C66C EB02 '..' nop ; 0000C66E 90 '.' xc66f: iret ; 0000C66F CF '.' xc670: xchg al,ah ; 0000C670 86C4 '..' push bx ; 0000C672 53 'S' sub bx,ax ; 0000C673 2BD8 '+.' cmp bx,0x950 ; 0000C675 81FB5009 '..P.' pop bx ; 0000C679 5B '[' jc xc65c ; 0000C67A 72E0 'r.' loop xc644 ; 0000C67C E2C6 '..' ret ; 0000C67E C3 '.' ; _DELAY() END mov cx,bx ; 0000C67F 8BCB '..' xc681: mov al,0x0 ; 0000C681 B000 '..' out 0x43,al ; 0000C683 E643 '.C' in al,0x40 ; 0000C685 E440 '.@' mov ah,al ; 0000C687 8AE0 '..' in al,0x40 ; 0000C689 E440 '.@' xchg al,ah ; 0000C68B 86C4 '..' mov bx,ax ; 0000C68D 8BD8 '..' xc68f: mov al,0x0 ; 0000C68F B000 '..' out 0x43,al ; 0000C691 E643 '.C' in al,0x40 ; 0000C693 E440 '.@' mov ah,al ; 0000C695 8AE0 '..' in al,0x40 ; 0000C697 E440 '.@' xchg al,ah ; 0000C699 86C4 '..' sub bx,ax ; 0000C69B 2BD8 '+.' cmp bx,0x950 ; 0000C69D 81FB5009 '..P.' jc xc6a7 ; 0000C6A1 7204 'r.' loop xc681 ; 0000C6A3 E2DC '..' jmp bp ; 0000C6A5 FFE5 '..' xc6a7: add bx,ax ; 0000C6A7 03D8 '..' jmp short xc68f ; 0000C6A9 EBE4 '..' xc6ab: xchg si,dx ; 0000C6AB 87F2 '..' xchg ch,cl ; 0000C6AD 86E9 '..' mov bx,cx ; 0000C6AF 8BD9 '..' mov sp,si ; 0000C6B1 8BE6 '..' mov cx,0x4 ; 0000C6B3 B90400 '...' shr dx,cl ; 0000C6B6 D3EA '..' mov cx,0x2 ; 0000C6B8 B90200 '...' mov si,0xc6c1 ; 0000C6BB BEC1C6 '...' jmp short xc6e6 ; 0000C6BE EB26 '.&' nop ; 0000C6C0 90 '.' mov dx,sp ; 0000C6C1 8BD4 '..' and dx,0x3 ; 0000C6C3 81E20300 '....' mov cx,0x4 ; 0000C6C7 B90400 '...' mov si,0xc6d0 ; 0000C6CA BED0C6 '...' jmp short xc6e6 ; 0000C6CD EB17 '..' nop ; 0000C6CF 90 '.' mov al,0x20 ; 0000C6D0 B020 '. ' mov [es:di+0x8000],al ; 0000C6D2 2688850080 '&....' stosb ; 0000C6D7 AA '.' inc di ; 0000C6D8 47 'G' mov dx,bx ; 0000C6D9 8BD3 '..' mov cx,0x2 ; 0000C6DB B90200 '...' mov si,0xc6e4 ; 0000C6DE BEE4C6 '...' jmp short xc6e6 ; 0000C6E1 EB03 '..' nop ; 0000C6E3 90 '.' jmp bp ; 0000C6E4 FFE5 '..' xc6e6: cld ; 0000C6E6 FC '.' mov ax,0xb000 ; 0000C6E7 B800B0 '...' mov es,ax ; 0000C6EA 8EC0 '..' xc6ec: xchg ax,dx ; 0000C6EC 92 '.' mul word [cs:0xc62d] ; 0000C6ED 2EF7262DC6 '..&-.' xchg ax,dx ; 0000C6F2 92 '.' add al,0x90 ; 0000C6F3 0490 '..' daa ; 0000C6F5 27 0x27 adc al,0x40 ; 0000C6F6 1440 '.@' daa ; 0000C6F8 27 0x27 mov [es:di+0x8000],al ; 0000C6F9 2688850080 '&....' stosb ; 0000C6FE AA '.' inc di ; 0000C6FF 47 'G' loop xc6ec ; 0000C700 E2EA '..' jmp si ; 0000C702 FFE6 '..' xc704: xchg ch,cl ; 0000C704 86E9 '..' push cx ; 0000C706 51 'Q' push dx ; 0000C707 52 'R' mov dx,si ; 0000C708 8BD6 '..' shl dx,0x8 ; 0000C70A C1E208 '...' mov cx,0x2 ; 0000C70D B90200 '...' call xc72b ; 0000C710 E81800 '...' pop dx ; 0000C713 5A 'Z' and dx,0x3 ; 0000C714 81E20300 '....' mov cx,0x4 ; 0000C718 B90400 '...' call xc72b ; 0000C71B E80D00 '.',0x0D,'.' mov al,0x20 ; 0000C71E B020 '. ' call print_char ; 0000C720 E8B000 '...' pop dx ; 0000C723 5A 'Z' mov cx,0x2 ; 0000C724 B90200 '...' call xc72b ; 0000C727 E80100 '...' ret ; 0000C72A C3 '.' ; ; Print the value in (DX) as (CX) hex digits ; xc72b: cld ; 0000C72B FC '.' xc72c: xchg ax,dx ; 0000C72C 92 '.' mul word [cs:0xc62d] ; multiply by 16 xchg ax,dx ; 0000C732 92 '.' add al,0x90 ; 0000C733 0490 '..' daa ; 0000C735 27 0x27 adc al,0x40 ; 0000C736 1440 '.@' daa ; 0000C738 27 0x27 push dx ; 0000C739 52 'R' push cx ; 0000C73A 51 'Q' push ax ; 0000C73B 50 'P' call print_char ; 0000C73C E89400 '...' pop ax ; 0000C73F 58 'X' pop cx ; 0000C740 59 'Y' pop dx ; 0000C741 5A 'Z' loop xc72c ; 0000C742 E2E8 '..' ret ; 0000C744 C3 '.' xc745: push ds ; 0000C745 1E '.' mov ax,0x40 ; 0000C746 B84000 '.@.' mov ds,ax ; 0000C749 8ED8 '..' mov byte [0x12],0xff ; 0000C74B C6061200FF '.....' pop ds ; 0000C750 1F '.' xc751: push bx ; 0000C751 53 'S' push cx ; 0000C752 51 'Q' xc753: test dh,0xc0 ; 0000C753 F6C6C0 '...' jz xc760 ; 0000C756 7408 't.' call xc7ab ; 0000C758 E85000 sub dh,0x40 ; 0000C75B 80EE40 '..@' jmp short xc753 ; 0000C75E EBF3 '..' xc760: test dh,0x30 ; 0000C760 F6C630 '..0' jz xc76d ; 0000C763 7408 't.' call xc791 ; 0000C765 E82900 '.).' sub dh,0x10 ; 0000C768 80EE10 '...' jmp short xc760 ; 0000C76B EBF3 '..' xc76d: pop cx ; 0000C76D 59 'Y' pop bx ; 0000C76E 5B '[' xc76f: mov al,[cs:bx] ; 0000C76F 2E8A07 '...' push bx ; 0000C772 53 'S' call print_char ; 0000C773 E85D00 '.].' pop bx ; 0000C776 5B '[' inc bx ; 0000C777 43 'C' loop xc76f ; 0000C778 E2F5 '..' ret ; 0000C77A C3 '.' ; ; print_str(BX -> string, CX == length) ; ; NOTE: This appears to be dead code ; print_str: mov al,[bx] ; 0000C77B 8A07 '..' push bx ; 0000C77D 53 'S' call print_char ; 0000C77E E85200 '.R.' pop bx ; 0000C781 5B '[' inc bx ; 0000C782 43 'C' loop print_str ; 0000C783 E2F6 '..' ret ; 0000C785 C3 '.' ; ; print_crlf() ; print_crlf: mov al,0xd ; 0000C786 B00D '.',0x0D call print_char ; 0000C788 E84800 '.H.' mov al,0xa ; 0000C78B B00A '.',0x0A call print_char ; 0000C78D E84300 '.C.' ret ; 0000C790 C3 '.' xc791: mov bx,0xfa ; 0000C791 BBFA00 '...' call xc7db ; 0000C794 E84400 '.D.' mov bx,0x100 ; 0000C797 BB0001 '...' call xc638 ; 0000C79A E89BFE '...' ; CALL DELAY(BX) ret ; 0000C79D C3 '.' xc79e: mov bx,0x7d ; 0000C79E BB7D00 '.}.' ; BX = 125 (FOR 250ms BEEP) call xc7db ; 0000C7A1 E83700 '.7.' ; CALL BEEP(BX) mov bx,0x7d ; 0000C7A4 BB7D00 '.}.' call xc638 ; 0000C7A7 E88EFE '...' ; CALL DELAY(BX) ret ; 0000C7AA C3 '.' xc7ab: mov bx,0x320 ; 0000C7AB BB2003 '. .' call xc7db ; 0000C7AE E82A00 '.*.' mov bx,0x100 ; 0000C7B1 BB0001 '...' call xc638 ; 0000C7B4 E881FE '...' ; CALL DELAY(BX) ret ; 0000C7B7 C3 '.' xc7b8: mov ch,al ; 0000C7B8 8AE8 '..' mov cl,0x4 ; 0000C7BA B104 '..' shr al,cl ; 0000C7BC D2E8 '..' call xc7c7 ; 0000C7BE E80600 '...' mov al,ch ; 0000C7C1 8AC5 '..' call xc7c7 ; 0000C7C3 E80100 '...' ret ; 0000C7C6 C3 '.' xc7c7: and al,0xf ; 0000C7C7 240F '$.' add al,0x90 ; 0000C7C9 0490 '..' daa ; 0000C7CB 27 0x27 adc al,0x40 ; 0000C7CC 1440 '.@' daa ; 0000C7CE 27 0x27 call print_char ; 0000C7CF E80100 '...' ret ; 0000C7D2 C3 '.' print_char: mov bx,0x7 ; 0000C7D3 BB0700 '...' mov ah,0xe ; 0000C7D6 B40E '..' int 0x10 ; 0000C7D8 CD10 '..' ret ; 0000C7DA C3 '.' ; ; BEEP(BX) ; xc7db: mov al,0xb6 ; 0000C7DB B0B6 '..' ; BEEP() BEGIN out 0x43,al ; 0000C7DD E643 '.C' mov al,0x38 ; 0000C7DF B038 '.8' out 0x42,al ; 0000C7E1 E642 '.B' mov al,0x5 ; 0000C7E3 B005 '..' out 0x42,al ; 0000C7E5 E642 '.B' in al,0x61 ; 0000C7E7 E461 '.a' or al,0x3 ; 0000C7E9 0C03 '..' out 0x61,al ; 0000C7EB E661 '.a' call xc638 ; 0000C7ED E848FE '.H.' ; CALL DELAY(BX) in al,0x61 ; 0000C7F0 E461 '.a' and al,0xfc ; 0000C7F2 24FC '$.' out 0x61,al ; 0000C7F4 E661 '.a' ret ; 0000C7F6 C3 '.' ; BEEP() END xc7f7: xor di,di ; 0000C7F7 33FF '3.' xc7f9: cld ; 0000C7F9 FC '.' mov ax,0xb000 ; 0000C7FA B800B0 '...' mov es,ax ; 0000C7FD 8EC0 '..' xc7ff: mov al,[cs:bx] ; 0000C7FF 2E8A07 '...' inc bx ; 0000C802 43 'C' mov [es:di+0x8000],al ; 0000C803 2688850080 '&....' stosb ; 0000C808 AA '.' inc di ; 0000C809 47 'G' loop xc7ff ; 0000C80A E2F3 '..' jmp bp ; 0000C80C FFE5 '..' push es ; 0000C80E 06 '.' xor di,di ; 0000C80F 33FF '3.' cld ; 0000C811 FC '.' mov ax,0xb000 ; 0000C812 B800B0 '...' mov es,ax ; 0000C815 8EC0 '..' xc817: mov al,[bx] ; 0000C817 8A07 '..' inc bx ; 0000C819 43 'C' mov [es:di+0x8000],al ; 0000C81A 2688850080 '&....' stosb ; 0000C81F AA '.' inc di ; 0000C820 47 'G' loop xc817 ; 0000C821 E2F4 '..' pop es ; 0000C823 07 '.' ret ; 0000C824 C3 '.' ; ; Copy ROM to RAM ; ; This function ends by disabling A20 and zeroing all conventional memory. ; xc825: pusha ; 0000C825 60 '`' push ds ; 0000C826 1E '.' push es ; 0000C827 06 '.' mov al,0xd0 ; 0000C828 B0D0 '..' out 0x84,al ; 0000C82A E684 '..' mov ax,0x40 ; 0000C82C B84000 '.@.' mov ds,ax ; 0000C82F 8ED8 '..' mov [0x67],sp ; 0000C831 89266700 '.&g.' mov [0x69],ss ; 0000C835 8C166900 '..i.' mov al,0xd1 ; 0000C839 B0D1 '..' out 0x84,al ; 0000C83B E684 '..' ; ; Enter protected-mode ; call x80e2 ; 0000C83D E8A2B8 '...' jz xc845 ; 0000C840 7403 't.' jmp xc8ef ; 0000C842 E9AA00 '...' xc845: mov al,0xd2 ; 0000C845 B0D2 '..' out 0x84,al ; 0000C847 E684 '..' mov al,0xb1 ; 0000C849 B0B1 '..' call xb544 ; 0000C84B E8F6EC '...' mov ah,al ; 0000C84E 8AE0 '..' mov al,0xb0 ; 0000C850 B0B0 '..' call xb544 ; 0000C852 E8EFEC '...' xor dx,dx ; 0000C855 33D2 '3.' mov bx,0x40 ; 0000C857 BB4000 '.@.' div bx ; 0000C85A F7F3 '..' mov bh,al ; 0000C85C 8AF8 '..' mov bl,0x10 ; 0000C85E B310 '..' call xc8fc ; 0000C860 E89900 '...' ; ; The next function writes 0xFF to 0x80C00000, presumably to ensure that ; Compaq Built-in Memory at 0xFE0000 is NOT mapped to 0x0E000 at the moment ; call x84a5 ; 0000C863 E83FBC '.?.' mov ax,[0x8d] ; 0000C866 A18D00 '...' add ax,0x80 ; 0000C869 058000 '...' xor dx,dx ; 0000C86C 33D2 '3.' mov bx,0x40 ; 0000C86E BB4000 '.@.' div bx ; 0000C871 F7F3 '..' mov bh,al ; 0000C873 8AF8 '..' mov bl,[0x8c] ; 0000C875 8A1E8C00 '....' call xc8fc ; 0000C879 E88000 '...' ; ; Relocate the ROM ; ; On return, we should now be running in RAM (ie, a copy of the ROM in 128Kb of RAM ; now mapped to %0E0000 through %0FFFFF) ; call x853c ; 0000C87C E8BDBC '...' ; ; Return to real-mode ; mov al,0xd3 ; 0000C87F B0D3 '..' out 0x84,al ; 0000C881 E684 '..' mov ax,0x28 ; 0000C883 B82800 '.(.' mov ds,ax ; 0000C886 8ED8 '..' mov es,ax ; 0000C888 8EC0 '..' mov ss,ax ; 0000C88A 8ED0 '..' mov eax,cr0 ; 0000C88C 0F2000 and eax,0x7ffffffe ; 0000C88F 6625FEFFFF7F 'f%....' mov cr0,eax ; 0000C895 0F2200 jmp 0xf000:xc89d ; 0000C898 EA9DC800F0 '.....' xc89d: lidt [cs:0xa151] ; 0000C89D 2E0F011E51A1 '....Q.' mov al,0xd4 ; 0000C8A3 B0D4 '..' out 0x84,al ; 0000C8A5 E684 '..' mov ax,0x40 ; 0000C8A7 B84000 '.@.' mov ds,ax ; 0000C8AA 8ED8 '..' mov ss,[0x69] ; 0000C8AC 8E166900 '..i.' mov sp,[0x67] ; 0000C8B0 8B266700 '.&g.' ; ; Disable A20 ; call xa478 ; 0000C8B4 E8C1DB ; ; Get the (conventional) memory size in Kb from 0x40:0x0013, divide by 64 (0x40) to yield ; the number of 64Kb blocks of RAM below 1Mb, and then zero each 64Kb block with "rep stosd". ; mov ax,[0x13] ; 0000C8B7 A11300 '...' xor dx,dx ; 0000C8BA 33D2 '3.' mov bx,0x40 ; 0000C8BC BB4000 '.@.' div bx ; 0000C8BF F7F3 '..' cmp ax,0x0 ; 0000C8C1 3D0000 '=..' jnz xc8c9 ; 0000C8C4 7503 'u.' jmp short xc8eb ; 0000C8C6 EB23 '.#' nop ; 0000C8C8 90 '.' xc8c9: sub ax,0x1 ; 0000C8C9 2D0100 '-..' mov bh,al ; 0000C8CC 8AF8 '..' mov dx,0x1000 ; 0000C8CE BA0010 '...' xc8d1: cmp bh,0x0 ; 0000C8D1 80FF00 '...' jz xc8eb ; 0000C8D4 7415 't.' mov es,dx ; 0000C8D6 8EC2 '..' xor eax,eax ; 0000C8D8 6633C0 'f3.' mov cx,0x4000 ; 0000C8DB B90040 '..@' xor di,di ; 0000C8DE 33FF '3.' cld ; 0000C8E0 FC '.' rep stosd ; 0000C8E1 66F3AB 'f..' dec bh ; 0000C8E4 FECF '..' add dh,0x10 ; 0000C8E6 80C610 '...' jmp short xc8d1 ; 0000C8E9 EBE6 '..' xc8eb: pop es ; 0000C8EB 07 '.' pop ds ; 0000C8EC 1F '.' popa ; 0000C8ED 61 'a' ret ; 0000C8EE C3 '.' xc8ef: mov dx,0x0 ; 0000C8EF BA0000 '...' mov bx,err102 ; 0000C8F2 BB8CB6 '...' mov cx,err102_len ; 0000C8F5 B91A00 '...' call xc745 ; 0000C8F8 E84AFE '.J.' hlt ; 0000C8FB F4 '.' xc8fc: push ax ; 0000C8FC 50 'P' push bx ; 0000C8FD 53 'S' push cx ; 0000C8FE 51 'Q' push di ; 0000C8FF 57 'W' push ds ; 0000C900 1E '.' push es ; 0000C901 06 '.' mov ax,0x18 ; 0000C902 B81800 '...' mov ds,ax ; 0000C905 8ED8 '..' mov word [0x4a],0x0 ; 0000C907 C7064A000000 '..J...' xc90d: cmp bh,0x0 ; 0000C90D 80FF00 '...' jz xc92d ; 0000C910 741B 't.' mov [0x4c],bl ; 0000C912 881E4C00 '..L.' mov ax,0x48 ; 0000C916 B84800 '.H.' mov es,ax ; 0000C919 8EC0 '..' xor eax,eax ; 0000C91B 6633C0 'f3.' mov cx,0x4000 ; 0000C91E B90040 '..@' xor di,di ; 0000C921 33FF '3.' cld ; 0000C923 FC '.' rep stosd ; 0000C924 66F3AB 'f..' dec bh ; 0000C927 FECF '..' inc bl ; 0000C929 FEC3 '..' jmp short xc90d ; 0000C92B EBE0 '..' xc92d: pop es ; 0000C92D 07 '.' pop ds ; 0000C92E 1F '.' pop di ; 0000C92F 5F '_' pop cx ; 0000C930 59 'Y' pop bx ; 0000C931 5B '[' pop ax ; 0000C932 58 'X' ret ; 0000C933 C3 '.' call xca03 ; 0000C934 E8CC00 '...' mov [0x41],ah ; 0000C937 88264100 '.&A.' or ah,ah ; 0000C93B 0AE4 0x0A,'.' jz xc944 ; 0000C93D 7405 't.' or word [bp+0x16],0x1 ; 0000C93F 814E160100 '.N...' xc944: ret ; 0000C944 C3 '.' mov al,[bp+0x0] ; 0000C945 8A4600 '.F.' mov ah,[0x41] ; 0000C948 8A264100 '.&A.' or ah,ah ; 0000C94C 0AE4 0x0A,'.' jz xc955 ; 0000C94E 7405 't.' or word [bp+0x16],0x1 ; 0000C950 814E160100 '.N...' xc955: ret ; 0000C955 C3 '.' xc956: cli ; 0000C956 FA '.' mov byte [MOTOR_COUNT],0xff ; 0000C957 C6064000FF ; RESET TIME-OUT COUNTER FOR MOTOR(S) mov al,0x10 ; 0000C95C B010 mov cl,[bp+CALLER_DL] ; 0000C95E 8A4E06 ; CL = DRIVE NUMBER shl al,cl ; 0000C961 D2E0 or al,0xc ; 0000C963 0C0C or al,[bp+CALLER_DL] ; 0000C965 0A4606 mov ah,[MOTOR_STATUS] ; 0000C968 8A263F00 ; AH = MOTOR STATUS shl ah,0x4 ; 0000C96C C0E404 or al,ah ; 0000C96F 0AC4 mov dx,0x3f2 ; 0000C971 BAF203 out dx,al ; 0000C974 EE mov ah,al ; 0000C975 8AE0 mov al,[0x8b] ; 0000C977 A08B00 ; AL = LASTRATE (LAST DISKETTE DATA RATE SELECTED) shr al,0x6 ; 0000C97A C0E806 mov dx,0x3f7 ; 0000C97D BAF703 ; DX = FDC DIGITAL INPUT REGISTER (READ-ONLY) out dx,al ; 0000C980 EE shr ah,0x4 ; 0000C981 C0EC04 mov al,[MOTOR_STATUS] ; 0000C984 A03F00 ; AL = MOTOR STATUS (BIT 3-0 = DRIVE 3-0 CURRENTLY RUNNING, BIT 7 = CURRENT OPERATION IS A WRITE) and al,0xf ; 0000C987 240F cmp al,ah ; 0000C989 3AC4 jz xc9bd ; 0000C98B 7430 ; NO DELAY or [MOTOR_STATUS],ah ; 0000C98D 08263F00 sti ; 0000C991 FB clc ; 0000C992 F8 mov ax,0x90fd ; 0000C993 B8FD90 int 0x15 ; 0000C996 CD15 jc xc9bd ; 0000C998 7223 mov al,0x7d ; 0000C99A B07D mov cl,0x8 ; 0000C99C B108 ; DEFAULT DELAY mov bl,[es:si+0xa] ; 0000C99E 268A5C0A cmp byte [bp+CALLER_AH],0x3 ; 0000C9A2 807E0103 ; WRITE REQUEST? jz xc9b0 ; 0000C9A6 7408 ; YES cmp byte [bp+CALLER_AH],0x5 ; 0000C9A8 807E0105 ; FORMAT REQUEST? jnz xc9b0 ; 0000C9AC 7502 ; NO mov cl,0x5 ; 0000C9AE B105 ; YES (SELECT SHORTER DELAY) xc9b0: cmp bl,cl ; 0000C9B0 3AD9 jnc xc9b6 ; 0000C9B2 7302 xchg bl,cl ; 0000C9B4 86D9 xc9b6: mul bl ; 0000C9B6 F6E3 mov bx,ax ; 0000C9B8 8BD8 call xc638 ; 0000C9BA E87BFC ; CALL DELAY(BX) xc9bd: sti ; 0000C9BD FB ret ; 0000C9BE C3 xc9bf: push cx ; 0000C9BF 51 'Q' mov dx,0x3f4 ; 0000C9C0 BAF403 '...' mov cx,0xbc ; 0000C9C3 B9BC00 '...' xc9c6: call x919a ; 0000C9C6 E8D1C7 '...' in al,dx ; 0000C9C9 EC '.' test al,0x80 ; 0000C9CA A880 '..' jnz xc9d4 ; 0000C9CC 7506 'u.' loop xc9c6 ; 0000C9CE E2F6 '..' mov al,0x80 ; 0000C9D0 B080 '..' jmp short xc9d8 ; 0000C9D2 EB04 '..' xc9d4: call x919a ; 0000C9D4 E8C3C7 '...' in al,dx ; 0000C9D7 EC '.' xc9d8: inc dx ; 0000C9D8 42 'B' test al,0x40 ; 0000C9D9 A840 '.@' pop cx ; 0000C9DB 59 'Y' ret ; 0000C9DC C3 '.' xc9dd: mov bh,ah ; 0000C9DD 8AFC '..' mov al,[0x45] ; 0000C9DF A04500 '.E.' sub al,[bp+0x5] ; 0000C9E2 2A4605 '*F.' shl al,1 ; 0000C9E5 D0E0 '..' mul byte [es:si+0x4] ; 0000C9E7 26F66404 '&.d.' mov bl,al ; 0000C9EB 8AD8 '..' mov al,[0x46] ; 0000C9ED A04600 '.F.' sub al,[bp+0x7] ; 0000C9F0 2A4607 '*F.' mul byte [es:si+0x4] ; 0000C9F3 26F66404 '&.d.' add al,bl ; 0000C9F7 02C3 '..' add al,[0x47] ; 0000C9F9 02064700 '..G.' sub al,[bp+0x4] ; 0000C9FD 2A4604 '*F.' mov ah,bh ; 0000CA00 8AE7 '..' ret ; 0000CA02 C3 '.' xca03: mov dx,0x3f2 ; 0000CA03 BAF203 '...' mov al,[0x3f] ; 0000CA06 A03F00 '.?.' and al,0xf ; 0000CA09 240F '$.' jz xca1f ; 0000CA0B 7412 't.' shr al,1 ; 0000CA0D D0E8 '..' test al,0x4 ; 0000CA0F A804 '..' jz xca15 ; 0000CA11 7402 't.' mov al,0x3 ; 0000CA13 B003 '..' xca15: mov ah,[0x3f] ; 0000CA15 8A263F00 '.&?.' mov cl,0x4 ; 0000CA19 B104 '..' shl ah,cl ; 0000CA1B D2E4 '..' or al,ah ; 0000CA1D 0AC4 0x0A,'.' xca1f: or al,0x8 ; 0000CA1F 0C08 '..' out dx,al ; 0000CA21 EE '.' call x919a ; 0000CA22 E875C7 '.u.' and byte [0x3e],0x0 ; 0000CA25 80263E0000 '.&>..' or al,0x4 ; 0000CA2A 0C04 '..' out dx,al ; 0000CA2C EE '.' mov cx,0xf424 ; 0000CA2D B924F4 '.$.' xca30: test byte [0x3e],0x80 ; 0000CA30 F6063E0080 '..>..' jnz xca41 ; 0000CA35 750A 'u',0x0A call x919a ; 0000CA37 E860C7 '.`.' loop xca30 ; 0000CA3A E2F4 '..' mov ah,0x80 ; 0000CA3C B480 '..' stc ; 0000CA3E F9 '.' jmp short xca4e ; 0000CA3F EB0D '.',0x0D xca41: and byte [0x3e],0x7f ; 0000CA41 80263E007F '.&>..' call xef6f ; 0000CA46 E82625 '.&%' call xefdb ; 0000CA49 E88F25 '..%' xor ah,ah ; 0000CA4C 32E4 '2.' xca4e: ret ; 0000CA4E C3 '.' xca4f: mov ax,0x10 ; 0000CA4F B81000 '...' mul word [bp+0xc] ; 0000CA52 F7660C '.f.' add ax,[bp+0x2] ; 0000CA55 034602 '.F.' adc dl,0x0 ; 0000CA58 80D200 '...' cli ; 0000CA5B FA '.' out 0xc,al ; 0000CA5C E60C '..' out 0x4,al ; 0000CA5E E604 '..' xchg al,ah ; 0000CA60 86C4 '..' out 0x4,al ; 0000CA62 E604 '..' xchg al,ah ; 0000CA64 86C4 '..' mov bx,ax ; 0000CA66 8BD8 '..' mov al,dl ; 0000CA68 8AC2 '..' out 0x81,al ; 0000CA6A E681 '..' mov ax,cx ; 0000CA6C 8BC1 '..' out 0x5,al ; 0000CA6E E605 '..' xchg al,ah ; 0000CA70 86C4 '..' out 0x5,al ; 0000CA72 E605 '..' xchg al,ah ; 0000CA74 86C4 '..' sti ; 0000CA76 FB '.' ret ; 0000CA77 C3 '.' xca78: mov bh,[bp+0x7] ; 0000CA78 8A7E07 '.~.' shl bh,0x2 ; 0000CA7B C0E702 '...' or bh,[bp+0x6] ; 0000CA7E 0A7E06 0x0A,'~.' call xd4c4 ; 0000CA81 E8400A '.@',0x0A mov bh,[bp+0x5] ; 0000CA84 8A7E05 '.~.' call xd4c4 ; 0000CA87 E83A0A '.:',0x0A ret ; 0000CA8A C3 '.' times 12 db 0xFF ; 0000CA8B - 0000CA96 xca97: push ax ; 0000CA97 50 mov al,0x20 ; 0000CA98 B020 out 0xa0,al ; 0000CA9A E6A0 out 0x20,al ; 0000CA9C E620 mov al,0xb ; 0000CA9E B00B '..' call xb544 ; 0000CAA0 E8A1EA '...' mov ah,al ; 0000CAA3 8AE0 '..' mov al,0xc ; 0000CAA5 B00C '..' call xb544 ; 0000CAA7 E89AEA '...' and al,ah ; 0000CAAA 22C4 '".' test al,0x40 ; 0000CAAC A840 '.@' jz xcab3 ; 0000CAAE 7403 call xcac1 ; 0000CAB0 E80E00 '...' xcab3: test al,0x20 ; 0000CAB3 A820 '. ' jz xcaba ; 0000CAB5 7403 't.' call xcabc ; 0000CAB7 E80200 '...' xcaba: pop ax ; 0000CABA 58 'X' iret ; 0000CABB CF '.' xcabc: push ax ; 0000CABC 50 'P' int 0x4a ; 0000CABD CD4A '.J' pop ax ; 0000CABF 58 'X' ret ; 0000CAC0 C3 '.' xcac1: push es ; 0000CAC1 06 '.' push bx ; 0000CAC2 53 'S' push ds ; 0000CAC3 1E '.' push ax ; 0000CAC4 50 'P' mov ax,0x40 ; 0000CAC5 B84000 '.@.' mov ds,ax ; 0000CAC8 8ED8 '..' test byte [0xa0],0x1 ; 0000CACA F606A00001 '.....' jz xcafc ; 0000CACF 742B 't+' sub word [0x9c],0x3d0 ; 0000CAD1 812E9C00D003 '......' jnc xcafc ; 0000CAD7 7323 's#' sub word [0x9e],byte +0x1 ; 0000CAD9 832E9E0001 '.....' jnc xcafc ; 0000CADE 731C 's.' pop ax ; 0000CAE0 58 'X' push ax ; 0000CAE1 50 'P' mov al,0xb ; 0000CAE2 B00B '..' and ah,0xbf ; 0000CAE4 80E4BF '...' call xb549 ; 0000CAE7 E85FEA '._.' and byte [0xa0],0xfe ; 0000CAEA 8026A000FE '.&...' mov ax,[0x9a] ; 0000CAEF A19A00 '...' mov es,ax ; 0000CAF2 8EC0 '..' mov bx,[0x98] ; 0000CAF4 8B1E9800 '....' or byte [es:bx],0x80 ; 0000CAF8 26800F80 '&...' xcafc: pop ax ; 0000CAFC 58 'X' pop ds ; 0000CAFD 1F '.' pop bx ; 0000CAFE 5B '[' pop es ; 0000CAFF 07 '.' ret ; 0000CB00 C3 '.' xcb01: push ax ; 0000CB01 50 'P' and ax,0xe0 ; 0000CB02 25E000 '%..' xchg ax,si ; 0000CB05 96 '.' add dx,byte +0x3 ; 0000CB06 83C203 '...' mov al,0x80 ; 0000CB09 B080 '..' out dx,al ; 0000CB0B EE '.' sub dx,byte +0x3 ; 0000CB0C 83EA03 '...' mov cl,0x4 ; 0000CB0F B104 '..' shr si,cl ; 0000CB11 D3EE '..' mov ax,[cs:si+0xcc2e] ; 0000CB13 2E8B842ECC '.....' out dx,al ; 0000CB18 EE '.' mov al,ah ; 0000CB19 8AC4 '..' inc dx ; 0000CB1B 42 'B' out dx,al ; 0000CB1C EE '.' inc dx ; 0000CB1D 42 'B' inc dx ; 0000CB1E 42 'B' pop ax ; 0000CB1F 58 'X' and al,0x1f ; 0000CB20 241F '$.' out dx,al ; 0000CB22 EE '.' dec dx ; 0000CB23 4A 'J' dec dx ; 0000CB24 4A 'J' xor al,al ; 0000CB25 32C0 '2.' out dx,al ; 0000CB27 EE '.' dec dx ; 0000CB28 4A 'J' xcb29: add dx,byte +0x5 ; 0000CB29 83C205 '...' in al,dx ; 0000CB2C EC '.' mov ah,al ; 0000CB2D 8AE0 '..' inc dx ; 0000CB2F 42 'B' in al,dx ; 0000CB30 EC '.' ret ; 0000CB31 C3 '.' xcb32: push ax ; 0000CB32 50 'P' push dx ; 0000CB33 52 'R' mov al,0x3 ; 0000CB34 B003 '..' call xcbbb ; 0000CB36 E88200 '...' jz xcb48 ; 0000CB39 740D 't',0x0D mov bh,0x10 ; 0000CB3B B710 '..' call x9e03 ; 0000CB3D E8C3D2 '...' jz xcb48 ; 0000CB40 7406 't.' dec dx ; 0000CB42 4A 'J' mov bh,0x20 ; 0000CB43 B720 '. ' call x9e03 ; 0000CB45 E8BBD2 '...' xcb48: pop dx ; 0000CB48 5A 'Z' pop cx ; 0000CB49 59 'Y' test ah,ah ; 0000CB4A 84E4 '..' jnz xcb5b ; 0000CB4C 750D 'u',0x0D push dx ; 0000CB4E 52 'R' add dx,byte +0x5 ; 0000CB4F 83C205 '...' in al,dx ; 0000CB52 EC '.' mov ah,al ; 0000CB53 8AE0 '..' mov al,cl ; 0000CB55 8AC1 '..' pop dx ; 0000CB57 5A 'Z' out dx,al ; 0000CB58 EE '.' jmp short xcb5d ; 0000CB59 EB02 '..' xcb5b: mov al,cl ; 0000CB5B 8AC1 '..' xcb5d: ret ; 0000CB5D C3 '.' xcb5e: mov al,0x1 ; 0000CB5E B001 '..' call xcbbb ; 0000CB60 E85800 '.X.' jz xcbaa ; 0000CB63 7445 'tE' mov si,0x71 ; 0000CB65 BE7100 '.q.' and byte [si],0x7f ; 0000CB68 80247F '.$.' dec dx ; 0000CB6B 4A 'J' mov bh,0x1 ; 0000CB6C B701 '..' xcb6e: mov cx,0x5a ; 0000CB6E B95A00 '.Z.' mov ah,0x80 ; 0000CB71 B480 '..' xcb73: push ax ; 0000CB73 50 'P' mov al,0x0 ; 0000CB74 B000 '..' out 0x43,al ; 0000CB76 E643 '.C' in al,0x40 ; 0000CB78 E440 '.@' xchg al,ah ; 0000CB7A 86C4 '..' in al,0x40 ; 0000CB7C E440 '.@' xchg al,ah ; 0000CB7E 86C4 '..' mov di,ax ; 0000CB80 8BF8 '..' pop ax ; 0000CB82 58 'X' xcb83: in al,dx ; 0000CB83 EC '.' test bh,al ; 0000CB84 84C7 '..' jnz xcbb1 ; 0000CB86 7529 'u)' test [si],ah ; 0000CB88 8424 '.$' jnz xcbaa ; 0000CB8A 751E 'u.' push ax ; 0000CB8C 50 'P' mov al,0x0 ; 0000CB8D B000 '..' out 0x43,al ; 0000CB8F E643 '.C' in al,0x40 ; 0000CB91 E440 '.@' xchg al,ah ; 0000CB93 86C4 '..' in al,0x40 ; 0000CB95 E440 '.@' xchg al,ah ; 0000CB97 86C4 '..' push di ; 0000CB99 57 'W' sub di,ax ; 0000CB9A 2BF8 '+.' cmp di,0x5d20 ; 0000CB9C 81FF205D '.. ]' pop di ; 0000CBA0 5F '_' pop ax ; 0000CBA1 58 'X' jc xcb83 ; 0000CBA2 72DF 'r.' loop xcb73 ; 0000CBA4 E2CD '..' dec bl ; 0000CBA6 FECB '..' jnz xcb6e ; 0000CBA8 75C4 'u.' xcbaa: or ah,0x80 ; 0000CBAA 80CC80 '...' xor al,al ; 0000CBAD 32C0 '2.' jmp short xcbba ; 0000CBAF EB09 '..' xcbb1: mov ah,al ; 0000CBB1 8AE0 '..' sub dx,byte +0x5 ; 0000CBB3 83EA05 '...' in al,dx ; 0000CBB6 EC '.' and ah,0x1e ; 0000CBB7 80E41E '...' xcbba: ret ; 0000CBBA C3 '.' xcbbb: add dx,byte +0x4 ; 0000CBBB 83C204 '...' out dx,al ; 0000CBBE EE '.' inc dx ; 0000CBBF 42 'B' inc dx ; 0000CBC0 42 'B' mov bh,0x20 ; 0000CBC1 B720 '. ' jmp x9e03 ; 0000CBC3 E93DD2 '.=.' add [bx+si],cl ; 0000CBC6 0008 '..' sbb [bx+si],ch ; 0000CBC8 1828 '.(' db 0x38 ; 0000CBCA 38 xcbcb: cmp al,0x01 ; 0000CBCB 3C01 cmc ; 0000CBCD F5 rcr ah,1 ; 0000CBCE D0DC '..' rcr ah,1 ; 0000CBD0 D0DC '..' or ah,ch ; 0000CBD2 0AE5 0x0A,'.' shl bl,1 ; 0000CBD4 D0E3 '..' shl bl,1 ; 0000CBD6 D0E3 '..' or ah,bl ; 0000CBD8 0AE3 0x0A,'.' xor bl,bl ; 0000CBDA 32DB '2.' xchg bh,bl ; 0000CBDC 86FB '..' mov si,0xcbc6 ; 0000CBDE BEC6CB '...' add si,bx ; 0000CBE1 03F3 '..' or ah,[cs:si] ; 0000CBE3 2E0A24 '.',0x0A,'$' mov bh,ah ; 0000CBE6 8AFC '..' add dx,byte +0x3 ; 0000CBE8 83C203 '...' mov al,0x80 ; 0000CBEB B080 '..' out dx,al ; 0000CBED EE '.' sub dx,byte +0x3 ; 0000CBEE 83EA03 '...' xor ch,ch ; 0000CBF1 32ED '2.' mov si,cx ; 0000CBF3 8BF1 '..' shl si,1 ; 0000CBF5 D1E6 '..' mov ax,[cs:si+0xcc2e] ; 0000CBF7 2E8B842ECC '.....' out dx,al ; 0000CBFC EE '.' xchg ah,al ; 0000CBFD 86E0 '..' inc dx ; 0000CBFF 42 'B' out dx,al ; 0000CC00 EE '.' inc dx ; 0000CC01 42 'B' inc dx ; 0000CC02 42 'B' mov al,bh ; 0000CC03 8AC7 '..' out dx,al ; 0000CC05 EE '.' dec dx ; 0000CC06 4A 'J' dec dx ; 0000CC07 4A 'J' xor al,al ; 0000CC08 32C0 '2.' out dx,al ; 0000CC0A EE '.' dec dx ; 0000CC0B 4A 'J' call xcb29 ; 0000CC0C E81AFF '...' ret ; 0000CC0F C3 '.' xcc10: cmp al,0x2 ; 0000CC10 3C02 '<.' jnc xcc2d ; 0000CC12 7319 's.' add dx,byte +0x4 ; 0000CC14 83C204 '...' or al,al ; 0000CC17 0AC0 0x0A,'.' jnz xcc21 ; 0000CC19 7506 'u.' in al,dx ; 0000CC1B EC '.' mov [bp+0xc],al ; 0000CC1C 88460C '.F.' jmp short xcc27 ; 0000CC1F EB06 '..' xcc21: and bl,0x1f ; 0000CC21 80E31F '...' mov al,bl ; 0000CC24 8AC3 '..' out dx,al ; 0000CC26 EE '.' xcc27: sub dx,byte +0x4 ; 0000CC27 83EA04 '...' call xcb29 ; 0000CC2A E8FCFE '...' xcc2d: ret ; 0000CC2D C3 '.' pop ss ; 0000CC2E 17 '.' add al,0x0 ; 0000CC2F 0400 '..' add ax,[bx+si+0xc001] ; 0000CC31 038001C0 '....' add [bx+si+0x0],ah ; 0000CC35 006000 '.`.' xor [bx+si],al ; 0000CC38 3000 '0.' sbb [bx+si],al ; 0000CC3A 1800 '..' or al,0x0 ; 0000CC3C 0C00 '..' push es ; 0000CC3E 06 '.' add [bp+di],al ; 0000CC3F 0003 '..' add [bp+si],al ; 0000CC41 0002 '..' add [bx+si],al ; 0000CC43 0000 '..' stosb ; 0000CC45 AA '.' push bp ; 0000CC46 55 'U' add [bp+si],ax ; 0000CC47 0102 '..' add al,0x8 ; 0000CC49 0408 '..' adc [bx+si],ah ; 0000CC4B 1020 '. ' inc ax ; 0000CC4D 40 '@' cmp bh,0x0 ; 0000CC4E 80FF00 '...' xcc51: mov al,0x90 ; 0000CC51 B090 '..' out 0x84,al ; 0000CC53 E684 '..' mov cx,0xe ; 0000CC55 B90E00 '...' mov si,0xcc44 ; 0000CC58 BE44CC '.D.' xcc5b: loop xcc5f ; 0000CC5B E202 '..' jmp short xcc83 ; 0000CC5D EB24 '.$' xcc5f: cs lodsb ; 0000CC5F 2EAC '..' mov ah,al ; 0000CC61 8AE0 '..' mov al,0x8f ; 0000CC63 B08F '..' call xb549 ; 0000CC65 E8E1E8 '...' mov al,0x8f ; 0000CC68 B08F '..' call xb544 ; 0000CC6A E8D7E8 '...' cmp ah,al ; 0000CC6D 3AE0 ':.' jz xcc5b ; 0000CC6F 74EA 't.' mov al,0x92 ; 0000CC71 B092 '..' out 0x84,al ; 0000CC73 E684 '..' mov dx,0x0 ; 0000CC75 BA0000 '...' mov bx,err102 ; 0000CC78 BB8CB6 '...' mov cx,err102_len ; 0000CC7B B91A00 '...' call xc745 ; 0000CC7E E8C4FA '...' xcc81: jmp short xcc81 ; 0000CC81 EBFE ; HANG THE MACHINE xcc83: mov al,0x91 ; 0000CC83 B091 '..' out 0x84,al ; 0000CC85 E684 '..' ret ; 0000CC87 C3 '.' xcc88: mov al,0x93 ; 0000CC88 B093 '..' out 0x84,al ; 0000CC8A E684 '..' mov al,0x4 ; 0000CC8C B004 '..' out 0x8,al ; 0000CC8E E608 '..' out 0xd0,al ; 0000CC90 E6D0 '..' out 0xd,al ; 0000CC92 E60D '.',0x0D out 0xda,al ; 0000CC94 E6DA '..' mov cx,0xe ; 0000CC96 B90E00 '...' mov si,0xcc44 ; 0000CC99 BE44CC '.D.' xcc9c: loop xcca1 ; 0000CC9C E203 '..' jmp xcd3a ; 0000CC9E E99900 '...' xcca1: cs lodsb ; 0000CCA1 2EAC '..' mov bx,cx ; 0000CCA3 8BD9 '..' mov dx,0x0 ; 0000CCA5 BA0000 '...' mov cx,0x8 ; 0000CCA8 B90800 '...' xccab: out dx,al ; 0000CCAB EE '.' out dx,al ; 0000CCAC EE '.' inc dx ; 0000CCAD 42 'B' loop xccab ; 0000CCAE E2FB '..' mov dx,0xc0 ; 0000CCB0 BAC000 '...' mov cx,0x8 ; 0000CCB3 B90800 '...' xccb6: out dx,al ; 0000CCB6 EE '.' out dx,al ; 0000CCB7 EE '.' inc dx ; 0000CCB8 42 'B' inc dx ; 0000CCB9 42 'B' loop xccb6 ; 0000CCBA E2FA '..' out 0x87,al ; 0000CCBC E687 '..' out 0x83,al ; 0000CCBE E683 '..' out 0x81,al ; 0000CCC0 E681 '..' out 0x82,al ; 0000CCC2 E682 '..' out 0x8b,al ; 0000CCC4 E68B '..' out 0x89,al ; 0000CCC6 E689 '..' out 0x8a,al ; 0000CCC8 E68A '..' mov ah,al ; 0000CCCA 8AE0 '..' in al,0x87 ; 0000CCCC E487 '..' cmp al,ah ; 0000CCCE 3AC4 ':.' jnz xcd2c ; 0000CCD0 755A 'uZ' jmp short xccd4 ; 0000CCD2 EB00 '..' xccd4: in al,0x83 ; 0000CCD4 E483 '..' cmp al,ah ; 0000CCD6 3AC4 ':.' jnz xcd2c ; 0000CCD8 7552 'uR' jmp short xccdc ; 0000CCDA EB00 '..' xccdc: in al,0x81 ; 0000CCDC E481 '..' cmp al,ah ; 0000CCDE 3AC4 ':.' jnz xcd2c ; 0000CCE0 754A 'uJ' jmp short xcce4 ; 0000CCE2 EB00 '..' xcce4: in al,0x82 ; 0000CCE4 E482 '..' cmp al,ah ; 0000CCE6 3AC4 ':.' jnz xcd2c ; 0000CCE8 7542 'uB' jmp short xccec ; 0000CCEA EB00 '..' xccec: in al,0x8b ; 0000CCEC E48B '..' cmp al,ah ; 0000CCEE 3AC4 ':.' jnz xcd2c ; 0000CCF0 753A 'u:' jmp short xccf4 ; 0000CCF2 EB00 '..' xccf4: in al,0x89 ; 0000CCF4 E489 '..' cmp al,ah ; 0000CCF6 3AC4 ':.' jnz xcd2c ; 0000CCF8 7532 'u2' jmp short xccfc ; 0000CCFA EB00 '..' xccfc: in al,0x8a ; 0000CCFC E48A '..' cmp al,ah ; 0000CCFE 3AC4 ':.' jnz xcd2c ; 0000CD00 752A 'u*' jmp short xcd04 ; 0000CD02 EB00 '..' xcd04: mov al,0x94 ; 0000CD04 B094 '..' out 0x84,al ; 0000CD06 E684 '..' mov dx,0x0 ; 0000CD08 BA0000 '...' mov cx,0x8 ; 0000CD0B B90800 '...' xcd0e: in al,dx ; 0000CD0E EC '.' in al,dx ; 0000CD0F EC '.' inc dx ; 0000CD10 42 'B' cmp al,ah ; 0000CD11 3AC4 ':.' jnz xcd2c ; 0000CD13 7517 'u.' loop xcd0e ; 0000CD15 E2F7 '..' mov dx,0xc0 ; 0000CD17 BAC000 '...' mov cx,0x8 ; 0000CD1A B90800 '...' xcd1d: in al,dx ; 0000CD1D EC '.' in al,dx ; 0000CD1E EC '.' inc dx ; 0000CD1F 42 'B' inc dx ; 0000CD20 42 'B' cmp al,ah ; 0000CD21 3AC4 ':.' jnz xcd2c ; 0000CD23 7507 'u.' loop xcd1d ; 0000CD25 E2F6 '..' mov cx,bx ; 0000CD27 8BCB '..' jmp xcc9c ; 0000CD29 E970FF '.p.' xcd2c: mov dx,0x0 ; 0000CD2C BA0000 '...' mov bx,err102 ; 0000CD2F BB8CB6 '...' mov cx,err102_len ; 0000CD32 B91A00 '...' call xc745 ; 0000CD35 E80DFA '.',0x0D,'.' xcd38: jmp short xcd38 ; 0000CD38 EBFE ; HANG THE MACHINE xcd3a: mov al,0x95 ; 0000CD3A B095 '..' out 0x84,al ; 0000CD3C E684 '..' out 0xd,al ; 0000CD3E E60D '.',0x0D out 0xda,al ; 0000CD40 E6DA '..' mov al,0x0 ; 0000CD42 B000 '..' out 0x8,al ; 0000CD44 E608 '..' out 0xd0,al ; 0000CD46 E6D0 '..' mov al,0x40 ; 0000CD48 B040 '.@' out 0xb,al ; 0000CD4A E60B '..' mov al,0x41 ; 0000CD4C B041 '.A' out 0xb,al ; 0000CD4E E60B '..' mov al,0x42 ; 0000CD50 B042 '.B' out 0xb,al ; 0000CD52 E60B '..' mov al,0x43 ; 0000CD54 B043 '.C' out 0xb,al ; 0000CD56 E60B '..' mov al,0xc0 ; 0000CD58 B0C0 '..' out 0xd6,al ; 0000CD5A E6D6 '..' mov al,0x41 ; 0000CD5C B041 '.A' out 0xd6,al ; 0000CD5E E6D6 '..' mov al,0x42 ; 0000CD60 B042 '.B' out 0xd6,al ; 0000CD62 E6D6 '..' mov al,0x43 ; 0000CD64 B043 '.C' out 0xd6,al ; 0000CD66 E6D6 '..' mov al,0x96 ; 0000CD68 B096 '..' out 0x84,al ; 0000CD6A E684 '..' ret ; 0000CD6C C3 '.' xcd6d: pushf ; 0000CD6D 9C '.' cli ; 0000CD6E FA '.' xcd6f: mov al,0x8a ; 0000CD6F B08A '..' call xb544 ; 0000CD71 E8D0E7 '...' test al,0x80 ; 0000CD74 A880 '..' jz xcd7a ; 0000CD76 7402 't.' jmp short xcd6f ; 0000CD78 EBF5 '..' xcd7a: mov al,0x80 ; 0000CD7A B080 '..' call xb544 ; 0000CD7C E8C5E7 '...' mov dh,al ; 0000CD7F 8AF0 '..' mov al,0x82 ; 0000CD81 B082 '..' call xb544 ; 0000CD83 E8BEE7 '...' mov cl,al ; 0000CD86 8AC8 '..' mov al,0x84 ; 0000CD88 B084 '..' call xb544 ; 0000CD8A E8B7E7 '...' mov ch,al ; 0000CD8D 8AE8 '..' popf ; 0000CD8F 9D '.' mov al,dh ; 0000CD90 8AC6 '..' call xce67 ; 0000CD92 E8D200 '...' cmp al,0x3b ; 0000CD95 3C3B '<;' ja xcdfe ; 0000CD97 7765 'we' xchg al,ah ; 0000CD99 86C4 '..' mov si,ax ; 0000CD9B 8BF0 '..' mov al,cl ; 0000CD9D 8AC1 '..' call xce67 ; 0000CD9F E8C500 '...' cmp al,0x3b ; 0000CDA2 3C3B '<;' ja xcdfe ; 0000CDA4 7758 'wX' mov bl,al ; 0000CDA6 8AD8 '..' mov al,ch ; 0000CDA8 8AC5 '..' call xce67 ; 0000CDAA E8BA00 '...' cmp al,0x17 ; 0000CDAD 3C17 '<.' ja xcdfe ; 0000CDAF 774D 'wM' mov bh,al ; 0000CDB1 8AF8 '..' mov ax,bx ; 0000CDB3 8BC3 '..' xor cx,cx ; 0000CDB5 33C9 '3.' xchg cl,ah ; 0000CDB7 86CC '..' push cx ; 0000CDB9 51 'Q' mov cx,0x2223 ; 0000CDBA B92322 '.#"' mul cx ; 0000CDBD F7E1 '..' xchg ax,bx ; 0000CDBF 93 '.' pop ax ; 0000CDC0 58 'X' push dx ; 0000CDC1 52 'R' mov cx,0x3c ; 0000CDC2 B93C00 '.<.' mul cx ; 0000CDC5 F7E1 '..' mov cx,0x2223 ; 0000CDC7 B92322 '.#"' mul cx ; 0000CDCA F7E1 '..' add bx,ax ; 0000CDCC 03D8 '..' pop cx ; 0000CDCE 59 'Y' adc dx,cx ; 0000CDCF 13D1 '..' mov ax,si ; 0000CDD1 8BC6 '..' mov cl,al ; 0000CDD3 8AC8 '..' mov al,ah ; 0000CDD5 8AC4 '..' mov ah,0x92 ; 0000CDD7 B492 '..' mul ah ; 0000CDD9 F6E4 '..' shl cx,1 ; 0000CDDB D1E1 '..' add cx,ax ; 0000CDDD 03C8 '..' xor ax,ax ; 0000CDDF 33C0 '3.' add cx,bx ; 0000CDE1 03CB '..' adc dx,ax ; 0000CDE3 13D0 '..' xchg dx,cx ; 0000CDE5 87D1 '..' add dx,byte +0x7 ; 0000CDE7 83C207 '...' adc cx,ax ; 0000CDEA 13C8 '..' shr cx,1 ; 0000CDEC D1E9 '..' rcr dx,1 ; 0000CDEE D1DA '..' shr cx,1 ; 0000CDF0 D1E9 '..' rcr dx,1 ; 0000CDF2 D1DA '..' shr cx,1 ; 0000CDF4 D1E9 '..' rcr dx,1 ; 0000CDF6 D1DA '..' mov ah,0x1 ; 0000CDF8 B401 '..' int 0x1a ; 0000CDFA CD1A '..' jmp short xce0c ; 0000CDFC EB0E '..' xcdfe: mov al,0x8e ; 0000CDFE B08E '..' call xb544 ; 0000CE00 E841E7 '.A.' or al,0x4 ; 0000CE03 0C04 '..' mov ah,al ; 0000CE05 8AE0 '..' mov al,0x8e ; 0000CE07 B08E '..' call xb549 ; 0000CE09 E83DE7 '.=.' xce0c: push es ; 0000CE0C 06 '.' mov ax,0x40 ; 0000CE0D B84000 '.@.' mov ds,ax ; 0000CE10 8ED8 '..' xor ax,ax ; 0000CE12 33C0 '3.' mov es,ax ; 0000CE14 8EC0 '..' mov bp,[es:0x20] ; 0000CE16 268B2E2000 '&.. .' mov word [es:0x20],0xce54 ; 0000CE1B 26C706200054CE '&.. .T.' and byte [0x6b],0xfe ; 0000CE22 80266B00FE '.&k..' in al,0x21 ; 0000CE27 E421 '.!' and al,0xfe ; 0000CE29 24FE '$.' out 0x21,al ; 0000CE2B E621 '.!' mov bx,0x3c ; 0000CE2D BB3C00 '.<.' call xc638 ; 0000CE30 E805F8 '...' ; CALL DELAY(BX) test byte [0x6b],0x1 ; 0000CE33 F6066B0001 '..k..' jnz xce48 ; 0000CE38 750E mov dx,0x0 ; 0000CE3A BA0000 '...' mov bx,err102 ; 0000CE3D BB8CB6 '...' mov cx,err102_len ; 0000CE40 B91A00 '...' call xc745 ; 0000CE43 E8FFF8 '...' xce46: jmp short xce46 ; 0000CE46 EBFE ; HANG THE MACHINE xce48: mov [es:0x20],bp ; 0000CE48 26892E2000 '&.. .' and byte [0x6b],0xfe ; 0000CE4D 80266B00FE '.&k..' pop es ; 0000CE52 07 '.' ret ; 0000CE53 C3 '.' push ds ; 0000CE54 1E '.' push ax ; 0000CE55 50 'P' mov ax,0x40 ; 0000CE56 B84000 '.@.' mov ds,ax ; 0000CE59 8ED8 '..' or byte [0x6b],0x1 ; 0000CE5B 800E6B0001 '..k..' mov al,0x20 ; 0000CE60 B020 '. ' out 0x20,al ; 0000CE62 E620 '. ' pop ax ; 0000CE64 58 'X' pop ds ; 0000CE65 1F '.' iret ; 0000CE66 CF '.' xce67: mov ah,al ; 0000CE67 8AE0 '..' shr ah,0x4 ; 0000CE69 C0EC04 '...' and al,0xf ; 0000CE6C 240F '$.' aad ; 0000CE6E D50A '.',0x0A ret ; 0000CE70 C3 '.' xce71: mov ax,0x40 ; 0000CE71 B84000 '.@.' mov ds,ax ; 0000CE74 8ED8 '..' mov bx,[0x10] ; 0000CE76 8B1E1000 '....' fninit ; 0000CE7A DBE3 '..' wait ; 0000CE7C 9B '.' fnstsw [0x10] ; 0000CE7D DD3E1000 '.>..' mov al,[0x10] ; 0000CE81 A01000 '...' or al,al ; 0000CE84 0AC0 0x0A,'.' jnz xce8b ; 0000CE86 7503 'u.' or bl,0x2 ; 0000CE88 80CB02 '...' xce8b: in al,0x60 ; 0000CE8B E460 '.`' mov al,0xc0 ; 0000CE8D B0C0 '..' out 0x64,al ; 0000CE8F E664 '.d' xce91: in al,0x64 ; 0000CE91 E464 '.d' test al,0x2 ; 0000CE93 A802 '..' jz xce99 ; 0000CE95 7402 't.' jmp short xce91 ; 0000CE97 EBF8 '..' xce99: in al,0x64 ; 0000CE99 E464 '.d' test al,0x1 ; 0000CE9B A801 '..' jz xce99 ; 0000CE9D 74FA 't.' in al,0x60 ; 0000CE9F E460 '.`' test al,0x4 ; 0000CEA1 A804 '..' jnz xceac ; 0000CEA3 7507 'u.' test bl,0x2 ; 0000CEA5 F6C302 '...' jnz 0xceca ; 0000CEA8 7520 'u ' jmp short xceb7 ; 0000CEAA EB0B '..' xceac: test bl,0x2 ; 0000CEAC F6C302 '...' jnz xceb7 ; 0000CEAF 7506 'u.' and bl,0xfd ; 0000CEB1 80E3FD '...' jmp short xced6 ; 0000CEB4 EB20 '. ' nop ; 0000CEB6 90 '.' xceb7: and bl,0xfd ; 0000CEB7 80E3FD '...' push bx ; 0000CEBA 53 'S' mov dx,0x0 ; 0000CEBB BA0000 '...' mov bx,0xb84f ; 0000CEBE BB4FB8 '.O.' mov cx,0x3d ; 0000CEC1 B93D00 '.=.' call xc745 ; 0000CEC4 E87EF8 '.~.' pop bx ; 0000CEC7 5B '[' jmp short xced6 ; 0000CEC8 EB0C '..' in al,0xa1 ; 0000CECA E4A1 '..' and al,0xdf ; 0000CECC 24DF '$.' out 0xa1,al ; 0000CECE E6A1 '..' in al,0x21 ; 0000CED0 E421 '.!' and al,0xfb ; 0000CED2 24FB '$.' out 0x21,al ; 0000CED4 E621 '.!' xced6: mov [0x10],bx ; 0000CED6 891E1000 '....' ret ; 0000CEDA C3 '.' xcedb: mov al,0x8b ; 0000CEDB B08B '..' out 0x84,al ; 0000CEDD E684 '..' call xd03e ; 0000CEDF E85C01 '.\.' jc xceff ; 0000CEE2 721B 'r.' cmp al,0x5 ; 0000CEE4 3C05 '<.' jnz xcef8 ; 0000CEE6 7510 'u.' mov dx,0x0 ; 0000CEE8 BA0000 '...' mov bx,0xb7a8 ; 0000CEEB BBA8B7 '...' mov cx,0x2f ; 0000CEEE B92F00 './.' call xc751 ; 0000CEF1 E85DF8 '.].' call xcfbf ; 0000CEF4 E8C800 '...' ret ; 0000CEF7 C3 '.' xcef8: cmp al,0x0 ; 0000CEF8 3C00 '<.' jz xcf02 ; 0000CEFA 7406 't.' call xcfbf ; 0000CEFC E8C000 '...' xceff: jmp xcf91 ; 0000CEFF E98F00 '...' xcf02: mov al,0x86 ; 0000CF02 B086 '..' out 0x84,al ; 0000CF04 E684 '..' mov al,0xff ; 0000CF06 B0FF '..' out 0x60,al ; 0000CF08 E660 '.`' mov cx,0x3e8 ; 0000CF0A B9E803 '...' xcf0d: push cx ; 0000CF0D 51 'Q' call xc62f ; 0000CF0E E81EF7 '...' pop cx ; 0000CF11 59 'Y' in al,0x64 ; 0000CF12 E464 '.d' test al,0x1 ; 0000CF14 A801 '..' jnz xcf1d ; 0000CF16 7505 'u.' loop xcf0d ; 0000CF18 E2F3 '..' jmp xcfa8 ; 0000CF1A E98B00 '...' xcf1d: in al,0x60 ; 0000CF1D E460 '.`' cmp al,0xfa ; 0000CF1F 3CFA '<.' jz xcf28 ; 0000CF21 7405 't.' loop xcf0d ; 0000CF23 E2E8 '..' jmp xcfa8 ; 0000CF25 E98000 '...' xcf28: mov al,0x87 ; 0000CF28 B087 '..' out 0x84,al ; 0000CF2A E684 '..' mov cx,0x1388 ; 0000CF2C B98813 '...' xcf2f: in al,0x64 ; 0000CF2F E464 '.d' test al,0x1 ; 0000CF31 A801 '..' jnz xcf3f ; 0000CF33 750A 'u',0x0A push cx ; 0000CF35 51 'Q' call xc62f ; 0000CF36 E8F6F6 '...' pop cx ; 0000CF39 59 'Y' loop xcf2f ; 0000CF3A E2F3 '..' jmp short xcfa8 ; 0000CF3C EB6A '.j' nop ; 0000CF3E 90 '.' xcf3f: mov al,0x88 ; 0000CF3F B088 '..' out 0x84,al ; 0000CF41 E684 '..' in al,0x60 ; 0000CF43 E460 '.`' cmp al,0xaa ; 0000CF45 3CAA '<.' jz xcf4c ; 0000CF47 7403 't.' jmp short xcf91 ; 0000CF49 EB46 '.F' nop ; 0000CF4B 90 '.' xcf4c: mov al,0x89 ; 0000CF4C B089 '..' out 0x84,al ; 0000CF4E E684 '..' mov al,0xae ; 0000CF50 B0AE '..' out 0x64,al ; 0000CF52 E664 '.d' mov cx,0xffff ; 0000CF54 B9FFFF '...' xcf57: in al,0x64 ; 0000CF57 E464 '.d' test al,0x2 ; 0000CF59 A802 '..' jz xcf62 ; 0000CF5B 7405 't.' loop xcf57 ; 0000CF5D E2F8 '..' jmp short xcf91 ; 0000CF5F EB30 '.0' nop ; 0000CF61 90 '.' xcf62: mov cx,0xa ; 0000CF62 B90A00 '.',0x0A,'.' xcf65: in al,0x64 ; 0000CF65 E464 '.d' test al,0x1 ; 0000CF67 A801 '..' jnz xcf74 ; 0000CF69 7509 'u.' push cx ; 0000CF6B 51 'Q' call xc62f ; 0000CF6C E8C0F6 '...' pop cx ; 0000CF6F 59 'Y' loop xcf65 ; 0000CF70 E2F3 '..' jmp short xcf8c ; 0000CF72 EB18 '..' xcf74: mov al,0x8a ; 0000CF74 B08A '..' out 0x84,al ; 0000CF76 E684 '..' in al,0x60 ; 0000CF78 E460 '.`' push ax ; 0000CF7A 50 'P' mov al,0xad ; 0000CF7B B0AD '..' out 0x64,al ; 0000CF7D E664 '.d' xcf7f: in al,0x64 ; 0000CF7F E464 '.d' test al,0x2 ; 0000CF81 A802 '..' jnz xcf7f ; 0000CF83 75FA 'u.' pop ax ; 0000CF85 58 'X' call xc7b8 ; 0000CF86 E82FF8 './.' jmp short xcf91 ; 0000CF89 EB06 '..' nop ; 0000CF8B 90 '.' xcf8c: mov al,0x8d ; 0000CF8C B08D '..' out 0x84,al ; 0000CF8E E684 '..' ret ; 0000CF90 C3 '.' xcf91: mov ax,0x40 ; 0000CF91 B84000 '.@.' mov ds,ax ; 0000CF94 8ED8 '..' or byte [0x12],0xff ; 0000CF96 800E1200FF '.....' mov dx,0x0 ; 0000CF9B BA0000 '...' mov bx,0xb7d7 ; 0000CF9E BBD7B7 '...' mov cx,0x15 ; 0000CFA1 B91500 '...' call xc745 ; 0000CFA4 E89EF7 '...' ret ; 0000CFA7 C3 '.' xcfa8: mov ax,0x40 ; 0000CFA8 B84000 '.@.' mov ds,ax ; 0000CFAB 8ED8 '..' or byte [0x12],0xff ; 0000CFAD 800E1200FF '.....' mov dx,0x0 ; 0000CFB2 BA0000 '...' mov bx,0xb7ec ; 0000CFB5 BBECB7 '...' mov cx,0x24 ; 0000CFB8 B92400 '.$.' call xc745 ; 0000CFBB E887F7 '...' ret ; 0000CFBE C3 '.' xcfbf: mov al,0xae ; 0000CFBF B0AE '..' out 0x64,al ; 0000CFC1 E664 '.d' mov cx,0xffff ; 0000CFC3 B9FFFF '...' xcfc6: in al,0x64 ; 0000CFC6 E464 '.d' test al,0x2 ; 0000CFC8 A802 '..' jz xcfdc ; 0000CFCA 7410 't.' loop xcfc6 ; 0000CFCC E2F8 '..' mov dx,0x0 ; 0000CFCE BA0000 '...' mov bx,0xb810 ; 0000CFD1 BB10B8 '...' ; BX -> '303-Keyboard Controller Error' mov cx,0x1f ; 0000CFD4 B91F00 '...' call xc745 ; 0000CFD7 E86BF7 '.k.' xcfda: jmp short xcfda ; 0000CFDA EBFE ; HANG THE MACHINE xcfdc: ret ; 0000CFDC C3 '.' xcfdd: mov al,0x80 ; 0000CFDD B080 '..' out 0x84,al ; 0000CFDF E684 '..' mov al,0xad ; 0000CFE1 B0AD '..' out 0x64,al ; 0000CFE3 E664 '.d' xcfe5: in al,0x64 ; 0000CFE5 E464 '.d' test al,0x2 ; 0000CFE7 A802 '..' jnz xcfe5 ; 0000CFE9 75FA 'u.' xcfeb: in al,0x64 ; 0000CFEB E464 '.d' test al,0x1 ; 0000CFED A801 '..' jz xcff5 ; 0000CFEF 7404 't.' in al,0x60 ; 0000CFF1 E460 '.`' jmp short xcfeb ; 0000CFF3 EBF6 '..' xcff5: mov al,0x81 ; 0000CFF5 B081 '..' out 0x84,al ; 0000CFF7 E684 '..' mov al,0xaa ; 0000CFF9 B0AA '..' out 0x64,al ; 0000CFFB E664 '.d' mov cx,0x2710 ; 0000CFFD B91027 '..',0x27 xd000: in al,0x64 ; 0000D000 E464 '.d' test al,0x1 ; 0000D002 A801 '..' jnz xd00f ; 0000D004 7509 'u.' push cx ; 0000D006 51 'Q' call xc62f ; 0000D007 E825F6 '.%.' pop cx ; 0000D00A 59 'Y' loop xd000 ; 0000D00B E2F3 '..' jmp short xd019 ; 0000D00D EB0A '.',0x0A xd00f: mov al,0x82 ; 0000D00F B082 '..' out 0x84,al ; 0000D011 E684 '..' in al,0x60 ; 0000D013 E460 '.`' cmp al,0x55 ; 0000D015 3C55 ' '303-Keyboard Controller Error' mov cx,0x1f ; 0000D023 B91F00 '...' call xc745 ; 0000D026 E81CF7 '...' xd029: jmp short xd029 ; 0000D029 EBFE ; HANG THE MACHINE xd02b: mov al,0x84 ; 0000D02B B084 '..' out 0x84,al ; 0000D02D E684 '..' mov al,0x60 ; 0000D02F B060 '.`' out 0x64,al ; 0000D031 E664 '.d' xd033: in al,0x64 ; 0000D033 E464 '.d' test al,0x2 ; 0000D035 A802 '..' jnz xd033 ; 0000D037 75FA 'u.' mov al,0x5d ; 0000D039 B05D '.]' out 0x60,al ; 0000D03B E660 '.`' ret ; 0000D03D C3 '.' xd03e: mov al,0xab ; 0000D03E B0AB '..' out 0x64,al ; 0000D040 E664 '.d' xd042: in al,0x64 ; 0000D042 E464 '.d' test al,0x2 ; 0000D044 A802 '..' jnz xd042 ; 0000D046 75FA 'u.' mov cx,0x64 ; 0000D048 B96400 '.d.' xd04b: in al,0x64 ; 0000D04B E464 '.d' test al,0x1 ; 0000D04D A801 '..' jnz xd05a ; 0000D04F 7509 'u.' push cx ; 0000D051 51 'Q' call xc62f ; 0000D052 E8DAF5 '...' pop cx ; 0000D055 59 'Y' loop xd04b ; 0000D056 E2F3 '..' jmp short xd063 ; 0000D058 EB09 '..' xd05a: mov al,0x8c ; 0000D05A B08C '..' out 0x84,al ; 0000D05C E684 '..' in al,0x60 ; 0000D05E E460 '.`' clc ; 0000D060 F8 '.' jmp short xd064 ; 0000D061 EB01 '..' xd063: stc ; 0000D063 F9 '.' xd064: ret ; 0000D064 C3 '.' std ; 0000D065 FD '.' cli ; 0000D066 FA '.' stc ; 0000D067 F9 '.' div ch ; 0000D068 F6F5 '..' jmp 0xd6da:0xe5e9 ; 0000D06A EAE9E5DAD6 '.....' aad 0xaa ; 0000D06F D5AA '..' test ax,0x9aa5 ; 0000D071 A9A59A '...' xchg ax,bp ; 0000D074 95 '.' xchg ax,si ; 0000D075 96 '.' push si ; 0000D076 56 'V' push bp ; 0000D077 55 'U' db 0xFE ; 0000D078 FE '.' xd079: push bp ; 0000D079 55 'U' mov di,0x0 ; 0000D07A BF0000 '...' mov bp,0xd083 ; 0000D07D BD83D0 '...' jmp x87e4 ; 0000D080 E961B7 '.a.' and bl,0xc0 ; 0000D083 80E3C0 '...' cmp bl,0x40 ; 0000D086 80FB40 '..@' jnz xd0c2 ; 0000D089 7537 'u7' mov di,0x1 ; 0000D08B BF0100 '...' mov bp,0xd094 ; 0000D08E BD94D0 '...' jmp x87e4 ; 0000D091 E950B7 '.P.' push es ; 0000D094 06 '.' mov ax,cs ; 0000D095 8CC8 '..' mov es,ax ; 0000D097 8EC0 '..' mov di,0xd065 ; 0000D099 BF65D0 '.e.' mov cx,0x14 ; 0000D09C B91400 '...' mov al,bl ; 0000D09F 8AC3 '..' repne scasb ; 0000D0A1 F2AE '..' jnz xd0a7 ; 0000D0A3 7502 'u.' jmp short xd0c1 ; 0000D0A5 EB1A '..' xd0a7: mov dx,0x0 ; 0000D0A7 BA0000 '...' mov bx,err207 ; 0000D0AA BBE3B6 '...' mov cx,err207_len ; 0000D0AD B92300 '.#.' call xc745 ; 0000D0B0 E892F6 '...' mov al,0xe ; 0000D0B3 B00E '..' call xb544 ; 0000D0B5 E88CE4 '...' or al,0x20 ; 0000D0B8 0C20 '. ' mov ah,0xe ; 0000D0BA B40E '..' xchg ah,al ; 0000D0BC 86E0 '..' call xb549 ; 0000D0BE E888E4 '...' xd0c1: pop es ; 0000D0C1 07 '.' xd0c2: pop bp ; 0000D0C2 5D ']' ret ; 0000D0C3 C3 '.' mov byte [bp+0x1],0x0 ; 0000D0C4 C6460100 '.F..' add dx,byte +0x6 ; 0000D0C8 83C206 '...' in al,dx ; 0000D0CB EC '.' sub dx,byte +0x6 ; 0000D0CC 83EA06 '...' test al,0x4 ; 0000D0CF A804 '..' jnz xd141 ; 0000D0D1 756E 'un' test al,0x2 ; 0000D0D3 A802 '..' jz xd145 ; 0000D0D5 746E 'tn' mov byte [bp+0x1],0x1 ; 0000D0D7 C6460101 '.F..' mov al,0x10 ; 0000D0DB B010 '..' out dx,al ; 0000D0DD EE '.' inc dx ; 0000D0DE 42 'B' in al,dx ; 0000D0DF EC '.' mov ah,al ; 0000D0E0 8AE0 '..' dec dx ; 0000D0E2 4A 'J' mov al,0x11 ; 0000D0E3 B011 '..' out dx,al ; 0000D0E5 EE '.' inc dx ; 0000D0E6 42 'B' in al,dx ; 0000D0E7 EC '.' dec dx ; 0000D0E8 4A 'J' sub ax,[0x4e] ; 0000D0E9 2B064E00 '+.N.' cmp ax,0x1005 ; 0000D0ED 3D0510 '=..' jl xd0f4 ; 0000D0F0 7C02 '|.' xor ax,ax ; 0000D0F2 33C0 '3.' xd0f4: xor bh,bh ; 0000D0F4 32FF '2.' mov bl,[0x49] ; 0000D0F6 8A1E4900 '..I.' sub al,[cs:bx+0xd15e] ; 0000D0FA 2E2A875ED1 '.*.^.' sbb ah,0x0 ; 0000D0FF 80DC00 '...' jns xd106 ; 0000D102 7902 'y.' xor ax,ax ; 0000D104 33C0 '3.' xd106: mov cl,[0x4a] ; 0000D106 8A0E4A00 '..J.' cmp bl,0x4 ; 0000D10A 80FB04 '...' jc xd146 ; 0000D10D 7237 'r7' cmp bl,0x7 ; 0000D10F 80FB07 '...' jz xd146 ; 0000D112 7432 't2' mov cl,0x28 ; 0000D114 B128 '.(' div cl ; 0000D116 F6F1 '..' mov cl,al ; 0000D118 8AC8 '..' shr cl,1 ; 0000D11A D0E9 '..' shr cl,1 ; 0000D11C D0E9 '..' mov [bp+0x3],cl ; 0000D11E 884E03 '.N.' mov [bp+0x2],ah ; 0000D121 886602 '.f.' shl al,1 ; 0000D124 D0E0 '..' mov [bp+0x5],al ; 0000D126 884605 '.F.' mov cl,0x3 ; 0000D129 B103 '..' xchg ah,al ; 0000D12B 86E0 '..' xor ah,ah ; 0000D12D 32E4 '2.' shl ax,cl ; 0000D12F D3E0 '..' mov [bp+0x6],ax ; 0000D131 894606 '.F.' cmp byte [0x49],0x6 ; 0000D134 803E490006 '.>I..' jnz xd141 ; 0000D139 7506 'u.' shl byte [bp+0x2],1 ; 0000D13B D06602 '.f.' shl word [bp+0x6],1 ; 0000D13E D16606 '.f.' xd141: add dx,byte +0x7 ; 0000D141 83C207 '...' out dx,al ; 0000D144 EE '.' xd145: ret ; 0000D145 C3 '.' xd146: div cl ; 0000D146 F6F1 '..' mov [bp+0x3],al ; 0000D148 884603 '.F.' mov [bp+0x2],ah ; 0000D14B 886602 '.f.' mov cl,0x3 ; 0000D14E B103 '..' mov bl,ah ; 0000D150 8ADC '..' shl bx,cl ; 0000D152 D3E3 '..' mov [bp+0x6],bx ; 0000D154 895E06 '.^.' shl al,cl ; 0000D157 D2E0 '..' mov [bp+0x5],al ; 0000D159 884605 '.F.' jmp short xd141 ; 0000D15C EBE3 '..' add ax,[bp+di] ; 0000D15E 0303 '..' add ax,0x305 ; 0000D160 050503 '...' add ax,[bp+di] ; 0000D163 0303 '..' add al,0x8a ; 0000D165 048A '..' bound ax,[ds:bx+si] ; 0000D167 3E6200 '>b.' cmp al,0x7 ; 0000D16A 3C07 '<.' jz xd1ce ; 0000D16C 7460 't`' cmp al,0x8 ; 0000D16E 3C08 '<.' db 'tF<',0x0A,'t_<',0x0D,'tK' mov cx,0x1 ; 0000D17A B90100 '...' mov ah,0xa ; 0000D17D B40A '.',0x0A call x83db ; 0000D17F E859B2 '.Y.' mov ah,0x3 ; 0000D182 B403 '..' call x83db ; 0000D184 E854B2 '.T.' inc dl ; 0000D187 FEC2 '..' cmp dl,[0x4a] ; 0000D189 3A164A00 ':.J.' jnz xd1ab ; 0000D18D 751C 'u.' xor dl,dl ; 0000D18F 32D2 '2.' inc dh ; 0000D191 FEC6 '..' cmp dh,0x19 ; 0000D193 80FE19 '...' jnz xd1ab ; 0000D196 7513 'u.' dec dh ; 0000D198 FECE '..' mov ah,0x2 ; 0000D19A B402 '..' call x83db ; 0000D19C E83CB2 '.<.' mov ah,0x8 ; 0000D19F B408 '..' call x83db ; 0000D1A1 E837B2 '.7.' push bx ; 0000D1A4 53 'S' mov bh,ah ; 0000D1A5 8AFC '..' call xd1ea ; 0000D1A7 E84000 '.@.' pop bx ; 0000D1AA 5B '[' xd1ab: mov ah,0x2 ; 0000D1AB B402 '..' call x83db ; 0000D1AD E82BB2 '.+.' xd1b0: mov ah,[0x49] ; 0000D1B0 8A264900 '.&I.' mov [bp+0x1],ah ; 0000D1B4 886601 '.f.' ret ; 0000D1B7 C3 '.' mov ah,0x3 ; 0000D1B8 B403 '..' call x83db ; 0000D1BA E81EB2 '...' or dl,dl ; 0000D1BD 0AD2 0x0A,'.' jz xd1b0 ; 0000D1BF 74EF 't.' dec dl ; 0000D1C1 FECA '..' jmp short xd1ab ; 0000D1C3 EBE6 '..' mov ah,0x3 ; 0000D1C5 B403 '..' call x83db ; 0000D1C7 E811B2 '...' xor dl,dl ; 0000D1CA 32D2 '2.' jmp short xd1ab ; 0000D1CC EBDD '..' xd1ce: mov bx,0x1f4 ; 0000D1CE BBF401 '...' call xc7db ; 0000D1D1 E807F6 '...' ret ; 0000D1D4 C3 '.' mov ah,0x3 ; 0000D1D5 B403 '..' call x83db ; 0000D1D7 E801B2 '...' cmp dh,0x18 ; 0000D1DA 80FE18 '...' jz xd1e3 ; 0000D1DD 7404 't.' inc dh ; 0000D1DF FEC6 '..' jmp short xd1ab ; 0000D1E1 EBC8 '..' xd1e3: mov ah,0x8 ; 0000D1E3 B408 '..' call x83db ; 0000D1E5 E8F3B1 '...' mov bh,ah ; 0000D1E8 8AFC '..' xd1ea: push cx ; 0000D1EA 51 'Q' push dx ; 0000D1EB 52 'R' cmp byte [0x49],0x7 ; 0000D1EC 803E490007 '.>I..' jz xd1fc ; 0000D1F1 7409 't.' cmp byte [0x49],0x3 ; 0000D1F3 803E490003 '.>I..' jna xd1fc ; 0000D1F8 7602 'v.' mov bh,0x0 ; 0000D1FA B700 '..' xd1fc: mov ax,0x601 ; 0000D1FC B80106 '...' xor cx,cx ; 0000D1FF 33C9 '3.' mov dh,0x18 ; 0000D201 B618 '..' mov dl,[0x4a] ; 0000D203 8A164A00 '..J.' dec dx ; 0000D207 4A 'J' call x83db ; 0000D208 E8D0B1 '...' pop dx ; 0000D20B 5A 'Z' pop cx ; 0000D20C 59 'Y' ret ; 0000D20D C3 '.' db 0x1c,0x1d,'*578F' ; 0000D20E 1C1D2A35373846 xd215: or ah,ah ; 0000D215 0AE4 jz xd21c ; 0000D217 7403 jns xd220 ; 0000D219 7905 stc ; 0000D21B F9 '.' xd21c: ret ; 0000D21C C3 '.' xd21d: jmp xd335 ; 0000D21D E91501 '...' xd220: cmp ah,0x39 ; 0000D220 80FC39 '..9' jg xd21c ; 0000D223 7FF7 '..' mov bl,ah ; 0000D225 8ADC '..' xor bh,bh ; 0000D227 32FF '2.' mov al,[cs:bx+0x9b1f] ; 0000D229 2E8A871F9B '.....' test byte [0x17],0x8 ; 0000D22E F606170008 '.....' jnz xd21d ; 0000D233 75E8 'u.' test byte [0x17],0x4 ; 0000D235 F606170004 '.....' jnz xd252 ; 0000D23A 7516 'u.' and al,0x7f ; 0000D23C 247F '$.' test byte [0x17],0x3 ; 0000D23E F606170003 '.....' jz xd248 ; 0000D243 7403 't.' jmp xd2f7 ; 0000D245 E9AF00 '...' xd248: test byte [0x17],0x40 ; 0000D248 F606170040 '....@' jz xd2b2 ; 0000D24D 7463 'tc' jmp xd2eb ; 0000D24F E99900 '...' xd252: cmp ah,0xf ; 0000D252 80FC0F '...' jnz xd25c ; 0000D255 7505 'u.' mov ax,0x9400 ; 0000D257 B80094 '...' jmp short xd2d2 ; 0000D25A EB76 '.v' xd25c: cmp ah,0x35 ; 0000D25C 80FC35 '..5' jnz xd272 ; 0000D25F 7511 'u.' test byte [0x96],0x2 ; 0000D261 F606960002 '.....' jz xd272 ; 0000D266 740A 't',0x0A and byte [0x96],0xfd ; 0000D268 80269600FD '.&...' mov ax,0x9500 ; 0000D26D B80095 '...' jmp short xd2d2 ; 0000D270 EB60 '.`' xd272: or al,al ; 0000D272 0AC0 0x0A,'.' js xd2d5 ; 0000D274 785F 'x_' cmp ah,0x3 ; 0000D276 80FC03 '...' jz xd2d9 ; 0000D279 745E 't^' cmp ah,0xe ; 0000D27B 80FC0E '...' jz xd2dd ; 0000D27E 745D 't]' cmp ah,0x1c ; 0000D280 80FC1C '...' jz xd2e1 ; 0000D283 745C 't\' cmp ah,0x37 ; 0000D285 80FC37 '..7' jnz xd2a4 ; 0000D288 751A test byte [0x96],0x10 ; 0000D28A F606960010 '.....' jz xd2d7 ; 0000D28F 7446 'tF' test byte [0x96],0x2 ; 0000D291 F606960002 '.....' jnz xd29d ; 0000D296 7505 'u.' mov ax,0x9600 ; 0000D298 B80096 '...' jmp short xd2d2 ; 0000D29B EB35 '.5' xd29d: and byte [0x96],0xfd ; 0000D29D 80269600FD '.&...' jmp short xd2d7 ; 0000D2A2 EB33 '.3' xd2a4: cmp al,0x20 ; 0000D2A4 3C20 jng xd2b2 ; 0000D2A6 7E0A cmp al,0x61 ; 0000D2A8 3C61 jl xd2e1 ; 0000D2AA 7C35 cmp al,0x7b ; 0000D2AC 3C7B jnl xd2e1 ; 0000D2AE 7D31 and al,0x1f ; 0000D2B0 241F '$.' xd2b2: test byte [0x96],0x2 ; 0000D2B2 F606960002 '.....' jz xd2d2 ; 0000D2B7 7419 't.' push ax ; 0000D2B9 50 'P' mov cx,cs ; 0000D2BA 8CC9 '..' mov es,cx ; 0000D2BC 8EC1 '..' mov di,0xd20e ; 0000D2BE BF0ED2 '...' mov cx,0x7 ; 0000D2C1 B90700 '...' mov al,ah ; 0000D2C4 8AC4 '..' repne scasb ; 0000D2C6 F2AE '..' pop ax ; 0000D2C8 58 'X' jnz xd2d2 ; 0000D2C9 7507 'u.' and byte [0x96],0xfd ; 0000D2CB 80269600FD '.&...' mov ah,0xe0 ; 0000D2D0 B4E0 '..' xd2d2: call xd3b4 ; 0000D2D2 E8DF00 '...' xd2d5: stc ; 0000D2D5 F9 '.' ret ; 0000D2D6 C3 '.' xd2d7: mov ah,0x72 ; 0000D2D7 B472 '.r' xd2d9: xor al,al ; 0000D2D9 32C0 '2.' jmp short xd2b2 ; 0000D2DB EBD5 '..' xd2dd: mov al,0x7f ; 0000D2DD B07F '..' jmp short xd2b2 ; 0000D2DF EBD1 '..' xd2e1: mov si,0x9baa ; 0000D2E1 BEAA9B '...' call x9b08 ; 0000D2E4 E821C8 '.!.' jc xd2b2 ; 0000D2E7 72C9 'r.' jmp short xd2d5 ; 0000D2E9 EBEA '..' xd2eb: cmp al,0x61 ; 0000D2EB 3C61 'r.4.' jnz xd742 ; 0000D731 750F 'u.' mov ax,[0x7c] ; 0000D733 A17C00 '.|.' mov [0x86],ax ; 0000D736 A38600 '...' mov ax,[0x7e] ; 0000D739 A17E00 '.~.' mov [0x88],ax ; 0000D73C A38800 '...' jmp xd940 ; 0000D73F E9FE01 '...' xd742: cld ; 0000D742 FC '.' push si ; 0000D743 56 'V' push di ; 0000D744 57 'W' push ds ; 0000D745 1E '.' push es ; 0000D746 06 '.' mov bx,ds ; 0000D747 8CDB '..' mov es,bx ; 0000D749 8EC3 '..' mov bx,0x30 ; 0000D74B BB3000 '.0.' mov ds,bx ; 0000D74E 8EDB '..' mov si,0x830c ; 0000D750 BE0C83 '...' mov di,0x93 ; 0000D753 BF9300 '...' mov cx,0xb ; 0000D756 B90B00 '...' rep movsw ; 0000D759 F3A5 '..' pop es ; 0000D75B 07 '.' pop ds ; 0000D75C 1F '.' pop di ; 0000D75D 5F '_' pop si ; 0000D75E 5E '^' mov al,0x63 ; 0000D75F B063 '.c' out 0x84,al ; 0000D761 E684 '..' call x81e6 ; 0000D763 E880AA '...' jnc xd76f ; 0000D766 7307 's.' mov al,0x64 ; 0000D768 B064 '.d' out 0x84,al ; 0000D76A E684 '..' jmp short xd77d ; 0000D76C EB0F '..' nop ; 0000D76E 90 '.' xd76f: cmp word [0x76],0x80 ; 0000D76F 813E76008000 '.>v...' jnc xd78d ; 0000D775 7316 's.' or word [0x64],0x80 ; 0000D777 810E64008000 '..d...' xd77d: mov bx,[0x7c] ; 0000D77D 8B1E7C00 '..|.' mov [0x76],bx ; 0000D781 891E7600 '..v.' mov bx,[0x7e] ; 0000D785 8B1E7E00 '..~.' mov [0x78],bx ; 0000D789 891E7800 '..x.' xd78d: call x84a5 ; 0000D78D E815AD '...' ; ; Call this xdb33 wrapper to test 128Kb of memory at %FE0000 ; call x8509 ; 0000D790 E876AD '.v.' or ax,ax ; 0000D793 0BC0 '..' jz xd79a ; 0000D795 7403 't.' jmp xd988 ; 0000D797 E9EE01 '...' xd79a: mov bx,[0x76] ; 0000D79A 8B1E7600 '..v.' ; ; (BX) contains 0x280 (640) ; sub bx,0x80 ; 0000D79E 81EB8000 '....' ; ; (BX) is reduced by 128 for a total of 512 ; mov [0x7a],bx ; 0000D7A2 891E7A00 '..z.' ; ; (BX) again contains 0x280 (640), again is reduced by 128, and again stored elsewhere ; mov bx,[0x7c] ; 0000D7A6 8B1E7C00 '..|.' sub bx,0x80 ; 0000D7AA 81EB8000 '....' mov [0x80],bx ; 0000D7AE 891E8000 '....' mov al,[0x90] ; 0000D7B2 A09000 '...' ; ; (AL) contains 0x09 ; mov [0x8f],al ; 0000D7B5 A28F00 '...' mov ah,0x2 ; 0000D7B8 B402 '..' mov byte [0x92],0x1 ; 0000D7BA C606920001 '.....' call xdabb ; 0000D7BF E8F902 '...' mov bx,[0x8a] ; 0000D7C2 8B1E8A00 '....' add bx,0x80 ; 0000D7C6 81C38000 '....' mov [0x86],bx ; 0000D7CA 891E8600 '....' or ax,ax ; 0000D7CE 0BC0 '..' jz xd7e4 ; 0000D7D0 7412 't.' or word [0x64],0x1 ; 0000D7D2 810E64000100 '..d...' mov [0x66],ch ; 0000D7D8 882E6600 '..f.' mov [0x67],dx ; 0000D7DC 89166700 '..g.' mov [0x69],cl ; 0000D7E0 880E6900 '..i.' xd7e4: mov al,0x65 ; 0000D7E4 B065 '.e' out 0x84,al ; 0000D7E6 E684 '..' ; ; (BX) becomes 0x400 (the amount of extended memory in Kb) ; mov bx,[0x78] ; 0000D7E8 8B1E7800 '..x.' mov [0x7a],bx ; 0000D7EC 891E7A00 '..z.' ; ; (BX) becomes 0x3B80 (not sure where this number comes from) ; mov bx,[0x7e] ; 0000D7F0 8B1E7E00 '..~.' mov [0x80],bx ; 0000D7F4 891E8000 '....' mov bp,[0x86] ; 0000D7F8 8B2E8600 '....' add bp,0x80 ; 0000D7FC 81C58000 '....' ; ; (BP) is now 0x280 + 0x80, for a total of 0x300 ; ; (AL) becomes 0x9F ; mov al,[0x91] ; 0000D800 A09100 '...' mov [0x8f],al ; 0000D803 A28F00 '...' mov ah,0x10 ; 0000D806 B410 '..' mov byte [0x92],0x1 ; 0000D808 C606920001 '.....' call xdabb ; 0000D80D E8AB02 '...' mov bx,[0x8a] ; 0000D810 8B1E8A00 '....' mov [0x88],bx ; 0000D814 891E8800 '....' or ax,ax ; 0000D818 0BC0 '..' jz xd82e ; 0000D81A 7412 't.' or word [0x64],0x2 ; 0000D81C 810E64000200 '..d...' mov [0x6e],ch ; 0000D822 882E6E00 '..n.' mov [0x6f],dx ; 0000D826 89166F00 '..o.' mov [0x71],cl ; 0000D82A 880E7100 '..q.' xd82e: mov ax,[0x88] ; 0000D82E A18800 '...' add ax,0x400 ; 0000D831 050004 '...' mov bx,0x3f80 ; 0000D834 BB803F '..?' sub bx,[0x8d] ; 0000D837 2B1E8D00 '+...' cmp ax,bx ; 0000D83B 3BC3 ';.' jnc xd878 ; 0000D83D 7339 's9' mov bp,[0x88] ; 0000D83F 8B2E8800 '....' add bp,[0x86] ; 0000D843 032E8600 '....' add bp,0x80 ; 0000D847 81C58000 '....' mov ax,[0x8d] ; 0000D84B A18D00 '...' mov [0x82],ax ; 0000D84E A38200 '...' mov byte [0x8f],0xff ; 0000D851 C6068F00FF '.....' mov ah,[0x8c] ; 0000D856 8A268C00 '.&..' mov byte [0x92],0x1 ; 0000D85A C606920001 '.....' call xdb33 ; 0000D85F E8D102 '...' or ax,ax ; 0000D862 0BC0 '..' jz xd878 ; 0000D864 7412 't.' or word [0x64],0x2 ; 0000D866 810E64000200 '..d...' mov [0x6e],ch ; 0000D86C 882E6E00 '..n.' mov [0x6f],dx ; 0000D870 89166F00 '..o.' mov [0x71],cl ; 0000D874 880E7100 '..q.' ; ; We now restart the memory verification process, by redisplaying "00128 KB OK", ; and then calling xdbfb for each region of RAM identified earlier. As before, (AH) ; contains the 64Kb block number of the region to verify. ; xd878: push es ; 0000D878 06 '.' mov ax,0x40 ; 0000D879 B84000 '.@.' mov es,ax ; 0000D87C 8EC0 '..' mov bp,0x80 ; 0000D87E BD8000 '...' mov ax,bp ; 0000D881 8BC5 '..' call x80a5 ; 0000D883 E81FA8 '...' pop es ; 0000D886 07 '.' mov bp,0x80 ; 0000D887 BD8000 '...' mov byte [0x92],0x1 ; 0000D88A C606920001 '.....' mov al,0xfe ; 0000D88F B0FE '..' mov ah,0x0 ; 0000D891 B400 '..' call xdbfb ; 0000D893 E86503 '.e.' test ax,0x2 ; 0000D896 A90200 '...' jz xd8ad ; 0000D899 7412 't.' or word [0x64],0x44 ; 0000D89B 810E64004400 '..d.D.' mov [0x6a],ch ; 0000D8A1 882E6A00 '..j.' mov [0x6b],dx ; 0000D8A5 89166B00 '..k.' mov [0x6d],cl ; 0000D8A9 880E6D00 '..m.' xd8ad: mov ax,[0x86] ; 0000D8AD A18600 '...' mov bx,0x400 ; 0000D8B0 BB0004 '...' mul bx ; 0000D8B3 F7E3 '..' mov al,0x2 ; 0000D8B5 B002 '..' cmp al,dl ; 0000D8B7 3AC2 ':.' jz xd8dc ; 0000D8B9 7421 't!' mov ah,dl ; 0000D8BB 8AE2 '..' mov byte [0x92],0x1 ; 0000D8BD C606920001 '.....' call xdbfb ; 0000D8C2 E83603 '.6.' test ax,0x2 ; 0000D8C5 A90200 '...' jz xd8dc ; 0000D8C8 7412 't.' or word [0x64],0x4 ; 0000D8CA 810E64000400 '..d...' mov [0x6a],ch ; 0000D8D0 882E6A00 '..j.' mov [0x6b],dx ; 0000D8D4 89166B00 '..k.' mov [0x6d],cl ; 0000D8D8 880E6D00 '..m.' xd8dc: mov ax,[0x88] ; 0000D8DC A18800 '...' or ax,ax ; 0000D8DF 0BC0 '..' jz xd90b ; 0000D8E1 7428 't(' add ax,0x400 ; 0000D8E3 050004 '...' mul bx ; 0000D8E6 F7E3 '..' mov al,0x10 ; 0000D8E8 B010 '..' mov ah,dl ; 0000D8EA 8AE2 '..' mov byte [0x92],0x1 ; 0000D8EC C606920001 '.....' call xdbfb ; 0000D8F1 E80703 '...' test ax,0x2 ; 0000D8F4 A90200 '...' jz xd90b ; 0000D8F7 7412 't.' or word [0x64],0x8 ; 0000D8F9 810E64000800 '..d...' mov [0x72],ch ; 0000D8FF 882E7200 '..r.' mov [0x73],dx ; 0000D903 89167300 '..s.' mov [0x75],cl ; 0000D907 880E7500 '..u.' xd90b: mov ax,[0x88] ; 0000D90B A18800 '...' add ax,0x400 ; 0000D90E 050004 '...' mov bx,0x3f80 ; 0000D911 BB803F '..?' sub bx,[0x8d] ; 0000D914 2B1E8D00 '+...' cmp ax,bx ; 0000D918 3BC3 ';.' jnc xd940 ; 0000D91A 7324 's$' mov al,[0x8c] ; 0000D91C A08C00 '...' mov ah,0xfe ; 0000D91F B4FE '..' mov byte [0x92],0x1 ; 0000D921 C606920001 '.....' call xdbfb ; 0000D926 E8D202 '...' test ax,0x2 ; 0000D929 A90200 '...' jz xd940 ; 0000D92C 7412 't.' or word [0x64],0x8 ; 0000D92E 810E64000800 '..d...' mov [0x72],ch ; 0000D934 882E7200 '..r.' mov [0x73],dx ; 0000D938 89167300 '..s.' mov [0x75],cl ; 0000D93C 880E7500 '..u.' xd940: mov al,0x66 ; 0000D940 B066 '.f' out 0x84,al ; 0000D942 E684 '..' mov bx,[0x86] ; 0000D944 8B1E8600 '....' ; ; Store the total amount of conventional RAM (in Kb) into the ROM BIOS Data Area at 0x40:0x13 ; mov [es:0x13],bx ; 0000D948 26891E1300 '&....' mov bx,[0x88] ; 0000D94D 8B1E8800 '....' mov al,0xb0 ; 0000D951 B0B0 '..' mov ah,bl ; 0000D953 8AE3 '..' call xb549 ; 0000D955 E8F1DB '...' mov al,0xb1 ; 0000D958 B0B1 '..' mov ah,bh ; 0000D95A 8AE7 '..' call xb549 ; 0000D95C E8EADB '...' mov cl,0x0 ; 0000D95F B100 '..' test word [0x64],0x80 ; 0000D961 F70664008000 '..d...' jz xd96b ; 0000D967 7402 't.' mov cl,0x1 ; 0000D969 B101 '..' xd96b: call x8214 ; 0000D96B E8A6A8 '...' mov al,0x67 ; 0000D96E B067 '.g' out 0x84,al ; 0000D970 E684 '..' cmp word [0x86],0x280 ; 0000D972 813E86008002 '.>....' jc xd988 ; 0000D978 720E 'r.' mov al,0xb3 ; 0000D97A B0B3 '..' call xb544 ; 0000D97C E8C5DB '...' or al,0x80 ; 0000D97F 0C80 '..' mov ah,al ; 0000D981 8AE0 '..' mov al,0xb3 ; 0000D983 B0B3 '..' call xb549 ; 0000D985 E8C1DB '...' xd988: mov ah,0x2 ; 0000D988 B402 '..' test word [0x64],0xffff ; 0000D98A F7066400FFFF '..d...' jz xd994 ; 0000D990 7402 't.' mov ah,0x3 ; 0000D992 B403 '..' xd994: mov al,0x8f ; 0000D994 B08F '..' call xb549 ; 0000D996 E8B0DB '...' mov al,0x68 ; 0000D999 B068 '.h' out 0x84,al ; 0000D99B E684 '..' ; ; Set SYS_FLAG (0x04) in the 8042 CMD byte, and then pulse OUTPORT to return to real-mode ; in al,0x60 ; 0000D99D E460 '.`' mov al,0x20 ; 0000D99F B020 '. ' out 0x64,al ; 0000D9A1 E664 '.d' call xec2e_wait_8042_ready ; 0000D9A3 E88812 '...' xd9a6: in al,0x64 ; 0000D9A6 E464 '.d' test al,0x1 ; 0000D9A8 A801 '..' jz xd9a6 ; 0000D9AA 74FA 't.' in al,0x60 ; 0000D9AC E460 '.`' mov ah,al ; 0000D9AE 8AE0 '..' or ah,0x4 ; 0000D9B0 80CC04 '...' mov al,0x60 ; 0000D9B3 B060 '.`' out 0x64,al ; 0000D9B5 E664 '.d' push ax ; 0000D9B7 50 'P' call xec2e_wait_8042_ready ; 0000D9B8 E87312 '.s.' pop ax ; 0000D9BB 58 'X' mov al,ah ; 0000D9BC 8AC4 '..' out 0x60,al ; 0000D9BE E660 '.`' call xec2e_wait_8042_ready ; 0000D9C0 E86B12 '.k.' mov al,0xfe ; 0000D9C3 B0FE '..' out 0x64,al ; 0000D9C5 E664 '.d' ; ; The following hang is temporary; the 8042 should reset the processor, returning us to real-mode ; xd9c7: hlt ; 0000D9C7 F4 '.' jmp short xd9c7 ; 0000D9C8 EBFD '..' mov al,0x69 ; 0000D9CA B069 '.i' out 0x84,al ; 0000D9CC E684 '..' mov bx,0x0 ; 0000D9CE BB0000 '...' jmp short xd9db ; 0000D9D1 EB08 '..' nop ; 0000D9D3 90 '.' ; ; Code for CMOS SHUTDOWN byte 0x03 ; xd9d4: mov al,0x6a ; 0000D9D4 B06A '.j' out 0x84,al ; 0000D9D6 E684 '..' mov bx,0x1 ; 0000D9D8 BB0100 '...' xd9db: mov ax,0x40 ; 0000D9DB B84000 '.@.' mov ds,ax ; 0000D9DE 8ED8 '..' mov ss,[0x69] ; 0000D9E0 8E166900 '..i.' mov sp,[0x67] ; 0000D9E4 8B266700 '.&g.' push bx ; 0000D9E8 53 'S' call print_crlf ; 0000D9E9 E89AED '...' pop bx ; 0000D9EC 5B '[' or bx,bx ; 0000D9ED 0BDB '..' jnz xd9f4 ; 0000D9EF 7503 'u.' jmp xda8c ; 0000D9F1 E99800 '...' ; ; At checkpoint 0x6B, the conventional+extended memory test has been completed, ; and you should see a total at the top of the screen (eg, "01792 KB OK"). ; xd9f4: mov al,0x6b ; 0000D9F4 B06B '.k' out 0x84,al ; 0000D9F6 E684 '..' mov ax,0x1c00 ; 0000D9F8 B8001C '...' mov ds,ax ; 0000D9FB 8ED8 '..' test word [0x64],0x1 ; 0000D9FD F70664000100 '..d...' jz xda1b ; 0000DA03 7416 't.' call print_crlf ; 0000DA05 E87EED '.~.' xor ch,ch ; 0000DA08 32ED '2.' mov cl,[0x66] ; 0000DA0A 8A0E6600 '..f.' mov si,cx ; 0000DA0E 8BF1 '..' mov cl,[0x69] ; 0000DA10 8A0E6900 '..i.' mov dx,[0x67] ; 0000DA14 8B166700 '..g.' call x822d ; 0000DA18 E812A8 '...' xda1b: test word [0x64],0x4 ; 0000DA1B F70664000400 '..d...' jz xda39 ; 0000DA21 7416 't.' call print_crlf ; 0000DA23 E860ED '.`.' xor ch,ch ; 0000DA26 32ED '2.' mov cl,[0x6a] ; 0000DA28 8A0E6A00 '..j.' mov si,cx ; 0000DA2C 8BF1 '..' mov cl,[0x6d] ; 0000DA2E 8A0E6D00 '..m.' mov dx,[0x6b] ; 0000DA32 8B166B00 '..k.' call x8242 ; 0000DA36 E809A8 '...' xda39: test word [0x64],0x2 ; 0000DA39 F70664000200 '..d...' jz xda57 ; 0000DA3F 7416 't.' call print_crlf ; 0000DA41 E842ED '.B.' xor ch,ch ; 0000DA44 32ED '2.' mov cl,[0x6e] ; 0000DA46 8A0E6E00 '..n.' mov si,cx ; 0000DA4A 8BF1 '..' mov cl,[0x71] ; 0000DA4C 8A0E7100 '..q.' mov dx,[0x6f] ; 0000DA50 8B166F00 '..o.' ; ; The next call prints an address, value, and error message; eg: ; ; F00000 02 201-Memory Error ; call x822d ; 0000DA54 E8D6A7 '...' xda57: test word [0x64],0x8 ; 0000DA57 F70664000800 '..d...' jz xda75 ; 0000DA5D 7416 't.' call print_crlf ; 0000DA5F E824ED '.$.' xor ch,ch ; 0000DA62 32ED '2.' mov cl,[0x72] ; 0000DA64 8A0E7200 '..r.' mov si,cx ; 0000DA68 8BF1 '..' mov cl,[0x75] ; 0000DA6A 8A0E7500 '..u.' mov dx,[0x73] ; 0000DA6E 8B167300 '..s.' ; ; The next call prints an address, value, and error message; eg: ; ; F00000 FF 203-Memory Address Error ; call x8242 ; 0000DA72 E8CDA7 '...' xda75: test word [0x64],0x10 ; 0000DA75 F70664001000 '..d...' jz xda8c ; 0000DA7B 740F 't.' call print_crlf ; 0000DA7D E806ED '...' mov dx,0x0 ; 0000DA80 BA0000 '...' mov bx,err102 ; 0000DA83 BB8CB6 '...' mov cx,err102_len ; 0000DA86 B91A00 '...' call xc745 ; 0000DA89 E8B9EC '...' xda8c: test word [0x64],0xffff ; 0000DA8C F7066400FFFF '..d...' jz xdaac ; 0000DA92 7418 't.' call print_crlf ; 0000DA94 E8EFEC '...' test word [0x64],0x40 ; 0000DA97 F70664004000 '..d.@.' jz xdaa2 ; 0000DA9D 7403 't.' jmp xd9c7 ; 0000DA9F E925FF '.%.' xdaa2: in al,0x61 ; 0000DAA2 E461 '.a' test al,0xc0 ; 0000DAA4 A8C0 '..' jz xdaac ; 0000DAA6 7404 't.' mov al,0x74 ; 0000DAA8 B074 '.t' out 0x84,al ; 0000DAAA E684 '..' xdaac: call xd079 ; 0000DAAC E8CAF5 '...' mov al,0x6c ; 0000DAAF B06C '.l' out 0x84,al ; 0000DAB1 E684 '..' pop gs ; 0000DAB3 0FA9 '..' pop fs ; 0000DAB5 0FA1 '..' pop es ; 0000DAB7 07 '.' pop ds ; 0000DAB8 1F '.' popa ; 0000DAB9 61 'a' ret ; 0000DABA C3 '.' ; ; Another wrapper around the xdb33 memory test ; ; When called for conventional memory: ; ; (AH) == starting 64Kb block number (eg, 0x02) ; (AL) == 0x09, which came from byte [0x90] ; (BX) == amount of memory in Kb to test (eg, 0x200 or 512) ; ; When called for extended memory: ; ; (AH) == starting 64Kb block number (eg, 0x10) ; (AL) == 0x9F, which came from byte [0x91] ; (BX) == amount of memory in Kb to test (eg, 0x3B80 or 15232) ; xdabb: push bx ; 0000DABB 53 'S' mov bl,al ; 0000DABC 8AD8 '..' mov al,0x6d ; 0000DABE B06D '.m' out 0x84,al ; 0000DAC0 E684 '..' ; ; This is special: move BL into AL, and then move AL back into BL. ; We'll give COMPAQ the benefit of the doubt and assume this is macro nonsense. ; mov al,bl ; 0000DAC2 8AC3 '..' mov bl,al ; 0000DAC4 8AD8 '..' mov al,0x6e ; 0000DAC6 B06E '.n' out 0x84,al ; 0000DAC8 E684 '..' mov al,bl ; 0000DACA 8AC3 '..' mov bx,[0x80] ; 0000DACC 8B1E8000 '....' cmp [0x7a],bx ; 0000DAD0 391E7A00 '9.z.' jna xdafc ; 0000DAD4 7626 'v&' or word [0x64],0x80 ; 0000DAD6 810E64008000 '..d...' mov bx,[0x7a] ; 0000DADC 8B1E7A00 '..z.' mov [0x82],bx ; 0000DAE0 891E8200 '....' call xdb33 ; 0000DAE4 E84C00 '.L.' mov bx,[0x84] ; 0000DAE7 8B1E8400 '....' cmp [0x80],bx ; 0000DAEB 391E8000 '9...' jnc xdaf5 ; 0000DAEF 7304 's.' mov bx,[0x80] ; 0000DAF1 8B1E8000 '....' xdaf5: mov [0x8a],bx ; 0000DAF5 891E8A00 '....' jmp short xdb2b ; 0000DAF9 EB30 '.0' nop ; 0000DAFB 90 '.' xdafc: jz xdb16 ; 0000DAFC 7418 't.' or word [0x64],0x80 ; 0000DAFE 810E64008000 '..d...' mov [0x82],bx ; 0000DB04 891E8200 '....' call xdb33 ; 0000DB08 E82800 '.(.' ; ; Assuming another 1024Kb of extended RAM has been successfully tested, (BX) will ; be loaded with 0x400 (1024). ; mov bx,[0x84] ; 0000DB0B 8B1E8400 '....' mov [0x8a],bx ; 0000DB0F 891E8A00 '....' jmp short xdb2b ; 0000DB13 EB16 '..' nop ; 0000DB15 90 '.' ; ; This is where we end up testing the remaining 512Kb of the first 640Kb, because ; the value in word [0x80] (0x200) matched the value in word [0x7a] (0x200). ; xdb16: push ax ; 0000DB16 50 'P' mov al,0x6f ; 0000DB17 B06F '.o' out 0x84,al ; 0000DB19 E684 '..' pop ax ; 0000DB1B 58 'X' mov [0x82],bx ; 0000DB1C 891E8200 '....' call xdb33 ; 0000DB20 E81000 '...' mov bx,[0x84] ; 0000DB23 8B1E8400 '....' mov [0x8a],bx ; 0000DB27 891E8A00 '....' xdb2b: clc ; 0000DB2B F8 '.' or ax,ax ; 0000DB2C 0BC0 '..' jz xdb31 ; 0000DB2E 7401 't.' stc ; 0000DB30 F9 '.' xdb31: pop bx ; 0000DB31 5B '[' ret ; 0000DB32 C3 '.' ; ; Protected-mode Memory Test ; ; When called from x8509 (ie, the initial call): ; ; word [0x82]: 0x80 ; byte [0x8f]: 0xff ; byte [0x92]: 0x01 (this means display the value in BP immediately) ; (BP): 0x80 (128) ; (AH): 0xFE (64Kb block number, copied to byte [0x4c] on entry) ; ; On the initial call, the first 128Kb has already been tested and initialized (see init_128kb), ; which is why BP is set to 128 for immediate display of "00128 KB OK". ; ; We then proceed to test the 128Kb starting at %FE0000 through %FFFFFF (the top of the 16Mb range), ; which is where this ROM (and potentially other ROMs) will be copied and then mapped to %0E0000 ; through %0FFFFF. COMPAQ refers to this as "relocatable RAM". ; ; On the second call (from xdb16), AH is 0x02 (the first 64Kb block after the first 128Kb), and on ; successful completion of that call, "00768 KB OK" will be displayed, referring to the first 640Kb ; of conventional RAM plus the 128Kb of "relocatable RAM" tested earlier. ; ; On the third call (from xdafc), AH is 0x10 (the first 64Kb block above 1Mb). Assuming this call ; successfully tests another 1024Kb, a total of "01792 KB OK" will be displayed. ; ; There appears to be a fourth call (from xd82e), where AH is 0xF0 (the first 64Kb of the last 1Mb ; of the first 16Mb); we place no memory there, and COMPAQ memory maps typically show no memory there, ; so I'm not sure what that's all about. ; xdb33: push bx ; 0000DB33 53 'S' push di ; 0000DB34 57 'W' push es ; 0000DB35 06 '.' mov al,0x70 ; 0000DB36 B070 '.p' out 0x84,al ; 0000DB38 E684 '..' mov [0x4c],ah ; 0000DB3A 88264C00 '.&L.' mov al,ah ; 0000DB3E 8AC4 '..' xor ah,ah ; 0000DB40 32E4 '2.' mov di,ax ; 0000DB42 8BF8 '..' mov bx,0x0 ; 0000DB44 BB0000 '...' cmp byte [0x92],0x1 ; 0000DB47 803E920001 '.>...' jnz xdb58 ; 0000DB4C 750A 'u',0x0A ; ; Display the Kb value in (BP) ; mov ax,0x40 ; 0000DB4E B84000 ; segment 0x40 mapped to %B0000 mov es,ax ; 0000DB51 8EC0 ; (ES) -> video buffers mov ax,bp ; 0000DB53 8BC5 ; (AX) == value to display (in Kb) call x80a5 ; 0000DB55 E84DA5 ; display it xdb58: cmp word [0x82],byte +0x0 ; 0000DB58 833E820000 '.>...' jnz xdb6b ; 0000DB5D 750C 'u.' mov ax,0x0 ; 0000DB5F B80000 '...' mov word [0x84],0x0 ; 0000DB62 C70684000000 '......' jmp xdbf1 ; 0000DB68 E98600 '...' ; ; Test another 64Kb of memory ; xdb6b: mov al,0x71 ; 0000DB6B B071 '.q' out 0x84,al ; 0000DB6D E684 '..' mov ax,0x48 ; 0000DB6F B84800 '.H.' mov es,ax ; 0000DB72 8EC0 '..' push bx ; 0000DB74 53 'S' push si ; 0000DB75 56 'V' push di ; 0000DB76 57 'W' push bp ; 0000DB77 55 'U' mov al,[0x8f] ; 0000DB78 A08F00 '...' cmp [0x4c],al ; 0000DB7B 38064C00 '8.L.' ja xdb86 ; 0000DB7F 7705 'w.' ; ; Test the memory at segment 0x48 (ES), carry clear if success ; call xad38 ; 0000DB81 E8B4D1 '...' jmp short xdb89 ; 0000DB84 EB03 '..' xdb86: call x8c7e ; 0000DB86 E8F5B0 '...' xdb89: pop bp ; 0000DB89 5D ']' pop di ; 0000DB8A 5F '_' pop si ; 0000DB8B 5E '^' pop bx ; 0000DB8C 5B '[' jnc xdb99 ; 0000DB8D 730A 's',0x0A mov ch,[0x4c] ; 0000DB8F 8A2E4C00 '..L.' mov ax,0x1 ; 0000DB93 B80100 '...' jmp short xdbed ; 0000DB96 EB55 '.U' nop ; 0000DB98 90 '.' xdb99: add bx,byte +0x40 ; 0000DB99 83C340 '..@' cld ; 0000DB9C FC '.' push di ; 0000DB9D 57 'W' push cx ; 0000DB9E 51 'Q' push bx ; 0000DB9F 53 'S' mov bl,[0x4c] ; 0000DBA0 8A1E4C00 '..L.' mov cx,0x8 ; 0000DBA4 B90800 '...' xor di,di ; 0000DBA7 33FF '3.' xdba9: xor ax,ax ; 0000DBA9 33C0 '3.' rcr bx,1 ; 0000DBAB D1DB '..' sbb ax,0x0 ; 0000DBAD 1D0000 '...' stosw ; 0000DBB0 AB '.' loop xdba9 ; 0000DBB1 E2F6 '..' mov bl,[0x4c] ; 0000DBB3 8A1E4C00 '..L.' mov ax,0x0 ; 0000DBB7 B80000 '...' test bl,0x2 ; 0000DBBA F6C302 '...' jz xdbc2 ; 0000DBBD 7403 't.' mov ax,0x101 ; 0000DBBF B80101 '...' xdbc2: stosw ; 0000DBC2 AB '.' pop bx ; 0000DBC3 5B '[' pop cx ; 0000DBC4 59 'Y' pop di ; 0000DBC5 5F '_' cmp byte [0x92],0x1 ; 0000DBC6 803E920001 '.>...' jnz xdbd9 ; 0000DBCB 750C 'u.' mov ax,0x40 ; 0000DBCD B84000 '.@.' mov es,ax ; 0000DBD0 8EC0 '..' mov ax,bp ; 0000DBD2 8BC5 '..' add ax,bx ; 0000DBD4 03C3 '..' ; ; Display (AX) as a 5-digit value in the top-left corner of the screen, followed by " KB OK" ; call x80a5 ; 0000DBD6 E8CCA4 ; ; After displaying "00192 KB OK", BX is 0x40 and [0x82] contains 0x80. ; xdbd9: cmp [0x82],bx ; 0000DBD9 391E8200 '9...' ja xdbe5 ; 0000DBDD 7706 'w.' mov ax,0x0 ; 0000DBDF B80000 '...' jmp short xdbed ; 0000DBE2 EB09 '..' nop ; 0000DBE4 90 '.' xdbe5: add byte [0x4c],0x1 ; 0000DBE5 80064C0001 '..L..' jmp xdb6b ; 0000DBEA E97EFF '.~.' ; ; Now we're on to a new phase, after displaying "00256 KB OK" ; xdbed: mov [0x84],bx ; 0000DBED 891E8400 '....' xdbf1: push ax ; 0000DBF1 50 'P' mov al,0x73 ; 0000DBF2 B073 '.s' out 0x84,al ; 0000DBF4 E684 '..' pop ax ; 0000DBF6 58 'X' pop es ; 0000DBF7 07 '.' pop di ; 0000DBF8 5F '_' pop bx ; 0000DBF9 5B '[' ret ; 0000DBFA C3 '.' xdbfb: push es ; 0000DBFB 06 '.' push di ; 0000DBFC 57 'W' push bx ; 0000DBFD 53 'S' push ax ; 0000DBFE 50 'P' mov al,0x72 ; 0000DBFF B072 '.r' out 0x84,al ; 0000DC01 E684 '..' pop ax ; 0000DC03 58 'X' xdc04: mov [0x4c],al ; 0000DC04 A24C00 '.L.' push ax ; 0000DC07 50 'P' mov bx,0x48 ; 0000DC08 BB4800 '.H.' mov es,bx ; 0000DC0B 8EC3 '..' mov cx,0x8 ; 0000DC0D B90800 '...' mov bl,al ; 0000DC10 8AD8 '..' xor di,di ; 0000DC12 33FF '3.' xdc14: xor ax,ax ; 0000DC14 33C0 '3.' rcr bx,1 ; 0000DC16 D1DB '..' sbb ax,0x0 ; 0000DC18 1D0000 '...' scasw ; 0000DC1B AF '.' jnz xdc59 ; 0000DC1C 753B 'u;' loop xdc14 ; 0000DC1E E2F4 '..' mov al,[es:di] ; 0000DC20 268A05 '&..' in al,0x61 ; 0000DC23 E461 '.a' test al,0xc0 ; 0000DC25 A8C0 '..' jz xdc2f ; 0000DC27 7406 't.' xor al,al ; 0000DC29 32C0 '2.' xor di,di ; 0000DC2B 33FF '3.' jmp short xdc66 ; 0000DC2D EB37 '.7' xdc2f: inc di ; 0000DC2F 47 'G' mov ax,[es:di] ; 0000DC30 268B05 '&..' in al,0x61 ; 0000DC33 E461 '.a' test al,0xc0 ; 0000DC35 A8C0 '..' jz xdc40 ; 0000DC37 7407 't.' xor al,al ; 0000DC39 32C0 '2.' mov di,0x1 ; 0000DC3B BF0100 '...' jmp short xdc66 ; 0000DC3E EB26 '.&' xdc40: cmp byte [0x92],0x1 ; 0000DC40 803E920001 '.>...' jnz xdc56 ; 0000DC45 750F 'u.' mov ax,0x40 ; 0000DC47 B84000 '.@.' mov es,ax ; 0000DC4A 8EC0 '..' mov ax,bp ; 0000DC4C 8BC5 '..' add ax,0x40 ; 0000DC4E 054000 '.@.' mov bp,ax ; 0000DC51 8BE8 '..' call x80a5 ; 0000DC53 E84FA4 '.O.' xdc56: pop ax ; 0000DC56 58 'X' jmp short xdc81 ; 0000DC57 EB28 '.(' xdc59: dec di ; 0000DC59 4F 'O' dec di ; 0000DC5A 4F 'O' xor al,[es:di] ; 0000DC5B 263205 '&2.' jnz xdc66 ; 0000DC5E 7506 'u.' inc di ; 0000DC60 47 'G' xor ah,[es:di] ; 0000DC61 263225 '&2%' mov al,ah ; 0000DC64 8AC4 '..' xdc66: mov byte [es:di],0x0 ; 0000DC66 26C60500 '&...' mov cl,al ; 0000DC6A 8AC8 '..' mov ch,[0x4c] ; 0000DC6C 8A2E4C00 '..L.' mov al,0x7c ; 0000DC70 B07C '.|' out 0x84,al ; 0000DC72 E684 '..' pop ax ; 0000DC74 58 'X' mov ax,bp ; 0000DC75 8BC5 '..' mov [0x84],ax ; 0000DC77 A38400 '...' mov dx,di ; 0000DC7A 8BD7 '..' mov ax,0x2 ; 0000DC7C B80200 '...' jmp short xdc92 ; 0000DC7F EB11 '..' xdc81: inc al ; 0000DC81 FEC0 '..' cmp ah,al ; 0000DC83 3AE0 ':.' jna xdc8a ; 0000DC85 7603 'v.' xdc87: jmp xdc04 ; 0000DC87 E97AFF '.z.' xdc8a: cmp ax,0xff ; 0000DC8A 3DFF00 '=..' jz xdc87 ; 0000DC8D 74F8 't.' mov ax,0x0 ; 0000DC8F B80000 '...' xdc92: pop bx ; 0000DC92 5B '[' pop di ; 0000DC93 5F '_' pop es ; 0000DC94 07 '.' ret ; 0000DC95 C3 '.' xdc96: call xeba5 ; 0000DC96 E80C0F '...' cli ; 0000DC99 FA '.' call xc242 ; 0000DC9A E8A5E5 '...' sti ; 0000DC9D FB '.' jnz xdcae ; 0000DC9E 750E 'u.' mov ax,0x9002 ; 0000DCA0 B80290 '...' clc ; 0000DCA3 F8 '.' int 0x15 ; 0000DCA4 CD15 '..' xdca6: cli ; 0000DCA6 FA '.' call xc242 ; 0000DCA7 E898E5 '...' sti ; 0000DCAA FB '.' nop ; 0000DCAB 90 '.' jz xdca6 ; 0000DCAC 74F8 't.' xdcae: cmp si,[0x82] ; 0000DCAE 3B368200 ';6..' jnz xdcb8 ; 0000DCB2 7504 'u.' mov si,[0x80] ; 0000DCB4 8B368000 '.6..' xdcb8: mov [0x1a],si ; 0000DCB8 89361A00 '.6..' sti ; 0000DCBC FB '.' ret ; 0000DCBD C3 '.' xdcbe: call xeba5 ; 0000DCBE E8E40E '...' cli ; 0000DCC1 FA '.' call xc242 ; 0000DCC2 E87DE5 '.}.' sti ; 0000DCC5 FB '.' ret ; 0000DCC6 C3 '.' xdcc7: mov al,[0x17] ; 0000DCC7 A01700 '...' ret ; 0000DCCA C3 '.' xdccb: cmp ah,0x0 ; 0000DCCB 80FC00 '...' jz xdcf3 ; 0000DCCE 7423 't#' cmp ax,0xe00d ; 0000DCD0 3D0DE0 '=',0x0D,'.' jnz xdcda ; 0000DCD3 7505 'u.' mov ax,0x1c0d ; 0000DCD5 B80D1C '.',0x0D,'.' jmp short xdcf3 ; 0000DCD8 EB19 '..' xdcda: cmp ax,0xe02f ; 0000DCDA 3D2FE0 '=/.' jnz xdce4 ; 0000DCDD 7505 'u.' mov ax,0x352f ; 0000DCDF B82F35 './5' jmp short xdcf3 ; 0000DCE2 EB0F '..' xdce4: cmp ah,0x84 ; 0000DCE4 80FC84 '...' ja xdcf8 ; 0000DCE7 770F 'w.' cmp al,0xf0 ; 0000DCE9 3CF0 '<.' jz xdcf8 ; 0000DCEB 740B 't.' cmp al,0xe0 ; 0000DCED 3CE0 '<.' jnz xdcf3 ; 0000DCEF 7502 'u.' mov al,0x0 ; 0000DCF1 B000 '..' xdcf3: mov si,0xffff ; 0000DCF3 BEFFFF '...' jmp short xdcfa ; 0000DCF6 EB02 '..' xdcf8: xor si,si ; 0000DCF8 33F6 '3.' xdcfa: test si,si ; 0000DCFA 85F6 '..' ret ; 0000DCFC C3 '.' xdcfd: cmp ah,0x0 ; 0000DCFD 80FC00 '...' jz xdd08 ; 0000DD00 7406 't.' cmp al,0xf0 ; 0000DD02 3CF0 '<.' jnz xdd08 ; 0000DD04 7502 'u.' mov al,0x0 ; 0000DD06 B000 '..' xdd08: ret ; 0000DD08 C3 '.' xdd09: push bx ; 0000DD09 53 'S' mov bl,[0x18] ; 0000DD0A 8A1E1800 '....' mov al,bl ; 0000DD0E 8AC3 '..' and al,0x73 ; 0000DD10 2473 '$s' and bl,0x4 ; 0000DD12 80E304 '...' shl bl,0x5 ; 0000DD15 C0E305 '...' or al,bl ; 0000DD18 0AC3 0x0A,'.' mov ah,[0x96] ; 0000DD1A 8A269600 '.&..' and ah,0xc ; 0000DD1E 80E40C '...' or ah,al ; 0000DD21 0AE0 0x0A,'.' mov al,[0x17] ; 0000DD23 A01700 '...' pop bx ; 0000DD26 5B '[' ret ; 0000DD27 C3 '.' xdd28: cmp al,0x5 ; 0000DD28 3C05 '<.' jnz xdd87 ; 0000DD2A 755B 'u[' cmp bh,0x3 ; 0000DD2C 80FF03 '...' ja xdd87 ; 0000DD2F 7756 'wV' cmp bl,0x1f ; 0000DD31 80FB1F '...' ja xdd87 ; 0000DD34 7751 'wQ' push cx ; 0000DD36 51 'Q' xdd37: call xec1e ; 0000DD37 E8E40E '...' jnz xdd37 ; 0000DD3A 75FB 'u.' and byte [0x97],0xef ; 0000DD3C 80269700EF '.&...' call xec2e_wait_8042_ready ; 0000DD41 E8EA0E '...' mov al,0xf3 ; 0000DD44 B0F3 '..' out 0x60,al ; 0000DD46 E660 '.`' mov cx,0xffff ; 0000DD48 B9FFFF '...' xdd4b: test byte [0x97],0x10 ; 0000DD4B F606970010 '.....' jnz xdd5d ; 0000DD50 750B 'u.' loop xdd4b ; 0000DD52 E2F7 '..' call xec2e_wait_8042_ready ; 0000DD54 E8D70E '...' mov al,0xf4 ; 0000DD57 B0F4 '..' out 0x60,al ; 0000DD59 E660 '.`' jmp short xdd81 ; 0000DD5B EB24 '.$' xdd5d: and byte [0x97],0xef ; 0000DD5D 80269700EF '.&...' call xec2e_wait_8042_ready ; 0000DD62 E8C90E '...' mov al,bh ; 0000DD65 8AC7 '..' shl al,0x5 ; 0000DD67 C0E005 '...' or al,bl ; 0000DD6A 0AC3 0x0A,'.' out 0x60,al ; 0000DD6C E660 '.`' mov cx,0xffff ; 0000DD6E B9FFFF '...' xdd71: test byte [0x97],0x10 ; 0000DD71 F606970010 '.....' jnz xdd81 ; 0000DD76 7509 'u.' loop xdd71 ; 0000DD78 E2F7 '..' call xec2e_wait_8042_ready ; 0000DD7A E8B10E '...' mov al,0xf4 ; 0000DD7D B0F4 '..' out 0x60,al ; 0000DD7F E660 '.`' xdd81: and byte [0x97],0xbf ; 0000DD81 80269700BF '.&...' pop cx ; 0000DD86 59 'Y' xdd87: ret ; 0000DD87 C3 '.' xdd88: cli ; 0000DD88 FA '.' mov si,[0x1c] ; 0000DD89 8B361C00 '.6..' mov [si],cx ; 0000DD8D 890C '..' inc si ; 0000DD8F 46 'F' inc si ; 0000DD90 46 'F' cmp si,[0x82] ; 0000DD91 3B368200 ';6..' jnz xdd9b ; 0000DD95 7504 'u.' mov si,[0x80] ; 0000DD97 8B368000 '.6..' xdd9b: cmp si,[0x1a] ; 0000DD9B 3B361A00 ';6..' jz xddaa ; 0000DD9F 7409 't.' mov [0x1c],si ; 0000DDA1 89361C00 '.6..' xor al,al ; 0000DDA5 32C0 '2.' clc ; 0000DDA7 F8 '.' jmp short xddad ; 0000DDA8 EB03 '..' xddaa: mov al,0x1 ; 0000DDAA B001 '..' stc ; 0000DDAC F9 '.' xddad: sti ; 0000DDAD FB '.' ret ; 0000DDAE C3 '.' xddaf: push ax ; 0000DDAF 50 'P' cmp al,0x8 ; 0000DDB0 3C08 '<.' jz xde13 ; 0000DDB2 745F 't_' cmp al,0x9 ; 0000DDB4 3C09 '<.' jz xde1f ; 0000DDB6 7467 'tg' test al,al ; 0000DDB8 84C0 '..' jnz xddd2 ; 0000DDBA 7516 'u.' in al,0x86 ; 0000DDBC E486 '..' and al,0xbf ; 0000DDBE 24BF '$.' or al,0x80 ; 0000DDC0 0C80 '..' and al,0xc0 ; 0000DDC2 24C0 '$.' or al,[cs:0x67de] ; 0000DDC4 2E0A06DE67 '.',0x0A,'..g' out 0x86,al ; 0000DDC9 E686 '..' mov ah,[cs:0x67de] ; 0000DDCB 2E8A26DE67 '..&.g' jmp short xde40 ; 0000DDD0 EB6E '.n' xddd2: dec al ; 0000DDD2 FEC8 '..' jnz xddec ; 0000DDD4 7516 'u.' in al,0x86 ; 0000DDD6 E486 '..' and al,0xbf ; 0000DDD8 24BF '$.' or al,0x80 ; 0000DDDA 0C80 '..' and al,0xc0 ; 0000DDDC 24C0 '$.' or al,[cs:0x67dd] ; 0000DDDE 2E0A06DD67 '.',0x0A,'..g' out 0x86,al ; 0000DDE3 E686 '..' mov ah,[cs:0x67dd] ; 0000DDE5 2E8A26DD67 '..&.g' jmp short xde40 ; 0000DDEA EB54 '.T' xddec: dec al ; 0000DDEC FEC8 '..' jnz xddfc ; 0000DDEE 750C 'u.' in al,0x86 ; 0000DDF0 E486 '..' and al,0x7f ; 0000DDF2 247F '$.' or al,0x40 ; 0000DDF4 0C40 '.@' out 0x86,al ; 0000DDF6 E686 '..' mov ah,0x0 ; 0000DDF8 B400 '..' jmp short xde40 ; 0000DDFA EB44 '.D' xddfc: dec al ; 0000DDFC FEC8 '..' jnz xde4f ; 0000DDFE 754F 'uO' in al,0x86 ; 0000DE00 E486 '..' mov ah,0x0 ; 0000DE02 B400 '..' test al,0x40 ; 0000DE04 A840 '.@' jz xde0d ; 0000DE06 7405 't.' mov ah,al ; 0000DE08 8AE0 '..' and ah,0x3f ; 0000DE0A 80E43F '..?' xde0d: xor al,0x40 ; 0000DE0D 3440 '4@' out 0x86,al ; 0000DE0F E686 '..' jmp short xde40 ; 0000DE11 EB2D '.-' xde13: in al,0x86 ; 0000DE13 E486 '..' and al,0x7f ; 0000DE15 247F '$.' or al,0xc0 ; 0000DE17 0CC0 '..' out 0x86,al ; 0000DE19 E686 '..' mov ah,0x0 ; 0000DE1B B400 '..' jmp short xde40 ; 0000DE1D EB21 '.!' xde1f: cmp cx,byte +0x1 ; 0000DE1F 83F901 '...' jc xde4f ; 0000DE22 722B 'r+' cmp cx,byte +0x32 ; 0000DE24 83F932 '..2' ja xde4f ; 0000DE27 7726 'w&' mov ax,0x32 ; 0000DE29 B83200 '.2.' sub ax,cx ; 0000DE2C 2BC1 '+.' inc ax ; 0000DE2E 40 '@' inc ax ; 0000DE2F 40 '@' mov ah,al ; 0000DE30 8AE0 '..' in al,0x86 ; 0000DE32 E486 '..' and al,0xbf ; 0000DE34 24BF '$.' or al,0x80 ; 0000DE36 0C80 '..' and al,0xc0 ; 0000DE38 24C0 '$.' or al,ah ; 0000DE3A 0AC4 0x0A,'.' out 0x86,al ; 0000DE3C E686 '..' jmp short xde40 ; 0000DE3E EB00 '..' xde40: mov al,0x92 ; 0000DE40 B092 '..' cli ; 0000DE42 FA '.' out 0x4b,al ; 0000DE43 E64B '.K' cmp ah,0x0 ; 0000DE45 80FC00 '...' jz xde4e ; 0000DE48 7404 't.' mov al,ah ; 0000DE4A 8AC4 '..' out 0x4a,al ; 0000DE4C E64A '.J' xde4e: sti ; 0000DE4E FB '.' xde4f: pop ax ; 0000DE4F 58 'X' ret ; 0000DE50 C3 '.' xde51: in al,0x86 ; 0000DE51 E486 '..' test al,0x40 ; 0000DE53 A840 '.@' jnz xde5f ; 0000DE55 7508 'u.' test al,0x80 ; 0000DE57 A880 '..' jnz xde5f ; 0000DE59 7504 'u.' mov ah,0x8 ; 0000DE5B B408 '..' jmp short xde8c ; 0000DE5D EB2D '.-' xde5f: test al,0x40 ; 0000DE5F A840 '.@' jnz xde84 ; 0000DE61 7521 'u!' mov ah,0x0 ; 0000DE63 B400 '..' and al,0x3f ; 0000DE65 243F '$?' cmp al,[cs:0x67de] ; 0000DE67 2E3A06DE67 '.:..g' jz xde8c ; 0000DE6C 741E 't.' mov ah,0x1 ; 0000DE6E B401 '..' cmp al,[cs:0x67dd] ; 0000DE70 2E3A06DD67 '.:..g' jz xde8c ; 0000DE75 7415 't.' xor ah,ah ; 0000DE77 32E4 '2.' mov cx,0x32 ; 0000DE79 B93200 '.2.' sub cx,ax ; 0000DE7C 2BC8 '+.' inc cx ; 0000DE7E 41 'A' inc cx ; 0000DE7F 41 'A' mov ah,0x9 ; 0000DE80 B409 '..' jmp short xde8c ; 0000DE82 EB08 '..' xde84: mov ah,0x8 ; 0000DE84 B408 '..' test al,0x80 ; 0000DE86 A880 '..' jnz xde8c ; 0000DE88 7502 'u.' mov ah,0x2 ; 0000DE8A B402 '..' xde8c: mov al,ah ; 0000DE8C 8AC4 '..' xor ah,ah ; 0000DE8E 32E4 '2.' ret ; 0000DE90 C3 '.' xde91: call xf337 ; 0000DE91 E8A314 '...' mov ah,0xff ; 0000DE94 B4FF '..' jz xdea0 ; 0000DE96 7408 't.' mov ah,0x0 ; 0000DE98 B400 '..' test al,0x20 ; 0000DE9A A820 '. ' jz xdea0 ; 0000DE9C 7402 't.' mov ah,0x1 ; 0000DE9E B401 '..' xdea0: mov al,ah ; 0000DEA0 8AC4 '..' xor ah,ah ; 0000DEA2 32E4 '2.' ret ; 0000DEA4 C3 '.' xdea5: sti ; 0000DEA5 FB '.' pusha ; 0000DEA6 60 '`' cmp al,0x2 ; 0000DEA7 3C02 '<.' jna xdeae ; 0000DEA9 7603 'v.' jmp xdfb8 ; 0000DEAB E90A01 '.',0x0A,'.' xdeae: sub sp,byte +0x38 ; 0000DEAE 83EC38 '..8' mov bp,sp ; 0000DEB1 8BEC '..' mov ax,ss ; 0000DEB3 8CD0 '..' mov es,ax ; 0000DEB5 8EC0 '..' mov ds,ax ; 0000DEB7 8ED8 '..' mov di,bp ; 0000DEB9 8BFD '..' xor ax,ax ; 0000DEBB 33C0 '3.' mov cx,0x38 ; 0000DEBD B93800 '.8.' rep stosb ; 0000DEC0 F3AA '..' mov si,bp ; 0000DEC2 8BF5 '..' lea di,[si+0x10] ; 0000DEC4 8D7C10 '.|.' mov word [es:di],0xffff ; 0000DEC7 26C705FFFF '&....' mov byte [es:di+0x7],0x80 ; 0000DECC 26C6450780 '&.E..' mov byte [es:di+0x6],0x0 ; 0000DED1 26C6450600 '&.E..' mov byte [es:di+0x5],0x92 ; 0000DED6 26C6450592 '&.E..' mov word [es:di+0x2],0x0 ; 0000DEDB 26C745020000 '&.E...' mov byte [es:di+0x4],0xc0 ; 0000DEE1 26C64504C0 '&.E..' lea di,[si+0x18] ; 0000DEE6 8D7C18 '.|.' mov word [es:di],0xffff ; 0000DEE9 26C705FFFF '&....' mov byte [es:di+0x7],0x0 ; 0000DEEE 26C6450700 '&.E..' mov byte [es:di+0x6],0x0 ; 0000DEF3 26C6450600 '&.E..' mov byte [es:di+0x5],0x92 ; 0000DEF8 26C6450592 '&.E..' mov ax,ss ; 0000DEFD 8CD0 '..' mov bx,0x10 ; 0000DEFF BB1000 '...' mul bx ; 0000DF02 F7E3 '..' add ax,bp ; 0000DF04 03C5 '..' adc dl,0x0 ; 0000DF06 80D200 '...' add ax,0x38 ; 0000DF09 053800 '.8.' adc dl,0x0 ; 0000DF0C 80D200 '...' mov [es:di+0x2],ax ; 0000DF0F 26894502 '&.E.' mov [es:di+0x4],dl ; 0000DF13 26885504 '&.U.' xor bx,bx ; 0000DF17 33DB '3.' call xdfee ; 0000DF19 E8D200 '...' jnc xdf21 ; 0000DF1C 7303 's.' jmp xdfb5 ; 0000DF1E E99400 '...' xdf21: lea di,[si+0x38] ; 0000DF21 8D7C38 '.|8' mov al,[es:di] ; 0000DF24 268A05 '&..' and al,0xc0 ; 0000DF27 24C0 '$.' cmp al,0x40 ; 0000DF29 3C40 '<@' jz xdf34 ; 0000DF2B 7407 't.' mov byte [bp+0x46],0x0 ; 0000DF2D C6464600 '.FF.' jmp xdfb5 ; 0000DF31 E98100 '...' xdf34: mov bx,0x2 ; 0000DF34 BB0200 '...' call xdfee ; 0000DF37 E8B400 '...' jc xdfb5 ; 0000DF3A 7279 'ry' mov al,[bp+0x46] ; 0000DF3C 8A4646 '.FF' or al,al ; 0000DF3F 0AC0 0x0A,'.' jz xdfa0 ; 0000DF41 745D 't]' lea di,[si+0x10] ; 0000DF43 8D7C10 '.|.' mov bx,si ; 0000DF46 8BDE '..' lea si,[si+0x18] ; 0000DF48 8D7418 '.t.' call xdfbc ; 0000DF4B E86E00 '.n.' mov si,bx ; 0000DF4E 8BF3 '..' mov di,bim_table_offset ; 0000DF50 BFE0FF '...' mov di,[cs:di] ; 0000DF53 2E8B3D '..=' test word [cs:di],0xf00 ; 0000DF56 2EF705000F '.....' lea di,[si+0x38] ; 0000DF5B 8D7C38 '.|8' push word [es:di] ; 0000DF5E 26FF35 '&.5' jz xdf69 ; 0000DF61 7406 't.' mov byte [es:di],0xff ; 0000DF63 26C605FF '&...' jmp short xdf6d ; 0000DF67 EB04 '..' xdf69: mov byte [es:di],0xfc ; 0000DF69 26C605FC '&...' xdf6d: xor bx,bx ; 0000DF6D 33DB '3.' call xdfdf ; 0000DF6F E86D00 '.m.' lea di,[si+0x38] ; 0000DF72 8D7C38 '.|8' pop word [es:di] ; 0000DF75 268F05 '&..' dec al ; 0000DF78 FEC8 '..' jz xdf8e ; 0000DF7A 7412 't.' and byte [es:di],0xbf ; 0000DF7C 268025BF '&.%.' mov bx,0x2 ; 0000DF80 BB0200 '...' call xdfdf ; 0000DF83 E85900 '.Y.' jc xdfb5 ; 0000DF86 722D 'r-' mov byte [bp+0x46],0x2 ; 0000DF88 C6464602 '.FF.' jmp short xdfb5 ; 0000DF8C EB27 '.',0x27 xdf8e: or byte [es:di],0x40 ; 0000DF8E 26800D40 '&.',0x0D,'@' mov bx,0x2 ; 0000DF92 BB0200 '...' call xdfdf ; 0000DF95 E84700 '.G.' jc xdfb5 ; 0000DF98 721B 'r.' mov byte [bp+0x46],0x1 ; 0000DF9A C6464601 '.FF.' jmp short xdfb5 ; 0000DF9E EB15 '..' xdfa0: lea di,[si+0x38] ; 0000DFA0 8D7C38 '.|8' mov bl,[es:di] ; 0000DFA3 268A1D '&..' and bl,0x40 ; 0000DFA6 80E340 '..@' jz xdfb1 ; 0000DFA9 7406 't.' mov byte [bp+0x46],0x1 ; 0000DFAB C6464601 '.FF.' jmp short xdfb5 ; 0000DFAF EB04 '..' xdfb1: mov byte [bp+0x46],0x2 ; 0000DFB1 C6464602 '.FF.' xdfb5: add sp,byte +0x38 ; 0000DFB5 83C438 '..8' xdfb8: popa ; 0000DFB8 61 'a' mov ah,0xe2 ; 0000DFB9 B4E2 '..' ret ; 0000DFBB C3 '.' xdfbc: cld ; 0000DFBC FC '.' push word [di] ; 0000DFBD FF35 '.5' push word [di+0x2] ; 0000DFBF FF7502 '.u.' push word [di+0x4] ; 0000DFC2 FF7504 '.u.' push word [di+0x6] ; 0000DFC5 FF7506 '.u.' mov cx,0x4 ; 0000DFC8 B90400 '...' rep movsw ; 0000DFCB F3A5 '..' sub si,byte +0x8 ; 0000DFCD 83EE08 '...' sub di,byte +0x8 ; 0000DFD0 83EF08 '...' pop word [si+0x6] ; 0000DFD3 8F4406 '.D.' pop word [si+0x4] ; 0000DFD6 8F4404 '.D.' pop word [si+0x2] ; 0000DFD9 8F4402 '.D.' pop word [si] ; 0000DFDC 8F04 '..' ret ; 0000DFDE C3 '.' xdfdf: lea di,[si+0x18] ; 0000DFDF 8D7C18 '.|.' mov [es:di+0x2],bx ; 0000DFE2 26895D02 '&.].' mov cx,0x1 ; 0000DFE6 B90100 '...' mov ah,0x87 ; 0000DFE9 B487 '..' int 0x15 ; 0000DFEB CD15 '..' ret ; 0000DFED C3 '.' xdfee: lea di,[si+0x10] ; 0000DFEE 8D7C10 '.|.' mov [es:di+0x2],bx ; 0000DFF1 26895D02 '&.].' mov cx,0x1 ; 0000DFF5 B90100 '...' mov ah,0x87 ; 0000DFF8 B487 '..' int 0x15 ; 0000DFFA CD15 '..' ret ; 0000DFFC C3 '.' db 0xFF ; 0000DFFD FF '.' db 0xFF ; 0000DFFE FF '.' db 0xFF ; 0000DFFF FF '.' jmp short xe05e ; 0000E000 EB5C '.\' db 'AUTHORS CAB93GLB93RWS93DJC93NPB(C)Copyright COMPAQ Computer Corporation 1982,83,84,85,86,' xe05b: jmp xbaa7 ; 0000E05B E949DA xe05e: jmp 0xf000:0x8e31 ; 0000E05E EA318E00F0 '.1...' db '((CC))CCooppyyrriigghhtt CCOOMMPPAAQQ CCoommppuutteerr CCoorrppoorraattiioonn 11998822,,8833,,8844,,8855,,8866,,8877--AAllll rriigghhttss rreesseerrvveedd..' xe105: mov al,0xd ; 0000E105 B00D '.',0x0D 0x0D out 0x84,al ; 0000E107 E684 '..' mov al,0x12 ; 0000E109 B012 '..' out 0x4b,al ; 0000E10B E64B '.K' mov al,0x22 ; 0000E10D B022 '."' mov dx,0x48 ; 0000E10F BA4800 '.H.' out dx,al ; 0000E112 EE '.' mov bl,0x0 ; 0000E113 B300 '..' call xe134 ; 0000E115 E81C00 '...' mov al,0x12 ; 0000E118 B012 '..' out 0x4b,al ; 0000E11A E64B '.K' mov al,0xe ; 0000E11C B00E '..' out 0x84,al ; 0000E11E E684 '..' mov al,0x92 ; 0000E120 B092 '..' out 0x4b,al ; 0000E122 E64B '.K' mov al,0x22 ; 0000E124 B022 '."' mov dx,0x4a ; 0000E126 BA4A00 '.J.' out dx,al ; 0000E129 EE '.' mov bl,0x80 ; 0000E12A B380 '..' call xe134 ; 0000E12C E80500 '...' mov al,0x92 ; 0000E12F B092 '..' out 0x4b,al ; 0000E131 E64B '.K' ret ; 0000E133 C3 '.' xe134: mov cx,0x100 ; 0000E134 B90001 '...' xe137: mov al,bl ; 0000E137 8AC3 '..' out 0x4b,al ; 0000E139 E64B '.K' in al,dx ; 0000E13B EC '.' mov ah,al ; 0000E13C 8AE0 '..' in al,dx ; 0000E13E EC '.' cmp ax,0x22 ; 0000E13F 3D2200 '=".' jnz xe15c ; 0000E142 7518 'u.' loop xe137 ; 0000E144 E2F1 '..' mov al,0x92 ; 0000E146 B092 '..' out 0x4b,al ; 0000E148 E64B '.K' mov al,0x12 ; 0000E14A B012 '..' out 0x4b,al ; 0000E14C E64B '.K' mov bx,err102 ; 0000E14E BB8CB6 '...' mov cx,err102_len-2 ; 0000E151 B91800 '...' mov bp,0xe15a ; 0000E154 BD5AE1 '.Z.' jmp xc7f7 ; 0000E157 E99DE6 '...' xe15a: jmp short xe15a ; 0000E15A EBFE ; HANG THE MACHINE xe15c: ret ; 0000E15C C3 '.' times 13 db 0xFF ; 0000E15D - 0000E169 call near [bx+si-0x1c] ; 0000E16A FF50E4 '.P.' popa ; 0000E16D 61 'a' test al,0x40 ; 0000E16E A840 '.@' jnz xe174 ; 0000E170 7502 'u.' pop ax ; 0000E172 58 'X' iret ; 0000E173 CF '.' xe174: mov al,0x1 ; 0000E174 B001 '..' out 0x85,al ; 0000E176 E685 '..' mov al,0x11 ; 0000E178 B011 '..' out 0x84,al ; 0000E17A E684 '..' cld ; 0000E17C FC '.' mov al,0x80 ; 0000E17D B080 '..' out 0x70,al ; 0000E17F E670 '.p' mov al,0xff ; 0000E181 B0FF '..' out 0x21,al ; 0000E183 E621 '.!' out 0xa1,al ; 0000E185 E6A1 '..' call xe28e ; 0000E187 E80401 '...' in al,0x61 ; 0000E18A E461 '.a' xor ah,ah ; 0000E18C 32E4 '2.' mov sp,ax ; 0000E18E 8BE0 '..' mov bp,0xe196 ; 0000E190 BD96E1 '...' jmp short xe1e6 ; 0000E193 EB51 '.Q' nop ; 0000E195 90 '.' mov di,si ; 0000E196 8BFE '..' mov cx,sp ; 0000E198 8BCC '..' jc xe19e ; 0000E19A 7202 'r.' inc ch ; 0000E19C FEC5 '..' xe19e: mov ax,cs ; 0000E19E 8CC8 '..' mov ds,ax ; 0000E1A0 8ED8 '..' mov es,ax ; 0000E1A2 8EC0 '..' mov ax,0x30 ; 0000E1A4 B83000 '.0.' mov ss,ax ; 0000E1A7 8ED0 '..' mov sp,0x100 ; 0000E1A9 BC0001 '...' mov si,0xb743 ; 0000E1AC BE43B7 '.C.' call xe282 ; 0000E1AF E8D000 '...' test ch,ch ; 0000E1B2 84ED '..' jz xe1be ; 0000E1B4 7408 't.' mov si,0xb753 ; 0000E1B6 BE53B7 '.S.' call xe282 ; 0000E1B9 E8C600 '...' jmp short xe1e5 ; 0000E1BC EB27 '.',0x27 xe1be: xchg di,dx ; 0000E1BE 87FA '..' mov cx,0x4 ; 0000E1C0 B90400 '...' shr dx,cl ; 0000E1C3 D3EA '..' mov cx,0x2 ; 0000E1C5 B90200 '...' call xe26d ; 0000E1C8 E8A200 '...' mov dx,di ; 0000E1CB 8BD7 '..' and dx,0x3 ; 0000E1CD 81E20300 '....' mov cx,0x4 ; 0000E1D1 B90400 '...' call xe26d ; 0000E1D4 E89600 '...' mov al,0x20 ; 0000E1D7 B020 '. ' mov ah,0xe ; 0000E1D9 B40E '..' int 0x10 ; 0000E1DB CD10 '..' xor dx,dx ; 0000E1DD 33D2 '3.' mov cx,0x2 ; 0000E1DF B90200 '...' call xe26d ; 0000E1E2 E88800 '...' xe1e5: hlt ; 0000E1E5 F4 '.' xe1e6: mov si,bp ; 0000E1E6 8BF5 '..' mov bl,0xff ; 0000E1E8 B3FF '..' xor di,di ; 0000E1EA 33FF '3.' mov bp,0xe1f2 ; 0000E1EC BDF2E1 '...' jmp x8796 ; 0000E1EF E9A4A5 mov bp,si ; 0000E1F2 8BEE '..' xor ax,ax ; 0000E1F4 33C0 '3.' mov ds,ax ; 0000E1F6 8ED8 '..' xor bx,bx ; 0000E1F8 33DB '3.' mov ax,[bx] ; 0000E1FA 8B07 '..' mov [bx],ax ; 0000E1FC 8907 '..' in al,0x61 ; 0000E1FE E461 '.a' or al,0x8 ; 0000E200 0C08 '..' out 0x61,al ; 0000E202 E661 '.a' mov si,bp ; 0000E204 8BF5 '..' mov bl,0xff ; 0000E206 B3FF '..' xor di,di ; 0000E208 33FF '3.' mov bp,0xe210 ; 0000E20A BD10E2 '...' jmp x8796 ; 0000E20D E986A5 mov bp,si ; 0000E210 8BEE '..' in al,0x61 ; 0000E212 E461 '.a' and al,0xf7 ; 0000E214 24F7 '$.' out 0x61,al ; 0000E216 E661 '.a' in al,0x61 ; 0000E218 E461 '.a' test al,0x40 ; 0000E21A A840 '.@' jz xe221 ; 0000E21C 7403 't.' clc ; 0000E21E F8 '.' jmp bp ; 0000E21F FFE5 '..' xe221: mov ax,0x40 ; 0000E221 B84000 '.@.' mov ds,ax ; 0000E224 8ED8 '..' mov di,[0x413] ; 0000E226 8B3E1304 '.>..' shl di,0x6 ; 0000E22A C1E706 '...' mov bx,0x0 ; 0000E22D BB0000 '...' xe230: mov cx,0x4000 ; 0000E230 B90040 '..@' mov ds,bx ; 0000E233 8EDB '..' rep lodsd ; 0000E235 66F3AD 'f..' in al,0x61 ; 0000E238 E461 '.a' test al,0x40 ; 0000E23A A840 '.@' jnz xe24a ; 0000E23C 750C 'u.' add bx,0x1000 ; 0000E23E 81C30010 '....' cmp bx,di ; 0000E242 3BDF ';.' jna xe230 ; 0000E244 76EA 'v.' xor ax,ax ; 0000E246 33C0 '3.' jmp bp ; 0000E248 FFE5 '..' xe24a: mov si,bx ; 0000E24A 8BF3 '..' mov dx,bp ; 0000E24C 8BD5 '..' xor di,di ; 0000E24E 33FF '3.' mov bp,0xe256 ; 0000E250 BD56E2 '.V.' jmp x87e4 ; 0000E253 E98EA5 '...' mov bp,dx ; 0000E256 8BEA '..' and bl,0xf ; 0000E258 80E30F '...' xor dx,dx ; 0000E25B 33D2 '3.' mov cl,0x4 ; 0000E25D B104 '..' xe25f: rcr bl,1 ; 0000E25F D0DB '..' jnc xe268 ; 0000E261 7305 's.' inc dx ; 0000E263 42 'B' loop xe25f ; 0000E264 E2F9 '..' xor dx,dx ; 0000E266 33D2 '3.' xe268: stc ; 0000E268 F9 '.' jmp bp ; 0000E269 FFE5 '..' adc [bx+si],al ; 0000E26B 1000 '..' xe26d: xchg ax,dx ; 0000E26D 92 '.' mul word [0xe26b] ; 0000E26E F7266BE2 '.&k.' xchg ax,dx ; 0000E272 92 '.' add al,0x30 ; 0000E273 0430 '.0' cmp al,0x39 ; 0000E275 3C39 '<9' jna xe27b ; 0000E277 7602 'v.' add al,0x7 ; 0000E279 0407 '..' xe27b: mov ah,0xe ; 0000E27B B40E '..' int 0x10 ; 0000E27D CD10 '..' loop xe26d ; 0000E27F E2EC '..' ret ; 0000E281 C3 '.' xe282: lodsb ; 0000E282 AC '.' or al,al ; 0000E283 0AC0 0x0A,'.' jz xe28d ; 0000E285 7406 't.' mov ah,0xe ; 0000E287 B40E '..' int 0x10 ; 0000E289 CD10 '..' jmp short xe282 ; 0000E28B EBF5 '..' xe28d: ret ; 0000E28D C3 '.' xe28e: call xf2c0 ; 0000E28E E82F10 './.' jnz xe2ba ; 0000E291 7527 'u',0x27 push cs ; 0000E293 0E '.' pop ds ; 0000E294 1F '.' xor ax,ax ; 0000E295 33C0 '3.' mov es,ax ; 0000E297 8EC0 '..' mov di,0x40 ; 0000E299 BF4000 '.@.' mov ax,[0x7124] ; 0000E29C A12471 '.$q' stosw ; 0000E29F AB '.' mov ax,[0x7126] ; 0000E2A0 A12671 '.&q' stosw ; 0000E2A3 AB '.' mov di,0x7c ; 0000E2A4 BF7C00 '.|.' mov ax,[0x7128] ; 0000E2A7 A12871 '.(q' stosw ; 0000E2AA AB '.' mov ax,[0x712a] ; 0000E2AB A12A71 '.*q' stosw ; 0000E2AE AB '.' mov di,0x10c ; 0000E2AF BF0C01 '...' mov ax,[0x712c] ; 0000E2B2 A12C71 '.,q' stosw ; 0000E2B5 AB '.' mov ax,[0x712e] ; 0000E2B6 A12E71 '..q' stosw ; 0000E2B9 AB '.' xe2ba: mov bx,0x7 ; 0000E2BA BB0700 '...' mov ax,0x3 ; 0000E2BD B80300 '...' int 0x10 ; 0000E2C0 CD10 '..' ret ; 0000E2C2 C3 '.' jmp 0xf000:0xe16b ; 0000E2C3 EA6BE100F0 '.k...' xe2c8: mov al,0xe ; 0000E2C8 B00E '..' call xb544 ; 0000E2CA E877D2 '.w.' mov ah,al ; 0000E2CD 8AE0 '..' mov al,0x14 ; 0000E2CF B014 '..' call xb544 ; 0000E2D1 E870D2 '.p.' test al,0x1 ; 0000E2D4 A801 '..' jnz xe2db ; 0000E2D6 7503 'u.' or ah,0x20 ; 0000E2D8 80CC20 '.. ' xe2db: mov al,ah ; 0000E2DB 8AC4 '..' test al,0xc0 ; 0000E2DD A8C0 '..' jz xe2f4 ; 0000E2DF 7413 mov dx,0x2000 ; 0000E2E1 BA0020 '.. ' mov bx,0xb8a0 ; 0000E2E4 BBA0B8 '...' mov cx,0x56 ; 0000E2E7 B95600 '.V.' call xc745 ; 0000E2EA E858E4 '.X.' or byte [0x12],0xff ; 0000E2ED 800E1200FF '.....' jmp short xe336 ; 0000E2F2 EB42 '.B' xe2f4: test al,0x20 ; 0000E2F4 A820 '. ' jz xe309 ; 0000E2F6 7411 't.' mov dx,0x2000 ; 0000E2F8 BA0020 '.. ' mov bx,0xb8a0 ; 0000E2FB BBA0B8 '...' mov cx,0x56 ; 0000E2FE B95600 '.V.' call xc745 ; 0000E301 E841E4 '.A.' or byte [0x12],0xff ; 0000E304 800E1200FF '.....' xe309: test byte [0x10],0x1 ; 0000E309 F606100001 '.....' jnz xe321 ; 0000E30E 7511 'u.' mov dx,0x2000 ; 0000E310 BA0020 '.. ' mov bx,0xb8f6 ; 0000E313 BBF6B8 '...' mov cx,0x1b ; 0000E316 B91B00 '...' call xc745 ; 0000E319 E829E4 '.).' or byte [0x12],0xff ; 0000E31C 800E1200FF '.....' xe321: test al,0x10 ; 0000E321 A810 '..' jz xe336 ; 0000E323 7411 't.' mov dx,0x2000 ; 0000E325 BA0020 '.. ' mov bx,0xb911 ; 0000E328 BB11B9 '...' mov cx,0x18 ; 0000E32B B91800 '...' call xc745 ; 0000E32E E814E4 '...' or byte [0x12],0xff ; 0000E331 800E1200FF '.....' xe336: in al,0x60 ; 0000E336 E460 '.`' mov al,0xc0 ; 0000E338 B0C0 '..' out 0x64,al ; 0000E33A E664 '.d' mov cx,0xffff ; 0000E33C B9FFFF '...' xe33f: call x919a ; 0000E33F E858AE '.X.' in al,0x64 ; 0000E342 E464 '.d' test al,0x2 ; 0000E344 A802 '..' jz xe34f ; 0000E346 7407 't.' loop xe33f ; 0000E348 E2F5 '..' jmp short xe373 ; 0000E34A EB27 '.',0x27 mov cx,0xffff ; 0000E34C B9FFFF '...' xe34f: call x919a ; 0000E34F E848AE '.H.' in al,0x64 ; 0000E352 E464 '.d' test al,0x1 ; 0000E354 A801 '..' jnz xe35c ; 0000E356 7504 'u.' loop xe34f ; 0000E358 E2F5 '..' jmp short xe373 ; 0000E35A EB17 '..' xe35c: in al,0x60 ; 0000E35C E460 '.`' test al,0x80 ; 0000E35E A880 '..' jnz xe373 ; 0000E360 7511 'u.' mov dx,0x2000 ; 0000E362 BA0020 '.. ' mov bx,0xb95b ; 0000E365 BB5BB9 '.[.' mov cx,0x55 ; 0000E368 B95500 '.U.' call xc745 ; 0000E36B E8D7E3 '...' or byte [0x12],0xff ; 0000E36E 800E1200FF '.....' xe373: xor bp,bp ; 0000E373 33ED '3.' call xd03e ; 0000E375 E8C6EC '...' jc xe37b ; 0000E378 7201 'r.' xchg ax,bp ; 0000E37A 95 '.' xe37b: call xe3ab ; 0000E37B E82D00 '.-.' xor ax,ax ; 0000E37E 33C0 '3.' or al,[0x12] ; 0000E380 0A061200 0x0A,'...' jz xe389 ; 0000E384 7403 't.' call xe38f ; 0000E386 E80600 '...' xe389: mov byte [0x12],0x0 ; 0000E389 C606120000 '.....' ret ; 0000E38E C3 '.' xe38f: pusha ; 0000E38F 60 '`' mov dx,0x0 ; 0000E390 BA0000 '...' mov bx,0xb943 ; 0000E393 BB43B9 '.C.' mov cx,0x18 ; 0000E396 B91800 '...' call xc745 ; 0000E399 E8A9E3 '...' xchg ax,bp ; 0000E39C 95 '.' cmp al,0x5 ; 0000E39D 3C05 '<.' jz xe3a4 ; 0000E39F 7403 't.' call xe3ef ; 0000E3A1 E84B00 '.K.' xe3a4: mov byte [0x12],0x0 ; 0000E3A4 C606120000 '.....' popa ; 0000E3A9 61 'a' ret ; 0000E3AA C3 '.' xe3ab: cli ; 0000E3AB FA '.' in al,0x21 ; 0000E3AC E421 '.!' and al,0xfd ; 0000E3AE 24FD '$.' out 0x21,al ; 0000E3B0 E621 '.!' push es ; 0000E3B2 06 '.' xor ax,ax ; 0000E3B3 33C0 '3.' mov es,ax ; 0000E3B5 8EC0 '..' mov bx,[es:0x24] ; 0000E3B7 268B1E2400 '&..$.' mov word [es:0x24],0xe3e6 ; 0000E3BC 26C7062400E6E3 '&..$...' sti ; 0000E3C3 FB '.' push bx ; 0000E3C4 53 'S' call xc62f ; 0000E3C5 E867E2 '.g.' pop bx ; 0000E3C8 5B '[' mov [es:0x24],bx ; 0000E3C9 26891E2400 '&..$.' pop es ; 0000E3CE 07 '.' mov al,0x60 ; 0000E3CF B060 '.`' out 0x64,al ; 0000E3D1 E664 '.d' mov cx,0xffff ; 0000E3D3 B9FFFF '...' xe3d6: call x919a ; 0000E3D6 E8C1AD '...' in al,0x64 ; 0000E3D9 E464 '.d' test al,0x2 ; 0000E3DB A802 '..' jz xe3e1 ; 0000E3DD 7402 't.' loop xe3d6 ; 0000E3DF E2F5 '..' xe3e1: mov al,0x45 ; 0000E3E1 B045 '.E' out 0x60,al ; 0000E3E3 E660 '.`' ret ; 0000E3E5 C3 '.' push ax ; 0000E3E6 50 'P' in al,0x60 ; 0000E3E7 E460 '.`' mov al,0x20 ; 0000E3E9 B020 '. ' out 0x20,al ; 0000E3EB E620 '. ' pop ax ; 0000E3ED 58 'X' iret ; 0000E3EE CF '.' xe3ef: mov ah,0x0 ; 0000E3EF B400 '..' int 0x16 ; 0000E3F1 CD16 '..' cmp ah,0x3b ; 0000E3F3 80FC3B '..;' jnz xe3ef ; 0000E3F6 75F7 'u.' ret ; 0000E3F8 C3 '.' times 7 db 0xFF ; 0000E3F9 - 0000E3FF db 0xFF,0x32,0x01,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x01,0x11 ; 0000E400 db 0x00,0x67,0x02,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x02,0x11 ; 0000E410 db 0x00,0x67,0x02,0x06,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x67,0x02,0x11 ; 0000E420 db 0x00,0x00,0x04,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x11 ; 0000E430 db 0x00,0xAC,0x03,0x06,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0xAB,0x03,0x11 ; 0000E440 db 0x00,0xB9,0x02,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xB8,0x02,0x11 ; 0000E450 db 0x00,0xCE,0x01,0x08,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x00,0x00,0xFF,0x01,0x11 ; 0000E460 db 0x00,0x9D,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E470 db 0x00,0x84,0x03,0x0F,0x00,0x00,0xFF,0xFF,0x00,0x08,0x00,0x00,0x00,0x83,0x03,0x11 ; 0000E480 db 0x00,0xD4,0x03,0x05,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xD4,0x03,0x11 ; 0000E490 db 0x00,0x9D,0x03,0x07,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E4A0 db 0x00,0x9D,0x03,0x09,0x00,0x00,0x80,0x00,0x00,0x08,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E4B0 db 0x00,0x64,0x02,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x63,0x02,0x11 ; 0000E4C0 db 0x00,0xD4,0x03,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xD4,0x03,0x11 ; 0000E4D0 db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 0000E4E0 db 0x00,0x64,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x02,0x11 ; 0000E4F0 db 0x00,0xD4,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xD4,0x03,0x11 ; 0000E500 db 0x00,0xC6,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E510 db 0x00,0xF2,0x02,0x0B,0x00,0x00,0xFF,0xFF,0x00,0x08,0x00,0x00,0x00,0xF1,0x02,0x11 ; 0000E520 db 0x00,0xDD,0x02,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xDC,0x02,0x11 ; 0000E530 db 0x00,0xDD,0x02,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xDC,0x02,0x11 ; 0000E540 db 0x00,0x25,0x03,0x06,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x11 ; 0000E550 db 0x00,0x9C,0x03,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E560 db 0x00,0xC6,0x03,0x0E,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E570 db 0x00,0xC6,0x03,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E580 db 0x00,0xFF,0x03,0x0E,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x11 ; 0000E590 db 0x00,0xC6,0x03,0x0A,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E5A0 db 0x00,0xEC,0x02,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xEC,0x02,0x11 ; 0000E5B0 db 0x00,0x25,0x03,0x06,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x1A ; 0000E5C0 db 0x00,0x67,0x02,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x67,0x02,0x19 ; 0000E5D0 db 0x00,0x67,0x02,0x08,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x67,0x02,0x19 ; 0000E5E0 db 0x00,0x89,0x03,0x09,0x00,0x00,0x80,0x00,0x07,0x08,0x00,0x00,0x00,0x89,0x03,0x19 ; 0000E5F0 db 0x00,0xEC,0x02,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xEC,0x02,0x22 ; 0000E600 db 0x00,0xC6,0x03,0x07,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E610 db 0x00,0xC6,0x03,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E620 db 0x00,0xC6,0x03,0x09,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E630 db 0x00,0xC6,0x03,0x05,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E640 db 0x00,0x63,0x02,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0x63,0x02,0x3F ; 0000E650 db 0x00,0xFF,0x03,0x0B,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x21 ; 0000E660 db 0x00,0xFF,0x03,0x0F,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x22 ; 0000E670 db 0x00,0xFF,0x03,0x0F,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x21 ; 0000E680 db 0x00,0xFF,0x03,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x3F ; 0000E690 db 0x00,0x25,0x03,0x04,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x1A ; 0000E6A0 db 0x00,0x25,0x03,0x02,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x1A ; 0000E6B0 db 0x00,0xEC,0x02,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xEC,0x02,0x21 ; 0000E6C0 db 0x00,0xEC,0x02,0x06,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xEC,0x02,0x21 ; 0000E6D0 db 0x00,0xC6,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x03,0x19 ; 0000E6E0 db 0x00,0xFF,0xEB,0x0B,0x90,0x08,0x00,0xFC,0x01,0x00,0x70,0x00,0x00,0x00,0x00,0x83 ; 0000E6F0 db 0xC4,0x06 ; 0000E700 ; ; Start of warm boot code: read first sector from boot drive ; sti ; 0000E702 FB '.' cld ; 0000E703 FC '.' mov al,0xf ; 0000E704 B00F '..' out 0x84,al ; 0000E706 E684 '..' mov al,0x0 ; 0000E708 B000 '..' out 0x85,al ; 0000E70A E685 '..' mov dx,0xefc7 ; 0000E70C BAC7EF '...' call xd6cd ; 0000E70F E8BBEF '...' mov ds,dx ; 0000E712 8EDA '..' xe714: mov al,0xb9 ; 0000E714 B0B9 '..' out 0x84,al ; 0000E716 E684 '..' mov cx,0x3 ; 0000E718 B90300 '...' xe71b: push cx ; 0000E71B 51 'Q' ; ; Reset the disk controller ; mov ah,0x0 ; 0000E71C B400 '..' int 0x13 ; 0000E71E CD13 '..' ; ; Read the boot sector ; mov bx,0x7c00 ; 0000E720 BB007C '..|' mov cx,0x1 ; 0000E723 B90100 '...' mov ax,0x201 ; 0000E726 B80102 '...' int 0x13 ; 0000E729 CD13 '..' pop cx ; 0000E72B 59 'Y' jnc xe770 ; 0000E72C 7342 'sB' jc xe73c ; 0000E72E 720C 'r.' times 9 db 0xFF ; 0000E730 - 0000E738 jmp xc5c0 ; 0000E739 E984DE (NOTE: This JMP doesn't appear reachable) xe73c: loop xe71b ; 0000E73C E2DD '..' mov al,0xbb ; 0000E73E B0BB '..' out 0x84,al ; 0000E740 E684 '..' cmp dl,0x80 ; 0000E742 80FA80 '...' jz xe76e ; 0000E745 7427 't',0x27 mov al,0xe ; 0000E747 B00E '..' call xb544 ; 0000E749 E8F8CD '...' test al,0x40 ; 0000E74C A840 '.@' jnz xe76e ; 0000E74E 751E 'u.' mov dx,ds ; 0000E750 8CDA '..' mov bx,0x40 ; 0000E752 BB4000 '.@.' mov ds,bx ; 0000E755 8EDB '..' mov ch,[0x75] ; 0000E757 8A2E7500 '..u.' mov ds,dx ; 0000E75B 8EDA '..' or ch,ch ; 0000E75D 0AED 0x0A,'.' jz xe76e ; 0000E75F 740D 't',0x0D test al,0x8 ; 0000E761 A808 '..' jnz xe76e ; 0000E763 7509 'u.' mov al,0xba ; 0000E765 B0BA '..' out 0x84,al ; 0000E767 E684 '..' mov dx,0x80 ; 0000E769 BA8000 '...' jmp short xe714 ; 0000E76C EBA6 '..' ; ; On warm boot failure, pass control to the traditional ROM BASIC entry point ; xe76e: int 0x18 ; 0000E76E CD18 '..' ; ; Boot sector successfully read ; xe770: test dl,0x80 ; 0000E770 F6C280 '...' jnz xe793 ; 0000E773 751E 'u.' ; ; More diskette I/O (TODO: Investigate) ; push bx ; 0000E775 53 'S' call xd540 ; 0000E776 E8C7ED '...' pop bx ; 0000E779 5B '[' ; ; Check the ROM status byte for 0xBD (values I've seen: 0xB9) ; in al,0x84 ; 0000E77A E484 '..' cmp al,0xbd ; 0000E77C 3CBD '<.' jz xe714 ; 0000E77E 7494 't.' ; ; This code looks broken: ES:BX points to the boot sector just loaded ; (0x0000:0x7C00), and apparently the ROM wants to scan the first 9 words ; of the boot sector, to see if they all match the 1st word; if they do, ; then it's likely the boot sector is invalid (hence the "boot_error" ; message). However, it's loading AX with the 1st word from DS:BX ; (0x0040:0x7C00) rather than ES:BX, which aside from being the wrong word, ; also increases the likelihood that this code will always see a difference ; and never trigger the error. ; ; The value in AX is typically 0x0000. ; mov ax,[bx] ; 0000E780 8B07 '..' mov cx,0x9 ; 0000E782 B90900 '...' mov di,bx ; 0000E785 8BFB '..' repe scasw ; 0000E787 F3AF '..' jnz xe7a9 ; 0000E789 751E 'u.' mov si,boot_error ; 0000E78B BE5D93 '.].' call print_str$ ; 0000E78E E83F00 '.?.' xe791: jmp short xe791 ; 0000E791 EBFE ; HANG THE MACHINE ; ; Hard disk sector validation (as opposed to the preceding floppy disk sector validation) ; xe793: mov al,0x33 ; 0000E793 B033 '.3' mov ah,al ; 0000E795 8AE0 '..' call xb544 ; 0000E797 E8AACD '...' and al,0xfb ; 0000E79A 24FB '$.' xchg al,ah ; 0000E79C 86C4 '..' call xb549 ; 0000E79E E8A8CD '...' ; ; Verify the hard disk boot sector signature (0xAA55) ; cmp word [bx+0x1fe],0xaa55 ; 0000E7A1 81BFFE0155AA '....U.' jnz xe76e ; 0000E7A7 75C5 'u.' xe7a9: in al,0x86 ; 0000E7A9 E486 '..' test al,0x80 ; 0000E7AB A880 '..' jnz xe7b7 ; 0000E7AD 7508 'u.' test al,0x40 ; 0000E7AF A840 '.@' jnz xe7b7 ; 0000E7B1 7504 'u.' mov al,0x92 ; 0000E7B3 B092 '..' out 0x4b,al ; 0000E7B5 E64B '.K' xe7b7: mov al,0xbc ; 0000E7B7 B0BC '..' out 0x84,al ; 0000E7B9 E684 '..' ; ; Jump to the start of the boot sector ; jmp 0x0:0x7c00 ; 0000E7BB EA007C0000 '..|..' xe7c0: add sp,byte +0x6 ; 0000E7C0 83C406 '...' sti ; 0000E7C3 FB '.' mov si,boot_prompt ; 0000E7C4 BE1493 '...' call print_str$ ; 0000E7C7 E80600 '...' mov ah,0x0 ; 0000E7CA B400 '..' int 0x16 ; 0000E7CC CD16 '..' int 0x19 ; 0000E7CE CD19 '..' ; ; print_str$(CS:SI -> $-terminated string) ; print_str$: cld ; 0000E7D0 FC '.' xe7d1: cs lodsb ; 0000E7D1 2EAC '..' cmp al,0x24 ; 0000E7D3 3C24 '<$' jz xe7dc ; 0000E7D5 7405 't.' call print_char ; 0000E7D7 E8F9DF '...' jmp short xe7d1 ; 0000E7DA EBF5 '..' xe7dc: ret ; 0000E7DC C3 '.' sub al,0x2d ; 0000E7DD 2C2D ',-' (NOTE: This instruction doesn't appear reachable) xe7df: mov si,bim_table_offset ; 0000E7DF BEE0FF '...' mov si,[cs:si] ; 0000E7E2 2E8B34 '..4' mov ax,[cs:si] ; 0000E7E5 2E8B04 '...' test ax,0xf00 ; 0000E7E8 A9000F '...' jz xe7f0 ; 0000E7EB 7403 't.' jmp short xe80a ; 0000E7ED EB1B '..' nop ; 0000E7EF 90 '.' xe7f0: and ah,0xc0 ; 0000E7F0 80E4C0 '...' cmp ah,0x40 ; 0000E7F3 80FC40 '..@' jz xe80a ; 0000E7F6 7412 't.' call xf305 ; 0000E7F8 E80A0B '.',0x0A,'.' mov byte [cs:0x67dd],0x22 ; 0000E7FB 2EC606DD6722 '....g"' mov byte [cs:0x67de],0x24 ; 0000E801 2EC606DE6724 '....g$' call xf30a ; 0000E807 E8000B '...' xe80a: ret ; 0000E80A C3 '.' ; ; Compare DS:BX to ES:DI; return carry CLEAR if success, SET if failure ; xe80b: mov si,bx ; 0000E80B 8BF3 '..' mov cx,0x21 ; 0000E80D B92100 '.!.' repe cmpsd ; 0000E810 66F3A7 'f..' jnz xe821 ; 0000E813 750C 'u.' dec dx ; 0000E815 4A 'J' jnz xe80b ; 0000E816 75F3 'u.' mov si,bx ; 0000E818 8BF3 '..' mov cx,ax ; 0000E81A 8BC8 '..' repe cmpsd ; 0000E81C 66F3A7 'f..' jz xe828 ; 0000E81F 7407 't.' xe821: sub di,byte +0x4 ; 0000E821 83EF04 '...' sub si,byte +0x4 ; 0000E824 83EE04 '...' stc ; 0000E827 F9 '.' xe828: jmp bp ; 0000E828 FFE5 '..' times 4 db 0xFF ; 0000E82A - 0000E82D xe82e: sti ; 0000E82E FB '.' cld ; 0000E82F FC '.' push ds ; 0000E830 1E '.' push si ; 0000E831 56 'V' push bp ; 0000E832 55 'U' mov bp,sp ; 0000E833 8BEC '..' mov si,0x40 ; 0000E835 BE4000 '.@.' mov ds,si ; 0000E838 8EDE '..' test ah,ah ; 0000E83A 84E4 '..' jnz xe849 ; 0000E83C 750B 'u.' xe83e: call xdc96 ; 0000E83E E855F4 '.U.' call xdccb ; 0000E841 E887F4 '...' jz xe83e ; 0000E844 74F8 't.' jmp xe8fc ; 0000E846 E9B300 '...' xe849: dec ah ; 0000E849 FECC '..' jnz xe876 ; 0000E84B 7529 'u)' or word [bp+0xa],0x240 ; 0000E84D 814E0A4002 '.N',0x0A,'@.' and word [bp+0xa],0xfffe ; 0000E852 81660AFEFF '.f',0x0A,'..' xe857: call xdcbe ; 0000E857 E864F4 '.d.' jnz xe85f ; 0000E85A 7503 'u.' jmp xe8fc ; 0000E85C E99D00 '...' xe85f: call xdccb ; 0000E85F E869F4 '.i.' jnz xe869 ; 0000E862 7505 'u.' call xdc96 ; 0000E864 E82FF4 './.' jmp short xe857 ; 0000E867 EBEE '..' xe869: and word [bp+0xa],0xffbf ; 0000E869 81660ABFFF '.f',0x0A,'..' or word [bp+0xa],0x1 ; 0000E86E 814E0A0100 '.N',0x0A,'..' jmp xe8fc ; 0000E873 E98600 '...' xe876: dec ah ; 0000E876 FECC '..' jnz xe87f ; 0000E878 7505 'u.' call xdcc7 ; 0000E87A E84AF4 '.J.' jmp short xe8fc ; 0000E87D EB7D '.}' xe87f: dec ah ; 0000E87F FECC '..' jnz xe888 ; 0000E881 7505 'u.' call xdd28 ; 0000E883 E8A2F4 '...' jmp short xe8fc ; 0000E886 EB74 '.t' xe888: dec ah ; 0000E888 FECC '..' jnz xe88e ; 0000E88A 7502 'u.' jmp short xe8fc ; 0000E88C EB6E '.n' xe88e: dec ah ; 0000E88E FECC '..' jnz xe897 ; 0000E890 7505 'u.' call xdd88 ; 0000E892 E8F3F4 '...' jmp short xe8fc ; 0000E895 EB65 '.e' xe897: cmp ah,0xb ; 0000E897 80FC0B '...' jnz xe8a4 ; 0000E89A 7508 'u.' call xdc96 ; 0000E89C E8F7F3 '...' call xdcfd ; 0000E89F E85BF4 '.[.' jmp short xe8fc ; 0000E8A2 EB58 '.X' xe8a4: cmp ah,0xc ; 0000E8A4 80FC0C '...' jnz xe8c7 ; 0000E8A7 751E 'u.' or word [bp+0xa],0x240 ; 0000E8A9 814E0A4002 '.N',0x0A,'@.' and word [bp+0xa],0xfffe ; 0000E8AE 81660AFEFF '.f',0x0A,'..' call xdcbe ; 0000E8B3 E808F4 '...' jz xe8fc ; 0000E8B6 7444 'tD' call xdcfd ; 0000E8B8 E842F4 '.B.' and word [bp+0xa],0xffbf ; 0000E8BB 81660ABFFF '.f',0x0A,'..' or word [bp+0xa],0x1 ; 0000E8C0 814E0A0100 '.N',0x0A,'..' jmp short xe8fc ; 0000E8C5 EB35 '.5' xe8c7: cmp ah,0xd ; 0000E8C7 80FC0D '..',0x0D jnz xe8d1 ; 0000E8CA 7505 'u.' call xdd09 ; 0000E8CC E83AF4 '.:.' jmp short xe8fc ; 0000E8CF EB2B '.+' xe8d1: cmp ah,0xeb ; 0000E8D1 80FCEB '...' ; INT 0x16 AH=0xF0 (SET SYSTEM SPEED)? jnz xe8db ; 0000E8D4 7505 'u.' ; NO call xddaf ; 0000E8D6 E8D6F4 '...' ; YES jmp short xe8fc ; 0000E8D9 EB21 '.!' xe8db: cmp ah,0xec ; 0000E8DB 80FCEC '...' jnz xe8e5 ; 0000E8DE 7505 'u.' call xde51 ; 0000E8E0 E86EF5 '.n.' jmp short xe8fc ; 0000E8E3 EB17 '..' xe8e5: cmp ah,0xed ; 0000E8E5 80FCED '...' jnz xe8ef ; 0000E8E8 7505 'u.' call xde91 ; 0000E8EA E8A4F5 '...' jmp short xe8fc ; 0000E8ED EB0D '.',0x0D xe8ef: cmp ah,0xef ; 0000E8EF 80FCEF '...' jnz xe8f9 ; 0000E8F2 7505 'u.' call xdea5 ; 0000E8F4 E8AEF5 '...' jmp short xe8fc ; 0000E8F7 EB03 '..' xe8f9: sub ah,0xd ; 0000E8F9 80EC0D '..',0x0D xe8fc: pop bp ; 0000E8FC 5D ']' pop si ; 0000E8FD 5E '^' pop ds ; 0000E8FE 1F '.' iret ; 0000E8FF CF '.' xe900: push ds ; 0000E900 1E '.' push ax ; 0000E901 50 'P' mov ax,0x40 ; 0000E902 B84000 '.@.' mov ds,ax ; 0000E905 8ED8 '..' mov ax,0xff0b ; 0000E907 B80BFF '...' out 0xa0,al ; 0000E90A E6A0 '..' in al,0xa0 ; 0000E90C E4A0 '..' test al,al ; 0000E90E 84C0 '..' jz xe91e ; 0000E910 740C 't.' mov ah,al ; 0000E912 8AE0 '..' in al,0xa1 ; 0000E914 E4A1 '..' or al,ah ; 0000E916 0AC4 0x0A,'.' out 0xa1,al ; 0000E918 E6A1 '..' out 0xa0,al ; 0000E91A E6A0 '..' jmp short xe934 ; 0000E91C EB16 '..' xe91e: mov al,0xb ; 0000E91E B00B '..' out 0x20,al ; 0000E920 E620 '. ' in al,0x20 ; 0000E922 E420 '. ' test al,al ; 0000E924 84C0 '..' jz xe934 ; 0000E926 740C 't.' mov ah,al ; 0000E928 8AE0 '..' test al,0x4 ; 0000E92A A804 '..' jnz xe934 ; 0000E92C 7506 'u.' in al,0x21 ; 0000E92E E421 '.!' or al,ah ; 0000E930 0AC4 0x0A,'.' out 0x21,al ; 0000E932 E621 '.!' xe934: cmp ah,0xff ; 0000E934 80FCFF '...' jz xe93d ; 0000E937 7404 't.' mov al,0x20 ; 0000E939 B020 '. ' out 0x20,al ; 0000E93B E620 '. ' xe93d: mov [0x6b],ah ; 0000E93D 88266B00 '.&k.' pop ax ; 0000E941 58 'X' pop ds ; 0000E942 1F '.' iret ; 0000E943 CF '.' xe944: push cx ; 0000E944 51 'Q' mov cx,0x78 ; 0000E945 B97800 '.x.' mov dx,0x3f4 ; 0000E948 BAF403 '...' xe94b: call x919a ; 0000E94B E84CA8 '.L.' in al,dx ; 0000E94E EC '.' test al,0x80 ; 0000E94F A880 '..' jnz xe959 ; 0000E951 7506 'u.' loop xe94b ; 0000E953 E2F6 '..' stc ; 0000E955 F9 '.' jmp short xe960 ; 0000E956 EB08 '..' nop ; 0000E958 90 '.' xe959: call x919a ; 0000E959 E83EA8 '.>.' in al,dx ; 0000E95C EC '.' inc dx ; 0000E95D 42 'B' test al,0x40 ; 0000E95E A840 '.@' xe960: pop cx ; 0000E960 59 'Y' ret ; 0000E961 C3 '.' db 0xFF ; 0000E962 FF '.' db 0xFF ; 0000E963 FF '.' xe964: call xbfc3 ; 0000E964 E85CD6 '.\.' jc xe97b ; 0000E967 7212 'r.' call xbe10 ; 0000E969 E8A4D4 '...' jc xe97b ; 0000E96C 720D 'r',0x0D call xc129 ; 0000E96E E8B8D7 '...' jc xe97b ; 0000E971 7208 'r.' call xc188 ; 0000E973 E812D8 '...' jc xe97b ; 0000E976 7203 'r.' call xd215 ; 0000E978 E89AE8 xe97b: ret ; 0000E97B C3 '.' xe97c: call xec2e_wait_8042_ready ; 0000E97C E8AF02 '...' mov al,0xad ; 0000E97F B0AD '..' out 0x64,al ; 0000E981 E664 '.d' call xec2e_wait_8042_ready ; 0000E983 E8A802 '...' ret ; 0000E986 C3 '.' cld ; 0000E987 FC '.' pusha ; 0000E988 60 '`' push ds ; 0000E989 1E '.' push es ; 0000E98A 06 '.' mov bx,0x40 ; 0000E98B BB4000 '.@.' mov ds,bx ; 0000E98E 8EDB '..' test byte [0x96],0x80 ; 0000E990 F606960080 '.....' jz xe9b2 ; 0000E995 741B 't.' in al,0x60 ; 0000E997 E460 '.`' cmp al,0xab ; 0000E999 3CAB '<.' jnz xe9a7 ; 0000E99B 750A or byte [0x96],0x40 ; 0000E99D 800E960040 '....@' and byte [0x96],0x7f ; 0000E9A2 802696007F '.&...' xe9a7: mov al,0x20 ; 0000E9A7 B020 '. ' out 0x20,al ; 0000E9A9 E620 '. ' sti ; 0000E9AB FB '.' mov bp,0xffff ; 0000E9AC BDFFFF '...' jmp xeadf ; 0000E9AF E92D01 '.-.' xe9b2: test byte [0x96],0x40 ; 0000E9B2 F606960040 '....@' jz xe9fa ; 0000E9B7 7441 'tA' in al,0x60 ; 0000E9B9 E460 '.`' cmp al,0x41 ; 0000E9BB 3C41 'A..' jz xed33 ; 0000ED23 740E 't.' cmp byte [0x41],0x9 ; 0000ED25 803E410009 '.>A..' jz xed33 ; 0000ED2A 7407 't.' call xca03 ; 0000ED2C E8D4DC '...' or ah,ah ; 0000ED2F 0AE4 0x0A,'.' jnz xed5b ; 0000ED31 7528 'u(' xed33: xor ax,ax ; 0000ED33 33C0 '3.' mov al,[bp+0x0] ; 0000ED35 8A4600 '.F.' mov cl,[es:si+0x3] ; 0000ED38 268A4C03 '&.L.' mov dx,0x80 ; 0000ED3C BA8000 '...' shl dx,cl ; 0000ED3F D3E2 '..' mul dx ; 0000ED41 F7E2 '..' dec ax ; 0000ED43 48 'H' mov cx,ax ; 0000ED44 8BC8 '..' call xca4f ; 0000ED46 E806DD '...' add ax,bx ; 0000ED49 03C3 '..' jnc xed5e ; 0000ED4B 7311 's.' mov al,[bp+0x1] ; 0000ED4D 8A4601 '.F.' test al,0x4 ; 0000ED50 A804 '..' jnz xed5e ; 0000ED52 750A 'u',0x0A mov ah,0x9 ; 0000ED54 B409 '..' or word [bp+0x16],0x1 ; 0000ED56 814E160100 '.N...' xed5b: jmp short xedd7 ; 0000ED5B EB7A '.z' nop ; 0000ED5D 90 '.' xed5e: call xee9c ; 0000ED5E E83B01 '.;.' jnz xedd7 ; 0000ED61 7574 'ut' xor bh,bh ; 0000ED63 32FF '2.' mov bl,[bp+0x1] ; 0000ED65 8A5E01 '.^.' shl bx,1 ; 0000ED68 D1E3 '..' mov ax,[cs:bx+0xefd1] ; 0000ED6A 2E8B87D1EF '.....' out 0xb,al ; 0000ED6F E60B '..' mov al,0x2 ; 0000ED71 B002 '..' jmp short xed75 ; 0000ED73 EB00 '..' xed75: out 0xa,al ; 0000ED75 E60A '.',0x0A mov bh,ah ; 0000ED77 8AFC '..' call xd4c4 ; 0000ED79 E848E7 '.H.' call xca78 ; 0000ED7C E8F9DC '...' mov bh,[bp+0x7] ; 0000ED7F 8A7E07 '.~.' call xd4c4 ; 0000ED82 E83FE7 '.?.' mov bh,[bp+0x4] ; 0000ED85 8A7E04 '.~.' call xd4c4 ; 0000ED88 E839E7 '.9.' add si,byte +0x3 ; 0000ED8B 83C603 '...' call xd4d0 ; 0000ED8E E83FE7 '.?.' inc si ; 0000ED91 46 'F' inc si ; 0000ED92 46 'F' cmp byte [bp+0x1],0x5 ; 0000ED93 807E0105 '.~..' jnz xed9e ; 0000ED97 7505 'u.' call xd4d0 ; 0000ED99 E834E7 '.4.' jmp short xedb8 ; 0000ED9C EB1A '..' xed9e: mov al,[0x8b] ; 0000ED9E A08B00 '...' mov bh,0x1b ; 0000EDA1 B71B '..' and al,0xc0 ; 0000EDA3 24C0 '$.' jz xedaf ; 0000EDA5 7408 't.' mov bh,0x23 ; 0000EDA7 B723 '.#' test al,0x40 ; 0000EDA9 A840 '.@' jnz xedaf ; 0000EDAB 7502 'u.' mov bh,0x2a ; 0000EDAD B72A '.*' xedaf: call xd4c4 ; 0000EDAF E812E7 '...' mov bh,[si+0x1] ; 0000EDB2 8A7C01 '.|.' call xd4c4 ; 0000EDB5 E80CE7 '...' xedb8: sub si,byte +0x5 ; 0000EDB8 83EE05 '...' ; ; Wait for a bit... ; xedbb: call xef85 ; 0000EDBB E8C701 '...' jnz xedd7 ; 0000EDBE 7517 'u.' ; ; Read 7 FDC response bytes, starting with ST0, storing them at 0x40:0x42 ; mov cx,0x7 ; 0000EDC0 B90700 '...' mov di,0x42 ; 0000EDC3 BF4200 '.B.' xedc6: call xc9bf ; 0000EDC6 E8F6DB '...' jz xedc6 ; 0000EDC9 74FB 't.' call x919a ; 0000EDCB E8CCA3 '...' in al,dx ; 0000EDCE EC '.' mov [di],al ; 0000EDCF 8805 '..' inc di ; 0000EDD1 47 'G' loop xedc6 ; 0000EDD2 E2F2 '..' ; ; If the FDC's response in ST0 is good, this will return (AH) == 0x00 ; call xd50f ; 0000EDD4 E838E7 '.8.' xedd7: mov [0x41],ah ; 0000EDD7 88264100 '.&A.' ; ; This appears to validate the rest of the FDC response bytes; (AX) should be zero on success ; call xecd5 ; 0000EDDB E8F7FE '...' or ah,ah ; 0000EDDE 0AE4 0x0A,'.' ret ; 0000EDE0 C3 '.' push ds ; 0000EDE1 1E '.' push cx ; 0000EDE2 51 'Q' push si ; 0000EDE3 56 'V' cld ; 0000EDE4 FC '.' mov cx,0x10 ; 0000EDE5 B91000 '...' xor ax,ax ; 0000EDE8 33C0 '3.' mov ds,ax ; 0000EDEA 8ED8 '..' rep lodsb ; 0000EDEC F3AC '..' pop si ; 0000EDEE 5E '^' push si ; 0000EDEF 56 'V' mov cx,0x10 ; 0000EDF0 B91000 '...' mov ax,0x1000 ; 0000EDF3 B80010 '...' mov ds,ax ; 0000EDF6 8ED8 '..' rep lodsb ; 0000EDF8 F3AC '..' pop si ; 0000EDFA 5E '^' pop cx ; 0000EDFB 59 'Y' pop ds ; 0000EDFC 1F '.' call x8fa4 ; 0000EDFD E8A4A1 '...' jnz xee68 ; 0000EE00 7566 'uf' call x9190 ; 0000EE02 E88BA3 '...' mov ah,[bx] ; 0000EE05 8A27 '.',0x27 test ah,0x10 ; 0000EE07 F6C410 '...' jnz xee19 ; 0000EE0A 750D 'u',0x0D cmp ah,0x87 ; 0000EE0C 80FC87 '...' jnz xee14 ; 0000EE0F 7503 'u.' sub ah,0x3 ; 0000EE11 80EC03 '...' xee14: add ah,0x13 ; 0000EE14 80C413 '...' mov [bx],ah ; 0000EE17 8827 '.',0x27 xee19: call xd490 ; 0000EE19 E874E6 '.t.' mov al,0x4a ; 0000EE1C B04A '.J' out 0xb,al ; 0000EE1E E60B '..' mov cx,0xffff ; 0000EE20 B9FFFF '...' call xca4f ; 0000EE23 E829DC '.).' mov al,0x4 ; 0000EE26 B004 '..' xor ah,ah ; 0000EE28 32E4 '2.' mul byte [bp+0x0] ; 0000EE2A F66600 '.f.' add ax,bx ; 0000EE2D 03C3 '..' jnc xee35 ; 0000EE2F 7304 's.' mov ah,0x9 ; 0000EE31 B409 '..' jmp short xee63 ; 0000EE33 EB2E '..' xee35: call xee9c ; 0000EE35 E86400 '.d.' jnz xee68 ; 0000EE38 752E 'u.' mov al,0x2 ; 0000EE3A B002 '..' out 0xa,al ; 0000EE3C E60A '.',0x0A mov bh,0x4d ; 0000EE3E B74D '.M' call xd4c4 ; 0000EE40 E881E6 '...' mov bh,[bp+0x7] ; 0000EE43 8A7E07 '.~.' shl bh,0x2 ; 0000EE46 C0E702 '...' or bh,[bp+0x6] ; 0000EE49 0A7E06 0x0A,'~.' call xd4c4 ; 0000EE4C E875E6 '.u.' add si,byte +0x3 ; 0000EE4F 83C603 '...' call xd4d0 ; 0000EE52 E87BE6 '.{.' add si,byte +0x4 ; 0000EE55 83C604 '...' call xd4d0 ; 0000EE58 E875E6 '.u.' sub si,byte +0x7 ; 0000EE5B 83EE07 '...' call xedbb ; 0000EE5E E85AFF '.Z.' jz xee71 ; 0000EE61 740E 't.' xee63: or word [bp+0x16],0x1 ; 0000EE63 814E160100 '.N...' xee68: mov [0x41],ah ; 0000EE68 88264100 '.&A.' call xecd5 ; 0000EE6C E866FE '.f.' or ah,ah ; 0000EE6F 0AE4 0x0A,'.' xee71: ret ; 0000EE71 C3 '.' xee72: call xc956 ; 0000EE72 E8E1DA '...' mov cx,0x64 ; 0000EE75 B96400 '.d.' xee78: call xc9bf ; 0000EE78 E844DB '.D.' jz xee83 ; 0000EE7B 7406 't.' loop xee78 ; 0000EE7D E2F9 '..' mov ah,0x80 ; 0000EE7F B480 '..' jmp short xee9b ; 0000EE81 EB18 '..' xee83: call x919a ; 0000EE83 E814A3 '...' mov al,0x7 ; 0000EE86 B007 '..' out dx,al ; 0000EE88 EE '.' mov bh,[bp+0x6] ; 0000EE89 8A7E06 '.~.' call xd4c4 ; 0000EE8C E835E6 '.5.' call xef85 ; 0000EE8F E8F300 '...' jnz xee9b ; 0000EE92 7507 'u.' call xef6f ; 0000EE94 E8D800 '...' test al,0xc0 ; 0000EE97 A8C0 '..' mov ah,0x80 ; 0000EE99 B480 '..' xee9b: ret ; 0000EE9B C3 '.' xee9c: mov al,0x1 ; 0000EE9C B001 '..' mov cl,[bp+0x6] ; 0000EE9E 8A4E06 '.N.' shl al,cl ; 0000EEA1 D2E0 '..' test [0x3e],al ; 0000EEA3 84063E00 '..>.' jnz xeec4 ; 0000EEA7 751B 'u.' or [0x3e],al ; 0000EEA9 08063E00 '..>.' call x9190 ; 0000EEAD E8E0A2 '...' mov byte [bx+0x4],0x0 ; 0000EEB0 C6470400 '.G..' call xee72 ; 0000EEB4 E8BBFF '...' jz xeec4 ; 0000EEB7 740B 't.' and al,0x70 ; 0000EEB9 2470 '$p' cmp al,0x70 ; 0000EEBB 3C70 '..' mov al,0x20 ; 0000EF63 B020 '. ' out 0x20,al ; 0000EF65 E620 '. ' mov ax,0x9101 ; 0000EF67 B80191 '...' int 0x15 ; 0000EF6A CD15 '..' pop ds ; 0000EF6C 1F '.' pop ax ; 0000EF6D 58 'X' iret ; 0000EF6E CF '.' xef6f: mov bh,0x8 ; 0000EF6F B708 '..' call xd4c4 ; 0000EF71 E850E5 '.P.' mov cx,0x2 ; 0000EF74 B90200 '...' jmp short xef7c ; 0000EF77 EB03 '..' xef79: mov [0x42],al ; 0000EF79 A24200 '.B.' xef7c: call xd4ba ; 0000EF7C E83BE5 '.;.' loop xef79 ; 0000EF7F E2F8 '..' mov al,[0x42] ; 0000EF81 A04200 '.B.' ret ; 0000EF84 C3 '.' xef85: clc ; 0000EF85 F8 '.' mov ax,0x9001 ; 0000EF86 B80190 '...' int 0x15 ; 0000EF89 CD15 '..' jnc xef98 ; 0000EF8B 730B 's.' test byte [0x3e],0x80 ; 0000EF8D F6063E0080 '..>..' jz xefaf ; 0000EF92 741B 't.' xor ah,ah ; 0000EF94 32E4 '2.' jmp short xefb4 ; 0000EF96 EB1C '..' xef98: mov bx,0x4 ; 0000EF98 BB0400 '...' xef9b: mov cx,0x3d09 ; 0000EF9B B9093D '..=' xor ax,ax ; 0000EF9E 33C0 '3.' xefa0: test byte [0x3e],0x80 ; 0000EFA0 F6063E0080 '..>..' jnz xefb4 ; 0000EFA5 750D 'u',0x0D call x919a ; 0000EFA7 E8F0A1 '...' loop xefa0 ; 0000EFAA E2F4 '..' dec bx ; 0000EFAC 4B 'K' jnz xef9b ; 0000EFAD 75EC 'u.' xefaf: call xca03 ; 0000EFAF E851DA '.Q.' mov ah,0x80 ; 0000EFB2 B480 '..' xefb4: and byte [0x3e],0x7f ; 0000EFB4 80263E007F '.&>..' or ah,ah ; 0000EFB9 0AE4 0x0A,'.' ret ; 0000EFBB C3 '.' db '**********' sub bl,bh ; 0000EFC6 2ADF '*.' add ah,[di] ; 0000EFC8 0225 '.%' add cl,[bx] ; 0000EFCA 020F '..' sbb di,di ; 0000EFCC 1BFF '..' push sp ; 0000EFCE 54 'T' db 0xF6 ; 0000EFCF F6 '.' invd ; 0000EFD0 0F08 '..' jmp x88ea ; 0000EFD2 E91599 '...' inc si ; 0000EFD5 46 'F' out 0x4a,al ; 0000EFD6 E64A '.J' lds ax,[bp+si-0x1a] ; 0000EFD8 C542E6 '.B.' xefdb: mov bh,0x3 ; 0000EFDB B703 '..' call xd4c4 ; 0000EFDD E8E4E4 '...' call xd4d0 ; 0000EFE0 E8EDE4 '...' ret ; 0000EFE3 C3 '.' times 65 db 0xFF ; 0000EFE4 - 0000F024 xf025: cmp ah,0x14 ; 0000F025 80FC14 '...' jc xf031 ; 0000F028 7207 'r.' cmp ah,0xbf ; 0000F02A 80FCBF '...' jnz xf062 ; 0000F02D 7533 'u3' mov ah,0x14 ; 0000F02F B414 '..' xf031: cld ; 0000F031 FC '.' mov bp,sp ; 0000F032 8BEC '..' mov si,0x40 ; 0000F034 BE4000 '.@.' mov ds,si ; 0000F037 8EDE '..' mov dl,[0x10] ; 0000F039 8A161000 '....' and dl,0x30 ; 0000F03D 80E230 '..0' mov si,0xb800 ; 0000F040 BE00B8 '...' cmp dl,0x30 ; 0000F043 80FA30 '..0' jnz xf04b ; 0000F046 7503 'u.' mov si,0xb000 ; 0000F048 BE00B0 '...' xf04b: mov dx,[0x63] ; 0000F04B 8B166300 '..c.' mov es,si ; 0000F04F 8EC6 '..' xchg al,ah ; 0000F051 86C4 '..' mov si,ax ; 0000F053 8BF0 '..' xchg al,ah ; 0000F055 86C4 '..' and si,0xff ; 0000F057 81E6FF00 '....' shl si,1 ; 0000F05B D1E6 '..' call near [cs:si+0x97c6] ; 0000F05D 2EFF94C697 '.....' xf062: jmp x97f0 ; 0000F062 E98BA7 '...' xf065: sti ; 0000F065 FB '.' push es ; 0000F066 06 '.' push ds ; 0000F067 1E '.' push bp ; 0000F068 55 'U' push di ; 0000F069 57 'W' push si ; 0000F06A 56 'V' push bx ; 0000F06B 53 'S' push cx ; 0000F06C 51 'Q' push dx ; 0000F06D 52 'R' push ax ; 0000F06E 50 'P' jmp short xf025 ; 0000F06F EBB4 '..' times 47 db 0xFF ; 0000F071 - 0000F09F db 0xFF,0xFF,0xFF,0xFF,0x38,0x28,0x2D,0x0A,0x1F,0x06,0x19,0x1C,0x02,0x07,0x06,0x07 ; 0000F0A0 db 0x00,0x00,0x00,0x00,0x71,0x50,0x5A,0x0A,0x1F,0x06,0x19,0x1C,0x02,0x07,0x06,0x07 ; 0000F0B0 db 0x00,0x00,0x00,0x00,0x38,0x28,0x2D,0x0A,0x7F,0x06,0x64,0x70,0x02,0x01,0x06,0x07 ; 0000F0C0 db 0x00,0x00,0x00,0x00,0x61,0x50,0x52,0x0F,0x19,0x06,0x19,0x19,0x02,0x0D,0x0B,0x0C ; 0000F0D0 db 0x00,0x00,0x00,0x00,0x38,0x28,0x2D,0x0A,0x1F,0x06,0x19,0x1C,0x02,0x07,0x06,0x07 ; 0000F0E0 db 0x00,0x00,0x00,0x00,0x71,0x50,0x5A,0x0A,0x19,0x06,0x19,0x19,0x02,0x0D,0x0B,0x0C ; 0000F0F0 db 0x00,0x00,0x00,0x00,0x38,0x28,0x2D,0x0A,0x7F,0x06,0x64,0x70,0x02,0x01,0x06,0x07 ; 0000F100 db 0x00,0x00,0x00,0x00,0x61,0x50,0x52,0x0F,0x19,0x06,0x19,0x19,0x02,0x0D,0x0B,0x0C ; 0000F110 times 8 dw 0x0000 ; 0000F120 - 0000F12E xf130: push bp ; 0000F130 55 'U' push ds ; 0000F131 1E '.' push es ; 0000F132 06 '.' push ax ; 0000F133 50 'P' push bx ; 0000F134 53 'S' push cx ; 0000F135 51 'Q' push dx ; 0000F136 52 'R' push si ; 0000F137 56 'V' push di ; 0000F138 57 'W' mov al,0xe0 ; 0000F139 B0E0 '..' out 0x84,al ; 0000F13B E684 '..' cld ; 0000F13D FC '.' call xf30a ; 0000F13E E8C901 '...' mov bx,0x0 ; 0000F141 BB0000 '...' mov ax,0xe000 ; 0000F144 B800E0 '...' mov ds,ax ; 0000F147 8ED8 '..' mov ax,0xaa55 ; 0000F149 B855AA '.U.' cmp ax,[0x0] ; 0000F14C 3B060000 ';...' jnz xf1ac ; 0000F150 755A 'uZ' xor ch,ch ; 0000F152 32ED '2.' mov cl,[0x2] ; 0000F154 8A0E0200 '....' shl cx,0x9 ; 0000F158 C1E109 '...' mov si,0x0 ; 0000F15B BE0000 '...' call xf2b0 ; 0000F15E E84F01 '.O.' jnz xf1ac ; 0000F161 7549 'uI' mov bx,cx ; 0000F163 8BD9 '..' sub sp,byte +0x48 ; 0000F165 83EC48 '..H' mov bp,sp ; 0000F168 8BEC '..' mov ax,ss ; 0000F16A 8CD0 '..' mov es,ax ; 0000F16C 8EC0 '..' mov di,bp ; 0000F16E 8BFD '..' xor ax,ax ; 0000F170 33C0 '3.' mov cx,0x48 ; 0000F172 B94800 '.H.' rep stosb ; 0000F175 F3AA '..' mov si,bp ; 0000F177 8BF5 '..' lea di,[si+0x10] ; 0000F179 8D7C10 '.|.' mov byte [es:di+0x4],0xe ; 0000F17C 26C645040E '&.E..' mov word [es:di],0xffff ; 0000F181 26C705FFFF '&....' mov byte [es:di+0x5],0x9a ; 0000F186 26C645059A '&.E..' lea di,[si+0x18] ; 0000F18B 8D7C18 '.|.' mov byte [es:di+0x4],0xfe ; 0000F18E 26C64504FE '&.E..' mov word [es:di],0xffff ; 0000F193 26C705FFFF '&....' mov byte [es:di+0x5],0x92 ; 0000F198 26C6450592 '&.E..' mov ah,0x87 ; 0000F19D B487 '..' mov cx,bx ; 0000F19F 8BCB '..' shr cx,1 ; 0000F1A1 D1E9 '..' int 0x15 ; 0000F1A3 CD15 '..' add sp,byte +0x48 ; 0000F1A5 83C448 '..H' mov al,0xe1 ; 0000F1A8 B0E1 '..' out 0x84,al ; 0000F1AA E684 '..' xf1ac: mov al,0xe2 ; 0000F1AC B0E2 '..' out 0x84,al ; 0000F1AE E684 '..' mov ax,0xc000 ; 0000F1B0 B800C0 '...' mov ds,ax ; 0000F1B3 8ED8 '..' mov ax,0xaa55 ; 0000F1B5 B855AA '.U.' cmp ax,[0x0] ; 0000F1B8 3B060000 ';...' jnz xf1f9 ; 0000F1BC 753B 'u;' call xf2c0 ; 0000F1BE E8FF00 '...' jnz xf1f9 ; 0000F1C1 7536 'u6' xor ch,ch ; 0000F1C3 32ED '2.' mov cl,[0x2] ; 0000F1C5 8A0E0200 '....' shl cx,0x9 ; 0000F1C9 C1E109 '...' mov ax,0xffff ; 0000F1CC B8FFFF '...' cmp bx,ax ; 0000F1CF 3BD8 ';.' jz xf1f9 ; 0000F1D1 7426 't&' sub ax,bx ; 0000F1D3 2BC3 '+.' cmp ax,cx ; 0000F1D5 3BC1 ';.' jc 0xf1f9 ; 0000F1D7 7220 'r ' add bx,byte +0xf ; 0000F1D9 83C30F '...' and bx,0xfff0 ; 0000F1DC 81E3F0FF '....' mov ax,0xffff ; 0000F1E0 B8FFFF '...' sub ax,bx ; 0000F1E3 2BC3 '+.' cmp ax,cx ; 0000F1E5 3BC1 ';.' jc xf1f9 ; 0000F1E7 7210 'r.' mov si,0x0 ; 0000F1E9 BE0000 '...' call xf2b0 ; 0000F1EC E8C100 '...' jnz xf1f9 ; 0000F1EF 7508 'u.' shr cx,1 ; 0000F1F1 D1E9 '..' call xf298 ; 0000F1F3 E8A200 '...' call xf20c ; 0000F1F6 E81300 '...' xf1f9: call xf305 ; 0000F1F9 E80901 '...' call xf273 ; 0000F1FC E87400 '.t.' call xf2eb ; 0000F1FF E8E900 '...' pop di ; 0000F202 5F '_' pop si ; 0000F203 5E '^' pop dx ; 0000F204 5A 'Z' pop cx ; 0000F205 59 'Y' pop bx ; 0000F206 5B '[' pop ax ; 0000F207 58 'X' pop es ; 0000F208 07 '.' pop ds ; 0000F209 1F '.' pop bp ; 0000F20A 5D ']' ret ; 0000F20B C3 '.' xf20c: push ds ; 0000F20C 1E '.' call xf305 ; 0000F20D E8F500 '...' mov ax,0x0 ; 0000F210 B80000 '...' mov es,ax ; 0000F213 8EC0 '..' mov ax,cs ; 0000F215 8CC8 '..' mov ds,ax ; 0000F217 8ED8 '..' mov di,0x40 ; 0000F219 BF4000 '.@.' mov ax,[es:di] ; 0000F21C 268B05 '&..' mov [0x7124],ax ; 0000F21F A32471 '.$q' add di,byte +0x2 ; 0000F222 83C702 '...' mov ax,[es:di] ; 0000F225 268B05 '&..' mov [0x7126],ax ; 0000F228 A32671 '.&q' shr bx,0x4 ; 0000F22B C1EB04 '...' add bx,0xe000 ; 0000F22E 81C300E0 '....' mov [es:di],bx ; 0000F232 26891D '&..' mov di,0x7c ; 0000F235 BF7C00 '.|.' mov ax,[es:di] ; 0000F238 268B05 '&..' mov [0x7128],ax ; 0000F23B A32871 '.(q' add di,byte +0x2 ; 0000F23E 83C702 '...' mov ax,[es:di] ; 0000F241 268B05 '&..' mov [0x712a],ax ; 0000F244 A32A71 '.*q' mov [es:di],bx ; 0000F247 26891D '&..' mov di,0x10c ; 0000F24A BF0C01 '...' mov ax,[es:di] ; 0000F24D 268B05 '&..' mov [0x712c],ax ; 0000F250 A32C71 '.,q' add di,byte +0x2 ; 0000F253 83C702 '...' mov ax,[es:di] ; 0000F256 268B05 '&..' mov [0x712e],ax ; 0000F259 A32E71 '..q' mov [es:di],bx ; 0000F25C 26891D '&..' mov al,0xe3 ; 0000F25F B0E3 '..' out 0x84,al ; 0000F261 E684 '..' pop ds ; 0000F263 1F '.' xor ch,ch ; 0000F264 32ED '2.' mov cl,[0x2] ; 0000F266 8A0E0200 '....' shl cx,0x9 ; 0000F26A C1E109 '...' shl bx,0x4 ; 0000F26D C1E304 '...' add bx,cx ; 0000F270 03D9 '..' ret ; 0000F272 C3 '.' xf273: cmp bx,byte +0x0 ; 0000F273 83FB00 '...' jz xf297 ; 0000F276 741F 't.' dec bx ; 0000F278 4B 'K' add bx,0xfff ; 0000F279 81C3FF0F '....' and bx,0xf000 ; 0000F27D 81E300F0 '....' shr bx,0xc ; 0000F281 C1EB0C '...' mov ax,0x10 ; 0000F284 B81000 '...' sub ax,bx ; 0000F287 2BC3 '+.' mov cx,0xf000 ; 0000F289 B900F0 '...' mov es,cx ; 0000F28C 8EC1 '..' mov di,bim_table_offset ; 0000F28E BFE0FF '...' mov di,[es:di] ; 0000F291 268B3D '&.=' mov [es:di],al ; 0000F294 268805 '&..' xf297: ret ; 0000F297 C3 '.' xf298: call xf305 ; 0000F298 E86A00 '.j.' xor si,si ; 0000F29B 33F6 '3.' mov ax,0xe000 ; 0000F29D B800E0 '...' mov es,ax ; 0000F2A0 8EC0 '..' mov di,bx ; 0000F2A2 8BFB '..' xor ch,ch ; 0000F2A4 32ED '2.' mov cl,[0x2] ; 0000F2A6 8A0E0200 '....' shl cx,0x8 ; 0000F2AA C1E108 '...' rep movsw ; 0000F2AD F3A5 '..' ret ; 0000F2AF C3 '.' xf2b0: push ax ; 0000F2B0 50 'P' push cx ; 0000F2B1 51 'Q' push dx ; 0000F2B2 52 'R' xor dx,dx ; 0000F2B3 33D2 '3.' xf2b5: lodsb ; 0000F2B5 AC '.' add dl,al ; 0000F2B6 02D0 '..' loop xf2b5 ; 0000F2B8 E2FB '..' test dl,dl ; 0000F2BA 84D2 '..' pop dx ; 0000F2BC 5A 'Z' pop cx ; 0000F2BD 59 'Y' pop ax ; 0000F2BE 58 'X' ret ; 0000F2BF C3 '.' xf2c0: push ds ; 0000F2C0 1E '.' push es ; 0000F2C1 06 '.' push si ; 0000F2C2 56 'V' push di ; 0000F2C3 57 'W' push cx ; 0000F2C4 51 'Q' mov cx,0xc000 ; 0000F2C5 B900C0 '...' mov es,cx ; 0000F2C8 8EC1 '..' xor ch,ch ; 0000F2CA 32ED '2.' mov cl,[es:0x2] ; 0000F2CC 268A0E0200 '&....' shl cx,0x9 ; 0000F2D1 C1E109 '...' sub cx,byte +0x16 ; 0000F2D4 83E916 '...' mov di,cx ; 0000F2D7 8BF9 '..' mov cx,cs ; 0000F2D9 8CC9 '..' mov ds,cx ; 0000F2DB 8ED9 '..' mov si,0xe02e ; 0000F2DD BE2EE0 '...' mov cx,0x3 ; 0000F2E0 B90300 '...' repe cmpsw ; 0000F2E3 F3A7 '..' pop cx ; 0000F2E5 59 'Y' pop di ; 0000F2E6 5F '_' pop si ; 0000F2E7 5E '^' pop es ; 0000F2E8 07 '.' pop ds ; 0000F2E9 1F '.' ret ; 0000F2EA C3 '.' xf2eb: push bx ; 0000F2EB 53 'S' mov bl,0xfc ; 0000F2EC B3FC '..' xf2ee: push eax ; 0000F2EE 6650 'fP' push bp ; 0000F2F0 55 'U' push es ; 0000F2F1 06 '.' pushf ; 0000F2F2 9C '.' cli ; 0000F2F3 FA '.' xor di,di ; 0000F2F4 33FF '3.' mov bp,0xf2fc ; 0000F2F6 BDFCF2 '...' jmp x8796 ; 0000F2F9 E99A94 popf ; 0000F2FC 9D '.' pop es ; 0000F2FD 07 '.' pop bp ; 0000F2FE 5D ']' pop eax ; 0000F2FF 6658 'fX' pop bx ; 0000F301 5B '[' xor ah,ah ; 0000F302 32E4 '2.' ret ; 0000F304 C3 '.' xf305: push bx ; 0000F305 53 'S' mov bl,0xfe ; 0000F306 B3FE '..' jmp short xf2ee ; 0000F308 EBE4 '..' xf30a: push bx ; 0000F30A 53 'S' mov bl,0xff ; 0000F30B B3FF '..' jmp short xf2ee ; 0000F30D EBDF '..' xf30f: call xf337 ; 0000F30F E82500 '.%.' mov ah,0xff ; 0000F312 B4FF '..' jz xf326 ; 0000F314 7410 't.' and al,0xc ; 0000F316 240C '$.' mov ah,0x1 ; 0000F318 B401 '..' cmp al,0xc ; 0000F31A 3C0C '<.' jz xf326 ; 0000F31C 7408 't.' mov ah,0x2 ; 0000F31E B402 '..' test al,0x4 ; 0000F320 A804 '..' jnz xf326 ; 0000F322 7502 'u.' mov ah,0x0 ; 0000F324 B400 '..' xf326: mov al,ah ; 0000F326 8AC4 '..' xor ah,ah ; 0000F328 32E4 '2.' ret ; 0000F32A C3 '.' xf32b: push ax ; 0000F32B 50 'P' cli ; 0000F32C FA '.' call xec2e_wait_8042_ready ; 0000F32D E8FEF8 '...' mov al,0xa3 ; 0000F330 B0A3 '..' ; COMPAQ-SPECIFIC COMMAND: COMPAQ_SLOWD out 0x64,al ; 0000F332 E664 '.d' sti ; 0000F334 FB '.' pop ax ; 0000F335 58 'X' ret ; 0000F336 C3 '.' xf337: cli ; 0000F337 FA '.' call xec2e_wait_8042_ready ; 0000F338 E8F3F8 '...' mov al,0xad ; 0000F33B B0AD '..' out 0x64,al ; 0000F33D E664 '.d' xf33f: in al,0x64 ; 0000F33F E464 '.d' test al,0x1 ; 0000F341 A801 '..' jz xf349 ; 0000F343 7404 't.' in al,0x60 ; 0000F345 E460 '.`' jmp short xf33f ; 0000F347 EBF6 '..' xf349: call xec2e_wait_8042_ready ; 0000F349 E8E2F8 '...' mov al,0xa5 ; 0000F34C B0A5 '..' out 0x64,al ; 0000F34E E664 '.d' call xec2e_wait_8042_ready ; 0000F350 E8DBF8 '...' push cx ; 0000F353 51 'Q' mov cx,0x2710 ; 0000F354 B91027 '..',0x27 xf357: in al,0x64 ; 0000F357 E464 '.d' test al,0x1 ; 0000F359 A801 '..' loope xf357 ; 0000F35B E1FA '..' pop cx ; 0000F35D 59 'Y' jz xf362 ; 0000F35E 7402 't.' in al,0x60 ; 0000F360 E460 '.`' xf362: push ax ; 0000F362 50 'P' pushf ; 0000F363 9C '.' call xec2e_wait_8042_ready ; 0000F364 E8C7F8 '...' mov al,0xae ; 0000F367 B0AE '..' out 0x64,al ; 0000F369 E664 '.d' push cs ; 0000F36B 0E '.' call xf372 ; 0000F36C E80300 '...' jmp short xf373 ; 0000F36F EB02 '..' nop ; 0000F371 90 '.' xf372: iret ; 0000F372 CF '.' xf373: pop ax ; 0000F373 58 'X' sti ; 0000F374 FB '.' ret ; 0000F375 C3 '.' dw 0xFFFF ; 0000F376 FFFF ; ; Pattern buffers for memory tests ; pattern1: db 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02 ; 0000F378 db 0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20 ; 0000F380 db 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00 ; 0000F390 db 0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00 ; 0000F3A0 db 0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00 ; 0000F3B0 db 0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00 ; 0000F3C0 db 0x00,0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00 ; 0000F3D0 db 0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x00 ; 0000F3E0 db 0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 0000F3F0 pattern2: db 0xFF,0xFF,0xFF,0xFE ; 0000F3FC db 0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF ; 0000F400 db 0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF ; 0000F410 db 0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF,0xFF ; 0000F420 db 0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF,0xFF ; 0000F430 db 0xFF,0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF ; 0000F440 db 0xFF,0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF ; 0000F450 db 0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF ; 0000F460 db 0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0000F470 xf480: mov al,0x7d ; 0000F480 B07D out 0x84,al ; 0000F482 E684 mov si,bim_table_offset ; 0000F484 BEE0FF mov si,[cs:si] ; 0000F487 2E8B34 test word [cs:si],0x0f00 ; 0000F48A 2EF704000F jz xf494 ; 0000F48F 7403 jmp xf684 ; 0000F491 E9F001 xf494: mov al,0x0 ; 0000F494 B000 out 0x80,al ; 0000F496 E680 ; ; When we arrive here, the A20 line has been disabled; on most systems, that would ; mean that the ROM's GDT would only be accessible at the "low" ROM address (%0F0730), ; not the "high" address (%FF0730). But fortunately, A20 management on COMPAQ ; DeskPros affects wrap-around only from the 1st to the 2nd megabyte; no other address ; range is affected. ; ; FYI, it seems this code doesn't do anything if bits 6 and 7 of the RAM Settings ; register are set to anything other than 0x40 (ie, it returns to real-mode almost ; immediately after entering protected-mode). ; lgdt [cs:0x077e] ; 0000F498 2E0F01167E07; load [gdtr_hi] into GDTR mov eax,cr0 ; 0000F49E 0F2000 or ax,0x1 ; 0000F4A1 0D0100 mov cr0,eax ; 0000F4A4 0F2200 jmp 0x28:xf4ac ; 0000F4A7 EAACF42800 xf4ac: mov ax,0x8 ; 0000F4AC B80800 '...' mov ds,ax ; 0000F4AF 8ED8 '..' in al,0x61 ; 0000F4B1 E461 '.a' mov ah,al ; 0000F4B3 8AE0 '..' or al,0x8 ; 0000F4B5 0C08 '..' out 0x61,al ; 0000F4B7 E661 '.a' mov al,[0x0] ; 0000F4B9 A00000 '...' xchg ah,al ; 0000F4BC 86E0 '..' out 0x61,al ; 0000F4BE E661 '.a' and ah,0xc0 ; 0000F4C0 80E4C0 '...' ; ; (AH) contains only bits 6 and 7 from the RAM Settings/Diagnostics register ; cmp ah,0x40 ; 0000F4C3 80FC40 jz xf4cb ; 0000F4C6 7403 jmp xf655 ; 0000F4C8 E98A01 xf4cb: or byte [0x2],0x40 ; 0000F4CB 800E020040 '....@' mov ax,0x38 ; 0000F4D0 B83800 '.8.' mov es,ax ; 0000F4D3 8EC0 '..' mov cx,0x2000 ; 0000F4D5 B90020 '.. ' xor si,si ; 0000F4D8 33F6 '3.' es rep lodsd ; 0000F4DA 66F326AD 'f.&.' cld ; 0000F4DE FC '.' mov cx,0x2000 ; 0000F4DF B90020 '.. ' xor di,di ; 0000F4E2 33FF '3.' mov eax,0xaaaaaaaa ; 0000F4E4 66B8AAAAAAAA 'f.....' rep stosd ; 0000F4EA 66F3AB 'f..' mov ebx,eax ; 0000F4ED 668BD8 'f..' mov ax,0x38 ; 0000F4F0 B83800 '.8.' mov ds,ax ; 0000F4F3 8ED8 '..' xor si,si ; 0000F4F5 33F6 '3.' mov cx,0x2000 ; 0000F4F7 B90020 '.. ' xf4fa: lodsd ; 0000F4FA 66AD 'f.' cmp eax,ebx ; 0000F4FC 663BC3 'f;.' jz xf504 ; 0000F4FF 7403 't.' jmp xf599 ; 0000F501 E99500 '...' xf504: dec cx ; 0000F504 49 'I' jz xf509 ; 0000F505 7402 jmp short xf4fa ; 0000F507 EBF1 '..' xf509: mov cx,0x2000 ; 0000F509 B90020 '.. ' xor di,di ; 0000F50C 33FF '3.' mov eax,0x6db66db6 ; 0000F50E 66B8B66DB66D 'f..m.m' rep stosd ; 0000F514 66F3AB 'f..' mov ebx,eax ; 0000F517 668BD8 'f..' mov ax,0x38 ; 0000F51A B83800 '.8.' mov ds,ax ; 0000F51D 8ED8 '..' xor si,si ; 0000F51F 33F6 '3.' mov cx,0x2000 ; 0000F521 B90020 '.. ' xf524: lodsd ; 0000F524 66AD 'f.' cmp eax,ebx ; 0000F526 663BC3 'f;.' jnz xf599 ; 0000F529 756E 'un' dec cx ; 0000F52B 49 'I' jz xf530 ; 0000F52C 7402 jmp short xf524 ; 0000F52E EBF4 '..' xf530: mov cx,0x2000 ; 0000F530 B90020 '.. ' xor di,di ; 0000F533 33FF '3.' mov eax,0x55555555 ; 0000F535 66B855555555 'f.UUUU' rep stosd ; 0000F53B 66F3AB 'f..' mov ebx,eax ; 0000F53E 668BD8 'f..' mov ax,0x38 ; 0000F541 B83800 '.8.' mov ds,ax ; 0000F544 8ED8 '..' xor si,si ; 0000F546 33F6 '3.' mov cx,0x2000 ; 0000F548 B90020 '.. ' xf54b: lodsd ; 0000F54B 66AD 'f.' cmp eax,ebx ; 0000F54D 663BC3 'f;.' jnz xf599 ; 0000F550 7547 'uG' dec cx ; 0000F552 49 'I' jz xf557 ; 0000F553 7402 't.' jmp short xf54b ; 0000F555 EBF4 '..' xf557: mov ax,0x30 ; 0000F557 B83000 '.0.' mov ds,ax ; 0000F55A 8ED8 '..' mov bx,pattern1 ; 0000F55C BB78F3 '.x.' xf55f: mov ax,0x4 ; 0000F55F B80400 '...' mov dx,0x7c ; 0000F562 BA7C00 '.|.' xor di,di ; 0000F565 33FF '3.' mov bp,0xf56d ; 0000F567 BD6DF5 '.m.' jmp 0xf68d ; 0000F56A E92001 '. .' mov dx,0x7c ; 0000F56D BA7C00 '.|.' mov bp,0xf576 ; 0000F570 BD76F5 '.v.' jmp xf68d ; 0000F573 E91701 '...' xor di,di ; 0000F576 33FF '3.' mov dx,0x7c ; 0000F578 BA7C00 '.|.' mov bp,0xf581 ; 0000F57B BD81F5 '...' jmp xe80b ; 0000F57E E98AF2 '...' jc xf599 ; 0000F581 7216 'r.' mov dx,0x7c ; 0000F583 BA7C00 '.|.' mov bp,0xf58c ; 0000F586 BD8CF5 '...' jmp xe80b ; 0000F589 E97FF2 '...' jc xf599 ; 0000F58C 720B 'r.' cmp bx,pattern2 ; 0000F58E 81FBFCF3 '....' jz xf5a0 ; 0000F592 740C 't.' mov bx,pattern2 ; 0000F594 BBFCF3 '...' jmp short xf55f ; 0000F597 EBC6 '..' xf599: mov al,0x1 ; 0000F599 B001 '..' out 0x80,al ; 0000F59B E680 '..' jmp xf63b ; 0000F59D E99B00 '...' xf5a0: mov ax,0x8 ; 0000F5A0 B80800 '...' mov es,ax ; 0000F5A3 8EC0 '..' and byte [es:0x2],0xbf ; 0000F5A5 2680260200BF '&.&...' mov ax,0x40 ; 0000F5AB B84000 '.@.' mov es,ax ; 0000F5AE 8EC0 '..' mov ax,0x4 ; 0000F5B0 B80400 '...' mov bx,pattern1 ; 0000F5B3 BB78F3 '.x.' mov dx,0x7c ; 0000F5B6 BA7C00 '.|.' xor di,di ; 0000F5B9 33FF '3.' mov bp,0xf5c1 ; 0000F5BB BDC1F5 '...' jmp xf68d ; 0000F5BE E9CC00 '...' mov dx,0x7c ; 0000F5C1 BA7C00 '.|.' mov bp,0xf5ca ; 0000F5C4 BDCAF5 '...' jmp xf68d ; 0000F5C7 E9C300 '...' mov ax,0x8 ; 0000F5CA B80800 '...' mov cx,es ; 0000F5CD 8CC1 '..' mov es,ax ; 0000F5CF 8EC0 '..' or byte [es:0x2],0x40 ; 0000F5D1 26800E020040 '&....@' mov es,cx ; 0000F5D7 8EC1 '..' mov ax,0x4 ; 0000F5D9 B80400 '...' mov dx,0x7c ; 0000F5DC BA7C00 '.|.' xor di,di ; 0000F5DF 33FF '3.' mov bp,0xf5e7 ; 0000F5E1 BDE7F5 '...' jmp xe80b ; 0000F5E4 E924F2 '.$.' jc xf599 ; 0000F5E7 72B0 'r.' mov dx,0x7c ; 0000F5E9 BA7C00 '.|.' mov bp,0xf5f2 ; 0000F5EC BDF2F5 '...' jmp xe80b ; 0000F5EF E919F2 '...' jc xf599 ; 0000F5F2 72A5 'r.' mov ax,0x4 ; 0000F5F4 B80400 '...' mov bx,pattern2 ; 0000F5F7 BBFCF3 '...' mov dx,0x7c ; 0000F5FA BA7C00 '.|.' xor di,di ; 0000F5FD 33FF '3.' mov bp,0xf605 ; 0000F5FF BD05F6 '...' jmp xf68d ; 0000F602 E98800 '...' mov dx,0x7c ; 0000F605 BA7C00 '.|.' mov bp,0xf60e ; 0000F608 BD0EF6 '...' jmp xf68d ; 0000F60B E97F00 '...' mov ax,0x8 ; 0000F60E B80800 '...' mov cx,es ; 0000F611 8CC1 '..' mov es,ax ; 0000F613 8EC0 '..' and byte [es:0x2],0xbf ; 0000F615 2680260200BF '&.&...' mov es,cx ; 0000F61B 8EC1 '..' mov ax,0x4 ; 0000F61D B80400 '...' mov dx,0x7c ; 0000F620 BA7C00 '.|.' xor di,di ; 0000F623 33FF '3.' mov bp,0xf62b ; 0000F625 BD2BF6 '.+.' jmp xe80b ; 0000F628 E9E0F1 '...' jc xf638 ; 0000F62B 720B 'r.' mov dx,0x7c ; 0000F62D BA7C00 '.|.' mov bp,0xf636 ; 0000F630 BD36F6 '.6.' jmp xe80b ; 0000F633 E9D5F1 '...' jnc xf63b ; 0000F636 7303 's.' xf638: jmp xf599 ; 0000F638 E95EFF '.^.' xf63b: mov ax,0x8 ; 0000F63B B80800 '...' mov ds,ax ; 0000F63E 8ED8 '..' and byte [0x2],0xbf ; 0000F640 80260200BF '.&...' mov byte [0x0],0xfc ; 0000F645 C6060000FC '.....' in al,0x80 ; 0000F64A E480 '..' cmp al,0x0 ; 0000F64C 3C00 '<.' jnz xf655 ; 0000F64E 7505 'u.' or byte [0x2],0x40 ; 0000F650 800E020040 '....@' xf655: mov ax,0x10 ; 0000F655 B81000 '...' mov es,ax ; 0000F658 8EC0 '..' mov ds,ax ; 0000F65A 8ED8 '..' mov eax,cr0 ; 0000F65C 0F2000 and eax,0x7ffffffe ; 0000F65F 6625FEFFFF7F 'f%....' mov cr0,eax ; 0000F665 0F2200 jmp 0xf000:0xf66d ; 0000F668 EA6DF600F0 '.m...' lidt [cs:0x0784] ; 0000F66D 2E0F011E8407; load [idtr_lo] into IDTR in al,0x80 ; 0000F673 E480 '..' cmp al,0x0 ; 0000F675 3C00 '<.' jz xf684 ; 0000F677 740B 't.' xor dx,dx ; 0000F679 33D2 '3.' mov cx,err205_len ; 0000F67B B91300 '...' mov bx,err205 ; 0000F67E BBD0B6 '...' call xc745 ; 0000F681 E8C1D0 '...' xf684: mov al,0x7e ; 0000F684 B07E '.~' out 0x84,al ; 0000F686 E684 '..' xor al,al ; 0000F688 32C0 '2.' out 0x80,al ; 0000F68A E680 '..' ret ; 0000F68C C3 '.' ; ; Repeatedly copy 0x84 bytes from DS:BX to ES:DI for DX iterations, followed by AX more ; bytes after DX is exhausted. DI advances, BX does not. Return to BP. ; xf68d: mov si,bx ; 0000F68D 8BF3 '..' mov cx,0x21 ; 0000F68F B92100 '.!.' rep movsd ; 0000F692 66F3A5 'f..' dec dx ; 0000F695 4A 'J' jnz xf68d ; 0000F696 75F5 'u.' mov si,bx ; 0000F698 8BF3 '..' mov cx,ax ; 0000F69A 8BC8 '..' rep movsd ; 0000F69C 66F3A5 'f..' jmp bp ; 0000F69F FFE5 '..' xf6a1: push ds ; 0000F6A1 1E '.' xor ebp,ebp ; 0000F6A2 6633ED 'f3.' xf6a5: mov eax,0x1 ; 0000F6A5 66B801000000 'f.....' xor eax,ebp ; 0000F6AB 6633C5 'f3.' mov cx,0x4000 ; 0000F6AE B90040 '..@' xor di,di ; 0000F6B1 33FF '3.' sahf ; 0000F6B3 9E '.' xf6b4: rcl eax,1 ; 0000F6B4 66D1D0 'f..' stosd ; 0000F6B7 66AB 'f.' loop xf6b4 ; 0000F6B9 E2F9 '..' in al,0x61 ; 0000F6BB E461 '.a' or al,0xc ; 0000F6BD 0C0C '..' out 0x61,al ; 0000F6BF E661 '.a' and al,0xf3 ; 0000F6C1 24F3 '$.' out 0x61,al ; 0000F6C3 E661 '.a' mov ebx,0x1 ; 0000F6C5 66BB01000000 'f.....' xor ebx,ebp ; 0000F6CB 6633DD 'f3.' mov eax,ebp ; 0000F6CE 668BC5 'f..' push es ; 0000F6D1 06 '.' pop ds ; 0000F6D2 1F '.' xor si,si ; 0000F6D3 33F6 '3.' mov dh,ah ; 0000F6D5 8AF4 '..' mov cx,0x4000 ; 0000F6D7 B90040 '..@' xf6da: mov ah,dh ; 0000F6DA 8AE6 '..' sahf ; 0000F6DC 9E '.' rcl ebx,1 ; 0000F6DD 66D1D3 'f..' lahf ; 0000F6E0 9F '.' mov dh,ah ; 0000F6E1 8AF4 '..' lodsd ; 0000F6E3 66AD 'f.' xor eax,ebx ; 0000F6E5 6633C3 'f3.' loope xf6da ; 0000F6E8 E1F0 '..' jnz xf700 ; 0000F6EA 7514 'u.' in al,0x61 ; 0000F6EC E461 '.a' test al,0x40 ; 0000F6EE A840 '.@' mov eax,0x0 ; 0000F6F0 66B800000000 'f.....' jnz xf700 ; 0000F6F6 7508 'u.' dec ebp ; 0000F6F8 664D 'fM' jpe xf6a5 ; 0000F6FA 7AA9 'z.' pop ds ; 0000F6FC 1F '.' xor ax,ax ; 0000F6FD 33C0 '3.' ret ; 0000F6FF C3 '.' xf700: mov byte [si],0x0 ; 0000F700 C60400 '...' push ax ; 0000F703 50 'P' in al,0x61 ; 0000F704 E461 '.a' or al,0xc ; 0000F706 0C0C '..' out 0x61,al ; 0000F708 E661 '.a' and al,0xf3 ; 0000F70A 24F3 '$.' out 0x61,al ; 0000F70C E661 '.a' pop ax ; 0000F70E 58 'X' or eax,eax ; 0000F70F 660BC0 'f..' jnz xf72d ; 0000F712 7519 'u.' call x86db ; 0000F714 E8C48F '...' xchg ah,al ; 0000F717 86E0 '..' and ah,0xf ; 0000F719 80E40F '...' xor si,si ; 0000F71C 33F6 '3.' mov cl,0x4 ; 0000F71E B104 '..' xf720: rcr ah,1 ; 0000F720 D0DC '..' jnc xf729 ; 0000F722 7305 's.' inc si ; 0000F724 46 'F' loop xf720 ; 0000F725 E2F9 '..' xor si,si ; 0000F727 33F6 '3.' xf729: xor al,al ; 0000F729 32C0 '2.' jmp short xf73e ; 0000F72B EB11 '..' xf72d: sub si,byte +0x4 ; 0000F72D 83EE04 '...' mov cx,0x4 ; 0000F730 B90400 '...' xf733: test al,0xff ; 0000F733 A8FF '..' jnz xf73e ; 0000F735 7507 'u.' shr eax,0x8 ; 0000F737 66C1E808 'f...' inc si ; 0000F73B 46 'F' loop xf733 ; 0000F73C E2F5 '..' xf73e: mov cl,al ; 0000F73E 8AC8 '..' mov dx,si ; 0000F740 8BD6 '..' pop ds ; 0000F742 1F '.' stc ; 0000F743 F9 '.' ret ; 0000F744 C3 '.' xf745: pusha ; 0000F745 60 '`' push ds ; 0000F746 1E '.' push gs ; 0000F747 0FA8 '..' push fs ; 0000F749 0FA0 '..' mov al,0x75 ; 0000F74B B075 '.u' out 0x84,al ; 0000F74D E684 '..' mov ax,0x40 ; 0000F74F B84000 '.@.' mov ds,ax ; 0000F752 8ED8 '..' mov [0x67],sp ; 0000F754 89266700 '.&g.' mov [0x69],ss ; 0000F758 8C166900 '..i.' mov cx,0x0 ; 0000F75C B90000 '...' mov al,0x76 ; 0000F75F B076 '.v' out 0x84,al ; 0000F761 E684 '..' push cx ; 0000F763 51 'Q' call x80e2 ; 0000F764 E87B89 '.{.' pop cx ; 0000F767 59 'Y' jz xf770 ; 0000F768 7406 't.' or cl,0x1 ; 0000F76A 80C901 '...' jmp xf800 ; 0000F76D E99000 '...' xf770: mov al,0x77 ; 0000F770 B077 '.w' out 0x84,al ; 0000F772 E684 '..' push cx ; 0000F774 51 'Q' xor bx,bx ; 0000F775 33DB '3.' pop cx ; 0000F777 59 'Y' or bx,bx ; 0000F778 0BDB '..' jz xf782 ; 0000F77A 7406 't.' or cl,0x2 ; 0000F77C 80C902 '...' jmp short xf782 ; 0000F77F EB01 '..' nop ; 0000F781 90 '.' xf782: mov al,cl ; 0000F782 8AC1 '..' out 0x80,al ; 0000F784 E680 '..' mov ah,0x6 ; 0000F786 B406 '..' or cl,cl ; 0000F788 0AC9 0x0A,'.' jz xf78e ; 0000F78A 7402 't.' mov ah,0x7 ; 0000F78C B407 '..' xf78e: mov al,0x78 ; 0000F78E B078 '.x' out 0x84,al ; 0000F790 E684 '..' push ax ; 0000F792 50 'P' in al,0x60 ; 0000F793 E460 '.`' mov al,0x20 ; 0000F795 B020 '. ' out 0x64,al ; 0000F797 E664 '.d' call xec2e_wait_8042_ready ; 0000F799 E892F4 '...' xf79c: in al,0x64 ; 0000F79C E464 '.d' test al,0x1 ; 0000F79E A801 '..' jz xf79c ; 0000F7A0 74FA 't.' in al,0x60 ; 0000F7A2 E460 '.`' mov ah,al ; 0000F7A4 8AE0 '..' or ah,0x4 ; 0000F7A6 80CC04 '...' push ax ; 0000F7A9 50 'P' call xec2e_wait_8042_ready ; 0000F7AA E881F4 '...' pop ax ; 0000F7AD 58 'X' mov al,0x60 ; 0000F7AE B060 '.`' out 0x64,al ; 0000F7B0 E664 '.d' push ax ; 0000F7B2 50 'P' call xec2e_wait_8042_ready ; 0000F7B3 E878F4 '.x.' pop ax ; 0000F7B6 58 'X' mov al,ah ; 0000F7B7 8AC4 '..' out 0x60,al ; 0000F7B9 E660 '.`' pop ax ; 0000F7BB 58 'X' mov al,0x8f ; 0000F7BC B08F '..' call xb549 ; 0000F7BE E888BD '...' call xec2e_wait_8042_ready ; 0000F7C1 E86AF4 '.j.' mov al,0xfe ; 0000F7C4 B0FE '..' out 0x64,al ; 0000F7C6 E664 '.d' xf7c8: hlt ; 0000F7C8 F4 '.' jmp short xf7c8 ; 0000F7C9 EBFD '..' mov al,0x79 ; 0000F7CB B079 '.y' out 0x84,al ; 0000F7CD E684 '..' clc ; 0000F7CF F8 '.' jmp short xf7d8 ; 0000F7D0 EB06 '..' nop ; 0000F7D2 90 '.' mov al,0x7a ; 0000F7D3 B07A '.z' out 0x84,al ; 0000F7D5 E684 '..' stc ; 0000F7D7 F9 '.' xf7d8: mov ax,0x40 ; 0000F7D8 B84000 '.@.' mov ds,ax ; 0000F7DB 8ED8 '..' mov ss,[0x69] ; 0000F7DD 8E166900 '..i.' mov sp,[0x67] ; 0000F7E1 8B266700 '.&g.' jc xf7ea ; 0000F7E5 7203 'r.' jmp short xf812 ; 0000F7E7 EB29 '.)' nop ; 0000F7E9 90 '.' xf7ea: in al,0x80 ; 0000F7EA E480 '..' mov cl,al ; 0000F7EC 8AC8 '..' test cl,0x2 ; 0000F7EE F6C102 '...' jz xf800 ; 0000F7F1 740D 't',0x0D mov dx,0x0 ; 0000F7F3 BA0000 '...' mov bx,err102 ; 0000F7F6 BB8CB6 '...' mov cx,err102_len ; 0000F7F9 B91A00 '...' call xc745 ; 0000F7FC E846CF '.F.' hlt ; 0000F7FF F4 '.' xf800: test cl,0x1 ; 0000F800 F6C101 '...' jz xf812 ; 0000F803 740D 't',0x0D mov dx,0x0 ; 0000F805 BA0000 '...' mov bx,err102 ; 0000F808 BB8CB6 '...' mov cx,err102_len ; 0000F80B B91A00 '...' call xc745 ; 0000F80E E834CF '.4.' hlt ; 0000F811 F4 '.' xf812: mov al,0x7b ; 0000F812 B07B '.{' out 0x84,al ; 0000F814 E684 '..' pop fs ; 0000F816 0FA1 '..' pop gs ; 0000F818 0FA9 '..' pop ds ; 0000F81A 1F '.' popa ; 0000F81B 61 'a' ret ; 0000F81C C3 '.' mov ax,0x0 ; 0000F81D B80000 '...' iret ; 0000F820 CF '.' sbb ax,0x30f8 ; 0000F821 1DF830 '..0' add [bx+si],al ; 0000F824 0000 '..' xchg al,[bx+si] ; 0000F826 8600 '..' add bh,bh ; 0000F828 00FF '..' times 23 db 0xFF ; 0000F82A - 0000F840 sti ; 0000F841 FB '.' push ds ; 0000F842 1E '.' mov ax,0x40 ; 0000F843 B84000 '.@.' mov ds,ax ; 0000F846 8ED8 '..' mov ax,[0x13] ; 0000F848 A11300 '...' pop ds ; 0000F84B 1F '.' iret ; 0000F84C CF '.' call x9e82 ; 0000F84D E832A6 '.2.' iret ; 0000F850 CF '.' db '********' cmp ah,0x7f ; 0000F859 80FC7F '...' jna xf8aa ; 0000F85C 764C 'vL' cmp ah,0xc0 ; 0000F85E 80FCC0 '...' jz xf87a ; 0000F861 7417 't.' cmp ah,0x92 ; 0000F863 80FC92 '...' jnc xf8aa ; 0000F866 7342 'sB' push di ; 0000F868 57 'W' mov di,ax ; 0000F869 8BF8 '..' xf86b: and di,0x7f00 ; 0000F86B 81E7007F '....' shr di,0x7 ; 0000F86F C1EF07 '...' call near [cs:di+0xf884] ; 0000F872 2EFF9584F8 '.....' jmp short xf880 ; 0000F877 EB07 '..' nop ; 0000F879 90 '.' xf87a: push di ; 0000F87A 57 'W' mov di,0x9200 ; 0000F87B BF0092 '...' jmp short xf86b ; 0000F87E EBEB '..' xf880: pop di ; 0000F880 5F '_' retf 0x2 ; 0000F881 CA0200 '...' ret 0xc4f8 ; 0000F884 C2F8C4 '...' clc ; 0000F887 F8 '.' db 0xC6 ; 0000F888 C6 '.' clc ; 0000F889 F8 '.' pop cx ; 0000F88A 59 'Y' mov ax,[0xa1d9] ; 0000F88B A1D9A1 '...' enter 0x8ef8,0xa2 ; 0000F88E C8F88EA2 '....' shl word [bp+si+0xa49d],cl ; 0000F892 D3A29DA4 '....' lodsb ; 0000F896 AC '.' movsb ; 0000F897 A4 '.' mov si,0xbef8 ; 0000F898 BEF8BE '...' clc ; 0000F89B F8 '.' mov si,0xbef8 ; 0000F89C BEF8BE '...' clc ; 0000F89F F8 '.' mov si,0xbef8 ; 0000F8A0 BEF8BE '...' clc ; 0000F8A3 F8 '.' retf 0xccf8 ; 0000F8A4 CAF8CC '...' clc ; 0000F8A7 F8 '.' db 0x88 ; 0000F8A8 88 '.' movsw ; 0000F8A9 A5 '.' xf8aa: cmp ah,0x4f ; 0000F8AA 80FC4F '..O' jnz xf8b3 ; 0000F8AD 7504 'u.' stc ; 0000F8AF F9 '.' retf 0x2 ; 0000F8B0 CA0200 '...' xf8b3: sti ; 0000F8B3 FB '.' mov ah,0x86 ; 0000F8B4 B486 '..' stc ; 0000F8B6 F9 '.' retf 0x2 ; 0000F8B7 CA0200 '...' xf8ba: sti ; 0000F8BA FB '.' xor ah,ah ; 0000F8BB 32E4 '2.' ret ; 0000F8BD C3 '.' pop di ; 0000F8BE 5F '_' pop di ; 0000F8BF 5F '_' jmp short xf8aa ; 0000F8C0 EBE8 '..' jmp short xf8ba ; 0000F8C2 EBF6 '..' jmp short xf8ba ; 0000F8C4 EBF4 '..' jmp short xf8ba ; 0000F8C6 EBF2 '..' jmp short xf8ba ; 0000F8C8 EBF0 '..' jmp short xf8ba ; 0000F8CA EBEE '..' pop di ; 0000F8CC 5F '_' pop di ; 0000F8CD 5F '_' xor ah,ah ; 0000F8CE 32E4 '2.' iret ; 0000F8D0 CF '.' ; ; 11 pairs of I/O ports/values for early I/O port (eg, PIC) initialization ; xf8d1: db 0xF1,0x00 db 0x20,0x11 db 0x21,0x08 db 0x21,0x04 db 0x21,0x01 db 0x21,0xFF db 0xA0,0x11 db 0xA1,0x70 db 0xA1,0x02 db 0xA1,0x01 db 0xA1,0xFF xf8e7: dw 0xba95 ; SHUTDOWN 0x00 dw 0xba95 ; SHUTDOWN 0x01 dw 0xd9ca ; SHUTDOWN 0x02 dw 0xd9d4 ; SHUTDOWN 0x03 dw 0xfa21 ; SHUTDOWN 0x04 dw 0xfa17 ; SHUTDOWN 0x05 dw 0xf7cb ; SHUTDOWN 0x06 dw 0xf7d3 ; SHUTDOWN 0x07 dw 0xf7d3 ; SHUTDOWN 0x08 ; ; The entry for 0x09 is empty because the ROM dispatches directly to xa43c, ; bypassing I/O port (eg, PIC) re-initialization. ; dw 0x0000 ; SHUTDOWN 0x09 ; ; The entry for 0x0a seems useless, because the ROM dispatches directly to xfa0a, ; also bypassing I/O port (eg, PIC) re-initialization. ; dw 0xfa0a ; SHUTDOWN 0x0a ; ; ROM dispatch addresses ; xf8fd: dw 0x0003,0xe000 xf901: dw 0x0003,0xc800 reset: mov al,0x0 ; 0000F905 B000 '..' out 0x84,al ; 0000F907 E684 '..' mov al,0x0 ; 0000F909 B000 '..' out 0x85,al ; 0000F90B E685 '..' mov ah,0x2 ; 0000F90D B402 '..' sahf ; 0000F90F 9E '.' cli ; 0000F910 FA '.' mov ax,0xfff0 ; 0000F911 B8F0FF '...' lmsw ax ; 0000F914 0F01F0 '...' mov ax,0x40 ; 0000F917 B84000 '.@.' mov ds,ax ; 0000F91A 8ED8 '..' in al,0x64 ; 0000F91C E464 '.d' test al,0x4 ; 0000F91E A804 '..' jnz xf984 ; 0000F920 7562 'ub' mov gs,dx ; 0000F922 8EEA '..' ; GS PRESERVES CPU ID (DH) AND REVISION (DL) mov al,0x1 ; 0000F924 B001 '..' out 0x84,al ; 0000F926 E684 '..' mov al,0xaa ; 0000F928 B0AA '..' out 0x64,al ; 0000F92A E664 '.d' mov cx,0xffff ; 0000F92C B9FFFF '...' xf92f: in al,0x64 ; 0000F92F E464 '.d' test al,0x1 ; 0000F931 A801 '..' jnz xf93a ; 0000F933 7505 'u.' loop xf92f ; 0000F935 E2F8 '..' jmp short xf976 ; 0000F937 EB3D '.=' nop ; 0000F939 90 '.' xf93a: mov al,0x2 ; 0000F93A B002 '..' out 0x84,al ; 0000F93C E684 '..' in al,0x60 ; 0000F93E E460 '.`' mov al,0x3 ; 0000F940 B003 '..' out 0x84,al ; 0000F942 E684 '..' mov al,0x4 ; 0000F944 B004 '..' out 0x84,al ; 0000F946 E684 '..' mov ax,0xe000 ; 0000F948 B800E0 '...' mov ds,ax ; 0000F94B 8ED8 '..' xor bx,bx ; 0000F94D 33DB '3.' cmp word [bx],0x55aa ; 0000F94F 813FAA55 '.?.U' jnz xf95d ; 0000F953 7508 'u.' mov bp,0xf976 ; 0000F955 BD76F9 '.v.' jmp far [cs:0xf8fd] ; 0000F958 2EFF2EFDF8 '.....' xf95d: mov al,0x5 ; 0000F95D B005 '..' out 0x84,al ; 0000F95F E684 '..' mov ax,0xc800 ; 0000F961 B800C8 '...' mov ds,ax ; 0000F964 8ED8 '..' xor bx,bx ; 0000F966 33DB '3.' cmp word [bx],0x55aa ; 0000F968 813FAA55 '.?.U' jnz xf976 ; 0000F96C 7508 'u.' mov bp,0xf976 ; 0000F96E BD76F9 '.v.' jmp far [cs:0xf901] ; 0000F971 2EFF2E01F9 '.....' xf976: mov al,0x6 ; 0000F976 B006 '..' out 0x84,al ; 0000F978 E684 '..' mov ax,0x40 ; 0000F97A B84000 '.@.' mov ds,ax ; 0000F97D 8ED8 '..' mov ax,0x0 ; 0000F97F B80000 '...' jmp short xf992 ; 0000F982 EB0E '..' xf984: mov al,0x7 ; 0000F984 B007 '..' out 0x84,al ; 0000F986 E684 '..' ; ; Request the CMOS SHUTDOWN byte at CMOS address 0x0F, and then zero it ; mov al,0x8f ; 0000F988 B08F '..' out 0x70,al ; 0000F98A E670 '.p' jmp $+2 ; 0000F98C EB00 '..' jmp $+2 ; 0000F98E EB00 '..' in al,0x71 ; 0000F990 E471 '.q' xf992: mov bx,ax ; 0000F992 8BD8 '..' mov al,0x8f ; 0000F994 B08F '..' out 0x70,al ; 0000F996 E670 '.p' jmp $+2 ; 0000F998 EB00 '..' jmp $+2 ; 0000F99A EB00 '..' mov al,0x0 ; 0000F99C B000 '..' out 0x71,al ; 0000F99E E671 '.q' ; ; Special CMOS SHUTDOWN dispatch for 0x09 ; cmp bl,0x9 ; 0000F9A0 80FB09 '...' jnz xf9a8 ; 0000F9A3 7503 'u.' jmp xa43c ; 0000F9A5 E994AA '...' xf9a8: mov al,0x8 ; 0000F9A8 B008 '..' out 0x84,al ; 0000F9AA E684 '..' ; ; Special CMOS SHUTDOWN dispatch for 0x0a ; cmp bl,0xa ; 0000F9AC 80FB0A '..',0x0A jnz xf9b4 ; 0000F9AF 7503 'u.' jmp short xfa0a ; 0000F9B1 EB57 '.W' nop ; 0000F9B3 90 '.' xf9b4: xor al,al ; 0000F9B4 32C0 '2.' out 0xf1,al ; 0000F9B6 E6F1 '..' mov ax,0xf000 ; 0000F9B8 B800F0 '...' mov ds,ax ; 0000F9BB 8ED8 '..' xor dx,dx ; 0000F9BD 33D2 '3.' mov si,xf8d1 ; 0000F9BF BED1F8 '...' mov cx,0xb ; 0000F9C2 B90B00 '...' xf9c5: lodsb ; 0000F9C5 AC '.' mov dl,al ; 0000F9C6 8AD0 '..' lodsb ; 0000F9C8 AC '.' out dx,al ; 0000F9C9 EE '.' loop xf9c5 ; 0000F9CA E2F9 '..' mov dx,0xa0 ; 0000F9CC BAA000 '...' xf9cf: mov cx,0x8 ; 0000F9CF B90800 '...' xf9d2: mov al,0xb ; 0000F9D2 B00B '..' out dx,al ; 0000F9D4 EE '.' in al,dx ; 0000F9D5 EC '.' or al,al ; 0000F9D6 0AC0 0x0A,'.' jz xf9df ; 0000F9D8 7405 mov al,0x20 ; 0000F9DA B020 '. ' out dx,al ; 0000F9DC EE '.' loop xf9d2 ; 0000F9DD E2F3 '..' xf9df: cmp dx,byte +0x20 ; 0000F9DF 83FA20 '.. ' jz xf9e9 ; 0000F9E2 7405 't.' mov dx,0x20 ; 0000F9E4 BA2000 '. .' jmp short xf9cf ; 0000F9E7 EBE6 '..' xf9e9: mov al,0x0 ; 0000F9E9 B000 '..' out 0x20,al ; 0000F9EB E620 '. ' out 0xa0,al ; 0000F9ED E6A0 '..' mov al,0x9 ; 0000F9EF B009 '..' out 0x84,al ; 0000F9F1 E684 '..' ; ; Verify that the CMOS SHUTDOWN byte is <= 0x0B (and if not, set it to 0x00) ; ; NOTE: This test permits 0x0B, but there is no entry for 0x0B in the table at xf8e7. ; cmp bl,0xb ; 0000F9F3 80FB0B '...' jna xf9fa ; 0000F9F6 7602 'v.' mov bl,0x0 ; 0000F9F8 B300 '..' ; ; Dispatch according to the CMOS SHUTDOWN byte ; xf9fa: xor bh,bh ; 0000F9FA 32FF '2.' shl bl,1 ; 0000F9FC D0E3 '..' mov si,[cs:bx+xf8e7] ; 0000F9FE 2E8BB7E7F8 '.....' mov ax,0x40 ; 0000FA03 B84000 '.@.' mov ds,ax ; 0000FA06 8ED8 '..' jmp si ; 0000FA08 FFE6 '..' xfa0a: mov al,0xa ; 0000FA0A B00A '.',0x0A out 0x84,al ; 0000FA0C E684 '..' mov ax,0x40 ; 0000FA0E B84000 '.@.' mov ds,ax ; 0000FA11 8ED8 '..' jmp far [0x67] ; 0000FA13 FF2E6700 '..g.' mov al,0xb ; 0000FA17 B00B '..' out 0x84,al ; 0000FA19 E684 '..' mov al,0x20 ; 0000FA1B B020 '. ' out 0x20,al ; 0000FA1D E620 '. ' jmp short xfa0a ; 0000FA1F EBE9 '..' mov al,0xc ; 0000FA21 B00C '..' out 0x84,al ; 0000FA23 E684 '..' in al,0x61 ; 0000FA25 E461 '.a' and al,0xf3 ; 0000FA27 24F3 '$.' out 0x61,al ; 0000FA29 E661 '.a' mov al,0xe ; 0000FA2B B00E '..' out 0x70,al ; 0000FA2D E670 '.p' ; ; Begin warm boot ; int 0x19 ; 0000FA2F CD19 '..' db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0000FA31 ................ db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0000FA41 ................ db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0000FA51 ................ db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00 ; 0000FA61 ................ db 0x00,0x00,0x00,0x00,0x00,0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E,0x7E,0xFF,0xDB ; 0000FA71 .....~......~~.. db 0xFF,0xC3,0xE7,0xFF,0x7E,0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x10,0x38,0x7C ; 0000FA81 ....~l...|8...8| db 0xFE,0x7C,0x38,0x10,0x00,0x38,0x7C,0x38,0xFE,0xFE,0x7C,0x38,0x7C,0x10,0x10,0x38 ; 0000FA91 .|8..8|8..|8|..8 db 0x7C,0xFE,0x7C,0x38,0x7C,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0xFF,0xFF,0xE7 ; 0000FAA1 |.|8|........... db 0xC3,0xC3,0xE7,0xFF,0xFF,0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,0xFF,0xC3,0x99 ; 0000FAB1 .......fBBf..... db 0xBD,0xBD,0x99,0xC3,0xFF,0x0F,0x07,0x0F,0x7D,0xCC,0xCC,0xCC,0x78,0x3C,0x66,0x66 ; 0000FAC1 ........}...x.ff db 0x66,0x3C,0x18,0x7E,0x18,0x3F,0x33,0x3F,0x30,0x30,0x70,0xF0,0xE0,0x7F,0x63,0x7F ; 0000FAD1 f..~.?3?00p...c. db 0x63,0x63,0x67,0xE6,0xC0,0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99,0x80,0xE0,0xF8 ; 0000FAE1 ccg...Z....Z.... db 0xFE,0xF8,0xE0,0x80,0x00,0x02,0x0E,0x3E,0xFE,0x3E,0x0E,0x02,0x00,0x18,0x3C,0x7E ; 0000FAF1 ...............~ db 0x18,0x18,0x7E,0x3C,0x18,0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,0x7F,0xDB,0xDB ; 0000FB01 ..~..fffff.f.... db 0x7B,0x1B,0x1B,0x1B,0x00,0x3E,0x63,0x38,0x6C,0x6C,0x38,0xCC,0x78,0x00,0x00,0x00 ; 0000FB11 {.....c8ll8.x... db 0x00,0x7E,0x7E,0x7E,0x00,0x18,0x3C,0x7E,0x18,0x7E,0x3C,0x18,0xFF,0x18,0x3C,0x7E ; 0000FB21 .~~~...~.~.....~ db 0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x18,0x0C ; 0000FB31 .........~...... db 0xFE,0x0C,0x18,0x00,0x00,0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00,0x00,0x00,0xC0 ; 0000FB41 ......0`.`0..... db 0xC0,0xC0,0xFE,0x00,0x00,0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00,0x00,0x18,0x3C ; 0000FB51 ......$f.f$..... db 0x7E,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00 ; 0000FB61 ~.......~....... db 0x00,0x00,0x00,0x00,0x00,0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,0x6C,0x6C,0x6C ; 0000FB71 .....0xx00.0.lll db 0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00,0x30,0x7C,0xC0 ; 0000FB81 .....ll.l.ll.0|. db 0x78,0x0C,0xF8,0x30,0x00,0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00,0x38,0x6C,0x38 ; 0000FB91 x..0.....0f..8l8 db 0x76,0xDC,0xCC,0x76,0x00,0x60,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60 ; 0000FBA1 v..v.``.......0` db 0x60,0x60,0x30,0x18,0x00,0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00,0x00,0x66,0x3C ; 0000FBB1 ``0..`0...0`..f. db 0xFF,0x3C,0x66,0x00,0x00,0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00,0x00,0x00,0x00 ; 0000FBC1 ..f...00.00..... db 0x00,0x00,0x30,0x30,0x60,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 0000FBD1 ..00`........... db 0x00,0x00,0x30,0x30,0x00,0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x7C,0xC6,0xCE ; 0000FBE1 ..00....0`...|.. db 0xDE,0xF6,0xE6,0x7C,0x00,0x30,0x70,0x30,0x30,0x30,0x30,0xFC,0x00,0x78,0xCC,0x0C ; 0000FBF1 ...|.0p0000..x.. db 0x38,0x60,0xCC,0xFC,0x00,0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00,0x1C,0x3C,0x6C ; 0000FC01 8`...x..8..x...l db 0xCC,0xFE,0x0C,0x1E,0x00,0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00,0x38,0x60,0xC0 ; 0000FC11 ...........x.8`. db 0xF8,0xCC,0xCC,0x78,0x00,0xFC,0xCC,0x0C,0x18,0x30,0x30,0x30,0x00,0x78,0xCC,0xCC ; 0000FC21 ...x.....000.x.. db 0x78,0xCC,0xCC,0x78,0x00,0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00,0x00,0x30,0x30 ; 0000FC31 x..x.x..|..p..00 db 0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x60,0x18,0x30,0x60 ; 0000FC41 ..00..00..00`.0` db 0xC0,0x60,0x30,0x18,0x00,0x00,0x00,0xFC,0x00,0x00,0xFC,0x00,0x00,0x60,0x30,0x18 ; 0000FC51 .`0..........`0. db 0x0C,0x18,0x30,0x60,0x00,0x78,0xCC,0x0C,0x18,0x30,0x00,0x30,0x00,0x7C,0xC6,0xDE ; 0000FC61 ..0`.x...0.0.|.. db 0xDE,0xDE,0xC0,0x78,0x00,0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00,0xFC,0x66,0x66 ; 0000FC71 ...x.0x.......ff db 0x7C,0x66,0x66,0xFC,0x00,0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00,0xF8,0x6C,0x66 ; 0000FC81 |ff...f...f...lf db 0x66,0x66,0x6C,0xF8,0x00,0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00,0xFE,0x62,0x68 ; 0000FC91 ffl...bhxhb...bh db 0x78,0x68,0x60,0xF0,0x00,0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3E,0x00,0xCC,0xCC,0xCC ; 0000FCA1 xh`...f...f..... db 0xFC,0xCC,0xCC,0xCC,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x1E,0x0C,0x0C ; 0000FCB1 .....x00000x.... db 0x0C,0xCC,0xCC,0x78,0x00,0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,0xF0,0x60,0x60 ; 0000FCC1 ...x..flxlf...`` db 0x60,0x62,0x66,0xFE,0x00,0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0x00,0xC6,0xE6,0xF6 ; 0000FCD1 `bf............. db 0xDE,0xCE,0xC6,0xC6,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0xFC,0x66,0x66 ; 0000FCE1 .....8l...l8..ff db 0x7C,0x60,0x60,0xF0,0x00,0x78,0xCC,0xCC,0xCC,0xDC,0x78,0x1C,0x00,0xFC,0x66,0x66 ; 0000FCF1 |``..x....x...ff db 0x7C,0x6C,0x66,0xE6,0x00,0x78,0xCC,0xE0,0x70,0x1C,0xCC,0x78,0x00,0xFC,0xB4,0x30 ; 0000FD01 |lf..x..p..x...0 db 0x30,0x30,0x30,0x78,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00,0xCC,0xCC,0xCC ; 0000FD11 000x............ db 0xCC,0xCC,0x78,0x30,0x00,0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00,0xC6,0xC6,0x6C ; 0000FD21 ..x0...........l db 0x38,0x38,0x6C,0xC6,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00,0xFE,0xC6,0x8C ; 0000FD31 88l.....x00x.... db 0x18,0x32,0x66,0xFE,0x00,0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00,0xC0,0x60,0x30 ; 0000FD41 .2f..x`````x..`0 db 0x18,0x0C,0x06,0x02,0x00,0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,0x10,0x38,0x6C ; 0000FD51 .....x.....x..8l db 0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x30,0x30,0x18 ; 0000FD61 .............00. db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00,0xE0,0x60,0x60 ; 0000FD71 .......x.|.v..`` db 0x7C,0x66,0x66,0xDC,0x00,0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00,0x1C,0x0C,0x0C ; 0000FD81 |ff....x...x.... db 0x7C,0xCC,0xCC,0x76,0x00,0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00,0x38,0x6C,0x60 ; 0000FD91 |..v...x...x.8l` db 0xF0,0x60,0x60,0xF0,0x00,0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8,0xE0,0x60,0x6C ; 0000FDA1 .``....v..|...`l db 0x76,0x66,0x66,0xE6,0x00,0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,0x0C,0x00,0x0C ; 0000FDB1 vff..0.p000x.... db 0x0C,0x0C,0xCC,0xCC,0x78,0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00,0x70,0x30,0x30 ; 0000FDC1 ....x.`flxl..p00 db 0x30,0x30,0x30,0x78,0x00,0x00,0x00,0xCC,0xFE,0xFE,0xD6,0xC6,0x00,0x00,0x00,0xF8 ; 0000FDD1 000x............ db 0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0xDC ; 0000FDE1 .......x...x.... db 0x66,0x66,0x7C,0x60,0xF0,0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E,0x00,0x00,0xDC ; 0000FDF1 ff|`...v..|..... db 0x76,0x66,0x60,0xF0,0x00,0x00,0x00,0x7C,0xC0,0x78,0x0C,0xF8,0x00,0x10,0x30,0x7C ; 0000FE01 vf`....|.x....0| db 0x30,0x30,0x34,0x18,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0xCC ; 0000FE11 004........v.... db 0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0xC6,0xD6,0xFE,0xFE,0x6C,0x00,0x00,0x00,0xC6 ; 0000FE21 ..x0.......l.... db 0x6C,0x38,0x6C,0xC6,0x00,0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8,0x00,0x00,0xFC ; 0000FE31 l8l.......|..... db 0x98,0x30,0x64,0xFC,0x00,0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00,0x18,0x18,0x18 ; 0000FE41 .0d...00.00..... db 0x00,0x18,0x18,0x18,0x00,0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00,0x76,0xDC,0x00 ; 0000FE51 ......00.00..v.. db 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0x00 ; 0000FE61 .......8l....... sti ; 0000FE6E FB push bx ; 0000FE6F 53 mov bl,ah ; 0000FE70 8ADC xor bh,bh ; 0000FE72 32FF cmp bx,0x7 ; 0000FE74 81FB0700 ja xfe81 ; 0000FE78 7707 shl bx,1 ; 0000FE7A D1E3 jmp near [cs:bx+0xfe85] ; 0000FE7C 2EFFA785FE xfe81: xor ah,ah ; 0000FE81 32E4 pop bx ; 0000FE83 5B iret ; 0000FE84 CF db 0xBD,0x9C,0xD9,0x9C,0xF4,0x9C,0x1D,0x9D,0x50,0x9D,0x72,0x9D,0xAA,0x9D,0xF1,0x9D,0xFF ; 0000FE85-0000FE95 xfe96: and byte [MOTOR_STATUS],0xf0; 0000FE96 80263F00F0 xfe9b: int 0x1c ; 0000FE9B CD1C '..' mov al,0x20 ; 0000FE9D B020 '. ' out 0x20,al ; 0000FE9F E620 '. ' pop dx ; 0000FEA1 5A 'Z' pop ax ; 0000FEA2 58 'X' pop ds ; 0000FEA3 1F '.' iret ; 0000FEA4 CF '.' push ds ; 0000FEA5 1E '.' push ax ; 0000FEA6 50 'P' push dx ; 0000FEA7 52 'R' mov ax,0x40 ; 0000FEA8 B84000 '.@.' mov ds,ax ; 0000FEAB 8ED8 '..' inc word [0x6c] ; 0000FEAD FF066C00 '..l.' jnz xfeb7 ; 0000FEB1 7504 'u.' inc word [0x6e] ; 0000FEB3 FF066E00 '..n.' xfeb7: cmp word [0x6e],byte +0x18 ; 0000FEB7 833E6E0018 '.>n..' jnz xfed1 ; 0000FEBC 7513 'u.' mov ax,0xb0 ; 0000FEBE B8B000 '...' sub ax,[0x6c] ; 0000FEC1 2B066C00 '+.l.' jnz xfed1 ; 0000FEC5 750A 'u',0x0A mov [0x6c],ax ; 0000FEC7 A36C00 '.l.' mov [0x6e],ax ; 0000FECA A36E00 '.n.' inc ax ; 0000FECD 40 '@' mov [0x70],al ; 0000FECE A27000 '.p.' xfed1: mov al,[MOTOR_COUNT] ; 0000FED1 A04000 '.@.' cmp al,0xff ; 0000FED4 3CFF '<.' jnz xfef7 ; 0000FED6 751F 'u.' test byte [MOTOR_STATUS],0x7 ; 0000FED8 F6063F0007 '..?..' jz xfef7 ; 0000FEDD 7418 't.' in al,0x86 ; 0000FEDF E486 '..' test al,0x80 ; 0000FEE1 A880 '..' jz xfef7 ; 0000FEE3 7412 't.' test al,0x40 ; 0000FEE5 A840 '.@' jz xfef7 ; 0000FEE7 740E 't.' and al,0x3f ; 0000FEE9 243F '$?' out 0x86,al ; 0000FEEB E686 '..' mov al,0x92 ; 0000FEED B092 '..' out 0x4b,al ; 0000FEEF E64B '.K' mov al,[cs:0x67dd] ; 0000FEF1 2EA0DD67 '...g' out 0x4a,al ; 0000FEF5 E64A '.J' xfef7: dec byte [MOTOR_COUNT] ; 0000FEF7 FE0E4000 jnz xfe9b ; 0000FEFB 759E mov al,0xc ; 0000FEFD B00C ; CLEAR ALL DRIVE SELECT AND MOTOR BITS (0x0C IS JUST THE ENABLE AND INT_ENABLE BITS) mov dx,0x3f2 ; 0000FEFF BAF203 out dx,al ; 0000FF02 EE test byte [MOTOR_STATUS],0x7 ; 0000FF03 F6063F0007 jz xfe96 ; 0000FF08 748C in al,0x86 ; 0000FF0A E486 ; (COMPAQ DESKPRO TECHREF REFERS TO PORT 0x86 AS "DMA Page Register Reserved") test al,0x80 ; 0000FF0C A880 ; (TYPICALLY CLEAR) jnz xfe96 ; 0000FF0E 7586 test al,0x40 ; 0000FF10 A840 ; (TYPICALLY SET) jnz xfe96 ; 0000FF12 7582 ; GO CLEAR ALL MOTOR STATUS BITS or al,0xc0 ; 0000FF14 0CC0 out 0x86,al ; 0000FF16 E686 mov al,0x92 ; 0000FF18 B092 out 0x4b,al ; 0000FF1A E64B jmp xfe96 ; 0000FF1C E977FF times 4 db 0xFF ; 0000FF1F - 0000FF22 jmp xe900 ; 0000FF23 E9DAE9 '...' times 44 db 0xFF ; 0000FF26 - 0000FF51 dec di ; 0000FF52 FFCF '..' pusha ; 0000FF54 60 '`' push ds ; 0000FF55 1E '.' xor dx,dx ; 0000FF56 33D2 '3.' mov ah,0x2 ; 0000FF58 B402 '..' int 0x17 ; 0000FF5A CD17 '..' test ah,0x80 ; 0000FF5C F6C480 '...' jz xffb3 ; 0000FF5F 7452 'tR' mov bx,0x40 ; 0000FF61 BB4000 '.@.' mov ds,bx ; 0000FF64 8EDB '..' mov al,0x1 ; 0000FF66 B001 '..' xchg al,[0x100] ; 0000FF68 86060001 '....' cmp al,0x1 ; 0000FF6C 3C01 '<.' jz xffb3 ; 0000FF6E 7443 'tC' sti ; 0000FF70 FB '.' call x8d6f ; 0000FF71 E8FB8D '...' mov ah,0xf ; 0000FF74 B40F '..' int 0x10 ; 0000FF76 CD10 '..' mov ch,ah ; 0000FF78 8AEC '..' push cx ; 0000FF7A 51 'Q' mov ah,0x3 ; 0000FF7B B403 '..' int 0x10 ; 0000FF7D CD10 '..' pop cx ; 0000FF7F 59 'Y' push dx ; 0000FF80 52 'R' xor dx,dx ; 0000FF81 33D2 '3.' xff83: mov ah,0x2 ; 0000FF83 B402 '..' int 0x10 ; 0000FF85 CD10 '..' mov ah,0x8 ; 0000FF87 B408 '..' int 0x10 ; 0000FF89 CD10 '..' call x8d78 ; 0000FF8B E8EA8D '...' jc xffa7 ; 0000FF8E 7217 'r.' inc dl ; 0000FF90 FEC2 '..' cmp dl,ch ; 0000FF92 3AD5 ':.' jc xff83 ; 0000FF94 72ED 'r.' call x8d6f ; 0000FF96 E8D68D '...' jc xffa7 ; 0000FF99 720C 'r.' xor dl,dl ; 0000FF9B 32D2 '2.' inc dh ; 0000FF9D FEC6 '..' cmp dh,0x19 ; 0000FF9F 80FE19 '...' jc xff83 ; 0000FFA2 72DF 'r.' call x8d6f ; 0000FFA4 E8C88D '...' xffa7: sbb cl,cl ; 0000FFA7 1AC9 '..' pop dx ; 0000FFA9 5A 'Z' mov ah,0x2 ; 0000FFAA B402 '..' int 0x10 ; 0000FFAC CD10 '..' cli ; 0000FFAE FA '.' mov [0x100],cl ; 0000FFAF 880E0001 '....' xffb3: pop ds ; 0000FFB3 1F '.' popa ; 0000FFB4 61 'a' iret ; 0000FFB5 CF '.' dw 0xFFFF ; 0000FFB6 FFFF db 0x0000 ; 0000FFB8 0000 dw 0x0000 ; 0000FFBA 0000 dw 0x0000 ; 0000FFBC 0000 dw 0x0003 ; 0000FFBE 0300 (replaced during ROM relocation with 0x03nn, where nn is the CPU revision identifier) times 29 db 0xFF ; 0000FFC0 - 0000FFDC jmp x9f17 ; 0000FFDD E9379F ; ; Offset for storing built-in memory table ; ; (Refer to "Compaq Built-in Memory" description at the top of this file) ; bim_table_offset: dw 0x7FB6 ; 0000FFE0 B67F ; ; Offset for storing CPU identifier (low byte) and revision number (high byte) ; cpu_idrev_offset: dw 0x7FBE ; 0000FFE2 BE7F db 'G' ; 0000FFE4 47 ; Product Family Code db '4' ; 0000FFE5 34 ; Point-Release Code db 'J ' ; 0000FFE6 4A20 ; Revision Code db '03' ; 0000FFE8 3033 ; BIOS Type Code db 'COMPAQ' ; 0000FFEA 434F4D504151; Machine ID jmp 0xf000:reset ; 0000FFF0 EA05F900F0 db 0x20 ; 0000FFF5 20 db '01/28/88' ; 0000FFF6 30312F32382F3838 ; BIOS Revision Date db 0xFC ; 0000FFFE FC ; Machine Type Code db 0x98 ; 0000FFFF 98 ; Checksum