;
;   ROM BIOS for COMPAQ DeskPro 386-16
;   Rev J.4, from parts 109592-001 and 109591-001, dated '01/28/88'
;   (C)Copyright COMPAQ Computer Corporation 1982,83,84,85,86,87-All rights reserved.
;
;   Listing produced by NDISASM, 2015-Apr-04
;   Additional post-processing performed by the PCjs TextOut module
;   All post-processing, comments, etc., copyright © 2012-2017 Jeff Parsons <Jeff@pcjs.org>
;
;   This file is part of PCjs, a computer emulation software project at <https://www.pcjs.org>.
;
;   Overview
;   --------
;   This 32Kb ROM image is ORG'ed at 0x8000, because most of its code is designed to run
;   at real-mode addresses F000:8000 through F000:FFFF.
;
;   And even though the 80386 resets with CS:IP set to F000:FFF0, the physical base address
;   of CS is set to %FFFF0000, which means the ROM must also be mapped at physical addresses
;   %FFFF8000 through %FFFFFFFF.
;
;   Additionally, DeskPro 386 systems mirror this 32Kb ROM at real-mode address F000:0000
;   through F000:7FFF.  And that region is similarly mirrored at physical addresses %FFFF0000
;   through %FFFF7FFFF.
;
;   In other words, both 32Kb halves of the last 64Kb of both the first and last megabyte
;   of the 80386's 4Gb address space are physically mapped to this ROM image.
;
;   Finally, the DeskPro 386 has a "RAM Relocation" feature that allows 128Kb of RAM at
;   %00FE0000 through %00FFFFFF to be mapped to %000E0000 through %000FFFFF, effectively
;   replacing the ROM in the first megabyte with write-protected RAM; the top 64Kb of that
;   RAM must first be initialized with the 64Kb at %000F0000 prior to remapping.  It's also
;   possible to copy external ROMs from %000C0000 through %000EFFFF into the bottom 64Kb of
;   that RAM, but this is only done for ROMs known to contain relocatable code; eg, a COMPAQ
;   Video Graphics Controller (VGC) Board.
;
;   Every DeskPro 386 system must have a MINIMUM of 1Mb of RAM, of which either 256Kb,
;   512Kb, or 640Kb can be physically mapped as conventional memory (at the bottom of the
;   first megabyte), with the remainder (either 768Kb, 512Kb, or 384Kb) physically mapped
;   to the top of the 16th megabyte (ending at address %00FFFFFF), the last 128Kb of which
;   is used by the "RAM Relocation" feature.  The remaining memory immediately below that
;   128Kb (ie, below %00FE0000) can only be accessed by special system software, such as CEMM.
;
;   COMPAQ refers to that remaining memory as "Compaq Built-in Memory".
;
;   As the COMPAQ 386/25 TechRef explains:
;
;	A data structure in memory indicates how much of the COMPAQ Built-in Memory (F40000h
;	to FE0000h) is [available and] in use. This memory is allocated downward (decreasing
;	addresses) starting at address FE0000h. Applications developed specifically for the
;	COMPAQ DESKPRO	386/25 Personal Computer, such as CEMM, read and modify this data
;	structure to allocate and deallocate portions of the COMPAQ Built-in Memory for their
;	use. The built-in memory data structure is located in write-protected memory at segment
;	F000h. The offset is specified by the word at F000:FFE0.
;
;	The format of the data structure is given [below]. Because the data structure resides
;	in write-protected memory, the write-protection must be disabled when updating the data
;	structure.
;
;	Word	Description
;	----	-----------
;	   0	FFFFh indicates that no COMPAQ Built-in Memory is available. Otherwise, words
;		1, 2, and 3 define the amount of memory available.
;
;	   1	Total COMPAQ Built-in Memory size in 16-byte blocks.
;
;	   2	Available built-in memory in 16-byte blocks.
;
;	   3	Address for the last-used byte. The byte below (lower address) this byte is the
;		first free byte in the COMPAQ Built-in Memory.
;
	org	0x8000

CMD8042_WRITE_OUTPORT	equ	0xD1

;
;   BIOS DATA OFFSETS (RELATIVE TO SEGMENT 0x40)
;
MOTOR_STATUS	equ	0x3F
MOTOR_COUNT	equ	0x40

	xchg	bh,bl			; 00008000  86FB  '..'
	xor	bh,bh			; 00008002  32FF  '2.'
	shl	bx,1			; 00008004  D1E3  '..'
	mov	dx,[bx+0x50]		; 00008006  8B975000  '..P.'
	mov	[bp+0x2],dx		; 0000800A  895602  '.V.'
	mov	cx,[0x60]		; 0000800D  8B0E6000  '..`.'
	mov	[bp+0x4],cx		; 00008011  894E04  '.N.'
	mov	word [bp+0x0],0x0	; 00008014  C746000000  '.F...'
	ret				; 00008019  C3  '.'

	mov	al,0xe			; 0000801A  B00E  '..'
	out	dx,al			; 0000801C  EE  '.'
	inc	dx			; 0000801D  42  'B'
	in	al,dx			; 0000801E  EC  '.'
	mov	ah,al			; 0000801F  8AE0  '..'
	dec	dx			; 00008021  4A  'J'
	mov	al,0xf			; 00008022  B00F  '..'
	out	dx,al			; 00008024  EE  '.'
	inc	dx			; 00008025  42  'B'
	in	al,dx			; 00008026  EC  '.'
	ret				; 00008027  C3  '.'

;
;   Protected-mode memory probe
;
x8028:	push	ax			; 00008028  50  'P'
	push	bx			; 00008029  53  'S'
	push	cx			; 0000802A  51  'Q'
	push	es			; 0000802B  06  '.'
	mov	ax,0x48			; 0000802C  B84800  '.H.'
	mov	es,ax			; 0000802F  8EC0  '..'

	mov	cl,0x2			; 00008031  B102  '..'
	mov	ch,0x9			; 00008033  B509  '..'
	mov	al,0x1			; 00008035  B001  '..'
	call	x8051			; 00008037  E81700  '...'

	add	ax,0x80			; 0000803A  058000  '...'
	mov	[0x7c],ax		; 0000803D  A37C00  '.|.'

	mov	cl,0x10			; 00008040  B110  '..'
	mov	ch,0xfd			; 00008042  B5FD  '..'
	mov	al,0x1			; 00008044  B001  '..'
	call	x8051			; 00008046  E80800  '...'

	mov	[0x7e],ax		; 00008049  A37E00  '.~.'

	pop	es			; 0000804C  07  '.'
	pop	cx			; 0000804D  59  'Y'
	pop	bx			; 0000804E  5B  '['
	pop	ax			; 0000804F  58  'X'
	ret				; 00008050  C3  '.'

;
;   (AL) == block increment (eg, 0x1)
;   (CL) == starting 64Kb block number (eg, 0x02, or 0x10)
;   (CH) == maximum 64Kb block number (eg, 0x09, or 0xFD)
;
x8051:	push	bx			; 00008051  53  'S'
	push	dx			; 00008052  52  'R'
	push	bp			; 00008053  55  'U'
	mov	dl,al			; 00008054  8AD0  '..'
	mov	bp,es			; 00008056  8CC5  '..'
;
;   0x4C is the base portion of the descriptor at DS:0x48
;
	mov	[0x4c],cl		; 00008058  880E4C00  '..L.'
x805c:	mov	es,bp			; 0000805C  8EC5  '..'
	mov	bx,0x0			; 0000805E  BB0000  '...'
	mov	word [es:bx],0x0	; 00008061  26C7070000  '&....'
	mov	word [es:bx+0x2],0xffff	; 00008066  26C74702FFFF  '&.G...'
	cld				; 0000806C  FC  '.'
	cld				; 0000806D  FC  '.'
	mov	bx,[es:bx]		; 0000806E  268B1F  '&..'
	cld				; 00008071  FC  '.'
	cld				; 00008072  FC  '.'
	cld				; 00008073  FC  '.'
	cld				; 00008074  FC  '.'
	cld				; 00008075  FC  '.'
	cmp	bx,byte +0x0		; 00008076  83FB00  '...'
	mov	byte [es:0x0],0x0	; 00008079  26C606000000  '&.....'
	jz	x8089			; 0000807F  7408  't.'
	mov	al,[0x4c]		; 00008081  A04C00  '.L.'
	sub	al,cl			; 00008084  2AC1  '*.'
	jmp	short x809c		; 00008086  EB14  '..'

	nop				; 00008088  90  '.'
x8089:	cmp	[0x4c],ch		; 00008089  382E4C00  '8.L.'
	jz	x8095			; 0000808D  7406  't.'
;
;   Bump the base portion of the descriptor at DS:0x48 to the next 64Kb block
;
	add	[0x4c],dl		; 0000808F  00164C00  '..L.'
	jmp	short x805c		; 00008093  EBC7  '..'

x8095:	mov	al,[0x4c]		; 00008095  A04C00  '.L.'
	sub	al,cl			; 00008098  2AC1  '*.'
	inc	al			; 0000809A  FEC0  '..'
x809c:	xor	ah,ah			; 0000809C  32E4  '2.'
	shl	ax,0x6			; 0000809E  C1E006  '...'
	pop	bp			; 000080A1  5D  ']'
	pop	dx			; 000080A2  5A  'Z'
	pop	bx			; 000080A3  5B  '['
	ret				; 000080A4  C3  '.'

;
;   Display (AX) as a 5-digit, zero-padded number in the top-left corner of
;   the display, using (ES) as the segment of the video buffer.
;
;   The number is followed by " KB OK", for a total of 11 (0x0B) characters.
;
;   This function works for both Mono and CGA displays because it writes to both
;   video buffers (%B0000 via ES:0000 and %B8000 via ES:8000).
;
;   Called by CS:DBD6 in the normal case, where CS == 0x30 and ES == 0x40.
;
x80a5:	push	bx			; 000080A5  53  'S'
	push	cx			; 000080A6  51  'Q'
	push	dx			; 000080A7  52  'R'
	push	si			; 000080A8  56  'V'
	push	di			; 000080A9  57  'W'
	mov	bx,0xa			; 000080AA  BB0A00  '.',0x0A,'.'
	mov	cx,0x5			; 000080AD  B90500  '...'
	mov	di,0x8			; 000080B0  BF0800  '...'
x80b3:	xor	dx,dx			; 000080B3  33D2  '3.'
	div	bx			; 000080B5  F7F3  '..'
	add	dl,0x30			; 000080B7  80C230  '..0'
	mov	dh,0x7			; 000080BA  B607  '..'
	mov	[di+0x93],dx		; 000080BC  89959300  '....'
	dec	di			; 000080C0  4F  'O'
	dec	di			; 000080C1  4F  'O'
	loop	x80b3			; 000080C2  E2EF  '..'
	cld				; 000080C4  FC  '.'
	mov	si,0x93			; 000080C5  BE9300  '...'
	mov	di,0x0			; 000080C8  BF0000  '...'
	mov	cx,0xb			; 000080CB  B90B00  '...'
	rep	movsw			; 000080CE  F3A5  '..'
	cld				; 000080D0  FC  '.'
	mov	si,0x93			; 000080D1  BE9300  '...'
	mov	di,0x8000		; 000080D4  BF0080  '...'
	mov	cx,0xb			; 000080D7  B90B00  '...'
	rep	movsw			; 000080DA  F3A5  '..'
	pop	di			; 000080DC  5F  '_'
	pop	si			; 000080DD  5E  '^'
	pop	dx			; 000080DE  5A  'Z'
	pop	cx			; 000080DF  59  'Y'
	pop	bx			; 000080E0  5B  '['
	ret				; 000080E1  C3  '.'

;
;   Use INT 0x15, (AH) == 0x89, to enter protected-mode
;
;   Returns ZF set if successful
;
;   See COMPAQ 386/25 TechRef, p.4-98 for details
;
x80e2:	push	bx			; 000080E2  53  'S'
	push	cx			; 000080E3  51  'Q'
	push	dx			; 000080E4  52  'R'
	push	di			; 000080E5  57  'W'
	push	si			; 000080E6  56  'V'
	call	x8102			; 000080E7  E81800  '...'
	mov	bh,0x8			; 000080EA  B708  '..'
	mov	bl,0x70			; 000080EC  B370  '.p'
	mov	ax,0x1c00		; 000080EE  B8001C  '...'
	mov	es,ax			; 000080F1  8EC0  '..'
	mov	si,0x0			; 000080F3  BE0000  '...'
	mov	ah,0x89			; 000080F6  B489  '..'
	int	0x15			; 000080F8  CD15  '..'
	or	ah,ah			; 000080FA  0AE4  0x0A,'.'
	pop	si			; 000080FC  5E  '^'
	pop	di			; 000080FD  5F  '_'
	pop	dx			; 000080FE  5A  'Z'
	pop	cx			; 000080FF  59  'Y'
	pop	bx			; 00008100  5B  '['
	ret				; 00008101  C3  '.'

;
;   Descriptor table initialization
;
;   Used by x80e2 to prepare for an INT 0x15 call to enter protected-mode
;
x8102:	pusha				; 00008102  60  '`'
	push	ds			; 00008103  1E  '.'
	push	es			; 00008104  06  '.'
	mov	ax,0x1c00		; 00008105  B8001C  '...'
	mov	ds,ax			; 00008108  8ED8  '..'
	mov	es,ax			; 0000810A  8EC0  '..'
	cld				; 0000810C  FC  '.'
	xor	ax,ax			; 0000810D  33C0  '3.'
	mov	di,0x0			; 0000810F  BF0000  '...'
	mov	cx,0x4			; 00008112  B90400  '...'
	rep	stosw			; 00008115  F3AB  '..'
	mov	si,0x8			; 00008117  BE0800  '...'
	mov	ax,0x1c00		; 0000811A  B8001C  '...'
	mov	bx,0x10			; 0000811D  BB1000  '...'
	mul	bx			; 00008120  F7E3  '..'
	add	ax,0x0			; 00008122  050000  '...'
	adc	dl,0x0			; 00008125  80D200  '...'
	mov	[si+0x2],ax		; 00008128  894402  '.D.'
	mov	[si+0x4],dl		; 0000812B  885404  '.T.'
	mov	byte [si+0x5],0x92	; 0000812E  C6440592  '.D..'
	mov	word [si],0x5f		; 00008132  C7045F00  '.._.'
	mov	si,0x10			; 00008136  BE1000  '...'
	mov	ax,0xf000		; 00008139  B800F0  '...'
	mov	bx,0x10			; 0000813C  BB1000  '...'
	mul	bx			; 0000813F  F7E3  '..'
	add	ax,0xf821		; 00008141  0521F8  '.!.'
	adc	dl,0x0			; 00008144  80D200  '...'
	mov	[si+0x2],ax		; 00008147  894402  '.D.'
	mov	[si+0x4],dl		; 0000814A  885404  '.T.'
	mov	byte [si+0x5],0x92	; 0000814D  C6440592  '.D..'
	mov	word [si],0x7		; 00008151  C7040700  '....'
	mov	si,0x30			; 00008155  BE3000  '.0.'
	mov	ax,cs			; 00008158  8CC8  '..'
	mov	bl,0x9a			; 0000815A  B39A  '..'
	call	x81cb			; 0000815C  E86C00  '.l.'
	mov	si,0x18			; 0000815F  BE1800  '...'
	mov	ax,0x1c00		; 00008162  B8001C  '...'
	mov	bl,0x92			; 00008165  B392  '..'
	call	x81cb			; 00008167  E86100  '.a.'
	mov	si,0x20			; 0000816A  BE2000  '. .'
	mov	ax,0x40			; 0000816D  B84000  '.@.'
	mov	bl,0x92			; 00008170  B392  '..'
	call	x81cb			; 00008172  E85600  '.V.'
	mov	si,0x28			; 00008175  BE2800  '.(.'
	mov	ax,ss			; 00008178  8CD0  '..'
	mov	bl,0x92			; 0000817A  B392  '..'
	call	x81cb			; 0000817C  E84C00  '.L.'
	mov	si,0x40			; 0000817F  BE4000  '.@.'
	mov	ax,0xb000		; 00008182  B800B0  '...'
	mov	bl,0x92			; 00008185  B392  '..'
	call	x81cb			; 00008187  E84100  '.A.'
	mov	si,0x48			; 0000818A  BE4800  '.H.'
	mov	ax,0x2000		; 0000818D  B80020  '.. '
	mov	bl,0x92			; 00008190  B392  '..'
	call	x81cb			; 00008192  E83600  '.6.'
	mov	si,0x50			; 00008195  BE5000  '.P.'
	mov	ax,0xc000		; 00008198  B800C0  '...'
	mov	bl,0x92			; 0000819B  B392  '..'
	call	x81cb			; 0000819D  E82B00  '.+.'
	mov	byte [0x54],0xc0	; 000081A0  C6065400C0  '..T..'
	mov	byte [0x57],0x80	; 000081A5  C606570080  '..W..'
	mov	si,0x58			; 000081AA  BE5800  '.X.'
	mov	ax,0xf000		; 000081AD  B800F0  '...'
	mov	bl,0x92			; 000081B0  B392  '..'
	call	x81cb			; 000081B2  E81600  '...'
	mov	ax,cs			; 000081B5  8CC8  '..'
	mov	ds,ax			; 000081B7  8ED8  '..'
	mov	si,0xf821		; 000081B9  BE21F8  '.!.'
	mov	di,0xa9			; 000081BC  BFA900  '...'
	mov	cx,0x7			; 000081BF  B90700  '...'
	inc	cx			; 000081C2  41  'A'
	shr	cx,1			; 000081C3  D1E9  '..'
	rep	movsw			; 000081C5  F3A5  '..'
	pop	es			; 000081C7  07  '.'
	pop	ds			; 000081C8  1F  '.'
	popa				; 000081C9  61  'a'
	ret				; 000081CA  C3  '.'

;
;   Descriptor initializer
;
;   Used by x8102 to initialize a descriptor table
;
x81cb:	mov	word [si],0xffff	; 000081CB  C704FFFF  '....'
	mov	bh,ah			; 000081CF  8AFC  '..'
	shl	ax,0x4			; 000081D1  C1E004  '...'
	shr	bh,0x4			; 000081D4  C0EF04  '...'
	mov	[si+0x2],ax		; 000081D7  894402  '.D.'
	mov	[si+0x4],bh		; 000081DA  887C04  '.|.'
	mov	[si+0x5],bl		; 000081DD  885C05  '.\.'
	mov	word [si+0x6],0x0	; 000081E0  C744060000  '.D...'
	ret				; 000081E5  C3  '.'

x81e6:	push	ax			; 000081E6  50  'P'
	mov	al,0x8e			; 000081E7  B08E  '..'
	call	xb544			; 000081E9  E85833  '.X3'
	test	al,0xc0			; 000081EC  A8C0  '..'
	jz	x81f3			; 000081EE  7403  't.'
	stc				; 000081F0  F9  '.'
	jmp	short x8212		; 000081F1  EB1F  '..'

x81f3:	mov	al,0x96			; 000081F3  B096  '..'
	call	xb544			; 000081F5  E84C33  '.L3'
	mov	ah,al			; 000081F8  8AE0  '..'
	mov	al,0x95			; 000081FA  B095  '..'
	call	xb544			; 000081FC  E84533  '.E3'
	mov	[0x76],ax		; 000081FF  A37600  '.v.'
	mov	al,0x98			; 00008202  B098  '..'
	call	xb544			; 00008204  E83D33  '.=3'
	mov	ah,al			; 00008207  8AE0  '..'
	mov	al,0x97			; 00008209  B097  '..'
	call	xb544			; 0000820B  E83633  '.63'
	mov	[0x78],ax		; 0000820E  A37800  '.x.'
	clc				; 00008211  F8  '.'
x8212:	pop	ax			; 00008212  58  'X'
	ret				; 00008213  C3  '.'

x8214:	push	ax			; 00008214  50  'P'
	mov	al,0x8e			; 00008215  B08E  '..'
	call	xb544			; 00008217  E82A33  '.*3'
	mov	ah,al			; 0000821A  8AE0  '..'
	or	ah,0x10			; 0000821C  80CC10  '...'
	or	cl,cl			; 0000821F  0AC9  0x0A,'.'
	jnz	x8226			; 00008221  7503  'u.'
	and	ah,0xef			; 00008223  80E4EF  '...'
x8226:	mov	al,0x8e			; 00008226  B08E  '..'
	call	xb549			; 00008228  E81E33  '..3'
	pop	ax			; 0000822B  58  'X'
	ret				; 0000822C  C3  '.'

x822d:	push	si			; 0000822D  56  'V'
	call	xc704			; 0000822E  E8D344  '..D'
	pop	bx			; 00008231  5B  '['
	call	x8257			; 00008232  E82200  '.".'
	mov	dx,0x0			; 00008235  BA0000  '...'
	mov	bx,err201		; 00008238  BBA6B6  '...'
	mov	cx,err201_len		; 0000823B  B91100  '...'
	call	xc745			; 0000823E  E80445  '..E'
	ret				; 00008241  C3  '.'

x8242:	push	si			; 00008242  56  'V'
	call	xc704			; 00008243  E8BE44  '..D'
	pop	bx			; 00008246  5B  '['
	call	x8257			; 00008247  E80D00  '.',0x0D,'.'
	mov	dx,0x0			; 0000824A  BA0000  '...'
	mov	bx,err203		; 0000824D  BBB7B6  '...'
	mov	cx,err203_len		; 00008250  B91900  '...'
	call	xc745			; 00008253  E8EF44  '..D'
	ret				; 00008256  C3  '.'

x8257:	mov	ax,[0x60]		; 00008257  A16000  '.`.'
	and	al,0xc0			; 0000825A  24C0  '$.'
	cmp	al,0x40			; 0000825C  3C40  '<@'
	jz	x8263			; 0000825E  7403  't.'
	jmp	x82e7			; 00008260  E98400  '...'

x8263:	mov	si,0xb706		; 00008263  BE06B7  '...'
	cmp	bl,0xfe			; 00008266  80FBFE  '...'
	jz	x82de			; 00008269  7473  'ts'
	cmp	bl,0xff			; 0000826B  80FBFF  '...'
	jz	x82de			; 0000826E  746E  'tn'
	or	bl,bl			; 00008270  0ADB  0x0A,'.'
	jz	x82de			; 00008272  746A  'tj'
	mov	bh,0x10			; 00008274  B710  '..'
	mov	al,ah			; 00008276  8AC4  '..'
	and	al,0x3			; 00008278  2403  '$.'
	cmp	al,0x3			; 0000827A  3C03  '<.'
	jz	x82e7			; 0000827C  7469  'ti'
	cmp	al,0x2			; 0000827E  3C02  '<.'
	jz	x8284			; 00008280  7402  't.'
	mov	bh,0x40			; 00008282  B740  '.@'
x8284:	cmp	bl,bh			; 00008284  3ADF  ':.'
	jc	x82de			; 00008286  7256  'rV'
	mov	si,0xb713		; 00008288  BE13B7  '...'
	add	bh,0x10			; 0000828B  80C710  '...'
	mov	al,ah			; 0000828E  8AC4  '..'
	and	al,0xc			; 00008290  240C  '$.'
	shr	al,0x2			; 00008292  C0E802  '...'
	cmp	al,0x3			; 00008295  3C03  '<.'
	jz	x82e7			; 00008297  744E  'tN'
	cmp	al,0x2			; 00008299  3C02  '<.'
	jz	x82a0			; 0000829B  7403  't.'
	add	bh,0x30			; 0000829D  80C730  '..0'
x82a0:	cmp	bl,bh			; 000082A0  3ADF  ':.'
	jc	x82de			; 000082A2  723A  'r:'
	mov	si,0xb71d		; 000082A4  BE1DB7  '...'
	add	bh,0x10			; 000082A7  80C710  '...'
	mov	al,ah			; 000082AA  8AC4  '..'
	and	al,0x30			; 000082AC  2430  '$0'
	shr	al,0x4			; 000082AE  C0E804  '...'
	cmp	al,0x3			; 000082B1  3C03  '<.'
	jz	x82e7			; 000082B3  7432  't2'
	cmp	al,0x2			; 000082B5  3C02  '<.'
	jz	x82bc			; 000082B7  7403  't.'
	add	bh,0x30			; 000082B9  80C730  '..0'
x82bc:	cmp	bl,bh			; 000082BC  3ADF  ':.'
	jc	x82de			; 000082BE  721E  'r.'
	mov	si,0xb727		; 000082C0  BE27B7  '.',0x27,'.'
	add	bh,0x10			; 000082C3  80C710  '...'
	mov	al,ah			; 000082C6  8AC4  '..'
	and	al,0xc0			; 000082C8  24C0  '$.'
	shr	al,0x6			; 000082CA  C0E806  '...'
	cmp	al,0x3			; 000082CD  3C03  '<.'
	jz	x82e7			; 000082CF  7416  't.'
	cmp	al,0x2			; 000082D1  3C02  '<.'
	jz	x82da			; 000082D3  7405  't.'
	add	bh,0x30			; 000082D5  80C730  '..0'
	jz	x82de			; 000082D8  7404  't.'
x82da:	cmp	bl,bh			; 000082DA  3ADF  ':.'
	jnc	x82e7			; 000082DC  7309  's.'
x82de:	push	ds			; 000082DE  1E  '.'
	mov	ax,cs			; 000082DF  8CC8  '..'
	mov	ds,ax			; 000082E1  8ED8  '..'
	call	xe282			; 000082E3  E89C5F  '.._'
	pop	ds			; 000082E6  1F  '.'
x82e7:	ret				; 000082E7  C3  '.'

x82e8:	push	ds			; 000082E8  1E  '.'
	mov	ax,cs			; 000082E9  8CC8  '..'
	mov	ds,ax			; 000082EB  8ED8  '..'
	mov	si,0x8000		; 000082ED  BE0080  '...'
	xor	ah,ah			; 000082F0  32E4  '2.'
	mov	cx,0x8000		; 000082F2  B90080  '...'
x82f5:	lodsb				; 000082F5  AC  '.'
	add	ah,al			; 000082F6  02E0  '..'
	loop	x82f5			; 000082F8  E2FB  '..'
	jz	x830a			; 000082FA  740E  't.'
	mov	dx,0x5000		; 000082FC  BA0050  '..P'

	mov	bx,err101		; 000082FF  BB5AB7  '.Z.'
	mov	cx,err101_len		; 00008302  B90F00  '...'
	call	xc745			; 00008305  E83D44  '.=D'
x8308:	jmp	short x8308		; 00008308  EBFE		; HANG THE MACHINE

x830a:	pop	ds			; 0000830A  1F  '.'
	ret				; 0000830B  C3  '.'

	xor	[bx],al			; 0000830C  3007  '0.'
	xor	[bx],al			; 0000830E  3007  '0.'
	xor	[bx],al			; 00008310  3007  '0.'
	xor	[bx],al			; 00008312  3007  '0.'
	xor	[bx],al			; 00008314  3007  '0.'
	and	[bx],al			; 00008316  2007  ' .'
	dec	bx			; 00008318  4B  'K'
	pop	es			; 00008319  07  '.'
	inc	dx			; 0000831A  42  'B'
	pop	es			; 0000831B  07  '.'
	and	[bx],al			; 0000831C  2007  ' .'
	dec	di			; 0000831E  4F  'O'
	pop	es			; 0000831F  07  '.'
	dec	bx			; 00008320  4B  'K'
	pop	es			; 00008321  07  '.'
	mov	ah,[0x49]		; 00008322  8A264900  '.&I.'
	mov	[bp+0x1],ah		; 00008326  886601  '.f.'
	ret				; 00008329  C3  '.'

	push	ds			; 0000832A  1E  '.'
	cmp	al,0x3			; 0000832B  3C03  '<.'
	ja	x838c			; 0000832D  775D  'w]'
	push	es			; 0000832F  06  '.'
	mov	bh,[bp+0x7]		; 00008330  8A7E07  '.~.'
	mov	ah,0x3			; 00008333  B403  '..'
	call	x83db			; 00008335  E8A300  '...'
	push	dx			; 00008338  52  'R'
	mov	dx,[bp+0x2]		; 00008339  8B5602  '.V.'
	mov	ah,0x2			; 0000833C  B402  '..'
	call	x83db			; 0000833E  E89A00  '...'
	mov	cx,[bp+0x4]		; 00008341  8B4E04  '.N.'
	jcxz	x837c			; 00008344  E336  '.6'
	mov	si,[bp+0xc]		; 00008346  8B760C  '.v.'
	mov	ax,[bp+0x10]		; 00008349  8B4610  '.F.'
	mov	ds,ax			; 0000834C  8ED8  '..'
	cld				; 0000834E  FC  '.'
x834f:	lodsb				; 0000834F  AC  '.'
	mov	bx,[bp+0x6]		; 00008350  8B5E06  '.^.'
	cmp	byte [bp+0x0],0x1	; 00008353  807E0001  '.~..'
	jna	x836c			; 00008357  7613  'v.'
	cmp	al,0x7			; 00008359  3C07  '<.'
	jz	x836c			; 0000835B  740F  't.'
	cmp	al,0x8			; 0000835D  3C08  '<.'
	jz	x836c			; 0000835F  740B  't.'
	cmp	al,0xa			; 00008361  3C0A  '<',0x0A
	jz	x836c			; 00008363  7407  't.'
	cmp	al,0xd			; 00008365  3C0D  '<',0x0D
	jz	x836c			; 00008367  7403  't.'
	xchg	ax,bx			; 00008369  93  '.'
	lodsb				; 0000836A  AC  '.'
	xchg	ax,bx			; 0000836B  93  '.'
x836c:	push	cx			; 0000836C  51  'Q'
	push	ds			; 0000836D  1E  '.'
	push	ax			; 0000836E  50  'P'
	mov	ax,0x40			; 0000836F  B84000  '.@.'
	mov	ds,ax			; 00008372  8ED8  '..'
	pop	ax			; 00008374  58  'X'
	call	x8395			; 00008375  E81D00  '...'
	pop	ds			; 00008378  1F  '.'
	pop	cx			; 00008379  59  'Y'
	loop	x834f			; 0000837A  E2D3  '..'
x837c:	pop	dx			; 0000837C  5A  'Z'
	pop	es			; 0000837D  07  '.'
	mov	bh,[bp+0x7]		; 0000837E  8A7E07  '.~.'
	test	byte [bp+0x0],0x1	; 00008381  F6460001  '.F..'
	jnz	x838c			; 00008385  7505  'u.'
	mov	ah,0x2			; 00008387  B402  '..'
	call	x83db			; 00008389  E84F00  '.O.'
x838c:	pop	ds			; 0000838C  1F  '.'
	mov	ah,[0x49]		; 0000838D  8A264900  '.&I.'
	mov	[bp+0x1],ah		; 00008391  886601  '.f.'
	ret				; 00008394  C3  '.'

x8395:	cmp	al,0x7			; 00008395  3C07  '<.'
	jz	x83d4			; 00008397  743B  't;'
	cmp	al,0x8			; 00008399  3C08  '<.'
	db	't7<',0x0A,'t3<',0x0D,'t/'
	mov	cx,0x1			; 000083A5  B90100  '...'
	mov	ah,0x9			; 000083A8  B409  '..'
	call	x83db			; 000083AA  E82E00  '...'
	mov	ah,0x3			; 000083AD  B403  '..'
	call	x83db			; 000083AF  E82900  '.).'
	inc	dl			; 000083B2  FEC2  '..'
	cmp	dl,[0x4a]		; 000083B4  3A164A00  ':.J.'
	jnz	x83ce			; 000083B8  7514  'u.'
	xor	dl,dl			; 000083BA  32D2  '2.'
	inc	dh			; 000083BC  FEC6  '..'
	cmp	dh,0x19			; 000083BE  80FE19  '...'
	jnz	x83ce			; 000083C1  750B  'u.'
	dec	dh			; 000083C3  FECE  '..'
	mov	al,0xa			; 000083C5  B00A  '.',0x0A
	mov	ah,0xe			; 000083C7  B40E  '..'
	call	x83db			; 000083C9  E80F00  '...'
	xor	dl,dl			; 000083CC  32D2  '2.'
x83ce:	mov	ah,0x2			; 000083CE  B402  '..'
	call	x83db			; 000083D0  E80800  '...'
x83d3:	ret				; 000083D3  C3  '.'

x83d4:	mov	ah,0xe			; 000083D4  B40E  '..'
	call	x83db			; 000083D6  E80200  '...'
	jmp	short x83d3		; 000083D9  EBF8  '..'

x83db:	push	ax			; 000083DB  50  'P'
	push	bx			; 000083DC  53  'S'
	push	es			; 000083DD  06  '.'
	mov	bx,0x0			; 000083DE  BB0000  '...'
	mov	es,bx			; 000083E1  8EC3  '..'
	mov	bx,0x42			; 000083E3  BB4200  '.B.'
	mov	ax,cs			; 000083E6  8CC8  '..'
	cmp	[es:bx],ax		; 000083E8  263907  '&9.'
	pop	es			; 000083EB  07  '.'
	pop	bx			; 000083EC  5B  '['
	pop	ax			; 000083ED  58  'X'
	jz	x83f3			; 000083EE  7403  't.'
	int	0x10			; 000083F0  CD10  '..'
	ret				; 000083F2  C3  '.'

x83f3:	pushf				; 000083F3  9C  '.'
	push	cs			; 000083F4  0E  '.'
	call	xf065			; 000083F5  E86D6C  '.ml'
	ret				; 000083F8  C3  '.'

x83f9:	push	cs			; 000083F9  0E  '.'
	pop	ds			; 000083FA  1F  '.'
	cld				; 000083FB  FC  '.'
	mov	al,0xa0			; 000083FC  B0A0  '..'
	out	0x84,al			; 000083FE  E684  '..'
	mov	dx,0x3f2		; 00008400  BAF203  '...'
	mov	al,0x0			; 00008403  B000  '..'
	out	dx,al			; 00008405  EE  '.'
	mov	al,0xa1			; 00008406  B0A1  '..'
	out	0x84,al			; 00008408  E684  '..'
	mov	bx,0x64			; 0000840A  BB6400  '.d.'
	call	xc638			; 0000840D  E82842  '.(B'	; CALL DELAY(BX)
	mov	al,0xc			; 00008410  B00C  '..'
	out	dx,al			; 00008412  EE  '.'
	mov	al,0xa2			; 00008413  B0A2  '..'
	out	0x84,al			; 00008415  E684  '..'
	mov	bx,0x64			; 00008417  BB6400  '.d.'
	call	xc638			; 0000841A  E81B42  '..B'	; CALL DELAY(BX)
	mov	si,0x849f		; 0000841D  BE9F84  '...'
	mov	di,0x4			; 00008420  BF0400  '...'
	call	x8d8d			; 00008423  E86709  '.g.'
	jc	x847c			; 00008426  7254  'rT'
	mov	al,0x1c			; 00008428  B01C  '..'
	mov	dx,0x3f2		; 0000842A  BAF203  '...'
	out	dx,al			; 0000842D  EE  '.'
	mov	al,0xa3			; 0000842E  B0A3  '..'
	out	0x84,al			; 00008430  E684  '..'
	xor	bp,bp			; 00008432  33ED  '3.'
x8434:	call	x8d8d			; 00008434  E85609  '.V.'
	jc	x847c			; 00008437  7243  'rC'
	mov	bx,0x1f4		; 00008439  BBF401  '...'
	call	xc638			; 0000843C  E8F941  '..A'	; CALL DELAY(BX)
	call	x8d8d			; 0000843F  E84B09  '.K.'
	jc	x847c			; 00008442  7238  'r8'
	mov	cx,0x64			; 00008444  B96400  '.d.'
x8447:	call	xe944			; 00008447  E8FA64  '..d'
	jc	x847c			; 0000844A  7230  'r0'
	loope	x8447			; 0000844C  E1F9  '..'
	jz	x847c			; 0000844E  742C  't,'
	call	x919a			; 00008450  E8470D  '.G',0x0D
	in	al,dx			; 00008453  EC  '.'
	test	al,0xc0			; 00008454  A8C0  '..'
	jnz	x845b			; 00008456  7503  'u.'
	in	al,dx			; 00008458  EC  '.'
	jmp	short x848e		; 00008459  EB33  '.3'

x845b:	xor	bp,0x1			; 0000845B  81F50100  '....'
	jz	x8476			; 0000845F  7415  't.'
	cmp	al,0x70			; 00008461  3C70  '<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  2E0F01167807; load [gdtr_lo] into GDTR
	mov	eax,cr0			; 0000879C  0F2000
	or	ax,0x1			; 0000879F  0D0100
	mov	cr0,eax			; 000087A2  0F2200
	jmp	far [cs:0x878a]		; 000087A5  2EFF2E8A87

	mov	ax,0x8			; 000087AA  B80800  '...'
	mov	es,ax			; 000087AD  8EC0  '..'
	mov	al,0x2f			; 000087AF  B02F  './'
	mov	[es:di],bl		; 000087B1  26881D  '&..'
	out	0x84,al			; 000087B4  E684  '..'
	cld				; 000087B6  FC  '.'
	cld				; 000087B7  FC  '.'
	cld				; 000087B8  FC  '.'
	cld				; 000087B9  FC  '.'
	cld				; 000087BA  FC  '.'
	cld				; 000087BB  FC  '.'
	cld				; 000087BC  FC  '.'
	cld				; 000087BD  FC  '.'
	cld				; 000087BE  FC  '.'
	cld				; 000087BF  FC  '.'
	cld				; 000087C0  FC  '.'
	cld				; 000087C1  FC  '.'
	cld				; 000087C2  FC  '.'
	cld				; 000087C3  FC  '.'
	cld				; 000087C4  FC  '.'
	cld				; 000087C5  FC  '.'
x87c6:	mov	ax,0x10			; 000087C6  B81000
	mov	es,ax			; 000087C9  8EC0
	mov	eax,cr0			; 000087CB  0F2000
	and	eax,0x7ffffffe		; 000087CE  6625FEFFFF7F
	mov	cr0,eax			; 000087D4  0F2200
	jmp	0xf000:x87dc		; 000087D7  EADC8700F0

x87dc:	lidt	[cs:0x0784]		; 000087DC  2E0F011E8407; load [idtr_lo] into IDTR
	jmp	bp			; 000087E2  FFE5

x87e4:	lgdt	[cs:0x0778]		; 000087E4  2E0F01167807; load [gdtr_lo] into GDTR
	mov	eax,cr0			; 000087EA  0F2000
	or	ax,0x1			; 000087ED  0D0100
	mov	cr0,eax			; 000087F0  0F2200
	jmp	far [cs:0x878e]		; 000087F3  2EFF2E8E87

	mov	ax,0x8			; 000087F8  B80800  '...'
	mov	es,ax			; 000087FB  8EC0  '..'
	in	al,0x61			; 000087FD  E461  '.a'
	mov	ah,al			; 000087FF  8AE0  '..'
	or	al,0x8			; 00008801  0C08  '..'
	out	0x61,al			; 00008803  E661  '.a'
	mov	al,ah			; 00008805  8AC4  '..'
	mov	bl,[es:di]		; 00008807  268A1D  '&..'
	mov	byte [es:0x0],0xff	; 0000880A  26C6060000FF  '&.....'
	out	0x61,al			; 00008810  E661  '.a'
	jmp	short x87c6		; 00008812  EBB2  '..'

x8814:	lgdt	[cs:0x8778]		; 00008814  2E0F01167887; load [gdtr_lo] into GDTR
	mov	eax,cr0			; 0000881A  0F2000
	or	ax,0x1			; 0000881D  0D0100
	mov	cr0,eax			; 00008820  0F2200
	jmp	far [cs:0x8792]		; 00008823  2EFF2E9287

	mov	ax,0x20			; 00008828  B82000  '. .'
	mov	ds,ax			; 0000882B  8ED8  '..'
	mov	al,0xc0			; 0000882D  B0C0  '..'
	out	0x64,al			; 0000882F  E664  '.d'
	mov	cx,0xffff		; 00008831  B9FFFF  '...'
	cli				; 00008834  FA  '.'
x8835:	in	al,0x64			; 00008835  E464  '.d'
	test	al,0x2			; 00008837  A802  '..'
	jz	x8840			; 00008839  7405  't.'
	loop	x8835			; 0000883B  E2F8  '..'
	jmp	x88d0			; 0000883D  E99000  '...'

x8840:	mov	cx,0xffff		; 00008840  B9FFFF  '...'
x8843:	in	al,0x64			; 00008843  E464  '.d'
	test	al,0x1			; 00008845  A801  '..'
	jnz	x884e			; 00008847  7505  'u.'
	loop	x8843			; 00008849  E2F8  '..'
	jmp	x88d0			; 0000884B  E98200  '...'

x884e:	in	al,0x60			; 0000884E  E460  '.`'
	test	al,0x8			; 00008850  A808  '..'
	jnz	x88d0			; 00008852  757C  'u|'
	mov	dword [0xc000],0xb8000000; 00008854  66C70600C0000000  'f.......'
	jmp	short x885f		; 0000885D  EB00  '..'

x885f:	mov	eax,[0xc400]		; 0000885F  66A100C4  'f...'
	jmp	short x8865		; 00008863  EB00  '..'

x8865:	and	eax,0x8000		; 00008865  662500800000  'f%....'
	jnz	x887a			; 0000886B  750D  'u',0x0D
	jmp	short x886f		; 0000886D  EB00  '..'

x886f:	mov	dword [0xc000],0x16000000; 0000886F  66C70600C0000000  'f.......'
	jmp	short x8890		; 00008878  EB16  '..'

x887a:	jmp	short x887c		; 0000887A  EB00  '..'

x887c:	mov	dword [0xc000],0x56000000; 0000887C  66C70600C0000000  'f.......'
	jmp	short x8887		; 00008885  EB00  '..'

x8887:	mov	dword [0xc000],0x98000000; 00008887  66C70600C0000000  'f.......'
x8890:	jmp	short x8892		; 00008890  EB00  '..'

x8892:	mov	dword [0xc000],0x64000000; 00008892  66C70600C0000000  'f.......'
	jmp	short x889d		; 0000889B  EB00  '..'

x889d:	mov	dword [0xc000],0xa0000000; 0000889D  66C70600C0000000  'f.......'
	jmp	short x88a8		; 000088A6  EB00  '..'

x88a8:	mov	dword [0xc000],0x30000000; 000088A8  66C70600C0000000  'f.......'
	jmp	short x88b3		; 000088B1  EB00  '..'

x88b3:	mov	dword [0xc000],0x3ff0000; 000088B3  66C70600C00000FF  'f.......'
	mov	al,0xb3			; 000088BC  B0B3  '..'
	out	0x70,al			; 000088BE  E670  '.p'
	in	al,0x71			; 000088C0  E471  '.q'
	xchg	ah,al			; 000088C2  86E0  '..'
	mov	al,0xb3			; 000088C4  B0B3  '..'
	out	0x70,al			; 000088C6  E670  '.p'
	xchg	al,ah			; 000088C8  86C4  '..'
	or	al,0x20			; 000088CA  0C20  '. '
	out	0x71,al			; 000088CC  E671  '.q'
	jmp	short x88e2		; 000088CE  EB12  '..'

x88d0:	mov	al,0xb3			; 000088D0  B0B3  '..'
	out	0x70,al			; 000088D2  E670  '.p'
	in	al,0x71			; 000088D4  E471  '.q'
	xchg	ah,al			; 000088D6  86E0  '..'
	mov	al,0xb3			; 000088D8  B0B3  '..'
	out	0x70,al			; 000088DA  E670  '.p'
	xchg	al,ah			; 000088DC  86C4  '..'
	and	al,0xdf			; 000088DE  24DF  '$.'
	out	0x71,al			; 000088E0  E671  '.q'
x88e2:	mov	ax,0x10			; 000088E2  B81000  '...'
	mov	ds,ax			; 000088E5  8ED8  '..'
	jmp	x87c6			; 000088E7  E9DCFE  '...'

x88ea:	sti				; 000088EA  FB  '.'
	push	bx			; 000088EB  53  'S'
	push	cx			; 000088EC  51  'Q'
	push	dx			; 000088ED  52  'R'
	push	si			; 000088EE  56  'V'
	push	ds			; 000088EF  1E  '.'
	mov	bx,0x40			; 000088F0  BB4000  '.@.'
	mov	ds,bx			; 000088F3  8EDB  '..'
	and	dx,0x3			; 000088F5  81E20300  '....'
	mov	si,dx			; 000088F9  8BF2  '..'
	mov	bl,[si+0x78]		; 000088FB  8A9C7800  '..x.'
	shl	si,1			; 000088FF  D1E6  '..'
	mov	dx,[si+0x8]		; 00008901  8B940800  '....'
	or	dx,dx			; 00008905  0BD2  '..'
	jz	x8980			; 00008907  7477  'tw'
	push	ax			; 00008909  50  'P'
	test	ah,ah			; 0000890A  84E4  '..'
	jz	x8919			; 0000890C  740B  't.'
	dec	ah			; 0000890E  FECC  '..'
	jz	x895b			; 00008910  7449  'tI'
	dec	ah			; 00008912  FECC  '..'
	jz	x8971			; 00008914  745B  't['
	pop	ax			; 00008916  58  'X'
	jmp	short x8980		; 00008917  EB67  '.g'

x8919:	out	dx,al			; 00008919  EE  '.'
	inc	dx			; 0000891A  42  'B'
	jmp	short x891d		; 0000891B  EB00  '..'

x891d:	jmp	short x891f		; 0000891D  EB00  '..'

x891f:	in	al,dx			; 0000891F  EC  '.'
	and	al,0xf8			; 00008920  24F8  '$.'
	js	x894c			; 00008922  7828  'x('
	push	ax			; 00008924  50  'P'
	mov	ax,0x90fe		; 00008925  B8FE90  '...'
	clc				; 00008928  F8  '.'
	int	0x15			; 00008929  CD15  '..'
	pop	ax			; 0000892B  58  'X'
	jc	x893f			; 0000892C  7211  'r.'
x892e:	mov	cx,0xf424		; 0000892E  B924F4  '.$.'
x8931:	call	x919a			; 00008931  E86608  '.f.'
	in	al,dx			; 00008934  EC  '.'
	and	al,0xf8			; 00008935  24F8  '$.'
	js	x894c			; 00008937  7813  'x.'
	loop	x8931			; 00008939  E2F6  '..'
	dec	bl			; 0000893B  FECB  '..'
	jnz	x892e			; 0000893D  75EF  'u.'
x893f:	jmp	short x8941		; 0000893F  EB00  '..'

x8941:	jmp	short x8943		; 00008941  EB00  '..'

x8943:	in	al,dx			; 00008943  EC  '.'
	and	al,0xf8			; 00008944  24F8  '$.'
	js	x894c			; 00008946  7804  'x.'
	or	al,0x1			; 00008948  0C01  '..'
	jmp	short x8979		; 0000894A  EB2D  '.-'

x894c:	inc	dx			; 0000894C  42  'B'
	in	al,dx			; 0000894D  EC  '.'
	and	al,0x1c			; 0000894E  241C  '$.'
	or	al,0x1			; 00008950  0C01  '..'
	jmp	short x8954		; 00008952  EB00  '..'

x8954:	jmp	short x8956		; 00008954  EB00  '..'

x8956:	out	dx,al			; 00008956  EE  '.'
	and	al,0x1c			; 00008957  241C  '$.'
	jmp	short x896a		; 00008959  EB0F  '..'

x895b:	inc	dx			; 0000895B  42  'B'
	inc	dx			; 0000895C  42  'B'
	mov	al,0x8			; 0000895D  B008  '..'
	jmp	short x8961		; 0000895F  EB00  '..'

x8961:	out	dx,al			; 00008961  EE  '.'
	mov	bx,0x5			; 00008962  BB0500  '...'
	call	xc638			; 00008965  E8D03C  '..<'	; CALL DELAY(BX)
	or	al,0x4			; 00008968  0C04  '..'
x896a:	jmp	short x896c		; 0000896A  EB00  '..'

x896c:	jmp	short x896e		; 0000896C  EB00  '..'

x896e:	out	dx,al			; 0000896E  EE  '.'
	dec	dx			; 0000896F  4A  'J'
	dec	dx			; 00008970  4A  'J'
x8971:	inc	dx			; 00008971  42  'B'
	jmp	short x8974		; 00008972  EB00  '..'

x8974:	jmp	short x8976		; 00008974  EB00  '..'

x8976:	in	al,dx			; 00008976  EC  '.'
	and	al,0xf8			; 00008977  24F8  '$.'
x8979:	xor	al,0x48			; 00008979  3448  '4H'
	mov	bh,al			; 0000897B  8AF8  '..'
	pop	ax			; 0000897D  58  'X'
	mov	ah,bh			; 0000897E  8AE7  '..'
x8980:	pop	ds			; 00008980  1F  '.'
	pop	si			; 00008981  5E  '^'
	pop	dx			; 00008982  5A  'Z'
	pop	cx			; 00008983  59  'Y'
	pop	bx			; 00008984  5B  '['
	iret				; 00008985  CF  '.'

	add	[ss:bp+di+0xada5],ch	; 00008986  2E3E2664653600AB  '.>&de6..'
	cmpsw				; 00008990  A7  '.'
	scasw				; 00008991  AF  '.'
	insw				; 00008992  6D  'm'
	outsw				; 00008993  6F  'o'
	add	[di],bl			; 00008994  001D  '..'
	mov	dh,[bp+di]		; 00008996  8A33  '.3'
	mov	al,[bp+di+0x918a]	; 00008998  8A838A91  '....'
	mov	dl,dh			; 0000899C  8AD6  '..'
	mov	ah,ah			; 0000899E  8AE4  '..'
	mov	bh,dl			; 000089A0  8AFA  '..'
	mov	dl,[bx+di+0x55]		; 000089A2  8A5155  '.QU'
	mov	bp,sp			; 000089A5  8BEC  '..'
	push	ax			; 000089A7  50  'P'
	push	bx			; 000089A8  53  'S'
	push	dx			; 000089A9  52  'R'
	push	es			; 000089AA  06  '.'
	push	ds			; 000089AB  1E  '.'
	mov	al,0xb			; 000089AC  B00B  '..'
	out	0x20,al			; 000089AE  E620  '. '
	in	al,0x20			; 000089B0  E420  '. '
	test	al,0x20			; 000089B2  A820  '. '
	jnz	x8a0b			; 000089B4  7555  'uU'
	xor	ch,ch			; 000089B6  32ED  '2.'
	mov	ax,cs			; 000089B8  8CC8  '..'
	mov	ds,ax			; 000089BA  8ED8  '..'
	mov	es,[bp+0x6]		; 000089BC  8E4606  '.F.'
	mov	bx,[bp+0x4]		; 000089BF  8B5E04  '.^.'
x89c2:	mov	cl,[es:bx]		; 000089C2  268A0F  '&..'
	cmp	cl,0xf2			; 000089C5  80F9F2  '...'
	jz	x89cf			; 000089C8  7405  't.'
	cmp	cl,0xf3			; 000089CA  80F9F3  '...'
	jnz	x89d7			; 000089CD  7508  'u.'
x89cf:	inc	bx			; 000089CF  43  'C'
	dec	word [bp+0x2]		; 000089D0  FF4E02  '.N.'
	mov	ch,0x1			; 000089D3  B501  '..'
	jmp	short x89c2		; 000089D5  EBEB  '..'

x89d7:	mov	dx,si			; 000089D7  8BD6  '..'
	cld				; 000089D9  FC  '.'
	mov	si,0x8986		; 000089DA  BE8689  '...'
x89dd:	lodsb				; 000089DD  AC  '.'
	cmp	al,0x0			; 000089DE  3C00  '<.'
	jz	x89eb			; 000089E0  7409  't.'
	cmp	al,cl			; 000089E2  3AC1  ':.'
	jnz	x89dd			; 000089E4  75F7  'u.'
	inc	bx			; 000089E6  43  'C'
	mov	si,dx			; 000089E7  8BF2  '..'
	jmp	short x89c2		; 000089E9  EBD7  '..'

x89eb:	mov	si,0x898d		; 000089EB  BE8D89  '...'
	mov	bx,si			; 000089EE  8BDE  '..'
x89f0:	lodsb				; 000089F0  AC  '.'
	cmp	al,0x0			; 000089F1  3C00  '<.'
	jz	x8a0b			; 000089F3  7416  't.'
	cmp	al,cl			; 000089F5  3AC1  ':.'
	jnz	x89f0			; 000089F7  75F7  'u.'
	mov	ax,[bp+0x8]		; 000089F9  8B4608  '.F.'
	and	ah,0x4			; 000089FC  80E404  '...'
	sub	si,bx			; 000089FF  2BF3  '+.'
	dec	si			; 00008A01  4E  'N'
	shl	si,1			; 00008A02  D1E6  '..'
	call	near [cs:si+0x8995]	; 00008A04  2EFF949589  '.....'
	jmp	short x8a15		; 00008A09  EB0A  '.',0x0A

x8a0b:	pop	ds			; 00008A0B  1F  '.'
	pop	es			; 00008A0C  07  '.'
	pop	dx			; 00008A0D  5A  'Z'
	pop	bx			; 00008A0E  5B  '['
	pop	ax			; 00008A0F  58  'X'
	pop	bp			; 00008A10  5D  ']'
	pop	cx			; 00008A11  59  'Y'
	jmp	x9bd0			; 00008A12  E9BB11

x8a15:	pop	ds			; 00008A15  1F  '.'
	pop	es			; 00008A16  07  '.'
	pop	dx			; 00008A17  5A  'Z'
	pop	bx			; 00008A18  5B  '['
	pop	ax			; 00008A19  58  'X'
	pop	bp			; 00008A1A  5D  ']'
	pop	cx			; 00008A1B  59  'Y'
	iret				; 00008A1C  CF  '.'

	mov	si,dx			; 00008A1D  8BF2  '..'
	cmp	ch,0x1			; 00008A1F  80FD01  '...'
	jnz	x8a27			; 00008A22  7503  'u.'
	dec	word [bp+0x2]		; 00008A24  FF4E02  '.N.'
x8a27:	cmp	ah,0x0			; 00008A27  80FC00  '...'
	jz	x8a30			; 00008A2A  7404  't.'
	dec	di			; 00008A2C  4F  'O'
	dec	di			; 00008A2D  4F  'O'
	jmp	short x8a32		; 00008A2E  EB02  '..'

x8a30:	inc	di			; 00008A30  47  'G'
	inc	di			; 00008A31  47  'G'
x8a32:	ret				; 00008A32  C3  '.'

	mov	si,dx			; 00008A33  8BF2  '..'
	cmp	si,di			; 00008A35  3BF7  ';.'
	jnz	0x8a59			; 00008A37  7520  'u '
	cmp	ch,0x1			; 00008A39  80FD01  '...'
	jnz	x8a44			; 00008A3C  7506  'u.'
	dec	word [bp+0x2]		; 00008A3E  FF4E02  '.N.'
	dec	word [bp+0x2]		; 00008A41  FF4E02  '.N.'
x8a44:	cmp	ah,0x0			; 00008A44  80FC00  '...'
	jz	x8a51			; 00008A47  7408  't.'
	dec	di			; 00008A49  4F  'O'
	dec	di			; 00008A4A  4F  'O'
	dec	si			; 00008A4B  4E  'N'
	dec	si			; 00008A4C  4E  'N'
	dec	si			; 00008A4D  4E  'N'
	dec	si			; 00008A4E  4E  'N'
	jmp	short x8a82		; 00008A4F  EB31  '.1'

x8a51:	inc	di			; 00008A51  47  'G'
	inc	di			; 00008A52  47  'G'
	inc	si			; 00008A53  46  'F'
	inc	si			; 00008A54  46  'F'
	inc	si			; 00008A55  46  'F'
	inc	si			; 00008A56  46  'F'
	jmp	short x8a82		; 00008A57  EB29  '.)'

	cmp	si,byte -0x1		; 00008A59  83FEFF  '...'
	jnz	x8a6b			; 00008A5C  750D  'u',0x0D
	cmp	ah,0x0			; 00008A5E  80FC00  '...'
	jz	x8a67			; 00008A61  7404  't.'
	dec	si			; 00008A63  4E  'N'
	dec	si			; 00008A64  4E  'N'
	jmp	short x8a82		; 00008A65  EB1B  '..'

x8a67:	inc	si			; 00008A67  46  'F'
	inc	si			; 00008A68  46  'F'
	jmp	short x8a82		; 00008A69  EB17  '..'

x8a6b:	cmp	ch,0x1			; 00008A6B  80FD01  '...'
	jnz	x8a73			; 00008A6E  7503  'u.'
	dec	word [bp+0x2]		; 00008A70  FF4E02  '.N.'
x8a73:	cmp	ah,0x0			; 00008A73  80FC00  '...'
	jz	x8a7e			; 00008A76  7406  't.'
	dec	di			; 00008A78  4F  'O'
	dec	di			; 00008A79  4F  'O'
	dec	si			; 00008A7A  4E  'N'
	dec	si			; 00008A7B  4E  'N'
	jmp	short x8a82		; 00008A7C  EB04  '..'

x8a7e:	inc	di			; 00008A7E  47  'G'
	inc	di			; 00008A7F  47  'G'
	inc	si			; 00008A80  46  'F'
	inc	si			; 00008A81  46  'F'
x8a82:	ret				; 00008A82  C3  '.'

	mov	si,dx			; 00008A83  8BF2  '..'
	cmp	ah,0x0			; 00008A85  80FC00  '...'
	jz	x8a8e			; 00008A88  7404  't.'
	dec	si			; 00008A8A  4E  'N'
	dec	si			; 00008A8B  4E  'N'
	jmp	short x8a90		; 00008A8C  EB02  '..'

x8a8e:	inc	si			; 00008A8E  46  'F'
	inc	si			; 00008A8F  46  'F'
x8a90:	ret				; 00008A90  C3  '.'

	mov	si,dx			; 00008A91  8BF2  '..'
	cmp	si,di			; 00008A93  3BF7  ';.'
	jnz	x8aac			; 00008A95  7515  'u.'
	cmp	ah,0x0			; 00008A97  80FC00  '...'
	jz	x8aa4			; 00008A9A  7408  't.'
	dec	di			; 00008A9C  4F  'O'
	dec	di			; 00008A9D  4F  'O'
	dec	di			; 00008A9E  4F  'O'
	dec	di			; 00008A9F  4F  'O'
	dec	si			; 00008AA0  4E  'N'
	dec	si			; 00008AA1  4E  'N'
	jmp	short x8ad5		; 00008AA2  EB31  '.1'

x8aa4:	inc	di			; 00008AA4  47  'G'
	inc	di			; 00008AA5  47  'G'
	inc	di			; 00008AA6  47  'G'
	inc	di			; 00008AA7  47  'G'
	inc	si			; 00008AA8  46  'F'
	inc	si			; 00008AA9  46  'F'
	jmp	short x8ad5		; 00008AAA  EB29  '.)'

x8aac:	cmp	si,byte -0x1		; 00008AAC  83FEFF  '...'
	jnz	x8ac2			; 00008AAF  7511  'u.'
	cmp	ah,0x0			; 00008AB1  80FC00  '...'
	jz	x8abc			; 00008AB4  7406  't.'
	dec	si			; 00008AB6  4E  'N'
	dec	si			; 00008AB7  4E  'N'
	dec	di			; 00008AB8  4F  'O'
	dec	di			; 00008AB9  4F  'O'
	jmp	short x8ad5		; 00008ABA  EB19  '..'

x8abc:	inc	si			; 00008ABC  46  'F'
	inc	si			; 00008ABD  46  'F'
	inc	di			; 00008ABE  47  'G'
	inc	di			; 00008ABF  47  'G'
	jmp	short x8ad5		; 00008AC0  EB13  '..'

x8ac2:	cmp	ch,0x1			; 00008AC2  80FD01  '...'
	jnz	x8aca			; 00008AC5  7503  'u.'
	inc	word [bp+0x2]		; 00008AC7  FF4602  '.F.'
x8aca:	cmp	ah,0x0			; 00008ACA  80FC00  '...'
	jz	x8ad3			; 00008ACD  7404  't.'
	dec	di			; 00008ACF  4F  'O'
	dec	di			; 00008AD0  4F  'O'
	jmp	short x8ad5		; 00008AD1  EB02  '..'

x8ad3:	inc	di			; 00008AD3  47  'G'
	inc	di			; 00008AD4  47  'G'
x8ad5:	ret				; 00008AD5  C3  '.'

	mov	si,dx			; 00008AD6  8BF2  '..'
	cmp	ah,0x0			; 00008AD8  80FC00  '...'
	jz	x8ae1			; 00008ADB  7404  't.'
	dec	di			; 00008ADD  4F  'O'
	dec	di			; 00008ADE  4F  'O'
	jmp	short x8ae3		; 00008ADF  EB02  '..'

x8ae1:	inc	di			; 00008AE1  47  'G'
	inc	di			; 00008AE2  47  'G'
x8ae3:	ret				; 00008AE3  C3  '.'

	mov	si,dx			; 00008AE4  8BF2  '..'
	cmp	ch,0x1			; 00008AE6  80FD01  '...'
	jnz	x8aee			; 00008AE9  7503  'u.'
	dec	word [bp+0x2]		; 00008AEB  FF4E02  '.N.'
x8aee:	cmp	ah,0x0			; 00008AEE  80FC00  '...'
	jz	x8af7			; 00008AF1  7404  't.'
	dec	di			; 00008AF3  4F  'O'
	dec	di			; 00008AF4  4F  'O'
	jmp	short x8af9		; 00008AF5  EB02  '..'

x8af7:	inc	di			; 00008AF7  47  'G'
	inc	di			; 00008AF8  47  'G'
x8af9:	ret				; 00008AF9  C3  '.'

	mov	si,dx			; 00008AFA  8BF2  '..'
	cmp	ah,0x0			; 00008AFC  80FC00  '...'
	jz	x8b05			; 00008AFF  7404  't.'
	dec	si			; 00008B01  4E  'N'
	dec	si			; 00008B02  4E  'N'
	jmp	short x8b07		; 00008B03  EB02  '..'

x8b05:	inc	si			; 00008B05  46  'F'
	inc	si			; 00008B06  46  'F'
x8b07:	ret				; 00008B07  C3  '.'

	std				; 00008B08  FD  '.'
	mov	bl,[0x4a]		; 00008B09  8A1E4A00  '..J.'
	mov	dx,[bp+0x2]		; 00008B0D  8B5602  '.V.'
	cmp	dl,bl			; 00008B10  3AD3  ':.'
	jc	x8b18			; 00008B12  7204  'r.'
	mov	dl,bl			; 00008B14  8AD3  '..'
	dec	dl			; 00008B16  FECA  '..'
x8b18:	test	ah,0x1			; 00008B18  F6C401  '...'
	jz	x8b29			; 00008B1B  740C  't.'
	xchg	cx,dx			; 00008B1D  87CA  '..'
	sub	dh,ch			; 00008B1F  2AF5  '*.'
	sub	dl,cl			; 00008B21  2AD1  '*.'
	neg	dh			; 00008B23  F6DE  '..'
	neg	dl			; 00008B25  F6DA  '..'
	jmp	short x8b2d		; 00008B27  EB04  '..'

x8b29:	sub	dh,ch			; 00008B29  2AF5  '*.'
	sub	dl,cl			; 00008B2B  2AD1  '*.'
x8b2d:	inc	dh			; 00008B2D  FEC6  '..'
	inc	dl			; 00008B2F  FEC2  '..'
	call	x8da9			; 00008B31  E87502  '.u.'
	jz	x8b57			; 00008B34  7421  't!'
	cmp	byte [0x49],0x2		; 00008B36  803E490002  '.>I..'
	jc	x8b65			; 00008B3B  7228  'r('
	cmp	byte [0x49],0x3		; 00008B3D  803E490003  '.>I..'
	ja	x8b57			; 00008B42  7713  'w.'
	push	ax			; 00008B44  50  'P'
	push	dx			; 00008B45  52  'R'
	mov	dx,[0x63]		; 00008B46  8B166300  '..c.'
	add	dx,byte +0x4		; 00008B4A  83C204  '...'
	mov	al,[0x65]		; 00008B4D  A06500  '.e.'
	and	al,0xf7			; 00008B50  24F7  '$.'
	out	dx,al			; 00008B52  EE  '.'
	pop	dx			; 00008B53  5A  'Z'
	pop	ax			; 00008B54  58  'X'
	jmp	short x8b65		; 00008B55  EB0E  '..'

x8b57:	cmp	byte [0x49],0x4		; 00008B57  803E490004  '.>I..'
	jc	x8b65			; 00008B5C  7207  'r.'
	cmp	byte [0x49],0x7		; 00008B5E  803E490007  '.>I..'
	jnz	x8be1			; 00008B63  757C  'u|'
x8b65:	mov	bp,bx			; 00008B65  8BEB  '..'
	sub	bp,dx			; 00008B67  2BEA  '+.'
	and	bp,0xff			; 00008B69  81E5FF00  '....'
	shl	bp,1			; 00008B6D  D1E5  '..'
	mov	di,ax			; 00008B6F  8BF8  '..'
	mov	al,ch			; 00008B71  8AC5  '..'
	mul	bl			; 00008B73  F6E3  '..'
	xor	ch,ch			; 00008B75  32ED  '2.'
	add	ax,cx			; 00008B77  03C1  '..'
	shl	ax,1			; 00008B79  D1E0  '..'
	add	ax,[0x4e]		; 00008B7B  03064E00  '..N.'
	xchg	ax,di			; 00008B7F  97  '.'
	mov	si,es			; 00008B80  8CC6  '..'
	mov	ds,si			; 00008B82  8EDE  '..'
	mov	si,ax			; 00008B84  8BF0  '..'
	mul	bl			; 00008B86  F6E3  '..'
	test	si,0x100		; 00008B88  F7C60001  '....'
	jz	x8b92			; 00008B8C  7404  't.'
	neg	ax			; 00008B8E  F7D8  '..'
	neg	bp			; 00008B90  F7DD  '..'
x8b92:	shl	ax,1			; 00008B92  D1E0  '..'
	add	ax,di			; 00008B94  03C7  '..'
	xchg	ax,si			; 00008B96  96  '.'
	or	al,al			; 00008B97  0AC0  0x0A,'.'
	jz	x8baf			; 00008B99  7414  't.'
	cmp	al,dh			; 00008B9B  3AC6  ':.'
	jnc	x8baf			; 00008B9D  7310  's.'
	sub	dh,al			; 00008B9F  2AF0  '*.'
x8ba1:	mov	cl,dl			; 00008BA1  8ACA  '..'
	rep	movsw			; 00008BA3  F3A5  '..'
	add	si,bp			; 00008BA5  03F5  '..'
	add	di,bp			; 00008BA7  03FD  '..'
	dec	dh			; 00008BA9  FECE  '..'
	jnz	x8ba1			; 00008BAB  75F4  'u.'
	mov	dh,al			; 00008BAD  8AF0  '..'
x8baf:	mov	ah,bh			; 00008BAF  8AE7  '..'
	mov	al,0x20			; 00008BB1  B020  '. '
x8bb3:	mov	cl,dl			; 00008BB3  8ACA  '..'
	rep	stosw			; 00008BB5  F3AB  '..'
	add	di,bp			; 00008BB7  03FD  '..'
	dec	dh			; 00008BB9  FECE  '..'
	jnz	x8bb3			; 00008BBB  75F6  'u.'
	mov	ax,0x40			; 00008BBD  B84000  '.@.'
	mov	ds,ax			; 00008BC0  8ED8  '..'
	call	x8da9			; 00008BC2  E8E401  '...'
	jz	x8be0			; 00008BC5  7419  't.'
	cmp	byte [0x49],0x2		; 00008BC7  803E490002  '.>I..'
	jc	x8be0			; 00008BCC  7212  'r.'
	cmp	byte [0x49],0x3		; 00008BCE  803E490003  '.>I..'
	ja	x8be0			; 00008BD3  770B  'w.'
	mov	dx,[0x63]		; 00008BD5  8B166300  '..c.'
	add	dx,byte +0x4		; 00008BD9  83C204  '...'
	mov	al,[0x65]		; 00008BDC  A06500  '.e.'
	out	dx,al			; 00008BDF  EE  '.'
x8be0:	ret				; 00008BE0  C3  '.'

x8be1:	cmp	byte [0x49],0x6		; 00008BE1  803E490006  '.>I..'
	jz	x8bec			; 00008BE6  7404  't.'
	shl	cl,1			; 00008BE8  D0E1  '..'
	shl	dl,1			; 00008BEA  D0E2  '..'
x8bec:	mov	bp,0x50			; 00008BEC  BD5000  '.P.'
	push	dx			; 00008BEF  52  'R'
	mov	di,ax			; 00008BF0  8BF8  '..'
	mov	al,ch			; 00008BF2  8AC5  '..'
	xor	ch,ch			; 00008BF4  32ED  '2.'
	cbw				; 00008BF6  98  '.'
	mov	dx,0x140		; 00008BF7  BA4001  '.@.'
	mul	dx			; 00008BFA  F7E2  '..'
	add	ax,cx			; 00008BFC  03C1  '..'
	add	ax,[0x4e]		; 00008BFE  03064E00  '..N.'
	xchg	ax,di			; 00008C02  97  '.'
	mov	si,ax			; 00008C03  8BF0  '..'
	cbw				; 00008C05  98  '.'
	mov	dx,0x140		; 00008C06  BA4001  '.@.'
	mul	dx			; 00008C09  F7E2  '..'
	test	si,0x100		; 00008C0B  F7C60001  '....'
	jz	x8c21			; 00008C0F  7410  't.'
	neg	ax			; 00008C11  F7D8  '..'
	neg	bp			; 00008C13  F7DD  '..'
	add	di,0x20f0		; 00008C15  81C7F020  '... '
	cmp	byte [0x49],0x6		; 00008C19  803E490006  '.>I..'
	jz	x8c21			; 00008C1E  7401  't.'
	inc	di			; 00008C20  47  'G'
x8c21:	add	ax,di			; 00008C21  03C7  '..'
	mov	dx,es			; 00008C23  8CC2  '..'
	mov	ds,dx			; 00008C25  8EDA  '..'
	xchg	ax,si			; 00008C27  96  '.'
	pop	dx			; 00008C28  5A  'Z'
	push	bx			; 00008C29  53  'S'
	mov	bx,di			; 00008C2A  8BDF  '..'
	or	al,al			; 00008C2C  0AC0  0x0A,'.'
	jz	x8c60			; 00008C2E  7430  't0'
	cmp	al,dh			; 00008C30  3AC6  ':.'
	jnc	x8c60			; 00008C32  732C  's,'
	sub	dh,al			; 00008C34  2AF0  '*.'
	push	ax			; 00008C36  50  'P'
	shl	dh,1			; 00008C37  D0E6  '..'
	shl	dh,1			; 00008C39  D0E6  '..'
	mov	ax,si			; 00008C3B  8BC6  '..'
x8c3d:	mov	si,ax			; 00008C3D  8BF0  '..'
	mov	di,bx			; 00008C3F  8BFB  '..'
	mov	cl,dl			; 00008C41  8ACA  '..'
	rep	movsb			; 00008C43  F3A4  '..'
	mov	si,ax			; 00008C45  8BF0  '..'
	mov	di,bx			; 00008C47  8BFB  '..'
	xor	si,0x2000		; 00008C49  81F60020  '... '
	xor	di,0x2000		; 00008C4D  81F70020  '... '
	mov	cl,dl			; 00008C51  8ACA  '..'
	rep	movsb			; 00008C53  F3A4  '..'
	add	ax,bp			; 00008C55  03C5  '..'
	add	bx,bp			; 00008C57  03DD  '..'
	dec	dh			; 00008C59  FECE  '..'
	jnz	x8c3d			; 00008C5B  75E0  'u.'
	pop	ax			; 00008C5D  58  'X'
	mov	dh,al			; 00008C5E  8AF0  '..'
x8c60:	shl	dh,1			; 00008C60  D0E6  '..'
	shl	dh,1			; 00008C62  D0E6  '..'
	pop	ax			; 00008C64  58  'X'
	mov	al,ah			; 00008C65  8AC4  '..'
x8c67:	mov	di,bx			; 00008C67  8BFB  '..'
	mov	cl,dl			; 00008C69  8ACA  '..'
	rep	stosb			; 00008C6B  F3AA  '..'
	mov	di,bx			; 00008C6D  8BFB  '..'
	xor	di,0x2000		; 00008C6F  81F70020  '... '
	mov	cl,dl			; 00008C73  8ACA  '..'
	rep	stosb			; 00008C75  F3AA  '..'
	add	bx,bp			; 00008C77  03DD  '..'
	dec	dh			; 00008C79  FECE  '..'
	jnz	x8c67			; 00008C7B  75EA  'u.'
	ret				; 00008C7D  C3  '.'

x8c7e:	push	ds			; 00008C7E  1E  '.'
	xor	ebp,ebp			; 00008C7F  6633ED  'f3.'
x8c82:	mov	eax,0x1			; 00008C82  66B801000000  'f.....'
	xor	eax,ebp			; 00008C88  6633C5  'f3.'
	mov	cx,0x4000		; 00008C8B  B90040  '..@'
	xor	di,di			; 00008C8E  33FF  '3.'
	sahf				; 00008C90  9E  '.'
x8c91:	rcl	eax,1			; 00008C91  66D1D0  'f..'
	stosd				; 00008C94  66AB  'f.'
	loop	x8c91			; 00008C96  E2F9  '..'
	in	al,0x61			; 00008C98  E461  '.a'
	or	al,0xc			; 00008C9A  0C0C  '..'
	out	0x61,al			; 00008C9C  E661  '.a'
	and	al,0xf3			; 00008C9E  24F3  '$.'
	out	0x61,al			; 00008CA0  E661  '.a'
	mov	ebx,0x1			; 00008CA2  66BB01000000  'f.....'
	xor	ebx,ebp			; 00008CA8  6633DD  'f3.'
	mov	eax,ebp			; 00008CAB  668BC5  'f..'
	push	es			; 00008CAE  06  '.'
	pop	ds			; 00008CAF  1F  '.'
	xor	si,si			; 00008CB0  33F6  '3.'
x8cb2:	mov	cx,0x4000		; 00008CB2  B90040  '..@'
x8cb5:	sahf				; 00008CB5  9E  '.'
	rcl	ebx,1			; 00008CB6  66D1D3  'f..'
	lahf				; 00008CB9  9F  '.'
	lodsb				; 00008CBA  AC  '.'
	inc	si			; 00008CBB  46  'F'
	inc	si			; 00008CBC  46  'F'
	inc	si			; 00008CBD  46  'F'
	xor	al,bl			; 00008CBE  32C3  '2.'
	loope	x8cb5			; 00008CC0  E1F3  '..'
	jnz	x8ce7			; 00008CC2  7523  'u#'
	in	al,0x61			; 00008CC4  E461  '.a'
	test	al,0xc0			; 00008CC6  A8C0  '..'
	mov	al,0x0			; 00008CC8  B000  '..'
	jnz	x8ce7			; 00008CCA  751B  'u.'
	mov	cl,0x9			; 00008CCC  B109  '..'
	sahf				; 00008CCE  9E  '.'
	rcl	ebx,cl			; 00008CCF  66D3D3  'f..'
	inc	si			; 00008CD2  46  'F'
	cmp	si,byte +0x4		; 00008CD3  83FE04  '...'
	jc	x8cb2			; 00008CD6  72DA  'r.'
	sahf				; 00008CD8  9E  '.'
	mov	cl,0x1f			; 00008CD9  B11F  '..'
	rcl	ebx,cl			; 00008CDB  66D3D3  'f..'
	lahf				; 00008CDE  9F  '.'
	dec	ebp			; 00008CDF  664D  'fM'
	jpe	x8c82			; 00008CE1  7A9F  'z.'
	pop	ds			; 00008CE3  1F  '.'
	xor	ax,ax			; 00008CE4  33C0  '3.'
	ret				; 00008CE6  C3  '.'

x8ce7:	mov	byte [si],0x0		; 00008CE7  C60400  '...'
	push	ax			; 00008CEA  50  'P'
	in	al,0x61			; 00008CEB  E461  '.a'
	or	al,0xc			; 00008CED  0C0C  '..'
	out	0x61,al			; 00008CEF  E661  '.a'
	and	al,0xf3			; 00008CF1  24F3  '$.'
	out	0x61,al			; 00008CF3  E661  '.a'
	pop	cx			; 00008CF5  59  'Y'
	mov	dx,si			; 00008CF6  8BD6  '..'
	pop	ds			; 00008CF8  1F  '.'
	stc				; 00008CF9  F9  '.'
	ret				; 00008CFA  C3  '.'

	call	x8d30			; 00008CFB  E83200  '.2.'
	mov	al,[es:di]		; 00008CFE  268A05  '&..'
	not	bh			; 00008D01  F6D7  '..'
	and	al,bh			; 00008D03  22C7  '".'
	shr	al,cl			; 00008D05  D2E8  '..'
	mov	[bp+0x0],al		; 00008D07  884600  '.F.'
	ret				; 00008D0A  C3  '.'

	call	x8d30			; 00008D0B  E82200  '.".'
	cbw				; 00008D0E  98  '.'
	and	al,bl			; 00008D0F  22C3  '".'
	shl	al,cl			; 00008D11  D2E0  '..'
	sar	ah,1			; 00008D13  D0FC  '..'
	jns	x8d22			; 00008D15  790B  'y.'
	xor	[es:di],al		; 00008D17  263005  '&0.'
	mov	ah,[0x49]		; 00008D1A  8A264900  '.&I.'
	mov	[bp+0x1],ah		; 00008D1E  886601  '.f.'
	ret				; 00008D21  C3  '.'

x8d22:	and	bh,[es:di]		; 00008D22  26223D  '&"='
	or	al,bh			; 00008D25  0AC7  0x0A,'.'
	stosb				; 00008D27  AA  '.'
	mov	ah,[0x49]		; 00008D28  8A264900  '.&I.'
	mov	[bp+0x1],ah		; 00008D2C  886601  '.f.'
	ret				; 00008D2F  C3  '.'

x8d30:	xor	di,di			; 00008D30  33FF  '3.'
	mov	dx,[bp+0x2]		; 00008D32  8B5602  '.V.'
	shr	dx,1			; 00008D35  D1EA  '..'
	jnc	x8d3c			; 00008D37  7303  's.'
	mov	di,0x2000		; 00008D39  BF0020  '.. '
x8d3c:	shl	dx,1			; 00008D3C  D1E2  '..'
	shl	dx,1			; 00008D3E  D1E2  '..'
	shl	dx,1			; 00008D40  D1E2  '..'
	shl	dx,1			; 00008D42  D1E2  '..'
	add	di,dx			; 00008D44  03FA  '..'
	shl	dx,1			; 00008D46  D1E2  '..'
	shl	dx,1			; 00008D48  D1E2  '..'
	add	di,dx			; 00008D4A  03FA  '..'
	mov	bh,0xfe			; 00008D4C  B7FE  '..'
	cmp	byte [0x49],0x6		; 00008D4E  803E490006  '.>I..'
	jnc	x8d59			; 00008D53  7304  's.'
	rcl	cx,1			; 00008D55  D1D1  '..'
	shl	bh,1			; 00008D57  D0E7  '..'
x8d59:	mov	bl,bh			; 00008D59  8ADF  '..'
	not	bl			; 00008D5B  F6D3  '..'
	mov	dx,cx			; 00008D5D  8BD1  '..'
	shr	dx,1			; 00008D5F  D1EA  '..'
	shr	dx,1			; 00008D61  D1EA  '..'
	shr	dx,1			; 00008D63  D1EA  '..'
	not	cl			; 00008D65  F6D1  '..'
	and	cl,0x7			; 00008D67  80E107  '...'
	rol	bh,cl			; 00008D6A  D2C7  '..'
	add	di,dx			; 00008D6C  03FA  '..'
	ret				; 00008D6E  C3  '.'

x8d6f:	mov	al,0xd			; 00008D6F  B00D  '.',0x0D
	call	x8d78			; 00008D71  E80400  '...'
	jc	x8d8c			; 00008D74  7216  'r.'
	mov	al,0xa			; 00008D76  B00A  '.',0x0A

x8d78:	push	dx			; 00008D78  52  'R'
	xor	dx,dx			; 00008D79  33D2  '3.'
	test	al,al			; 00008D7B  84C0  '..'
	jnz	x8d81			; 00008D7D  7502  'u.'
	mov	al,0x20			; 00008D7F  B020  '. '
x8d81:	mov	ah,0x0			; 00008D81  B400  '..'
	int	0x17			; 00008D83  CD17  '..'
	test	ah,0x1			; 00008D85  F6C401  '...'
	jz	x8d8b			; 00008D88  7401  't.'
	stc				; 00008D8A  F9  '.'
x8d8b:	pop	dx			; 00008D8B  5A  'Z'
x8d8c:	ret				; 00008D8C  C3  '.'

x8d8d:	dec	di			; 00008D8D  4F  'O'
	mov	cx,di			; 00008D8E  8BCF  '..'
x8d90:	push	cx			; 00008D90  51  'Q'
	mov	cx,0x64			; 00008D91  B96400  '.d.'
x8d94:	call	xe944			; 00008D94  E8AD5B  '..['
	jz	x8d9f			; 00008D97  7406  't.'
	loop	x8d94			; 00008D99  E2F9  '..'
	pop	cx			; 00008D9B  59  'Y'
	stc				; 00008D9C  F9  '.'
	jmp	short x8da8		; 00008D9D  EB09  '..'

x8d9f:	call	x919a			; 00008D9F  E8F803  '...'
	lodsb				; 00008DA2  AC  '.'
	out	dx,al			; 00008DA3  EE  '.'
	pop	cx			; 00008DA4  59  'Y'
	loop	x8d90			; 00008DA5  E2E9  '..'
	clc				; 00008DA7  F8  '.'
x8da8:	ret				; 00008DA8  C3  '.'

x8da9:	test	byte [0x87],0x4		; 00008DA9  F606870004  '.....'
	ret				; 00008DAE  C3  '.'

	db	0xFF			; 00008DAF  FF  '.'
	jmp	0xf000:0x8e31		; 00008DB0  EA318E00F0  '.1...'

	push	ax			; 00008DB5  50  'P'
	push	si			; 00008DB6  56  'V'
	push	ds			; 00008DB7  1E  '.'
	mov	ax,0x40			; 00008DB8  B84000  '.@.'
	mov	ds,ax			; 00008DBB  8ED8  '..'
	mov	ax,0x3			; 00008DBD  B80300  '...'
	call	xd3b4			; 00008DC0  E8F145  '..E'
	pop	ds			; 00008DC3  1F  '.'
	pop	si			; 00008DC4  5E  '^'
	pop	ax			; 00008DC5  58  'X'
	iret				; 00008DC6  CF  '.'

x8dc7:	mov	bp,bx			; 00008DC7  8BEB  '..'
	add	bx,byte +0x10		; 00008DC9  83C310  '...'
	cli				; 00008DCC  FA  '.'
	mov	ss,bx			; 00008DCD  8ED3  '..'
	mov	sp,cx			; 00008DCF  8BE1  '..'
	mov	es,cx			; 00008DD1  8EC1  '..'
	mov	cx,0x420		; 00008DD3  B92004  '. .'
	add	cx,bx			; 00008DD6  03CB  '..'
	mov	ss,cx			; 00008DD8  8ED1  '..'
	mov	cx,0x49			; 00008DDA  B94900  '.I.'
	cld				; 00008DDD  FC  '.'
	mov	di,0x300		; 00008DDE  BF0003  '...'
	mov	si,0x8eea		; 00008DE1  BEEA8E  '...'
	cs	rep movsw		; 00008DE4  F32EA5  '...'
	mov	ax,[0x250]		; 00008DE7  A15002  '.P.'
	cmp	ax,[0x258]		; 00008DEA  3B065802  ';.X.'
	jnz	x8df3			; 00008DEE  7503  'u.'
	mov	[0x300],al		; 00008DF0  A20003  '...'
x8df3:	cmp	ax,0x157		; 00008DF3  3D5701  '=W.'
	jnz	x8e02			; 00008DF6  750A  'u',0x0A
	mov	di,0x24			; 00008DF8  BF2400  '.$.'
	mov	ax,0xe987		; 00008DFB  B887E9  '...'
	stosw				; 00008DFE  AB  '.'
	mov	ax,cs			; 00008DFF  8CC8  '..'
	stosw				; 00008E01  AB  '.'
x8e02:	mov	di,0x6c			; 00008E02  BF6C00  '.l.'
	mov	ax,0x8db5		; 00008E05  B8B58D  '...'
	stosw				; 00008E08  AB  '.'
	mov	ax,cs			; 00008E09  8CC8  '..'
	stosw				; 00008E0B  AB  '.'
	mov	ax,0xff53		; 00008E0C  B853FF  '.S.'
	stosw				; 00008E0F  AB  '.'
	mov	ax,cs			; 00008E10  8CC8  '..'
	stosw				; 00008E12  AB  '.'
	mov	es,bp			; 00008E13  8EC5  '..'
	les	ax,[es:0x12]		; 00008E15  26C4061200  '&....'
	mov	[0x90],ax		; 00008E1A  A39000  '...'
	mov	[0x92],es		; 00008E1D  8C069200  '....'
	sti				; 00008E21  FB  '.'
	mov	ds,sp			; 00008E22  8EDC  '..'
	push	bx			; 00008E24  53  'S'
x8e25:	mov	di,0x301		; 00008E25  BF0103  '...'
	mov	dx,0x385		; 00008E28  BA8503  '...'
	mov	ah,0xf			; 00008E2B  B40F  '..'
	int	0x21			; 00008E2D  CD21  '.!'
	jmp	short x8e40		; 00008E2F  EB0F  '..'

	xor	cx,cx			; 00008E31  33C9  '3.'
	mov	ds,cx			; 00008E33  8ED9  '..'
	mov	bx,[0x252]		; 00008E35  8B1E5202  '..R.'
	test	bx,bx			; 00008E39  85DB  '..'
	jnz	x8dc7			; 00008E3B  758A  'u.'
	jmp	xe7c0			; 00008E3D  E98059  '..Y'

x8e40:	or	al,al			; 00008E40  0AC0  0x0A,'.'
	jz	x8e72			; 00008E42  742E  't.'
x8e44:	mov	dx,0x302		; 00008E44  BA0203  '...'
	mov	ah,0x9			; 00008E47  B409  '..'
	int	0x21			; 00008E49  CD21  '.!'
	mov	ax,0xc01		; 00008E4B  B8010C  '...'
	int	0x21			; 00008E4E  CD21  '.!'
	cmp	byte [di],0x0		; 00008E50  803D00  '.=.'
	jnz	x8e62			; 00008E53  750D  'u',0x0D
	mov	byte [di],0xff		; 00008E55  C605FF  '...'
	cmp	al,0xd			; 00008E58  3C0D  '<',0x0D
	jnz	x8e62			; 00008E5A  7506  'u.'
	mov	ah,0x19			; 00008E5C  B419  '..'
	int	0x21			; 00008E5E  CD21  '.!'
	add	al,0x41			; 00008E60  0441  '.A'
x8e62:	and	al,0x5f			; 00008E62  245F  '$_'
	cmp	al,0x41			; 00008E64  3C41  '<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  BAF601	; select the DRVHD (Drive/Head) register
	mov	al,0xa0			; 000091B3  B0A0	; select Head 0 (bits 0-3) and Drive 0 (bit 4)
	out	dx,al			; 000091B5  EE		; write register
	call	xc5af			; 000091B6  E8F633	; perform some I/O to the FDR (Fixed Disk Register), port 0x3F6
	call	x83f9			; 000091B9  E83DF2	; TBD (writes 0xA0, 0xA1, 0xA2, 0xA3, 0xA6 to port 0x84)
	mov	al,0xa8			; 000091BC  B0A8
	out	0x84,al			; 000091BE  E684
	sti				; 000091C0  FB
	mov	dx,0x3f4		; 000091C1  BAF403	; select the REG_STATUS (Main Status Register) of the FDC
	in	al,dx			; 000091C4  EC		; read register
	std				; 000091C5  FD
	std				; 000091C6  FD
	std				; 000091C7  FD
	std				; 000091C8  FD
	std				; 000091C9  FD
	std				; 000091CA  FD
	cld				; 000091CB  FC
	and	al,0xf			; 000091CC  240F	; keep only the BUSY bits for drives A,B,C,D
	or	al,al			; 000091CE  0AC0	; are any of those set?
	jz	x91d5			; 000091D0  7403	; no
	jmp	short x922a		; 000091D2  EB56	; yes
	nop				; 000091D4  90

x91d5:	sub	sp,byte +0xd		; 000091D5  83EC0D
	mov	bp,sp			; 000091D8  8BEC
	xor	ax,ax			; 000091DA  33C0
	mov	ds,ax			; 000091DC  8ED8
	les	si,[0x78]		; 000091DE  C4367800
	mov	ax,0x40			; 000091E2  B84000
	mov	ds,ax			; 000091E5  8ED8
	mov	byte [MOTOR_COUNT],0xff	; 000091E7  C6064000FF
	call	xca03			; 000091EC  E81438
	mov	byte [bp+0x6],0x0	; 000091EF  C6460600
	mov	byte [bp+0x7],0x0	; 000091F3  C6460700
	call	x9293			; 000091F7  E89900	; this executes a lot of instructions, but no HDC ports are accessed
	mov	byte [bp+0x6],0x1	; 000091FA  C6460601
	call	x9293			; 000091FE  E89200	; again, this executes a lot of instructions, but no HDC ports are accessed
	mov	byte [bp+0x5],0x0	; 00009201  C6460500
	call	xee9c			; 00009205  E8945C
	mov	al,0xaf			; 00009208  B0AF
	out	0x84,al			; 0000920A  E684
	mov	dx,0x3f2		; 0000920C  BAF203	; select the REG_OUTPUT (Digital Output Register) of the FDC
	mov	al,0xc			; 0000920F  B00C	; select the ENABLE and INT_ENABLE bits of REG_OUTPUT
	out	dx,al			; 00009211  EE		; update register
	and	byte [MOTOR_STATUS],0xf0; 00009212  80263F00F0
	add	sp,byte +0xd		; 00009217  83C40D
	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,'$'

;
; WAIT FOR RTC SECONDS TO *NOT* BE 0xFF
;
x9380:	mov	bx,0x2			; 00009380  BB0200  '...'	; WAIT BEGIN
	mov	cx,0xfde8		; 00009383  B9E8FD  '...'
x9386:	mov	al,0x80			; 00009386  B080  '..'
	out	0x70,al			; 00009388  E670  '.p'
	in	al,0x71			; 0000938A  E471  '.q'
	cmp	al,0xff			; 0000938C  3CFF  '<.'
	jnz	x939a			; 0000938E  750A  'u',0x0A
	loop	x9386			; 00009390  E2F4  '..'
	dec	bx			; 00009392  4B  'K'
	jz	x939a			; 00009393  7405  't.'
	mov	cx,0xfde8		; 00009395  B9E8FD  '...'
	jmp	short x9386		; 00009398  EBEC  '..'
x939a:	jmp	bp			; 0000939A  FFE5  '..'		; WAIT END

	db	0xFF			; 0000939C  FF  '.'
	db	0xFF			; 0000939D  FF  '.'
	db	0xFF			; 0000939E  FF  '.'
	inc	word [bx+si]		; 0000939F  FF00  '..'

	times	255 dw 0x0000		; 000093A1 - 0000959D
	add	[di-0x75],dl		; 0000959F  00558B  '.U.'
	in	al,dx			; 000095A2  EC  '.'
	push	eax			; 000095A3  6650  'fP'
	push	bx			; 000095A5  53  'S'
	push	ds			; 000095A6  1E  '.'
	cld				; 000095A7  FC  '.'
	mov	al,0x1			; 000095A8  B001  '..'
	out	0x85,al			; 000095AA  E685  '..'
	mov	bx,[bp+0x4]		; 000095AC  8B5E04  '.^.'
	mov	ds,bx			; 000095AF  8EDB  '..'
	mov	bx,[bp+0x2]		; 000095B1  8B5E02  '.^.'
	mov	bx,[bx]			; 000095B4  8B1F  '..'
	cmp	bl,0xf0			; 000095B6  80FBF0  '...'
	jnz	x95c5			; 000095B9  750A  'u',0x0A
	mov	al,0x12			; 000095BB  B012  '..'
	out	0x84,al			; 000095BD  E684  '..'
	inc	word [bp+0x2]		; 000095BF  FF4602  '.F.'
	jmp	x976a			; 000095C2  E9A501  '...'

x95c5:	cmp	bx,0x50f		; 000095C5  81FB0F05  '....'
	jz	x95d7			; 000095C9  740C  't.'
	mov	al,0x14			; 000095CB  B014  '..'
	out	0x84,al			; 000095CD  E684  '..'
	pop	ds			; 000095CF  1F  '.'
	pop	bx			; 000095D0  5B  '['
	pop	eax			; 000095D1  6658  'fX'
	pop	bp			; 000095D3  5D  ']'
	jmp	x9bd0			; 000095D4  E9F905

x95d7:	mov	al,0x13			; 000095D7  B013  '..'
	out	0x84,al			; 000095D9  E684  '..'
	call	xf305			; 000095DB  E8275D  '.',0x27,']'
	push	cs			; 000095DE  0E  '.'
	pop	es			; 000095DF  07  '.'
	mov	di,0x13a0		; 000095E0  BFA013  '...'
	mov	bx,0x80			; 000095E3  BB8000  '...'
	mov	ds,bx			; 000095E6  8EDB  '..'
	mov	eax,cr0			; 000095E8  0F2000
	and	eax,0x80000011		; 000095EB  662511000080  'f%....'
	mov	cx,[0x6]		; 000095F1  8B0E0600  '....'
	and	ecx,0xf			; 000095F5  6681E10F000000  'f......'
	or	eax,ecx			; 000095FC  660BC1  'f..'
	stosd				; 000095FF  66AB  'f.'
	xor	eax,eax			; 00009601  6633C0  'f3.'
	mov	ax,[0x18]		; 00009604  A11800  '...'
	stosd				; 00009607  66AB  'f.'
	mov	ax,[0x1a]		; 00009609  A11A00  '...'
	stosd				; 0000960C  66AB  'f.'
	mov	si,0x26			; 0000960E  BE2600  '.&.'
	mov	cx,0x8			; 00009611  B90800  '...'
x9614:	lodsw				; 00009614  AD  '.'
	stosd				; 00009615  66AB  'f.'
	loop	x9614			; 00009617  E2FB  '..'
	mov	eax,dr6			; 00009619  0F21F0  '.!.'
	stosd				; 0000961C  66AB  'f.'
	mov	eax,dr7			; 0000961E  0F21F8  '.!.'
	stosd				; 00009621  66AB  'f.'
	xor	eax,eax			; 00009623  6633C0  'f3.'
	mov	ax,[0x16]		; 00009626  A11600  '...'
	stosd				; 00009629  66AB  'f.'
	mov	si,0x1c			; 0000962B  BE1C00  '...'
	lodsw				; 0000962E  AD  '.'
	stosd				; 0000962F  66AB  'f.'
	mov	ax,gs			; 00009631  8CE8  '..'
	stosd				; 00009633  66AB  'f.'
	mov	ax,fs			; 00009635  8CE0  '..'
	stosd				; 00009637  66AB  'f.'
	mov	cx,0x4			; 00009639  B90400  '...'
x963c:	lodsw				; 0000963C  AD  '.'
	stosd				; 0000963D  66AB  'f.'
	loop	x963c			; 0000963F  E2FB  '..'
	mov	si,0x60			; 00009641  BE6000  '.`.'
	xor	eax,eax			; 00009644  6633C0  'f3.'
	mov	ax,[si+0x2]		; 00009647  8B4402  '.D.'
	stosd				; 0000964A  66AB  'f.'
	mov	eax,[si]		; 0000964C  668B04  'f..'
	and	eax,0xffffff		; 0000964F  6625FFFFFF00  'f%....'
	stosd				; 00009655  66AB  'f.'
	xor	eax,eax			; 00009657  6633C0  'f3.'
	mov	ax,[si+0x4]		; 0000965A  8B4404  '.D.'
	stosd				; 0000965D  66AB  'f.'
	mov	si,0x5a			; 0000965F  BE5A00  '.Z.'
	xor	eax,eax			; 00009662  6633C0  'f3.'
	mov	ax,[si+0x2]		; 00009665  8B4402  '.D.'
	stosd				; 00009668  66AB  'f.'
	mov	eax,[si]		; 0000966A  668B04  'f..'
	and	eax,0xffffff		; 0000966D  6625FFFFFF00  'f%....'
	stosd				; 00009673  66AB  'f.'
	xor	eax,eax			; 00009675  6633C0  'f3.'
	mov	ax,[si+0x4]		; 00009678  8B4404  '.D.'
	stosd				; 0000967B  66AB  'f.'
	mov	si,0x4e			; 0000967D  BE4E00  '.N.'
	xor	eax,eax			; 00009680  6633C0  'f3.'
	mov	ax,[si+0x2]		; 00009683  8B4402  '.D.'
	stosd				; 00009686  66AB  'f.'
	mov	eax,[si]		; 00009688  668B04  'f..'
	and	eax,0xffffff		; 0000968B  6625FFFFFF00  'f%....'
	stosd				; 00009691  66AB  'f.'
	xor	eax,eax			; 00009693  6633C0  'f3.'
	mov	ax,[si+0x4]		; 00009696  8B4404  '.D.'
	stosd				; 00009699  66AB  'f.'
	mov	si,0x54			; 0000969B  BE5400  '.T.'
	xor	eax,eax			; 0000969E  6633C0  'f3.'
	mov	ax,[si+0x2]		; 000096A1  8B4402  '.D.'
	stosd				; 000096A4  66AB  'f.'
	mov	eax,[si]		; 000096A6  668B04  'f..'
	and	eax,0xffffff		; 000096A9  6625FFFFFF00  'f%....'
	stosd				; 000096AF  66AB  'f.'
	xor	eax,eax			; 000096B1  6633C0  'f3.'
	mov	ax,[si+0x4]		; 000096B4  8B4404  '.D.'
	stosd				; 000096B7  66AB  'f.'
	mov	eax,0x920000		; 000096B9  66B800009200  'f.....'
	stosd				; 000096BF  66AB  'f.'
	xor	eax,eax			; 000096C1  6633C0  'f3.'
	mov	ax,gs			; 000096C4  8CE8  '..'
	shl	ax,0x4			; 000096C6  C1E004  '...'
	stosd				; 000096C9  66AB  'f.'
	mov	ax,0xffff		; 000096CB  B8FFFF  '...'
	stosd				; 000096CE  66AB  'f.'
	mov	eax,0x920000		; 000096D0  66B800009200  'f.....'
	stosd				; 000096D6  66AB  'f.'
	xor	eax,eax			; 000096D8  6633C0  'f3.'
	mov	ax,fs			; 000096DB  8CE0  '..'
	shl	ax,0x4			; 000096DD  C1E004  '...'
	stosd				; 000096E0  66AB  'f.'
	mov	ax,0xffff		; 000096E2  B8FFFF  '...'
	stosd				; 000096E5  66AB  'f.'
	mov	si,0x48			; 000096E7  BE4800  '.H.'
	xor	eax,eax			; 000096EA  6633C0  'f3.'
	mov	ax,[si+0x2]		; 000096ED  8B4402  '.D.'
	stosd				; 000096F0  66AB  'f.'
	mov	eax,[si]		; 000096F2  668B04  'f..'
	and	eax,0xffffff		; 000096F5  6625FFFFFF00  'f%....'
	stosd				; 000096FB  66AB  'f.'
	xor	eax,eax			; 000096FD  6633C0  'f3.'
	mov	ax,[si+0x4]		; 00009700  8B4404  '.D.'
	stosd				; 00009703  66AB  'f.'
	mov	si,0x42			; 00009705  BE4200  '.B.'
	xor	eax,eax			; 00009708  6633C0  'f3.'
	mov	ax,[si+0x2]		; 0000970B  8B4402  '.D.'
	stosd				; 0000970E  66AB  'f.'
	mov	eax,[si]		; 00009710  668B04  'f..'
	and	eax,0xffffff		; 00009713  6625FFFFFF00  'f%....'
	stosd				; 00009719  66AB  'f.'
	xor	eax,eax			; 0000971B  6633C0  'f3.'
	mov	ax,[si+0x4]		; 0000971E  8B4404  '.D.'
	stosd				; 00009721  66AB  'f.'
	mov	si,0x3c			; 00009723  BE3C00  '.<.'
	xor	eax,eax			; 00009726  6633C0  'f3.'
	mov	ax,[si+0x2]		; 00009729  8B4402  '.D.'
	stosd				; 0000972C  66AB  'f.'
	mov	eax,[si]		; 0000972E  668B04  'f..'
	and	eax,0xffffff		; 00009731  6625FFFFFF00  'f%....'
	stosd				; 00009737  66AB  'f.'
	xor	eax,eax			; 00009739  6633C0  'f3.'
	mov	ax,[si+0x4]		; 0000973C  8B4404  '.D.'
	stosd				; 0000973F  66AB  'f.'
	mov	si,0x36			; 00009741  BE3600  '.6.'
	xor	eax,eax			; 00009744  6633C0  'f3.'
	mov	ax,[si+0x2]		; 00009747  8B4402  '.D.'
	stosd				; 0000974A  66AB  'f.'
	mov	eax,[si]		; 0000974C  668B04  'f..'
	and	eax,0xffffff		; 0000974F  6625FFFFFF00  'f%....'
	stosd				; 00009755  66AB  'f.'
	xor	eax,eax			; 00009757  6633C0  'f3.'
	mov	ax,[si+0x4]		; 0000975A  8B4404  '.D.'
	stosd				; 0000975D  66AB  'f.'
	call	xf2eb			; 0000975F  E8895B  '..['
	xor	edi,edi			; 00009762  6633FF  'f3.'
	mov	di,0x13a0		; 00009765  BFA013  '...'
	loadall				; 00009768  0F07  '..'
x976a:	pop	ds			; 0000976A  1F  '.'
	pop	bx			; 0000976B  5B  '['
	pop	eax			; 0000976C  6658  'fX'
	pop	bp			; 0000976E  5D  ']'
	iret				; 0000976F  CF  '.'

	test	ax,0xa99e		; 00009770  A99EA9  '...'
	sahf				; 00009773  9E  '.'
	mov	dx,[bx+0x978b]		; 00009774  8B978B97  '....'
	mov	[bx+0x979c],ss		; 00009778  8C979C97  '....'
	cmp	al,0x5			; 0000977C  3C05  '<.'
	ja	x978b			; 0000977E  770B  'w.'
	xor	ah,ah			; 00009780  32E4  '2.'
	mov	si,ax			; 00009782  8BF0  '..'
	shl	si,1			; 00009784  D1E6  '..'
	jmp	near [cs:si+0x9770]	; 00009786  2EFFA47097  '...p.'

x978b:	ret				; 0000978B  C3  '.'

	and	byte [0x87],0xef	; 0000978C  80268700EF  '.&...'
	or	bl,bl			; 00009791  0ADB  0x0A,'.'
	jnz	x979a			; 00009793  7505  'u.'
	or	byte [0x87],0x10	; 00009795  800E870010  '.....'
x979a:	clc				; 0000979A  F8  '.'
	ret				; 0000979B  C3  '.'

	push	dx			; 0000979C  52  'R'
	or	bl,bl			; 0000979D  0ADB  0x0A,'.'
	jz	x97b3			; 0000979F  7412  't.'
	mov	dx,[0x63]		; 000097A1  8B166300  '..c.'
	add	dx,byte +0x4		; 000097A5  83C204  '...'
	mov	al,[0x65]		; 000097A8  A06500  '.e.'
	or	al,0x8			; 000097AB  0C08  '..'
	mov	[0x65],al		; 000097AD  A26500  '.e.'
	out	dx,al			; 000097B0  EE  '.'
	jmp	short x97c3		; 000097B1  EB10  '..'

x97b3:	mov	dx,[0x63]		; 000097B3  8B166300  '..c.'
	add	dx,byte +0x4		; 000097B7  83C204  '...'
	mov	al,[0x65]		; 000097BA  A06500  '.e.'
	and	al,0xf7			; 000097BD  24F7  '$.'
	mov	[0x65],al		; 000097BF  A26500  '.e.'
	out	dx,al			; 000097C2  EE  '.'
x97c3:	pop	dx			; 000097C3  5A  'Z'
	clc				; 000097C4  F8  '.'
	ret				; 000097C5  C3  '.'

	xchg	ax,dx			; 000097C6  92  '.'
	cmpsb				; 000097C7  A6  '.'
	db	0x7E,0xAC
	retf	0xac			; 000097CA  CAAC00  '...'

	add	ah,0xd0			; 000097CD  80C4D0  '...'
	mov	dx,0x9a7		; 000097D0  BAA709  '...'
	mov	cx,[bx+si]		; 000097D3  8B08  '..'
	mov	bp,[di-0x3e]		; 000097D5  8B6DC2  '.m.'
	scasw				; 000097D8  AF  '.'
	cbw				; 000097D9  98  '.'
	fs	cbw			; 000097DA  6498  'd.'
	fsub	qword [bx+0x8d0b]	; 000097DC  DCA70B8D  '....'
	sti				; 000097E0  FB  '.'
	mov	[bp-0x2f],fs		; 000097E1  8C66D1  '.f.'
	jmp	near [bx+0x8322]	; 000097E4  FFA72283  '..".'

	and	al,[bp+di+0x8322]	; 000097E8  22832283  '".".'
	sub	al,[bp+di+0x977c]	; 000097EC  2A837C97  '*.|.'
x97f0:	pop	ax			; 000097F0  58  'X'
	pop	dx			; 000097F1  5A  'Z'
	pop	cx			; 000097F2  59  'Y'
	pop	bx			; 000097F3  5B  '['
	pop	si			; 000097F4  5E  '^'
	pop	di			; 000097F5  5F  '_'
	pop	bp			; 000097F6  5D  ']'
	pop	ds			; 000097F7  1F  '.'
	pop	es			; 000097F8  07  '.'
	iret				; 000097F9  CF  '.'

	times	11 db 0xFF		; 000097FA - 00009804
	jmp	x9bd0			; 00009805  E9C803

	times	74 db 0xFF		; 00009808 - 00009851
	jmp	x9c28			; 00009852  E9D303

	times	12 db 0xFF		; 00009855 - 00009860
	jmp	x9c1f			; 00009861  E9BB03  '...'

	call	x8da9			; 00009864  E842F5  '.B.'
	jz	x9899			; 00009867  7430  't0'
	cmp	byte [0x49],0x4		; 00009869  803E490004  '.>I..'
	jc	x987a			; 0000986E  720A  'r',0x0A
	cmp	byte [0x49],0x7		; 00009870  803E490007  '.>I..'
	jz	x987a			; 00009875  7403  't.'
	jmp	short x98f8		; 00009877  EB7F  '..'

	nop				; 00009879  90  '.'
x987a:	call	xc32b			; 0000987A  E8AE2A  '..*'
	mov	dx,[0x63]		; 0000987D  8B166300  '..c.'
	add	dx,byte +0x6		; 00009881  83C206  '...'
	mov	ah,al			; 00009884  8AE0  '..'
x9886:	in	al,dx			; 00009886  EC  '.'
	test	al,0x1			; 00009887  A801  '..'
	jnz	x9886			; 00009889  75FB  'u.'
	cli				; 0000988B  FA  '.'
x988c:	in	al,dx			; 0000988C  EC  '.'
	test	al,0x1			; 0000988D  A801  '..'
	jz	x988c			; 0000988F  74FB  't.'
	mov	al,ah			; 00009891  8AC4  '..'
	stosb				; 00009893  AA  '.'
	inc	di			; 00009894  47  'G'
	sti				; 00009895  FB  '.'
	loop	x9886			; 00009896  E2EE  '..'
	ret				; 00009898  C3  '.'

x9899:	cmp	byte [0x49],0x4		; 00009899  803E490004  '.>I..'
	jc	x98a7			; 0000989E  7207  'r.'
	cmp	byte [0x49],0x7		; 000098A0  803E490007  '.>I..'
	jnz	x98f8			; 000098A5  7551  'uQ'
x98a7:	call	xc32b			; 000098A7  E8812A  '..*'
x98aa:	stosb				; 000098AA  AA  '.'
	inc	di			; 000098AB  47  'G'
	loop	x98aa			; 000098AC  E2FC  '..'
	ret				; 000098AE  C3  '.'

	call	x8da9			; 000098AF  E8F7F4  '...'
	jz	x98e2			; 000098B2  742E  't.'
	cmp	byte [0x49],0x4		; 000098B4  803E490004  '.>I..'
	jc	x98c2			; 000098B9  7207  'r.'
	cmp	byte [0x49],0x7		; 000098BB  803E490007  '.>I..'
	jc	x98f8			; 000098C0  7236  'r6'
x98c2:	mov	ah,bl			; 000098C2  8AE3  '..'
	call	xc32b			; 000098C4  E8642A  '.d*'
	mov	dx,[0x63]		; 000098C7  8B166300  '..c.'
	add	dx,byte +0x6		; 000098CB  83C206  '...'
	mov	bx,ax			; 000098CE  8BD8  '..'
x98d0:	in	al,dx			; 000098D0  EC  '.'
	test	al,0x1			; 000098D1  A801  '..'
	jnz	x98d0			; 000098D3  75FB  'u.'
	cli				; 000098D5  FA  '.'
x98d6:	in	al,dx			; 000098D6  EC  '.'
	test	al,0x1			; 000098D7  A801  '..'
	jz	x98d6			; 000098D9  74FB  't.'
	mov	ax,bx			; 000098DB  8BC3  '..'
	stosw				; 000098DD  AB  '.'
	sti				; 000098DE  FB  '.'
	loop	x98d0			; 000098DF  E2EF  '..'
	ret				; 000098E1  C3  '.'

x98e2:	cmp	byte [0x49],0x4		; 000098E2  803E490004  '.>I..'
	jc	x98f0			; 000098E7  7207  'r.'
	cmp	byte [0x49],0x7		; 000098E9  803E490007  '.>I..'
	jnz	x98f8			; 000098EE  7508  'u.'
x98f0:	mov	ah,bl			; 000098F0  8AE3  '..'
	call	xc32b			; 000098F2  E8362A  '.6*'
	rep	stosw			; 000098F5  F3AB  '..'
	ret				; 000098F7  C3  '.'

x98f8:	call	xc34d			; 000098F8  E8522A  '.R*'
	mov	bl,[bp+0x6]		; 000098FB  8A5E06  '.^.'
	mov	bh,[0x49]		; 000098FE  8A3E4900  '.>I.'
	mov	dx,cs			; 00009902  8CCA  '..'
	mov	ds,dx			; 00009904  8EDA  '..'
	mov	si,0xfa6e		; 00009906  BE6EFA  '.n.'
	or	al,al			; 00009909  0AC0  0x0A,'.'
	jns	x9915			; 0000990B  7908  'y.'
	xor	dx,dx			; 0000990D  33D2  '3.'
	mov	ds,dx			; 0000990F  8EDA  '..'
	lds	si,[0x7c]		; 00009911  C5367C00  '.6|.'
x9915:	and	ax,0x7f			; 00009915  257F00  '%..'
	shl	ax,1			; 00009918  D1E0  '..'
	shl	ax,1			; 0000991A  D1E0  '..'
	shl	ax,1			; 0000991C  D1E0  '..'
	add	si,ax			; 0000991E  03F0  '..'
	cmp	bh,0x6			; 00009920  80FF06  '...'
	jz	x9988			; 00009923  7463  'tc'
	sub	sp,byte +0x10		; 00009925  83EC10  '...'
	mov	ax,sp			; 00009928  8BC4  '..'
	push	di			; 0000992A  57  'W'
	push	es			; 0000992B  06  '.'
	mov	di,ss			; 0000992C  8CD7  '..'
	mov	es,di			; 0000992E  8EC7  '..'
	push	cx			; 00009930  51  'Q'
	push	bx			; 00009931  53  'S'
	mov	di,ax			; 00009932  8BF8  '..'
	and	bl,0x3			; 00009934  80E303  '...'
	mov	ch,0x8			; 00009937  B508  '..'
x9939:	lodsb				; 00009939  AC  '.'
	mov	cl,0x8			; 0000993A  B108  '..'
x993c:	shl	dx,1			; 0000993C  D1E2  '..'
	shl	dx,1			; 0000993E  D1E2  '..'
	shl	al,1			; 00009940  D0E0  '..'
	jnc	x9946			; 00009942  7302  's.'
	or	dl,bl			; 00009944  0AD3  0x0A,'.'
x9946:	dec	cl			; 00009946  FEC9  '..'
	jnz	x993c			; 00009948  75F2  'u.'
	mov	al,dh			; 0000994A  8AC6  '..'
	mov	ah,dl			; 0000994C  8AE2  '..'
	stosw				; 0000994E  AB  '.'
	dec	ch			; 0000994F  FECD  '..'
	jnz	x9939			; 00009951  75E6  'u.'
	pop	bx			; 00009953  5B  '['
	pop	dx			; 00009954  5A  'Z'
	pop	es			; 00009955  07  '.'
	pop	di			; 00009956  5F  '_'
	mov	ax,ss			; 00009957  8CD0  '..'
	mov	ds,ax			; 00009959  8ED8  '..'
x995b:	mov	cx,0x4			; 0000995B  B90400  '...'
	mov	si,sp			; 0000995E  8BF4  '..'
x9960:	lodsw				; 00009960  AD  '.'
	sar	bl,1			; 00009961  D0FB  '..'
	jns	x9968			; 00009963  7903  'y.'
	xor	ax,[es:di]		; 00009965  263305  '&3.'
x9968:	stosw				; 00009968  AB  '.'
	add	di,0x1ffe		; 00009969  81C7FE1F  '....'
	lodsw				; 0000996D  AD  '.'
	sar	bl,1			; 0000996E  D0FB  '..'
	jns	x9975			; 00009970  7903  'y.'
	xor	ax,[es:di]		; 00009972  263305  '&3.'
x9975:	stosw				; 00009975  AB  '.'
	sub	di,0x1fb2		; 00009976  81EFB21F  '....'
	loop	x9960			; 0000997A  E2E4  '..'
	sub	di,0x13e		; 0000997C  81EF3E01  '..>.'
	dec	dx			; 00009980  4A  'J'
	jnz	x995b			; 00009981  75D8  'u.'
	add	sp,byte +0x10		; 00009983  83C410  '...'
	jmp	short x99b6		; 00009986  EB2E  '..'

x9988:	mov	ah,bl			; 00009988  8AE3  '..'
	mov	dx,cx			; 0000998A  8BD1  '..'
	mov	bx,si			; 0000998C  8BDE  '..'
x998e:	mov	cx,0x4			; 0000998E  B90400  '...'
	mov	si,bx			; 00009991  8BF3  '..'
x9993:	lodsb				; 00009993  AC  '.'
	sar	ah,1			; 00009994  D0FC  '..'
	jns	x999b			; 00009996  7903  'y.'
	xor	al,[es:di]		; 00009998  263205  '&2.'
x999b:	stosb				; 0000999B  AA  '.'
	add	di,0x1fff		; 0000999C  81C7FF1F  '....'
	lodsb				; 000099A0  AC  '.'
	sar	ah,1			; 000099A1  D0FC  '..'
	jns	x99a8			; 000099A3  7903  'y.'
	xor	al,[es:di]		; 000099A5  263205  '&2.'
x99a8:	stosb				; 000099A8  AA  '.'
	sub	di,0x1fb1		; 000099A9  81EFB11F  '....'
	loop	x9993			; 000099AD  E2E4  '..'
	sub	di,0x13f		; 000099AF  81EF3F01  '..?.'
	dec	dx			; 000099B3  4A  'J'
	jnz	x998e			; 000099B4  75D8  'u.'
x99b6:	ret				; 000099B6  C3  '.'

x99b7:	mov	ax,0xc800		; 000099B7  B800C8  '...'
	cld				; 000099BA  FC  '.'
x99bb:	call	x9a0f			; 000099BB  E85100  '.Q.'
	cmp	ax,0xdf80		; 000099BE  3D80DF  '=..'
	jna	x99bb			; 000099C1  76F8  'v.'
	mov	ax,0xe000		; 000099C3  B800E0  '...'
	mov	ds,ax			; 000099C6  8ED8  '..'
	xor	bx,bx			; 000099C8  33DB  '3.'
	cmp	word [bx],0xaa55	; 000099CA  813F55AA  '.?U.'
	jnz	x9a09			; 000099CE  7539  'u9'
	xor	si,si			; 000099D0  33F6  '3.'
	mov	cx,0x8000		; 000099D2  B90080  '...'
x99d5:	lodsw				; 000099D5  AD  '.'
	add	bl,al			; 000099D6  02D8  '..'
	add	bl,ah			; 000099D8  02DC  '..'
	loop	x99d5			; 000099DA  E2F9  '..'
	jz	x99f6			; 000099DC  7418  't.'
	mov	ax,0x40			; 000099DE  B84000  '.@.'
	mov	ds,ax			; 000099E1  8ED8  '..'
	or	byte [0x12],0xff	; 000099E3  800E1200FF  '.....'
	mov	dx,0x5000		; 000099E8  BA0050  '..P'

	mov	bx,err101		; 000099EB  BB5AB7  '.Z.'
	mov	cx,err101_len		; 000099EE  B90F00  '...'
	call	xc745			; 000099F1  E8512D  '.Q-'
	jmp	short x9a09		; 000099F4  EB13  '..'

x99f6:	mov	ax,0x40			; 000099F6  B84000  '.@.'
	mov	es,ax			; 000099F9  8EC0  '..'
	push	ds			; 000099FB  1E  '.'
	mov	ds,ax			; 000099FC  8ED8  '..'
	mov	ax,0x3			; 000099FE  B80300  '...'
	push	ax			; 00009A01  50  'P'
	mov	bp,sp			; 00009A02  8BEC  '..'
	call	far [bp+0x0]		; 00009A04  FF5E00  '.^.'
	pop	ax			; 00009A07  58  'X'
	pop	ax			; 00009A08  58  'X'
x9a09:	mov	ax,0x40			; 00009A09  B84000  '.@.'
	mov	ds,ax			; 00009A0C  8ED8  '..'
	ret				; 00009A0E  C3  '.'

x9a0f:	mov	ds,ax			; 00009A0F  8ED8  '..'
	xor	bx,bx			; 00009A11  33DB  '3.'
	cmp	word [bx],0xaa55	; 00009A13  813F55AA  '.?U.'
	jnz	x9a7b			; 00009A17  7562  'ub'
	xor	si,si			; 00009A19  33F6  '3.'
	xor	cx,cx			; 00009A1B  33C9  '3.'
	mov	ch,[bx+0x2]		; 00009A1D  8A6F02  '.o.'
	shl	cx,1			; 00009A20  D1E1  '..'
	mov	dx,cx			; 00009A22  8BD1  '..'
x9a24:	lodsb				; 00009A24  AC  '.'
	add	bl,al			; 00009A25  02D8  '..'
	loop	x9a24			; 00009A27  E2FB  '..'
	jnz	x9a69			; 00009A29  753E  'u>'
	mov	cl,0x4			; 00009A2B  B104  '..'
	shr	dx,cl			; 00009A2D  D3EA  '..'
	push	dx			; 00009A2F  52  'R'
	mov	ax,0x40			; 00009A30  B84000  '.@.'
	mov	es,ax			; 00009A33  8EC0  '..'
	push	ds			; 00009A35  1E  '.'
	mov	ds,ax			; 00009A36  8ED8  '..'
	mov	ax,0x3			; 00009A38  B80300  '...'
	push	ax			; 00009A3B  50  'P'
	mov	si,sp			; 00009A3C  8BF4  '..'
	push	bp			; 00009A3E  55  'U'
	xor	bp,bp			; 00009A3F  33ED  '3.'
	call	far [ss:si]		; 00009A41  36FF1C  '6..'
	or	bp,bp			; 00009A44  0BED  '..'
	jz	x9a54			; 00009A46  740C  't.'
	push	ds			; 00009A48  1E  '.'
	mov	ax,0x40			; 00009A49  B84000  '.@.'
	mov	ds,ax			; 00009A4C  8ED8  '..'
	or	byte [0x12],0xff	; 00009A4E  800E1200FF  '.....'
	pop	ds			; 00009A53  1F  '.'
x9a54:	pop	bp			; 00009A54  5D  ']'
	pop	ax			; 00009A55  58  'X'
	mov	ax,ds			; 00009A56  8CD8  '..'
	pop	ds			; 00009A58  1F  '.'
	pop	dx			; 00009A59  5A  'Z'
	mov	bx,ds			; 00009A5A  8CDB  '..'
	add	bx,dx			; 00009A5C  03DA  '..'
	cmp	ax,bx			; 00009A5E  3BC3  ';.'
	jna	x9a7e			; 00009A60  761C  'v.'
	cmp	ax,0xdf80		; 00009A62  3D80DF  '=..'
	jc	x9a82			; 00009A65  721B  'r.'
	jmp	short x9a7e		; 00009A67  EB15  '..'

x9a69:	pusha				; 00009A69  60  '`'
	push	es			; 00009A6A  06  '.'
	push	ds			; 00009A6B  1E  '.'
	mov	dx,0x5000		; 00009A6C  BA0050  '..P'
	mov	bx,0xb88c		; 00009A6F  BB8CB8  '...'
	mov	cx,0x14			; 00009A72  B91400  '...'
	call	xc745			; 00009A75  E8CD2C  '..,'
	pop	ds			; 00009A78  1F  '.'
	pop	es			; 00009A79  07  '.'
	popa				; 00009A7A  61  'a'
x9a7b:	mov	dx,0x80			; 00009A7B  BA8000  '...'
x9a7e:	mov	ax,ds			; 00009A7E  8CD8  '..'
	add	ax,dx			; 00009A80  03C2  '..'
x9a82:	ret				; 00009A82  C3  '.'

x9a83:	push	ds			; 00009A83  1E  '.'
	push	es			; 00009A84  06  '.'
	mov	ax,0xc000		; 00009A85  B800C0  '...'
x9a88:	call	x9ab2			; 00009A88  E82700  '.',0x27,'.'
	jnz	x9a94			; 00009A8B  7507  'u.'
	cmp	ax,0xc780		; 00009A8D  3D80C7  '=..'
	jna	x9a88			; 00009A90  76F6  'v.'
	xor	ax,ax			; 00009A92  33C0  '3.'
x9a94:	pop	es			; 00009A94  07  '.'
	pop	ds			; 00009A95  1F  '.'
	ret				; 00009A96  C3  '.'

x9a97:	push	ds			; 00009A97  1E  '.'
	push	es			; 00009A98  06  '.'
	mov	ax,0xc000		; 00009A99  B800C0  '...'
x9a9c:	push	ax			; 00009A9C  50  'P'
	call	x9ab2			; 00009A9D  E81200  '...'
	pop	dx			; 00009AA0  5A  'Z'
	jz	x9aaa			; 00009AA1  7407  't.'
	push	ax			; 00009AA3  50  'P'
	mov	ax,dx			; 00009AA4  8BC2  '..'
	call	x9af4			; 00009AA6  E84B00  '.K.'
	pop	ax			; 00009AA9  58  'X'
x9aaa:	cmp	ax,0xc780		; 00009AAA  3D80C7  '=..'
	jna	x9a9c			; 00009AAD  76ED  'v.'
	pop	es			; 00009AAF  07  '.'
	pop	ds			; 00009AB0  1F  '.'
	ret				; 00009AB1  C3  '.'

x9ab2:	cld				; 00009AB2  FC  '.'
	mov	ds,ax			; 00009AB3  8ED8  '..'
	xor	bx,bx			; 00009AB5  33DB  '3.'
	cmp	word [bx],0xaa55	; 00009AB7  813F55AA  '.?U.'
	jnz	x9aea			; 00009ABB  752D  'u-'
	xor	si,si			; 00009ABD  33F6  '3.'
	xor	cx,cx			; 00009ABF  33C9  '3.'
	mov	ch,[bx+0x2]		; 00009AC1  8A6F02  '.o.'
	shl	cx,1			; 00009AC4  D1E1  '..'
	mov	dx,cx			; 00009AC6  8BD1  '..'
x9ac8:	lodsb				; 00009AC8  AC  '.'
	add	bl,al			; 00009AC9  02D8  '..'
	loop	x9ac8			; 00009ACB  E2FB  '..'
	jnz	x9ad8			; 00009ACD  7509  'u.'
	mov	cl,0x4			; 00009ACF  B104  '..'
	shr	dx,cl			; 00009AD1  D3EA  '..'
	mov	ax,ds			; 00009AD3  8CD8  '..'
	add	ax,dx			; 00009AD5  03C2  '..'
	ret				; 00009AD7  C3  '.'

x9ad8:	pusha				; 00009AD8  60  '`'
	push	es			; 00009AD9  06  '.'
	push	ds			; 00009ADA  1E  '.'
	mov	dx,0x5000		; 00009ADB  BA0050  '..P'
	mov	bx,0xb88c		; 00009ADE  BB8CB8  '...'
	mov	cx,0x14			; 00009AE1  B91400  '...'
	call	xc745			; 00009AE4  E85E2C  '.^,'
	pop	ds			; 00009AE7  1F  '.'
	pop	es			; 00009AE8  07  '.'
	popa				; 00009AE9  61  'a'
x9aea:	mov	dx,0x80			; 00009AEA  BA8000  '...'
	mov	ax,ds			; 00009AED  8CD8  '..'
	add	ax,dx			; 00009AEF  03C2  '..'
	xor	dx,dx			; 00009AF1  33D2  '3.'
	ret				; 00009AF3  C3  '.'

x9af4:	mov	ds,ax			; 00009AF4  8ED8  '..'
	mov	ax,0x40			; 00009AF6  B84000  '.@.'
	mov	es,ax			; 00009AF9  8EC0  '..'
	push	ds			; 00009AFB  1E  '.'
	mov	ax,0x3			; 00009AFC  B80300  '...'
	push	ax			; 00009AFF  50  'P'
	mov	bp,sp			; 00009B00  8BEC  '..'
	call	far [bp+0x0]		; 00009B02  FF5E00  '.^.'
	pop	ax			; 00009B05  58  'X'
	pop	ds			; 00009B06  1F  '.'
	ret				; 00009B07  C3  '.'

x9b08:	push	cx			; 00009B08  51  'Q'
	mov	cx,[cs:si]		; 00009B09  2E8B0C  '...'
x9b0c:	inc	si			; 00009B0C  46  'F'
	inc	si			; 00009B0D  46  'F'
	cmp	ah,[cs:si]		; 00009B0E  2E3A24  '.:$'
	jz	x9b18			; 00009B11  7405  't.'
	loop	x9b0c			; 00009B13  E2F7  '..'
	clc				; 00009B15  F8  '.'
	jmp	short x9b1d		; 00009B16  EB05  '..'

x9b18:	inc	si			; 00009B18  46  'F'
	mov	al,[cs:si]		; 00009B19  2E8A04  '...'
	stc				; 00009B1C  F9  '.'
x9b1d:	pop	cx			; 00009B1D  59  'Y'
	ret				; 00009B1E  C3  '.'

	db	0xFF,0x1B,0xB1,0x32,0xB3,0xB4,0xB5,0x36,0xB7,0xB8,0xB9,0xB0,0x2D,0xBD,0x08,0x89
	db	'qwertyuiop[]'
	db	0x0D,0xFF
	db	'asdfghjkl'
	db	0xBB,0xA7,0xE0,0xFF
	db	'\zxcvbnm'
	db	0xAC,0xAE,0xAF,0xFF,0x2A,0xFF,0x20,0xFF,0x1B
	db	'!@#$%^&*()_+'
	db	0x08,0x0F,0x0B,0x00,0x1A,0x7B,0x1B,0x7D,0x1C,0x0D,0x27
	db	':(")~+|3<4>5?9 789-456+1230.'
	db	0x0D,0x00
	db	0x47,0x77,0x49,0x84,0x4B,0x73
	db	'MtOuQvH'
	db	0x8D,0x4A,0x8E
	db	0x4C,0x8F,0x4E,0x90,0x50,0x91,0x52,0x92,0x53,0x93,0x06,0x00,0x07,0x1E,0x0C,0x1F,0x1A,0x1B,0x1B,0x1D
	db	0x1C,0x0A,0x2B,0x1C,0x0A,0x00,0x47,0x97,0x48,0x98,0x49,0x99,0x4B,0x9B,0x4D,0x9D,0x4F,0x9F,0x50,0xA0
	db	0x51,0xA1,0x52,0xA2,0x53,0xA3
	db	0xFF,0xFF

x9bd0:	push	ax			; 00009BD0  50
	mov	al,0x01			; 00009BD1  B001
	out	0x85,al			; 00009BD3  E685
	mov	al,0x10			; 00009BD5  B010
	out	0x84,al			; 00009BD7  E684
	pop	ax			; 00009BD9  58
	jmp	xe900			; 00009BDA  E9234D

x9bdd:	cli				; 00009BDD  FA
	and	al,0xf7			; 00009BDE  24F7  '$.'
	add	dx,byte +0x4		; 00009BE0  83C204  '...'
	out	dx,al			; 00009BE3  EE  '.'
	xchg	ah,al			; 00009BE4  86E0  '..'
	inc	dx			; 00009BE6  42  'B'
	out	dx,al			; 00009BE7  EE  '.'
	sub	dx,byte +0x5		; 00009BE8  83EA05  '...'
x9beb:	xor	ah,ah			; 00009BEB  32E4  '2.'
x9bed:	mov	al,ah			; 00009BED  8AC4  '..'
	out	dx,al			; 00009BEF  EE  '.'
	inc	dx			; 00009BF0  42  'B'
	inc	ah			; 00009BF1  FEC4  '..'
	lodsb				; 00009BF3  AC  '.'
	out	dx,al			; 00009BF4  EE  '.'
	dec	dx			; 00009BF5  4A  'J'
	loop	x9bed			; 00009BF6  E2F5  '..'
	jmp	bp			; 00009BF8  FFE5  '..'
;
;   Clear the screen (DS=F000, BX=BA77 for CGA or BA86 for Mono)
;
x9bfa:	mov	ax,0x720		; 00009BFA  B82007  '. .'
	mov	es,[bx+0x6]		; 00009BFD  8E4706  '.G.'
	xor	di,di			; 00009C00  33FF  '3.'
	mov	cx,0x2000		; 00009C02  B90020  '.. '
	rep	stosw			; 00009C05  F3AB  '..'
	mov	dx,[bx]			; 00009C07  8B17  '..'
	mov	al,[bx+0x3]		; 00009C09  8A4703  '.G.'
	out	dx,al			; 00009C0C  EE  '.'
	jmp	bp			; 00009C0D  FFE5  '..'

	times	16 db 0xFF		; 00009C0F - 00009C1E

x9c1f:	jmp	x9cac			; 00009C1F  E98A00  '...'

	times	6 db 0xFF		; 00009C22 - 00009C27

x9c28:	push	ax			; 00009C28  50
	push	es			; 00009C29  06
	mov	al,0x1			; 00009C2A  B001  '..'
	out	0x85,al			; 00009C2C  E685  '..'
	mov	al,0x17			; 00009C2E  B017  '..'
	out	0x84,al			; 00009C30  E684  '..'
	mov	ax,0x40			; 00009C32  B84000  '.@.'
	mov	es,ax			; 00009C35  8EC0  '..'
	mov	al,0x20			; 00009C37  B020  '. '
	out	0xa0,al			; 00009C39  E6A0  '..'
	out	0x20,al			; 00009C3B  E620  '. '
	xor	al,al			; 00009C3D  32C0  '2.'
	out	0xf0,al			; 00009C3F  E6F0  '..'
	test	byte [es:0x97],0x20	; 00009C41  26F606970020  '&.... '
	jz	x9c54			; 00009C47  740B  't.'
	and	byte [es:0x97],0xdf	; 00009C49  2680269700DF  '&.&...'
	pop	es			; 00009C4F  07  '.'
	pop	ax			; 00009C50  58  'X'
	int	0x2			; 00009C51  CD02  '..'
	iret				; 00009C53  CF  '.'

x9c54:	cld				; 00009C54  FC  '.'
	push	bp			; 00009C55  55  'U'
	push	bx			; 00009C56  53  'S'
	push	si			; 00009C57  56  'V'
	push	cx			; 00009C58  51  'Q'
	push	ds			; 00009C59  1E  '.'
	sub	sp,byte +0x10		; 00009C5A  83EC10  '...'
	mov	bp,sp			; 00009C5D  8BEC  '..'
	or	byte [es:0x97],0x20	; 00009C5F  26800E970020  '&.... '
	fnstenv	[bp+0x0]		; 00009C65  D97600  '.v.'
	wait				; 00009C68  9B  '.'
	mov	ax,[bp+0x6]		; 00009C69  8B4606  '.F.'
	mov	si,ax			; 00009C6C  8BF0  '..'
	and	si,0xf			; 00009C6E  81E60F00  '....'
	shr	ax,0x4			; 00009C72  C1E804  '...'
	mov	bx,[bp+0x8]		; 00009C75  8B5E08  '.^.'
	and	bx,0xf000		; 00009C78  81E300F0  '....'
	or	ax,bx			; 00009C7C  0BC3  '..'
	mov	ds,ax			; 00009C7E  8ED8  '..'
	mov	cx,0x10			; 00009C80  B91000  '...'
x9c83:	lodsb				; 00009C83  AC  '.'
	mov	ah,al			; 00009C84  8AE0  '..'
	and	al,0xf8			; 00009C86  24F8  '$.'
	cmp	al,0xd8			; 00009C88  3CD8  '<.'
	jz	x9c91			; 00009C8A  7405  't.'
	loop	x9c83			; 00009C8C  E2F5  '..'
	jmp	short x9c9d		; 00009C8E  EB0D  '.',0x0D

	nop				; 00009C90  90  '.'
x9c91:	lodsb				; 00009C91  AC  '.'
	and	ax,0x7ff		; 00009C92  25FF07  '%..'
	and	word [bp+0x8],0xf800	; 00009C95  81660800F8  '.f...'
	or	[bp+0x8],ax		; 00009C9A  094608  '.F.'
x9c9d:	wait				; 00009C9D  9B  '.'
	fldenv	[bp+0x0]		; 00009C9E  D96600  '.f.'
	add	sp,byte +0x10		; 00009CA1  83C410  '...'
	pop	ds			; 00009CA4  1F  '.'
	pop	cx			; 00009CA5  59  'Y'
	pop	si			; 00009CA6  5E  '^'
	pop	bx			; 00009CA7  5B  '['
	pop	bp			; 00009CA8  5D  ']'
	pop	es			; 00009CA9  07  '.'
	pop	ax			; 00009CAA  58  'X'
	iret				; 00009CAB  CF  '.'

x9cac:	push	ax			; 00009CAC  50  'P'
	mov	al,0x1			; 00009CAD  B001  '..'
	out	0x85,al			; 00009CAF  E685  '..'
	mov	al,0x16			; 00009CB1  B016  '..'
	out	0x84,al			; 00009CB3  E684  '..'
	mov	al,0x20			; 00009CB5  B020  '. '
	out	0xa0,al			; 00009CB7  E6A0  '..'
	pop	ax			; 00009CB9  58  'X'
	int	0xa			; 00009CBA  CD0A  '.',0x0A
	iret				; 00009CBC  CF  '.'

	push	ds			; 00009CBD  1E  '.'
	push	ax			; 00009CBE  50  'P'
	mov	ax,0x40			; 00009CBF  B84000  '.@.'
	mov	ds,ax			; 00009CC2  8ED8  '..'
	pop	ax			; 00009CC4  58  'X'
	xor	al,al			; 00009CC5  32C0  '2.'
	cli				; 00009CC7  FA  '.'
	xchg	al,[0x70]		; 00009CC8  86067000  '..p.'
	mov	cx,[0x6e]		; 00009CCC  8B0E6E00  '..n.'
	mov	dx,[0x6c]		; 00009CD0  8B166C00  '..l.'
	sti				; 00009CD4  FB  '.'
	pop	ds			; 00009CD5  1F  '.'
	jmp	xfe81			; 00009CD6  E9A861  '..a'

	push	ds			; 00009CD9  1E  '.'
	push	ax			; 00009CDA  50  'P'
	mov	ax,0x40			; 00009CDB  B84000  '.@.'
	mov	ds,ax			; 00009CDE  8ED8  '..'
	cli				; 00009CE0  FA  '.'
	mov	[0x6e],cx		; 00009CE1  890E6E00  '..n.'
	mov	[0x6c],dx		; 00009CE5  89166C00  '..l.'
	mov	byte [0x70],0x0		; 00009CE9  C606700000  '..p..'
	sti				; 00009CEE  FB  '.'
	pop	ax			; 00009CEF  58  'X'
	pop	ds			; 00009CF0  1F  '.'
	jmp	xfe81			; 00009CF1  E98D61  '..a'

	call	x9d0f			; 00009CF4  E81800  '...'
	mov	al,0x0			; 00009CF7  B000  '..'
	call	xb544			; 00009CF9  E84818  '.H.'
	mov	dh,al			; 00009CFC  8AF0  '..'
	mov	al,0x2			; 00009CFE  B002  '..'
	call	xb544			; 00009D00  E84118  '.A.'
	mov	cl,al			; 00009D03  8AC8  '..'
	mov	al,0x4			; 00009D05  B004  '..'
	call	xb544			; 00009D07  E83A18  '.:.'
	mov	ch,al			; 00009D0A  8AE8  '..'
	jmp	xfe81			; 00009D0C  E97261  '.ra'

x9d0f:	mov	al,0xa			; 00009D0F  B00A  '.',0x0A
	cli				; 00009D11  FA  '.'
	call	xb544			; 00009D12  E82F18  './.'
	test	al,0x80			; 00009D15  A880  '..'
	jz	x9d1c			; 00009D17  7403  't.'
	sti				; 00009D19  FB  '.'
	jmp	short x9d0f		; 00009D1A  EBF3  '..'

x9d1c:	ret				; 00009D1C  C3  '.'

	call	x9d0f			; 00009D1D  E8EFFF  '...'
	mov	al,0x0			; 00009D20  B000  '..'
	mov	ah,dh			; 00009D22  8AE6  '..'
	call	xb549			; 00009D24  E82218  '.".'
	mov	al,0x2			; 00009D27  B002  '..'
	mov	ah,cl			; 00009D29  8AE1  '..'
	call	xb549			; 00009D2B  E81B18  '...'
	mov	al,0x4			; 00009D2E  B004  '..'
	mov	ah,ch			; 00009D30  8AE5  '..'
	call	xb549			; 00009D32  E81418  '...'
	mov	al,0xb			; 00009D35  B00B  '..'
	call	xb544			; 00009D37  E80A18  '.',0x0A,'.'
	or	al,0x2			; 00009D3A  0C02  '..'
	and	al,0xfb			; 00009D3C  24FB  '$.'
	and	al,0xfe			; 00009D3E  24FE  '$.'
	test	dl,dl			; 00009D40  84D2  '..'
	jz	x9d46			; 00009D42  7402  't.'
	or	al,0x1			; 00009D44  0C01  '..'
x9d46:	mov	ah,al			; 00009D46  8AE0  '..'
	mov	al,0xb			; 00009D48  B00B  '..'
	call	xb549			; 00009D4A  E8FC17  '...'
	jmp	xfe81			; 00009D4D  E93161  '.1a'

	call	x9d0f			; 00009D50  E8BCFF  '...'
	mov	al,0x7			; 00009D53  B007  '..'
	call	xb544			; 00009D55  E8EC17  '...'
	mov	dl,al			; 00009D58  8AD0  '..'
	mov	al,0x8			; 00009D5A  B008  '..'
	call	xb544			; 00009D5C  E8E517  '...'
	mov	dh,al			; 00009D5F  8AF0  '..'
	mov	al,0x9			; 00009D61  B009  '..'
	call	xb544			; 00009D63  E8DE17  '...'
	mov	cl,al			; 00009D66  8AC8  '..'
	mov	al,0x32			; 00009D68  B032  '.2'
	call	xb544			; 00009D6A  E8D717  '...'
	mov	ch,al			; 00009D6D  8AE8  '..'
	jmp	xfe81			; 00009D6F  E90F61  '..a'

	call	x9d0f			; 00009D72  E89AFF  '...'
	mov	ax,0x6			; 00009D75  B80600  '...'
	call	xb549			; 00009D78  E8CE17  '...'
	mov	al,0x7			; 00009D7B  B007  '..'
	mov	ah,dl			; 00009D7D  8AE2  '..'
	call	xb549			; 00009D7F  E8C717  '...'
	mov	al,0x8			; 00009D82  B008  '..'
	mov	ah,dh			; 00009D84  8AE6  '..'
	call	xb549			; 00009D86  E8C017  '...'
	mov	al,0x9			; 00009D89  B009  '..'
	mov	ah,cl			; 00009D8B  8AE1  '..'
	call	xb549			; 00009D8D  E8B917  '...'
	mov	al,0xb			; 00009D90  B00B  '..'
	call	xb544			; 00009D92  E8AF17  '...'
	or	al,0x2			; 00009D95  0C02  '..'
	and	al,0xfb			; 00009D97  24FB  '$.'
	mov	ah,al			; 00009D99  8AE0  '..'
	mov	al,0xb			; 00009D9B  B00B  '..'
	call	xb549			; 00009D9D  E8A917  '...'
	mov	al,0x32			; 00009DA0  B032  '.2'
	mov	ah,ch			; 00009DA2  8AE5  '..'
	call	xb549			; 00009DA4  E8A217  '...'
	jmp	xfe81			; 00009DA7  E9D760  '..`'

	cli				; 00009DAA  FA  '.'
	mov	al,0xb			; 00009DAB  B00B  '..'
	call	xb544			; 00009DAD  E89417  '...'
	test	al,0x20			; 00009DB0  A820  '. '
	jz	x9dbc			; 00009DB2  7408  't.'
	sti				; 00009DB4  FB  '.'
	pop	bx			; 00009DB5  5B  '['
	xor	ax,ax			; 00009DB6  33C0  '3.'
	stc				; 00009DB8  F9  '.'
	retf	0x2			; 00009DB9  CA0200  '...'

x9dbc:	mov	al,0xa			; 00009DBC  B00A  '.',0x0A
	call	xb544			; 00009DBE  E88317  '...'
	test	al,0x80			; 00009DC1  A880  '..'
	jnz	x9dbc			; 00009DC3  75F7  'u.'
	mov	al,0x1			; 00009DC5  B001  '..'
	mov	ah,dh			; 00009DC7  8AE6  '..'
	call	xb549			; 00009DC9  E87D17  '.}.'
	mov	al,0x3			; 00009DCC  B003  '..'
	mov	ah,cl			; 00009DCE  8AE1  '..'
	call	xb549			; 00009DD0  E87617  '.v.'
	mov	al,0x5			; 00009DD3  B005  '..'
	mov	ah,ch			; 00009DD5  8AE5  '..'
	call	xb549			; 00009DD7  E86F17  '.o.'
	in	al,0xa1			; 00009DDA  E4A1  '..'
	and	al,0xfe			; 00009DDC  24FE  '$.'
	out	0xa1,al			; 00009DDE  E6A1  '..'
	mov	al,0xb			; 00009DE0  B00B  '..'
	call	xb544			; 00009DE2  E85F17  '._.'
	or	al,0x20			; 00009DE5  0C20  '. '
	mov	ah,al			; 00009DE7  8AE0  '..'
	mov	al,0xb			; 00009DE9  B00B  '..'
	call	xb549			; 00009DEB  E85B17  '.[.'
	jmp	xfe81			; 00009DEE  E99060  '..`'

	cli				; 00009DF1  FA  '.'
	mov	al,0xb			; 00009DF2  B00B  '..'
	call	xb544			; 00009DF4  E84D17  '.M.'
	and	al,0xdf			; 00009DF7  24DF  '$.'
	mov	ah,al			; 00009DF9  8AE0  '..'
	mov	al,0xb			; 00009DFB  B00B  '..'
	call	xb549			; 00009DFD  E84917  '.I.'
	jmp	xfe81			; 00009E00  E97E60  '.~`'

x9e03:	mov	ah,bl			; 00009E03  8AE3  '..'
x9e05:	mov	cx,0xf424		; 00009E05  B924F4  '.$.'
x9e08:	in	al,dx			; 00009E08  EC  '.'
	test	bh,al			; 00009E09  84C7  '..'
	jnz	x9e19			; 00009E0B  750C  'u.'
	call	x919a			; 00009E0D  E88AF3  '...'
	loop	x9e08			; 00009E10  E2F6  '..'
	dec	ah			; 00009E12  FECC  '..'
	jnz	x9e05			; 00009E14  75EF  'u.'
	mov	ah,0x80			; 00009E16  B480  '..'
	ret				; 00009E18  C3  '.'

x9e19:	mov	ah,0x0			; 00009E19  B400  '..'
	ret				; 00009E1B  C3  '.'

x9e1c:	xor	ax,ax			; 00009E1C  33C0  '3.'
	mov	di,0xffe		; 00009E1E  BFFE0F  '...'
	mov	[es:di],ax		; 00009E21  268905  '&..'
	stc				; 00009E24  F9  '.'
	stc				; 00009E25  F9  '.'
	stc				; 00009E26  F9  '.'
	stc				; 00009E27  F9  '.'
	stc				; 00009E28  F9  '.'
	cmp	[es:di],ax		; 00009E29  263905  '&9.'
	stc				; 00009E2C  F9  '.'
	stc				; 00009E2D  F9  '.'
	stc				; 00009E2E  F9  '.'
	stc				; 00009E2F  F9  '.'
	stc				; 00009E30  F9  '.'
	ret				; 00009E31  C3  '.'

x9e32:	mov	al,0xe			; 00009E32  B00E  '..'
	pushf				; 00009E34  9C  '.'
	cli				; 00009E35  FA  '.'
	call	xb544			; 00009E36  E80B17  '...'
	push	cs			; 00009E39  0E  '.'
	call	x9e40			; 00009E3A  E80300  '...'
	jmp	short x9e41		; 00009E3D  EB02  '..'

	nop				; 00009E3F  90  '.'

x9e40:	iret				; 00009E40  CF  '.'

x9e41:	test	al,0xc0			; 00009E41  A8C0  '..'
	jnz	x9e57			; 00009E43  7512  'u.'
	pushf				; 00009E45  9C  '.'
	cli				; 00009E46  FA  '.'
	mov	al,0x2d			; 00009E47  B02D  '.-'
	call	xb544			; 00009E49  E8F816  '...'
	push	cs			; 00009E4C  0E  '.'
	call	x9e53			; 00009E4D  E80300  '...'
	jmp	short x9e54		; 00009E50  EB02  '..'

	nop				; 00009E52  90  '.'

x9e53:	iret				; 00009E53  CF  '.'

x9e54:	and	al,0x1			; 00009E54  2401  '$.'
	ret				; 00009E56  C3  '.'

x9e57:	xor	ax,ax			; 00009E57  33C0  '3.'
	ret				; 00009E59  C3  '.'

x9e5a:	mov	al,0x8e			; 00009E5A  B08E  '..'
	pushf				; 00009E5C  9C  '.'
	cli				; 00009E5D  FA  '.'
	call	xb544			; 00009E5E  E8E316  '...'
	push	cs			; 00009E61  0E  '.'
	call	x9e68			; 00009E62  E80300  '...'
	jmp	short x9e69		; 00009E65  EB02  '..'

	nop				; 00009E67  90  '.'

x9e68:	iret				; 00009E68  CF  '.'

x9e69:	test	al,0xc0			; 00009E69  A8C0  '..'
	jnz	x9e7f			; 00009E6B  7512  'u.'
	pushf				; 00009E6D  9C  '.'
	cli				; 00009E6E  FA  '.'
	mov	al,0xad			; 00009E6F  B0AD  '..'
	call	xb544			; 00009E71  E8D016  '...'
	push	cs			; 00009E74  0E  '.'
	call	x9e7b			; 00009E75  E80300  '...'
	jmp	short x9e7c		; 00009E78  EB02  '..'

	nop				; 00009E7A  90  '.'

x9e7b:	iret				; 00009E7B  CF  '.'

x9e7c:	and	al,0x1			; 00009E7C  2401  '$.'
	ret				; 00009E7E  C3  '.'

x9e7f:	xor	ax,ax			; 00009E7F  33C0  '3.'
	ret				; 00009E81  C3  '.'

x9e82:	sti				; 00009E82  FB  '.'
	push	ds			; 00009E83  1E  '.'
	mov	ax,0x40			; 00009E84  B84000  '.@.'
	mov	ds,ax			; 00009E87  8ED8  '..'
	mov	eax,[0x10]		; 00009E89  66A11000  'f...'
	and	eax,0xffff		; 00009E8D  6625FFFF0000  'f%....'
	push	eax			; 00009E93  6650  'fP'
	mov	al,0x33			; 00009E95  B033  '.3'
	out	0x70,al			; 00009E97  E670  '.p'
	in	al,0x71			; 00009E99  E471  '.q'
	test	al,0x20			; 00009E9B  A820  '. '
	pop	eax			; 00009E9D  6658  'fX'
	jz	x9ea7			; 00009E9F  7406  't.'
	or	eax,0x1000000		; 00009EA1  660D00000001  'f',0x0D,'....'
x9ea7:	pop	ds			; 00009EA7  1F  '.'
	ret				; 00009EA8  C3  '.'

	call	x9e32			; 00009EA9  E886FF  '...'
	jz	x9f16			; 00009EAC  7468  'th'
	cmp	byte [0x49],0x2		; 00009EAE  803E490002  '.>I..'
	jz	x9ebe			; 00009EB3  7409  't.'
	cmp	byte [0x49],0x3		; 00009EB5  803E490003  '.>I..'
	jz	x9ebe			; 00009EBA  7402  't.'
	jmp	short x9f16		; 00009EBC  EB58  '.X'

x9ebe:	xor	di,di			; 00009EBE  33FF  '3.'
	mov	es,di			; 00009EC0  8EC7  '..'
	mov	di,0x74			; 00009EC2  BF7400  '.t.'
	mov	al,[bp+0x0]		; 00009EC5  8A4600  '.F.'
	cmp	al,0x0			; 00009EC8  3C00  '<.'
	jz	x9ed5			; 00009ECA  7409  't.'
	cmp	al,0x1			; 00009ECC  3C01  '<.'
	jnz	x9f16			; 00009ECE  7546  'uF'
	mov	ax,0xf0e4		; 00009ED0  B8E4F0  '...'
	jmp	short x9ed8		; 00009ED3  EB03  '..'

x9ed5:	mov	ax,0xf0a4		; 00009ED5  B8A4F0  '...'
x9ed8:	cmp	ax,[es:di]		; 00009ED8  263B05  '&;.'
	jz	x9f16			; 00009EDB  7439  't9'
	cld				; 00009EDD  FC  '.'
	cli				; 00009EDE  FA  '.'
	stosw				; 00009EDF  AB  '.'
	mov	ax,cs			; 00009EE0  8CC8  '..'
	stosw				; 00009EE2  AB  '.'
	sti				; 00009EE3  FB  '.'
	mov	al,[0x65]		; 00009EE4  A06500  '.e.'
	mov	ah,[0x66]		; 00009EE7  8A266600  '.&f.'
	mov	dx,[0x63]		; 00009EEB  8B166300  '..c.'
	mov	cx,0xc			; 00009EEF  B90C00  '...'
	call	xa795			; 00009EF2  E8A008  '...'
	mov	bx,0x1f4		; 00009EF5  BBF401  '...'
	call	xc638			; 00009EF8  E83D27  '.=',0x27	; CALL DELAY(BX)
	add	dx,byte +0x4		; 00009EFB  83C204  '...'
	mov	al,[0x65]		; 00009EFE  A06500  '.e.'
	out	dx,al			; 00009F01  EE  '.'
	mov	ah,0xf			; 00009F02  B40F  '..'
	call	x83db			; 00009F04  E8D4E4  '...'
	mov	ah,0x3			; 00009F07  B403  '..'
	call	x83db			; 00009F09  E8CFE4  '...'
	mov	ah,0x2			; 00009F0C  B402  '..'
	call	x83db			; 00009F0E  E8CAE4  '...'
	mov	ah,0x1			; 00009F11  B401  '..'
	call	x83db			; 00009F13  E8C5E4  '...'
x9f16:	ret				; 00009F16  C3  '.'

x9f17:	cld				; 00009F17  FC  '.'
	lodsd				; 00009F18  66AD  'f.'
	push	ax			; 00009F1A  50  'P'
	in	al,0x61			; 00009F1B  E461  '.a'
	test	al,0x40			; 00009F1D  A840  '.@'
	pop	ax			; 00009F1F  58  'X'
	jz	x9f47			; 00009F20  7425  't%'
	sub	si,byte +0x4		; 00009F22  83EE04  '...'
	mov	[si],eax		; 00009F25  668904  'f..'
	push	ds			; 00009F28  1E  '.'
	push	ax			; 00009F29  50  'P'
	mov	ax,0x48			; 00009F2A  B84800  '.H.'
	mov	ds,ax			; 00009F2D  8ED8  '..'
	in	al,0x61			; 00009F2F  E461  '.a'
	mov	ah,al			; 00009F31  8AE0  '..'
	or	al,0x8			; 00009F33  0C08  '..'
	out	0x61,al			; 00009F35  E661  '.a'
	mov	dl,[0x0]		; 00009F37  8A160000  '....'
	mov	byte [0x0],0xff		; 00009F3B  C6060000FF  '.....'
	xchg	al,ah			; 00009F40  86C4  '..'
	out	0x61,al			; 00009F42  E661  '.a'
	pop	ax			; 00009F44  58  'X'
	pop	ds			; 00009F45  1F  '.'
	stc				; 00009F46  F9  '.'
x9f47:	retf				; 00009F47  CB  '.'

	xchg	si,di			; 00009F48  87F7  '..'
	cmp	byte [bp+0x6],0x0	; 00009F4A  807E0600  '.~..'
	jnz	x9f67			; 00009F4E  7517  'u.'
	call	xd3f3			; 00009F50  E8A034  '..4'
	jnz	x9f6c			; 00009F53  7517  'u.'
	mov	al,0x33			; 00009F55  B033  '.3'
	out	0x70,al			; 00009F57  E670  '.p'
	in	al,0x71			; 00009F59  E471  '.q'
	test	al,0x4			; 00009F5B  A804  '..'
	jz	x9f67			; 00009F5D  7408  't.'
	and	al,0xfc			; 00009F5F  24FC  '$.'
	jnz	x9f9a			; 00009F61  7537  'u7'
	or	al,0x4			; 00009F63  0C04  '..'
	jmp	short x9f9a		; 00009F65  EB33  '.3'

x9f67:	call	xd405			; 00009F67  E89B34  '..4'
	jnc	x9f9a			; 00009F6A  732E  's.'
x9f6c:	call	xd423			; 00009F6C  E8B434  '..4'
	jz	x9fac			; 00009F6F  743B  't;'
	mov	si,0xa024		; 00009F71  BE24A0  '.$.'
	call	xd47d			; 00009F74  E80635  '..5'
	test	al,0x1			; 00009F77  A801  '..'
	jz	x9fcb			; 00009F79  7450  'tP'
	mov	si,0xa029		; 00009F7B  BE29A0  '.).'
	call	x9190			; 00009F7E  E80FF2  '...'
	mov	bh,[bx]			; 00009F81  8A3F  '.?'
	mov	bl,bh			; 00009F83  8ADF  '..'
	and	bh,0x6			; 00009F85  80E706  '...'
	cmp	bh,0x4			; 00009F88  80FF04  '...'
	jz	x9fcb			; 00009F8B  743E  't>'
	mov	si,0xa033		; 00009F8D  BE33A0  '.3.'
	and	bl,0xc0			; 00009F90  80E3C0  '...'
	jz	x9fcb			; 00009F93  7436  't6'
	mov	si,0xa02e		; 00009F95  BE2EA0  '...'
	jmp	short x9fcb		; 00009F98  EB31  '.1'

x9f9a:	mov	si,0xa024		; 00009F9A  BE24A0  '.$.'
	mov	ah,0x4			; 00009F9D  B404  '..'
x9f9f:	dec	ah			; 00009F9F  FECC  '..'
	jz	x9fcb			; 00009FA1  7428  't('
	dec	al			; 00009FA3  FEC8  '..'
	jz	x9fcb			; 00009FA5  7424  't$'
	add	si,byte +0x5		; 00009FA7  83C605  '...'
	jmp	short x9f9f		; 00009FAA  EBF3  '..'

x9fac:	mov	word [bp+0x2],0x0	; 00009FAC  C746020000  '.F...'
	mov	word [bp+0x4],0x0	; 00009FB1  C746040000  '.F...'
	mov	byte [bp+0x7],0x0	; 00009FB6  C6460700  '.F..'
	mov	word [bp+0xc],0x0	; 00009FBA  C7460C0000  '.F...'
	mov	word [bp+0xa],0x0	; 00009FBF  C7460A0000  '.F',0x0A,'..'
	call	xd3f3			; 00009FC4  E82C34  '.,4'
	jnz	xa005			; 00009FC7  753C  'u<'
	jmp	short xa014		; 00009FC9  EB49  '.I'

x9fcb:	call	xd436			; 00009FCB  E86834  '.h4'
	jc	x9fac			; 00009FCE  72DC  'r.'
	mov	[bp+0xc],cs		; 00009FD0  8C4E0C  '.N.'
	mov	dx,[cs:si+0x3]		; 00009FD3  2E8B5403  '..T.'
	mov	[bp+0xa],dx		; 00009FD7  89560A  '.V',0x0A
	xor	bx,bx			; 00009FDA  33DB  '3.'
	call	xd3f3			; 00009FDC  E81434  '..4'
	jnz	x9feb			; 00009FDF  750A  'u',0x0A
	call	xd405			; 00009FE1  E82134  '.!4'
	jc	x9feb			; 00009FE4  7205  'r.'
	mov	bl,[cs:si]		; 00009FE6  2E8A1C  '...'
	xor	bh,bh			; 00009FE9  32FF  '2.'
x9feb:	mov	[bp+0x2],bx		; 00009FEB  895E02  '.^.'
	mov	ch,[cs:si+0x2]		; 00009FEE  2E8A6C02  '..l.'
	mov	[bp+0x5],ch		; 00009FF2  886E05  '.n.'
	mov	cl,[cs:si+0x1]		; 00009FF5  2E8A4C01  '..L.'
	mov	[bp+0x4],cl		; 00009FF9  884E04  '.N.'
	mov	byte [bp+0x7],0x1	; 00009FFC  C6460701  '.F..'
	call	0xd423			; 0000A000  E82034  '. 4'
	jnz	xa014			; 0000A003  750F  'u.'
xa005:	call	x9190			; 0000A005  E888F1  '...'
	cmp	byte [bx],0x0		; 0000A008  803F00  '.?.'
	jnz	xa014			; 0000A00B  7507  'u.'
	xchg	si,di			; 0000A00D  87F7  '..'
	call	x9293			; 0000A00F  E881F2  '...'
	xchg	si,di			; 0000A012  87F7  '..'
xa014:	call	xd436			; 0000A014  E81F34  '..4'
	mov	[bp+0x6],dl		; 0000A017  885606  '.V.'
	xor	ax,ax			; 0000A01A  33C0  '3.'
	and	word [bp+0x16],0xfffe	; 0000A01C  816616FEFF  '.f...'
	xchg	si,di			; 0000A021  87F7  '..'
	ret				; 0000A023  C3  '.'

	add	[bx+di],cx		; 0000A024  0109  '..'
	daa				; 0000A026  27  0x27
	sti				; 0000A027  FB  '.'
	and	[bp+si],al		; 0000A028  2002  ' .'
	cmovg	dx,[di]			; 0000A02A  0F4F15  '.O.'
	and	[bp+di],ax		; 0000A02D  2103  '!.'
	or	[bx+0x22],cx		; 0000A02F  094F22  '.O"'
	and	[si],ax			; 0000A032  2104  '!.'
	adc	cl,[bx+0x3c]		; 0000A034  124F3C  '.O<'
	and	[bx+0xbef7],ax		; 0000A037  2187F7BE  '!...'
	int	0xa0			; 0000A03B  CDA0  '..'
	mov	dx,[bp+0x4]		; 0000A03D  8B5604  '.V.'
	call	xd3f3			; 0000A040  E8B033  '..3'
	jnz	xa074			; 0000A043  752F  'u/'
	call	xd405			; 0000A045  E8BD33  '..3'
	jc	xa070			; 0000A048  7226  'r&'
	cmp	al,0x1			; 0000A04A  3C01  '<.'
	jz	xa068			; 0000A04C  741A  't.'
	add	si,byte +0x6		; 0000A04E  83C606  '...'
	cmp	al,0x2			; 0000A051  3C02  '<.'
	jz	xa05f			; 0000A053  740A  't',0x0A
	add	si,byte +0xc		; 0000A055  83C60C  '...'
	cmp	al,0x3			; 0000A058  3C03  '<.'
	jz	xa068			; 0000A05A  740C  't.'
	add	si,byte +0x6		; 0000A05C  83C606  '...'
xa05f:	cmp	dx,[cs:si+0x1]		; 0000A05F  2E3B5401  '.;T.'
	jz	xa07a			; 0000A063  7415  't.'
	add	si,byte +0x6		; 0000A065  83C606  '...'
xa068:	cmp	dx,[cs:si+0x1]		; 0000A068  2E3B5401  '.;T.'
	jz	xa07a			; 0000A06C  740C  't.'
	jmp	short xa0a5		; 0000A06E  EB35  '.5'

xa070:	cmp	al,0x0			; 0000A070  3C00  '<.'
	jz	xa09c			; 0000A072  7428  't('
xa074:	cmp	dx,[cs:si+0x1]		; 0000A074  2E3B5401  '.;T.'
	jnz	xa0b0			; 0000A078  7536  'u6'
xa07a:	call	x9190			; 0000A07A  E813F1  '...'
	cmp	byte [bx],0x0		; 0000A07D  803F00  '.?.'
	jnz	xa089			; 0000A080  7507  'u.'
	xchg	si,di			; 0000A082  87F7  '..'
	call	x9293			; 0000A084  E80CF2  '...'
	xchg	si,di			; 0000A087  87F7  '..'
xa089:	mov	dl,[cs:si+0x3]		; 0000A089  2E8A5403  '..T.'
	call	x9190			; 0000A08D  E800F1  '...'
	mov	[bx],dl			; 0000A090  8817  '..'
	mov	[bp+0xc],cs		; 0000A092  8C4E0C  '.N.'
	mov	dx,[cs:si+0x4]		; 0000A095  2E8B5404  '..T.'
	mov	[bp+0xa],dx		; 0000A099  89560A  '.V',0x0A
xa09c:	and	word [bp+0x16],0x1	; 0000A09C  8166160100  '.f...'
	xor	ax,ax			; 0000A0A1  33C0  '3.'
	jmp	short xa0b9		; 0000A0A3  EB14  '..'

xa0a5:	or	word [bp+0x16],0x1	; 0000A0A5  814E160100  '.N...'
	mov	ah,0xc			; 0000A0AA  B40C  '..'
	xor	al,al			; 0000A0AC  32C0  '2.'
	jmp	short xa0ca		; 0000A0AE  EB1A  '..'

xa0b0:	or	word [bp+0x16],0x1	; 0000A0B0  814E160100  '.N...'
	mov	ah,0xc			; 0000A0B5  B40C  '..'
	xor	al,al			; 0000A0B7  32C0  '2.'
xa0b9:	call	x9190			; 0000A0B9  E8D4F0  '...'
	cmp	byte [bx],0x0		; 0000A0BC  803F00  '.?.'
	jnz	xa0ca			; 0000A0BF  7509  'u.'
	xchg	si,di			; 0000A0C1  87F7  '..'
	push	ax			; 0000A0C3  50  'P'
	call	x9293			; 0000A0C4  E8CCF1  '...'
	pop	ax			; 0000A0C7  58  'X'
	xchg	si,di			; 0000A0C8  87F7  '..'
xa0ca:	xchg	si,di			; 0000A0CA  87F7  '..'
	ret				; 0000A0CC  C3  '.'

	add	[bx+di],cx		; 0000A0CD  0109  '..'
	daa				; 0000A0CF  27  0x27
	xchg	ax,bx			; 0000A0D0  93  '.'
	sti				; 0000A0D1  FB  '.'
	and	[bp+si],al		; 0000A0D2  2002  ' .'
	or	[bx],sp			; 0000A0D4  0927  '.',0x27
	jz	xa0e0			; 0000A0D6  7408  't.'
	and	[bp+si],ax		; 0000A0D8  2102  '!.'
	cmovg	dx,[di]			; 0000A0DA  0F4F15  '.O.'
	adc	ax,0x321		; 0000A0DD  152103  '.!.'
xa0e0:	or	[bx-0x69],cx		; 0000A0E0  094F97  '.O.'
	and	ah,[bx+di]		; 0000A0E3  2221  '"!'
	add	cx,[bx+di]		; 0000A0E5  0309  '..'
	dec	di			; 0000A0E7  4F  'O'
	xchg	ax,di			; 0000A0E8  97  '.'
	das				; 0000A0E9  2F  '/'
	and	[si],ax			; 0000A0EA  2104  '!.'
	adc	cl,[bx+0x17]		; 0000A0EC  124F17  '.O.'
	cmp	al,0x21			; 0000A0EF  3C21  '<!'

	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  '...'	; CALL DELAY(BX)
xa778:	mov	al,[0x65]		; 0000A778  A06500  '.e.'
	add	dx,byte +0x4		; 0000A77B  83C204  '...'
	out	dx,al			; 0000A77E  EE  '.'
	ret				; 0000A77F  C3  '.'

xa780:	push	cx			; 0000A780  51  'Q'
	and	ax,0x1f			; 0000A781  251F00  '%..'
	mov	cl,0x3			; 0000A784  B103  '..'
	shl	al,cl			; 0000A786  D2E0  '..'
	mov	cl,0xe			; 0000A788  B10E  '..'
	div	cl			; 0000A78A  F6F1  '..'
	cmp	ah,0x7			; 0000A78C  80FC07  '...'
	jc	xa793			; 0000A78F  7202  'r.'
	inc	al			; 0000A791  FEC0  '..'
xa793:	pop	cx			; 0000A793  59  'Y'
	ret				; 0000A794  C3  '.'

xa795:	xor	bh,bh			; 0000A795  32FF  '2.'
	mov	bl,[0x49]		; 0000A797  8A1E4900  '..I.'
	push	ds			; 0000A79B  1E  '.'
	xor	si,si			; 0000A79C  33F6  '3.'
	mov	ds,si			; 0000A79E  8EDE  '..'
	lds	si,[0x74]		; 0000A7A0  C5367400  '.6t.'
	mov	bl,[cs:bx+0xa83a]	; 0000A7A4  2E8A9F3AA8  '...:.'
	add	si,bx			; 0000A7A9  03F3  '..'
	push	si			; 0000A7AB  56  'V'
	mov	bp,0xa7b2		; 0000A7AC  BDB2A7  '...'
	jmp	x9bdd			; 0000A7AF  E92BF4

	sti				; 0000A7B2  FB  '.'
	pop	si			; 0000A7B3  5E  '^'
	mov	ax,ds			; 0000A7B4  8CD8  '..'
	mov	es,ax			; 0000A7B6  8EC0  '..'
	pop	ds			; 0000A7B8  1F  '.'
	ret				; 0000A7B9  C3  '.'

	and	al,0x7			; 0000A7BA  2407  '$.'
	mov	[0x62],al		; 0000A7BC  A26200  '.b.'
	cbw				; 0000A7BF  98  '.'
	push	ax			; 0000A7C0  50  'P'
	push	dx			; 0000A7C1  52  'R'
	mul	word [0x4c]		; 0000A7C2  F7264C00  '.&L.'
	mov	[0x4e],ax		; 0000A7C6  A34E00  '.N.'
	pop	dx			; 0000A7C9  5A  'Z'
	xchg	ax,cx			; 0000A7CA  91  '.'
	shr	cx,1			; 0000A7CB  D1E9  '..'
	mov	ah,0xc			; 0000A7CD  B40C  '..'
	call	xacf9			; 0000A7CF  E82705  '.',0x27,'.'
	pop	si			; 0000A7D2  5E  '^'
	shl	si,1			; 0000A7D3  D1E6  '..'
	mov	cx,[si+0x50]		; 0000A7D5  8B8C5000  '..P.'
	jmp	xace4			; 0000A7D9  E90805  '...'

	mov	al,[0x66]		; 0000A7DC  A06600  '.f.'
	or	bh,bh			; 0000A7DF  0AFF  0x0A,'.'
	jnz	xa7ec			; 0000A7E1  7509  'u.'
	and	bl,0x1f			; 0000A7E3  80E31F  '...'
	and	al,0xe0			; 0000A7E6  24E0  '$.'
	or	al,bl			; 0000A7E8  0AC3  0x0A,'.'
	jmp	short xa7f7		; 0000A7EA  EB0B  '..'

xa7ec:	mov	cl,0x5			; 0000A7EC  B105  '..'
	shl	bl,cl			; 0000A7EE  D2E3  '..'
	and	bl,0x20			; 0000A7F0  80E320  '.. '
	and	al,0xdf			; 0000A7F3  24DF  '$.'
	or	al,bl			; 0000A7F5  0AC3  0x0A,'.'
xa7f7:	mov	[0x66],al		; 0000A7F7  A26600  '.f.'
	add	dx,byte +0x5		; 0000A7FA  83C205  '...'
	out	dx,al			; 0000A7FD  EE  '.'
	ret				; 0000A7FE  C3  '.'

	mov	al,[0x49]		; 0000A7FF  A04900  '.I.'
	mov	[bp+0x0],al		; 0000A802  884600  '.F.'
	mov	al,[0x4a]		; 0000A805  A04A00  '.J.'
	mov	[bp+0x1],al		; 0000A808  884601  '.F.'
	mov	al,[0x62]		; 0000A80B  A06200  '.b.'
	mov	[bp+0x7],al		; 0000A80E  884607  '.F.'
	ret				; 0000A811  C3  '.'

	db	0x28,0x28,0x50,0x50,0x28,0x28,0x50,0x50,0x00,0x08,0x00,0x08,0x00,0x10,0x00,0x10	; 0000A812 ((PP((PP........
	db	0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x2C,0x28,0x2D,0x29,0x2A,0x2E,0x1E,0x29	; 0000A822 .@.@.@.@,(-)*..)
	db	0x30,0x30,0x30,0x30,0x30,0x30,0x3F,0x30,0x00,0x00,0x10,0x10,0x20,0x20,0x20,0x30	; 0000A832 000000?0....   0
	db	0x03,0x01,0x03,0x07,0xD0,0x1B,0xD0,0x1B,0xC3,0xE2,0xD0,0x1B,0xD0,0x1B,0x54,0xFF	; 0000A842 ..............T.
	db	0xA0,0x95,0xD0,0x1B,0xA5,0xFE,0x87,0xE9,0xD0,0x1B,0xD0,0x1B,0xD0,0x1B,0xA3,0x89	; 0000A852 ................
	db	0x57,0xEF,0xD0,0x1B,0x65,0xF0,0x4D,0xF8,0x41,0xF8,0x59,0xEC,0x39,0xE7,0x59,0xF8	; 0000A862 W...e.M.A.Y.9.Y.
	db	0x2E,0xE8,0xD2,0xEF,0xC0,0xE7,0xF2,0xE6,0x6E,0xFE,0x53,0xFF,0x53,0xFF,0xA4,0xF0	; 0000A872 ........n.S.S...
	db	0xC7,0xEF,0x00,0x00,0x97,0x4A,0x1F,0x1C,0xD0,0x1B,0xD0,0x1B,0xD0,0x1B,0x28,0x1C	; 0000A882 .....J........(.
	db	0xD0,0x1B,0xD0,0x1B,0xD0,0x1B,0xF8,0x03,0xF8,0x02,0xBC,0x03,0x78,0x03,0x78,0x02	; 0000A892 ............x.x.
	db	0x14,0x14,0x14,0x14,0x01,0x01,0x01,0x01,0x1E,0x00,0x3E,0x00			; 0000A8A2 ........

xa8ae:	mov	al,0x30			; 0000A8AE  B030
	out	0x84,al			; 0000A8B0  E684
	mov	ax,0x0040		; 0000A8B2  B84000  '..@.'
	mov	es,ax			; 0000A8B5  8EC0  '..'
	mov	bx,[0x13]		; 0000A8B7  8B1E1300  '....'
	pop	dx			; 0000A8BB  5A  'Z'
	xor	bp,bp			; 0000A8BC  33ED  '3.'
	xor	ax,ax			; 0000A8BE  33C0  '3.'
	mov	si,0x2000		; 0000A8C0  BE0020  '.. '
xa8c3:	xor	di,di			; 0000A8C3  33FF  '3.'
	mov	es,bp			; 0000A8C5  8EC5  '..'
	mov	cx,0x8000		; 0000A8C7  B90080  '...'
	rep	stosw			; 0000A8CA  F3AB  '..'
	add	bp,0x1000		; 0000A8CC  81C50010  '....'
	cmp	bp,si			; 0000A8D0  3BEE  ';.'
	jc	xa8c3			; 0000A8D2  72EF  'r.'
	push	dx			; 0000A8D4  52  'R'
	mov	ax,0x40			; 0000A8D5  B84000  '.@.'
	mov	es,ax			; 0000A8D8  8EC0  '..'
	mov	[0x13],bx		; 0000A8DA  891E1300  '....'
	xor	ax,ax			; 0000A8DE  33C0  '3.'
	mov	es,ax			; 0000A8E0  8EC0  '..'
	mov	di,0x80			; 0000A8E2  BF8000  '...'
	mov	cx,0x50			; 0000A8E5  B95000  '.P.'
	mov	ax,cs			; 0000A8E8  8CC8  '..'
xa8ea:	mov	si,0xa896		; 0000A8EA  BE96A8  '...'
	cs	movsw			; 0000A8ED  2EA5  '..'
	stosw				; 0000A8EF  AB  '.'
	loop	xa8ea			; 0000A8F0  E2F8  '..'
	xor	ax,ax			; 0000A8F2  33C0  '3.'
	mov	es,ax			; 0000A8F4  8EC0  '..'
	mov	di,0x180		; 0000A8F6  BF8001  '...'
	mov	cx,0x8			; 0000A8F9  B90800  '...'
	mov	ax,0x0			; 0000A8FC  B80000  '...'
xa8ff:	stosw				; 0000A8FF  AB  '.'
	stosw				; 0000A900  AB  '.'
	loop	xa8ff			; 0000A901  E2FC  '..'
	mov	al,0x31			; 0000A903  B031  '.1'
	out	0x84,al			; 0000A905  E684  '..'
	xor	ax,ax			; 0000A907  33C0  '3.'
	mov	es,ax			; 0000A909  8EC0  '..'
	mov	si,0xa886		; 0000A90B  BE86A8  '...'
	mov	di,0x1c0		; 0000A90E  BFC001  '...'
	mov	cx,0x8			; 0000A911  B90800  '...'
	mov	ax,cs			; 0000A914  8CC8  '..'
xa916:	cs	movsw			; 0000A916  2EA5  '..'
	stosw				; 0000A918  AB  '.'
	loop	xa916			; 0000A919  E2FB  '..'
	mov	al,0x32			; 0000A91B  B032  '.2'
	out	0x84,al			; 0000A91D  E684  '..'
	mov	si,0xa846		; 0000A91F  BE46A8  '.F.'
	mov	di,0x0			; 0000A922  BF0000  '...'
	mov	cx,0x20			; 0000A925  B92000  '. .'
	mov	ax,cs			; 0000A928  8CC8  '..'
xa92a:	cs	movsw			; 0000A92A  2EA5  '..'
	stosw				; 0000A92C  AB  '.'
	loop	xa92a			; 0000A92D  E2FB  '..'
	push	di			; 0000A92F  57  'W'
	mov	di,0x7e			; 0000A930  BF7E00  '.~.'
	xor	ax,ax			; 0000A933  33C0  '3.'
	mov	[es:di],ax		; 0000A935  268905  '&..'
	pop	di			; 0000A938  5F  '_'
	mov	al,0x33			; 0000A939  B033  '.3'
	out	0x84,al			; 0000A93B  E684  '..'
	mov	ax,0x40			; 0000A93D  B84000  '.@.'
	mov	ds,ax			; 0000A940  8ED8  '..'
	mov	dx,0x1200		; 0000A942  BA0012  '...'
	in	al,0x80			; 0000A945  E480  '..'
	cmp	al,0x34			; 0000A947  3C34  '<4'
	jnz	xa94d			; 0000A949  7502  'u.'
	mov	dl,al			; 0000A94B  8AD0  '..'
xa94d:	mov	[0x72],dx		; 0000A94D  89167200  '..r.'
	mov	al,0x34			; 0000A951  B034  '.4'
	out	0x84,al			; 0000A953  E684  '..'
	mov	ah,0x90			; 0000A955  B490  '..'
	mov	cx,0x1e			; 0000A957  B91E00  '...'
	xor	bx,bx			; 0000A95A  33DB  '3.'
	xor	dx,dx			; 0000A95C  33D2  '3.'
xa95e:	mov	al,ah			; 0000A95E  8AC4  '..'
	call	xb544			; 0000A960  E8E10B  '...'
	mov	dl,al			; 0000A963  8AD0  '..'
	add	bx,dx			; 0000A965  03DA  '..'
	inc	ah			; 0000A967  FEC4  '..'
	loop	xa95e			; 0000A969  E2F3  '..'
	mov	al,0xaf			; 0000A96B  B0AF  '..'
	call	xb544			; 0000A96D  E8D40B  '...'
	mov	dl,al			; 0000A970  8AD0  '..'
	mov	al,0xae			; 0000A972  B0AE  '..'
	call	xb544			; 0000A974  E8CD0B  '...'
	mov	dh,al			; 0000A977  8AF0  '..'
	cmp	dx,bx			; 0000A979  3BD3  ';.'
	jz	xa98f			; 0000A97B  7412  't.'
	mov	al,0x8e			; 0000A97D  B08E  '..'
	call	xb544			; 0000A97F  E8C20B  '...'
	or	al,0x40			; 0000A982  0C40  '.@'
	mov	ah,al			; 0000A984  8AE0  '..'
	mov	al,0x8e			; 0000A986  B08E  '..'
	call	xb549			; 0000A988  E8BE0B  '...'
	mov	al,0x35			; 0000A98B  B035  '.5'
	out	0x84,al			; 0000A98D  E684  '..'
xa98f:	mov	al,0x36			; 0000A98F  B036  '.6'
	out	0x84,al			; 0000A991  E684  '..'
	mov	bx,0x0			; 0000A993  BB0000  '...'
	mov	ax,ds			; 0000A996  8CD8  '..'
	mov	es,ax			; 0000A998  8EC0  '..'
	mov	al,0x38			; 0000A99A  B038  '.8'
	out	0x84,al			; 0000A99C  E684  '..'
	mov	si,0xa898		; 0000A99E  BE98A8  '...'
	mov	di,0x0			; 0000A9A1  BF0000  '...'
	mov	cx,0x2			; 0000A9A4  B90200  '...'
xa9a7:	cs	lodsw			; 0000A9A7  2EAD  '..'
	xchg	ax,dx			; 0000A9A9  92  '.'
	inc	dx			; 0000A9AA  42  'B'
	inc	dx			; 0000A9AB  42  'B'
	in	al,dx			; 0000A9AC  EC  '.'
	cmp	al,0xff			; 0000A9AD  3CFF  '<.'
	jz	xa9b8			; 0000A9AF  7407  't.'
	add	bh,0x2			; 0000A9B1  80C702  '...'
	dec	dx			; 0000A9B4  4A  'J'
	dec	dx			; 0000A9B5  4A  'J'
	xchg	ax,dx			; 0000A9B6  92  '.'
	stosw				; 0000A9B7  AB  '.'
xa9b8:	loop	xa9a7			; 0000A9B8  E2ED  '..'
	mov	al,0x39			; 0000A9BA  B039  '.9'
	out	0x84,al			; 0000A9BC  E684  '..'
	mov	si,0xa89c		; 0000A9BE  BE9CA8  '...'
	mov	di,0x8			; 0000A9C1  BF0800  '...'
	mov	cx,0x3			; 0000A9C4  B90300  '...'
xa9c7:	cs	lodsw			; 0000A9C7  2EAD  '..'
	xchg	ax,dx			; 0000A9C9  92  '.'
	in	al,dx			; 0000A9CA  EC  '.'
	not	al			; 0000A9CB  F6D0  '..'
	out	dx,al			; 0000A9CD  EE  '.'
	mov	ah,al			; 0000A9CE  8AE0  '..'
	in	al,dx			; 0000A9D0  EC  '.'
	cmp	al,ah			; 0000A9D1  3AC4  ':.'
	jnz	xa9da			; 0000A9D3  7505  'u.'
	add	bh,0x40			; 0000A9D5  80C740  '..@'
	xchg	ax,dx			; 0000A9D8  92  '.'
	stosw				; 0000A9D9  AB  '.'
xa9da:	loop	xa9c7			; 0000A9DA  E2EB  '..'
	mov	al,0x3a			; 0000A9DC  B03A  '.:'
	out	0x84,al			; 0000A9DE  E684  '..'
	mov	si,0xa8a2		; 0000A9E0  BEA2A8  '...'
	mov	di,0x78			; 0000A9E3  BF7800  '.x.'
	mov	cx,0x6			; 0000A9E6  B90600  '...'
xa9e9:	cs	rep movsw		; 0000A9E9  F32EA5  '...'
	test	cx,cx			; 0000A9EC  85C9  '..'
	jnz	xa9e9			; 0000A9EE  75F9  'u.'
	mov	ax,0x40			; 0000A9F0  B84000  '.@.'
	mov	ds,ax			; 0000A9F3  8ED8  '..'
	mov	[0x10],bx		; 0000A9F5  891E1000  '....'
	mov	al,0x3b			; 0000A9F9  B03B  '.;'
	out	0x84,al			; 0000A9FB  E684  '..'
	call	xc259			; 0000A9FD  E85918  '.Y.'
;
;   Set bit 2 (reserved?) and bit 4 (memory size?) of ROM BIOS Video Mode Options byte @40:0087.
;   It would appear that COMPAQ had a different conception of this byte; however, in the case of an
;   adapter like the IBM VGA, it doesn't matter, since the IBM VGA ROM will rewrite this byte anyway.
;
	or	byte [0x87],0x14	; 0000AA00  800E870014  '.....'
	mov	al,0x8e			; 0000AA05  B08E  '..'
	call	xb544			; 0000AA07  E83A0B  '.:.'
	test	al,0x40			; 0000AA0A  A840  '.@'
	jnz	xaa1e			; 0000AA0C  7510  'u.'
	mov	al,0xad			; 0000AA0E  B0AD  '..'
	call	xb544			; 0000AA10  E8310B  '.1.'
	test	al,0x5			; 0000AA13  A805  '..'
	jz	xaa1e			; 0000AA15  7407  't.'
	and	byte [0x87],0xfb	; 0000AA17  80268700FB  '.&...'
	jmp	short xaa2f		; 0000AA1C  EB11  '..'

xaa1e:	mov	bx,xba77		; 0000AA1E  BB77BA  '.w.'
	mov	es,[cs:bx+0x6]		; 0000AA21  2E8E4706  '..G.'
	call	x9e1c			; 0000AA25  E8F4F3  '...'
	jz	xaa2f			; 0000AA28  7405  't.'
	and	byte [0x87],0xfb	; 0000AA2A  80268700FB  '.&...'
xaa2f:	mov	byte [0x84],0x18	; 0000AA2F  C606840018  '.....'
	mov	al,0x94			; 0000AA34  B094  '..'
	call	xb544			; 0000AA36  E80B0B  '...'
	and	al,0x30			; 0000AA39  2430  '$0'
	mov	ah,al			; 0000AA3B  8AE0  '..'
	push	ax			; 0000AA3D  50  'P'
	push	ds			; 0000AA3E  1E  '.'
	mov	al,0x52			; 0000AA3F  B052  '.R'
	out	0x84,al			; 0000AA41  E684  '..'
	call	x9a83			; 0000AA43  E83DF0  '.=.'
	pop	ds			; 0000AA46  1F  '.'
	pop	ax			; 0000AA47  58  'X'
	jz	xaa59			; 0000AA48  740F  't.'
	cmp	ah,0x0			; 0000AA4A  80FC00  '...'
	jz	xaa52			; 0000AA4D  7403  't.'
	call	xab87			; 0000AA4F  E83501  '.5.'
xaa52:	mov	al,0x53			; 0000AA52  B053  '.S'
	out	0x84,al			; 0000AA54  E684  '..'
	call	x9a97			; 0000AA56  E83EF0  '.>.'
xaa59:	ret				; 0000AA59  C3  '.'

xaa5a:	mov	ax,0x40			; 0000AA5A  B84000  '.@.'
	mov	ds,ax			; 0000AA5D  8ED8  '..'
	call	xd03e			; 0000AA5F  E8DC25  '..%'
	jc	xaa6d			; 0000AA62  7209  'r.'
	cmp	al,0x5			; 0000AA64  3C05  '<.'
	jnz	xaa6d			; 0000AA66  7505  'u.'
	and	byte [0x87],0xfb	; 0000AA68  80268700FB  '.&...'
xaa6d:	ret				; 0000AA6D  C3  '.'

	db	0xFF			; 0000AA6E  FF  '.'
	db	0xFF			; 0000AA6F  FF  '.'
	db	0xFF			; 0000AA70  FF  '.'
	jmp	xae12			; 0000AA71  E99E03

xaa74:	mov	al,0x50			; 0000AA74  B050  '.P'
	out	0x84,al			; 0000AA76  E684  '..'
	mov	ax,0x40			; 0000AA78  B84000  '.@.'
	mov	ds,ax			; 0000AA7B  8ED8  '..'
	mov	al,0x51			; 0000AA7D  B051  '.Q'
	out	0x84,al			; 0000AA7F  E684  '..'
	mov	al,0x8e			; 0000AA81  B08E  '..'
	call	xb544			; 0000AA83  E8BE0A  '..',0x0A
	test	al,0xc0			; 0000AA86  A8C0  '..'
	jz	xaa8f			; 0000AA88  7405  't.'
	mov	ah,0xff			; 0000AA8A  B4FF  '..'
	jmp	short xaa98		; 0000AA8C  EB0A  '.',0x0A

	nop				; 0000AA8E  90  '.'
xaa8f:	mov	al,0x94			; 0000AA8F  B094  '..'
	call	xb544			; 0000AA91  E8B00A  '..',0x0A
	and	al,0x30			; 0000AA94  2430  '$0'
	mov	ah,al			; 0000AA96  8AE0  '..'
xaa98:	push	ax			; 0000AA98  50  'P'
	push	ds			; 0000AA99  1E  '.'
	mov	al,0x52			; 0000AA9A  B052  '.R'
	out	0x84,al			; 0000AA9C  E684  '..'
	call	x9a83			; 0000AA9E  E8E2EF  '...'
	pop	ds			; 0000AAA1  1F  '.'
	pop	ax			; 0000AAA2  58  'X'
	jz	xaab5			; 0000AAA3  7410  't.'
	ret				; 0000AAA5  C3  '.'

	nop				; 0000AAA6  90  '.'
	nop				; 0000AAA7  90  '.'
	jz	xaaad			; 0000AAA8  7403  't.'
	call	xab87			; 0000AAAA  E8DA00  '...'
xaaad:	mov	al,0x53			; 0000AAAD  B053  '.S'
	out	0x84,al			; 0000AAAF  E684  '..'
	call	x9a97			; 0000AAB1  E8E3EF  '...'
	ret				; 0000AAB4  C3  '.'

xaab5:	push	ds			; 0000AAB5  1E  '.'
	push	es			; 0000AAB6  06  '.'
	push	ax			; 0000AAB7  50  'P'
	call	x9e5a			; 0000AAB8  E89FF3  '...'
	jz	xaac9			; 0000AABB  740C  't.'
	xor	ax,ax			; 0000AABD  33C0  '3.'
	mov	es,ax			; 0000AABF  8EC0  '..'
	mov	di,0x74			; 0000AAC1  BF7400  '.t.'
	mov	word [es:di],0xf0e4	; 0000AAC4  26C705E4F0  '&....'
xaac9:	and	byte [0x10],0xcf	; 0000AAC9  80261000CF  '.&...'
	or	byte [0x10],0x30	; 0000AACE  800E100030  '....0'
	mov	ah,0x0			; 0000AAD3  B400  '..'
	mov	al,0x7			; 0000AAD5  B007  '..'
	int	0x10			; 0000AAD7  CD10  '..'
	and	byte [0x10],0xcf	; 0000AAD9  80261000CF  '.&...'
	or	byte [0x10],0x20	; 0000AADE  800E100020  '.... '
	mov	ah,0x0			; 0000AAE3  B400  '..'
	mov	al,0x3			; 0000AAE5  B003  '..'
	int	0x10			; 0000AAE7  CD10  '..'
	call	xab96			; 0000AAE9  E8AA00  '...'
	pop	ax			; 0000AAEC  58  'X'
	pop	es			; 0000AAED  07  '.'
	pop	ds			; 0000AAEE  1F  '.'
	mov	al,0x54			; 0000AAEF  B054  '.T'
	out	0x84,al			; 0000AAF1  E684  '..'
	mov	bp,0xaaf9		; 0000AAF3  BDF9AA  '...'
	jmp	xac31			; 0000AAF6  E93801  '.8.'

	and	al,0x40			; 0000AAF9  2440  '$@'
	push	ax			; 0000AAFB  50  'P'
	call	0xab1f			; 0000AAFC  E82000  '. .'
	pop	ax			; 0000AAFF  58  'X'
	jnc	xab1e			; 0000AB00  731C  's.'
	not	al			; 0000AB02  F6D0  '..'
	and	al,0x40			; 0000AB04  2440  '$@'
	push	ax			; 0000AB06  50  'P'
	mov	al,0x55			; 0000AB07  B055  '.U'
	out	0x84,al			; 0000AB09  E684  '..'
	pop	ax			; 0000AB0B  58  'X'
	call	xab1f			; 0000AB0C  E81000  '...'
	jnc	xab1e			; 0000AB0F  730D  's',0x0D
	mov	al,0x56			; 0000AB11  B056  '.V'
	out	0x84,al			; 0000AB13  E684  '..'
	call	xc7ab			; 0000AB15  E8931C
	call	xc791			; 0000AB18  E8761C  '.v.'
	call	xc791			; 0000AB1B  E8731C  '.s.'
xab1e:	ret				; 0000AB1E  C3  '.'

xab1f:	mov	dx,xba77		; 0000AB1F  BA77BA  '.w.'
	mov	bx,dx			; 0000AB22  8BDA  '..'
	add	bx,byte +0xf		; 0000AB24  83C30F  '...'
	or	al,al			; 0000AB27  0AC0  0x0A,'.'
	jnz	xab6b			; 0000AB29  7540  'u@'
	xchg	dx,bx			; 0000AB2B  87D3  '..'
	mov	al,0x1			; 0000AB2D  B001  '..'
	mov	ch,0x10			; 0000AB2F  B510  '..'
	cmp	ah,0x10			; 0000AB31  80FC10  '...'
	jz	xab46			; 0000AB34  7410  't.'
	mov	al,0x3			; 0000AB36  B003  '..'
	mov	ch,0x20			; 0000AB38  B520  '. '
	cmp	ah,0x20			; 0000AB3A  80FC20  '.. '
	jz	xab46			; 0000AB3D  7407  't.'
	call	xab87			; 0000AB3F  E84500  '.E.'
	mov	al,0x3			; 0000AB42  B003  '..'
	mov	ch,0x20			; 0000AB44  B520  '. '
xab46:	and	byte [0x10],0xcf	; 0000AB46  80261000CF  '.&...'
	or	[0x10],ch		; 0000AB4B  082E1000  '....'
	push	ax			; 0000AB4F  50  'P'
	push	bx			; 0000AB50  53  'S'
	mov	es,[cs:bx+0x6]		; 0000AB51  2E8E4706  '..G.'
	call	x9e1c			; 0000AB55  E8C4F2  '...'
	pop	bx			; 0000AB58  5B  '['
	pop	ax			; 0000AB59  58  'X'
	jz	xab5e			; 0000AB5A  7402  't.'
	stc				; 0000AB5C  F9  '.'
	ret				; 0000AB5D  C3  '.'

xab5e:	push	ax			; 0000AB5E  50  'P'
	mov	al,0x57			; 0000AB5F  B057  '.W'
	out	0x84,al			; 0000AB61  E684  '..'
	pop	ax			; 0000AB63  58  'X'
	mov	ah,0x0			; 0000AB64  B400  '..'
	int	0x10			; 0000AB66  CD10  '..'
	xor	ax,ax			; 0000AB68  33C0  '3.'
	ret				; 0000AB6A  C3  '.'

xab6b:	push	bx			; 0000AB6B  53  'S'
	cmp	ah,0x30			; 0000AB6C  80FC30  '..0'
	jz	xab74			; 0000AB6F  7403  't.'
	call	xab87			; 0000AB71  E81300  '...'
xab74:	or	byte [0x10],0x30	; 0000AB74  800E100030  '....0'
	pop	bx			; 0000AB79  5B  '['
	mov	es,[cs:bx+0x6]		; 0000AB7A  2E8E4706  '..G.'
	call	x9e1c			; 0000AB7E  E89BF2  '...'
	mov	al,0x7			; 0000AB81  B007  '..'
	jz	xab5e			; 0000AB83  74D9  't.'
	stc				; 0000AB85  F9  '.'
	ret				; 0000AB86  C3  '.'

xab87:	mov	al,0x8e			; 0000AB87  B08E  '..'
	call	xb544			; 0000AB89  E8B809  '...'
	or	al,0x20			; 0000AB8C  0C20  '. '
	mov	ah,al			; 0000AB8E  8AE0  '..'
	mov	al,0x8e			; 0000AB90  B08E  '..'
	call	xb549			; 0000AB92  E8B409  '...'
	ret				; 0000AB95  C3  '.'

xab96:	mov	al,0x58			; 0000AB96  B058  '.X'
	out	0x84,al			; 0000AB98  E684  '..'
	push	cs			; 0000AB9A  0E  '.'
	pop	ds			; 0000AB9B  1F  '.'
	mov	bx,xba77		; 0000AB9C  BB77BA  '.w.'
xab9f:	mov	al,0x59			; 0000AB9F  B059  '.Y'
	out	0x84,al			; 0000ABA1  E684  '..'
	mov	es,[bx+0x6]		; 0000ABA3  8E4706  '.G.'
	call	x9e1c			; 0000ABA6  E873F2  '.s.'
	jz	xabae			; 0000ABA9  7403  't.'
	jmp	short xac1c		; 0000ABAB  EB6F  '.o'

	nop				; 0000ABAD  90  '.'
xabae:	mov	al,0x5a			; 0000ABAE  B05A  '.Z'
	out	0x84,al			; 0000ABB0  E684  '..'
	mov	al,0x1			; 0000ABB2  B001  '..'
	cmp	word [bx],0x3b8		; 0000ABB4  813FB803  '.?..'
	jnz	xabbc			; 0000ABB8  7502  'u.'
	mov	al,0x1			; 0000ABBA  B001  '..'
xabbc:	mov	dx,[bx]			; 0000ABBC  8B17  '..'
	out	dx,al			; 0000ABBE  EE  '.'
	mov	al,0x5b			; 0000ABBF  B05B  '.['
	out	0x84,al			; 0000ABC1  E684  '..'
	xor	dx,dx			; 0000ABC3  33D2  '3.'
xabc5:	xor	di,di			; 0000ABC5  33FF  '3.'
	mov	cx,[bx+0xd]		; 0000ABC7  8B4F0D  '.O',0x0D
xabca:	mov	ax,di			; 0000ABCA  8BC7  '..'
	xor	al,ah			; 0000ABCC  32C4  '2.'
	jpo	xabd2			; 0000ABCE  7B02  '{.'
	inc	al			; 0000ABD0  FEC0  '..'
xabd2:	xor	al,dl			; 0000ABD2  32C2  '2.'
	stosb				; 0000ABD4  AA  '.'
	loop	xabca			; 0000ABD5  E2F3  '..'
	xor	di,di			; 0000ABD7  33FF  '3.'
	mov	cx,[bx+0xd]		; 0000ABD9  8B4F0D  '.O',0x0D
xabdc:	mov	ax,di			; 0000ABDC  8BC7  '..'
	xor	al,ah			; 0000ABDE  32C4  '2.'
	jpo	xabe4			; 0000ABE0  7B02  '{.'
	inc	al			; 0000ABE2  FEC0  '..'
xabe4:	xor	al,dl			; 0000ABE4  32C2  '2.'
	scasb				; 0000ABE6  AE  '.'
	loope	xabdc			; 0000ABE7  E1F3  '..'
	jnz	xabf0			; 0000ABE9  7505  'u.'
	xor	dl,0xff			; 0000ABEB  80F2FF  '...'
	jnz	xabc5			; 0000ABEE  75D5  'u.'
xabf0:	mov	al,0x5c			; 0000ABF0  B05C  '.\'
	out	0x84,al			; 0000ABF2  E684  '..'
	pushf				; 0000ABF4  9C  '.'
	mov	bp,0xabfb		; 0000ABF5  BDFBAB  '...'
	jmp	x9bfa			; 0000ABF8  E9FFEF

	xor	cx,cx			; 0000ABFB  33C9  '3.'
	mov	dl,[bx+0x2]		; 0000ABFD  8A5702  '.W.'
	mov	ah,0xe			; 0000AC00  B40E  '..'
	call	xacf9			; 0000AC02  E8F400  '...'
	popf				; 0000AC05  9D  '.'
	jz	xac1c			; 0000AC06  7414  't.'
	mov	al,0x5d			; 0000AC08  B05D  '.]'
	out	0x84,al			; 0000AC0A  E684  '..'
	push	bx			; 0000AC0C  53  'S'
	mov	dx,[bx+0x8]		; 0000AC0D  8B5708  '.W.'
	xor	cx,cx			; 0000AC10  33C9  '3.'
	mov	cl,[bx+0xc]		; 0000AC12  8A4F0C  '.O.'
	mov	bx,[bx+0xa]		; 0000AC15  8B5F0A  '._',0x0A
	call	xc745			; 0000AC18  E82A1B  '.*.'
	pop	bx			; 0000AC1B  5B  '['
xac1c:	mov	al,0x5e			; 0000AC1C  B05E  '.^'
	out	0x84,al			; 0000AC1E  E684  '..'
	add	bx,byte +0xf		; 0000AC20  83C30F  '...'
	cmp	bx,0xba95		; 0000AC23  81FB95BA  '....'
	jnc	xac2c			; 0000AC27  7303  's.'
	jmp	xab9f			; 0000AC29  E973FF  '.s.'

xac2c:	mov	al,0x5f			; 0000AC2C  B05F  '._'
	out	0x84,al			; 0000AC2E  E684  '..'
	ret				; 0000AC30  C3  '.'

xac31:	mov	al,0xc0			; 0000AC31  B0C0  '..'
	out	0x64,al			; 0000AC33  E664  '.d'
	mov	cx,0xffff		; 0000AC35  B9FFFF  '...'
xac38:	in	al,0x64			; 0000AC38  E464  '.d'
	test	al,0x2			; 0000AC3A  A802  '..'
	jz	xac42			; 0000AC3C  7404  't.'
	loop	xac38			; 0000AC3E  E2F8  '..'
	jmp	short xac4d		; 0000AC40  EB0B  '..'

xac42:	mov	cx,0xffff		; 0000AC42  B9FFFF  '...'
xac45:	in	al,0x64			; 0000AC45  E464  '.d'
	test	al,0x1			; 0000AC47  A801  '..'
	jnz	xac5b			; 0000AC49  7510  'u.'
	loop	xac45			; 0000AC4B  E2F8  '..'

xac4d:	mov	bx,0xb810		; 0000AC4D  BB10B8  '...'	; BX -> '303-Keyboard Controller Error'
	mov	cx,0x1d			; 0000AC50  B91D00  '...'
	mov	bp,0xac59		; 0000AC53  BD59AC  '.Y.'
	jmp	xc7f7			; 0000AC56  E99E1B  '...'
xac59:	jmp	short xac59		; 0000AC59  EBFE		; HANG THE MACHINE

xac5b:	in	al,0x60			; 0000AC5B  E460  '.`'
	jmp	bp			; 0000AC5D  FFE5  '..'

	times	26 db 0xFF		; 0000AC5F - 0000AC78

	jmp	0xf000:0x8e31		; 0000AC79  EA318E00F0  '.1...'

	mov	[0x60],cx		; 0000AC7E  890E6000  '..`.'
	mov	al,[0x49]		; 0000AC82  A04900  '.I.'
	and	al,0xfe			; 0000AC85  24FE  '$.'
	cmp	al,0x2			; 0000AC87  3C02  '<.'
	jnz	xacb5			; 0000AC89  752A  'u*'
	xor	bx,bx			; 0000AC8B  33DB  '3.'
	mov	ds,bx			; 0000AC8D  8EDB  '..'
	lds	si,[0x74]		; 0000AC8F  C5367400  '.6t.'
	cmp	byte [si+0x19],0xd	; 0000AC93  807C190D  '.|.',0x0D
	jnz	xacb5			; 0000AC97  751C  'u.'
	test	cx,0x1818		; 0000AC99  F7C11818  '....'
	jnz	xacb5			; 0000AC9D  7516  'u.'
	mov	bx,cx			; 0000AC9F  8BD9  '..'
	and	bx,0x6060		; 0000ACA1  81E36060  '..``'
	mov	al,ch			; 0000ACA5  8AC5  '..'
	call	xacbb			; 0000ACA7  E81100  '...'
	mov	ch,al			; 0000ACAA  8AE8  '..'
	mov	al,cl			; 0000ACAC  8AC1  '..'
	call	xacbb			; 0000ACAE  E80A00  '.',0x0A,'.'
	mov	cl,al			; 0000ACB1  8AC8  '..'
	or	cx,bx			; 0000ACB3  0BCB  '..'
xacb5:	mov	ah,0xa			; 0000ACB5  B40A  '.',0x0A
	call	xacf9			; 0000ACB7  E83F00  '.?.'
	ret				; 0000ACBA  C3  '.'

xacbb:	and	al,0xf			; 0000ACBB  240F  '$.'
	mov	ah,0xe			; 0000ACBD  B40E  '..'
	mul	ah			; 0000ACBF  F6E4  '..'
	shr	ax,1			; 0000ACC1  D1E8  '..'
	shr	ax,1			; 0000ACC3  D1E8  '..'
	shr	ax,1			; 0000ACC5  D1E8  '..'
	adc	al,0x0			; 0000ACC7  1400  '..'
	ret				; 0000ACC9  C3  '.'

	cmp	bh,0x7			; 0000ACCA  80FF07  '...'
	ja	xad17			; 0000ACCD  7748  'wH'
	xchg	bh,bl			; 0000ACCF  86FB  '..'
	xor	bh,bh			; 0000ACD1  32FF  '2.'
	shl	bx,1			; 0000ACD3  D1E3  '..'
	mov	cx,[bp+0x2]		; 0000ACD5  8B4E02  '.N.'
	mov	[bx+0x50],cx		; 0000ACD8  898F5000  '..P.'
	mov	al,[0x62]		; 0000ACDC  A06200  '.b.'
	cmp	al,[bp+0x7]		; 0000ACDF  3A4607  ':F.'
	jnz	xad17			; 0000ACE2  7533  'u3'
xace4:	push	dx			; 0000ACE4  52  'R'
	xor	ax,ax			; 0000ACE5  33C0  '3.'
	xchg	al,ch			; 0000ACE7  86C5  '..'
	mul	word [0x4a]		; 0000ACE9  F7264A00  '.&J.'
	add	cx,ax			; 0000ACED  03C8  '..'
	mov	ax,[0x4e]		; 0000ACEF  A14E00  '.N.'
	shr	ax,1			; 0000ACF2  D1E8  '..'
	add	cx,ax			; 0000ACF4  03C8  '..'
	pop	dx			; 0000ACF6  5A  'Z'
	mov	ah,0xe			; 0000ACF7  B40E  '..'

xacf9:	mov	al,ah			; 0000ACF9  8AC4  '..'
	out	dx,al			; 0000ACFB  EE  '.'
	inc	dx			; 0000ACFC  42  'B'
	mov	al,ch			; 0000ACFD  8AC5  '..'
	jmp	short xad01		; 0000ACFF  EB00  '..'

xad01:	jmp	short xad03		; 0000AD01  EB00  '..'

xad03:	out	dx,al			; 0000AD03  EE  '.'
	dec	dx			; 0000AD04  4A  'J'
	inc	ah			; 0000AD05  FEC4  '..'
	mov	al,ah			; 0000AD07  8AC4  '..'
	jmp	short xad0b		; 0000AD09  EB00  '..'

xad0b:	jmp	short xad0d		; 0000AD0B  EB00  '..'

xad0d:	out	dx,al			; 0000AD0D  EE  '.'
	inc	dx			; 0000AD0E  42  'B'
	mov	al,cl			; 0000AD0F  8AC1  '..'
	jmp	short xad13		; 0000AD11  EB00  '..'

xad13:	jmp	short xad15		; 0000AD13  EB00  '..'

xad15:	out	dx,al			; 0000AD15  EE  '.'
	dec	dx			; 0000AD16  4A  'J'
xad17:	ret				; 0000AD17  C3  '.'

xad18:	mov	al,ah			; 0000AD18  8AC4  '..'
	out	dx,al			; 0000AD1A  EE  '.'
	inc	dx			; 0000AD1B  42  'B'
	mov	al,ch			; 0000AD1C  8AC5  '..'
	jmp	short xad20		; 0000AD1E  EB00  '..'

xad20:	jmp	short xad22		; 0000AD20  EB00  '..'

xad22:	out	dx,al			; 0000AD22  EE  '.'
	dec	dx			; 0000AD23  4A  'J'
	inc	ah			; 0000AD24  FEC4  '..'
	mov	al,ah			; 0000AD26  8AC4  '..'
	jmp	short xad2a		; 0000AD28  EB00  '..'

xad2a:	jmp	short xad2c		; 0000AD2A  EB00  '..'

xad2c:	out	dx,al			; 0000AD2C  EE  '.'
	inc	dx			; 0000AD2D  42  'B'
	mov	al,cl			; 0000AD2E  8AC1  '..'
	jmp	short xad32		; 0000AD30  EB00  '..'

xad32:	jmp	short xad34		; 0000AD32  EB00  '..'

xad34:	out	dx,al			; 0000AD34  EE  '.'
	dec	dx			; 0000AD35  4A  'J'
	jmp	bp			; 0000AD36  FFE5  '..'

;
;   This prepares a request to performed a copy of 0x21 DWORDs (0x84 bytes)
;   from 0x58:x0F378 (DS:BX) to (ES:DI) for 0x1F0 (DX) times, followed by a
;   final copy of 0x10 DWORDs (0x40 bytes).  DI advances, BX does not.
;
;   Note that 0x84 * 0x1F0 is 0xFFC0, and 0xFFC0 + 0x40 is 0x10000, or exactly
;   64Kb.  Also, DS is pointing to %F0000 and ES is pointing to %FF0000 (the
;   last 64Kb at the top of 16Mb).
;
;   DS:SI is the hard-coded address of a set of hard-coded values at %FF378.
;
xad38:	push	ds			; 0000AD38  1E  '.'
	mov	ax,0x58			; 0000AD39  B85800  '.X.'
	mov	ds,ax			; 0000AD3C  8ED8  '..'
	mov	bx,0xf378		; 0000AD3E  BB78F3  '.x.'
xad41:	mov	dx,0x1f0		; 0000AD41  BAF001  '...'
	mov	ax,0x10			; 0000AD44  B81000  '...'
	xor	di,di			; 0000AD47  33FF  '3.'
	mov	bp,0xad4f		; 0000AD49  BD4FAD  '.O.'
	jmp	xf68d			; 0000AD4C  E93E49  '.>I'
;
;   Now that the 64Kb buffer at ES:0 has been prepared, call xe80b to verify the buffer contents.
;
	in	al,0x61			; 0000AD4F  E461  '.a'
	or	al,0xc			; 0000AD51  0C0C  '..'
	out	0x61,al			; 0000AD53  E661  '.a'
	and	al,0xf3			; 0000AD55  24F3  '$.'
	out	0x61,al			; 0000AD57  E661  '.a'
	mov	dx,0x1f0		; 0000AD59  BAF001  '...'
	mov	ax,0x10			; 0000AD5C  B81000  '...'
	xor	di,di			; 0000AD5F  33FF  '3.'
	mov	bp,0xad67		; 0000AD61  BD67AD  '.g.'
	jmp	xe80b			; 0000AD64  E9A43A  '..:'

	jnc	xad74			; 0000AD67  730B  's.'
	push	si			; 0000AD69  56  'V'
	push	di			; 0000AD6A  57  'W'
	call	xf6a1			; 0000AD6B  E83349  '.3I'
	pop	di			; 0000AD6E  5F  '_'
	pop	si			; 0000AD6F  5E  '^'
	jc	xad8d			; 0000AD70  721B  'r.'
	jmp	short xadbf		; 0000AD72  EB4B  '.K'

xad74:	in	al,0x61			; 0000AD74  E461  '.a'
	test	al,0x40			; 0000AD76  A840  '.@'
	mov	eax,0x0			; 0000AD78  66B800000000  'f.....'
	jnz	xad8f			; 0000AD7E  750F  'u.'
	cmp	bx,pattern2		; 0000AD80  81FBFCF3  '....'
	jz	xad8b			; 0000AD84  7405  't.'
	mov	bx,pattern2		; 0000AD86  BBFCF3  '...'
	jmp	short xad41		; 0000AD89  EBB6  '..'

xad8b:	xor	ax,ax			; 0000AD8B  33C0  '3.'
xad8d:	pop	ds			; 0000AD8D  1F  '.'
	ret				; 0000AD8E  C3  '.'

xad8f:	push	ax			; 0000AD8F  50  'P'
	mov	al,[es:di]		; 0000AD90  268A05  '&..'
	mov	[es:di],al		; 0000AD93  268805  '&..'
	in	al,0x61			; 0000AD96  E461  '.a'
	or	al,0xc			; 0000AD98  0C0C  '..'
	out	0x61,al			; 0000AD9A  E661  '.a'
	and	al,0xf3			; 0000AD9C  24F3  '$.'
	out	0x61,al			; 0000AD9E  E661  '.a'
	pop	ax			; 0000ADA0  58  'X'
	or	eax,eax			; 0000ADA1  660BC0  'f..'
	jnz	xadbf			; 0000ADA4  7519  'u.'
	call	x86db			; 0000ADA6  E832D9  '.2.'
	xchg	ah,al			; 0000ADA9  86E0  '..'
	and	ah,0xf			; 0000ADAB  80E40F  '...'
	xor	si,si			; 0000ADAE  33F6  '3.'
	mov	cl,0x4			; 0000ADB0  B104  '..'
xadb2:	rcr	ah,1			; 0000ADB2  D0DC  '..'
	jnc	xadbb			; 0000ADB4  7305  's.'
	inc	si			; 0000ADB6  46  'F'
	loop	xadb2			; 0000ADB7  E2F9  '..'
	xor	si,si			; 0000ADB9  33F6  '3.'
xadbb:	xor	al,al			; 0000ADBB  32C0  '2.'
	jmp	short xadd6		; 0000ADBD  EB17  '..'

xadbf:	mov	eax,[si]		; 0000ADBF  668B04  'f..'
	xor	eax,[es:di]		; 0000ADC2  66263305  'f&3.'
	mov	si,di			; 0000ADC6  8BF7  '..'
	mov	cx,0x4			; 0000ADC8  B90400  '...'
xadcb:	test	al,0xff			; 0000ADCB  A8FF  '..'
	jnz	xadd6			; 0000ADCD  7507  'u.'
	shr	eax,0x8			; 0000ADCF  66C1E808  'f...'
	inc	si			; 0000ADD3  46  'F'
	loop	xadcb			; 0000ADD4  E2F5  '..'
xadd6:	mov	cl,al			; 0000ADD6  8AC8  '..'
	mov	dx,si			; 0000ADD8  8BD6  '..'
	pop	ds			; 0000ADDA  1F  '.'
	stc				; 0000ADDB  F9  '.'
	ret				; 0000ADDC  C3  '.'

	times	8 db 0xFF		; 0000ADDD - 0000ADE4

	push	word [bp+si-0x52]	; 0000ADE5  FF72AE  '.r.'
	cbw				; 0000ADE8  98  '.'
	scasb				; 0000ADE9  AE  '.'
	cmpsb				; 0000ADEA  A6  '.'
	scasb				; 0000ADEB  AE  '.'
	cmpsw				; 0000ADEC  A7  '.'
	scasw				; 0000ADED  AF  '.'
	sub	ax,0x5eb0		; 0000ADEE  2DB05E  '-.^'
	mov	al,0xa3			; 0000ADF1  B0A3  '..'
	mov	dl,0xa3			; 0000ADF3  B2A3  '..'
	mov	dl,0x9c			; 0000ADF5  B29C  '..'
	mov	al,0xe2			; 0000ADF7  B0E2  '..'
	mov	al,0xa6			; 0000ADF9  B0A6  '..'
	scasb				; 0000ADFB  AE  '.'
	cmpsw				; 0000ADFC  A7  '.'
	scasw				; 0000ADFD  AF  '.'
	dec	cx			; 0000ADFE  49  'I'
	mov	cl,0x71			; 0000ADFF  B171  '.q'
	mov	cl,0xa3			; 0000AE01  B1A3  '..'
	mov	dl,0xa3			; 0000AE03  B2A3  '..'
	mov	dl,0x3b			; 0000AE05  B23B  '.;'
	mov	cl,0x19			; 0000AE07  B119  '..'
	mov	dl,0xa3			; 0000AE09  B2A3  '..'
	mov	dl,0xa3			; 0000AE0B  B2A3  '..'
	mov	dl,0x44			; 0000AE0D  B244  '.D'
	mov	dl,0x70			; 0000AE0F  B270  '.p'
	mov	dl,0x80			; 0000AE11  B2

xae12:	cmp	dl,0x80			; 0000AE12  80FA80
	jnc	xae29			; 0000AE15  7312
	int	0x40			; 0000AE17  CD40
	push	ax			; 0000AE19  50  'P'
	pushf				; 0000AE1A  9C  '.'
	push	bp			; 0000AE1B  55  'U'
	mov	bp,sp			; 0000AE1C  8BEC  '..'
	mov	ax,[bp+0x2]		; 0000AE1E  8B4602  '.F.'
	mov	[bp+0xa],ax		; 0000AE21  89460A  '.F',0x0A
	pop	bp			; 0000AE24  5D  ']'
	popf				; 0000AE25  9D  '.'
	pop	ax			; 0000AE26  58  'X'
	jmp	short xae71		; 0000AE27  EB48  '.H'

xae29:	pusha				; 0000AE29  60  '`'
	push	ds			; 0000AE2A  1E  '.'
	push	es			; 0000AE2B  06  '.'
	push	byte +0x0		; 0000AE2C  6A00  'j.'
	mov	bp,sp			; 0000AE2E  8BEC  '..'
	cmp	ah,0x15			; 0000AE30  80FC15  '...'
	jna	xae3f			; 0000AE33  760A  'v',0x0A
	mov	ax,0x40			; 0000AE35  B84000  '.@.'
	mov	ds,ax			; 0000AE38  8ED8  '..'
	call	xb2a3			; 0000AE3A  E86604  '.f.'
	jmp	short xae6d		; 0000AE3D  EB2E  '..'

xae3f:	and	word [bp+0x1a],0xfffe	; 0000AE3F  81661AFEFF  '.f...'
	or	word [bp+0x1a],0x200	; 0000AE44  814E1A0002  '.N...'
	sti				; 0000AE49  FB  '.'
	cld				; 0000AE4A  FC  '.'
	xor	ax,ax			; 0000AE4B  33C0  '3.'
	mov	ds,ax			; 0000AE4D  8ED8  '..'
	les	si,[0x104]		; 0000AE4F  C4360401  '.6..'
	test	dl,0x1			; 0000AE53  F6C201  '...'
	jz	xae5c			; 0000AE56  7404  't.'
	les	si,[0x118]		; 0000AE58  C4361801  '.6..'
xae5c:	mov	bx,0x40			; 0000AE5C  BB4000  '.@.'
	mov	ds,bx			; 0000AE5F  8EDB  '..'
	mov	bx,ax			; 0000AE61  8BD8  '..'
	mov	bl,[bp+0x15]		; 0000AE63  8A5E15  '.^.'
	shl	bx,1			; 0000AE66  D1E3  '..'
	call	near [cs:bx+0xade6]	; 0000AE68  2EFF97E6AD  '.....'
xae6d:	pop	es			; 0000AE6D  07  '.'
	pop	es			; 0000AE6E  07  '.'
	pop	ds			; 0000AE6F  1F  '.'
	popa				; 0000AE70  61  'a'
xae71:	iret				; 0000AE71  CF  '.'

	mov	[bp+0x15],ah		; 0000AE72  886615  '.f.'
	mov	[0x74],ah		; 0000AE75  88267400  '.&t.'
	mov	dl,0x0			; 0000AE79  B200  '..'
	int	0x40			; 0000AE7B  CD40  '.@'
	mov	al,[bp+0x10]		; 0000AE7D  8A4610  '.F.'
	and	al,0x9f			; 0000AE80  249F  '$.'
	cmp	al,0x80			; 0000AE82  3C80  '<.'
	jc	xae97			; 0000AE84  7211  'r.'
	cmp	al,0x81			; 0000AE86  3C81  '<.'
	ja	xae97			; 0000AE88  770D  'w',0x0D
	call	xc5a2			; 0000AE8A  E81517  '...'
	call	xb17e			; 0000AE8D  E8EE02  '...'
	jnc	xae97			; 0000AE90  7305  's.'
	mov	ah,0x5			; 0000AE92  B405  '..'
	call	xb471			; 0000AE94  E8DA05  '...'
xae97:	ret				; 0000AE97  C3  '.'

	mov	al,[0x74]		; 0000AE98  A07400  '.t.'
	mov	[bp+0x14],al		; 0000AE9B  884614  '.F.'
	mov	[0x74],ah		; 0000AE9E  88267400  '.&t.'
	mov	[bp+0x15],ah		; 0000AEA2  886615  '.f.'
	ret				; 0000AEA5  C3  '.'

	call	xb483			; 0000AEA6  E8DA05  '...'
	jc	xaefe			; 0000AEA9  7253  'rS'
	call	xb395			; 0000AEAB  E8E704  '...'
	mov	al,0x20			; 0000AEAE  B020  '. '
	test	byte [es:si+0x8],0xc0	; 0000AEB0  26F64408C0  '&.D..'
	jz	xaeb9			; 0000AEB5  7402  't.'
	or	al,0x1			; 0000AEB7  0C01  '..'
xaeb9:	cmp	byte [bp+0x15],0xa	; 0000AEB9  807E150A  '.~.',0x0A
	jnz	xaed0			; 0000AEBD  7511  'u.'
	or	al,0x2			; 0000AEBF  0C02  '..'
	push	ax			; 0000AEC1  50  'P'
	mov	al,[es:si+0x7]		; 0000AEC2  268A4407  '&.D.'
	or	al,al			; 0000AEC6  0AC0  0x0A,'.'
	jnz	xaecc			; 0000AEC8  7502  'u.'
	mov	al,0x4			; 0000AECA  B004  '..'
xaecc:	mov	[bp+0x0],al		; 0000AECC  884600  '.F.'
	pop	ax			; 0000AECF  58  'X'
xaed0:	mov	[0x48],al		; 0000AED0  A24800  '.H.'
	call	xb3e5			; 0000AED3  E80F05  '...'
	mov	es,dx			; 0000AED6  8EC2  '..'
	mov	di,ax			; 0000AED8  8BF8  '..'
	mov	dh,0x7f			; 0000AEDA  B67F  '..'
	cmp	byte [bp+0x15],0xa	; 0000AEDC  807E150A  '.~.',0x0A
	jz	xaee8			; 0000AEE0  7406  't.'
	or	al,ah			; 0000AEE2  0AC4  0x0A,'.'
	jnz	xaee8			; 0000AEE4  7502  'u.'
	inc	dh			; 0000AEE6  FEC6  '..'
xaee8:	or	ah,[bp+0x14]		; 0000AEE8  0A6614  0x0A,'f.'
	mov	[bp+0x1],ah		; 0000AEEB  886601  '.f.'
	jz	xaef4			; 0000AEEE  7404  't.'
	cmp	ah,dh			; 0000AEF0  3AE6  ':.'
	jna	xaef8			; 0000AEF2  7604  'v.'
xaef4:	mov	ah,0x9			; 0000AEF4  B409  '..'
	jmp	short xaf42		; 0000AEF6  EB4A  '.J'

xaef8:	call	xb4bd			; 0000AEF8  E8C205  '...'
xaefb:	call	xb4d0			; 0000AEFB  E8D205  '...'
xaefe:	jc	xaf42			; 0000AEFE  7242  'rB'
	call	xb2e0			; 0000AF00  E8DD03  '...'
	jc	xaf42			; 0000AF03  723D  'r='
	mov	bh,al			; 0000AF05  8AF8  '..'
	call	xb50e			; 0000AF07  E80406
	jnc	xaf1e			; 0000AF0A  7312  's.'
	cmp	ah,0x11			; 0000AF0C  80FC11  '...'
	jz	xaf1b			; 0000AF0F  740A  't',0x0A
	test	bh,0x8			; 0000AF11  F6C708  '...'
	jz	xaf42			; 0000AF14  742C  't,'
	call	xb42a			; 0000AF16  E81105  '...'
	jmp	short xaf42		; 0000AF19  EB27  '.',0x27

xaf1b:	call	xb471			; 0000AF1B  E85305  '.S.'
xaf1e:	call	xb44d			; 0000AF1E  E82C05  '.,.'
	jc	xaf42			; 0000AF21  721F  'r.'
	call	xb42a			; 0000AF23  E80405  '...'
	cmp	byte [bp+0x15],0xa	; 0000AF26  807E150A  '.~.',0x0A
	jnz	xaf31			; 0000AF2A  7505  'u.'
	call	xb433			; 0000AF2C  E80405  '...'
	jc	xaf42			; 0000AF2F  7211  'r.'
xaf31:	dec	byte [bp+0x1]		; 0000AF31  FE4E01  '.N.'
	jnz	xaefb			; 0000AF34  75C5  'u.'
	test	word [bp+0x1a],0x1	; 0000AF36  F7461A0100  '.F...'
	jnz	xaf45			; 0000AF3B  7508  'u.'
	call	xb468			; 0000AF3D  E82805  '.(.'
	jmp	short xaf45		; 0000AF40  EB03  '..'

xaf42:	call	xb471			; 0000AF42  E82C05  '.,.'
xaf45:	ret				; 0000AF45  C3  '.'

	db	'**********************************************************************************************'

	jmp	xb343			; 0000AFA4  E99C03

	call	xb483			; 0000AFA7  E8D904  '...'
	jc	xb029			; 0000AFAA  727D  'r}'
	call	xb395			; 0000AFAC  E8E603  '...'
	mov	al,0x30			; 0000AFAF  B030  '.0'
	test	byte [es:si+0x8],0xc0	; 0000AFB1  26F64408C0  '&.D..'
	jz	xafba			; 0000AFB6  7402  't.'
	or	al,0x1			; 0000AFB8  0C01  '..'
xafba:	cmp	byte [bp+0x15],0xb	; 0000AFBA  807E150B  '.~..'
	jnz	xafd1			; 0000AFBE  7511  'u.'
	or	al,0x2			; 0000AFC0  0C02  '..'
	push	ax			; 0000AFC2  50  'P'
	mov	al,[es:si+0x7]		; 0000AFC3  268A4407  '&.D.'
	or	al,al			; 0000AFC7  0AC0  0x0A,'.'
	jnz	xafcd			; 0000AFC9  7502  'u.'
	mov	al,0x4			; 0000AFCB  B004  '..'
xafcd:	mov	[bp+0x0],al		; 0000AFCD  884600  '.F.'
	pop	ax			; 0000AFD0  58  'X'
xafd1:	mov	[0x48],al		; 0000AFD1  A24800  '.H.'
	call	xb3e5			; 0000AFD4  E80E04  '...'
	mov	dh,0x7f			; 0000AFD7  B67F  '..'
	cmp	byte [bp+0x15],0xb	; 0000AFD9  807E150B  '.~..'
	jz	xafe5			; 0000AFDD  7406  't.'
	or	al,ah			; 0000AFDF  0AC4  0x0A,'.'
	jnz	xafe5			; 0000AFE1  7502  'u.'
	inc	dh			; 0000AFE3  FEC6  '..'
xafe5:	or	ah,[bp+0x14]		; 0000AFE5  0A6614  0x0A,'f.'
	mov	[bp+0x1],ah		; 0000AFE8  886601  '.f.'
	jz	xaff1			; 0000AFEB  7404  't.'
	cmp	ah,dh			; 0000AFED  3AE6  ':.'
	jna	xaff5			; 0000AFEF  7604  'v.'
xaff1:	mov	ah,0x9			; 0000AFF1  B409  '..'
	jmp	short xb029		; 0000AFF3  EB34  '.4'

xaff5:	call	xb4bd			; 0000AFF5  E8C504  '...'
	call	xb3e5			; 0000AFF8  E8EA03  '...'
	mov	bx,dx			; 0000AFFB  8BDA  '..'
	mov	si,ax			; 0000AFFD  8BF0  '..'
xafff:	call	xb44d			; 0000AFFF  E84B04  '.K.'
	call	xb3ff			; 0000B002  E8FA03  '...'
	cmp	byte [bp+0x15],0xb	; 0000B005  807E150B  '.~..'
	jnz	xb010			; 0000B009  7505  'u.'
	call	xb40c			; 0000B00B  E8FE03  '...'
	jc	xb029			; 0000B00E  7219  'r.'
xb010:	call	xb4d0			; 0000B010  E8BD04  '...'
	jc	xb029			; 0000B013  7214  'r.'
	call	xb2e0			; 0000B015  E8C802  '...'
	jc	xb029			; 0000B018  720F  'r.'
	call	xb50e			; 0000B01A  E8F104
	jc	xb029			; 0000B01D  720A  'r',0x0A
	dec	byte [bp+0x1]		; 0000B01F  FE4E01  '.N.'
	jnz	xafff			; 0000B022  75DB  'u.'
	call	xb468			; 0000B024  E84104  '.A.'
	jmp	short xb02c		; 0000B027  EB03  '..'

xb029:	call	xb471			; 0000B029  E84504  '.E.'
xb02c:	ret				; 0000B02C  C3  '.'

	call	xb483			; 0000B02D  E85304  '.S.'
	jc	xb05a			; 0000B030  7228  'r('
	call	xb395			; 0000B032  E86003  '.`.'
	mov	al,0x40			; 0000B035  B040  '.@'
	test	byte [es:si+0x8],0xc0	; 0000B037  26F64408C0  '&.D..'
	jz	xb040			; 0000B03C  7402  't.'
	or	al,0x1			; 0000B03E  0C01  '..'
xb040:	mov	[0x48],al		; 0000B040  A24800  '.H.'
	call	xb4bd			; 0000B043  E87704  '.w.'
	call	xb4d0			; 0000B046  E88704  '...'
	jc	xb05a			; 0000B049  720F  'r.'
	call	xb2e0			; 0000B04B  E89202  '...'
	jc	xb05a			; 0000B04E  720A  'r',0x0A
	call	xb50e			; 0000B050  E8BB04
	jc	xb05a			; 0000B053  7205  'r.'
	call	xb468			; 0000B055  E81004  '...'
	jmp	short xb05d		; 0000B058  EB03  '..'

xb05a:	call	xb471			; 0000B05A  E81404  '...'
xb05d:	ret				; 0000B05D  C3  '.'

	call	xb483			; 0000B05E  E82204  '.".'
	jc	xb098			; 0000B061  7235  'r5'
	call	xb395			; 0000B063  E82F03  './.'
	mov	al,[es:si+0xe]		; 0000B066  268A440E  '&.D.'
	mov	[0x43],al		; 0000B06A  A24300  '.C.'
	mov	byte [0x48],0x50	; 0000B06D  C606480050  '..H.P'
	call	xb4bd			; 0000B072  E84804  '.H.'
	call	xb44d			; 0000B075  E8D503  '...'
	jc	xb098			; 0000B078  721E  'r.'
	call	xb3e5			; 0000B07A  E86803  '.h.'
	mov	bx,dx			; 0000B07D  8BDA  '..'
	mov	si,ax			; 0000B07F  8BF0  '..'
	call	xb3ff			; 0000B081  E87B03  '.{.'
	call	xb4d0			; 0000B084  E84904  '.I.'
	jc	xb098			; 0000B087  720F  'r.'
	call	xb2e0			; 0000B089  E85402  '.T.'
	jc	xb098			; 0000B08C  720A  'r',0x0A
	call	xb50e			; 0000B08E  E87D04
	jc	xb098			; 0000B091  7205  'r.'
	call	xb468			; 0000B093  E8D203  '...'
	jmp	short xb09b		; 0000B096  EB03  '..'

xb098:	call	xb471			; 0000B098  E8D603  '...'
xb09b:	ret				; 0000B09B  C3  '.'

	mov	[bp+0x14],ax		; 0000B09C  894614  '.F.'
	mov	[0x74],al		; 0000B09F  A27400  '.t.'
	push	bx			; 0000B0A2  53  'S'
	mov	bl,[bp+0x10]		; 0000B0A3  8A5E10  '.^.'
	and	bl,0x9f			; 0000B0A6  80E39F  '...'
	cmp	bl,0x81			; 0000B0A9  80FB81  '...'
	pop	bx			; 0000B0AC  5B  '['
	jna	xb0bc			; 0000B0AD  760D  'v',0x0D
	mov	[bp+0x12],ax		; 0000B0AF  894612  '.F.'
	mov	[bp+0x10],ax		; 0000B0B2  894610  '.F.'
	mov	ah,0x7			; 0000B0B5  B407  '..'
	call	xb471			; 0000B0B7  E8B703  '...'
	jmp	short xb0e1		; 0000B0BA  EB25  '.%'

xb0bc:	mov	ax,[es:si]		; 0000B0BC  268B04  '&..'
	dec	ax			; 0000B0BF  48  'H'
	dec	ax			; 0000B0C0  48  'H'
	cmp	ax,0x3ff		; 0000B0C1  3DFF03  '=..'
	jna	xb0c9			; 0000B0C4  7603  'v.'
	mov	ax,0x3ff		; 0000B0C6  B8FF03  '...'
xb0c9:	xchg	ah,al			; 0000B0C9  86E0  '..'
	shl	al,0x6			; 0000B0CB  C0E006  '...'
	or	al,[es:si+0xe]		; 0000B0CE  260A440E  '&',0x0A,'D.'
	mov	[bp+0x12],ax		; 0000B0D2  894612  '.F.'
	mov	ah,[es:si+0x2]		; 0000B0D5  268A6402  '&.d.'
	dec	ah			; 0000B0D9  FECC  '..'
	mov	al,[0x75]		; 0000B0DB  A07500  '.u.'
	mov	[bp+0x10],ax		; 0000B0DE  894610  '.F.'
xb0e1:	ret				; 0000B0E1  C3  '.'

	call	xb483			; 0000B0E2  E89E03  '...'
	jc	xb137			; 0000B0E5  7250  'rP'
	mov	bl,[bp+0x10]		; 0000B0E7  8A5E10  '.^.'

xb0ea:	mov	bh,[es:si+0x2]		; 0000B0EA  268A7C02  '&.|.'
	dec	bh			; 0000B0EE  FECF  '..'
	or	bh,0xa0			; 0000B0F0  80CFA0  '...'
	test	bl,0x1			; 0000B0F3  F6C301  '...'
	jz	xb0fb			; 0000B0F6  7403  't.'
	or	bh,0x10			; 0000B0F8  80CF10  '...'
xb0fb:	mov	bl,[es:si+0xe]		; 0000B0FB  268A5C0E  '&.\.'
	mov	ax,[es:si+0x5]		; 0000B0FF  268B4405  '&.D.'
	shr	ax,0x2			; 0000B103  C1E802  '...'
	push	es			; 0000B106  06  '.'
	push	ds			; 0000B107  1E  '.'
	pop	es			; 0000B108  07  '.'
	mov	di,0x42			; 0000B109  BF4200  '.B.'
	stosb				; 0000B10C  AA  '.'
	mov	al,bl			; 0000B10D  8AC3  '..'
	stosb				; 0000B10F  AA  '.'
	mov	al,0x1			; 0000B110  B001  '..'
	stosb				; 0000B112  AA  '.'
	mov	al,ah			; 0000B113  8AC4  '..'
	stosb				; 0000B115  AA  '.'
	stosb				; 0000B116  AA  '.'
	mov	al,bh			; 0000B117  8AC7  '..'
	stosb				; 0000B119  AA  '.'
	mov	byte [di],0x91		; 0000B11A  C60591  '...'
	pop	es			; 0000B11D  07  '.'
	call	xb4bd			; 0000B11E  E89C03  '...'
	call	xb4d0			; 0000B121  E8AC03  '...'
	jc	xb135			; 0000B124  720F  'r.'
	call	xb2e0			; 0000B126  E8B701  '...'
	jc	xb135			; 0000B129  720A  'r',0x0A
	call	xb50e			; 0000B12B  E8E003
	jc	xb135			; 0000B12E  7205  'r.'
	call	xb468			; 0000B130  E83503  '.5.'
	jmp	short xb13a		; 0000B133  EB05  '..'

xb135:	mov	ah,0x7			; 0000B135  B407  '..'
xb137:	call	xb471			; 0000B137  E83703  '.7.'
xb13a:	ret				; 0000B13A  C3  '.'

	call	xb483			; 0000B13B  E84503  '.E.'
	jc	xb145			; 0000B13E  7205  'r.'
	call	xb468			; 0000B140  E82503  '.%.'
	jmp	short xb148		; 0000B143  EB03  '..'

xb145:	call	xb471			; 0000B145  E82903  '.).'
xb148:	ret				; 0000B148  C3  '.'

	call	xb483			; 0000B149  E83703  '.7.'
	jc	xb16d			; 0000B14C  721F  'r.'
	call	xb395			; 0000B14E  E84402  '.D.'

xb151:	mov	byte [0x48],0x70	; 0000B151  C606480070  '..H.p'
	call	xb4bd			; 0000B156  E86403  '.d.'
	call	xb4d0			; 0000B159  E87403  '.t.'
	jc	xb16d			; 0000B15C  720F  'r.'
	call	xb2e0			; 0000B15E  E87F01  '...'
	jc	xb16d			; 0000B161  720A  'r',0x0A
	call	xb50e			; 0000B163  E8A803
	jc	xb16d			; 0000B166  7205  'r.'
	call	xb468			; 0000B168  E8FD02  '...'
	jmp	short xb170		; 0000B16B  EB03  '..'

xb16d:	call	xb471			; 0000B16D  E80103  '...'
xb170:	ret				; 0000B170  C3  '.'

	call	xb483			; 0000B171  E80F03  '...'
	jnc	xb17e			; 0000B174  7308  's.'
	cmp	ah,0x1			; 0000B176  80FC01  '...'
	jnz	xb17e			; 0000B179  7503  'u.'
	jmp	xb215			; 0000B17B  E99700  '...'

xb17e:	push	ds			; 0000B17E  1E  '.'
	xor	ax,ax			; 0000B17F  33C0  '3.'
	mov	ds,ax			; 0000B181  8ED8  '..'
	les	si,[0x104]		; 0000B183  C4360401  '.6..'
	pop	ds			; 0000B187  1F  '.'
	call	xb395			; 0000B188  E80A02  '.',0x0A,'.'
	mov	byte [0x45],0x0		; 0000B18B  C606450000  '..E..'
	mov	byte [0x46],0x0		; 0000B190  C606460000  '..F..'
	and	byte [0x47],0xe0	; 0000B195  80264700E0  '.&G..'
	call	xb2e0			; 0000B19A  E84301  '.C.'
	mov	al,0xa0			; 0000B19D  B0A0  '..'
	mov	dx,0x1f6		; 0000B19F  BAF601  '...'
	out	dx,al			; 0000B1A2  EE  '.'
	call	xb527			; 0000B1A3  E88103  '...'
	call	xb151			; 0000B1A6  E8A8FF  '...'
	call	xb527			; 0000B1A9  E87B03  '.{.'
	cmp	byte [0x75],0x2		; 0000B1AC  803E750002  '.>u..'
	jc	xb1ca			; 0000B1B1  7217  'r.'
	or	byte [0x47],0x10	; 0000B1B3  800E470010  '..G..'
	call	xb2e0			; 0000B1B8  E82501  '.%.'
	mov	al,0xb0			; 0000B1BB  B0B0  '..'
	mov	dx,0x1f6		; 0000B1BD  BAF601  '...'
	out	dx,al			; 0000B1C0  EE  '.'
	call	xb527			; 0000B1C1  E86303  '.c.'
	call	xb151			; 0000B1C4  E88AFF  '...'
	call	xb527			; 0000B1C7  E85D03  '.].'
xb1ca:	and	word [bp+0x1a],0xfffe	; 0000B1CA  81661AFEFF  '.f...'
	mov	byte [bp+0x15],0x0	; 0000B1CF  C6461500  '.F..'
	call	xc565			; 0000B1D3  E88F13  '...'
	jc	xb213			; 0000B1D6  723B  'r;'
	push	ds			; 0000B1D8  1E  '.'
	xor	ax,ax			; 0000B1D9  33C0  '3.'
	mov	ds,ax			; 0000B1DB  8ED8  '..'
	les	si,[0x104]		; 0000B1DD  C4360401  '.6..'
	pop	ds			; 0000B1E1  1F  '.'
	mov	bl,0x80			; 0000B1E2  B380  '..'
	call	xb0ea			; 0000B1E4  E803FF  '...'
	jc	xb213			; 0000B1E7  722A  'r*'
	call	xb221			; 0000B1E9  E83500  '.5.'
	jc	xb213			; 0000B1EC  7225  'r%'
	cmp	byte [0x75],0x2		; 0000B1EE  803E750002  '.>u..'
	jnc	xb1f8			; 0000B1F3  7303  's.'
	clc				; 0000B1F5  F8  '.'
	jmp	short xb218		; 0000B1F6  EB20  '. '
xb1f8:	push	ds			; 0000B1F8  1E  '.'
	xor	ax,ax			; 0000B1F9  33C0  '3.'
	mov	ds,ax			; 0000B1FB  8ED8  '..'
	les	si,[0x118]		; 0000B1FD  C4361801  '.6..'
	pop	ds			; 0000B201  1F  '.'
	mov	bl,0x81			; 0000B202  B381  '..'
	call	xb0ea			; 0000B204  E8E3FE  '...'
	jc	xb213			; 0000B207  720A  'r',0x0A
	or	byte [0x47],0x10	; 0000B209  800E470010  '..G..'
	call	xb221			; 0000B20E  E81000  '...'
	jnc	xb218			; 0000B211  7305  's.'
xb213:	mov	ah,0x5			; 0000B213  B405  '..'
xb215:	call	xb471			; 0000B215  E85902  '.Y.'
xb218:	ret				; 0000B218  C3  '.'

	call	xb483			; 0000B219  E86702  '.g.'
	jc	xb23d			; 0000B21C  721F  'r.'
	call	xb395			; 0000B21E  E87401  '.t.'

xb221:	mov	byte [0x48],0x10	; 0000B221  C606480010  '..H..'
	call	xb4bd			; 0000B226  E89402  '...'
	call	xb4d0			; 0000B229  E8A402  '...'
	jc	xb23d			; 0000B22C  720F  'r.'
	call	xb2e0			; 0000B22E  E8AF00  '...'
	jc	xb23d			; 0000B231  720A  'r',0x0A
	call	xb50e			; 0000B233  E8D802
	jc	xb23d			; 0000B236  7205  'r.'
	call	xb468			; 0000B238  E82D02  '.-.'
	jmp	short xb240		; 0000B23B  EB03  '..'

xb23d:	call	xb471			; 0000B23D  E83102  '.1.'
xb240:	mov	[bp+0x14],al		; 0000B240  884614  '.F.'
	ret				; 0000B243  C3  '.'

	call	xb483			; 0000B244  E83C02  '.<.'
	jc	xb26c			; 0000B247  7223  'r#'
	call	xb395			; 0000B249  E84901  '.I.'
	mov	byte [0x48],0x90	; 0000B24C  C606480090  '..H..'
	call	xb4bd			; 0000B251  E86902  '.i.'
	call	xb4d0			; 0000B254  E87902  '.y.'
	jc	xb26c			; 0000B257  7213  'r.'
	call	xb2e0			; 0000B259  E88400  '...'
	jc	xb26c			; 0000B25C  720E  'r.'
	call	xb374			; 0000B25E  E81301
	xor	ah,ah			; 0000B261  32E4  '2.'
	mov	[bp+0x14],ax		; 0000B263  894614  '.F.'
	cmp	al,0x1			; 0000B266  3C01  '<.'
	jz	xb26f			; 0000B268  7405  't.'
	mov	ah,0x20			; 0000B26A  B420  '. '
xb26c:	call	xb471			; 0000B26C  E80202  '...'
xb26f:	ret				; 0000B26F  C3  '.'

	mov	bl,[0x75]		; 0000B270  8A1E7500  '..u.'
	dec	bl			; 0000B274  FECB  '..'
	add	bl,0x80			; 0000B276  80C380  '...'
	sub	bl,[bp+0x10]		; 0000B279  2A5E10  '*^.'
	jnc	xb289			; 0000B27C  730B  's.'
	mov	[bp+0x14],ax		; 0000B27E  894614  '.F.'
	mov	[bp+0x12],ax		; 0000B281  894612  '.F.'
	mov	[bp+0x10],ax		; 0000B284  894610  '.F.'
	jmp	short xb2a2		; 0000B287  EB19  '..'

xb289:	mov	word [bp+0x14],0x300	; 0000B289  C746140003  '.F...'
	mov	al,[es:si+0x2]		; 0000B28E  268A4402  '&.D.'
	mul	byte [es:si+0xe]	; 0000B292  26F6640E  '&.d.'
	mov	bx,[es:si]		; 0000B296  268B1C  '&..'
	dec	bx			; 0000B299  4B  'K'
	mul	bx			; 0000B29A  F7E3  '..'
	mov	[bp+0x10],ax		; 0000B29C  894610  '.F.'
	mov	[bp+0x12],dx		; 0000B29F  895612  '.V.'
xb2a2:	ret				; 0000B2A2  C3  '.'

xb2a3:	mov	byte [bp+0x14],0x0	; 0000B2A3  C6461400  '.F..'
	mov	ah,0x1			; 0000B2A7  B401  '..'
	mov	[bp+0x15],ah		; 0000B2A9  886615  '.f.'
	mov	[0x74],ah		; 0000B2AC  88267400  '.&t.'
	or	word [bp+0x1a],0x1	; 0000B2B0  814E1A0100  '.N...'
	ret				; 0000B2B5  C3  '.'

xb2b6:	call	xb2e0			; 0000B2B6  E82700  '.',0x27,'.'
	jc	xb2dc			; 0000B2B9  7221  'r!'
	mov	al,[bp+0x10]		; 0000B2BB  8A4610  '.F.'
	and	al,0x1			; 0000B2BE  2401  '$.'
	shl	al,0x4			; 0000B2C0  C0E004  '...'
	or	al,0xa0			; 0000B2C3  0CA0  '..'
	mov	dx,0x1f6		; 0000B2C5  BAF601  '...'
	out	dx,al			; 0000B2C8  EE  '.'
	call	xb2e0			; 0000B2C9  E81400  '...'
	jc	xb2dc			; 0000B2CC  720E  'r.'
	test	al,0x20			; 0000B2CE  A820  '. '
	jz	xb2d6			; 0000B2D0  7404  't.'
	mov	ah,0xcc			; 0000B2D2  B4CC  '..'
	jmp	short xb2dc		; 0000B2D4  EB06  '..'

xb2d6:	test	al,0x40			; 0000B2D6  A840  '.@'
	jnz	xb2df			; 0000B2D8  7505  'u.'
	mov	ah,0xaa			; 0000B2DA  B4AA  '..'
xb2dc:	call	xb471			; 0000B2DC  E89201  '...'
xb2df:	ret				; 0000B2DF  C3  '.'

xb2e0:	push	bx			; 0000B2E0  53  'S'
	push	cx			; 0000B2E1  51  'Q'
	call	xb364			; 0000B2E2  E87F00  '...'
	cmp	al,0xff			; 0000B2E5  3CFF  '<.'
	jnz	xb2ed			; 0000B2E7  7504  'u.'
	xchg	al,ah			; 0000B2E9  86C4  '..'
	jmp	short xb304		; 0000B2EB  EB17  '..'

xb2ed:	mov	bx,0x6			; 0000B2ED  BB0600  '...'
xb2f0:	mov	cx,0xf424		; 0000B2F0  B924F4  '.$.'
xb2f3:	test	al,0x80			; 0000B2F3  A880  '..'
	jz	xb305			; 0000B2F5  740E  't.'
	call	x919a			; 0000B2F7  E8A0DE  '...'
	call	xb364			; 0000B2FA  E86700  '.g.'
	loop	xb2f3			; 0000B2FD  E2F4  '..'
	dec	bx			; 0000B2FF  4B  'K'
	jnz	xb2f0			; 0000B300  75EE  'u.'
	mov	ah,0x80			; 0000B302  B480  '..'
xb304:	stc				; 0000B304  F9  '.'
xb305:	pop	cx			; 0000B305  59  'Y'
	pop	bx			; 0000B306  5B  '['
	ret				; 0000B307  C3  '.'

	db	'***********************************************************'

xb343:	push	ax			; 0000B343  50
	push	ds			; 0000B344  1E
	mov	ax,0x40			; 0000B345  B84000  '.@.'
	mov	ds,ax			; 0000B348  8ED8  '..'
	mov	byte [0x8e],0xff	; 0000B34A  C6068E00FF  '.....'
	mov	al,0x20			; 0000B34F  B020  '. '
	out	0x20,al			; 0000B351  E620  '. '
	out	0xa0,al			; 0000B353  E6A0  '..'
	xor	ax,ax			; 0000B355  33C0  '3.'
	mov	ds,ax			; 0000B357  8ED8  '..'
	mov	ax,0x9100		; 0000B359  B80091  '...'
	pushf				; 0000B35C  9C  '.'
	call	far [0x54]		; 0000B35D  FF1E5400  '..T.'
	pop	ds			; 0000B361  1F  '.'
	pop	ax			; 0000B362  58  'X'
	iret				; 0000B363  CF  '.'

xb364:	mov	dx,0x1f7		; 0000B364  BAF701  '...'
	in	al,dx			; 0000B367  EC  '.'
	mov	[0x8c],al		; 0000B368  A28C00  '...'
	ret				; 0000B36B  C3  '.'

	or	dl,[bx+si]		; 0000B36C  0A10  0x0A,'.'
	add	[si],al			; 0000B36E  0004  '..'
	add	[bx+si],ah		; 0000B370  0020  '. '
	inc	ax			; 0000B372  40  '@'
	db	0x02			; 0000B373  02

xb374:	mov	dx,0x01f1		; 0000B374  BAF101  '...'
	in	al,dx			; 0000B377  EC  '.'
	mov	[0x8d],al		; 0000B378  A28D00  '...'
	mov	ah,0x20			; 0000B37B  B420  '. '
	and	al,0xd7			; 0000B37D  24D7  '$.'
	jz	xb391			; 0000B37F  7410  't.'
	push	si			; 0000B381  56  'V'
	mov	si,0xb36c		; 0000B382  BE6CB3  '.l.'
xb385:	shl	al,1			; 0000B385  D0E0  '..'
	jc	xb38c			; 0000B387  7203  'r.'
	inc	si			; 0000B389  46  'F'
	jmp	short xb385		; 0000B38A  EBF9  '..'

xb38c:	cs	lodsb			; 0000B38C  2EAC  '..'
	pop	si			; 0000B38E  5E  '^'
	xchg	ah,al			; 0000B38F  86E0  '..'
xb391:	mov	al,[0x8d]		; 0000B391  A08D00  '...'
	ret				; 0000B394  C3  '.'

xb395:	mov	ax,[es:si+0x5]		; 0000B395  268B4405  '&.D.'
	shr	ax,0x2			; 0000B399  C1E802  '...'
	mov	[0x42],al		; 0000B39C  A24200  '.B.'
	mov	al,[bp+0x14]		; 0000B39F  8A4614  '.F.'
	mov	[0x43],al		; 0000B3A2  A24300  '.C.'
	mov	al,[bp+0x12]		; 0000B3A5  8A4612  '.F.'
	and	al,0x3f			; 0000B3A8  243F  '$?'
	mov	[0x44],al		; 0000B3AA  A24400  '.D.'
	mov	al,[bp+0x13]		; 0000B3AD  8A4613  '.F.'
	mov	[0x45],al		; 0000B3B0  A24500  '.E.'
	mov	al,[bp+0x12]		; 0000B3B3  8A4612  '.F.'
	shr	al,0x6			; 0000B3B6  C0E806  '...'
	mov	ah,[bp+0x10]		; 0000B3B9  8A6610  '.f.'
	and	ah,0x60			; 0000B3BC  80E460  '..`'
	shr	ah,0x3			; 0000B3BF  C0EC03  '...'
	or	al,ah			; 0000B3C2  0AC4  0x0A,'.'
	mov	[0x46],al		; 0000B3C4  A24600  '.F.'
	mov	al,[bp+0x10]		; 0000B3C7  8A4610  '.F.'
	and	al,0x1			; 0000B3CA  2401  '$.'
	shl	al,0x4			; 0000B3CC  C0E004  '...'
	or	al,0xa0			; 0000B3CF  0CA0  '..'
	mov	dh,[bp+0x11]		; 0000B3D1  8A7611  '.v.'
	and	dh,0xf			; 0000B3D4  80E60F  '...'
	or	al,dh			; 0000B3D7  0AC6  0x0A,'.'
	mov	[0x47],al		; 0000B3D9  A24700  '.G.'
	mov	al,[es:si+0x8]		; 0000B3DC  268A4408  '&.D.'
	mov	dx,0x3f6		; 0000B3E0  BAF603  '...'
	out	dx,al			; 0000B3E3  EE  '.'
	ret				; 0000B3E4  C3  '.'

xb3e5:	mov	ax,0x10			; 0000B3E5  B81000  '...'
	mul	word [bp+0x2]		; 0000B3E8  F76602  '.f.'
	add	ax,[bp+0xe]		; 0000B3EB  03460E  '.F.'
	adc	dl,0x0			; 0000B3EE  80D200  '...'
	push	ax			; 0000B3F1  50  'P'
	shl	dx,0xc			; 0000B3F2  C1E20C  '...'
	shr	ax,0x4			; 0000B3F5  C1E804  '...'
	or	dx,ax			; 0000B3F8  0BD0  '..'
	pop	ax			; 0000B3FA  58  'X'
	and	ax,0xf			; 0000B3FB  250F00  '%..'
	ret				; 0000B3FE  C3  '.'

xb3ff:	push	ds			; 0000B3FF  1E  '.'
	mov	ds,bx			; 0000B400  8EDB  '..'
	mov	cx,0x100		; 0000B402  B90001  '...'
	mov	dx,0x1f0		; 0000B405  BAF001  '...'
	rep	outsw			; 0000B408  F36F  '.o'
	pop	ds			; 0000B40A  1F  '.'
	ret				; 0000B40B  C3  '.'

xb40c:	xor	ch,ch			; 0000B40C  32ED  '2.'
	mov	cl,[bp+0x0]		; 0000B40E  8A4E00  '.N.'
xb411:	call	x919a			; 0000B411  E886DD  '...'
	call	xb2e0			; 0000B414  E8C9FE  '...'
	jc	xb429			; 0000B417  7210  'r.'
	call	xb44d			; 0000B419  E83100  '.1.'
	jc	xb429			; 0000B41C  720B  'r.'
	push	ds			; 0000B41E  1E  '.'
	mov	ds,bx			; 0000B41F  8EDB  '..'
	lodsb				; 0000B421  AC  '.'
	pop	ds			; 0000B422  1F  '.'
	mov	dx,0x1f0		; 0000B423  BAF001  '...'
	out	dx,al			; 0000B426  EE  '.'
	loop	xb411			; 0000B427  E2E8  '..'
xb429:	ret				; 0000B429  C3  '.'

xb42a:	mov	cx,0x100		; 0000B42A  B90001  '...'
	mov	dx,0x1f0		; 0000B42D  BAF001  '...'
	rep	insw			; 0000B430  F36D  '.m'
	ret				; 0000B432  C3  '.'

xb433:	xor	ch,ch			; 0000B433  32ED  '2.'
	mov	cl,[bp+0x0]		; 0000B435  8A4E00  '.N.'
xb438:	call	x919a			; 0000B438  E85FDD  '._.'
	call	xb2e0			; 0000B43B  E8A2FE  '...'
	jc	xb44c			; 0000B43E  720C  'r.'
	call	xb44d			; 0000B440  E80A00  '.',0x0A,'.'
	jc	xb44c			; 0000B443  7207  'r.'
	mov	dx,0x1f0		; 0000B445  BAF001  '...'
	in	al,dx			; 0000B448  EC  '.'
	stosb				; 0000B449  AA  '.'
	loop	xb438			; 0000B44A  E2EC  '..'
xb44c:	ret				; 0000B44C  C3  '.'

xb44d:	push	cx			; 0000B44D  51  'Q'
	mov	cx,0xf424		; 0000B44E  B924F4  '.$.'
	call	xb2e0			; 0000B451  E88CFE  '...'
	jc	xb466			; 0000B454  7210  'r.'
xb456:	mov	dx,0x1f7		; 0000B456  BAF701  '...'
	in	al,dx			; 0000B459  EC  '.'
	test	al,0x8			; 0000B45A  A808  '..'
	jnz	xb466			; 0000B45C  7508  'u.'
	call	x919a			; 0000B45E  E839DD  '.9.'
	loop	xb456			; 0000B461  E2F3  '..'
	mov	ah,0x80			; 0000B463  B480  '..'
	stc				; 0000B465  F9  '.'
xb466:	pop	cx			; 0000B466  59  'Y'
	ret				; 0000B467  C3  '.'

xb468:	call	xb364			; 0000B468  E8F9FE  '...'
	xor	ah,ah			; 0000B46B  32E4  '2.'
	mov	[bp+0x14],ax		; 0000B46D  894614  '.F.'
	ret				; 0000B470  C3  '.'

xb471:	mov	[bp+0x15],ah		; 0000B471  886615  '.f.'
	mov	byte [bp+0x14],0x0	; 0000B474  C6461400  '.F..'
	mov	[0x74],ah		; 0000B478  88267400  '.&t.'
	or	word [bp+0x1a],0x1	; 0000B47C  814E1A0100  '.N...'
	stc				; 0000B481  F9  '.'
	ret				; 0000B482  C3  '.'

xb483:	mov	byte [0x8e],0x0		; 0000B483  C6068E0000  '.....'
	mov	[0x74],ah		; 0000B488  88267400  '.&t.'
	mov	ah,[0x75]		; 0000B48C  8A267500  '.&u.'
	or	ah,ah			; 0000B490  0AE4  0x0A,'.'
	jz	xb4a5			; 0000B492  7411  't.'
	mov	al,[bp+0x10]		; 0000B494  8A4610  '.F.'
	and	al,0x9f			; 0000B497  249F  '$.'
	cmp	al,0x80			; 0000B499  3C80  '<.'
	jz	xb4ab			; 0000B49B  740E  't.'
	dec	ah			; 0000B49D  FECC  '..'
	jz	xb4a5			; 0000B49F  7404  't.'
	cmp	al,0x81			; 0000B4A1  3C81  '<.'
	jz	xb4ab			; 0000B4A3  7406  't.'
xb4a5:	call	xb2a3			; 0000B4A5  E8FBFD  '...'
	stc				; 0000B4A8  F9  '.'
	jmp	short xb4bc		; 0000B4A9  EB11  '..'

xb4ab:	mov	dx,0x3f6		; 0000B4AB  BAF603  '...'
	mov	al,0x0			; 0000B4AE  B000  '..'
	out	dx,al			; 0000B4B0  EE  '.'
	call	xc5a2			; 0000B4B1  E8EE10  '...'
	call	xb2b6			; 0000B4B4  E8FFFD  '...'
	jc	xb4bc			; 0000B4B7  7203  'r.'
	call	xb527			; 0000B4B9  E86B00  '.k.'
xb4bc:	ret				; 0000B4BC  C3  '.'

xb4bd:	push	si			; 0000B4BD  56  'V'
	push	cx			; 0000B4BE  51  'Q'
	mov	si,0x42			; 0000B4BF  BE4200  '.B.'
	mov	dx,0x1f1		; 0000B4C2  BAF101  '...'
	mov	cx,0x7			; 0000B4C5  B90700  '...'
xb4c8:	lodsb				; 0000B4C8  AC  '.'
	out	dx,al			; 0000B4C9  EE  '.'
	inc	dx			; 0000B4CA  42  'B'
	loop	xb4c8			; 0000B4CB  E2FB  '..'
	pop	cx			; 0000B4CD  59  'Y'
	pop	si			; 0000B4CE  5E  '^'
	ret				; 0000B4CF  C3  '.'

xb4d0:	push	bx			; 0000B4D0  53  'S'
	push	cx			; 0000B4D1  51  'Q'
	push	ds			; 0000B4D2  1E  '.'
	xor	ax,ax			; 0000B4D3  33C0  '3.'
	mov	ds,ax			; 0000B4D5  8ED8  '..'
	clc				; 0000B4D7  F8  '.'
	mov	ax,0x9000		; 0000B4D8  B80090  '...'
	pushf				; 0000B4DB  9C  '.'
	call	far [0x54]		; 0000B4DC  FF1E5400  '..T.'
	pop	ds			; 0000B4E0  1F  '.'
	jnc	xb4ed			; 0000B4E1  730A  's',0x0A
	xor	ax,ax			; 0000B4E3  33C0  '3.'
	or	al,[0x8e]		; 0000B4E5  0A068E00  0x0A,'...'
	jnz	xb506			; 0000B4E9  751B  'u.'
	jmp	short xb503		; 0000B4EB  EB16  '..'

xb4ed:	xor	ax,ax			; 0000B4ED  33C0  '3.'
	mov	bx,0x14			; 0000B4EF  BB1400  '...'
xb4f2:	mov	cx,0xf424		; 0000B4F2  B924F4  '.$.'
xb4f5:	or	al,[0x8e]		; 0000B4F5  0A068E00  0x0A,'...'
	jnz	xb506			; 0000B4F9  750B  'u.'
	call	x919a			; 0000B4FB  E89CDC  '...'
	loop	xb4f5			; 0000B4FE  E2F5  '..'
	dec	bx			; 0000B500  4B  'K'
	jnz	xb4f2			; 0000B501  75EF  'u.'
xb503:	mov	ah,0x80			; 0000B503  B480  '..'
	stc				; 0000B505  F9  '.'
xb506:	mov	byte [0x8e],0x0		; 0000B506  C6068E0000  '.....'
	pop	cx			; 0000B50B  59  'Y'
	pop	bx			; 0000B50C  5B  '['
	ret				; 0000B50D  C3  '.'

xb50e:	test	al,0x20			; 0000B50E  A820  '. '
	jz	xb516			; 0000B510  7404  't.'
	mov	ah,0xcc			; 0000B512  B4CC  '..'
	jmp	short xb525		; 0000B514  EB0F  '..'

xb516:	test	al,0x1			; 0000B516  A801  '..'
	jz	xb51f			; 0000B518  7405  't.'
	call	xb374			; 0000B51A  E857FE
	jmp	short xb525		; 0000B51D  EB06  '..'

xb51f:	test	al,0x4			; 0000B51F  A804  '..'
	jz	xb526			; 0000B521  7403  't.'
	mov	ah,0x11			; 0000B523  B411  '..'
xb525:	stc				; 0000B525  F9  '.'
xb526:	ret				; 0000B526  C3  '.'

xb527:	mov	cx,0xf424		; 0000B527  B924F4  '.$.'
	mov	dx,0x1f7		; 0000B52A  BAF701  '...'
	xor	ax,ax			; 0000B52D  33C0  '3.'
xb52f:	in	al,dx			; 0000B52F  EC  '.'
	test	al,0x10			; 0000B530  A810  '..'
	jnz	xb53c			; 0000B532  7508  'u.'
	call	x919a			; 0000B534  E863DC  '.c.'
	loop	xb52f			; 0000B537  E2F6  '..'
	mov	ah,0x80			; 0000B539  B480  '..'
	stc				; 0000B53B  F9  '.'
xb53c:	ret				; 0000B53C  C3  '.'

	mov	dx,0x3f6		; 0000B53D  BAF603  '...'
	mov	al,0x2			; 0000B540  B002  '..'
	out	dx,al			; 0000B542  EE  '.'
	ret				; 0000B543  C3  '.'

xb544:	out	0x70,al			; 0000B544  E670  '.p'
	in	al,0x71			; 0000B546  E471  '.q'
	ret				; 0000B548  C3  '.'

xb549:	out	0x70,al			; 0000B549  E670  '.p'
	mov	al,ah			; 0000B54B  8AC4  '..'
	out	0x71,al			; 0000B54D  E671  '.q'
	ret				; 0000B54F  C3  '.'

xb550:	mov	al,0x40			; 0000B550  B040  '.@'
	out	0x84,al			; 0000B552  E684  '..'
	mov	ax,0x40			; 0000B554  B84000  '.@.'
	mov	ds,ax			; 0000B557  8ED8  '..'
	mov	ax,[0x72]		; 0000B559  A17200  '.r.'
	out	0x80,al			; 0000B55C  E680  '..'
	cmp	al,0x34			; 0000B55E  3C34  '<4'
	jnz	xb564			; 0000B560  7502  'u.'
	jmp	bp			; 0000B562  FFE5  '..'

xb564:	mov	sp,bp			; 0000B564  8BE5  '..'
	mov	bl,0xff			; 0000B566  B3FF  '..'
	xor	di,di			; 0000B568  33FF  '3.'
	mov	bp,0xb570		; 0000B56A  BD70B5  '.p.'
	jmp	x8796			; 0000B56D  E926D2

xb570:	mov	al,0x41			; 0000B570  B041  '.A'
	out	0x84,al			; 0000B572  E684  '..'
;
;   Verify that RAM refresh is occurring, by confirming that bit 4 (0x10) of port 0x61 is alternating
;
	in	al,0x61			; 0000B574  E461  '.a'
	not	al			; 0000B576  F6D0  '..'
	and	al,0x10			; 0000B578  2410  '$.'
	mov	ah,al			; 0000B57A  8AE0  '..'
	mov	cx,0xffff		; 0000B57C  B9FFFF  '...'
xb57f:	in	al,0x61			; 0000B57F  E461  '.a'
	and	al,0x10			; 0000B581  2410  '$.'
	cmp	al,ah			; 0000B583  3AC4  ':.'
	jz	xb597			; 0000B585  7410  't.'
	loop	xb57f			; 0000B587  E2F6  '..'
;
;   Verification failed
;
	mov	bx,err102		; 0000B589  BB8CB6  '...'
	mov	cx,err102_len-2		; 0000B58C  B91800  '...'
	mov	bp,0xb595		; 0000B58F  BD95B5  '...'
	jmp	xc7f7			; 0000B592  E96212  '.b.'

	jmp	short xb570		; 0000B595  EBD9  '..'
;
;   Checkpoint 0x42: Memory test of the first 128Kb of (conventional) RAM
;
xb597:	mov	al,0x42			; 0000B597  B042  '.B'
	out	0x84,al			; 0000B599  E684  '..'

init_128kb:
	xor	ebp,ebp			; 0000B59B  6633ED  'f3.'
xb59e:	mov	dx,0x0			; 0000B59E  BA0000  '...'
	mov	eax,0x1			; 0000B5A1  66B801000000  'f.....'
	xor	eax,ebp			; 0000B5A7  6633C5  'f3.'
xb5aa:	mov	cx,0x4000		; 0000B5AA  B90040  '..@'
	mov	es,dx			; 0000B5AD  8EC2  '..'
	xor	di,di			; 0000B5AF  33FF  '3.'
	sahf				; 0000B5B1  9E  '.'
xb5b2:	rcl	eax,1			; 0000B5B2  66D1D0  'f..'
	stosd				; 0000B5B5  66AB  'f.'
	loop	xb5b2			; 0000B5B7  E2F9  '..'
	add	dh,0x10			; 0000B5B9  80C610  '...'
	cmp	dx,0x2000		; 0000B5BC  81FA0020  '... '
	jc	xb5aa			; 0000B5C0  72E8  'r.'
	mov	al,0x43			; 0000B5C2  B043  '.C'
	out	0x84,al			; 0000B5C4  E684  '..'
	in	al,0x61			; 0000B5C6  E461  '.a'
	or	al,0xc			; 0000B5C8  0C0C  '..'
	out	0x61,al			; 0000B5CA  E661  '.a'
	and	al,0xf3			; 0000B5CC  24F3  '$.'
	out	0x61,al			; 0000B5CE  E661  '.a'
	mov	al,0x44			; 0000B5D0  B044  '.D'
	out	0x84,al			; 0000B5D2  E684  '..'
	mov	di,0x0			; 0000B5D4  BF0000  '...'
	mov	ebx,0x1			; 0000B5D7  66BB01000000  'f.....'
	xor	ebx,ebp			; 0000B5DD  6633DD  'f3.'
	mov	eax,ebp			; 0000B5E0  668BC5  'f..'
	mov	dh,ah			; 0000B5E3  8AF4  '..'
xb5e5:	mov	ds,di			; 0000B5E5  8EDF  '..'
	xor	si,si			; 0000B5E7  33F6  '3.'
	mov	cx,0x4000		; 0000B5E9  B90040  '..@'
xb5ec:	mov	ah,dh			; 0000B5EC  8AE6  '..'
	sahf				; 0000B5EE  9E  '.'
	rcl	ebx,1			; 0000B5EF  66D1D3  'f..'
	lahf				; 0000B5F2  9F  '.'
	mov	dh,ah			; 0000B5F3  8AF4  '..'
	lodsd				; 0000B5F5  66AD  'f.'
	xor	eax,ebx			; 0000B5F7  6633C3  'f3.'
	loope	xb5ec			; 0000B5FA  E1F0  '..'
	jnz	xb642			; 0000B5FC  7544  'uD'
	mov	al,0x45			; 0000B5FE  B045  '.E'
	out	0x84,al			; 0000B600  E684  '..'
	in	al,0x61			; 0000B602  E461  '.a'
	test	al,0xc0			; 0000B604  A8C0  '..'
	mov	al,0x0			; 0000B606  B000  '..'
	jnz	xb625			; 0000B608  751B  'u.'
	add	di,0x1000		; 0000B60A  81C70010  '....'
	cmp	di,0x2000		; 0000B60E  81FF0020  '... '
	jc	xb5e5			; 0000B612  72D1  'r.'
	dec	ebp			; 0000B614  664D  'fM'
	jpo	xb61a			; 0000B616  7B02  '{.'
	jmp	short xb59e		; 0000B618  EB84  '..'

xb61a:	mov	al,0x46			; 0000B61A  B046  '.F'
	out	0x84,al			; 0000B61C  E684  '..'
	mov	ax,0x40			; 0000B61E  B84000  '.@.'
	mov	ds,ax			; 0000B621  8ED8  '..'
	jmp	sp			; 0000B623  FFE4  '..'

xb625:	xor	di,di			; 0000B625  33FF  '3.'
	mov	bp,0xb62d		; 0000B627  BD2DB6  '.-.'
	jmp	x87e4			; 0000B62A  E9B7D1  '...'

	and	bl,0xf			; 0000B62D  80E30F  '...'
	xor	si,si			; 0000B630  33F6  '3.'
	mov	cl,0x4			; 0000B632  B104  '..'
xb634:	rcr	bl,1			; 0000B634  D0DB  '..'
	jnc	xb63d			; 0000B636  7305  's.'
	inc	si			; 0000B638  46  'F'
	loop	xb634			; 0000B639  E2F9  '..'
	xor	si,si			; 0000B63B  33F6  '3.'
xb63d:	xor	al,al			; 0000B63D  32C0  '2.'
	jmp	short xb652		; 0000B63F  EB11  '..'
	nop				; 0000B641  90  '.'
;
;   The first 128Kb failed the above memory test
;
xb642:	mov	cx,0x4			; 0000B642  B90400  '...'
	sub	si,cx			; 0000B645  2BF1  '+.'
xb647:	test	al,0xff			; 0000B647  A8FF  '..'
	jnz	xb652			; 0000B649  7507  'u.'
	shr	eax,0x8			; 0000B64B  66C1E808  'f...'
	inc	si			; 0000B64F  46  'F'
	loop	xb647			; 0000B650  E2F5  '..'

xb652:	mov	cx,ax			; 0000B652  8BC8  '..'
	mov	al,0x47			; 0000B654  B047  '.G'
	out	0x84,al			; 0000B656  E684  '..'
	mov	dx,si			; 0000B658  8BD6  '..'
	mov	si,ds			; 0000B65A  8CDE  '..'
	mov	di,0x0			; 0000B65C  BF0000  '...'
	mov	bp,xb665		; 0000B65F  BD65B6  '.e.'
	jmp	xc6ab			; 0000B662  E94610  '.F.'

xb665:	mov	bx,err201		; 0000B665  BBA6B6  '...'
	mov	cx,err201_len		; 0000B668  B91100  '...'
	mov	bp,0xb671		; 0000B66B  BD71B6  '.q.'
	jmp	xc7f9			; 0000B66E  E98811  '...'
xb671:	jmp	short xb671		; 0000B671  EBFE		; HANG THE MACHINE

xb673:	mov	al,[di+0x32]		; 0000B673  8A4532  '.E2'
	and	al,0xfe			; 0000B676  24FE  '$.'
	cmp	al,0x2			; 0000B678  3C02  '<.'
	jnz	xb68a			; 0000B67A  750E  'u.'
	mov	dx,[di+0x4c]		; 0000B67C  8B554C  '.UL'
	add	dx,byte +0x4		; 0000B67F  83C204  '...'
	xor	byte [di+0x4e],0x80	; 0000B682  80754E80  '.uN.'
	mov	al,[di+0x4e]		; 0000B686  8A454E  '.EN'
	out	dx,al			; 0000B689  EE  '.'
xb68a:	stc				; 0000B68A  F9  '.'
	ret				; 0000B68B  C3  '.'

;
;   Error messages
;
err102:	db	'102-System Board Failure',0x0D,0x0A
err102_len equ $-err102

err201:	db	' 201-Memory Error'
err201_len equ $-err201

err203:	db	' 203-Memory Address Error'
err203_len equ $-err203

err205:	db	' 205-Memory Error',0x0D,0x0A
err205_len equ $-err205

err207:	db	' 207-Invalid Memory Configuration',0x0A,0x0D
err207_len equ $-err207

	db	' Base Module',0x00
	db	' Module A',0x00
	db	' Module B',0x00
	db	' Module C',0x00
	db	0x0D,0x0A
	db	'Parity Check 1 ',0x00
	db	'Parity Check 2 ',0x00
	db	'??????',0x00

err101:	db	'101-ROM Error',0x0D,0x0A
err101_len equ $-err101

	db	' 402-Monochrome Adapter Failure',0x0D,0x0A
	db	' 501-Display Adapter Failure',0x0D,0x0A
	db	' 301-Keyboard Error or Test Fixture Installed',0x0D,0x0A
	db	' 301-Keyboard Error',0x0D,0x0A
	db	' 304-Keyboard or System Unit Error',0x0D,0x0A
xb810:	db	'303-Keyboard Controller Error',0x0D,0x0A
	db	' 601-Diskette Controller Error',0x0D,0x0A
	db	' 702-Coprocessor Detection Error, Please Check Installation',0x0D,0x0A
	db	' 101-I/O ROM Error',0x0D,0x0A
	db	' 162-System Options Not Set-(Run Setup)',0x0D,0x0A
	db	'     Insert DIAGNOSTIC diskette in Drive A:',0x0D,0x0A
	db	' 162-System Options Error',0x0D,0x0A
	db	' 164-Memory Size Error',0x0D,0x0A
	db	' 163-Time & Date Not Set',0x0D,0x0A,0x0D,0x0A
	db	' (RESUME = "F1" KEY)',0x0D,0x0A,0x0D,0x0A
	db	' 302-System Unit Security Lock is Locked',0x0D,0x0A
	db	'     - Unlock System Unit Security Lock',0x0D,0x0A
	db	'1790-Disk 0 Error',0x0D,0x0A
	db	'1791-Disk 1 Error',0x0D,0x0A
	db	'1780-Disk 0 Failure',0x0D,0x0A
	db	'1781-Disk 1 Failure',0x0D,0x0A
	db	'1782-Disk Controller Failure',0x0D,0x0A
	db	' 605-Diskette Drive Type Error-(Run Setup)',0x0D,0x0A
	db	'     Insert DIAGNOSTIC diskette in Drive A:',0x0D,0x0A

;
;   Video card data
;
xba77:	dw	0x03D8			; 0000BA77  D803 	; +0x00: I/O address of Mode Select Register (CGA)
	db	0xD4,0x29,0xB4,0xF0	; 0000BA79  D429B4F0
	dw	0xB800			; 0000BA7D  00B8	; +0x06: real-mode segment of video buffer
	db	0x00,0x60,0x8A,0xB7	; 0000BA7F  00608AB7
	db	0x1E,0x00,0x40		; 0000BA83  1E0040

xba86:	dw	0x03B8			; 0000BA86  B803	; +0x00: I/O address of Mode Select Register (Mono)
	db	0xB4,0x29,0xD4,0xF0	; 0000BA88  B429D4F0
	dw	0xB000			; 0000BA8C  00B0	; +0x06: real-mode segment of video buffer
	db	0x00,0x60,0x69,0xB7	; 0000BA8E  006069B7
	db	0x21,0x00,0x10		; 0000BA92  210010
;
; Entry point for both SHUTDOWN 0x00 and 0x01
;
xba95:	mov	bp,xba9b		; 0000BA95  BD9BBA
	jmp	x9380			; 0000BA98  E9E5D8	; "CALL" to x9380 (WAIT FOR RTC SECONDS TO *NOT* BE 0xFF)
xba9b:	mov	al,0x8e			; 0000BA9B  B08E
	out	0x70,al			; 0000BA9D  E670
	xor	ax,ax			; 0000BA9F  33C0
	out	0x71,al			; 0000BAA1  E671
	mov	al,0x40			; 0000BAA3  B040
	out	0x86,al			; 0000BAA5  E686

xbaa7:	cli				; 0000BAA7  FA  '.'
	mov	al,0xf			; 0000BAA8  B00F  '..'
	out	0x84,al			; 0000BAAA  E684  '..'
	mov	al,0x0			; 0000BAAC  B000  '..'
	out	0x85,al			; 0000BAAE  E685  '..'
	mov	al,[cs:0xfffe]		; 0000BAB0  2EA0FEFF  '....'
	not	al			; 0000BAB4  F6D0  '..'
	mov	[cs:0xfffe],al		; 0000BAB6  2EA2FEFF  '....'
	cmp	al,[cs:0xfffe]		; 0000BABA  2E3A06FEFF  '.:...'
	jnz	xbad3			; 0000BABF  7512  'u.'
	mov	di,0x2			; 0000BAC1  BF0200  '...'
	mov	bp,0xbaca		; 0000BAC4  BDCABA  '...'
	jmp	x87e4			; 0000BAC7  E91ACD  '...'

	and	bl,0xbf			; 0000BACA  80E3BF  '...'
	mov	bp,0xbad3		; 0000BACD  BDD3BA  '...'
	jmp     x8796			; 0000BAD0  E9C3CC

xbad3:	cld				; 0000BAD3  FC  '.'
	mov	ax,0xf000		; 0000BAD4  B800F0  '...'
	mov	ds,ax			; 0000BAD7  8ED8  '..'
	mov	al,0xff			; 0000BAD9  B0FF  '..'
	out	0x21,al			; 0000BADB  E621  '.!'
	out	0xa1,al			; 0000BADD  E6A1  '..'
	mov	bx,bim_table_offset	; 0000BADF  BBE0FF  '...'
	mov	bx,[bx]			; 0000BAE2  8B1F  '..'
	test	word [bx],0xf00		; 0000BAE4  F707000F  '....'
	jnz	xbaf5			; 0000BAE8  750B  'u.'
	mov	bx,cpu_idrev_offset	; 0000BAEA  BBE2FF  '...'
	mov	bx,[bx]			; 0000BAED  8B1F  '..'
	mov	ax,[bx]			; 0000BAEF  8B07  '..'
	xchg	al,ah			; 0000BAF1  86C4  '..'
	mov	gs,ax			; 0000BAF3  8EE8  '..'
xbaf5:	mov	al,0xc			; 0000BAF5  B00C  '..'
	out	0x61,al			; 0000BAF7  E661  '.a'
	mov	al,0x10			; 0000BAF9  B010  '..'
	out	0x84,al			; 0000BAFB  E684  '..'
	mov	al,0x12			; 0000BAFD  B012  '..'
	out	0x4b,al			; 0000BAFF  E64B  '.K'
	mov	al,0x42			; 0000BB01  B042  '.B'
	out	0x4b,al			; 0000BB03  E64B  '.K'
	mov	al,0x92			; 0000BB05  B092  '..'
	out	0x4b,al			; 0000BB07  E64B  '.K'
	xor	al,al			; 0000BB09  32C0  '2.'
	out	0x8f,al			; 0000BB0B  E68F  '..'
	mov	al,0x54			; 0000BB0D  B054  '.T'
	out	0x43,al			; 0000BB0F  E643  '.C'
	mov	al,0x12			; 0000BB11  B012  '..'
	out	0x41,al			; 0000BB13  E641  '.A'
	mov	al,0x36			; 0000BB15  B036  '.6'
	out	0x43,al			; 0000BB17  E643  '.C'
	mov	al,0x0			; 0000BB19  B000  '..'
	out	0x40,al			; 0000BB1B  E640  '.@'
	mov	al,0x0			; 0000BB1D  B000  '..'
	out	0x40,al			; 0000BB1F  E640  '.@'
	mov	al,0xc			; 0000BB21  B00C  '..'
	mov	dx,0x3f2		; 0000BB23  BAF203  '...'
	out	dx,al			; 0000BB26  EE  '.'
	mov	al,0x11			; 0000BB27  B011  '..'
	out	0x84,al			; 0000BB29  E684  '..'
	mov	al,0x1			; 0000BB2B  B001  '..'
	mov	dx,0x3b8		; 0000BB2D  BAB803  '...'
	out	dx,al			; 0000BB30  EE  '.'
	mov	al,0x1			; 0000BB31  B001  '..'
	mov	dx,0x3d8		; 0000BB33  BAD803  '...'
	out	dx,al			; 0000BB36  EE  '.'
	mov	dx,0x3ba		; 0000BB37  BABA03  '...'
	in	al,dx			; 0000BB3A  EC  '.'
	mov	dx,0x3da		; 0000BB3B  BADA03  '...'
	in	al,dx			; 0000BB3E  EC  '.'
	mov	dx,0x3c0		; 0000BB3F  BAC003  '...'
	xor	al,al			; 0000BB42  32C0  '2.'
	out	dx,al			; 0000BB44  EE  '.'
	mov	bx,0xba77		; 0000BB45  BB77BA  '.w.'
xbb48:	mov	di,0xbb6e		; 0000BB48  BF6EBB  '.n.'
	mov	al,0x1			; 0000BB4B  B001  '..'
	mov	dx,[bx]			; 0000BB4D  8B17  '..'
	out	dx,al			; 0000BB4F  EE  '.'
	mov	si,[bx+0x4]		; 0000BB50  8B7704  '.w.'
	mov	dl,[bx+0x2]		; 0000BB53  8A5702  '.W.'
	mov	cx,0x12			; 0000BB56  B91200  '...'
	mov	bp,0xbb5f		; 0000BB59  BD5FBB  '._.'
	jmp	x9beb			; 0000BB5C  E98CE0  '...'

	add	dx,byte +0x5		; 0000BB5F  83C205  '...'
	cmp	dx,0x3d9		; 0000BB62  81FAD903  '....'
	jnz	xbb6b			; 0000BB66  7503  'u.'
	mov	al,0x30			; 0000BB68  B030  '.0'
	out	dx,al			; 0000BB6A  EE  '.'
xbb6b:	dec	dx			; 0000BB6B  4A  'J'
	jmp	di			; 0000BB6C  FFE7  '..'

	mov	al,0x12			; 0000BB6E  B012  '..'
	out	0x84,al			; 0000BB70  E684  '..'
	mov	bp,0xbb78		; 0000BB72  BD78BB  '.x.'
	jmp	x9bfa			; 0000BB75  E982E0

	xor	cx,cx			; 0000BB78  33C9  '3.'
	mov	dl,[bx+0x2]		; 0000BB7A  8A5702  '.W.'
	mov	ah,0xe			; 0000BB7D  B40E  '..'
	mov	bp,0xbb85		; 0000BB7F  BD85BB  '...'
	jmp	xad18			; 0000BB82  E993F1  '...'

	add	bx,byte +0xf		; 0000BB85  83C30F  '...'
	cmp	bx,0xba95		; 0000BB88  81FB95BA  '....'
	jc	xbb48			; 0000BB8C  72BA  'r.'
	mov	al,0x13			; 0000BB8E  B013  '..'
	out	0x84,al			; 0000BB90  E684  '..'
	mov	cx,0x100		; 0000BB92  B90001  '...'
xbb95:	xor	ax,ax			; 0000BB95  33C0  '3.'
	loop	xbb95			; 0000BB97  E2FC  '..'
	mov	al,0x0			; 0000BB99  B000  '..'
	out	0x43,al			; 0000BB9B  E643  '.C'
	in	al,0x40			; 0000BB9D  E440  '.@'
	mov	ah,al			; 0000BB9F  8AE0  '..'
	in	al,0x40			; 0000BBA1  E440  '.@'
	cmp	ax,0x0			; 0000BBA3  3D0000  '=..'
	jnz	xbbb6			; 0000BBA6  750E  'u.'

	mov	bx,err102		; 0000BBA8  BB8CB6  '...'
	mov	cx,err102_len-2		; 0000BBAB  B91800  '...'
	mov	bp,0xbbb4		; 0000BBAE  BDB4BB  '...'
	jmp	xc7f7			; 0000BBB1  E9430C  '.C.'
xbbb4:	jmp	short xbbb4		; 0000BBB4  EBFE		; HANG THE MACHINE

xbbb6:	mov	al,0x14			; 0000BBB6  B014  '..'
	out	0x84,al			; 0000BBB8  E684  '..'
	mov	al,0x8b			; 0000BBBA  B08B  '..'
	out	0x70,al			; 0000BBBC  E670  '.p'
	jmp	short xbbc0		; 0000BBBE  EB00  '..'

xbbc0:	jmp	short xbbc2		; 0000BBC0  EB00  '..'

xbbc2:	jmp	short xbbc4		; 0000BBC2  EB00  '..'

xbbc4:	in	al,0x71			; 0000BBC4  E471  '.q'
	and	al,0x7			; 0000BBC6  2407  '$.'
	mov	ah,al			; 0000BBC8  8AE0  '..'
	mov	al,0x8b			; 0000BBCA  B08B  '..'
	out	0x70,al			; 0000BBCC  E670  '.p'
	mov	al,ah			; 0000BBCE  8AC4  '..'
	out	0x71,al			; 0000BBD0  E671  '.q'
	mov	al,0x8c			; 0000BBD2  B08C  '..'
	out	0x70,al			; 0000BBD4  E670  '.p'
	mov	al,0x15			; 0000BBD6  B015  '..'
	out	0x84,al			; 0000BBD8  E684  '..'
	mov	al,0x8d			; 0000BBDA  B08D  '..'
	out	0x70,al			; 0000BBDC  E670  '.p'
	jmp	short xbbe0		; 0000BBDE  EB00  '..'

xbbe0:	jmp	short xbbe2		; 0000BBE0  EB00  '..'

xbbe2:	jmp	short xbbe4		; 0000BBE2  EB00  '..'

xbbe4:	in	al,0x71			; 0000BBE4  E471  '.q'
	and	al,0x80			; 0000BBE6  2480  '$.'
	mov	ah,al			; 0000BBE8  8AE0  '..'
	mov	al,0x8e			; 0000BBEA  B08E  '..'
	out	0x70,al			; 0000BBEC  E670  '.p'
	jmp	short xbbf0		; 0000BBEE  EB00  '..'

xbbf0:	jmp	short xbbf2		; 0000BBF0  EB00  '..'

xbbf2:	jmp	short xbbf4		; 0000BBF2  EB00  '..'

xbbf4:	in	al,0x71			; 0000BBF4  E471  '.q'
	and	al,0x80			; 0000BBF6  2480  '$.'
	test	ah,0x80			; 0000BBF8  F6C480  '...'
	mov	ah,al			; 0000BBFB  8AE0  '..'
	jnz	xbc06			; 0000BBFD  7507  'u.'
	or	ah,0x80			; 0000BBFF  80CC80  '...'
	mov	al,0x16			; 0000BC02  B016  '..'
	out	0x84,al			; 0000BC04  E684  '..'
xbc06:	mov	al,0x17			; 0000BC06  B017  '..'
	out	0x84,al			; 0000BC08  E684  '..'
	mov	al,0x8e			; 0000BC0A  B08E  '..'
	out	0x70,al			; 0000BC0C  E670  '.p'
	mov	al,ah			; 0000BC0E  8AC4  '..'
	out	0x71,al			; 0000BC10  E671  '.q'
	mov	al,0x18			; 0000BC12  B018  '..'
	out	0x84,al			; 0000BC14  E684  '..'

	;
	; Fall through to BC1C, but only if [40:72] contains 0x1234 (or at least, the low byte is 0x34).
	;
	; This appears to be the only place where xb550 is invoked (it outputs checkpoint 0x40 to port 0x84,
	; along with the low byte of [40:72] to port 0x80.
	;
	; If we do NOT fall through, then xb550 will take us, um, elsewhere.  Investigate that path if needed.
	;
	mov	bp,0xbc1c		; 0000BC16  BD1CBC  '...'
	jmp	xb550			; 0000BC19  E934F9  '.4.'

	in	al,0x61			; 0000BC1C  E461  '.a'		; READ 8042 RWREG
	and	al,0xf3			; 0000BC1E  24F3  '$.'		; CLEAR BITS 2 AND 3 (ENABLE COMPAQ_FSNMI AND COMPAQ_IONMI)
	out	0x61,al			; 0000BC20  E661  '.a'		; UPDATE 8042 RWREG
	mov	ax,0x30			; 0000BC22  B83000  '.0.'
	mov	ss,ax			; 0000BC25  8ED0  '..'
	mov	sp,0x100		; 0000BC27  BC0001  '...'
	mov	al,0x19			; 0000BC2A  B019  '..'
	out	0x84,al			; 0000BC2C  E684  '..'
	call	xa8ae			; 0000BC2E  E87DEC
	mov	al,0xad			; 0000BC31  B0AD  '..'		; AL = DISABLE_KBD COMMAND
	out	0x64,al			; 0000BC33  E664  '.d'
	mov	cx,0xffff		; 0000BC35  B9FFFF  '...'
xbc38:	in	al,0x64			; 0000BC38  E464  '.d'
	test	al,0x2			; 0000BC3A  A802  '..'
	jz	xbc4e			; 0000BC3C  7410  't.'
	loop	xbc38			; 0000BC3E  E2F8  '..'
	mov	bx,0xb810		; 0000BC40  BB10B8  '...'	; BX -> '303-Keyboard Controller Error'
	mov	cx,0x1d			; 0000BC43  B91D00  '...'
	mov	bp,0xbc4c		; 0000BC46  BD4CBC  '.L.'
	jmp	xc7f7			; 0000BC49  E9AB0B  '...'

xbc4c:	jmp	short xbc4c		; 0000BC4C  EBFE		; HANG THE MACHINE

xbc4e:	mov	cx,0x2			; 0000BC4E  B90200  '...'
xbc51:	in	al,0x60			; 0000BC51  E460  '.`'
	push	cx			; 0000BC53  51  'Q'
	mov	bx,0x1388		; 0000BC54  BB8813  '...'	; BX = 5000.
	call	xc638			; 0000BC57  E8DE09  '...'	; CALL DELAY(BX) (10,000ms? REALLY?)
	pop	cx			; 0000BC5A  59  'Y'
	in	al,0x64			; 0000BC5B  E464  '.d'
	test	al,0x1			; 0000BC5D  A801  '..'
	jz	xbc71			; 0000BC5F  7410  't.'
	loop	xbc51			; 0000BC61  E2EE  '..'
	mov	bx,0xb810		; 0000BC63  BB10B8  '...'	; BX -> '303-Keyboard Controller Error'
	mov	cx,0x1d			; 0000BC66  B91D00  '...'
	mov	bp,0xbc6f		; 0000BC69  BD6FBC  '.o.'
	jmp	xc7f7			; 0000BC6C  E9880B  '...'
xbc6f:	jmp	short xbc6f		; 0000BC6F  EBFE		; HANG THE MACHINE

xbc71:	call	xa3e0			; 0000BC71  E86CE7  '.l.'
	call	xaa5a			; 0000BC74  E8E3ED  '...'
	mov	al,0x1a			; 0000BC77  B01A  '..'
	out	0x84,al			; 0000BC79  E684  '..'
	call	xaa74			; 0000BC7B  E8F6ED  '...'
	mov	al,0x1b			; 0000BC7E  B01B  '..'
	out	0x84,al			; 0000BC80  E684  '..'
	call	x82e8			; 0000BC82  E863C6  '.c.'
	mov	al,0x1c			; 0000BC85  B01C  '..'
	out	0x84,al			; 0000BC87  E684  '..'
	call	xcc51			; 0000BC89  E8C50F  '...'
	mov	al,0x1d			; 0000BC8C  B01D  '..'
	out	0x84,al			; 0000BC8E  E684  '..'
	call	xcc88			; 0000BC90  E8F50F  '...'
	mov	al,0x2d			; 0000BC93  B02D  '.-'
	out	0x84,al			; 0000BC95  E684  '..'
	call	xe105			; 0000BC97  E86B24
	mov	al,0x1e			; 0000BC9A  B01E  '..'
	out	0x84,al			; 0000BC9C  E684  '..'
	call	xcfdd			; 0000BC9E  E83C13  '.<.'
	mov	al,0x1f			; 0000BCA1  B01F  '..'
	out	0x84,al			; 0000BCA3  E684  '..'
	call	xf745			; 0000BCA5  E89D3A  '..:'
	mov	al,0x20			; 0000BCA8  B020  '. '
	out	0x84,al			; 0000BCAA  E684  '..'
	call	xd6dd			; 0000BCAC  E82E1A  '...'
;
;   Switch to protected-mode, relocate the ROM, switch back to real-mode, disable
;   the A20 line, and then initialize all conventional RAM.
;
	call	xc825			; 0000BCAF  E8730B

	call	xf480			; 0000BCB2  E8CB37

	call	xe7df			; 0000BCB5  E8272B

	sti				; 0000BCB8  FB  '.'
	mov	al,0x21			; 0000BCB9  B021  '.!'
	out	0x84,al			; 0000BCBB  E684  '..'
	call	xcd6d			; 0000BCBD  E8AD10  '...'
	mov	al,0x23			; 0000BCC0  B023  '.#'
	out	0x84,al			; 0000BCC2  E684  '..'
	call	xcedb			; 0000BCC4  E81412  '...'
	mov	al,0x22			; 0000BCC7  B022  '."'
	out	0x84,al			; 0000BCC9  E684  '..'
	call	xce71			; 0000BCCB  E8A311  '...'
	mov	di,0x0			; 0000BCCE  BF0000  '...'
	mov	bp,0xbcd7		; 0000BCD1  BDD7BC  '...'
	jmp	x87e4			; 0000BCD4  E90DCB  '.',0x0D,'.'

	and	bl,0xc0			; 0000BCD7  80E3C0  '...'
	cmp	bl,0x40			; 0000BCDA  80FB40  '..@'
	jnz	xbce9			; 0000BCDD  750A  'u',0x0A
	mov	al,0xbe			; 0000BCDF  B0BE  '..'
	out	0x84,al			; 0000BCE1  E684  '..'
	mov	bp,0xbce9		; 0000BCE3  BDE9BC  '...'
	jmp	x8814			; 0000BCE6  E92BCB  '.+.'

xbce9:	mov	al,0x24			; 0000BCE9  B024  '.$'
	out	0x84,al			; 0000BCEB  E684  '..'
	in	al,0x60			; 0000BCED  E460  '.`'
	mov	al,0xd0			; 0000BCEF  B0D0  '..'
	out	0x64,al			; 0000BCF1  E664  '.d'
xbcf3:	in	al,0x64			; 0000BCF3  E464  '.d'
	test	al,0x2			; 0000BCF5  A802  '..'
	jz	xbcfb			; 0000BCF7  7402  't.'
	jmp	short xbcf3		; 0000BCF9  EBF8  '..'

xbcfb:	in	al,0x64			; 0000BCFB  E464  '.d'
	test	al,0x1			; 0000BCFD  A801  '..'
	jz	xbcfb			; 0000BCFF  74FA  't.'
	in	al,0x60			; 0000BD01  E460  '.`'
	and	al,0xfd			; 0000BD03  24FD  '$.'
	and	al,0xf3			; 0000BD05  24F3  '$.'
	mov	ah,al			; 0000BD07  8AE0  '..'
	mov	al,0xd1			; 0000BD09  B0D1  '..'
	out	0x64,al			; 0000BD0B  E664  '.d'
xbd0d:	in	al,0x64			; 0000BD0D  E464  '.d'
	test	al,0x2			; 0000BD0F  A802  '..'
	jnz	xbd0d			; 0000BD11  75FA  'u.'
	mov	al,ah			; 0000BD13  8AC4  '..'
	out	0x60,al			; 0000BD15  E660  '.`'
	mov	al,0x25			; 0000BD17  B025  '.%'
	out	0x84,al			; 0000BD19  E684  '..'
;
;   Perform some FDC initialization
;
	call	x91b0			; 0000BD1B

	mov	al,0x26			; 0000BD1E
	out	0x84,al			; 0000BD20
;
;   Perform some HDC initialization
;
	call	xc390			; 0000BD22  E86B06  '.k.'

	mov	al,0x27			; 0000BD25  B027  '.',0x27
	out	0x84,al			; 0000BD27  E684  '..'
	mov	al,0xec			; 0000BD29  B0EC  '..'
	mov	dx,0x3be		; 0000BD2B  BABE03  '...'
	out	dx,al			; 0000BD2E  EE  '.'
	mov	al,0x28			; 0000BD2F  B028  '.('
	out	0x84,al			; 0000BD31  E684  '..'
	call	x99b7			; 0000BD33  E881DC  '...'
	mov	al,0x29			; 0000BD36  B029  '.)'
	out	0x84,al			; 0000BD38  E684  '..'
	call	xe2c8			; 0000BD3A  E88B25  '..%'
	mov	al,0x2a			; 0000BD3D  B02A  '.*'
	out	0x84,al			; 0000BD3F  E684  '..'
	mov	ah,0xf			; 0000BD41  B40F  '..'
	int	0x10			; 0000BD43  CD10  '..'
	mov	ah,0x0			; 0000BD45  B400  '..'
	int	0x10			; 0000BD47  CD10  '..'
	in	al,0x61			; 0000BD49  E461  '.a'
	mov	ah,al			; 0000BD4B  8AE0  '..'
	or	al,0x6c			; 0000BD4D  0C6C  '.l'
	out	0x61,al			; 0000BD4F  E661  '.a'
	xchg	ah,al			; 0000BD51  86E0  '..'
	out	0x61,al			; 0000BD53  E661  '.a'
	mov	al,0x2b			; 0000BD55  B02B  '.+'
	out	0x84,al			; 0000BD57  E684  '..'
	mov	al,0xe			; 0000BD59  B00E  '..'
	call	xb544			; 0000BD5B  E8E6F7  '...'
	test	al,0x4			; 0000BD5E  A804  '..'
	jz	xbd6e			; 0000BD60  740C  't.'
	mov	dx,0x2000		; 0000BD62  BA0020  '.. '
	mov	bx,0xb929		; 0000BD65  BB29B9  '.).'
	mov	cx,0x1a			; 0000BD68  B91A00  '...'
	call	xc745			; 0000BD6B  E8D709  '...'
xbd6e:	in	al,0xa1			; 0000BD6E  E4A1  '..'
	and	al,0xfd			; 0000BD70  24FD  '$.'
	out	0xa1,al			; 0000BD72  E6A1  '..'
	in	al,0x21			; 0000BD74  E421  '.!'
	and	al,0xfb			; 0000BD76  24FB  '$.'
	out	0x21,al			; 0000BD78  E621  '.!'
	mov	ax,0x40			; 0000BD7A  B84000  '.@.'
	mov	ds,ax			; 0000BD7D  8ED8  '..'
	mov	byte [0x12],0x0		; 0000BD7F  C606120000  '.....'
	or	byte [0x96],0x80	; 0000BD84  800E960080  '.....'
	or	byte [0x96],0x20	; 0000BD89  800E960020  '.... '
	cli				; 0000BD8E  FA  '.'
	call	xec2e_wait_8042_ready	; 0000BD8F  E89C2E  '...'
	mov	al,0xf2			; 0000BD92  B0F2  '..'
	out	0x60,al			; 0000BD94  E660  '.`'
	sti				; 0000BD96  FB  '.'
	mov	cx,0xffff		; 0000BD97  B9FFFF  '...'

xbd9a:	test	byte [0x96],0x20	; 0000BD9A  F606960020  '.... '
	jz	xbda8			; 0000BD9F  7407  't.'
	loop	xbd9a			; 0000BDA1  E2F7

	mov	byte [0x96],0x0		; 0000BDA3  C606960000  '.....'
xbda8:	in	al,0x86			; 0000BDA8  E486  '..'
	cmp	word [0x72],0x1234	; 0000BDAA  813E72003412  '.>r.4.'
	jz	xbdcd			; 0000BDB0  741B  't.'
	mov	al,0x40			; 0000BDB2  B040  '.@'
	push	ax			; 0000BDB4  50  'P'
	call	xf30f			; 0000BDB5  E85735  '.W5'
	or	al,al			; 0000BDB8  0AC0  0x0A,'.'
	pop	ax			; 0000BDBA  58  'X'
	jnz	xbdbf			; 0000BDBB  7502  'u.'
	or	al,0x80			; 0000BDBD  0C80  '..'
xbdbf:	out	0x86,al			; 0000BDBF  E686  '..'
	call	xf32b			; 0000BDC1  E86735  '.g5'
	mov	al,0x92			; 0000BDC4  B092  '..'
	out	0x4b,al			; 0000BDC6  E64B  '.K'
	call	xc79e			; 0000BDC8  E8D309  '...'
	jmp	short xbe04		; 0000BDCB  EB37  '.7'

xbdcd:	test	al,0x40			; 0000BDCD  A840  '.@'
	jnz	xbdd5			; 0000BDCF  7504  'u.'
	test	al,0x80			; 0000BDD1  A880  '..'
	jnz	xbddc			; 0000BDD3  7507  'u.'
xbdd5:	call	xc79e			; 0000BDD5  E8C609  '...'	; BEEP
	mov	al,0x0			; 0000BDD8  B000  '..'
	jmp	short xbded		; 0000BDDA  EB11  '..'

xbddc:	and	al,0x3f			; 0000BDDC  243F  '$?'
	cmp	al,0x0			; 0000BDDE  3C00  '<.'
	jc	xbde8			; 0000BDE0  7206  'r.'
	cmp	al,0x34			; 0000BDE2  3C34  '<4'
	ja	xbde8			; 0000BDE4  7702  'w.'
	jmp	short xbded		; 0000BDE6  EB05  '..'

xbde8:	call	xc79e			; 0000BDE8  E8B309  '...'
	mov	al,0x0			; 0000BDEB  B000  '..'

xbded:	push	ax			; 0000BDED  50  'P'
	call	xf32b			; 0000BDEE  E83A35  '.:5'
	cli				; 0000BDF1  FA  '.'
	mov	al,0x92			; 0000BDF2  B092  '..'
	out	0x4b,al			; 0000BDF4  E64B  '.K'
	pop	ax			; 0000BDF6  58  'X'
	cmp	al,0x0			; 0000BDF7  3C00  '<.'
	jz	xbdfd			; 0000BDF9  7402  't.'
	out	0x4a,al			; 0000BDFB  E64A  '.J'
xbdfd:	mov	word [0x72],0x1200	; 0000BDFD  C70672000012  '..r...'
	sti				; 0000BE03  FB  '.'
xbe04:	call	xc79e			; 0000BE04  E89709  '...'
	mov	al,0x2c			; 0000BE07  B02C  '.,'
	out	0x84,al			; 0000BE09  E684  '..'
	call	xf130			; 0000BE0B  E82233  '."3'
	int	0x19			; 0000BE0E  CD19  '..'

xbe10:	mov	al,ah			; 0000BE10  8AC4  '..'
	and	al,0x7f			; 0000BE12  247F  '$.'
	push	cs			; 0000BE14  0E  '.'
	pop	es			; 0000BE15  07  '.'
	push	di			; 0000BE16  57  'W'
	mov	di,0xbf5c		; 0000BE17  BF5CBF  '.\.'
	mov	cx,0x8			; 0000BE1A  B90800  '...'
	repne	scasb			; 0000BE1D  F2AE  '..'
	pop	di			; 0000BE1F  5F  '_'
	clc				; 0000BE20  F8  '.'
	jz	xbe26			; 0000BE21  7403  't.'
	jmp	xbf5b			; 0000BE23  E93501  '.5.'

xbe26:	cmp	ah,0x2a			; 0000BE26  80FC2A  '..*'
	jnz	xbe35			; 0000BE29  750A  'u',0x0A
	test	byte [0x96],0x2		; 0000BE2B  F606960002  '.....'
	jz	xbe35			; 0000BE30  7403  't.'
	jmp	xbf5a			; 0000BE32  E92501  '.%.'

xbe35:	mov	bx,0x1000		; 0000BE35  BB0010  '...'
	rol	bx,cl			; 0000BE38  D3C3  '..'
	or	ah,ah			; 0000BE3A  0AE4  0x0A,'.'
	jns	xbeb9			; 0000BE3C  797B  'y{'
	cmp	ah,0xaa			; 0000BE3E  80FCAA  '...'
	jz	xbe48			; 0000BE41  7405  't.'
	cmp	ah,0xb6			; 0000BE43  80FCB6  '...'
	jnz	xbe52			; 0000BE46  750A  'u',0x0A
xbe48:	test	byte [0x96],0x2		; 0000BE48  F606960002  '.....'
	jz	xbe52			; 0000BE4D  7403  't.'
	jmp	xbf5a			; 0000BE4F  E90801  '...'

xbe52:	not	bx			; 0000BE52  F7D3  '..'
	cmp	ah,0xb8			; 0000BE54  80FCB8  '...'
	jnz	xbe81			; 0000BE57  7528  'u('
	test	byte [0x96],0x2		; 0000BE59  F606960002  '.....'
	jz	xbe73			; 0000BE5E  7413  't.'
	and	byte [0x96],0xf7	; 0000BE60  80269600F7  '.&...'
	and	byte [0x96],0xfd	; 0000BE65  80269600FD  '.&...'
	test	byte [0x18],0x2		; 0000BE6A  F606180002  '.....'
	jz	xbeb3			; 0000BE6F  7442  'tB'
	jmp	short xbeb7		; 0000BE71  EB44  '.D'

xbe73:	and	byte [0x18],0xfd	; 0000BE73  80261800FD  '.&...'
	test	byte [0x96],0x8		; 0000BE78  F606960008  '.....'
	jz	xbeb3			; 0000BE7D  7434  't4'
	jmp	short xbeb7		; 0000BE7F  EB36  '.6'

xbe81:	cmp	ah,0x9d			; 0000BE81  80FC9D  '...'
	jnz	xbeb3			; 0000BE84  752D  'u-'
	test	byte [0x96],0x1		; 0000BE86  F606960001  '.....'
	jnz	xbeb7			; 0000BE8B  752A  'u*'
	test	byte [0x96],0x2		; 0000BE8D  F606960002  '.....'
	jz	xbea7			; 0000BE92  7413  't.'
	and	byte [0x96],0xfb	; 0000BE94  80269600FB  '.&...'
	and	byte [0x96],0xfd	; 0000BE99  80269600FD  '.&...'
	test	byte [0x18],0x1		; 0000BE9E  F606180001  '.....'
	jz	xbeb3			; 0000BEA3  740E  't.'
	jmp	short xbeb7		; 0000BEA5  EB10  '..'

xbea7:	and	byte [0x18],0xfe	; 0000BEA7  80261800FE  '.&...'
	test	byte [0x96],0x4		; 0000BEAC  F606960004  '.....'
	jnz	xbeb7			; 0000BEB1  7504  'u.'
xbeb3:	and	[0x17],bx		; 0000BEB3  211E1700  '!...'
xbeb7:	stc				; 0000BEB7  F9  '.'
	ret				; 0000BEB8  C3  '.'

xbeb9:	cmp	ah,0x38			; 0000BEB9  80FC38  '..8'
	jnz	xbedd			; 0000BEBC  751F  'u.'
	test	byte [0x96],0x2		; 0000BEBE  F606960002  '.....'
	jz	xbed1			; 0000BEC3  740C  't.'
	or	byte [0x96],0x8		; 0000BEC5  800E960008  '.....'
	and	byte [0x96],0xfd	; 0000BECA  80269600FD  '.&...'
	jmp	short xbed6		; 0000BECF  EB05  '..'

xbed1:	or	byte [0x18],0x2		; 0000BED1  800E180002  '.....'
xbed6:	or	byte [0x17],0x8		; 0000BED6  800E170008  '.....'
	stc				; 0000BEDB  F9  '.'
	ret				; 0000BEDC  C3  '.'

xbedd:	cmp	ah,0x1d			; 0000BEDD  80FC1D  '...'
	jnz	xbf08			; 0000BEE0  7526  'u&'
	test	byte [0x96],0x1		; 0000BEE2  F606960001  '.....'
	jnz	xbf06			; 0000BEE7  751D  'u.'
	test	byte [0x96],0x2		; 0000BEE9  F606960002  '.....'
	jz	xbefc			; 0000BEEE  740C  't.'
	or	byte [0x96],0x4		; 0000BEF0  800E960004  '.....'
	and	byte [0x96],0xfd	; 0000BEF5  80269600FD  '.&...'
	jmp	short xbf01		; 0000BEFA  EB05  '..'

xbefc:	or	byte [0x18],0x1		; 0000BEFC  800E180001  '.....'
xbf01:	or	byte [0x17],0x4		; 0000BF01  800E170004  '.....'
xbf06:	stc				; 0000BF06  F9  '.'
	ret				; 0000BF07  C3  '.'

xbf08:	test	[0x17],bx		; 0000BF08  851E1700  '....'
	jnz	xbf55			; 0000BF0C  7547  'uG'
	or	[0x17],bx		; 0000BF0E  091E1700  '....'
	test	byte [0x17],0x4		; 0000BF12  F606170004  '.....'
	jnz	xbf55			; 0000BF17  753C  'u<'
	cmp	ah,0x52			; 0000BF19  80FC52  '..R'
	jnz	xbf51			; 0000BF1C  7533  'u3'
	test	byte [0x17],0x8		; 0000BF1E  F606170008  '.....'
	jnz	xbf5b			; 0000BF23  7536  'u6'
	test	byte [0x17],0x3		; 0000BF25  F606170003  '.....'
	jz	xbf3c			; 0000BF2A  7410  't.'
	test	byte [0x96],0x2		; 0000BF2C  F606960002  '.....'
	jnz	xbf4a			; 0000BF31  7517  'u.'
	test	byte [0x17],0x20	; 0000BF33  F606170020  '.... '
	jz	xbf4a			; 0000BF38  7410  't.'
	jmp	short xbf51		; 0000BF3A  EB15  '..'

xbf3c:	test	byte [0x96],0x2		; 0000BF3C  F606960002  '.....'
	jnz	xbf51			; 0000BF41  750E  'u.'
	test	byte [0x17],0x20	; 0000BF43  F606170020  '.... '
	jz	xbf51			; 0000BF48  7407  't.'
xbf4a:	and	byte [0x18],0x7f	; 0000BF4A  802618007F  '.&...'
	jmp	short xbf55		; 0000BF4F  EB04  '..'

xbf51:	xor	[0x17],bh		; 0000BF51  303E1700  '0>..'
xbf55:	cmp	ah,0x52			; 0000BF55  80FC52  '..R'
	jz	xbf5b			; 0000BF58  7401  't.'
xbf5a:	stc				; 0000BF5A  F9  '.'
xbf5b:	ret				; 0000BF5B  C3  '.'

	cmp	[di],bl			; 0000BF5C  381D  '8.'
	sub	dh,[0x3a52]		; 0000BF5E  2A36523A  '*6R:'
	inc	bp			; 0000BF62  45  'E'
	inc	si			; 0000BF63  46  'F'
xbf64:	test	byte [0x18],0x4		; 0000BF64  F606180004  '.....'
	jnz	xbf79			; 0000BF69  750E  'u.'
	or	byte [0x18],0x4		; 0000BF6B  800E180004  '.....'
	mov	ax,0x8500		; 0000BF70  B80085  '...'
xbf73:	call	xeb0c			; 0000BF73  E8962B  '..+'
	int	0x15			; 0000BF76  CD15  '..'
	inc	bp			; 0000BF78  45  'E'
xbf79:	stc				; 0000BF79  F9  '.'
	ret				; 0000BF7A  C3  '.'

xbf7b:	and	byte [0x18],0xfb	; 0000BF7B  80261800FB  '.&...'
	mov	ax,0x8501		; 0000BF80  B80185  '...'
	jmp	short xbf73		; 0000BF83  EBEE  '..'

xbf85:	mov	bx,0x7d			; 0000BF85  BB7D00  '.}.'
	call	xc7db			; 0000BF88  E85008  '.P.'
	stc				; 0000BF8B  F9  '.'
	ret				; 0000BF8C  C3  '.'

	mov	ah,0xf0			; 0000BF8D  B4F0  '..'
	mov	al,0x3			; 0000BF8F  B003  '..'
	pushf				; 0000BF91  9C  '.'
	push	cs			; 0000BF92  0E  '.'
	call	xe82e			; 0000BF93  E89828  '..('
	mov	ah,0xf1			; 0000BF96  B4F1  '..'
	pushf				; 0000BF98  9C  '.'
	push	cs			; 0000BF99  0E  '.'
	call	xe82e			; 0000BF9A  E89128  '..('
	cmp	al,0xff			; 0000BF9D  3CFF  '<.'
	jz	0xbfc1			; 0000BF9F  7420  't '
	mov	bx,0x7d			; 0000BFA1  BB7D00  '.}.'
	push	ax			; 0000BFA4  50  'P'
	call	xc7db			; 0000BFA5  E83308  '.3.'
	pop	ax			; 0000BFA8  58  'X'
	cmp	al,0x0			; 0000BFA9  3C00  '<.'
	jz	xbfc1			; 0000BFAB  7414  't.'
	cmp	al,0x1			; 0000BFAD  3C01  '<.'
	jz	xbfc1			; 0000BFAF  7410  't.'
	cmp	al,0x9			; 0000BFB1  3C09  '<.'
	jz	xbfc1			; 0000BFB3  740C  't.'
	mov	bx,0x7d			; 0000BFB5  BB7D00  '.}.'
	call	xc638			; 0000BFB8  E87D06  '.}.'	; CALL DELAY(BX)
	mov	bx,0x7d			; 0000BFBB  BB7D00  '.}.'
	call	xc7db			; 0000BFBE  E81A08  '...'
xbfc1:	stc				; 0000BFC1  F9  '.'
	ret				; 0000BFC2  C3  '.'

xbfc3:	cmp	ah,0xff			; 0000BFC3  80FCFF  '...'
	jnz	xbfca			; 0000BFC6  7502  'u.'
	jmp	short xbf85		; 0000BFC8  EBBB  '..'

xbfca:	cmp	ah,0x54			; 0000BFCA  80FC54  '..T'
	jnz	xbfd1			; 0000BFCD  7502  'u.'
	jmp	short xbf64		; 0000BFCF  EB93  '..'

xbfd1:	cmp	ah,0xd4			; 0000BFD1  80FCD4  '...'
	jnz	xbfd8			; 0000BFD4  7502  'u.'
	jmp	short xbf7b		; 0000BFD6  EBA3  '..'

xbfd8:	cmp	ah,0x45			; 0000BFD8  80FC45  '..E'
	jnz	xbfe0			; 0000BFDB  7503  'u.'
	jmp	short xc02e		; 0000BFDD  EB4F  '.O'

	nop				; 0000BFDF  90  '.'
xbfe0:	cmp	ah,0xb8			; 0000BFE0  80FCB8  '...'
	jnz	xbfe8			; 0000BFE3  7503  'u.'
	jmp	xc07f			; 0000BFE5  E99700  '...'

xbfe8:	cmp	ah,0x37			; 0000BFE8  80FC37  '..7'
	jnz	xbff0			; 0000BFEB  7503  'u.'
	jmp	xc09b			; 0000BFED  E9AB00  '...'

xbff0:	cmp	ah,0x52			; 0000BFF0  80FC52  '..R'
	jnz	xbff8			; 0000BFF3  7503  'u.'
	jmp	xc0cb			; 0000BFF5  E9D300  '...'

xbff8:	cmp	ah,0x46			; 0000BFF8  80FC46  '..F'
	jnz	xc000			; 0000BFFB  7503  'u.'
	jmp	xc0d6			; 0000BFFD  E9D600  '...'

xc000:	call	xc24c			; 0000C000  E84902  '.I.'
	jz	xc02c			; 0000C003  7427  't',0x27
	cmp	ah,[0x15]		; 0000C005  3A261500  ':&..'
	jz	xc07d			; 0000C009  7472  'tr'
	cmp	ah,0x53			; 0000C00B  80FC53  '..S'
	jnz	xc013			; 0000C00E  7503  'u.'
	jmp	xc093			; 0000C010  E98000  '...'

xc013:	cmp	ah,0xc			; 0000C013  80FC0C  '...'
	jz	xc090			; 0000C016  7478  'tx'
	cmp	ah,0x33			; 0000C018  80FC33  '..3'
	jnz	xc022			; 0000C01B  7505  'u.'
	mov	al,0x0			; 0000C01D  B000  '..'
	jmp	xc11e			; 0000C01F  E9FC00  '...'

xc022:	cmp	ah,0x34			; 0000C022  80FC34  '..4'
	jnz	xc02c			; 0000C025  7505  'u.'
	mov	al,0x1			; 0000C027  B001  '..'
	jmp	xc11e			; 0000C029  E9F200  '...'

xc02c:	clc				; 0000C02C  F8  '.'
	ret				; 0000C02D  C3  '.'

xc02e:	test	byte [0x96],0x1		; 0000C02E  F606960001  '.....'
	jnz	xc04f			; 0000C033  751A  'u.'
	test	byte [0x17],0x4		; 0000C035  F606170004  '.....'
	jz	xc02c			; 0000C03A  74F0  't.'
	test	byte [0x17],0x8		; 0000C03C  F606170008  '.....'
	jz	xc046			; 0000C041  7403  't.'
	jmp	xc0e4			; 0000C043  E99E00  '...'

xc046:	test	byte [0x96],0x10	; 0000C046  F606960010  '.....'
	jnz	xc02c			; 0000C04B  75DF  'u.'
	jmp	short xc054		; 0000C04D  EB05  '..'

xc04f:	and	byte [0x96],0xfe	; 0000C04F  80269600FE  '.&...'
xc054:	or	byte [0x18],0x8		; 0000C054  800E180008  '.....'
	cli				; 0000C059  FA  '.'
	call	xeb0c			; 0000C05A  E8AF2A  '..*'
	inc	bp			; 0000C05D  45  'E'
	sti				; 0000C05E  FB  '.'
	cmp	byte [0x49],0x2		; 0000C05F  803E490002  '.>I..'
	jz	xc06d			; 0000C064  7407  't.'
	cmp	byte [0x49],0x3		; 0000C066  803E490003  '.>I..'
	jnz	xc076			; 0000C06B  7509  'u.'
xc06d:	push	ax			; 0000C06D  50  'P'
	mov	ax,0xbf05		; 0000C06E  B805BF  '...'
	mov	bl,0x1			; 0000C071  B301  '..'
	int	0x10			; 0000C073  CD10  '..'
	pop	ax			; 0000C075  58  'X'
xc076:	test	byte [0x18],0x8		; 0000C076  F606180008  '.....'
	jnz	xc076			; 0000C07B  75F9  'u.'
xc07d:	stc				; 0000C07D  F9  '.'
	ret				; 0000C07E  C3  '.'

xc07f:	push	ax			; 0000C07F  50  'P'
	xor	ax,ax			; 0000C080  33C0  '3.'
	xchg	al,[0x19]		; 0000C082  86061900  '....'
	test	al,al			; 0000C086  84C0  '..'
	jz	xc08d			; 0000C088  7403  't.'
	call	xd3b4			; 0000C08A  E82713  '.',0x27,'.'
xc08d:	pop	ax			; 0000C08D  58  'X'
	jmp	short xc02c		; 0000C08E  EB9C  '..'

xc090:	jmp	xb673			; 0000C090  E9E0F5  '...'

xc093:	cli				; 0000C093  FA  '.'
	call	xeb0c			; 0000C094  E8752A  '.u*'
	sti				; 0000C097  FB  '.'
	jmp	xea81			; 0000C098  E9E629

xc09b:	test	byte [0x96],0x10	; 0000C09B  F606960010  '.....'
	jz	xc0b7			; 0000C0A0  7415  't.'
	test	byte [0x96],0x2		; 0000C0A2  F606960002  '.....'
	jz	xc0be			; 0000C0A7  7415  't.'
	test	byte [0x17],0x4		; 0000C0A9  F606170004  '.....'
	jnz	xc0be			; 0000C0AE  750E  'u.'
	and	byte [0x96],0xfd	; 0000C0B0  80269600FD  '.&...'
	jmp	short xc0c1		; 0000C0B5  EB0A  '.',0x0A

xc0b7:	test	byte [0x17],0x3		; 0000C0B7  F606170003  '.....'
	jnz	xc0c1			; 0000C0BC  7503  'u.'
xc0be:	jmp	xc02c			; 0000C0BE  E96BFF  '.k.'

xc0c1:	cli				; 0000C0C1  FA  '.'
	call	xeb0c			; 0000C0C2  E8472A  '.G*'
	inc	bp			; 0000C0C5  45  'E'
	int	0x5			; 0000C0C6  CD05  '..'
	sti				; 0000C0C8  FB  '.'
	stc				; 0000C0C9  F9  '.'
	ret				; 0000C0CA  C3  '.'

xc0cb:	test	byte [0x18],0x80	; 0000C0CB  F606180080  '.....'
	jz	xc0d4			; 0000C0D0  7402  't.'
	stc				; 0000C0D2  F9  '.'
	ret				; 0000C0D3  C3  '.'

xc0d4:	clc				; 0000C0D4  F8  '.'
	ret				; 0000C0D5  C3  '.'

xc0d6:	test	byte [0x17],0x4		; 0000C0D6  F606170004  '.....'
	jz	xc0d4			; 0000C0DB  74F7  't.'
	test	byte [0x17],0x8		; 0000C0DD  F606170008  '.....'
	jz	xc0d4			; 0000C0E2  74F0  't.'
xc0e4:	mov	al,0xf2			; 0000C0E4  B0F2  '..'
	jmp	xc17f			; 0000C0E6  E99600  '...'

xc0e9:	test	byte [0x17],0x4		; 0000C0E9  F606170004  '.....'
	jz	xc0d4			; 0000C0EE  74E4  't.'
	test	byte [0x17],0x8		; 0000C0F0  F606170008  '.....'
	jnz	xc0d4			; 0000C0F5  75DD  'u.'
	test	byte [0x96],0x10	; 0000C0F7  F606960010  '.....'
	jz	xc10a			; 0000C0FC  740C  't.'
	test	byte [0x96],0x2		; 0000C0FE  F606960002  '.....'
	jz	xc0d4			; 0000C103  74CF  't.'
	and	byte [0x96],0xfd	; 0000C105  80269600FD  '.&...'
xc10a:	or	byte [0x71],0x80	; 0000C10A  800E710080  '..q..'
	call	xc259			; 0000C10F  E84701  '.G.'
	cli				; 0000C112  FA  '.'
	call	xeb0c			; 0000C113  E8F629  '..)'
	inc	bp			; 0000C116  45  'E'
	sti				; 0000C117  FB  '.'
	int	0x1b			; 0000C118  CD1B  '..'
	xor	ax,ax			; 0000C11A  33C0  '3.'
	jmp	short xc183		; 0000C11C  EB65  '.e'

xc11e:	mov	ah,0xbf			; 0000C11E  B4BF  '..'
	int	0x10			; 0000C120  CD10  '..'
	xor	bp,bp			; 0000C122  33ED  '3.'
	stc				; 0000C124  F9  '.'
	ret				; 0000C125  C3  '.'

	jmp	xc02c			; 0000C126  E903FF  '...'

xc129:	or	ah,ah			; 0000C129  0AE4  0x0A,'.'
	js	xc160			; 0000C12B  7833  'x3'
	cmp	ah,0x3b			; 0000C12D  80FC3B  '..;'
	jl	xc160			; 0000C130  7C2E  '|.'
	cmp	ah,0x44			; 0000C132  80FC44  '..D'
	jng	xc162			; 0000C135  7E2B  '~+'
	cmp	ah,0x57			; 0000C137  80FC57  '..W'
	jz	xc141			; 0000C13A  7405  't.'
	cmp	ah,0x58			; 0000C13C  80FC58  '..X'
	jnz	xc160			; 0000C13F  751F  'u.'
xc141:	mov	al,0x34			; 0000C141  B034  '.4'
	test	byte [0x17],0x8		; 0000C143  F606170008  '.....'
	jnz	xc17f			; 0000C148  7535  'u5'
	mov	al,0x32			; 0000C14A  B032  '.2'
	test	byte [0x17],0x4		; 0000C14C  F606170004  '.....'
	jnz	xc17f			; 0000C151  752C  'u,'
	mov	al,0x30			; 0000C153  B030  '.0'
	test	byte [0x17],0x3		; 0000C155  F606170003  '.....'
	jnz	xc17f			; 0000C15A  7523  'u#'
	mov	al,0x2e			; 0000C15C  B02E  '..'
	jmp	short xc17f		; 0000C15E  EB1F  '..'

xc160:	clc				; 0000C160  F8  '.'
	ret				; 0000C161  C3  '.'

xc162:	mov	al,0x2d			; 0000C162  B02D  '.-'
	test	byte [0x17],0x8		; 0000C164  F606170008  '.....'
	jnz	xc17f			; 0000C169  7514  'u.'
	mov	al,0x23			; 0000C16B  B023  '.#'
	test	byte [0x17],0x4		; 0000C16D  F606170004  '.....'
	jnz	xc17f			; 0000C172  750B  'u.'
	mov	al,0x19			; 0000C174  B019  '..'
	test	byte [0x17],0x3		; 0000C176  F606170003  '.....'
	jnz	xc17f			; 0000C17B  7502  'u.'
	xor	al,al			; 0000C17D  32C0  '2.'
xc17f:	add	ah,al			; 0000C17F  02E0  '..'
	xor	al,al			; 0000C181  32C0  '2.'
xc183:	call	xd3b4			; 0000C183  E82E12  '...'
	stc				; 0000C186  F9  '.'
	ret				; 0000C187  C3  '.'

xc188:	or	ah,ah			; 0000C188  0AE4  0x0A,'.'
	js	xc19b			; 0000C18A  780F  'x.'
	mov	al,ah			; 0000C18C  8AC4  '..'
	cmp	al,0x47			; 0000C18E  3C47  '<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  '...'	; CALL DELAY(BX)
	pop	bx			; 0000C636  5B  '['
	ret				; 0000C637  C3  '.'

;
; DELAY(BX): Wrapper around _DELAY, which spins for 0x950 ticks (2ms) BX times
;
; Modifies BX
;
xc638:	push	bp			; 0000C638  55  'U'		; DELAY() BEGIN
	push	ax			; 0000C639  50  'P'
	push	cx			; 0000C63A  51  'Q'
	call	xc642			; 0000C63B  E80400  '...'	; CALL _DELAY(BX)
	pop	cx			; 0000C63E  59  'Y'
	pop	ax			; 0000C63F  58  'X'
	pop	bp			; 0000C640  5D  ']'		; NOTE: SAVE/RESTORE OF BP UNNECESSARY
	ret				; 0000C641  C3  '.'		; DELAY() END

;
; _DELAY(BX): Spins for 0x950 ticks (2ms) BX times
;
; Modifies AX, BX, CX
;
; BX is immediately copied to CX and then replaced with a snapshot of TIMER0 from AX.  TIMER0 is
; repeatedly snapped into AX, and when a delta of 0x950 ticks is observed between AX and BX, CX is
; decremented and the process repeated until CX is zero.
;
; IBM compatibility dictates that TIMER0 ticks at a rate of 1193181.8181 times per second, and the
; ratio of 0x950 (2384.) / 1193181.8181 works out to 2ms.
;
; The first call happens after about 1.5M instructions, and BX is 0x1388 (5000.), so that initial
; delay is 10,000ms or 10 seconds.  The call comes from BC54.
;
;
xc642:	mov	cx,bx			; 0000C642  8BCB  '..'		; _DELAY() BEGIN
xc644:	pushf				; 0000C644  9C  '.'
	cli				; 0000C645  FA  '.'
	mov	al,0x0			; 0000C646  B000  '..'
	out	0x43,al			; 0000C648  E643  '.C'
	in	al,0x40			; 0000C64A  E440  '.@'
	mov	ah,al			; 0000C64C  8AE0  '..'
	in	al,0x40			; 0000C64E  E440  '.@'

	push	cs			; 0000C650  0E  '.'		; LIKELY A "POPF" MACRO LEFT OVER TO DEAL WITH THE 80286 POPF ERRATA
	call	xc657			; 0000C651  E80300  '...'
	jmp	short xc658		; 0000C654  EB02  '..'
	nop				; 0000C656  90  '.'
xc657:	iret				; 0000C657  CF  '.'

xc658:	xchg	al,ah			; 0000C658  86C4  '..'
	mov	bx,ax			; 0000C65A  8BD8  '..'
xc65c:	pushf				; 0000C65C  9C  '.'
	cli				; 0000C65D  FA  '.'
	mov	al,0x0			; 0000C65E  B000  '..'
	out	0x43,al			; 0000C660  E643  '.C'
	in	al,0x40			; 0000C662  E440  '.@'
	mov	ah,al			; 0000C664  8AE0  '..'
	in	al,0x40			; 0000C666  E440  '.@'

	push	cs			; 0000C668  0E  '.'		; LIKELY A "POPF" MACRO LEFT OVER TO DEAL WITH THE 80286 POPF ERRATA
	call	xc66f			; 0000C669  E80300  '...'
	jmp	short xc670		; 0000C66C  EB02  '..'
	nop				; 0000C66E  90  '.'
xc66f:	iret				; 0000C66F  CF  '.'

xc670:	xchg	al,ah			; 0000C670  86C4  '..'
	push	bx			; 0000C672  53  'S'
	sub	bx,ax			; 0000C673  2BD8  '+.'
	cmp	bx,0x950		; 0000C675  81FB5009  '..P.'
	pop	bx			; 0000C679  5B  '['
	jc	xc65c			; 0000C67A  72E0  'r.'
	loop	xc644			; 0000C67C  E2C6  '..'
	ret				; 0000C67E  C3  '.'		; _DELAY() END

	mov	cx,bx			; 0000C67F  8BCB  '..'
xc681:	mov	al,0x0			; 0000C681  B000  '..'
	out	0x43,al			; 0000C683  E643  '.C'
	in	al,0x40			; 0000C685  E440  '.@'
	mov	ah,al			; 0000C687  8AE0  '..'
	in	al,0x40			; 0000C689  E440  '.@'
	xchg	al,ah			; 0000C68B  86C4  '..'
	mov	bx,ax			; 0000C68D  8BD8  '..'
xc68f:	mov	al,0x0			; 0000C68F  B000  '..'
	out	0x43,al			; 0000C691  E643  '.C'
	in	al,0x40			; 0000C693  E440  '.@'
	mov	ah,al			; 0000C695  8AE0  '..'
	in	al,0x40			; 0000C697  E440  '.@'
	xchg	al,ah			; 0000C699  86C4  '..'
	sub	bx,ax			; 0000C69B  2BD8  '+.'
	cmp	bx,0x950		; 0000C69D  81FB5009  '..P.'
	jc	xc6a7			; 0000C6A1  7204  'r.'
	loop	xc681			; 0000C6A3  E2DC  '..'
	jmp	bp			; 0000C6A5  FFE5  '..'

xc6a7:	add	bx,ax			; 0000C6A7  03D8  '..'
	jmp	short xc68f		; 0000C6A9  EBE4  '..'

xc6ab:	xchg	si,dx			; 0000C6AB  87F2  '..'
	xchg	ch,cl			; 0000C6AD  86E9  '..'
	mov	bx,cx			; 0000C6AF  8BD9  '..'
	mov	sp,si			; 0000C6B1  8BE6  '..'
	mov	cx,0x4			; 0000C6B3  B90400  '...'
	shr	dx,cl			; 0000C6B6  D3EA  '..'
	mov	cx,0x2			; 0000C6B8  B90200  '...'
	mov	si,0xc6c1		; 0000C6BB  BEC1C6  '...'
	jmp	short xc6e6		; 0000C6BE  EB26  '.&'

	nop				; 0000C6C0  90  '.'
	mov	dx,sp			; 0000C6C1  8BD4  '..'
	and	dx,0x3			; 0000C6C3  81E20300  '....'
	mov	cx,0x4			; 0000C6C7  B90400  '...'
	mov	si,0xc6d0		; 0000C6CA  BED0C6  '...'
	jmp	short xc6e6		; 0000C6CD  EB17  '..'

	nop				; 0000C6CF  90  '.'
	mov	al,0x20			; 0000C6D0  B020  '. '
	mov	[es:di+0x8000],al	; 0000C6D2  2688850080  '&....'
	stosb				; 0000C6D7  AA  '.'
	inc	di			; 0000C6D8  47  'G'
	mov	dx,bx			; 0000C6D9  8BD3  '..'
	mov	cx,0x2			; 0000C6DB  B90200  '...'
	mov	si,0xc6e4		; 0000C6DE  BEE4C6  '...'
	jmp	short xc6e6		; 0000C6E1  EB03  '..'

	nop				; 0000C6E3  90  '.'
	jmp	bp			; 0000C6E4  FFE5  '..'

xc6e6:	cld				; 0000C6E6  FC  '.'
	mov	ax,0xb000		; 0000C6E7  B800B0  '...'
	mov	es,ax			; 0000C6EA  8EC0  '..'
xc6ec:	xchg	ax,dx			; 0000C6EC  92  '.'
	mul	word [cs:0xc62d]	; 0000C6ED  2EF7262DC6  '..&-.'
	xchg	ax,dx			; 0000C6F2  92  '.'
	add	al,0x90			; 0000C6F3  0490  '..'
	daa				; 0000C6F5  27  0x27
	adc	al,0x40			; 0000C6F6  1440  '.@'
	daa				; 0000C6F8  27  0x27
	mov	[es:di+0x8000],al	; 0000C6F9  2688850080  '&....'
	stosb				; 0000C6FE  AA  '.'
	inc	di			; 0000C6FF  47  'G'
	loop	xc6ec			; 0000C700  E2EA  '..'
	jmp	si			; 0000C702  FFE6  '..'

xc704:	xchg	ch,cl			; 0000C704  86E9  '..'
	push	cx			; 0000C706  51  'Q'
	push	dx			; 0000C707  52  'R'
	mov	dx,si			; 0000C708  8BD6  '..'
	shl	dx,0x8			; 0000C70A  C1E208  '...'
	mov	cx,0x2			; 0000C70D  B90200  '...'
	call	xc72b			; 0000C710  E81800  '...'
	pop	dx			; 0000C713  5A  'Z'
	and	dx,0x3			; 0000C714  81E20300  '....'
	mov	cx,0x4			; 0000C718  B90400  '...'
	call	xc72b			; 0000C71B  E80D00  '.',0x0D,'.'
	mov	al,0x20			; 0000C71E  B020  '. '
	call	print_char		; 0000C720  E8B000  '...'
	pop	dx			; 0000C723  5A  'Z'
	mov	cx,0x2			; 0000C724  B90200  '...'
	call	xc72b			; 0000C727  E80100  '...'
	ret				; 0000C72A  C3  '.'

;
;   Print the value in (DX) as (CX) hex digits
;
xc72b:	cld				; 0000C72B  FC  '.'
xc72c:	xchg	ax,dx			; 0000C72C  92  '.'
	mul	word [cs:0xc62d]	; multiply by 16
	xchg	ax,dx			; 0000C732  92  '.'
	add	al,0x90			; 0000C733  0490  '..'
	daa				; 0000C735  27  0x27
	adc	al,0x40			; 0000C736  1440  '.@'
	daa				; 0000C738  27  0x27
	push	dx			; 0000C739  52  'R'
	push	cx			; 0000C73A  51  'Q'
	push	ax			; 0000C73B  50  'P'
	call	print_char		; 0000C73C  E89400  '...'
	pop	ax			; 0000C73F  58  'X'
	pop	cx			; 0000C740  59  'Y'
	pop	dx			; 0000C741  5A  'Z'
	loop	xc72c			; 0000C742  E2E8  '..'
	ret				; 0000C744  C3  '.'

xc745:	push	ds			; 0000C745  1E  '.'
	mov	ax,0x40			; 0000C746  B84000  '.@.'
	mov	ds,ax			; 0000C749  8ED8  '..'
	mov	byte [0x12],0xff	; 0000C74B  C6061200FF  '.....'
	pop	ds			; 0000C750  1F  '.'

xc751:	push	bx			; 0000C751  53  'S'
	push	cx			; 0000C752  51  'Q'

xc753:	test	dh,0xc0			; 0000C753  F6C6C0  '...'
	jz	xc760			; 0000C756  7408  't.'
	call	xc7ab			; 0000C758  E85000
	sub	dh,0x40			; 0000C75B  80EE40  '..@'
	jmp	short xc753		; 0000C75E  EBF3  '..'

xc760:	test	dh,0x30			; 0000C760  F6C630  '..0'
	jz	xc76d			; 0000C763  7408  't.'
	call	xc791			; 0000C765  E82900  '.).'
	sub	dh,0x10			; 0000C768  80EE10  '...'
	jmp	short xc760		; 0000C76B  EBF3  '..'

xc76d:	pop	cx			; 0000C76D  59  'Y'
	pop	bx			; 0000C76E  5B  '['

xc76f:	mov	al,[cs:bx]		; 0000C76F  2E8A07  '...'
	push	bx			; 0000C772  53  'S'
	call	print_char		; 0000C773  E85D00  '.].'
	pop	bx			; 0000C776  5B  '['
	inc	bx			; 0000C777  43  'C'
	loop	xc76f			; 0000C778  E2F5  '..'
	ret				; 0000C77A  C3  '.'

;
;   print_str(BX -> string, CX == length)
;
;   NOTE: This appears to be dead code
;
print_str:
	mov	al,[bx]			; 0000C77B  8A07  '..'
	push	bx			; 0000C77D  53  'S'
	call	print_char		; 0000C77E  E85200  '.R.'
	pop	bx			; 0000C781  5B  '['
	inc	bx			; 0000C782  43  'C'
	loop	print_str		; 0000C783  E2F6  '..'
	ret				; 0000C785  C3  '.'

;
;   print_crlf()
;
print_crlf:
	mov	al,0xd			; 0000C786  B00D  '.',0x0D
	call	print_char		; 0000C788  E84800  '.H.'
	mov	al,0xa			; 0000C78B  B00A  '.',0x0A
	call	print_char		; 0000C78D  E84300  '.C.'
	ret				; 0000C790  C3  '.'

xc791:	mov	bx,0xfa			; 0000C791  BBFA00  '...'
	call	xc7db			; 0000C794  E84400  '.D.'
	mov	bx,0x100		; 0000C797  BB0001  '...'
	call	xc638			; 0000C79A  E89BFE  '...'	; CALL DELAY(BX)
	ret				; 0000C79D  C3  '.'

xc79e:	mov	bx,0x7d			; 0000C79E  BB7D00  '.}.'	; BX = 125 (FOR 250ms BEEP)
	call	xc7db			; 0000C7A1  E83700  '.7.'	; CALL BEEP(BX)
	mov	bx,0x7d			; 0000C7A4  BB7D00  '.}.'
	call	xc638			; 0000C7A7  E88EFE  '...'	; CALL DELAY(BX)
	ret				; 0000C7AA  C3  '.'

xc7ab:	mov	bx,0x320		; 0000C7AB  BB2003  '. .'
	call	xc7db			; 0000C7AE  E82A00  '.*.'
	mov	bx,0x100		; 0000C7B1  BB0001  '...'
	call	xc638			; 0000C7B4  E881FE  '...'	; CALL DELAY(BX)
	ret				; 0000C7B7  C3  '.'

xc7b8:	mov	ch,al			; 0000C7B8  8AE8  '..'
	mov	cl,0x4			; 0000C7BA  B104  '..'
	shr	al,cl			; 0000C7BC  D2E8  '..'
	call	xc7c7			; 0000C7BE  E80600  '...'
	mov	al,ch			; 0000C7C1  8AC5  '..'
	call	xc7c7			; 0000C7C3  E80100  '...'
	ret				; 0000C7C6  C3  '.'

xc7c7:	and	al,0xf			; 0000C7C7  240F  '$.'
	add	al,0x90			; 0000C7C9  0490  '..'
	daa				; 0000C7CB  27  0x27
	adc	al,0x40			; 0000C7CC  1440  '.@'
	daa				; 0000C7CE  27  0x27
	call	print_char		; 0000C7CF  E80100  '...'
	ret				; 0000C7D2  C3  '.'

print_char:
	mov	bx,0x7			; 0000C7D3  BB0700  '...'
	mov	ah,0xe			; 0000C7D6  B40E  '..'
	int	0x10			; 0000C7D8  CD10  '..'
	ret				; 0000C7DA  C3  '.'
;
; BEEP(BX)
;
xc7db:	mov	al,0xb6			; 0000C7DB  B0B6  '..'		; BEEP() BEGIN
	out	0x43,al			; 0000C7DD  E643  '.C'
	mov	al,0x38			; 0000C7DF  B038  '.8'
	out	0x42,al			; 0000C7E1  E642  '.B'
	mov	al,0x5			; 0000C7E3  B005  '..'
	out	0x42,al			; 0000C7E5  E642  '.B'
	in	al,0x61			; 0000C7E7  E461  '.a'
	or	al,0x3			; 0000C7E9  0C03  '..'
	out	0x61,al			; 0000C7EB  E661  '.a'
	call	xc638			; 0000C7ED  E848FE  '.H.'	; CALL DELAY(BX)
	in	al,0x61			; 0000C7F0  E461  '.a'
	and	al,0xfc			; 0000C7F2  24FC  '$.'
	out	0x61,al			; 0000C7F4  E661  '.a'
	ret				; 0000C7F6  C3  '.'		; BEEP() END

xc7f7:	xor	di,di			; 0000C7F7  33FF  '3.'
xc7f9:	cld				; 0000C7F9  FC  '.'
	mov	ax,0xb000		; 0000C7FA  B800B0  '...'
	mov	es,ax			; 0000C7FD  8EC0  '..'
xc7ff:	mov	al,[cs:bx]		; 0000C7FF  2E8A07  '...'
	inc	bx			; 0000C802  43  'C'
	mov	[es:di+0x8000],al	; 0000C803  2688850080  '&....'
	stosb				; 0000C808  AA  '.'
	inc	di			; 0000C809  47  'G'
	loop	xc7ff			; 0000C80A  E2F3  '..'
	jmp	bp			; 0000C80C  FFE5  '..'

	push	es			; 0000C80E  06  '.'
	xor	di,di			; 0000C80F  33FF  '3.'
	cld				; 0000C811  FC  '.'
	mov	ax,0xb000		; 0000C812  B800B0  '...'
	mov	es,ax			; 0000C815  8EC0  '..'
xc817:	mov	al,[bx]			; 0000C817  8A07  '..'
	inc	bx			; 0000C819  43  'C'
	mov	[es:di+0x8000],al	; 0000C81A  2688850080  '&....'
	stosb				; 0000C81F  AA  '.'
	inc	di			; 0000C820  47  'G'
	loop	xc817			; 0000C821  E2F4  '..'
	pop	es			; 0000C823  07  '.'
	ret				; 0000C824  C3  '.'

;
;   Copy ROM to RAM
;
;   This function ends by disabling A20 and zeroing all conventional memory.
;
xc825:	pusha				; 0000C825  60  '`'
	push	ds			; 0000C826  1E  '.'
	push	es			; 0000C827  06  '.'
	mov	al,0xd0			; 0000C828  B0D0  '..'
	out	0x84,al			; 0000C82A  E684  '..'
	mov	ax,0x40			; 0000C82C  B84000  '.@.'
	mov	ds,ax			; 0000C82F  8ED8  '..'
	mov	[0x67],sp		; 0000C831  89266700  '.&g.'
	mov	[0x69],ss		; 0000C835  8C166900  '..i.'
	mov	al,0xd1			; 0000C839  B0D1  '..'
	out	0x84,al			; 0000C83B  E684  '..'
;
;   Enter protected-mode
;
	call	x80e2			; 0000C83D  E8A2B8  '...'
	jz	xc845			; 0000C840  7403  't.'
	jmp	xc8ef			; 0000C842  E9AA00  '...'

xc845:	mov	al,0xd2			; 0000C845  B0D2  '..'
	out	0x84,al			; 0000C847  E684  '..'
	mov	al,0xb1			; 0000C849  B0B1  '..'
	call	xb544			; 0000C84B  E8F6EC  '...'
	mov	ah,al			; 0000C84E  8AE0  '..'
	mov	al,0xb0			; 0000C850  B0B0  '..'
	call	xb544			; 0000C852  E8EFEC  '...'
	xor	dx,dx			; 0000C855  33D2  '3.'
	mov	bx,0x40			; 0000C857  BB4000  '.@.'
	div	bx			; 0000C85A  F7F3  '..'
	mov	bh,al			; 0000C85C  8AF8  '..'
	mov	bl,0x10			; 0000C85E  B310  '..'
	call	xc8fc			; 0000C860  E89900  '...'
;
;   The next function writes 0xFF to 0x80C00000, presumably to ensure that
;   Compaq Built-in Memory at 0xFE0000 is NOT mapped to 0x0E000 at the moment
;
	call	x84a5			; 0000C863  E83FBC  '.?.'

	mov	ax,[0x8d]		; 0000C866  A18D00  '...'
	add	ax,0x80			; 0000C869  058000  '...'
	xor	dx,dx			; 0000C86C  33D2  '3.'
	mov	bx,0x40			; 0000C86E  BB4000  '.@.'
	div	bx			; 0000C871  F7F3  '..'
	mov	bh,al			; 0000C873  8AF8  '..'
	mov	bl,[0x8c]		; 0000C875  8A1E8C00  '....'
	call	xc8fc			; 0000C879  E88000  '...'
;
;   Relocate the ROM
;
;   On return, we should now be running in RAM (ie, a copy of the ROM in 128Kb of RAM
;   now mapped to %0E0000 through %0FFFFF)
;
	call	x853c			; 0000C87C  E8BDBC  '...'
;
;   Return to real-mode
;
	mov	al,0xd3			; 0000C87F  B0D3  '..'
	out	0x84,al			; 0000C881  E684  '..'
	mov	ax,0x28			; 0000C883  B82800  '.(.'
	mov	ds,ax			; 0000C886  8ED8  '..'
	mov	es,ax			; 0000C888  8EC0  '..'
	mov	ss,ax			; 0000C88A  8ED0  '..'
	mov	eax,cr0			; 0000C88C  0F2000
	and	eax,0x7ffffffe		; 0000C88F  6625FEFFFF7F  'f%....'
	mov	cr0,eax			; 0000C895  0F2200
	jmp	0xf000:xc89d		; 0000C898  EA9DC800F0  '.....'

xc89d:	lidt	[cs:0xa151]		; 0000C89D  2E0F011E51A1  '....Q.'
	mov	al,0xd4			; 0000C8A3  B0D4  '..'
	out	0x84,al			; 0000C8A5  E684  '..'
	mov	ax,0x40			; 0000C8A7  B84000  '.@.'
	mov	ds,ax			; 0000C8AA  8ED8  '..'
	mov	ss,[0x69]		; 0000C8AC  8E166900  '..i.'
	mov	sp,[0x67]		; 0000C8B0  8B266700  '.&g.'
;
;   Disable A20
;
	call	xa478			; 0000C8B4  E8C1DB
;
;   Get the (conventional) memory size in Kb from 0x40:0x0013, divide by 64 (0x40) to yield
;   the number of 64Kb blocks of RAM below 1Mb, and then zero each 64Kb block with "rep stosd".
;
	mov	ax,[0x13]		; 0000C8B7  A11300  '...'
	xor	dx,dx			; 0000C8BA  33D2  '3.'
	mov	bx,0x40			; 0000C8BC  BB4000  '.@.'
	div	bx			; 0000C8BF  F7F3  '..'
	cmp	ax,0x0			; 0000C8C1  3D0000  '=..'
	jnz	xc8c9			; 0000C8C4  7503  'u.'
	jmp	short xc8eb		; 0000C8C6  EB23  '.#'
	nop				; 0000C8C8  90  '.'

xc8c9:	sub	ax,0x1			; 0000C8C9  2D0100  '-..'
	mov	bh,al			; 0000C8CC  8AF8  '..'
	mov	dx,0x1000		; 0000C8CE  BA0010  '...'
xc8d1:	cmp	bh,0x0			; 0000C8D1  80FF00  '...'
	jz	xc8eb			; 0000C8D4  7415  't.'
	mov	es,dx			; 0000C8D6  8EC2  '..'
	xor	eax,eax			; 0000C8D8  6633C0  'f3.'
	mov	cx,0x4000		; 0000C8DB  B90040  '..@'
	xor	di,di			; 0000C8DE  33FF  '3.'
	cld				; 0000C8E0  FC  '.'
	rep	stosd			; 0000C8E1  66F3AB  'f..'
	dec	bh			; 0000C8E4  FECF  '..'
	add	dh,0x10			; 0000C8E6  80C610  '...'
	jmp	short xc8d1		; 0000C8E9  EBE6  '..'

xc8eb:	pop	es			; 0000C8EB  07  '.'
	pop	ds			; 0000C8EC  1F  '.'
	popa				; 0000C8ED  61  'a'
	ret				; 0000C8EE  C3  '.'

xc8ef:	mov	dx,0x0			; 0000C8EF  BA0000  '...'
	mov	bx,err102		; 0000C8F2  BB8CB6  '...'
	mov	cx,err102_len		; 0000C8F5  B91A00  '...'
	call	xc745			; 0000C8F8  E84AFE  '.J.'
	hlt				; 0000C8FB  F4  '.'

xc8fc:	push	ax			; 0000C8FC  50  'P'
	push	bx			; 0000C8FD  53  'S'
	push	cx			; 0000C8FE  51  'Q'
	push	di			; 0000C8FF  57  'W'
	push	ds			; 0000C900  1E  '.'
	push	es			; 0000C901  06  '.'
	mov	ax,0x18			; 0000C902  B81800  '...'
	mov	ds,ax			; 0000C905  8ED8  '..'
	mov	word [0x4a],0x0		; 0000C907  C7064A000000  '..J...'
xc90d:	cmp	bh,0x0			; 0000C90D  80FF00  '...'
	jz	xc92d			; 0000C910  741B  't.'
	mov	[0x4c],bl		; 0000C912  881E4C00  '..L.'
	mov	ax,0x48			; 0000C916  B84800  '.H.'
	mov	es,ax			; 0000C919  8EC0  '..'
	xor	eax,eax			; 0000C91B  6633C0  'f3.'
	mov	cx,0x4000		; 0000C91E  B90040  '..@'
	xor	di,di			; 0000C921  33FF  '3.'
	cld				; 0000C923  FC  '.'
	rep	stosd			; 0000C924  66F3AB  'f..'
	dec	bh			; 0000C927  FECF  '..'
	inc	bl			; 0000C929  FEC3  '..'
	jmp	short xc90d		; 0000C92B  EBE0  '..'

xc92d:	pop	es			; 0000C92D  07  '.'
	pop	ds			; 0000C92E  1F  '.'
	pop	di			; 0000C92F  5F  '_'
	pop	cx			; 0000C930  59  'Y'
	pop	bx			; 0000C931  5B  '['
	pop	ax			; 0000C932  58  'X'
	ret				; 0000C933  C3  '.'

	call	xca03			; 0000C934  E8CC00  '...'
	mov	[0x41],ah		; 0000C937  88264100  '.&A.'
	or	ah,ah			; 0000C93B  0AE4  0x0A,'.'
	jz	xc944			; 0000C93D  7405  't.'
	or	word [bp+0x16],0x1	; 0000C93F  814E160100  '.N...'
xc944:	ret				; 0000C944  C3  '.'

	mov	al,[bp+0x0]		; 0000C945  8A4600  '.F.'
	mov	ah,[0x41]		; 0000C948  8A264100  '.&A.'
	or	ah,ah			; 0000C94C  0AE4  0x0A,'.'
	jz	xc955			; 0000C94E  7405  't.'
	or	word [bp+0x16],0x1	; 0000C950  814E160100  '.N...'
xc955:	ret				; 0000C955  C3  '.'

xc956:	cli				; 0000C956  FA  '.'
	mov	byte [MOTOR_COUNT],0xff	; 0000C957  C6064000FF		; RESET TIME-OUT COUNTER FOR MOTOR(S)
	mov	al,0x10			; 0000C95C  B010
	mov	cl,[bp+CALLER_DL]	; 0000C95E  8A4E06		; CL = DRIVE NUMBER
	shl	al,cl			; 0000C961  D2E0
	or	al,0xc			; 0000C963  0C0C
	or	al,[bp+CALLER_DL]	; 0000C965  0A4606
	mov	ah,[MOTOR_STATUS]	; 0000C968  8A263F00		; AH = MOTOR STATUS
	shl	ah,0x4			; 0000C96C  C0E404
	or	al,ah			; 0000C96F  0AC4
	mov	dx,0x3f2		; 0000C971  BAF203
	out	dx,al			; 0000C974  EE
	mov	ah,al			; 0000C975  8AE0
	mov	al,[0x8b]		; 0000C977  A08B00		; AL = LASTRATE (LAST DISKETTE DATA RATE SELECTED)
	shr	al,0x6			; 0000C97A  C0E806
	mov	dx,0x3f7		; 0000C97D  BAF703		; DX = FDC DIGITAL INPUT REGISTER (READ-ONLY)
	out	dx,al			; 0000C980  EE
	shr	ah,0x4			; 0000C981  C0EC04
	mov	al,[MOTOR_STATUS]	; 0000C984  A03F00		; AL = MOTOR STATUS (BIT 3-0 = DRIVE 3-0 CURRENTLY RUNNING, BIT 7 = CURRENT OPERATION IS A WRITE)
	and	al,0xf			; 0000C987  240F
	cmp	al,ah			; 0000C989  3AC4
	jz	xc9bd			; 0000C98B  7430		; NO DELAY
	or	[MOTOR_STATUS],ah	; 0000C98D  08263F00
	sti				; 0000C991  FB
	clc				; 0000C992  F8
	mov	ax,0x90fd		; 0000C993  B8FD90
	int	0x15			; 0000C996  CD15
	jc	xc9bd			; 0000C998  7223
	mov	al,0x7d			; 0000C99A  B07D
	mov	cl,0x8			; 0000C99C  B108		; DEFAULT DELAY
	mov	bl,[es:si+0xa]		; 0000C99E  268A5C0A
	cmp	byte [bp+CALLER_AH],0x3	; 0000C9A2  807E0103		; WRITE REQUEST?
	jz	xc9b0			; 0000C9A6  7408		; YES
	cmp	byte [bp+CALLER_AH],0x5	; 0000C9A8  807E0105		; FORMAT REQUEST?
	jnz	xc9b0			; 0000C9AC  7502		; NO
	mov	cl,0x5			; 0000C9AE  B105		; YES (SELECT SHORTER DELAY)
xc9b0:	cmp	bl,cl			; 0000C9B0  3AD9
	jnc	xc9b6			; 0000C9B2  7302
	xchg	bl,cl			; 0000C9B4  86D9
xc9b6:	mul	bl			; 0000C9B6  F6E3
	mov	bx,ax			; 0000C9B8  8BD8
	call	xc638			; 0000C9BA  E87BFC		; CALL DELAY(BX)
xc9bd:	sti				; 0000C9BD  FB
	ret				; 0000C9BE  C3

xc9bf:	push	cx			; 0000C9BF  51  'Q'
	mov	dx,0x3f4		; 0000C9C0  BAF403  '...'
	mov	cx,0xbc			; 0000C9C3  B9BC00  '...'
xc9c6:	call	x919a			; 0000C9C6  E8D1C7  '...'
	in	al,dx			; 0000C9C9  EC  '.'
	test	al,0x80			; 0000C9CA  A880  '..'
	jnz	xc9d4			; 0000C9CC  7506  'u.'
	loop	xc9c6			; 0000C9CE  E2F6  '..'
	mov	al,0x80			; 0000C9D0  B080  '..'
	jmp	short xc9d8		; 0000C9D2  EB04  '..'

xc9d4:	call	x919a			; 0000C9D4  E8C3C7  '...'
	in	al,dx			; 0000C9D7  EC  '.'
xc9d8:	inc	dx			; 0000C9D8  42  'B'
	test	al,0x40			; 0000C9D9  A840  '.@'
	pop	cx			; 0000C9DB  59  'Y'
	ret				; 0000C9DC  C3  '.'

xc9dd:	mov	bh,ah			; 0000C9DD  8AFC  '..'
	mov	al,[0x45]		; 0000C9DF  A04500  '.E.'
	sub	al,[bp+0x5]		; 0000C9E2  2A4605  '*F.'
	shl	al,1			; 0000C9E5  D0E0  '..'
	mul	byte [es:si+0x4]	; 0000C9E7  26F66404  '&.d.'
	mov	bl,al			; 0000C9EB  8AD8  '..'
	mov	al,[0x46]		; 0000C9ED  A04600  '.F.'
	sub	al,[bp+0x7]		; 0000C9F0  2A4607  '*F.'
	mul	byte [es:si+0x4]	; 0000C9F3  26F66404  '&.d.'
	add	al,bl			; 0000C9F7  02C3  '..'
	add	al,[0x47]		; 0000C9F9  02064700  '..G.'
	sub	al,[bp+0x4]		; 0000C9FD  2A4604  '*F.'
	mov	ah,bh			; 0000CA00  8AE7  '..'
	ret				; 0000CA02  C3  '.'

xca03:	mov	dx,0x3f2		; 0000CA03  BAF203  '...'
	mov	al,[0x3f]		; 0000CA06  A03F00  '.?.'
	and	al,0xf			; 0000CA09  240F  '$.'
	jz	xca1f			; 0000CA0B  7412  't.'
	shr	al,1			; 0000CA0D  D0E8  '..'
	test	al,0x4			; 0000CA0F  A804  '..'
	jz	xca15			; 0000CA11  7402  't.'
	mov	al,0x3			; 0000CA13  B003  '..'
xca15:	mov	ah,[0x3f]		; 0000CA15  8A263F00  '.&?.'
	mov	cl,0x4			; 0000CA19  B104  '..'
	shl	ah,cl			; 0000CA1B  D2E4  '..'
	or	al,ah			; 0000CA1D  0AC4  0x0A,'.'
xca1f:	or	al,0x8			; 0000CA1F  0C08  '..'
	out	dx,al			; 0000CA21  EE  '.'
	call	x919a			; 0000CA22  E875C7  '.u.'
	and	byte [0x3e],0x0		; 0000CA25  80263E0000  '.&>..'
	or	al,0x4			; 0000CA2A  0C04  '..'
	out	dx,al			; 0000CA2C  EE  '.'
	mov	cx,0xf424		; 0000CA2D  B924F4  '.$.'
xca30:	test	byte [0x3e],0x80	; 0000CA30  F6063E0080  '..>..'
	jnz	xca41			; 0000CA35  750A  'u',0x0A
	call	x919a			; 0000CA37  E860C7  '.`.'
	loop	xca30			; 0000CA3A  E2F4  '..'
	mov	ah,0x80			; 0000CA3C  B480  '..'
	stc				; 0000CA3E  F9  '.'
	jmp	short xca4e		; 0000CA3F  EB0D  '.',0x0D

xca41:	and	byte [0x3e],0x7f	; 0000CA41  80263E007F  '.&>..'
	call	xef6f			; 0000CA46  E82625  '.&%'
	call	xefdb			; 0000CA49  E88F25  '..%'
	xor	ah,ah			; 0000CA4C  32E4  '2.'
xca4e:	ret				; 0000CA4E  C3  '.'

xca4f:	mov	ax,0x10			; 0000CA4F  B81000  '...'
	mul	word [bp+0xc]		; 0000CA52  F7660C  '.f.'
	add	ax,[bp+0x2]		; 0000CA55  034602  '.F.'
	adc	dl,0x0			; 0000CA58  80D200  '...'
	cli				; 0000CA5B  FA  '.'
	out	0xc,al			; 0000CA5C  E60C  '..'
	out	0x4,al			; 0000CA5E  E604  '..'
	xchg	al,ah			; 0000CA60  86C4  '..'
	out	0x4,al			; 0000CA62  E604  '..'
	xchg	al,ah			; 0000CA64  86C4  '..'
	mov	bx,ax			; 0000CA66  8BD8  '..'
	mov	al,dl			; 0000CA68  8AC2  '..'
	out	0x81,al			; 0000CA6A  E681  '..'
	mov	ax,cx			; 0000CA6C  8BC1  '..'
	out	0x5,al			; 0000CA6E  E605  '..'
	xchg	al,ah			; 0000CA70  86C4  '..'
	out	0x5,al			; 0000CA72  E605  '..'
	xchg	al,ah			; 0000CA74  86C4  '..'
	sti				; 0000CA76  FB  '.'
	ret				; 0000CA77  C3  '.'

xca78:	mov	bh,[bp+0x7]		; 0000CA78  8A7E07  '.~.'
	shl	bh,0x2			; 0000CA7B  C0E702  '...'
	or	bh,[bp+0x6]		; 0000CA7E  0A7E06  0x0A,'~.'
	call	xd4c4			; 0000CA81  E8400A  '.@',0x0A
	mov	bh,[bp+0x5]		; 0000CA84  8A7E05  '.~.'
	call	xd4c4			; 0000CA87  E83A0A  '.:',0x0A
	ret				; 0000CA8A  C3  '.'

	times	12 db 0xFF		; 0000CA8B - 0000CA96

xca97:	push	ax			; 0000CA97  50
	mov	al,0x20			; 0000CA98  B020
	out	0xa0,al			; 0000CA9A  E6A0
	out	0x20,al			; 0000CA9C  E620
	mov	al,0xb			; 0000CA9E  B00B  '..'
	call	xb544			; 0000CAA0  E8A1EA  '...'
	mov	ah,al			; 0000CAA3  8AE0  '..'
	mov	al,0xc			; 0000CAA5  B00C  '..'
	call	xb544			; 0000CAA7  E89AEA  '...'
	and	al,ah			; 0000CAAA  22C4  '".'
	test	al,0x40			; 0000CAAC  A840  '.@'
	jz	xcab3			; 0000CAAE  7403
	call	xcac1			; 0000CAB0  E80E00  '...'
xcab3:	test	al,0x20			; 0000CAB3  A820  '. '
	jz	xcaba			; 0000CAB5  7403  't.'
	call	xcabc			; 0000CAB7  E80200  '...'
xcaba:	pop	ax			; 0000CABA  58  'X'
	iret				; 0000CABB  CF  '.'

xcabc:	push	ax			; 0000CABC  50  'P'
	int	0x4a			; 0000CABD  CD4A  '.J'
	pop	ax			; 0000CABF  58  'X'
	ret				; 0000CAC0  C3  '.'

xcac1:	push	es			; 0000CAC1  06  '.'
	push	bx			; 0000CAC2  53  'S'
	push	ds			; 0000CAC3  1E  '.'
	push	ax			; 0000CAC4  50  'P'
	mov	ax,0x40			; 0000CAC5  B84000  '.@.'
	mov	ds,ax			; 0000CAC8  8ED8  '..'
	test	byte [0xa0],0x1		; 0000CACA  F606A00001  '.....'
	jz	xcafc			; 0000CACF  742B  't+'
	sub	word [0x9c],0x3d0	; 0000CAD1  812E9C00D003  '......'
	jnc	xcafc			; 0000CAD7  7323  's#'
	sub	word [0x9e],byte +0x1	; 0000CAD9  832E9E0001  '.....'
	jnc	xcafc			; 0000CADE  731C  's.'
	pop	ax			; 0000CAE0  58  'X'
	push	ax			; 0000CAE1  50  'P'
	mov	al,0xb			; 0000CAE2  B00B  '..'
	and	ah,0xbf			; 0000CAE4  80E4BF  '...'
	call	xb549			; 0000CAE7  E85FEA  '._.'
	and	byte [0xa0],0xfe	; 0000CAEA  8026A000FE  '.&...'
	mov	ax,[0x9a]		; 0000CAEF  A19A00  '...'
	mov	es,ax			; 0000CAF2  8EC0  '..'
	mov	bx,[0x98]		; 0000CAF4  8B1E9800  '....'
	or	byte [es:bx],0x80	; 0000CAF8  26800F80  '&...'
xcafc:	pop	ax			; 0000CAFC  58  'X'
	pop	ds			; 0000CAFD  1F  '.'
	pop	bx			; 0000CAFE  5B  '['
	pop	es			; 0000CAFF  07  '.'
	ret				; 0000CB00  C3  '.'

xcb01:	push	ax			; 0000CB01  50  'P'
	and	ax,0xe0			; 0000CB02  25E000  '%..'
	xchg	ax,si			; 0000CB05  96  '.'
	add	dx,byte +0x3		; 0000CB06  83C203  '...'
	mov	al,0x80			; 0000CB09  B080  '..'
	out	dx,al			; 0000CB0B  EE  '.'
	sub	dx,byte +0x3		; 0000CB0C  83EA03  '...'
	mov	cl,0x4			; 0000CB0F  B104  '..'
	shr	si,cl			; 0000CB11  D3EE  '..'
	mov	ax,[cs:si+0xcc2e]	; 0000CB13  2E8B842ECC  '.....'
	out	dx,al			; 0000CB18  EE  '.'
	mov	al,ah			; 0000CB19  8AC4  '..'
	inc	dx			; 0000CB1B  42  'B'
	out	dx,al			; 0000CB1C  EE  '.'
	inc	dx			; 0000CB1D  42  'B'
	inc	dx			; 0000CB1E  42  'B'
	pop	ax			; 0000CB1F  58  'X'
	and	al,0x1f			; 0000CB20  241F  '$.'
	out	dx,al			; 0000CB22  EE  '.'
	dec	dx			; 0000CB23  4A  'J'
	dec	dx			; 0000CB24  4A  'J'
	xor	al,al			; 0000CB25  32C0  '2.'
	out	dx,al			; 0000CB27  EE  '.'
	dec	dx			; 0000CB28  4A  'J'

xcb29:	add	dx,byte +0x5		; 0000CB29  83C205  '...'
	in	al,dx			; 0000CB2C  EC  '.'
	mov	ah,al			; 0000CB2D  8AE0  '..'
	inc	dx			; 0000CB2F  42  'B'
	in	al,dx			; 0000CB30  EC  '.'
	ret				; 0000CB31  C3  '.'

xcb32:	push	ax			; 0000CB32  50  'P'
	push	dx			; 0000CB33  52  'R'
	mov	al,0x3			; 0000CB34  B003  '..'
	call	xcbbb			; 0000CB36  E88200  '...'
	jz	xcb48			; 0000CB39  740D  't',0x0D
	mov	bh,0x10			; 0000CB3B  B710  '..'
	call	x9e03			; 0000CB3D  E8C3D2  '...'
	jz	xcb48			; 0000CB40  7406  't.'
	dec	dx			; 0000CB42  4A  'J'
	mov	bh,0x20			; 0000CB43  B720  '. '
	call	x9e03			; 0000CB45  E8BBD2  '...'
xcb48:	pop	dx			; 0000CB48  5A  'Z'
	pop	cx			; 0000CB49  59  'Y'
	test	ah,ah			; 0000CB4A  84E4  '..'
	jnz	xcb5b			; 0000CB4C  750D  'u',0x0D
	push	dx			; 0000CB4E  52  'R'
	add	dx,byte +0x5		; 0000CB4F  83C205  '...'
	in	al,dx			; 0000CB52  EC  '.'
	mov	ah,al			; 0000CB53  8AE0  '..'
	mov	al,cl			; 0000CB55  8AC1  '..'
	pop	dx			; 0000CB57  5A  'Z'
	out	dx,al			; 0000CB58  EE  '.'
	jmp	short xcb5d		; 0000CB59  EB02  '..'

xcb5b:	mov	al,cl			; 0000CB5B  8AC1  '..'
xcb5d:	ret				; 0000CB5D  C3  '.'

xcb5e:	mov	al,0x1			; 0000CB5E  B001  '..'
	call	xcbbb			; 0000CB60  E85800  '.X.'
	jz	xcbaa			; 0000CB63  7445  'tE'
	mov	si,0x71			; 0000CB65  BE7100  '.q.'
	and	byte [si],0x7f		; 0000CB68  80247F  '.$.'
	dec	dx			; 0000CB6B  4A  'J'
	mov	bh,0x1			; 0000CB6C  B701  '..'
xcb6e:	mov	cx,0x5a			; 0000CB6E  B95A00  '.Z.'
	mov	ah,0x80			; 0000CB71  B480  '..'
xcb73:	push	ax			; 0000CB73  50  'P'
	mov	al,0x0			; 0000CB74  B000  '..'
	out	0x43,al			; 0000CB76  E643  '.C'
	in	al,0x40			; 0000CB78  E440  '.@'
	xchg	al,ah			; 0000CB7A  86C4  '..'
	in	al,0x40			; 0000CB7C  E440  '.@'
	xchg	al,ah			; 0000CB7E  86C4  '..'
	mov	di,ax			; 0000CB80  8BF8  '..'
	pop	ax			; 0000CB82  58  'X'
xcb83:	in	al,dx			; 0000CB83  EC  '.'
	test	bh,al			; 0000CB84  84C7  '..'
	jnz	xcbb1			; 0000CB86  7529  'u)'
	test	[si],ah			; 0000CB88  8424  '.$'
	jnz	xcbaa			; 0000CB8A  751E  'u.'
	push	ax			; 0000CB8C  50  'P'
	mov	al,0x0			; 0000CB8D  B000  '..'
	out	0x43,al			; 0000CB8F  E643  '.C'
	in	al,0x40			; 0000CB91  E440  '.@'
	xchg	al,ah			; 0000CB93  86C4  '..'
	in	al,0x40			; 0000CB95  E440  '.@'
	xchg	al,ah			; 0000CB97  86C4  '..'
	push	di			; 0000CB99  57  'W'
	sub	di,ax			; 0000CB9A  2BF8  '+.'
	cmp	di,0x5d20		; 0000CB9C  81FF205D  '.. ]'
	pop	di			; 0000CBA0  5F  '_'
	pop	ax			; 0000CBA1  58  'X'
	jc	xcb83			; 0000CBA2  72DF  'r.'
	loop	xcb73			; 0000CBA4  E2CD  '..'
	dec	bl			; 0000CBA6  FECB  '..'
	jnz	xcb6e			; 0000CBA8  75C4  'u.'
xcbaa:	or	ah,0x80			; 0000CBAA  80CC80  '...'
	xor	al,al			; 0000CBAD  32C0  '2.'
	jmp	short xcbba		; 0000CBAF  EB09  '..'

xcbb1:	mov	ah,al			; 0000CBB1  8AE0  '..'
	sub	dx,byte +0x5		; 0000CBB3  83EA05  '...'
	in	al,dx			; 0000CBB6  EC  '.'
	and	ah,0x1e			; 0000CBB7  80E41E  '...'
xcbba:	ret				; 0000CBBA  C3  '.'

xcbbb:	add	dx,byte +0x4		; 0000CBBB  83C204  '...'
	out	dx,al			; 0000CBBE  EE  '.'
	inc	dx			; 0000CBBF  42  'B'
	inc	dx			; 0000CBC0  42  'B'
	mov	bh,0x20			; 0000CBC1  B720  '. '
	jmp	x9e03			; 0000CBC3  E93DD2  '.=.'

	add	[bx+si],cl		; 0000CBC6  0008  '..'
	sbb	[bx+si],ch		; 0000CBC8  1828  '.('
	db	0x38			; 0000CBCA  38

xcbcb:	cmp	al,0x01			; 0000CBCB  3C01
	cmc				; 0000CBCD  F5
	rcr	ah,1			; 0000CBCE  D0DC  '..'
	rcr	ah,1			; 0000CBD0  D0DC  '..'
	or	ah,ch			; 0000CBD2  0AE5  0x0A,'.'
	shl	bl,1			; 0000CBD4  D0E3  '..'
	shl	bl,1			; 0000CBD6  D0E3  '..'
	or	ah,bl			; 0000CBD8  0AE3  0x0A,'.'
	xor	bl,bl			; 0000CBDA  32DB  '2.'
	xchg	bh,bl			; 0000CBDC  86FB  '..'
	mov	si,0xcbc6		; 0000CBDE  BEC6CB  '...'
	add	si,bx			; 0000CBE1  03F3  '..'
	or	ah,[cs:si]		; 0000CBE3  2E0A24  '.',0x0A,'$'
	mov	bh,ah			; 0000CBE6  8AFC  '..'
	add	dx,byte +0x3		; 0000CBE8  83C203  '...'
	mov	al,0x80			; 0000CBEB  B080  '..'
	out	dx,al			; 0000CBED  EE  '.'
	sub	dx,byte +0x3		; 0000CBEE  83EA03  '...'
	xor	ch,ch			; 0000CBF1  32ED  '2.'
	mov	si,cx			; 0000CBF3  8BF1  '..'
	shl	si,1			; 0000CBF5  D1E6  '..'
	mov	ax,[cs:si+0xcc2e]	; 0000CBF7  2E8B842ECC  '.....'
	out	dx,al			; 0000CBFC  EE  '.'
	xchg	ah,al			; 0000CBFD  86E0  '..'
	inc	dx			; 0000CBFF  42  'B'
	out	dx,al			; 0000CC00  EE  '.'
	inc	dx			; 0000CC01  42  'B'
	inc	dx			; 0000CC02  42  'B'
	mov	al,bh			; 0000CC03  8AC7  '..'
	out	dx,al			; 0000CC05  EE  '.'
	dec	dx			; 0000CC06  4A  'J'
	dec	dx			; 0000CC07  4A  'J'
	xor	al,al			; 0000CC08  32C0  '2.'
	out	dx,al			; 0000CC0A  EE  '.'
	dec	dx			; 0000CC0B  4A  'J'
	call	xcb29			; 0000CC0C  E81AFF  '...'
	ret				; 0000CC0F  C3  '.'

xcc10:	cmp	al,0x2			; 0000CC10  3C02  '<.'
	jnc	xcc2d			; 0000CC12  7319  's.'
	add	dx,byte +0x4		; 0000CC14  83C204  '...'
	or	al,al			; 0000CC17  0AC0  0x0A,'.'
	jnz	xcc21			; 0000CC19  7506  'u.'
	in	al,dx			; 0000CC1B  EC  '.'
	mov	[bp+0xc],al		; 0000CC1C  88460C  '.F.'
	jmp	short xcc27		; 0000CC1F  EB06  '..'

xcc21:	and	bl,0x1f			; 0000CC21  80E31F  '...'
	mov	al,bl			; 0000CC24  8AC3  '..'
	out	dx,al			; 0000CC26  EE  '.'
xcc27:	sub	dx,byte +0x4		; 0000CC27  83EA04  '...'
	call	xcb29			; 0000CC2A  E8FCFE  '...'
xcc2d:	ret				; 0000CC2D  C3  '.'

	pop	ss			; 0000CC2E  17  '.'
	add	al,0x0			; 0000CC2F  0400  '..'
	add	ax,[bx+si+0xc001]	; 0000CC31  038001C0  '....'
	add	[bx+si+0x0],ah		; 0000CC35  006000  '.`.'
	xor	[bx+si],al		; 0000CC38  3000  '0.'
	sbb	[bx+si],al		; 0000CC3A  1800  '..'
	or	al,0x0			; 0000CC3C  0C00  '..'
	push	es			; 0000CC3E  06  '.'
	add	[bp+di],al		; 0000CC3F  0003  '..'
	add	[bp+si],al		; 0000CC41  0002  '..'
	add	[bx+si],al		; 0000CC43  0000  '..'
	stosb				; 0000CC45  AA  '.'
	push	bp			; 0000CC46  55  'U'
	add	[bp+si],ax		; 0000CC47  0102  '..'
	add	al,0x8			; 0000CC49  0408  '..'
	adc	[bx+si],ah		; 0000CC4B  1020  '. '
	inc	ax			; 0000CC4D  40  '@'
	cmp	bh,0x0			; 0000CC4E  80FF00  '...'

xcc51:	mov	al,0x90			; 0000CC51  B090  '..'
	out	0x84,al			; 0000CC53  E684  '..'
	mov	cx,0xe			; 0000CC55  B90E00  '...'
	mov	si,0xcc44		; 0000CC58  BE44CC  '.D.'
xcc5b:	loop	xcc5f			; 0000CC5B  E202  '..'
	jmp	short xcc83		; 0000CC5D  EB24  '.$'

xcc5f:	cs	lodsb			; 0000CC5F  2EAC  '..'
	mov	ah,al			; 0000CC61  8AE0  '..'
	mov	al,0x8f			; 0000CC63  B08F  '..'
	call	xb549			; 0000CC65  E8E1E8  '...'
	mov	al,0x8f			; 0000CC68  B08F  '..'
	call	xb544			; 0000CC6A  E8D7E8  '...'
	cmp	ah,al			; 0000CC6D  3AE0  ':.'
	jz	xcc5b			; 0000CC6F  74EA  't.'
	mov	al,0x92			; 0000CC71  B092  '..'
	out	0x84,al			; 0000CC73  E684  '..'
	mov	dx,0x0			; 0000CC75  BA0000  '...'

	mov	bx,err102		; 0000CC78  BB8CB6  '...'
	mov	cx,err102_len		; 0000CC7B  B91A00  '...'
	call	xc745			; 0000CC7E  E8C4FA  '...'
xcc81:	jmp	short xcc81		; 0000CC81  EBFE		; HANG THE MACHINE

xcc83:	mov	al,0x91			; 0000CC83  B091  '..'
	out	0x84,al			; 0000CC85  E684  '..'
	ret				; 0000CC87  C3  '.'

xcc88:	mov	al,0x93			; 0000CC88  B093  '..'
	out	0x84,al			; 0000CC8A  E684  '..'
	mov	al,0x4			; 0000CC8C  B004  '..'
	out	0x8,al			; 0000CC8E  E608  '..'
	out	0xd0,al			; 0000CC90  E6D0  '..'
	out	0xd,al			; 0000CC92  E60D  '.',0x0D
	out	0xda,al			; 0000CC94  E6DA  '..'
	mov	cx,0xe			; 0000CC96  B90E00  '...'
	mov	si,0xcc44		; 0000CC99  BE44CC  '.D.'
xcc9c:	loop	xcca1			; 0000CC9C  E203  '..'
	jmp	xcd3a			; 0000CC9E  E99900  '...'

xcca1:	cs	lodsb			; 0000CCA1  2EAC  '..'
	mov	bx,cx			; 0000CCA3  8BD9  '..'
	mov	dx,0x0			; 0000CCA5  BA0000  '...'
	mov	cx,0x8			; 0000CCA8  B90800  '...'
xccab:	out	dx,al			; 0000CCAB  EE  '.'
	out	dx,al			; 0000CCAC  EE  '.'
	inc	dx			; 0000CCAD  42  'B'
	loop	xccab			; 0000CCAE  E2FB  '..'
	mov	dx,0xc0			; 0000CCB0  BAC000  '...'
	mov	cx,0x8			; 0000CCB3  B90800  '...'
xccb6:	out	dx,al			; 0000CCB6  EE  '.'
	out	dx,al			; 0000CCB7  EE  '.'
	inc	dx			; 0000CCB8  42  'B'
	inc	dx			; 0000CCB9  42  'B'
	loop	xccb6			; 0000CCBA  E2FA  '..'
	out	0x87,al			; 0000CCBC  E687  '..'
	out	0x83,al			; 0000CCBE  E683  '..'
	out	0x81,al			; 0000CCC0  E681  '..'
	out	0x82,al			; 0000CCC2  E682  '..'
	out	0x8b,al			; 0000CCC4  E68B  '..'
	out	0x89,al			; 0000CCC6  E689  '..'
	out	0x8a,al			; 0000CCC8  E68A  '..'
	mov	ah,al			; 0000CCCA  8AE0  '..'
	in	al,0x87			; 0000CCCC  E487  '..'
	cmp	al,ah			; 0000CCCE  3AC4  ':.'
	jnz	xcd2c			; 0000CCD0  755A  'uZ'
	jmp	short xccd4		; 0000CCD2  EB00  '..'

xccd4:	in	al,0x83			; 0000CCD4  E483  '..'
	cmp	al,ah			; 0000CCD6  3AC4  ':.'
	jnz	xcd2c			; 0000CCD8  7552  'uR'
	jmp	short xccdc		; 0000CCDA  EB00  '..'

xccdc:	in	al,0x81			; 0000CCDC  E481  '..'
	cmp	al,ah			; 0000CCDE  3AC4  ':.'
	jnz	xcd2c			; 0000CCE0  754A  'uJ'
	jmp	short xcce4		; 0000CCE2  EB00  '..'

xcce4:	in	al,0x82			; 0000CCE4  E482  '..'
	cmp	al,ah			; 0000CCE6  3AC4  ':.'
	jnz	xcd2c			; 0000CCE8  7542  'uB'
	jmp	short xccec		; 0000CCEA  EB00  '..'

xccec:	in	al,0x8b			; 0000CCEC  E48B  '..'
	cmp	al,ah			; 0000CCEE  3AC4  ':.'
	jnz	xcd2c			; 0000CCF0  753A  'u:'
	jmp	short xccf4		; 0000CCF2  EB00  '..'

xccf4:	in	al,0x89			; 0000CCF4  E489  '..'
	cmp	al,ah			; 0000CCF6  3AC4  ':.'
	jnz	xcd2c			; 0000CCF8  7532  'u2'
	jmp	short xccfc		; 0000CCFA  EB00  '..'

xccfc:	in	al,0x8a			; 0000CCFC  E48A  '..'
	cmp	al,ah			; 0000CCFE  3AC4  ':.'
	jnz	xcd2c			; 0000CD00  752A  'u*'
	jmp	short xcd04		; 0000CD02  EB00  '..'

xcd04:	mov	al,0x94			; 0000CD04  B094  '..'
	out	0x84,al			; 0000CD06  E684  '..'
	mov	dx,0x0			; 0000CD08  BA0000  '...'
	mov	cx,0x8			; 0000CD0B  B90800  '...'
xcd0e:	in	al,dx			; 0000CD0E  EC  '.'
	in	al,dx			; 0000CD0F  EC  '.'
	inc	dx			; 0000CD10  42  'B'
	cmp	al,ah			; 0000CD11  3AC4  ':.'
	jnz	xcd2c			; 0000CD13  7517  'u.'
	loop	xcd0e			; 0000CD15  E2F7  '..'
	mov	dx,0xc0			; 0000CD17  BAC000  '...'
	mov	cx,0x8			; 0000CD1A  B90800  '...'
xcd1d:	in	al,dx			; 0000CD1D  EC  '.'
	in	al,dx			; 0000CD1E  EC  '.'
	inc	dx			; 0000CD1F  42  'B'
	inc	dx			; 0000CD20  42  'B'
	cmp	al,ah			; 0000CD21  3AC4  ':.'
	jnz	xcd2c			; 0000CD23  7507  'u.'
	loop	xcd1d			; 0000CD25  E2F6  '..'
	mov	cx,bx			; 0000CD27  8BCB  '..'
	jmp	xcc9c			; 0000CD29  E970FF  '.p.'

xcd2c:	mov	dx,0x0			; 0000CD2C  BA0000  '...'
	mov	bx,err102		; 0000CD2F  BB8CB6  '...'
	mov	cx,err102_len		; 0000CD32  B91A00  '...'
	call	xc745			; 0000CD35  E80DFA  '.',0x0D,'.'
xcd38:	jmp	short xcd38		; 0000CD38  EBFE		; HANG THE MACHINE

xcd3a:	mov	al,0x95			; 0000CD3A  B095  '..'
	out	0x84,al			; 0000CD3C  E684  '..'
	out	0xd,al			; 0000CD3E  E60D  '.',0x0D
	out	0xda,al			; 0000CD40  E6DA  '..'
	mov	al,0x0			; 0000CD42  B000  '..'
	out	0x8,al			; 0000CD44  E608  '..'
	out	0xd0,al			; 0000CD46  E6D0  '..'
	mov	al,0x40			; 0000CD48  B040  '.@'
	out	0xb,al			; 0000CD4A  E60B  '..'
	mov	al,0x41			; 0000CD4C  B041  '.A'
	out	0xb,al			; 0000CD4E  E60B  '..'
	mov	al,0x42			; 0000CD50  B042  '.B'
	out	0xb,al			; 0000CD52  E60B  '..'
	mov	al,0x43			; 0000CD54  B043  '.C'
	out	0xb,al			; 0000CD56  E60B  '..'
	mov	al,0xc0			; 0000CD58  B0C0  '..'
	out	0xd6,al			; 0000CD5A  E6D6  '..'
	mov	al,0x41			; 0000CD5C  B041  '.A'
	out	0xd6,al			; 0000CD5E  E6D6  '..'
	mov	al,0x42			; 0000CD60  B042  '.B'
	out	0xd6,al			; 0000CD62  E6D6  '..'
	mov	al,0x43			; 0000CD64  B043  '.C'
	out	0xd6,al			; 0000CD66  E6D6  '..'
	mov	al,0x96			; 0000CD68  B096  '..'
	out	0x84,al			; 0000CD6A  E684  '..'
	ret				; 0000CD6C  C3  '.'

xcd6d:	pushf				; 0000CD6D  9C  '.'
	cli				; 0000CD6E  FA  '.'
xcd6f:	mov	al,0x8a			; 0000CD6F  B08A  '..'
	call	xb544			; 0000CD71  E8D0E7  '...'
	test	al,0x80			; 0000CD74  A880  '..'
	jz	xcd7a			; 0000CD76  7402  't.'
	jmp	short xcd6f		; 0000CD78  EBF5  '..'

xcd7a:	mov	al,0x80			; 0000CD7A  B080  '..'
	call	xb544			; 0000CD7C  E8C5E7  '...'
	mov	dh,al			; 0000CD7F  8AF0  '..'
	mov	al,0x82			; 0000CD81  B082  '..'
	call	xb544			; 0000CD83  E8BEE7  '...'
	mov	cl,al			; 0000CD86  8AC8  '..'
	mov	al,0x84			; 0000CD88  B084  '..'
	call	xb544			; 0000CD8A  E8B7E7  '...'
	mov	ch,al			; 0000CD8D  8AE8  '..'
	popf				; 0000CD8F  9D  '.'
	mov	al,dh			; 0000CD90  8AC6  '..'
	call	xce67			; 0000CD92  E8D200  '...'
	cmp	al,0x3b			; 0000CD95  3C3B  '<;'
	ja	xcdfe			; 0000CD97  7765  'we'
	xchg	al,ah			; 0000CD99  86C4  '..'
	mov	si,ax			; 0000CD9B  8BF0  '..'
	mov	al,cl			; 0000CD9D  8AC1  '..'
	call	xce67			; 0000CD9F  E8C500  '...'
	cmp	al,0x3b			; 0000CDA2  3C3B  '<;'
	ja	xcdfe			; 0000CDA4  7758  'wX'
	mov	bl,al			; 0000CDA6  8AD8  '..'
	mov	al,ch			; 0000CDA8  8AC5  '..'
	call	xce67			; 0000CDAA  E8BA00  '...'
	cmp	al,0x17			; 0000CDAD  3C17  '<.'
	ja	xcdfe			; 0000CDAF  774D  'wM'
	mov	bh,al			; 0000CDB1  8AF8  '..'
	mov	ax,bx			; 0000CDB3  8BC3  '..'
	xor	cx,cx			; 0000CDB5  33C9  '3.'
	xchg	cl,ah			; 0000CDB7  86CC  '..'
	push	cx			; 0000CDB9  51  'Q'
	mov	cx,0x2223		; 0000CDBA  B92322  '.#"'
	mul	cx			; 0000CDBD  F7E1  '..'
	xchg	ax,bx			; 0000CDBF  93  '.'
	pop	ax			; 0000CDC0  58  'X'
	push	dx			; 0000CDC1  52  'R'
	mov	cx,0x3c			; 0000CDC2  B93C00  '.<.'
	mul	cx			; 0000CDC5  F7E1  '..'
	mov	cx,0x2223		; 0000CDC7  B92322  '.#"'
	mul	cx			; 0000CDCA  F7E1  '..'
	add	bx,ax			; 0000CDCC  03D8  '..'
	pop	cx			; 0000CDCE  59  'Y'
	adc	dx,cx			; 0000CDCF  13D1  '..'
	mov	ax,si			; 0000CDD1  8BC6  '..'
	mov	cl,al			; 0000CDD3  8AC8  '..'
	mov	al,ah			; 0000CDD5  8AC4  '..'
	mov	ah,0x92			; 0000CDD7  B492  '..'
	mul	ah			; 0000CDD9  F6E4  '..'
	shl	cx,1			; 0000CDDB  D1E1  '..'
	add	cx,ax			; 0000CDDD  03C8  '..'
	xor	ax,ax			; 0000CDDF  33C0  '3.'
	add	cx,bx			; 0000CDE1  03CB  '..'
	adc	dx,ax			; 0000CDE3  13D0  '..'
	xchg	dx,cx			; 0000CDE5  87D1  '..'
	add	dx,byte +0x7		; 0000CDE7  83C207  '...'
	adc	cx,ax			; 0000CDEA  13C8  '..'
	shr	cx,1			; 0000CDEC  D1E9  '..'
	rcr	dx,1			; 0000CDEE  D1DA  '..'
	shr	cx,1			; 0000CDF0  D1E9  '..'
	rcr	dx,1			; 0000CDF2  D1DA  '..'
	shr	cx,1			; 0000CDF4  D1E9  '..'
	rcr	dx,1			; 0000CDF6  D1DA  '..'
	mov	ah,0x1			; 0000CDF8  B401  '..'
	int	0x1a			; 0000CDFA  CD1A  '..'
	jmp	short xce0c		; 0000CDFC  EB0E  '..'

xcdfe:	mov	al,0x8e			; 0000CDFE  B08E  '..'
	call	xb544			; 0000CE00  E841E7  '.A.'
	or	al,0x4			; 0000CE03  0C04  '..'
	mov	ah,al			; 0000CE05  8AE0  '..'
	mov	al,0x8e			; 0000CE07  B08E  '..'
	call	xb549			; 0000CE09  E83DE7  '.=.'
xce0c:	push	es			; 0000CE0C  06  '.'
	mov	ax,0x40			; 0000CE0D  B84000  '.@.'
	mov	ds,ax			; 0000CE10  8ED8  '..'
	xor	ax,ax			; 0000CE12  33C0  '3.'
	mov	es,ax			; 0000CE14  8EC0  '..'
	mov	bp,[es:0x20]		; 0000CE16  268B2E2000  '&.. .'
	mov	word [es:0x20],0xce54	; 0000CE1B  26C706200054CE  '&.. .T.'
	and	byte [0x6b],0xfe	; 0000CE22  80266B00FE  '.&k..'
	in	al,0x21			; 0000CE27  E421  '.!'
	and	al,0xfe			; 0000CE29  24FE  '$.'
	out	0x21,al			; 0000CE2B  E621  '.!'
	mov	bx,0x3c			; 0000CE2D  BB3C00  '.<.'
	call	xc638			; 0000CE30  E805F8  '...'	; CALL DELAY(BX)
	test	byte [0x6b],0x1		; 0000CE33  F6066B0001  '..k..'
	jnz	xce48			; 0000CE38  750E

	mov	dx,0x0			; 0000CE3A  BA0000  '...'
	mov	bx,err102		; 0000CE3D  BB8CB6  '...'
	mov	cx,err102_len		; 0000CE40  B91A00  '...'
	call	xc745			; 0000CE43  E8FFF8  '...'
xce46:	jmp	short xce46		; 0000CE46  EBFE		; HANG THE MACHINE

xce48:	mov	[es:0x20],bp		; 0000CE48  26892E2000  '&.. .'
	and	byte [0x6b],0xfe	; 0000CE4D  80266B00FE  '.&k..'
	pop	es			; 0000CE52  07  '.'
	ret				; 0000CE53  C3  '.'

	push	ds			; 0000CE54  1E  '.'
	push	ax			; 0000CE55  50  'P'
	mov	ax,0x40			; 0000CE56  B84000  '.@.'
	mov	ds,ax			; 0000CE59  8ED8  '..'
	or	byte [0x6b],0x1		; 0000CE5B  800E6B0001  '..k..'
	mov	al,0x20			; 0000CE60  B020  '. '
	out	0x20,al			; 0000CE62  E620  '. '
	pop	ax			; 0000CE64  58  'X'
	pop	ds			; 0000CE65  1F  '.'
	iret				; 0000CE66  CF  '.'

xce67:	mov	ah,al			; 0000CE67  8AE0  '..'
	shr	ah,0x4			; 0000CE69  C0EC04  '...'
	and	al,0xf			; 0000CE6C  240F  '$.'
	aad				; 0000CE6E  D50A  '.',0x0A
	ret				; 0000CE70  C3  '.'

xce71:	mov	ax,0x40			; 0000CE71  B84000  '.@.'
	mov	ds,ax			; 0000CE74  8ED8  '..'
	mov	bx,[0x10]		; 0000CE76  8B1E1000  '....'
	fninit				; 0000CE7A  DBE3  '..'
	wait				; 0000CE7C  9B  '.'
	fnstsw	[0x10]			; 0000CE7D  DD3E1000  '.>..'
	mov	al,[0x10]		; 0000CE81  A01000  '...'
	or	al,al			; 0000CE84  0AC0  0x0A,'.'
	jnz	xce8b			; 0000CE86  7503  'u.'
	or	bl,0x2			; 0000CE88  80CB02  '...'
xce8b:	in	al,0x60			; 0000CE8B  E460  '.`'
	mov	al,0xc0			; 0000CE8D  B0C0  '..'
	out	0x64,al			; 0000CE8F  E664  '.d'
xce91:	in	al,0x64			; 0000CE91  E464  '.d'
	test	al,0x2			; 0000CE93  A802  '..'
	jz	xce99			; 0000CE95  7402  't.'
	jmp	short xce91		; 0000CE97  EBF8  '..'

xce99:	in	al,0x64			; 0000CE99  E464  '.d'
	test	al,0x1			; 0000CE9B  A801  '..'
	jz	xce99			; 0000CE9D  74FA  't.'
	in	al,0x60			; 0000CE9F  E460  '.`'
	test	al,0x4			; 0000CEA1  A804  '..'
	jnz	xceac			; 0000CEA3  7507  'u.'
	test	bl,0x2			; 0000CEA5  F6C302  '...'
	jnz	0xceca			; 0000CEA8  7520  'u '
	jmp	short xceb7		; 0000CEAA  EB0B  '..'

xceac:	test	bl,0x2			; 0000CEAC  F6C302  '...'
	jnz	xceb7			; 0000CEAF  7506  'u.'
	and	bl,0xfd			; 0000CEB1  80E3FD  '...'
	jmp	short xced6		; 0000CEB4  EB20  '. '
	nop				; 0000CEB6  90  '.'
xceb7:	and	bl,0xfd			; 0000CEB7  80E3FD  '...'
	push	bx			; 0000CEBA  53  'S'
	mov	dx,0x0			; 0000CEBB  BA0000  '...'
	mov	bx,0xb84f		; 0000CEBE  BB4FB8  '.O.'
	mov	cx,0x3d			; 0000CEC1  B93D00  '.=.'
	call	xc745			; 0000CEC4  E87EF8  '.~.'
	pop	bx			; 0000CEC7  5B  '['
	jmp	short xced6		; 0000CEC8  EB0C  '..'

	in	al,0xa1			; 0000CECA  E4A1  '..'
	and	al,0xdf			; 0000CECC  24DF  '$.'
	out	0xa1,al			; 0000CECE  E6A1  '..'
	in	al,0x21			; 0000CED0  E421  '.!'
	and	al,0xfb			; 0000CED2  24FB  '$.'
	out	0x21,al			; 0000CED4  E621  '.!'
xced6:	mov	[0x10],bx		; 0000CED6  891E1000  '....'
	ret				; 0000CEDA  C3  '.'

xcedb:	mov	al,0x8b			; 0000CEDB  B08B  '..'
	out	0x84,al			; 0000CEDD  E684  '..'
	call	xd03e			; 0000CEDF  E85C01  '.\.'
	jc	xceff			; 0000CEE2  721B  'r.'
	cmp	al,0x5			; 0000CEE4  3C05  '<.'
	jnz	xcef8			; 0000CEE6  7510  'u.'
	mov	dx,0x0			; 0000CEE8  BA0000  '...'
	mov	bx,0xb7a8		; 0000CEEB  BBA8B7  '...'
	mov	cx,0x2f			; 0000CEEE  B92F00  './.'
	call	xc751			; 0000CEF1  E85DF8  '.].'
	call	xcfbf			; 0000CEF4  E8C800  '...'
	ret				; 0000CEF7  C3  '.'

xcef8:	cmp	al,0x0			; 0000CEF8  3C00  '<.'
	jz	xcf02			; 0000CEFA  7406  't.'
	call	xcfbf			; 0000CEFC  E8C000  '...'
xceff:	jmp	xcf91			; 0000CEFF  E98F00  '...'

xcf02:	mov	al,0x86			; 0000CF02  B086  '..'
	out	0x84,al			; 0000CF04  E684  '..'
	mov	al,0xff			; 0000CF06  B0FF  '..'
	out	0x60,al			; 0000CF08  E660  '.`'
	mov	cx,0x3e8		; 0000CF0A  B9E803  '...'
xcf0d:	push	cx			; 0000CF0D  51  'Q'
	call	xc62f			; 0000CF0E  E81EF7  '...'
	pop	cx			; 0000CF11  59  'Y'
	in	al,0x64			; 0000CF12  E464  '.d'
	test	al,0x1			; 0000CF14  A801  '..'
	jnz	xcf1d			; 0000CF16  7505  'u.'
	loop	xcf0d			; 0000CF18  E2F3  '..'
	jmp	xcfa8			; 0000CF1A  E98B00  '...'

xcf1d:	in	al,0x60			; 0000CF1D  E460  '.`'
	cmp	al,0xfa			; 0000CF1F  3CFA  '<.'
	jz	xcf28			; 0000CF21  7405  't.'
	loop	xcf0d			; 0000CF23  E2E8  '..'
	jmp	xcfa8			; 0000CF25  E98000  '...'

xcf28:	mov	al,0x87			; 0000CF28  B087  '..'
	out	0x84,al			; 0000CF2A  E684  '..'
	mov	cx,0x1388		; 0000CF2C  B98813  '...'
xcf2f:	in	al,0x64			; 0000CF2F  E464  '.d'
	test	al,0x1			; 0000CF31  A801  '..'
	jnz	xcf3f			; 0000CF33  750A  'u',0x0A
	push	cx			; 0000CF35  51  'Q'
	call	xc62f			; 0000CF36  E8F6F6  '...'
	pop	cx			; 0000CF39  59  'Y'
	loop	xcf2f			; 0000CF3A  E2F3  '..'
	jmp	short xcfa8		; 0000CF3C  EB6A  '.j'

	nop				; 0000CF3E  90  '.'
xcf3f:	mov	al,0x88			; 0000CF3F  B088  '..'
	out	0x84,al			; 0000CF41  E684  '..'
	in	al,0x60			; 0000CF43  E460  '.`'
	cmp	al,0xaa			; 0000CF45  3CAA  '<.'
	jz	xcf4c			; 0000CF47  7403  't.'
	jmp	short xcf91		; 0000CF49  EB46  '.F'

	nop				; 0000CF4B  90  '.'
xcf4c:	mov	al,0x89			; 0000CF4C  B089  '..'
	out	0x84,al			; 0000CF4E  E684  '..'
	mov	al,0xae			; 0000CF50  B0AE  '..'
	out	0x64,al			; 0000CF52  E664  '.d'
	mov	cx,0xffff		; 0000CF54  B9FFFF  '...'
xcf57:	in	al,0x64			; 0000CF57  E464  '.d'
	test	al,0x2			; 0000CF59  A802  '..'
	jz	xcf62			; 0000CF5B  7405  't.'
	loop	xcf57			; 0000CF5D  E2F8  '..'
	jmp	short xcf91		; 0000CF5F  EB30  '.0'

	nop				; 0000CF61  90  '.'
xcf62:	mov	cx,0xa			; 0000CF62  B90A00  '.',0x0A,'.'
xcf65:	in	al,0x64			; 0000CF65  E464  '.d'
	test	al,0x1			; 0000CF67  A801  '..'
	jnz	xcf74			; 0000CF69  7509  'u.'
	push	cx			; 0000CF6B  51  'Q'
	call	xc62f			; 0000CF6C  E8C0F6  '...'
	pop	cx			; 0000CF6F  59  'Y'
	loop	xcf65			; 0000CF70  E2F3  '..'
	jmp	short xcf8c		; 0000CF72  EB18  '..'

xcf74:	mov	al,0x8a			; 0000CF74  B08A  '..'
	out	0x84,al			; 0000CF76  E684  '..'
	in	al,0x60			; 0000CF78  E460  '.`'
	push	ax			; 0000CF7A  50  'P'
	mov	al,0xad			; 0000CF7B  B0AD  '..'
	out	0x64,al			; 0000CF7D  E664  '.d'
xcf7f:	in	al,0x64			; 0000CF7F  E464  '.d'
	test	al,0x2			; 0000CF81  A802  '..'
	jnz	xcf7f			; 0000CF83  75FA  'u.'
	pop	ax			; 0000CF85  58  'X'
	call	xc7b8			; 0000CF86  E82FF8  './.'
	jmp	short xcf91		; 0000CF89  EB06  '..'

	nop				; 0000CF8B  90  '.'
xcf8c:	mov	al,0x8d			; 0000CF8C  B08D  '..'
	out	0x84,al			; 0000CF8E  E684  '..'
	ret				; 0000CF90  C3  '.'

xcf91:	mov	ax,0x40			; 0000CF91  B84000  '.@.'
	mov	ds,ax			; 0000CF94  8ED8  '..'
	or	byte [0x12],0xff	; 0000CF96  800E1200FF  '.....'
	mov	dx,0x0			; 0000CF9B  BA0000  '...'
	mov	bx,0xb7d7		; 0000CF9E  BBD7B7  '...'
	mov	cx,0x15			; 0000CFA1  B91500  '...'
	call	xc745			; 0000CFA4  E89EF7  '...'
	ret				; 0000CFA7  C3  '.'

xcfa8:	mov	ax,0x40			; 0000CFA8  B84000  '.@.'
	mov	ds,ax			; 0000CFAB  8ED8  '..'
	or	byte [0x12],0xff	; 0000CFAD  800E1200FF  '.....'
	mov	dx,0x0			; 0000CFB2  BA0000  '...'
	mov	bx,0xb7ec		; 0000CFB5  BBECB7  '...'
	mov	cx,0x24			; 0000CFB8  B92400  '.$.'
	call	xc745			; 0000CFBB  E887F7  '...'
	ret				; 0000CFBE  C3  '.'

xcfbf:	mov	al,0xae			; 0000CFBF  B0AE  '..'
	out	0x64,al			; 0000CFC1  E664  '.d'
	mov	cx,0xffff		; 0000CFC3  B9FFFF  '...'
xcfc6:	in	al,0x64			; 0000CFC6  E464  '.d'
	test	al,0x2			; 0000CFC8  A802  '..'
	jz	xcfdc			; 0000CFCA  7410  't.'
	loop	xcfc6			; 0000CFCC  E2F8  '..'
	mov	dx,0x0			; 0000CFCE  BA0000  '...'
	mov	bx,0xb810		; 0000CFD1  BB10B8  '...'	; BX -> '303-Keyboard Controller Error'
	mov	cx,0x1f			; 0000CFD4  B91F00  '...'
	call	xc745			; 0000CFD7  E86BF7  '.k.'
xcfda:	jmp	short xcfda		; 0000CFDA  EBFE		; HANG THE MACHINE

xcfdc:	ret				; 0000CFDC  C3  '.'

xcfdd:	mov	al,0x80			; 0000CFDD  B080  '..'
	out	0x84,al			; 0000CFDF  E684  '..'
	mov	al,0xad			; 0000CFE1  B0AD  '..'
	out	0x64,al			; 0000CFE3  E664  '.d'
xcfe5:	in	al,0x64			; 0000CFE5  E464  '.d'
	test	al,0x2			; 0000CFE7  A802  '..'
	jnz	xcfe5			; 0000CFE9  75FA  'u.'
xcfeb:	in	al,0x64			; 0000CFEB  E464  '.d'
	test	al,0x1			; 0000CFED  A801  '..'
	jz	xcff5			; 0000CFEF  7404  't.'
	in	al,0x60			; 0000CFF1  E460  '.`'
	jmp	short xcfeb		; 0000CFF3  EBF6  '..'

xcff5:	mov	al,0x81			; 0000CFF5  B081  '..'
	out	0x84,al			; 0000CFF7  E684  '..'
	mov	al,0xaa			; 0000CFF9  B0AA  '..'
	out	0x64,al			; 0000CFFB  E664  '.d'
	mov	cx,0x2710		; 0000CFFD  B91027  '..',0x27
xd000:	in	al,0x64			; 0000D000  E464  '.d'
	test	al,0x1			; 0000D002  A801  '..'
	jnz	xd00f			; 0000D004  7509  'u.'
	push	cx			; 0000D006  51  'Q'
	call	xc62f			; 0000D007  E825F6  '.%.'
	pop	cx			; 0000D00A  59  'Y'
	loop	xd000			; 0000D00B  E2F3  '..'
	jmp	short xd019		; 0000D00D  EB0A  '.',0x0A

xd00f:	mov	al,0x82			; 0000D00F  B082  '..'
	out	0x84,al			; 0000D011  E684  '..'
	in	al,0x60			; 0000D013  E460  '.`'
	cmp	al,0x55			; 0000D015  3C55  '<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  '...'	; BX -> '303-Keyboard Controller Error'
	mov	cx,0x1f			; 0000D023  B91F00  '...'
	call	xc745			; 0000D026  E81CF7  '...'
xd029:	jmp	short xd029		; 0000D029  EBFE		; HANG THE MACHINE

xd02b:	mov	al,0x84			; 0000D02B  B084  '..'
	out	0x84,al			; 0000D02D  E684  '..'
	mov	al,0x60			; 0000D02F  B060  '.`'
	out	0x64,al			; 0000D031  E664  '.d'
xd033:	in	al,0x64			; 0000D033  E464  '.d'
	test	al,0x2			; 0000D035  A802  '..'
	jnz	xd033			; 0000D037  75FA  'u.'
	mov	al,0x5d			; 0000D039  B05D  '.]'
	out	0x60,al			; 0000D03B  E660  '.`'
	ret				; 0000D03D  C3  '.'

xd03e:	mov	al,0xab			; 0000D03E  B0AB  '..'
	out	0x64,al			; 0000D040  E664  '.d'
xd042:	in	al,0x64			; 0000D042  E464  '.d'
	test	al,0x2			; 0000D044  A802  '..'
	jnz	xd042			; 0000D046  75FA  'u.'
	mov	cx,0x64			; 0000D048  B96400  '.d.'
xd04b:	in	al,0x64			; 0000D04B  E464  '.d'
	test	al,0x1			; 0000D04D  A801  '..'
	jnz	xd05a			; 0000D04F  7509  'u.'
	push	cx			; 0000D051  51  'Q'
	call	xc62f			; 0000D052  E8DAF5  '...'
	pop	cx			; 0000D055  59  'Y'
	loop	xd04b			; 0000D056  E2F3  '..'
	jmp	short xd063		; 0000D058  EB09  '..'

xd05a:	mov	al,0x8c			; 0000D05A  B08C  '..'
	out	0x84,al			; 0000D05C  E684  '..'
	in	al,0x60			; 0000D05E  E460  '.`'
	clc				; 0000D060  F8  '.'
	jmp	short xd064		; 0000D061  EB01  '..'

xd063:	stc				; 0000D063  F9  '.'
xd064:	ret				; 0000D064  C3  '.'

	std				; 0000D065  FD  '.'
	cli				; 0000D066  FA  '.'
	stc				; 0000D067  F9  '.'
	div	ch			; 0000D068  F6F5  '..'
	jmp	0xd6da:0xe5e9		; 0000D06A  EAE9E5DAD6  '.....'

	aad	0xaa			; 0000D06F  D5AA  '..'
	test	ax,0x9aa5		; 0000D071  A9A59A  '...'
	xchg	ax,bp			; 0000D074  95  '.'
	xchg	ax,si			; 0000D075  96  '.'
	push	si			; 0000D076  56  'V'
	push	bp			; 0000D077  55  'U'
	db	0xFE			; 0000D078  FE  '.'

xd079:	push	bp			; 0000D079  55  'U'
	mov	di,0x0			; 0000D07A  BF0000  '...'
	mov	bp,0xd083		; 0000D07D  BD83D0  '...'
	jmp	x87e4			; 0000D080  E961B7  '.a.'

	and	bl,0xc0			; 0000D083  80E3C0  '...'
	cmp	bl,0x40			; 0000D086  80FB40  '..@'
	jnz	xd0c2			; 0000D089  7537  'u7'
	mov	di,0x1			; 0000D08B  BF0100  '...'
	mov	bp,0xd094		; 0000D08E  BD94D0  '...'
	jmp	x87e4			; 0000D091  E950B7  '.P.'

	push	es			; 0000D094  06  '.'
	mov	ax,cs			; 0000D095  8CC8  '..'
	mov	es,ax			; 0000D097  8EC0  '..'
	mov	di,0xd065		; 0000D099  BF65D0  '.e.'
	mov	cx,0x14			; 0000D09C  B91400  '...'
	mov	al,bl			; 0000D09F  8AC3  '..'
	repne	scasb			; 0000D0A1  F2AE  '..'
	jnz	xd0a7			; 0000D0A3  7502  'u.'
	jmp	short xd0c1		; 0000D0A5  EB1A  '..'

xd0a7:	mov	dx,0x0			; 0000D0A7  BA0000  '...'
	mov	bx,err207		; 0000D0AA  BBE3B6  '...'
	mov	cx,err207_len		; 0000D0AD  B92300  '.#.'
	call	xc745			; 0000D0B0  E892F6  '...'
	mov	al,0xe			; 0000D0B3  B00E  '..'
	call	xb544			; 0000D0B5  E88CE4  '...'
	or	al,0x20			; 0000D0B8  0C20  '. '
	mov	ah,0xe			; 0000D0BA  B40E  '..'
	xchg	ah,al			; 0000D0BC  86E0  '..'
	call	xb549			; 0000D0BE  E888E4  '...'
xd0c1:	pop	es			; 0000D0C1  07  '.'
xd0c2:	pop	bp			; 0000D0C2  5D  ']'
	ret				; 0000D0C3  C3  '.'

	mov	byte [bp+0x1],0x0	; 0000D0C4  C6460100  '.F..'
	add	dx,byte +0x6		; 0000D0C8  83C206  '...'
	in	al,dx			; 0000D0CB  EC  '.'
	sub	dx,byte +0x6		; 0000D0CC  83EA06  '...'
	test	al,0x4			; 0000D0CF  A804  '..'
	jnz	xd141			; 0000D0D1  756E  'un'
	test	al,0x2			; 0000D0D3  A802  '..'
	jz	xd145			; 0000D0D5  746E  'tn'
	mov	byte [bp+0x1],0x1	; 0000D0D7  C6460101  '.F..'
	mov	al,0x10			; 0000D0DB  B010  '..'
	out	dx,al			; 0000D0DD  EE  '.'
	inc	dx			; 0000D0DE  42  'B'
	in	al,dx			; 0000D0DF  EC  '.'
	mov	ah,al			; 0000D0E0  8AE0  '..'
	dec	dx			; 0000D0E2  4A  'J'
	mov	al,0x11			; 0000D0E3  B011  '..'
	out	dx,al			; 0000D0E5  EE  '.'
	inc	dx			; 0000D0E6  42  'B'
	in	al,dx			; 0000D0E7  EC  '.'
	dec	dx			; 0000D0E8  4A  'J'
	sub	ax,[0x4e]		; 0000D0E9  2B064E00  '+.N.'
	cmp	ax,0x1005		; 0000D0ED  3D0510  '=..'
	jl	xd0f4			; 0000D0F0  7C02  '|.'
	xor	ax,ax			; 0000D0F2  33C0  '3.'
xd0f4:	xor	bh,bh			; 0000D0F4  32FF  '2.'
	mov	bl,[0x49]		; 0000D0F6  8A1E4900  '..I.'
	sub	al,[cs:bx+0xd15e]	; 0000D0FA  2E2A875ED1  '.*.^.'
	sbb	ah,0x0			; 0000D0FF  80DC00  '...'
	jns	xd106			; 0000D102  7902  'y.'
	xor	ax,ax			; 0000D104  33C0  '3.'
xd106:	mov	cl,[0x4a]		; 0000D106  8A0E4A00  '..J.'
	cmp	bl,0x4			; 0000D10A  80FB04  '...'
	jc	xd146			; 0000D10D  7237  'r7'
	cmp	bl,0x7			; 0000D10F  80FB07  '...'
	jz	xd146			; 0000D112  7432  't2'
	mov	cl,0x28			; 0000D114  B128  '.('
	div	cl			; 0000D116  F6F1  '..'
	mov	cl,al			; 0000D118  8AC8  '..'
	shr	cl,1			; 0000D11A  D0E9  '..'
	shr	cl,1			; 0000D11C  D0E9  '..'
	mov	[bp+0x3],cl		; 0000D11E  884E03  '.N.'
	mov	[bp+0x2],ah		; 0000D121  886602  '.f.'
	shl	al,1			; 0000D124  D0E0  '..'
	mov	[bp+0x5],al		; 0000D126  884605  '.F.'
	mov	cl,0x3			; 0000D129  B103  '..'
	xchg	ah,al			; 0000D12B  86E0  '..'
	xor	ah,ah			; 0000D12D  32E4  '2.'
	shl	ax,cl			; 0000D12F  D3E0  '..'
	mov	[bp+0x6],ax		; 0000D131  894606  '.F.'
	cmp	byte [0x49],0x6		; 0000D134  803E490006  '.>I..'
	jnz	xd141			; 0000D139  7506  'u.'
	shl	byte [bp+0x2],1		; 0000D13B  D06602  '.f.'
	shl	word [bp+0x6],1		; 0000D13E  D16606  '.f.'
xd141:	add	dx,byte +0x7		; 0000D141  83C207  '...'
	out	dx,al			; 0000D144  EE  '.'
xd145:	ret				; 0000D145  C3  '.'

xd146:	div	cl			; 0000D146  F6F1  '..'
	mov	[bp+0x3],al		; 0000D148  884603  '.F.'
	mov	[bp+0x2],ah		; 0000D14B  886602  '.f.'
	mov	cl,0x3			; 0000D14E  B103  '..'
	mov	bl,ah			; 0000D150  8ADC  '..'
	shl	bx,cl			; 0000D152  D3E3  '..'
	mov	[bp+0x6],bx		; 0000D154  895E06  '.^.'
	shl	al,cl			; 0000D157  D2E0  '..'
	mov	[bp+0x5],al		; 0000D159  884605  '.F.'
	jmp	short xd141		; 0000D15C  EBE3  '..'

	add	ax,[bp+di]		; 0000D15E  0303  '..'
	add	ax,0x305		; 0000D160  050503  '...'
	add	ax,[bp+di]		; 0000D163  0303  '..'
	add	al,0x8a			; 0000D165  048A  '..'
	bound	ax,[ds:bx+si]		; 0000D167  3E6200  '>b.'
	cmp	al,0x7			; 0000D16A  3C07  '<.'
	jz	xd1ce			; 0000D16C  7460  't`'
	cmp	al,0x8			; 0000D16E  3C08  '<.'
	db	'tF<',0x0A,'t_<',0x0D,'tK'
	mov	cx,0x1			; 0000D17A  B90100  '...'
	mov	ah,0xa			; 0000D17D  B40A  '.',0x0A
	call	x83db			; 0000D17F  E859B2  '.Y.'
	mov	ah,0x3			; 0000D182  B403  '..'
	call	x83db			; 0000D184  E854B2  '.T.'
	inc	dl			; 0000D187  FEC2  '..'
	cmp	dl,[0x4a]		; 0000D189  3A164A00  ':.J.'
	jnz	xd1ab			; 0000D18D  751C  'u.'
	xor	dl,dl			; 0000D18F  32D2  '2.'
	inc	dh			; 0000D191  FEC6  '..'
	cmp	dh,0x19			; 0000D193  80FE19  '...'
	jnz	xd1ab			; 0000D196  7513  'u.'
	dec	dh			; 0000D198  FECE  '..'
	mov	ah,0x2			; 0000D19A  B402  '..'
	call	x83db			; 0000D19C  E83CB2  '.<.'
	mov	ah,0x8			; 0000D19F  B408  '..'
	call	x83db			; 0000D1A1  E837B2  '.7.'
	push	bx			; 0000D1A4  53  'S'
	mov	bh,ah			; 0000D1A5  8AFC  '..'
	call	xd1ea			; 0000D1A7  E84000  '.@.'
	pop	bx			; 0000D1AA  5B  '['
xd1ab:	mov	ah,0x2			; 0000D1AB  B402  '..'
	call	x83db			; 0000D1AD  E82BB2  '.+.'
xd1b0:	mov	ah,[0x49]		; 0000D1B0  8A264900  '.&I.'
	mov	[bp+0x1],ah		; 0000D1B4  886601  '.f.'
	ret				; 0000D1B7  C3  '.'

	mov	ah,0x3			; 0000D1B8  B403  '..'
	call	x83db			; 0000D1BA  E81EB2  '...'
	or	dl,dl			; 0000D1BD  0AD2  0x0A,'.'
	jz	xd1b0			; 0000D1BF  74EF  't.'
	dec	dl			; 0000D1C1  FECA  '..'
	jmp	short xd1ab		; 0000D1C3  EBE6  '..'

	mov	ah,0x3			; 0000D1C5  B403  '..'
	call	x83db			; 0000D1C7  E811B2  '...'
	xor	dl,dl			; 0000D1CA  32D2  '2.'
	jmp	short xd1ab		; 0000D1CC  EBDD  '..'

xd1ce:	mov	bx,0x1f4		; 0000D1CE  BBF401  '...'
	call	xc7db			; 0000D1D1  E807F6  '...'
	ret				; 0000D1D4  C3  '.'

	mov	ah,0x3			; 0000D1D5  B403  '..'
	call	x83db			; 0000D1D7  E801B2  '...'
	cmp	dh,0x18			; 0000D1DA  80FE18  '...'
	jz	xd1e3			; 0000D1DD  7404  't.'
	inc	dh			; 0000D1DF  FEC6  '..'
	jmp	short xd1ab		; 0000D1E1  EBC8  '..'

xd1e3:	mov	ah,0x8			; 0000D1E3  B408  '..'
	call	x83db			; 0000D1E5  E8F3B1  '...'
	mov	bh,ah			; 0000D1E8  8AFC  '..'

xd1ea:	push	cx			; 0000D1EA  51  'Q'
	push	dx			; 0000D1EB  52  'R'
	cmp	byte [0x49],0x7		; 0000D1EC  803E490007  '.>I..'
	jz	xd1fc			; 0000D1F1  7409  't.'
	cmp	byte [0x49],0x3		; 0000D1F3  803E490003  '.>I..'
	jna	xd1fc			; 0000D1F8  7602  'v.'
	mov	bh,0x0			; 0000D1FA  B700  '..'
xd1fc:	mov	ax,0x601		; 0000D1FC  B80106  '...'
	xor	cx,cx			; 0000D1FF  33C9  '3.'
	mov	dh,0x18			; 0000D201  B618  '..'
	mov	dl,[0x4a]		; 0000D203  8A164A00  '..J.'
	dec	dx			; 0000D207  4A  'J'
	call	x83db			; 0000D208  E8D0B1  '...'
	pop	dx			; 0000D20B  5A  'Z'
	pop	cx			; 0000D20C  59  'Y'
	ret				; 0000D20D  C3  '.'

	db	0x1c,0x1d,'*578F'	; 0000D20E  1C1D2A35373846

xd215:	or	ah,ah			; 0000D215  0AE4
	jz	xd21c			; 0000D217  7403
	jns	xd220			; 0000D219  7905
	stc				; 0000D21B  F9  '.'
xd21c:	ret				; 0000D21C  C3  '.'

xd21d:	jmp	xd335			; 0000D21D  E91501  '...'

xd220:	cmp	ah,0x39			; 0000D220  80FC39  '..9'
	jg	xd21c			; 0000D223  7FF7  '..'
	mov	bl,ah			; 0000D225  8ADC  '..'
	xor	bh,bh			; 0000D227  32FF  '2.'
	mov	al,[cs:bx+0x9b1f]	; 0000D229  2E8A871F9B  '.....'
	test	byte [0x17],0x8		; 0000D22E  F606170008  '.....'
	jnz	xd21d			; 0000D233  75E8  'u.'
	test	byte [0x17],0x4		; 0000D235  F606170004  '.....'
	jnz	xd252			; 0000D23A  7516  'u.'
	and	al,0x7f			; 0000D23C  247F  '$.'
	test	byte [0x17],0x3		; 0000D23E  F606170003  '.....'
	jz	xd248			; 0000D243  7403  't.'
	jmp	xd2f7			; 0000D245  E9AF00  '...'

xd248:	test	byte [0x17],0x40	; 0000D248  F606170040  '....@'
	jz	xd2b2			; 0000D24D  7463  'tc'
	jmp	xd2eb			; 0000D24F  E99900  '...'

xd252:	cmp	ah,0xf			; 0000D252  80FC0F  '...'
	jnz	xd25c			; 0000D255  7505  'u.'
	mov	ax,0x9400		; 0000D257  B80094  '...'
	jmp	short xd2d2		; 0000D25A  EB76  '.v'

xd25c:	cmp	ah,0x35			; 0000D25C  80FC35  '..5'
	jnz	xd272			; 0000D25F  7511  'u.'
	test	byte [0x96],0x2		; 0000D261  F606960002  '.....'
	jz	xd272			; 0000D266  740A  't',0x0A
	and	byte [0x96],0xfd	; 0000D268  80269600FD  '.&...'
	mov	ax,0x9500		; 0000D26D  B80095  '...'
	jmp	short xd2d2		; 0000D270  EB60  '.`'

xd272:	or	al,al			; 0000D272  0AC0  0x0A,'.'
	js	xd2d5			; 0000D274  785F  'x_'
	cmp	ah,0x3			; 0000D276  80FC03  '...'
	jz	xd2d9			; 0000D279  745E  't^'
	cmp	ah,0xe			; 0000D27B  80FC0E  '...'
	jz	xd2dd			; 0000D27E  745D  't]'
	cmp	ah,0x1c			; 0000D280  80FC1C  '...'
	jz	xd2e1			; 0000D283  745C  't\'
	cmp	ah,0x37			; 0000D285  80FC37  '..7'
	jnz	xd2a4			; 0000D288  751A
	test	byte [0x96],0x10	; 0000D28A  F606960010  '.....'
	jz	xd2d7			; 0000D28F  7446  'tF'
	test	byte [0x96],0x2		; 0000D291  F606960002  '.....'
	jnz	xd29d			; 0000D296  7505  'u.'
	mov	ax,0x9600		; 0000D298  B80096  '...'
	jmp	short xd2d2		; 0000D29B  EB35  '.5'

xd29d:	and	byte [0x96],0xfd	; 0000D29D  80269600FD  '.&...'
	jmp	short xd2d7		; 0000D2A2  EB33  '.3'

xd2a4:	cmp	al,0x20			; 0000D2A4  3C20
	jng	xd2b2			; 0000D2A6  7E0A
	cmp	al,0x61			; 0000D2A8  3C61
	jl	xd2e1			; 0000D2AA  7C35
	cmp	al,0x7b			; 0000D2AC  3C7B
	jnl	xd2e1			; 0000D2AE  7D31
	and	al,0x1f			; 0000D2B0  241F  '$.'

xd2b2:	test	byte [0x96],0x2		; 0000D2B2  F606960002  '.....'
	jz	xd2d2			; 0000D2B7  7419  't.'
	push	ax			; 0000D2B9  50  'P'
	mov	cx,cs			; 0000D2BA  8CC9  '..'
	mov	es,cx			; 0000D2BC  8EC1  '..'
	mov	di,0xd20e		; 0000D2BE  BF0ED2  '...'
	mov	cx,0x7			; 0000D2C1  B90700  '...'
	mov	al,ah			; 0000D2C4  8AC4  '..'
	repne	scasb			; 0000D2C6  F2AE  '..'
	pop	ax			; 0000D2C8  58  'X'
	jnz	xd2d2			; 0000D2C9  7507  'u.'
	and	byte [0x96],0xfd	; 0000D2CB  80269600FD  '.&...'
	mov	ah,0xe0			; 0000D2D0  B4E0  '..'
xd2d2:	call	xd3b4			; 0000D2D2  E8DF00  '...'
xd2d5:	stc				; 0000D2D5  F9  '.'
	ret				; 0000D2D6  C3  '.'

xd2d7:	mov	ah,0x72			; 0000D2D7  B472  '.r'
xd2d9:	xor	al,al			; 0000D2D9  32C0  '2.'
	jmp	short xd2b2		; 0000D2DB  EBD5  '..'

xd2dd:	mov	al,0x7f			; 0000D2DD  B07F  '..'
	jmp	short xd2b2		; 0000D2DF  EBD1  '..'

xd2e1:	mov	si,0x9baa		; 0000D2E1  BEAA9B  '...'
	call	x9b08			; 0000D2E4  E821C8  '.!.'
	jc	xd2b2			; 0000D2E7  72C9  'r.'
	jmp	short xd2d5		; 0000D2E9  EBEA  '..'

xd2eb:	cmp	al,0x61			; 0000D2EB  3C61  '<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  7427	; 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.
;
xdb33:	push	bx			; 0000DB33  53  'S'
	push	di			; 0000DB34  57  'W'
	push	es			; 0000DB35  06  '.'
	mov	al,0x70			; 0000DB36  B070  '.p'
	out	0x84,al			; 0000DB38  E684  '..'
	mov	[0x4c],ah		; 0000DB3A  88264C00  '.&L.'
	mov	al,ah			; 0000DB3E  8AC4  '..'
	xor	ah,ah			; 0000DB40  32E4  '2.'
	mov	di,ax			; 0000DB42  8BF8  '..'
	mov	bx,0x0			; 0000DB44  BB0000  '...'

	cmp	byte [0x92],0x1		; 0000DB47  803E920001  '.>...'
	jnz	xdb58			; 0000DB4C  750A  'u',0x0A
;
;   Display the Kb value in (BP)
;
	mov	ax,0x40			; 0000DB4E  B84000	; segment 0x40 mapped to %B0000
	mov	es,ax			; 0000DB51  8EC0	; (ES) -> video buffers
	mov	ax,bp			; 0000DB53  8BC5	; (AX) == value to display (in Kb)
	call	x80a5			; 0000DB55  E84DA5	; display it

xdb58:	cmp	word [0x82],byte +0x0	; 0000DB58  833E820000  '.>...'
	jnz	xdb6b			; 0000DB5D  750C  'u.'
	mov	ax,0x0			; 0000DB5F  B80000  '...'
	mov	word [0x84],0x0		; 0000DB62  C70684000000  '......'
	jmp	xdbf1			; 0000DB68  E98600  '...'
;
;   Test another 64Kb of memory
;
xdb6b:	mov	al,0x71			; 0000DB6B  B071  '.q'
	out	0x84,al			; 0000DB6D  E684  '..'
	mov	ax,0x48			; 0000DB6F  B84800  '.H.'
	mov	es,ax			; 0000DB72  8EC0  '..'
	push	bx			; 0000DB74  53  'S'
	push	si			; 0000DB75  56  'V'
	push	di			; 0000DB76  57  'W'
	push	bp			; 0000DB77  55  'U'
	mov	al,[0x8f]		; 0000DB78  A08F00  '...'
	cmp	[0x4c],al		; 0000DB7B  38064C00  '8.L.'
	ja	xdb86			; 0000DB7F  7705  'w.'
;
;   Test the memory at segment 0x48 (ES), carry clear if success
;
	call	xad38			; 0000DB81  E8B4D1  '...'
	jmp	short xdb89		; 0000DB84  EB03  '..'

xdb86:	call	x8c7e			; 0000DB86  E8F5B0  '...'

xdb89:	pop	bp			; 0000DB89  5D  ']'
	pop	di			; 0000DB8A  5F  '_'
	pop	si			; 0000DB8B  5E  '^'
	pop	bx			; 0000DB8C  5B  '['
	jnc	xdb99			; 0000DB8D  730A  's',0x0A
	mov	ch,[0x4c]		; 0000DB8F  8A2E4C00  '..L.'
	mov	ax,0x1			; 0000DB93  B80100  '...'
	jmp	short xdbed		; 0000DB96  EB55  '.U'
	nop				; 0000DB98  90  '.'

xdb99:	add	bx,byte +0x40		; 0000DB99  83C340  '..@'
	cld				; 0000DB9C  FC  '.'
	push	di			; 0000DB9D  57  'W'
	push	cx			; 0000DB9E  51  'Q'
	push	bx			; 0000DB9F  53  'S'
	mov	bl,[0x4c]		; 0000DBA0  8A1E4C00  '..L.'
	mov	cx,0x8			; 0000DBA4  B90800  '...'
	xor	di,di			; 0000DBA7  33FF  '3.'
xdba9:	xor	ax,ax			; 0000DBA9  33C0  '3.'
	rcr	bx,1			; 0000DBAB  D1DB  '..'
	sbb	ax,0x0			; 0000DBAD  1D0000  '...'
	stosw				; 0000DBB0  AB  '.'
	loop	xdba9			; 0000DBB1  E2F6  '..'
	mov	bl,[0x4c]		; 0000DBB3  8A1E4C00  '..L.'
	mov	ax,0x0			; 0000DBB7  B80000  '...'
	test	bl,0x2			; 0000DBBA  F6C302  '...'
	jz	xdbc2			; 0000DBBD  7403  't.'
	mov	ax,0x101		; 0000DBBF  B80101  '...'
xdbc2:	stosw				; 0000DBC2  AB  '.'
	pop	bx			; 0000DBC3  5B  '['
	pop	cx			; 0000DBC4  59  'Y'
	pop	di			; 0000DBC5  5F  '_'
	cmp	byte [0x92],0x1		; 0000DBC6  803E920001  '.>...'
	jnz	xdbd9			; 0000DBCB  750C  'u.'
	mov	ax,0x40			; 0000DBCD  B84000  '.@.'
	mov	es,ax			; 0000DBD0  8EC0  '..'
	mov	ax,bp			; 0000DBD2  8BC5  '..'
	add	ax,bx			; 0000DBD4  03C3  '..'
;
;   Display (AX) as a 5-digit value in the top-left corner of the screen, followed by " KB OK"
;
	call	x80a5			; 0000DBD6  E8CCA4
;
;   After displaying "00192 KB OK", BX is 0x40 and [0x82] contains 0x80.
;
xdbd9:	cmp	[0x82],bx		; 0000DBD9  391E8200  '9...'
	ja	xdbe5			; 0000DBDD  7706  'w.'
	mov	ax,0x0			; 0000DBDF  B80000  '...'
	jmp	short xdbed		; 0000DBE2  EB09  '..'

	nop				; 0000DBE4  90  '.'
xdbe5:	add	byte [0x4c],0x1		; 0000DBE5  80064C0001  '..L..'
	jmp	xdb6b			; 0000DBEA  E97EFF  '.~.'

;
;   Now we're on to a new phase, after displaying "00256 KB OK"
;
xdbed:	mov	[0x84],bx		; 0000DBED  891E8400  '....'
xdbf1:	push	ax			; 0000DBF1  50  'P'
	mov	al,0x73			; 0000DBF2  B073  '.s'
	out	0x84,al			; 0000DBF4  E684  '..'
	pop	ax			; 0000DBF6  58  'X'
	pop	es			; 0000DBF7  07  '.'
	pop	di			; 0000DBF8  5F  '_'
	pop	bx			; 0000DBF9  5B  '['
	ret				; 0000DBFA  C3  '.'

xdbfb:	push	es			; 0000DBFB  06  '.'
	push	di			; 0000DBFC  57  'W'
	push	bx			; 0000DBFD  53  'S'
	push	ax			; 0000DBFE  50  'P'
	mov	al,0x72			; 0000DBFF  B072  '.r'
	out	0x84,al			; 0000DC01  E684  '..'
	pop	ax			; 0000DC03  58  'X'
xdc04:	mov	[0x4c],al		; 0000DC04  A24C00  '.L.'
	push	ax			; 0000DC07  50  'P'
	mov	bx,0x48			; 0000DC08  BB4800  '.H.'
	mov	es,bx			; 0000DC0B  8EC3  '..'
	mov	cx,0x8			; 0000DC0D  B90800  '...'
	mov	bl,al			; 0000DC10  8AD8  '..'
	xor	di,di			; 0000DC12  33FF  '3.'
xdc14:	xor	ax,ax			; 0000DC14  33C0  '3.'
	rcr	bx,1			; 0000DC16  D1DB  '..'
	sbb	ax,0x0			; 0000DC18  1D0000  '...'
	scasw				; 0000DC1B  AF  '.'
	jnz	xdc59			; 0000DC1C  753B  'u;'
	loop	xdc14			; 0000DC1E  E2F4  '..'
	mov	al,[es:di]		; 0000DC20  268A05  '&..'
	in	al,0x61			; 0000DC23  E461  '.a'
	test	al,0xc0			; 0000DC25  A8C0  '..'
	jz	xdc2f			; 0000DC27  7406  't.'
	xor	al,al			; 0000DC29  32C0  '2.'
	xor	di,di			; 0000DC2B  33FF  '3.'
	jmp	short xdc66		; 0000DC2D  EB37  '.7'

xdc2f:	inc	di			; 0000DC2F  47  'G'
	mov	ax,[es:di]		; 0000DC30  268B05  '&..'
	in	al,0x61			; 0000DC33  E461  '.a'
	test	al,0xc0			; 0000DC35  A8C0  '..'
	jz	xdc40			; 0000DC37  7407  't.'
	xor	al,al			; 0000DC39  32C0  '2.'
	mov	di,0x1			; 0000DC3B  BF0100  '...'
	jmp	short xdc66		; 0000DC3E  EB26  '.&'

xdc40:	cmp	byte [0x92],0x1		; 0000DC40  803E920001  '.>...'
	jnz	xdc56			; 0000DC45  750F  'u.'
	mov	ax,0x40			; 0000DC47  B84000  '.@.'
	mov	es,ax			; 0000DC4A  8EC0  '..'
	mov	ax,bp			; 0000DC4C  8BC5  '..'
	add	ax,0x40			; 0000DC4E  054000  '.@.'
	mov	bp,ax			; 0000DC51  8BE8  '..'
	call	x80a5			; 0000DC53  E84FA4  '.O.'
xdc56:	pop	ax			; 0000DC56  58  'X'
	jmp	short xdc81		; 0000DC57  EB28  '.('

xdc59:	dec	di			; 0000DC59  4F  'O'
	dec	di			; 0000DC5A  4F  'O'
	xor	al,[es:di]		; 0000DC5B  263205  '&2.'
	jnz	xdc66			; 0000DC5E  7506  'u.'
	inc	di			; 0000DC60  47  'G'
	xor	ah,[es:di]		; 0000DC61  263225  '&2%'
	mov	al,ah			; 0000DC64  8AC4  '..'
xdc66:	mov	byte [es:di],0x0	; 0000DC66  26C60500  '&...'
	mov	cl,al			; 0000DC6A  8AC8  '..'
	mov	ch,[0x4c]		; 0000DC6C  8A2E4C00  '..L.'
	mov	al,0x7c			; 0000DC70  B07C  '.|'
	out	0x84,al			; 0000DC72  E684  '..'
	pop	ax			; 0000DC74  58  'X'
	mov	ax,bp			; 0000DC75  8BC5  '..'
	mov	[0x84],ax		; 0000DC77  A38400  '...'
	mov	dx,di			; 0000DC7A  8BD7  '..'
	mov	ax,0x2			; 0000DC7C  B80200  '...'
	jmp	short xdc92		; 0000DC7F  EB11  '..'

xdc81:	inc	al			; 0000DC81  FEC0  '..'
	cmp	ah,al			; 0000DC83  3AE0  ':.'
	jna	xdc8a			; 0000DC85  7603  'v.'
xdc87:	jmp	xdc04			; 0000DC87  E97AFF  '.z.'

xdc8a:	cmp	ax,0xff			; 0000DC8A  3DFF00  '=..'
	jz	xdc87			; 0000DC8D  74F8  't.'
	mov	ax,0x0			; 0000DC8F  B80000  '...'
xdc92:	pop	bx			; 0000DC92  5B  '['
	pop	di			; 0000DC93  5F  '_'
	pop	es			; 0000DC94  07  '.'
	ret				; 0000DC95  C3  '.'

xdc96:	call	xeba5			; 0000DC96  E80C0F  '...'
	cli				; 0000DC99  FA  '.'
	call	xc242			; 0000DC9A  E8A5E5  '...'
	sti				; 0000DC9D  FB  '.'
	jnz	xdcae			; 0000DC9E  750E  'u.'
	mov	ax,0x9002		; 0000DCA0  B80290  '...'
	clc				; 0000DCA3  F8  '.'
	int	0x15			; 0000DCA4  CD15  '..'
xdca6:	cli				; 0000DCA6  FA  '.'
	call	xc242			; 0000DCA7  E898E5  '...'
	sti				; 0000DCAA  FB  '.'
	nop				; 0000DCAB  90  '.'
	jz	xdca6			; 0000DCAC  74F8  't.'
xdcae:	cmp	si,[0x82]		; 0000DCAE  3B368200  ';6..'
	jnz	xdcb8			; 0000DCB2  7504  'u.'
	mov	si,[0x80]		; 0000DCB4  8B368000  '.6..'
xdcb8:	mov	[0x1a],si		; 0000DCB8  89361A00  '.6..'
	sti				; 0000DCBC  FB  '.'
	ret				; 0000DCBD  C3  '.'

xdcbe:	call	xeba5			; 0000DCBE  E8E40E  '...'
	cli				; 0000DCC1  FA  '.'
	call	xc242			; 0000DCC2  E87DE5  '.}.'
	sti				; 0000DCC5  FB  '.'
	ret				; 0000DCC6  C3  '.'

xdcc7:	mov	al,[0x17]		; 0000DCC7  A01700  '...'
	ret				; 0000DCCA  C3  '.'

xdccb:	cmp	ah,0x0			; 0000DCCB  80FC00  '...'
	jz	xdcf3			; 0000DCCE  7423  't#'
	cmp	ax,0xe00d		; 0000DCD0  3D0DE0  '=',0x0D,'.'
	jnz	xdcda			; 0000DCD3  7505  'u.'
	mov	ax,0x1c0d		; 0000DCD5  B80D1C  '.',0x0D,'.'
	jmp	short xdcf3		; 0000DCD8  EB19  '..'

xdcda:	cmp	ax,0xe02f		; 0000DCDA  3D2FE0  '=/.'
	jnz	xdce4			; 0000DCDD  7505  'u.'
	mov	ax,0x352f		; 0000DCDF  B82F35  './5'
	jmp	short xdcf3		; 0000DCE2  EB0F  '..'

xdce4:	cmp	ah,0x84			; 0000DCE4  80FC84  '...'
	ja	xdcf8			; 0000DCE7  770F  'w.'
	cmp	al,0xf0			; 0000DCE9  3CF0  '<.'
	jz	xdcf8			; 0000DCEB  740B  't.'
	cmp	al,0xe0			; 0000DCED  3CE0  '<.'
	jnz	xdcf3			; 0000DCEF  7502  'u.'
	mov	al,0x0			; 0000DCF1  B000  '..'
xdcf3:	mov	si,0xffff		; 0000DCF3  BEFFFF  '...'
	jmp	short xdcfa		; 0000DCF6  EB02  '..'

xdcf8:	xor	si,si			; 0000DCF8  33F6  '3.'
xdcfa:	test	si,si			; 0000DCFA  85F6  '..'
	ret				; 0000DCFC  C3  '.'

xdcfd:	cmp	ah,0x0			; 0000DCFD  80FC00  '...'
	jz	xdd08			; 0000DD00  7406  't.'
	cmp	al,0xf0			; 0000DD02  3CF0  '<.'
	jnz	xdd08			; 0000DD04  7502  'u.'
	mov	al,0x0			; 0000DD06  B000  '..'
xdd08:	ret				; 0000DD08  C3  '.'

xdd09:	push	bx			; 0000DD09  53  'S'
	mov	bl,[0x18]		; 0000DD0A  8A1E1800  '....'
	mov	al,bl			; 0000DD0E  8AC3  '..'
	and	al,0x73			; 0000DD10  2473  '$s'
	and	bl,0x4			; 0000DD12  80E304  '...'
	shl	bl,0x5			; 0000DD15  C0E305  '...'
	or	al,bl			; 0000DD18  0AC3  0x0A,'.'
	mov	ah,[0x96]		; 0000DD1A  8A269600  '.&..'
	and	ah,0xc			; 0000DD1E  80E40C  '...'
	or	ah,al			; 0000DD21  0AE0  0x0A,'.'
	mov	al,[0x17]		; 0000DD23  A01700  '...'
	pop	bx			; 0000DD26  5B  '['
	ret				; 0000DD27  C3  '.'

xdd28:	cmp	al,0x5			; 0000DD28  3C05  '<.'
	jnz	xdd87			; 0000DD2A  755B  'u['
	cmp	bh,0x3			; 0000DD2C  80FF03  '...'
	ja	xdd87			; 0000DD2F  7756  'wV'
	cmp	bl,0x1f			; 0000DD31  80FB1F  '...'
	ja	xdd87			; 0000DD34  7751  'wQ'
	push	cx			; 0000DD36  51  'Q'
xdd37:	call	xec1e			; 0000DD37  E8E40E  '...'
	jnz	xdd37			; 0000DD3A  75FB  'u.'
	and	byte [0x97],0xef	; 0000DD3C  80269700EF  '.&...'
	call	xec2e_wait_8042_ready	; 0000DD41  E8EA0E  '...'
	mov	al,0xf3			; 0000DD44  B0F3  '..'
	out	0x60,al			; 0000DD46  E660  '.`'
	mov	cx,0xffff		; 0000DD48  B9FFFF  '...'
xdd4b:	test	byte [0x97],0x10	; 0000DD4B  F606970010  '.....'
	jnz	xdd5d			; 0000DD50  750B  'u.'
	loop	xdd4b			; 0000DD52  E2F7  '..'
	call	xec2e_wait_8042_ready	; 0000DD54  E8D70E  '...'
	mov	al,0xf4			; 0000DD57  B0F4  '..'
	out	0x60,al			; 0000DD59  E660  '.`'
	jmp	short xdd81		; 0000DD5B  EB24  '.$'

xdd5d:	and	byte [0x97],0xef	; 0000DD5D  80269700EF  '.&...'
	call	xec2e_wait_8042_ready	; 0000DD62  E8C90E  '...'
	mov	al,bh			; 0000DD65  8AC7  '..'
	shl	al,0x5			; 0000DD67  C0E005  '...'
	or	al,bl			; 0000DD6A  0AC3  0x0A,'.'
	out	0x60,al			; 0000DD6C  E660  '.`'
	mov	cx,0xffff		; 0000DD6E  B9FFFF  '...'
xdd71:	test	byte [0x97],0x10	; 0000DD71  F606970010  '.....'
	jnz	xdd81			; 0000DD76  7509  'u.'
	loop	xdd71			; 0000DD78  E2F7  '..'
	call	xec2e_wait_8042_ready	; 0000DD7A  E8B10E  '...'
	mov	al,0xf4			; 0000DD7D  B0F4  '..'
	out	0x60,al			; 0000DD7F  E660  '.`'
xdd81:	and	byte [0x97],0xbf	; 0000DD81  80269700BF  '.&...'
	pop	cx			; 0000DD86  59  'Y'
xdd87:	ret				; 0000DD87  C3  '.'

xdd88:	cli				; 0000DD88  FA  '.'
	mov	si,[0x1c]		; 0000DD89  8B361C00  '.6..'
	mov	[si],cx			; 0000DD8D  890C  '..'
	inc	si			; 0000DD8F  46  'F'
	inc	si			; 0000DD90  46  'F'
	cmp	si,[0x82]		; 0000DD91  3B368200  ';6..'
	jnz	xdd9b			; 0000DD95  7504  'u.'
	mov	si,[0x80]		; 0000DD97  8B368000  '.6..'
xdd9b:	cmp	si,[0x1a]		; 0000DD9B  3B361A00  ';6..'
	jz	xddaa			; 0000DD9F  7409  't.'
	mov	[0x1c],si		; 0000DDA1  89361C00  '.6..'
	xor	al,al			; 0000DDA5  32C0  '2.'
	clc				; 0000DDA7  F8  '.'
	jmp	short xddad		; 0000DDA8  EB03  '..'

xddaa:	mov	al,0x1			; 0000DDAA  B001  '..'
	stc				; 0000DDAC  F9  '.'
xddad:	sti				; 0000DDAD  FB  '.'
	ret				; 0000DDAE  C3  '.'

xddaf:	push	ax			; 0000DDAF  50  'P'
	cmp	al,0x8			; 0000DDB0  3C08  '<.'
	jz	xde13			; 0000DDB2  745F  't_'
	cmp	al,0x9			; 0000DDB4  3C09  '<.'
	jz	xde1f			; 0000DDB6  7467  'tg'
	test	al,al			; 0000DDB8  84C0  '..'
	jnz	xddd2			; 0000DDBA  7516  'u.'
	in	al,0x86			; 0000DDBC  E486  '..'
	and	al,0xbf			; 0000DDBE  24BF  '$.'
	or	al,0x80			; 0000DDC0  0C80  '..'
	and	al,0xc0			; 0000DDC2  24C0  '$.'
	or	al,[cs:0x67de]		; 0000DDC4  2E0A06DE67  '.',0x0A,'..g'
	out	0x86,al			; 0000DDC9  E686  '..'
	mov	ah,[cs:0x67de]		; 0000DDCB  2E8A26DE67  '..&.g'
	jmp	short xde40		; 0000DDD0  EB6E  '.n'

xddd2:	dec	al			; 0000DDD2  FEC8  '..'
	jnz	xddec			; 0000DDD4  7516  'u.'
	in	al,0x86			; 0000DDD6  E486  '..'
	and	al,0xbf			; 0000DDD8  24BF  '$.'
	or	al,0x80			; 0000DDDA  0C80  '..'
	and	al,0xc0			; 0000DDDC  24C0  '$.'
	or	al,[cs:0x67dd]		; 0000DDDE  2E0A06DD67  '.',0x0A,'..g'
	out	0x86,al			; 0000DDE3  E686  '..'
	mov	ah,[cs:0x67dd]		; 0000DDE5  2E8A26DD67  '..&.g'
	jmp	short xde40		; 0000DDEA  EB54  '.T'

xddec:	dec	al			; 0000DDEC  FEC8  '..'
	jnz	xddfc			; 0000DDEE  750C  'u.'
	in	al,0x86			; 0000DDF0  E486  '..'
	and	al,0x7f			; 0000DDF2  247F  '$.'
	or	al,0x40			; 0000DDF4  0C40  '.@'
	out	0x86,al			; 0000DDF6  E686  '..'
	mov	ah,0x0			; 0000DDF8  B400  '..'
	jmp	short xde40		; 0000DDFA  EB44  '.D'

xddfc:	dec	al			; 0000DDFC  FEC8  '..'
	jnz	xde4f			; 0000DDFE  754F  'uO'
	in	al,0x86			; 0000DE00  E486  '..'
	mov	ah,0x0			; 0000DE02  B400  '..'
	test	al,0x40			; 0000DE04  A840  '.@'
	jz	xde0d			; 0000DE06  7405  't.'
	mov	ah,al			; 0000DE08  8AE0  '..'
	and	ah,0x3f			; 0000DE0A  80E43F  '..?'
xde0d:	xor	al,0x40			; 0000DE0D  3440  '4@'
	out	0x86,al			; 0000DE0F  E686  '..'
	jmp	short xde40		; 0000DE11  EB2D  '.-'

xde13:	in	al,0x86			; 0000DE13  E486  '..'
	and	al,0x7f			; 0000DE15  247F  '$.'
	or	al,0xc0			; 0000DE17  0CC0  '..'
	out	0x86,al			; 0000DE19  E686  '..'
	mov	ah,0x0			; 0000DE1B  B400  '..'
	jmp	short xde40		; 0000DE1D  EB21  '.!'

xde1f:	cmp	cx,byte +0x1		; 0000DE1F  83F901  '...'
	jc	xde4f			; 0000DE22  722B  'r+'
	cmp	cx,byte +0x32		; 0000DE24  83F932  '..2'
	ja	xde4f			; 0000DE27  7726  'w&'
	mov	ax,0x32			; 0000DE29  B83200  '.2.'
	sub	ax,cx			; 0000DE2C  2BC1  '+.'
	inc	ax			; 0000DE2E  40  '@'
	inc	ax			; 0000DE2F  40  '@'
	mov	ah,al			; 0000DE30  8AE0  '..'
	in	al,0x86			; 0000DE32  E486  '..'
	and	al,0xbf			; 0000DE34  24BF  '$.'
	or	al,0x80			; 0000DE36  0C80  '..'
	and	al,0xc0			; 0000DE38  24C0  '$.'
	or	al,ah			; 0000DE3A  0AC4  0x0A,'.'
	out	0x86,al			; 0000DE3C  E686  '..'
	jmp	short xde40		; 0000DE3E  EB00  '..'

xde40:	mov	al,0x92			; 0000DE40  B092  '..'
	cli				; 0000DE42  FA  '.'
	out	0x4b,al			; 0000DE43  E64B  '.K'
	cmp	ah,0x0			; 0000DE45  80FC00  '...'
	jz	xde4e			; 0000DE48  7404  't.'
	mov	al,ah			; 0000DE4A  8AC4  '..'
	out	0x4a,al			; 0000DE4C  E64A  '.J'
xde4e:	sti				; 0000DE4E  FB  '.'
xde4f:	pop	ax			; 0000DE4F  58  'X'
	ret				; 0000DE50  C3  '.'

xde51:	in	al,0x86			; 0000DE51  E486  '..'
	test	al,0x40			; 0000DE53  A840  '.@'
	jnz	xde5f			; 0000DE55  7508  'u.'
	test	al,0x80			; 0000DE57  A880  '..'
	jnz	xde5f			; 0000DE59  7504  'u.'
	mov	ah,0x8			; 0000DE5B  B408  '..'
	jmp	short xde8c		; 0000DE5D  EB2D  '.-'

xde5f:	test	al,0x40			; 0000DE5F  A840  '.@'
	jnz	xde84			; 0000DE61  7521  'u!'
	mov	ah,0x0			; 0000DE63  B400  '..'
	and	al,0x3f			; 0000DE65  243F  '$?'
	cmp	al,[cs:0x67de]		; 0000DE67  2E3A06DE67  '.:..g'
	jz	xde8c			; 0000DE6C  741E  't.'
	mov	ah,0x1			; 0000DE6E  B401  '..'
	cmp	al,[cs:0x67dd]		; 0000DE70  2E3A06DD67  '.:..g'
	jz	xde8c			; 0000DE75  7415  't.'
	xor	ah,ah			; 0000DE77  32E4  '2.'
	mov	cx,0x32			; 0000DE79  B93200  '.2.'
	sub	cx,ax			; 0000DE7C  2BC8  '+.'
	inc	cx			; 0000DE7E  41  'A'
	inc	cx			; 0000DE7F  41  'A'
	mov	ah,0x9			; 0000DE80  B409  '..'
	jmp	short xde8c		; 0000DE82  EB08  '..'

xde84:	mov	ah,0x8			; 0000DE84  B408  '..'
	test	al,0x80			; 0000DE86  A880  '..'
	jnz	xde8c			; 0000DE88  7502  'u.'
	mov	ah,0x2			; 0000DE8A  B402  '..'
xde8c:	mov	al,ah			; 0000DE8C  8AC4  '..'
	xor	ah,ah			; 0000DE8E  32E4  '2.'
	ret				; 0000DE90  C3  '.'

xde91:	call	xf337			; 0000DE91  E8A314  '...'
	mov	ah,0xff			; 0000DE94  B4FF  '..'
	jz	xdea0			; 0000DE96  7408  't.'
	mov	ah,0x0			; 0000DE98  B400  '..'
	test	al,0x20			; 0000DE9A  A820  '. '
	jz	xdea0			; 0000DE9C  7402  't.'
	mov	ah,0x1			; 0000DE9E  B401  '..'
xdea0:	mov	al,ah			; 0000DEA0  8AC4  '..'
	xor	ah,ah			; 0000DEA2  32E4  '2.'
	ret				; 0000DEA4  C3  '.'

xdea5:	sti				; 0000DEA5  FB  '.'
	pusha				; 0000DEA6  60  '`'
	cmp	al,0x2			; 0000DEA7  3C02  '<.'
	jna	xdeae			; 0000DEA9  7603  'v.'
	jmp	xdfb8			; 0000DEAB  E90A01  '.',0x0A,'.'

xdeae:	sub	sp,byte +0x38		; 0000DEAE  83EC38  '..8'
	mov	bp,sp			; 0000DEB1  8BEC  '..'
	mov	ax,ss			; 0000DEB3  8CD0  '..'
	mov	es,ax			; 0000DEB5  8EC0  '..'
	mov	ds,ax			; 0000DEB7  8ED8  '..'
	mov	di,bp			; 0000DEB9  8BFD  '..'
	xor	ax,ax			; 0000DEBB  33C0  '3.'
	mov	cx,0x38			; 0000DEBD  B93800  '.8.'
	rep	stosb			; 0000DEC0  F3AA  '..'
	mov	si,bp			; 0000DEC2  8BF5  '..'
	lea	di,[si+0x10]		; 0000DEC4  8D7C10  '.|.'
	mov	word [es:di],0xffff	; 0000DEC7  26C705FFFF  '&....'
	mov	byte [es:di+0x7],0x80	; 0000DECC  26C6450780  '&.E..'
	mov	byte [es:di+0x6],0x0	; 0000DED1  26C6450600  '&.E..'
	mov	byte [es:di+0x5],0x92	; 0000DED6  26C6450592  '&.E..'
	mov	word [es:di+0x2],0x0	; 0000DEDB  26C745020000  '&.E...'
	mov	byte [es:di+0x4],0xc0	; 0000DEE1  26C64504C0  '&.E..'
	lea	di,[si+0x18]		; 0000DEE6  8D7C18  '.|.'
	mov	word [es:di],0xffff	; 0000DEE9  26C705FFFF  '&....'
	mov	byte [es:di+0x7],0x0	; 0000DEEE  26C6450700  '&.E..'
	mov	byte [es:di+0x6],0x0	; 0000DEF3  26C6450600  '&.E..'
	mov	byte [es:di+0x5],0x92	; 0000DEF8  26C6450592  '&.E..'
	mov	ax,ss			; 0000DEFD  8CD0  '..'
	mov	bx,0x10			; 0000DEFF  BB1000  '...'
	mul	bx			; 0000DF02  F7E3  '..'
	add	ax,bp			; 0000DF04  03C5  '..'
	adc	dl,0x0			; 0000DF06  80D200  '...'
	add	ax,0x38			; 0000DF09  053800  '.8.'
	adc	dl,0x0			; 0000DF0C  80D200  '...'
	mov	[es:di+0x2],ax		; 0000DF0F  26894502  '&.E.'
	mov	[es:di+0x4],dl		; 0000DF13  26885504  '&.U.'
	xor	bx,bx			; 0000DF17  33DB  '3.'
	call	xdfee			; 0000DF19  E8D200  '...'
	jnc	xdf21			; 0000DF1C  7303  's.'
	jmp	xdfb5			; 0000DF1E  E99400  '...'

xdf21:	lea	di,[si+0x38]		; 0000DF21  8D7C38  '.|8'
	mov	al,[es:di]		; 0000DF24  268A05  '&..'
	and	al,0xc0			; 0000DF27  24C0  '$.'
	cmp	al,0x40			; 0000DF29  3C40  '<@'
	jz	xdf34			; 0000DF2B  7407  't.'
	mov	byte [bp+0x46],0x0	; 0000DF2D  C6464600  '.FF.'
	jmp	xdfb5			; 0000DF31  E98100  '...'

xdf34:	mov	bx,0x2			; 0000DF34  BB0200  '...'
	call	xdfee			; 0000DF37  E8B400  '...'
	jc	xdfb5			; 0000DF3A  7279  'ry'
	mov	al,[bp+0x46]		; 0000DF3C  8A4646  '.FF'
	or	al,al			; 0000DF3F  0AC0  0x0A,'.'
	jz	xdfa0			; 0000DF41  745D  't]'
	lea	di,[si+0x10]		; 0000DF43  8D7C10  '.|.'
	mov	bx,si			; 0000DF46  8BDE  '..'
	lea	si,[si+0x18]		; 0000DF48  8D7418  '.t.'
	call	xdfbc			; 0000DF4B  E86E00  '.n.'
	mov	si,bx			; 0000DF4E  8BF3  '..'
	mov	di,bim_table_offset	; 0000DF50  BFE0FF  '...'
	mov	di,[cs:di]		; 0000DF53  2E8B3D  '..='
	test	word [cs:di],0xf00	; 0000DF56  2EF705000F  '.....'
	lea	di,[si+0x38]		; 0000DF5B  8D7C38  '.|8'
	push	word [es:di]		; 0000DF5E  26FF35  '&.5'
	jz	xdf69			; 0000DF61  7406  't.'
	mov	byte [es:di],0xff	; 0000DF63  26C605FF  '&...'
	jmp	short xdf6d		; 0000DF67  EB04  '..'

xdf69:	mov	byte [es:di],0xfc	; 0000DF69  26C605FC  '&...'
xdf6d:	xor	bx,bx			; 0000DF6D  33DB  '3.'
	call	xdfdf			; 0000DF6F  E86D00  '.m.'
	lea	di,[si+0x38]		; 0000DF72  8D7C38  '.|8'
	pop	word [es:di]		; 0000DF75  268F05  '&..'
	dec	al			; 0000DF78  FEC8  '..'
	jz	xdf8e			; 0000DF7A  7412  't.'
	and	byte [es:di],0xbf	; 0000DF7C  268025BF  '&.%.'
	mov	bx,0x2			; 0000DF80  BB0200  '...'
	call	xdfdf			; 0000DF83  E85900  '.Y.'
	jc	xdfb5			; 0000DF86  722D  'r-'
	mov	byte [bp+0x46],0x2	; 0000DF88  C6464602  '.FF.'
	jmp	short xdfb5		; 0000DF8C  EB27  '.',0x27

xdf8e:	or	byte [es:di],0x40	; 0000DF8E  26800D40  '&.',0x0D,'@'
	mov	bx,0x2			; 0000DF92  BB0200  '...'
	call	xdfdf			; 0000DF95  E84700  '.G.'
	jc	xdfb5			; 0000DF98  721B  'r.'
	mov	byte [bp+0x46],0x1	; 0000DF9A  C6464601  '.FF.'
	jmp	short xdfb5		; 0000DF9E  EB15  '..'

xdfa0:	lea	di,[si+0x38]		; 0000DFA0  8D7C38  '.|8'
	mov	bl,[es:di]		; 0000DFA3  268A1D  '&..'
	and	bl,0x40			; 0000DFA6  80E340  '..@'
	jz	xdfb1			; 0000DFA9  7406  't.'
	mov	byte [bp+0x46],0x1	; 0000DFAB  C6464601  '.FF.'
	jmp	short xdfb5		; 0000DFAF  EB04  '..'

xdfb1:	mov	byte [bp+0x46],0x2	; 0000DFB1  C6464602  '.FF.'
xdfb5:	add	sp,byte +0x38		; 0000DFB5  83C438  '..8'
xdfb8:	popa				; 0000DFB8  61  'a'
	mov	ah,0xe2			; 0000DFB9  B4E2  '..'
	ret				; 0000DFBB  C3  '.'

xdfbc:	cld				; 0000DFBC  FC  '.'
	push	word [di]		; 0000DFBD  FF35  '.5'
	push	word [di+0x2]		; 0000DFBF  FF7502  '.u.'
	push	word [di+0x4]		; 0000DFC2  FF7504  '.u.'
	push	word [di+0x6]		; 0000DFC5  FF7506  '.u.'
	mov	cx,0x4			; 0000DFC8  B90400  '...'
	rep	movsw			; 0000DFCB  F3A5  '..'
	sub	si,byte +0x8		; 0000DFCD  83EE08  '...'
	sub	di,byte +0x8		; 0000DFD0  83EF08  '...'
	pop	word [si+0x6]		; 0000DFD3  8F4406  '.D.'
	pop	word [si+0x4]		; 0000DFD6  8F4404  '.D.'
	pop	word [si+0x2]		; 0000DFD9  8F4402  '.D.'
	pop	word [si]		; 0000DFDC  8F04  '..'
	ret				; 0000DFDE  C3  '.'

xdfdf:	lea	di,[si+0x18]		; 0000DFDF  8D7C18  '.|.'
	mov	[es:di+0x2],bx		; 0000DFE2  26895D02  '&.].'
	mov	cx,0x1			; 0000DFE6  B90100  '...'
	mov	ah,0x87			; 0000DFE9  B487  '..'
	int	0x15			; 0000DFEB  CD15  '..'
	ret				; 0000DFED  C3  '.'

xdfee:	lea	di,[si+0x10]		; 0000DFEE  8D7C10  '.|.'
	mov	[es:di+0x2],bx		; 0000DFF1  26895D02  '&.].'
	mov	cx,0x1			; 0000DFF5  B90100  '...'
	mov	ah,0x87			; 0000DFF8  B487  '..'
	int	0x15			; 0000DFFA  CD15  '..'
	ret				; 0000DFFC  C3  '.'

	db	0xFF			; 0000DFFD  FF  '.'
	db	0xFF			; 0000DFFE  FF  '.'
	db	0xFF			; 0000DFFF  FF  '.'
	jmp	short xe05e		; 0000E000  EB5C  '.\'

	db	'AUTHORS CAB93GLB93RWS93DJC93NPB(C)Copyright COMPAQ Computer Corporation 1982,83,84,85,86,'

xe05b:	jmp	xbaa7			; 0000E05B  E949DA

xe05e:	jmp	0xf000:0x8e31		; 0000E05E  EA318E00F0  '.1...'

	db	'((CC))CCooppyyrriigghhtt  CCOOMMPPAAQQ  CCoommppuutteerr  CCoorrppoorraattiioonn  11998822,,8833,,8844,,8855,,8866,,8877--AAllll  rriigghhttss  rreesseerrvveedd..'

xe105:	mov	al,0xd			; 0000E105  B00D  '.',0x0D  0x0D
	out	0x84,al			; 0000E107  E684  '..'
	mov	al,0x12			; 0000E109  B012  '..'
	out	0x4b,al			; 0000E10B  E64B  '.K'
	mov	al,0x22			; 0000E10D  B022  '."'
	mov	dx,0x48			; 0000E10F  BA4800  '.H.'
	out	dx,al			; 0000E112  EE  '.'
	mov	bl,0x0			; 0000E113  B300  '..'
	call	xe134			; 0000E115  E81C00  '...'
	mov	al,0x12			; 0000E118  B012  '..'
	out	0x4b,al			; 0000E11A  E64B  '.K'
	mov	al,0xe			; 0000E11C  B00E  '..'
	out	0x84,al			; 0000E11E  E684  '..'
	mov	al,0x92			; 0000E120  B092  '..'
	out	0x4b,al			; 0000E122  E64B  '.K'
	mov	al,0x22			; 0000E124  B022  '."'
	mov	dx,0x4a			; 0000E126  BA4A00  '.J.'
	out	dx,al			; 0000E129  EE  '.'
	mov	bl,0x80			; 0000E12A  B380  '..'
	call	xe134			; 0000E12C  E80500  '...'
	mov	al,0x92			; 0000E12F  B092  '..'
	out	0x4b,al			; 0000E131  E64B  '.K'
	ret				; 0000E133  C3  '.'

xe134:	mov	cx,0x100		; 0000E134  B90001  '...'
xe137:	mov	al,bl			; 0000E137  8AC3  '..'
	out	0x4b,al			; 0000E139  E64B  '.K'
	in	al,dx			; 0000E13B  EC  '.'
	mov	ah,al			; 0000E13C  8AE0  '..'
	in	al,dx			; 0000E13E  EC  '.'
	cmp	ax,0x22			; 0000E13F  3D2200  '=".'
	jnz	xe15c			; 0000E142  7518  'u.'
	loop	xe137			; 0000E144  E2F1  '..'
	mov	al,0x92			; 0000E146  B092  '..'
	out	0x4b,al			; 0000E148  E64B  '.K'
	mov	al,0x12			; 0000E14A  B012  '..'
	out	0x4b,al			; 0000E14C  E64B  '.K'

	mov	bx,err102		; 0000E14E  BB8CB6  '...'
	mov	cx,err102_len-2		; 0000E151  B91800  '...'
	mov	bp,0xe15a		; 0000E154  BD5AE1  '.Z.'
	jmp	xc7f7			; 0000E157  E99DE6  '...'
xe15a:	jmp	short xe15a		; 0000E15A  EBFE		; HANG THE MACHINE

xe15c:	ret				; 0000E15C  C3  '.'

	times	13 db 0xFF		; 0000E15D - 0000E169

	call	near [bx+si-0x1c]	; 0000E16A  FF50E4  '.P.'
	popa				; 0000E16D  61  'a'
	test	al,0x40			; 0000E16E  A840  '.@'
	jnz	xe174			; 0000E170  7502  'u.'
	pop	ax			; 0000E172  58  'X'
	iret				; 0000E173  CF  '.'

xe174:	mov	al,0x1			; 0000E174  B001  '..'
	out	0x85,al			; 0000E176  E685  '..'
	mov	al,0x11			; 0000E178  B011  '..'
	out	0x84,al			; 0000E17A  E684  '..'
	cld				; 0000E17C  FC  '.'
	mov	al,0x80			; 0000E17D  B080  '..'
	out	0x70,al			; 0000E17F  E670  '.p'
	mov	al,0xff			; 0000E181  B0FF  '..'
	out	0x21,al			; 0000E183  E621  '.!'
	out	0xa1,al			; 0000E185  E6A1  '..'
	call	xe28e			; 0000E187  E80401  '...'
	in	al,0x61			; 0000E18A  E461  '.a'
	xor	ah,ah			; 0000E18C  32E4  '2.'
	mov	sp,ax			; 0000E18E  8BE0  '..'
	mov	bp,0xe196		; 0000E190  BD96E1  '...'
	jmp	short xe1e6		; 0000E193  EB51  '.Q'

	nop				; 0000E195  90  '.'
	mov	di,si			; 0000E196  8BFE  '..'
	mov	cx,sp			; 0000E198  8BCC  '..'
	jc	xe19e			; 0000E19A  7202  'r.'
	inc	ch			; 0000E19C  FEC5  '..'
xe19e:	mov	ax,cs			; 0000E19E  8CC8  '..'
	mov	ds,ax			; 0000E1A0  8ED8  '..'
	mov	es,ax			; 0000E1A2  8EC0  '..'
	mov	ax,0x30			; 0000E1A4  B83000  '.0.'
	mov	ss,ax			; 0000E1A7  8ED0  '..'
	mov	sp,0x100		; 0000E1A9  BC0001  '...'
	mov	si,0xb743		; 0000E1AC  BE43B7  '.C.'
	call	xe282			; 0000E1AF  E8D000  '...'
	test	ch,ch			; 0000E1B2  84ED  '..'
	jz	xe1be			; 0000E1B4  7408  't.'
	mov	si,0xb753		; 0000E1B6  BE53B7  '.S.'
	call	xe282			; 0000E1B9  E8C600  '...'
	jmp	short xe1e5		; 0000E1BC  EB27  '.',0x27

xe1be:	xchg	di,dx			; 0000E1BE  87FA  '..'
	mov	cx,0x4			; 0000E1C0  B90400  '...'
	shr	dx,cl			; 0000E1C3  D3EA  '..'
	mov	cx,0x2			; 0000E1C5  B90200  '...'
	call	xe26d			; 0000E1C8  E8A200  '...'
	mov	dx,di			; 0000E1CB  8BD7  '..'
	and	dx,0x3			; 0000E1CD  81E20300  '....'
	mov	cx,0x4			; 0000E1D1  B90400  '...'
	call	xe26d			; 0000E1D4  E89600  '...'
	mov	al,0x20			; 0000E1D7  B020  '. '
	mov	ah,0xe			; 0000E1D9  B40E  '..'
	int	0x10			; 0000E1DB  CD10  '..'
	xor	dx,dx			; 0000E1DD  33D2  '3.'
	mov	cx,0x2			; 0000E1DF  B90200  '...'
	call	xe26d			; 0000E1E2  E88800  '...'
xe1e5:	hlt				; 0000E1E5  F4  '.'
xe1e6:	mov	si,bp			; 0000E1E6  8BF5  '..'
	mov	bl,0xff			; 0000E1E8  B3FF  '..'
	xor	di,di			; 0000E1EA  33FF  '3.'
	mov	bp,0xe1f2		; 0000E1EC  BDF2E1  '...'
	jmp	x8796			; 0000E1EF  E9A4A5

	mov	bp,si			; 0000E1F2  8BEE  '..'
	xor	ax,ax			; 0000E1F4  33C0  '3.'
	mov	ds,ax			; 0000E1F6  8ED8  '..'
	xor	bx,bx			; 0000E1F8  33DB  '3.'
	mov	ax,[bx]			; 0000E1FA  8B07  '..'
	mov	[bx],ax			; 0000E1FC  8907  '..'
	in	al,0x61			; 0000E1FE  E461  '.a'
	or	al,0x8			; 0000E200  0C08  '..'
	out	0x61,al			; 0000E202  E661  '.a'
	mov	si,bp			; 0000E204  8BF5  '..'
	mov	bl,0xff			; 0000E206  B3FF  '..'
	xor	di,di			; 0000E208  33FF  '3.'
	mov	bp,0xe210		; 0000E20A  BD10E2  '...'
	jmp	x8796			; 0000E20D  E986A5

	mov	bp,si			; 0000E210  8BEE  '..'
	in	al,0x61			; 0000E212  E461  '.a'
	and	al,0xf7			; 0000E214  24F7  '$.'
	out	0x61,al			; 0000E216  E661  '.a'
	in	al,0x61			; 0000E218  E461  '.a'
	test	al,0x40			; 0000E21A  A840  '.@'
	jz	xe221			; 0000E21C  7403  't.'
	clc				; 0000E21E  F8  '.'
	jmp	bp			; 0000E21F  FFE5  '..'

xe221:	mov	ax,0x40			; 0000E221  B84000  '.@.'
	mov	ds,ax			; 0000E224  8ED8  '..'
	mov	di,[0x413]		; 0000E226  8B3E1304  '.>..'
	shl	di,0x6			; 0000E22A  C1E706  '...'
	mov	bx,0x0			; 0000E22D  BB0000  '...'
xe230:	mov	cx,0x4000		; 0000E230  B90040  '..@'
	mov	ds,bx			; 0000E233  8EDB  '..'
	rep	lodsd			; 0000E235  66F3AD  'f..'
	in	al,0x61			; 0000E238  E461  '.a'
	test	al,0x40			; 0000E23A  A840  '.@'
	jnz	xe24a			; 0000E23C  750C  'u.'
	add	bx,0x1000		; 0000E23E  81C30010  '....'
	cmp	bx,di			; 0000E242  3BDF  ';.'
	jna	xe230			; 0000E244  76EA  'v.'
	xor	ax,ax			; 0000E246  33C0  '3.'
	jmp	bp			; 0000E248  FFE5  '..'

xe24a:	mov	si,bx			; 0000E24A  8BF3  '..'
	mov	dx,bp			; 0000E24C  8BD5  '..'
	xor	di,di			; 0000E24E  33FF  '3.'
	mov	bp,0xe256		; 0000E250  BD56E2  '.V.'
	jmp	x87e4			; 0000E253  E98EA5  '...'

	mov	bp,dx			; 0000E256  8BEA  '..'
	and	bl,0xf			; 0000E258  80E30F  '...'
	xor	dx,dx			; 0000E25B  33D2  '3.'
	mov	cl,0x4			; 0000E25D  B104  '..'
xe25f:	rcr	bl,1			; 0000E25F  D0DB  '..'
	jnc	xe268			; 0000E261  7305  's.'
	inc	dx			; 0000E263  42  'B'
	loop	xe25f			; 0000E264  E2F9  '..'
	xor	dx,dx			; 0000E266  33D2  '3.'
xe268:	stc				; 0000E268  F9  '.'
	jmp	bp			; 0000E269  FFE5  '..'

	adc	[bx+si],al		; 0000E26B  1000  '..'

xe26d:	xchg	ax,dx			; 0000E26D  92  '.'
	mul	word [0xe26b]		; 0000E26E  F7266BE2  '.&k.'
	xchg	ax,dx			; 0000E272  92  '.'
	add	al,0x30			; 0000E273  0430  '.0'
	cmp	al,0x39			; 0000E275  3C39  '<9'
	jna	xe27b			; 0000E277  7602  'v.'
	add	al,0x7			; 0000E279  0407  '..'
xe27b:	mov	ah,0xe			; 0000E27B  B40E  '..'
	int	0x10			; 0000E27D  CD10  '..'
	loop	xe26d			; 0000E27F  E2EC  '..'
	ret				; 0000E281  C3  '.'

xe282:	lodsb				; 0000E282  AC  '.'
	or	al,al			; 0000E283  0AC0  0x0A,'.'
	jz	xe28d			; 0000E285  7406  't.'
	mov	ah,0xe			; 0000E287  B40E  '..'
	int	0x10			; 0000E289  CD10  '..'
	jmp	short xe282		; 0000E28B  EBF5  '..'

xe28d:	ret				; 0000E28D  C3  '.'

xe28e:	call	xf2c0			; 0000E28E  E82F10  './.'
	jnz	xe2ba			; 0000E291  7527  'u',0x27
	push	cs			; 0000E293  0E  '.'
	pop	ds			; 0000E294  1F  '.'
	xor	ax,ax			; 0000E295  33C0  '3.'
	mov	es,ax			; 0000E297  8EC0  '..'
	mov	di,0x40			; 0000E299  BF4000  '.@.'
	mov	ax,[0x7124]		; 0000E29C  A12471  '.$q'
	stosw				; 0000E29F  AB  '.'
	mov	ax,[0x7126]		; 0000E2A0  A12671  '.&q'
	stosw				; 0000E2A3  AB  '.'
	mov	di,0x7c			; 0000E2A4  BF7C00  '.|.'
	mov	ax,[0x7128]		; 0000E2A7  A12871  '.(q'
	stosw				; 0000E2AA  AB  '.'
	mov	ax,[0x712a]		; 0000E2AB  A12A71  '.*q'
	stosw				; 0000E2AE  AB  '.'
	mov	di,0x10c		; 0000E2AF  BF0C01  '...'
	mov	ax,[0x712c]		; 0000E2B2  A12C71  '.,q'
	stosw				; 0000E2B5  AB  '.'
	mov	ax,[0x712e]		; 0000E2B6  A12E71  '..q'
	stosw				; 0000E2B9  AB  '.'
xe2ba:	mov	bx,0x7			; 0000E2BA  BB0700  '...'
	mov	ax,0x3			; 0000E2BD  B80300  '...'
	int	0x10			; 0000E2C0  CD10  '..'
	ret				; 0000E2C2  C3  '.'

	jmp	0xf000:0xe16b		; 0000E2C3  EA6BE100F0  '.k...'

xe2c8:	mov	al,0xe			; 0000E2C8  B00E  '..'
	call	xb544			; 0000E2CA  E877D2  '.w.'
	mov	ah,al			; 0000E2CD  8AE0  '..'
	mov	al,0x14			; 0000E2CF  B014  '..'
	call	xb544			; 0000E2D1  E870D2  '.p.'
	test	al,0x1			; 0000E2D4  A801  '..'
	jnz	xe2db			; 0000E2D6  7503  'u.'
	or	ah,0x20			; 0000E2D8  80CC20  '.. '
xe2db:	mov	al,ah			; 0000E2DB  8AC4  '..'
	test	al,0xc0			; 0000E2DD  A8C0  '..'
	jz	xe2f4			; 0000E2DF  7413
	mov	dx,0x2000		; 0000E2E1  BA0020  '.. '
	mov	bx,0xb8a0		; 0000E2E4  BBA0B8  '...'
	mov	cx,0x56			; 0000E2E7  B95600  '.V.'
	call	xc745			; 0000E2EA  E858E4  '.X.'
	or	byte [0x12],0xff	; 0000E2ED  800E1200FF  '.....'
	jmp	short xe336		; 0000E2F2  EB42  '.B'

xe2f4:	test	al,0x20			; 0000E2F4  A820  '. '
	jz	xe309			; 0000E2F6  7411  't.'
	mov	dx,0x2000		; 0000E2F8  BA0020  '.. '
	mov	bx,0xb8a0		; 0000E2FB  BBA0B8  '...'
	mov	cx,0x56			; 0000E2FE  B95600  '.V.'
	call	xc745			; 0000E301  E841E4  '.A.'
	or	byte [0x12],0xff	; 0000E304  800E1200FF  '.....'
xe309:	test	byte [0x10],0x1		; 0000E309  F606100001  '.....'
	jnz	xe321			; 0000E30E  7511  'u.'
	mov	dx,0x2000		; 0000E310  BA0020  '.. '
	mov	bx,0xb8f6		; 0000E313  BBF6B8  '...'
	mov	cx,0x1b			; 0000E316  B91B00  '...'
	call	xc745			; 0000E319  E829E4  '.).'
	or	byte [0x12],0xff	; 0000E31C  800E1200FF  '.....'
xe321:	test	al,0x10			; 0000E321  A810  '..'
	jz	xe336			; 0000E323  7411  't.'
	mov	dx,0x2000		; 0000E325  BA0020  '.. '
	mov	bx,0xb911		; 0000E328  BB11B9  '...'
	mov	cx,0x18			; 0000E32B  B91800  '...'
	call	xc745			; 0000E32E  E814E4  '...'
	or	byte [0x12],0xff	; 0000E331  800E1200FF  '.....'
xe336:	in	al,0x60			; 0000E336  E460  '.`'
	mov	al,0xc0			; 0000E338  B0C0  '..'
	out	0x64,al			; 0000E33A  E664  '.d'
	mov	cx,0xffff		; 0000E33C  B9FFFF  '...'
xe33f:	call	x919a			; 0000E33F  E858AE  '.X.'
	in	al,0x64			; 0000E342  E464  '.d'
	test	al,0x2			; 0000E344  A802  '..'
	jz	xe34f			; 0000E346  7407  't.'
	loop	xe33f			; 0000E348  E2F5  '..'
	jmp	short xe373		; 0000E34A  EB27  '.',0x27

	mov	cx,0xffff		; 0000E34C  B9FFFF  '...'
xe34f:	call	x919a			; 0000E34F  E848AE  '.H.'
	in	al,0x64			; 0000E352  E464  '.d'
	test	al,0x1			; 0000E354  A801  '..'
	jnz	xe35c			; 0000E356  7504  'u.'
	loop	xe34f			; 0000E358  E2F5  '..'
	jmp	short xe373		; 0000E35A  EB17  '..'

xe35c:	in	al,0x60			; 0000E35C  E460  '.`'
	test	al,0x80			; 0000E35E  A880  '..'
	jnz	xe373			; 0000E360  7511  'u.'
	mov	dx,0x2000		; 0000E362  BA0020  '.. '
	mov	bx,0xb95b		; 0000E365  BB5BB9  '.[.'
	mov	cx,0x55			; 0000E368  B95500  '.U.'
	call	xc745			; 0000E36B  E8D7E3  '...'
	or	byte [0x12],0xff	; 0000E36E  800E1200FF  '.....'
xe373:	xor	bp,bp			; 0000E373  33ED  '3.'
	call	xd03e			; 0000E375  E8C6EC  '...'
	jc	xe37b			; 0000E378  7201  'r.'
	xchg	ax,bp			; 0000E37A  95  '.'
xe37b:	call	xe3ab			; 0000E37B  E82D00  '.-.'
	xor	ax,ax			; 0000E37E  33C0  '3.'
	or	al,[0x12]		; 0000E380  0A061200  0x0A,'...'
	jz	xe389			; 0000E384  7403  't.'
	call	xe38f			; 0000E386  E80600  '...'
xe389:	mov	byte [0x12],0x0		; 0000E389  C606120000  '.....'
	ret				; 0000E38E  C3  '.'

xe38f:	pusha				; 0000E38F  60  '`'
	mov	dx,0x0			; 0000E390  BA0000  '...'
	mov	bx,0xb943		; 0000E393  BB43B9  '.C.'
	mov	cx,0x18			; 0000E396  B91800  '...'
	call	xc745			; 0000E399  E8A9E3  '...'
	xchg	ax,bp			; 0000E39C  95  '.'
	cmp	al,0x5			; 0000E39D  3C05  '<.'
	jz	xe3a4			; 0000E39F  7403  't.'
	call	xe3ef			; 0000E3A1  E84B00  '.K.'
xe3a4:	mov	byte [0x12],0x0		; 0000E3A4  C606120000  '.....'
	popa				; 0000E3A9  61  'a'
	ret				; 0000E3AA  C3  '.'

xe3ab:	cli				; 0000E3AB  FA  '.'
	in	al,0x21			; 0000E3AC  E421  '.!'
	and	al,0xfd			; 0000E3AE  24FD  '$.'
	out	0x21,al			; 0000E3B0  E621  '.!'
	push	es			; 0000E3B2  06  '.'
	xor	ax,ax			; 0000E3B3  33C0  '3.'
	mov	es,ax			; 0000E3B5  8EC0  '..'
	mov	bx,[es:0x24]		; 0000E3B7  268B1E2400  '&..$.'
	mov	word [es:0x24],0xe3e6	; 0000E3BC  26C7062400E6E3  '&..$...'
	sti				; 0000E3C3  FB  '.'
	push	bx			; 0000E3C4  53  'S'
	call	xc62f			; 0000E3C5  E867E2  '.g.'
	pop	bx			; 0000E3C8  5B  '['
	mov	[es:0x24],bx		; 0000E3C9  26891E2400  '&..$.'
	pop	es			; 0000E3CE  07  '.'
	mov	al,0x60			; 0000E3CF  B060  '.`'
	out	0x64,al			; 0000E3D1  E664  '.d'
	mov	cx,0xffff		; 0000E3D3  B9FFFF  '...'
xe3d6:	call	x919a			; 0000E3D6  E8C1AD  '...'
	in	al,0x64			; 0000E3D9  E464  '.d'
	test	al,0x2			; 0000E3DB  A802  '..'
	jz	xe3e1			; 0000E3DD  7402  't.'
	loop	xe3d6			; 0000E3DF  E2F5  '..'
xe3e1:	mov	al,0x45			; 0000E3E1  B045  '.E'
	out	0x60,al			; 0000E3E3  E660  '.`'
	ret				; 0000E3E5  C3  '.'

	push	ax			; 0000E3E6  50  'P'
	in	al,0x60			; 0000E3E7  E460  '.`'
	mov	al,0x20			; 0000E3E9  B020  '. '
	out	0x20,al			; 0000E3EB  E620  '. '
	pop	ax			; 0000E3ED  58  'X'
	iret				; 0000E3EE  CF  '.'

xe3ef:	mov	ah,0x0			; 0000E3EF  B400  '..'
	int	0x16			; 0000E3F1  CD16  '..'
	cmp	ah,0x3b			; 0000E3F3  80FC3B  '..;'
	jnz	xe3ef			; 0000E3F6  75F7  'u.'
	ret				; 0000E3F8  C3  '.'

	times	7 db 0xFF		; 0000E3F9 - 0000E3FF

	db	0xFF,0x32,0x01,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x01,0x11	; 0000E400
	db	0x00,0x67,0x02,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x02,0x11 ; 0000E410
	db	0x00,0x67,0x02,0x06,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x67,0x02,0x11 ; 0000E420
	db	0x00,0x00,0x04,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0xFF,0x03,0x11 ; 0000E430
	db	0x00,0xAC,0x03,0x06,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0xAB,0x03,0x11 ; 0000E440
	db	0x00,0xB9,0x02,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xB8,0x02,0x11 ; 0000E450
	db	0x00,0xCE,0x01,0x08,0x00,0x00,0x00,0x01,0x09,0x00,0x00,0x00,0x00,0xFF,0x01,0x11 ; 0000E460
	db	0x00,0x9D,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E470
	db	0x00,0x84,0x03,0x0F,0x00,0x00,0xFF,0xFF,0x00,0x08,0x00,0x00,0x00,0x83,0x03,0x11 ; 0000E480
	db	0x00,0xD4,0x03,0x05,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xD4,0x03,0x11 ; 0000E490
	db	0x00,0x9D,0x03,0x07,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E4A0
	db	0x00,0x9D,0x03,0x09,0x00,0x00,0x80,0x00,0x00,0x08,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E4B0
	db	0x00,0x64,0x02,0x08,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x63,0x02,0x11 ; 0000E4C0
	db	0x00,0xD4,0x03,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xD4,0x03,0x11 ; 0000E4D0
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; 0000E4E0
	db	0x00,0x64,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x02,0x11 ; 0000E4F0
	db	0x00,0xD4,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xD4,0x03,0x11 ; 0000E500
	db	0x00,0xC6,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E510
	db	0x00,0xF2,0x02,0x0B,0x00,0x00,0xFF,0xFF,0x00,0x08,0x00,0x00,0x00,0xF1,0x02,0x11 ; 0000E520
	db	0x00,0xDD,0x02,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xDC,0x02,0x11 ; 0000E530
	db	0x00,0xDD,0x02,0x07,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xDC,0x02,0x11 ; 0000E540
	db	0x00,0x25,0x03,0x06,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x11 ; 0000E550
	db	0x00,0x9C,0x03,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x9C,0x03,0x11 ; 0000E560
	db	0x00,0xC6,0x03,0x0E,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E570
	db	0x00,0xC6,0x03,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E580
	db	0x00,0xFF,0x03,0x0E,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x11 ; 0000E590
	db	0x00,0xC6,0x03,0x0A,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x11 ; 0000E5A0
	db	0x00,0xEC,0x02,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xEC,0x02,0x11 ; 0000E5B0
	db	0x00,0x25,0x03,0x06,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x1A ; 0000E5C0
	db	0x00,0x67,0x02,0x04,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x67,0x02,0x19 ; 0000E5D0
	db	0x00,0x67,0x02,0x08,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x67,0x02,0x19 ; 0000E5E0
	db	0x00,0x89,0x03,0x09,0x00,0x00,0x80,0x00,0x07,0x08,0x00,0x00,0x00,0x89,0x03,0x19 ; 0000E5F0
	db	0x00,0xEC,0x02,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xEC,0x02,0x22 ; 0000E600
	db	0x00,0xC6,0x03,0x07,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E610
	db	0x00,0xC6,0x03,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E620
	db	0x00,0xC6,0x03,0x09,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E630
	db	0x00,0xC6,0x03,0x05,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xC6,0x03,0x22 ; 0000E640
	db	0x00,0x63,0x02,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0x63,0x02,0x3F ; 0000E650
	db	0x00,0xFF,0x03,0x0B,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x21 ; 0000E660
	db	0x00,0xFF,0x03,0x0F,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x22 ; 0000E670
	db	0x00,0xFF,0x03,0x0F,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x21 ; 0000E680
	db	0x00,0xFF,0x03,0x10,0x00,0x00,0xFF,0xFF,0x07,0x08,0x00,0x00,0x00,0xFF,0x03,0x3F ; 0000E690
	db	0x00,0x25,0x03,0x04,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x1A ; 0000E6A0
	db	0x00,0x25,0x03,0x02,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x25,0x03,0x1A ; 0000E6B0
	db	0x00,0xEC,0x02,0x08,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xEC,0x02,0x21 ; 0000E6C0
	db	0x00,0xEC,0x02,0x06,0x00,0x00,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xEC,0x02,0x21 ; 0000E6D0
	db	0x00,0xC6,0x03,0x05,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xC6,0x03,0x19 ; 0000E6E0
	db	0x00,0xFF,0xEB,0x0B,0x90,0x08,0x00,0xFC,0x01,0x00,0x70,0x00,0x00,0x00,0x00,0x83 ; 0000E6F0
	db	0xC4,0x06 									; 0000E700

;
;   Start of warm boot code: read first sector from boot drive
;
	sti				; 0000E702  FB  '.'
	cld				; 0000E703  FC  '.'
	mov	al,0xf			; 0000E704  B00F  '..'
	out	0x84,al			; 0000E706  E684  '..'
	mov	al,0x0			; 0000E708  B000  '..'
	out	0x85,al			; 0000E70A  E685  '..'
	mov	dx,0xefc7		; 0000E70C  BAC7EF  '...'
	call	xd6cd			; 0000E70F  E8BBEF  '...'
	mov	ds,dx			; 0000E712  8EDA  '..'
xe714:	mov	al,0xb9			; 0000E714  B0B9  '..'
	out	0x84,al			; 0000E716  E684  '..'
	mov	cx,0x3			; 0000E718  B90300  '...'
xe71b:	push	cx			; 0000E71B  51  'Q'
;
;   Reset the disk controller
;
	mov	ah,0x0			; 0000E71C  B400  '..'
	int	0x13			; 0000E71E  CD13  '..'
;
;   Read the boot sector
;
	mov	bx,0x7c00		; 0000E720  BB007C  '..|'
	mov	cx,0x1			; 0000E723  B90100  '...'
	mov	ax,0x201		; 0000E726  B80102  '...'
	int	0x13			; 0000E729  CD13  '..'
	pop	cx			; 0000E72B  59  'Y'
	jnc	xe770			; 0000E72C  7342  'sB'
	jc	xe73c			; 0000E72E  720C  'r.'

	times	9 db 0xFF		; 0000E730 - 0000E738
	jmp	xc5c0			; 0000E739  E984DE (NOTE: This JMP doesn't appear reachable)

xe73c:	loop	xe71b			; 0000E73C  E2DD  '..'
	mov	al,0xbb			; 0000E73E  B0BB  '..'
	out	0x84,al			; 0000E740  E684  '..'
	cmp	dl,0x80			; 0000E742  80FA80  '...'
	jz	xe76e			; 0000E745  7427  't',0x27
	mov	al,0xe			; 0000E747  B00E  '..'
	call	xb544			; 0000E749  E8F8CD  '...'
	test	al,0x40			; 0000E74C  A840  '.@'
	jnz	xe76e			; 0000E74E  751E  'u.'
	mov	dx,ds			; 0000E750  8CDA  '..'
	mov	bx,0x40			; 0000E752  BB4000  '.@.'
	mov	ds,bx			; 0000E755  8EDB  '..'
	mov	ch,[0x75]		; 0000E757  8A2E7500  '..u.'
	mov	ds,dx			; 0000E75B  8EDA  '..'
	or	ch,ch			; 0000E75D  0AED  0x0A,'.'
	jz	xe76e			; 0000E75F  740D  't',0x0D
	test	al,0x8			; 0000E761  A808  '..'
	jnz	xe76e			; 0000E763  7509  'u.'
	mov	al,0xba			; 0000E765  B0BA  '..'
	out	0x84,al			; 0000E767  E684  '..'
	mov	dx,0x80			; 0000E769  BA8000  '...'
	jmp	short xe714		; 0000E76C  EBA6  '..'

;
;   On warm boot failure, pass control to the traditional ROM BASIC entry point
;
xe76e:	int	0x18			; 0000E76E  CD18  '..'

;
;   Boot sector successfully read
;
xe770:	test	dl,0x80			; 0000E770  F6C280  '...'
	jnz	xe793			; 0000E773  751E  'u.'

;
;   More diskette I/O (TODO: Investigate)
;
	push	bx			; 0000E775  53  'S'
	call	xd540			; 0000E776  E8C7ED  '...'
	pop	bx			; 0000E779  5B  '['
;
;   Check the ROM status byte for 0xBD (values I've seen: 0xB9)
;
	in	al,0x84			; 0000E77A  E484  '..'
	cmp	al,0xbd			; 0000E77C  3CBD  '<.'
	jz	xe714			; 0000E77E  7494  't.'
;
;   This code looks broken: ES:BX points to the boot sector just loaded
;   (0x0000:0x7C00), and apparently the ROM wants to scan the first 9 words
;   of the boot sector, to see if they all match the 1st word; if they do,
;   then it's likely the boot sector is invalid (hence the "boot_error"
;   message).  However, it's loading AX with the 1st word from DS:BX
;   (0x0040:0x7C00) rather than ES:BX, which aside from being the wrong word,
;   also increases the likelihood that this code will always see a difference
;   and never trigger the error.
;
;   The value in AX is typically 0x0000.
;
	mov	ax,[bx]			; 0000E780  8B07  '..'
	mov	cx,0x9			; 0000E782  B90900  '...'
	mov	di,bx			; 0000E785  8BFB  '..'
	repe	scasw			; 0000E787  F3AF  '..'
	jnz	xe7a9			; 0000E789  751E  'u.'

	mov	si,boot_error		; 0000E78B  BE5D93  '.].'
	call	print_str$		; 0000E78E  E83F00  '.?.'
xe791:	jmp	short xe791		; 0000E791  EBFE		; HANG THE MACHINE

;
;   Hard disk sector validation (as opposed to the preceding floppy disk sector validation)
;
xe793:	mov	al,0x33			; 0000E793  B033  '.3'
	mov	ah,al			; 0000E795  8AE0  '..'
	call	xb544			; 0000E797  E8AACD  '...'
	and	al,0xfb			; 0000E79A  24FB  '$.'
	xchg	al,ah			; 0000E79C  86C4  '..'
	call	xb549			; 0000E79E  E8A8CD  '...'
;
;   Verify the hard disk boot sector signature (0xAA55)
;
	cmp	word [bx+0x1fe],0xaa55	; 0000E7A1  81BFFE0155AA  '....U.'
	jnz	xe76e			; 0000E7A7  75C5  'u.'

xe7a9:	in	al,0x86			; 0000E7A9  E486  '..'
	test	al,0x80			; 0000E7AB  A880  '..'
	jnz	xe7b7			; 0000E7AD  7508  'u.'
	test	al,0x40			; 0000E7AF  A840  '.@'
	jnz	xe7b7			; 0000E7B1  7504  'u.'
	mov	al,0x92			; 0000E7B3  B092  '..'
	out	0x4b,al			; 0000E7B5  E64B  '.K'
xe7b7:	mov	al,0xbc			; 0000E7B7  B0BC  '..'
	out	0x84,al			; 0000E7B9  E684  '..'
;
;   Jump to the start of the boot sector
;
	jmp	0x0:0x7c00		; 0000E7BB  EA007C0000  '..|..'

xe7c0:	add	sp,byte +0x6		; 0000E7C0  83C406  '...'
	sti				; 0000E7C3  FB  '.'
	mov	si,boot_prompt		; 0000E7C4  BE1493  '...'
	call	print_str$		; 0000E7C7  E80600  '...'
	mov	ah,0x0			; 0000E7CA  B400  '..'
	int	0x16			; 0000E7CC  CD16  '..'
	int	0x19			; 0000E7CE  CD19  '..'

;
;   print_str$(CS:SI -> $-terminated string)
;
print_str$:
	cld				; 0000E7D0  FC  '.'
xe7d1:	cs	lodsb			; 0000E7D1  2EAC  '..'
	cmp	al,0x24			; 0000E7D3  3C24  '<$'
	jz	xe7dc			; 0000E7D5  7405  't.'
	call	print_char		; 0000E7D7  E8F9DF  '...'
	jmp	short xe7d1		; 0000E7DA  EBF5  '..'
xe7dc:	ret				; 0000E7DC  C3  '.'

	sub	al,0x2d			; 0000E7DD  2C2D  ',-' (NOTE: This instruction doesn't appear reachable)

xe7df:	mov	si,bim_table_offset	; 0000E7DF  BEE0FF  '...'
	mov	si,[cs:si]		; 0000E7E2  2E8B34  '..4'
	mov	ax,[cs:si]		; 0000E7E5  2E8B04  '...'
	test	ax,0xf00		; 0000E7E8  A9000F  '...'
	jz	xe7f0			; 0000E7EB  7403  't.'
	jmp	short xe80a		; 0000E7ED  EB1B  '..'

	nop				; 0000E7EF  90  '.'
xe7f0:	and	ah,0xc0			; 0000E7F0  80E4C0  '...'
	cmp	ah,0x40			; 0000E7F3  80FC40  '..@'
	jz	xe80a			; 0000E7F6  7412  't.'
	call	xf305			; 0000E7F8  E80A0B  '.',0x0A,'.'
	mov	byte [cs:0x67dd],0x22	; 0000E7FB  2EC606DD6722  '....g"'
	mov	byte [cs:0x67de],0x24	; 0000E801  2EC606DE6724  '....g$'
	call	xf30a			; 0000E807  E8000B  '...'
xe80a:	ret				; 0000E80A  C3  '.'

;
;   Compare DS:BX to ES:DI; return carry CLEAR if success, SET if failure
;
xe80b:	mov	si,bx			; 0000E80B  8BF3  '..'
	mov	cx,0x21			; 0000E80D  B92100  '.!.'
	repe	cmpsd			; 0000E810  66F3A7  'f..'
	jnz	xe821			; 0000E813  750C  'u.'
	dec	dx			; 0000E815  4A  'J'
	jnz	xe80b			; 0000E816  75F3  'u.'
	mov	si,bx			; 0000E818  8BF3  '..'
	mov	cx,ax			; 0000E81A  8BC8  '..'
	repe	cmpsd			; 0000E81C  66F3A7  'f..'
	jz	xe828			; 0000E81F  7407  't.'
xe821:	sub	di,byte +0x4		; 0000E821  83EF04  '...'
	sub	si,byte +0x4		; 0000E824  83EE04  '...'
	stc				; 0000E827  F9  '.'
xe828:	jmp	bp			; 0000E828  FFE5  '..'

	times	4 db 0xFF		; 0000E82A - 0000E82D

xe82e:	sti				; 0000E82E  FB  '.'
	cld				; 0000E82F  FC  '.'
	push	ds			; 0000E830  1E  '.'
	push	si			; 0000E831  56  'V'
	push	bp			; 0000E832  55  'U'
	mov	bp,sp			; 0000E833  8BEC  '..'
	mov	si,0x40			; 0000E835  BE4000  '.@.'
	mov	ds,si			; 0000E838  8EDE  '..'
	test	ah,ah			; 0000E83A  84E4  '..'
	jnz	xe849			; 0000E83C  750B  'u.'
xe83e:	call	xdc96			; 0000E83E  E855F4  '.U.'
	call	xdccb			; 0000E841  E887F4  '...'
	jz	xe83e			; 0000E844  74F8  't.'
	jmp	xe8fc			; 0000E846  E9B300  '...'

xe849:	dec	ah			; 0000E849  FECC  '..'
	jnz	xe876			; 0000E84B  7529  'u)'
	or	word [bp+0xa],0x240	; 0000E84D  814E0A4002  '.N',0x0A,'@.'
	and	word [bp+0xa],0xfffe	; 0000E852  81660AFEFF  '.f',0x0A,'..'
xe857:	call	xdcbe			; 0000E857  E864F4  '.d.'
	jnz	xe85f			; 0000E85A  7503  'u.'
	jmp	xe8fc			; 0000E85C  E99D00  '...'

xe85f:	call	xdccb			; 0000E85F  E869F4  '.i.'
	jnz	xe869			; 0000E862  7505  'u.'
	call	xdc96			; 0000E864  E82FF4  './.'
	jmp	short xe857		; 0000E867  EBEE  '..'

xe869:	and	word [bp+0xa],0xffbf	; 0000E869  81660ABFFF  '.f',0x0A,'..'
	or	word [bp+0xa],0x1	; 0000E86E  814E0A0100  '.N',0x0A,'..'
	jmp	xe8fc			; 0000E873  E98600  '...'

xe876:	dec	ah			; 0000E876  FECC  '..'
	jnz	xe87f			; 0000E878  7505  'u.'
	call	xdcc7			; 0000E87A  E84AF4  '.J.'
	jmp	short xe8fc		; 0000E87D  EB7D  '.}'

xe87f:	dec	ah			; 0000E87F  FECC  '..'
	jnz	xe888			; 0000E881  7505  'u.'
	call	xdd28			; 0000E883  E8A2F4  '...'
	jmp	short xe8fc		; 0000E886  EB74  '.t'

xe888:	dec	ah			; 0000E888  FECC  '..'
	jnz	xe88e			; 0000E88A  7502  'u.'
	jmp	short xe8fc		; 0000E88C  EB6E  '.n'

xe88e:	dec	ah			; 0000E88E  FECC  '..'
	jnz	xe897			; 0000E890  7505  'u.'
	call	xdd88			; 0000E892  E8F3F4  '...'
	jmp	short xe8fc		; 0000E895  EB65  '.e'

xe897:	cmp	ah,0xb			; 0000E897  80FC0B  '...'
	jnz	xe8a4			; 0000E89A  7508  'u.'
	call	xdc96			; 0000E89C  E8F7F3  '...'
	call	xdcfd			; 0000E89F  E85BF4  '.[.'
	jmp	short xe8fc		; 0000E8A2  EB58  '.X'

xe8a4:	cmp	ah,0xc			; 0000E8A4  80FC0C  '...'
	jnz	xe8c7			; 0000E8A7  751E  'u.'
	or	word [bp+0xa],0x240	; 0000E8A9  814E0A4002  '.N',0x0A,'@.'
	and	word [bp+0xa],0xfffe	; 0000E8AE  81660AFEFF  '.f',0x0A,'..'
	call	xdcbe			; 0000E8B3  E808F4  '...'
	jz	xe8fc			; 0000E8B6  7444  'tD'
	call	xdcfd			; 0000E8B8  E842F4  '.B.'
	and	word [bp+0xa],0xffbf	; 0000E8BB  81660ABFFF  '.f',0x0A,'..'
	or	word [bp+0xa],0x1	; 0000E8C0  814E0A0100  '.N',0x0A,'..'
	jmp	short xe8fc		; 0000E8C5  EB35  '.5'

xe8c7:	cmp	ah,0xd			; 0000E8C7  80FC0D  '..',0x0D
	jnz	xe8d1			; 0000E8CA  7505  'u.'
	call	xdd09			; 0000E8CC  E83AF4  '.:.'
	jmp	short xe8fc		; 0000E8CF  EB2B  '.+'

xe8d1:	cmp	ah,0xeb			; 0000E8D1  80FCEB  '...'	; INT 0x16 AH=0xF0 (SET SYSTEM SPEED)?
	jnz	xe8db			; 0000E8D4  7505  'u.'		; NO
	call	xddaf			; 0000E8D6  E8D6F4  '...'	; YES
	jmp	short xe8fc		; 0000E8D9  EB21  '.!'

xe8db:	cmp	ah,0xec			; 0000E8DB  80FCEC  '...'
	jnz	xe8e5			; 0000E8DE  7505  'u.'
	call	xde51			; 0000E8E0  E86EF5  '.n.'
	jmp	short xe8fc		; 0000E8E3  EB17  '..'

xe8e5:	cmp	ah,0xed			; 0000E8E5  80FCED  '...'
	jnz	xe8ef			; 0000E8E8  7505  'u.'
	call	xde91			; 0000E8EA  E8A4F5  '...'
	jmp	short xe8fc		; 0000E8ED  EB0D  '.',0x0D

xe8ef:	cmp	ah,0xef			; 0000E8EF  80FCEF  '...'
	jnz	xe8f9			; 0000E8F2  7505  'u.'
	call	xdea5			; 0000E8F4  E8AEF5  '...'
	jmp	short xe8fc		; 0000E8F7  EB03  '..'

xe8f9:	sub	ah,0xd			; 0000E8F9  80EC0D  '..',0x0D
xe8fc:	pop	bp			; 0000E8FC  5D  ']'
	pop	si			; 0000E8FD  5E  '^'
	pop	ds			; 0000E8FE  1F  '.'
	iret				; 0000E8FF  CF  '.'

xe900:	push	ds			; 0000E900  1E  '.'
	push	ax			; 0000E901  50  'P'
	mov	ax,0x40			; 0000E902  B84000  '.@.'
	mov	ds,ax			; 0000E905  8ED8  '..'
	mov	ax,0xff0b		; 0000E907  B80BFF  '...'
	out	0xa0,al			; 0000E90A  E6A0  '..'
	in	al,0xa0			; 0000E90C  E4A0  '..'
	test	al,al			; 0000E90E  84C0  '..'
	jz	xe91e			; 0000E910  740C  't.'
	mov	ah,al			; 0000E912  8AE0  '..'
	in	al,0xa1			; 0000E914  E4A1  '..'
	or	al,ah			; 0000E916  0AC4  0x0A,'.'
	out	0xa1,al			; 0000E918  E6A1  '..'
	out	0xa0,al			; 0000E91A  E6A0  '..'
	jmp	short xe934		; 0000E91C  EB16  '..'

xe91e:	mov	al,0xb			; 0000E91E  B00B  '..'
	out	0x20,al			; 0000E920  E620  '. '
	in	al,0x20			; 0000E922  E420  '. '
	test	al,al			; 0000E924  84C0  '..'
	jz	xe934			; 0000E926  740C  't.'
	mov	ah,al			; 0000E928  8AE0  '..'
	test	al,0x4			; 0000E92A  A804  '..'
	jnz	xe934			; 0000E92C  7506  'u.'
	in	al,0x21			; 0000E92E  E421  '.!'
	or	al,ah			; 0000E930  0AC4  0x0A,'.'
	out	0x21,al			; 0000E932  E621  '.!'
xe934:	cmp	ah,0xff			; 0000E934  80FCFF  '...'
	jz	xe93d			; 0000E937  7404  't.'
	mov	al,0x20			; 0000E939  B020  '. '
	out	0x20,al			; 0000E93B  E620  '. '
xe93d:	mov	[0x6b],ah		; 0000E93D  88266B00  '.&k.'
	pop	ax			; 0000E941  58  'X'
	pop	ds			; 0000E942  1F  '.'
	iret				; 0000E943  CF  '.'

xe944:	push	cx			; 0000E944  51  'Q'
	mov	cx,0x78			; 0000E945  B97800  '.x.'
	mov	dx,0x3f4		; 0000E948  BAF403  '...'
xe94b:	call	x919a			; 0000E94B  E84CA8  '.L.'
	in	al,dx			; 0000E94E  EC  '.'
	test	al,0x80			; 0000E94F  A880  '..'
	jnz	xe959			; 0000E951  7506  'u.'
	loop	xe94b			; 0000E953  E2F6  '..'
	stc				; 0000E955  F9  '.'
	jmp	short xe960		; 0000E956  EB08  '..'

	nop				; 0000E958  90  '.'
xe959:	call	x919a			; 0000E959  E83EA8  '.>.'
	in	al,dx			; 0000E95C  EC  '.'
	inc	dx			; 0000E95D  42  'B'
	test	al,0x40			; 0000E95E  A840  '.@'
xe960:	pop	cx			; 0000E960  59  'Y'
	ret				; 0000E961  C3  '.'

	db	0xFF			; 0000E962  FF  '.'
	db	0xFF			; 0000E963  FF  '.'

xe964:	call	xbfc3			; 0000E964  E85CD6  '.\.'
	jc	xe97b			; 0000E967  7212  'r.'
	call	xbe10			; 0000E969  E8A4D4  '...'
	jc	xe97b			; 0000E96C  720D  'r',0x0D
	call	xc129			; 0000E96E  E8B8D7  '...'
	jc	xe97b			; 0000E971  7208  'r.'
	call	xc188			; 0000E973  E812D8  '...'
	jc	xe97b			; 0000E976  7203  'r.'
	call	xd215			; 0000E978  E89AE8
xe97b:	ret				; 0000E97B  C3  '.'

xe97c:	call	xec2e_wait_8042_ready	; 0000E97C  E8AF02  '...'
	mov	al,0xad			; 0000E97F  B0AD  '..'
	out	0x64,al			; 0000E981  E664  '.d'
	call	xec2e_wait_8042_ready	; 0000E983  E8A802  '...'
	ret				; 0000E986  C3  '.'

	cld				; 0000E987  FC  '.'
	pusha				; 0000E988  60  '`'
	push	ds			; 0000E989  1E  '.'
	push	es			; 0000E98A  06  '.'
	mov	bx,0x40			; 0000E98B  BB4000  '.@.'
	mov	ds,bx			; 0000E98E  8EDB  '..'
	test	byte [0x96],0x80	; 0000E990  F606960080  '.....'
	jz	xe9b2			; 0000E995  741B  't.'
	in	al,0x60			; 0000E997  E460  '.`'
	cmp	al,0xab			; 0000E999  3CAB  '<.'
	jnz	xe9a7			; 0000E99B  750A
	or	byte [0x96],0x40	; 0000E99D  800E960040  '....@'
	and	byte [0x96],0x7f	; 0000E9A2  802696007F  '.&...'
xe9a7:	mov	al,0x20			; 0000E9A7  B020  '. '
	out	0x20,al			; 0000E9A9  E620  '. '
	sti				; 0000E9AB  FB  '.'
	mov	bp,0xffff		; 0000E9AC  BDFFFF  '...'
	jmp	xeadf			; 0000E9AF  E92D01  '.-.'

xe9b2:	test	byte [0x96],0x40	; 0000E9B2  F606960040  '....@'
	jz	xe9fa			; 0000E9B7  7441  'tA'
	in	al,0x60			; 0000E9B9  E460  '.`'
	cmp	al,0x41			; 0000E9BB  3C41  '<A'
	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
;
;   NOTE: EC59 is not a coincidental address; every IBM ROM BIOS (from the first 5150 through the 5170)
;   has placed its INT 0x13 handler here (probably only because that's where it happened to land on the 5150).
;
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  '..'
;
;   At this point, the caller's registers can be accessed using the following offsets
;
CALLER_AL	equ	0x00		; [BP+0x00] = AL
CALLER_AH	equ	0x01		; [BP+0x01] = AH
CALLER_BL	equ	0x02		; [BP+0x02] = BL
CALLER_BH	equ	0x03		; [BP+0x03] = BH
CALLER_CL	equ	0x04		; [BP+0x04] = CL
CALLER_CH	equ	0x05		; [BP+0x05] = CH
CALLER_DL	equ	0x06		; [BP+0x06] = DL
CALLER_DH	equ	0x07		; [BP+0x07] = DH
CALLER_SI	equ	0x08		; [BP+0x08] = SI
CALLER_DI	equ	0x0A		; [BP+0x0A] = DI
CALLER_ES	equ	0x0C		; [BP+0x0C] = ES
CALLER_DS	equ	0x0E		; [BP+0x0E] = DS
CALLER_BP	equ	0x10		; [BP+0x10] = BP
CALLER_IP	equ	0x12		; [BP+0x12] = IP
CALLER_CS	equ	0x14		; [BP+0x14] = CS
CALLER_FLAGS	equ	0x16		; [BP+0x16] = FLAGS

	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 [MOTOR_COUNT],0xff	; 0000EC72  C6064000FF
	and	word [bp+CALLER_FLAGS],0xfe	; 0000EC77  816616FE00  '.f...'
	mov	al,[bp+CALLER_AH]; 0000EC7C  8A4601  '.F.'
	mov	ah,[bp+CALLER_DL]; 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  '.?.'

;
;   ES:SI (typically 0:522) points to Diskette Drive Parameters
;
xeca9:	mov	bl,[es:si+0x2]		; 0000ECA9  268A5C02	; BL == 0x25 (typically)
	mov	[MOTOR_COUNT],bl	; 0000ECAD  881E4000
	or word [bp+CALLER_FLAGS],0x200	; 0000ECB1  814E160002	; ENSURE THAT INTERRUPTS ARE ENABLED BY THE IRET
	pop	bx			; 0000ECB6  5B
	pop	bx			; 0000ECB7  5B
	pop	cx			; 0000ECB8  59
	pop	dx			; 0000ECB9  5A
	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  '...'

;
;   Wait for a bit...
;
xedbb:	call	xef85			; 0000EDBB  E8C701  '...'
	jnz	xedd7			; 0000EDBE  7517  'u.'
;
;   Read 7 FDC response bytes, starting with ST0, storing them at 0x40:0x42
;
	mov	cx,0x7			; 0000EDC0  B90700  '...'
	mov	di,0x42			; 0000EDC3  BF4200  '.B.'

xedc6:	call	xc9bf			; 0000EDC6  E8F6DB  '...'
	jz	xedc6			; 0000EDC9  74FB  't.'
	call	x919a			; 0000EDCB  E8CCA3  '...'
	in	al,dx			; 0000EDCE  EC  '.'
	mov	[di],al			; 0000EDCF  8805  '..'
	inc	di			; 0000EDD1  47  'G'
	loop	xedc6			; 0000EDD2  E2F2  '..'
;
;   If the FDC's response in ST0 is good, this will return (AH) == 0x00
;
	call	xd50f			; 0000EDD4  E838E7  '.8.'

xedd7:	mov	[0x41],ah		; 0000EDD7  88264100  '.&A.'
;
;   This appears to validate the rest of the FDC response bytes; (AX) should be zero on success
;
	call	xecd5			; 0000EDDB  E8F7FE  '...'

	or	ah,ah			; 0000EDDE  0AE4  0x0A,'.'
	ret				; 0000EDE0  C3  '.'

	push	ds			; 0000EDE1  1E  '.'
	push	cx			; 0000EDE2  51  'Q'
	push	si			; 0000EDE3  56  'V'
	cld				; 0000EDE4  FC  '.'
	mov	cx,0x10			; 0000EDE5  B91000  '...'
	xor	ax,ax			; 0000EDE8  33C0  '3.'
	mov	ds,ax			; 0000EDEA  8ED8  '..'
	rep	lodsb			; 0000EDEC  F3AC  '..'
	pop	si			; 0000EDEE  5E  '^'
	push	si			; 0000EDEF  56  'V'
	mov	cx,0x10			; 0000EDF0  B91000  '...'
	mov	ax,0x1000		; 0000EDF3  B80010  '...'
	mov	ds,ax			; 0000EDF6  8ED8  '..'
	rep	lodsb			; 0000EDF8  F3AC  '..'
	pop	si			; 0000EDFA  5E  '^'
	pop	cx			; 0000EDFB  59  'Y'
	pop	ds			; 0000EDFC  1F  '.'
	call	x8fa4			; 0000EDFD  E8A4A1  '...'
	jnz	xee68			; 0000EE00  7566  'uf'
	call	x9190			; 0000EE02  E88BA3  '...'
	mov	ah,[bx]			; 0000EE05  8A27  '.',0x27
	test	ah,0x10			; 0000EE07  F6C410  '...'
	jnz	xee19			; 0000EE0A  750D  'u',0x0D
	cmp	ah,0x87			; 0000EE0C  80FC87  '...'
	jnz	xee14			; 0000EE0F  7503  'u.'
	sub	ah,0x3			; 0000EE11  80EC03  '...'
xee14:	add	ah,0x13			; 0000EE14  80C413  '...'
	mov	[bx],ah			; 0000EE17  8827  '.',0x27
xee19:	call	xd490			; 0000EE19  E874E6  '.t.'
	mov	al,0x4a			; 0000EE1C  B04A  '.J'
	out	0xb,al			; 0000EE1E  E60B  '..'
	mov	cx,0xffff		; 0000EE20  B9FFFF  '...'
	call	xca4f			; 0000EE23  E829DC  '.).'
	mov	al,0x4			; 0000EE26  B004  '..'
	xor	ah,ah			; 0000EE28  32E4  '2.'
	mul	byte [bp+0x0]		; 0000EE2A  F66600  '.f.'
	add	ax,bx			; 0000EE2D  03C3  '..'
	jnc	xee35			; 0000EE2F  7304  's.'
	mov	ah,0x9			; 0000EE31  B409  '..'
	jmp	short xee63		; 0000EE33  EB2E  '..'

xee35:	call	xee9c			; 0000EE35  E86400  '.d.'
	jnz	xee68			; 0000EE38  752E  'u.'
	mov	al,0x2			; 0000EE3A  B002  '..'
	out	0xa,al			; 0000EE3C  E60A  '.',0x0A
	mov	bh,0x4d			; 0000EE3E  B74D  '.M'
	call	xd4c4			; 0000EE40  E881E6  '...'
	mov	bh,[bp+0x7]		; 0000EE43  8A7E07  '.~.'
	shl	bh,0x2			; 0000EE46  C0E702  '...'
	or	bh,[bp+0x6]		; 0000EE49  0A7E06  0x0A,'~.'
	call	xd4c4			; 0000EE4C  E875E6  '.u.'
	add	si,byte +0x3		; 0000EE4F  83C603  '...'
	call	xd4d0			; 0000EE52  E87BE6  '.{.'
	add	si,byte +0x4		; 0000EE55  83C604  '...'
	call	xd4d0			; 0000EE58  E875E6  '.u.'
	sub	si,byte +0x7		; 0000EE5B  83EE07  '...'
	call	xedbb			; 0000EE5E  E85AFF  '.Z.'
	jz	xee71			; 0000EE61  740E  't.'
xee63:	or	word [bp+0x16],0x1	; 0000EE63  814E160100  '.N...'
xee68:	mov	[0x41],ah		; 0000EE68  88264100  '.&A.'
	call	xecd5			; 0000EE6C  E866FE  '.f.'
	or	ah,ah			; 0000EE6F  0AE4  0x0A,'.'
xee71:	ret				; 0000EE71  C3  '.'

xee72:	call	xc956			; 0000EE72  E8E1DA  '...'
	mov	cx,0x64			; 0000EE75  B96400  '.d.'
xee78:	call	xc9bf			; 0000EE78  E844DB  '.D.'
	jz	xee83			; 0000EE7B  7406  't.'
	loop	xee78			; 0000EE7D  E2F9  '..'
	mov	ah,0x80			; 0000EE7F  B480  '..'
	jmp	short xee9b		; 0000EE81  EB18  '..'

xee83:	call	x919a			; 0000EE83  E814A3  '...'
	mov	al,0x7			; 0000EE86  B007  '..'
	out	dx,al			; 0000EE88  EE  '.'
	mov	bh,[bp+0x6]		; 0000EE89  8A7E06  '.~.'
	call	xd4c4			; 0000EE8C  E835E6  '.5.'
	call	xef85			; 0000EE8F  E8F300  '...'
	jnz	xee9b			; 0000EE92  7507  'u.'
	call	xef6f			; 0000EE94  E8D800  '...'
	test	al,0xc0			; 0000EE97  A8C0  '..'
	mov	ah,0x80			; 0000EE99  B480  '..'
xee9b:	ret				; 0000EE9B  C3  '.'

xee9c:	mov	al,0x1			; 0000EE9C  B001  '..'
	mov	cl,[bp+0x6]		; 0000EE9E  8A4E06  '.N.'
	shl	al,cl			; 0000EEA1  D2E0  '..'
	test	[0x3e],al		; 0000EEA3  84063E00  '..>.'
	jnz	xeec4			; 0000EEA7  751B  'u.'
	or	[0x3e],al		; 0000EEA9  08063E00  '..>.'
	call	x9190			; 0000EEAD  E8E0A2  '...'
	mov	byte [bx+0x4],0x0	; 0000EEB0  C6470400  '.G..'
	call	xee72			; 0000EEB4  E8BBFF  '...'
	jz	xeec4			; 0000EEB7  740B  't.'
	and	al,0x70			; 0000EEB9  2470  '$p'
	cmp	al,0x70			; 0000EEBB  3C70  '<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.'	; CALL DELAY(BX)
	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  '...'	; CALL DELAY(BX)
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  '..'		; COMPAQ-SPECIFIC COMMAND: COMPAQ_SLOWD
	out	0x64,al			; 0000F332  E664  '.d'
	sti				; 0000F334  FB  '.'
	pop	ax			; 0000F335  58  'X'
	ret				; 0000F336  C3  '.'

xf337:	cli				; 0000F337  FA  '.'
	call	xec2e_wait_8042_ready	; 0000F338  E8F3F8  '...'
	mov	al,0xad			; 0000F33B  B0AD  '..'
	out	0x64,al			; 0000F33D  E664  '.d'
xf33f:	in	al,0x64			; 0000F33F  E464  '.d'
	test	al,0x1			; 0000F341  A801  '..'
	jz	xf349			; 0000F343  7404  't.'
	in	al,0x60			; 0000F345  E460  '.`'
	jmp	short xf33f		; 0000F347  EBF6  '..'

xf349:	call	xec2e_wait_8042_ready	; 0000F349  E8E2F8  '...'
	mov	al,0xa5			; 0000F34C  B0A5  '..'
	out	0x64,al			; 0000F34E  E664  '.d'
	call	xec2e_wait_8042_ready	; 0000F350  E8DBF8  '...'
	push	cx			; 0000F353  51  'Q'
	mov	cx,0x2710		; 0000F354  B91027  '..',0x27
xf357:	in	al,0x64			; 0000F357  E464  '.d'
	test	al,0x1			; 0000F359  A801  '..'
	loope	xf357			; 0000F35B  E1FA  '..'
	pop	cx			; 0000F35D  59  'Y'
	jz	xf362			; 0000F35E  7402  't.'
	in	al,0x60			; 0000F360  E460  '.`'
xf362:	push	ax			; 0000F362  50  'P'
	pushf				; 0000F363  9C  '.'
	call	xec2e_wait_8042_ready	; 0000F364  E8C7F8  '...'
	mov	al,0xae			; 0000F367  B0AE  '..'
	out	0x64,al			; 0000F369  E664  '.d'
	push	cs			; 0000F36B  0E  '.'
	call	xf372			; 0000F36C  E80300  '...'
	jmp	short xf373		; 0000F36F  EB02  '..'

	nop				; 0000F371  90  '.'

xf372:	iret				; 0000F372  CF  '.'

xf373:	pop	ax			; 0000F373  58  'X'
	sti				; 0000F374  FB  '.'
	ret				; 0000F375  C3  '.'

	dw	0xFFFF			; 0000F376  FFFF

;
;   Pattern buffers for memory tests
;
pattern1:
	db	0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02						; 0000F378
	db	0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20 ; 0000F380
	db	0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00 ; 0000F390
	db	0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00 ; 0000F3A0
	db	0x00,0x00,0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00 ; 0000F3B0
	db	0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00 ; 0000F3C0
	db	0x00,0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00 ; 0000F3D0
	db	0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x00 ; 0000F3E0
	db	0x40,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00			; 0000F3F0
pattern2:
	db	0xFF,0xFF,0xFF,0xFE 								; 0000F3FC
	db	0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF ; 0000F400
	db	0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF ; 0000F410
	db	0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF,0xFF ; 0000F420
	db	0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF,0xFF ; 0000F430
	db	0xFF,0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF ; 0000F440
	db	0xFF,0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF ; 0000F450
	db	0xFD,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF ; 0000F460
	db	0xDF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ; 0000F470

xf480:	mov	al,0x7d			; 0000F480  B07D
	out	0x84,al			; 0000F482  E684
	mov	si,bim_table_offset	; 0000F484  BEE0FF
	mov	si,[cs:si]		; 0000F487  2E8B34
	test	word [cs:si],0x0f00	; 0000F48A  2EF704000F
	jz	xf494			; 0000F48F  7403
	jmp	xf684			; 0000F491  E9F001

xf494:	mov	al,0x0			; 0000F494  B000
	out	0x80,al			; 0000F496  E680

;
;   When we arrive here, the A20 line has been disabled; on most systems, that would
;   mean that the ROM's GDT would only be accessible at the "low" ROM address (%0F0730),
;   not the "high" address (%FF0730).  But fortunately, A20 management on COMPAQ
;   DeskPros affects wrap-around only from the 1st to the 2nd megabyte; no other address
;   range is affected.
;
;   FYI, it seems this code doesn't do anything if bits 6 and 7 of the RAM Settings
;   register are set to anything other than 0x40 (ie, it returns to real-mode almost
;   immediately after entering protected-mode).
;
	lgdt	[cs:0x077e]		; 0000F498  2E0F01167E07; load [gdtr_hi] into GDTR
	mov	eax,cr0			; 0000F49E  0F2000
	or	ax,0x1			; 0000F4A1  0D0100
	mov	cr0,eax			; 0000F4A4  0F2200
	jmp	0x28:xf4ac		; 0000F4A7  EAACF42800

xf4ac:	mov	ax,0x8			; 0000F4AC  B80800  '...'
	mov	ds,ax			; 0000F4AF  8ED8  '..'
	in	al,0x61			; 0000F4B1  E461  '.a'
	mov	ah,al			; 0000F4B3  8AE0  '..'
	or	al,0x8			; 0000F4B5  0C08  '..'
	out	0x61,al			; 0000F4B7  E661  '.a'
	mov	al,[0x0]		; 0000F4B9  A00000  '...'
	xchg	ah,al			; 0000F4BC  86E0  '..'
	out	0x61,al			; 0000F4BE  E661  '.a'
	and	ah,0xc0			; 0000F4C0  80E4C0  '...'
;
;   (AH) contains only bits 6 and 7 from the RAM Settings/Diagnostics register
;
	cmp	ah,0x40			; 0000F4C3  80FC40
	jz	xf4cb			; 0000F4C6  7403
	jmp	xf655			; 0000F4C8  E98A01

xf4cb:	or	byte [0x2],0x40		; 0000F4CB  800E020040  '....@'
	mov	ax,0x38			; 0000F4D0  B83800  '.8.'
	mov	es,ax			; 0000F4D3  8EC0  '..'
	mov	cx,0x2000		; 0000F4D5  B90020  '.. '
	xor	si,si			; 0000F4D8  33F6  '3.'
	es	rep lodsd		; 0000F4DA  66F326AD  'f.&.'
	cld				; 0000F4DE  FC  '.'
	mov	cx,0x2000		; 0000F4DF  B90020  '.. '
	xor	di,di			; 0000F4E2  33FF  '3.'
	mov	eax,0xaaaaaaaa		; 0000F4E4  66B8AAAAAAAA  'f.....'
	rep	stosd			; 0000F4EA  66F3AB  'f..'
	mov	ebx,eax			; 0000F4ED  668BD8  'f..'
	mov	ax,0x38			; 0000F4F0  B83800  '.8.'
	mov	ds,ax			; 0000F4F3  8ED8  '..'
	xor	si,si			; 0000F4F5  33F6  '3.'
	mov	cx,0x2000		; 0000F4F7  B90020  '.. '
xf4fa:	lodsd				; 0000F4FA  66AD  'f.'
	cmp	eax,ebx			; 0000F4FC  663BC3  'f;.'
	jz	xf504			; 0000F4FF  7403  't.'
	jmp	xf599			; 0000F501  E99500  '...'

xf504:	dec	cx			; 0000F504  49  'I'
	jz	xf509			; 0000F505  7402
	jmp	short xf4fa		; 0000F507  EBF1  '..'

xf509:	mov	cx,0x2000		; 0000F509  B90020  '.. '
	xor	di,di			; 0000F50C  33FF  '3.'
	mov	eax,0x6db66db6		; 0000F50E  66B8B66DB66D  'f..m.m'
	rep	stosd			; 0000F514  66F3AB  'f..'
	mov	ebx,eax			; 0000F517  668BD8  'f..'
	mov	ax,0x38			; 0000F51A  B83800  '.8.'
	mov	ds,ax			; 0000F51D  8ED8  '..'
	xor	si,si			; 0000F51F  33F6  '3.'
	mov	cx,0x2000		; 0000F521  B90020  '.. '
xf524:	lodsd				; 0000F524  66AD  'f.'
	cmp	eax,ebx			; 0000F526  663BC3  'f;.'
	jnz	xf599			; 0000F529  756E  'un'
	dec	cx			; 0000F52B  49  'I'
	jz	xf530			; 0000F52C  7402
	jmp	short xf524		; 0000F52E  EBF4  '..'

xf530:	mov	cx,0x2000		; 0000F530  B90020  '.. '
	xor	di,di			; 0000F533  33FF  '3.'
	mov	eax,0x55555555		; 0000F535  66B855555555  'f.UUUU'
	rep	stosd			; 0000F53B  66F3AB  'f..'
	mov	ebx,eax			; 0000F53E  668BD8  'f..'
	mov	ax,0x38			; 0000F541  B83800  '.8.'
	mov	ds,ax			; 0000F544  8ED8  '..'
	xor	si,si			; 0000F546  33F6  '3.'
	mov	cx,0x2000		; 0000F548  B90020  '.. '
xf54b:	lodsd				; 0000F54B  66AD  'f.'
	cmp	eax,ebx			; 0000F54D  663BC3  'f;.'
	jnz	xf599			; 0000F550  7547  'uG'
	dec	cx			; 0000F552  49  'I'
	jz	xf557			; 0000F553  7402  't.'
	jmp	short xf54b		; 0000F555  EBF4  '..'

xf557:	mov	ax,0x30			; 0000F557  B83000  '.0.'
	mov	ds,ax			; 0000F55A  8ED8  '..'
	mov	bx,pattern1		; 0000F55C  BB78F3  '.x.'
xf55f:	mov	ax,0x4			; 0000F55F  B80400  '...'
	mov	dx,0x7c			; 0000F562  BA7C00  '.|.'
	xor	di,di			; 0000F565  33FF  '3.'
	mov	bp,0xf56d		; 0000F567  BD6DF5  '.m.'
	jmp	0xf68d			; 0000F56A  E92001  '. .'
	mov	dx,0x7c			; 0000F56D  BA7C00  '.|.'
	mov	bp,0xf576		; 0000F570  BD76F5  '.v.'
	jmp	xf68d			; 0000F573  E91701  '...'

	xor	di,di			; 0000F576  33FF  '3.'
	mov	dx,0x7c			; 0000F578  BA7C00  '.|.'
	mov	bp,0xf581		; 0000F57B  BD81F5  '...'
	jmp	xe80b			; 0000F57E  E98AF2  '...'

	jc	xf599			; 0000F581  7216  'r.'
	mov	dx,0x7c			; 0000F583  BA7C00  '.|.'
	mov	bp,0xf58c		; 0000F586  BD8CF5  '...'
	jmp	xe80b			; 0000F589  E97FF2  '...'

	jc	xf599			; 0000F58C  720B  'r.'
	cmp	bx,pattern2		; 0000F58E  81FBFCF3  '....'
	jz	xf5a0			; 0000F592  740C  't.'
	mov	bx,pattern2		; 0000F594  BBFCF3  '...'
	jmp	short xf55f		; 0000F597  EBC6  '..'

xf599:	mov	al,0x1			; 0000F599  B001  '..'
	out	0x80,al			; 0000F59B  E680  '..'
	jmp	xf63b			; 0000F59D  E99B00  '...'

xf5a0:	mov	ax,0x8			; 0000F5A0  B80800  '...'
	mov	es,ax			; 0000F5A3  8EC0  '..'
	and	byte [es:0x2],0xbf	; 0000F5A5  2680260200BF  '&.&...'
	mov	ax,0x40			; 0000F5AB  B84000  '.@.'
	mov	es,ax			; 0000F5AE  8EC0  '..'
	mov	ax,0x4			; 0000F5B0  B80400  '...'
	mov	bx,pattern1		; 0000F5B3  BB78F3  '.x.'
	mov	dx,0x7c			; 0000F5B6  BA7C00  '.|.'
	xor	di,di			; 0000F5B9  33FF  '3.'
	mov	bp,0xf5c1		; 0000F5BB  BDC1F5  '...'
	jmp	xf68d			; 0000F5BE  E9CC00  '...'

	mov	dx,0x7c			; 0000F5C1  BA7C00  '.|.'
	mov	bp,0xf5ca		; 0000F5C4  BDCAF5  '...'
	jmp	xf68d			; 0000F5C7  E9C300  '...'

	mov	ax,0x8			; 0000F5CA  B80800  '...'
	mov	cx,es			; 0000F5CD  8CC1  '..'
	mov	es,ax			; 0000F5CF  8EC0  '..'
	or	byte [es:0x2],0x40	; 0000F5D1  26800E020040  '&....@'
	mov	es,cx			; 0000F5D7  8EC1  '..'
	mov	ax,0x4			; 0000F5D9  B80400  '...'
	mov	dx,0x7c			; 0000F5DC  BA7C00  '.|.'
	xor	di,di			; 0000F5DF  33FF  '3.'
	mov	bp,0xf5e7		; 0000F5E1  BDE7F5  '...'
	jmp	xe80b			; 0000F5E4  E924F2  '.$.'

	jc	xf599			; 0000F5E7  72B0  'r.'
	mov	dx,0x7c			; 0000F5E9  BA7C00  '.|.'
	mov	bp,0xf5f2		; 0000F5EC  BDF2F5  '...'
	jmp	xe80b			; 0000F5EF  E919F2  '...'

	jc	xf599			; 0000F5F2  72A5  'r.'
	mov	ax,0x4			; 0000F5F4  B80400  '...'
	mov	bx,pattern2		; 0000F5F7  BBFCF3  '...'
	mov	dx,0x7c			; 0000F5FA  BA7C00  '.|.'
	xor	di,di			; 0000F5FD  33FF  '3.'
	mov	bp,0xf605		; 0000F5FF  BD05F6  '...'
	jmp	xf68d			; 0000F602  E98800  '...'

	mov	dx,0x7c			; 0000F605  BA7C00  '.|.'
	mov	bp,0xf60e		; 0000F608  BD0EF6  '...'
	jmp	xf68d			; 0000F60B  E97F00  '...'

	mov	ax,0x8			; 0000F60E  B80800  '...'
	mov	cx,es			; 0000F611  8CC1  '..'
	mov	es,ax			; 0000F613  8EC0  '..'
	and	byte [es:0x2],0xbf	; 0000F615  2680260200BF  '&.&...'
	mov	es,cx			; 0000F61B  8EC1  '..'
	mov	ax,0x4			; 0000F61D  B80400  '...'
	mov	dx,0x7c			; 0000F620  BA7C00  '.|.'
	xor	di,di			; 0000F623  33FF  '3.'
	mov	bp,0xf62b		; 0000F625  BD2BF6  '.+.'
	jmp	xe80b			; 0000F628  E9E0F1  '...'

	jc	xf638			; 0000F62B  720B  'r.'
	mov	dx,0x7c			; 0000F62D  BA7C00  '.|.'
	mov	bp,0xf636		; 0000F630  BD36F6  '.6.'
	jmp	xe80b			; 0000F633  E9D5F1  '...'

	jnc	xf63b			; 0000F636  7303  's.'
xf638:	jmp	xf599			; 0000F638  E95EFF  '.^.'

xf63b:	mov	ax,0x8			; 0000F63B  B80800  '...'
	mov	ds,ax			; 0000F63E  8ED8  '..'
	and	byte [0x2],0xbf		; 0000F640  80260200BF  '.&...'
	mov	byte [0x0],0xfc		; 0000F645  C6060000FC  '.....'
	in	al,0x80			; 0000F64A  E480  '..'
	cmp	al,0x0			; 0000F64C  3C00  '<.'
	jnz	xf655			; 0000F64E  7505  'u.'
	or	byte [0x2],0x40		; 0000F650  800E020040  '....@'

xf655:	mov	ax,0x10			; 0000F655  B81000  '...'
	mov	es,ax			; 0000F658  8EC0  '..'
	mov	ds,ax			; 0000F65A  8ED8  '..'
	mov	eax,cr0			; 0000F65C  0F2000
	and	eax,0x7ffffffe		; 0000F65F  6625FEFFFF7F  'f%....'
	mov	cr0,eax			; 0000F665  0F2200
	jmp	0xf000:0xf66d		; 0000F668  EA6DF600F0  '.m...'

	lidt	[cs:0x0784]		; 0000F66D  2E0F011E8407; load [idtr_lo] into IDTR
	in	al,0x80			; 0000F673  E480  '..'
	cmp	al,0x0			; 0000F675  3C00  '<.'
	jz	xf684			; 0000F677  740B  't.'
	xor	dx,dx			; 0000F679  33D2  '3.'
	mov	cx,err205_len		; 0000F67B  B91300  '...'
	mov	bx,err205		; 0000F67E  BBD0B6  '...'
	call	xc745			; 0000F681  E8C1D0  '...'

xf684:	mov	al,0x7e			; 0000F684  B07E  '.~'
	out	0x84,al			; 0000F686  E684  '..'
	xor	al,al			; 0000F688  32C0  '2.'
	out	0x80,al			; 0000F68A  E680  '..'
	ret				; 0000F68C  C3  '.'

;
;   Repeatedly copy 0x84 bytes from DS:BX to ES:DI for DX iterations, followed by AX more
;   bytes after DX is exhausted.  DI advances, BX does not.  Return to BP.
;
xf68d:	mov	si,bx			; 0000F68D  8BF3  '..'
	mov	cx,0x21			; 0000F68F  B92100  '.!.'
	rep	movsd			; 0000F692  66F3A5  'f..'
	dec	dx			; 0000F695  4A  'J'
	jnz	xf68d			; 0000F696  75F5  'u.'
	mov	si,bx			; 0000F698  8BF3  '..'
	mov	cx,ax			; 0000F69A  8BC8  '..'
	rep	movsd			; 0000F69C  66F3A5  'f..'
	jmp	bp			; 0000F69F  FFE5  '..'

xf6a1:	push	ds			; 0000F6A1  1E  '.'
	xor	ebp,ebp			; 0000F6A2  6633ED  'f3.'
xf6a5:	mov	eax,0x1			; 0000F6A5  66B801000000  'f.....'
	xor	eax,ebp			; 0000F6AB  6633C5  'f3.'
	mov	cx,0x4000		; 0000F6AE  B90040  '..@'
	xor	di,di			; 0000F6B1  33FF  '3.'
	sahf				; 0000F6B3  9E  '.'
xf6b4:	rcl	eax,1			; 0000F6B4  66D1D0  'f..'
	stosd				; 0000F6B7  66AB  'f.'
	loop	xf6b4			; 0000F6B9  E2F9  '..'
	in	al,0x61			; 0000F6BB  E461  '.a'
	or	al,0xc			; 0000F6BD  0C0C  '..'
	out	0x61,al			; 0000F6BF  E661  '.a'
	and	al,0xf3			; 0000F6C1  24F3  '$.'
	out	0x61,al			; 0000F6C3  E661  '.a'
	mov	ebx,0x1			; 0000F6C5  66BB01000000  'f.....'
	xor	ebx,ebp			; 0000F6CB  6633DD  'f3.'
	mov	eax,ebp			; 0000F6CE  668BC5  'f..'
	push	es			; 0000F6D1  06  '.'
	pop	ds			; 0000F6D2  1F  '.'
	xor	si,si			; 0000F6D3  33F6  '3.'
	mov	dh,ah			; 0000F6D5  8AF4  '..'
	mov	cx,0x4000		; 0000F6D7  B90040  '..@'
xf6da:	mov	ah,dh			; 0000F6DA  8AE6  '..'
	sahf				; 0000F6DC  9E  '.'
	rcl	ebx,1			; 0000F6DD  66D1D3  'f..'
	lahf				; 0000F6E0  9F  '.'
	mov	dh,ah			; 0000F6E1  8AF4  '..'
	lodsd				; 0000F6E3  66AD  'f.'
	xor	eax,ebx			; 0000F6E5  6633C3  'f3.'
	loope	xf6da			; 0000F6E8  E1F0  '..'
	jnz	xf700			; 0000F6EA  7514  'u.'
	in	al,0x61			; 0000F6EC  E461  '.a'
	test	al,0x40			; 0000F6EE  A840  '.@'
	mov	eax,0x0			; 0000F6F0  66B800000000  'f.....'
	jnz	xf700			; 0000F6F6  7508  'u.'
	dec	ebp			; 0000F6F8  664D  'fM'
	jpe	xf6a5			; 0000F6FA  7AA9  'z.'
	pop	ds			; 0000F6FC  1F  '.'
	xor	ax,ax			; 0000F6FD  33C0  '3.'
	ret				; 0000F6FF  C3  '.'

xf700:	mov	byte [si],0x0		; 0000F700  C60400  '...'
	push	ax			; 0000F703  50  'P'
	in	al,0x61			; 0000F704  E461  '.a'
	or	al,0xc			; 0000F706  0C0C  '..'
	out	0x61,al			; 0000F708  E661  '.a'
	and	al,0xf3			; 0000F70A  24F3  '$.'
	out	0x61,al			; 0000F70C  E661  '.a'
	pop	ax			; 0000F70E  58  'X'
	or	eax,eax			; 0000F70F  660BC0  'f..'
	jnz	xf72d			; 0000F712  7519  'u.'
	call	x86db			; 0000F714  E8C48F  '...'
	xchg	ah,al			; 0000F717  86E0  '..'
	and	ah,0xf			; 0000F719  80E40F  '...'
	xor	si,si			; 0000F71C  33F6  '3.'
	mov	cl,0x4			; 0000F71E  B104  '..'
xf720:	rcr	ah,1			; 0000F720  D0DC  '..'
	jnc	xf729			; 0000F722  7305  's.'
	inc	si			; 0000F724  46  'F'
	loop	xf720			; 0000F725  E2F9  '..'
	xor	si,si			; 0000F727  33F6  '3.'
xf729:	xor	al,al			; 0000F729  32C0  '2.'
	jmp	short xf73e		; 0000F72B  EB11  '..'

xf72d:	sub	si,byte +0x4		; 0000F72D  83EE04  '...'
	mov	cx,0x4			; 0000F730  B90400  '...'
xf733:	test	al,0xff			; 0000F733  A8FF  '..'
	jnz	xf73e			; 0000F735  7507  'u.'
	shr	eax,0x8			; 0000F737  66C1E808  'f...'
	inc	si			; 0000F73B  46  'F'
	loop	xf733			; 0000F73C  E2F5  '..'
xf73e:	mov	cl,al			; 0000F73E  8AC8  '..'
	mov	dx,si			; 0000F740  8BD6  '..'
	pop	ds			; 0000F742  1F  '.'
	stc				; 0000F743  F9  '.'
	ret				; 0000F744  C3  '.'

xf745:	pusha				; 0000F745  60  '`'
	push	ds			; 0000F746  1E  '.'
	push	gs			; 0000F747  0FA8  '..'
	push	fs			; 0000F749  0FA0  '..'
	mov	al,0x75			; 0000F74B  B075  '.u'
	out	0x84,al			; 0000F74D  E684  '..'
	mov	ax,0x40			; 0000F74F  B84000  '.@.'
	mov	ds,ax			; 0000F752  8ED8  '..'
	mov	[0x67],sp		; 0000F754  89266700  '.&g.'
	mov	[0x69],ss		; 0000F758  8C166900  '..i.'
	mov	cx,0x0			; 0000F75C  B90000  '...'
	mov	al,0x76			; 0000F75F  B076  '.v'
	out	0x84,al			; 0000F761  E684  '..'
	push	cx			; 0000F763  51  'Q'
	call	x80e2			; 0000F764  E87B89  '.{.'
	pop	cx			; 0000F767  59  'Y'
	jz	xf770			; 0000F768  7406  't.'
	or	cl,0x1			; 0000F76A  80C901  '...'
	jmp	xf800			; 0000F76D  E99000  '...'

xf770:	mov	al,0x77			; 0000F770  B077  '.w'
	out	0x84,al			; 0000F772  E684  '..'
	push	cx			; 0000F774  51  'Q'
	xor	bx,bx			; 0000F775  33DB  '3.'
	pop	cx			; 0000F777  59  'Y'
	or	bx,bx			; 0000F778  0BDB  '..'
	jz	xf782			; 0000F77A  7406  't.'
	or	cl,0x2			; 0000F77C  80C902  '...'
	jmp	short xf782		; 0000F77F  EB01  '..'

	nop				; 0000F781  90  '.'
xf782:	mov	al,cl			; 0000F782  8AC1  '..'
	out	0x80,al			; 0000F784  E680  '..'
	mov	ah,0x6			; 0000F786  B406  '..'
	or	cl,cl			; 0000F788  0AC9  0x0A,'.'
	jz	xf78e			; 0000F78A  7402  't.'
	mov	ah,0x7			; 0000F78C  B407  '..'
xf78e:	mov	al,0x78			; 0000F78E  B078  '.x'
	out	0x84,al			; 0000F790  E684  '..'
	push	ax			; 0000F792  50  'P'
	in	al,0x60			; 0000F793  E460  '.`'
	mov	al,0x20			; 0000F795  B020  '. '
	out	0x64,al			; 0000F797  E664  '.d'
	call	xec2e_wait_8042_ready	; 0000F799  E892F4  '...'
xf79c:	in	al,0x64			; 0000F79C  E464  '.d'
	test	al,0x1			; 0000F79E  A801  '..'
	jz	xf79c			; 0000F7A0  74FA  't.'
	in	al,0x60			; 0000F7A2  E460  '.`'
	mov	ah,al			; 0000F7A4  8AE0  '..'
	or	ah,0x4			; 0000F7A6  80CC04  '...'
	push	ax			; 0000F7A9  50  'P'
	call	xec2e_wait_8042_ready	; 0000F7AA  E881F4  '...'
	pop	ax			; 0000F7AD  58  'X'
	mov	al,0x60			; 0000F7AE  B060  '.`'
	out	0x64,al			; 0000F7B0  E664  '.d'
	push	ax			; 0000F7B2  50  'P'
	call	xec2e_wait_8042_ready	; 0000F7B3  E878F4  '.x.'
	pop	ax			; 0000F7B6  58  'X'
	mov	al,ah			; 0000F7B7  8AC4  '..'
	out	0x60,al			; 0000F7B9  E660  '.`'
	pop	ax			; 0000F7BB  58  'X'
	mov	al,0x8f			; 0000F7BC  B08F  '..'
	call	xb549			; 0000F7BE  E888BD  '...'
	call	xec2e_wait_8042_ready	; 0000F7C1  E86AF4  '.j.'
	mov	al,0xfe			; 0000F7C4  B0FE  '..'
	out	0x64,al			; 0000F7C6  E664  '.d'
xf7c8:	hlt				; 0000F7C8  F4  '.'
	jmp	short xf7c8		; 0000F7C9  EBFD  '..'

	mov	al,0x79			; 0000F7CB  B079  '.y'
	out	0x84,al			; 0000F7CD  E684  '..'
	clc				; 0000F7CF  F8  '.'
	jmp	short xf7d8		; 0000F7D0  EB06  '..'

	nop				; 0000F7D2  90  '.'
	mov	al,0x7a			; 0000F7D3  B07A  '.z'
	out	0x84,al			; 0000F7D5  E684  '..'
	stc				; 0000F7D7  F9  '.'
xf7d8:	mov	ax,0x40			; 0000F7D8  B84000  '.@.'
	mov	ds,ax			; 0000F7DB  8ED8  '..'
	mov	ss,[0x69]		; 0000F7DD  8E166900  '..i.'
	mov	sp,[0x67]		; 0000F7E1  8B266700  '.&g.'
	jc	xf7ea			; 0000F7E5  7203  'r.'
	jmp	short xf812		; 0000F7E7  EB29  '.)'

	nop				; 0000F7E9  90  '.'
xf7ea:	in	al,0x80			; 0000F7EA  E480  '..'
	mov	cl,al			; 0000F7EC  8AC8  '..'
	test	cl,0x2			; 0000F7EE  F6C102  '...'
	jz	xf800			; 0000F7F1  740D  't',0x0D
	mov	dx,0x0			; 0000F7F3  BA0000  '...'
	mov	bx,err102		; 0000F7F6  BB8CB6  '...'
	mov	cx,err102_len		; 0000F7F9  B91A00  '...'
	call	xc745			; 0000F7FC  E846CF  '.F.'
	hlt				; 0000F7FF  F4  '.'

xf800:	test	cl,0x1			; 0000F800  F6C101  '...'
	jz	xf812			; 0000F803  740D  't',0x0D
	mov	dx,0x0			; 0000F805  BA0000  '...'
	mov	bx,err102		; 0000F808  BB8CB6  '...'
	mov	cx,err102_len		; 0000F80B  B91A00  '...'
	call	xc745			; 0000F80E  E834CF  '.4.'
	hlt				; 0000F811  F4  '.'

xf812:	mov	al,0x7b			; 0000F812  B07B  '.{'
	out	0x84,al			; 0000F814  E684  '..'
	pop	fs			; 0000F816  0FA1  '..'
	pop	gs			; 0000F818  0FA9  '..'
	pop	ds			; 0000F81A  1F  '.'
	popa				; 0000F81B  61  'a'
	ret				; 0000F81C  C3  '.'

	mov	ax,0x0			; 0000F81D  B80000  '...'
	iret				; 0000F820  CF  '.'

	sbb	ax,0x30f8		; 0000F821  1DF830  '..0'
	add	[bx+si],al		; 0000F824  0000  '..'
	xchg	al,[bx+si]		; 0000F826  8600  '..'
	add	bh,bh			; 0000F828  00FF  '..'

	times	23 db 0xFF		; 0000F82A - 0000F840
	sti				; 0000F841  FB  '.'
	push	ds			; 0000F842  1E  '.'
	mov	ax,0x40			; 0000F843  B84000  '.@.'
	mov	ds,ax			; 0000F846  8ED8  '..'
	mov	ax,[0x13]		; 0000F848  A11300  '...'
	pop	ds			; 0000F84B  1F  '.'
	iret				; 0000F84C  CF  '.'

	call	x9e82			; 0000F84D  E832A6  '.2.'
	iret				; 0000F850  CF  '.'
	db	'********'

	cmp	ah,0x7f			; 0000F859  80FC7F  '...'
	jna	xf8aa			; 0000F85C  764C  'vL'
	cmp	ah,0xc0			; 0000F85E  80FCC0  '...'
	jz	xf87a			; 0000F861  7417  't.'
	cmp	ah,0x92			; 0000F863  80FC92  '...'
	jnc	xf8aa			; 0000F866  7342  'sB'
	push	di			; 0000F868  57  'W'
	mov	di,ax			; 0000F869  8BF8  '..'
xf86b:	and	di,0x7f00		; 0000F86B  81E7007F  '....'
	shr	di,0x7			; 0000F86F  C1EF07  '...'
	call	near [cs:di+0xf884]	; 0000F872  2EFF9584F8  '.....'
	jmp	short xf880		; 0000F877  EB07  '..'

	nop				; 0000F879  90  '.'
xf87a:	push	di			; 0000F87A  57  'W'
	mov	di,0x9200		; 0000F87B  BF0092  '...'
	jmp	short xf86b		; 0000F87E  EBEB  '..'

xf880:	pop	di			; 0000F880  5F  '_'
	retf	0x2			; 0000F881  CA0200  '...'

	ret	0xc4f8			; 0000F884  C2F8C4  '...'

	clc				; 0000F887  F8  '.'
	db	0xC6			; 0000F888  C6  '.'
	clc				; 0000F889  F8  '.'
	pop	cx			; 0000F88A  59  'Y'
	mov	ax,[0xa1d9]		; 0000F88B  A1D9A1  '...'
	enter	0x8ef8,0xa2		; 0000F88E  C8F88EA2  '....'
	shl	word [bp+si+0xa49d],cl	; 0000F892  D3A29DA4  '....'
	lodsb				; 0000F896  AC  '.'
	movsb				; 0000F897  A4  '.'
	mov	si,0xbef8		; 0000F898  BEF8BE  '...'
	clc				; 0000F89B  F8  '.'
	mov	si,0xbef8		; 0000F89C  BEF8BE  '...'
	clc				; 0000F89F  F8  '.'
	mov	si,0xbef8		; 0000F8A0  BEF8BE  '...'
	clc				; 0000F8A3  F8  '.'
	retf	0xccf8			; 0000F8A4  CAF8CC  '...'

	clc				; 0000F8A7  F8  '.'
	db	0x88			; 0000F8A8  88  '.'
	movsw				; 0000F8A9  A5  '.'
xf8aa:	cmp	ah,0x4f			; 0000F8AA  80FC4F  '..O'
	jnz	xf8b3			; 0000F8AD  7504  'u.'
	stc				; 0000F8AF  F9  '.'
	retf	0x2			; 0000F8B0  CA0200  '...'

xf8b3:	sti				; 0000F8B3  FB  '.'
	mov	ah,0x86			; 0000F8B4  B486  '..'
	stc				; 0000F8B6  F9  '.'
	retf	0x2			; 0000F8B7  CA0200  '...'

xf8ba:	sti				; 0000F8BA  FB  '.'
	xor	ah,ah			; 0000F8BB  32E4  '2.'
	ret				; 0000F8BD  C3  '.'

	pop	di			; 0000F8BE  5F  '_'
	pop	di			; 0000F8BF  5F  '_'
	jmp	short xf8aa		; 0000F8C0  EBE8  '..'

	jmp	short xf8ba		; 0000F8C2  EBF6  '..'

	jmp	short xf8ba		; 0000F8C4  EBF4  '..'

	jmp	short xf8ba		; 0000F8C6  EBF2  '..'

	jmp	short xf8ba		; 0000F8C8  EBF0  '..'

	jmp	short xf8ba		; 0000F8CA  EBEE  '..'

	pop	di			; 0000F8CC  5F  '_'
	pop	di			; 0000F8CD  5F  '_'
	xor	ah,ah			; 0000F8CE  32E4  '2.'
	iret				; 0000F8D0  CF  '.'

;
;   11 pairs of I/O ports/values for early I/O port (eg, PIC) initialization
;
xf8d1:	db	0xF1,0x00
	db	0x20,0x11
	db	0x21,0x08
	db	0x21,0x04
	db	0x21,0x01
	db	0x21,0xFF
	db	0xA0,0x11
	db	0xA1,0x70
	db	0xA1,0x02
	db	0xA1,0x01
	db	0xA1,0xFF

xf8e7:	dw	0xba95			; SHUTDOWN 0x00
	dw	0xba95			; SHUTDOWN 0x01
	dw	0xd9ca			; SHUTDOWN 0x02
	dw	0xd9d4			; SHUTDOWN 0x03
	dw	0xfa21			; SHUTDOWN 0x04
	dw	0xfa17			; SHUTDOWN 0x05
	dw	0xf7cb			; SHUTDOWN 0x06
	dw	0xf7d3			; SHUTDOWN 0x07
	dw	0xf7d3			; SHUTDOWN 0x08
;
;   The entry for 0x09 is empty because the ROM dispatches directly to xa43c,
;   bypassing I/O port (eg, PIC) re-initialization.
;
	dw	0x0000			; SHUTDOWN 0x09
;
;   The entry for 0x0a seems useless, because the ROM dispatches directly to xfa0a,
;   also bypassing I/O port (eg, PIC) re-initialization.
;
	dw	0xfa0a			; SHUTDOWN 0x0a
;
;   ROM dispatch addresses
;
xf8fd:	dw	0x0003,0xe000
xf901:	dw	0x0003,0xc800

reset:	mov	al,0x0			; 0000F905  B000  '..'
	out	0x84,al			; 0000F907  E684  '..'
	mov	al,0x0			; 0000F909  B000  '..'
	out	0x85,al			; 0000F90B  E685  '..'
	mov	ah,0x2			; 0000F90D  B402  '..'
	sahf				; 0000F90F  9E  '.'
	cli				; 0000F910  FA  '.'
	mov	ax,0xfff0		; 0000F911  B8F0FF  '...'
	lmsw	ax			; 0000F914  0F01F0  '...'
	mov	ax,0x40			; 0000F917  B84000  '.@.'
	mov	ds,ax			; 0000F91A  8ED8  '..'
	in	al,0x64			; 0000F91C  E464  '.d'
	test	al,0x4			; 0000F91E  A804  '..'
	jnz	xf984			; 0000F920  7562  'ub'
	mov	gs,dx			; 0000F922  8EEA  '..'	; GS PRESERVES CPU ID (DH) AND REVISION (DL)
	mov	al,0x1			; 0000F924  B001  '..'
	out	0x84,al			; 0000F926  E684  '..'
	mov	al,0xaa			; 0000F928  B0AA  '..'
	out	0x64,al			; 0000F92A  E664  '.d'
	mov	cx,0xffff		; 0000F92C  B9FFFF  '...'
xf92f:	in	al,0x64			; 0000F92F  E464  '.d'
	test	al,0x1			; 0000F931  A801  '..'
	jnz	xf93a			; 0000F933  7505  'u.'
	loop	xf92f			; 0000F935  E2F8  '..'
	jmp	short xf976		; 0000F937  EB3D  '.='
	nop				; 0000F939  90  '.'

xf93a:	mov	al,0x2			; 0000F93A  B002  '..'
	out	0x84,al			; 0000F93C  E684  '..'
	in	al,0x60			; 0000F93E  E460  '.`'
	mov	al,0x3			; 0000F940  B003  '..'
	out	0x84,al			; 0000F942  E684  '..'
	mov	al,0x4			; 0000F944  B004  '..'
	out	0x84,al			; 0000F946  E684  '..'
	mov	ax,0xe000		; 0000F948  B800E0  '...'
	mov	ds,ax			; 0000F94B  8ED8  '..'
	xor	bx,bx			; 0000F94D  33DB  '3.'
	cmp	word [bx],0x55aa	; 0000F94F  813FAA55  '.?.U'
	jnz	xf95d			; 0000F953  7508  'u.'
	mov	bp,0xf976		; 0000F955  BD76F9  '.v.'
	jmp	far [cs:0xf8fd]		; 0000F958  2EFF2EFDF8  '.....'

xf95d:	mov	al,0x5			; 0000F95D  B005  '..'
	out	0x84,al			; 0000F95F  E684  '..'
	mov	ax,0xc800		; 0000F961  B800C8  '...'
	mov	ds,ax			; 0000F964  8ED8  '..'
	xor	bx,bx			; 0000F966  33DB  '3.'
	cmp	word [bx],0x55aa	; 0000F968  813FAA55  '.?.U'
	jnz	xf976			; 0000F96C  7508  'u.'
	mov	bp,0xf976		; 0000F96E  BD76F9  '.v.'
	jmp	far [cs:0xf901]		; 0000F971  2EFF2E01F9  '.....'

xf976:	mov	al,0x6			; 0000F976  B006  '..'
	out	0x84,al			; 0000F978  E684  '..'
	mov	ax,0x40			; 0000F97A  B84000  '.@.'
	mov	ds,ax			; 0000F97D  8ED8  '..'
	mov	ax,0x0			; 0000F97F  B80000  '...'
	jmp	short xf992		; 0000F982  EB0E  '..'

xf984:	mov	al,0x7			; 0000F984  B007  '..'
	out	0x84,al			; 0000F986  E684  '..'
;
;   Request the CMOS SHUTDOWN byte at CMOS address 0x0F, and then zero it
;
	mov	al,0x8f			; 0000F988  B08F  '..'
	out	0x70,al			; 0000F98A  E670  '.p'
	jmp	$+2			; 0000F98C  EB00  '..'
	jmp	$+2			; 0000F98E  EB00  '..'
	in	al,0x71			; 0000F990  E471  '.q'
xf992:	mov	bx,ax			; 0000F992  8BD8  '..'
	mov	al,0x8f			; 0000F994  B08F  '..'
	out	0x70,al			; 0000F996  E670  '.p'
	jmp	$+2			; 0000F998  EB00  '..'
	jmp	$+2			; 0000F99A  EB00  '..'
	mov	al,0x0			; 0000F99C  B000  '..'
	out	0x71,al			; 0000F99E  E671  '.q'
;
;   Special CMOS SHUTDOWN dispatch for 0x09
;
	cmp	bl,0x9			; 0000F9A0  80FB09  '...'
	jnz	xf9a8			; 0000F9A3  7503  'u.'
	jmp	xa43c			; 0000F9A5  E994AA  '...'

xf9a8:	mov	al,0x8			; 0000F9A8  B008  '..'
	out	0x84,al			; 0000F9AA  E684  '..'
;
;   Special CMOS SHUTDOWN dispatch for 0x0a
;
	cmp	bl,0xa			; 0000F9AC  80FB0A  '..',0x0A
	jnz	xf9b4			; 0000F9AF  7503  'u.'
	jmp	short xfa0a		; 0000F9B1  EB57  '.W'

	nop				; 0000F9B3  90  '.'
xf9b4:	xor	al,al			; 0000F9B4  32C0  '2.'
	out	0xf1,al			; 0000F9B6  E6F1  '..'
	mov	ax,0xf000		; 0000F9B8  B800F0  '...'
	mov	ds,ax			; 0000F9BB  8ED8  '..'
	xor	dx,dx			; 0000F9BD  33D2  '3.'
	mov	si,xf8d1		; 0000F9BF  BED1F8  '...'
	mov	cx,0xb			; 0000F9C2  B90B00  '...'
xf9c5:	lodsb				; 0000F9C5  AC  '.'
	mov	dl,al			; 0000F9C6  8AD0  '..'
	lodsb				; 0000F9C8  AC  '.'
	out	dx,al			; 0000F9C9  EE  '.'
	loop	xf9c5			; 0000F9CA  E2F9  '..'
	mov	dx,0xa0			; 0000F9CC  BAA000  '...'
xf9cf:	mov	cx,0x8			; 0000F9CF  B90800  '...'
xf9d2:	mov	al,0xb			; 0000F9D2  B00B  '..'
	out	dx,al			; 0000F9D4  EE  '.'
	in	al,dx			; 0000F9D5  EC  '.'
	or	al,al			; 0000F9D6  0AC0  0x0A,'.'
	jz	xf9df			; 0000F9D8  7405
	mov	al,0x20			; 0000F9DA  B020  '. '
	out	dx,al			; 0000F9DC  EE  '.'
	loop	xf9d2			; 0000F9DD  E2F3  '..'
xf9df:	cmp	dx,byte +0x20		; 0000F9DF  83FA20  '.. '
	jz	xf9e9			; 0000F9E2  7405  't.'
	mov	dx,0x20			; 0000F9E4  BA2000  '. .'
	jmp	short xf9cf		; 0000F9E7  EBE6  '..'

xf9e9:	mov	al,0x0			; 0000F9E9  B000  '..'
	out	0x20,al			; 0000F9EB  E620  '. '
	out	0xa0,al			; 0000F9ED  E6A0  '..'
	mov	al,0x9			; 0000F9EF  B009  '..'
	out	0x84,al			; 0000F9F1  E684  '..'
;
;   Verify that the CMOS SHUTDOWN byte is <= 0x0B (and if not, set it to 0x00)
;
;   NOTE: This test permits 0x0B, but there is no entry for 0x0B in the table at xf8e7.
;
	cmp	bl,0xb			; 0000F9F3  80FB0B  '...'
	jna	xf9fa			; 0000F9F6  7602  'v.'
	mov	bl,0x0			; 0000F9F8  B300  '..'
;
;   Dispatch according to the CMOS SHUTDOWN byte
;
xf9fa:	xor	bh,bh			; 0000F9FA  32FF  '2.'
	shl	bl,1			; 0000F9FC  D0E3  '..'
	mov	si,[cs:bx+xf8e7]	; 0000F9FE  2E8BB7E7F8  '.....'
	mov	ax,0x40			; 0000FA03  B84000  '.@.'
	mov	ds,ax			; 0000FA06  8ED8  '..'
	jmp	si			; 0000FA08  FFE6  '..'

xfa0a:	mov	al,0xa			; 0000FA0A  B00A  '.',0x0A
	out	0x84,al			; 0000FA0C  E684  '..'
	mov	ax,0x40			; 0000FA0E  B84000  '.@.'
	mov	ds,ax			; 0000FA11  8ED8  '..'
	jmp	far [0x67]		; 0000FA13  FF2E6700  '..g.'

	mov	al,0xb			; 0000FA17  B00B  '..'
	out	0x84,al			; 0000FA19  E684  '..'
	mov	al,0x20			; 0000FA1B  B020  '. '
	out	0x20,al			; 0000FA1D  E620  '. '
	jmp	short xfa0a		; 0000FA1F  EBE9  '..'

	mov	al,0xc			; 0000FA21  B00C  '..'
	out	0x84,al			; 0000FA23  E684  '..'
	in	al,0x61			; 0000FA25  E461  '.a'
	and	al,0xf3			; 0000FA27  24F3  '$.'
	out	0x61,al			; 0000FA29  E661  '.a'
	mov	al,0xe			; 0000FA2B  B00E  '..'
	out	0x70,al			; 0000FA2D  E670  '.p'
;
;   Begin warm boot
;
	int	0x19			; 0000FA2F  CD19  '..'

	db	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF	; 0000FA31 ................
	db	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF	; 0000FA41 ................
	db	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF	; 0000FA51 ................
	db	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00	; 0000FA61 ................
	db	0x00,0x00,0x00,0x00,0x00,0x7E,0x81,0xA5,0x81,0xBD,0x99,0x81,0x7E,0x7E,0xFF,0xDB	; 0000FA71 .....~......~~..
	db	0xFF,0xC3,0xE7,0xFF,0x7E,0x6C,0xFE,0xFE,0xFE,0x7C,0x38,0x10,0x00,0x10,0x38,0x7C	; 0000FA81 ....~l...|8...8|
	db	0xFE,0x7C,0x38,0x10,0x00,0x38,0x7C,0x38,0xFE,0xFE,0x7C,0x38,0x7C,0x10,0x10,0x38	; 0000FA91 .|8..8|8..|8|..8
	db	0x7C,0xFE,0x7C,0x38,0x7C,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0xFF,0xFF,0xE7	; 0000FAA1 |.|8|...........
	db	0xC3,0xC3,0xE7,0xFF,0xFF,0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,0xFF,0xC3,0x99	; 0000FAB1 .......fBBf.....
	db	0xBD,0xBD,0x99,0xC3,0xFF,0x0F,0x07,0x0F,0x7D,0xCC,0xCC,0xCC,0x78,0x3C,0x66,0x66	; 0000FAC1 ........}...x.ff
	db	0x66,0x3C,0x18,0x7E,0x18,0x3F,0x33,0x3F,0x30,0x30,0x70,0xF0,0xE0,0x7F,0x63,0x7F	; 0000FAD1 f..~.?3?00p...c.
	db	0x63,0x63,0x67,0xE6,0xC0,0x99,0x5A,0x3C,0xE7,0xE7,0x3C,0x5A,0x99,0x80,0xE0,0xF8	; 0000FAE1 ccg...Z....Z....
	db	0xFE,0xF8,0xE0,0x80,0x00,0x02,0x0E,0x3E,0xFE,0x3E,0x0E,0x02,0x00,0x18,0x3C,0x7E	; 0000FAF1 ...............~
	db	0x18,0x18,0x7E,0x3C,0x18,0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,0x7F,0xDB,0xDB	; 0000FB01 ..~..fffff.f....
	db	0x7B,0x1B,0x1B,0x1B,0x00,0x3E,0x63,0x38,0x6C,0x6C,0x38,0xCC,0x78,0x00,0x00,0x00	; 0000FB11 {.....c8ll8.x...
	db	0x00,0x7E,0x7E,0x7E,0x00,0x18,0x3C,0x7E,0x18,0x7E,0x3C,0x18,0xFF,0x18,0x3C,0x7E	; 0000FB21 .~~~...~.~.....~
	db	0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00,0x18,0x0C	; 0000FB31 .........~......
	db	0xFE,0x0C,0x18,0x00,0x00,0x00,0x30,0x60,0xFE,0x60,0x30,0x00,0x00,0x00,0x00,0xC0	; 0000FB41 ......0`.`0.....
	db	0xC0,0xC0,0xFE,0x00,0x00,0x00,0x24,0x66,0xFF,0x66,0x24,0x00,0x00,0x00,0x18,0x3C	; 0000FB51 ......$f.f$.....
	db	0x7E,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x7E,0x3C,0x18,0x00,0x00,0x00,0x00,0x00	; 0000FB61 ~.......~.......
	db	0x00,0x00,0x00,0x00,0x00,0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,0x6C,0x6C,0x6C	; 0000FB71 .....0xx00.0.lll
	db	0x00,0x00,0x00,0x00,0x00,0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00,0x30,0x7C,0xC0	; 0000FB81 .....ll.l.ll.0|.
	db	0x78,0x0C,0xF8,0x30,0x00,0x00,0xC6,0xCC,0x18,0x30,0x66,0xC6,0x00,0x38,0x6C,0x38	; 0000FB91 x..0.....0f..8l8
	db	0x76,0xDC,0xCC,0x76,0x00,0x60,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x60	; 0000FBA1 v..v.``.......0`
	db	0x60,0x60,0x30,0x18,0x00,0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00,0x00,0x66,0x3C	; 0000FBB1 ``0..`0...0`..f.
	db	0xFF,0x3C,0x66,0x00,0x00,0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00,0x00,0x00,0x00	; 0000FBC1 ..f...00.00.....
	db	0x00,0x00,0x30,0x30,0x60,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00	; 0000FBD1 ..00`...........
	db	0x00,0x00,0x30,0x30,0x00,0x06,0x0C,0x18,0x30,0x60,0xC0,0x80,0x00,0x7C,0xC6,0xCE	; 0000FBE1 ..00....0`...|..
	db	0xDE,0xF6,0xE6,0x7C,0x00,0x30,0x70,0x30,0x30,0x30,0x30,0xFC,0x00,0x78,0xCC,0x0C	; 0000FBF1 ...|.0p0000..x..
	db	0x38,0x60,0xCC,0xFC,0x00,0x78,0xCC,0x0C,0x38,0x0C,0xCC,0x78,0x00,0x1C,0x3C,0x6C	; 0000FC01 8`...x..8..x...l
	db	0xCC,0xFE,0x0C,0x1E,0x00,0xFC,0xC0,0xF8,0x0C,0x0C,0xCC,0x78,0x00,0x38,0x60,0xC0	; 0000FC11 ...........x.8`.
	db	0xF8,0xCC,0xCC,0x78,0x00,0xFC,0xCC,0x0C,0x18,0x30,0x30,0x30,0x00,0x78,0xCC,0xCC	; 0000FC21 ...x.....000.x..
	db	0x78,0xCC,0xCC,0x78,0x00,0x78,0xCC,0xCC,0x7C,0x0C,0x18,0x70,0x00,0x00,0x30,0x30	; 0000FC31 x..x.x..|..p..00
	db	0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x60,0x18,0x30,0x60	; 0000FC41 ..00..00..00`.0`
	db	0xC0,0x60,0x30,0x18,0x00,0x00,0x00,0xFC,0x00,0x00,0xFC,0x00,0x00,0x60,0x30,0x18	; 0000FC51 .`0..........`0.
	db	0x0C,0x18,0x30,0x60,0x00,0x78,0xCC,0x0C,0x18,0x30,0x00,0x30,0x00,0x7C,0xC6,0xDE	; 0000FC61 ..0`.x...0.0.|..
	db	0xDE,0xDE,0xC0,0x78,0x00,0x30,0x78,0xCC,0xCC,0xFC,0xCC,0xCC,0x00,0xFC,0x66,0x66	; 0000FC71 ...x.0x.......ff
	db	0x7C,0x66,0x66,0xFC,0x00,0x3C,0x66,0xC0,0xC0,0xC0,0x66,0x3C,0x00,0xF8,0x6C,0x66	; 0000FC81 |ff...f...f...lf
	db	0x66,0x66,0x6C,0xF8,0x00,0xFE,0x62,0x68,0x78,0x68,0x62,0xFE,0x00,0xFE,0x62,0x68	; 0000FC91 ffl...bhxhb...bh
	db	0x78,0x68,0x60,0xF0,0x00,0x3C,0x66,0xC0,0xC0,0xCE,0x66,0x3E,0x00,0xCC,0xCC,0xCC	; 0000FCA1 xh`...f...f.....
	db	0xFC,0xCC,0xCC,0xCC,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,0x1E,0x0C,0x0C	; 0000FCB1 .....x00000x....
	db	0x0C,0xCC,0xCC,0x78,0x00,0xE6,0x66,0x6C,0x78,0x6C,0x66,0xE6,0x00,0xF0,0x60,0x60	; 0000FCC1 ...x..flxlf...``
	db	0x60,0x62,0x66,0xFE,0x00,0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,0xC6,0x00,0xC6,0xE6,0xF6	; 0000FCD1 `bf.............
	db	0xDE,0xCE,0xC6,0xC6,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0x6C,0x38,0x00,0xFC,0x66,0x66	; 0000FCE1 .....8l...l8..ff
	db	0x7C,0x60,0x60,0xF0,0x00,0x78,0xCC,0xCC,0xCC,0xDC,0x78,0x1C,0x00,0xFC,0x66,0x66	; 0000FCF1 |``..x....x...ff
	db	0x7C,0x6C,0x66,0xE6,0x00,0x78,0xCC,0xE0,0x70,0x1C,0xCC,0x78,0x00,0xFC,0xB4,0x30	; 0000FD01 |lf..x..p..x...0
	db	0x30,0x30,0x30,0x78,0x00,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xFC,0x00,0xCC,0xCC,0xCC	; 0000FD11 000x............
	db	0xCC,0xCC,0x78,0x30,0x00,0xC6,0xC6,0xC6,0xD6,0xFE,0xEE,0xC6,0x00,0xC6,0xC6,0x6C	; 0000FD21 ..x0...........l
	db	0x38,0x38,0x6C,0xC6,0x00,0xCC,0xCC,0xCC,0x78,0x30,0x30,0x78,0x00,0xFE,0xC6,0x8C	; 0000FD31 88l.....x00x....
	db	0x18,0x32,0x66,0xFE,0x00,0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00,0xC0,0x60,0x30	; 0000FD41 .2f..x`````x..`0
	db	0x18,0x0C,0x06,0x02,0x00,0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,0x10,0x38,0x6C	; 0000FD51 .....x.....x..8l
	db	0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x30,0x30,0x18	; 0000FD61 .............00.
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0C,0x7C,0xCC,0x76,0x00,0xE0,0x60,0x60	; 0000FD71 .......x.|.v..``
	db	0x7C,0x66,0x66,0xDC,0x00,0x00,0x00,0x78,0xCC,0xC0,0xCC,0x78,0x00,0x1C,0x0C,0x0C	; 0000FD81 |ff....x...x....
	db	0x7C,0xCC,0xCC,0x76,0x00,0x00,0x00,0x78,0xCC,0xFC,0xC0,0x78,0x00,0x38,0x6C,0x60	; 0000FD91 |..v...x...x.8l`
	db	0xF0,0x60,0x60,0xF0,0x00,0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0xF8,0xE0,0x60,0x6C	; 0000FDA1 .``....v..|...`l
	db	0x76,0x66,0x66,0xE6,0x00,0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,0x0C,0x00,0x0C	; 0000FDB1 vff..0.p000x....
	db	0x0C,0x0C,0xCC,0xCC,0x78,0xE0,0x60,0x66,0x6C,0x78,0x6C,0xE6,0x00,0x70,0x30,0x30	; 0000FDC1 ....x.`flxl..p00
	db	0x30,0x30,0x30,0x78,0x00,0x00,0x00,0xCC,0xFE,0xFE,0xD6,0xC6,0x00,0x00,0x00,0xF8	; 0000FDD1 000x............
	db	0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x00,0x78,0xCC,0xCC,0xCC,0x78,0x00,0x00,0x00,0xDC	; 0000FDE1 .......x...x....
	db	0x66,0x66,0x7C,0x60,0xF0,0x00,0x00,0x76,0xCC,0xCC,0x7C,0x0C,0x1E,0x00,0x00,0xDC	; 0000FDF1 ff|`...v..|.....
	db	0x76,0x66,0x60,0xF0,0x00,0x00,0x00,0x7C,0xC0,0x78,0x0C,0xF8,0x00,0x10,0x30,0x7C	; 0000FE01 vf`....|.x....0|
	db	0x30,0x30,0x34,0x18,0x00,0x00,0x00,0xCC,0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0xCC	; 0000FE11 004........v....
	db	0xCC,0xCC,0x78,0x30,0x00,0x00,0x00,0xC6,0xD6,0xFE,0xFE,0x6C,0x00,0x00,0x00,0xC6	; 0000FE21 ..x0.......l....
	db	0x6C,0x38,0x6C,0xC6,0x00,0x00,0x00,0xCC,0xCC,0xCC,0x7C,0x0C,0xF8,0x00,0x00,0xFC	; 0000FE31 l8l.......|.....
	db	0x98,0x30,0x64,0xFC,0x00,0x1C,0x30,0x30,0xE0,0x30,0x30,0x1C,0x00,0x18,0x18,0x18	; 0000FE41 .0d...00.00.....
	db	0x00,0x18,0x18,0x18,0x00,0xE0,0x30,0x30,0x1C,0x30,0x30,0xE0,0x00,0x76,0xDC,0x00	; 0000FE51 ......00.00..v..
	db	0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0x6C,0xC6,0xC6,0xFE,0x00              	; 0000FE61 .......8l.......

	sti				; 0000FE6E  FB
	push	bx			; 0000FE6F  53
	mov	bl,ah			; 0000FE70  8ADC
	xor	bh,bh			; 0000FE72  32FF
	cmp	bx,0x7			; 0000FE74  81FB0700
	ja	xfe81			; 0000FE78  7707
	shl	bx,1			; 0000FE7A  D1E3
	jmp	near [cs:bx+0xfe85]	; 0000FE7C  2EFFA785FE
xfe81:	xor	ah,ah			; 0000FE81  32E4
	pop	bx			; 0000FE83  5B
	iret				; 0000FE84  CF

	db	0xBD,0x9C,0xD9,0x9C,0xF4,0x9C,0x1D,0x9D,0x50,0x9D,0x72,0x9D,0xAA,0x9D,0xF1,0x9D,0xFF ; 0000FE85-0000FE95

xfe96:	and	byte [MOTOR_STATUS],0xf0; 0000FE96  80263F00F0

xfe9b:	int	0x1c			; 0000FE9B  CD1C  '..'
	mov	al,0x20			; 0000FE9D  B020  '. '
	out	0x20,al			; 0000FE9F  E620  '. '
	pop	dx			; 0000FEA1  5A  'Z'
	pop	ax			; 0000FEA2  58  'X'
	pop	ds			; 0000FEA3  1F  '.'
	iret				; 0000FEA4  CF  '.'

	push	ds			; 0000FEA5  1E  '.'
	push	ax			; 0000FEA6  50  'P'
	push	dx			; 0000FEA7  52  'R'
	mov	ax,0x40			; 0000FEA8  B84000  '.@.'
	mov	ds,ax			; 0000FEAB  8ED8  '..'
	inc	word [0x6c]		; 0000FEAD  FF066C00  '..l.'
	jnz	xfeb7			; 0000FEB1  7504  'u.'
	inc	word [0x6e]		; 0000FEB3  FF066E00  '..n.'
xfeb7:	cmp	word [0x6e],byte +0x18	; 0000FEB7  833E6E0018  '.>n..'
	jnz	xfed1			; 0000FEBC  7513  'u.'
	mov	ax,0xb0			; 0000FEBE  B8B000  '...'
	sub	ax,[0x6c]		; 0000FEC1  2B066C00  '+.l.'
	jnz	xfed1			; 0000FEC5  750A  'u',0x0A
	mov	[0x6c],ax		; 0000FEC7  A36C00  '.l.'
	mov	[0x6e],ax		; 0000FECA  A36E00  '.n.'
	inc	ax			; 0000FECD  40  '@'
	mov	[0x70],al		; 0000FECE  A27000  '.p.'
xfed1:	mov	al,[MOTOR_COUNT]	; 0000FED1  A04000  '.@.'
	cmp	al,0xff			; 0000FED4  3CFF  '<.'
	jnz	xfef7			; 0000FED6  751F  'u.'
	test	byte [MOTOR_STATUS],0x7	; 0000FED8  F6063F0007  '..?..'
	jz	xfef7			; 0000FEDD  7418  't.'
	in	al,0x86			; 0000FEDF  E486  '..'
	test	al,0x80			; 0000FEE1  A880  '..'
	jz	xfef7			; 0000FEE3  7412  't.'
	test	al,0x40			; 0000FEE5  A840  '.@'
	jz	xfef7			; 0000FEE7  740E  't.'
	and	al,0x3f			; 0000FEE9  243F  '$?'
	out	0x86,al			; 0000FEEB  E686  '..'
	mov	al,0x92			; 0000FEED  B092  '..'
	out	0x4b,al			; 0000FEEF  E64B  '.K'
	mov	al,[cs:0x67dd]		; 0000FEF1  2EA0DD67  '...g'
	out	0x4a,al			; 0000FEF5  E64A  '.J'
xfef7:	dec	byte [MOTOR_COUNT]	; 0000FEF7  FE0E4000
	jnz	xfe9b			; 0000FEFB  759E
	mov	al,0xc			; 0000FEFD  B00C	; CLEAR ALL DRIVE SELECT AND MOTOR BITS (0x0C IS JUST THE ENABLE AND INT_ENABLE BITS)
	mov	dx,0x3f2		; 0000FEFF  BAF203
	out	dx,al			; 0000FF02  EE
	test	byte [MOTOR_STATUS],0x7	; 0000FF03  F6063F0007
	jz	xfe96			; 0000FF08  748C
	in	al,0x86			; 0000FF0A  E486	; (COMPAQ DESKPRO TECHREF REFERS TO PORT 0x86 AS "DMA Page Register Reserved")
	test	al,0x80			; 0000FF0C  A880	; (TYPICALLY CLEAR)
	jnz	xfe96			; 0000FF0E  7586
	test	al,0x40			; 0000FF10  A840	; (TYPICALLY SET)
	jnz	xfe96			; 0000FF12  7582	; GO CLEAR ALL MOTOR STATUS BITS
	or	al,0xc0			; 0000FF14  0CC0
	out	0x86,al			; 0000FF16  E686
	mov	al,0x92			; 0000FF18  B092
	out	0x4b,al			; 0000FF1A  E64B
	jmp	xfe96			; 0000FF1C  E977FF

	times	4 db 0xFF		; 0000FF1F - 0000FF22

	jmp	xe900			; 0000FF23  E9DAE9  '...'

	times	44 db 0xFF		; 0000FF26 - 0000FF51

	dec	di			; 0000FF52  FFCF  '..'
	pusha				; 0000FF54  60  '`'
	push	ds			; 0000FF55  1E  '.'
	xor	dx,dx			; 0000FF56  33D2  '3.'
	mov	ah,0x2			; 0000FF58  B402  '..'
	int	0x17			; 0000FF5A  CD17  '..'
	test	ah,0x80			; 0000FF5C  F6C480  '...'
	jz	xffb3			; 0000FF5F  7452  'tR'
	mov	bx,0x40			; 0000FF61  BB4000  '.@.'
	mov	ds,bx			; 0000FF64  8EDB  '..'
	mov	al,0x1			; 0000FF66  B001  '..'
	xchg	al,[0x100]		; 0000FF68  86060001  '....'
	cmp	al,0x1			; 0000FF6C  3C01  '<.'
	jz	xffb3			; 0000FF6E  7443  'tC'
	sti				; 0000FF70  FB  '.'
	call	x8d6f			; 0000FF71  E8FB8D  '...'
	mov	ah,0xf			; 0000FF74  B40F  '..'
	int	0x10			; 0000FF76  CD10  '..'
	mov	ch,ah			; 0000FF78  8AEC  '..'
	push	cx			; 0000FF7A  51  'Q'
	mov	ah,0x3			; 0000FF7B  B403  '..'
	int	0x10			; 0000FF7D  CD10  '..'
	pop	cx			; 0000FF7F  59  'Y'
	push	dx			; 0000FF80  52  'R'
	xor	dx,dx			; 0000FF81  33D2  '3.'
xff83:	mov	ah,0x2			; 0000FF83  B402  '..'
	int	0x10			; 0000FF85  CD10  '..'
	mov	ah,0x8			; 0000FF87  B408  '..'
	int	0x10			; 0000FF89  CD10  '..'
	call	x8d78			; 0000FF8B  E8EA8D  '...'
	jc	xffa7			; 0000FF8E  7217  'r.'
	inc	dl			; 0000FF90  FEC2  '..'
	cmp	dl,ch			; 0000FF92  3AD5  ':.'
	jc	xff83			; 0000FF94  72ED  'r.'
	call	x8d6f			; 0000FF96  E8D68D  '...'
	jc	xffa7			; 0000FF99  720C  'r.'
	xor	dl,dl			; 0000FF9B  32D2  '2.'
	inc	dh			; 0000FF9D  FEC6  '..'
	cmp	dh,0x19			; 0000FF9F  80FE19  '...'
	jc	xff83			; 0000FFA2  72DF  'r.'
	call	x8d6f			; 0000FFA4  E8C88D  '...'
xffa7:	sbb	cl,cl			; 0000FFA7  1AC9  '..'
	pop	dx			; 0000FFA9  5A  'Z'
	mov	ah,0x2			; 0000FFAA  B402  '..'
	int	0x10			; 0000FFAC  CD10  '..'
	cli				; 0000FFAE  FA  '.'
	mov	[0x100],cl		; 0000FFAF  880E0001  '....'
xffb3:	pop	ds			; 0000FFB3  1F  '.'
	popa				; 0000FFB4  61  'a'
	iret				; 0000FFB5  CF  '.'

	dw	0xFFFF			; 0000FFB6  FFFF
	db	0x0000			; 0000FFB8  0000
	dw	0x0000			; 0000FFBA  0000
	dw	0x0000			; 0000FFBC  0000
	dw	0x0003			; 0000FFBE  0300 (replaced during ROM relocation with 0x03nn, where nn is the CPU revision identifier)

	times	29 db 0xFF		; 0000FFC0 - 0000FFDC

	jmp	x9f17			; 0000FFDD  E9379F

;
;   Offset for storing built-in memory table
;
;   (Refer to "Compaq Built-in Memory" description at the top of this file)
;
bim_table_offset:
	dw	0x7FB6			; 0000FFE0  B67F

;
;   Offset for storing CPU identifier (low byte) and revision number (high byte)
;
cpu_idrev_offset:
	dw	0x7FBE			; 0000FFE2  BE7F

	db	'G'			; 0000FFE4  47		; Product Family Code
	db	'4'			; 0000FFE5  34		; Point-Release Code
	db	'J '			; 0000FFE6  4A20	; Revision Code
	db	'03'			; 0000FFE8  3033	; BIOS Type Code
	db	'COMPAQ'		; 0000FFEA  434F4D504151; Machine ID

	jmp	0xf000:reset		; 0000FFF0  EA05F900F0

	db	0x20			; 0000FFF5  20
	db	'01/28/88'		; 0000FFF6  30312F32382F3838	; BIOS Revision Date
	db	0xFC			; 0000FFFE  FC		; Machine Type Code
	db	0x98			; 0000FFFF  98		; Checksum
