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