pcjs/devices/pc/bios/compaq/deskpro386/1988-01-28/1988-01-28.nasm
2015-07-09 12:33:01 -07:00

13906 lines
489 KiB
NASM

;
; 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-2015 Jeff Parsons <Jeff@pcjs.org>
;
; This file is part of PCjs, which is part of the JavaScript Machines Project (aka JSMachines)
; at <http://jsmachines.net/> and <http://pcjs.org/>.
;
; PCjs is free software: you can redistribute it and/or modify it under the terms of the
; GNU General Public License as published by the Free Software Foundation, either version 3
; of the License, or (at your option) any later version.
;
; PCjs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
; even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License along with PCjs. If not,
; see <http://www.gnu.org/licenses/gpl.html>.
;
;
; 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
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 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'
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'
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 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 '<p'
jnz x8476 ; 00008463 7511 'u.'
call xe944 ; 00008465 E8DC64 '..d'
jc x847c ; 00008468 7212 'r.'
call x919a ; 0000846A E82D0D '.-',0x0D
in al,dx ; 0000846D EC '.'
mov si,0x84a2 ; 0000846E BEA284 '...'
mov di,0x3 ; 00008471 BF0300 '...'
jmp short x8434 ; 00008474 EBBE '..'
x8476: mov al,0xa5 ; 00008476 B0A5 '..'
out 0x84,al ; 00008478 E684 '..'
jmp short x8480 ; 0000847A EB04 '..'
x847c: mov al,0xa4 ; 0000847C B0A4 '..'
out 0x84,al ; 0000847E E684 '..'
x8480: mov bx,0xb82f ; 00008480 BB2FB8 './.'
mov cx,0x20 ; 00008483 B92000 '. .'
mov dx,0x0 ; 00008486 BA0000 '...'
call xc745 ; 00008489 E8B942 '..B'
jmp short x8492 ; 0000848C EB04 '..'
x848e: mov al,0xa6 ; 0000848E B0A6 '..'
out 0x84,al ; 00008490 E684 '..'
x8492: in al,0x21 ; 00008492 E421 '.!'
and al,0xbf ; 00008494 24BF '$.'
out 0x21,al ; 00008496 E621 '.!'
mov al,0x0 ; 00008498 B000 '..'
out 0xd2,al ; 0000849A E6D2 '..'
out 0xd4,al ; 0000849C E6D4 '..'
ret ; 0000849E C3 '.'
add bx,di ; 0000849F 03DF '..'
add al,[bx] ; 000084A1 0207 '..'
add [bx+si],cl ; 000084A3 0008 '..'
x84a5: mov ax,0x50 ; 000084A5 B85000 '.P.'
push ds ; 000084A8 1E '.'
mov ds,ax ; 000084A9 8ED8 '..'
mov byte [0x0],0xff ; 000084AB C6060000FF '.....'
pop ds ; 000084B0 1F '.'
mov word [0x8d],0x0 ; 000084B1 C7068D000000 '......'
mov byte [0x8c],0xfa ; 000084B7 C6068C00FA '.....'
xor bx,bx ; 000084BC 33DB '3.'
mov cl,0xff ; 000084BE B1FF '..'
mov ch,0xf0 ; 000084C0 B5F0 '..'
xor di,di ; 000084C2 33FF '3.'
push es ; 000084C4 06 '.'
x84c5: mov [0x4c],cl ; 000084C5 880E4C00 '..L.'
mov ax,0x48 ; 000084C9 B84800 '.H.'
mov es,ax ; 000084CC 8EC0 '..'
mov word [es:di],0x0 ; 000084CE 26C7050000 '&....'
mov word [es:di+0x2],0xffff ; 000084D3 26C74502FFFF '&.E...'
cld ; 000084D9 FC '.'
cld ; 000084DA FC '.'
mov ax,[es:di] ; 000084DB 268B05 '&..'
cld ; 000084DE FC '.'
cld ; 000084DF FC '.'
cld ; 000084E0 FC '.'
cld ; 000084E1 FC '.'
cld ; 000084E2 FC '.'
or ax,ax ; 000084E3 0BC0 '..'
mov [es:di],ax ; 000084E5 268905 '&..'
jz x84ee ; 000084E8 7404 't.'
inc cl ; 000084EA FEC1 '..'
jmp short x84f9 ; 000084EC EB0B '..'
x84ee: add bx,byte +0x40 ; 000084EE 83C340 '..@'
cmp cl,ch ; 000084F1 3ACD ':.'
jz x84f9 ; 000084F3 7404 't.'
dec cl ; 000084F5 FEC9 '..'
jmp short x84c5 ; 000084F7 EBCC '..'
x84f9: sub bx,0x80 ; 000084F9 81EB8000 '....'
jna x8507 ; 000084FD 7608 'v.'
mov [0x8d],bx ; 000084FF 891E8D00 '....'
mov [0x8c],cl ; 00008503 880E8C00 '....'
x8507: pop es ; 00008507 07 '.'
ret ; 00008508 C3 '.'
;
; Wrapper around xdb33 to test memory at %FE0000
;
x8509: mov ah,0xfe ; 00008509 B4FE '..'
mov word [0x82],0x80 ; 0000850B C70682008000 '......'
mov byte [0x8f],0xff ; 00008511 C6068F00FF '.....'
mov byte [0x92],0x1 ; 00008516 C606920001 '.....'
mov bp,0x80 ; 0000851B BD8000 '...'
call xdb33 ; 0000851E E81256 '..V'
add bp,0x80 ; 00008521 81C58000 '....'
or ax,ax ; 00008525 0BC0 '..'
jz x853b ; 00008527 7412 't.'
mov [0x66],ch ; 00008529 882E6600 '..f.'
mov [0x67],dx ; 0000852D 89166700 '..g.'
mov [0x69],cl ; 00008531 880E6900 '..i.'
or word [0x64],0x41 ; 00008535 810E64004100 '..d.A.'
x853b: ret ; 0000853B C3 '.'
;
; Copy ROM from %0F0000 to %FF0000
;
x853c: mov al,0x7f ; 0000853C B07F '..'
out 0x84,al ; 0000853E E684 '..'
mov word [0x50],0xffff ; 00008540 C7065000FFFF '..P...'
mov word [0x52],0x0 ; 00008546 C70652000000 '..R...'
mov byte [0x54],0xf ; 0000854C C60654000F '..T..'
mov byte [0x55],0x92 ; 00008551 C606550092 '..U..'
mov byte [0x56],0x0 ; 00008556 C606560000 '..V..'
mov byte [0x57],0x0 ; 0000855B C606570000 '..W..'
mov word [0x48],0xffff ; 00008560 C7064800FFFF '..H...'
mov word [0x4a],0x0 ; 00008566 C7064A000000 '..J...'
mov byte [0x4c],0xff ; 0000856C C6064C00FF '..L..'
mov byte [0x4d],0x92 ; 00008571 C6064D0092 '..M..'
mov word [0x4e],0x0 ; 00008576 C7064E000000 '..N...'
push es ; 0000857C 06 '.'
push ds ; 0000857D 1E '.'
mov ax,0x50 ; 0000857E B85000 '.P.'
mov ds,ax ; 00008581 8ED8 '..'
mov ax,0x48 ; 00008583 B84800 '.H.'
mov es,ax ; 00008586 8EC0 '..'
xor si,si ; 00008588 33F6 '3.'
xor di,di ; 0000858A 33FF '3.'
;
; Copy 64Kb from %0F0000 to %FF0000
;
mov cx,0x4000 ; 0000858C B90040 '..@'
cld ; 0000858F FC '.'
rep movsd ; 00008590 66F3A5 'f..'
;
; (DI) -> 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 load [gdtr_lo] into GDTR
mov eax,cr0 ; 0000879C 0F2000
or ax,0x1 ; 0000879F 0D0100 0x0D,'..'
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 'f%....'
mov cr0,eax ; 000087D4 0F2200
jmp 0xf000:x87dc ; 000087D7 EADC8700F0 '.....'
x87dc: lidt [cs:0x0784] ; 000087DC load [idtr_lo] into IDTR
jmp bp ; 000087E2 FFE5 '..'
x87e4: lgdt [cs:0x0778] ; 000087E4 load [gdtr_lo] into GDTR
mov eax,cr0 ; 000087EA 0F2000
or ax,0x1 ; 000087ED 0D0100 0x0D,'..'
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 load [gdtr_lo] into GDTR
mov eax,cr0 ; 0000881A 0F2000
or ax,0x1 ; 0000881D 0D0100 0x0D,'..'
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 '..<'
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 '<A'
jc x8e44 ; 00008E66 72DC 'r.'
mov [0x359],al ; 00008E68 A25903 '.Y.'
and al,0xf ; 00008E6B 240F '$.'
mov [0x385],al ; 00008E6D A28503 '...'
jmp short x8e25 ; 00008E70 EBB3 '..'
x8e72: xor cx,cx ; 00008E72 33C9 '3.'
mov [0x3a6],cx ; 00008E74 890EA603 '....'
mov [0x3a8],cx ; 00008E78 890EA803 '....'
inc cx ; 00008E7C 41 'A'
mov word [0x393],0x200 ; 00008E7D C70693030002 '......'
xor dx,dx ; 00008E83 33D2 '3.'
push ds ; 00008E85 1E '.'
mov ds,bx ; 00008E86 8EDB '..'
mov ah,0x1a ; 00008E88 B41A '..'
int 0x21 ; 00008E8A CD21 '.!'
pop ds ; 00008E8C 1F '.'
mov dx,0x385 ; 00008E8D BA8503 '...'
mov ah,0x27 ; 00008E90 B427 '.',0x27
int 0x21 ; 00008E92 CD21 '.!'
push ds ; 00008E94 1E '.'
mov ds,bx ; 00008E95 8EDB '..'
mov dx,[0x14] ; 00008E97 8B161400 '....'
mov cx,[0x4] ; 00008E9B 8B0E0400 '....'
pop ds ; 00008E9F 1F '.'
push dx ; 00008EA0 52 'R'
dec cx ; 00008EA1 49 'I'
push cx ; 00008EA2 51 'Q'
mov dx,0x385 ; 00008EA3 BA8503 '...'
mov ah,0x27 ; 00008EA6 B427 '.',0x27
int 0x21 ; 00008EA8 CD21 '.!'
cmp al,0x2 ; 00008EAA 3C02 '<.'
pop ax ; 00008EAC 58 'X'
jnz x8ec9 ; 00008EAD 751A 'u.'
xchg ax,cx ; 00008EAF 91 '.'
sub cx,ax ; 00008EB0 2BC8 '+.'
push ds ; 00008EB2 1E '.'
mov dx,bx ; 00008EB3 8BD3 '..'
add dx,0xfe0 ; 00008EB5 81C2E00F '....'
mov ds,dx ; 00008EB9 8EDA '..'
xor dx,dx ; 00008EBB 33D2 '3.'
mov ah,0x1a ; 00008EBD B41A '..'
int 0x21 ; 00008EBF CD21 '.!'
pop ds ; 00008EC1 1F '.'
mov dx,0x385 ; 00008EC2 BA8503 '...'
mov ah,0x27 ; 00008EC5 B427 '.',0x27
int 0x21 ; 00008EC7 CD21 '.!'
x8ec9: mov ah,0x10 ; 00008EC9 B410 '..'
int 0x21 ; 00008ECB CD21 '.!'
cmp byte [di],0x0 ; 00008ECD 803D00 '.=.'
jz x8ede ; 00008ED0 740C 't.'
mov dx,0x33a ; 00008ED2 BA3A03 '.:.'
mov ah,0x9 ; 00008ED5 B409 '..'
int 0x21 ; 00008ED7 CD21 '.!'
mov ax,0xc08 ; 00008ED9 B8080C '...'
int 0x21 ; 00008EDC CD21 '.!'
x8ede: mov es,bp ; 00008EDE 8EC5 '..'
mov ds,bp ; 00008EE0 8EDD '..'
mov dx,0x80 ; 00008EE2 BA8000 '...'
mov ah,0x1a ; 00008EE5 B41A '..'
int 0x21 ; 00008EE7 CD21 '.!'
retf ; 00008EE9 CB '.'
dw 0x0000 ; 00008EEA 0000 '..'
db 0x0D,0x0A,'Insert COMPAQ MS-DOS diskette',0x0D,0x0A
db 'Enter drive specifier $',0x0D,0x0A,0x0D,0x0A
db 'Reinsert diskette in drive A if necessary',0x0D,0x0A
db 'Strike any key when ready',0x0D,0x0A,'$'
db 0x00
db 'BASICA EXE',0x00
x8f7c: call xd47d ; 00008F7C E8FE44
test al,0x01 ; 00008F7F A801
jz x8f98 ; 00008F81 7415
call x9190 ; 00008F83 E80A02 '.',0x0A,'.'
mov ah,[bx] ; 00008F86 8A27 '.',0x27
call xd490 ; 00008F88 E80545 '..E'
call xc956 ; 00008F8B E8C839 '..9'
xor ax,ax ; 00008F8E 33C0 '3.'
mov dx,0x3f7 ; 00008F90 BAF703 '...'
in al,dx ; 00008F93 EC '.'
test al,0x80 ; 00008F94 A880 '..'
jz x8fa3 ; 00008F96 740B 't.'
x8f98: mov ah,0x6 ; 00008F98 B406 '..'
or word [bp+0x16],0x1 ; 00008F9A 814E160100 '.N...'
mov [0x41],ah ; 00008F9F 88264100 '.&A.'
x8fa3: ret ; 00008FA3 C3 '.'
x8fa4: call xd47d ; 00008FA4 E8D644 '..D'
test al,0x1 ; 00008FA7 A801 '..'
jnz x8faf ; 00008FA9 7504 'u.'
xor ah,ah ; 00008FAB 32E4 '2.'
jmp short x900f ; 00008FAD EB60 '.`'
x8faf: call x8f7c ; 00008FAF E8CAFF
jz x900f ; 00008FB2 745B 't['
call x9190 ; 00008FB4 E8D901 '...'
test byte [bx],0x10 ; 00008FB7 F60710 '...'
jz x8fcb ; 00008FBA 740F 't.'
mov ah,[bx] ; 00008FBC 8A27 '.',0x27
cmp ah,0x97 ; 00008FBE 80FC97 '...'
jnz x8fc6 ; 00008FC1 7503 'u.'
add ah,0x3 ; 00008FC3 80C403 '...'
x8fc6: sub ah,0x13 ; 00008FC6 80EC13 '...'
jmp short x8fdc ; 00008FC9 EB11 '..'
x8fcb: call xd405 ; 00008FCB E83744 '.7D'
mov ah,0x87 ; 00008FCE B487 '..'
cmp al,0x3 ; 00008FD0 3C03 '<.'
jz x8fdc ; 00008FD2 7408 't.'
mov ah,0x7 ; 00008FD4 B407 '..'
cmp al,0x4 ; 00008FD6 3C04 '<.'
jz x8fdc ; 00008FD8 7402 't.'
mov ah,0x61 ; 00008FDA B461 '.a'
x8fdc: mov [bx],ah ; 00008FDC 8827 '.',0x27
call xd490 ; 00008FDE E8AF44 '..D'
call xca03 ; 00008FE1 E81F3A '..:'
mov al,[bp+0x5] ; 00008FE4 8A4605 '.F.'
push ax ; 00008FE7 50 'P'
mov byte [bp+0x5],0x2 ; 00008FE8 C6460502 '.F..'
call xee9c ; 00008FEC E8AD5E '..^'
mov byte [bp+0x5],0x0 ; 00008FEF C6460500 '.F..'
call xee9c ; 00008FF3 E8A65E '..^'
pop ax ; 00008FF6 58 'X'
mov [bp+0x5],al ; 00008FF7 884605 '.F.'
mov ah,0x6 ; 00008FFA B406 '..'
mov dx,0x3f7 ; 00008FFC BAF703 '...'
in al,dx ; 00008FFF EC '.'
test al,0x80 ; 00009000 A880 '..'
jz x9006 ; 00009002 7402 't.'
mov ah,0x80 ; 00009004 B480 '..'
x9006: mov [0x41],ah ; 00009006 88264100 '.&A.'
or word [bp+0x16],0x1 ; 0000900A 814E160100 '.N...'
x900f: ret ; 0000900F C3 '.'
xor di,di ; 00009010 33FF '3.'
call x8fa4 ; 00009012 E88FFF '...'
jz x901e ; 00009015 7407 't.'
test ah,0x80 ; 00009017 F6C480 '...'
jnz x9060 ; 0000901A 7544 'uD'
mov di,ax ; 0000901C 8BF8 '..'
x901e: xor ah,ah ; 0000901E 32E4 '2.'
mov al,[bp+0x0] ; 00009020 8A4600 '.F.'
cmp al,0x5 ; 00009023 3C05 '<.'
jc x9030 ; 00009025 7209 'r.'
mov ah,0x1 ; 00009027 B401 '..'
or word [bp+0x16],0x1 ; 00009029 814E160100 '.N...'
jmp short x9060 ; 0000902E EB30 '.0'
x9030: or al,al ; 00009030 0AC0 0x0A,'.'
jz x9056 ; 00009032 7422 't"'
mov ah,0x93 ; 00009034 B493 '..'
cmp al,0x1 ; 00009036 3C01 '<.'
jz x904a ; 00009038 7410 't.'
mov ah,0x74 ; 0000903A B474 '.t'
cmp al,0x2 ; 0000903C 3C02 '<.'
jz x9051 ; 0000903E 7411 't.'
mov ah,0x15 ; 00009040 B415 '..'
cmp al,0x3 ; 00009042 3C03 '<.'
jz x9051 ; 00009044 740B 't.'
mov ah,0x97 ; 00009046 B497 '..'
jmp short x9051 ; 00009048 EB07 '..'
x904a: mov al,0x1 ; 0000904A B001 '..'
call xd468 ; 0000904C E81944 '..D'
jmp short x9056 ; 0000904F EB05 '..'
x9051: mov al,0x1 ; 00009051 B001 '..'
call xd455 ; 00009053 E8FF43 '..C'
x9056: call x9190 ; 00009056 E83701 '.7.'
mov [bx],ah ; 00009059 8827 '.',0x27
call xd490 ; 0000905B E83244 '.2D'
mov ax,di ; 0000905E 8BC7 '..'
x9060: ret ; 00009060 C3 '.'
x9061: call x9190 ; 00009061 E82C01 '.,.'
mov ah,[bx] ; 00009064 8A27 '.',0x27
call xd490 ; 00009066 E82744 '.',0x27,'D'
test ah,0x10 ; 00009069 F6C410 '...'
jnz x9071 ; 0000906C 7503 'u.'
call x9072 ; 0000906E E80100 '...'
x9071: ret ; 00009071 C3 '.'
x9072: call x9190 ; 00009072 E81B01 '...'
mov al,[bx] ; 00009075 8A07 '..'
mov [bx+0x2],al ; 00009077 884702 '.G.'
push word [bp+0x0] ; 0000907A FF7600 '.v.'
mov al,[bp+0x5] ; 0000907D 8A4605 '.F.'
cmp al,0x27 ; 00009080 3C27 '<',0x27
ja x90b9 ; 00009082 7735 'w5'
call xd3f3 ; 00009084 E86C43 '.lC'
jnz x909b ; 00009087 7512 'u.'
call xd3ff ; 00009089 E87343 '.sC'
cmp byte [bp+0x6],0x0 ; 0000908C 807E0600 '.~..'
jnz x9095 ; 00009090 7503 'u.'
shr al,0x4 ; 00009092 C0E804 '...'
x9095: and al,0xf ; 00009095 240F '$.'
cmp al,0x3 ; 00009097 3C03 '<.'
jnc x90b9 ; 00009099 731E 's.'
x909b: call xca03 ; 0000909B E86539 '.e9'
call x9190 ; 0000909E E8EF00 '...'
mov ah,0x61 ; 000090A1 B461 '.a'
mov [bx],ah ; 000090A3 8827 '.',0x27
call xd490 ; 000090A5 E8E843 '..C'
mov al,0x6 ; 000090A8 B006 '..'
mov byte [bp+0x1],0x4 ; 000090AA C6460104 '.F..'
mov byte [bp+0x0],0x1 ; 000090AE C6460001 '.F..'
push ax ; 000090B2 50 'P'
call xecf0 ; 000090B3 E83A5C '.:\'
pop ax ; 000090B6 58 'X'
jz x9129 ; 000090B7 7470 'tp'
x90b9: call xca03 ; 000090B9 E84739 '.G9'
call x9190 ; 000090BC E8D100 '...'
mov ah,0x2 ; 000090BF B402 '..'
mov [bx],ah ; 000090C1 8827 '.',0x27
call xd490 ; 000090C3 E8CA43 '..C'
mov al,0x6 ; 000090C6 B006 '..'
mov byte [bp+0x1],0x4 ; 000090C8 C6460104 '.F..'
mov byte [bp+0x0],0x1 ; 000090CC C6460001 '.F..'
push ax ; 000090D0 50 'P'
call xecf0 ; 000090D1 E81C5C '..\'
pop ax ; 000090D4 58 'X'
jz x912b ; 000090D5 7454 'tT'
call xca03 ; 000090D7 E82939 '.)9'
call x9190 ; 000090DA E8B300 '...'
mov ah,0x87 ; 000090DD B487 '..'
mov [bx],ah ; 000090DF 8827 '.',0x27
call xd490 ; 000090E1 E8AC43 '..C'
mov al,0x4 ; 000090E4 B004 '..'
mov byte [bp+0x1],0x4 ; 000090E6 C6460104 '.F..'
mov byte [bp+0x0],0x1 ; 000090EA C6460001 '.F..'
push ax ; 000090EE 50 'P'
call xecf0 ; 000090EF E8FE5B '..['
pop ax ; 000090F2 58 'X'
jz x9144 ; 000090F3 744F 'tO'
call xca03 ; 000090F5 E80B39 '..9'
call x9190 ; 000090F8 E89500 '...'
mov ah,0x61 ; 000090FB B461 '.a'
mov [bx],ah ; 000090FD 8827 '.',0x27
call xd490 ; 000090FF E88E43 '..C'
mov al,0x6 ; 00009102 B006 '..'
mov byte [bp+0x1],0x4 ; 00009104 C6460104 '.F..'
mov byte [bp+0x0],0x1 ; 00009108 C6460001 '.F..'
push ax ; 0000910C 50 'P'
call xecf0 ; 0000910D E8E05B '..['
pop ax ; 00009110 58 'X'
jz x9147 ; 00009111 7434 't4'
or word [bp+0x16],0x1 ; 00009113 814E160100 '.N...'
call x9190 ; 00009118 E87500 '.u.'
mov ah,[bx+0x2] ; 0000911B 8A6702 '.g.'
mov [bx],ah ; 0000911E 8827 '.',0x27
call xd490 ; 00009120 E86D43 '.mC'
mov ah,[0x41] ; 00009123 8A264100 '.&A.'
jmp short x9155 ; 00009127 EB2C '.,'
x9129: jmp short x9147 ; 00009129 EB1C '..'
x912b: call xd3f3 ; 0000912B E8C542 '..B'
jnz x9147 ; 0000912E 7517 'u.'
call xd3ff ; 00009130 E8CC42 '..B'
cmp byte [bp+0x6],0x0 ; 00009133 807E0600 '.~..'
jnz x913c ; 00009137 7503 'u.'
shr al,0x4 ; 00009139 C0E804 '...'
x913c: and al,0xf ; 0000913C 240F '$.'
cmp al,0x4 ; 0000913E 3C04 '<.'
jnz x9147 ; 00009140 7505 'u.'
mov ah,0x7 ; 00009142 B407 '..'
x9144: sub ah,0x3 ; 00009144 80EC03 '...'
x9147: call xd455 ; 00009147 E80B43 '..C'
add ah,0x13 ; 0000914A 80C413 '...'
call x9190 ; 0000914D E84000 '.@.'
mov [bx],ah ; 00009150 8827 '.',0x27
call xd490 ; 00009152 E83B43 '.;C'
x9155: mov byte [bx+0x2],0x0 ; 00009155 C6470200 '.G..'
pop word [bp+0x0] ; 00009159 8F4600 '.F.'
xor al,al ; 0000915C 32C0 '2.'
push word [bp+0x16] ; 0000915E FF7616 '.v.'
popf ; 00009161 9D '.'
ret ; 00009162 C3 '.'
x9163: xor al,al ; 00009163 32C0 '2.'
mov ah,[bp+0x6] ; 00009165 8A6606 '.f.'
cmp ah,0x2 ; 00009168 80FC02 '...'
jc x9176 ; 0000916B 7209 'r.'
mov ah,0x1 ; 0000916D B401 '..'
or word [bp+0x16],0x1 ; 0000916F 814E160100 '.N...'
jmp short x918f ; 00009174 EB19 '..'
x9176: mov ah,0x0 ; 00009176 B400 '..'
call x9190 ; 00009178 E81500 '...'
or al,[bx] ; 0000917B 0A07 0x0A,'.'
jz x918f ; 0000917D 7410 't.'
mov ah,0x1 ; 0000917F B401 '..'
test al,0x10 ; 00009181 A810 '..'
jnz x9187 ; 00009183 7502 'u.'
add al,0x13 ; 00009185 0413 '..'
x9187: and al,0x7 ; 00009187 2407 '$.'
sub al,0x3 ; 00009189 2C03 ',.'
jz x918f ; 0000918B 7402 't.'
mov ah,0x2 ; 0000918D B402 '..'
x918f: ret ; 0000918F C3 '.'
x9190: xor bx,bx ; 00009190 33DB '3.'
mov bl,[bp+0x6] ; 00009192 8A5E06 '.^.'
add bx,0x90 ; 00009195 81C39000 '....'
ret ; 00009199 C3 '.'
x919a: push ax ; 0000919A 50 'P'
pushf ; 0000919B 9C '.'
cli ; 0000919C FA '.'
in al,0x40 ; 0000919D E440 '.@'
mov ah,al ; 0000919F 8AE0 '..'
x91a1: in al,0x40 ; 000091A1 E440 '.@'
in al,0x40 ; 000091A3 E440 '.@'
sub al,ah ; 000091A5 2AC4 '*.'
cmp al,0xda ; 000091A7 3CDA '<.'
ja x91a1 ; 000091A9 77F6 'w.'
in al,0x40 ; 000091AB E440 '.@'
popf ; 000091AD 9D '.'
pop ax ; 000091AE 58 'X'
ret ; 000091AF C3 '.'
;
; Here's where the first HDC (Hard Disk Controller) activity occurs during power-up.
;
x91b0: mov dx,0x1f6 ; 000091B0 select the DRVHD (Drive/Head) register
mov al,0xa0 ; 000091B3 select Head 0 (bits 0-3) and Drive 0 (bit 4)
out dx,al ; 000091B5 write register
call xc5af ; 000091B6 perform some I/O to the FDR (Fixed Disk Register), port 0x3F6
call x83f9 ; 000091B9 TBD (writes 0xA0, 0xA1, 0xA2, 0xA3, 0xA6 to port 0x84)
mov al,0xa8 ; 000091BC
out 0x84,al ; 000091BE
sti ; 000091C0
mov dx,0x3f4 ; 000091C1 select the REG_STATUS (Main Status Register) of the FDC
in al,dx ; 000091C4 read register
std ; 000091C5
std ; 000091C6
std ; 000091C7
std ; 000091C8
std ; 000091C9
std ; 000091CA
cld ; 000091CB
and al,0xf ; 000091CC keep only the BUSY bits for drives A,B,C,D
or al,al ; 000091CE are any of those set?
jz x91d5 ; 000091D0 no
jmp short x922a ; 000091D2 yes
nop ; 000091D4
x91d5: sub sp,byte +0xd ; 000091D5
mov bp,sp ; 000091D8
xor ax,ax ; 000091DA
mov ds,ax ; 000091DC
les si,[0x78] ; 000091DE
mov ax,0x40 ; 000091E2
mov ds,ax ; 000091E5
mov byte [0x40],0xff ; 000091E7
call xca03 ; 000091EC
mov byte [bp+0x6],0x0 ; 000091EF
mov byte [bp+0x7],0x0 ; 000091F3
call x9293 ; 000091F7 this executes a lot of instructions, but no HDC ports are accessed
mov byte [bp+0x6],0x1 ; 000091FA
call x9293 ; 000091FE again, this executes a lot of instructions, but no HDC ports are accessed
mov byte [bp+0x5],0x0 ; 00009201
call xee9c ; 00009205
mov al,0xaf ; 00009208
out 0x84,al ; 0000920A
mov dx,0x3f2 ; 0000920C select the REG_OUTPUT (Digital Output Register) of the FDC
mov al,0xc ; 0000920F select the ENABLE and INT_ENABLE bits of REG_OUTPUT
out dx,al ; 00009211 update register
and byte [0x3f],0xf0 ; 00009212
add sp,byte +0xd ; 00009217
mov al,0xb3 ; 0000921A B0B3 '..'
mov ah,al ; 0000921C 8AE0 '..'
call xb544 ; 0000921E E82323 '.##'
and al,0xf8 ; 00009221 24F8 '$.'
xchg ah,al ; 00009223 86E0 '..'
mov al,0x33 ; 00009225 B033 '.3'
call xb549 ; 00009227 E81F23 '..#'
x922a: xor ax,ax ; 0000922A 33C0 '3.'
mov bx,ax ; 0000922C 8BD8 '..'
mov cx,ax ; 0000922E 8BC8 '..'
or bl,[0x90] ; 00009230 0A1E9000 0x0A,'...'
jz x9238 ; 00009234 7402 't.'
inc ch ; 00009236 FEC5 '..'
x9238: or bh,[0x91] ; 00009238 0A3E9100 0x0A,'>..'
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,'$'
x9380: mov bx,0x2 ; 00009380 BB0200 '...'
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 '..'
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
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 '<!'
times 10 db 0xFF ; 0000A0F1 - 0000A0FA
fild word [bp+si] ; 0000A0FB DF02 '..'
and ax,0x902 ; 0000A0FD 250209 '%..'
sub bh,bh ; 0000A100 2AFF '*.'
push ax ; 0000A102 50 'P'
db 0xF6 ; 0000A103 F6 '.'
invd ; 0000A104 0F08 '..'
daa ; 0000A106 27 0x27
sbb bh,0x2 ; 0000A107 80DF02 '...'
and ax,0x902 ; 0000A10A 250209 '%..'
sub bh,bh ; 0000A10D 2AFF '*.'
push ax ; 0000A10F 50 'P'
db 0xF6 ; 0000A110 F6 '.'
invd ; 0000A111 0F08 '..'
daa ; 0000A113 27 0x27
inc ax ; 0000A114 40 '@'
fild word [bp+si] ; 0000A115 DF02 '..'
and ax,0xf02 ; 0000A117 25020F '%..'
sbb di,di ; 0000A11A 1BFF '..'
push sp ; 0000A11C 54 'T'
db 0xF6 ; 0000A11D F6 '.'
invd ; 0000A11E 0F08 '..'
dec di ; 0000A120 4F 'O'
add bh,bl ; 0000A121 00DF '..'
add ah,[di] ; 0000A123 0225 '.%'
add cl,[bx+di] ; 0000A125 0209 '..'
sub bh,bh ; 0000A127 2AFF '*.'
push ax ; 0000A129 50 'P'
db 0xF6 ; 0000A12A F6 '.'
invd ; 0000A12B 0F08 '..'
dec di ; 0000A12D 4F 'O'
sbb bh,0x2 ; 0000A12E 80DF02 '...'
and ax,0x902 ; 0000A131 250209 '%..'
sub bh,bh ; 0000A134 2AFF '*.'
push ax ; 0000A136 50 'P'
db 0xF6 ; 0000A137 F6 '.'
invd ; 0000A138 0F08 '..'
dec di ; 0000A13A 4F 'O'
sbb bh,0x2 ; 0000A13B 80DF02 '...'
and ax,0x1202 ; 0000A13E 250212 '%..'
sbb di,di ; 0000A141 1BFF '..'
db 0x65 ; 0000A143 65 'e'
db 0xF6 ; 0000A144 F6 '.'
invd ; 0000A145 0F08 '..'
dec di ; 0000A147 4F 'O'
add [bp+di+0x20a3],cl ; 0000A148 008BA320 '... '
add [bp+si],ch ; 0000A14C 002A '.*'
movsw ; 0000A14E A5 '.'
cmp [bx+si],al ; 0000A14F 3800 '8.'
db 0xFF ; 0000A151 FF '.'
inc word [bx+si] ; 0000A152 FF00 '..'
add [bx+si],al ; 0000A154 0000 '..'
add [bx+si],al ; 0000A156 0000 '..'
add bl,bh ; 0000A158 00FB '..'
pop di ; 0000A15A 5F '_'
push ds ; 0000A15B 1E '.'
push ax ; 0000A15C 50 'P'
mov di,0x40 ; 0000A15D BF4000 '.@.'
mov ds,di ; 0000A160 8EDF '..'
cmp al,0x1 ; 0000A162 3C01 '<.'
ja xa199 ; 0000A164 7733 'w3'
jz xa185 ; 0000A166 741D 't.'
test byte [0xa0],0x1 ; 0000A168 F606A00001 '.....'
jnz xa199 ; 0000A16D 752A 'u*'
or byte [0xa0],0x1 ; 0000A16F 800EA00001 '.....'
call xa1c8 ; 0000A174 E85100 '.Q.'
cli ; 0000A177 FA '.'
in al,0xa1 ; 0000A178 E4A1 '..'
and al,0xfe ; 0000A17A 24FE '$.'
out 0xa1,al ; 0000A17C E6A1 '..'
sti ; 0000A17E FB '.'
call 0xa1a2 ; 0000A17F E82000 '. .'
clc ; 0000A182 F8 '.'
jmp short xa19a ; 0000A183 EB15 '..'
xa185: test byte [0xa0],0x1 ; 0000A185 F606A00001 '.....'
jnz xa18f ; 0000A18A 7503 'u.'
clc ; 0000A18C F8 '.'
jmp short xa19a ; 0000A18D EB0B '..'
xa18f: call xa1b5 ; 0000A18F E82300 '.#.'
and byte [0xa0],0xfe ; 0000A192 8026A000FE '.&...'
jmp short xa19a ; 0000A197 EB01 '..'
xa199: stc ; 0000A199 F9 '.'
xa19a: pop ax ; 0000A19A 58 'X'
mov ah,0x0 ; 0000A19B B400 '..'
pop ds ; 0000A19D 1F '.'
pop di ; 0000A19E 5F '_'
retf 0x2 ; 0000A19F CA0200 '...'
xa1a2: cli ; 0000A1A2 FA '.'
mov al,0xb ; 0000A1A3 B00B '..'
call xb544 ; 0000A1A5 E89C13 '...'
or al,0x40 ; 0000A1A8 0C40 '.@'
push ax ; 0000A1AA 50 'P'
mov ah,al ; 0000A1AB 8AE0 '..'
mov al,0xb ; 0000A1AD B00B '..'
call xb549 ; 0000A1AF E89713 '...'
pop ax ; 0000A1B2 58 'X'
sti ; 0000A1B3 FB '.'
ret ; 0000A1B4 C3 '.'
xa1b5: cli ; 0000A1B5 FA '.'
mov al,0xb ; 0000A1B6 B00B '..'
call xb544 ; 0000A1B8 E88913 '...'
and al,0xbf ; 0000A1BB 24BF '$.'
push ax ; 0000A1BD 50 'P'
mov ah,al ; 0000A1BE 8AE0 '..'
mov al,0xb ; 0000A1C0 B00B '..'
call xb549 ; 0000A1C2 E88413 '...'
pop ax ; 0000A1C5 58 'X'
sti ; 0000A1C6 FB '.'
ret ; 0000A1C7 C3 '.'
xa1c8: mov [0x98],bx ; 0000A1C8 891E9800 '....'
mov [0x9a],es ; 0000A1CC 8C069A00 '....'
mov [0x9c],dx ; 0000A1D0 89169C00 '....'
mov [0x9e],cx ; 0000A1D4 890E9E00 '....'
ret ; 0000A1D8 C3 '.'
sti ; 0000A1D9 FB '.'
cmp dx,byte +0x0 ; 0000A1DA 83FA00 '...'
jz xa1e6 ; 0000A1DD 7407 't.'
dec dx ; 0000A1DF 4A 'J'
jz xa1f1 ; 0000A1E0 740F 't.'
mov ah,0x86 ; 0000A1E2 B486 '..'
stc ; 0000A1E4 F9 '.'
ret ; 0000A1E5 C3 '.'
xa1e6: xor ah,ah ; 0000A1E6 32E4 '2.'
mov dx,0x201 ; 0000A1E8 BA0102 '...'
in al,dx ; 0000A1EB EC '.'
and al,0xf0 ; 0000A1EC 24F0 '$.'
jmp xa27d ; 0000A1EE E98C00 '...'
xa1f1: mov dx,0x201 ; 0000A1F1 BA0102 '...'
in al,dx ; 0000A1F4 EC '.'
and al,0xf ; 0000A1F5 240F '$.'
cmp al,0xf ; 0000A1F7 3C0F '<.'
jnz xa205 ; 0000A1F9 750A 'u',0x0A
xor ax,ax ; 0000A1FB 33C0 '3.'
xor bx,bx ; 0000A1FD 33DB '3.'
xor cx,cx ; 0000A1FF 33C9 '3.'
xor dx,dx ; 0000A201 33D2 '3.'
jmp short xa27d ; 0000A203 EB78 '.x'
xa205: push bp ; 0000A205 55 'U'
sub sp,byte +0xe ; 0000A206 83EC0E '...'
mov bp,sp ; 0000A209 8BEC '..'
mov [bp+0x0],al ; 0000A20B 884600 '.F.'
cli ; 0000A20E FA '.'
call xa27f ; 0000A20F E86D00 '.m.'
mov di,cx ; 0000A212 8BF9 '..'
mov al,0xf ; 0000A214 B00F '..'
out dx,al ; 0000A216 EE '.'
mov word [bp+0xc],0x0 ; 0000A217 C7460C0000 '.F...'
xa21c: mov bx,[bp+0xc] ; 0000A21C 8B5E0C '.^.'
mov [bp+0xa],bx ; 0000A21F 895E0A '.^',0x0A
mov ah,al ; 0000A222 8AE0 '..'
in al,dx ; 0000A224 EC '.'
and al,0xf ; 0000A225 240F '$.'
xor ah,al ; 0000A227 32E0 '2.'
jnz xa23c ; 0000A229 7511 'u.'
mov bx,di ; 0000A22B 8BDF '..'
call xa27f ; 0000A22D E84F00 '.O.'
sub bx,cx ; 0000A230 2BD9 '+.'
mov [bp+0xc],bx ; 0000A232 895E0C '.^.'
cmp bx,[bp+0xa] ; 0000A235 3B5E0A ';^',0x0A
ja xa21c ; 0000A238 77E2 'w.'
jmp short xa268 ; 0000A23A EB2C '.,'
xa23c: mov bx,di ; 0000A23C 8BDF '..'
call xa27f ; 0000A23E E83E00 '.>.'
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 '...'
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 '((PP((PP'
add [bx+si],cl ; 0000A81A 0008 '..'
add [bx+si],cl ; 0000A81C 0008 '..'
add [bx+si],dl ; 0000A81E 0010 '..'
add [bx+si],dl ; 0000A820 0010 '..'
add [bx+si+0x0],al ; 0000A822 004000 '.@.'
inc ax ; 0000A825 40 '@'
add [bx+si+0x0],al ; 0000A826 004000 '.@.'
inc ax ; 0000A829 40 '@'
sub al,0x28 ; 0000A82A 2C28 ',('
sub ax,0x2a29 ; 0000A82C 2D292A '-)*'
cs push ds ; 0000A82F 2E1E '..'
db ')000000?'
xor [bx+si],al ; 0000A839 3000 '0.'
add [bx+si],dl ; 0000A83B 0010 '..'
adc [bx+si],ah ; 0000A83D 1020 '. '
and [bx+si],ah ; 0000A83F 2020 ' '
xor [bp+di],al ; 0000A841 3003 '0.'
add [bp+di],ax ; 0000A843 0103 '..'
pop es ; 0000A845 07 '.'
rcr byte [bp+di],1 ; 0000A846 D01B '..'
rcr byte [bp+di],1 ; 0000A848 D01B '..'
ret ; 0000A84A C3 '.'
db 0xE2,0xD0
sbb dx,ax ; 0000A84D 1BD0 '..'
sbb dx,[si-0x1] ; 0000A84F 1B54FF '.T.'
mov al,[0xd095] ; 0000A852 A095D0 '...'
sbb sp,[di+0x87fe] ; 0000A855 1BA5FE87 '....'
jmp xc42c ; 0000A859 E9D01B '...'
rcr byte [bp+di],1 ; 0000A85C D01B '..'
rcr byte [bp+di],1 ; 0000A85E D01B '..'
mov [0x5789],ax ; 0000A860 A38957 '..W'
out dx,ax ; 0000A863 EF '.'
rcr byte [bp+di],1 ; 0000A864 D01B '..'
gs lock dec bp ; 0000A866 65F04D 'e.M'
clc ; 0000A869 F8 '.'
inc cx ; 0000A86A 41 'A'
clc ; 0000A86B F8 '.'
pop cx ; 0000A86C 59 'Y'
in al,dx ; 0000A86D EC '.'
cmp di,sp ; 0000A86E 39E7 '9.'
pop cx ; 0000A870 59 'Y'
clc ; 0000A871 F8 '.'
cs call 0x9848 ; 0000A872 2EE8D2EF '....'
shl bh,0xf2 ; 0000A876 C0E7F2 '...'
out 0x6e,al ; 0000A879 E66E '.n'
db 0xFE ; 0000A87B FE '.'
push bx ; 0000A87C 53 'S'
call near [bp+di-0x1] ; 0000A87D FF53FF '.S.'
movsb ; 0000A880 A4 '.'
db 0xF0 ; 0000A881 F0 '.'
db 0xC7 ; 0000A882 C7 '.'
out dx,ax ; 0000A883 EF '.'
add [bx+si],al ; 0000A884 0000 '..'
xchg ax,di ; 0000A886 97 '.'
dec dx ; 0000A887 4A 'J'
pop ds ; 0000A888 1F '.'
sbb al,0xd0 ; 0000A889 1CD0 '..'
sbb dx,ax ; 0000A88B 1BD0 '..'
sbb dx,ax ; 0000A88D 1BD0 '..'
sbb bp,[bx+si] ; 0000A88F 1B28 '.('
sbb al,0xd0 ; 0000A891 1CD0 '..'
sbb dx,ax ; 0000A893 1BD0 '..'
sbb dx,ax ; 0000A895 1BD0 '..'
sbb di,ax ; 0000A897 1BF8 '..'
add di,ax ; 0000A899 03F8 '..'
add bh,[si+0x7803] ; 0000A89B 02BC0378 '...x'
add di,[bx+si+0x2] ; 0000A89F 037802 '.x.'
adc al,0x14 ; 0000A8A2 1414 '..'
adc al,0x14 ; 0000A8A4 1414 '..'
add [bx+di],ax ; 0000A8A6 0101 '..'
add [bx+di],ax ; 0000A8A8 0101 '..'
push ds ; 0000A8AA 1E '.'
add [0xb000],bh ; 0000A8AB 003E00
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 '...'
mov cx,0x1d ; 0000AC50 B91D00 '...'
mov bp,0xac59 ; 0000AC53 BD59AC '.Y.'
jmp xc7f7 ; 0000AC56 E99E1B '...'
xac59: jmp short xac59 ; 0000AC59 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 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
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
mov bp,0xba9b ; 0000BA95 BD9BBA
jmp x9380 ; 0000BA98 E9E5D8
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 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 '..'
mov bp,0xbc1c ; 0000BC16 BD1CBC '...'
jmp xb550 ; 0000BC19 E934F9 '.4.'
in al,0x61 ; 0000BC1C E461 '.a'
and al,0xf3 ; 0000BC1E 24F3 '$.'
out 0x61,al ; 0000BC20 E661 '.a'
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 '..'
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 '...'
mov cx,0x1d ; 0000BC43 B91D00 '...'
mov bp,0xbc4c ; 0000BC46 BD4CBC '.L.'
jmp xc7f7 ; 0000BC49 E9AB0B '...'
xbc4c: jmp short xbc4c ; 0000BC4C 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 '...'
call xc638 ; 0000BC57 E8DE09 '...'
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 '...'
mov cx,0x1d ; 0000BC66 B91D00 '...'
mov bp,0xbc6f ; 0000BC69 BD6FBC '.o.'
jmp xc7f7 ; 0000BC6C E9880B '...'
xbc6f: jmp short xbc6f ; 0000BC6F 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 '...'
test byte [0x96],0x20 ; 0000BD9A F606960020 '.... '
jz xbda8 ; 0000BD9F 7407 't.'
db 0xE2,0xF7
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 '...'
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 '.}.'
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 '<G'
jl xc196 ; 0000C190 7C04 '|.'
cmp al,0x53 ; 0000C192 3C53 '<S'
jng xc19d ; 0000C194 7E07 '~.'
xc196: mov byte [0x19],0x0 ; 0000C196 C606190000 '.....'
xc19b: clc ; 0000C19B F8 '.'
ret ; 0000C19C C3 '.'
xc19d: mov al,ah ; 0000C19D 8AC4 '..'
sub al,0x47 ; 0000C19F 2C47 ',G'
mov bx,0x9b81 ; 0000C1A1 BB819B '...'
cs xlatb ; 0000C1A4 2ED7 '..'
test byte [0x17],0x8 ; 0000C1A6 F606170008 '.....'
jnz xc202 ; 0000C1AB 7555 'uU'
mov si,0x9b8e ; 0000C1AD BE8E9B '...'
test byte [0x17],0x4 ; 0000C1B0 F606170004 '.....'
jnz xc1f9 ; 0000C1B5 7542 'uB'
test byte [0x17],0x3 ; 0000C1B7 F606170003 '.....'
jnz xc1f0 ; 0000C1BC 7532
test byte [0x17],0x20 ; 0000C1BE F606170020 '.... '
jnz xc1db ; 0000C1C3 7516 'u.'
test byte [0x96],0x2 ; 0000C1C5 F606960002 '.....'
jnz xc1d9 ; 0000C1CA 750D 'u',0x0D
xc1cc: cmp al,0x2e ; 0000C1CC 3C2E '<.'
jl xc1db ; 0000C1CE 7C0B '|.'
cmp ah,0x4c ; 0000C1D0 80FC4C '..L'
jnz xc1d9 ; 0000C1D3 7504 'u.'
mov al,0xf0 ; 0000C1D5 B0F0 '..'
jmp short xc1db ; 0000C1D7 EB02 '..'
xc1d9: xor al,al ; 0000C1D9 32C0 '2.'
xc1db: test byte [0x96],0x2 ; 0000C1DB F606960002 '.....'
jz xc1e9 ; 0000C1E0 7407 't.'
and byte [0x96],0xfd ; 0000C1E2 80269600FD '.&...'
mov al,0xe0 ; 0000C1E7 B0E0 '..'
xc1e9: call xd3b4 ; 0000C1E9 E8C811 '...'
xc1ec: xor al,al ; 0000C1EC 32C0 '2.'
jmp short xc233 ; 0000C1EE EB43 '.C'
xc1f0: test byte [0x17],0x20 ; 0000C1F0 F606170020 '.... '
jnz xc1cc ; 0000C1F5 75D5 'u.'
jmp short xc1db ; 0000C1F7 EBE2 '..'
xc1f9: call x9b08 ; 0000C1F9 E80CD9 '...'
mov ah,al ; 0000C1FC 8AE0 '..'
jc xc1d9 ; 0000C1FE 72D9 'r.'
jmp short xc236 ; 0000C200 EB34 '.4'
xc202: test byte [0x96],0x2 ; 0000C202 F606960002 '.....'
jnz xc238 ; 0000C207 752F 'u/'
cmp al,0x2e ; 0000C209 3C2E '<.'
jz xc196 ; 0000C20B 7489 't.'
cmp al,0x2b ; 0000C20D 3C2B '<+'
jnz xc21b ; 0000C20F 750A 'u',0x0A
call xc24c ; 0000C211 E83800 '.8.'
jnz xc1ec ; 0000C214 75D6 'u.'
mov ax,0x4ef0 ; 0000C216 B8F04E '..N'
jmp short xc1e9 ; 0000C219 EBCE '..'
xc21b: cmp al,0x2d ; 0000C21B 3C2D '<-'
jnz xc229 ; 0000C21D 750A 'u',0x0A
call xc24c ; 0000C21F E82A00 '.*.'
jnz xc1ec ; 0000C222 75C8 'u.'
mov ax,0x4af0 ; 0000C224 B8F04A '..J'
jmp short xc1e9 ; 0000C227 EBC0 '..'
xc229: sub al,0x30 ; 0000C229 2C30 ',0'
jl xc1ec ; 0000C22B 7CBF '|.'
mov ah,[0x19] ; 0000C22D 8A261900 '.&..'
aad ; 0000C231 D50A '.',0x0A
xc233: mov [0x19],al ; 0000C233 A21900 '...'
xc236: stc ; 0000C236 F9 '.'
ret ; 0000C237 C3 '.'
xc238: and byte [0x96],0xfd ; 0000C238 80269600FD '.&...'
mov si,0x9bb8 ; 0000C23D BEB89B '...'
jmp short xc1f9 ; 0000C240 EBB7 '..'
xc242: mov si,[0x1a] ; 0000C242 8B361A00 '.6..'
cmp si,[0x1c] ; 0000C246 3B361C00 ';6..'
lodsw ; 0000C24A AD '.'
ret ; 0000C24B C3 '.'
xc24c: test byte [0x17],0x8 ; 0000C24C F606170008 '.....'
jz xc258 ; 0000C251 7405 't.'
test byte [0x17],0x4 ; 0000C253 F606170004 '.....'
xc258: ret ; 0000C258 C3 '.'
xc259: pushf ; 0000C259 9C '.'
cli ; 0000C25A FA '.'
mov ax,[0x80] ; 0000C25B A18000 '...'
mov [0x1a],ax ; 0000C25E A31A00 '...'
mov [0x1c],ax ; 0000C261 A31C00 '...'
push cs ; 0000C264 0E '.'
call xc26b ; 0000C265 E80300 '...'
jmp short xc26c ; 0000C268 EB02 '..'
nop ; 0000C26A 90 '.'
xc26b: iret ; 0000C26B CF '.'
xc26c: ret ; 0000C26C C3 '.'
call x8da9 ; 0000C26D E839CB '.9.'
jz xc29d ; 0000C270 742B 't+'
mov ah,[0x49] ; 0000C272 8A264900 '.&I.'
cmp ah,0x4 ; 0000C276 80FC04 '...'
jc xc280 ; 0000C279 7205 'r.'
sub ah,0x6 ; 0000C27B 80EC06 '...'
jna xc2b5 ; 0000C27E 7635 'v5'
xc280: call xc32b ; 0000C280 E8A800 '...'
mov dx,[0x63] ; 0000C283 8B166300 '..c.'
add dx,byte +0x6 ; 0000C287 83C206 '...'
xc28a: in al,dx ; 0000C28A EC '.'
test al,0x1 ; 0000C28B A801 '..'
jnz xc28a ; 0000C28D 75FB 'u.'
cli ; 0000C28F FA '.'
xc290: in al,dx ; 0000C290 EC '.'
test al,0x1 ; 0000C291 A801 '..'
jz xc290 ; 0000C293 74FB 't.'
mov ax,[es:di] ; 0000C295 268B05 '&..'
mov [bp+0x0],ax ; 0000C298 894600 '.F.'
sti ; 0000C29B FB '.'
ret ; 0000C29C C3 '.'
xc29d: mov ah,[0x49] ; 0000C29D 8A264900 '.&I.'
cmp ah,0x4 ; 0000C2A1 80FC04 '...'
jc xc2ab ; 0000C2A4 7205 'r.'
sub ah,0x6 ; 0000C2A6 80EC06 '...'
jna xc2b5 ; 0000C2A9 760A 'v',0x0A
xc2ab: call xc32b ; 0000C2AB E87D00 '.}.'
mov ax,[es:di] ; 0000C2AE 268B05 '&..'
mov [bp+0x0],ax ; 0000C2B1 894600 '.F.'
ret ; 0000C2B4 C3 '.'
xc2b5: call xc34d ; 0000C2B5 E89500 '...'
mov cx,es ; 0000C2B8 8CC1 '..'
mov ds,cx ; 0000C2BA 8ED9 '..'
mov si,di ; 0000C2BC 8BF7 '..'
mov cx,ss ; 0000C2BE 8CD1 '..'
mov es,cx ; 0000C2C0 8EC1 '..'
sub sp,byte +0x8 ; 0000C2C2 83EC08 '...'
mov di,sp ; 0000C2C5 8BFC '..'
mov bh,0x4 ; 0000C2C7 B704 '..'
xc2c9: mov bl,0x2 ; 0000C2C9 B302 '..'
xc2cb: mov al,[si] ; 0000C2CB 8A04 '..'
sar ah,1 ; 0000C2CD D0FC '..'
jns xc2e4 ; 0000C2CF 7913 'y.'
mov dh,al ; 0000C2D1 8AF0 '..'
mov dl,[si+0x1] ; 0000C2D3 8A5401 '.T.'
mov cx,0x8 ; 0000C2D6 B90800 '...'
xc2d9: shl dx,1 ; 0000C2D9 D1E2 '..'
jns xc2de ; 0000C2DB 7901 'y.'
stc ; 0000C2DD F9 '.'
xc2de: rcl al,1 ; 0000C2DE D0D0 '..'
shl dx,1 ; 0000C2E0 D1E2 '..'
loop xc2d9 ; 0000C2E2 E2F5 '..'
xc2e4: stosb ; 0000C2E4 AA '.'
xor si,0x2000 ; 0000C2E5 81F60020 '... '
dec bl ; 0000C2E9 FECB '..'
jnz xc2cb ; 0000C2EB 75DE 'u.'
add si,byte +0x50 ; 0000C2ED 83C650 '..P'
dec bh ; 0000C2F0 FECF '..'
jnz xc2c9 ; 0000C2F2 75D5 'u.'
mov ax,cs ; 0000C2F4 8CC8 '..'
mov ds,ax ; 0000C2F6 8ED8 '..'
mov si,0xfa6e ; 0000C2F8 BE6EFA '.n.'
mov di,sp ; 0000C2FB 8BFC '..'
call xc369 ; 0000C2FD E86900 '.i.'
jnc xc324 ; 0000C300 7322 's"'
xor ax,ax ; 0000C302 33C0 '3.'
mov ds,ax ; 0000C304 8ED8 '..'
lds si,[0x7c] ; 0000C306 C5367C00 '.6|.'
push ax ; 0000C30A 50 'P'
push bx ; 0000C30B 53 'S'
mov ax,cs ; 0000C30C 8CC8 '..'
mov bx,ds ; 0000C30E 8CDB '..'
cmp ax,bx ; 0000C310 3BC3 ';.'
pop bx ; 0000C312 5B '['
pop ax ; 0000C313 58 'X'
jnz xc31b ; 0000C314 7505 'u.'
cmp si,byte +0x0 ; 0000C316 83FE00 '...'
jz xc324 ; 0000C319 7409 't.'
xc31b: mov di,sp ; 0000C31B 8BFC '..'
call xc369 ; 0000C31D E84900 '.I.'
jc xc324 ; 0000C320 7202 'r.'
add al,0x80 ; 0000C322 0480 '..'
xc324: add sp,byte +0x8 ; 0000C324 83C408 '...'
mov [bp+0x0],ax ; 0000C327 894600 '.F.'
ret ; 0000C32A C3 '.'
xc32b: mov di,ax ; 0000C32B 8BF8 '..'
mov bl,bh ; 0000C32D 8ADF '..'
xor bh,bh ; 0000C32F 32FF '2.'
mov ax,[0x4c] ; 0000C331 A14C00 '.L.'
mul bx ; 0000C334 F7E3 '..'
mov dx,ax ; 0000C336 8BD0 '..'
shl bx,1 ; 0000C338 D1E3 '..'
mov bx,[bx+0x50] ; 0000C33A 8B9F5000 '..P.'
mov al,[0x4a] ; 0000C33E A04A00 '.J.'
mul bh ; 0000C341 F6E7 '..'
xor bh,bh ; 0000C343 32FF '2.'
add ax,bx ; 0000C345 03C3 '..'
shl ax,1 ; 0000C347 D1E0 '..'
add ax,dx ; 0000C349 03C2 '..'
xchg ax,di ; 0000C34B 97 '.'
ret ; 0000C34C C3 '.'
xc34d: mov bx,[0x50] ; 0000C34D 8B1E5000 '..P.'
xor dx,dx ; 0000C351 33D2 '3.'
xchg bl,dl ; 0000C353 86DA '..'
mov di,bx ; 0000C355 8BFB '..'
shr di,1 ; 0000C357 D1EF '..'
shr di,1 ; 0000C359 D1EF '..'
add di,bx ; 0000C35B 03FB '..'
test byte [0x49],0x2 ; 0000C35D F606490002 '..I..'
jnz xc366 ; 0000C362 7502 'u.'
shl dx,1 ; 0000C364 D1E2 '..'
xc366: add di,dx ; 0000C366 03FA '..'
ret ; 0000C368 C3 '.'
xc369: mov ax,si ; 0000C369 8BC6 '..'
mov bx,di ; 0000C36B 8BDF '..'
xor ch,ch ; 0000C36D 32ED '2.'
mov dx,0x80 ; 0000C36F BA8000 '...'
push si ; 0000C372 56 'V'
xc373: mov si,ax ; 0000C373 8BF0 '..'
mov di,bx ; 0000C375 8BFB '..'
mov cl,0x4 ; 0000C377 B104 '..'
repe cmpsw ; 0000C379 F3A7 '..'
jz xc388 ; 0000C37B 740B 't.'
add ax,0x8 ; 0000C37D 050800 '...'
dec dx ; 0000C380 4A 'J'
jnz xc373 ; 0000C381 75F0 'u.'
pop si ; 0000C383 5E '^'
xor ax,ax ; 0000C384 33C0 '3.'
stc ; 0000C386 F9 '.'
ret ; 0000C387 C3 '.'
xc388: pop si ; 0000C388 5E '^'
sub ax,si ; 0000C389 2BC6 '+.'
mov cl,0x3 ; 0000C38B B103 '..'
shr ax,cl ; 0000C38D D3E8 '..'
ret ; 0000C38F C3 '.'
;
; HDC initialization
;
xc390: mov ax,0x40 ; 0000C390 B84000 '.@.'
mov ds,ax ; 0000C393 8ED8 '..'
mov al,0xb0 ; 0000C395 B0B0 '..'
out 0x84,al ; 0000C397 E684 '..'
xor al,al ; 0000C399 32C0 '2.'
mov [0x75],al ; 0000C39B A27500 '.u.'
mov [0x8e],al ; 0000C39E A28E00 '...'
mov dx,0x1f2 ; 0000C3A1 BAF201 '...'
mov al,0x55 ; 0000C3A4 B055 '.U'
out dx,al ; 0000C3A6 EE '.'
xor al,al ; 0000C3A7 32C0 '2.'
in al,dx ; 0000C3A9 EC '.'
cmp al,0x55 ; 0000C3AA 3C55 '<U'
jz xc3b4 ; 0000C3AC 7406 't.'
mov al,0xb1 ; 0000C3AE B0B1 '..'
out 0x84,al ; 0000C3B0 E684 '..'
jmp short xc3c1 ; 0000C3B2 EB0D '.',0x0D
xc3b4: or byte [0x8b],0x1 ; 0000C3B4 800E8B0001 '.....'
call xc4a0 ; 0000C3B9 E8E400 '...'
jc xc3c1 ; 0000C3BC 7203 'r.'
call xc3c6 ; 0000C3BE E80500 '...'
xc3c1: mov al,0xb8 ; 0000C3C1 B0B8 '..'
out 0x84,al ; 0000C3C3 E684 '..'
ret ; 0000C3C5 C3 '.'
xc3c6: push es ; 0000C3C6 06 '.'
call xc565 ; 0000C3C7 E89B01 '...'
jnc xc3e1 ; 0000C3CA 7315 's.'
mov al,0xb2 ; 0000C3CC B0B2 '..'
out 0x84,al ; 0000C3CE E684 '..'
mov bx,0xba00 ; 0000C3D0 BB00BA '...'
mov cx,0x1e ; 0000C3D3 B91E00 '...'
mov dx,0x0 ; 0000C3D6 BA0000 '...'
call xc745 ; 0000C3D9 E86903 '.i.'
call xc591 ; 0000C3DC E8B201 '...'
jmp short xc40c ; 0000C3DF EB2B '.+'
xc3e1: mov al,0xb3 ; 0000C3E1 B0B3 '..'
out 0x84,al ; 0000C3E3 E684 '..'
xor ax,ax ; 0000C3E5 33C0 '3.'
mov es,ax ; 0000C3E7 8EC0 '..'
les di,[es:0x104] ; 0000C3E9 26C43E0401 '&.>..'
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 '...'
pop bx ; 0000C636 5B '['
ret ; 0000C637 C3 '.'
;
; Wrapper around delay function
;
xc638: push bp ; 0000C638 55 'U'
push ax ; 0000C639 50 'P'
push cx ; 0000C63A 51 'Q'
call xc642 ; 0000C63B E80400 '...'
pop cx ; 0000C63E 59 'Y'
pop ax ; 0000C63F 58 'X'
pop bp ; 0000C640 5D ']'
ret ; 0000C641 C3 '.'
;
; Delay function (delay based on BX)
;
xc642: mov cx,bx ; 0000C642 8BCB '..'
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 '.'
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 '.'
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 '.'
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 '...'
ret ; 0000C79D C3 '.'
xc79e: mov bx,0x7d ; 0000C79E BB7D00 '.}.'
call xc7db ; 0000C7A1 E83700 '.7.'
mov bx,0x7d ; 0000C7A4 BB7D00 '.}.'
call xc638 ; 0000C7A7 E88EFE '...'
ret ; 0000C7AA C3 '.'
xc7ab: mov bx,0x320 ; 0000C7AB BB2003 '. .'
call xc7db ; 0000C7AE E82A00 '.*.'
mov bx,0x100 ; 0000C7B1 BB0001 '...'
call xc638 ; 0000C7B4 E881FE '...'
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 '.'
xc7db: mov al,0xb6 ; 0000C7DB B0B6 '..'
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.'
in al,0x61 ; 0000C7F0 E461 '.a'
and al,0xfc ; 0000C7F2 24FC '$.'
out 0x61,al ; 0000C7F4 E661 '.a'
ret ; 0000C7F6 C3 '.'
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 [0x40],0xff ; 0000C957 C6064000FF '..@..'
mov al,0x10 ; 0000C95C B010 '..'
mov cl,[bp+0x6] ; 0000C95E 8A4E06 '.N.'
shl al,cl ; 0000C961 D2E0 '..'
or al,0xc ; 0000C963 0C0C '..'
or al,[bp+0x6] ; 0000C965 0A4606 0x0A,'F.'
mov ah,[0x3f] ; 0000C968 8A263F00 '.&?.'
shl ah,0x4 ; 0000C96C C0E404 '...'
or al,ah ; 0000C96F 0AC4 0x0A,'.'
mov dx,0x3f2 ; 0000C971 BAF203 '...'
out dx,al ; 0000C974 EE '.'
mov ah,al ; 0000C975 8AE0 '..'
mov al,[0x8b] ; 0000C977 A08B00 '...'
shr al,0x6 ; 0000C97A C0E806 '...'
mov dx,0x3f7 ; 0000C97D BAF703 '...'
out dx,al ; 0000C980 EE '.'
shr ah,0x4 ; 0000C981 C0EC04 '...'
mov al,[0x3f] ; 0000C984 A03F00 '.?.'
and al,0xf ; 0000C987 240F '$.'
cmp al,ah ; 0000C989 3AC4 ':.'
jz xc9bd ; 0000C98B 7430 't0'
or [0x3f],ah ; 0000C98D 08263F00 '.&?.'
sti ; 0000C991 FB '.'
clc ; 0000C992 F8 '.'
mov ax,0x90fd ; 0000C993 B8FD90 '...'
int 0x15 ; 0000C996 CD15 '..'
jc xc9bd ; 0000C998 7223 'r#'
mov al,0x7d ; 0000C99A B07D '.}'
mov cl,0x8 ; 0000C99C B108 '..'
mov bl,[es:si+0xa] ; 0000C99E 268A5C0A '&.\',0x0A
cmp byte [bp+0x1],0x3 ; 0000C9A2 807E0103 '.~..'
jz xc9b0 ; 0000C9A6 7408 't.'
cmp byte [bp+0x1],0x5 ; 0000C9A8 807E0105 '.~..'
jnz xc9b0 ; 0000C9AC 7502 'u.'
mov cl,0x5 ; 0000C9AE B105 '..'
xc9b0: cmp bl,cl ; 0000C9B0 3AD9 ':.'
jnc xc9b6 ; 0000C9B2 7302 's.'
xchg bl,cl ; 0000C9B4 86D9 '..'
xc9b6: mul bl ; 0000C9B6 F6E3 '..'
mov bx,ax ; 0000C9B8 8BD8 '..'
call xc638 ; 0000C9BA E87BFC '.{.'
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 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 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 '...'
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 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 '...'
mov cx,0x1f ; 0000CFD4 B91F00 '...'
call xc745 ; 0000CFD7 E86BF7 '.k.'
xcfda: jmp short xcfda ; 0000CFDA 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 '<U'
jz xd02b ; 0000D017 7412 't.'
xd019: mov al,0x83 ; 0000D019 B083 '..'
out 0x84,al ; 0000D01B E684 '..'
mov dx,0x0 ; 0000D01D BA0000 '...'
mov bx,0xb810 ; 0000D020 BB10B8 '...'
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 '<a'
jl xd2b2 ; 0000D2ED 7CC3 '|.'
cmp al,0x7a ; 0000D2EF 3C7A '<z'
jg xd2b2 ; 0000D2F1 7FBF '..'
sub al,0x20 ; 0000D2F3 2C20 ', '
jmp short xd2b2 ; 0000D2F5 EBBB '..'
xd2f7: cmp ah,0x37 ; 0000D2F7 80FC37 '..7'
jz xd2d2 ; 0000D2FA 74D6 't.'
cmp ah,0x35 ; 0000D2FC 80FC35 '..5'
jnz xd30f ; 0000D2FF 750E 'u.'
test byte [0x96],0x2 ; 0000D301 F606960002 '.....'
jz xd30f ; 0000D306 7407 't.'
and byte [0x96],0xfd ; 0000D308 80269600FD '.&...'
jmp short xd2d2 ; 0000D30D EBC3 '..'
xd30f: cmp ah,0xf ; 0000D30F 80FC0F '...'
jz xd31d ; 0000D312 7409 't.'
jg xd321 ; 0000D314 7F0B '..'
mov al,[cs:bx+0x9b59] ; 0000D316 2E8A87599B '...Y.'
jmp short xd2b2 ; 0000D31B EB95 '..'
xd31d: xor al,al ; 0000D31D 32C0 '2.'
jmp short xd2b2 ; 0000D31F EB91 '..'
xd321: mov si,0x9b69 ; 0000D321 BE699B '.i.'
call x9b08 ; 0000D324 E8E1C7 '...'
jc xd2b2 ; 0000D327 7289 'r.'
test byte [0x17],0x40 ; 0000D329 F606170040 '....@'
jnz xd2b2 ; 0000D32E 7582 'u.'
sub al,0x20 ; 0000D330 2C20 ', '
jmp xd2b2 ; 0000D332 E97DFF '.}.'
xd335: and al,0x7f ; 0000D335 247F '$.'
cmp ah,0x35 ; 0000D337 80FC35 '..5'
jnz xd34d ; 0000D33A 7511 'u.'
test byte [0x96],0x2 ; 0000D33C F606960002 '.....'
jz xd34d ; 0000D341 740A 't',0x0A
and byte [0x96],0xfd ; 0000D343 80269600FD '.&...'
mov ah,0xa4 ; 0000D348 B4A4 '..'
jmp short xd397 ; 0000D34A EB4B '.K'
nop ; 0000D34C 90 '.'
xd34d: cmp ah,0x1c ; 0000D34D 80FC1C '...'
jnz xd363 ; 0000D350 7511 'u.'
test byte [0x96],0x2 ; 0000D352 F606960002 '.....'
jz xd363 ; 0000D357 740A 't',0x0A
and byte [0x96],0xfd ; 0000D359 80269600FD '.&...'
mov ah,0xa6 ; 0000D35E B4A6 '..'
jmp short xd397 ; 0000D360 EB35 '.5'
nop ; 0000D362 90 '.'
xd363: cmp ah,0xf ; 0000D363 80FC0F '...'
jnz xd36d ; 0000D366 7505 'u.'
mov ah,0xa5 ; 0000D368 B4A5 '..'
jmp short xd397 ; 0000D36A EB2B '.+'
nop ; 0000D36C 90 '.'
xd36d: push ax ; 0000D36D 50 'P'
mov al,ah ; 0000D36E 8AC4 '..'
mov cx,cs ; 0000D370 8CC9 '..'
mov es,cx ; 0000D372 8EC1 '..'
mov cx,0xd ; 0000D374 B90D00 '.',0x0D,'.'
nop ; 0000D377 90 '.'
cld ; 0000D378 FC '.'
mov di,0xd3a7 ; 0000D379 BFA7D3 '...'
repne scasb ; 0000D37C F2AE '..'
pop ax ; 0000D37E 58 'X'
jz xd3a3 ; 0000D37F 7422 't"'
cmp al,0x20 ; 0000D381 3C20 '< '
jz xd399 ; 0000D383 7414 't.'
cmp ah,0x2 ; 0000D385 80FC02 '...'
jl xd39c ; 0000D388 7C12 '|.'
cmp ah,0xe ; 0000D38A 80FC0E '...'
jl xd39e ; 0000D38D 7C0F '|.'
cmp al,0x61 ; 0000D38F 3C61 '<a'
jl xd39c ; 0000D391 7C09 '|.'
cmp al,0x7a ; 0000D393 3C7A '<z'
jg xd39c ; 0000D395 7F05 '..'
xd397: xor al,al ; 0000D397 32C0 '2.'
xd399: call xd3b4 ; 0000D399 E81800 '...'
xd39c: stc ; 0000D39C F9 '.'
ret ; 0000D39D C3 '.'
xd39e: add ah,0x76 ; 0000D39E 80C476 '..v'
jmp short xd397 ; 0000D3A1 EBF4 '..'
xd3a3: mov al,0xf0 ; 0000D3A3 B0F0 '..'
jmp short xd399 ; 0000D3A5 EBF2 '..'
add [0x1b1a],cx ; 0000D3A7 010E1A1B '....'
sbb al,0x27 ; 0000D3AB 1C27 '.',0x27
db '()+3457'
xd3b4: cli ; 0000D3B4 FA '.'
mov si,[0x1c] ; 0000D3B5 8B361C00 '.6..'
mov [si],ax ; 0000D3B9 8904 '..'
inc si ; 0000D3BB 46 'F'
inc si ; 0000D3BC 46 'F'
cmp si,[0x82] ; 0000D3BD 3B368200 ';6..'
jnz xd3c7 ; 0000D3C1 7504 'u.'
mov si,[0x80] ; 0000D3C3 8B368000 '.6..'
xd3c7: cmp si,[0x1a] ; 0000D3C7 3B361A00 ';6..'
jz xd3de ; 0000D3CB 7411 't.'
mov [0x1c],si ; 0000D3CD 89361C00 '.6..'
sti ; 0000D3D1 FB '.'
call xeb0c ; 0000D3D2 E83717 '.7.'
inc bp ; 0000D3D5 45 'E'
push ax ; 0000D3D6 50 'P'
mov ax,0x9102 ; 0000D3D7 B80291 '...'
int 0x15 ; 0000D3DA CD15 '..'
pop ax ; 0000D3DC 58 'X'
ret ; 0000D3DD C3 '.'
xd3de: sti ; 0000D3DE FB '.'
push ax ; 0000D3DF 50 'P'
mov bx,0x7d ; 0000D3E0 BB7D00 '.}.'
call xc7db ; 0000D3E3 E8F5F3 '...'
pop ax ; 0000D3E6 58 'X'
ret ; 0000D3E7 C3 '.'
xd3e8: mov ah,0x1 ; 0000D3E8 B401 '..'
mov al,[bp+0x0] ; 0000D3EA 8A4600 '.F.'
or word [bp+0x16],0x1 ; 0000D3ED 814E160100 '.N...'
ret ; 0000D3F2 C3 '.'
xd3f3: push dx ; 0000D3F3 52 'R'
call xd430 ; 0000D3F4 E83900 '.9.'
test al,0x40 ; 0000D3F7 A840 '.@'
pop dx ; 0000D3F9 5A 'Z'
ret ; 0000D3FA C3 '.'
xd3fb: mov al,0x90 ; 0000D3FB B090 '..'
jmp short xd401 ; 0000D3FD EB02 '..'
xd3ff: mov al,0x10 ; 0000D3FF B010 '..'
xd401: call xb544 ; 0000D401 E840E1 '.@.'
ret ; 0000D404 C3 '.'
xd405: push dx ; 0000D405 52 'R'
call xd3ff ; 0000D406 E8F6FF '...'
mov dl,[bp+0x6] ; 0000D409 8A5606 '.V.'
or dl,dl ; 0000D40C 0AD2 0x0A,'.'
jnz xd413 ; 0000D40E 7503 'u.'
shr al,0x4 ; 0000D410 C0E804 '...'
xd413: and al,0xf ; 0000D413 240F '$.'
or al,al ; 0000D415 0AC0 0x0A,'.'
jz xd420 ; 0000D417 7407 't.'
cmp al,0x4 ; 0000D419 3C04 '<.'
ja xd420 ; 0000D41B 7703 'w.'
clc ; 0000D41D F8 '.'
jmp short xd421 ; 0000D41E EB01 '..'
xd420: stc ; 0000D420 F9 '.'
xd421: pop dx ; 0000D421 5A 'Z'
ret ; 0000D422 C3 '.'
xd423: call x9190 ; 0000D423 E86ABD '.j.'
mov ah,[bx] ; 0000D426 8A27 '.',0x27
test ah,0x10 ; 0000D428 F6C410 '...'
ret ; 0000D42B C3 '.'
xd42c: mov al,0x8e ; 0000D42C B08E '..'
jmp short xd432 ; 0000D42E EB02 '..'
xd430: mov al,0xe ; 0000D430 B00E '..'
xd432: call xb544 ; 0000D432 E80FE1 '...'
ret ; 0000D435 C3 '.'
xd436: mov dx,[0x10] ; 0000D436 8B161000 '....'
test dl,0x1 ; 0000D43A F6C201 '...'
jz xd451 ; 0000D43D 7412 't.'
and dl,0xc0 ; 0000D43F 80E2C0 '...'
jz xd44d ; 0000D442 7409 't.'
cmp dl,0x40 ; 0000D444 80FA40 '..@'
jnz xd451 ; 0000D447 7508 'u.'
mov dl,0x2 ; 0000D449 B202 '..'
jmp short xd454 ; 0000D44B EB07 '..'
xd44d: mov dl,0x1 ; 0000D44D B201 '..'
jmp short xd454 ; 0000D44F EB03 '..'
xd451: mov dl,0x0 ; 0000D451 B200 '..'
stc ; 0000D453 F9 '.'
xd454: ret ; 0000D454 C3 '.'
xd455: mov bh,ah ; 0000D455 8AFC '..'
mov ah,[bp+0x6] ; 0000D457 8A6606 '.f.'
or ah,ah ; 0000D45A 0AE4 0x0A,'.'
jz xd461 ; 0000D45C 7403 't.'
shl al,0x4 ; 0000D45E C0E004 '...'
xd461: or [0x8f],al ; 0000D461 08068F00 '....'
mov ah,bh ; 0000D465 8AE7 '..'
ret ; 0000D467 C3 '.'
xd468: mov bh,ah ; 0000D468 8AFC '..'
mov ah,[bp+0x6] ; 0000D46A 8A6606 '.f.'
or ah,ah ; 0000D46D 0AE4 0x0A,'.'
jz xd474 ; 0000D46F 7403 't.'
shl al,0x4 ; 0000D471 C0E004 '...'
xd474: not al ; 0000D474 F6D0 '..'
and [0x8f],al ; 0000D476 20068F00 ' ...'
mov ah,bh ; 0000D47A 8AE7 '..'
ret ; 0000D47C C3 '.'
xd47d: xor ax,ax ; 0000D47D 33C0 '3.'
mov al,[0x8f] ; 0000D47F A08F00 '...'
mov ah,[bp+0x6] ; 0000D482 8A6606 '.f.'
or ah,ah ; 0000D485 0AE4 0x0A,'.'
jz xd48c ; 0000D487 7403 't.'
shr al,0x4 ; 0000D489 C0E804 '...'
xd48c: and ax,0xf ; 0000D48C 250F00 '%..'
ret ; 0000D48F C3 '.'
xd490: push ax ; 0000D490 50 'P'
push bx ; 0000D491 53 'S'
push dx ; 0000D492 52 'R'
mov al,ah ; 0000D493 8AC4 '..'
shr al,0x6 ; 0000D495 C0E806 '...'
mov dx,0x3f7 ; 0000D498 BAF703 '...'
out dx,al ; 0000D49B EE '.'
mov al,[0x8b] ; 0000D49C A08B00 '...'
mov bl,al ; 0000D49F 8AD8 '..'
and al,0xc0 ; 0000D4A1 24C0 '$.'
shr al,0x4 ; 0000D4A3 C0E804 '...'
test bl,0x1 ; 0000D4A6 F6C301 '...'
jz xd4ad ; 0000D4A9 7402 't.'
or al,0x1 ; 0000D4AB 0C01 '..'
xd4ad: and ah,0xc0 ; 0000D4AD 80E4C0 '...'
or ah,al ; 0000D4B0 0AE0 0x0A,'.'
mov [0x8b],ah ; 0000D4B2 88268B00 '.&..'
pop dx ; 0000D4B6 5A 'Z'
pop bx ; 0000D4B7 5B '['
pop ax ; 0000D4B8 58 'X'
ret ; 0000D4B9 C3 '.'
xd4ba: call xc9bf ; 0000D4BA E802F5 '...'
jz xd4ba ; 0000D4BD 74FB 't.'
call x919a ; 0000D4BF E8D8BC '...'
in al,dx ; 0000D4C2 EC '.'
ret ; 0000D4C3 C3 '.'
xd4c4: call xc9bf ; 0000D4C4 E8F8F4 '...'
jnz xd4c4 ; 0000D4C7 75FB 'u.'
call x919a ; 0000D4C9 E8CEBC '...'
mov al,bh ; 0000D4CC 8AC7 '..'
out dx,al ; 0000D4CE EE '.'
ret ; 0000D4CF C3 '.'
xd4d0: mov bx,[es:si] ; 0000D4D0 268B1C '&..'
xchg bh,bl ; 0000D4D3 86FB '..'
call xd4c4 ; 0000D4D5 E8ECFF '...'
xchg bh,bl ; 0000D4D8 86FB '..'
call xd4c4 ; 0000D4DA E8E7FF '...'
ret ; 0000D4DD C3 '.'
push ax ; 0000D4DE 50 'P'
call xee9c ; 0000D4DF E8BA19 '...'
mov bh,0x4a ; 0000D4E2 B74A '.J'
call xd4c4 ; 0000D4E4 E8DDFF '...'
mov bh,[bp+0x7] ; 0000D4E7 8A7E07 '.~.'
shl bh,0x2 ; 0000D4EA C0E702 '...'
or bh,[bp+0x6] ; 0000D4ED 0A7E06 0x0A,'~.'
call xd4c4 ; 0000D4F0 E8D1FF '...'
call xef85 ; 0000D4F3 E88F1A '...'
jnz xd509 ; 0000D4F6 7511 'u.'
mov cx,0x7 ; 0000D4F8 B90700 '...'
mov di,0x42 ; 0000D4FB BF4200 '.B.'
xd4fe: call xd4ba ; 0000D4FE E8B9FF '...'
mov [di],al ; 0000D501 8805 '..'
inc di ; 0000D503 47 'G'
loop xd4fe ; 0000D504 E2F8 '..'
call xd50f ; 0000D506 E80600 '...'
xd509: mov [0x41],ah ; 0000D509 88264100 '.&A.'
pop ax ; 0000D50D 58 'X'
ret ; 0000D50E C3 '.'
;
; Check the FDC's ST0 response
;
xd50f: mov al,[0x42] ; 0000D50F A04200 '.B.'
test al,0xc0 ; 0000D512 A8C0 '..'
jz xd53d ; 0000D514 No problems
test al,0x8 ; 0000D516 A808 '..'
jz xd51e ; 0000D518 7404 't.'
mov ah,0x80 ; 0000D51A B480 '..'
jmp short xd53f ; 0000D51C EB21 '.!'
xd51e: mov ah,[0x43] ; 0000D51E 8A264300 '.&C.'
test ah,0x30 ; 0000D522 F6C430 '..0'
jz xd52b ; 0000D525 7404 't.'
shr ah,1 ; 0000D527 D0EC '..'
jmp short xd53f ; 0000D529 EB14 '..'
xd52b: test ah,0x3 ; 0000D52B F6C403 '...'
jz xd534 ; 0000D52E 7404 't.'
inc ah ; 0000D530 FEC4 '..'
jmp short xd53f ; 0000D532 EB0B '..'
xd534: test ah,0x80 ; 0000D534 F6C480 '...'
jz xd53b ; 0000D537 7402 't.'
mov ah,0x4 ; 0000D539 B404 '..'
xd53b: jmp short xd53f ; 0000D53B EB02 '..'
xd53d: mov ah,0x0 ; 0000D53D B400 '..'
xd53f: ret ; 0000D53F C3 '.'
xd540: mov bx,0x40 ; 0000D540 BB4000 '.@.'
mov ds,bx ; 0000D543 8EDB '..'
mov bx,0x90 ; 0000D545 BB9000 '...'
cmp byte [bx],0x93 ; 0000D548 803F93 '.?.'
jnz xd550 ; 0000D54B 7503 'u.'
jmp xd617 ; 0000D54D E9C700 '...'
xd550: mov al,[bx] ; 0000D550 8A07 '..'
and al,0xc0 ; 0000D552 24C0 '$.'
shr al,0x6 ; 0000D554 C0E806 '...'
or al,al ; 0000D557 0AC0 0x0A,'.'
jz xd5ac ; 0000D559 7451 'tQ'
dec al ; 0000D55B FEC8 '..'
jnz xd583 ; 0000D55D 7524 'u$'
mov bl,0x5 ; 0000D55F B305 '..'
mov ch,0x27 ; 0000D561 B527 '.',0x27
xd563: mov ah,0x0 ; 0000D563 B400 '..'
int 0x13 ; 0000D565 CD13 '..'
mov ah,0x74 ; 0000D567 B474 '.t'
call xd64b ; 0000D569 E8DF00 '...'
mov ax,0x409 ; 0000D56C B80904 '...'
mov cl,0x1 ; 0000D56F B101 '..'
xor dx,dx ; 0000D571 33D2 '3.'
int 0x13 ; 0000D573 CD13 '..'
jc xd57a ; 0000D575 7203 'r.'
jmp xd5fe ; 0000D577 E98400 '...'
xd57a: cmp ah,0x4 ; 0000D57A 80FC04 '...'
jnz xd583 ; 0000D57D 7504 'u.'
or al,al ; 0000D57F 0AC0 0x0A,'.'
jnz xd5fe ; 0000D581 757B 'u{'
xd583: mov ah,0x0 ; 0000D583 B400 '..'
int 0x13 ; 0000D585 CD13 '..'
mov ah,0x97 ; 0000D587 B497 '..'
call xd64b ; 0000D589 E8BF00 '...'
add ch,0x28 ; 0000D58C 80C528 '..('
mov ax,0x409 ; 0000D58F B80904 '...'
mov cl,0x1 ; 0000D592 B101 '..'
xor dx,dx ; 0000D594 33D2 '3.'
int 0x13 ; 0000D596 CD13 '..'
jnc xd5e0 ; 0000D598 7346 'sF'
cmp ah,0x4 ; 0000D59A 80FC04 '...'
jnz xd5a3 ; 0000D59D 7504 'u.'
or al,al ; 0000D59F 0AC0 0x0A,'.'
jnz xd5e0 ; 0000D5A1 753D 'u='
xd5a3: dec bl ; 0000D5A3 FECB '..'
jz xd622 ; 0000D5A5 747B 't{'
sub ch,0x29 ; 0000D5A7 80ED29 '..)'
jmp short xd563 ; 0000D5AA EBB7 '..'
xd5ac: mov bl,0x5 ; 0000D5AC B305 '..'
xor ch,ch ; 0000D5AE 32ED '2.'
xd5b0: mov ah,0x0 ; 0000D5B0 B400 '..'
int 0x13 ; 0000D5B2 CD13 '..'
mov ah,0x17 ; 0000D5B4 B417 '..'
call xd64b ; 0000D5B6 E89200 '...'
mov ax,0x401 ; 0000D5B9 B80104 '...'
mov cl,0x10 ; 0000D5BC B110 '..'
xor dx,dx ; 0000D5BE 33D2 '3.'
int 0x13 ; 0000D5C0 CD13 '..'
jnc xd5e0 ; 0000D5C2 731C 's.'
mov ah,0x0 ; 0000D5C4 B400 '..'
int 0x13 ; 0000D5C6 CD13 '..'
mov ah,0x15 ; 0000D5C8 B415 '..'
call xd64b ; 0000D5CA E87E00 '.~.'
mov ax,0x401 ; 0000D5CD B80104 '...'
mov cl,0xf ; 0000D5D0 B10F '..'
xor dx,dx ; 0000D5D2 33D2 '3.'
int 0x13 ; 0000D5D4 CD13 '..'
jnc xd5fe ; 0000D5D6 7326 's&'
dec bl ; 0000D5D8 FECB '..'
jz xd622 ; 0000D5DA 7446 'tF'
inc ch ; 0000D5DC FEC5 '..'
jmp short xd5b0 ; 0000D5DE EBD0 '..'
xd5e0: mov bx,0x90 ; 0000D5E0 BB9000 '...'
cmp byte [bx],0x97 ; 0000D5E3 803F97 '.?.'
jz xd5f3 ; 0000D5E6 740B 't.'
mov ah,0x4 ; 0000D5E8 B404 '..'
call xd65f ; 0000D5EA E87200 '.r.'
mov dx,0xa13c ; 0000D5ED BA3CA1 '.<.'
jmp short xd647 ; 0000D5F0 EB55 '.U'
nop ; 0000D5F2 90 '.'
xd5f3: mov ah,0x34 ; 0000D5F3 B434 '.4'
call xd65f ; 0000D5F5 E86700 '.g.'
mov dx,0xa12f ; 0000D5F8 BA2FA1 './.'
jmp short xd647 ; 0000D5FB EB4A '.J'
nop ; 0000D5FD 90 '.'
xd5fe: mov ah,0x2 ; 0000D5FE B402 '..'
call xd65f ; 0000D600 E85C00 '.\.'
mov bx,0x90 ; 0000D603 BB9000 '...'
cmp byte [bx],0x74 ; 0000D606 803F74 '.?t'
jz xd611 ; 0000D609 7406 't.'
mov dx,0xa115 ; 0000D60B BA15A1 '...'
jmp short xd647 ; 0000D60E EB37 '.7'
nop ; 0000D610 90 '.'
xd611: mov dx,0xa108 ; 0000D611 BA08A1 '...'
jmp short xd647 ; 0000D614 EB31 '.1'
nop ; 0000D616 90 '.'
xd617: mov ah,0x1 ; 0000D617 B401 '..'
call xd65f ; 0000D619 E84300 '.C.'
mov dx,0xa0fb ; 0000D61C BAFBA0 '...'
jmp short xd647 ; 0000D61F EB26 '.&'
nop ; 0000D621 90 '.'
xd622: call xd3f3 ; 0000D622 E8CEFD '...'
jnz xd64a ; 0000D625 7523 'u#'
call xd3ff ; 0000D627 E8D5FD '...'
and al,0xf0 ; 0000D62A 24F0 '$.'
shr al,0x4 ; 0000D62C C0E804 '...'
cmp al,0x1 ; 0000D62F 3C01 '<.'
mov dx,0xa0fb ; 0000D631 BAFBA0 '...'
jz xd647 ; 0000D634 7411 't.'
dec al ; 0000D636 FEC8 '..'
mov dx,0xa108 ; 0000D638 BA08A1 '...'
jz xd647 ; 0000D63B 740A 't',0x0A
dec al ; 0000D63D FEC8 '..'
mov dx,0xa122 ; 0000D63F BA22A1 '.".'
jz xd647 ; 0000D642 7403 't.'
mov dx,0xa13c ; 0000D644 BA3CA1 '.<.'
xd647: call xd6cd ; 0000D647 E88300 '...'
xd64a: ret ; 0000D64A C3 '.'
xd64b: push bx ; 0000D64B 53 'S'
mov bx,0x90 ; 0000D64C BB9000 '...'
cmp [bx],ah ; 0000D64F 3827 '8',0x27
jz xd65d ; 0000D651 740A 't',0x0A
mov [bx],ah ; 0000D653 8827 '.',0x27
call xd490 ; 0000D655 E838FE '.8.'
or byte [0x8f],0x6 ; 0000D658 800E8F0006 '.....'
xd65d: pop bx ; 0000D65D 5B '['
ret ; 0000D65E C3 '.'
xd65f: call xd3f3 ; 0000D65F E891FD '...'
jnz xd6cc ; 0000D662 7568 'uh'
call xd3ff ; 0000D664 E898FD '...'
shr al,0x4 ; 0000D667 C0E804 '...'
cmp ah,al ; 0000D66A 3AE0 ':.'
jz xd6be ; 0000D66C 7450 'tP'
cmp ah,0x34 ; 0000D66E 80FC34 '..4'
jnz xd67b ; 0000D671 7508 'u.'
cmp al,0x3 ; 0000D673 3C03 '<.'
jz xd6be ; 0000D675 7447 'tG'
cmp al,0x4 ; 0000D677 3C04 '<.'
jz xd6be ; 0000D679 7443 'tC'
xd67b: mov al,0x33 ; 0000D67B B033 '.3'
call xb544 ; 0000D67D E8C4DE '...'
or al,0x4 ; 0000D680 0C04 '..'
and al,0xfc ; 0000D682 24FC '$.'
or al,ah ; 0000D684 0AC4 0x0A,'.'
mov ah,al ; 0000D686 8AE0 '..'
mov al,0x33 ; 0000D688 B033 '.3'
call xb549 ; 0000D68A E8BCDE '...'
call xd430 ; 0000D68D E8A0FD '...'
test al,0x20 ; 0000D690 A820 '. '
jnz xd6cc ; 0000D692 7538 'u8'
mov ah,al ; 0000D694 8AE0 '..'
or ah,0x20 ; 0000D696 80CC20 '.. '
mov al,0xe ; 0000D699 B00E '..'
call xb549 ; 0000D69B E8ABDE '...'
mov dx,0x2000 ; 0000D69E BA0020 '.. '
mov bx,0xba1e ; 0000D6A1 BB1EBA '...'
mov cx,0x59 ; 0000D6A4 B95900 '.Y.'
call xc745 ; 0000D6A7 E89BF0 '...'
mov bp,0x1 ; 0000D6AA BD0100 '...'
call xe38f ; 0000D6AD E8DF0C '...'
mov ah,0xf ; 0000D6B0 B40F '..'
int 0x10 ; 0000D6B2 CD10 '..'
mov ah,0x0 ; 0000D6B4 B400 '..'
int 0x10 ; 0000D6B6 CD10 '..'
mov al,0xbd ; 0000D6B8 B0BD '..'
out 0x84,al ; 0000D6BA E684 '..'
jmp short xd6cc ; 0000D6BC EB0E '..'
xd6be: mov al,0x33 ; 0000D6BE B033 '.3'
mov ah,al ; 0000D6C0 8AE0 '..'
call xb544 ; 0000D6C2 E87FDE '...'
and al,0xfb ; 0000D6C5 24FB '$.'
xchg al,ah ; 0000D6C7 86C4 '..'
call xb549 ; 0000D6C9 E87DDE '.}.'
xd6cc: ret ; 0000D6CC C3 '.'
xd6cd: push ax ; 0000D6CD 50 'P'
mov ax,dx ; 0000D6CE 8BC2 '..'
xor dx,dx ; 0000D6D0 33D2 '3.'
mov es,dx ; 0000D6D2 8EC2 '..'
mov di,0x78 ; 0000D6D4 BF7800 '.x.'
stosw ; 0000D6D7 AB '.'
mov ax,cs ; 0000D6D8 8CC8 '..'
stosw ; 0000D6DA AB '.'
pop ax ; 0000D6DB 58 'X'
ret ; 0000D6DC C3 '.'
xd6dd: pusha ; 0000D6DD 60 '`'
push ds ; 0000D6DE 1E '.'
push es ; 0000D6DF 06 '.'
push fs ; 0000D6E0 0FA0 '..'
push gs ; 0000D6E2 0FA8 '..'
mov al,0x60 ; 0000D6E4 B060 '.`'
out 0x84,al ; 0000D6E6 E684 '..'
mov ax,0x1c00 ; 0000D6E8 B8001C '...'
mov ds,ax ; 0000D6EB 8ED8 '..'
mov bx,0x40 ; 0000D6ED BB4000 '.@.'
mov es,bx ; 0000D6F0 8EC3 '..'
mov [es:0x69],ss ; 0000D6F2 268C166900 '&..i.'
mov [es:0x67],sp ; 0000D6F7 2689266700 '&.&g.'
mov word [0x64],0x0 ; 0000D6FC C70664000000 '..d...'
mov al,0x61 ; 0000D702 B061 '.a'
out 0x84,al ; 0000D704 E684 '..'
call x80e2 ; 0000D706 E8D9A9 '...'
jz xd714 ; 0000D709 7409 't.'
or word [0x64],0x10 ; 0000D70B 810E64001000 '..d...'
jmp xda75 ; 0000D711 E96103 '.a.'
xd714: call x863f ; 0000D714 E828AF '.(.'
mov al,0x62 ; 0000D717 B062 '.b'
out 0x84,al ; 0000D719 E684 '..'
mov word [0x86],0x80 ; 0000D71B C70686008000 '......'
mov word [0x88],0x0 ; 0000D721 C70688000000 '......'
call x8028 ; 0000D727 E8FEA8 '...'
cmp word [es:0x72],0x1234 ; 0000D72A 26813E72003412 '&.>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. -JP
;
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 ; segment 0x40 mapped to %B0000
mov es,ax ; (ES) -> video buffers
mov ax,bp ; (AX) == value to display (in Kb)
call x80a5 ; 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 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 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 '...'
jnz xe8db ; 0000E8D4 7505 'u.'
call xddaf ; 0000E8D6 E8D6F4 '...'
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'
jnz xe9a7 ; 0000E9BD 75E8
and byte [0x96],0xbf ; 0000E9BF 80269600BF '.&...'
or byte [0x96],0x10 ; 0000E9C4 800E960010 '.....'
or byte [0x17],0x20 ; 0000E9C9 800E170020 '.... '
push ax ; 0000E9CE 50 'P'
mov al,0xe ; 0000E9CF B00E '..'
call xb544 ; 0000E9D1 E870CB '.p.'
test al,0x40 ; 0000E9D4 A840 '.@'
jnz xe9e6 ; 0000E9D6 750E 'u.'
mov al,0x2c ; 0000E9D8 B02C '.,'
call xb544 ; 0000E9DA E867CB '.g.'
test al,0x40 ; 0000E9DD A840 '.@'
jnz xe9e6 ; 0000E9DF 7505 'u.'
and byte [0x17],0xdf ; 0000E9E1 80261700DF '.&...'
xe9e6: pop ax ; 0000E9E6 58 'X'
mov al,0x20 ; 0000E9E7 B020 '. '
out 0x20,al ; 0000E9E9 E620 '. '
sti ; 0000E9EB FB '.'
call xeba5 ; 0000E9EC E8B601 '...'
and byte [0x96],0xdf ; 0000E9EF 80269600DF '.&...'
mov bp,0xffff ; 0000E9F4 BDFFFF '...'
jmp xeadf ; 0000E9F7 E9E500 '...'
xe9fa: mov di,0x17 ; 0000E9FA BF1700 '...'
call xe97c ; 0000E9FD E87CFF '.|.'
mov bl,al ; 0000EA00 8AD8 '..'
in al,0x60 ; 0000EA02 E460 '.`'
stc ; 0000EA04 F9 '.'
mov ah,0x4f ; 0000EA05 B44F '.O'
int 0x15 ; 0000EA07 CD15 '..'
mov bp,0x0 ; 0000EA09 BD0000 '...'
jc xea16 ; 0000EA0C 7208 'r.'
mov al,0x20 ; 0000EA0E B020 '. '
out 0x20,al ; 0000EA10 E620 '. '
sti ; 0000EA12 FB '.'
jmp xeadf ; 0000EA13 E9C900 '...'
xea16: mov ah,al ; 0000EA16 8AE0 '..'
push ax ; 0000EA18 50 'P'
cmp al,0x46 ; 0000EA19 3C46 '<F'
jnz xea32 ; 0000EA1B 7515
test byte [0x18],0x8 ; 0000EA1D F606180008 '.....'
jnz xea32 ; 0000EA22 750E
call xc0e9 ; 0000EA24 E8C2D6 '...'
jnc xea32 ; 0000EA27 7309
cli ; 0000EA29 FA '.'
mov al,0x20 ; 0000EA2A B020 '. '
out 0x20,al ; 0000EA2C E620 '. '
sti ; 0000EA2E FB '.'
jmp xead4 ; 0000EA2F E9A200 '...'
xea32: mov al,0x20 ; 0000EA32 B020 '. '
out 0x20,al ; 0000EA34 E620 '. '
sti ; 0000EA36 FB '.'
cmp ah,0xe0 ; 0000EA37 80FCE0 '...'
jnz xea43 ; 0000EA3A 7507 'u.'
or byte [0x96],0x2 ; 0000EA3C 800E960002 '.....'
jmp short xea5e ; 0000EA41 EB1B '..'
xea43: cmp ah,0xe1 ; 0000EA43 80FCE1 '...'
jnz xea4f ; 0000EA46 7507 'u.'
or byte [0x96],0x1 ; 0000EA48 800E960001 '.....'
jmp short xea5e ; 0000EA4D EB0F '..'
xea4f: cmp ah,0xfe ; 0000EA4F 80FCFE '...'
jz xea5e ; 0000EA52 740A 't',0x0A
cmp ah,0xfa ; 0000EA54 80FCFA '...'
jnz xea62 ; 0000EA57 7509 'u.'
or byte [0x97],0x10 ; 0000EA59 800E970010 '.....'
xea5e: pop ax ; 0000EA5E 58 'X'
jmp short xeadf ; 0000EA5F EB7E '.~'
nop ; 0000EA61 90 '.'
xea62: call xeb16 ; 0000EA62 E8B100 '...'
test byte [0x18],0x8 ; 0000EA65 F606180008 '.....'
jz xead1 ; 0000EA6A 7465 'te'
jmp short xea8a ; 0000EA6C EB1C '..'
times 19 db 0xFF ; 0000EA6E - 0000EA80
xea81: mov word [0x0072],0x1234 ; 0000EA81 C70672003412
jmp xe05b ; 0000EA87 E9D1F5
xea8a: cmp ah,0x54 ; 0000EA8A 80FC54 '..T'
jz xea94 ; 0000EA8D 7405 't.'
cmp ah,0xd4 ; 0000EA8F 80FCD4 '...'
jnz xea9b ; 0000EA92 7507 'u.'
xea94: test byte [0x17],0x8 ; 0000EA94 F606170008 '.....'
jnz xead1 ; 0000EA99 7536 'u6'
xea9b: cmp ah,0x46 ; 0000EA9B 80FC46 '..F'
jz xeabc ; 0000EA9E 741C 't.'
cmp ah,0x45 ; 0000EAA0 80FC45 '..E'
jnz xeaac ; 0000EAA3 7507 'u.'
test byte [0x96],0x1 ; 0000EAA5 F606960001 '.....'
jnz xead4 ; 0000EAAA 7528 'u('
xeaac: call xbe10 ; 0000EAAC E861D3 '.a.'
jc xead4 ; 0000EAAF 7223 'r#'
cmp ah,0x52 ; 0000EAB1 80FC52 '..R'
jz xead4 ; 0000EAB4 741E 't.'
test ah,ah ; 0000EAB6 84E4 '..'
js xead4 ; 0000EAB8 781A 'x.'
jmp short xeaca ; 0000EABA EB0E '..'
xeabc: test byte [0x17],0x8 ; 0000EABC F606170008 '.....'
jnz xead1 ; 0000EAC1 750E 'u.'
test byte [0x17],0x4 ; 0000EAC3 F606170004 '.....'
jz xead1 ; 0000EAC8 7407 't.'
xeaca: and byte [0x18],0xf7 ; 0000EACA 80261800F7 '.&...'
jmp short xead4 ; 0000EACF EB03 '..'
xead1: call xe964 ; 0000EAD1 E890FE '...'
xead4: pop ax ; 0000EAD4 58 'X'
mov [0x15],ah ; 0000EAD5 88261500 '.&..'
call xeaeb ; 0000EAD9 E80F00 '...'
call xeba5 ; 0000EADC E8C600 '...'
xeadf: test bp,bp ; 0000EADF 85ED '..'
pop es ; 0000EAE1 07 '.'
pop ds ; 0000EAE2 1F '.'
popa ; 0000EAE3 61 'a'
jnz xeaea ; 0000EAE4 7504 'u.'
cli ; 0000EAE6 FA '.'
call xeb0c ; 0000EAE7 E82200 '.".'
xeaea: iret ; 0000EAEA CF '.'
xeaeb: push ax ; 0000EAEB 50 'P'
and byte [0x96],0xfd ; 0000EAEC 80269600FD '.&...'
test byte [0x96],0x1 ; 0000EAF1 F606960001 '.....'
jz xeb0a ; 0000EAF6 7412 't.'
and ah,0x7f ; 0000EAF8 80E47F '...'
cmp ah,0x45 ; 0000EAFB 80FC45 '..E'
jz xeb05 ; 0000EAFE 7405 't.'
cmp ah,0x1d ; 0000EB00 80FC1D '...'
jz xeb0a ; 0000EB03 7405 't.'
xeb05: and byte [0x96],0xfe ; 0000EB05 80269600FE '.&...'
xeb0a: pop ax ; 0000EB0A 58 'X'
ret ; 0000EB0B C3 '.'
xeb0c: push ax ; 0000EB0C 50 'P'
call xec2e_wait_8042_ready ; 0000EB0D E81E01 '...'
mov al,0xae ; 0000EB10 B0AE '..'
out 0x64,al ; 0000EB12 E664 '.d'
pop ax ; 0000EB14 58 'X'
ret ; 0000EB15 C3 '.'
xeb16: mov al,[0x16] ; 0000EB16 A01600 '...'
call xc24c ; 0000EB19 E830D7 '.0.'
jz xeb35 ; 0000EB1C 7417 't.'
cmp ah,0x4e ; 0000EB1E 80FC4E '..N'
jnz xeb27 ; 0000EB21 7504 'u.'
inc al ; 0000EB23 FEC0 '..'
jmp short xeb2e ; 0000EB25 EB07 '..'
xeb27: cmp ah,0x4a ; 0000EB27 80FC4A '..J'
jnz xeb35 ; 0000EB2A 7509 'u.'
dec al ; 0000EB2C FEC8 '..'
xeb2e: js xeb58 ; 0000EB2E 7828 'x('
mov [0x16],al ; 0000EB30 A21600 '...'
jmp short xeb58 ; 0000EB33 EB23 '.#'
xeb35: cmp ah,[0x15] ; 0000EB35 3A261500 ':&..'
jz xeb7d ; 0000EB39 7442 'tB'
cmp ah,0x2a ; 0000EB3B 80FC2A '..*'
jz xeb45 ; 0000EB3E 7405 't.'
cmp ah,0x36 ; 0000EB40 80FC36 '..6'
jnz xeb4c ; 0000EB43 7507 'u.'
xeb45: test byte [0x96],0x2 ; 0000EB45 F606960002 '.....'
jnz xeb7d ; 0000EB4A 7531 'u1'
xeb4c: cmp ah,0x1d ; 0000EB4C 80FC1D '...'
jnz xeb58 ; 0000EB4F 7507 'u.'
test byte [0x96],0x1 ; 0000EB51 F606960001 '.....'
jnz xeb7d ; 0000EB56 7525 'u%'
xeb58: test ah,ah ; 0000EB58 84E4 '..'
js xeb7d ; 0000EB5A 7821 'x!'
xor bx,bx ; 0000EB5C 33DB '3.'
or bl,[0x16] ; 0000EB5E 0A1E1600 0x0A,'...'
jz xeb7d ; 0000EB62 7419 't.'
push ax ; 0000EB64 50 'P'
in al,0x61 ; 0000EB65 E461 '.a'
push ax ; 0000EB67 50 'P'
xeb68: and al,0xfc ; 0000EB68 24FC '$.'
out 0x61,al ; 0000EB6A E661 '.a'
call xeb7e ; 0000EB6C E80F00 '...'
or al,0x2 ; 0000EB6F 0C02 '..'
out 0x61,al ; 0000EB71 E661 '.a'
call xeb7e ; 0000EB73 E80800 '...'
dec bx ; 0000EB76 4B 'K'
jnz xeb68 ; 0000EB77 75EF 'u.'
pop ax ; 0000EB79 58 'X'
out 0x61,al ; 0000EB7A E661 '.a'
pop ax ; 0000EB7C 58 'X'
xeb7d: ret ; 0000EB7D C3 '.'
xeb7e: push ax ; 0000EB7E 50 'P'
push bx ; 0000EB7F 53 'S'
mov al,0x0 ; 0000EB80 B000 '..'
out 0x43,al ; 0000EB82 E643 '.C'
in al,0x40 ; 0000EB84 E440 '.@'
mov bl,al ; 0000EB86 8AD8 '..'
in al,0x40 ; 0000EB88 E440 '.@'
mov bh,al ; 0000EB8A 8AF8 '..'
xeb8c: mov al,0x0 ; 0000EB8C B000 '..'
out 0x43,al ; 0000EB8E E643 '.C'
in al,0x40 ; 0000EB90 E440 '.@'
mov ah,al ; 0000EB92 8AE0 '..'
in al,0x40 ; 0000EB94 E440 '.@'
xchg ah,al ; 0000EB96 86E0 '..'
push bx ; 0000EB98 53 'S'
sub bx,ax ; 0000EB99 2BD8 '+.'
cmp bx,0x11d ; 0000EB9B 81FB1D01 '....'
pop bx ; 0000EB9F 5B '['
jna xeb8c ; 0000EBA0 76EA 'v.'
pop bx ; 0000EBA2 5B '['
pop ax ; 0000EBA3 58 'X'
ret ; 0000EBA4 C3 '.'
xeba5: push ax ; 0000EBA5 50 'P'
mov al,[0x17] ; 0000EBA6 A01700 '...'
shr al,0x4 ; 0000EBA9 C0E804 '...'
and al,0x7 ; 0000EBAC 2407 '$.'
mov ah,[0x97] ; 0000EBAE 8A269700 '.&..'
and ah,0x7 ; 0000EBB2 80E407 '...'
cmp al,ah ; 0000EBB5 3AC4 ':.'
jz xebc5 ; 0000EBB7 740C 't.'
and byte [0x97],0xf8 ; 0000EBB9 80269700F8 '.&...'
or [0x97],al ; 0000EBBE 08069700 '....'
call xebc7 ; 0000EBC2 E80200 '...'
xebc5: pop ax ; 0000EBC5 58 'X'
ret ; 0000EBC6 C3 '.'
xebc7: push ax ; 0000EBC7 50 'P'
push cx ; 0000EBC8 51 'Q'
call xec1e ; 0000EBC9 E85200 '.R.'
jnz xec1b ; 0000EBCC 754D 'uM'
and byte [0x97],0xef ; 0000EBCE 80269700EF '.&...'
call xec2e_wait_8042_ready ; 0000EBD3 E85800 '.X.'
mov al,0xed ; 0000EBD6 B0ED '..'
out 0x60,al ; 0000EBD8 E660 '.`'
mov cx,0xffff ; 0000EBDA B9FFFF '...'
xebdd: test byte [0x97],0x10 ; 0000EBDD F606970010 '.....'
jnz xebef ; 0000EBE2 750B 'u.'
loop xebdd ; 0000EBE4 E2F7 '..'
call xec2e_wait_8042_ready ; 0000EBE6 E84500 '.E.'
mov al,0xf4 ; 0000EBE9 B0F4 '..'
out 0x60,al ; 0000EBEB E660 '.`'
jmp short xec16 ; 0000EBED EB27 '.',0x27
xebef: and byte [0x97],0xef ; 0000EBEF 80269700EF '.&...'
call xec2e_wait_8042_ready ; 0000EBF4 E83700 '.7.'
mov al,[0x17] ; 0000EBF7 A01700 '...'
shr al,0x4 ; 0000EBFA C0E804 '...'
and al,0x7 ; 0000EBFD 2407 '$.'
and byte [0x97],0xf8 ; 0000EBFF 80269700F8 '.&...'
or [0x97],al ; 0000EC04 08069700 '....'
out 0x60,al ; 0000EC08 E660 '.`'
mov cx,0xffff ; 0000EC0A B9FFFF '...'
xec0d: test byte [0x97],0x10 ; 0000EC0D F606970010 '.....'
jnz xec16 ; 0000EC12 7502 'u.'
loop xec0d ; 0000EC14 E2F7 '..'
xec16: and byte [0x97],0xbf ; 0000EC16 80269700BF '.&...'
xec1b: pop cx ; 0000EC1B 59 'Y'
pop ax ; 0000EC1C 58 'X'
ret ; 0000EC1D C3 '.'
xec1e: push ax ; 0000EC1E 50 'P'
cli ; 0000EC1F FA '.'
mov al,[0x97] ; 0000EC20 A09700 '...'
or al,0x40 ; 0000EC23 0C40 '.@'
xchg al,[0x97] ; 0000EC25 86069700 '....'
test al,0x40 ; 0000EC29 A840 '.@'
sti ; 0000EC2B FB '.'
pop ax ; 0000EC2C 58 'X'
ret ; 0000EC2D C3 '.'
xec2e_wait_8042_ready:
xec2e: push cx ; 0000EC2E 51 'Q'
mov cx,0x2710 ; 0000EC2F B91027 '..',0x27
xec32: in al,0x64 ; 0000EC32 E464 '.d'
test al,0x2 ; 0000EC34 A802 '..'
loopne xec32 ; 0000EC36 E0FA '..'
pop cx ; 0000EC38 59 'Y'
ret ; 0000EC39 C3 '.'
db 0xFF,0xFF,0xFF,0xFF,0xFF,0x34,0xC9,0x45,0xC9,0xC0,0xEC,0xC0,0xEC,0xC0,0xEC,0xE1
db 0xED,0xA6,0xEC,0xA6,0xEC,0x48,0x9F,0x63,0x91,0x7C,0x8F,0x10,0x90,0x38,0xA0
;
; This address (F000:EC59) is stored in the IDT vector for INT 0x40 when a hard disk controls INT 0x13
;
int13_diskette:
sti ; 0000EC59 FB '.'
push bp ; 0000EC5A 55 'U'
push ds ; 0000EC5B 1E '.'
push es ; 0000EC5C 06 '.'
push di ; 0000EC5D 57 'W'
push si ; 0000EC5E 56 'V'
push dx ; 0000EC5F 52 'R'
push cx ; 0000EC60 51 'Q'
push bx ; 0000EC61 53 'S'
push ax ; 0000EC62 50 'P'
mov bp,sp ; 0000EC63 8BEC '..'
xor ax,ax ; 0000EC65 33C0 '3.'
mov ds,ax ; 0000EC67 8ED8 '..'
les si,[0x78] ; 0000EC69 C4367800 '.6x.'
mov ax,0x40 ; 0000EC6D B84000 '.@.'
mov ds,ax ; 0000EC70 8ED8 '..'
mov byte [0x40],0xff ; 0000EC72 C6064000FF '..@..'
and word [bp+0x16],0xfe ; 0000EC77 816616FE00 '.f...'
mov al,[bp+0x1] ; 0000EC7C 8A4601 '.F.'
mov ah,[bp+0x6] ; 0000EC7F 8A6606 '.f.'
cmp ah,0x2 ; 0000EC82 80FC02 '...'
jnc xeca2 ; 0000EC85 731B 's.'
cmp al,0x18 ; 0000EC87 3C18 '<.'
ja xeca6 ; 0000EC89 771B 'w.'
cmp al,0x8 ; 0000EC8B 3C08 '<.'
jna xec95 ; 0000EC8D 7606 'v.'
cmp al,0x15 ; 0000EC8F 3C15 '<.'
jc xeca6 ; 0000EC91 7213 'r.'
sub al,0xc ; 0000EC93 2C0C ',.'
xec95: mov bl,al ; 0000EC95 8AD8 '..'
xor bh,bh ; 0000EC97 32FF '2.'
shl bx,1 ; 0000EC99 D1E3 '..'
call near [cs:bx+0xec3f] ; 0000EC9B 2EFF973FEC '...?.'
jmp short xeca9 ; 0000ECA0 EB07 '..'
xeca2: cmp al,0x1 ; 0000ECA2 3C01 '<.'
jna xec95 ; 0000ECA4 76EF 'v.'
xeca6: call xd3e8 ; 0000ECA6 E83FE7 '.?.'
xeca9: mov bl,[es:si+0x2] ; 0000ECA9 268A5C02 '&.\.'
mov [0x40],bl ; 0000ECAD 881E4000 '..@.'
or word [bp+0x16],0x200 ; 0000ECB1 814E160002 '.N...'
pop bx ; 0000ECB6 5B '['
pop bx ; 0000ECB7 5B '['
pop cx ; 0000ECB8 59 'Y'
pop dx ; 0000ECB9 5A 'Z'
pop si ; 0000ECBA 5E '^'
pop di ; 0000ECBB 5F '_'
pop es ; 0000ECBC 07 '.'
pop ds ; 0000ECBD 1F '.'
pop bp ; 0000ECBE 5D ']'
iret ; 0000ECBF CF '.'
call x8fa4 ; 0000ECC0 E8E1A2 '...'
jnz xecd4 ; 0000ECC3 750F 'u.'
call x9061 ; 0000ECC5 E899A3 '...'
jc xecd4 ; 0000ECC8 720A 'r',0x0A
;
; Perform FDC operation (eg, read); ZF set on success
;
call xecf0 ; 0000ECCA E82300 '.#.'
jz xecd4 ; 0000ECCD 7405 't.'
or word [bp+0x16],0x1 ; 0000ECCF 814E160100 '.N...'
xecd4: ret ; 0000ECD4 C3 '.'
xecd5: mov al,0x6 ; 0000ECD5 B006 '..'
out 0xa,al ; 0000ECD7 E60A '.',0x0A
xor al,al ; 0000ECD9 32C0 '2.'
or ah,ah ; 0000ECDB 0AE4 0x0A,'.'
jz xecec ; 0000ECDD 740D 't',0x0D
mov cx,0x4 ; 0000ECDF B90400 '...'
mov dl,0x1 ; 0000ECE2 B201 '..'
xece4: shl dl,1 ; 0000ECE4 D0E2 '..'
cmp ah,dl ; 0000ECE6 3AE2 ':.'
loopne xece4 ; 0000ECE8 E0FA '..'
jnz xecef ; 0000ECEA 7503 'u.'
xecec: call xc9dd ; 0000ECEC E8EEDC '...'
xecef: ret ; 0000ECEF C3 '.'
xecf0: cmp byte [bp+0x1],0x2 ; 0000ECF0 807E0102 '.~..'
jnz xed1e ; 0000ECF4 7528 'u('
mov ax,[bp+0xc] ; 0000ECF6 8B460C '.F.'
mov bx,0x10 ; 0000ECF9 BB1000 '...'
mul bx ; 0000ECFC F7E3 '..'
add ax,[bp+0x2] ; 0000ECFE 034602 '.F.'
adc dx,byte +0x0 ; 0000ED01 83D200 '...'
cmp dl,0xe ; 0000ED04 80FA0E '...'
jnc xed1a ; 0000ED07 7311 's.'
mov bh,[bp+0x0] ; 0000ED09 8A7E00 '.~.'
add bh,bh ; 0000ED0C 02FF '..'
xor bl,bl ; 0000ED0E 32DB '2.'
add ax,bx ; 0000ED10 03C3 '..'
adc dx,byte +0x0 ; 0000ED12 83D200 '...'
cmp dl,0xe ; 0000ED15 80FA0E '...'
jc xed1e ; 0000ED18 7204 'r.'
xed1a: mov byte [bp+0x1],0x4 ; 0000ED1A C6460104 '.F..'
xed1e: cmp byte [0x41],0x0 ; 0000ED1E 803E410000 '.>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 '...'
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 '<p'
jnz xef3e ; 0000EEBD 757F 'u.'
call xee72 ; 0000EEBF E8B0FF '...'
jnz xef3e ; 0000EEC2 757A 'uz'
xeec4: call xc956 ; 0000EEC4 E88FDA '...'
call x9190 ; 0000EEC7 E8C6A2 '...'
mov ah,[bx] ; 0000EECA 8A27 '.',0x27
mov al,[bp+0x5] ; 0000EECC 8A4605 '.F.'
test ah,0x20 ; 0000EECF F6C420 '.. '
jz xeed6 ; 0000EED2 7402 't.'
shl al,1 ; 0000EED4 D0E0 '..'
xeed6: mov cl,[bx+0x4] ; 0000EED6 8A4F04 '.O.'
xor ah,ah ; 0000EED9 32E4 '2.'
cmp al,cl ; 0000EEDB 3AC1 ':.'
jz xef3e ; 0000EEDD 745F 't_'
mov [bx+0x4],al ; 0000EEDF 884704 '.G.'
push bx ; 0000EEE2 53 'S'
mov bx,0x4 ; 0000EEE3 BB0400 '...'
call xc638 ; 0000EEE6 E84FD7 '.O.'
pop bx ; 0000EEE9 5B '['
cli ; 0000EEEA FA '.'
mov bh,0xf ; 0000EEEB B70F '..'
call xd4c4 ; 0000EEED E8D4E5 '...'
mov bh,[bp+0x7] ; 0000EEF0 8A7E07 '.~.'
shl bh,0x2 ; 0000EEF3 C0E702 '...'
or bh,[bp+0x6] ; 0000EEF6 0A7E06 0x0A,'~.'
call xd4c4 ; 0000EEF9 E8C8E5 '...'
call x9190 ; 0000EEFC E891A2 '...'
mov bh,[bx+0x4] ; 0000EEFF 8A7F04 '...'
call xd4c4 ; 0000EF02 E8BFE5 '...'
sti ; 0000EF05 FB '.'
call xef85 ; 0000EF06 E87C00 '.|.'
jnz xef3e ; 0000EF09 7533 'u3'
xor bx,bx ; 0000EF0B 33DB '3.'
mov bl,[es:si+0x9] ; 0000EF0D 268A5C09 '&.\.'
mov al,[bp+0x1] ; 0000EF11 8A4601 '.F.'
cmp al,0x3 ; 0000EF14 3C03 '<.'
jz xef1c ; 0000EF16 7404 't.'
cmp al,0x5 ; 0000EF18 3C05 '<.'
jnz xef30 ; 0000EF1A 7514 'u.'
xef1c: push bx ; 0000EF1C 53 'S'
call x9163 ; 0000EF1D E843A2 '.C.'
pop bx ; 0000EF20 5B '['
mov al,0x14 ; 0000EF21 B014 '..'
cmp ah,0x2 ; 0000EF23 80FC02 '...'
jnz xef2a ; 0000EF26 7502 'u.'
mov al,0xf ; 0000EF28 B00F '..'
xef2a: cmp bl,al ; 0000EF2A 3AD8 ':.'
jnc xef30 ; 0000EF2C 7302 's.'
xchg al,bl ; 0000EF2E 86C3 '..'
xef30: or bx,bx ; 0000EF30 0BDB '..'
jz xef37 ; 0000EF32 7403 't.'
call xc638 ; 0000EF34 E801D7 '...'
xef37: call xef6f ; 0000EF37 E83500 '.5.'
test al,0xc0 ; 0000EF3A A8C0 '..'
mov ah,0x40 ; 0000EF3C B440 '.@'
xef3e: ret ; 0000EF3E C3 '.'
db '************************P'
push ds ; 0000EF58 1E '.'
mov ax,0x40 ; 0000EF59 B84000 '.@.'
mov ds,ax ; 0000EF5C 8ED8 '..'
or byte [0x3e],0x80 ; 0000EF5E 800E3E0080 '..>..'
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 '..'
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 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 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 '..'
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 ; 0000FA31
db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0000FA40
db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0000FA50
db 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00 ; 0000FA60
db 0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E,0x7E,0xFF ; 0000FA70
db 0xDB,0xFF,0xC3,0xE7,0xFF,0x7E,0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x10,0x38 ; 0000FA80
db 0x7C,0xFE,0x7C,0x38,0x10,0x00,0x38,0x7C,0x38,0xFE,0xFE,0x7C,0x38,0x7C,0x10,0x10 ; 0000FA90
db 0x38,0x7C,0xFE,0x7C,0x38,0x7C,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0xFF,0xFF ; 0000FAA0
db 0xE7,0xC3,0xC3,0xE7,0xFF,0xFF,0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,0xFF,0xC3 ; 0000FAB0
db 0x99,0xBD,0xBD,0x99,0xC3,0xFF,0x0F,0x07,0x0F,0x7D,0xCC,0xCC,0xCC,0x78,0x3C,0x66 ; 0000FAC0
db 0x66,0x66,0x3C,0x18,0x7E,0x18,0x3F,0x33,0x3F,0x30,0x30,0x70,0xF0,0xE0,0x7F,0x63 ; 0000FAD0
db 0x7F,0x63,0x63,0x67,0xE6,0xC0,0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99,0x80,0xE0 ; 0000FAE0
db 0xF8,0xFE,0xF8,0xE0,0x80,0x00,0x02,0x0E,0x3E,0xFE,0x3E,0x0E,0x02,0x00,0x18,0x3C ; 0000FAF0
db 0x7E,0x18,0x18,0x7E,0x3C,0x18,0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,0x7F,0xDB ; 0000FB00
db 0xDB,0x7B,0x1B,0x1B,0x1B,0x00,0x3E,0x63,0x38,0x6C,0x6C,0x38,0xCC,0x78,0x00,0x00 ; 0000FB10
db 0x00,0x00,0x7E,0x7E,0x7E,0x00,0x18,0x3C,0x7E,0x18,0x7E,0x3C,0x18,0xFF,0x18,0x3C ; 0000FB20
db 0x7E,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x18 ; 0000FB30
db 0x0C,0xFE,0x0C,0x18,0x00,0x00,0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00,0x00,0x00 ; 0000FB40
db 0xC0,0xC0,0xC0,0xFE,0x00,0x00,0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00,0x00,0x18 ; 0000FB50
db 0x3C,0x7E,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00 ; 0000FB60
db 0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,0x6C,0x6C ; 0000FB70
db 0x6C,0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00,0x30,0x7C ; 0000FB80
db 0xC0,0x78,0x0C,0xF8,0x30,0x00,0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00,0x38,0x6C ; 0000FB90
db 0x38,0x76,0xDC,0xCC,0x76,0x00,0x60,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x18,0x30 ; 0000FBA0
db 0x60,0x60,0x60,0x30,0x18,0x00,0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00,0x00,0x66 ; 0000FBB0
db 0x3C,0xFF,0x3C,0x66,0x00,0x00,0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00,0x00,0x00 ; 0000FBC0
db 0x00,0x00,0x00,0x30,0x30,0x60,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00 ; 0000FBD0
db 0x00,0x00,0x00,0x30,0x30,0x00,0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x7C,0xC6 ; 0000FBE0
db 0xCE,0xDE,0xF6,0xE6,0x7C,0x00,0x30,0x70,0x30,0x30,0x30,0x30,0xFC,0x00,0x78,0xCC ; 0000FBF0
db 0x0C,0x38,0x60,0xCC,0xFC,0x00,0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00,0x1C,0x3C ; 0000FC00
db 0x6C,0xCC,0xFE,0x0C,0x1E,0x00,0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00,0x38,0x60 ; 0000FC10
db 0xC0,0xF8,0xCC,0xCC,0x78,0x00,0xFC,0xCC,0x0C,0x18,0x30,0x30,0x30,0x00,0x78,0xCC ; 0000FC20
db 0xCC,0x78,0xCC,0xCC,0x78,0x00,0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00,0x00,0x30 ; 0000FC30
db 0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x60,0x18,0x30 ; 0000FC40
db 0x60,0xC0,0x60,0x30,0x18,0x00,0x00,0x00,0xFC,0x00,0x00,0xFC,0x00,0x00,0x60,0x30 ; 0000FC50
db 0x18,0x0C,0x18,0x30,0x60,0x00,0x78,0xCC,0x0C,0x18,0x30,0x00,0x30,0x00,0x7C,0xC6 ; 0000FC60
db 0xDE,0xDE,0xDE,0xC0,0x78,0x00,0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00,0xFC,0x66 ; 0000FC70
db 0x66,0x7C,0x66,0x66,0xFC,0x00,0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00,0xF8,0x6C ; 0000FC80
db 0x66,0x66,0x66,0x6C,0xF8,0x00,0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00,0xFE,0x62 ; 0000FC90
db 0x68,0x78,0x68,0x60,0xF0,0x00,0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3E,0x00,0xCC,0xCC ; 0000FCA0
db 0xCC,0xFC,0xCC,0xCC,0xCC,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x1E,0x0C ; 0000FCB0
db 0x0C,0x0C,0xCC,0xCC,0x78,0x00,0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,0xF0,0x60 ; 0000FCC0
db 0x60,0x60,0x62,0x66,0xFE,0x00,0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0x00,0xC6,0xE6 ; 0000FCD0
db 0xF6,0xDE,0xCE,0xC6,0xC6,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0xFC,0x66 ; 0000FCE0
db 0x66,0x7C,0x60,0x60,0xF0,0x00,0x78,0xCC,0xCC,0xCC,0xDC,0x78,0x1C,0x00,0xFC,0x66 ; 0000FCF0
db 0x66,0x7C,0x6C,0x66,0xE6,0x00,0x78,0xCC,0xE0,0x70,0x1C,0xCC,0x78,0x00,0xFC,0xB4 ; 0000FD00
db 0x30,0x30,0x30,0x30,0x78,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00,0xCC,0xCC ; 0000FD10
db 0xCC,0xCC,0xCC,0x78,0x30,0x00,0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00,0xC6,0xC6 ; 0000FD20
db 0x6C,0x38,0x38,0x6C,0xC6,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00,0xFE,0xC6 ; 0000FD30
db 0x8C,0x18,0x32,0x66,0xFE,0x00,0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00,0xC0,0x60 ; 0000FD40
db 0x30,0x18,0x0C,0x06,0x02,0x00,0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,0x10,0x38 ; 0000FD50
db 0x6C,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x30,0x30 ; 0000FD60
db 0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00,0xE0,0x60 ; 0000FD70
db 0x60,0x7C,0x66,0x66,0xDC,0x00,0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00,0x1C,0x0C ; 0000FD80
db 0x0C,0x7C,0xCC,0xCC,0x76,0x00,0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00,0x38,0x6C ; 0000FD90
db 0x60,0xF0,0x60,0x60,0xF0,0x00,0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8,0xE0,0x60 ; 0000FDA0
db 0x6C,0x76,0x66,0x66,0xE6,0x00,0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,0x0C,0x00 ; 0000FDB0
db 0x0C,0x0C,0x0C,0xCC,0xCC,0x78,0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00,0x70,0x30 ; 0000FDC0
db 0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00,0xCC,0xFE,0xFE,0xD6,0xC6,0x00,0x00,0x00 ; 0000FDD0
db 0xF8,0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00 ; 0000FDE0
db 0xDC,0x66,0x66,0x7C,0x60,0xF0,0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E,0x00,0x00 ; 0000FDF0
db 0xDC,0x76,0x66,0x60,0xF0,0x00,0x00,0x00,0x7C,0xC0,0x78,0x0C,0xF8,0x00,0x10,0x30 ; 0000FE00
db 0x7C,0x30,0x30,0x34,0x18,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00 ; 0000FE10
db 0xCC,0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0xC6,0xD6,0xFE,0xFE,0x6C,0x00,0x00,0x00 ; 0000FE20
db 0xC6,0x6C,0x38,0x6C,0xC6,0x00,0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8,0x00,0x00 ; 0000FE30
db 0xFC,0x98,0x30,0x64,0xFC,0x00,0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00,0x18,0x18 ; 0000FE40
db 0x18,0x00,0x18,0x18,0x18,0x00,0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00,0x76,0xDC ; 0000FE50
db 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0x00 ; 0000FE60
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 [0x003f],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,[0x40] ; 0000FED1 A04000 '.@.'
cmp al,0xff ; 0000FED4 3CFF '<.'
jnz xfef7 ; 0000FED6 751F 'u.'
test byte [0x3f],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 [0x40] ; 0000FEF7 FE0E4000 '..@.'
jnz xfe9b ; 0000FEFB 759E 'u.'
mov al,0xc ; 0000FEFD B00C '..'
mov dx,0x3f2 ; 0000FEFF BAF203 '...'
out dx,al ; 0000FF02 EE '.'
test byte [0x3f],0x7 ; 0000FF03 F6063F0007 '..?..'
jz xfe96 ; 0000FF08 748C
in al,0x86 ; 0000FF0A E486 '..'
test al,0x80 ; 0000FF0C A880 '..'
jnz xfe96 ; 0000FF0E 7586
test al,0x40 ; 0000FF10 A840 '.@'
jnz xfe96 ; 0000FF12 7582
or al,0xc0 ; 0000FF14 0CC0 '..'
out 0x86,al ; 0000FF16 E686 '..'
mov al,0x92 ; 0000FF18 B092 '..'
out 0x4b,al ; 0000FF1A E64B '.K'
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 Product Family Code
db '4' ; 0000FFE5 Point-Release Code
db 'J ' ; 0000FFE6 Revision Code
db '03' ; 0000FFE8 BIOS Type Code
db 'COMPAQ' ; 0000FFEA Machine ID
jmp 0xf000:reset ; 0000FFF0 EA05F900F0
db 0x20 ; 0000FFF5
db '01/28/88' ; 0000FFF6 BIOS Revision Date
db 0xFC ; 0000FFFE Machine Type Code
db 0x98 ; 0000FFFF Checksum