PURGE/ ;		* * * * * * * * * * * * *
 ;		*  PROGRAM BY KIM WATT  *
 ;		* BREEZE COMPUTING INC. *
 ;		*     P.O. BOX  1013    *
 ;		* BERKLEY, MICH.  48072 *
 ;		*    (313)  288-9422    *
 ;		* * * * * * * * * * * * *
 ;
 ;
 	ORG	7000H
 ENTRY	DI
 	LD	SP,6F00H
 	LD	A,(HL)
 	CP	0DH
 	JR	Z,BACKTO
 	CP	':'
 	JR	NZ,BACKTO
 	INC	HL
 	LD	A,(HL)
 	JP	BACKFR
 BACKTO	CALL	HDING
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'by '
 KIM	DEFM	'Kim Watt'
 	DEFB	0DH
 BREEZE	DEFM	'Breeze Computing Inc.'
 	DEFB	0DH
 	DEFM	'Version 2.1'
 	DEFW	0D0DH
 	DEFM	'Which drive contains TARGET DISKETTE ? '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 BACKFR	SUB	30H
 	JP	C,BACKTO
 	CP	4
 	JP	NC,BACKTO
 	LD	C,1
 ENTTST	OR	A
 	JR	Z,ENTFND
 	SLA	C
 	DEC	A
 	JR	ENTTST
 ENTFND	LD	A,C
 	LD	(DRIVE),A
 	CALL	SELCT
 	LD	BC,0
 	CALL	60H
 	LD	A,(37ECH)
 	BIT	7,A
 	JP	NZ,BACKTO
 	LD	A,0BH
 	LD	(37ECH),A
 	PUSH	BC
 	POP	BC
 	PUSH	BC
 	POP	BC
 ENTHLD	CALL	SELCT
 	LD	A,(37ECH)
 	RRCA
 	JR	C,ENTHLD
 	CALL	HDING
 	CALL	STATCK
 	LD	A,0DH
 	CALL	33H
 	CALL	GETDIR
 	JP	OKOG
 GOAGN	DI
 	CALL	1C9H
 	CALL	DISPLY
 	DEFM	'- BREEZE PURGE UTILITY -'
 	DEFB	0DH
 	DEFB	0
 	CALL	DISPLY
 	DEFM	'<A>  SELECTIVE purge'
 	DEFB	0DH
 	DEFM	'<B>  Kill all VISIBLE files'
 	DEFB	0DH
 	DEFM	'<C>  Kill all INVISIBLE files'
 	DEFB	0DH
 	DEFM	'<D>  Kill all INVISIBLE, NON-SYSTEM'
 	DEFM	' files'
 	DEFB	0DH
 	DEFM	'<E>  Kill all  /CMD  files'
 	DEFB	0DH
 	DEFM	'<F>  Kill all  /BAS  files'
 	DEFB	0DH
 	DEFM	'<G>  Kill all SYSTEM files'
 	DEFB	0DH
 	DEFM	'<H>  Kill ALL files EXCEPT BOOT and DIR'
 	DEFB	0DH
 	DEFM	'<I>  Zero out all UNUSED DIRECTORY'
 	DEFM	' ENTRIES'
 	DEFB	0DH
 	DEFM	'<J>  Zero out all UNUSED DISK SECTORS'
 	DEFB	0DH
 	DEFM	'<K>  WRITE UPDATED DIRECTORY back to'
 	DEFM	' disk'
 	DEFB	0DH
 	DEFM	'<L>  Display current DIRECTORY'
 	DEFB	0DH
 	DEFM	'<M>  RESTART program'
 	DEFB	0DH
 	DEFM	'<N>  EXIT program'
 	DEFB	0DH
 	DEFB	'?'
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	CP	'A'
 	JP	Z,TCELES
 	CP	'B'
 	JP	Z,VISAB
 	CP	'C'
 	JP	Z,INVIS
 	CP	'D'
 	JP	Z,INNSYS
 	CP	'E'
 	JP	Z,CMD
 	CP	'F'
 	JP	Z,BAS
 	CP	'G'
 	JP	Z,SYS
 	CP	'H'
 	JP	Z,ALL
 	CP	'I'
 	JP	Z,ZERO
 	CP	'J'
 	JP	Z,ERASE
 	CP	'K'
 	JP	Z,WRITE
 	CP	'L'
 	JP	Z,MAYBE
 	CP	'M'
 	JP	Z,BACKTO
 	CP	'N'
 	JP	Z,TERMIN
 	JP	GOAGN
 DISPLY	POP	DE
 DISLP1	LD	HL,(4020H)
 	LD	A,(DE)
 	INC	DE
 	OR	A
 	JR	Z,DISDN
 	CP	20H
 	JR	C,DISCTL
 	LD	(HL),A
 	CP	(HL)
 	JR	Z,DISOK1
 	SUB	20H
 	LD	(HL),A
 DISOK1	INC	HL
 	LD	(4020H),HL
 	JR	DISLP1
 DISCTL	PUSH	DE
 	PUSH	IY
 	CALL	33H
 	POP	IY
 	POP	DE
 	JR	DISLP1
 DISDN	PUSH	DE
 	RET
 STRING	DEFS	100H
 LENGTH	DEFB	0
 REQLEN	DEFB	0
 CHAR	DEFB	0
 NEWST	XOR	A
 	LD	(LENGTH),A
 	LD	HL,(4020H)
 	JR	LOLU
 GETSTR	LD	HL,(4020H)
 	LD	A,B
 	LD	(REQLEN),A
 LOLU	LD	DE,STRING
 	LD	A,(REQLEN)
 	LD	B,A
 	INC	B
 	LD	A,20H
 LOOP15	LD	(HL),A
 	LD	(DE),A
 	INC	DE
 	INC	HL
 	DJNZ	LOOP15
 	XOR	A
 	LD	(LENGTH),A
 	LD	HL,STRING
 	LD	DE,(4020H)
 SCAN	LD	A,8FH
 	LD	(DE),A
 	LD	BC,500H
 LOOP1	DEC	BC
 	PUSH	BC
 	PUSH	DE
 	PUSH	IY
 	CALL	2BH
 	POP	IY
 	POP	DE
 	POP	BC
 	OR	A
 	JP	NZ,GOTONE
 	LD	A,B
 	OR	C
 	JR	NZ,LOOP1
 	LD	A,20H
 	LD	(DE),A
 	LD	BC,500H
 LOOP2	DEC	BC
 	PUSH	BC
 	PUSH	DE
 	PUSH	IY
 	CALL	2BH
 	POP	IY
 	POP	DE
 	POP	BC
 	OR	A
 	JP	NZ,GOTONE
 	LD	A,B
 	OR	C
 	JR	NZ,LOOP2
 	JR	SCAN
 GOTONE	LD	(CHAR),A
 	CP	0DH
 	JP	Z,DONE
 	CP	8
 	JR	Z,BCKSPA
 	CP	18H
 	JR	Z,NEWST
 	CP	20H
 	JP	C,SCAN
 	LD	A,(REQLEN)
 	LD	B,A
 	LD	A,(LENGTH)
 	CP	B
 	JR	NC,SCAN
 	LD	A,(CHAR)
 	LD	(DE),A
 	LD	(HL),A
 	INC	DE
 	INC	HL
 	LD	A,(LENGTH)
 	INC	A
 	LD	(LENGTH),A
 	JR	SCAN
 BCKSPA	LD	A,(LENGTH)
 	OR	A
 	JR	Z,SCAN
 	DEC	A
 	LD	(LENGTH),A
 	LD	A,20H
 	LD	(DE),A
 	LD	(HL),A
 	DEC	HL
 	DEC	DE
 	JR	SCAN
 DONE	LD	A,20H
 	LD	(DE),A
 	LD	(HL),0DH
 	LD	A,(LENGTH)
 	LD	B,A
 	OR	A
 	LD	A,(STRING)
 	EX	DE,HL
 	LD	HL,STRING
 	RET
 GETDIR	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Loading BOOT to locate Directory'
 	DEFB	0
 	LD	BC,0A000H
 	LD	DE,0
 	LD	HL,1
 	CALL	READ
 	JP	NZ,ERROR
 	LD	A,(0A000H)
 	LD	D,A
 	LD	A,(0A001H)
 	LD	E,A
 	LD	A,(0A002H)
 	LD	C,A
 	LD	A,D
 	OR	A
 	JP	NZ,NOBOOT
 	LD	A,E
 	CP	0FEH
 	JP	NZ,NOBOOT
 	LD	A,C
 	CP	61H
 	JP	NC,NOBOOT
 	PUSH	BC
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Directory is on Track '
 	DEFB	0
 	LD	A,C
 	CALL	HEXCV
 	PUSH	HL
 	LD	A,H
 	CALL	33H
 	POP	HL
 	LD	A,L
 	CALL	33H
 	LD	A,'H'
 	CALL	33H
 	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Loading Directory'
 	DEFB	0
 	POP	BC
 	LD	D,C
 	LD	E,0
 	LD	(DIRTRK),DE
 	LD	BC,0B000H
 	LD	HL,0AH
 	CALL	READ
 	RET
 DIRTRK	DEFW	00
 READ	PUSH	BC
 	PUSH	HL
 AGAIN	CALL	READA
 	JP	NZ,ERROR
 	POP	HL
 	DEC	L
 	JR	Z,DONERD
 	PUSH	HL
 	INC	E
 	LD	A,E
 	SUB	0AH
 	JP	NZ,AGAIN
 	LD	E,A
 	INC	D
 	JP	AGAIN
 DONERD	POP	BC
 	RET
 READA	PUSH	BC
 	CALL	R2
 	POP	HL
 	RET	Z
 	LD	B,H
 	LD	C,L
 R2	LD	(37EEH),DE
 	LD	HL,37ECH
 	LD	(HL),1BH
 	PUSH	AF
 	POP	AF
 	PUSH	AF
 	POP	AF
 R1	LD	A,(HL)
 	RRCA
 	JR	C,R1
 	LD	(HL),88H
 	PUSH	DE
 	LD	DE,37EFH
 	PUSH	BC
 	POP	BC
 	JR	R5
 R3	RRCA
 	JR	NC,R6
 R4	LD	A,(HL)
 	BIT	1,A
 	JR	Z,R3
 	LD	A,(DE)
 	LD	(BC),A
 	INC	BC
 R5	JR	R4
 R6	LD	A,(HL)
 	AND	5CH
 	POP	DE
 	RET	Z
 	LD	(HL),0D0H
 	RET
 ERROR	LD	C,A
 	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'An ERROR was detected !'
 	DEFB	0DH
 	DEFM	'Error Code is '
 	DEFB	0
 	LD	A,C
 	CALL	HEXCV
 	PUSH	HL
 	LD	A,H
 	CALL	33H
 	POP	HL
 	CALL	33H
 	LD	A,'H'
 	CALL	33H
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'<ENTER> to Restart Program ? '
 	DEFB	0
 TRYAGN	LD	B,1
 	CALL	GETSTR
 	JP	BACKTO
 NOBOOT	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'BOOT on diskette is NON STANDARD !'
 	DEFB	0DH
 	DEFM	'<ENTER> to Restart Program ? '
 	DEFB	0
 	JR	TRYAGN
 HEXCV	LD	C,A
 	SRL	A
 	SRL	A
 	SRL	A
 	SRL	A
 	CALL	TESTA
 	LD	H,A
 	LD	A,C
 	AND	0FH
 	CALL	TESTA
 	LD	L,A
 	RET
 TESTA	ADD	A,30H
 	CP	3AH
 	JP	M,TESTB
 	ADD	A,7
 TESTB	RET
 WRITE	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Writing Directory Track'
 	DEFB	0
 	CALL	SELCT
 	LD	BC,0
 	CALL	60H
 	LD	A,(37ECH)
 	BIT	6,A
 	JP	NZ,WPTC
 	LD	BC,0B000H
 	LD	HL,(DIRTRK)
 	EX	DE,HL
 	LD	E,0
 	LD	HL,0AH
 	CALL	PUTIT
 	JP	OKGO
 PUTIT	PUSH	BC
 	PUSH	HL
 MORE	CALL	WRITEA
 	JP	NZ,ERROR
 	POP	HL
 	DEC	L
 	JP	Z,DONEWR
 	PUSH	HL
 	INC	E
 	LD	A,E
 	SUB	0AH
 	JP	NZ,MORE
 	LD	E,A
 	INC	D
 	JP	MORE
 DONEWR	POP	BC
 	RET
 WRITEA	PUSH	BC
 	CALL	WR1
 	POP	HL
 	RET	Z
 	LD	B,H
 	LD	C,L
 WR1	LD	(37EEH),DE
 	CALL	SELCT
 	LD	HL,37ECH
 	PUSH	AF
 	POP	AF
 	PUSH	AF
 	POP	AF
 	LD	A,(37ECH)
 	BIT	6,A
 	JP	NZ,WPTC
 	LD	(HL),1BH
 	PUSH	AF
 	POP	AF
 	PUSH	AF
 	POP	AF
 BYTEST	LD	A,(HL)
 	RRCA
 	JP	C,BYTEST
 FIXWRT	LD	(HL),0A9H
 	PUSH	DE
 	LD	DE,37EFH
 	PUSH	BC
 	POP	BC
 	PUSH	BC
 	POP	BC
 	JP	TESTBY
 TESTZ	RRCA
 	JP	NC,TESTX
 TESTBY	LD	A,(HL)
 	BIT	1,A
 	JP	Z,TESTZ
 	LD	A,(BC)
 	LD	(DE),A
 	INC	BC
 	JP	TESTBY
 TESTX	LD	A,(HL)
 	AND	7CH
 	POP	DE
 	RET	Z
 	LD	(HL),0D0H
 	RET
 WPTC	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Diskette is WRITE-PROTECTED !'
 	DEFB	0DH
 	DEFM	'<ENTER> to continue ! '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	JP	GOAGN
 ALL	LD	HL,0B220H
 	LD	B,7
 	LD	DE,20H
 ALL1	LD	(HL),0
 	ADD	HL,DE
 	DJNZ	ALL1
 	LD	HL,0B320H
 	LD	B,7
 ALL2	LD	(HL),0
 	ADD	HL,DE
 	DJNZ	ALL2
 	LD	HL,0B400H
 	LD	B,30H
 ALL3	LD	(HL),0
 	ADD	HL,DE
 	DJNZ	ALL3
 	LD	HL,0B060H
 	LD	DE,0B000H
 	LD	BC,60H
 	LDIR
 	LD	HL,0B000H
 	LD	(HL),0FDH
 	LD	HL,(DIRTRK)
 	EX	DE,HL
 	LD	E,D
 	LD	D,0
 	LD	HL,0B000H
 	ADD	HL,DE
 	LD	(HL),0FFH
 	LD	HL,0B102H
 	LD	DE,0B103H
 	LD	BC,0FDH
 	LD	(HL),0
 	LDIR
 OKGO	CALL	HDING
 OKOG	CALL	DISPLY
 	DEFW	0D0DH
 	DEFB	0DH
 	DEFM	'Routine Completed !'
 	DEFW	0D0DH
 	DEFM	'<ENTER> for Directory ? '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 START	CALL	DIR
 	LD	HL,3FFEH
 	LD	B,1
 	LD	(4020H),HL
 	CALL	GETSTR
 	JP	GOAGN
 HDING	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'-'
 BREEZ2	DEFM	'BREEZE SPECIAL PURGE UTILITY-'
 	DEFB	0DH
 	DEFB	0
 	RET
 DIR	CALL	1C9H
 	LD	IX,0B200H
 	LD	B,40H
 	LD	DE,20H
 DIRLP	LD	A,(IX)
 	OR	A
 	JR	Z,NONACT
 	LD	C,A
 	BIT	7,A
 	JP	NZ,NONACT
 	PUSH	IX
 	POP	HL
 	LD	A,5
 	ADD	A,L
 	LD	L,A
 	CALL	SHOW
 NONACT	ADD	IX,DE
 	DJNZ	DIRLP
 	RET
 JUST1	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'- Breeze Password Decoder -'
 	DEFW	0D0DH
 	DEFB	0
 SSTT	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'<S>ingle password or <A>ll passwords ? '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	CP	'A'
 	JP	Z,PASALL
 	CP	'S'
 	JR	NZ,SSTT
 NOGOM	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Enter Filename: '
 	DEFB	0
 	LD	B,12
 	CALL	GETSTR
 	JP	Z,BYEBYE
 	LD	C,64
 	LD	IX,0B200H
 	LD	DE,20H
 JUSLPI	LD	HL,STRING
 	PUSH	BC
 	PUSH	IX
 JUSLP1	LD	A,(HL)
 	CP	'/'
 	JR	Z,SSSPAS
 	LD	A,(IX+5)
 	CP	20H
 	JR	Z,JUSPAS
 	CP	(HL)
 	JR	NZ,JXSCON
 	INC	HL
 	INC	IX
 	DJNZ	JUSLP1
 	POP	IX
 	POP	BC
 	JP	JUSFND
 JUSPAS	INC	IX
 	JR	JUSLP1
 SSSPAS	INC	HL
 	DEC	B
 	JP	Z,NOGOM
 	JR	JUSLP1
 JXSCON	POP	IX
 	ADD	IX,DE
 	POP	BC
 	DEC	C
 	JP	NZ,JUSLPI
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Filename NOT FOUND ! '
 	DEFB	0
 	JP	NOGOM
 SHOW	PUSH	BC
 	PUSH	DE
 	LD	DE,(4020H)
 	PUSH	DE
 	LD	B,8
 LO5	LD	A,(HL)
 	CP	20H
 	JR	Z,NOSHOW
 	CALL	33H
 NOSHOW	INC	HL
 	DJNZ	LO5
 	LD	A,(HL)
 	CP	20H
 	JR	Z,FIXCUR
 	LD	A,'/'
 	CALL	33H
 	LD	B,3
 LO6	LD	A,(HL)
 	CP	20H
 	JR	Z,SHOWNO
 	CALL	33H
 SHOWNO	INC	HL
 	DJNZ	LO6
 FIXCUR	LD	A,20H
 	PUSH	DE
 	PUSH	IY
 	CALL	33H
 	LD	A,'S'
 	BIT	6,(IX)
 	CALL	NZ,33H
 	LD	A,'I'
 	BIT	3,(IX)
 	CALL	NZ,33H
 	LD	A,(IX)
 	AND	7
 	ADD	A,30H
 	CALL	33H
 	POP	IY
 	POP	DE
 	POP	DE
 	LD	HL,10H
 	ADD	HL,DE
 	LD	(4020H),HL
 	POP	DE
 	POP	BC
 	RET
 ZERO	LD	IX,0B200H
 	LD	B,40H
 	LD	DE,20H
 ZEROLP	LD	A,(IX)
 	OR	A
 	JR	NZ,NOZERO
 	PUSH	DE
 	PUSH	IX
 	POP	HL
 	LD	E,L
 	LD	D,H
 	INC	DE
 	PUSH	BC
 	LD	BC,1FH
 	LD	(HL),0
 	LDIR
 	POP	BC
 	POP	DE
 NOZERO	ADD	IX,DE
 	DJNZ	ZEROLP
 	JP	OKGO
 TCELES	LD	A,(3801H)
 	CP	2
 	JR	NZ,SELECT
 	LD	A,(3804H)
 	CP	8
 	JR	NZ,SELECT
 	JP	BONUS
 SELECT	LD	IX,0B200H
 	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'<K>ill this one - <S>ave this one - '
 	DEFM	'<J>ump over the rest'
 	DEFB	0DH
 	DEFB	0
 	LD	DE,20H
 	LD	B,40H
 SELLP	PUSH	BC
 	PUSH	IX
 	PUSH	DE
 	LD	A,(IX)
 	OR	A
 	JR	Z,NOSEL
 	PUSH	IX
 	POP	HL
 	LD	A,5
 	ADD	A,L
 	LD	L,A
 	CALL	SHOW
 BADZ	PUSH	DE
 	LD	B,1
 	CALL	GETSTR
 	POP	DE
 	CP	0DH
 	JR	Z,NOSEL
 	CP	'K'
 	JP	Z,DOKILL
 	CP	'S'
 	JR	Z,NOSEL
 	CP	'J'
 	JR	NZ,BADZ
 	POP	BC
 	JP	OKGO
 NOSEL	POP	DE
 	POP	IX
 	ADD	IX,DE
 	POP	BC
 	DJNZ	SELLP
 	JP	OKGO
 KILLIT	LD	A,(IX)
 	LD	C,A
 	OR	A
 	RET	Z
 	XOR	A
 	LD	(IX),A
 	PUSH	IX
 	POP	HL
 	PUSH	IX
 	POP	IY
 KILLLP	LD	A,(IY+16H)
 	CP	0FFH
 	RET	Z
 	CP	0FEH
 	JP	Z,EXTEND
 	LD	D,A
 	LD	A,(IY+17H)
 	LD	C,A
 	LD	B,0
 	BIT	5,A
 	JR	Z,PASTAA
 	LD	B,5
 PASTAA	AND	1FH
 	LD	E,B
 	INC	A
 	LD	B,A
 	CALL	RELEAS
 	CALL	ZERHIT
 	INC	IY
 	INC	IY
 	JP	KILLLP
 RELEAS	PUSH	DE
 	PUSH	HL
 	LD	L,D
 	LD	H,0
 	LD	C,E
 	LD	DE,0B000H
 	ADD	HL,DE
 	LD	A,C
 	OR	A
 	JR	NZ,SECOND
 RELLP	LD	A,(HL)
 	RES	0,A
 	LD	(HL),A
 	DJNZ	SECOND
 	JP	RELDON
 SECOND	LD	A,(HL)
 	RES	1,A
 	LD	(HL),A
 	INC	HL
 	DJNZ	RELLP
 RELDON	POP	HL
 	POP	DE
 	RET
 ZERHIT	PUSH	HL
 	LD	DE,0B200H
 	OR	A
 	SBC	HL,DE
 	EX	DE,HL
 	LD	A,E
 	AND	0E0H
 	LD	E,A
 	LD	A,D
 	AND	7
 	OR	E
 	LD	E,A
 	LD	D,0
 	LD	HL,0B100H
 	ADD	HL,DE
 	LD	(HL),0
 	POP	HL
 	RET
 EXTEND	LD	A,(IY+17H)
 	LD	C,A
 	AND	7
 	LD	D,A
 	LD	A,C
 	AND	0E0H
 	LD	E,A
 	LD	HL,0B200H
 	ADD	HL,DE
 	PUSH	HL
 	POP	IY
 	LD	A,0
 	LD	(IY),A
 	JP	KILLLP
 DOKILL	CALL	KILLIT
 	PUSH	HL
 	LD	HL,(4020H)
 	DEC	HL
 	DEC	HL
 	DEC	HL
 	DEC	HL
 	DEC	HL
 	DEC	HL
 	LD	(HL),5DH
 	INC	HL
 	LD	(HL),'D'
 	INC	HL
 	LD	(HL),'E'
 	INC	HL
 	LD	(HL),'A'
 	INC	HL
 	LD	(HL),'D'
 	POP	HL
 	JP	NOSEL
 VISAB	LD	IX,0B200H
 	LD	B,40H
 	LD	DE,20H
 VISLP	LD	A,(IX)
 	BIT	3,A
 	JP	NZ,NODO1
 	PUSH	IX
 	EXX
 	CALL	KILLIT
 	EXX
 	POP	IX
 NODO1	ADD	IX,DE
 	DJNZ	VISLP
 	JP	OKGO
 INVIS	LD	IX,0B200H
 	LD	B,40H
 	LD	DE,20H
 INVLP	LD	A,(IX)
 	BIT	3,A
 	JP	Z,NODO2
 	PUSH	IX
 	EXX
 	CALL	KILLIT
 	EXX
 	POP	IX
 NODO2	ADD	IX,DE
 	DJNZ	INVLP
 	JP	OKGO
 INNSYS	LD	IX,0B200H
 	LD	B,40H
 	LD	DE,20H
 INNLP	LD	A,(IX)
 	BIT	3,A
 	JP	Z,NODO3
 	BIT	6,A
 	JP	NZ,NODO3
 	PUSH	IX
 	EXX
 	CALL	KILLIT
 	EXX
 	POP	IX
 NODO3	ADD	IX,DE
 	DJNZ	INNLP
 	JP	OKGO
 SPECIL	LD	IX,0B200H
 	LD	DE,20H
 	LD	B,40H
 	LD	IY,TYPE
 CMDLP	LD	A,(IX+0DH)
 	LD	C,(IY)
 	CP	C
 	JP	NZ,NODO6
 	LD	A,(IX+0EH)
 	LD	C,(IY+1)
 	CP	C
 	JP	NZ,NODO6
 	LD	A,(IX+0FH)
 	LD	C,(IY+2)
 	CP	C
 	JP	NZ,NODO6
 	PUSH	IY
 	PUSH	IX
 	EXX
 	CALL	KILLIT
 	EXX
 	POP	IX
 	POP	IY
 NODO6	ADD	IX,DE
 	DJNZ	CMDLP
 	JP	OKGO
 TYPE	DEFM	'   '
 CMD	LD	HL,TYPE
 	LD	(HL),'C'
 	INC	HL
 	LD	(HL),'M'
 	INC	HL
 	LD	(HL),'D'
 	JP	SPECIL
 BAS	LD	HL,TYPE
 	LD	(HL),'B'
 	INC	HL
 	LD	(HL),'A'
 	INC	HL
 	LD	(HL),'S'
 	JP	SPECIL
 SYS	LD	IX,0B220H
 	LD	DE,20H
 	LD	B,7
 	CALL	SYSLP
 	LD	IX,0B320H
 	LD	DE,20H
 	LD	B,7
 	CALL	SYSLP
 	LD	IX,0B400H
 	LD	DE,20H
 	LD	B,30H
 	CALL	SYSLP
 	JP	OKGO
 SYSLP	LD	A,(IX)
 	BIT	6,A
 	JR	Z,NODOX
 	PUSH	IX
 	EXX
 	CALL	KILLIT
 	EXX
 	POP	IX
 NODOX	ADD	IX,DE
 	DJNZ	SYSLP
 	RET
 ERASE	LD	HL,0D000H
 	LD	DE,0D001H
 	LD	BC,100H
 	LD	(HL),0
 	LDIR
 	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'-Erasing Track/Sectors-'
 	DEFB	0DH
 	DEFB	0
 	CALL	SELCT
 	LD	BC,0
 	CALL	60H
 	LD	A,(37ECH)
 	BIT	6,A
 	JP	NZ,WPTC
 	LD	A,0A8H
 	LD	(FIXWRT+1),A
 	LD	BC,4000H
 	PUSH	BC
 	LD	IX,0B000H
 	LD	DE,00H
 ERASLP	LD	A,(IX+60H)
 	INC	A
 	JP	Z,NOERAS
 	LD	A,(IX)
 	LD	E,0
 	BIT	0,A
 	JR	NZ,PASTIT
 	POP	BC
 	LD	D,C
 	PUSH	BC
 	CALL	PUT5
 PASTIT	LD	A,(IX)
 	LD	E,5
 	BIT	1,A
 	JR	NZ,NOERAS
 	POP	BC
 	LD	D,C
 	PUSH	BC
 	CALL	PUT5
 NOERAS	INC	IX
 	POP	BC
 	INC	C
 	DEC	B
 	PUSH	BC
 	JP	NZ,ERASLP
 	POP	BC
 	CALL	DISPLY
 	DEFM	'Done !  '
 	DEFB	0
 	LD	A,0A9H
 	LD	(FIXWRT+1),A
 	LD	B,1
 	CALL	GETSTR
 	LD	A,(3840H)
 	CP	3
 	JP	Z,OKGO
 	JP	WRITE
 PUT5	CALL	WHICH
 	LD	HL,5
 LOOPVV	LD	BC,0D000H
 	PUSH	HL
 	CALL	WRITEA
 	JP	NZ,ERROR
 	POP	HL
 	INC	E
 	DEC	L
 	JR	NZ,LOOPVV
 	RET
 BONUS	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'-SPECIAL ROUTINES-'
 	DEFB	0DH
 	DEFB	0DH
 	DEFM	'1. Make all files VISIBLE'
 	DEFB	0DH
 	DEFM	'2. Make all files INVISIBLE'
 	DEFB	0DH
 	DEFM	'3. REMOVE PASSWORDS from all files'
 	DEFB	0DH
 	DEFM	'4. Change disk NAME, DATE, and MASTER PASSWORD'
 	DEFB	0DH
 	DEFM	'5. Change AUTO command'
 	DEFB	0DH
 	DEFM	'6. RANDOM PASSWORDS to all files'
 	DEFB	0DH
 	DEFM	'7. COMPUTE PASSWORDS for all files'
 	DEFB	0DH
 	DEFM	'8. Compute Passwords for SINGLE file'
 	DEFB	0DH
 	DEFM	'9. Change Passwords on SINGLE file'
 	DEFB	0DH
 	DEFM	'0. Return to MASTER MENU'
 	DEFB	0DH
 	DEFB	0
 NOGOOD	LD	B,1
 	CALL	GETSTR
 	CP	31H
 	JP	Z,ALLVIS
 	CP	32H
 	JP	Z,NOVIS
 	CP	33H
 	JP	Z,NOPASS
 	CP	34H
 	JP	Z,NEWNAM
 	CP	35H
 	JP	Z,AUTO
 	CP	37H
 	JP	Z,DECODE
 	CP	30H
 	JP	Z,OKGO
 	CP	38H
 	JP	Z,JUST1
 	CP	36H
 	JP	Z,RANDOM
 	CP	39H
 	JP	Z,CHGPAS
 	JP	NOGOOD
 ALLVIS	LD	HL,0B200H
 	LD	DE,20H
 	LD	B,40H
 ALVLP	LD	A,(HL)
 	RES	3,A
 	LD	(HL),A
 	ADD	HL,DE
 	DJNZ	ALVLP
 	JP	BYEBYE
 NOVIS	LD	HL,0B200H
 	LD	DE,20H
 	LD	B,40H
 NOLP	LD	A,(HL)
 	OR	A
 	JR	Z,POOP
 	SET	3,A
 	LD	(HL),A
 POOP	ADD	HL,DE
 	DJNZ	NOLP
 	JP	BYEBYE
 NOPASS	CALL	PASSNO
 	JP	BYEBYE
 PASSNO	LD	IY,0B200H
 	LD	DE,20H
 	LD	B,40H
 NOPLP	LD	A,(IY)
 	OR	A
 	JR	Z,NOACT
 MASK1	AND	0F8H
 	LD	(IY),A
 MASK2	LD	A,96H
 	LD	(IY+10H),A
 	LD	(IY+12H),A
 MASK3	LD	A,42H
 	LD	(IY+11H),A
 	LD	(IY+13H),A
 NOACT	ADD	IY,DE
 	DJNZ	NOPLP
 	RET
 NEWNAM	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter NAME: '
 	DEFB	0
 	LD	B,8
 	CALL	GETSTR
 	JP	Z,NONWNM
 	LD	C,B
 	LD	B,0
 	ADD	HL,BC
 	LD	(HL),20H
 	LD	HL,STRING
 	LD	DE,0B0D0H
 	LD	BC,8
 	LDIR
 NONWNM	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter DATE: '
 	DEFB	0
 	LD	B,8
 	CALL	GETSTR
 	JP	Z,MGMG
 	LD	C,B
 	LD	B,0
 	ADD	HL,BC
 	LD	(HL),20H
 	LD	HL,STRING
 	LD	DE,0B0D8H
 	LD	BC,8
 	LDIR
 MGMG	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter MASTER PASSWORD: '
 	DEFB	0
 	CALL	MMGET
 	LD	(0B0CEH),HL
 	JP	BYEBYE
 AUTO	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter AUTO command: '
 	DEFB	0
 	LD	B,31
 	CALL	GETSTR
 	LD	HL,STRING
 	LD	DE,0B0E0H
 	LD	BC,32
 	LDIR
 	JP	BYEBYE
 BYEBYE	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Routine Completed.  Press <ENTER> ? '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	JP	BONUS
 WHICH	PUSH	BC
 	PUSH	DE
 	LD	A,D
 	CALL	HEXCV
 	PUSH	HL
 	LD	A,H
 	CALL	33H
 	POP	HL
 	LD	A,L
 	CALL	33H
 	LD	A,'/'
 	CALL	33H
 	POP	DE
 	PUSH	DE
 	LD	A,E
 	OR	A
 	JR	NZ,NOWO
 	LD	A,30H
 	CALL	33H
 	LD	A,'-'
 	CALL	33H
 	LD	A,34H
 	CALL	33H
 	JR	DONWH
 NOWO	LD	A,35H
 	CALL	33H
 	LD	A,'-'
 	CALL	33H
 	LD	A,39H
 	CALL	33H
 DONWH	LD	A,20H
 	CALL	33H
 	CALL	33H
 	POP	DE
 	POP	BC
 	RET
 NEWDOS	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'-THESE ROUTINES APPLY TO DIRECTORY SECTOR 0, BYTES C0-C3 ONLY-'
 	DEFB	0DH
 	DEFM	'<C>ontinue or <R>eturn to MENU ? '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	CP	'R'
 	JP	Z,OKGO
 	CP	'C'
 	JR	NZ,NEWDOS
 	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Answer <Y>es or <N>o to the '
 	DEFM	'following questions.'
 	DEFB	0DH
 	DEFM	'Do all diskettes have the same'
 	DEFM	' number of tracks ? '
 	DEFB	0
 	LD	E,3
 	PUSH	DE
 	LD	D,7
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Reduce disk I/O errors from clock'
 	DEFM	' interrupts ? '
 	DEFB	0
 	LD	D,6
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Normal debounce activated ? '
 	DEFB	0
 	LD	D,5
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Auto command may be overridden ? '
 	DEFB	0
 	LD	D,4
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'JKL option to be enabled ? '
 	DEFB	0
 	LD	D,3
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Normal CLEAR key option ? '
 	DEFB	0
 	LD	D,2
 	CALL	FIXBIT
 	POP	DE
 	LD	A,E
 	LD	(0B0C2H),A
 	LD	E,0FH
 	PUSH	DE
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Password checking to be done ? '
 	DEFB	0
 	LD	D,7
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Normal operation of BREAK key '
 	DEFM	'in BASIC ? '
 	DEFB	0
 	LD	D,6
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Basic direct statement may '
 	DEFM	'be input ? '
 	DEFB	0
 	LD	D,5
 	CALL	FIXBIT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Shift lower case input to upper case ? '
 	DEFB	0
 	LD	D,4
 	CALL	FIXBIT
 	POP	DE
 	LD	A,E
 	LD	(0B0C3H),A
 	LD	E,0
 	PUSH	DE
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Is this a SYSTEM diskette ? '
 	DEFB	0
 	LD	D,1
 	CALL	FIXBIT
 	POP	DE
 	LD	A,E
 	BIT	1,A
 	JR	Z,NOYYY
 	LD	A,0A5H
 	LD	(0B0C1H),A
 NOYYY	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter diskette track count (HEX) ? '
 	DEFB	0
 	LD	B,2
 	CALL	GETSTR
 	JR	Z,YYYYYY
 	CALL	VALUE
 	LD	A,C
 	CP	18
 	JR	C,NOYYY
 	CP	97
 	JR	NC,NOYYY
 	LD	(0B0C0H),A
 YYYYYY	JP	OKGO
 FIXBIT	LD	B,1
 	PUSH	DE
 	CALL	GETSTR
 	POP	DE
 	CP	'Y'
 	JR	Z,YYYES
 	CP	'N'
 	JR	NZ,FIXBIT
 	RET
 YYYES	LD	C,D
 	POP	HL
 	POP	DE
 	LD	A,C
 	AND	7
 	SLA	A
 	SLA	A
 	SLA	A
 	OR	0C7H
 	LD	(HOPE+1),A
 	LD	A,E
 HOPE	SET	0,A
 	LD	E,A
 	PUSH	DE
 	PUSH	HL
 	RET
 MAYBE	LD	A,(3810H)
 	CP	14
 	JP	NZ,START
 	JP	NEWDOS
 RANDOM	LD	HL,05F6H
 	LD	(MASK1),HL
 	LD	HL,5FEDH
 	LD	(MASK2),HL
 	LD	(MASK3),HL
 	CALL	PASSNO
 	LD	HL,0F8E6H
 	LD	(MASK1),HL
 	LD	HL,963EH
 	LD	(MASK2),HL
 	LD	H,42H
 	LD	(MASK3),HL
 	JP	BYEBYE
 TEMPST	DEFS	10H
 VALUE	LD	A,(HL)
 	INC	HL
 	CP	0DH
 	JP	Z,BADINP
 	SUB	30H
 	JP	C,BADINP
 	CP	0AH
 	JP	C,NOADJ
 	SUB	7
 NOADJ	CP	10H
 	JP	NC,BADINP
 	LD	C,A
 	SLA	A
 	SLA	A
 	SLA	A
 	SLA	A
 	LD	(TEMPST),A
 	LD	A,(HL)
 	INC	HL
 	CP	0DH
 	RET	Z
 	CP	2CH
 	RET	Z
 	CP	2DH
 	RET	Z
 	SUB	30H
 	JP	C,BADINP
 	CP	0AH
 	JP	C,NOADJ2
 	SUB	7
 NOADJ2	CP	10H
 	JP	NC,BADINP
 	LD	C,A
 	LD	A,(TEMPST)
 	ADD	A,C
 	LD	C,A
 	LD	A,(HL)
 	INC	HL
 	RET
 BADINP	LD	C,0
 	DEC	HL
 	RET
 TERMIN	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'PURGE utility TERMINATED !'
 	DEFB	0DH
 	DEFM	'Press <ENTER> when SYSTEM disk mounted ! '
 	DEFB	0
 	DI
 	LD	B,1
 	CALL	GETSTR
 	JP	0
 COMPUT	PUSH	BC
 	PUSH	DE
 	PUSH	HL
 	LD	A,L
 	CP	96H
 	JR	NZ,NONEPS
 	LD	A,H
 	CP	42H
 	JR	NZ,NONEPS
 	LD	HL,SPACEE
 	LD	DE,BUF1
 	LD	BC,8
 	LDIR
 	JP	COMFND
 NONEPS	LD	A,L
 	CP	0E0H
 	JR	NZ,NOPSSS
 	LD	A,H
 	CP	42H
 	JR	NZ,NOPSSS
 	LD	HL,SPPASS
 	LD	DE,BUF1
 	LD	BC,8
 	LDIR
 	JP	COMFND
 NOPSSS	LD	A,L
 	CP	0EBH
 	JR	NZ,NONEP1
 	LD	A,H
 	CP	29H
 	JR	NZ,NONEP1
 	LD	HL,ZN20
 	LD	DE,BUF1
 	LD	BC,8
 	LDIR
 	JP	COMFND
 NONEP1	LD	A,L
 	CP	21H
 	JR	NZ,NONEP2
 	LD	A,H
 	CP	0EH
 	JR	NZ,NONEP2
 	LD	HL,D2J
 	LD	DE,BUF1
 	LD	BC,8
 	LDIR
 	JP	COMFND
 NONEP2	LD	HL,SPACES
 	LD	DE,BUF1
 	LD	BC,8
 	LDIR
 	LD	HL,BUF1
 COMLP	CALL	CODE
 	POP	DE
 	PUSH	DE
 	OR	A
 	SBC	HL,DE
 	JR	Z,COMFND
 	LD	A,(3840H)
 	CP	4
 	JP	Z,CENDOM
 	LD	HL,BUF1
 	LD	A,(HL)
 	CP	'Z'
 	JR	NZ,AD11
 	LD	(HL),'A'
 	LD	B,7
 	JR	AD1X
 AD11	INC	A
 	LD	(HL),A
 	JP	COMLP
 AD1X	INC	HL
 	LD	A,(HL)
 	CP	20H
 	JR	NZ,ADD1
 	LD	(HL),30H
 	JP	COMLP
 ADD1	CP	'9'
 	JR	NZ,ADD2
 	LD	(HL),'A'
 	JP	COMLP
 ADD2	CP	'Z'
 	JR	NZ,ADD3
 	LD	(HL),'0'
 	DEC	B
 	JP	NZ,AD1X
 	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Password Compute Error ! '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	JP	GOAGN
 ADD3	INC	A
 	LD	(HL),A
 	JP	COMLP
 COMFND	CALL	DISPLY
 BUF1	DEFM	'        '
 	DEFB	0
 	DEFW	0
 CENDOM	POP	HL
 	POP	DE
 	POP	BC
 	RET
 CODE	LD	HL,BUF1
 	LD	C,8
 	LD	B,0
 CODLP	LD	A,(HL)
 	CP	20H
 	JR	Z,CODDO
 	INC	B
 	INC	HL
 	DEC	C
 	JR	NZ,CODLP
 CODDO	LD	A,B
 	OR	A
 	LD	HL,9642H
 	RET	Z
 	LD	HL,BUF1
 	EX	DE,HL
 	LD	A,B
 	ADD	A,E
 	LD	L,A
 	LD	A,D
 	ADC	A,0
 	LD	H,A
 	LD	A,8
 	SUB	B
 	LD	B,A
 CODLP1	LD	(HL),20H
 	INC	HL
 	DJNZ	CODLP1
 CODE1	LD	HL,0FFFFH
 	LD	B,8
 	LD	A,E
 	ADD	A,7
 	LD	E,A
 	JR	NC,CODLP2
 	INC	D
 CODLP2	LD	A,(DE)
 	PUSH	DE
 	LD	D,A
 	LD	E,H
 	LD	A,L
 	AND	7
 	RRCA
 	RRCA
 	RRCA
 	XOR	L
 	LD	L,A
 	LD	H,0
 	ADD	HL,HL
 	ADD	HL,HL
 	ADD	HL,HL
 	ADD	HL,HL
 	XOR	H
 	XOR	D
 	LD	D,A
 	LD	A,L
 	ADD	HL,HL
 	XOR	H
 	XOR	E
 	LD	E,A
 	EX	DE,HL
 	POP	DE
 	DEC	DE
 	DJNZ	CODLP2
 	RET
 STATCK	LD	BC,0
 	CALL	60H
 	CALL	SELCT
 	LD	A,(37ECH)
 	BIT	7,A
 	JR	Z,OKSO1
 	PUSH	AF
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Drive is NOT READY !'
 	DEFB	0
 	POP	AF
 OKSO1	BIT	2,A
 	JR	NZ,OKSO2
 	PUSH	AF
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Drive NOT IN SYSTEM !'
 	DEFB	0
 	POP	AF
 	LD	A,80H
 	JR	OKSO3
 OKSO2	BIT	6,A
 	JR	Z,OKSO3
 	PUSH	AF
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Diskette is WRITE-PROTECTED !'
 	DEFB	0
 	POP	AF
 OKSO3	AND	80H
 	RET	Z
 	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'PURGE cannot continue !'
 	DEFB	0DH
 	DEFM	'Press <ENTER> to restart ? '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	JP	BACKTO
 DECODE	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'- Computing Passwords -'
 	DEFW	0D0DH
 	DEFM	'Master Password: '
 	DEFB	0
 	LD	HL,(0B0CEH)
 	CALL	COMPUT
 	LD	A,0DH
 	CALL	33H
 	LD	A,0DH
 	CALL	33H
 	PUSH	BC
 	LD	BC,8000H
 	CALL	60H
 	POP	BC
 	LD	C,4
 	LD	IX,0B200H
 	LD	DE,20H
 CODEIN	LD	B,16
 CODELP	LD	A,(IX)
 	OR	A
 	JR	Z,CODENX
 	PUSH	DE
 	PUSH	IX
 	POP	HL
 	PUSH	HL
 	LD	A,5
 	ADD	A,L
 	LD	L,A
 	CALL	SHOW
 	LD	A,'U'
 	CALL	33H
 	LD	A,'='
 	CALL	33H
 	LD	L,(IX+10H)
 	LD	H,(IX+11H)
 	CALL	COMPUT
 	LD	A,20H
 	CALL	33H
 	LD	A,'/'
 	CALL	33H
 	LD	A,20H
 	CALL	33H
 	LD	A,'A'
 	CALL	33H
 	LD	A,'='
 	CALL	33H
 	LD	L,(IX+12H)
 	LD	H,(IX+13H)
 	CALL	COMPUT
 	CALL	DISPLY
 	DEFM	' <C>ontinue or <Q>uit ?'
 	DEFB	0
 	POP	IX
 	POP	DE
 CONTHL	LD	A,(3801H)
 	CP	8
 	JR	Z,CODXN
 	LD	A,(3804H)
 	CP	2
 	JP	Z,BYEBYE
 	JR	CONTHL
 CODXN	PUSH	DE
 	LD	A,0DH
 	CALL	33H
 	POP	DE
 CODENX	ADD	IX,DE
 	DEC	B
 	JP	NZ,CODELP
 	DEC	C
 	JP	NZ,CODEIN
 	JP	BYEBYE
 SPACES	DEFM	'A       '
 SPPASS	DEFM	'PASSWORD'
 SPACEE	DEFM	'* NONE *'
 ZN20	DEFM	'F3GUM   '
 D2J	DEFM	'NV36    '
 SELCT	DEFB	3EH
 DRIVE	DEFB	1
 	LD	(37E1H),A
 	RET
 FLAG1	DEFB	0
 JUSFND	CALL	DISPLY
 	DEFB	0DH
 	DEFB	0
 	PUSH	IX
 	POP	HL
 	LD	A,L
 	ADD	A,5
 	LD	L,A
 	CALL	SHOW
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Computing Password !'
 	DEFB	0DH
 	DEFM	'Update Password = '
 	DEFB	0
 	LD	L,(IX+10H)
 	LD	H,(IX+11H)
 	LD	BC,8000H
 	CALL	60H
 	CALL	COMPUT
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Access Password = '
 	DEFB	0
 	LD	L,(IX+12H)
 	LD	H,(IX+13H)
 	CALL	COMPUT
 	JP	NOGOM
 PASALL	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Enter Filename: '
 	DEFB	0
 	LD	B,12
 	CALL	GETSTR
 	JP	Z,BYEBYE
 	LD	C,64
 	LD	IX,0B200H
 	LD	DE,20H
 LPIJUS	LD	HL,STRING
 	PUSH	BC
 	PUSH	IX
 LP1JUS	LD	A,(HL)
 	CP	'/'
 	JR	Z,PASSSS
 	LD	A,(IX+5)
 	CP	20H
 	JR	Z,PASJUS
 	CP	(HL)
 	JR	NZ,HHHCON
 	INC	HL
 	INC	IX
 LPDJUS	DJNZ	LP1JUS
 	POP	IX
 	POP	BC
 	JP	FNDJUS
 PASJUS	INC	IX
 	JR	LP1JUS
 PASSSS	INC	HL
 	DEC	B
 	JP	Z,PASALL
 	JR	LP1JUS
 HHHCON	POP	IX
 	ADD	IX,DE
 	POP	BC
 	DEC	C
 	JR	NZ,LPIJUS
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Filename NOT FOUND ! '
 	DEFB	0
 	JP	PASALL
 FNDJUS	CALL	DISPLY
 	DEFB	0DH
 	DEFB	0
 	PUSH	IX
 	POP	HL
 	LD	A,L
 	ADD	A,5
 	LD	L,A
 	CALL	SHOW
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Update Passwords:'
 	DEFB	0DH
 	DEFB	0
 	XOR	A
 	LD	(FLAG1),A
 	LD	L,(IX+10H)
 	LD	H,(IX+11H)
 HLP1	CALL	COMALL
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Access Passwords:'
 	DEFB	0DH
 	DEFB	0
 	XOR	A
 	LD	(FLAG1),A
 	PUSH	BC
 	LD	BC,8000H
 	CALL	60H
 	POP	BC
 	LD	L,(IX+12H)
 	LD	H,(IX+13H)
 	CALL	COMALL
 	JP	BYEBYE
 COMALL	PUSH	BC
 	PUSH	DE
 	PUSH	HL
 	LD	HL,SPACES
 	LD	DE,BUF2
 	LD	BC,8
 	LDIR
 	LD	HL,BUF2
 HHHLP	EXX
 	LD	HL,BUF2
 	LD	DE,BUF1
 	LD	BC,8
 	LDIR
 	EXX
 	CALL	CODE
 	EXX
 	LD	HL,BUF1
 	LD	DE,BUF2
 	LD	BC,8
 	LDIR
 	EXX
 	POP	DE
 	PUSH	DE
 	OR	A
 	SBC	HL,DE
 	JR	Z,HHHFND
 HHHCNT	LD	A,(3840H)
 	CP	4
 	JP	Z,HHHEND
 	LD	HL,BUF2
 	LD	A,(HL)
 	CP	'Z'
 	JR	NZ,HH11
 	LD	(HL),'A'
 	LD	B,7
 	JR	HH1X
 HH11	INC	A
 	LD	(HL),A
 	JP	HHHLP
 HH1X	INC	HL
 	LD	A,(HL)
 	CP	20H
 	JR	NZ,HHH1
 	LD	(HL),30H
 	JP	HHHLP
 HHH1	CP	'9'
 	JR	NZ,HHH2
 	LD	(HL),'A'
 	JP	HHHLP
 HHH2	CP	'Z'
 	JR	NZ,HHH3
 	LD	(HL),'0'
 	DEC	B
 	JP	NZ,HH1X
 HHHEND	POP	HL
 	POP	DE
 	POP	BC
 	RET
 HHH3	INC	A
 	LD	(HL),A
 	JP	HHHLP
 HHHFND	CALL	DISPLY
 BUF2	DEFM	'              '
 	DEFB	0
 	LD	A,(FLAG1)
 	INC	A
 	LD	(FLAG1),A
 	CP	4
 	JP	C,HHHCNT
 	PUSH	DE
 	LD	A,0DH
 	CALL	33H
 	POP	DE
 	XOR	A
 	LD	(FLAG1),A
 	JP	HHHCNT
 CHGPAS	CALL	DISPLY
 	DEFW	1F1CH
 	DEFM	'- Change Passwords -'
 	DEFW	0D0DH
 	DEFB	0
 CHGPA1	CALL	DISPLY
 	DEFW	0D0DH
 	DEFM	'Enter Filename: '
 	DEFB	0
 	LD	B,12
 	CALL	GETSTR
 	JP	Z,BYEBYE
 	LD	C,64
 	LD	IX,0B200H
 	LD	DE,20H
 MMMLPI	LD	HL,STRING
 	PUSH	BC
 	PUSH	IX
 MMMLP1	LD	A,(HL)
 	CP	'/'
 	JR	Z,MMMLX1
 	LD	A,(IX+5)
 	CP	20H
 	JR	Z,MMMPAS
 	CP	(HL)
 	JR	NZ,MMMCON
 	INC	HL
 	INC	IX
 	DJNZ	MMMLP1
 	POP	IX
 	POP	BC
 	JP	MMMFND
 MMMPAS	INC	IX
 	JR	MMMLP1
 MMMLX1	INC	HL
 	DEC	B
 	JP	Z,CHGPA1
 	JR	MMMLP1
 MMMCON	POP	IX
 	ADD	IX,DE
 	POP	BC
 	DEC	C
 	JP	NZ,MMMLPI
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Filename NOT FOUND ! '
 	DEFB	0
 	JP	CHGPA1
 MMMFND	CALL	DISPLY
 	DEFB	0DH
 	DEFB	0
 	PUSH	IX
 	POP	HL
 	LD	A,L
 	ADD	A,5
 	LD	L,A
 	CALL	SHOW
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter UPDATE password: '
 	DEFB	0
 	CALL	MMGET
 	LD	(IX+10H),L
 	LD	(IX+11H),H
 	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter ACCESS password: '
 	DEFB	0
 	CALL	MMGET
 	LD	(IX+12H),L
 	LD	(IX+13H),H
 UUII	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'<V>isible or <I>nvisible ? '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	CP	'V'
 	JR	Z,UUIV
 	CP	'I'
 	JR	NZ,UUII
 	LD	A,(IX)
 	SET	3,A
 	LD	(IX),A
 	JR	OIOI
 UUIV	LD	A,(IX)
 	RES	3,A
 	LD	(IX),A
 OIOI	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'7 = No access'
 	DEFB	0DH
 	DEFM	'6 = Execution access only'
 	DEFB	0DH
 	DEFM	'5 = Read, Execute access'
 	DEFB	0DH
 	DEFM	'4 = Write, Read, Execute access'
 	DEFB	0DH
 	DEFM	'2 = Rename, Write, Read, Execute access'
 	DEFB	0DH
 	DEFM	'1 = Kill, Rename, Write, Read, Execute access'
 	DEFB	0DH
 	DEFM	'0 = No restrictions'
 	DEFB	0
 TUTU	CALL	DISPLY
 	DEFB	0DH
 	DEFM	'Enter protection level: '
 	DEFB	0
 	LD	B,1
 	CALL	GETSTR
 	SUB	30H
 	JR	C,TUTU
 	CP	3
 	JR	Z,TUTU
 	CP	8
 	JR	NC,TUTU
 	LD	B,A
 	LD	A,(IX)
 	AND	0F8H
 	OR	B
 	LD	(IX),A
 	PUSH	DE
 	LD	A,0DH
 	CALL	33H
 	POP	DE
 	JP	CHGPA1
 MMGET	LD	B,8
 	CALL	GETSTR
 	JR	Z,MMMNO
 	EX	DE,HL
 	LD	A,B
 	ADD	A,E
 	LD	L,A
 	LD	A,D
 	ADC	A,0
 	LD	H,A
 	LD	A,8
 	SUB	B
 	LD	B,A
 	OR	A
 	JP	Z,CODE1
 CODLPZ	LD	(HL),20H
 	INC	HL
 	DJNZ	CODLPZ
 	JP	CODE1
 MMMNO	LD	HL,4296H
 	RET
 	END	ENTRY

 	LD	L,A
 	LD	A,D
 	ADC	A,0
 	LD	H,A
 	LD	A,8
 	SUB	B
 	LD	B,A
 	OR	A
 	JP	Z,CODE1
 CODLPZ	LD	(HL),20H
 	INC	HL
 	DJNZ	CODLPZ
 	JP	CODE1
 MMMNO	