	.Z80
;	RCV.MAC
;	empfaengt Zeichen ueber die SIO-B
;	und speichert sie ab 200Hex ab.
;	Das Programm laeuft unter ZSID.
;	Der Empfang wird bei Tastendruck
;	abgebrochen. HL zeigt hinter das
;	letzte Zeichen. Die Zeichen koennen
;	nach 100Hex verschoben und ge-SAVE-t
;	werden.
;
	ENTRY RCV
SIOBC	EQU 6
SIOBD	EQU 4
ABUFF	EQU 200H
EBUFF	EQU 0AH
;
RCV:	JP START
REGS:	DEFB 11011000B	;RESET
	DEFB 4
	DEFB 11000100B	;9600 BD, 1 STOP BIT
	DEFB 5
	DEFB 11100000B	;DTR, TSM 8 BIT/CHAR
	DEFB 3
	DEFB 11000001B	;RCV 8 BIT/CHAR 
	DEFB 1
	DEFB 0H		;NO INTERRUPTS
;
START:	LD HL,REGS
	LD B,9
	LD C,SIOBC
	OTIR		;SIO-B INIT.
;
	LD HL,ABUFF	;BUFFER ANFANG
	LD D,EBUFF	;UND -ENDE
	LD E,1		;BIT-MASKE
;
LOOP:	IN A,(SIOBC)	;ZEICHEN DA?
	AND E		;FALLS NICHT,
	JP Z,GETSTA	;CONSOLE ABFRAGEN.
;
	IN A,(SIOBD)	;SONST ZEICHEN
	LD (HL),A	;UEBERNEHMEN
	INC HL		;UND ABLEGEN.
	LD A,D		;BUFFER-ENDE
	CP H		;ERREICHT?
	JP Z,READY
;
GETSTA:	PUSH DE
	PUSH HL
	LD C,11		;GET CONSOLE STATUS
	CALL 0005
	POP HL
	POP DE
	OR A
	JP Z,LOOP
;
READY:	DEFB 0FFH	;RST 38H = RETURN TO ZSID
	END
