U3/TXT ;	U3/TXT	U3/TOO	U3
 	ORG	7C52H
 COUNT	EQU	4051H
 X1	EQU	4055H
 TRACK	EQU	4019H
 SYNC	EQU	4054H
 SELECT	EQU	4385H
 ADDRES	EQU	402AH
 MEMU	EQU	5B90H
 DSKSLO	EQU	5383H
 TRAK	EQU	4018H
 WHTABL	EQU	46E5H
 GOTRK	EQU	5F96H
 BUFFER	EQU	0A300H
 STAT	EQU	4FBEH
 RESTOR	EQU	43CAH
 NOTIN	EQU	6349H
 MREAD	EQU	6239H
 MWRITE	EQU	6286H
 BUFF1	EQU	0A100H
 BUFF4	EQU	0A500H
 CURSOR	EQU	4020H
 GETDAT	EQU	4872H
 SECTOR	EQU	4017H
 SCOUNT	EQU	5BBCH
 GOBACK	EQU	6210H
 WHERE	EQU	4015H
 GETSEL	EQU	4F4FH
 GOTABL	EQU	4625H
 VALUE	EQU	607DH
 TEMP0	EQU	4031H
 TEMP1	EQU	4033H
 TEMP2	EQU	4035H
 TEMP3	EQU	4037H
 TEMP4	EQU	4039H
 TEMP5	EQU	403BH
 MOVE	EQU	55FFH
 COMPAR	EQU	58FFH
 RETURN	EQU	61F0H
 DELAY	EQU	41A6H
 FLAG	EQU	4041H
 TYPE	EQU	4026H
 MEMUTI	LD	A,9
 	LD	(WHERE),A
 	RST	8
 	DEFB	3
 	DEFM	'- BREEZE MEMORY UTILITY -'
 	DEFW	0404H
 	DEFM	'<1>.  Move Memory'
 	DEFB	4
 	DEFM	'<2>.  Exchange Memory'
 	DEFB	4
 	DEFM	'<3>.  Compare Memory'
 	DEFB	4
 	DEFM	'<4>.  Zero Memory'
 	DEFB	4
 	DEFM	'<5>.  Test Memory'
 	DEFB	4
 	DEFM	'<6>.  Input Byte from Port'
 	DEFB	4
 	DEFM	'<7>.  Output Byte to Port'
 	DEFB	4
 	DEFM	'<8>.  Memory to Disk Sectors'
 	DEFB	4
 	DEFM	'<9>.  Disk Sectors to Memory'
 	DEFB	4
 	DEFM	'<0>.  Disk Track to Memory'
 	DEFB	0
 	CALL	GETSEL
 	JP	Z,MMEM
 	LD	B,10
 	LD	HL,TABLE2
 	CALL	WHTABL
 	JP	C,MEMUTI
 	CALL	GOTABL
 TABLE1	DEFW	MMEM
 	DEFW	XMEM
 	DEFW	VMEM
 	DEFW	ZMEM
 	DEFW	TMEM
 	DEFW	IPORT
 	DEFW	OPORT
 	DEFW	MEMD
 	DEFW	DMEM
 	DEFW	RDTK
 TABLE2	DEFM	'1234567890'
 MMEM	CALL	BSTART
 	LD	(TEMP0),BC
 	CALL	BEND
 	LD	(TEMP1),BC
 MMEND	RST	8
 	DEFB	4
 	DEFB	0
 MMENDD	RST	8
 	DEFB	6
 	DEFM	'Move block to ? '
 	DEFB	0
 	LD	A,5
 	RST	10H
 	JR	Z,MMENDD
 	CALL	VALUE
 	JR	C,MMENDD
 	LD	(TEMP2),BC
 	PUSH	BC
 	LD	HL,(TEMP1)
 	INC	HL
 	LD	DE,(TEMP0)
 	OR	A
 	SBC	HL,DE
 	LD	B,H
 	LD	C,L
 	LD	HL,(TEMP0)
 	POP	DE
 	PUSH	BC
 	CALL	MOVE
 	POP	BC
 	LD	HL,(TEMP0)
 	LD	DE,(TEMP2)
 	CALL	COMPAR
 	JP	Z,RETURN
 	RST	8
 	DEFB	4
 	DEFM	'Moved Memory DOES NOT COMPARE !'
 	DEFB	0
 	JP	RETURN
 TMEM	RST	8
 	DEFB	4
 	DEFM	'Do Not Test Memory between 7EF8H AND 7EFFH !!'
 	DEFB	4
 	DEFB	0
 TMEMA	RST	8
 	DEFB	6
 	DEFM	'Start address of test ? '
 	DEFB	0
 	LD	A,5
 	RST	10H
 	JP	Z,TMEMA
 	CALL	VALUE
 	JP	C,TMEMA
 	LD	(TEMP0),BC
 	RST	8
 	DEFB	4
 	DEFB	0
 TMEMB	RST	8
 	DEFB	6
 	DEFM	'End address of test ? '
 	DEFB	0
 	LD	A,5
 	RST	10H
 	JP	Z,TMEMB
 	CALL	VALUE
 	JP	C,TMEMB
 	INC	BC
 	LD	(TEMP1),BC
 	RST	8
 	DEFB	4
 	DEFB	0
 CK1	RST	8
 	DEFB	6
 	DEFM	'Display address being tested ? '
 	DEFB	0
 	LD	A,1
 	RST	10H
 	JR	Z,CK1
 	CP	'N'
 	JR	Z,NOSHOW
 	CP	'Y'
 	JR	NZ,CK1
 NOSHOW	LD	(X1),A
 	RST	8
 	DEFB	3
 	DEFB	0
 	CALL	CARRET
 	LD	HL,(TEMP0)
 	LD	BC,0
 	LD	(COUNT),BC
 TEST	LD	A,(3840H)
 	BIT	2,A
 	JP	NZ,GOBACK
 	BIT	1,A
 	JP	NZ,TESEND
 	LD	A,(X1)
 	CP	'Y'
 	CALL	Z,SHOW1
 	LD	C,(HL)
 	LD	B,0
 TESTLP	LD	A,(X1)
 	CP	'Y'
 	CALL	Z,SHOW2
 	LD	(HL),B
 	LD	A,(HL)
 	CP	B
 	LD	(HL),C
 	CALL	NZ,BADM
 	DJNZ	TESTLP
 	INC	HL
 	PUSH	HL
 	OR	A
 	LD	DE,(TEMP1)
 	SBC	HL,DE
 	POP	HL
 	JR	Z,TESEND
 	JR	TEST
 BADM	PUSH	HL
 	LD	HL,(CURSOR)
 	LD	A,H
 	CP	3FH
 	JR	NZ,CCC
 	LD	A,L
 	CP	080H
 	CALL	Z,CARRET
 CCC	POP	HL
 	PUSH	HL
 	LD	A,H
 	RST	30H
 	LD	(ME1),HL
 	POP	HL
 	PUSH	HL
 	LD	A,L
 	RST	30H
 	LD	(ME2),HL
 	RST	8
 ME1	DEFM	'00'
 ME2	DEFM	'00H is Bad !'
 	DEFB	4
 	DEFB	0
 	LD	BC,(COUNT)
 	INC	BC
 	LD	(COUNT),BC
 	POP	HL
 	LD	B,1
 TWAIT	LD	A,(3840H)
 	BIT	2,A
 	JP	NZ,GOBACK
 	BIT	7,A
 	JR	NZ,TWAIT
 	BIT	1,A
 	RET	Z
 TESEND	LD	HL,(COUNT)
 	LD	A,H
 	OR	L
 	LD	A,H
 	JR	Z,MEN3
 	RST	30H
 	LD	(MEN1),HL
 	LD	A,(COUNT)
 	RST	30H
 	LD	(MEN2),HL
 	RST	8
 MEN1	DEFM	'00'
 MEN2	DEFM	'00H Bad Memory Cells.'
 	DEFB	0
 	JP	RETURN
 SHOW1	PUSH	BC
 	PUSH	HL
 	LD	A,H
 	RST	30H
 	LD	(3C00H+15),HL
 	POP	HL
 	PUSH	HL
 	LD	A,L
 	RST	30H
 	LD	(3C00H+17),HL
 	POP	HL
 	POP	BC
 	RET
 SHOW2	PUSH	HL
 	PUSH	BC
 	LD	A,B
 	RST	30H
 	LD	(3C00H+26),HL
 	POP	BC
 	POP	HL
 	RET
 MEN3	RST	8
 	DEFM	'All Tested Memory is OK.'
 	DEFB	0
 	JP	RETURN
 VMEM	CALL	BSTART
 	LD	(TEMP0),BC
 	CALL	BEND
 	LD	(TEMP1),BC
 VMEMC	RST	8
 	DEFB	4
 	DEFB	0
 VMEMCC	RST	8
 	DEFB	6
 	DEFM	'Address of block to compare ? '
 	DEFB	0
 	LD	A,5
 	RST	10H
 	JP	Z,VMEMCC
 	CALL	VALUE
 	JP	C,VMEMCC
 	LD	(TEMP2),BC
 	LD	HL,(TEMP1)
 	LD	DE,(TEMP0)
 	INC	HL
 	OR	A
 	SBC	HL,DE
 	PUSH	HL
 	POP	BC
 	LD	HL,(TEMP0)
 	LD	DE,(TEMP2)
 	CALL	COMPAR
 	JR	NZ,VBAD
 	RST	8
 	DEFB	4
 	DEFM	'Memory Compare is Identical.'
 	DEFB	0
 	JP	RETURN
 VBAD	DEC	BC
 	PUSH	HL
 	LD	A,B
 	PUSH	BC
 	RST	30H
 	POP	BC
 	LD	(V5),HL
 	LD	A,C
 	RST	30H
 	LD	(V6),HL
 	POP	HL
 	PUSH	HL
 	LD	A,H
 	RST	30H
 	LD	(V1),HL
 	POP	HL
 	LD	A,L
 	RST	30H
 	LD	(V2),HL
 	LD	A,D
 	RST	30H
 	LD	(V3),HL
 	LD	A,E
 	RST	30H
 	LD	(V4),HL
 	RST	8
 	DEFB	4
 	DEFM	'Non compare Block #1 @ '
 V1	DEFM	'00'
 V2	DEFM	'00H, Block #2 @ '
 V3	DEFM	'00'
 V4	DEFM	'00H.'
 	DEFB	4
 V5	DEFM	'00'
 V6	DEFM	'00H Untested bytes.'
 	DEFB	0
 	JP	RETURN
 ZMEM	CALL	BSTART
 	LD	(TEMP0),BC
 	CALL	BEND
 	LD	H,B
 	LD	L,C
 	LD	BC,(TEMP0)
 	OR	A
 	SBC	HL,BC
 	LD	B,H
 	LD	C,L
 	LD	HL,(TEMP0)
 	PUSH	HL
 	POP	DE
 	INC	DE
 	LD	(HL),0
 	LDIR
 	JP	RETURN
 XMEM	CALL	BSTART
 	LD	(TEMP0),BC
 	CALL	BEND
 	LD	(TEMP1),BC
 XMEM1	RST	8
 	DEFB	4
 	DEFB	0
 XMEM1C	RST	8
 	DEFB	6
 	DEFM	'Start of block to exchange ? '
 	DEFB	0
 	LD	A,5
 	RST	10H
 	JR	Z,XMEM1C
 	CALL	VALUE
 	JR	C,XMEM1C
 	LD	(TEMP2),BC
 	LD	HL,(TEMP1)
 	LD	DE,(TEMP0)
 	OR	A
 	SBC	HL,DE
 	INC	HL
 	LD	B,H
 	LD	C,L
 	LD	HL,(TEMP0)
 	LD	DE,(TEMP2)
 EXLP	LD	A,(HL)
 	EX	AF,AF'
 	LD	A,(DE)
 	LD	(HL),A
 	EX	AF,AF'
 	LD	(DE),A
 	INC	DE
 	INC	HL
 	DEC	BC
 	LD	A,B
 	OR	C
 	JR	NZ,EXLP
 	JP	RETURN
 IPORT	RST	8
 	DEFB	4
 	DEFB	0
 IPORTX	RST	8
 	DEFB	6
 	DEFM	'Get byte from which port ? '
 	DEFB	0
 	LD	A,3
 	RST	10H
 	JP	Z,IPORTX
 	CALL	VALUE
 	JP	C,IPORTX
 	LD	A,B
 	OR	A
 	JP	NZ,IPORTX
 	LD	A,C
 	LD	(IFIX+1),A
 IFIX	IN	A,(0FFH)
 	RST	30H
 	LD	(IBYT),HL
 	RST	8
 	DEFB	4
 	DEFM	'Byte received is: '
 IBYT	DEFM	'00H.'
 	DEFB	0
 	JP	RETURN
 OPORT	RST	8
 	DEFB	4
 	DEFB	0
 OPORTX	RST	8
 	DEFB	6
 	DEFM	'Output to port, byte ? '
 	DEFB	0
 	LD	A,10
 	RST	10H
 	JP	Z,OPORTX
 	CALL	VALUE
 	JP	C,OPORTX
 	LD	A,B
 	OR	A
 	JP	NZ,OPORTX
 	LD	A,C
 	LD	(OP+1),A
 	CALL	VALUE
 	JP	C,OPORTX
 	LD	A,B
 	OR	A
 	JP	NZ,OPORTX
 	LD	A,C
 OP	OUT	(0FFH),A
 	JP	RETURN
 CARRET	LD	HL,(3C00H+15)
 	LD	(TEMP3),HL
 	LD	HL,(3C00H+17)
 	LD	(TEMP4),HL
 	LD	HL,(3C00H+26)
 	LD	(TEMP5),HL
 	LD	HL,3C80H
 	LD	(CURSOR),HL
 	RST	8
 	DEFB	6
 	DEFB	0
 	LD	HL,3FFFH
 	LD	(CURSOR),HL
 	RST	8
 	DEFB	4
 	DEFB	0
 	LD	HL,3C00H
 	LD	(CURSOR),HL
 	LD	A,(X1)
 	CP	'N'
 	JR	Z,SHIT
 	RST	8
 	DEFB	5
 	DEFM	'- Testing byte 0000H with 00H -'
 	DEFB	0
 	LD	HL,(TEMP3)
 	LD	(3C00H+15),HL
 	LD	HL,(TEMP4)
 	LD	(3C00H+17),HL
 	LD	HL,(TEMP5)
 	LD	(3C00H+26),HL
 SHCO	LD	HL,3F40H
 	LD	(CURSOR),HL
 	RET
 SHIT	RST	8
 	DEFB	5
 	DEFM	'- Testing -'
 	DEFB	0
 	JR	SHCO
 BSTART	RST	8
 	DEFB	4
 	DEFB	0
 BSTARX	RST	8
 	DEFB	6
 	DEFM	'Block start address ? '
 	DEFB	0
 	LD	A,5
 	RST	10H
 	JR	Z,BSTARX
 	CALL	VALUE
 	JR	C,BSTARX
 	RET
 BEND	RST	8
 	DEFB	4
 	DEFB	0
 BENDX	RST	8
 	DEFB	6
 	DEFM	'Block end address ? '
 	DEFB	0
 	LD	A,5
 	RST	10H
 	JR	Z,BENDX
 	CALL	VALUE
 	JR	C,BENDX
 	RET
 DMEM	CALL	GETDAT
 	LD	(SECTOR),DE
 	CALL	BSTART
 	LD	(TEMP0),BC
 	CALL	SCOUNT
 	LD	(TEMP1),BC
 	LD	DE,(SECTOR)
 	CALL	RESTOR
 	CALL	STAT
 	LD	BC,(TEMP0)
 	LD	HL,(TEMP1)
 	LD	(SECTOR),DE
 	CALL	MREAD
 	JP	RETURN
 MEMD	CALL	BSTART
 	LD	(TEMP0),BC
 	CALL	GETDAT
 	LD	(SECTOR),DE
 	CALL	SCOUNT
 	LD	(TEMP1),BC
 	CALL	IFWILL
 	LD	DE,(SECTOR)
 	CALL	RESTOR
 	LD	(SECTOR),DE
 	JP	Z,NOTIN
 	CALL	STAT
 	LD	HL,BUFF1
 	LD	DE,BUFF1+1
 	LD	BC,(TEMP1)
 	DEC	BC
 	LD	(HL),0A8H
 	LDIR
 	LD	BC,(TEMP0)
 	LD	DE,(SECTOR)
 	LD	HL,(TEMP1)
 	CALL	MWRITE
 	JP	RETURN
 RDTK	RST	8
 	DEFB	4
 	DEFB	0
 TDR	RST	8
 	DEFB	6
 	DEFM	'Synchronize to Address Marks ? '
 	DEFB	0
 	LD	A,3
 	RST	10H
 	JR	Z,TDR
 	CP	'Y'
 	JR	Z,TDD
 	CP	'N'
 	JR	NZ,TDR
 	LD	A,0E4H
 	JR	TDE
 TDD	LD	A,0E5H
 TDE	LD	(SYNC),A
 	CALL	GETDAT
 	LD	A,D
 	CALL	GOTRK
 	LD	A,(TRACK)
 	LD	(TRAK),A
 	LD	HL,BUFF4
 	LD	DE,BUFF4+1
 	LD	BC,0C000H-0A500H-1
 	LD	(HL),0
 	LDIR
 	CALL	SELECT
 	LD	A,(SYNC)
 	LD	HL,37ECH
 	LD	DE,37EFH
 	LD	BC,BUFF4
 	LD	(HL),A
 	CALL	DSKSLO
 	JR	TES1
 TES2	RRCA
 	JR	NC,TES3
 TES4	LD	A,(HL)
 	BIT	1,A
 	JR	Z,TES2
 	LD	A,(DE)
 	LD	(BC),A
 	INC	BC
 TES1	JR	TES4
 TES3	LD	A,(HL)
 	LD	(HL),0D0H
 	RST	8
 	DEFB	4
 	DEFM	'Track data located in Buffer starting at A500H. '
 	DEFB	0
 	LD	A,3
 	LD	(WHERE),A
 	LD	HL,0A400H
 	LD	(ADDRES),HL
 	XOR	A
 	RST	10H
 	JP	MEMU
 IFWILL	LD	HL,(TEMP0)
 	LD	A,H
 	CP	0A0H
 	RET	NC
 	CP	40H
 	JR	NC,SORRY
 	LD	BC,(TEMP1)
 	LD	B,C
 	LD	C,0
 	ADD	HL,BC
 	LD	A,H
 	CP	41H
 	JR	NC,SORRY
 	RET
 SORRY	RST	8
 	DEFB	4
 	DEFM	'Sorry.  Won'
 	DEFB	27H
 	DEFM	't dump memory from 4000H to 9FFFH.'
 	DEFB	0
 	JP	RETURN
 	END	402DH
 	LD	C,0
 	ADD	HL,BC
 	LD	A,H
 	CP	41H
 	JR	NC,SORRY
 	RET
 SORRY	RST	8
 	DEFB	4
 	DEFM	'Sorry.  Won'
 	DEFB	27H
 	DEFM	't dump memory from 40