LSTAT	EQU  CSTAT		;LIST STATUS PORT.
LCOM	EQU  2		;LIST COMMAND PORT.
LDATA	EQU  CDATA		;LIST DATA PORT.
LRBIT	EQU  CPTR	;LIST READY BIT.
LNULL	EQU  2		;LIST NULL COUNT.

;
; WRITE A CHARACTER ON LISTING DEVICE.
;
LIST:
	IF NOT VDM	;IF NOT PROC TECH VDM,
	MVI  A,0DH	;IF IT'S A CR,
	CMP  C		;THEN HOP OUT TO
	JZ   LINUL	;NULL ROUTINE.
	ENDIF

LIST1:	IN   LSTAT	;READ LISTER STATUS.
	ANI  LRBIT	;LOOK AT READY BIT.

	IF   STD	;IF STANDARD I/O,
	JNZ  LIST1	;READY WHEN LOW.
	ENDIF

	IF   SIO2	;IF MITS, IMSAI, CROM.,
	JZ   LIST1	;READY WHEN HIGH.
	ENDIF

	IF  OTHER	;IF ANYTHING ELSE,
	JZ  LIST1	;READY WHEN HIGH.
	ENDIF

	MOV  A,C	;GET DATA BYTE.
	OUT  LDATA	;PRINT IT.
	RET		;RETURN FROM LIST.

	IF NOT VDM	;IF NOT PROC TECH VDM,
LINUL:	PUSH B		;SAVE B&C.
	MVI  B,LNULL	;GET NULL COUNT.
LINUL1:	CALL LIST1	;PRINT (CR FIRST).
	MVI  C,0	;GET NULL CHAR.
	DCR  B		;DECREMENT COUNTER.
	JNZ  LINUL1	;DO NEXT NULL.
	POP  B		;RESTORE B&C.
	MOV  A,C	;RESTORE A.
	RET		;RETURN FROM LIST.
	ENDIF