;TERMLOOP.OPT	Hand-optimized version of TERMLOOP.MAC from TERMLOOP.C
; 27 Mar 1988

	.Z80
	CSEG
	EXTRN	?NFILE
	EXTRN	?IOB
	EXTRN	INPUT
	EXTRN	OUTPUT
	EXTRN	FORMAT
	EXTRN	MODE
	EXTRN	MASK
	EXTRN	CSET
	EXTRN	BUFCLR
	EXTRN	HSTPPD
	EXTRN	XONKEY
	EXTRN	PASSLF
	EXTRN	ECHO
	EXTRN	DSPCTL
	EXTRN	VTEMUL
	EXTRN	VTINIT
	EXTRN	PRTLOG
	EXTRN	RULER
	EXTRN	SIO?RE
	EXTRN	PIO?B0
	EXTRN	PAR
	EXTRN	RECEIV
	EXTRN	SEND
	EXTRN	R?KBD
	EXTRN	DISPLA
IOLOOP::
	ADD	HL,SP
	POP	BC
	EX	DE,HL
	LD	HL,-1
	ADD	HL,SP
	LD	SP,HL
	PUSH	BC
	PUSH	DE
	DSEG
P.24:	DEFS	1,0
P.25:	DEFS	1,0
P.26:	DEFS	1,0
	CSEG
	LD	HL,P.26
	LD	(HL),1 MOD 256
L.31:
	LD	HL,2
	CALL	RECEIV
	LD	L,(HL)
	LD	H,0
	EX	DE,HL
	LD	HL,P.24
	LD	(HL),E
;	LD	L,(HL)
;	LD	H,0
;	LD	A,L
;	OR	H
	ld	a,e
	or	a
	JP	Z,L.36
	LD	HL,P.24
	LD	L,(HL)
	LD	H,0
	PUSH	HL
	LD	HL,4
	CALL	DISPLA
L.36:
	LD	HL,P.26
;	LD	L,(HL)
;	LD	H,0
;	CALL	$AOI##
;	LD	A,L
;	OR	H
;	JP	Z,L.38
	ld	a,(hl)		;if (clear ...
	or 	a
	jp	z,l.43
	LD	HL,2		;... && (och=r_kbd()) ...
	CALL	R?KBD
	LD	L,(HL)
	LD	H,0
	EX	DE,HL
	LD	HL,P.25
	LD	(HL),E
;	LD	L,(HL)
;	LD	H,0
;	CALL	$AOI##
;L.38:
;	CALL	$AOI##
;	LD	A,L
;	OR	H
;	JP	Z,L.40
	ld	a,e
	or	a
	jp	z,l.32
	LD	HL,P.25		;... && !send(och)) ...
	LD	L,(HL)
	LD	H,0
	PUSH	HL
	LD	HL,4
	CALL	SEND
;	LD	L,(HL)
;	LD	H,0
;	CALL	$LNI##
;	CALL	$AOI##
;L.40:
;	LD	A,L
;	OR	H
;	JP	Z,L.42
	ld	a,(hl)
	or	a
	jp	nz,l.32
	LD	HL,P.26		;... clear = FALSE;
	LD	(HL),0 MOD 256
	jp	l.43
L.42:
	LD	HL,P.26		;if (!clear ...
;	LD	L,(HL)
;	LD	H,0
;	CALL	$LNI##
;	CALL	$AOI##
;	LD	A,L
;	OR	H
;	JP	Z,L.44
	ld	a,(hl)
	or	a
	jp	nz,l.45
l.43:
	LD	HL,P.25		;... && send(och)) ...
	LD	L,(HL)
	LD	H,0
	PUSH	HL
	LD	HL,4
	CALL	SEND
;	LD	L,(HL)
;	LD	H,0
;	CALL	$AOI##
;L.44:
;	LD	A,L
;	OR	H
	ld	a,(hl)
	or	a
	JP	Z,L.45
	LD	HL,P.26		;... clear = TRUE;
	LD	(HL),1 MOD 256
L.45:
L.32:
;	LD	HL,1
;	LD	A,L
;	OR	H
;	JP	Z,L.33
	JP	L.31
;L.33:
;	JP	$RTNV##
	END
