PAGE  59,132

;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;ÛÛ								         ÛÛ
;ÛÛ			        AHADISK				         ÛÛ
;ÛÛ								         ÛÛ
;ÛÛ      Created:   29-Feb-92					         ÛÛ
;ÛÛ      Passes:    5	       Analysis Options on: none	         ÛÛ
;ÛÛ								         ÛÛ
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ

data_1e		equ	0
data_2e		equ	1
data_3e		equ	3
data_4e		equ	94h
keybd_flags_1_	equ	417h
dsk_recal_stat_	equ	43Eh
dsk_motor_stat_	equ	43Fh
dsk_motor_tmr_	equ	440h
video_mode_	equ	449h
video_port_	equ	463h
timer_low_	equ	46Ch
hdsk0_media_st_	equ	490h
data_16e	equ	1000h			;*
data_17e	equ	0			;*
data_18e	equ	3			;*
data_234e	equ	7C3Eh			;*

;--------------------------------------------------------------	seg_a  ----

seg_a		segment	byte public
		assume cs:seg_a , ds:seg_a


;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
;
;			Program Entry Point
;
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ


ahadisk		proc	far

start:
		jmp	loc_262
data_24		db	0, 0
data_25		dw	0
data_26		dw	0
data_27		dw	0
data_28		db	0
data_29		db	0
data_30		db	0
		db	0
data_31		dw	1
data_32		db	19h
		db	0
data_33		db	' ', 0
		db	27h, 0
		db	'.', 0
		db	' 360 K', 0
		db	' 1.2 M', 0
		db	' 720 K', 0
		db	'1.44 M', 0
data_37		db	0FFh
		db	 11h,0FFh
data_38		db	1Dh
		db	0FFh, 11h,0FFh, 23h
data_39		db	1
		db	0, 2, 0
data_40		db	23h
		db	 00h, 3Bh, 00h, 23h, 00h, 47h
		db	 00h
data_41		db	2
		db	1, 2
data_42		db	1
data_43		db	0DFh
		db	0DFh,0DFh,0AFh
data_44		db	9
		db	 0Fh, 09h, 12h
data_45		db	2Ah
		db	 1Bh, 2Ah, 1Ah
data_46		db	50h
		db	 54h, 50h, 6Ch
data_47		db	0FDh
		db	0F9h,0F9h,0F0h
data_48		db	70h
		db	0
		db	0E0h, 00h

locloop_2:
		jo	loc_3			; Jump if overflow=1
loc_3:
		loopnz	$+2			; Loop if zf=0, cx>0

		rol	byte ptr [bp+si],1	; Rotate
		db	 60h, 09h,0A0h, 05h, 40h, 0Bh
data_50		db	2
		db	0, 7, 0, 3, 0, 9
		db	0
data_51		db	62h
		db	 01h, 43h, 09h,0C9h, 02h, 1Fh
		db	 0Bh
data_52		db	6
		db	1, 4, 3
data_53		db	0
data_54		dw	0
data_55		db	0
data_56		db	0
data_57		db	2Ah
data_58		db	50h
data_59		db	0
data_60		db	0, 0
data_61		dw	0
data_62		db	0
data_63		db	0
data_64		db	0
data_65		db	0
data_66		db	0
data_67		dw	0
data_68		dw	0
data_69		db	0
data_70		db	0
data_71		db	0
data_72		db	0
data_73		db	0
data_74		db	0
data_75		db	0
data_76		db	0
data_77		db	0
data_78		db	0
data_79		db	0
data_80		db	0
data_81		dw	130Dh
data_82		dw	0
data_84		dw	0
data_85		dw	0
data_86		dw	0
data_87		dw	0
data_88		dw	0
data_89		dw	0
data_90		dw	0
data_91		dw	0
data_92		dw	0
data_93		dw	0
data_94		db	0
data_95		db	0
data_96		db	0Bh
data_97		db	0
data_98		db	0, 0
data_99		db	0
data_100	dw	0
data_101	db	0
data_102	db	0
data_103	db	0
data_104	db	0
data_105	dw	0
data_106	dw	0
data_107	db	0
data_108	db	0
data_109	db	0
data_110	db	6
data_111	db	0A0h
data_112	db	0
data_113	db	0
		db	11 dup (0)
data_115	db	0
		db	9 dup (0)

ahadisk		endp

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_2		proc	near
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+di],al
		add	[bx],cl
		add	[bx+di],al
		add	[bp+si],cl
		add	[si+0],ah
;*		call	sub_5			;*
		db	0E8h, 03h, 10h
		daa				; Decimal adjust
		mov	al,byte ptr ds:[4086h]
		inc	dx
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		ja	$+7			; Jump if above
		add	[bx+si],al
		add	[bx+si],al
		pop	dx
		xor	ax,355Ah
		pop	dx
		xor	ax,577h
		add	[bx+si],al

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_3:
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		pop	dx
		xor	ax,0
		add	[bx+si],al
		add	[bx+si],al
		pop	dx
		xor	ax,0
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		pop	dx
		xor	ax,577h
		pop	dx
		xor	ax,0
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	bh,dh
;*		pop	cs			; Dangerous 8088 only
		db	0Fh
;*		jo	loc_4			;*Jump if overflow=1
		db	 70h,0FFh
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[di+6Eh],al
		jz	loc_5			; Jump if zero
		jc	$+22h			; Jump if carry Set
		inc	sp
		jc	$+6Bh			; Jump if carry Set
		jbe	loc_6			; Jump if below or =
		and	[si+6Fh],dl
		and	[bp+si+65h],al
		and	[bp+6Fh],al
		jc	$+6Fh			; Jump if carry Set
		db	 61h, 74h, 20h, 3Fh, 20h, 5Bh
		db	'A'
		db	 5Dh, 00h
		db	'Enter Drive Type ? (0 - 360K, 1 '
		db	'- 1.2M)  [0]'
		db	0
		db	'Enter Drive Type ? (0 - 720K,'
loc_5:
		and	[bx+di],dh
		and	[di],ch
		and	[bx+di],dh
loc_6:
		db	'.44M) [0]'
		db	0
		db	'Number Of Diskette To Be Format '
		db	'(1-11) ['
data_182	dw	3131h
		db	 5Dh, 20h, 3Fh, 20h, 00h
		db	'Insert New Diskette Into Drive '
data_183	db	41h
		db	0
		db	'Press ENTER To Start Format Or E'
		db	'SC To Abort'
		db	0
		db	'Can', 27h, 't Release From Memor'
		db	'y, Interrupt Vector Address Been'
		db	' Changed'
		db	0
		db	'Press Any Key To Return To Main '
		db	'Menu'
		db	0
		db	'No Format Report !'
		db	 00h, 00h, 00h, 00h, 00h, 2Dh
		db	 00h, 00h, 00h, 00h, 00h
		db	 43h, 70h
data_184	db	'HpApNpGpEpEpRpRpOpRp!pFpIpNpIpSp'
		db	'Hp p p', 0
		db	'p', 0
		db	'p p pDisk Not Ready !', 0
		db	'Disk Write Protected !', 0
		db	'Seek Error !', 0
		db	'Abort or Retry ?', 0
		db	'Track 0 Bad, Diskette Unusable !'
		db	0
		db	'Program Interrupted !', 0
		db	'Ready Printer, Press ENTER When '
		db	'Ready !', 0
		db	'Printing ....', 0
		db	'I/O Error !', 0
		db	'Printer Not Ready !', 0
		db	0C9h, 01h, 4Eh,0CDh,0BBh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0BAh, 01h
		db	 13h, 20h,0ADh
		db	'aHa/nBa!Mem Resident Format '
		db	1, 3
		db	' Version 6.9'
		db	 01h, 10h, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0CCh, 01h
		db	 4Eh,0CDh,0B9h,0BAh, 01h, 4Eh
		db	 20h
		db	0BAh,0BAh, 01h, 4Eh, 20h,0BAh
		db	0BAh, 01h, 4Eh, 20h,0BAh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
		db	 20h,0BAh,0BAh, 01h, 4Eh, 20h
		db	0BAh,0BAh, 01h, 4Eh, 20h,0BAh
		db	0BAh, 01h, 4Eh, 20h,0BAh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
		db	 20h,0BAh,0BAh, 01h, 4Eh, 20h
		db	0BAh
		db	0BAh, 01h, 4Eh, 20h,0BAh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0BAh, 01h
		db	4Eh
		db	 20h,0BAh,0BAh, 01h, 4Eh, 20h
		db	0BAh,0BAh, 01h, 4Eh, 20h,0BAh
		db	0BAh, 01h
		db	 4Eh, 20h
		db	0BAh,0C8h, 01h, 4Eh,0CDh,0BCh
		db	 01h, 87h,0D0h, 1Fh,0C9h, 01h
		db	 4Eh,0CDh,0BBh,0BAh, 01h, 4Eh
		db	 20h,0BAh,0BAh, 01h, 13h, 20h
		db	0ADh
		db	'aHa/nBa!Mem Resident Format '
		db	1, 3
		db	' Version 6.9'
		db	 01h, 10h, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0CCh, 01h
		db	 4Eh,0CDh,0B9h,0BAh, 01h, 1Ch
		db	 20h
		db	0DAh, 01h, 15h,0C4h,0BFh, 01h
		db	 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
		db	 20h,0B3h
		db	' Print Out '
		db	0ADh
		db	'aHa/nBa! '
		db	0B3h, 01h, 1Bh, 20h,0BAh,0BAh
		db	 01h, 1Ch, 20h,0C0h, 01h, 15h
		db	0C4h,0D9h, 01h, 1Bh, 20h,0BAh
		db	0BAh, 01h, 1Ch, 20h,0DAh, 01h
		db	 15h,0C4h
		db	0BFh, 01h, 1Bh, 20h,0BAh,0BAh
		db	 01h, 1Ch, 20h,0B3h, 01h, 04h
		db	' Start format'
		db	 01h, 05h, 20h,0B3h, 01h, 1Bh
		db	 20h,0BAh,0BAh, 01h, 1Ch, 20h
		db	0C0h, 01h, 15h,0C4h,0D9h, 01h
		db	 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
		db	 20h,0DAh, 01h, 15h,0C4h,0BFh
		db	 01h, 1Bh, 20h,0BAh,0BAh, 01h
		db	 1Ch, 20h,0B3h, 01h, 04h
		db	' Format report'
		db	 01h, 04h, 20h,0B3h, 01h, 1Bh
		db	 20h,0BAh,0BAh, 01h, 1Ch, 20h
		db	0C0h, 01h, 15h,0C4h,0D9h, 01h
		db	 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
		db	 20h,0DAh, 01h, 15h,0C4h,0BFh
		db	 01h, 1Bh, 20h,0BAh,0BAh, 01h
		db	 1Ch, 20h,0B3h
		db	'  Track display o'
data_187	dw	206Eh
		db	 20h, 20h,0B3h, 01h, 1Bh, 20h
		db	0BAh,0BAh, 01h, 1Ch, 20h,0C0h
		db	 01h, 15h,0C4h,0D9h, 01h, 1Bh
		db	 20h,0BAh,0BAh, 01h, 1Ch, 20h
		db	0DAh, 01h, 15h,0C4h,0BFh, 01h
		db	 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
		db	 20h,0B3h
		db	' Release from memory '
		db	0B3h, 01h, 1Bh, 20h,0BAh,0BAh
		db	 01h, 1Ch, 20h,0C0h, 01h, 15h
		db	0C4h,0D9h, 01h, 1Bh, 20h,0BAh
		db	0BAh, 01h, 1Ch, 20h,0DAh, 01h
		db	 15h,0C4h,0BFh, 01h, 1Bh, 20h
		db	0BAh,0BAh, 01h, 1Ch, 20h,0B3h
		db	 01h, 09h, 20h, 45h, 78h, 69h
		db	 74h, 01h, 08h, 20h,0B3h, 01h
		db	 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
		db	 20h,0C0h, 01h, 15h,0C4h,0D9h
		db	 01h, 1Bh, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0C8h, 01h, 4Eh
		db	0CDh,0BCh, 01h, 87h,0D0h, 1Fh
		db	0C9h, 01h, 4Eh,0CDh,0BBh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0BAh, 01h
		db	 13h, 20h,0ADh
		db	'aHa/nBa!Mem Resident Format '
		db	1, 3
		db	' Version 6.9'
		db	 01h, 10h, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0CCh, 01h
		db	4Eh
		db	0CDh,0B9h,0BAh, 01h, 4Eh, 20h
		db	0BAh,0BAh, 01h, 4Eh, 20h,0BAh
		db	0BAh, 01h, 4Eh, 20h,0BAh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
		db	 20h,0BAh,0BAh, 01h, 4Eh, 20h
		db	0BAh,0BAh, 01h, 4Eh, 20h,0BAh
		db	0BAh, 01h, 4Eh, 20h,0BAh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
		db	 20h,0BAh,0BAh, 01h, 4Eh, 20h
		db	0BAh
		db	0BAh, 01h, 4Eh, 20h,0BAh,0BAh
		db	 01h, 4Eh, 20h,0BAh,0CCh, 01h
		db	 17h
		db	0CDh,0D1h, 01h, 0Fh,0CDh,0D1h
		db	 01h, 10h,0CDh,0D1h, 01h, 15h
		db	0CDh,0B9h,0BAh, 01h
		db	3
		db	' Drive To Be Format  '
		db	0B3h, 01h, 03h
		db	' Drive Type  '
		db	0B3h
		db	'  Diskette No.  '
		db	0B3h
		db	'  Total Diskette(s)  '
		db	0BAh,0C7h, 01h, 17h,0C4h,0C5h
		db	 01h, 0Fh,0C4h,0C5h, 01h, 10h
		db	0C4h,0C5h, 01h, 15h,0C4h,0B6h
		db	0BAh, 01h, 0Bh
		db	20h
data_188	db	41h
		db	 01h, 0Bh, 20h,0B3h, 01h, 05h
		db	 20h
data_189	db	31h
		db	 2Eh, 34h, 34h, 20h, 4Dh, 01h
		db	 04h, 20h,0B3h, 01h, 06h
		db	20h
data_190	dw	3120h
		db	 01h, 08h, 20h,0B3h, 01h
		db	 09h, 20h
data_191	dw	3131h
		db	1
		db	 0Ah, 20h,0BAh,0C8h, 01h
		db	 17h,0CDh,0CFh, 01h, 0Fh,0CDh
		db	0CFh, 01h, 10h,0CDh,0CFh, 01h
		db	 15h,0CDh,0BCh, 01h, 87h,0D0h
		db	 1Fh,0C9h, 01h, 4Eh,0CDh,0BBh
		db	0BAh, 01h, 4Eh, 20h,0BAh,0BAh
		db	 01h, 13h
		db	' Background Diskette Formatter S'
		db	'tatus Report'
		db	 01h, 10h, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
		db	 20h,0BAh,0CCh, 01h, 0Ch,0CDh
		db	0D1h
		db	 01h, 15h,0CDh,0D1h, 01h, 11h
		db	0CDh
		db	0D1h, 01h, 19h,0CDh,0B9h,0BAh
		db	'  Diskette  '
		db	0B3h, 01h, 07h, 20h, 56h, 6Fh
		db	 6Ch, 75h, 6Dh, 65h, 01h, 08h
		db	 20h,0B3h, 01h, 05h, 20h, 4Eh
		db	 6Fh, 2Eh, 20h, 4Fh, 66h, 01h
		db	 06h, 20h,0B3h, 01h, 04h
		db	' Total Disk Space'
		db	 01h, 05h, 20h,0BAh,0BAh, 01h
		db	 05h, 20h, 4Eh, 6Fh, 2Eh, 01h
		db	 04h, 20h,0B3h, 01h, 04h
		db	' Serial Number'
		db	 01h, 04h, 20h,0B3h
		db	'  Bad Cluster(s) '
		db	0B3h, 01h
		db	8, ' In Bytes'
		db	 01h, 09h, 20h,0BAh,0C7h, 01h
		db	 0Ch,0C4h,0C5h, 01h, 15h,0C4h
		db	0C5h, 01h, 11h,0C4h,0C5h, 01h
		db	 19h,0C4h,0B6h
		db	0BAh, 01h, 0Ch, 20h
		db	0B3h, 01h, 15h
		db	 20h,0B3h, 01h, 11h, 20h,0B3h
		db	 01h, 19h, 20h,0BAh,0BAh, 01h
		db	 0Ch, 20h,0B3h, 01h, 15h, 20h
		db	0B3h, 01h, 11h, 20h,0B3h, 01h
		db	 19h, 20h,0BAh,0BAh, 01h, 0Ch
		db	 20h,0B3h, 01h, 15h, 20h,0B3h
		db	 01h, 11h, 20h,0B3h, 01h, 19h
		db	 20h,0BAh,0BAh, 01h, 0Ch, 20h
		db	0B3h, 01h, 15h, 20h,0B3h, 01h
		db	 11h
		db	20h
		db	0B3h, 01h, 19h, 20h,0BAh,0BAh
		db	 01h, 0Ch, 20h,0B3h, 01h, 15h
		db	 20h,0B3h, 01h, 11h, 20h,0B3h
		db	 01h, 19h, 20h,0BAh,0BAh, 01h
		db	 0Ch, 20h,0B3h, 01h, 15h, 20h
		db	0B3h, 01h, 11h, 20h,0B3h, 01h
		db	 19h, 20h,0BAh,0BAh, 01h, 0Ch
		db	 20h,0B3h, 01h, 15h, 20h,0B3h
		db	 01h, 11h, 20h,0B3h, 01h, 19h
		db	 20h,0BAh,0BAh, 01h, 0Ch, 20h
		db	0B3h, 01h, 15h, 20h,0B3h, 01h
		db	 11h, 20h,0B3h, 01h, 19h, 20h
		db	0BAh,0BAh, 01h, 0Ch, 20h,0B3h
		db	 01h, 15h, 20h,0B3h, 01h, 11h
		db	 20h,0B3h, 01h, 19h, 20h,0BAh
		db	0BAh, 01h, 0Ch, 20h,0B3h, 01h
		db	 15h, 20h,0B3h, 01h, 11h, 20h
		db	0B3h, 01h, 19h, 20h,0BAh,0BAh
		db	 01h, 0Ch, 20h,0B3h, 01h, 15h
		db	 20h,0B3h, 01h, 11h, 20h,0B3h
		db	 01h, 19h, 20h,0BAh,0CCh, 01h
		db	 0Ch,0CDh,0CFh, 01h, 15h,0CDh
		db	0CFh, 01h, 11h,0CDh,0CFh, 01h
		db	 19h,0CDh,0B9h,0BAh, 01h, 4Eh
		db	 20h,0BAh,0BAh, 01h, 15h
		db	 20h, 50h
		db	'ress Any Key To Return To Main M'
		db	'enu'
		db	 01h, 15h, 20h,0BAh,0BAh, 01h
		db	 4Eh, 20h,0BAh,0C8h, 01h, 4Eh
		db	0CDh,0BCh, 01h, 87h,0D0h, 1Fh
		db	 0Dh, 0Ah, 0Dh, 0Ah, 20h
		db	9 dup (20h)
		db	0ADh
		db	'aHa/nBa! Application Form!      '
		db	'                          ', 0Dh
		db	0Ah, 'What file is this?', 0Dh, 0Ah
		db	'                      Where Did '
		db	'you get it from?', 0Dh, 0Ah, '  '
		db	'                  Handle:', 0Dh, 0Ah
		db	'       Phone #:', 0Dh, 0Ah, '   '
		db	'   ', 0Dh, 0Ah, '               '
		db	'               List 3 boards whe'
		db	're you could be reached at:    ', 0Dh
		db	0Ah, 0Dh, 0Ah, '                 '
		db	'                           Can y'
		db	'ou HaCK?', 0Dh, 0Ah, '          '
		db	'                       List a fe'
		db	'w thigs you', 27h, 've hacked:', 0Dh
		db	0Ah, 0Dh, 0Ah, '                 '
		db	'            Ok! Send MoneY, pft,'
		db	' and this letter to:', 0Dh, 0Ah, ' '
		db	'                     Psycho', 0Dh
		db	0Ah, '        1340 W Irving', 0Dh
		db	0Ah, ' #229', 0Dh, 0Ah, '        '
		db	'  Chicago, IL', 0Dh, 0Ah, '   60'
		db	'613', 0Dh, 0Ah, '               '
		db	'                          Ok! No'
		db	'w, write about yourself:        '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'                                '
		db	'        ', 0Ch, 0
		db	'.'
		db	 80h, 3Eh, 2Dh, 02h, 00h, 74h
		db	 08h, 2Eh,0FEh, 0Eh, 2Dh, 02h
		db	0EBh, 09h, 90h
		db	 2Eh,0F6h, 06h, 2Eh, 02h, 80h
		db	 75h, 05h
loc_32:
		jmp	dword ptr cs:[195h]
loc_33:
		mov	word ptr cs:[1EAh],ax
		mov	al,0Bh
		out	20h,al			; port 20h, 8259-1 int command
		jmp	short $+2		; delay for I/O
		in	al,20h			; port 20h, 8259-1 int IRR/ISR
		and	al,0FEh
		mov	ax,word ptr cs:[1EAh]
		jz	loc_34			; Jump if zero
		jmp	short loc_32
loc_34:
		mov	word ptr cs:[1FCh],ax
		mov	word ptr cs:[1FEh],bx
		mov	word ptr cs:[208h],sp
		mov	word ptr cs:[20Eh],ss
		mov	word ptr cs:[20Ch],ds
		mov	word ptr cs:[210h],es
		mov	word ptr cs:[20Ah],bp
		mov	word ptr cs:[204h],si
		mov	word ptr cs:[206h],di
		mov	word ptr cs:[200h],cx
		mov	word ptr cs:[202h],dx
		mov	ds,word ptr cs:[1E2h]
		mov	ss,word ptr ds:[1DAh]
		mov	sp,word ptr ds:[1DCh]
		mov	es,word ptr ds:[1E4h]
		mov	bp,word ptr ds:[1E0h]
		mov	si,word ptr ds:[1D8h]
		mov	di,word ptr ds:[1DEh]
		mov	ax,word ptr ds:[1D0h]
		mov	bx,word ptr ds:[1D2h]
		mov	cx,word ptr ds:[1D4h]
		mov	dx,word ptr ds:[1D6h]
		jmp	dword ptr cs:[195h]
		mov	word ptr cs:[1F8h],ds
		mov	word ptr cs:[1F6h],ax
		mov	word ptr cs:[1FAh],bx
		mov	ds,cs:data_25
		mov	bx,keybd_flags_1_
		mov	ah,[bx]
		and	ah,0Fh
		cmp	ah,0Bh
		jne	loc_36			; Jump if not equal
		test	byte ptr cs:[22Eh],0C0h
		jz	loc_35			; Jump if zero
		test	byte ptr cs:[22Eh],40h	; '@'
		jz	loc_36			; Jump if zero
		or	byte ptr cs:[22Eh],20h	; ' '
		jmp	short loc_36
		db	90h
loc_35:
		or	byte ptr cs:[22Eh],80h
loc_36:
		mov	ax,word ptr cs:[1F6h]
		mov	ds,word ptr cs:[1F8h]
		mov	bx,word ptr cs:[1FAh]
		jmp	dword ptr cs:[199h]
		db	 2Eh, 80h, 3Eh, 2Fh, 02h, 00h
		db	 74h, 0Dh, 2Eh,0C6h, 06h, 2Fh
		db	 02h, 00h, 50h,0B0h, 66h,0E6h
		db	 20h, 58h,0CFh
loc_37:
		jmp	dword ptr cs:[19Dh]
		test	dl,80h
		jnz	loc_38			; Jump if not zero
		test	byte ptr cs:[22Eh],40h	; '@'
		jz	loc_38			; Jump if zero
		mov	word ptr cs:[1EAh],ax
		pop	ax
		pop	ax
		pop	ax
		or	ax,1
		push	ax
		sub	sp,4
		mov	ax,word ptr cs:[1EAh]
		mov	ah,80h
		iret				; Interrupt return
sub_2		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_6		proc	near
loc_38:
		jmp	dword ptr cs:[1A1h]
		mov	byte ptr ds:[22Eh],40h	; '@'
		call	sub_28
		jnc	loc_40			; Jump if carry=0
		clc				; Clear carry flag
loc_39:
		call	sub_11
		jmp	loc_121
loc_40:
		mov	ds,data_25
		test	byte ptr ds:dsk_motor_stat_,0Fh
		push	cs
		pop	ds
		jnz	loc_39			; Jump if not zero
		call	sub_22
		call	sub_23
loc_41:
		mov	ax,55Ch
		mov	cs:data_93,ax
		call	sub_21
		mov	data_112,70h		; 'p'
		call	sub_27
		call	sub_13
loc_42:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_48			; Jump if equal
		cmp	al,0Dh
		je	loc_49			; Jump if equal
		cmp	ah,48h			; 'H'
		je	loc_50			; Jump if equal
		cmp	ah,50h			; 'P'
		je	loc_53			; Jump if equal
		and	al,0DFh
		cmp	al,50h			; 'P'
		je	loc_43			; Jump if equal
		cmp	al,52h			; 'R'
		je	loc_47			; Jump if equal
		cmp	al,45h			; 'E'
		je	loc_48			; Jump if equal
		cmp	al,53h			; 'S'
		je	loc_44			; Jump if equal
		cmp	al,46h			; 'F'
		je	loc_45			; Jump if equal
		cmp	al,54h			; 'T'
		je	loc_46			; Jump if equal
		call	sub_11
		jmp	short loc_42
loc_43:
		jmp	loc_137
loc_44:
		jmp	short loc_55
		db	90h
loc_45:
		jmp	loc_145
loc_46:
		jmp	loc_149
loc_47:
		jmp	loc_151
loc_48:
		jmp	loc_154
loc_49:
		mov	al,3
		mul	data_107		; ax = data * al
		add	ax,offset loc_43
		jmp	ax			;*Register jump
loc_50:
		mov	data_112,1Fh
		call	sub_27
		cmp	data_107,0
		je	loc_52			; Jump if equal
		dec	data_107
		sub	data_110,3
loc_51:
		mov	data_112,70h		; 'p'
		call	sub_27
		jmp	short loc_42
loc_52:
		mov	data_107,5
		mov	data_110,15h
		jmp	short loc_51
loc_53:
		mov	data_112,1Fh
		call	sub_27
		cmp	data_107,5
		je	loc_54			; Jump if equal
		inc	data_107
		add	data_110,3
		jmp	short loc_51
loc_54:
		mov	data_107,0
		mov	data_110,6
		jmp	short loc_51
loc_55:
		call	sub_19
		mov	data_190,3120h
		cmp	data_28,1
		jne	loc_56			; Jump if not equal
		mov	data_29,0
		jmp	short loc_60
		db	90h
loc_56:
		mov	dh,0Dh
		mov	dl,18h
		mov	si,232h
		call	sub_14
		call	sub_13
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		jne	loc_57			; Jump if not equal
		jmp	loc_41
loc_57:
		cmp	al,0Dh
		je	loc_60			; Jump if equal
		and	al,0DFh
		sub	al,41h			; 'A'
		jge	loc_59			; Jump if > or =
loc_58:
		call	sub_11
		jmp	short loc_55
loc_59:
		cmp	al,data_28
		jge	loc_58			; Jump if > or =
		mov	data_29,al
		add	al,41h			; 'A'
		mov	byte ptr ds:[24Eh],al	; ('A')
		mov	data_183,al
		mov	data_188,al
loc_60:
		call	sub_19
		call	sub_37
		test	byte ptr [bx],1
		jz	loc_63			; Jump if zero
		mov	dh,10h
		mov	dl,14h
		test	byte ptr [bx],2
		jnz	loc_61			; Jump if not zero
		mov	si,251h
		jmp	short loc_62
		db	90h
loc_61:
		mov	si,27Eh
loc_62:
		call	sub_14
		call	sub_13
		mov	al,31h			; '1'
		mov	data_102,al
		mov	al,[si-3]
		mov	data_103,al
		mov	data_89,1331h
		call	sub_16
		and	byte ptr [si-3],0FEh
		or	[si-3],al
		xor	al,1
		xor	data_31,ax
loc_63:
		mov	ax,data_31
		call	sub_39
loc_64:
		call	sub_20
		mov	dh,0Bh
		mov	dl,14h
		mov	si,2ABh
		call	sub_14
		call	sub_38
		cmp	data_101,0
		je	loc_69			; Jump if equal
		mov	ax,word ptr ds:[137h]
		mov	bx,ax
		cmp	data_101,1
		jne	loc_65			; Jump if not equal
		xchg	bh,bl
		xor	bl,bl			; Zero register
		sub	al,30h			; '0'
		jmp	short loc_67
		db	90h
loc_65:
		sub	al,27h			; '''
		cmp	al,0Ah
		jg	loc_64			; Jump if >
		jz	loc_66			; Jump if zero
		xor	al,al			; Zero register
loc_66:
		sub	ah,30h			; '0'
		add	al,ah
		cmp	al,0Bh
		jg	loc_64			; Jump if >
loc_67:
		cmp	al,0
		je	loc_64			; Jump if equal
		mov	data_96,al
		or	bl,20h			; ' '
		cmp	bl,30h			; '0'
		jne	loc_68			; Jump if not equal
		mov	bl,20h			; ' '
loc_68:
		mov	data_191,bx
		mov	data_182,bx
loc_69:
		mov	data_100,0F5h
		mov	data_95,0
		mov	data_99,0
		call	sub_20
		mov	dh,0Ah
		mov	dl,18h
		mov	si,2DAh
		call	sub_14
		mov	dh,0Ch
		mov	dl,13h
		mov	si,2FBh
		call	sub_14
		call	sub_13
loc_70:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,0Dh
		je	loc_72			; Jump if equal
		cmp	al,1Bh
		jne	loc_71			; Jump if not equal
		jmp	loc_41
loc_71:
		call	sub_11
		jmp	short loc_70
loc_72:
		mov	data_82,1525h
		cli				; Disable interrupts
		pushf				; Push flags
		push	cs
		mov	ax,201h
		mov	bx,28E9h
		mov	cx,1
		mov	dl,data_29
		xor	dh,dh			; Zero register
		call	sub_6
		jnc	loc_78			; Jump if carry=0
		clc				; Clear carry flag
		test	ah,80h
		jz	loc_78			; Jump if zero
		call	sub_11
		xor	cx,cx			; Zero register

locloop_73:
		loop	locloop_73		; Loop if cx > 0

		call	sub_11
		call	sub_56
		call	sub_20
		mov	dh,0Ah
		mov	dl,20h			; ' '
		mov	si,3DAh
		call	sub_14
loc_74:
		mov	dh,0Eh
		mov	dl,20h			; ' '
		mov	si,40Fh
		call	sub_14
		call	sub_13
loc_75:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_77			; Jump if equal
		and	al,0DFh
		cmp	al,52h			; 'R'
		jne	loc_76			; Jump if not equal
		jmp	data_82
loc_76:
		cmp	al,41h			; 'A'
		je	loc_77			; Jump if equal
		call	sub_11
		jmp	short loc_75
loc_77:
		jmp	loc_135
loc_78:
		call	sub_24
		call	sub_61
		or	byte ptr ds:[22Eh],80h
		cli				; Disable interrupts
		call	sub_7
loc_79:
		call	sub_52
		call	sub_60
		mov	data_82,1596h
		call	sub_64
		test	data_73,0C0h
		jz	loc_80			; Jump if zero
		call	sub_64
		test	data_73,0C0h
		jz	loc_80			; Jump if zero
		jmp	loc_123
loc_80:
		call	sub_74
		test	data_73,0C0h
		jz	loc_81			; Jump if zero
		jmp	short loc_83
		db	90h
loc_81:
		cmp	byte ptr ds:[230h],0
		je	loc_82			; Jump if equal
		mov	ax,word ptr ds:[243Dh]
		cmp	data_218,ax
		jne	loc_82			; Jump if not equal
		mov	ax,word ptr ds:[243Fh]
		cmp	data_219,ax
		jne	loc_82			; Jump if not equal
		jmp	loc_117
loc_82:
		cmp	byte ptr data_214,0EBh
		jne	loc_83			; Jump if not equal
		cmp	data_217,200h
		jne	loc_83			; Jump if not equal
		mov	data_84,1626h
		jmp	short loc_84
		db	90h
loc_83:
		mov	data_84,1623h
loc_84:
		call	sub_77
		jnc	loc_85			; Jump if carry=0
		jmp	loc_123
loc_85:
		test	al,40h			; '@'
		jz	loc_87			; Jump if zero
loc_86:
		mov	data_62,3
		jmp	loc_125
loc_87:
		mov	byte ptr ds:[230h],0
loc_88:
		mov	data_82,161Fh
loc_89:
		jmp	data_84
		call	sub_78
		mov	data_68,28E9h
		mov	ax,word ptr data_60
		mov	data_67,ax
		mov	data_69,42h		; 'B'
		mov	data_70,0E6h
		mov	data_85,27F1h
		call	sub_75
		test	data_73,0C0h
		jz	loc_95			; Jump if zero
		test	data_74,20h		; ' '
		jz	loc_90			; Jump if zero
		cmp	data_94,2
		je	loc_93			; Jump if equal
		inc	data_94
		jmp	short loc_91
		db	90h
loc_90:
		mov	data_94,0
loc_91:
		call	sub_65
		test	data_73,0C0h
		jz	loc_92			; Jump if zero
		jmp	loc_123
loc_92:
		mov	data_84,1623h
		jmp	short loc_88
loc_93:
		mov	data_94,0
		cmp	data_65,0
		jne	loc_94			; Jump if not equal
		jmp	loc_105
loc_94:
		call	sub_51
loc_95:
		cmp	data_64,0
		jne	loc_97			; Jump if not equal
		mov	data_64,1
loc_96:
		jmp	short loc_89
loc_97:
		call	sub_9
		mov	data_82,161Fh
		mov	data_64,0
		inc	data_65
		inc	data_63
		cmp	data_31,0
		jne	loc_98			; Jump if not equal
		inc	data_63
loc_98:
		call	sub_46
		cmp	data_63,50h		; 'P'
		jge	loc_99			; Jump if > or =
		call	sub_63
		test	data_73,0C0h
		jz	loc_96			; Jump if zero
		call	sub_65
		test	data_73,0C0h
		jz	loc_96			; Jump if zero
		jmp	short loc_100
		db	90h
loc_99:
		mov	data_65,0
		mov	data_63,0
		mov	data_66,1
		mov	data_64,0
		mov	data_59,0
		call	sub_63
		test	data_73,0C0h
		jz	loc_101			; Jump if zero
		call	sub_65
		test	data_73,0C0h
		jz	loc_101			; Jump if zero
loc_100:
		mov	data_62,40h		; '@'
		jmp	loc_125
loc_101:
		mov	data_82,1712h
		call	sub_78
		cmp	data_64,1
		je	loc_102			; Jump if equal
		mov	data_64,1
		jmp	short loc_101
loc_102:
		call	sub_52
		mov	ds,data_25
		mov	ax,word ptr ds:timer_low_+1
		push	cs
		pop	ds
		mov	word ptr ds:[243Dh],ax
loc_103:
		mov	data_82,1738h
		mov	data_64,0
		mov	data_68,2416h
		mov	data_67,1FFh
		mov	data_69,4Ah		; 'J'
		mov	data_70,0C5h
		mov	data_85,27F1h
		call	sub_75
		test	data_73,0C0h
		jz	loc_106			; Jump if zero
		test	data_74,2
		jz	loc_104			; Jump if zero
		jmp	loc_86
loc_104:
		cmp	data_94,0
		jne	loc_105			; Jump if not equal
		inc	data_94
		call	sub_65
		test	data_73,0C0h
		jz	loc_103			; Jump if zero
		jmp	loc_123
loc_105:
		mov	data_62,20h		; ' '
		jmp	loc_125
loc_106:
		call	sub_53
		mov	byte ptr ds:[21Ah],2
		mov	al,byte ptr ds:[242Bh]
		mov	data_214,al
		mov	data_215,0FFFFh
		mov	word ptr ds:[223h],0
		mov	word ptr ds:[21Fh],0
		mov	word ptr ds:[212h],139h
loc_107:
		mov	cx,80h
		mov	si,word ptr ds:[212h]
loc_108:
		mov	word ptr ds:[218h],cx
		mov	word ptr ds:[214h],si
		call	sub_55
		sub	ax,word ptr ds:[21Fh]
		test	cx,[si]
		jz	loc_113			; Jump if zero
		cmp	ax,200h
		jl	loc_109			; Jump if <
		mov	word ptr ds:[21Bh],ax
		call	sub_49
		call	sub_53
		call	sub_50
		mov	ax,word ptr ds:[21Bh]
		sub	ax,200h
loc_109:
		mov	di,offset data_214
		add	di,ax
		mov	al,data_56
		cbw				; Convrt byte to word
		cmp	al,9
		jne	loc_110			; Jump if not equal
		clc				; Clear carry flag
		rcr	ax,1			; Rotate thru carry
		adc	ax,0
loc_110:
		mov	cx,ax
		mov	si,word ptr ds:[229h]
loc_111:
		mov	bx,225h
		mov	ax,[bx+si]
		mov	bx,[di]
		or	ax,bx
		cld				; Clear direction
		stosw				; Store ax to es:[di]
		xor	si,2
		nop				;*ASM fixup - sign extn byte
		jz	loc_112			; Jump if zero
		dec	di
loc_112:
		dec	cx
		jnz	loc_111			; Jump if not zero
		mov	word ptr ds:[21Dh],di
		jmp	short loc_114
		db	90h
loc_113:
		cmp	ax,200h
		jl	loc_114			; Jump if <
		call	sub_49
		call	sub_53
		call	sub_50
loc_114:
		mov	word ptr ds:[21Bh],ax
		mov	al,data_56
		cbw				; Convrt byte to word
		add	word ptr ds:[223h],ax
		mov	ax,word ptr ds:[21Bh]
		mov	cx,word ptr ds:[218h]
		mov	si,word ptr ds:[214h]
		shr	cx,1			; Shift w/zeros fill
		jz	loc_115			; Jump if zero
		jmp	loc_108
loc_115:
		inc	word ptr ds:[212h]
		mov	ax,word ptr ds:[212h]
		cmp	ax,word ptr ds:[216h]
		je	loc_116			; Jump if equal
		jmp	loc_107
loc_116:
		call	sub_49
		call	sub_54
		mov	di,data_100
		mov	ax,word ptr ds:[243Fh]
		xchg	ah,al
		cld				; Clear direction
		stosw				; Store ax to es:[di]
		mov	ax,word ptr ds:[243Dh]
		xchg	ah,al
		stosw				; Store ax to es:[di]
		mov	ax,word ptr data_98
		stosw				; Store ax to es:[di]
		mov	data_100,di
		inc	data_95
		inc	data_99
		call	sub_12
		mov	al,data_96
		cmp	data_95,al
		je	loc_119			; Jump if equal
loc_117:
		mov	byte ptr ds:[230h],1
		mov	ds,data_25
		mov	byte ptr ds:dsk_motor_tmr_,2
		push	cs
		pop	ds
		mov	data_92,3AAh
		call	sub_45
		mov	cx,88h

locloop_118:
		call	sub_7
		call	sub_9
		mov	cx,word ptr ds:[22Bh]
		mov	data_82,1596h
		loop	locloop_118		; Loop if cx > 0

		jmp	loc_79
loc_119:
		mov	data_92,3C2h
		call	sub_45
		mov	data_107,2
		mov	data_110,0Ch
loc_120:
		mov	data_81,130Dh
		mov	byte ptr ds:[230h],0
		call	sub_8
loc_121:
		and	byte ptr ds:[22Eh],0
		mov	sp,2B84h
		mov	ax,202h
		push	ax
		push	cs
		mov	ax,data_81
		push	ax
		mov	word ptr cs:[1DCh],sp
loc_122:
		mov	ss,word ptr ds:[20Eh]
		mov	sp,word ptr ds:[208h]
		mov	es,word ptr ds:[210h]
		mov	bp,word ptr ds:[20Ah]
		mov	si,word ptr ds:[204h]
		mov	di,word ptr ds:[206h]
		mov	ax,word ptr ds:[1FCh]
		mov	bx,word ptr ds:[1FEh]
		mov	cx,word ptr ds:[200h]
		mov	dx,word ptr ds:[202h]
		mov	ds,word ptr ds:[20Ch]
		iret				; Interrupt return
loc_123:
		mov	byte ptr ds:[22Fh],0
		mov	dx,3F2h
		mov	al,8
		out	dx,al			; port 3F2h, dsk0 contrl output
		cmp	byte ptr ds:[230h],0
		je	loc_124			; Jump if equal
		jmp	loc_117
loc_124:
		mov	data_62,80h
loc_125:
		mov	data_92,3B6h
		call	sub_45
		call	sub_12
		mov	byte ptr ds:[22Dh],6
		call	sub_7
		call	sub_12
		call	sub_8
		mov	data_81,195Dh
		jmp	short loc_121
sub_6		endp

loc_126:
		and	byte ptr cs:[22Eh],7Fh
		call	sub_28
		jnc	loc_128			; Jump if carry=0
		clc				; Clear carry flag
		call	sub_11
		test	byte ptr ds:[22Eh],20h	; ' '
		jnz	loc_127			; Jump if not zero
		jmp	loc_121
loc_127:
		jmp	loc_120
loc_128:
		call	sub_22
		call	sub_23
		call	sub_56
		call	sub_20
		cmp	data_62,80h
		je	loc_129			; Jump if equal
		cmp	data_62,3
		je	loc_132			; Jump if equal
		cmp	data_62,40h		; '@'
		je	loc_131			; Jump if equal
		cmp	data_62,20h		; ' '
		je	loc_130			; Jump if equal
		mov	dh,0Ah
		mov	dl,1Eh
		mov	si,441h
		call	sub_14
		jmp	short loc_133
		db	90h
loc_129:
		mov	dh,0Ah
		mov	dl,20h			; ' '
		mov	si,3DAh
		call	sub_14
		jmp	short loc_133
		db	90h
loc_130:
		mov	dh,0Ah
		mov	dl,18h
		mov	si,420h
		call	sub_14
		jmp	short loc_133
		db	90h
loc_131:
		mov	dh,0Ah
		mov	dl,22h			; '"'
		mov	si,402h
		call	sub_14
		jmp	short loc_133
		db	90h
loc_132:
		mov	dh,0Ah
		mov	dl,1Dh
		mov	si,3EBh
		call	sub_14
loc_133:
		mov	dh,0Eh
		mov	dl,20h			; ' '
		mov	data_62,0
		mov	si,40Fh
		call	sub_14
		call	sub_13
loc_134:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_135			; Jump if equal
		and	al,0DFh
		cmp	al,52h			; 'R'
		je	loc_136			; Jump if equal
		cmp	al,41h			; 'A'
		je	loc_135			; Jump if equal
		call	sub_11
		jmp	short loc_134
loc_135:
		call	sub_24
		mov	data_107,0
		mov	data_110,6
		jmp	loc_120
loc_136:
		call	sub_24
		cli				; Disable interrupts
		mov	byte ptr ds:[22Eh],0C0h
		call	sub_7
		call	sub_65
		mov	cx,5
		jmp	data_82
loc_137:
		call	sub_19
		mov	dh,0Dh
		mov	dl,15h
		mov	si,457h
		call	sub_14
		call	sub_13
loc_138:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		je	loc_144			; Jump if equal
		cmp	al,0Dh
		je	loc_139			; Jump if equal
		call	sub_11
		jmp	short loc_138
loc_139:
		call	sub_19
		mov	dh,0Dh
		mov	dl,21h			; '!'
		mov	si,47Fh
		call	sub_14
		call	sub_13
		mov	bp,0A2Bh
loc_140:
		mov	ah,2
		xor	dx,dx			; Zero register
		int	17h			; Printer  dx=prn1, ah=func 02h
						;  read status, ah=return status
		test	ah,10h
		jz	loc_143			; Jump if zero
		mov	al,[bp]
		cmp	al,0
		je	loc_144			; Jump if equal
		xor	ah,ah			; Zero register
		xor	dx,dx			; Zero register
		int	17h			; Printer  dx=prn1, ah=func 00h
						;  print char al, get status ah
		test	ah,29h			; ')'
		jnz	loc_141			; Jump if not zero
		inc	bp
		jmp	short loc_140
loc_141:
		call	sub_19
		mov	dh,0Ch
		mov	dl,23h			; '#'
		mov	si,48Dh
loc_142:
		call	sub_14
		mov	data_82,1A2Eh
		jmp	loc_74
loc_143:
		call	sub_19
		mov	dh,0Ch
		mov	dl,1Eh
		mov	si,499h
		jmp	short loc_142
loc_144:
		jmp	loc_41
loc_145:
		cmp	data_95,0
		jne	loc_147			; Jump if not equal
		call	sub_19
		mov	dh,0Dh
		mov	dl,20h			; ' '
		mov	si,38Dh
		call	sub_14
loc_146:
		mov	dh,0Fh
		mov	dl,16h
		mov	si,368h
		call	sub_14
		call	sub_13
		jmp	short loc_148
		db	90h
loc_147:
		mov	ax,838h
		mov	cs:data_93,ax
		call	sub_21
		call	sub_31
loc_148:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		mov	data_107,5
		mov	data_110,15h
		jmp	loc_41
loc_149:
		cmp	data_187,6666h
		je	loc_150			; Jump if equal
		mov	data_187,6666h
		jmp	loc_41
loc_150:
		mov	data_187,206Eh
		jmp	loc_41
loc_151:
		mov	ax,11E0h
		mov	di,20h			; (' ')
		call	sub_30
		jc	loc_152			; Jump if carry Set
		mov	ax,12E6h
		mov	di,offset data_42
		call	sub_30
		jc	loc_152			; Jump if carry Set
		mov	ax,12CCh
		mov	di,offset data_38
		call	sub_30
		jc	loc_152			; Jump if carry Set
		mov	ax,127Ah
		mov	di,24h			; (' ')
		call	sub_30
		jnc	loc_153			; Jump if carry=0
loc_152:
		clc				; Clear carry flag
		call	sub_19
		mov	dh,0Ch
		mov	dl,8
		mov	si,327h
		call	sub_14
		jmp	loc_146
loc_153:
		xor	ax,ax			; Zero register
		mov	word ptr data_24,ax
		mov	si,offset 195h
		mov	di,20h			; (' ')
		call	sub_29
		mov	si,offset 199h
		mov	di,24h			; (' ')
		call	sub_29
		mov	si,offset 19Dh
		mov	di,offset data_38
		call	sub_29
		mov	si,offset 1A1h
		mov	di,offset data_42
		call	sub_29
		mov	es,data_26
		mov	di,data_2e
		xor	ax,ax			; Zero register
		stosw				; Store ax to es:[di]
		mov	es,data_27
		mov	di,data_2e
		xor	ax,ax			; Zero register
		stosw				; Store ax to es:[di]
		push	cs
		pop	es
		call	sub_24
		call	sub_7
loc_154:
		mov	data_107,0
		mov	data_110,6
		call	sub_24
		jmp	loc_121

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_7		proc	near
		add	byte ptr ds:[22Dh],1
		cli				; Disable interrupts
		mov	word ptr ds:[1D0h],ax
		pop	ax
		pushf				; Push flags
		push	cs
		push	ax
		mov	word ptr ds:[1DCh],sp
		mov	word ptr ds:[1D2h],bx
		mov	word ptr ds:[1DAh],ss
		mov	word ptr ds:[1E2h],ds
		mov	word ptr ds:[1E4h],es
		mov	word ptr ds:[1E0h],bp
		mov	word ptr ds:[1D8h],si
		mov	word ptr ds:[1DEh],di
		mov	word ptr ds:[1D4h],cx
		mov	word ptr ds:[1D6h],dx
		jmp	loc_122
sub_7		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_8		proc	near
		mov	al,data_29
		cbw				; Convrt byte to word
		mov	di,ax
		mov	ds,data_25
		and	byte ptr ds:hdsk0_media_st_[di],0EFh
		mov	byte ptr ds:dsk_motor_tmr_,2
		mov	byte ptr ds:dsk_recal_stat_,0
		push	cs
		pop	ds
		retn
sub_8		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_9		proc	near
		mov	word ptr ds:[22Bh],cx
		test	byte ptr ds:[22Eh],20h	; ' '
		jz	loc_ret_155		; Jump if zero
		pop	ax
		mov	data_82,ax
		jmp	loc_126

loc_ret_155:
		retn
sub_9		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_10		proc	near
		mov	ah,0Eh
		mov	bh,0
		int	10h			; Video display   ah=functn 0Eh
						;  write char al, teletype mode
		retn
sub_10		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_11		proc	near
		push	ax
		push	bx
		mov	al,7
		call	sub_10
		pop	bx
		pop	ax
		retn
sub_11		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_12		proc	near
		call	sub_7
		mov	al,0B6h
		out	43h,al			; port 43h, 8253 wrt timr mode
		mov	ax,180h
		out	42h,al			; port 42h, 8253 timer 2 spkr
		mov	al,ah
		out	42h,al			; port 42h, 8253 timer 2 spkr
		in	al,61h			; port 61h, 8255 port B, read
		or	al,3
		out	61h,al			; port 61h, 8255 B - spkr, etc
		call	sub_7
		in	al,61h			; port 61h, 8255 port B, read
		and	al,0FCh
		out	61h,al			; port 61h, 8255 B - spkr, etc
						;  al = 0, disable parity
		retn
sub_12		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_13		proc	near
		mov	ah,2
		mov	dx,2000h
		mov	bh,data_104
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
		retn
sub_13		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_14		proc	near
		mov	ah,2
		mov	bh,0
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
		call	sub_15
		retn
sub_14		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_15		proc	near
loc_156:
		cld				; Clear direction
		lodsb				; String [si] to al
		cmp	al,0
		je	loc_ret_157		; Jump if equal
		mov	ah,0Eh
		mov	bh,0
		int	10h			; Video display   ah=functn 0Eh
						;  write char al, teletype mode
		jmp	short loc_156

loc_ret_157:
		retn
sub_15		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_16		proc	near
loc_158:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,1Bh
		jne	loc_159			; Jump if not equal
		pop	ax
		jmp	data_89
loc_159:
		cmp	al,0Dh
		jne	loc_160			; Jump if not equal
		mov	al,data_103
		jmp	short loc_161
		db	90h
loc_160:
		cmp	al,30h			; '0'
		jl	loc_162			; Jump if <
		cmp	al,data_102
		jg	loc_162			; Jump if >
loc_161:
		and	ax,7
		retn
loc_162:
		call	sub_11
		jmp	short loc_158
sub_16		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_17		proc	near
		mov	cx,0FA0h
		shr	cx,1			; Shift w/zeros fill
		cld				; Clear direction
		lodsb				; String [si] to al
		inc	si
		xchg	ah,al
loc_163:
		lodsb				; String [si] to al
		dec	cx
		jz	loc_165			; Jump if zero
		inc	si
		cmp	ah,al
		jne	loc_164			; Jump if not equal
		inc	bx
		jmp	short loc_163
loc_164:
		call	sub_26
		jmp	short loc_163
loc_165:
		call	sub_26
		retn
sub_17		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_18		proc	near
		push	ds
		push	es
		mov	si,data_1e
		mov	di,data_16e
		mov	bx,0
		mov	ds,cs:data_91
		mov	es,cs:data_91
		call	sub_17
		mov	si,data_2e
		mov	bx,0
		call	sub_17
		pop	es
		pop	ds
		retn
sub_18		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_19		proc	near
		mov	ax,4ADh
		mov	data_93,ax
		call	sub_21
		retn
sub_19		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_20		proc	near
		mov	ax,6F7h
		mov	data_93,ax
		call	sub_21
		retn
sub_20		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_21		proc	near
		push	cx
		push	dx
		push	si
		push	di
		push	ax
		xor	di,di			; Zero register
		mov	si,cs:data_93
loc_166:
		lodsb				; String [si] to al
		cmp	al,1
		jne	loc_169			; Jump if not equal
		lodsw				; String [si] to ax
		mov	cx,ax
		test	cl,80h
		jz	loc_167			; Jump if zero
		xchg	ch,cl
		and	cx,7FFFh
		lodsb				; String [si] to al
		jmp	short locloop_168
		db	90h
loc_167:
		xchg	al,ah
		and	cx,7Fh

locloop_168:
		call	sub_25
		loop	locloop_168		; Loop if cx > 0

		jmp	short loc_170
		db	90h
loc_169:
		call	sub_25
loc_170:
		cmp	di,0FA0h
		jl	loc_166			; Jump if <
		jnz	loc_171			; Jump if not zero
		mov	di,1
		jmp	short loc_166
loc_171:
		pop	ax
		pop	di
		pop	si
		pop	dx
		pop	cx
		retn
sub_21		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_22		proc	near
		push	ds
		mov	ds,data_91
		mov	si,data_4e
		mov	di,offset data_115
		mov	cx,7
		cld				; Clear direction
		repe	cmpsw			; Rep zf=1+cx >0 Cmp [si] to es:[di]
		pop	ds
		cmp	cx,0
		jne	loc_ret_172		; Jump if not equal
		mov	data_92,0D5h
		call	sub_44

loc_ret_172:
		retn
sub_22		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_23		proc	near
		mov	ah,0Fh
		int	10h			; Video display   ah=functn 0Fh
						;  get state, al=mode, bh=page
						;   ah=columns on screen
		mov	ah,3
		int	10h			; Video display   ah=functn 03h
						;  get cursor loc in dx, mode cx
		mov	data_104,bh
		mov	data_105,cx
		mov	data_106,dx
		call	sub_18
		retn
sub_23		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_24		proc	near
		mov	data_93,1000h
		mov	ax,data_91
		push	ds
		mov	ds,ax
		call	sub_21
		pop	ds
		mov	bh,data_104
		mov	dx,data_106
		mov	ah,2
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
		mov	ah,1
		mov	cx,data_105
		int	10h			; Video display   ah=functn 01h
						;  set cursor mode in cx
		retn
sub_24		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_25		proc	near
		push	es
		mov	es,cs:data_91
		mov	dx,cs:data_90
		cli				; Disable interrupts
		push	ax
loc_173:
		in	al,dx			; port 0, DMA-1 bas&add ch 0
		test	al,1
		jnz	loc_173			; Jump if not zero
loc_174:
		in	al,dx			; port 0, DMA-1 bas&add ch 0
		test	al,1
		jz	loc_174			; Jump if zero
		pop	ax
		mov	es:[di],al
		sti				; Enable interrupts
		inc	di
		inc	di
		pop	es
		retn
sub_25		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_26		proc	near
		cmp	ah,1
		je	loc_175			; Jump if equal
		cmp	bx,0
		je	loc_178			; Jump if equal
		cmp	bx,1
		jne	loc_175			; Jump if not equal
		xor	bx,bx			; Zero register
		xchg	ah,al
		stosb				; Store al to es:[di]
		jmp	short loc_179
		db	90h
loc_175:
		push	ax
		inc	bx
		mov	al,1
		stosb				; Store al to es:[di]
		mov	ax,bx
		and	bx,0FF80h
		nop				;*ASM fixup - sign extn byte
		jz	loc_176			; Jump if zero
		or	ax,8000h
		xchg	ah,al
		stosw				; Store ax to es:[di]
		jmp	short loc_177
		db	90h
loc_176:
		stosb				; Store al to es:[di]
loc_177:
		xor	bx,bx			; Zero register
		pop	ax
loc_178:
		xchg	ah,al
loc_179:
		stosb				; Store al to es:[di]
		retn
sub_26		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_27		proc	near
		mov	al,data_110
		mul	data_111		; ax = data * al
		add	ax,3Dh
		mov	di,ax
		mov	al,data_112
		mov	cl,15h
loc_180:
		call	sub_25
		dec	cl
		cmp	cl,0
		jne	loc_180			; Jump if not equal
		retn
sub_27		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_28		proc	near
		mov	ds,data_25
		cmp	byte ptr ds:video_mode_,7
		je	loc_183			; Jump if equal
		cmp	byte ptr ds:video_mode_,2
		je	loc_182			; Jump if equal
		cmp	byte ptr ds:video_mode_,3
		je	loc_182			; Jump if equal
loc_181:
		push	cs
		pop	ds
		stc				; Set carry flag
		retn
loc_182:
		push	cs
		pop	ds
		clc				; Clear carry flag
		retn
loc_183:
		mov	ds,cs:data_91
		xor	si,si			; Zero register
		mov	cx,50h
		xor	bx,bx			; Zero register
		cld				; Clear direction

locloop_184:
		lodsw				; String [si] to ax
		cmp	ah,al
		jne	loc_185			; Jump if not equal
		inc	bx
loc_185:
		loop	locloop_184		; Loop if cx > 0

		cmp	bx,0Ah
		jg	loc_181			; Jump if >
		jmp	short loc_182
sub_28		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_29		proc	near
		mov	cx,2
		mov	es,data_25
		cld				; Clear direction
		cli				; Disable interrupts
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		sti				; Enable interrupts
		retn
sub_29		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_30		proc	near
		clc				; Clear carry flag
		mov	word ptr ds:[1F0h],es
		mov	es,data_25
		cmp	ax,es:[di]
		jne	loc_186			; Jump if not equal
		push	cs
		pop	ax
		cmp	ax,es:[di+2]
		je	loc_187			; Jump if equal
loc_186:
		stc				; Set carry flag
loc_187:
		mov	es,word ptr ds:[1F0h]
		retn
sub_30		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_31		proc	near
		mov	data_100,0F5h
		mov	data_97,9
		mov	data_95,1
loc_188:
		mov	al,data_95
		cbw				; Convrt byte to word
		mov	word ptr ds:[1A9h],0
		mov	word ptr ds:[1ABh],ax
		call	sub_32
		mov	dh,byte ptr ds:[1AFh]
		mov	dl,7
		sub	dl,dh
		mov	dh,data_97
		mov	si,0EDh
		call	sub_14
		mov	si,data_100
		mov	di,3A0h
		cld				; Clear direction
		call	sub_35
		inc	di
		call	sub_35
		mov	data_100,si
		mov	dh,data_97
		mov	dl,14h
		mov	si,3A0h
		call	sub_14
		mov	si,data_100
		lodsw				; String [si] to ax
		mov	word ptr data_98,ax
		mov	data_100,si
		mov	word ptr ds:[1A9h],0
		mov	word ptr ds:[1ABh],ax
		call	sub_32
		mov	dh,byte ptr ds:[1AFh]
		mov	dl,2Dh			; '-'
		sub	dl,dh
		mov	dh,data_97
		mov	si,0EDh
		call	sub_14
		mov	bl,50h			; 'P'
		xor	bh,bh			; Zero register
		cmp	data_31,0
		jne	loc_189			; Jump if not equal
		shr	bx,1			; Shift w/zeros fill
loc_189:
		dec	bx
		mov	ax,2
		mul	bx			; dx:ax = reg * ax
		mov	bl,data_56
		xor	bh,bh			; Zero register
		mul	bx			; dx:ax = reg * ax
		mov	bl,data_53
		add	ax,bx
		mov	bx,word ptr data_98
		cmp	byte ptr ds:[2423h],1
		je	loc_190			; Jump if equal
		shl	bx,1			; Shift w/zeros fill
loc_190:
		sub	ax,bx
		mov	bx,200h
		mul	bx			; dx:ax = reg * ax
		mov	word ptr ds:[1A9h],dx
		mov	word ptr ds:[1ABh],ax
		call	sub_32
		mov	dh,byte ptr ds:[1AFh]
		mov	dl,44h			; 'D'
		sub	dl,dh
		mov	dh,data_97
		mov	si,0EDh
		call	sub_14
		mov	al,data_99
		cmp	data_95,al
		jne	loc_191			; Jump if not equal
		call	sub_13
		retn
loc_191:
		inc	data_95
		inc	data_97
		jmp	loc_188
sub_31		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_32		proc	near
		mov	di,0EDh
		call	sub_33
		mov	word ptr ds:[1ADh],bx
		mov	byte ptr ds:[1AFh],bl
		jz	loc_195			; Jump if zero
loc_192:
		cld				; Clear direction
		or	al,30h			; '0'
		stosb				; Store al to es:[di]
		mov	word ptr ds:[1A5h],0
		mov	word ptr ds:[1A7h],0
		push	di
		mov	di,word ptr ds:[1B0h]
		add	di,word ptr ds:[1B2h]
		call	sub_34
		pop	di
		mov	ax,word ptr ds:[1A7h]
		sub	word ptr ds:[1ABh],ax
		jnc	loc_193			; Jump if carry=0
		dec	word ptr ds:[1A9h]
loc_193:
		mov	ax,word ptr ds:[1A5h]
		sub	word ptr ds:[1A9h],ax
		dec	word ptr ds:[1ADh]
		cmp	word ptr ds:[1ADh],0
		je	loc_195			; Jump if equal
		call	sub_33
loc_194:
		cmp	bx,word ptr ds:[1ADh]
		je	loc_192			; Jump if equal
		push	ax
		mov	al,30h			; '0'
		stosb				; Store al to es:[di]
		pop	ax
		dec	word ptr ds:[1ADh]
		cmp	word ptr ds:[1ADh],0
		jne	loc_194			; Jump if not equal
loc_195:
		mov	ax,word ptr ds:[1ABh]
		or	al,30h			; '0'
		cld				; Clear direction
		stosb				; Store al to es:[di]
		mov	al,0
		stosb				; Store al to es:[di]
		retn
sub_32		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_33		proc	near
		mov	dx,word ptr ds:[1A9h]
		mov	ax,word ptr ds:[1ABh]
		mov	word ptr ds:[1B0h],0
		mov	word ptr ds:[1B2h],0
		cmp	dx,0
		jne	loc_196			; Jump if not equal
		cmp	ax,2710h
		jb	loc_197			; Jump if below
loc_196:
		mov	bx,2710h
		mov	word ptr ds:[1B0h],8
		div	bx			; ax,dx rem=dx:ax/reg
loc_197:
		cmp	ax,0Ah
		jb	loc_200			; Jump if below
		mov	word ptr ds:[1B2h],6
		xor	dx,dx			; Zero register
		mov	bx,offset 1C8h
loc_198:
		cmp	ax,[bx]
		jge	loc_199			; Jump if > or =
		sub	word ptr ds:[1B2h],2
		sub	bx,2
		jmp	short loc_198
loc_199:
		mov	bx,[bx]
		div	bx			; ax,dx rem=dx:ax/reg
loc_200:
		mov	bx,word ptr ds:[1B0h]
		add	bx,word ptr ds:[1B2h]
		shr	bx,1			; Shift w/zeros fill
		retn
sub_33		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_34		proc	near
		and	al,0Fh
		cbw				; Convrt byte to word
		push	ax
		mov	bx,offset 1C2h
		mov	bx,[bx+di]
		mul	bx			; dx:ax = reg * ax
		add	word ptr ds:[1A7h],ax
		jnc	loc_201			; Jump if carry=0
		inc	dx
loc_201:
		add	word ptr ds:[1A5h],dx
		mov	bx,offset 1B4h
		pop	ax
		mov	bx,[bx+di]
		mul	bx			; dx:ax = reg * ax
		add	word ptr ds:[1A5h],ax
		retn
sub_34		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_35		proc	near
		lodsb				; String [si] to al
		call	sub_36
		stosw				; Store ax to es:[di]
		lodsb				; String [si] to al
		call	sub_36
		stosw				; Store ax to es:[di]
		retn
sub_35		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_36		proc	near
		mov	ah,al
		and	ah,0Fh
		mov	cl,4
		shr	al,cl			; Shift w/zeros fill
		and	al,0Fh
		cmp	al,0Ah
		jge	loc_202			; Jump if > or =
		add	al,30h			; '0'
		jmp	short loc_203
		db	90h
loc_202:
		add	al,37h			; '7'
loc_203:
		cmp	ah,0Ah
		jge	loc_204			; Jump if > or =
		add	ah,30h			; '0'
		jmp	short loc_ret_205
		db	90h
loc_204:
		add	ah,37h			; '7'

loc_ret_205:
		retn
sub_36		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_37		proc	near
		mov	al,data_29
		mov	bx,offset data_30
		cbw				; Convrt byte to word
		add	bx,ax
		mov	al,[bx]
		mov	data_31,ax
		retn
sub_37		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_38		proc	near
		mov	ah,1
		mov	cx,7
		int	10h			; Video display   ah=functn 01h
						;  set cursor mode in cx
		mov	ah,3
		mov	bh,data_104
		int	10h			; Video display   ah=functn 03h
						;  get cursor loc in dx, mode cx
		mov	data_108,dh
		mov	data_109,dl
		mov	di,137h
		mov	data_101,0
loc_206:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,0Dh
		jne	loc_207			; Jump if not equal
		retn
loc_207:
		cmp	al,1Bh
		jne	loc_208			; Jump if not equal
		pop	ax
		jmp	loc_41
loc_208:
		cmp	al,10h
		je	loc_209			; Jump if equal
		cmp	ax,5300h
		jne	loc_210			; Jump if not equal
loc_209:
		call	sub_41
		call	sub_41
		jmp	short loc_206
loc_210:
		cmp	ax,4B00h
		je	loc_211			; Jump if equal
		cmp	al,8
		jne	loc_212			; Jump if not equal
loc_211:
		call	sub_41
		jmp	short loc_206
loc_212:
		cmp	al,30h			; '0'
		jb	loc_213			; Jump if below
		cmp	al,39h			; '9'
		jg	loc_213			; Jump if >
		cmp	data_101,2
		je	loc_213			; Jump if equal
		cld				; Clear direction
		stosb				; Store al to es:[di]
		inc	data_101
		inc	data_109
		call	sub_10
		jmp	short loc_206
loc_213:
		call	sub_11
		jmp	short loc_206
sub_38		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_39		proc	near
		mov	si,offset data_33+6	; (' ')
loc_214:
		cmp	al,0
		je	loc_215			; Jump if equal
		add	si,7
		dec	al
		jmp	short loc_214
loc_215:
		mov	di,offset data_189
loc_216:
		lodsb				; String [si] to al
		cmp	al,0
		jne	loc_217			; Jump if not equal
		retn
loc_217:
		stosb				; Store al to es:[di]
sub_39		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_40		proc	near
		jmp	short loc_216
sub_40		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_41		proc	near
		cmp	data_101,0
		je	loc_ret_218		; Jump if equal
		dec	di
		dec	data_101
		dec	data_109
		call	sub_42
		mov	al,20h			; ' '
		call	sub_10
		call	sub_42

loc_ret_218:
		retn
sub_41		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_42		proc	near
		mov	ah,2
		mov	bh,data_104
		mov	dh,data_108
		mov	dl,data_109
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
		retn
sub_42		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_43		proc	near
		push	ds
		mov	ds,data_91
		mov	si,data_4e
		mov	di,offset data_115
		mov	cx,7
		cld				; Clear direction
		repe	cmpsw			; Rep zf=1+cx >0 Cmp [si] to es:[di]
		cmp	cx,0
		je	loc_219			; Jump if equal
		mov	di,offset data_113
		mov	si,data_4e
		mov	cx,6
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
loc_219:
		pop	ds
		call	sub_44
		mov	di,offset data_115
		mov	si,data_92
		mov	cx,6
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		retn
sub_43		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_44		proc	near
		push	es
		mov	si,data_92
		mov	es,data_91
		mov	di,data_4e
		mov	cx,6
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		pop	es
		retn
sub_44		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_45		proc	near
		call	sub_28
		jnc	loc_220			; Jump if carry=0
		retn
loc_220:
		call	sub_43
		retn
sub_45		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_46		proc	near
		call	sub_28
		jnc	loc_221			; Jump if carry=0
		clc				; Clear carry flag
		retn
loc_221:
		cmp	data_187,6666h
		je	loc_222			; Jump if equal
		mov	data_92,3CEh
		mov	ah,data_65
		call	sub_47
		mov	byte ptr data_184+26h,al	; ('')
		mov	byte ptr data_184+28h,ah	; ('')
		call	sub_43
		retn
loc_222:
		cmp	data_92,3AAh
		jne	loc_ret_223		; Jump if not equal
		mov	data_92,0D5h
		call	sub_44

loc_ret_223:
		retn
sub_46		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_47		proc	near
		cmp	ah,0Ah
		jl	loc_226			; Jump if <
		mov	al,31h			; '1'
loc_224:
		sub	ah,0Ah
		cmp	ah,0Ah
		jl	loc_225			; Jump if <
		add	al,1
		jmp	short loc_224
loc_225:
		or	ah,30h			; '0'
		retn
loc_226:
		or	ah,30h			; '0'
		mov	al,20h			; ' '
		retn
sub_47		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_48		proc	near
		cld				; Clear direction
		mov	di,offset 14Dh
loc_227:
		mov	al,data_65
		stosb				; Store al to es:[di]
		mov	al,data_64
		stosb				; Store al to es:[di]
		mov	al,data_66
		stosb				; Store al to es:[di]
		mov	al,2
		stosb				; Store al to es:[di]
		inc	data_66
		mov	al,data_66
		cmp	al,data_56
		jle	loc_227			; Jump if < or =
		mov	data_66,1
		retn
sub_48		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_49		proc	near
		pop	ax
		mov	word ptr ds:[221h],ax
		mov	data_82,21E2h
		mov	al,byte ptr ds:[21Ah]
		mov	data_66,al
		mov	data_68,28E9h
		mov	data_67,1FFh
		mov	data_69,4Ah		; 'J'
		mov	data_70,0C5h
		mov	data_85,27F1h
		call	sub_75
		mov	data_82,220Dh
		mov	ax,word ptr ds:[242Ch]
		mov	cl,byte ptr ds:[21Ah]
		add	cl,al
		cmp	cl,data_56
		jle	loc_228			; Jump if < or =
		inc	data_64
		sub	cl,data_56
loc_228:
		mov	data_66,cl
		call	sub_75
		inc	byte ptr ds:[21Ah]
		jmp	word ptr ds:[221h]

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_50:
		mov	si,offset data_220
		mov	cx,word ptr ds:[21Dh]
		inc	cx
		sub	cx,si
		jbe	loc_229			; Jump if below or =
		mov	di,offset data_214
		cld				; Clear direction
		repne	movsb			; Rep zf=0+cx >0 Mov [si] to es:[di]
		xor	al,al			; Zero register
		mov	cx,1Bh
		mov	di,offset data_220
		repne	stosb			; Rep zf=0+cx >0 Store al to es:[di]
loc_229:
		add	word ptr ds:[21Fh],200h
		mov	word ptr ds:[21Dh],0
		retn
sub_49		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_51		proc	near
		mov	al,data_65
		dec	al
		cbw				; Convrt byte to word
		mov	bl,4
		div	bl			; al, ah rem = ax/reg
		mov	cl,ah
		cbw				; Convrt byte to word
		mov	di,ax
		rol	cl,1			; Rotate
		add	cl,data_64
		mov	al,80h
		ror	al,cl			; Rotate
		or	byte ptr ds:[139h][di],al
		retn
sub_51		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_52		proc	near
		mov	data_65,0
		mov	data_64,0
		mov	data_66,1
		mov	data_94,0
		mov	data_63,0
		mov	data_59,0F6h
		retn
sub_52		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_53		proc	near
		xor	al,al			; Zero register
		mov	cx,200h
		mov	di,offset data_214
		cld				; Clear direction
		repne	stosb			; Rep zf=0+cx >0 Store al to es:[di]
		retn
sub_53		endp

		mov	di,data_100
		mov	ax,0D1BAh
		cld				; Clear direction
		stosw				; Store ax to es:[di]
		stosw				; Store ax to es:[di]
		mov	ax,data_54
		stosw				; Store ax to es:[di]
		mov	data_100,di
		inc	data_95
		inc	data_99
		retn

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_54		proc	near
		mov	word ptr data_98,0
		mov	si,offset 139h
		cld				; Clear direction
loc_230:
		lodsb				; String [si] to al
		mov	cl,4
loc_231:
		mov	ah,al
		and	ah,3
		cmp	ah,3
		je	loc_232			; Jump if equal
		cmp	ah,0
		je	loc_233			; Jump if equal
		mov	bl,data_56
		call	sub_57
		jmp	short loc_233
		db	90h
loc_232:
		mov	bl,data_56
		shl	bl,1			; Shift w/zeros fill
		call	sub_57
loc_233:
		dec	cl
		jz	loc_234			; Jump if zero
		shr	al,1			; Shift w/zeros fill
		shr	al,1			; Shift w/zeros fill
		jmp	short loc_231
loc_234:
		cmp	si,14Dh
		jl	loc_230			; Jump if <
		retn
sub_54		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_55		proc	near
		push	cx
		mov	al,byte ptr ds:[2423h]
		cbw				; Convrt byte to word
		mov	bx,ax
		mov	al,data_53
		cbw				; Convrt byte to word
		add	ax,word ptr ds:[223h]
		xor	dx,dx			; Zero register
		div	bx			; ax,dx rem=dx:ax/reg
		call	sub_59
		xor	dx,dx			; Zero register
		mov	bx,2
		div	bx			; ax,dx rem=dx:ax/reg
		call	sub_58
		mov	bx,3
		mul	bx			; dx:ax = reg * ax
		add	ax,3
		add	ax,cx
		pop	cx
		retn
sub_55		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_56		proc	near
		mov	ah,data_95
		inc	ah
		call	sub_47
		mov	data_190,ax
		retn
sub_56		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_57		proc	near
		xor	bh,bh			; Zero register
		cmp	data_56,9
		jne	loc_235			; Jump if not equal
		clc				; Clear carry flag
		rcr	bx,1			; Rotate thru carry
		adc	bx,0
loc_235:
		add	word ptr data_98,bx
		retn
sub_57		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_58		proc	near
		cmp	dx,0
		je	loc_236			; Jump if equal
		mov	cx,1
		retn
loc_236:
		mov	cx,dx
		retn
sub_58		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_59		proc	near
		test	al,1
		jz	loc_237			; Jump if zero
		mov	word ptr ds:[229h],2
		retn
loc_237:
		mov	word ptr ds:[229h],0
		retn
sub_59		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_60		proc	near
		mov	di,offset 139h
		xor	al,al			; Zero register
		mov	cx,14h
		cld				; Clear direction
		repne	stosb			; Rep zf=0+cx >0 Store al to es:[di]
		retn
sub_60		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_61		proc	near
		mov	si,data_31
		mov	bx,offset data_41
		mov	al,[bx+si]
		mov	byte ptr ds:[2423h],al
		mov	bx,offset data_47
		mov	al,[bx+si]
		mov	byte ptr ds:[242Bh],al
		mov	bx,offset data_39
		mov	al,[bx+si]
		mov	data_71,al
		mov	bx,offset data_43
		mov	al,[bx+si]
		mov	data_55,al
		mov	bx,offset data_44
		mov	al,[bx+si]
		mov	data_56,al
		and	ax,0FFh
		mov	word ptr ds:[242Eh],ax
		mov	bx,offset data_45
		mov	al,[bx+si]
		mov	data_57,al
		mov	bx,offset data_46
		mov	al,[bx+si]
		mov	data_58,al
		mov	bx,offset data_52
		mov	al,[bx+si]
		mov	data_53,al
		shl	si,1			; Shift w/zeros fill
		mov	bx,offset data_48
		mov	ax,[bx+si]
		mov	word ptr ds:[2427h],ax
		mov	bx,offset data_40
		mov	ax,[bx+si]
		mov	data_61,ax
		mov	bx,offset data_37
		mov	ax,[bx+si]
		mov	word ptr data_60,ax
		mov	bx,69h
		mov	ax,[bx+si]
		mov	word ptr ds:[2429h],ax
		mov	bx,offset data_50
		mov	ax,[bx+si]
		mov	word ptr ds:[242Ch],ax
		mov	bx,offset data_51
		mov	ax,[bx+si]
		mov	data_54,ax
		mov	ah,4
		int	1Ah			; Real time clock   ah=func 04h
						;  get date  cx=year, dx=mon/day
		mov	word ptr ds:[243Fh],dx
		cmp	data_31,0
		jne	loc_238			; Jump if not equal
		mov	word ptr ds:[216h],143h
		retn
loc_238:
		mov	word ptr ds:[216h],14Dh
		retn
sub_61		endp

		jmp	short loc_239
		nop
		inc	dx
		inc	si
		dec	di
		push	dx
		dec	bp
		inc	cx
		push	sp
		and	[bx+si],al
		add	al,[bx+si]
		add	[bx+si],ax
		add	al,[bx+si]
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	al,[bx+si]
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		add	[bx+si],al
		sub	[bx+si],ax
		add	[bx+si],al
		add	[bp+4Fh],cl
		db	' NAME    FAT12   ', 0Dh, 0Ah, ' '
		db	'Non-System Disk ...', 0Dh, 0Ah, ' '
		db	'Replace And Press Any Key When R'
		db	'eady...', 0Dh, 0Ah, 0
loc_239:
		xor	ax,ax			; Zero register
		cli				; Disable interrupts
		mov	ss,ax
		mov	sp,7C00h
		sti				; Enable interrupts
		push	cs
		pop	ds
		mov	si,data_234e
		cld				; Clear direction
loc_240:
		lodsb				; String [si] to al
		test	al,al
		jz	loc_241			; Jump if zero
		mov	ah,0Eh
		xor	bx,bx			; Zero register
		int	10h			; Video display   ah=functn 0Eh
						;  write char al, teletype mode
		jmp	short loc_240
loc_241:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		int	19h			; Bootstrap loader
		db	347 dup (0)
		db	 55h,0AAh

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_62		proc	near
		mov	byte ptr ds:[22Fh],1
		mov	ds,data_25
		mov	al,0FFh
		mov	ds:dsk_motor_tmr_,al
		mov	al,ds:dsk_motor_stat_
		and	al,0Fh
		push	cs
		pop	ds
		cmp	al,0
		je	loc_242			; Jump if equal
		retn
loc_242:
		mov	cl,data_29
		mov	al,10h
		shl	al,cl			; Shift w/zeros fill
		mov	ah,al
		or	al,cl
		or	al,0Ch
		mov	dx,3F2h
		out	dx,al			; port 3F2h, dsk0 contrl output
		mov	cl,4
		rol	ah,cl			; Rotate
		mov	ds,data_25
		mov	ds:dsk_motor_stat_,ah
		push	cs
		pop	ds
		mov	byte ptr ds:[22Dh],2
		call	sub_7
		retn
sub_62		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_63		proc	near
		pop	ax
		mov	data_86,ax
		call	sub_62
		call	sub_67
		jmp	short loc_243
		db	90h

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_64:
		pop	ax
		mov	data_86,ax
		mov	data_63,0
		call	sub_62
		call	sub_66
loc_243:
		call	sub_79
		call	sub_68
		jc	loc_244			; Jump if carry Set
		jmp	data_86
loc_244:
		clc				; Clear carry flag
		jmp	loc_123
sub_63		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_65		proc	near
		pop	ax
		mov	data_88,ax
		call	sub_64
		test	data_73,0C0h
		jz	loc_245			; Jump if zero
		call	sub_64
		test	data_73,0C0h
		jz	loc_245			; Jump if zero
		jmp	loc_123
loc_245:
		mov	al,data_65
		cmp	data_31,0
		jne	loc_246			; Jump if not equal
		shl	al,1			; Shift w/zeros fill
loc_246:
		mov	data_63,al
		call	sub_63
		jmp	data_88

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_66:
		mov	ah,7
		call	sub_71
		mov	ah,data_29
		call	sub_71
		retn
sub_65		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_67		proc	near
		mov	ah,0Fh
		call	sub_71
		mov	ah,data_29
		call	sub_71
		mov	ah,data_63
		call	sub_71
		retn
sub_67		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_68		proc	near
		mov	ah,8
		call	sub_71
		call	sub_70
		mov	data_73,al
		call	sub_70
		mov	data_72,al
		retn
sub_68		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_69		proc	near
		call	sub_70
		mov	data_73,al
		call	sub_70
		mov	data_74,al
		call	sub_70
		mov	data_75,al
		call	sub_70
		mov	data_77,al
		call	sub_70
		mov	data_78,al
		call	sub_70
		mov	data_79,al
		call	sub_70
		mov	data_80,al
		retn
sub_69		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_70		proc	near
		mov	dx,3F4h
		xor	cx,cx			; Zero register

locloop_247:
		in	al,dx			; port 3F4h, dsk0 cntrlr status
		and	al,0C0h
		cmp	al,0C0h
		je	loc_248			; Jump if equal
		loop	locloop_247		; Loop if cx > 0

		pop	ax
		stc				; Set carry flag
		retn
loc_248:
		inc	dx
		in	al,dx			; port 3F5h, dsk0 controlr data
		clc				; Clear carry flag
		retn
sub_70		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_71		proc	near
		mov	dx,3F4h
		xor	cx,cx			; Zero register

locloop_249:
		in	al,dx			; port 3F4h, dsk0 cntrlr status
		and	al,0C0h
		cmp	al,80h
		je	loc_250			; Jump if equal
		loop	locloop_249		; Loop if cx > 0

		pop	ax
		stc				; Set carry flag
		retn
loc_250:
		mov	al,ah
		inc	dx
		out	dx,al			; port 3F5h, dsk0 controlr data
		clc				; Clear carry flag
		retn
sub_71		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_72		proc	near
		mov	dx,3F7h
		mov	al,data_71
		out	dx,al			; port 3F7h ??I/O Non-standard
		retn
sub_72		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_73		proc	near
		mov	al,2
		out	0Ch,al			; port 0Ch, DMA-1 clr byte ptr
		jmp	short $+2		; delay for I/O
		mov	al,ah
		out	0Bh,al			; port 0Bh, DMA-1 mode reg
		mov	bx,data_68
		push	cs
		pop	ax
		mov	cl,4
		rol	ax,cl			; Rotate
		mov	ch,al
		and	al,0F0h
		add	ax,bx
		jnc	loc_251			; Jump if carry=0
		inc	ch
loc_251:
		out	4,al			; port 4, DMA-1 bas&add ch 2
		jmp	short $+2		; delay for I/O
		mov	al,ah
		out	4,al			; port 4, DMA-1 bas&add ch 2
		jmp	short $+2		; delay for I/O
		mov	al,ch
		and	al,0Fh
		out	81h,al			; port 81h, DMA page reg ch 2
		mov	ax,data_67
		out	5,al			; port 5, DMA-1 bas&cnt ch 2
		jmp	short $+2		; delay for I/O
		mov	al,ah
		out	5,al			; port 5, DMA-1 bas&cnt ch 2
		jmp	short $+2		; delay for I/O
		mov	al,2
		out	0Ah,al			; port 0Ah, DMA-1 mask reg bit
		retn
sub_73		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_74		proc	near
		pop	ax
		mov	data_86,ax
		mov	data_68,28E9h
		mov	data_67,1FFh
		mov	data_69,46h		; 'F'
		mov	data_70,0E6h
		call	sub_62
		call	sub_72
		mov	ah,data_69
		call	sub_73
		call	sub_76
		jc	loc_252			; Jump if carry Set
		call	sub_79
		call	sub_69
		jc	loc_252			; Jump if carry Set
		jmp	data_86
loc_252:
		clc				; Clear carry flag
		call	sub_7
		jmp	loc_123
sub_74		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_75		proc	near
		pop	ax
		mov	data_86,ax
		call	sub_62
		call	sub_72
		mov	ah,data_69
		call	sub_73
		call	data_85
		jc	loc_253			; Jump if carry Set
		call	sub_79
		call	sub_69
		jc	loc_253			; Jump if carry Set
		jmp	data_86
loc_253:
		clc				; Clear carry flag
		call	sub_7
		jmp	loc_123
sub_75		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_76		proc	near
		mov	ah,data_70
		call	sub_71
		mov	ah,data_29
		cmp	data_64,0
		je	loc_254			; Jump if equal
		or	ah,4
loc_254:
		call	sub_71
		mov	ah,data_65
		call	sub_71
		mov	ah,data_64
		call	sub_71
		mov	ah,data_66
		call	sub_71
		mov	ah,2
		call	sub_71
		mov	ah,data_56
		call	sub_71
		mov	ah,data_57
		call	sub_71
		mov	ah,0FFh
		call	sub_71
		retn
sub_76		endp

		mov	ah,4Dh			; 'M'
		call	sub_71
		mov	ah,data_29
		cmp	data_64,0
		je	loc_255			; Jump if equal
		or	ah,4
loc_255:
		call	sub_71
		mov	ah,2
		call	sub_71
		mov	ah,data_56
		call	sub_71
		mov	ah,data_58
		call	sub_71
		mov	ah,data_59
		call	sub_71
		retn

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_77		proc	near
		mov	ah,4
		call	sub_71
		mov	ah,data_29
		call	sub_71
		call	sub_70
		mov	data_76,al
		retn
sub_77		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_78		proc	near
		pop	ax
		mov	data_87,ax
		call	sub_48
		mov	ax,data_61
		mov	data_67,ax
		mov	data_68,14Dh
		mov	data_69,4Ah		; 'J'
		mov	data_85,2837h
		call	sub_75
		test	data_73,0C0h
		jnz	loc_256			; Jump if not zero
		jmp	data_87
loc_256:
		test	data_74,2
		jz	loc_257			; Jump if zero
		jmp	loc_86
loc_257:
		cmp	data_94,2
		jne	loc_258			; Jump if not equal
		mov	data_94,0
		jmp	loc_93
loc_258:
		inc	data_94
		call	sub_65
		test	data_73,0C0h
		jnz	loc_259			; Jump if not zero
		jmp	data_82
loc_259:
		jmp	loc_123
sub_78		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_79		proc	near
		mov	cx,18h

locloop_260:
		call	sub_7
		cmp	byte ptr ds:[22Fh],0
		jne	loc_261			; Jump if not equal
		retn
loc_261:
		loop	locloop_260		; Loop if cx > 0

		pop	ax
		jmp	loc_123
sub_79		endp

data_214	db	0
data_215	dw	0
		db	8 dup (0)
data_217	dw	0
		db	26 dup (0)
data_218	dw	0
data_219	dw	0
		db	469 dup (0)
data_220	db	0
		db	154 dup (0)
data_221	db	0Dh, 0Ah, ' Mem Resident Format A'
		db	'lready Installed', 0Dh, 0Ah, 'Al'
		db	't + Left Shift + Right Shift Wil'
		db	'l Activate', 0Dh, 0Ah, '$'
data_222	db	0Dh, 0Ah, 'Background Formatter I'
		db	's Installed', 0Dh, 0Ah, 'Alt + L'
		db	'eft Shift + Right Shift Will Act'
		db	'ivate', 0Dh, 0Ah, '$'
data_223	db	0Dh, 0Ah, 'No Diskette Drive Conn'
		db	'ect', 0Dh, 0Ah, 'Program Termina'
		db	'ted !', 0Dh, 0Ah, '$'
		db	'There Are '
data_224	db	0
		db	' Diskette Drives Connected'
		db	0
data_225	db	0
		db	 20h,0C4h
		db	14 dup (0C4h)
data_227	db	' ', 0
		db	'Is This Configuration Correct ? '
		db	'[Y]', 0
		db	'How Many Diskette Drives ( Not I'
		db	'nclude Fixed Disk ) ?', 0
		db	'DRIVE ', 0
		db	' ( 0 - 360K, 1 - 1.2M, 2 - 720K,'
		db	' 3 - 1.44M ) ?', 0
loc_262:
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_86
		mov	word ptr ds:[1E2h],cs
		mov	word ptr ds:[1E4h],cs
		mov	word ptr ds:[1DAh],cs
		mov	word ptr ds:[1E0h],cs
		mov	word ptr data_24,0EBFEh
		cli				; Disable interrupts
		mov	word ptr ds:[1E6h],ss
		mov	word ptr ds:[1E8h],sp
		push	cs
		pop	ss
		mov	sp,2B84h
		mov	ax,202h
		push	ax
		push	cs
		mov	ax,data_81
		push	ax
		mov	word ptr ds:[1DCh],sp
		mov	ss,word ptr ds:[1E6h]
		mov	sp,word ptr ds:[1E8h]
		sti				; Enable interrupts
		call	sub_80
		call	sub_23
		call	sub_88
		call	sub_24
		mov	al,0Eh
		mov	si,19Dh
		mov	dx,12CCh
		call	sub_87
		mov	al,13h
		mov	si,1A1h
		mov	dx,12E6h
		call	sub_87
		mov	al,9
		mov	si,199h
		mov	dx,127Ah
		call	sub_87
		mov	al,8
		mov	si,195h
		mov	dx,11E0h
		call	sub_87
		mov	dx,offset data_222	; ('')
		mov	ah,9
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
		mov	al,0
		mov	dx,2B84h
		mov	cl,4
		shr	dx,cl			; Shift w/zeros fill
		add	dx,11h
		mov	ah,31h			; '1'
		int	21h			; DOS Services  ah=function 31h
						;  terminate & stay resident
						;   al=return code,dx=paragraphs

;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_80		proc	near
		push	es
		mov	es,cs:data_25
		mov	dx,es:video_port_
		add	dx,6
		mov	cs:data_90,dx
		pop	es
		int	11h			; Put equipment bits in ax
		mov	bh,al
		and	bh,30h			; '0'
		mov	data_91,0B800h
		cmp	bh,30h			; '0'
		jne	loc_263			; Jump if not equal
		mov	data_91,0B000h
loc_263:
		mov	bh,al
		and	bh,1
		and	ax,0C0h
		shl	ax,1			; Shift w/zeros fill
		shl	ax,1			; Shift w/zeros fill
		add	ah,bh
		cmp	ah,0
		jne	loc_264			; Jump if not equal
		mov	dx,offset data_223	; ('')
		mov	ah,9
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
		jmp	loc_277
loc_264:
		mov	al,ah
		cmp	al,3
		jl	loc_265			; Jump if <
		mov	al,2
loc_265:
		mov	data_28,al
		or	al,30h			; '0'
		mov	data_224,al
		call	sub_81
		retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_81:
		push	ax
		push	es
		push	di
		mov	bx,0Dh
		mov	dx,0
loc_266:
		mov	si,dx
		push	ax
		push	bx
		push	dx
		mov	ah,8
		int	13h			; Disk  dl=drive a  ah=func 08h
						;  get drive parameters, bl=type
						;   cx=cylinders, dh=max heads
						;   es:di= ptr to drive table
		jc	loc_267			; Jump if carry Set
		mov	al,bl
		dec	al
		pop	dx
		pop	bx
		mov	[bx+si],al
		pop	ax
		dec	ah
		jz	loc_268			; Jump if zero
		inc	dx
		jmp	short loc_266
loc_267:
		add	sp,6
loc_268:
		pop	di
		pop	es
		pop	ax
		retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_82:
		mov	al,41h			; 'A'
		mov	dx,0C1Dh
		mov	di,0
		call	sub_85
		retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_83:
		call	sub_82
		call	sub_84
		retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_84:
		mov	al,42h			; 'B'
		mov	dx,0E1Dh
		mov	di,1
		call	sub_85
		retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_85:
		mov	data_225,al
		mov	si,2C8Bh
		call	sub_14
		mov	al,[di+0Dh]
		nop				;*ASM fixup - displacement
		cbw				; Convrt byte to word
		add	ax,ax
		mov	si,ax
		mov	bx,offset data_32
		mov	si,[bx+si]
		call	sub_15
		retn

;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß

sub_86:
		mov	ah,51h			; 'Q'
		int	21h			; DOS Services  ah=function 51h
						;  get active PSP segment in bx
						;*  undocumented function
		mov	data_231,bx
		mov	ax,300Eh
		mov	data_232,ax
		xor	ax,ax			; Zero register
loc_269:
		mov	ds,ax
		xor	si,si			; Zero register
		cld				; Clear direction
		lodsb				; String [si] to al
		cmp	al,4Dh			; 'M'
		je	loc_271			; Jump if equal
loc_270:
		push	ds
		pop	ax
		inc	ax
		jmp	short loc_269
loc_271:
		push	ds
		mov	si,data_3e
		lodsw				; String [si] to ax
		pop	bx
		add	bx,ax
		inc	bx
		jc	loc_270			; Jump if carry Set
		cmp	cs:data_231,bx
		jb	loc_270			; Jump if below
		push	ds
		mov	ds,bx
		cmp	byte ptr ds:data_17e,4Dh	; 'M'
		nop				;*ASM fixup - sign extn byte
		je	loc_272			; Jump if equal
		pop	ds
		jmp	short loc_270
loc_272:
		mov	di,cs:data_232
		push	cs
		pop	es
		mov	bx,ds
		pop	ds
		mov	ax,ds
		stosw				; Store ax to es:[di]
		mov	ax,bx
		stosw				; Store ax to es:[di]
		mov	ds,bx
loc_273:
		push	ds
		mov	si,data_3e
		lodsw				; String [si] to ax
		pop	bx
		add	bx,ax
		inc	bx
		mov	ax,bx
		stosw				; Store ax to es:[di]
		mov	ds,bx
		xor	si,si			; Zero register
		lodsb				; String [si] to al
		cmp	al,5Ah			; 'Z'
		jne	loc_273			; Jump if not equal
		xor	ax,ax			; Zero register
		stosw				; Store ax to es:[di]
		push	cs
		pop	ds
		mov	si,di
		sub	si,6
		lodsw				; String [si] to ax
		mov	data_26,ax
		lodsw				; String [si] to ax
		mov	data_27,ax
		mov	si,offset data_233
loc_274:
		mov	ax,[si]
		cmp	ax,0
		je	loc_275			; Jump if equal
		mov	es,ax
		mov	ax,es:data_2e
		add	ax,10h
		mov	es,ax
		mov	di,data_18e
		cmp	word ptr es:[di],0EBFEh
		je	loc_276			; Jump if equal
		add	si,2
		jmp	short loc_274
loc_275:
		push	cs
		pop	es
		retn
loc_276:
		mov	dx,offset data_221	; ('')
		mov	ah,9
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
loc_277:
		call	sub_11
		mov	ax,4C00h
		int	21h			; DOS Services  ah=function 4Ch
						;  terminate with al=return code
sub_80		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_87		proc	near
		push	es
		push	ax
		push	si
		push	dx
		mov	ah,35h			; '5'
		int	21h			; DOS Services  ah=function 35h
						;  get intrpt vector al in es:bx
		pop	dx
		pop	si
		pop	ax
		mov	[si],bx
		mov	[si+2],es
		mov	ah,25h			; '%'
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		pop	es
		retn
sub_87		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_88		proc	near
loc_278:
		call	sub_19
		mov	dh,8
		mov	dl,17h
		mov	si,2C65h
		call	sub_14
		mov	al,data_28
		cbw				; Convrt byte to word
		dec	al
		mov	di,ax
		add	di,di
		mov	bx,offset data_229
		call	word ptr [bx+di]	;*
		mov	dh,12h
		mov	dl,18h
		mov	si,2C9Eh
		call	sub_14
		call	sub_13
loc_279:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,0Dh
		je	loc_ret_282		; Jump if equal
		cmp	al,1Bh
		jne	loc_280			; Jump if not equal
		jmp	short loc_ret_282
		db	90h
loc_280:
		and	al,0DFh
		cmp	al,59h			; 'Y'
		je	loc_ret_282		; Jump if equal
		cmp	al,4Eh			; 'N'
		je	loc_281			; Jump if equal
		call	sub_11
		jmp	short loc_279
loc_281:
		call	sub_89

loc_ret_282:
		retn
sub_88		endp


;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
;			       SUBROUTINE
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ

sub_89		proc	near
		call	sub_19
		mov	dh,12h
		mov	dl,0Eh
		mov	si,2CC2h
		call	sub_14
		call	sub_13
loc_283:
		mov	ah,0
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,31h			; '1'
		jge	loc_285			; Jump if > or =
loc_284:
		call	sub_11
		jmp	short loc_283
loc_285:
		cmp	al,32h			; '2'
		jg	loc_284			; Jump if >
		mov	data_224,al
		and	al,0Fh
		mov	data_28,al
		cbw				; Convrt byte to word
		push	ax
		mov	dh,8
		mov	dl,17h
		mov	si,2C65h
		call	sub_14
		mov	al,41h			; 'A'
		mov	byte ptr data_227+62h,al	; ('')
		xor	di,di			; Zero register
		mov	bx,0Dh
loc_286:
		mov	dh,12h
		mov	dl,0Eh
		mov	si,2CF8h
		call	sub_14
		call	sub_13
		mov	al,33h			; '3'
		mov	data_102,al
		mov	data_89,2FCDh
		call	sub_16
		mov	[bx+di],al
		push	bx
		push	di
		shl	di,1			; Shift w/zeros fill
		mov	bx,offset data_229
		call	word ptr [bx+di]	;*
		pop	di
		pop	bx
		inc	di
		pop	ax
		cmp	di,ax
		je	loc_287			; Jump if equal
		push	ax
		inc	byte ptr data_227+62h	; ('')
		jmp	short loc_286
loc_287:
		pop	ax
		jmp	loc_278
sub_89		endp

data_229	dw	offset sub_82
data_230	dw	offset sub_83
data_231	dw	0
data_232	dw	0
data_233	dw	100 dup (0)

seg_a		ends



		end	start