MAKE80 ;	MAKE80/TXT	MAKE80/TOO	MAKE80/CMD
 	ORG	6D00H
 STACK	EQU	6CF0H
 BUFFER	EQU	7C00H
 BUFF1	EQU	7A00H
 SAVEIT	DB	0
 SPBYTE	DB	0
 FLAG	DB	0
 FLAG2	DB	0
 TOPMEM	DW	0
 TRAK	DB	0
 TRAK1	DB	0
 TRAK2	DB	0
 TRACKS	DB	0
 TYPE	DB	0
 COUNT	DW	0
 TEMP0	DW	0
 TEMP1	DW	0
 START	DI
 	LD	A,0D0H
 	OUT	(0F0H),A
 	LD	SP,STACK
 	LD	A,(3810H)
 	OR	A
 	JR	Z,PRENTR
 	CP	16
 	JR	NC,PRENTR
 	LD	B,0
 TLP	RRCA
 	JR	C,TFN
 	INC	B
 	JR	TLP
 TFN	LD	A,B
 	LD	(SPBYTE),A
 PRENTR	CALL	2BH
 ENTRY	DI
 	LD	SP,STACK
 	CALL	CHKSUM
 	LD	HL,0C000H
 	XOR	A
 MEMTST	LD	(HL),A
 	CP	(HL)
 	JR	NZ,LOW
 	INC	A
 	JR	NZ,MEMTST
 	LD	HL,0
 LOW	LD	(TOPMEM),HL
 	LD	A,(SPBYTE)
 	LD	L,'4'
 	LD	H,'0'
 	CP	3
 	JR	Z,SPGO
 	LD	L,'2'
 	CP	2
 	JR	Z,SPGO
 	LD	L,'1'
 	LD	H,'2'
 	CP	1
 	JR	Z,SPGO
 	LD	L,'0'
 	LD	H,'6'
 SPGO	LD	(SPEED),HL
 	CALL	DISPLY
 	DW	1F1CH
 	DB	'**  MAKE-80 III Ver 1.0 by Kim Watt  **  Step = '
 SPEED	DB	'00 ms.  **'
 	DB	0DH
 RANDY	DB	'Copyright (C) 1981 by A.M. Electronics, Inc.                  '
 	DB	0DH
 	DB	'3366 Washtenaw Ave. - Ann Arbor, Mich.  48104 - (313) 973-2312'
 	DW	0D0DH
 	DB	'Insert a 35 or 40 Track formatted diskette into your 80 Track'
 	DB	0DH
 	DB	'drive.  When you take it out it will still have the original'
 	DB	0DH
 	DB	'data, but will be formatted as 80 Tracks !!'
 	DB	0
 BAD1	LD	HL,3C00H+576
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 	DB	'Which Drive contains mounted diskette ? '
 	DB	0
 	CALL	O40H
 	CP	'D'
 	JP	Z,402DH
 	CP	'd'
 	JP	Z,402DH
 	SUB	30H
 	JR	C,BAD1
 	CP	4
 	JR	NC,BAD1
 	LD	B,1
 DRVCK	OR	A
 	JR	Z,DRVFN
 	SLA	B
 	DEC	A
 	JR	DRVCK+1
 DRVFN	LD	A,B
 	LD	(DRIVE),A
 BAD22	LD	HL,3C00H+640
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 	DB	'Verify after completion ? '
 	DB	0
 	CALL	O40H
 	CP	'D'
 	JP	Z,402DH
 	CP	'Y'
 	JR	Z,VFND
 	CP	'N'
 	JR	NZ,BAD22
 VFND	LD	(FLAG2),A
 	LD	IX,TRAK
 	XOR	A
 	LD	(IX+1),A
 	LD	(IX+2),A
 	CALL	RESTOR
 	CALL	IFGOOD
 	CALL	RESTOR
 	LD	DE,1
 	LD	(TEMP0),DE
 	XOR	A
 	LD	(IX+1),A
 	LD	(IX+2),A
 	LD	A,1
 	LD	(FLAG),A
 COPYLP	CALL	READ10
 	CALL	FMTTR
 	CALL	PUT10
 	LD	A,(FLAG)
 	OR	A
 	JR	NZ,COPYLP
 FINISH	CALL	FORMAT
 	LD	A,(IX+2)
 	CP	80
 	JP	Z,VERIFY
 	JR	FINISH
 ERMSG5	DB	0DH
 	DB	'Drive NOT READY !'
 	DB	0
 	JP	ERRORD
 ERMSG6	DB	0DH
 	DB	'Drive NOT IN SYSTEM !'
 	DB	0
 	JP	ERRORD
 ERMSG7	DB	0DH
 	DB	'Diskette is WRITE PROTECTED !'
 	DB	0
 	JP	ERRORD
 ERMSG8	DB	0DH
 	DB	'No SYSTEM in DRIVE !'
 	DB	0
 	JP	ERRORD
 ERMSG9	DB	0DH
 	DB	'DOOR NOT CLOSED on drive !'
 	DB	0
 	JP	ERRORD
 ERMSG0	DB	0DH
 	DB	'NO DISKETTE in drive !'
 	DB	0
 	JP	ERRORD
 ERMSG1	DB	0DH
 	DB	'Diskette is HARD SECTORED !'
 	DB	0
 ERRORD	LD	HL,3C00H+896
 	LD	(4020H),HL
 	CALL	DISPLY
 	DB	'MAKE-80 CANNOT CONTINUE because of detected error !'
 	DB	0DH
 	DB	'Press <ENTER> to restart program. '
 	DB	0
 ERRZ	CALL	O40H
 	CP	'D'
 	JP	Z,402DH
 	JP	ENTRY
 DERROR	PUSH	HL
 DISPLY	POP	DE
 DISLP	LD	HL,(4020H)
 	LD	A,(DE)
 	INC	DE
 	OR	A
 	JR	Z,DISDN
 	CP	20H
 	JR	C,DISCTL
 	LD	(HL),A
 	INC	HL
 	LD	(4020H),HL
 	JR	DISLP
 DISCTL	PUSH	DE
 	PUSH	IY
 	PUSH	IX
 	CALL	33H
 	POP	IX
 	POP	IY
 	POP	DE
 	JR	DISLP
 DISDN	PUSH	DE
 	RET
 SELECT0	LD	A,D
 	CP	16H
 	LD	A,0
 	JR	C,SELECT1
 	LD	A,20H
 SELECT1	LD	(SELECT2),A
 	LD	A,(DRIVE)
 	RES	5,A
 	OR	0
 SELECT2	EQU	$-1
 	LD	(DRIVE),A
 SELECT	LD	A,1
 DRIVE	EQU	$-1
 	SET	7,A
 	OUT	(0F4H),A
 	RET
 RESTOR	CALL	SELECT
 	LD	A,(SPBYTE)
 	AND	3
 	OR	08
 	OUT	(0F0H),A
 	CALL	DSKSLO
 RESWT	CALL	SELECT
 	IN	A,(0F0H)
 	BIT	0,A
 	JR	NZ,RESWT
 	BIT	2,A
 	JR	Z,RESTOR
 	XOR	A
 	LD	(IX),A
 	JP	WHHEAD
 STEPIN	CALL	SELECT
 	INC	(IX)
 	LD	A,(SPBYTE)
 	AND	3
 	OR	58H
 STEPCT	OUT	(0F0H),A
 	CALL	DSKSLO
 STIN	CALL	SELECT
 	IN	A,(0F0H)
 	BIT	0,A
 	JR	NZ,STIN
 	BIT	4,A
 	JP	WHHEAD
 STEPOT	CALL	SELECT
 	DEC	(IX)
 	LD	A,(SPBYTE)
 	AND	3
 	OR	78H
 	JR	STEPCT
 READ10	LD	DE,(TEMP0)
 	LD	A,D
 	SLA	A
 	CALL	GOTRK
 	LD	BC,BUFFER
 	LD	HL,0
 	LD	(COUNT),HL
 	LD	DE,(TEMP0)
 	LD	(TEMP1),DE
 	LD	IY,BUFF1
 RDLP	LD	DE,(TEMP0)
 	LD	A,D
 	OUT	(0F1H),A
 	CALL	READ
 	CALL	NZ,BADRD
 	JR	C,RDLP
 	INC	E
 	LD	A,E
 	SUB	19
 	JR	NZ,RDC1
 	LD	E,1
 	CALL	STEPIN
 	CALL	STEPIN
 	INC	D
 RDC1	LD	(TEMP0),DE
 	LD	A,(TYPE)
 	AND	20H
 	SRA	A
 	SRA	A
 	SRA	A
 	SRA	A
 	SRA	A
 	AND	1
 	OR	0A0H
 	LD	(IY),A
 	INC	IY
 	LD	HL,(COUNT)
 	INC	HL
 	LD	(COUNT),HL
 	LD	A,(TRACKS)
 	CP	D
 	JR	Z,ATEND
 	LD	HL,(TOPMEM)
 	DEC	H
 	LD	A,B
 	CP	H
 	JR	NZ,RDLP
 	RET
 ATEND	XOR	A
 	LD	(FLAG),A
 	RET
 PUT10	LD	DE,(TEMP1)
 	LD	A,D
 	CALL	GOTRK
 	LD	DE,(TEMP1)
 	LD	BC,BUFFER
 	LD	HL,(COUNT)
 	LD	IY,BUFF1
 WRLP	LD	A,D
 	OUT	(0F1H),A
 	PUSH	HL
 WRLP1	LD	A,(IY)
 	LD	(TYPE),A
 	CALL	WRITE
 	CALL	NZ,BADWRT
 	JR	C,WRLP1
 	INC	IY
 	POP	HL
 	INC	E
 	LD	A,E
 	SUB	19
 	JR	NZ,WRLP2
 	LD	E,1
 	INC	D
 	PUSH	HL
 	PUSH	DE
 	CALL	STEPIN
 	POP	DE
 	POP	HL
 WRLP2	DEC	HL
 	LD	A,H
 	OR	L
 	JR	NZ,WRLP
 	RET
 GOTRK	LD	B,(IX)
 	CP	B
 	RET	Z
 	JR	C,GOOUT
 	SUB	B
 	LD	B,A
 INLOOP	CALL	STEPIN
 	DJNZ	INLOOP
 	RET
 GOOUT	LD	C,A
 	LD	A,B
 	SUB	C
 	LD	B,A
 OUTLP	CALL	STEPOT
 	DJNZ	OUTLP
 	RET
 WHHEAD	LD	HL,3C00H+704
 	LD	(4020H),HL
 	PUSH	AF
 	LD	A,(IX)
 	OUT	(0F1H),A
 	PUSH	DE
 	PUSH	BC
 	CALL	ASCII
 	LD	(HEAD),BC
 	CALL	DISPLY
 	DB	1DH
 	DB	'Head positioned over Track: '
 HEAD	DB	'00.'
 	DB	0
 	POP	BC
 	POP	DE
 	POP	AF
 	RET
 READ	CALL	SELECT0
 	LD	A,E
 	PUSH	BC
 	CALL	ASCII
 	LD	(RSEC),BC
 	LD	A,D
 	CALL	ASCII
 	LD	(RTK),BC
 	PUSH	DE
 	LD	HL,3C00H+832
 	LD	(4020H),HL
 	CALL	DISPLY
 	DB	1DH
 	DB	'Reading    Track '
 RTK	DB	'00, Sector '
 RSEC	DB	'00.'
 	DB	0
 	POP	DE
 	POP	BC
 	CALL	R1
 	CALL	NZ,R1
 	CALL	NZ,R1
 	RET
 WRITE	CALL	SELECT0
 	LD	A,E
 	PUSH	BC
 	CALL	ASCII
 	LD	(WSEC),BC
 	LD	A,D
 	CALL	ASCII
 	LD	(WTK),BC
 	PUSH	DE
 	LD	HL,3C00H+832
 	LD	(4020H),HL
 	CALL	DISPLY
 	DB	1DH
 	DB	'Writing    Track '
 WTK	DB	'00, Sector '
 WSEC	DB	'00.'
 	DB	0
 	POP	DE
 	POP	BC
 	CALL	W1
 	CALL	NZ,W1
 	CALL	NZ,W1
 	RET
 WRDN	AND	0FCH
 	LD	(SAVEIT),A
 	LD	B,H
 	LD	C,L
 	RET	Z
 	LD	A,0D0H
 	OUT	(0F0H),A
 	LD	A,(SAVEIT)
 	RET
 BADWRT	PUSH	DE
 	PUSH	BC
 	PUSH	HL
 	LD	HL,3C00H+896
 	LD	(4020H),HL
 	CALL	DISPLY
 	DB	'Disk WRITE ERROR!'
 	DB	0
 WRTCON	CALL	DISPLY
 	DB	'  <R>etry, <S>kip or <C>ancel ?'
 	DB	0
 WRTWT	PUSH	IY
 	CALL	2BH
 	POP	IY
 	OR	A
 	JR	Z,WRTWT
 	CP	'R'
 	SCF
 	JR	Z,GOBACK
 	CP	'S'
 	JR	Z,SKIP
 	CP	'C'
 	JP	Z,ERRORD
 	JR	WRTWT
 SKIP	SCF
 	CCF
 	POP	HL
 	POP	BC
 	INC	B
 	PUSH	BC
 	PUSH	HL
 GOBACK	PUSH	AF
 	CALL	DISPLY
 	DW	1E1DH
 	DB	0
 	POP	AF
 	POP	HL
 	POP	BC
 	POP	DE
 	RET
 BADRD	PUSH	DE
 	PUSH	BC
 	PUSH	HL
 	LD	HL,3C00H+896
 	LD	(4020H),HL
 	CALL	DISPLY
 	DB	'Disk READ ERROR!'
 	DB	0
 	JR	WRTCON
 VERIFY	LD	A,(FLAG2)
 	CP	'N'
 	JP	Z,COPBYE	;UPDATE
 	XOR	A
 	CALL	GOTRK
 	LD	DE,1
 VERLP	LD	BC,BUFFER
 	LD	A,D
 	LD	(IX),A
 	CALL	WHHEAD
 V11	CALL	READ
 	CALL	NZ,BADRD
 	JR	C,V11
 	INC	E
 	LD	A,E
 	SUB	19
 	JR	NZ,V12
 	LD	E,1
 	INC	D
 V12	LD	A,80
 	CP	D
 	JP	Z,COPBYE	;UPDATE
 	JR	VERLP
 COPBYE	LD	HL,3C00H+896
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 	DB	'Routine Complete.  <ENTER> to restart. '
 	DB	0
 	CALL	O40H
 	CP	'0'
 	JP	Z,0
 	CP	'D'
 	JP	Z,402DH
 	JP	ENTRY
 FMTTR	LD	HL,(COUNT)
 	LD	D,18
 	CALL	DIV16
 	LD	A,E
 	ADD	A,5
 	LD	B,A
 FORMLP	PUSH	BC
 	CALL	FORMAT
 	POP	BC
 	DJNZ	FORMLP
 	RET
 FORMAT	LD	A,80
 	LD	B,(IX+2)
 	CP	B
 	RET	Z
 	LD	A,B
 	CALL	GOTRK
 	LD	A,(IX+2)
 	OUT	(0F1H),A
 	INC	(IX+2)
 	LD	A,(IX+2)
 	DEC	A
 	CALL	ASCII
 	LD	(FTR),BC
 	LD	HL,3C00H+832
 	LD	(4020H),HL
 	CALL	DISPLY
 	DB	1DH
 	DB	'Formatting Track '
 FTR	DB	'00.                   '
 	DB	0
 	LD	HL,5200H
 	LD	DE,ORDER
 	CALL	ORDNEW
 	CALL	ORDNEW
 	CALL	ORDNEW
 	CALL	ORDNEW
 	LD	B,3EH
 	CALL	FILLFF
 SECLP	LD	B,0CH
 	LD	C,0
 	CALL	FILL
 	LD	B,3
 	LD	C,0F5H
 	CALL	FILL
 	LD	C,0FEH
 	CALL	FILL1
 	LD	C,(IX)
 	CALL	FILL1
 	LD	C,0
 	CALL	FILL1
 	LD	A,(DE)
 	LD	C,A
 	CALL	FILL1
 	LD	C,1
 	CALL	FILL1
 	LD	C,0F7H
 	CALL	FILL1
 	LD	B,16H
 	CALL	FILLFF
 	LD	B,0CH
 	LD	C,0
 	CALL	FILL
 	LD	B,3
 	LD	C,0F5H
 	CALL	FILL
 	LD	C,0FBH
 	CALL	FILL1
 	LD	B,0
 	LD	C,0EEH
 	CALL	FILL
 	LD	C,0F7H
 	CALL	FILL1
 	LD	B,16H
 	CALL	FILLFF
 	INC	DE
 	LD	A,(DE)
 	INC	A
 	JR	NZ,SECLP
 	LD	B,80H
 	CALL	FILLFF
 TRYWRTG	CALL	WRITTR
 	RET	Z
 	JR	TRYWRTG
 WRITTR	LD	BC,5200H
 	LD	A,0F0H
 	LD	(TYPE),A
 	LD	D,(IX)
 	CALL	SELECT0
 	JP	W0
 ERMSG2	DB	0DH
 	DB	'Transfer rate TOO FAST !'
 	DB	0
 	JP	ERRORD
 FILLFF	LD	C,4EH
 FILL	CALL	FILL1
 	DJNZ	FILL
 	RET
 FILL1	LD	(HL),C
 	INC	HL
 	RET
 UPDATE	LD	HL,3C00H+896
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 	DB	'Updating Directory to 80 tracks.'
 	DB	0
 	XOR	A
 	CALL	GOTRK
 	LD	DE,0
 	LD	BC,BUFFER
 	LD	IY,TRACKS
 UP1	CALL	READ
 	CALL	NZ,BADRD
 	JR	C,UP1
 	LD	HL,BUFFER
 	LD	A,(HL)
 	OR	A
 	JP	NZ,NONST
 	INC	HL
 	LD	A,(HL)
 	CP	0FEH
 	JP	NZ,NONST
 	INC	HL
 	LD	A,(HL)
 	CP	2
 	JP	C,NONST
 	CP	97H
 	JP	NC,NONST
 	LD	D,A
 	LD	E,0
 	PUSH	DE
 	CALL	GOTRK
 	POP	DE
 	LD	BC,BUFFER
 UP22	CALL	READ
 	CALL	NZ,BADRD
 	JR	C,UP22
 	LD	A,(IY)
 	LD	HL,BUFFER
 	ADD	A,L
 	LD	L,A
 	LD	A,80
 	LD	B,(IY)
 	SUB	B
 	LD	B,A
 	PUSH	HL
 	POP	IX
 UPLP	RES	0,(IX)
 	RES	1,(IX)
 	RES	0,(IX+60H)
 	RES	1,(IX+60H)
 	INC	IX
 	DJNZ	UPLP
 	LD	A,0A9H
 	LD	(TYPE),A
 	LD	BC,BUFFER
 UP33	CALL	WRITE
 	CALL	NZ,BADWRT
 	JR	C,UP33
 	JP	COPBYE
 NONST	CALL	DISPLY
 	DW	1E1DH
 	DB	'Cannot update directory.  Nonstandard disk.'
 	DB	0
 	JP	COPBYE
 ASCII	LD	C,30H
 ASCII1	SUB	0AH
 	JR	C,ASCII2
 	INC	C
 	JR	ASCII1
 ASCII2	ADD	A,3AH
 	LD	B,A
 	RET
 ORDER	DB	1,7,13,2,8,14,3,9,15
 	DB	4,10,16,5,11,17,6,12,18
 	DB	0FFH
 DIV16	PUSH	IX
 	LD	A,L
 	LD	L,H
 	LD	H,0
 	LD	E,0
 	LD	B,16
 	LD	IX,0
 LOOP	ADD	HL,HL
 	RLA
 	JP	NC,LOOP1
 	INC	L
 LOOP1	ADD	IX,IX
 	INC	IX
 	OR	A
 	SBC	HL,DE
 	JP	NC,CONT
 	ADD	HL,DE
 	DEC	IX
 CONT	DJNZ	LOOP
 	PUSH	IX
 	POP	DE
 	POP	IX
 	RET
 IFGOOD	LD	A,40
 	LD	(TRACKS),A
 	DEC	A
 	SLA	A
 	CALL	GOTRK
 	LD	A,39
 	OUT	(0F1H),A
 	LD	D,A
 	LD	E,1
 GOODLP	LD	BC,BUFFER
 	CALL	READ
 	JR	NZ,TRY35
 	INC	E
 	LD	A,E
 	CP	19
 	JR	NZ,GOODLP
 	JR	GOODCN
 TRY35	LD	A,35
 	LD	(TRACKS),A
 	DEC	A
 	SLA	A
 	CALL	GOTRK
 	LD	A,34
 	OUT	(0F1H),A
 	LD	D,A
 	LD	E,1
 GOODL1	LD	BC,BUFFER
 	CALL	READ
 	JP	NZ,NOTIT
 	INC	E
 	LD	A,E
 	CP	19
 	JR	NZ,GOODL1
 GOODCN	LD	A,(TRACKS)
 	CALL	ASCII
 	LD	(MGG2),BC
 	LD	HL,3C00H+512
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 MGG2	DB	'00 Tracks assumed.'
 	DB	0
 	XOR	A
 	CALL	GOTRK
 	CALL	RESTOR
 	CALL	STEPIN
 	LD	DE,0100H
 GODLP1	LD	BC,BUFFER
 	LD	A,1
 	OUT	(0F1H),A
 	CALL	READ
 	JR	Z,MB80
 	RET
 NOTIT	LD	(ERRCODE),A
 	LD	A,(TRACKS)
 	DEC	A
 	CALL	ASCII
 	LD	(VVTT),BC
 	LD	HL,3C00H+832
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 	DB	'Cannot verify track '
 VVTT	DB	'00.'
 	DB	0
 	LD	A,0
 ERRCODE	EQU	$-1
 	POP	HL
 	JP	ERRORD
 MB80	LD	HL,3C00H+832
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 	DB	'Diskette may already have 80 Tracks.  <ENTER> or X to abort. '
 	DB	0
 	CALL	O40H
 	CP	'X'
 	JP	Z,ENTRY
 	CP	'D'
 	JP	Z,402DH
 	LD	HL,3C00H+832
 	LD	(4020H),HL
 	CALL	DISPLY
 	DW	1E1DH
 	DB	0
 	RET
 CHKSUM	LD	DE,RANDY
 	LD	HL,0
 	LD	A,44
 CHKLP	PUSH	AF
 	LD	A,(DE)
 	INC	DE
 	LD	C,A
 	LD	B,0
 	ADD	HL,BC
 	POP	AF
 	DEC	A
 	JR	NZ,CHKLP
 	LD	BC,3476
 	OR	A
 	SBC	HL,BC
 	RET	Z
 	LD	HL,4000H
 	LD	DE,4001H
 	LD	BC,0
 	LD	(HL),0
 	LDIR
 	RST	0
 O40Z	LD	A,14
 	PUSH	IY
 	PUSH	DE
 	CALL	33H
 	POP	DE
 	POP	IY
 	RET
 O40H	CALL	O40Z
 	PUSH	IY
 	PUSH	DE
 	CALL	2BH
 	POP	DE
 	POP	IY
 	OR	A
 	JR	Z,O40H+3
 OK0	PUSH	HL
 	PUSH	AF
 	LD	A,15
 	CALL	O40Z+2
 	POP	AF
 	LD	HL,(4020H)
 	CALL	UCASE
 	LD	(HL),A
 	POP	HL
 	RET
 UCASE	CP	60H
 	RET	C
 	AND	5FH
 	RET
 DSKSLO	PUSH	AF
 	POP	AF
 	PUSH	AF
 	POP	AF
 DSKSLO2	PUSH	AF
 	POP	AF
 	PUSH	AF
 	POP	AF
 	RET
 R1	LD	(BUFFSAVE),BC
 	LD	(SECSAVE),DE
 	CALL	DRVSETUP
 	RET	NZ
 	LD	BC,0F3H
 	CALL	SELECT
 	OR	40H
 	LD	D,A
 	LD	HL,IORET
 	LD	(404AH),HL
 	LD	A,0C3H
 	LD	(4049H),A
 	DI
 	LD	A,0C0H
 	OUT	(0E4H),A
 	LD	E,2
 	LD	HL,0
 BUFFSAVE	EQU	$-2
 	LD	A,80H
 	OUT	(0F0H),A
 	CALL	DSKSLO
 R100	IN	A,(0F0H)
 	AND	E
 	JR	Z,R100
 	INI
 	LD	A,D
 R101	OUT	(0F4H),A
 	INI
 	JP	R101
 IORET	POP	HL
 	XOR	A
 	OUT	(0E4H),A
 	LD	BC,(BUFFSAVE)
 	INC	B
 	CALL	DSKSLO2
 	IN	A,(0F0H)
 	AND	9DH
 	LD	DE,0
 SECSAVE	EQU	$-2
 	RET	Z
 	PUSH	AF
 	LD	A,0D0H
 	OUT	(0F0H),A
 	DEC	B
 	POP	AF
 	RET
 DRVSETUP	CALL	SELECT
 	LD	A,D
 	OUT	(0F3H),A
 	LD	A,(SPBYTE)
 	AND	3
 	OR	18H
 	OUT	(0F0H),A
 	CALL	DSKSLO
 DRVS1	IN	A,(0F0H)
 	BIT	0,A
 	JR	NZ,DRVS1
 	AND	18H
 	PUSH	AF
 	LD	A,E
 	OUT	(0F2H),A
 	POP	AF
 	RET
 W1	CALL	DRVSETUP
 	RET	NZ
 W0	LD	(BUFFSAVE),BC
 	LD	BC,0F3H
 	LD	(SECSAVE),DE
 	LD	A,(DRIVE)
 	OR	80H
 	OUT	(0F4H),A
 	LD	D,A
 	LD	HL,IORET
 	LD	(404AH),HL
 	LD	A,0C3H
 	LD	(4049H),A
 	DI
 	LD	A,0C0H
 	OUT	(0E4H),A
 	LD	E,2
 	LD	HL,(BUFFSAVE)
 	LD	A,(TYPE)
 	OUT	(0F0H),A
 	CALL	DSKSLO
 WR100	IN	A,(0F0H)
 	AND	E
 	JR	Z,WR100
 	OUTI
 	LD	B,64H
 	DJNZ	$
 	LD	A,D
 	OR	40H
 WR101	OUT	(0F4H),A
 	OUTI
 	JP	WR101
 HEXCV	LD	C,A
 	SRL	A
 	SRL	A
 	SRL	A
 	SRL	A
 	CALL	HEXTST
 	LD	L,A
 	LD	A,C
 	AND	0FH
 	CALL	HEXTST
 	LD	H,A
 	RET
 HEXTST	ADD	A,30H
 	CP	3AH
 	RET	M
 	ADD	A,7
 	RET
 ORDNEW	PUSH	IX
 	PUSH	BC
 	LD	IX,ORDER
 	LD	B,18
 	LD	A,(IX+17)
 ORDLP	LD	C,(IX)
 	LD	(IX),A
 	LD	A,C
 	INC	IX
 	DJNZ	ORDLP
 	POP	BC
 	POP	IX
 	RET
 	END	START
 	ADD	A,7
 	RET
 ORDNEW	PUSH	IX
 	PUSH	BC
 	LD	IX,ORDER
 	LD	B,18
 	LD	A,(IX+17)
 ORDLP	LD	C,(IX)
 	LD	(IX),A
 	LD	A,C
 	INC	IX
 	DJNZ	ORDLP
 	POP	BC
 	POP	IX
 	RET
 	0H
 	OUT	(0E4H),A
 	LD	E,2
 	LD	HL,0
 BUFFSAVE	EQU	$-2
 	LD	A,80H
 	OUT	(0F0H),A
 	CALL	DSKSLO
 R100	IN	A,(0F0H)
 	AND	E
 	JR	Z,R100
 	INI
 	LD	A,D
 	OR	40H
 R101	OUT	(0F4H),A
 	INI
 	JP	R101
 IORET	POP	HL
 	XOR	A
 	OUT	(0E4H),A
 	LD	A,(DRIVE)
 	LD	BC,(BUFFSAVE)
 	INC	B
 	OR	80H
 	OUT	(0F4H),A
 	CALL	DSKSLO2
 	IN	A,(0F0H)
 	AND	1DH
 	POP	DE
 	RET	Z
 	PUSH	AF
 	LD	A,0D0H
 	OUT	(0F0H),A
 	DEC	B
 	POP	AF
 	RET
 DRVSETUP	LD	A,(DRIVE)
 	OR	80H
 	OUT	(0F4H),A
 	LD	A,D
 	OUT	(0F3H),A
 	LD	A,(SPEED)
 	AND	3
 	OR	18H
 	OUT	(0F0H),A
 	CALL	DSKSLO2
 DRVS1	IN	A,(0F0H)
 	BIT	0,A
 	JR	NZ,DRVS1
 	LD	A,E
 	OUT	(0F2H),A
 	RET
 	END	START
	OUT	(0F4H),A
 	LD	A,D
 	OUT	(0F3H),A
 	LD	A,(SPEED)
 	AND	3
 	OR	18H
 	OUT	(0F0H),A
 	CALL	DSKSLO2