
PAGE  59,132

;==========================================================================
;==					                                 ==
;==				MM	                                 ==
;==					                                 ==
;==      Created:   4-Feb-15		                                 ==
;==      Passes:    9          Analysis	Options on: U                    ==
;==					                                 ==
;==========================================================================

target		EQU   'T2'                      ; Target assembler: TASM-2.X

include  srmacros.inc


; The following equates show data references outside the range of the program.

data_1e		equ	0A0h
video_segment_	equ	44Eh
data_2e		equ	43C7h			;*
data_3e		equ	18h
PSP_envirn_seg	equ	2Ch
PSP_cmd_size	equ	80h
data_4e		equ	81h
data_5e		equ	83h
data_6e		equ	95h
data_7e		equ	96h
data_8e		equ	98h
data_9e		equ	9Ah
data_10e	equ	9Ch
data_11e	equ	9Eh
data_115e	equ	556Ah			;*
data_116e	equ	557Eh			;*
data_117e	equ	5580h			;*
data_118e	equ	5582h			;*
data_119e	equ	5584h			;*
data_120e	equ	5606h			;*
data_121e	equ	5607h			;*
data_122e	equ	5609h			;*
data_124e	equ	560Bh			;*
data_125e	equ	560Dh			;*
data_126e	equ	5611h			;*
data_127e	equ	561Dh			;*
data_128e	equ	561Eh			;*
data_129e	equ	5620h			;*
data_130e	equ	5622h			;*
data_131e	equ	5624h			;*
data_132e	equ	5626h			;*
data_133e	equ	5628h			;*
data_134e	equ	5682h			;*
data_135e	equ	56C8h			;*
data_136e	equ	56C9h			;*
data_138e	equ	56D1h			;*
data_139e	equ	56D2h			;*
data_141e	equ	56D6h			;*
data_143e	equ	56D8h			;*
data_144e	equ	56D9h			;*
data_145e	equ	56DBh			;*
data_146e	equ	56DCh			;*
data_147e	equ	56E2h			;*
data_148e	equ	56EBh			;*
data_149e	equ	56ECh			;*
data_150e	equ	56EEh			;*
data_151e	equ	56F0h			;*
data_152e	equ	56F2h			;*
data_153e	equ	56F3h			;*
data_154e	equ	5774h			;*
data_155e	equ	577Ah			;*
data_156e	equ	577Ch			;*
data_157e	equ	577Eh			;*
data_158e	equ	5780h			;*
data_159e	equ	5781h			;*
data_160e	equ	5782h			;*
data_161e	equ	5783h			;*
data_162e	equ	5784h			;*
data_163e	equ	5786h			;*
data_164e	equ	5788h			;*
data_165e	equ	578Ah			;*
data_166e	equ	578Bh			;*
data_167e	equ	580Ch			;*
data_168e	equ	580Dh			;*
data_169e	equ	582Ah			;*
data_170e	equ	582Bh			;*
data_171e	equ	5833h			;*
data_172e	equ	5834h			;*
data_173e	equ	5835h			;*
data_174e	equ	5836h			;*
data_175e	equ	5837h			;*
data_176e	equ	5839h			;*
data_177e	equ	583Ah			;*
data_178e	equ	583Ch			;*
data_179e	equ	5853h			;*
data_180e	equ	5854h			;*
data_181e	equ	5856h			;*
data_182e	equ	5857h			;*
data_183e	equ	5859h			;*
data_184e	equ	5870h			;*
data_185e	equ	58F0h			;*
data_186e	equ	5970h			;*
data_187e	equ	5972h			;*
data_188e	equ	597Fh			;*
data_189e	equ	5993h			;*
data_190e	equ	5994h			;*
data_191e	equ	59A3h			;*
data_192e	equ	59A5h			;*
data_193e	equ	59A7h			;*
data_194e	equ	5A1Fh			;*
data_195e	equ	5A21h			;*
data_196e	equ	5A25h			;*
data_197e	equ	5A27h			;*
data_198e	equ	5A2Dh			;*
data_199e	equ	5A2Fh			;*
data_200e	equ	5A39h			;*
data_201e	equ	5A3Bh			;*
data_202e	equ	5A3Dh			;*
data_203e	equ	5A3Eh			;*
data_204e	equ	5A40h			;*
data_205e	equ	5A42h			;*
data_206e	equ	5A44h			;*
data_207e	equ	5A46h			;*
data_208e	equ	5A48h			;*
data_209e	equ	5A4Ah			;*
data_210e	equ	5A4Ch			;*
data_211e	equ	5A4Eh			;*
data_212e	equ	5A50h			;*
data_213e	equ	5A52h			;*
data_214e	equ	5A54h			;*
data_215e	equ	5A57h			;*
data_216e	equ	5A5Eh			;*
data_217e	equ	0A743h			;*

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


		org	100h

MM		proc	far

start:
		jmp	real_start
		db	10h, 45h, 07h		;ADC     [DI+07],AL
		db	45h		;INC     BP
loc_1:
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	bx,cs
		mov	cx,5B80h
		mov	ss,bx
		mov	sp,cx
		cmp	byte ptr cs:PSP_cmd_size,0
		jne	loc_3			; Jump if not equal
		push	ax
		mov	ax,2523h
		lds	dx,cs:data_16		; Load seg:offset ptr
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		pop	ax
		mov	ah,4Ch
		int	21h			; DOS Services  ah=function 4Ch
						;  terminate with al=return code
loc_2:
		jmp	loc_10
loc_3:
		push	cs
		pop	es
		cld				; Clear direction
		mov	ax,cs:PSP_envirn_seg
		mov	ds,ax
		xor	si,si			; Zero register
loc_4:
		mov	di,offset data_13	; ('COMSPEC=')
		cmp	byte ptr [si],0
		je	loc_2			; Jump if equal
		mov	cx,8

locloop_5:
		lodsb				; String [si] to al
		cmp	al,61h			; 'a'
		jb	loc_6			; Jump if below
		cmp	al,7Ah			; 'z'
		ja	loc_6			; Jump if above
		sub	al,20h			; ' '
loc_6:
		scasb				; Scan es:[di] for al
		jnz	loc_7			; Jump if not zero
		loop	locloop_5		; Loop if cx > 0

		mov	dx,si
		jmp	short loc_8
loc_7:
		cmp	byte ptr [si-1],0
		je	loc_4			; Jump if equal
		inc	si
		jmp	short loc_7
loc_8:
		push	ds
		push	dx
		push	cs
		pop	ds
		mov	ax,2523h
		lds	dx,cs:data_16		; Load seg:offset ptr
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		pop	dx
		pop	ds
		mov	bx,offset data_14
		mov	cs:[bx],ds
		mov	byte ptr cs:[bx+2],80h
		mov	cs:[bx+4],cs
		mov	byte ptr cs:[bx+6],5Ch	; '\'
		mov	cs:[bx+8],cs
		mov	byte ptr cs:[bx+0Ah],6Ch	; 'l'
		mov	cs:[bx+0Ch],cs
		mov	ax,4B00h
		int	21h			; DOS Services  ah=function 4Bh
						;  run progm @ds:dx, parm @es:bx
loc_9:
		mov	bx,cs
		mov	cx,5B80h
		mov	ss,bx
		mov	sp,cx
		push	cs
		pop	ds
		pushf				; Push flags
		mov	ax,2524h
		mov	dx,offset int_24h_entry
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		mov	ax,2523h
		mov	dx,offset int_1Bh_entry
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		popf				; Pop flags
		jnc	loc_11			; Jump if carry=0
loc_10:
		push	cs
		pop	ds
		mov	dx,offset data_113	; ('COMMAND.COM not started ')
		mov	ah,9
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
		call	sub_1
		jc	loc_11			; Jump if carry Set
		jmp	loc_3
loc_11:
		push	cs
		pop	ds
		push	cs
		pop	es
		cld				; Clear direction
		mov	byte ptr ds:PSP_cmd_size,0
		or	byte ptr data_19,2
		jmp	loc_15
;		db	0F8h		;CLC
		clc
;		db	0EBh,0BBh	;JMP     0198
		jmp	loc_9

MM		endp

;==========================================================================
;
;                       External Entry Point
;
;==========================================================================

int_24h_entry	proc	far
		xor	al,al			; Zero register
		iret				; Interrupt return
int_24h_entry	endp


;==========================================================================
;
;                       External Entry Point
;
;==========================================================================

int_1Bh_entry	proc	far
		cmp	cs:data_18,0
		jne	loc_ret_12		; Jump if not equal
		mov	cs:data_18,0FFFFh

loc_ret_12:
		iret				; Interrupt return
int_1Bh_entry	endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_1		proc	near
		push	ax
		push	dx
loc_13:
		xor	ah,ah			; Zero register
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		cmp	al,0Dh
		je	loc_14			; Jump if equal
		cmp	al,1Bh
		jne	loc_13			; Jump if not equal
		stc				; Set carry flag
loc_14:
		pop	dx
		pop	ax
		retn
sub_1		endp

		db	59 dup (0)
data_13		db	'COMSPEC='
data_14		db	0
		db	0
		db	12 dup (0)
data_16		dd	00000h
data_18		dw	0
data_19		db	0

;==========================================================================
;
;                       External Entry Point
;
;==========================================================================

real_start:
		mov	dx,offset data_111	; ('Mikro Manazer V 1.0; (c)')
		mov	ah,9
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
loc_15:
		push	cs
		pop	ds
		push	cs
		pop	es
		cld				; Clear direction
		sti				; Enable interrupts
		mov	data_18,0FFFEh
		mov	dx,PSP_cmd_size
		mov	ah,1Ah
		int	21h			; DOS Services  ah=function 1Ah
						;  set DTA(disk xfer area) ds:dx
		call	sub_2	;29b
		call	sub_3	;2a5	; Sub does not return here
;		db	0E8h,0ACh, 00h	;329
		call	sub_4
;		db	0E8h, 5Dh, 01h	;3dd
		call	sub_6
;		db	0E8h, 97h, 01h	;41a
		call	sub_7
;		db	0E8h,0A3h, 01h	;429
		call	sub_8
;		db	0E8h,0DFh, 01h	;468
		call	sub_9
;		db	0E8h,0F1h, 01h	;47d
		call	sub_10
;		db	0E8h, 04h, 02h	;493
		call	sub_11
;		db	0C7h, 06h, 57h,02h,0FEh,0FFh	;MOV     WORD PTR [0257],FFFE
		mov	data_18,0FFFEh
;		db	0E8h, 37h, 35h	;37cf
		call	sub_222-4
;		db	0E9h, 51h, 35h	;jmp 37ec
		jmp s_37ec

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_2		proc	near
		mov	ah,30h
		int	21h			; DOS Services  ah=function 30h
						;  get DOS version number ax
		xchg	al,ah
		mov	ds:data_128e,ax
		retn
sub_2		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

;      Note: Subroutine does not return	to instruction after call

sub_3		proc	near
		mov	bx,5B80h
		add	bx,0Fh
		mov	cl,4
		shr	bx,cl			; Shift w/zeros fill
		mov	ah,4Ah
		int	21h			; DOS Services  ah=function 4Ah
						;  change memory allocation
						;   bx=bytes/16, es=mem segment
		jc	loc_17			; Jump if carry Set
		mov	ah,48h			; 'H'
		mov	bx,0FFFFh
		int	21h			; DOS Services  ah=function 48h
						;  allocate memory, bx=bytes/16
		mov	ah,48h
		int	21h			; DOS Services  ah=function 48h
						;  allocate memory, bx=bytes/16
		jc	loc_17			; Jump if carry Set
		cmp	bx,400h
		jb	loc_17			; Jump if below
		mov	ds:data_130e,ax
		add	ax,bx
		sub	ax,100h
		mov	ds:data_132e,ax
		pop	bx
		mov	cx,1000h
		mov	ss,ax
		mov	sp,cx
		push	cx
		push	word ptr ds:data_128e
		push	word ptr ds:data_130e
		push	word ptr ds:data_132e
		mov	di,43FFh
		test	data_19,2
		jz	loc_16			; Jump if zero
		mov	di,data_128e
loc_16:
		mov	cx,5A5Eh
		sub	cx,di
		xor	al,al			; Zero register
		rep	stosb			; Rep when cx >0 Store al to es:[di]
		pop	word ptr ds:data_132e
		pop	word ptr ds:data_130e
		pop	word ptr ds:data_128e
		pop	word ptr ds:data_129e
		mov	ax,ds:data_130e
		mov	ds:data_131e,ax
		mov	word ptr ds:data_118e,82h
		jmp	bx			;*Register jump
loc_17:
		pop	ax
		mov	dx,offset data_101	; ('Not enough memory !')
		mov	ah,9
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
		mov	ax,4C01h
		int	21h			; DOS Services  ah=function 4Ch
						;  terminate with al=return code

;==== External Entry into Subroutine ======================================

sub_4:
		mov	ah,0Fh
		int	10h			; Video display   ah=functn 0Fh
						;  get state, al=mode, bh=page
						;   ah=columns on screen
		and	al,7Fh
		cmp	al,3
		je	loc_18			; Jump if equal
		or	byte ptr data_105,20h	; ' '
		cmp	al,2
		je	loc_19			; Jump if equal
		cmp	al,7
		je	loc_19			; Jump if equal
		mov	ax,3
		int	10h			; Video display   ah=functn 00h
						;  set display mode in al
loc_18:
		and	byte ptr data_105,0DFh
loc_19:
		mov	byte ptr ds:data_148e,7
		mov	al,0Dh
		call	sub_223
		mov	al,0Ah
		call	sub_223
		mov	ah,0Fh
		int	10h			; Video display   ah=functn 0Fh
						;  get state, al=mode, bh=page
						;   ah=columns on screen
		mov	ds:data_138e,bh
		push	ds
		xor	cx,cx			; Zero register
		mov	ds,cx
		mov	si,ds:video_segment_
		mov	cx,0B800h
		cmp	al,7
		jne	loc_20			; Jump if not equal
		mov	cx,0B000h
loc_20:
		pop	ds
		mov	word ptr ds:data_139e+2,cx
		mov	ds:data_139e,si
		mov	ah,3
		int	10h			; Video display   ah=functn 03h
						;  get cursor loc in dx, mode cx
		mov	ds:data_141e,dx
		call	sub_251
		mov	ds:data_143e,al
		push	ax
		call	sub_5
		mov	ds:data_145e,dl
		mov	bl,dl
		inc	bl
		mov	al,0A0h
		mul	bl			; ax = reg * al
		mov	bx,ax
		mov	ds:data_144e,ax
		pop	ax
		push	bx
		call	sub_258
		call	sub_253
		mov	es,bx
		xor	di,di			; Zero register
		pop	bx
		push	ds
		push	es
		lds	si,dword ptr cs:data_139e	; Load seg:offset ptr
		mov	cx,bx
		shr	cx,1			; Shift w/zeros fill
		cld				; Clear direction
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		pop	es
		pop	ds
		retn

;==== External Entry into Subroutine ======================================

sub_5:
		push	ax
		push	bx
		push	cx
		push	ds
		push	es
		mov	ah,12h
		mov	bl,10h
		int	10h			; Video display   ah=functn 12h
						;  EGA/VGA special, bl=function
		cmp	bl,10h
		mov	dl,18h
		jz	loc_21			; Jump if zero
		xor	bh,bh			; Zero register
		mov	ax,1130h
		int	10h			; Video display   ah=functn 11h
						;  get font type bh info into
						;   cx=points,dl=rows, es:bp=ptr
loc_21:
		pop	es
		pop	ds
		pop	cx
		pop	bx
		pop	ax
		retn

;==== External Entry into Subroutine ======================================

sub_6:
		mov	ax,351Bh
		int	21h			; DOS Services  ah=function 35h
						;  get intrpt vector al in es:bx
		mov	ds:data_136e,bx
		mov	word ptr ds:data_136e+2,es
		mov	ax,251Bh
		mov	dx,offset int_1Bh_entry
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		test	cs:data_19,3
		jnz	loc_23			; Jump if not zero
		mov	ax,3523h
		int	21h			; DOS Services  ah=function 35h
						;  get intrpt vector al in es:bx
		mov	word ptr data_16,bx
		mov	word ptr data_16+2,es
		mov	ax,2523h
		mov	dx,offset int_1Bh_entry
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
loc_23:
		mov	ax,2524h
		mov	dx,offset int_24h_ent_1
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		push	cs
		pop	es
		retn

;==== External Entry into Subroutine ======================================

sub_7:
		mov	di,563Ch
		call	sub_287
		mov	si,data_134e
		xchg	si,di
		call	sub_262
		retn

;==== External Entry into Subroutine ======================================

sub_8:
		mov	al,byte ptr data_105+1
		and	al,0F1h
		mov	ds:data_179e,al
		mov	al,data_107
		and	al,0F1h
		mov	ds:data_174e,al
		mov	ax,5853h
		mov	ds:data_175e,ax
		mov	ax,5836h
		mov	ds:data_180e,ax
		mov	ax,data_109
		mov	ds:data_176e,al
		mov	ds:data_181e,ah
		mov	ax,563Ch
		mov	ds:data_177e,ax
		mov	ax,5682h
		mov	ds:data_182e,ax
		call	sub_251
		mov	ds:data_183e,al
		call	sub_251
		mov	ds:data_178e,al
		retn

;==== External Entry into Subroutine ======================================

sub_9:
		call	sub_247
		mov	si,offset data_111	; ('Mikro Manazer V 1.0; (c)')
		cmp	byte ptr [si],0
		je	loc_ret_24		; Jump if equal
		mov	di,ds:[bp+4]
		mov	cx,46h
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]

loc_ret_24:
		retn

;==== External Entry into Subroutine ======================================

sub_10:
		mov	si,43E3h
		test	byte ptr data_105,20h	; ' '
		jz	loc_25			; Jump if zero
		mov	si,offset data_104
loc_25:
		mov	di,data_124e
		mov	cx,13h
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		retn

;==== External Entry into Subroutine ======================================

sub_11:
		mov	di,data_146e
		mov	ax,56F3h
		stosw				; Store ax to es:[di]
		mov	ax,cs
		stosw				; Store ax to es:[di]
		mov	ax,78h
		stosw				; Store ax to es:[di]
		mov	di,data_154e
		mov	ax,578Bh
		stosw				; Store ax to es:[di]
		mov	ax,cs
		stosw				; Store ax to es:[di]
		mov	ax,7Fh
		stosw				; Store ax to es:[di]
		retn

;==== External Entry into Subroutine ======================================

sub_12:
		push	si
		push	ax
		push	dx
		push	cs
		pop	ds
		mov	ax,2524h
		mov	dx,offset int_24h_entry
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		push	cs:data_105
		and	byte ptr cs:data_105,0FBh
		xor	dx,dx			; Zero register
		call	sub_238
		inc	cx

locloop_26:
		push	cx
		mov	cl,50h			; 'P'
		call	sub_56
		inc	dh
		pop	cx
		loop	locloop_26		; Loop if cx > 0

		pop	cs:data_105
		mov	dx,cs:data_141e
		cmp	dh,cs:data_145e
		jbe	loc_27			; Jump if below or =
		mov	dh,cs:data_145e
loc_27:
		xor	al,al			; Zero register
		call	sub_229
		call	sub_245
		mov	si,ds:[bp+4]
		call	sub_288
		mov	es,cs:data_130e
		mov	ah,49h
		int	21h			; DOS Services  ah=function 49h
						;  release memory block, es=seg
		push	cs
		pop	es
		mov	ax,251Bh
		lds	dx,dword ptr cs:data_136e	; Load seg:offset ptr
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		push	cs
		pop	ds
		pop	dx
		pop	ax
		pop	si
		retn

;==== External Entry into Subroutine ======================================

sub_13:
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_16
		mov	al,ds:data_179e
		mov	byte ptr data_105+1,al
		mov	al,ds:data_174e
		mov	data_107,al
		call	sub_247
		mov	si,ds:[bp+4]
		mov	di,offset data_111	; ('Mikro Manazer V 1.0; (c)')
		call	sub_262
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn

;==== External Entry into Subroutine ======================================

sub_14:
		pushf				; Push flags
		push	si
		push	ds
		call	sub_80
		jc	loc_28			; Jump if carry Set
		call	sub_15
loc_28:
		pop	ds
		pop	si
		popf				; Pop flags
		retn

;==== External Entry into Subroutine ======================================

sub_15:
		push	ax
		push	bx
		push	cx
		push	si
		push	di
		push	es
		push	cs
		pop	es
		mov	di,5556h
		mov	bx,557Eh
		mov	ax,43FCh
		cmp	bp,data_174e
		jne	loc_29			; Jump if not equal
		mov	di,data_115e
		mov	bx,data_117e
		mov	ax,43FBh
loc_29:
		mov	cx,14h
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		mov	di,ax
		mov	al,cs:[bp+3]
		stosb				; Store al to es:[di]
		mov	ax,cs:[bp+9]
		mov	cs:[bx],ax
		pop	es
		pop	di
		pop	si
		pop	cx
		pop	bx
		pop	ax
		retn

;==== External Entry into Subroutine ======================================

sub_16:
		push	bp
		call	sub_247
		call	sub_14
		call	sub_245
		call	sub_14
		pop	bp
		retn
		db	0, 0
sub_3		endp


;==========================================================================
;
;                       External Entry Point
;
;==========================================================================

int_24h_ent_1	proc	far
		cmp	byte ptr cs:data_18,0
		je	loc_30			; Jump if equal
		xor	al,al			; Zero register
		iret				; Interrupt return
int_24h_ent_1	endp

loc_30:
		or	byte ptr cs:data_135e,4
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	bp
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	dl,ah
		xor	dh,dh			; Zero register
		add	di,13h
		mov	cx,di
		push	cx
		mov	di,data_216e
		mov	si,offset data_74	; ('  ERROR !')
		call	sub_262
		mov	si,40DCh
		cmp	cx,13h
		je	loc_31			; Jump if equal
		mov	si,40EEh
		cmp	cx,15h
		je	loc_31			; Jump if equal
		mov	si,4100h
		cmp	cx,17h
		je	loc_31			; Jump if equal
		mov	si,410Dh
		cmp	cx,1Bh
		je	loc_31			; Jump if equal
		mov	si,offset data_78	; ('Unknown error ... ')
		call	sub_262
		push	dx
		mov	ax,cx
		xor	dx,dx			; Zero register
		call	sub_277
		mov	si,offset data_79
		call	sub_262
		pop	ax
		xor	dx,dx			; Zero register
		call	sub_277
		jmp	short loc_32
loc_31:
		call	sub_262
loc_32:
		mov	di,5A5Eh
		mov	si,413Eh
		call	sub_224
		xor	al,al			; Zero register
		call	sub_169
		jc	loc_33			; Jump if carry Set
		cmp	al,1
		cmc				; Complement carry
loc_33:
		pop	cx
		mov	bl,1
		jnc	loc_34			; Jump if carry=0
		xor	bl,bl			; Zero register
		cmp	al,2
		je	loc_34			; Jump if equal
		mov	cs:data_18,cx
		cmp	word ptr cs:data_128e,314h
		jb	loc_34			; Jump if below
		mov	bl,3
loc_34:
		mov	al,bl
		call	sub_221
		pop	es
		pop	ds
		pop	bp
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		and	byte ptr cs:data_135e,0FBh
		iret				; Interrupt return
		db	15 dup (0)

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_17		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	es
		push	ds
		mov	dx,cs:[bp+0Ch]
		xor	ch,ch			; Zero register
		mov	cl,cs:[bp+0Eh]
		mov	al,cs:[bp+0Fh]
		mov	cs:data_170e,al
		lds	di,dword ptr cs:[bp]	; Load seg:offset ptr
		add	di,cs:[bp+0Ah]
		mov	bx,cs:[bp+6]
		sub	bx,cs:[bp+0Ah]
		jnc	loc_35			; Jump if carry=0
		xor	bx,bx			; Zero register
loc_35:
		xchg	si,di
		jcxz	loc_38			; Jump if cx=0

locloop_36:
		or	bx,bx			; Zero ?
		mov	al,20h			; ' '
		jz	loc_37			; Jump if zero
		lodsb				; String [si] to al
		dec	bx
loc_37:
		push	cx
		mov	cx,1
		call	sub_233
		pop	cx
		loop	locloop_36		; Loop if cx > 0

loc_38:
		pop	ds
		pop	es
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_17		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_18		proc	near
		push	ax
		push	dx
		mov	ax,cs:[bp+8]
		sub	ax,cs:[bp+0Ah]
		add	al,cs:[bp+0Ch]
		mov	dl,al
		mov	dh,cs:[bp+0Dh]
		xor	al,al			; Zero register
		call	sub_229
		pop	dx
		pop	ax
		retn
sub_18		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_19		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		lds	si,dword ptr cs:[bp]	; Load seg:offset ptr
		mov	dx,cs:[bp+8]
		mov	cx,cs:[bp+12h]
		xor	di,di			; Zero register
		or	ax,ax			; Zero ?
		jz	loc_41			; Jump if zero
		or	ah,ah			; Zero ?
		jz	loc_39			; Jump if zero
		cmp	ax,300h
		je	loc_39			; Jump if equal
		cmp	al,20h			; ' '
		jb	loc_40			; Jump if below
		cmp	al,7Fh
		je	loc_40			; Jump if equal
loc_39:
		call	sub_27
		jmp	short loc_41
loc_40:
		mov	bx,offset data_22
		call	sub_22
		jc	loc_43			; Jump if carry Set
loc_41:
		mov	cs:[bp+8],dx
		mov	cs:[bp+12h],cx
		call	sub_21
		or	di,di			; Zero ?
		jz	loc_42			; Jump if zero
		call	sub_17
loc_42:
		call	sub_18
		call	sub_20
		clc				; Clear carry flag
loc_43:
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_19		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_20		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		mov	ax,cs:[bp+12h]
		mov	bx,cs:[bp+14h]
		mov	cl,cs:[bp+16h]
		xor	ch,ch			; Zero register
		mov	dx,cs:[bp+10h]
		cmp	bx,dx
		jb	loc_44			; Jump if below
		mov	bx,dx
		dec	bx
		mov	cs:[bp+14h],bx
loc_44:
		cmp	ax,dx
		jb	loc_46			; Jump if below
		mov	ax,dx
		dec	ax
		jns	loc_45			; Jump if not sign
		xor	ax,ax			; Zero register
loc_45:
		mov	cs:[bp+12h],ax
loc_46:
		sub	dx,cx
		jbe	loc_48			; Jump if below or =
		sub	ax,1
		jbe	loc_48			; Jump if below or =
		cmp	ax,bx
		jb	loc_49			; Jump if below
		add	ax,3
		sub	ax,cx
		jbe	loc_47			; Jump if below or =
		cmp	ax,bx
		jae	loc_49			; Jump if above or =
loc_47:
		mov	ax,bx
		jmp	short loc_49
loc_48:
		xor	ax,ax			; Zero register
		xor	dx,dx			; Zero register
loc_49:
		cmp	ax,dx
		jbe	loc_50			; Jump if below or =
		mov	ax,dx
loc_50:
		mov	cs:[bp+14h],ax
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_20		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_21		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		mov	ax,cs:[bp+8]
		mov	bx,cs:[bp+0Ah]
		mov	cl,cs:[bp+0Eh]
		xor	ch,ch			; Zero register
		mov	dx,cs:[bp+6]
		inc	dx
		sub	dx,cx
		jbe	loc_52			; Jump if below or =
		sub	ax,5
		jbe	loc_52			; Jump if below or =
		cmp	ax,bx
		jb	loc_53			; Jump if below
		add	ax,0Ah
		sub	ax,cx
		jbe	loc_51			; Jump if below or =
		cmp	ax,bx
		jae	loc_53			; Jump if above or =
loc_51:
		mov	ax,bx
		jmp	short loc_53
loc_52:
		xor	ax,ax			; Zero register
		xor	dx,dx			; Zero register
loc_53:
		cmp	ax,dx
		jbe	loc_54			; Jump if below or =
		mov	ax,dx
loc_54:
		cmp	ax,cs:[bp+0Ah]
		je	loc_55			; Jump if equal
		inc	di
		mov	cs:[bp+0Ah],ax
loc_55:
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_21		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_22		proc	near
		push	cx
		push	ax
loc_56:
		pop	ax
		push	ax
		mov	cl,cs:[bx]
		inc	bx
		or	cl,cl			; Zero ?
		jz	loc_62			; Jump if zero
		mov	ch,cl
		and	cl,7Fh
		jz	loc_56			; Jump if zero
		test	ch,80h
		jnz	loc_60			; Jump if not zero
		and	cl,3Fh			; '?'
		jz	loc_56			; Jump if zero
		test	ch,40h			; '@'
		jz	loc_57			; Jump if zero
		xchg	ah,al
loc_57:
		xor	ch,ch			; Zero register

locloop_58:
		inc	bx
		cmp	al,cs:[bx-1]
		je	loc_59			; Jump if equal
		add	bx,2
		loop	locloop_58		; Loop if cx > 0

		jmp	short loc_56
loc_59:
		pop	ax
		pop	cx
		push	cs:data_21
		push	word ptr cs:[bx]
		xor	bx,bx			; Zero register
		retn
;		db	0F8h
		clc
;		db	0C3h
		ret

data_21		dw	80Eh
loc_60:
		xor	ch,ch			; Zero register

locloop_61:
		add	bx,2
		cmp	ax,cs:[bx-2]
		je	loc_59			; Jump if equal
		add	bx,2
		loop	locloop_61		; Loop if cx > 0

		jmp	short loc_56
loc_62:
		pop	ax
		pop	cx
		stc				; Set carry flag
		retn
sub_22		endp

data_22		db	11h
		db	 01h,0C7h, 08h, 03h, 4Fh, 0Ah
		db	 04h,0A5h, 08h, 05h,0F0h, 09h
		db	 06h,0E4h, 08h, 07h, 4Ah, 09h
		db	 08h, 43h, 09h, 10h, 80h, 09h
		db	 12h, 31h, 0Ah, 13h, 8Eh, 08h
		db	 14h, 22h, 09h, 18h, 05h, 0Ah
		db	 19h,0B7h, 08h, 17h, 11h, 0Ah
		db	 1Ah,0FAh, 09h, 1Fh, 6Ah, 09h
		db	 7Fh, 05h, 09h, 50h, 4Bh, 8Eh
		db	 08h, 4Dh,0A5h, 08h, 47h,0BFh
		db	 08h, 4Fh,0C2h, 08h, 53h, 4Ah
		db	 09h, 74h,0E4h, 08h, 73h,0C7h
		db	 08h, 93h, 22h, 09h, 48h,0F0h
		db	 09h, 50h, 05h, 0Ah, 77h, 16h
		db	 0Ah, 75h, 1Ch, 0Ah, 49h, 31h
		db	 0Ah, 51h, 4Fh, 0Ah, 84h, 61h
		db	 0Ah, 76h, 64h, 0Ah, 00h

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_23		proc	near
		or	dx,dx			; Zero ?
		jz	loc_ret_63		; Jump if zero
		dec	dx
		call	sub_165
		jz	loc_ret_63		; Jump if zero
		inc	di
		dec	word ptr cs:[bp+0Ah]
		jns	loc_ret_63		; Jump if not sign
		dec	di
		inc	word ptr cs:[bp+0Ah]

loc_ret_63:
		retn
sub_23		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_24		proc	near
		cmp	dx,cs:[bp+6]
		jae	loc_ret_64		; Jump if above or =
		inc	dx
		call	sub_165
		jz	loc_ret_64		; Jump if zero
		inc	di
		inc	word ptr cs:[bp+0Ah]

loc_ret_64:
		retn
sub_24		endp

			                        ;* No entry point to code
		xor	dx,dx			; Zero register
		mov	cs:[bp+6],dx
		inc	di
		retn
			                        ;* No entry point to code
		xor	dx,dx			; Zero register
		retn
;		db	2Eh, 8Bh, 56h, 06h
		mov	dx,cs:[bp+6]
;		db	90h
		nop
loc_65:
		or	dx,dx			; Zero ?
		jz	loc_ret_67		; Jump if zero
		call	sub_28
		jnc	loc_66			; Jump if carry=0
		call	sub_23
		jmp	short loc_65
loc_66:
		or	dx,dx			; Zero ?
		jz	loc_ret_67		; Jump if zero
		call	sub_28
		jc	loc_ret_67		; Jump if carry Set
		call	sub_23
		jmp	short loc_66

loc_ret_67:
		retn
loc_68:
		cmp	dx,cs:[bp+6]
		jae	loc_ret_70		; Jump if above or =
		call	sub_29
		jc	loc_69			; Jump if carry Set
		call	sub_24
		jmp	short loc_68
loc_69:
		cmp	dx,cs:[bp+6]
		jae	loc_ret_70		; Jump if above or =
		call	sub_29
		jnc	loc_ret_70		; Jump if carry=0
		call	sub_24
		jmp	short loc_69

loc_ret_70:
		retn
loc_71:
		or	dx,dx			; Zero ?
		jz	loc_ret_73		; Jump if zero
		call	sub_28
		jnc	loc_72			; Jump if carry=0
		call	sub_25
		jmp	short loc_71
loc_72:
		or	dx,dx			; Zero ?
		jz	loc_ret_73		; Jump if zero
		call	sub_28
		jc	loc_ret_73		; Jump if carry Set
		call	sub_25
		jmp	short loc_72

loc_ret_73:
		retn
loc_74:
		cmp	dx,cs:[bp+6]
		jae	loc_ret_76		; Jump if above or =
		call	sub_29
		jc	loc_75			; Jump if carry Set
		call	sub_26
		jmp	short loc_74
loc_75:
		cmp	dx,cs:[bp+6]
		jae	loc_ret_76		; Jump if above or =
		call	sub_29
		jnc	loc_ret_76		; Jump if carry=0
		call	sub_26
		jmp	short loc_75

loc_ret_76:
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_25		proc	near
		or	dx,dx			; Zero ?
		jz	loc_ret_78		; Jump if zero
		call	sub_23

;==== External Entry into Subroutine ======================================

sub_26:
		push	ax
		push	bx
		push	cx
		push	si
		mov	cx,cs:[bp+6]
		sub	cx,dx
		jbe	loc_77			; Jump if below or =
		push	di
		dec	cx
		add	si,dx
		mov	di,si
		inc	si
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		dec	word ptr cs:[bp+6]
		pop	di
		inc	di
loc_77:
		pop	si
		pop	cx
		pop	bx
		pop	ax

loc_ret_78:
		retn
sub_25		endp

			                        ;* No entry point to code
		push	dx
		push	si
		inc	dx
		cmp	dx,cs:[bp+6]
		jae	loc_79			; Jump if above or =
		dec	dx
		add	si,dx
		mov	ax,[si]
		xchg	ah,al
		mov	[si],ax
		inc	di
loc_79:
		pop	si
		pop	dx
		retn
;		db	33h,0C0h
		xor	ax,ax
;		db	0CDh, 16h
		int	16h

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_27		proc	near
		push	ax
		push	bx
		push	cx
		push	si
		mov	cx,cs:[bp+6]
		cmp	cx,cs:[bp+4]
		jae	loc_80			; Jump if above or =
		push	di
		add	si,dx
		sub	cx,dx
		add	si,cx
		mov	di,si
		dec	si
		std				; Set direction flag
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		cld				; Clear direction
		stosb				; Store al to es:[di]
		inc	dx
		inc	word ptr cs:[bp+6]
		pop	di
		inc	di
loc_80:
		pop	si
		pop	cx
		pop	bx
		pop	ax
		retn
sub_27		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_28		proc	near
		push	si
		add	si,dx
		mov	al,[si-1]
		pop	si
		jmp	short loc_81

;==== External Entry into Subroutine ======================================

sub_29:
		push	si
		add	si,dx
		mov	al,[si]
		pop	si

;==== External Entry into Subroutine ======================================

sub_30:
loc_81:
		cmp	al,21h			; '!'
		je	loc_82			; Jump if equal
		cmp	al,23h			; '#'
		je	loc_82			; Jump if equal
		cmp	al,24h			; '$'
		je	loc_82			; Jump if equal
		cmp	al,25h			; '%'
		je	loc_82			; Jump if equal
		cmp	al,2Ah			; '*'
		je	loc_82			; Jump if equal
		cmp	al,30h			; '0'
		jb	loc_83			; Jump if below
		cmp	al,3Ah			; ':'
		jb	loc_82			; Jump if below
		cmp	al,40h			; '@'
		jb	loc_83			; Jump if below
		cmp	al,5Bh			; '['
		jb	loc_82			; Jump if below
		cmp	al,61h			; 'a'
		jb	loc_83			; Jump if below
		cmp	al,7Bh			; '{'
		jb	loc_82			; Jump if below
		cmp	al,80h
		jb	loc_83			; Jump if below
loc_82:
		clc				; Clear carry flag
		retn
loc_83:
		stc				; Set carry flag
		retn
sub_28		endp

			                        ;* No entry point to code
		or	cx,cx			; Zero ?
		jz	loc_ret_84		; Jump if zero
		dec	cx
		call	sub_165
		jz	loc_ret_84		; Jump if zero
		dec	word ptr cs:[bp+14h]
		jns	loc_ret_84		; Jump if not sign
		inc	word ptr cs:[bp+14h]

loc_ret_84:
		retn
			                        ;* No entry point to code
		cmp	cx,cs:[bp+10h]
		jae	loc_ret_85		; Jump if above or =
		inc	cx
		call	sub_165
		jz	loc_ret_85		; Jump if zero
		inc	word ptr cs:[bp+14h]

loc_ret_85:
		retn
			                        ;* No entry point to code
		mov	cx,cs:[bp+14h]
		inc	cx
		retn
			                        ;* No entry point to code
		mov	cx,cs:[bp+14h]
		add	cl,cs:[bp+16h]
		adc	ch,0
		sub	cx,2
		jnc	loc_ret_86		; Jump if carry=0
		inc	cx
		jns	loc_ret_86		; Jump if not sign
		inc	cx

loc_ret_86:
		retn
			                        ;* No entry point to code
		push	ax
		xor	ah,ah			; Zero register
		mov	al,cs:[bp+16h]
		sub	ax,1
		sub	cx,ax
		jnc	loc_87			; Jump if carry=0
		xor	cx,cx			; Zero register
loc_87:
		sub	cs:[bp+14h],ax
		jnc	loc_88			; Jump if carry=0
		mov	word ptr cs:[bp+14h],0
loc_88:
		pop	ax
		retn
			                        ;* No entry point to code
		push	ax
		xor	ah,ah			; Zero register
		mov	al,cs:[bp+16h]
		sub	ax,1
		add	cx,ax
		add	cs:[bp+14h],ax
		pop	ax
		retn
			                        ;* No entry point to code
		xor	cx,cx			; Zero register
		retn
			                        ;* No entry point to code
		mov	cx,cs:[bp+10h]
		or	cx,cx			; Zero ?
		jz	loc_ret_89		; Jump if zero
		dec	cx

loc_ret_89:
		retn
		db	0, 0

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_31		proc	near
		push	cs:data_18
		call	sub_59
		call	sub_32
		test	byte ptr cs:[bp],4
		jnz	loc_90			; Jump if not zero
		call	sub_34
loc_90:
		call	sub_35
		jc	loc_91			; Jump if carry Set
		call	sub_33
		call	sub_46
		clc				; Clear carry flag
		call	sub_36
		jc	loc_91			; Jump if carry Set
		call	sub_47
		call	sub_48
		or	byte ptr cs:[bp],2
loc_91:
		pop	cs:data_18
		call	sub_58
		retn
sub_31		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_32		proc	near
		push	bx
		push	si
		push	ds
		xor	bx,bx			; Zero register
loc_92:
		call	sub_37
		jc	loc_93			; Jump if carry Set
		inc	bx
		or	byte ptr [si],8
		jmp	short loc_92
loc_93:
		pop	ds
		pop	si
		pop	bx
		retn
sub_32		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_33		proc	near
		push	bx
		push	si
		push	ds
		xor	bx,bx			; Zero register
loc_94:
		call	sub_37
		jc	loc_95			; Jump if carry Set
		inc	bx
		test	byte ptr [si],8
		jz	loc_94			; Jump if zero
		dec	bx
		call	sub_44
		jnc	loc_94			; Jump if carry=0
loc_95:
		pop	ds
		pop	si
		pop	bx
		retn
sub_33		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_34		proc	near
		push	ax
		mov	al,cs:[bp+6]
		call	sub_252
		call	sub_251
		mov	cs:[bp+6],al
		mov	word ptr cs:[bp+7],0
		pop	ax
		retn
sub_34		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_35		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		push	es
		push	cs
		pop	es
		push	cs
		pop	ds
		mov	si,ds:[bp+4]
		mov	di,si
		call	sub_288
		clc				; Clear carry flag
		call	sub_36
		jc	loc_101			; Jump if carry Set
		call	sub_287
		call	sub_36
		jc	loc_101			; Jump if carry Set
		cmp	byte ptr [si+3],0
		je	loc_96			; Jump if equal
		mov	di,data_6e
		mov	al,10h
		stosb				; Store al to es:[di]
		xor	ax,ax			; Zero register
		stosw				; Store ax to es:[di]
		stosw				; Store ax to es:[di]
		stosw				; Store ax to es:[di]
		stosw				; Store ax to es:[di]
		mov	ax,2E2Eh
		stosw				; Store ax to es:[di]
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		mov	si,5870h
		call	sub_39
		call	sub_40
loc_96:
		mov	cx,16h
		mov	dx,offset data_103
		mov	ah,4Eh
loc_97:
		int	21h			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		jnc	loc_98			; Jump if carry=0
		cmp	ax,2
		je	loc_101			; Jump if equal
		cmp	ax,12h
		je	loc_101			; Jump if equal
		stc				; Set carry flag
loc_98:
		call	sub_36
		jc	loc_101			; Jump if carry Set
		test	byte ptr ds:data_6e,10h
		jz	loc_99			; Jump if zero
		cmp	word ptr ds:data_11e,2Eh ; '.'
		je	loc_100			; Jump if equal
loc_99:
		mov	si,5870h
		call	sub_39
		call	sub_40
loc_100:
		mov	ah,4Fh			; 'O'
		jnc	loc_97			; Jump if carry=0
		clc				; Clear carry flag
loc_101:
		call	sub_36
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_35		endp

			                        ;* No entry point to code
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		push	es
		push	cs
		pop	es
		mov	di,5870h
		mov	dx,di
		call	sub_286
		push	cs
		pop	ds
		mov	si,dx
		mov	cx,16h
		mov	ah,4Eh
		int	21h			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		jc	loc_102			; Jump if carry Set
		call	sub_39
		call	sub_40
loc_102:
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_36		proc	near
		push	ax
		rcl	al,1			; Rotate thru carry
		cmp	cs:data_18,0
		je	loc_103			; Jump if equal
;*		cmp	cs:data_18,0FFFEh
		db	 2Eh, 83h, 3Eh, 57h, 02h,0FEh	;  Fixup - byte match
		jz	loc_103			; Jump if zero
		and	byte ptr cs:[bp],0FCh
		or	al,1
loc_103:
		rcr	al,1			; Rotate thru carry
		pop	ax
		retn
sub_36		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_37		proc	near
		push	ax
		push	dx
		push	bx
		mov	al,cs:[bp+6]
		call	sub_253
		mov	ds,bx
		pop	bx
		mov	ax,14h
		mul	bx			; dx:ax = reg * ax
		mov	si,ax
		cmp	bx,cs:[bp+7]
		cmc				; Complement carry
		pop	dx
		pop	ax
		retn
sub_37		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_38		proc	near
		push	ds
		push	si
		call	sub_37
		mov	di,si
		push	ds
		pop	es
		pop	si
		pop	ds
		retn
sub_38		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_39		proc	near
		push	ax
		push	si
		push	di
		push	ds
		push	es
		push	ds
		pop	es
		push	cs
		pop	ds
		mov	di,si
		mov	si,data_6e
		lodsb				; String [si] to al
		and	al,37h			; '7'
		stosb				; Store al to es:[di]
		mov	si,9Eh
		call	sub_157
		add	di,0Bh
		mov	si,data_9e
		movsw				; Mov [si] to es:[di]
		movsw				; Mov [si] to es:[di]
		mov	si,data_8e
		movsw				; Mov [si] to es:[di]
		mov	si,data_7e
		movsw				; Mov [si] to es:[di]
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	ax
		retn
sub_39		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_40		proc	near
		push	bx
		test	byte ptr cs:[bp],4
		jz	loc_104			; Jump if zero
		call	sub_49
		jc	loc_104			; Jump if carry Set
		push	bx
		call	sub_82
		and	bl,0C0h
		or	[si],bl
		pop	bx
		call	sub_44
loc_104:
		call	sub_50
		call	sub_45
		pop	bx
		retn
sub_40		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_41		proc	near
		push	ax
		push	cx
		push	si
		push	di
		inc	si
		inc	di
		mov	cx,0Bh
		call	sub_42
		jz	loc_108			; Jump if zero
		cmp	word ptr [si],2E2Eh
		je	loc_107			; Jump if equal
		cmp	word ptr es:[di],2E2Eh
		jne	loc_105			; Jump if not equal
		or	cl,cl			; Zero ?
		jmp	short loc_108
loc_105:
		mov	al,es:[di-1]
		call	sub_43
		mov	ah,al
		mov	al,[si-1]
		call	sub_43
		cmp	ah,al
		jne	loc_106			; Jump if not equal
		call	sub_42
loc_106:
		ja	loc_108			; Jump if above
loc_107:
		sub	ch,1
loc_108:
		pop	di
		pop	si
		pop	cx
		pop	ax
		retn
sub_41		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_42		proc	near
		push	ax
		push	cx
		push	si
		push	di

locloop_109:
		cmpsb				; Cmp [si] to es:[di]
		jz	loc_110			; Jump if zero
		cmp	byte ptr [si-1],3Fh	; '?'
		je	loc_110			; Jump if equal
		cmp	byte ptr es:[di-1],3Fh	; '?'
		je	loc_110			; Jump if equal
		mov	al,[si-1]
		cmp	al,es:[di-1]
loc_110:
		loopz	locloop_109		; Loop if zf=1, cx>0

		pop	di
		pop	si
		pop	cx
		pop	ax
		retn
sub_42		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_43		proc	near
		push	bx
		mov	bl,al
		shl	al,1			; Shift w/zeros fill
		and	al,4
		or	al,bl
		and	al,14h
		test	al,10h
		jz	loc_111			; Jump if zero
		and	al,10h
loc_111:
		pop	bx
		retn
sub_43		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_44		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		push	es
		call	sub_38
		jc	loc_112			; Jump if carry Set
		dec	word ptr cs:[bp+7]
		mov	bx,cs:[bp+7]
		call	sub_37
		mov	cx,si
		sub	cx,di
		mov	si,di
		add	si,14h
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		mov	bx,di
		mov	al,cs:[bp+6]
		call	sub_258
loc_112:
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_44		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_45		proc	near
		push	ax
		push	bx
		push	cx
		push	si
		push	di
		push	es
		mov	cx,0Bh
		call	sub_38
		jc	loc_113			; Jump if carry Set
		call	sub_41
		jz	loc_114			; Jump if zero
loc_113:
		mov	ax,cs:[bp+7]
		inc	ax
		mov	cl,14h
		mul	cx			; dx:ax = reg * ax
		mov	bx,ax
		mov	al,cs:[bp+6]
		call	sub_258
		jc	loc_115			; Jump if carry Set
		push	di
		push	si
		push	ds
		mov	bx,cs:[bp+7]
		call	sub_37
		mov	cx,si
		sub	cx,di
		mov	di,si
		add	di,13h
		dec	si
		std				; Set direction flag
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		cld				; Clear direction
		pop	ds
		pop	si
		pop	di
		inc	word ptr cs:[bp+7]
		mov	byte ptr es:[di],0
loc_114:
		mov	al,es:[di]
		and	al,0C0h
		mov	cl,14h
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		or	es:[di-14h],al
loc_115:
		pop	es
		pop	di
		pop	si
		pop	cx
		pop	bx
		pop	ax
		retn
sub_45		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_46		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	di
		push	es
		push	cs
		pop	es
		mov	di,cs:[bp+4]
		mov	dl,cs:[di]
		sub	dl,40h			; '@'
		mov	ah,36h
		int	21h			; DOS Services  ah=function 36h
						;  get drive info, drive dl,1=a:
						;   returns ax=sectors per clust
						;   bx=avail clust,cx=bytes/sect
						;   dx=clusters per drive
		lea	di,[bp+0Dh]		; Load effective addr
		push	bx
		push	dx
		mul	cx			; dx:ax = reg * ax
		stosw				; Store ax to es:[di]
		mov	cx,ax
		pop	ax
		mul	cx			; dx:ax = reg * ax
		stosw				; Store ax to es:[di]
		mov	ax,dx
		stosw				; Store ax to es:[di]
		pop	ax
		mul	cx			; dx:ax = reg * ax
		stosw				; Store ax to es:[di]
		mov	ax,dx
		stosw				; Store ax to es:[di]
		pop	es
		pop	di
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_46		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_47		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	ds
		xor	ax,ax			; Zero register
		mov	cs:[bp+17h],ax
		mov	cs:[bp+19h],ax
		mov	cs:[bp+1Bh],ax
		mov	cx,cs:[bp+0Dh]
		xor	bx,bx			; Zero register
loc_116:
		call	sub_37
		jc	loc_120			; Jump if carry Set
		test	byte ptr [si],10h
		jnz	loc_119			; Jump if not zero
		inc	word ptr cs:[bp+17h]
		mov	ax,[si+0Ch]
		mov	dx,[si+0Eh]
loc_117:
		or	dx,dx			; Zero ?
		jnz	loc_118			; Jump if not zero
		or	ax,ax			; Zero ?
		jz	loc_119			; Jump if zero
loc_118:
		add	cs:[bp+19h],cx
		adc	word ptr cs:[bp+1Bh],0
		sub	ax,cx
		sbb	dx,0
		jnc	loc_117			; Jump if carry=0
loc_119:
		inc	bx
		jmp	short loc_116
loc_120:
		pop	ds
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_47		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_48		proc	near
		push	ax
		push	bx
		push	si
		push	ds
		push	cs
		pop	ds
		mov	si,5556h
		mov	bx,ds:data_116e
		cmp	bp,data_174e
		jne	loc_121			; Jump if not equal
		mov	si,556Ah
		mov	bx,ds:data_117e
loc_121:
		mov	ds:[bp+9],bx
		call	sub_49
		jnc	loc_122			; Jump if carry=0
		call	sub_50
		cmp	bx,ds:[bp+7]
		jb	loc_122			; Jump if below
		mov	bx,ds:[bp+7]
		dec	bx
loc_122:
		mov	ds:[bp+0Bh],bx
		xor	ax,ax			; Zero register
		call	sub_161
		pop	ds
		pop	si
		pop	bx
		pop	ax
		retn
sub_48		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_49		proc	near
		push	di
		push	es
		xor	bx,bx			; Zero register
loc_123:
		call	sub_38
		jc	loc_124			; Jump if carry Set
		call	sub_41
		jz	loc_124			; Jump if zero
		inc	bx
		jmp	short loc_123
loc_124:
		pop	es
		pop	di
		retn
sub_49		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_50		proc	near
		push	di
		push	es
		xor	bx,bx			; Zero register
loc_125:
		call	sub_38
		jc	loc_126			; Jump if carry Set
		call	sub_41
		jbe	loc_126			; Jump if below or =
		inc	bx
		jmp	short loc_125
loc_126:
		pop	es
		pop	di
		retn
sub_50		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_51		proc	near
		push	bx
		push	si
		push	ds
		xor	ax,ax			; Zero register
		xor	dx,dx			; Zero register
		xor	cx,cx			; Zero register
		xor	bx,bx			; Zero register
loc_127:
		call	sub_37
		jc	loc_129			; Jump if carry Set
		test	byte ptr [si],80h
		jz	loc_128			; Jump if zero
		inc	cx
		add	ax,[si+0Ch]
		adc	dx,[si+0Eh]
loc_128:
		inc	bx
		jmp	short loc_127
loc_129:
		or	cx,cx			; Zero ?
		pop	ds
		pop	si
		pop	bx
		retn
sub_51		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_52		proc	near
		xor	bx,bx			; Zero register
		jmp	short loc_130
			                        ;* No entry point to code
		inc	bx

;==== External Entry into Subroutine ======================================

sub_53:
loc_130:
		push	si
		push	ds
loc_131:
		call	sub_37
		jc	loc_132			; Jump if carry Set
		test	byte ptr [si],80h
		jnz	loc_133			; Jump if not zero
		inc	bx
		jmp	short loc_131
loc_132:
		mov	bx,cs:[bp+0Bh]
loc_133:
		pop	ds
		pop	si
		retn
sub_52		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_54		proc	near
		test	byte ptr cs:data_135e,4
		jnz	loc_136			; Jump if not zero
		call	sub_244
		jc	loc_135			; Jump if carry Set
		test	byte ptr cs:[bp],2
		jnz	loc_135			; Jump if not zero
		cmp	cs:data_18,0
		je	loc_134			; Jump if equal
;*		cmp	cs:data_18,0FFFEh
		db	 2Eh, 83h, 3Eh, 57h, 02h,0FEh	;  Fixup - byte match
		jnz	loc_135			; Jump if not zero
loc_134:
		call	sub_31
loc_135:
		and	byte ptr cs:[bp],0F7h
		call	sub_244
		jc	loc_136			; Jump if carry Set
		or	byte ptr cs:[bp],8
loc_136:
		call	sub_57
		call	sub_61
		call	sub_64
		call	sub_65
		call	sub_66
		call	sub_76
		retn
sub_54		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_55		proc	near
		test	byte ptr cs:[bp],8
		stc				; Set carry flag
		jnz	loc_ret_137		; Jump if not zero
		push	cx
		mov	cl,28h			; '('
		call	sub_56
		pop	cx
		clc				; Clear carry flag

loc_ret_137:
		retn
sub_55		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_56		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	ds
		mov	al,cs:data_170e
		push	ax
		mov	al,cs:data_143e
		call	sub_253
		mov	ds,bx
		xor	si,si			; Zero register
		mov	al,cs:data_145e
		call	sub_242
		jc	loc_138			; Jump if carry Set
		dec	al
loc_138:
		cmp	byte ptr cs:data_141e+1,al
		jbe	loc_139			; Jump if below or =
		add	si,data_1e
		inc	al
		jnz	loc_138			; Jump if not zero
loc_139:
		push	dx
		mov	al,0A0h
		mul	dh			; ax = reg * al
		xor	dh,dh			; Zero register
		add	ax,dx
		add	ax,dx
		add	si,ax
		pop	dx
		xor	ch,ch			; Zero register

locloop_140:
		cmp	si,cs:data_144e
		mov	ax,720h
		jnc	loc_141			; Jump if carry=0
		lodsw				; String [si] to ax
loc_141:
		mov	cs:data_170e,ah
		call	sub_230
		loop	locloop_140		; Loop if cx > 0

		pop	ax
		mov	cs:data_170e,al
		pop	ds
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_56		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_57		proc	near
		push	ax
		push	cx
		push	dx
		push	si
		push	ds
		push	cs
		pop	ds
		xor	dh,dh			; Zero register
		mov	dl,ds:[bp+3]
		test	byte ptr ds:[bp],8
		jnz	loc_142			; Jump if not zero
		call	sub_55
		jmp	short loc_143
loc_142:
		mov	al,1
		call	sub_229
		mov	al,0C9h
		call	sub_229
		mov	al,0CDh
		mov	cx,26h
		call	sub_232
		mov	al,0BBh
		call	sub_229
loc_143:
		pop	ds
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn
sub_57		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_58		proc	near
		pushf				; Push flags
		push	bp
		call	sub_245
		call	sub_57
		call	sub_247
		call	sub_57
		pop	bp
		popf				; Pop flags
		retn
sub_58		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_59		proc	near
		pushf				; Push flags
		push	ax
		push	dx
		push	si
		push	bp
		push	ds
		push	cs
		pop	ds
		test	byte ptr data_105,2
		jnz	loc_145			; Jump if not zero
		call	sub_245
		call	sub_60
		call	sub_244
		jc	loc_144			; Jump if carry Set
		call	sub_247
		call	sub_60
		call	sub_244
		jc	loc_144			; Jump if carry Set
		mov	dl,22h			; '"'
loc_144:
		mov	si,offset data_45	; ('  WORKING ! ')
		xor	dh,dh			; Zero register
		call	sub_234
loc_145:
		pop	ds
		pop	bp
		pop	si
		pop	dx
		pop	ax
		popf				; Pop flags
		retn
sub_59		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_60		proc	near
		mov	dl,ds:[bp+3]
		cmp	dl,28h			; '('
		mov	dl,2Ah			; '*'
		jc	loc_ret_146		; Jump if carry Set
		mov	dl,1Bh

loc_ret_146:
		retn
sub_60		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_61		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	dl,ds:[bp+3]
		mov	dh,1
		call	sub_55
		jnc	loc_149			; Jump if carry=0
		call	sub_63
		push	dx
		mov	cx,2

locloop_147:
		push	cx
		mov	di,data_184e
		mov	al,2
		stosb				; Store al to es:[di]
		push	di
		mov	ax,ds:[bp+13h]
		mov	dx,ds:[bp+15h]
		call	sub_276
		pop	si
		call	sub_62
		mov	si,offset data_49
		call	sub_262
		mov	ax,ds:[bp+0Fh]
		mov	dx,ds:[bp+11h]
		call	sub_276
		pop	cx
		mov	si,data_184e
		call	sub_268
		cmp	al,24h			; '$'
		jbe	loc_148			; Jump if below or =
		or	byte ptr ds:data_173e,10h
		loop	locloop_147		; Loop if cx > 0

loc_148:
		and	byte ptr ds:data_173e,0EFh
		pop	dx
		inc	dl
		mov	cl,26h			; '&'
		call	sub_267
		call	sub_234
loc_149:
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_61		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_62		proc	near
		push	ax
		push	si
		mov	si,offset data_46
		call	sub_262
		pop	si
		push	si
		call	sub_264
		mov	si,offset data_47	; (' free of ')
		call	sub_262
		pop	si
		call	sub_265
		mov	si,3F85h
		or	al,al			; Zero ?
		jz	loc_150			; Jump if zero
		mov	si,3F85h
		dec	al
		jz	loc_150			; Jump if zero
		mov	si,offset data_48
loc_150:
		call	sub_262
		pop	ax
		retn
sub_62		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_63		proc	near
		push	ax
		push	cx
		push	dx
		mov	al,1
		call	sub_229
		mov	al,0BAh
		call	sub_229
		mov	al,20h			; ' '
		mov	cx,26h
		call	sub_232
		mov	al,0BAh
		call	sub_229
		pop	dx
		pop	cx
		pop	ax
		retn
sub_63		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_64		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	dl,ds:[bp+3]
		mov	dh,2
		call	sub_55
		jnc	loc_152			; Jump if carry=0
		push	dx
		call	sub_63
		mov	di,data_184e
		mov	al,2
		stosb				; Store al to es:[di]
		mov	ax,ds:[bp+17h]
		mov	dx,0
		push	di
		or	byte ptr ds:data_173e,1
		call	sub_277
		and	byte ptr ds:data_173e,0FEh
		mov	si,offset data_50
		call	sub_262
		pop	si
		push	si
		call	sub_264
		mov	si,offset data_52
		call	sub_262
		pop	si
		call	sub_265
		dec	al
		mov	si,3F94h
		jnz	loc_151			; Jump if not zero
		mov	si,offset data_53
loc_151:
		call	sub_262
		mov	ax,ds:[bp+19h]
		mov	dx,ds:[bp+1Bh]
		push	di
		call	sub_277
		mov	si,offset data_46
		call	sub_262
		pop	si
		call	sub_264
		pop	dx
		mov	si,data_184e
		inc	dl
		mov	cl,26h			; '&'
		call	sub_267
		call	sub_234
loc_152:
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_64		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_65		proc	near
		push	ax
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		push	cs
		pop	ds
		mov	dl,ds:[bp+3]
		mov	dh,3
		call	sub_55
		jnc	loc_155			; Jump if carry=0
		push	dx
		mov	al,1
		call	sub_229
		mov	al,0CCh
		call	sub_229
		mov	al,0CDh
		mov	cx,26h
		call	sub_232
		mov	al,0B9h
		call	sub_229
		pop	dx
		call	sub_248
		mov	al,1
		jnz	loc_153			; Jump if not zero
		mov	al,3
loc_153:
		call	sub_229
		mov	si,ds:[bp+4]
		inc	dl
		mov	cl,24h			; '$'
		call	sub_267
		mov	al,20h			; ' '
		call	sub_229
		lodsb				; String [si] to al
		call	sub_229
		lodsb				; String [si] to al
		call	sub_229
		lodsb				; String [si] to al
		call	sub_229
		mov	di,si
		mov	cx,0FFh
		xor	al,al			; Zero register
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		not	cl
		cmp	cl,24h			; '$'
		jbe	loc_154			; Jump if below or =
		sub	cl,1Fh
		add	si,cx
		mov	al,2Eh			; '.'
		mov	cx,3
		call	sub_232
loc_154:
		call	sub_234
		mov	al,20h			; ' '
		call	sub_229
loc_155:
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn
sub_65		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_66		proc	near
		push	bx
		push	cx
		mov	bx,cs:[bp+9]
		call	sub_241

locloop_156:
		call	sub_67
		inc	bx
		loop	locloop_156		; Loop if cx > 0

		pop	cx
		pop	bx
		retn
sub_66		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_67		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		mov	dl,cs:[bp+3]
		mov	ax,bx
		sub	ax,cs:[bp+9]
		jc	loc_157			; Jump if carry Set
		call	sub_241
		cmp	ax,cx
		jae	loc_157			; Jump if above or =
		mov	dh,al
		add	dh,4
		test	byte ptr cs:[bp],8
		jnz	loc_158			; Jump if not zero
		push	cx
		mov	cl,28h			; '('
		call	sub_56
		pop	cx
loc_157:
		jmp	short loc_162
loc_158:
		call	sub_68
		call	sub_37
		jnc	loc_159			; Jump if carry=0
		call	sub_70
		jmp	short loc_161
loc_159:
		call	sub_71
		call	sub_72
		mov	al,0B3h
		test	byte ptr [si],80h
		jz	loc_160			; Jump if zero
		mov	al,0B2h
loc_160:
		call	sub_229
		call	sub_73
		mov	al,0B3h
		call	sub_229
		call	sub_74
		mov	al,0B3h
		call	sub_229
		call	sub_75
loc_161:
		call	sub_69
loc_162:
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_67		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_68		proc	near
		push	ax
		mov	al,1
		call	sub_229
		cmp	dl,cs:[bp+3]
		jne	loc_164			; Jump if not equal
		mov	al,0BAh
		cmp	bx,cs:[bp+0Bh]
		jne	loc_163			; Jump if not equal
		mov	al,0B0h
loc_163:
		call	sub_229
		dec	dl
loc_164:
		inc	dl
		pop	ax
		retn
sub_68		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_69		proc	near
		push	ax
		mov	al,1
		call	sub_229
		mov	al,0BAh
		mov	ah,cs:[bp+3]
		add	ah,27h			; '''
		cmp	dl,ah
		je	loc_165			; Jump if equal
		mov	al,0B3h
loc_165:
		cmp	bx,cs:[bp+0Bh]
		jne	loc_166			; Jump if not equal
		mov	al,0B0h
loc_166:
		call	sub_229
		pop	ax
		retn
sub_69		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_70		proc	near
		push	ax
		push	cx
		mov	ax,0B320h
		mov	cx,0Ch
		call	sub_232
		xchg	ah,al
		call	sub_229
		xchg	ah,al
		mov	cl,0Ah
		call	sub_232
		xchg	ah,al
		call	sub_229
		xchg	ah,al
		mov	cl,8
		call	sub_232
		xchg	ah,al
		call	sub_229
		xchg	ah,al
		mov	cl,5
		call	sub_232
		pop	cx
		pop	ax
		retn
sub_70		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_71		proc	near
		push	ax
		mov	al,1
		test	byte ptr [si],80h
		jz	loc_167			; Jump if zero
		inc	al
loc_167:
		cmp	bx,cs:[bp+0Bh]
		jne	loc_168			; Jump if not equal
		call	sub_248
		jnz	loc_168			; Jump if not zero
		add	al,2
loc_168:
		call	sub_229
		pop	ax
		retn
sub_71		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_72		proc	near
		push	ax
		push	bx
		push	cx
		push	si
		lodsb				; String [si] to al
		mov	bl,al
		mov	bh,al
		mov	cx,8

locloop_169:
		lodsb				; String [si] to al
		test	bl,10h
		jnz	loc_171			; Jump if not zero
		test	bl,6
		jnz	loc_170			; Jump if not zero
		call	sub_260
loc_170:
		and	bl,0F9h
loc_171:
		call	sub_229
		loop	locloop_169		; Loop if cx > 0

		mov	al,20h			; ' '
		test	bh,1
		jz	loc_172			; Jump if zero
		mov	al,2Ah			; '*'
loc_172:
		test	bh,6
		jz	loc_173			; Jump if zero
		mov	al,0B0h
loc_173:
		call	sub_229
		mov	cx,3

locloop_174:
		lodsb				; String [si] to al
		test	bh,10h
		jnz	loc_175			; Jump if not zero
		call	sub_260
loc_175:
		call	sub_229
		loop	locloop_174		; Loop if cx > 0

		pop	si
		pop	cx
		pop	bx
		pop	ax
		retn
sub_72		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_73		proc	near
		push	ax
		push	bx
		push	cx
		push	si
		push	ds
		test	byte ptr [si],10h
		jz	loc_177			; Jump if zero
		cmp	word ptr [si+1],2E2Eh
		mov	si,432Ch
		jnz	loc_176			; Jump if not zero
		mov	si,offset data_99	; ('<-UP--DIR>')
loc_176:
		push	cs
		pop	ds
		call	sub_234
		jmp	short loc_178
loc_177:
		mov	ax,[si+0Ch]
		mov	bx,[si+0Eh]
		call	sub_272
loc_178:
		pop	ds
		pop	si
		pop	cx
		pop	bx
		pop	ax
		retn
sub_73		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_74		proc	near
		push	ax
		push	cx
		mov	ax,[si+10h]
		push	ax
		and	al,1Fh
		call	sub_270
		mov	al,2Fh			; '/' separator for day/month
		call	sub_229
		pop	ax
		push	ax
		mov	cl,5
		shr	ax,cl			; Shift w/zeros fill
		and	al,0Fh
		call	sub_271
		mov	al,2Fh			; '/' separator for day/month
		call	sub_229
		pop	ax
		mov	cl,9
		shr	ax,cl			; Shift w/zeros fill
		and	ax,7Fh
		add	ax,50h
loc_179:
		sub	ax,64h
		jns	loc_179			; Jump if not sign
		add	ax,64h
		call	sub_271
		pop	cx
		pop	ax
		retn
sub_74		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_75		proc	near
		push	ax
		push	cx
		push	si
		mov	ax,[si+12h]
		push	ax
		mov	cl,0Bh
		shr	ax,cl			; Shift w/zeros fill
		and	al,1Fh
		call	sub_270
		mov	al,3Ah			; ':'
		call	sub_229
		pop	ax
		mov	cl,5
		shr	ax,cl			; Shift w/zeros fill
		and	al,3Fh			; '?'
		call	sub_271
		pop	si
		pop	cx
		pop	ax
		retn
sub_75		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_76		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	dl,ds:[bp+3]
		call	sub_240
		call	sub_55
		jnc	loc_180			; Jump if carry=0
		mov	al,1
		call	sub_229
		mov	al,0C8h
		call	sub_229
		push	dx
		mov	al,0CDh
		mov	cx,26h
		call	sub_232
		mov	al,0BCh
		call	sub_229
		pop	dx
		call	sub_77
loc_180:
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_76		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_77		proc	near
		push	dx
		mov	di,data_184e
		mov	ax,2002h
		stosw				; Store ax to es:[di]
		call	sub_51
		or	cx,cx			; Zero ?
		jnz	loc_181			; Jump if not zero
		pop	dx
		retn
loc_181:
		push	cx
		push	di
		call	sub_277
		mov	si,offset data_46
		call	sub_262
		pop	si
		call	sub_264
		pop	ax
		push	ax
		mov	si,3F97h
		cmp	ax,2
		jb	loc_183			; Jump if below
		cmp	ax,4
		jbe	loc_182			; Jump if below or =
		cmp	ax,0Ch
		jb	loc_183			; Jump if below
		cmp	ax,0Eh
		jbe	loc_182			; Jump if below or =
		cmp	ax,14h
		jb	loc_183			; Jump if below
		cmp	ax,31h
		jbe	loc_182			; Jump if below or =
		cmp	ax,64h
		jb	loc_183			; Jump if below
		cmp	ax,1F3h
		ja	loc_183			; Jump if above
loc_182:
		mov	si,offset data_54
loc_183:
		call	sub_262
		pop	ax
		xor	dx,dx			; Zero register
		push	di
		call	sub_279
		mov	si,offset data_50
		call	sub_262
		pop	si
		call	sub_265
		mov	si,3F92h
		or	al,al			; Zero ?
		jz	loc_184			; Jump if zero
		mov	si,offset data_52
loc_184:
		call	sub_262
		pop	dx
		mov	si,data_184e
		mov	cl,26h			; '&'
		call	sub_267
		call	sub_234
		retn
sub_77		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_78		proc	near
		push	bx
		mov	bx,cs:[bp+0Bh]
		call	sub_67
		pop	bx
		retn
sub_78		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_79		proc	near
		push	bx
		mov	bx,0FFFFh
		xchg	cs:[bp+0Bh],bx
		call	sub_67
		mov	cs:[bp+0Bh],bx
		pop	bx
		retn
sub_79		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_80		proc	near
		push	bx
		mov	bx,cs:[bp+0Bh]
		call	sub_37
		pop	bx
		retn
sub_80		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_81		proc	near
		mov	bx,cs:[bp+0Bh]

;==== External Entry into Subroutine ======================================

sub_82:
		push	si
		push	ds
		call	sub_37
		mov	bl,[si]
		pop	ds
		pop	si
		retn
sub_81		endp

		db	11 dup (0)
loc_185:
		call	sub_220

loc_ret_186:
		retn
			                        ;* No entry point to code
		call	sub_244
		jc	loc_ret_186		; Jump if carry Set
		call	sub_80
		test	byte ptr [si],11h
		jnz	loc_ret_186		; Jump if not zero
		mov	di,5870h
		mov	dx,di
		call	sub_286
		push	cs
		pop	ds
		call	sub_59
		mov	si,ds:[bp+4]
		call	sub_288
		jc	loc_185			; Jump if carry Set
		mov	ah,4Eh			; 'N'
		mov	cx,16h
		int	21h			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		jc	loc_185			; Jump if carry Set
		mov	ax,ds:data_132e
		sub	ax,2
		sub	ax,ds:data_131e
		jc	loc_185			; Jump if carry Set
		cmp	ax,1000h
		jb	loc_187			; Jump if below
		mov	ax,0FFFh
loc_187:
		mov	cl,4
		shl	ax,cl			; Shift w/zeros fill
		mov	ds:data_200e,ax
		and	byte ptr data_110,70h	; 'p'
		mov	dx,data_184e
		call	sub_85
		jc	loc_188			; Jump if carry Set
		mov	si,data_11e
		mov	di,data_187e
		call	sub_262
		call	sub_84
loc_188:
		mov	word ptr ds:data_201e,0
		call	sub_220
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_83		proc	near
		push	bp
		call	sub_16
		call	sub_181
		mov	bp,ds:[bp+1]
		call	sub_181
		pop	bp
		retn
sub_83		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_84		proc	near
		mov	word ptr ds:data_215e,0
		mov	bx,8000h
loc_189:
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_112
		or	bl,bl			; Zero ?
		jz	loc_190			; Jump if zero
		mov	si,cs:data_207e
		mov	dh,cs:data_214e
		call	sub_114
loc_190:
		call	sub_111
		call	sub_225
		call	sub_100
		cmp	ax,300h
		je	loc_191			; Jump if equal
		or	ah,ah			; Zero ?
		jz	loc_191			; Jump if zero
		cmp	al,20h			; ' '
		jb	loc_192			; Jump if below
		cmp	al,7Fh
		je	loc_192			; Jump if equal
loc_191:
		call	sub_95
		jmp	short loc_189
loc_192:
		cmp	al,1Bh
		je	loc_193			; Jump if equal
		cmp	ah,44h			; 'D'
		je	loc_194			; Jump if equal
		mov	bx,offset data_25
		call	sub_22
		jmp	short loc_189
loc_193:
		call	sub_88
		jc	loc_189			; Jump if carry Set
		dec	al
		jz	loc_195			; Jump if zero
		jns	loc_189			; Jump if not sign
loc_194:
		test	byte ptr data_110,1
		jz	loc_195			; Jump if zero
		call	sub_87
		jc	loc_189			; Jump if carry Set
loc_195:
		push	cs
		pop	ds
		push	cs
		pop	es
		retn
sub_84		endp

data_25		db	13h
		db	 01h,0DEh, 18h, 03h, 0Dh, 1Ah
		db	 04h,0FBh, 1Ah, 05h, 34h, 1Ah
		db	 06h, 03h, 19h, 07h, 80h, 19h
		db	 08h, 7Bh, 19h, 09h, 69h, 18h
		db	 0Ah, 3Ah, 18h, 0Dh, 34h, 18h
		db	 0Eh, 3Ah, 18h, 10h, 8Eh, 18h
		db	 12h, 04h, 1Ah, 13h, 0Bh, 1Ch
		db	 14h, 3Ch, 19h, 18h, 7Ch, 1Ah
		db	 19h,0A4h, 19h, 7Fh, 26h, 19h
		db	 1Fh, 88h, 16h, 4Fh, 4Dh,0FBh
		db	 1Ah, 4Bh, 0Bh, 1Ch, 50h, 7Ch
		db	 1Ah, 48h, 34h, 1Ah, 47h,0D8h
		db	 1Bh, 4Fh,0F0h, 1Bh, 84h,0E2h
		db	 19h, 76h,0FBh, 19h, 53h, 80h
		db	 19h, 74h, 03h, 19h, 73h,0DEh
		db	 18h, 77h,0DBh, 1Ah, 75h,0E9h
		db	 1Ah, 49h, 04h, 1Ah, 51h, 0Dh
		db	 1Ah, 81h, 00h, 0Fh, 5Bh, 18h
		db	 00h

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_85		proc	near
		mov	cx,ds:data_200e
		dec	cx
		xor	si,si			; Zero register
		call	sub_86
		jc	loc_ret_196		; Jump if carry Set
		mov	ds:data_201e,ax
		and	byte ptr data_110,74h	; 't'
		call	sub_98
		mov	bh,80h

loc_ret_196:
		retn
sub_85		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_86		proc	near
		push	cx
		mov	ah,4Eh			; 'N'
		mov	cx,16h
		int	21h			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		pop	cx
		jc	loc_197			; Jump if carry Set
		test	byte ptr ds:data_6e,11h
		stc				; Set carry flag
		jnz	loc_197			; Jump if not zero
		mov	ax,3D00h
		int	21h			; DOS Services  ah=function 3Dh
						;  open file, al=mode,name@ds:dx
		jc	loc_197			; Jump if carry Set
		mov	bx,ax
		mov	ds,ds:data_131e
		mov	dx,si
		mov	ah,3Fh
		int	21h			; DOS Services  ah=function 3Fh
						;  read file, bx=file handle
						;   cx=bytes to ds:dx buffer
		push	cs
		pop	ds
		push	ax
		pushf				; Push flags
		mov	ah,3Eh
		int	21h			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
		popf				; Pop flags
		pop	ax
		jc	loc_198			; Jump if carry Set
		cmp	word ptr ds:data_10e,0
		jne	loc_199			; Jump if not equal
		mov	dx,ds:data_200e
		cmp	dx,ds:data_9e
		jbe	loc_199			; Jump if below or =
		cmp	cx,ax
		jbe	loc_199			; Jump if below or =
loc_197:
		jnc	loc_200			; Jump if carry=0
loc_198:
		call	sub_187
		jc	loc_200			; Jump if carry Set
loc_199:
		call	sub_221
		mov	si,42ACh
		call	sub_178
loc_200:
		mov	data_18,0
		retn
sub_86		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_87		proc	near
		mov	dx,5870h
		and	byte ptr cs:data_110,0FEh
		xor	si,si			; Zero register
		mov	cx,cs:data_201e
		call	sub_83
		mov	ax,3D01h
		int	21h			; DOS Services  ah=function 3Dh
						;  open file, al=mode,name@ds:dx
		jnc	loc_204			; Jump if carry=0
		call	sub_187
		jc	loc_203			; Jump if carry Set
		push	cx
		xor	cx,cx			; Zero register
		mov	ah,3Ch
		int	21h			; DOS Services  ah=function 3Ch
						;  create/truncate file @ ds:dx
		pop	cx
		jnc	loc_204			; Jump if carry=0
loc_201:
		call	sub_187
		jc	loc_203			; Jump if carry Set
		mov	si,426Dh
loc_202:
		call	sub_178
		call	sub_221
loc_203:
		mov	data_18,0
		stc				; Set carry flag
		retn
loc_204:
		mov	bx,ax
		mov	ah,40h			; '@'
		mov	dx,si
		mov	ds,ds:data_131e
		push	cx
		int	21h			; DOS Services  ah=function 40h
						;  write file  bx=file handle
						;   cx=bytes from ds:dx buffer
		push	cs
		pop	ds
		push	ax
		pushf				; Push flags
		mov	ah,40h			; '@'
		xor	cx,cx			; Zero register
		int	21h			; DOS Services  ah=function 40h
						;  write file  bx=file handle
						;   cx=bytes from ds:dx buffer
		mov	ah,3Eh
		int	21h			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
		popf				; Pop flags
		pop	ax
		pop	cx
		jc	loc_201			; Jump if carry Set
		mov	si,426Dh
		cmp	ax,cx
		jne	loc_202			; Jump if not equal
		retn
sub_87		endp

			                        ;* No entry point to code
		call	sub_118
		push	ds
		call	sub_117
		cmp	word ptr [si],0A0Dh
		je	loc_205			; Jump if equal
		cmp	word ptr [si+1],0A0Dh
		je	loc_205			; Jump if equal
		mov	ax,[si]
		xchg	ah,al
		mov	[si],ax
		inc	bl
		or	byte ptr cs:data_110,1
loc_205:
		pop	ds
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_88		proc	near
		push	si
		push	di
		mov	bh,80h
		mov	al,1
		test	byte ptr data_110,1
		jz	loc_206			; Jump if zero
		mov	si,offset data_94+31h	; ('S')
		mov	di,428Ch
		xor	al,al			; Zero register
		call	sub_169
loc_206:
		pop	di
		pop	si
		retn
sub_88		endp

			                        ;* No entry point to code
		call	sub_89
		push	ax
		mov	ax,cs:data_208e
		call	sub_93
		mov	cs:data_208e,ax
		mov	ax,cs:data_205e
		call	sub_93
		mov	cs:data_205e,ax
		pop	ax
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_89		proc	near
		push	cx
		push	si
		push	di
		push	ds
		push	es
		mov	ds,cs:data_131e
		push	ds
		pop	es
		cmp	si,di
		je	loc_208			; Jump if equal
		ja	loc_207			; Jump if above
		xchg	si,di
loc_207:
		mov	cx,cs:data_201e
		sub	cx,si
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		sub	si,di
		sub	cs:data_201e,si
		or	byte ptr cs:data_110,1
loc_208:
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	cx
		retn
sub_89		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_90		proc	near
		push	cx
		push	si
		push	di
		push	ds
		push	es
		mov	ds,cs:data_131e
		push	ds
		pop	es
		cmp	si,di
		jb	loc_209			; Jump if below
		jz	loc_211			; Jump if zero
		xchg	si,di
loc_209:
		mov	cx,di
		sub	cx,si
		add	cx,cs:data_201e
		cmp	cx,cs:data_200e
		cmc				; Complement carry
		jc	loc_211			; Jump if carry Set
		mov	cs:data_201e,cx
		sub	cx,di
		jbe	loc_210			; Jump if below or =
		add	si,cx
		add	di,cx
		dec	si
		dec	di
		std				; Set direction flag
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		cld				; Clear direction
loc_210:
		or	byte ptr cs:data_110,1
loc_211:
		pop	es
		pop	ds
		pop	di
		pop	si
		pop	cx
		retn
sub_90		endp

			                        ;* No entry point to code
		push	ax
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		call	sub_117
		or	si,si			; Zero ?
		jz	loc_212			; Jump if zero
		cmp	word ptr [si-1],0A0Dh
		jne	loc_212			; Jump if not equal
		dec	word ptr cs:data_208e
loc_212:
		push	cs
		pop	ds
		mov	ax,ds:data_208e
		call	sub_91
		mov	ds:data_207e,si
		mov	ds:data_211e,dx
		mov	di,si
		call	sub_92
		mov	ds:data_213e,bx
		mov	si,ds:data_205e
		cmp	si,di
		jbe	loc_213			; Jump if below or =
		mov	ds:data_205e,di
		mov	byte ptr ds:data_214e,0
		mov	bh,80h
		jmp	short loc_216
loc_213:
		mov	cx,dx
		mov	ax,si
		call	sub_91
		mov	al,cs:data_145e
		cbw				; Convrt byte to word
		sub	cx,dx
		inc	cx
		cmp	cx,ax
		jb	loc_215			; Jump if below
		shr	ax,1			; Shift w/zeros fill
loc_214:
		cmp	cx,ax
		jbe	loc_215			; Jump if below or =
		call	sub_116
		jc	loc_215			; Jump if carry Set
		mov	bh,80h
		dec	cx
		jmp	short loc_214
loc_215:
		mov	ds:data_205e,si
		dec	cl
		mov	ds:data_214e,cl
loc_216:
		call	sub_105
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_91		proc	near
		push	ax
		push	di
		xor	si,si			; Zero register
		xor	dx,dx			; Zero register
		dec	dx
loc_217:
		inc	dx
		mov	di,si
		call	sub_116
		jc	loc_218			; Jump if carry Set
		cmp	si,ax
		jbe	loc_217			; Jump if below or =
loc_218:
		mov	si,di
		pop	di
		pop	ax
		retn
sub_91		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_92		proc	near
		push	si
		push	dx
		push	ds
		mov	ds,cs:data_131e
		xor	dx,dx			; Zero register
loc_219:
		cmp	si,ax
		jae	loc_220			; Jump if above or =
		call	sub_104
		jnc	loc_219			; Jump if carry=0
loc_220:
		mov	bx,dx
		pop	ds
		pop	dx
		pop	si
		retn
sub_92		endp

			                        ;* No entry point to code
		push	si
		push	di
		cmp	si,di
		jbe	loc_221			; Jump if below or =
		xchg	si,di
loc_221:
		cmp	ax,si
		jb	loc_222			; Jump if below
		sub	di,si
		add	ax,di
loc_222:
		pop	di
		pop	si
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_93		proc	near
		push	si
		push	di
		cmp	si,di
		jbe	loc_223			; Jump if below or =
		xchg	si,di
loc_223:
		cmp	ax,si
		jb	loc_225			; Jump if below
		cmp	ax,di
		jae	loc_224			; Jump if above or =
		mov	ax,si
		jmp	short loc_225
loc_224:
		sub	di,si
		sub	ax,di
loc_225:
		pop	di
		pop	si
		retn
sub_93		endp

			                        ;* No entry point to code
		call	sub_94
		jmp	loc_266

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_94		proc	near
		push	word ptr cs:data_208e
		push	word ptr cs:data_213e
		mov	al,0Dh
		call	sub_95
		mov	al,0Ah
		call	sub_95
		pop	word ptr cs:data_213e
		pop	word ptr cs:data_208e
		mov	bh,80h
		retn
sub_94		endp

loc_226:
		call	sub_109
		jc	loc_ret_227		; Jump if carry Set
		test	byte ptr cs:data_213e,7
		jnz	loc_226			; Jump if not zero

loc_ret_227:
		retn
			                        ;* No entry point to code
		push	ds
		test	byte ptr data_110,4
		jz	loc_229			; Jump if zero
loc_228:
		call	sub_117
		cmp	word ptr [si],0A0Dh
		je	loc_229			; Jump if equal
		call	sub_103
		jc	loc_229			; Jump if carry Set
		test	byte ptr cs:data_213e,7
		jnz	loc_228			; Jump if not zero
		jmp	short loc_230
loc_229:
		call	sub_95
loc_230:
		pop	ds
		retn
			                        ;* No entry point to code
		xor	dx,dx			; Zero register
		mov	al,3
		call	sub_229
		mov	al,5Eh			; '^'
		call	sub_229
		mov	al,50h			; 'P'
		call	sub_229
		xor	ax,ax			; Zero register
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_95		proc	near
		push	si
		push	di
		push	ds
		call	sub_117
		cmp	si,cs:data_201e
		jae	loc_231			; Jump if above or =
		cmp	word ptr [si],0A0Dh
		je	loc_231			; Jump if equal
		test	byte ptr cs:data_110,4
		jnz	loc_232			; Jump if not zero
loc_231:
		mov	di,si
		inc	di
		call	sub_90
		jc	loc_233			; Jump if carry Set
loc_232:
		mov	[si],al
		or	byte ptr cs:data_110,1
		mov	ax,cs:data_213e
		inc	bl
		call	sub_103
loc_233:
		call	sub_118
		pop	ds
		pop	di
		pop	si
		retn
sub_95		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_96		proc	near
		push	ax
		push	si
		push	ds
loc_234:
		call	sub_117
		dec	si
		lodsb				; String [si] to al
		call	sub_30
		jnc	loc_235			; Jump if carry=0
		call	sub_109
		jnc	loc_234			; Jump if carry=0
loc_235:
		call	sub_117
		dec	si
		lodsb				; String [si] to al
		call	sub_30
		jc	loc_236			; Jump if carry Set
		call	sub_109
		jnc	loc_235			; Jump if carry=0
loc_236:
		pop	ds
		pop	si
		pop	ax
		retn
sub_96		endp

;		db	50h
		push ax
;		db	56h
		push si
;		db	1Eh
		push ds
loc_237:
		call	sub_117
		lodsb				; String [si] to al
		call	sub_30
		jc	loc_238			; Jump if carry Set
		call	sub_103
		jnc	loc_237			; Jump if carry=0
loc_238:
		call	sub_117
		lodsb				; String [si] to al
		call	sub_30
		jnc	loc_239			; Jump if carry=0
		call	sub_103
		jnc	loc_238			; Jump if carry=0
loc_239:
		pop	ds
		pop	si
		pop	ax
		retn
			                        ;* No entry point to code
		mov	di,ds:data_208e
		call	sub_96
		mov	si,ds:data_208e
		cmp	si,di
		je	loc_ret_240		; Jump if equal
		call	sub_89
		call	sub_97

loc_ret_240:
		retn
			                        ;* No entry point to code
		push	ds
		call	sub_117
		mov	di,si
loc_241:
		cmp	si,cs:data_201e
		jae	loc_243			; Jump if above or =
		lodsb				; String [si] to al
		call	sub_30
		jnc	loc_241			; Jump if carry=0
		dec	si
		cmp	si,di
		jne	loc_242			; Jump if not equal
		cmp	word ptr [si],0A0Dh
		jne	loc_242			; Jump if not equal
		inc	si
loc_242:
		cmp	si,cs:data_201e
		jae	loc_243			; Jump if above or =
		cmp	word ptr [si],0A0Dh
		je	loc_243			; Jump if equal
		lodsb				; String [si] to al
		call	sub_30
		jc	loc_242			; Jump if carry Set
		dec	si
loc_243:
		pop	ds
		cmp	si,di
		je	loc_ret_244		; Jump if equal
		call	sub_89
		call	sub_97

loc_ret_244:
		retn
			                        ;* No entry point to code
		call	sub_109
		jc	loc_ret_247		; Jump if carry Set
		push	si
		push	di
		push	ds
		call	sub_117
		mov	di,si
		inc	di
		cmp	si,cs:data_201e
		cmc				; Complement carry
		jc	loc_246			; Jump if carry Set
		inc	bl
		cmp	word ptr [si],0A0Dh
		jne	loc_245			; Jump if not equal
		inc	di
		mov	bh,80h
loc_245:
		call	sub_89
		clc				; Clear carry flag
loc_246:
		pop	ds
		pop	di
		pop	si

loc_ret_247:
		retn
			                        ;* No entry point to code
		mov	si,cs:data_207e
		mov	di,si
		call	sub_116
		cmp	si,di
		je	loc_ret_249		; Jump if equal
		call	sub_89
		call	sub_106

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_97		proc	near
		or	bh,bh			; Zero ?
		jnz	loc_ret_249		; Jump if not zero
		mov	si,cs:data_207e
		mov	dh,cs:data_214e
		xor	cx,cx			; Zero register
		mov	cl,cs:data_145e
		inc	cx
		sub	cl,dh

locloop_248:
		mov	cs:data_206e,si
		call	sub_114
		call	sub_116
		inc	dh
		loop	locloop_248		; Loop if cx > 0

		xor	bh,bh			; Zero register

loc_ret_249:
		retn
sub_97		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_98		proc	near
		xor	ax,ax			; Zero register
		cmp	ds:data_208e,ax
		pushf				; Push flags
		mov	di,data_205e
		mov	cx,5A55h
		sub	cx,5A42h
		rep	stosb			; Rep when cx >0 Store al to es:[di]
		popf				; Pop flags
		jz	loc_ret_250		; Jump if zero
		mov	bh,80h

loc_ret_250:
		retn
sub_98		endp

loc_251:
		call	sub_102
		jnc	loc_251			; Jump if carry=0
		call	sub_108
		retn
			                        ;* No entry point to code
		call	sub_238
		dec	cx
		call	sub_99
		jmp	short locloop_252
			                        ;* No entry point to code
		call	sub_238
		dec	cx
		call	sub_99
		jmp	short locloop_253

locloop_252:
		call	sub_101
		loop	locloop_252		; Loop if cx > 0

		retn

locloop_253:
		call	sub_102
		loop	locloop_253		; Loop if cx > 0

		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_99		proc	near
		pushf				; Push flags
		or	byte ptr cs:data_108,8
		popf				; Pop flags
		retn
sub_99		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_100		proc	near
		pushf				; Push flags
		and	byte ptr cs:data_108,0F7h
		popf				; Pop flags
		retn
sub_100		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_101		proc	near
		push	ax
		push	cx
		push	si
		mov	si,cs:data_207e
		call	sub_115
		jc	loc_257			; Jump if carry Set
		mov	cs:data_207e,si
		dec	word ptr cs:data_211e
		call	sub_106
		dec	byte ptr cs:data_214e
		js	loc_254			; Jump if sign=1
		call	sub_165
		jz	loc_256			; Jump if zero
loc_254:
		mov	si,cs:data_205e
		call	sub_115
		jc	loc_256			; Jump if carry Set
		dec	bh
		cmp	bh,80h
		jne	loc_255			; Jump if not equal
		inc	bh
loc_255:
		mov	cs:data_205e,si
		inc	byte ptr cs:data_214e
loc_256:
		clc				; Clear carry flag
loc_257:
		pop	si
		pop	cx
		pop	ax
		retn
sub_101		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_102		proc	near
		push	ax
		push	dx
		push	si
		mov	si,cs:data_207e
		call	sub_116
		jc	loc_261			; Jump if carry Set
		mov	cs:data_207e,si
		inc	word ptr cs:data_211e
		call	sub_106
		call	sub_239
		mov	al,cs:data_214e
		inc	al
		mov	cs:data_214e,al
		cmp	al,dh
		ja	loc_258			; Jump if above
		call	sub_165
		jz	loc_260			; Jump if zero
loc_258:
		mov	si,cs:data_206e
		call	sub_116
		jc	loc_260			; Jump if carry Set
		mov	cs:data_206e,si
		inc	bh
		cmp	bh,80h
		jne	loc_259			; Jump if not equal
		dec	bh
loc_259:
		mov	si,cs:data_205e
		call	sub_116
		mov	cs:data_205e,si
		dec	byte ptr cs:data_214e
loc_260:
		clc				; Clear carry flag
loc_261:
		pop	si
		pop	dx
		pop	ax
		retn
sub_102		endp

loc_262:
		cmp	byte ptr cs:data_214e,0
		je	loc_ret_263		; Jump if equal
		call	sub_101
		jnc	loc_262			; Jump if carry=0

loc_ret_263:
		retn
;		db	 52h
		push	dx
;		db	0E8h,0B2h, 1Eh	;399f
		call	sub_239
loc_264:
		cmp	cs:data_214e,dh
		jae	loc_265			; Jump if above or =
		call	sub_102
		jnc	loc_264			; Jump if carry=0
loc_265:
		pop	dx
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_103		proc	near
loc_266:
		push	ax
		push	cx
		push	dx
		push	si
		push	ds
		mov	ds,cs:data_131e
		mov	si,cs:data_208e
		mov	dx,cs:data_213e
		cmp	si,cs:data_201e
		cmc				; Complement carry
		jc	loc_271			; Jump if carry Set
		call	sub_104
		jc	loc_269			; Jump if carry Set
		mov	cs:data_213e,dx
		mov	cs:data_208e,si
		or	bl,bl			; Zero ?
		jnz	loc_270			; Jump if not zero
		call	sub_165
		jz	loc_270			; Jump if zero
		add	word ptr cs:data_209e,10h
		mov	cx,dx
		add	cx,0Fh
loc_267:
		cmp	dx,cx
		jae	loc_268			; Jump if above or =
		call	sub_104
		jnc	loc_267			; Jump if carry=0
loc_268:
		mov	cs:data_213e,dx
		mov	cs:data_208e,si
		mov	bh,80h
		jmp	short loc_270
loc_269:
		call	sub_102
		call	sub_107
loc_270:
		call	sub_105
		call	sub_118
		clc				; Clear carry flag
loc_271:
		pop	ds
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn
sub_103		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_104		proc	near
		cmp	si,cs:data_201e
		jae	loc_274			; Jump if above or =
		test	byte ptr cs:data_110,40h	; '@'
		jz	loc_272			; Jump if zero
		cmp	dx,4Fh
		jae	loc_274			; Jump if above or =
		inc	dx
		jmp	short loc_273
loc_272:
		cmp	word ptr [si],0A0Dh
		je	loc_274			; Jump if equal
		inc	dx
		cmp	byte ptr [si],9
		jne	loc_273			; Jump if not equal
		test	byte ptr cs:data_110,10h
		jnz	loc_273			; Jump if not zero
		add	dx,7
;*		and	dx,0FFF8h
		db	 81h,0E2h,0F8h,0FFh		;  Fixup - byte match
loc_273:
		inc	si
		stc				; Set carry flag
loc_274:
		cmc				; Complement carry
		retn
sub_104		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_105		proc	near
		push	ax
		push	dx
		pushf				; Push flags
		mov	ax,cs:data_213e
		mov	dx,cs:data_209e
		cmp	ax,dx
		jb	loc_275			; Jump if below
		sub	ax,4Fh
		jc	loc_276			; Jump if carry Set
		cmp	ax,dx
		jbe	loc_276			; Jump if below or =
		add	ax,0Fh
loc_275:
		and	ax,0FFF0h
		mov	cs:data_209e,ax
		mov	bh,80h
loc_276:
		popf				; Pop flags
		pop	dx
		pop	ax
		retn
sub_105		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_106		proc	near
		push	ax
		push	si
		call	sub_119
		mov	cs:data_208e,si
		mov	cs:data_213e,ax
		call	sub_105
		clc				; Clear carry flag
		pop	si
		pop	ax
		retn
sub_106		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_107		proc	near
		push	word ptr cs:data_207e
		pop	word ptr cs:data_208e
		mov	word ptr cs:data_213e,0
loc_277:
		call	sub_105
		call	sub_118
		retn
sub_107		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_108		proc	near
		push	si
		push	bx
		mov	bx,0FFFFh
		mov	si,cs:data_207e
		call	sub_121
		mov	cs:data_208e,si
		mov	cs:data_213e,bx
		pop	bx
		pop	si
		jmp	short loc_277
sub_108		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_109		proc	near
		push	ax
		push	cx
		push	dx
		push	si
		push	di
		push	ds
		mov	ds,cs:data_131e
		mov	si,cs:data_208e
		mov	dx,cs:data_213e
		mov	di,cs:data_207e
		or	si,si			; Zero ?
		stc				; Set carry flag
		jz	loc_281			; Jump if zero
		call	sub_110
		jc	loc_280			; Jump if carry Set
		mov	cs:data_213e,dx
		mov	cs:data_208e,si
		or	bl,bl			; Zero ?
		jnz	loc_281			; Jump if not zero
		call	sub_165
		jz	loc_281			; Jump if zero
		cmp	word ptr cs:data_209e,10h
		jb	loc_281			; Jump if below
		sub	word ptr cs:data_209e,10h
		mov	cx,dx
		sub	cx,0Fh
		jnc	loc_278			; Jump if carry=0
		xor	cx,cx			; Zero register
loc_278:
		cmp	dx,cx
		jbe	loc_279			; Jump if below or =
		call	sub_110
		jnc	loc_278			; Jump if carry=0
loc_279:
		mov	cs:data_213e,dx
		mov	cs:data_208e,si
		mov	bh,80h
		jmp	short loc_281
loc_280:
		call	sub_101
		call	sub_108
loc_281:
		call	sub_105
		call	sub_118
		clc				; Clear carry flag
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn
sub_109		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_110		proc	near
		or	si,si			; Zero ?
		jz	loc_283			; Jump if zero
		or	dx,dx			; Zero ?
		jz	loc_283			; Jump if zero
		dec	dx
		dec	si
		cmp	byte ptr [si],9
		jne	loc_282			; Jump if not equal
		test	byte ptr cs:data_110,10h
		jnz	loc_282			; Jump if not zero
		push	ax
		push	bx
		push	si
		mov	ax,si
		mov	si,di
		call	sub_92
		mov	dx,bx
		pop	si
		pop	bx
		pop	ax
loc_282:
		stc				; Set carry flag
loc_283:
		cmc				; Complement carry
		retn
sub_110		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_111		proc	near
		push	ax
		push	dx
		mov	dx,cs:data_213e
		sub	dx,cs:data_209e
		mov	dh,cs:data_214e
		xor	al,al			; Zero register
		call	sub_229
		pop	dx
		pop	ax
		retn
sub_111		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_112		proc	near
		push	ax
		push	si
		push	cx
		push	dx
		mov	si,cs:data_205e
		xor	dh,dh			; Zero register
		call	sub_238
		inc	cx
		or	bh,bh			; Zero ?
		jz	loc_295			; Jump if zero
		jns	loc_288			; Jump if not sign
		mov	al,bh
		neg	al
		cmp	al,0Ah
		jae	loc_284			; Jump if above or =
		mov	ah,7
		call	sub_113
loc_284:
		cbw				; Convrt byte to word
		cmp	ax,0Ah
		jb	loc_285			; Jump if below
		mov	ax,cx
loc_285:
		sub	cx,ax
		push	cx
		mov	cx,ax

locloop_286:
		mov	cs:data_206e,si
		call	sub_114
		call	sub_116
		inc	dh
		loop	locloop_286		; Loop if cx > 0

		pop	cx
		jcxz	loc_294			; Jump if cx=0

locloop_287:
		mov	cs:data_206e,si
		call	sub_116
		loop	locloop_287		; Loop if cx > 0

		jmp	short loc_294
loc_288:
		mov	al,bh
		cmp	al,0Ah
		jae	loc_289			; Jump if above or =
		mov	ah,6
		call	sub_113
loc_289:
		cbw				; Convrt byte to word
		cmp	ax,0Ah
		jb	loc_290			; Jump if below
		mov	ax,cx
loc_290:
		sub	cx,ax
		jz	loc_292			; Jump if zero

locloop_291:
		call	sub_116
		inc	dh
		loop	locloop_291		; Loop if cx > 0

loc_292:
		mov	cx,ax

locloop_293:
		mov	cs:data_206e,si
		call	sub_114
		call	sub_116
		inc	dh
		loop	locloop_293		; Loop if cx > 0

loc_294:
		xor	bx,bx			; Zero register
loc_295:
		pop	dx
		pop	cx
		pop	si
		pop	ax
		retn
sub_112		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_113		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	bp
		push	ds
		push	es
		xor	cx,cx			; Zero register
		call	sub_239
		inc	dh
		mov	dl,4Fh			; 'O'
		mov	bh,cs:data_124e
		int	10h			; Video display   ah=functn 07h
						;  scroll down, al=lines
						;   bh=attrib, cx+dx=window size
		pop	es
		pop	ds
		pop	bp
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_113		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_114		proc	near
		push	ax
		push	cx
		push	dx
		push	di
		push	ds
		call	sub_120
		xor	dl,dl			; Zero register
		mov	ds,cs:data_131e
		mov	cx,50h

locloop_296:
		cmp	si,cs:data_201e
		jae	loc_301			; Jump if above or =
		cmp	word ptr [si],0A0Dh
		je	loc_301			; Jump if equal
		cmp	byte ptr [si],20h	; ' '
		mov	al,1
		jnc	loc_297			; Jump if carry=0
		mov	al,0Fh
loc_297:
		call	sub_229
		lodsb				; String [si] to al
		cmp	al,20h			; ' '
		jae	loc_299			; Jump if above or =
		cmp	al,9
		jne	loc_299			; Jump if not equal
		mov	al,20h			; ' '
loc_298:
		call	sub_229
		dec	cx
		jcxz	loc_302			; Jump if cx=0
		test	dl,7
		jnz	loc_298			; Jump if not zero
		jmp	short locloop_296
loc_299:
		or	al,al			; Zero ?
		jnz	loc_300			; Jump if not zero
		mov	al,2Eh			; '.'
loc_300:
		call	sub_230
		loop	locloop_296		; Loop if cx > 0

loc_301:
		mov	al,1
		call	sub_229
		mov	al,20h			; ' '
		call	sub_232
loc_302:
		pop	ds
		pop	di
		pop	dx
		pop	cx
		pop	ax
		retn
sub_114		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_115		proc	near
		push	ax
		push	ds
		mov	ds,cs:data_131e
		or	si,si			; Zero ?
		stc				; Set carry flag
		jz	loc_304			; Jump if zero
loc_303:
		or	si,si			; Zero ?
		jz	loc_304			; Jump if zero
		dec	si
		cmp	si,2
		jb	loc_303			; Jump if below
		cmp	word ptr [si-2],0A0Dh
		jne	loc_303			; Jump if not equal
loc_304:
		pop	ds
		pop	ax
		retn
sub_115		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_116		proc	near
		push	ax
		push	ds
		mov	ds,cs:data_131e
		mov	ax,cs:data_201e
loc_305:
		cmp	si,ax
		cmc				; Complement carry
		jc	loc_306			; Jump if carry Set
		inc	si
		cmp	word ptr [si-1],0A0Dh
		jne	loc_305			; Jump if not equal
		inc	si
loc_306:
		pop	ds
		pop	ax
		retn
sub_116		endp

			                        ;* No entry point to code
		push	ax
		push	si
		call	sub_119
		mov	cs:data_212e,ax
		pop	si
		pop	ax
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_117		proc	near
		mov	si,cs:data_208e
		mov	ds,cs:data_131e
		retn
sub_117		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_118		proc	near
		push	word ptr cs:data_213e
		pop	word ptr cs:data_212e
		retn
sub_118		endp

			                        ;* No entry point to code
		push	bx
		mov	bx,0FFFFh
		jmp	short loc_307

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_119		proc	near
		push	bx
		mov	bx,cs:data_212e
loc_307:
		mov	si,cs:data_207e
		call	sub_121
		mov	ax,bx
		pop	bx
		retn
sub_119		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_120		proc	near
		push	bx
		mov	bx,cs:data_209e
		call	sub_121
		pop	bx
		retn
sub_120		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_121		proc	near
		push	dx
		push	ds
		mov	ds,cs:data_131e
		xor	dx,dx			; Zero register
loc_308:
		cmp	dx,bx
		jae	loc_309			; Jump if above or =
		call	sub_104
		jnc	loc_308			; Jump if carry=0
loc_309:
		mov	bx,dx
		pop	ds
		pop	dx
		retn
sub_121		endp

		db	14 dup (0)
;		db	0E8h, 6Dh, 1Bh	;39e0
		call	sub_244
;		db	73h, 01h		;jnb 1e76
		jnb	l_1e76

loc_ret_310:
		retn

l_1e76:			                        ;* No entry point to code
		call	sub_80
		jc	loc_ret_310		; Jump if carry Set
		test	byte ptr [si],10h
		jnz	loc_ret_310		; Jump if not zero
		mov	di,597Fh
		mov	dx,di
		call	sub_286
		push	cs
		pop	ds
		call	sub_251
		jc	loc_ret_310		; Jump if carry Set
		mov	ds:data_202e,al
		call	sub_253
		mov	ds:data_203e,bx
		call	sub_254
;*		and	bx,0FFF0h
		db	 81h,0E3h,0F0h,0FFh		;  Fixup - byte match
		mov	ds:data_200e,bx
		shr	bx,1			; Shift w/zeros fill
		mov	ds:data_204e,bx
		jz	loc_315			; Jump if zero
		call	sub_59
		mov	si,ds:[bp+4]
		call	sub_288
		jc	loc_315			; Jump if carry Set
		mov	ax,3D00h
		int	21h			; DOS Services  ah=function 3Dh
						;  open file, al=mode,name@ds:dx
		jc	loc_315			; Jump if carry Set
		mov	ds:data_195e,ax
		mov	bx,ax
		call	sub_129
		mov	ds:data_205e,si
loc_311:
		call	sub_122
loc_312:
		call	sub_228
		call	sub_225
		cmp	al,1Bh
		je	loc_314			; Jump if equal
		or	al,al			; Zero ?
		jnz	loc_312			; Jump if not zero
		mov	al,ah
		mov	bx,16h
		cmp	al,73h			; 's'
		je	loc_313			; Jump if equal
		mov	bx,data_3e
		cmp	al,74h			; 't'
		je	loc_313			; Jump if equal
		sub	al,47h			; 'G'
		jc	loc_312			; Jump if carry Set
		cmp	al,0Ah
		ja	loc_312			; Jump if above
		cbw				; Convrt byte to word
		mov	bx,ax
		add	bx,bx
loc_313:
		mov	si,ds:data_205e
		call	word ptr data_27[bx]	;*13 entries
		mov	ds:data_205e,si
		jmp	short loc_311
loc_314:
		mov	bx,cs:data_195e
		mov	ah,3Eh
		int	21h			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
loc_315:
		push	cs
		pop	ds
		mov	al,ds:data_202e
		call	sub_252
		call	sub_220
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_122		proc	near
		mov	al,1
		call	sub_229
		xor	ax,ax			; Zero register
		mov	ax,ds:data_209e
		add	ax,50h
		mov	ds:data_210e,ax
		xor	dx,dx			; Zero register
		call	sub_238
		inc	cx

locloop_316:
		call	sub_123
		inc	dh
		loop	locloop_316		; Loop if cx > 0

		retn
sub_122		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_123		proc	near
		push	cx
		xor	bx,bx			; Zero register
		xor	dl,dl			; Zero register
loc_317:
		call	sub_125
		jc	loc_320			; Jump if carry Set
		cmp	al,0Dh
		je	loc_317			; Jump if equal
		cmp	al,0Ah
		je	loc_320			; Jump if equal
		or	bh,bh			; Zero ?
		jnz	loc_320			; Jump if not zero
		mov	cx,1
		cmp	al,9
		jne	loc_318			; Jump if not equal
		mov	ax,bx
		and	ax,7
		mov	cx,8
		sub	cx,ax
		mov	al,20h			; ' '
loc_318:
		call	sub_124
		jmp	short loc_317
loc_319:
		mov	cx,1
		mov	al,20h			; ' '
		call	sub_124
loc_320:
		cmp	bx,ds:data_210e
		jb	loc_319			; Jump if below
		pop	cx
		retn
sub_123		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_124		proc	near
		cmp	bx,ds:data_209e
		jb	loc_321			; Jump if below
		cmp	bx,ds:data_210e
		jae	loc_321			; Jump if above or =
		call	sub_233
loc_321:
		add	bx,cx
		retn
sub_124		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_125		proc	near
loc_322:
		cmp	si,ds:data_201e
		jb	loc_323			; Jump if below
		cmp	si,ds:data_200e
		jb	loc_ret_324		; Jump if below
		push	cx
		push	dx
		push	di
		push	ds
		push	es
		xor	di,di			; Zero register
		mov	cx,ds:data_204e
		mov	si,cx
		push	cx
		sub	ds:data_205e,cx
		add	ds:data_198e,cx
		adc	word ptr ds:data_199e,0
		add	ds:data_198e,cx
		adc	word ptr ds:data_199e,0
		mov	es,ds:data_203e
		mov	ds,ds:data_203e
		cld				; Clear direction
		shr	cx,1			; Shift w/zeros fill
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		mov	si,di
		pop	cx
		mov	dx,cx
		pop	es
		pop	ds
		call	sub_127
		sub	ds:data_198e,cx
		sbb	word ptr ds:data_199e,0
		pop	di
		pop	dx
		pop	cx
		jmp	short loc_322
loc_323:
		push	ds
		mov	ds,ds:data_203e
		lodsb				; String [si] to al
		pop	ds
		clc				; Clear carry flag

loc_ret_324:
		retn
sub_125		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_126		proc	near
		or	si,si			; Zero ?
		jnz	loc_325			; Jump if not zero
		mov	ax,ds:data_198e
		or	ax,ds:data_199e
		stc				; Set carry flag
		jz	loc_ret_326		; Jump if zero
		push	cx
		push	dx
		push	ds
		push	es
		xor	si,si			; Zero register
		mov	cx,ds:data_204e
		mov	di,cx
		push	cx
		add	ds:data_205e,cx
		sub	ds:data_198e,cx
		sbb	word ptr ds:data_199e,0
		mov	es,ds:data_203e
		mov	ds,ds:data_203e
		cld				; Clear direction
		shr	cx,1			; Shift w/zeros fill
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		xor	dx,dx			; Zero register
		pop	cx
		pop	es
		pop	ds
		call	sub_127
		pop	dx
		pop	cx
loc_325:
		dec	si
		push	ds
		mov	ds,ds:data_203e
		mov	al,[si]
		pop	ds
		clc				; Clear carry flag

loc_ret_326:
		retn
sub_126		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_127		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		mov	dx,ds:data_198e
		mov	cx,ds:data_199e
		mov	bx,ds:data_195e
		xor	ax,ax			; Zero register
		mov	ah,42h
		int	21h			; DOS Services  ah=function 42h
						;  move file ptr, bx=file handle
						;   al=method, cx,dx=offset
		pop	dx
		pop	cx
		mov	ax,ds:data_200e
		mov	ds:data_201e,ax
		push	ds
		mov	ds,ds:data_203e
		mov	ah,3Fh
		int	21h			; DOS Services  ah=function 3Fh
						;  read file, bx=file handle
						;   cx=bytes to ds:dx buffer
		pop	ds
		jnc	loc_327			; Jump if carry=0
		xor	ax,ax			; Zero register
loc_327:
		cmp	ax,cx
		je	loc_328			; Jump if equal
		add	ax,dx
		mov	ds:data_201e,ax
loc_328:
		pop	bx
		pop	ax
		retn
sub_127		endp

data_27		dw	offset sub_129		; Data table (indexed access)
data_28		dw	offset sub_130
data_29		dw	offset sub_131
data_30		dw	offset sub_128
data_31		dw	offset sub_132
data_32		dw	offset sub_128
data_33		dw	offset sub_133
data_34		dw	offset sub_128
data_35		dw	offset sub_136
data_36		dw	offset sub_137
data_37		dw	offset sub_138
data_38		dw	offset sub_134
data_39		dw	offset sub_135

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_128		proc	near
		retn
sub_128		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_129		proc	near
		xor	bx,bx			; Zero register
		mov	ds:data_198e,bx
		mov	ds:data_199e,bx
		mov	ds:data_209e,bx
		xor	dx,dx			; Zero register
		mov	cx,ds:data_200e
		call	sub_127
		xor	si,si			; Zero register
		retn
sub_129		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_130		proc	near
		push	cx
		call	sub_126
		jc	loc_331			; Jump if carry Set
		mov	cx,100h

locloop_329:
		call	sub_126
		jc	loc_330			; Jump if carry Set
		cmp	al,0Ah
		loopnz	locloop_329		; Loop if zf=0, cx>0

		jcxz	loc_330			; Jump if cx=0
		call	sub_125
loc_330:
		clc				; Clear carry flag
loc_331:
		pop	cx
		retn
sub_130		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_131		proc	near
		call	sub_238

locloop_332:
		call	sub_130
		jc	loc_ret_333		; Jump if carry Set
		loop	locloop_332		; Loop if cx > 0


loc_ret_333:
		retn
sub_131		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_132		proc	near
		cmp	word ptr ds:data_209e,8
		jb	loc_ret_334		; Jump if below
		sub	word ptr ds:data_209e,8

loc_ret_334:
		retn
sub_132		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_133		proc	near
		add	word ptr ds:data_209e,8
		retn
sub_133		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_134		proc	near
		sub	word ptr ds:data_209e,50h
		jnc	loc_ret_335		; Jump if carry=0
		mov	word ptr ds:data_209e,0

loc_ret_335:
		retn
sub_134		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_135		proc	near
		add	word ptr ds:data_209e,50h
		retn
sub_135		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_136		proc	near
loc_336:
		call	sub_137
		jnc	loc_336			; Jump if carry=0
		mov	word ptr ds:data_209e,0
		retn
sub_136		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_137		proc	near
		push	cx
		mov	cx,100h

locloop_337:
		call	sub_125
		jc	locloop_338		; Jump if carry Set
		cmp	al,0Ah
		loopnz	locloop_337		; Loop if zf=0, cx>0

		clc				; Clear carry flag
		pop	cx
		retn
;		db	0B9h, 00h, 01h
		mov	cx,100h

locloop_338:
		call	sub_126
		jc	loc_339			; Jump if carry Set
		cmp	al,0Ah
		loopnz	locloop_338		; Loop if zf=0, cx>0

		call	sub_125
loc_339:
		stc				; Set carry flag
		pop	cx
		retn
sub_137		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_138		proc	near
		call	sub_238

locloop_340:
		call	sub_137
		jc	loc_ret_341		; Jump if carry Set
		loop	locloop_340		; Loop if cx > 0


loc_ret_341:
		retn
sub_138		endp

		db	12 dup (0)

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_139		proc	near
		mov	ds:data_186e,di
		push	es
		push	ds
		pop	es
		push	bx
		push	dx
		push	cx
		push	bp
		call	sub_153
		call	sub_151
		call	sub_146
loc_342:
		mov	bp,5774h
		call	sub_144
		mov	ax,ds:data_163e
		call	sub_145
		call	sub_18
loc_343:
		call	sub_225
		or	ah,ah			; Zero ?
		jz	loc_344			; Jump if zero
		cmp	al,20h			; ' '
		jae	loc_344			; Jump if above or =
		cmp	ah,3Bh			; ';'
		jb	loc_346			; Jump if below
		cmp	ah,44h			; 'D'
		ja	loc_346			; Jump if above
loc_344:
		mov	word ptr ds:data_156e,0
		mov	word ptr ds:data_157e,0
		mov	word ptr ds:data_155e,0
		jmp	short loc_346
loc_345:
		call	sub_225
loc_346:
		or	ah,ah			; Zero ?
		jz	loc_347			; Jump if zero
		cmp	ax,300h
		je	loc_347			; Jump if equal
		cmp	al,20h			; ' '
		jae	loc_347			; Jump if above or =
		push	bx
		mov	bx,offset data_42
		call	sub_22
		pop	bx
		jnc	loc_345			; Jump if carry=0
loc_347:
		call	sub_140
		jnz	loc_343			; Jump if not zero
		cmp	al,20h			; ' '
		jae	loc_345			; Jump if above or =
		push	cx
		push	di
		mov	di,offset data_41
		mov	cx,0Ah
		mov	al,ah
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		pop	di
		pop	cx
		jz	loc_342			; Jump if zero
		jmp	short loc_345
sub_139		endp

data_41		db	48h		;dec ax
		db	 8Dh, 50h, 91h	;LEA     DX,[BX+SI-6F]
		db	77h, 75h	;ja 222c
		db	49h		;dec cx
		db	84h, 51h, 76h	;TEST    DL,[BX+DI+76]
		db	50h		;PUSH    AX
		db	57h		;PUSH    DI
		db	56h		;PUSH    SI
		db	0BEh, 8Bh, 57h	;MOV     SI,578B
		db	50h		;PUSH    AX
		db	0A1h, 7Ah,57h	;MOV     AX,[577A]
		db	56h		;PUSH    SI
		db	03h,0F0h	;ADD     SI,AX
		db	0C6h, 04h,00h	;MOV     BYTE PTR [SI],00
		db	5Eh		;POP     SI
		db	58h		;POP     AX
		db	0E8h, 65h, 03h	;2535
		db	5Eh		;POP     SI
		db	5Fh		;POP     DI
		db	58h		;POP     AX
		db	0E8h, 6Dh, 00h	;2243
		db	0EBh, 23h		;jmp 21fb
		db	0BEh, 8Bh, 57h	;MOV     SI,578B
		db	55h		;PUSH    BP
		db	50h		;PUSH    AX
		db	51h		;PUSH    CX
		db	56h		;PUSH    SI
		db	0E8h, 0Fh, 18h	;39f1
		db	 8Bh, 0Eh, 7Ah, 57h		;MOV     CX,[577A]
		db	0E3h, 8		;JCXZ    21F0

locloop_348:
		lodsb				; String [si] to al
		xor	ah,ah			; Zero register
		call	sub_161
		loop	locloop_348		; Loop if cx > 0

loc_349:
		mov	al,20h			; ' '
		xor	ah,ah			; Zero register
		call	sub_161
		pop	si
		pop	cx
		pop	ax
		pop	bp
loc_350:
		add	sp,6
		push	si
		pop	si
		cmp	al,0Dh
		je	loc_351			; Jump if equal
		stc				; Set carry flag
loc_351:
		pop	bp
		pop	cx
		pop	dx
		pop	bx
		pop	es
		call	sub_228
		retn
data_42		db	3
		db	 0Dh,0BBh, 21h, 0Ah,0D8h, 21h
		db	 1Bh,0FBh, 21h, 00h

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_140		proc	near
		push	ax
		push	word ptr ds:data_163e
		push	word ptr ds:data_164e
		call	sub_19
		pop	ax
		cmp	ax,ds:data_164e
		pop	ax
		jnz	loc_353			; Jump if not zero
		cmp	ax,ds:data_163e
		je	loc_354			; Jump if equal
loc_353:
		pushf				; Push flags
		call	sub_144
		mov	al,ds:data_163e
		call	sub_145
		call	sub_18
		popf				; Pop flags
loc_354:
		pop	ax
		retn
sub_140		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_141		proc	near
		push	ax
		push	bx
		push	cx
		push	di
		call	sub_142
		jc	loc_355			; Jump if carry Set
		call	sub_143
loc_355:
		mov	cx,[si]
		mov	di,si
		add	si,2
		inc	di

locloop_356:
		inc	di
		cmp	word ptr [di],0
		loopnz	locloop_356		; Loop if zf=0, cx>0

		cmp	si,di
		je	loc_357			; Jump if equal
		inc	di
		dec	cx
loc_357:
		mov	bx,ds:data_155e
		push	bx
		add	bx,2
		cmp	bx,cx
		pop	bx
		jc	loc_358			; Jump if carry Set
		xor	al,al			; Zero register
		sub	si,2
		call	sub_143
		jmp	short loc_355
loc_358:
		mov	cx,bx
		mov	si,data_166e
		push	di
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		xor	ax,ax			; Zero register
		stosw				; Store ax to es:[di]
		pop	si
		pop	di
		pop	cx
		pop	bx
		pop	ax
		retn
sub_141		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_142		proc	near
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		lodsw				; String [si] to ax
		mov	cx,ax
		mov	bx,ds:data_155e
		or	bl,bl			; Zero ?
		jz	loc_365			; Jump if zero
loc_359:
		jcxz	loc_365			; Jump if cx=0
		cmp	byte ptr [si],0
		je	loc_365			; Jump if equal
		mov	di,data_166e
		push	bx

locloop_360:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jz	loc_361			; Jump if zero
		or	bl,bl			; Zero ?
		jz	loc_362			; Jump if zero
		cmp	al,[di]
		jne	loc_362			; Jump if not equal
		inc	di
		dec	bl
		loop	locloop_360		; Loop if cx > 0

loc_361:
		or	bl,bl			; Zero ?
		pop	bx
		jz	loc_366			; Jump if zero
		inc	bh
		jmp	short loc_359
loc_362:
		dec	cx
		jz	loc_364			; Jump if zero

locloop_363:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		loopnz	locloop_363		; Loop if zf=0, cx>0

loc_364:
		pop	bx
		inc	bh
		jmp	short loc_359
loc_365:
		xor	bh,bh			; Zero register
		stc				; Set carry flag
loc_366:
		mov	al,bh
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		retn
sub_142		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_143		proc	near
		push	ax
		push	cx
		push	si
		push	di
		mov	cx,[si]
		add	si,2
		mov	ah,al
loc_367:
		cmp	byte ptr [si],0
		stc				; Set carry flag
		jz	loc_371			; Jump if zero
		jcxz	loc_371			; Jump if cx=0
		or	ah,ah			; Zero ?
		jz	loc_369			; Jump if zero

locloop_368:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		loopnz	locloop_368		; Loop if zf=0, cx>0

		dec	ah
		jmp	short loc_367
loc_369:
		mov	di,si

locloop_370:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		loopnz	locloop_370		; Loop if zf=0, cx>0

		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		mov	byte ptr [di],0
loc_371:
		pop	di
		pop	si
		pop	cx
		pop	ax
		retn
sub_143		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_144		proc	near
		push	ax
		push	cx
		push	dx
		mov	al,ds:data_164e
		mov	ah,ds:data_165e
		or	ah,ah			; Zero ?
		jz	loc_373			; Jump if zero
loc_372:
		call	sub_145
		call	sub_17
		inc	al
		dec	ah
		jnz	loc_372			; Jump if not zero
loc_373:
		pop	dx
		pop	cx
		pop	ax
		retn
sub_144		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_145		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	ax
		mov	ah,ds:data_126e
		cmp	al,ds:data_163e
		jne	loc_374			; Jump if not equal
		mov	ah,ds:data_127e
loc_374:
		mov	ds:data_161e,ah
		call	sub_152
		cbw				; Convrt byte to word
		mov	ds:data_155e,ax
		mov	di,data_166e
		call	sub_262
		xor	ax,ax			; Zero register
		mov	ds:data_156e,ax
		mov	ds:data_157e,ax
		pop	ax
		sub	al,ds:data_164e
		add	al,dh
		add	al,2
		mov	ds:data_159e,al
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_145		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_146		proc	near
		push	ax
		mov	al,7
		call	sub_229
		call	sub_147
		call	sub_148
		call	sub_149
		call	sub_150
		pop	ax
		retn
sub_146		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_147		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	bp
		mov	ax,600h
		mov	bh,ds:data_170e
		xchg	cx,dx
		add	dl,cl
		dec	dl
		add	dh,ch
		dec	dh
		int	10h			; Video display   ah=functn 06h
						;  scroll up, al=lines
						;   bh=attrib, cx+dx=window size
		pop	bp
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_147		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_148		proc	near
		push	ax
		push	cx
		push	dx
		inc	dh
		add	dl,3
		sub	cl,8
		sub	ch,4
		push	cx
		push	dx
		mov	al,0DAh
		call	sub_229
		xor	ch,ch			; Zero register
		mov	al,0C4h
		call	sub_232
		mov	al,0BFh
		call	sub_229
		pop	dx
		pop	cx
		inc	dh
loc_375:
		push	cx
		push	dx
		mov	al,0B3h
		call	sub_229
		add	dl,cl
		call	sub_229
		pop	dx
		pop	cx
		inc	dh
		dec	ch
		jnz	loc_375			; Jump if not zero
		mov	al,0C0h
		call	sub_229
		mov	al,0C4h
		call	sub_232
		mov	al,0D9h
		call	sub_229
		pop	dx
		pop	cx
		pop	ax
		retn
sub_148		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_149		proc	near
		push	ax
		push	cx
		push	dx
		mov	al,0B0h
		push	cx
		push	dx
		xor	ch,ch			; Zero register
		call	sub_232
		pop	dx
		pop	cx
		inc	dh
		sub	ch,2
loc_376:
		push	cx
		push	dx
		call	sub_229
		call	sub_229
		add	dl,cl
		sub	dl,4
		call	sub_229
		call	sub_229
		pop	dx
		pop	cx
		inc	dh
		dec	ch
		jnz	loc_376			; Jump if not zero
		xor	ch,ch			; Zero register
		call	sub_232
		pop	dx
		pop	cx
		pop	ax
		retn
sub_149		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_150		proc	near
		push	ax
		push	dx
		push	si
		mov	si,di
loc_377:
		push	dx
		push	cx
		call	sub_267
		inc	dh
		call	sub_234
		pop	cx
		pop	dx
		inc	dh
		cmp	byte ptr [si-1],1Fh
		je	loc_377			; Jump if equal
		pop	si
		pop	dx
		pop	ax
		retn
sub_150		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_151		proc	near
		push	ax
		mov	cl,bh
		call	sub_269
		cmp	al,cl
		jbe	loc_378			; Jump if below or =
		mov	cl,al
loc_378:
		cmp	cl,3Ch			; '<'
		jbe	loc_379			; Jump if below or =
		mov	cl,3Ch			; '<'
loc_379:
		cmp	cl,0Ch
		jae	loc_380			; Jump if above or =
		mov	cl,0Ch
loc_380:
		mov	ds:data_160e,cl
		add	cl,0Ah
		push	dx
		call	sub_239
		sub	dh,7
		mov	ch,bl
		cmp	ch,dh
		jbe	loc_381			; Jump if below or =
		mov	ch,dh
loc_381:
		or	ch,ch			; Zero ?
		jnz	loc_382			; Jump if not zero
		inc	ch
loc_382:
		add	ch,4
		pop	dx
		mov	dl,50h			; 'P'
		sub	dl,cl
		shr	dl,1			; Shift w/zeros fill
		mov	al,dl
		add	al,5
		mov	ds:data_158e,al
		call	sub_239
		inc	dh
		sub	dh,ch
		shr	dh,1			; Shift w/zeros fill
		mov	ah,dh
		shr	ah,1			; Shift w/zeros fill
		sub	dh,ah
		xor	ax,ax			; Zero register
		mov	al,bl
		mov	ds:data_162e,ax
		mov	ds:data_163e,ax
		dec	ax
		js	loc_383			; Jump if sign=1
		mov	ds:data_163e,ax
loc_383:
		mov	al,bl
		xor	ah,ah			; Zero register
		sub	al,ch
		add	al,4
		jns	loc_384			; Jump if not sign
		xor	al,al			; Zero register
loc_384:
		mov	ds:data_164e,ax
		mov	al,ch
		sub	al,4
		mov	ds:data_165e,al
		mov	al,ds:data_125e
		mov	ds:data_161e,al
		pop	ax
		retn
sub_151		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_152		proc	near
		push	bx
		push	cx
		push	dx
		push	di
		mov	dl,al
		lodsw				; String [si] to ax
		mov	di,si
		mov	cx,ax
		xor	al,al			; Zero register
loc_385:
		cmp	al,[di]
		je	loc_386			; Jump if equal
		or	dl,dl			; Zero ?
		jz	loc_388			; Jump if zero
		dec	dl
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		jz	loc_385			; Jump if zero
loc_386:
		add	di,cx
		mov	bx,di
		mov	si,di
		lodsb				; String [si] to al
		mov	dh,al
loc_387:
		xor	ax,ax			; Zero register
		or	dh,dh			; Zero ?
		jz	loc_389			; Jump if zero
		lodsw				; String [si] to ax
		dec	dh
		mov	di,ax
		dec	dl
		jns	loc_387			; Jump if not sign
loc_388:
		xor	al,al			; Zero register
		mov	bx,di
		mov	cx,0FFh
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		sub	di,bx
		mov	ax,di
		dec	ax
loc_389:
		mov	si,bx
		or	ah,ah			; Zero ?
		jz	loc_390			; Jump if zero
		mov	al,0FFh
loc_390:
		pop	di
		pop	dx
		pop	cx
		pop	bx
		retn
sub_152		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_153		proc	near
		push	ax
		push	cx
		push	dx
		push	si
		push	di
		xor	bx,bx			; Zero register
loc_391:
		mov	al,bl
		push	si
		call	sub_152
		pop	si
		or	al,al			; Zero ?
		jz	loc_393			; Jump if zero
		inc	bl
		jz	loc_392			; Jump if zero
		cmp	al,bh
		jb	loc_391			; Jump if below
		mov	bh,al
		jmp	short loc_391
loc_392:
		dec	bl
loc_393:
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn
sub_153		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_154		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	es
		push	cs
		pop	es
		mov	di,data_167e
		push	di
		mov	cx,1Eh
		mov	al,3Fh			; '?'
		rep	stosb			; Rep when cx >0 Store al to es:[di]
		pop	di
		xor	ax,ax			; Zero register
		mov	[di],al
		mov	[di+18h],ax
		mov	[di+1Ah],ax
		mov	[di+1Ch],ax
		mov	ds:data_188e,al
loc_394:
		call	sub_155
		jz	loc_396			; Jump if zero
		call	sub_156
		jc	loc_395			; Jump if carry Set
		jmp	short loc_394
		db	 4Eh, 4Eh
loc_395:
		call	sub_155
		stc				; Set carry flag
		mov	di,si
loc_396:
		pop	es
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_154		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_155		proc	near
loc_397:
		cmp	byte ptr [si],0
		jne	loc_399			; Jump if not equal

loc_ret_398:
		retn
loc_399:
		cmp	byte ptr [si],20h	; ' '
		ja	loc_ret_398		; Jump if above
		inc	si
		jmp	short loc_397
sub_155		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_156		proc	near
		and	byte ptr cs:data_169e,0F7h
		mov	di,597Fh
		call	sub_160
		mov	di,580Dh
		jnc	loc_400			; Jump if carry=0
		retn
loc_400:
		call	sub_155
		cmp	byte ptr [si],20h	; ' '
		ja	loc_401			; Jump if above
		cmp	al,al
		retn
loc_401:
		push	di
		push	cx
		mov	al,3Fh			; '?'
		mov	cx,0Bh
		repe	scasb			; Rep zf=1+cx >0 Scan es:[di] for al
		pop	cx
		pop	di
		jz	loc_402			; Jump if zero
		stc				; Set carry flag
		retn

;==== External Entry into Subroutine ======================================

sub_157:
loc_402:
		push	ax
		push	cx
		push	di
		push	di
		mov	cx,0Bh
		call	sub_159
		pop	di
		cmp	word ptr [si],2E2Eh
		jne	loc_403			; Jump if not equal
		movsw				; Mov [si] to es:[di]
		jmp	short loc_405
loc_403:
		mov	cl,8
		call	sub_158
		inc	si
		cmp	byte ptr [si-1],2Eh	; '.'
		je	loc_404			; Jump if equal
		dec	si
		cmp	ah,2Eh			; '.'
		jne	loc_405			; Jump if not equal
loc_404:
		or	byte ptr cs:data_169e,8
		mov	cl,3
		call	sub_158
loc_405:
		clc				; Clear carry flag
		pop	di
		pop	cx
		pop	ax
		retn
sub_156		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_158		proc	near

locloop_406:
		mov	al,[si]
		call	sub_261
		mov	ah,al
		cmp	al,20h			; ' '
		jb	loc_408			; Jump if below
		cmp	al,5Ch			; '\'
		je	loc_408			; Jump if equal
		cmp	al,3Ah			; ':'
		je	loc_408			; Jump if equal
		cmp	al,2Fh			; '/'
		je	loc_408			; Jump if equal
		inc	si
		cmp	al,2Eh			; '.'
		je	loc_408			; Jump if equal
		cmp	al,2Ah			; '*'
		je	loc_407			; Jump if equal
		stosb				; Store al to es:[di]
		loop	locloop_406		; Loop if cx > 0

		retn
loc_407:
		mov	al,3Fh			; '?'
		jmp	short loc_409

;==== External Entry into Subroutine ======================================

sub_159:
loc_408:
		mov	al,20h			; ' '
loc_409:
		rep	stosb			; Rep when cx >0 Store al to es:[di]
		retn
sub_158		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_160		proc	near
		call	sub_155
		cmp	byte ptr [si],20h	; ' '
		ja	loc_410			; Jump if above
		cmp	al,al
		retn
loc_410:
		cmp	byte ptr [di],0
		jne	loc_419			; Jump if not equal
		lodsb				; String [si] to al
		call	sub_261
		mov	ah,3Ah			; ':'
		cmp	[si],ah
		je	loc_411			; Jump if equal
		dec	si
		jmp	short loc_412
loc_411:
		inc	si
		stosw				; Store ax to es:[di]
		mov	byte ptr es:[di],0
loc_412:
		mov	cx,45h
		mov	bx,di
		push	si
		push	di

locloop_413:
		lodsb				; String [si] to al
		call	sub_261
		cmp	al,20h			; ' '
		jbe	loc_415			; Jump if below or =
		cmp	al,2Fh			; '/'
		je	loc_415			; Jump if equal
		cmp	al,5Ch			; '\'
		jne	loc_414			; Jump if not equal
		add	sp,4
		push	si
		push	di
loc_414:
		stosb				; Store al to es:[di]
		loop	locloop_413		; Loop if cx > 0

loc_415:
		pop	di
		pop	si
		cmp	di,bx
		jne	loc_416			; Jump if not equal
		cmp	byte ptr es:[di],5Ch	; '\'
		je	loc_417			; Jump if equal
loc_416:
		cmp	word ptr es:[di-1],5C3Ah
		jne	loc_418			; Jump if not equal
loc_417:
		inc	di
loc_418:
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		inc	al
		clc				; Clear carry flag
		retn
loc_419:
		stc				; Set carry flag
		retn
sub_160		endp

		db	15 dup (0)
s_2680:
;		db	0E8h,0AFh, 01h
		call	sub_163
loc_420:
		call	sub_166
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_245
		test	byte ptr ds:[bp],1
		jnz	loc_421			; Jump if not zero
		call	sub_247
		test	byte ptr ds:[bp],1
		jz	loc_421			; Jump if zero
		xor	byte ptr data_105,1
		call	sub_220
loc_421:
		call	sub_245
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_225
		call	sub_245
		mov	data_18,0
		cmp	al,1Bh
		jne	loc_422			; Jump if not equal
		mov	al,19h
loc_422:
		cmp	word ptr ds:data_147e,0
		jne	loc_427			; Jump if not equal
		cmp	ah,4Bh			; 'K'
		jne	loc_424			; Jump if not equal
		cmp	byte ptr ds:[bp+3],14h
		jb	loc_425			; Jump if below
loc_423:
		mov	ax,0F09h
loc_424:
		cmp	ah,4Dh			; 'M'
		jne	loc_425			; Jump if not equal
		cmp	byte ptr ds:[bp+3],14h
		jb	loc_423			; Jump if below
loc_425:
		cmp	ah,47h			; 'G'
		jne	loc_426			; Jump if not equal
		mov	ah,84h
loc_426:
		cmp	ah,4Fh			; 'O'
		jne	loc_427			; Jump if not equal
		mov	ah,76h			; 'v'
loc_427:
		cmp	ax,300h
		je	loc_429			; Jump if equal
		cmp	ah,4Eh			; 'N'
		je	loc_428			; Jump if equal
		cmp	ah,4Ah			; 'J'
		je	loc_428			; Jump if equal
		cmp	ah,37h			; '7'
		je	loc_428			; Jump if equal
		or	ah,ah			; Zero ?
		jz	loc_429			; Jump if zero
		cmp	al,20h			; ' '
		jae	loc_429			; Jump if above or =
loc_428:
		mov	bx,offset data_44
		call	sub_22
		jnc	loc_430			; Jump if carry=0
loc_429:
		call	sub_161
loc_430:
		jmp	loc_420

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_161		proc	near
		push	ds
		push	cs
		pop	ds
		push	ax
		mov	ax,ds:[bp+7]
		nop
		mov	ds:data_149e,ax
		mov	ax,ds:[bp+0Bh]
		nop
		mov	ds:data_150e,ax
		mov	ax,ds:[bp+9]
		nop
		mov	ds:data_151e,ax
		push	cx
		call	sub_241
		mov	ds:data_152e,cl
		pop	cx
		pop	ax
		push	bp
		mov	bp,data_146e
		call	sub_19
		pop	bp
		call	sub_162
		pop	ds
		retn
sub_161		endp

data_44		db	6
		db	 02h, 8Eh, 2Dh, 09h,0B8h
		db	'+', 0Ah, 'v,', 0Ch, 'k-', 0Dh
		db	 9Ch, 2Ch, 0Fh, 4Fh, 2Dh, 4Eh
		db	 52h, 2Fh, 2Ch, 4Eh,0E5h, 2Bh
		db	 4Ah,0DEh, 2Bh, 37h, 54h, 2Ch
		db	 3Bh,0D1h, 28h, 3Ch,0DDh, 28h
		db	 3Dh, 70h, 1Eh, 3Eh, 54h, 14h
		db	 3Fh,0B4h, 2Eh, 40h,0C2h, 2Eh
		db	 41h,0DCh
		db	 2Dh, 42h
loc_431:
		shr	byte ptr ds:data_217e,1	; Shift w/zeros fill
		sub	ax,8B44h
		daa				; Decimal adjust
		add	data_66[bx],bh
		mov	si,offset data_68
		xor	al,al			; Zero register
		call	sub_169
		jc	loc_432			; Jump if carry Set
		or	al,al			; Zero ?
		jz	loc_433			; Jump if zero
loc_432:
		call	sub_220
		retn
loc_433:
		mov	sp,cs:data_129e
		xor	al,al			; Zero register
		mov	ds:PSP_cmd_size,al
		jmp	loc_632

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_162		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		call	sub_244
		jnc	loc_434			; Jump if carry=0
		jmp	short loc_441
		db	90h
loc_434:
		call	sub_241
		mov	dx,cx
		mov	ax,ds:data_151e
		cmp	ax,ds:[bp+9]
		nop
		jz	loc_439			; Jump if zero
		call	sub_79
		mov	bx,ds:data_150e
		mov	ds:[bp+0Bh],bx
		nop
		xchg	ds:[bp+9],ax
		nop
		sub	ax,ds:[bp+9]
		nop
		ja	loc_437			; Jump if above
		neg	ax
		cmp	ax,8
		ja	loc_438			; Jump if above
		call	sub_235
		mov	bx,ds:[bp+9]
		nop
		add	bl,ds:data_152e
		adc	bh,0
		sub	bx,ax
loc_435:
		mov	cx,ax

locloop_436:
		call	sub_67
		inc	bx
		loop	locloop_436		; Loop if cx > 0

		jmp	short loc_440
loc_437:
		cmp	ax,8
		ja	loc_438			; Jump if above
		call	sub_236
		mov	bx,ds:[bp+9]
		nop
		neg	dx
		jmp	short loc_435
loc_438:
		call	sub_66
		jmp	short loc_441
loc_439:
		mov	ax,ds:data_150e
		cmp	ax,ds:[bp+0Bh]
		nop
		jz	loc_441			; Jump if zero
		call	sub_79
		mov	ds:[bp+0Bh],ax
		nop
loc_440:
		call	sub_78
loc_441:
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_162		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_163		proc	near
		pushf				; Push flags
		push	si
		call	sub_167
		mov	si,4342h
		call	sub_164
		call	sub_166
		pop	si
		popf				; Pop flags
		retn
sub_163		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_164		proc	near
		push	dx
		push	si
		push	ds
		push	cs
		pop	ds
		call	sub_242
		jc	loc_442			; Jump if carry Set
		call	sub_239
		xor	dl,dl			; Zero register
		call	sub_234
loc_442:
		pop	ds
		pop	si
		pop	dx
		retn
sub_164		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_165		proc	near
		test	byte ptr cs:data_108,8
		retn
sub_165		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_166		proc	near
		push	bp
		mov	bp,data_146e
		call	sub_18
		pop	bp
		retn
sub_166		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_167		proc	near
		push	bp
		push	si
		push	ds
		push	cs
		pop	ds
		call	sub_245
		mov	si,cs:[bp+4]
		mov	bp,56DCh
		call	sub_168
		call	sub_17
		call	sub_18
		pop	ds
		pop	si
		pop	bp
		retn
sub_167		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_168		proc	near
		push	ax
		push	cx
		push	dx
		push	si
		mov	al,cs:data_148e
		mov	cs:data_170e,al
		xor	dl,dl			; Zero register
		call	sub_240
		inc	dh
		test	byte ptr cs:data_105,2
		jz	loc_443			; Jump if zero
		mov	cx,50h
		call	sub_56
		cmp	dh,byte ptr cs:data_141e+1
		jbe	loc_443			; Jump if below or =
		mov	dh,byte ptr cs:data_141e+1
loc_443:
		call	sub_234
		mov	al,3Eh			; '>'
		call	sub_229
		mov	al,50h			; 'P'
		sub	al,dl
		jnc	loc_444			; Jump if carry=0
		xor	al,al			; Zero register
loc_444:
		mov	cs:[bp+0Eh],al
		nop
		mov	cs:[bp+0Ch],dx
		nop
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn
sub_168		endp

			                        ;* No entry point to code
		call	sub_245
		cmp	byte ptr ds:[bp+3],14h
		jb	loc_446			; Jump if below
		jmp	short loc_445
			                        ;* No entry point to code
		call	sub_245
		cmp	byte ptr ds:[bp+3],14h
		jae	loc_446			; Jump if above or =
loc_445:
		call	sub_247
loc_446:
		mov	di,data_188e
		mov	si,offset data_71	; (' Choose drive for ')
		call	sub_262
		mov	si,40B6h
		cmp	byte ptr ds:[bp+3],14h
		jb	loc_447			; Jump if below
		mov	si,offset data_72
loc_447:
		call	sub_262
		mov	si,offset data_73
		call	sub_262
		mov	di,597Fh
		mov	bx,ds:[bp+4]
		xchg	di,si
		mov	di,578Bh
		push	di
		xor	dx,dx			; Zero register
		mov	cx,28h

locloop_448:
		push	cx
		push	dx
		mov	ah,0Eh
		int	21h			; DOS Services  ah=function 0Eh
						;  set default drive dl  (0=a:)
		mov	ah,19h
		int	21h			; DOS Services  ah=function 19h
						;  get default drive al  (0=a:)
		mov	ah,0FFh
		cmp	al,dl
		jne	loc_449			; Jump if not equal
		add	al,41h			; 'A'
		mov	ah,al
		stosb				; Store al to es:[di]
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
loc_449:
		pop	dx
		pop	cx
		cmp	ah,[bx]
		jae	loc_450			; Jump if above or =
		inc	dh
loc_450:
		inc	dl
		loop	locloop_448		; Loop if cx > 0

		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		pop	di
		xchg	di,si
		mov	al,dh
		call	sub_169
		call	sub_220
		jnc	loc_451			; Jump if carry=0
		retn
loc_451:
		and	byte ptr ds:[bp],0F9h
		or	byte ptr ds:[bp],1
		test	byte ptr data_105,2
		jz	loc_452			; Jump if zero
		push	bp
		mov	bp,ds:[bp+1]
		and	byte ptr ds:[bp],0FEh
		pop	bp
loc_452:
		and	byte ptr data_105,0FDh
		call	sub_59
		mov	al,[si]
		mov	di,ds:[bp+4]
		mov	si,di
		cmp	al,[di]
		jne	loc_453			; Jump if not equal
		call	sub_218
		jnz	loc_454			; Jump if not zero
		push	bp
		call	sub_245
		mov	si,ds:[bp+4]
		pop	bp
		jmp	short loc_454
loc_453:
		mov	si,ds:[bp+1]
		mov	si,[si+4]
		cmp	al,[si]
		je	loc_454			; Jump if equal
		call	sub_218
		jnz	loc_455			; Jump if not zero
		call	sub_216
		jz	loc_455			; Jump if zero
loc_454:
		call	sub_288
loc_455:
		sub	al,41h			; 'A'
		mov	dl,al
		mov	ah,0Eh
		int	21h			; DOS Services  ah=function 0Eh
						;  set default drive dl  (0=a:)
		clc				; Clear carry flag
		call	sub_36
		jc	loc_456			; Jump if carry Set
		call	sub_287
		call	sub_36
		call	sub_16
		and	byte ptr ds:[bp],0F9h
loc_456:
		call	sub_220
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_169		proc	near
		push	bx
		push	cx
		push	dx
		push	di
		push	ax
		mov	bl,2
		call	sub_173
		push	di
		mov	bl,2
loc_457:
		cmp	byte ptr es:[di],1Fh
		jne	loc_458			; Jump if not equal
		inc	bl
loc_458:
		inc	di
		cmp	byte ptr es:[di-1],0
		jne	loc_457			; Jump if not equal
		pop	di
		call	sub_151
		mov	al,7
		call	sub_229
		call	sub_147
		call	sub_148
		call	sub_149
		call	sub_150
		add	dh,bl
		inc	dh
		add	dl,5
		xor	bl,bl			; Zero register
		call	sub_173
		sub	cl,0Ah
		sub	cl,bh
		call	sub_174
		mov	bh,bl
		inc	bl
		mov	al,cl
		xor	ah,ah			; Zero register
		div	bl			; al, ah rem = ax/reg
		shr	ah,1			; Shift w/zeros fill
		add	dl,ah
		mov	bl,al
		xor	cl,cl			; Zero register
		push	bx
loc_459:
		call	sub_170
		inc	cl
		dec	bh
		jnz	loc_459			; Jump if not zero
		pop	bx
		pop	cx
loc_460:
		call	sub_171
loc_461:
		call	sub_225
		cmp	ah,4Bh			; 'K'
		je	loc_462			; Jump if equal
		cmp	ah,73h			; 's'
		je	loc_462			; Jump if equal
		cmp	al,13h
		je	loc_462			; Jump if equal
		cmp	ax,0F00h
		jne	loc_465			; Jump if not equal
loc_462:
		call	sub_170
		or	cl,cl			; Zero ?
		jnz	loc_464			; Jump if not zero
loc_463:
		mov	cl,bh
loc_464:
		dec	cl
		jmp	short loc_460
loc_465:
		cmp	ah,4Dh			; 'M'
		je	loc_466			; Jump if equal
		cmp	ah,74h			; 't'
		je	loc_466			; Jump if equal
		cmp	al,4
		je	loc_466			; Jump if equal
		cmp	al,9
		jne	loc_469			; Jump if not equal
loc_466:
		call	sub_170
		inc	cl
		cmp	cl,bh
		jb	loc_468			; Jump if below
loc_467:
		xor	cl,cl			; Zero register
loc_468:
		jmp	short loc_460
loc_469:
		cmp	ah,47h			; 'G'
		je	loc_470			; Jump if equal
		cmp	ah,77h			; 'w'
		je	loc_470			; Jump if equal
		cmp	ah,49h			; 'I'
		je	loc_470			; Jump if equal
		cmp	ah,84h
		je	loc_470			; Jump if equal
		cmp	al,12h
		jne	loc_471			; Jump if not equal
loc_470:
		call	sub_170
		jmp	short loc_467
loc_471:
		cmp	ah,4Fh			; 'O'
		je	loc_472			; Jump if equal
		cmp	ah,75h			; 'u'
		je	loc_472			; Jump if equal
		cmp	ah,51h			; 'Q'
		je	loc_472			; Jump if equal
		cmp	ah,76h			; 'v'
		je	loc_472			; Jump if equal
		cmp	al,3
		jne	loc_473			; Jump if not equal
loc_472:
		call	sub_170
		jmp	short loc_463
loc_473:
		cmp	al,1Bh
		stc				; Set carry flag
		jz	loc_477			; Jump if zero
		cmp	al,0Dh
		je	loc_477			; Jump if equal
		call	sub_261
		mov	ah,al
		push	cx
		mov	cl,bh
		xor	ch,ch			; Zero register
		jcxz	loc_475			; Jump if cx=0

locloop_474:
		mov	al,cl
		push	si
		push	bx
		dec	al
		call	sub_175
		lodsb				; String [si] to al
		pop	bx
		pop	si
		call	sub_261
		cmp	al,ah
		je	loc_476			; Jump if equal
		loop	locloop_474		; Loop if cx > 0

loc_475:
		pop	cx
		jmp	loc_461
loc_476:
		mov	al,cl
		pop	cx
		call	sub_170
		mov	cl,al
		dec	cl
		call	sub_171
loc_477:
		mov	al,cl
		pushf				; Push flags
		call	sub_175
		popf				; Pop flags
		pop	di
		pop	dx
		pop	cx
		pop	bx
		retn
sub_169		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_170		proc	near
		mov	ah,0Ah
		jmp	short loc_478

;==== External Entry into Subroutine ======================================

sub_171:
		mov	ah,0Eh
loc_478:
		push	ax
		push	cx
		push	dx
		push	si
		mov	al,cl
		call	sub_172
		mov	al,ah
		call	sub_229
		xor	ch,ch			; Zero register
		mov	cl,bl
		shr	cl,1			; Shift w/zeros fill
		sub	dl,cl
		mov	al,20h			; ' '
		call	sub_232
		lodsb				; String [si] to al
		call	sub_229
		cmp	ah,0Ah
		jne	loc_479			; Jump if not equal
		mov	al,7
		call	sub_229
loc_479:
		cmp	ah,0Eh
		jne	loc_480			; Jump if not equal
		mov	al,13h
		call	sub_229
loc_480:
		call	sub_234
		mov	al,20h			; ' '
		call	sub_232
		call	sub_228
		pop	si
		pop	dx
		pop	cx
		pop	ax
		retn
sub_170		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_172		proc	near
		push	ax
		push	bx
		push	cx
		xor	ch,ch			; Zero register
		mov	cl,al
		xor	al,al			; Zero register
		add	dl,bl
		jcxz	loc_482			; Jump if cx=0

locloop_481:
		push	si
		call	sub_175
		pop	si
		inc	al
		add	dl,bh
		add	dl,bl
		loop	locloop_481		; Loop if cx > 0

loc_482:
		call	sub_175
		pop	cx
		pop	bx
		pop	ax
		retn
sub_172		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_173		proc	near
		push	ax
		xor	al,al			; Zero register
		mov	ah,bl
loc_483:
		push	si
		call	sub_175
		pop	si
		jc	loc_484			; Jump if carry Set
		inc	al
		add	ah,bh
		jc	loc_484			; Jump if carry Set
		add	ah,bl
		jnc	loc_483			; Jump if carry=0
loc_484:
		mov	bh,ah
		pop	ax
		retn
sub_173		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_174		proc	near
		push	ax
		push	dx
		xor	dh,dh			; Zero register
		xor	bl,bl			; Zero register
loc_485:
		mov	al,bl
		push	si
		call	sub_175
		pop	si
		jc	loc_487			; Jump if carry Set
		inc	bl
		jz	loc_486			; Jump if zero
		cmp	bh,dh
		jb	loc_485			; Jump if below
		mov	dh,bh
		jmp	short loc_485
loc_486:
		dec	bl
loc_487:
		mov	bh,dh
		pop	dx
		pop	ax
		retn
sub_174		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_175		proc	near
		push	ax
		mov	ah,al
		xor	al,al			; Zero register
loc_488:
		cmp	[si],al
		stc				; Set carry flag
		jz	loc_490			; Jump if zero
		or	ah,ah			; Zero ?
		jz	loc_490			; Jump if zero
loc_489:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jnz	loc_489			; Jump if not zero
		dec	ah
		jmp	short loc_488
loc_490:
		pushf				; Push flags
		call	sub_268
		popf				; Pop flags
		mov	bh,al
		pop	ax
		retn
sub_175		endp

			                        ;* No entry point to code
		call	sub_244
		jc	loc_ret_492		; Jump if carry Set
		call	sub_243
		jc	loc_491			; Jump if carry Set
		xor	byte ptr data_105,1
		call	sub_220
		xor	ax,ax			; Zero register
		call	sub_161
		retn
loc_491:
		mov	al,ds:data_176e
		xchg	ds:data_181e,al
		mov	ds:data_176e,al
		call	sub_220

loc_ret_492:
		retn
			                        ;* No entry point to code
		mov	di,3FADh
		xor	dl,dl			; Zero register
		jmp	short loc_493
		db	0BFh, 9Dh, 3Fh,0B2h, 80h
loc_493:
		call	sub_244
		jc	loc_ret_496		; Jump if carry Set
		mov	si,data_118e
		mov	byte ptr ds:data_120e,1
		mov	word ptr ds:data_121e,43C2h
		call	sub_139
		jc	loc_495			; Jump if carry Set
		xor	bx,bx			; Zero register
loc_494:
		call	sub_38
		jc	loc_495			; Jump if carry Set
		inc	bx
		test	byte ptr es:[di],10h
		jnz	loc_494			; Jump if not zero
		call	sub_176
		jnz	loc_494			; Jump if not zero
		and	byte ptr es:[di],7Fh
		or	es:[di],dl
		jmp	short loc_494
loc_495:
		call	sub_220

loc_ret_496:
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_176		proc	near
		push	si
		push	ds
		push	cs
		pop	ds
		mov	si,data_167e
		call	sub_41
		pop	ds
		pop	si
		retn
sub_176		endp

			                        ;* No entry point to code
		mov	ax,0FF00h
		call	sub_244
		jc	loc_ret_498		; Jump if carry Set
		call	sub_80
		jc	loc_ret_498		; Jump if carry Set
		test	byte ptr [si],10h
		jnz	loc_497			; Jump if not zero
		xor	byte ptr [si],80h
		and	[si],ah
		or	[si],al
		call	sub_76
		call	sub_78
loc_497:
		mov	al,18h
		call	sub_161

loc_ret_498:
		retn
			                        ;* No entry point to code
		mov	ax,0FF00h
		call	sub_244
		jc	loc_ret_501		; Jump if carry Set
		xor	bx,bx			; Zero register
loc_499:
		call	sub_37
		jc	loc_500			; Jump if carry Set
		inc	bx
		test	byte ptr [si],10h
		jnz	loc_499			; Jump if not zero
		xor	byte ptr [si],80h
		and	[si],ah
		or	[si],al
		jmp	short loc_499
loc_500:
		call	sub_220

loc_ret_501:
		retn
			                        ;* No entry point to code
		call	sub_244
		jc	loc_ret_504		; Jump if carry Set
		call	sub_80
		jc	loc_ret_504		; Jump if carry Set
		mov	di,597Fh
		push	di
		call	sub_286
		pop	si
		push	cs
		pop	ds
		xor	ah,ah			; Zero register
loc_502:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jz	loc_503			; Jump if zero
		call	sub_161
		jmp	short loc_502
loc_503:
		mov	al,20h			; ' '
		call	sub_161

loc_ret_504:
		retn
			                        ;* No entry point to code
		mov	cx,ds:data_147e
		call	sub_244
		jc	loc_505			; Jump if carry Set
		or	cx,cx			; Zero ?
		jz	loc_507			; Jump if zero
loc_505:
		mov	ds:data_155e,cx
		mov	si,data_153e
		mov	di,data_166e
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		mov	si,data_118e
		call	sub_141
loc_506:
		push	cs
		pop	ds
		mov	dl,2
		jmp	short loc_512
		db	90h
loc_507:
		call	sub_80
		jc	loc_ret_509		; Jump if carry Set
		test	byte ptr [si],10h
		jnz	loc_510			; Jump if not zero
		call	sub_249
		jz	loc_508			; Jump if zero
		retn
loc_508:
		mov	di,597Fh
		push	di
		call	sub_286
		pop	si
		jmp	short loc_506

loc_ret_509:
		retn
loc_510:
		push	si
		push	ds
		cmp	word ptr [si+1],2E2Eh
		push	cs
		pop	ds
		mov	si,offset data_102
		jnz	loc_511			; Jump if not zero
		mov	si,ds:[bp+4]
loc_511:
		call	sub_154
		mov	si,data_167e
		call	sub_15
		pop	ds
		pop	si
		mov	di,597Fh
		push	di
		call	sub_286
		push	cs
		pop	ds
		call	sub_59
		mov	si,ds:[bp+4]
		call	sub_288
		pop	si
		call	sub_288
		mov	di,cs:[bp+4]
		call	sub_287
		and	byte ptr ds:[bp],0F9h
		call	sub_220
		retn
loc_512:
		call	sub_59
		push	cs
		pop	es
		mov	di,data_4e
		mov	ax,632Fh
		stosw				; Store ax to es:[di]
		push	si
		mov	al,2
loc_513:
		cmp	byte ptr [si],0
		je	loc_514			; Jump if equal
		inc	si
		inc	al
		jns	loc_513			; Jump if not sign
		dec	al
loc_514:
		pop	si
		mov	es:PSP_cmd_size,al
		xor	ch,ch			; Zero register
		mov	cl,al
		sub	cl,2
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		xor	al,al			; Zero register
		jmp	loc_632
			                        ;* No entry point to code
		test	byte ptr cs:data_105,2
		jnz	loc_515			; Jump if not zero
		call	sub_244
		jc	loc_516			; Jump if carry Set
loc_515:
		xor	byte ptr cs:data_105,2
loc_516:
		or	byte ptr cs:[bp],1
		call	sub_220
		retn
			                        ;* No entry point to code
		call	sub_244
		pushf				; Push flags
		or	byte ptr cs:[bp],1
		call	sub_247
		xor	byte ptr cs:[bp],1
		popf				; Pop flags
		jnc	loc_517			; Jump if carry=0
		and	byte ptr cs:data_105,0FDh
		and	byte ptr cs:[bp],0FEh
loc_517:
		call	sub_220
		retn
			                        ;* No entry point to code
		xor	byte ptr data_105,4
		call	sub_247
		xor	ax,ax			; Zero register
		call	sub_161
		call	sub_245
		xor	ax,ax			; Zero register
		call	sub_161
		call	sub_220
		retn
			                        ;* No entry point to code
		mov	byte ptr ds:data_120e,0
		mov	ax,ds:data_147e
		or	ax,ax			; Zero ?
		jnz	loc_518			; Jump if not zero
		cmp	byte ptr ds:data_119e,0
		je	loc_ret_519		; Jump if equal
loc_518:
		inc	byte ptr ds:data_120e
		mov	si,56F3h
		mov	ds:data_121e,si
		add	si,ax
		mov	byte ptr [si],0
		mov	si,data_118e
		mov	di,offset data_69	; (' Repeat com')
		call	sub_139
		call	sub_220
		jc	loc_ret_519		; Jump if carry Set
		jmp	loc_506

loc_ret_519:
		retn
			                        ;* No entry point to code
		mov	byte ptr ds:data_120e,0
		mov	si,data_118e
		mov	di,offset data_60	; (' New directory: ')
		call	sub_139
loc_520:
		call	sub_220
		jnc	loc_521			; Jump if carry=0
		retn
loc_521:
		call	sub_59
		call	sub_228
		mov	si,ds:[bp+4]
		call	sub_288
		jc	loc_520			; Jump if carry Set
		mov	si,data_188e
		call	sub_288
		jc	loc_525			; Jump if carry Set
		mov	di,578Bh
		call	sub_287
		jc	loc_525			; Jump if carry Set
		mov	di,597Fh
		mov	si,data_167e
		mov	byte ptr [si],10h
		call	sub_286
		call	sub_198
		mov	si,offset data_61
		call	sub_234
		mov	si,data_166e
		call	sub_234
		cmp	byte ptr [si-2],5Ch	; '\'
		je	loc_522			; Jump if equal
		mov	al,5Ch			; '\'
		call	sub_229
loc_522:
		mov	si,data_188e
		call	sub_234
		call	sub_228
		mov	dx,data_188e
		mov	ah,39h
		int	21h			; DOS Services  ah=function 39h
						;  create subdir, path ptr ds:dx
		call	sub_245
		call	sub_177
		call	sub_247
		call	sub_177
loc_523:
		stc				; Set carry flag
loc_524:
		jmp	short loc_520
loc_525:
		clc				; Clear carry flag
		call	sub_187
		jc	loc_524			; Jump if carry Set
		mov	si,4318h
		call	sub_178
		jmp	short loc_523

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_177		proc	near
		call	sub_217
		jnz	loc_ret_526		; Jump if not zero
		mov	si,data_167e
		call	sub_15
		call	sub_181

loc_ret_526:
		retn
sub_177		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_178		proc	near
loc_527:
		push	es
		push	ds
		push	cs
		pop	es
		push	cs
		pop	ds
		push	ax
		push	di
		push	si
		mov	di,data_216e
		mov	si,offset data_74	; ('  ERROR !')
		call	sub_262
		pop	si
		push	si
		call	sub_262
		mov	si,offset data_75
		mov	di,5A5Eh
		xor	al,al			; Zero register
		call	sub_169
		pop	si
		pop	di
		pop	ax
		pop	ds
		pop	es
		call	sub_221
		stc				; Set carry flag
		retn
sub_178		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_179		proc	near
		mov	al,cs:data_169e
		and	al,3
		cmp	al,2
		retn
sub_179		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_180		proc	near
		test	byte ptr cs:data_169e,4
		retn
sub_180		endp

			                        ;* No entry point to code
		mov	byte ptr ds:data_169e,4
		jmp	short loc_528
			                        ;* No entry point to code
		mov	byte ptr ds:data_169e,0
		jmp	short loc_528
			                        ;* No entry point to code
		mov	byte ptr ds:data_169e,5
		jmp	short loc_528
			                        ;* No entry point to code
		mov	byte ptr ds:data_169e,1
		jmp	short loc_528
			                        ;* No entry point to code
		mov	byte ptr ds:data_169e,6
		jmp	short loc_528
			                        ;* No entry point to code
		mov	byte ptr ds:data_169e,2
		jmp	short loc_528
loc_528:
		call	sub_244
		jc	loc_ret_531		; Jump if carry Set
		call	sub_80
		jc	loc_ret_531		; Jump if carry Set
		call	sub_180
		jnz	loc_529			; Jump if not zero
		call	sub_51
		jnz	loc_532			; Jump if not zero
		or	byte ptr cs:data_169e,4
loc_529:
		call	sub_179
		or	al,al			; Zero ?
		jnz	loc_530			; Jump if not zero
		test	byte ptr [si],10h
		jnz	loc_ret_531		; Jump if not zero
loc_530:
		cmp	word ptr [si+1],2E2Eh
		jne	loc_532			; Jump if not equal

loc_ret_531:
		retn
loc_532:
		push	cs
		pop	ds
		call	sub_182
		call	sub_179
		jc	loc_534			; Jump if carry Set
		call	sub_224
		mov	si,offset data_68
		xor	al,al			; Zero register
		call	sub_169
		call	sub_220
		jc	loc_ret_533		; Jump if carry Set
		or	al,al			; Zero ?
		jz	loc_536			; Jump if zero

loc_ret_533:
		retn
loc_534:
		call	sub_215
		mov	si,data_118e
		call	sub_139
		call	sub_220
		jc	loc_ret_533		; Jump if carry Set
		call	sub_212
		jc	loc_ret_533		; Jump if carry Set
		mov	ax,ds:data_132e
		sub	ax,ds:data_131e
		dec	ax
		cmp	ax,0FFFh
		jbe	loc_535			; Jump if below or =
		mov	ax,0FFFh
loc_535:
		shl	ax,1			; Shift w/zeros fill
		shl	ax,1			; Shift w/zeros fill
		shl	ax,1			; Shift w/zeros fill
		shl	ax,1			; Shift w/zeros fill
		mov	ds:data_197e,ax
		or	ax,ax			; Zero ?
		jz	loc_ret_533		; Jump if zero
loc_536:
		call	sub_16
		mov	si,cs:[bp+4]
		call	sub_288
		call	sub_187
		jc	loc_ret_533		; Jump if carry Set
		call	sub_213
		jc	loc_ret_533		; Jump if carry Set
		call	sub_202
		jc	loc_ret_533		; Jump if carry Set
		jmp	short loc_539
loc_537:
		call	sub_203
		jc	loc_542			; Jump if carry Set
loc_538:
		call	sub_205
loc_539:
		jc	loc_542			; Jump if carry Set
		call	sub_14
		call	sub_179
		jc	loc_540			; Jump if carry Set
		call	sub_193
		jc	loc_542			; Jump if carry Set
		jmp	short loc_538
loc_540:
		or	al,al			; Zero ?
		jnz	loc_541			; Jump if not zero
		call	sub_189
		jc	loc_542			; Jump if carry Set
		jmp	short loc_537
loc_541:
		call	sub_188
		jnc	loc_538			; Jump if carry=0
loc_542:
		call	sub_220
		call	sub_247
		call	sub_181
		call	sub_245
		call	sub_181
		call	sub_220
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_181		proc	near
		and	byte ptr cs:[bp],0FDh
		or	byte ptr cs:[bp],4
		retn
sub_181		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_182		proc	near
		push	si
		mov	di,58F0h
		push	di
		call	sub_179
		dec	al
		mov	si,3FD6h
		js	loc_546			; Jump if sign=1
		call	sub_180
		jnz	loc_543			; Jump if not zero
		push	ax
		call	sub_51
		pop	ax
		jnz	loc_544			; Jump if not zero
loc_543:
		push	bx
		call	sub_81
		test	bl,10h
		pop	bx
		mov	si,3FCDh
		jnz	loc_545			; Jump if not zero
loc_544:
		mov	si,3FBFh
loc_545:
		or	al,al			; Zero ?
		jz	loc_546			; Jump if zero
		mov	si,offset data_62	; ('  WARNING ')
		call	sub_262
		mov	si,offset data_63	; ('Delete ')
loc_546:
		call	sub_262
		call	sub_180
		jnz	loc_547			; Jump if not zero
		call	sub_51
		cmp	cx,1
		ja	loc_548			; Jump if above
loc_547:
		call	sub_183
		jmp	short loc_549
loc_548:
		call	sub_184
loc_549:
		call	sub_179
		mov	si,3FDDh
		jc	loc_550			; Jump if carry Set
		mov	si,offset data_64
loc_550:
		call	sub_262
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		pop	di
		pop	si
		retn
sub_182		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_183		proc	near
		push	ax
		push	bx
		push	si
		push	ds
		call	sub_80
		jc	loc_553			; Jump if carry Set
		call	sub_180
		jnz	loc_551			; Jump if not zero
		call	sub_52
		jc	loc_551			; Jump if carry Set
		call	sub_37
loc_551:
		push	si
		push	ds
		test	byte ptr [si],10h
		mov	si,3F8Ah
		jz	loc_552			; Jump if zero
		mov	si,offset data_65	; ('directory')
loc_552:
		push	cs
		pop	ds
		call	sub_262
		mov	ax,0A20h
		stosw				; Store ax to es:[di]
		pop	ds
		pop	si
		call	sub_286
		mov	al,7
		stosb				; Store al to es:[di]
loc_553:
		pop	ds
		pop	si
		pop	bx
		pop	ax
		retn
sub_183		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_184		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		mov	al,0Ah
		stosb				; Store al to es:[di]
		mov	ax,cx
		xor	dx,dx			; Zero register
		push	di
		call	sub_279
		mov	al,7
		stosb				; Store al to es:[di]
		mov	si,offset data_59	; (' selected')
		call	sub_262
		pop	si
		push	si
		call	sub_265
		mov	si,3F85h
		or	al,al			; Zero ?
		jz	loc_554			; Jump if zero
		mov	si,3F85h
		dec	al
		jz	loc_554			; Jump if zero
		mov	si,offset data_48
loc_554:
		call	sub_262
		mov	si,offset data_51	; (' file(s)')
		call	sub_262
		pop	si
		call	sub_264
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_184		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_185		proc	near
		push	ax
		push	si
		push	ds
		push	es
		push	cs
		pop	es
		mov	dx,data_166e
		mov	ah,4Eh			; 'N'
		mov	cx,37h
		int	21h			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		jnc	loc_555			; Jump if carry=0
		xor	al,al			; Zero register
		jmp	short loc_558
loc_555:
		test	byte ptr cs:data_169e,10h
		jnz	loc_556			; Jump if not zero
		push	cs
		pop	ds
		mov	di,data_193e
		mov	si,offset data_62	; ('  WARNING ')
		call	sub_262
		mov	si,offset data_80
		call	sub_262
		mov	si,data_166e
		call	sub_262
		mov	si,offset data_88
		call	sub_262
		mov	si,offset data_96	; ('Co')
		mov	di,59A7h
		xor	al,al			; Zero register
		call	sub_169
		call	sub_221
		jc	loc_558			; Jump if carry Set
		mov	cl,4
		shl	al,cl			; Shift w/zeros fill
		and	byte ptr cs:data_169e,0CFh
		or	cs:data_169e,al
loc_556:
		test	byte ptr cs:data_169e,20h	; ' '
		jz	loc_557			; Jump if zero
		jmp	short loc_558
loc_557:
		mov	dx,data_166e
		xor	cx,cx			; Zero register
		mov	ax,4301h
		int	21h			; DOS Services  ah=function 43h
						;  set attrb cx, filename @ds:dx
		xor	al,al			; Zero register
loc_558:
		pop	es
		pop	ds
		pop	si
		pop	ax
		retn
sub_185		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_186		proc	near
		pushf				; Push flags
		push	si
		push	ds
		call	sub_80
		and	byte ptr [si],7Fh
		call	sub_76
		pop	ds
		pop	si
		popf				; Pop flags
		retn
sub_186		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_187		proc	near
		push	ax
		cmp	cs:data_18,0
		jne	loc_559			; Jump if not equal
		call	sub_226
		clc				; Clear carry flag
		jz	loc_560			; Jump if zero
		cmp	al,1Bh
		clc				; Clear carry flag
		jnz	loc_560			; Jump if not zero
		mov	cs:data_18,0FFFFh
loc_559:
		call	sub_224
		stc				; Set carry flag
loc_560:
		pop	ax
		retn
sub_187		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_188		proc	near
		call	sub_219
		mov	si,offset data_55+4Dh	; ('M')
		jz	loc_561			; Jump if zero
		jmp	loc_571
loc_561:
		call	sub_217
		mov	di,3FFBh
		jnz	loc_562			; Jump if not zero
		mov	si,3FF2h
		mov	di,3FFBh
loc_562:
		call	sub_197
		mov	si,di
		call	sub_234
		call	sub_192
		push	di
		call	sub_191
		jnc	loc_563			; Jump if carry=0
		call	sub_186
		push	cs
		pop	ds
		clc				; Clear carry flag
		jmp	short loc_569
loc_563:
		call	sub_185
		jc	loc_570			; Jump if carry Set
		jnz	loc_569			; Jump if not zero
		call	sub_59
		call	sub_187
		jc	loc_568			; Jump if carry Set
		mov	dx,data_166e
		mov	ah,41h
		int	21h			; DOS Services  ah=function 41h
						;  delete file, name @ ds:dx
		mov	dx,data_188e
		mov	di,data_166e
		mov	ah,56h
		int	21h			; DOS Services  ah=function 56h
						;  rename file @ds:dx to @es:di
		jc	loc_568			; Jump if carry Set
		pop	di
		push	di
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		mov	bx,cs:[bp+0Bh]
		call	sub_201
		call	sub_200
		call	sub_199
		push	bp
		mov	bp,cs:[bp+1]
		nop
		call	sub_217
		jz	loc_564			; Jump if zero
		call	sub_219
		jnz	loc_567			; Jump if not zero
		jmp	short loc_566
loc_564:
		call	sub_216
		jnz	loc_565			; Jump if not zero
		mov	bx,cs:[bp+0Bh]
		call	sub_201
loc_565:
		call	sub_200
loc_566:
		call	sub_199
loc_567:
		pop	bp
		clc				; Clear carry flag
		jmp	short loc_570
loc_568:
		call	sub_58
loc_569:
		pushf				; Push flags
		call	sub_203
		popf				; Pop flags
loc_570:
		pop	di
		pushf				; Push flags
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		call	sub_58
		popf				; Pop flags
		retn
loc_571:
		call	sub_190
		jc	loc_ret_573		; Jump if carry Set
		jz	loc_572			; Jump if zero
		call	sub_203
		clc				; Clear carry flag
		retn
loc_572:
		call	sub_194

loc_ret_573:
		retn
sub_188		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_189		proc	near
		mov	si,3FE3h

;==== External Entry into Subroutine ======================================

sub_190:
		call	sub_197
		mov	si,offset data_57
		call	sub_234
		call	sub_217
		call	sub_192
		push	di
		call	sub_191
		jnc	loc_574			; Jump if carry=0
		call	sub_186
		push	cs
		pop	ds
		pop	di
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		xor	al,al			; Zero register
		jmp	short loc_578
loc_574:
		call	sub_185
		jc	loc_579			; Jump if carry Set
		jnz	loc_579			; Jump if not zero
		call	sub_59
		call	sub_206
		pop	di
		pushf				; Push flags
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		popf				; Pop flags
		jc	loc_577			; Jump if carry Set
		call	sub_200
		call	sub_219
		jnz	loc_575			; Jump if not zero
		call	sub_199
loc_575:
		push	bp
		mov	bp,cs:[bp+1]
		nop
		call	sub_200
		call	sub_219
		jnz	loc_576			; Jump if not zero
		call	sub_199
loc_576:
		pop	bp
		xor	al,al			; Zero register
		jmp	short loc_578
loc_577:
		stc				; Set carry flag
loc_578:
		call	sub_58
		retn
loc_579:
		pop	di
		pushf				; Push flags
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		popf				; Pop flags
		retn
sub_189		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_191		proc	near
		push	ax
		push	cx
		push	si
		push	di
		pushf				; Push flags
		inc	di
		mov	cl,[di-1]
		mov	byte ptr [di-1],0
		call	sub_217
		mov	[di-1],cl
		mov	si,di
		jz	loc_581			; Jump if zero
		mov	si,data_166e
		sub	ah,4
		jbe	loc_581			; Jump if below or =
		mov	cl,ah
		xor	ch,ch			; Zero register
		lodsb				; String [si] to al
		call	sub_229
		lodsb				; String [si] to al
		call	sub_229
		lodsb				; String [si] to al
		call	sub_229
		mov	al,2Eh			; '.'
		call	sub_229
		call	sub_229
		call	sub_229
		inc	cx

locloop_580:
		lodsb				; String [si] to al
		cmp	al,5Ch			; '\'
		jne	locloop_580		; Jump if not equal
		loop	locloop_580		; Loop if cx > 0

		dec	si
loc_581:
		call	sub_234
		popf				; Pop flags
		pop	di
		pop	si
		pop	cx
		pop	ax
		retn
sub_191		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_192		proc	near
		mov	di,data_166e
		call	sub_269
		xor	ah,ah			; Zero register
		add	di,ax
		push	di
		call	sub_214
		pushf				; Push flags
		cmp	byte ptr [di-1],5Ch	; '\'
		je	loc_582			; Jump if equal
		mov	al,5Ch			; '\'
		stosb				; Store al to es:[di]
loc_582:
		mov	si,data_189e
		call	sub_286
		mov	si,data_166e
		xor	ah,ah			; Zero register
loc_583:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jz	loc_584			; Jump if zero
		cmp	al,5Ch			; '\'
		jne	loc_583			; Jump if not equal
		inc	ah
		jmp	short loc_583
loc_584:
		mov	al,ah
		popf				; Pop flags
		pop	di
		retn
sub_192		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_193		proc	near
		mov	si,4053h
		call	sub_197

;==== External Entry into Subroutine ======================================

sub_194:
		call	sub_59
		push	ds
		call	sub_80
		mov	di,597Fh
		push	di
		call	sub_286
		pop	dx
		pop	ds
		call	sub_195
		jc	loc_588			; Jump if carry Set
		test	byte ptr ds:data_6e,1
		jz	loc_585			; Jump if zero
		test	byte ptr ds:data_169e,80h
		jz	loc_585			; Jump if zero
		call	sub_203
		jmp	short loc_588
loc_585:
		mov	bx,ds:[bp+0Bh]
		call	sub_201
		call	sub_199
		call	sub_218
		jnz	loc_587			; Jump if not zero
		push	bp
		call	sub_247
		call	sub_216
		jnz	loc_586			; Jump if not zero
		call	sub_201
loc_586:
		call	sub_199
		pop	bp
loc_587:
		clc				; Clear carry flag
loc_588:
		call	sub_58
		retn
sub_193		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_195		proc	near
		mov	si,4254h
		mov	ah,4Eh			; 'N'
		mov	cx,16h
		int	21h			; DOS Services  ah=function 4Eh
						;  find 1st filenam match @ds:dx
		jc	loc_591			; Jump if carry Set
		call	sub_187
		jc	loc_ret_592		; Jump if carry Set
		test	byte ptr ds:data_6e,1
		jz	loc_589			; Jump if zero
		call	sub_196
		jc	loc_ret_592		; Jump if carry Set
		test	byte ptr ds:data_169e,80h
		jnz	loc_ret_592		; Jump if not zero
		mov	ax,4300h
		int	21h			; DOS Services  ah=function 43h
						;  get attrb cx, filename @ds:dx
		jc	loc_591			; Jump if carry Set
		mov	ax,4301h
;*		and	cx,0FFFEh
		db	 81h,0E1h,0FEh,0FFh		;  Fixup - byte match
		int	21h			; DOS Services  ah=function 43h
						;  set attrb cx, filename @ds:dx
		jc	loc_591			; Jump if carry Set
		call	sub_187
		jc	loc_ret_592		; Jump if carry Set
loc_589:
		test	byte ptr ds:data_6e,10h
		jnz	loc_590			; Jump if not zero
		mov	ah,41h
		int	21h			; DOS Services  ah=function 41h
						;  delete file, name @ ds:dx
		jnc	loc_ret_592		; Jump if carry=0
		jmp	short loc_591
loc_590:
		mov	ah,3Ah
		int	21h			; DOS Services  ah=function 3Ah
						;  delete subdir, path ptr ds:dx
		jnc	loc_ret_592		; Jump if carry=0
		mov	si,4177h
loc_591:
		call	sub_187
		jc	loc_ret_592		; Jump if carry Set
		call	sub_178

loc_ret_592:
		retn
sub_195		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_196		proc	near
		test	byte ptr ds:data_169e,40h	; '@'
		jnz	loc_ret_594		; Jump if not zero
		mov	di,data_185e
		mov	si,offset data_62	; ('  WARNING ')
		call	sub_262
		mov	si,4154h
		test	byte ptr ds:data_6e,10h
		jz	loc_593			; Jump if zero
		mov	si,offset data_81
loc_593:
		call	sub_262
		mov	si,dx
		call	sub_262
		mov	si,offset data_82
		call	sub_262
		mov	si,offset data_83
		call	sub_262
		mov	si,offset data_97
		mov	di,58F0h
		xor	al,al			; Zero register
		call	sub_169
		call	sub_221
		jc	loc_ret_594		; Jump if carry Set
		mov	cl,6
		shl	al,cl			; Shift w/zeros fill
		and	byte ptr cs:data_169e,3Fh	; '?'
		or	cs:data_169e,al

loc_ret_594:
		retn
sub_196		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_197		proc	near
		push	ax
		push	si
		push	di
		call	sub_198
		call	sub_234
		inc	dl
		call	sub_80
		push	si
		push	ds
		test	byte ptr [si],10h
		mov	si,3F8Ah
		jz	loc_595			; Jump if zero
		mov	si,offset data_65	; ('directory')
loc_595:
		push	cs
		pop	ds
		call	sub_234
		inc	dl
		pop	ds
		pop	si
		mov	al,0Ah
		call	sub_229
		mov	di,597Fh
		push	di
		call	sub_286
		pop	si
		push	cs
		pop	ds
		call	sub_234
		call	sub_228
		pop	di
		pop	si
		pop	ax
		retn
sub_197		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_198		proc	near
		push	ax
		push	bx
		push	cx
		push	si
		push	di
		push	bp
		xor	cl,cl			; Zero register
		mov	ch,cs:data_145e
		mov	dl,4Fh			; 'O'
		mov	dh,ch
		push	cx
		mov	bh,cs:data_126e
		mov	ax,600h
		int	10h			; Video display   ah=functn 06h
						;  scroll up, al=lines
						;   bh=attrib, cx+dx=window size
		pop	dx
		mov	al,7
		call	sub_229
		inc	dl
		pop	bp
		pop	di
		pop	si
		pop	cx
		pop	bx
		pop	ax
		retn
sub_198		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_199		proc	near
		call	sub_46
		call	sub_47
		call	sub_61
		call	sub_64
		call	sub_76
		retn
sub_199		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_200		proc	near
		push	si
		call	sub_217
		jnz	loc_596			; Jump if not zero
		or	byte ptr ds:[bp],4
		mov	si,5993h
		call	sub_14
		call	sub_40
		call	sub_48
		call	sub_54
loc_596:
		pop	si
		retn
sub_200		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_201		proc	near
		call	sub_44
		call	sub_221
		retn
sub_201		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_202		proc	near
		push	bx
		push	si
		push	bp
		push	ds
		call	sub_245
		call	sub_80
		jc	loc_597			; Jump if carry Set
		call	sub_180
		jnz	loc_597			; Jump if not zero
		call	sub_52
		jc	loc_597			; Jump if carry Set
		call	sub_204
loc_597:
		pop	ds
		pop	bp
		pop	si
		pop	bx
		retn
sub_202		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_203		proc	near
		push	bx
		mov	bx,cs:[bp+0Bh]
		inc	bx
		cmp	bx,cs:[bp+7]
		cmc				; Complement carry
		jc	loc_598			; Jump if carry Set
		call	sub_204
loc_598:
		pop	bx
		retn
sub_203		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_204		proc	near
		push	ax
loc_599:
		cmp	bx,cs:[bp+0Bh]
		je	loc_601			; Jump if equal
		mov	ax,4800h
		jc	loc_600			; Jump if carry Set
		mov	ax,5000h
loc_600:
		call	sub_161
		jmp	short loc_599
loc_601:
		pop	ax
		clc				; Clear carry flag
		retn
sub_204		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_205		proc	near
		push	bp
		push	bx
		call	sub_245
		call	sub_180
		stc				; Set carry flag
		jnz	loc_602			; Jump if not zero
		mov	bx,cs:[bp+0Bh]
		call	sub_53
		jc	loc_602			; Jump if carry Set
		call	sub_204
loc_602:
		pop	bx
		pop	bp
		retn
sub_205		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_206		proc	near
		mov	dx,data_188e
		mov	ax,3D00h
		int	21h			; DOS Services  ah=function 3Dh
						;  open file, al=mode,name@ds:dx
		jc	loc_607			; Jump if carry Set
		call	sub_187
		jc	loc_ret_609		; Jump if carry Set
		mov	ds:data_195e,ax
		mov	dx,data_166e
		xor	cx,cx			; Zero register
		mov	ah,3Ch
		int	21h			; DOS Services  ah=function 3Ch
						;  create/truncate file @ ds:dx
		mov	ds:data_194e,ax
		jc	loc_603			; Jump if carry Set
		call	sub_187
		jnc	loc_604			; Jump if carry=0
		jmp	short loc_606
loc_603:
		call	sub_208
		jmp	short loc_607
loc_604:
		call	sub_210
		jc	loc_606			; Jump if carry Set
		jz	loc_605			; Jump if zero
		call	sub_211
		jc	loc_606			; Jump if carry Set
		jz	loc_604			; Jump if zero
		stc				; Set carry flag
		call	sub_207
		mov	di,data_185e
		mov	si,offset data_90	; ('On drive ')
		push	di
		call	sub_262
		mov	al,ds:data_166e
		stosb				; Store al to es:[di]
		mov	si,offset data_91
		call	sub_262
		pop	si
		jmp	short loc_608
loc_605:
		mov	bx,ds:data_194e
		mov	dx,ds:data_191e
		mov	cx,ds:data_192e
		mov	ax,5701h
		int	21h			; DOS Services  ah=function 57h
						;  set file date+time, bx=handle
						;   cx=time, dx=date
loc_606:
		call	sub_207
		jnc	loc_ret_609		; Jump if carry=0
loc_607:
		call	sub_187
		jc	loc_ret_609		; Jump if carry Set
		mov	si,4254h
loc_608:
		call	sub_178

loc_ret_609:
		retn
sub_206		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_207		proc	near
		pushf				; Push flags
		mov	bx,ds:data_194e
		mov	ah,3Eh
		int	21h			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
		popf				; Pop flags
		mov	dx,data_166e
		jc	loc_610			; Jump if carry Set
		pushf				; Push flags
		mov	cl,ds:data_189e
;*		and	cx,27h
		db	81h,0E1h,27h,00		;  Fixup - byte match
		mov	ax,4301h
		int	21h			; DOS Services  ah=function 43h
						;  set attrb cx, filename @ds:dx
		popf				; Pop flags
		jmp	short loc_611
loc_610:
		mov	ah,41h
		int	21h			; DOS Services  ah=function 41h
						;  delete file, name @ ds:dx
		mov	cs:data_18,0FFFEh
		push	bp
		call	sub_245
		call	sub_209
		call	sub_247
		call	sub_209
		call	sub_220
		pop	bp
		stc				; Set carry flag

;==== External Entry into Subroutine ======================================

sub_208:
loc_611:
		pushf				; Push flags
		mov	bx,ds:data_195e
		mov	ah,3Eh
		int	21h			; DOS Services  ah=function 3Eh
						;  close file, bx=file handle
		popf				; Pop flags
		jc	loc_ret_612		; Jump if carry Set
		call	sub_186

loc_ret_612:
		retn
sub_207		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_209		proc	near
		call	sub_219
		jnz	loc_ret_613		; Jump if not zero
		call	sub_181

loc_ret_613:
		retn
sub_209		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_210		proc	near
		mov	ah,3Fh			; '?'
		mov	bx,ds:data_195e
		mov	cx,ds:data_197e
		push	ds
		mov	ds,ds:data_131e
		xor	dx,dx			; Zero register
		int	21h			; DOS Services  ah=function 3Fh
						;  read file, bx=file handle
						;   cx=bytes to ds:dx buffer
		pop	ds
		jc	loc_ret_614		; Jump if carry Set
		call	sub_187
		jc	loc_ret_614		; Jump if carry Set
		mov	cs:data_196e,ax
		or	ax,ax			; Zero ?

loc_ret_614:
		retn
sub_210		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_211		proc	near
		xor	dx,dx			; Zero register
		mov	cx,ds:data_196e
		mov	bx,ds:data_194e
		push	ds
		mov	ds,ds:data_131e
		mov	ah,40h
		int	21h			; DOS Services  ah=function 40h
						;  write file  bx=file handle
						;   cx=bytes from ds:dx buffer
		pop	ds
		jc	loc_ret_615		; Jump if carry Set
		call	sub_187
		jc	loc_ret_615		; Jump if carry Set
		cmp	ax,cx
		clc				; Clear carry flag
		mov	word ptr ds:data_196e,0

loc_ret_615:
		retn
sub_211		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_212		proc	near
		push	cs
		pop	ds
		mov	si,ds:[bp+4]
		call	sub_288
		call	sub_187
		jc	loc_ret_620		; Jump if carry Set
		mov	si,data_188e
		call	sub_288
		jnc	loc_616			; Jump if carry=0
		call	sub_187
		jc	loc_ret_620		; Jump if carry Set
		mov	si,41CCh
		jmp	loc_527
loc_616:
		mov	di,597Fh
		mov	si,data_167e
		push	di
		call	sub_286
		pop	si
		call	sub_288
		jc	loc_617			; Jump if carry Set
		mov	di,data_168e
		mov	cx,0Bh
		mov	al,3Fh			; '?'
		rep	stosb			; Rep when cx >0 Store al to es:[di]
loc_617:
		call	sub_187
		jc	loc_ret_620		; Jump if carry Set
		mov	di,578Bh
		call	sub_287
		call	sub_187
		jc	loc_ret_620		; Jump if carry Set
		push	bp
		call	sub_247
		call	sub_217
		clc				; Clear carry flag
		jnz	loc_618			; Jump if not zero
		call	sub_213
loc_618:
		pop	bp
		jc	loc_ret_620		; Jump if carry Set
		call	sub_180
		jnz	loc_619			; Jump if not zero
		call	sub_51
		cmp	cx,1
		jbe	loc_619			; Jump if below or =
		mov	di,data_168e
		mov	cx,0Bh
		mov	al,3Fh			; '?'
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		jnz	loc_621			; Jump if not zero
loc_619:
		clc				; Clear carry flag

loc_ret_620:
		retn
loc_621:
		mov	di,data_166e
		push	di
		mov	si,offset data_85	; ('Cannot ')
		call	sub_262
		call	sub_179
		or	al,al			; Zero ?
		mov	si,41F5h
		jz	loc_622			; Jump if zero
		mov	si,offset data_86
loc_622:
		call	sub_262
		mov	si,offset data_87	; (' on itself !')
		call	sub_262
		pop	si
		jmp	loc_527
sub_212		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_213		proc	near
		call	sub_181
		call	sub_220
		call	sub_187
		retn
sub_213		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_214		proc	near
		push	ax
		push	cx
		push	si
		push	di
		push	cs
		pop	es
		call	sub_80
		mov	di,data_189e
		push	di
		mov	cx,13h
		lodsb				; String [si] to al
		and	al,37h			; '7'
		stosb				; Store al to es:[di]
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		push	cs
		pop	ds
		mov	si,data_168e
		pop	di
		inc	di
		mov	cx,0Bh

locloop_623:
		lodsb				; String [si] to al
		cmp	al,3Fh			; '?'
		je	loc_624			; Jump if equal
		mov	[di],al
loc_624:
		inc	di
		loop	locloop_623		; Loop if cx > 0

		call	sub_217
		clc				; Clear carry flag
		jnz	loc_625			; Jump if not zero
		call	sub_80
		inc	si
		mov	di,data_190e
		mov	cx,0Bh
		repe	cmpsb			; Rep zf=1+cx >0 Cmp [si] to es:[di]
		clc				; Clear carry flag
		jnz	loc_625			; Jump if not zero
		stc				; Set carry flag
loc_625:
		push	cs
		pop	ds
		pop	di
		pop	si
		pop	cx
		pop	ax
		retn
sub_214		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_215		proc	near
		push	di
		push	ds
		mov	byte ptr ds:data_120e,0
		call	sub_80
		jc	loc_630			; Jump if carry Set
		call	sub_216
		jz	loc_628			; Jump if zero
		call	sub_180
		jnz	loc_626			; Jump if not zero
		call	sub_51
		or	cx,cx			; Zero ?
		jnz	loc_627			; Jump if not zero
loc_626:
		push	bp
		push	ds
		push	si
		call	sub_80
		test	byte ptr [si],10h
		pop	si
		pop	ds
		pop	bp
		jnz	loc_628			; Jump if not zero
loc_627:
		push	bp
		call	sub_247
		mov	di,cs:[bp+4]
		mov	cs:data_121e,di
		inc	byte ptr cs:data_120e
		pop	bp
loc_628:
		mov	di,597Fh
		test	byte ptr [si],10h
		jnz	loc_629			; Jump if not zero
		call	sub_180
		jnz	loc_629			; Jump if not zero
		call	sub_51
		cmp	cx,1
		ja	loc_630			; Jump if above
loc_629:
		call	sub_286
		mov	si,cs:data_121e
		mov	cs:data_122e,si
		mov	word ptr cs:data_121e,597Fh
		inc	byte ptr cs:data_120e
loc_630:
		cmp	byte ptr cs:data_120e,2
		jne	loc_631			; Jump if not equal
		call	sub_243
		jnc	loc_631			; Jump if carry=0
		mov	si,cs:data_121e
		xchg	cs:data_122e,si
		mov	cs:data_121e,si
loc_631:
		pop	ds
		pop	di
		retn
sub_215		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_216		proc	near
		push	si
		push	di
		push	bp
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_247
		mov	di,ds:[bp+4]
		call	sub_245
		mov	si,ds:[bp+4]
		call	sub_263
		pop	es
		pop	ds
		pop	bp
		pop	di
		pop	si
		retn
sub_216		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_217		proc	near
		push	si
		push	di
		push	bp
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	di,data_166e
		mov	si,ds:[bp+4]
		call	sub_263
		pop	es
		pop	ds
		pop	bp
		pop	di
		pop	si
		retn
sub_217		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_218		proc	near
		push	si
		push	di
		push	bp
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_247
		mov	di,ds:[bp+4]
		call	sub_245
		mov	si,ds:[bp+4]
		cmpsb				; Cmp [si] to es:[di]
		pop	es
		pop	ds
		pop	bp
		pop	di
		pop	si
		retn
sub_218		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_219		proc	near
		push	si
		push	di
		push	bp
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		mov	di,data_166e
		mov	si,ds:[bp+4]
		cmpsb				; Cmp [si] to es:[di]
		pop	es
		pop	ds
		pop	bp
		pop	di
		pop	si
		retn
sub_219		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_220		proc	near
		call	sub_221
		call	sub_163
		retn
sub_220		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_221		proc	near
		pushf				; Push flags
		push	bp
		push	ax
		push	bx

;==== External Entry into Subroutine ======================================

sub_222:
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		call	sub_245
		call	sub_54
		call	sub_247
		call	sub_54
		pop	es
		pop	ds
		pop	bx
		pop	ax
		pop	bp
		popf				; Pop flags
		retn
sub_221		endp

s_37ec:
;		db	0E8h, 91h,0EEh
		call	s_2680
loc_632:
		call	sub_12
		call	sub_13
		or	al,al			; Zero ?
		jnz	loc_638			; Jump if not zero
		push	cs
		pop	ds
		push	cs
		pop	es
		push	ax
		cmp	byte ptr es:PSP_cmd_size,2
		jb	loc_637			; Jump if below
		call	sub_245
		mov	si,ds:[bp+4]
loc_634:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jz	loc_635			; Jump if zero
		call	sub_223
		jmp	short loc_634
loc_635:
		mov	al,3Eh			; '>'
		call	sub_223
		mov	cl,es:PSP_cmd_size
		xor	ch,ch			; Zero register
		sub	cl,2
		mov	si,data_5e
		jcxz	loc_639			; Jump if cx=0

locloop_636:
		mov	al,es:[si]
		inc	si
		call	sub_223
		loop	locloop_636		; Loop if cx > 0

		mov	al,0Dh
		call	sub_223
		mov	al,0Ah
		call	sub_223
loc_637:
		pop	ax
		jmp	loc_1
loc_638:
		mov	ah,4Ch
		int	21h			; DOS Services  ah=function 4Ch
						;  terminate with al=return code
loc_639:
		mov	ds:PSP_cmd_size,ch
		jmp	loc_15

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_223		proc	near
		push	dx
		push	ax
		mov	dl,al
		mov	ah,2
		int	21h			; DOS Services  ah=function 02h
						;  display char dl
		pop	ax
		pop	dx
		retn
sub_223		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_224		proc	near
		push	ax
		push	cx
		xor	cx,cx			; Zero register
		mov	cs:data_215e,cx

locloop_640:
		call	sub_226
		jz	loc_641			; Jump if zero
		call	sub_227
		loop	locloop_640		; Loop if cx > 0

loc_641:
		pop	cx
		pop	ax
		retn
sub_224		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_225		proc	near
		push	cx
		xor	ax,ax			; Zero register
		xchg	cs:data_215e,ax
		or	ax,ax			; Zero ?
		jnz	loc_642			; Jump if not zero
		call	sub_227
loc_642:
		mov	cx,ax
loc_643:
		call	sub_226
		jz	loc_644			; Jump if zero
		cmp	ax,cx
		jne	loc_644			; Jump if not equal
		call	sub_227
		mov	cs:data_215e,ax
		jmp	short loc_643
loc_644:
		mov	ax,cx
		pop	cx
		retn
sub_225		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_226		proc	near
		mov	ah,1
		jmp	short loc_645

;==== External Entry into Subroutine ======================================

sub_227:
		xor	ah,ah			; Zero register
loc_645:
		int	16h			; Keyboard i/o  ah=function 00h
						;  get keybd char in al, ah=scan
		retn
sub_226		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_228		proc	near
		pushf				; Push flags
		push	ax
		push	cx
		push	dx
		xor	al,al			; Zero register
		call	sub_239
		inc	dh
		xor	dl,dl			; Zero register
		call	sub_229
		pop	dx
		pop	cx
		pop	ax
		popf				; Pop flags
		retn
sub_228		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_229		proc	near
		push	cx
		mov	cx,1
		call	sub_232
		pop	cx
		retn
sub_229		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_230		proc	near
		push	cx
		mov	cx,1
		call	sub_233
		pop	cx
		retn
sub_230		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_231		proc	near
		push	cx
		push	dx
		push	es
		cmp	dl,4Fh			; 'O'
		ja	loc_646			; Jump if above
		cmp	dh,cs:data_145e
		ja	loc_646			; Jump if above
		les	di,dword ptr cs:data_139e	; Load seg:offset ptr
		push	ax
		mov	al,50h			; 'P'
		mul	dh			; ax = reg * al
		xor	dh,dh			; Zero register
		add	ax,dx
		add	ax,ax
		add	di,ax
		pop	ax
		mov	ah,bl
		rep	stosw			; Rep when cx >0 Store ax to es:[di]
loc_646:
		pop	es
		pop	dx
		pop	cx
		retn
sub_231		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_232		proc	near
		cmp	al,20h			; ' '
		jae	loc_649			; Jump if above or =
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		push	bp
		or	al,al			; Zero ?
		jz	loc_647			; Jump if zero
		xor	ah,ah			; Zero register
		mov	si,data_122e+1
		add	si,ax
		mov	al,cs:[si]
		mov	cs:data_170e,al
		jmp	short loc_648
loc_647:
		mov	bh,cs:data_138e
		and	bh,1
		mov	ah,2
		int	10h			; Video display   ah=functn 02h
						;  set cursor location in dx
loc_648:
		pop	bp
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn

;==== External Entry into Subroutine ======================================

sub_233:
loc_649:
		push	es
		push	bx
		push	si
		push	di
		push	bp
		push	ax
		mov	bl,cs:data_170e
		call	sub_231
		add	dl,cl
		pop	ax
		pop	bp
		pop	di
		pop	si
		pop	bx
		pop	es
		retn
sub_232		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_234		proc	near
		push	ax
loc_650:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jz	loc_651			; Jump if zero
		cmp	al,1Fh
		je	loc_651			; Jump if equal
		call	sub_229
		jmp	short loc_650
loc_651:
		pop	ax
		retn
sub_234		endp

		db	50h
loc_652:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jz	loc_653			; Jump if zero
		cmp	al,1Fh
		je	loc_653			; Jump if equal
		call	sub_230
		jmp	short loc_652
loc_653:
		pop	ax
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_235		proc	near
		call	sub_244
		jnc	loc_654			; Jump if carry=0
		retn

;==== External Entry into Subroutine ======================================

sub_236:
		call	sub_244
		jnc	loc_655			; Jump if carry=0
		retn
loc_654:
		push	ax
		mov	ah,6
		jmp	short loc_656
loc_655:
		push	ax
		mov	ah,7
loc_656:
		call	sub_237
		pop	ax
		retn
sub_235		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_237		proc	near
		push	bp
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		mov	cl,ds:[bp+3]
		mov	dl,cl
		add	dl,27h			; '''
		mov	bh,ds:data_124e
		mov	ch,4
		call	sub_240
		dec	dh
		int	10h			; Video display   ah=functn 07h
						;  scroll down, al=lines
						;   bh=attrib, cx+dx=window size
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	bp
		retn
sub_237		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_238		proc	near
		xor	cx,cx			; Zero register
		mov	cl,cs:data_145e
		retn
sub_238		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_239		proc	near
		mov	dh,cs:data_145e
		retn
sub_239		endp

			                        ;* No entry point to code
		xor	cx,cx			; Zero register
		mov	cl,cs:data_145e
		call	sub_242
		jc	loc_ret_657		; Jump if carry Set
		dec	cx

loc_ret_657:
		retn

;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_240		proc	near
		call	sub_239
		dec	dh
		call	sub_242
		jc	loc_ret_658		; Jump if carry Set
		dec	dh

loc_ret_658:
		retn
sub_240		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_241		proc	near
		push	dx
		call	sub_240
		xor	cx,cx			; Zero register
		mov	cl,dh
		sub	cl,4
		pop	dx
		retn
sub_241		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_242		proc	near
		test	byte ptr cs:data_105,4
		jnz	loc_ret_659		; Jump if not zero
		stc				; Set carry flag

loc_ret_659:
		retn
sub_242		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_243		proc	near
		push	bp
		call	sub_247
		call	sub_244
		pop	bp
		retn
sub_243		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_244		proc	near
		test	byte ptr cs:data_105,2
		jnz	loc_660			; Jump if not zero
		test	byte ptr cs:[bp],1
		jnz	loc_ret_661		; Jump if not zero
loc_660:
		stc				; Set carry flag

loc_ret_661:
		retn
sub_244		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_245		proc	near
		test	byte ptr cs:data_105,1
		mov	bp,5853h
		jnz	loc_ret_662		; Jump if not zero
		mov	bp,5836h

loc_ret_662:
		retn
sub_245		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_247		proc	near
		test	byte ptr cs:data_105,1
		mov	bp,5853h
		jz	loc_ret_663		; Jump if zero
		mov	bp,5836h

loc_ret_663:
		retn
sub_247		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_248		proc	near
		push	ax
		push	bp
		call	sub_245
		mov	ax,bp
		pop	bp
		cmp	ax,bp
		pop	ax
		retn
sub_248		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_249		proc	near
		push	di
		push	es
		push	cs
		pop	es
		mov	di,data_2e
		call	sub_250
		jz	loc_664			; Jump if zero
		call	sub_250
		jz	loc_664			; Jump if zero
		call	sub_250
loc_664:
		pop	es
		pop	di
		retn
sub_249		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_250		proc	near
		push	di
		push	si
		push	ds
		add	si,9
		cmpsw				; Cmp [si] to es:[di]
		jnz	loc_665			; Jump if not zero
		cmpsb				; Cmp [si] to es:[di]
loc_665:
		pop	ds
		pop	si
		pop	di
		pushf				; Push flags
		add	di,3
		popf				; Pop flags
		retn
sub_250		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_251		proc	near
		push	cx
		push	bx
		xor	al,al			; Zero register
		mov	bx,data_133e
		mov	cx,0Ah

locloop_666:
		cmp	word ptr cs:[bx],0
		je	loc_667			; Jump if equal
		inc	al
		add	bx,2
		loop	locloop_666		; Loop if cx > 0

		stc				; Set carry flag
		jmp	short loc_668
loc_667:
		mov	cx,cs:data_131e
		mov	cs:[bx],cx
		mov	bx,1
		call	sub_258
loc_668:
		pop	bx
		pop	cx
		retn
sub_251		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_252		proc	near
		push	bx
		xor	bx,bx			; Zero register
		call	sub_259
		mov	bl,al
		add	bx,bx
		add	bx,data_133e
		mov	word ptr cs:[bx],0
		pop	bx
		retn
sub_252		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_253		proc	near
		xor	bh,bh			; Zero register
		mov	bl,al
		add	bx,bx
		add	bx,data_133e
		mov	bx,cs:[bx]
		retn
sub_253		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_254		proc	near
		mov	bx,cs:data_132e
		sub	bx,cs:data_131e
		jbe	loc_670			; Jump if below or =
		cmp	bx,0EFFh
		jb	loc_669			; Jump if below
		mov	bx,0EFFh
loc_669:
		shl	bx,1			; Shift w/zeros fill
		shl	bx,1			; Shift w/zeros fill
		shl	bx,1			; Shift w/zeros fill
		shl	bx,1			; Shift w/zeros fill
		call	sub_258
loc_670:
		call	sub_255
		retn
sub_254		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_255		proc	near
		push	ax
		push	dx
		call	sub_253
		mov	dx,bx
		call	sub_256
		mov	bx,cs:data_131e
		jc	loc_671			; Jump if carry Set
		call	sub_253
loc_671:
		sub	bx,dx
		add	bx,bx
		add	bx,bx
		add	bx,bx
		add	bx,bx
		pop	dx
		pop	ax
		retn
sub_255		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_256		proc	near
		push	bx
		push	cx
		push	dx
		push	si
		call	sub_253
		mov	si,data_133e
		xor	ah,ah			; Zero register
		mov	dx,0FFFFh
		mov	cx,0Ah

locloop_672:
		cmp	cs:[si],dx
		jae	loc_673			; Jump if above or =
		cmp	cs:[si],bx
		jbe	loc_673			; Jump if below or =
		mov	dx,cs:[si]
		mov	al,ah
loc_673:
		add	si,2
		inc	ah
		loop	locloop_672		; Loop if cx > 0

;*		cmp	dx,0FFFFh
		db	 83h,0FAh,0FFh		;  Fixup - byte match
		cmc				; Complement carry
		pop	si
		pop	dx
		pop	cx
		pop	bx
		retn
sub_256		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_257		proc	near
		push	bx
		push	cx
		push	dx
		push	si
		call	sub_253
		mov	si,data_133e
		xor	ah,ah			; Zero register
		xor	dx,dx			; Zero register
		mov	cx,0Ah

locloop_674:
		cmp	cs:[si],dx
		jbe	loc_675			; Jump if below or =
		cmp	cs:[si],bx
		jae	loc_675			; Jump if above or =
		mov	dx,cs:[si]
		mov	al,ah
loc_675:
		add	si,2
		inc	ah
		loop	locloop_674		; Loop if cx > 0

		cmp	dx,1
		pop	si
		pop	dx
		pop	cx
		pop	bx
		retn
sub_257		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_258		proc	near
		push	bx
		or	bx,bx			; Zero ?
		jnz	loc_676			; Jump if not zero
		inc	bx
loc_676:
		call	sub_259
		pop	bx
		retn
sub_258		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_259		proc	near
		push	ax
		push	bx
		push	cx
		push	dx
		push	si
		push	di
		add	bx,0FFh
		xor	bl,bl			; Zero register
		mov	dx,bx
		call	sub_255
		sub	bx,dx
		mov	dx,bx
		ja	loc_677			; Jump if above
		jc	loc_680			; Jump if carry Set
		jmp	loc_684
loc_677:
		shr	dx,1			; Shift w/zeros fill
		shr	dx,1			; Shift w/zeros fill
		shr	dx,1			; Shift w/zeros fill
		shr	dx,1			; Shift w/zeros fill
loc_678:
		call	sub_256
		jnc	loc_679			; Jump if carry=0
		sub	cs:data_131e,dx
		jmp	loc_684
loc_679:
		call	sub_253
		mov	cx,bx
		call	sub_255
		xchg	cx,bx
		push	ds
		push	es
		mov	ds,bx
		sub	bx,dx
		mov	es,bx
		xor	si,si			; Zero register
		xor	di,di			; Zero register
		shr	cx,1			; Shift w/zeros fill
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		pop	es
		pop	ds
		mov	bl,al
		xor	bh,bh			; Zero register
		add	bx,bx
		add	bx,data_133e
		sub	cs:[bx],dx
		jmp	short loc_678
loc_680:
		neg	dx
		shr	dx,1			; Shift w/zeros fill
		shr	dx,1			; Shift w/zeros fill
		shr	dx,1			; Shift w/zeros fill
		shr	dx,1			; Shift w/zeros fill
		xor	cx,cx			; Zero register
loc_681:
		inc	cx
		call	sub_256
		jnc	loc_681			; Jump if carry=0
		dec	cx
		push	ax
		push	cx
		call	sub_253
		mov	cx,bx
		call	sub_255
		xchg	cx,bx
		mov	ax,cx
		add	ax,0Fh
		shr	ax,1			; Shift w/zeros fill
		shr	ax,1			; Shift w/zeros fill
		shr	ax,1			; Shift w/zeros fill
		shr	ax,1			; Shift w/zeros fill
		add	ax,bx
		add	ax,dx
		cmp	ax,cs:data_132e
		ja	loc_682			; Jump if above
		mov	cs:data_131e,ax
loc_682:
		pop	cx
		pop	ax
		jbe	locloop_683		; Jump if below or =
		stc				; Set carry flag
		jmp	short loc_685

locloop_683:
		jcxz	loc_684			; Jump if cx=0
		push	cx
		push	ds
		push	es
		call	sub_253
		mov	cx,bx
		call	sub_255
		xchg	cx,bx
		mov	ds,bx
		add	bx,dx
		mov	es,bx
		mov	si,cx
		dec	si
		mov	di,si
		std				; Set direction flag
		shr	cx,1			; Shift w/zeros fill
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		cld				; Clear direction
		pop	es
		pop	ds
		pop	cx
		mov	bl,al
		xor	bh,bh			; Zero register
		add	bx,bx
		add	bx,data_133e
		add	cs:[bx],dx
		call	sub_257
		loop	locloop_683		; Loop if cx > 0

loc_684:
		clc				; Clear carry flag
loc_685:
		pop	di
		pop	si
		pop	dx
		pop	cx
		pop	bx
		pop	ax
		retn
sub_259		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_260		proc	near
		cmp	al,41h			; 'A'
		jb	loc_ret_686		; Jump if below
		cmp	al,5Ah			; 'Z'
		ja	loc_ret_686		; Jump if above
		add	al,20h			; ' '

loc_ret_686:
		retn
sub_260		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_261		proc	near
		cmp	al,61h			; 'a'
		jb	loc_ret_687		; Jump if below
		cmp	al,7Ah			; 'z'
		ja	loc_ret_687		; Jump if above
		sub	al,20h			; ' '

loc_ret_687:
		retn
sub_261		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_262		proc	near
		push	ax
loc_688:
		lodsb				; String [si] to al
		stosb				; Store al to es:[di]
		or	al,al			; Zero ?
		jnz	loc_688			; Jump if not zero
		dec	di
		pop	ax
		retn
sub_262		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_263		proc	near
		push	si
		push	di
		push	ax
loc_689:
		cmpsb				; Cmp [si] to es:[di]
		jnz	loc_690			; Jump if not zero
		cmp	byte ptr [si-1],0
		jne	loc_689			; Jump if not equal
loc_690:
		pop	ax
		pop	di
		pop	si
		retn
sub_263		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_264		proc	near
		push	ax
		call	sub_265
		or	al,al			; Zero ?
		jz	loc_692			; Jump if zero
		mov	si,3F85h
		dec	al
		jz	loc_691			; Jump if zero
		mov	si,offset data_48
loc_691:
		call	sub_262
loc_692:
		pop	ax
		retn
sub_264		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_265		proc	near
		push	dx
		push	si
		mov	dx,3030h
loc_693:
		call	sub_266
		jc	loc_694			; Jump if carry Set
		mov	dh,dl
		mov	dl,al
		jmp	short loc_693
loc_694:
		mov	al,2
		cmp	dh,31h			; '1'
		je	loc_695			; Jump if equal
		cmp	dl,34h			; '4'
		ja	loc_695			; Jump if above
		cmp	dl,30h			; '0'
		je	loc_695			; Jump if equal
		dec	al
		cmp	dl,31h			; '1'
		jne	loc_695			; Jump if not equal
		dec	al
loc_695:
		pop	si
		pop	dx
		retn
sub_265		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_266		proc	near
loc_696:
		lodsb				; String [si] to al
		cmp	al,2Eh			; '.'
		je	loc_696			; Jump if equal
		or	al,al			; Zero ?
		stc				; Set carry flag
		jz	loc_ret_697		; Jump if zero
		cmp	al,30h			; '0'
		jb	loc_ret_697		; Jump if below
		cmp	al,3Ah			; ':'
		cmc				; Complement carry

loc_ret_697:
		retn
sub_266		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_267		proc	near
		push	ax
		push	si
loc_698:
		lodsb				; String [si] to al
		or	al,al			; Zero ?
		jz	loc_699			; Jump if zero
		cmp	al,1Fh
		je	loc_699			; Jump if equal
		jc	loc_698			; Jump if carry Set
		dec	cl
		jnz	loc_698			; Jump if not zero
loc_699:
		shr	cl,1			; Shift w/zeros fill
		add	dl,cl
		pop	si
		pop	ax
		retn
sub_267		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_268		proc	near
		push	si
		xor	ax,ax			; Zero register
loc_700:
		cmp	byte ptr [si],0
		je	loc_703			; Jump if equal
		inc	si
		cmp	byte ptr [si-1],1Fh
		jb	loc_700			; Jump if below
		jnz	loc_702			; Jump if not zero
		cmp	ah,al
		jbe	loc_701			; Jump if below or =
		mov	al,ah
loc_701:
		xor	ah,ah			; Zero register
		jmp	short loc_700
loc_702:
		inc	ah
		jnz	loc_700			; Jump if not zero
		dec	ah
		mov	al,ah
		stc				; Set carry flag
loc_703:
		cmp	ah,al
		jbe	loc_704			; Jump if below or =
		mov	al,ah
loc_704:
		pop	si
		retn
sub_268		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_269		proc	near
		push	di
		xor	ax,ax			; Zero register
loc_705:
		cmp	byte ptr [di],0
		je	loc_708			; Jump if equal
		inc	di
		cmp	byte ptr [di-1],1Fh
		jb	loc_705			; Jump if below
		jnz	loc_707			; Jump if not zero
		cmp	ah,al
		jbe	loc_706			; Jump if below or =
		mov	al,ah
loc_706:
		xor	ah,ah			; Zero register
		jmp	short loc_705
loc_707:
		inc	ah
		jnz	loc_705			; Jump if not zero
		dec	ah
		mov	al,ah
		stc				; Set carry flag
loc_708:
		cmp	ah,al
		jbe	loc_709			; Jump if below or =
		mov	al,ah
loc_709:
		pop	di
		retn
sub_269		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_270		proc	near
		call	sub_273
		jmp	short loc_710

;==== External Entry into Subroutine ======================================

sub_271:
		call	sub_274
loc_710:
		push	di
		push	si
		push	bx
		push	cx
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		push	dx
		mov	di,5870h
		xor	ah,ah			; Zero register
		call	sub_280
		pop	dx
		mov	si,data_184e
		call	sub_234
		call	sub_275
		pop	es
		pop	ds
		pop	cx
		pop	bx
		pop	si
		pop	di
		retn
sub_270		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_272		proc	near
		push	di
		push	si
		push	ds
		push	es
		push	cs
		pop	ds
		push	cs
		pop	es
		push	dx
		call	sub_273
		mov	dx,bx
		mov	di,data_184e
		call	sub_276
		pop	dx
		mov	si,data_184e
		call	sub_234
		call	sub_275
		pop	es
		pop	ds
		pop	si
		pop	di
		retn
sub_272		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_273		proc	near
		and	byte ptr cs:data_173e,0FDh
		or	byte ptr cs:data_173e,2
		retn
sub_273		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_274		proc	near
		and	byte ptr cs:data_173e,0FBh
		or	byte ptr cs:data_173e,4
		retn
sub_274		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_275		proc	near
		and	byte ptr cs:data_173e,0F9h
		retn
sub_275		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_276		proc	near
		cmp	dx,5F5h
		jne	loc_711			; Jump if not equal
		cmp	ax,0E100h
loc_711:
		jae	loc_712			; Jump if above or =
		jmp	short loc_715
		db	90h
loc_712:
		cmp	dx,3B9Ah
		jne	loc_713			; Jump if not equal
		cmp	ax,0CA00h
loc_713:
		jae	loc_714			; Jump if above or =
		or	byte ptr cs:data_173e,10h
		call	sub_278
		and	byte ptr cs:data_173e,0EFh
		retn
loc_714:
		or	byte ptr cs:data_173e,1
		call	sub_277
		and	byte ptr cs:data_173e,0FEh
		retn

;==== External Entry into Subroutine ======================================

sub_277:
		mov	bx,3B9Ah
		mov	cx,0CA00h
		call	sub_284

;==== External Entry into Subroutine ======================================

sub_278:
		mov	bx,5F5h
		mov	cx,0E100h
		call	sub_284
loc_715:
		mov	bl,98h
		mov	cx,9680h
		call	sub_283
		mov	bl,0Fh
		mov	cx,4240h
		call	sub_283
		call	itoa
		mov	bl,1
		mov	cx,86A0h
		call	sub_283
sub_276		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_279		proc	near
		mov	cx,2710h
		call	sub_282
		mov	cx,3E8h
		call	sub_281
		test	byte ptr cs:data_173e,10h
		jz	loc_716			; Jump if zero
		or	byte ptr cs:data_173e,8
loc_716:
		call	itoa
		mov	cx,64h
		call	sub_281

;==== External Entry into Subroutine ======================================

sub_280:
		mov	cx,0Ah
		call	sub_281
		add	al,30h			; '0'
		stosb				; Store al to es:[di]
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		dec	di
		and	byte ptr cs:data_173e,0F7h
		xchg	cs:data_171e,al
		inc	al
		retn
sub_279		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_281		proc	near
		xor	dx,dx			; Zero register

;==== External Entry into Subroutine ======================================

sub_282:
		xor	bl,bl			; Zero register

;==== External Entry into Subroutine ======================================

sub_283:
		xor	bh,bh			; Zero register

;==== External Entry into Subroutine ======================================

sub_284:
		mov	byte ptr cs:data_172e,2Fh	; '/'
loc_717:
		inc	byte ptr cs:data_172e
		sub	ax,cx
		sbb	dx,bx
		jnc	loc_717			; Jump if carry=0
		add	ax,cx
		adc	dx,bx
		cmp	byte ptr cs:data_172e,30h	; '0'
		jne	loc_718			; Jump if not equal
		cmp	byte ptr cs:data_171e,0
		jne	loc_718			; Jump if not equal
		test	byte ptr cs:data_173e,4
		jnz	loc_718			; Jump if not zero
		mov	byte ptr cs:data_172e,20h	; ' '
		test	byte ptr cs:data_173e,2
		jz	loc_ret_720		; Jump if zero
		jmp	short loc_719
loc_718:
		inc	byte ptr cs:data_171e
loc_719:
		push	ax
		mov	al,cs:data_172e
		stosb				; Store al to es:[di]
		pop	ax

loc_ret_720:
		retn
sub_281		endp


;==========================================================================
;                              SUBROUTINE itoa
;==========================================================================

itoa		proc	near
		push	ax
		mov	al,2Ch			; ','
		test	byte ptr cs:data_173e,9
		jnz	loc_722			; Jump if not zero
		cmp	byte ptr cs:data_171e,0
		jne	loc_721			; Jump if not equal
		test	byte ptr cs:data_173e,3
		jz	loc_722			; Jump if zero
		test	byte ptr cs:data_173e,4
		jnz	loc_721			; Jump if not zero
		mov	al,20h			; ' '
loc_721:
		mov	es:[di],al
		inc	di
		cmp	byte ptr cs:data_171e,0
		je	loc_722			; Jump if equal
		inc	byte ptr cs:data_171e
loc_722:
		pop	ax
		retn
itoa		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_286		proc	near
		push	cx
		push	bx
		push	si
		lodsb				; String [si] to al
		mov	bl,al
		mov	cx,8

locloop_723:
		lodsb				; String [si] to al
		test	bl,16h
		jnz	loc_724			; Jump if not zero
		call	sub_260
loc_724:
		and	bl,0F9h
		stosb				; Store al to es:[di]
		loop	locloop_723		; Loop if cx > 0

		mov	cl,8
loc_725:
		dec	di
		cmp	byte ptr es:[di],20h	; ' '
		je	loc_725			; Jump if equal
		inc	di
		cmp	byte ptr [si-8],2Eh	; '.'
		je	loc_727			; Jump if equal
		cmp	word ptr [si],2020h
		jne	loc_726			; Jump if not equal
		cmp	byte ptr [si+2],20h	; ' '
		je	loc_727			; Jump if equal
loc_726:
		mov	al,2Eh			; '.'
		stosb				; Store al to es:[di]
loc_727:
		mov	cl,3

locloop_728:
		lodsb				; String [si] to al
		test	bl,16h
		jnz	loc_729			; Jump if not zero
		call	sub_260
loc_729:
		and	bl,0F9h
		stosb				; Store al to es:[di]
		loop	locloop_728		; Loop if cx > 0

		mov	cl,0Bh
loc_730:
		dec	di
		cmp	byte ptr es:[di],20h	; ' '
		je	loc_730			; Jump if equal
		inc	di
		mov	byte ptr es:[di],0
		pop	si
		pop	bx
		pop	cx
		retn
sub_286		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_287		proc	near
		push	ax
		push	dx
		push	si
		push	di
		push	ds
		mov	ah,19h
		int	21h			; DOS Services  ah=function 19h
						;  get default drive al  (0=a:)
		inc	al
		mov	dl,al
		add	al,40h			; '@'
		stosb				; Store al to es:[di]
		mov	ax,5C3Ah
		stosw				; Store ax to es:[di]
		mov	si,di
		xor	al,al			; Zero register
		stosb				; Store al to es:[di]
		push	es
		pop	ds
		mov	ah,47h
		int	21h			; DOS Services  ah=function 47h
						;  get present dir,drive dl,1=a:
						;   ds:si=ASCIIZ directory name
		pop	ds
		pop	di
		pop	si
		pop	dx
		pop	ax
		retn
sub_287		endp


;==========================================================================
;                              SUBROUTINE
;==========================================================================

sub_288		proc	near
		push	dx
		push	ax
		cmp	byte ptr [si],0
		je	loc_732			; Jump if equal
		cmp	byte ptr [si+1],3Ah	; ':'
		jne	loc_731			; Jump if not equal
		mov	al,[si]
		call	sub_261
		sub	al,41h			; 'A'
		mov	dl,al
		mov	ah,0Eh
		int	21h			; DOS Services  ah=function 0Eh
						;  set default drive dl  (0=a:)
		mov	ah,19h
		int	21h			; DOS Services  ah=function 19h
						;  get default drive al  (0=a:)
		cmp	al,dl
		stc				; Set carry flag
		jnz	loc_732			; Jump if not zero
		cmp	byte ptr [si+2],0
		je	loc_732			; Jump if equal
loc_731:
		cmp	byte ptr [si],0
		je	loc_732			; Jump if equal
		mov	dx,si
		mov	ah,3Bh
		int	21h			; DOS Services  ah=function 3Bh
						;  set current dir, path @ ds:dx
loc_732:
		pop	ax
		pop	dx
		retn
sub_288		endp

data_45		db	8, ' WORKING ! ', 0
data_46		db	1
		db	 20h, 42h, 79h, 74h, 65h, 73h
		db	 00h
data_47		db	' free of ', 0
data_48		db	0
data_49		db	2
		db	0
data_50		db	1
data_51		db	' file(s)', 0
data_52		db	20h
		db	0
data_53		db	20h
		db	2, 0
data_54		db	20h
		db	 69h, 6Eh, 20h, 02h, 00h, 20h
data_55		db	'select files: ', 0
		db	' unselect files: ', 0
		db	' Rename/Move ', 0
		db	' Rename ', 0
		db	' Copy ', 0
		db	' to: ', 0
		db	'Copying', 0
		db	'M'
		db	 6Fh, 76h, 69h, 6Eh, 67h, 00h
		db	'Renaming'
		db	0
data_57		db	7
		db	' to ', 0Ah, 0
data_59		db	' selected', 0
data_60		db	' New directory: ', 0
data_61		db	7
		db	'Create directory ', 0Ah
		db	0
data_62		db	8, ' WARNING '
		db	 07h, 1Fh, 00h
data_63		db	'Delete ', 0
data_64		db	20h
		db	 3Fh, 00h
data_65		db	'directory', 0
		db	 44h, 65h, 6Ch, 65h, 74h, 65h
		db	 00h
data_66		db	1Fh			; Data table (indexed access)
		db	'Would you like to quit the ', 0Ah
		db	'Mikro Manazer'
		db	 07h, 20h, 3Fh, 00h
data_68		db	59h
		db	 65h, 73h, 00h, 4Eh, 6Fh, 00h
		db	 00h
data_69		db	' Repeat command: ', 0
data_71		db	' Choose drive for ', 0Ah, 0
		db	 6Ch, 65h, 66h, 74h, 00h
data_72		db	72h
		db	 69h, 67h, 68h, 74h, 00h
data_73		db	7
		db	' Window: '
		db	0
data_74		db	8, ' ERROR !'
		db	 07h, 1Fh, 00h
data_75		db	4Fh
		db	 4Bh, 00h, 00h
		db	'Write protected !', 0
		db	'Drive not ready !', 0
		db	'File error !', 0
		db	'Sector not found !', 0
data_78		db	'Unknown error ...', 9
		db	 1Fh, 43h, 6Fh, 64h, 65h, 3Dh
data_79		db	0
		db	 54h, 79h, 70h, 3Dh, 00h, 52h
		db	 65h, 70h, 65h, 61h, 74h, 00h
		db	 43h, 61h, 6Eh, 63h, 65h, 6Ch
		db	 00h, 49h, 67h, 6Eh, 6Fh, 72h
		db	 65h, 00h, 00h
data_80		db	7
		db	 46h, 69h, 6Ch, 65h, 20h, 0Ah
		db	 00h
data_81		db	7
		db	'Directory ', 0Ah
		db	0
data_82		db	7
		db	' not deleted'
		db	0, 7
		db	'Directory is not empty !'
		db	 00h, 07h, 20h, 21h, 00h
data_83		db	2Ch
		db	1Fh
		db	'Write-protection set !'
		db	 1Fh, 1Fh
		db	'Continue erasing procedure ?', 0
		db	'Target directory not available !'
		db	0
data_85		db	'Cannot ', 0
		db	 63h, 6Fh, 70h, 79h, 00h
data_86		db	72h
		db	 65h, 6Dh, 6Fh, 76h, 65h, 00h
data_87		db	' on itself !', 0
data_88		db	7
		db	' exist !'
		db	1Fh
		db	'Continue write process ?', 0
data_90		db	'On drive ', 0Ah, 0
data_91		db	7
		db	' is not enough space !', 0
		db	'Operation not exe'
		db	'cuted !', 0
		db	'D'
		db	'rive is full - file deleted !'
		db	 00h, 1Fh
data_94		db	'File changed. Saving changes ?', 0
		db	'Cannot open file!', 0
		db	'Save', 0
		db	'Do not save', 0
		db	'Back'
		db	0, 0
data_96		db	'Co'
		db	 6Eh, 74h, 69h, 6Eh, 75h, 65h
		db	 00h
		db	'Overwrite all'
		db	 00h, 53h, 6Bh, 69h, 70h, 00h
		db	 43h, 61h, 6Eh, 63h, 65h, 6Ch
		db	 00h, 00h
data_97		db	44h
		db	 65h, 6Ch, 65h, 74h, 65h, 00h
		db	'Delete all'
		db	 00h, 53h, 6Bh, 69h, 70h, 00h
		db	 43h, 61h, 6Eh, 63h, 65h, 6Ch
		db	 00h, 00h, 07h
		db	'Invalid drive ID !', 0
		db	'<SUB--DIR>', 0
data_99		db	'< UP-DIR >', 0
		db	 09h, 31h, 03h
		db	'Left ', 9, ' 2'
		db	3
		db	'Right ', 9, ' 3'
		db	3
		db	'Show ', 9, ' 4'
		db	3
		db	'Edit ', 9, ' 5'
		db	3
		db	'Copy ', 9, ' 6'
		db	3
		db	'Rename ', 9, ' 7'
		db	3
		db	'Directory ', 9, ' 8'
		db	3
		db	'Delete', 9, ' 9'
		db	3
		db	'History', 9, ' 10'
		db	 03h, 51h, 75h
		db	'it', 0
data_101	db	'Not enough memory !', 0Dh, 0Ah, '$'
data_102	db	2Eh
		db	 2Eh, 00h, 5Ch, 00h
data_103	db	2Ah
		db	 2Eh, 2Ah, 00h, 00h
		db	'EXECOMBAT'
data_104	db	7
		db	 0Fh, 70h, 70h, 07h, 0Fh, 70h
		db	 0Fh, 07h, 70h, 70h, 70h, 0Fh
		db	 0Fh, 0Fh, 07h, 0Fh, 70h, 07h
		db	 1Bh, 1Eh, 30h, 3Eh, 6Fh, 6Ch
		db	 70h, 4Fh, 07h, 74h, 60h, 6Eh
		db	 4Fh, 34h, 1Dh, 1Bh, 1Fh
		db	 4Fh, 30h
data_105	dw	10Ch
data_107	db	1
		db	1
data_108	db	10h
data_109	dw	28h
data_110	db	0
		db	4
data_111	db	'Mikro Manazer V 1.0; (c) Miroslav Nemecek', 0Dh, 0Ah, '$'
data_113	db	'COMMAND.COM not started !', 0Dh, 0Ah
		db	'<Enter>=Retry, <Esc>=Abort', 0Dh
		db	0Ah, '$'

seg_a		ends



		end	start
