N CT14
;
; MAGNETBANDBEDIENUNG MCS 80
;
; KONSTANTEN
EAW:	DEF	00001000B	;KENNZEICHEN FUER EINGABEBIT
;
SELEC:	LD	HL,MENUE
	CALL	MC.TXS
	CALL	MC.BKL
	LD	C,1
	CALL	MC.BBZ
	CALL	MC.BSL
	CMP	'W'
	LD	HL,WRT
	JRZ	KOA-#
	CMP	'R'
	RNZ
	LD	HL,RDT
KOA:	LD	DE,KOE
	PUSH	DE
	PUSH	HL
	LD	A,MC.CLEAR
	CALL	MC.BSN
	SUB	A
	LD	(RM.FZR),A
	LD	DE,00100H
	CALL	MC.BKS
	LD	HL,TXA
	CALL	MC.TXS
	CALL	MC.BKL
	PUSH	DE	;POSITION RETTEN
	LD	HL,(RM.LOW)	;ALTEN WERT ALS VORGABE
	CALL	MC.HDS	;AUSGEBEN
	POP	DE	;ANFANGSPOSITION
	CALL	MC.HDA
	PUSH	HL
	LD	DE,00200H
	CALL	MC.BKS
	LD	HL,TXE
	CALL	MC.TXS
	CALL	MC.BKL
	PUSH	DE	;POSITION RETTEN
	LD	HL,(RM.HIG)	;ALTEN WERT ALS VORGABE
	CALL	MC.HDS	;AUSGEBEN
	POP	DE	;ANFANGSPOSITION
	CALL	MC.HDA
	CALL	MC.BKL
	INC	D
	CALL	MC.BKS
	POP	DE
	LD	(RM.HIG),HL
	AND	A
	SBC	HL,DE
	JRC	KOA-#
	LD	(RM.LOW),DE
	RET
WRT:	LD	DE,00FA0H
	DI		;INTERRUPT TASTATUR SPERREN
	LD	A,3	;
	OUT	IO.TBPIO+2	;
	OUT	IO.TACTC	;
	EI		;
	LD	A,087H
	OUT	IO.CTCTC
	LD	A,082H
	OUT	IO.CTCTC
MT1:	LD	HL,ISR
	LD	(IV.CTCTC),HL
	HALT
	LD	HL,ISW
	LD	(IV.CTCTC),HL
	HALT
	DEC	DE
	LD	A,D
	OR	E
	JRNZ	MT1-#
	NOP
	LD	HL,(RM.BNR)
	LD	DE,00308H
	CALL	MC.HDS
	EX	DE,HL
	LD	IX,0
	CALL	WHD
	LD	HL,(RM.LOW)
	LD	C,040H
MT3:	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	ADD	IX,DE
	CALL	WHD
	DEC	C
	JRNZ	MT3-#
	PUSH	IX
	POP	DE
	CALL	WHD
	LD	A,085H
	OUT	IO.CTCTC
	LD	A,082H
	OUT	IO.CTCTC
	HALT
	EX	DE,HL
	LD	HL,(RM.BNR)
	INC	HL
	LD	(RM.BNR),HL
	LD	HL,(RM.HIG)
	SBC	HL,DE
	EX	DE,HL
	LD	(RM.LOW),HL
	LD	DE,0000EH
	JRC	MT5-#
	LD	A,H
	OR	L
	JRNZ	MT1-#
MT5:	INC	D
MT6:	LD	HL,ISR
	LD	(IV.CTCTC),HL
	HALT
	LD	HL,ISW
	LD	(IV.CTCTC),HL
	HALT
	DEC	DE
	LD	A,D
	OR	E
	JRNZ	MT6-#
	HALT
	RET
KOE:	DI
	LD	A,3	;INTERRUPT TASTATUR FREIGEBEN
	OUT	IO.TAPIO	;
	LD	A,083H	;
	OUT	IO.TBPIO+2	;
	LD	A,003H
	OUT	IO.CTCTC
	EI
	LD	DE,00301H
	LD	A,(RM.FZR)
	AND	A
	JRZ	KE3-#
	CALL	MC.HBS
	LD	HL,TXX
	JR	KE4-#
KE3:	LD	HL,TXF
KE4:	CALL	MC.TXS
KE1:	CALL	MC.TST
	JRZ	KE1-#
	RET
WHD:	LD	B,010H
WH1:	SRL	D
	RR	E
	LD	A,085H
	OUT	IO.CTCTC
	JRC	WH2-#
	LD	A,041H
	OUT	IO.CTCTC
	HALT
	JR	WH3-#
WH2:	LD	A,082H
	OUT	IO.CTCTC
WH3:	HALT
	DJNZ	WH1-#
	RET
ISW:	PUSH	AF
	IN	IO.CTPIO
	XOR	L(EAW)
	OUT	IO.CTPIO
	POP	AF
ISR:	EI
	RETI
RDT:	LD	HL,(RM.HIG)
	LD	DE,(RM.LOW)
	AND	A
	SBC	HL,DE
	PUSH	DE
	POP	IY
	LD	DE,0
	LD	BC,00080H
MI1:	INC	DE
	SBC	HL,BC
	JRNC	MI1-#
MI2:	PUSH	DE
	LD	IX,0
	IN	IO.CTPIO
	LD	C,A
MI3:	LD	HL,(RM.BNR)
	LD	DE,00308H
	CALL	MC.HDS
	CALL	BIL
	CMP	001H
	JRNZ	MI3-#
	CALL	BIL
	CMP	001H
	JRNZ	MI3-#
	LD	L,010H
MI6:	CALL	BIL
	BIT	1,A
	JRNZ	MI3-#
	RRA
	RR	D
	RR	E
	DEC	L
	JRNZ	MI6-#
	LD	(RM.BNR),DE
	LD	H,040H
MI7:	LD	L,010H
MI8:	CALL	BIL
	BIT	1,A
	JRNZ	MI3-#
	RRA
	RR	D
	RR	E
	DEC	L
	JRNZ	MI8-#
	ADD	IX,DE
	LD	(IY),E
	INC	IY
	LD	(IY),D
	INC	IY
	DEC	H
	JRNZ	MI7-#
	LD	L,010H
MI9:	CALL	BIL
	BIT	1,A
	JRNZ	MI3-#
	RRA
	RR	D
	RR	E
	DEC	L
	JRNZ	MI9-#
	PUSH	IX
	POP	HL
	AND	A
	SBC	HL,DE
	LD	A,H
	OR	L
	JRZ	MI4-#
	LD	HL,RM.FZR
	INC	(HL)
MI4:	POP	DE
	DEC	DE
	LD	A,D
	OR	E
	JRNZ	MI2-#
	RET
BIL:	IN	IO.CTPIO
	CMP	C
	JRZ	BIL-#
	LD	C,A
	IN	IO.CTCTC
	LD	B,A
	LD	A,007H
	OUT	IO.CTCTC
	SUB	A
	OUT	IO.CTCTC
	LD	A,020H
	ADD	B
	CMP	040H
	JRC	BI2-#
	CMP	0C0H
	CCF
	JRNC	BI2-#
BI1:	IN	IO.CTPIO
	CMP	C
	JRZ	BI1-#
	LD	C,A
	IN	IO.CTCTC
	LD	B,A
	LD	A,007H
	OUT	IO.CTCTC
	SUB	A
	OUT	IO.CTCTC
	LD	A,0A0H
	CMP	B
	CCF
	JRC	BI2-#
	SUB	A
	RET
BI2:	LD	A,001H
	RNC
	INC	A
	RET
;
TXA:	DB	0A0H
	DB	'Beginn:'
TXE:	DB	0A0H
	DB	'End   :'
TXF:	DB	0A0H
	DB	'Fertig!'
TXX:	DB	0A0H
	DB	'Fehler!'
MENUE:	DB	L(MC.CLEAR+80H)
	DB	' Magnetband'
	DB	L(MC.ZBEG)
	DB	L(MC.DOWN)
	DB	' R - Lesen'
	DB	L(MC.ZBEG)
	DB	L(MC.DOWN)
	DB	' W - Schreiben'
	DB	L(MC.ZBEG)
	DB	L(MC.DOWN)
	DB	L(MC.DOWN)
	DB	' Auswahl:'
	DB	080H
;
	END

