GRZEI+  ASM;
; GRZEI.KCC - Gro~schrift mit Shift-CLR
;
; }berarbeitet zur Nutzung von Speicher
; ohne Konflikt mit der erweiterten
; Interrupttabelle f}r Joystick und
; externe Tastatur
;
;		` ML-Soft 10.05.1997
; -------------------------------------
;
;Arbeitszellen:
;
FACT	EQU 01DEH ;hor./vert. Faktor
CNT	EQU 01DCH ;hor./vert. Z{hler
CSR	EQU 01DBH ;int. Cursor
OTB	EQU 01DAH ;OUTAB-Zeiger 0/2
 
SIX	EQU 01F0H ;IX-Belegung
;
BUFFER	EQU	0B760H ;Zeichenmuster
HCADR	EQU	0B799H
CURSO	EQU	0B7A0H
CCTL0	EQU	0B7A6H
OUTAB	EQU	0B7B9H
UOUT1	EQU	0B7BDH
PV1	EQU	0F003H
CRT	EQU 00H
TCIF	EQU 33H
;
	ORG	0BC00H
;
AUTO	LD	DE,14	;???
	ADD	HL,DE
	JR	GRZ1
 
	DW	7F7FH
	DB	'GRZEI'
	DB	1
GRZ0	DI
	DEC	SP
	DEC	SP
	POP	HL
	EI
GRZ1	LD	DE,GRZEI-GRZ0
	ADD	HL,DE
	LD	(UOUT1+1),HL
	LD	DE,HCOPY-GRZEI
	ADD	HL,DE
	LD	(HCADR),HL
	LD	HL,0201H
	LD	(FACT),HL
	LD	(IX+OTB-SIX),0
	LD	HL,OTB
	LD	(OUTAB),HL
	RET
 
GRZEI	LD	C,A
	XOR	A
	LD	HL,(FACT)
	CP	L
	RET	Z	;L=0
	CP	H
	RET	Z	;H=0
	LD	DE,(CURSO)
	LD	A,C
	CP	20H
	JR	NC,CHAR	;Zeichen
	CP	0DH
	JR	Z,CRLF	;Enter
	CP	8
	JR	Z,LEFT	;links
	CP	9
	JR	Z,RIGHT	;rechts
	CP	0AH
	JR	Z,NOT	;runter
	CALL	PV1
	DB	CRT	;Steuerzeichen
NOT	RET
 
HCOPY	LD	A,(IX+OTB-SIX)
	XOR	2	;GRZEI ein/aus
	LD	(IX+OTB-SIX),A
	RET
 
;nach rechts
 
RIGHT	LD	A,L
	ADD	A
	DEC	A
	ADD	E
	LD	E,A
	CALL	PV1
	DB	TCIF
	JR	C,CRLF
	LD	A,E
	SUB	L
	INC	A
	LD	E,A
CURSDE	LD	(CURSO),DE
	RET
 
;nach links
 
LEFT	LD	A,E
	LD	C,L
	SUB	C
	LD	E,A
	JR	NC,CURSDE
	LD	A,D
	SUB	H
	NOP
	LD	D,A
	LD	E,-1
LFT1	LD	A,E
	ADD	C
	LD	E,A
	CALL	PV1
	DB	TCIF
	JR	NC,LFT1
	LD	A,E
	SUB	C
	SUB	C
	INC	A
	LD	E,A
	JR	CURSDE
 
;Zeichen anzeigen:
 
CHAR	LD	A,E
	ADD	L
	DEC	A
	LD	E,A
	CALL	PV1
	DB	TCIF
	JR	NC,CHAR1
CRLF	LD	B,H
	SLA	B
	DEC	B
	LD	A,0DH
	CALL	PV1
	DB	CRT
LF1	LD	A,0AH
	CALL	PV1
	DB	CRT	;CUD
	DJNZ	LF1
	LD	B,H
	DEC	B
	NOP
LF2	LD	A,0BH
	CALL	PV1
	DB	CRT	;CUU
	DJNZ	LF2
CHAR1	LD	A,(CURSO+1)
	LD	(IX+CSR-SIX),A
	LD	A,C
	LD	DE,CCTL0
	BIT	7,A
	JR	Z,UBCCD
	INC	E
	INC	E
	INC	E
	INC	E	;CCTL2
	RES	7,A
UBCCD	SUB	20H
	RET	C	;Steuerzeichen
	LD	HL,(CCTL0)
	PUSH	HL	;CCTL merken
	CP	40H
	JR	C,UBCDC
	INC	E	;CCTL1/3
	INC	E
	SUB	20H
UBCDC	LD	L,A
	LD	H,0
	ADD	HL,HL
	ADD	HL,HL
	ADD	HL,HL
	EX	DE,HL
	LD	A,M
	INC	HL
	LD	H,M
	LD	L,A
	ADD	HL,DE	;HL=Zeichenadr.
	LD	A,11H
	CALL	PV1	;PAGE-Modus
	DB	CRT
	LD	DE,BUFFER
	NOP
	PUSH	DE
	LD	BC,8
	LDIR		;Copy Muster
	LD	C,16
	POP	HL
	PUSH	HL
	ADD	HL,BC
	LD	(CCTL0),HL
	POP	HL
	LD	C,(IX+FACT+1-SIX)
	LD	(IX+CNT+1-SIX),C
	LD	B,(IX+FACT-SIX)
	LD	(IX+CNT-SIX),B
LOOP1	PUSH	HL
	PUSH	DE
	PUSH	BC
	LD	B,8
LOOP2	PUSH	BC
	LD	C,8
	XOR	A
	LD	B,(IX+CNT-SIX)
LOOP3	RLC	M
	RRC	M
	RLA
	DEC	C
	JR	Z,LOOP4
	DJNZ	LOOP3
	RLC	M
	LD	B,(IX+FACT-SIX)
	JR	LOOP3
 
LOOP4	LD	(DE),A
	DJNZ	LOOP5
	LD	B,(IX+FACT-SIX)
	RLC	M
LOOP5	LD	A,B
	INC	HL
	INC	DE
	POP	BC
	DJNZ	LOOP2
	LD	(IX+CNT-SIX),A
	NOP
	NOP
	NOP
	LD	B,C
	LD	C,8
LOOP6	PUSH	BC
	LD	B,(IX+CNT+1-SIX)
	PUSH	DE
LOOP7	LD	A,M
LOOP8	LD	(DE),A
	DEC	C
	JR	Z,LOOP9
	INC	DE
	DJNZ	LOOP8
	INC	HL
	LD	B,(IX+FACT+1-SIX)
	JR	LOOP7
 
LOOP9	DJNZ	LOOP10
	INC	HL
	LD	B,(IX+FACT+1-SIX)
LOOP10	LD	(IX+CNT+1-SIX),B
	PUSH	HL
	LD	HL,(CURSO)
	LD	A,20H
	CALL	PV1
	DB	CRT
	INC	H
	LD	(CURSO),HL
	POP	HL
	POP	DE
	POP	BC
	DJNZ	LOOP6
	LD	HL,CURSO
	INC	M
	INC	HL
	LD	A,(IX+CSR-SIX)
	LD	M,A
	POP	BC
	POP	DE
	POP	HL
	DJNZ	LOOP1
	POP	HL
	LD	(CCTL0),HL
	LD	A,12H	;Scroll
	CALL	UOUT1
	RET
À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: JNZ	LOOP1
	POP	HL
	LD	(CCTL0),HL
	LD	A,12H	;Scroll
	CALL	UOUT1
	RET
À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: 