;
;               TERMINAL TEST PROGRAM
;               BY RODERICK W. HART
;               DEC. 1,1980
;
TPORT   EQU     0C0H    ;MODEM UART CONTROL/STATUS PORT
DPORT   EQU     TPORT+1 ;MODEM DATA PORT
P0TBMT  EQU     1       ;XMIT BUFF EMPTY
P0DAV   EQU     2       ;DATA AVAILABLE
VDM     EQU     0F800H  ;VDM-1 DRIVER
STACK   EQU     080H    ;DMA ADDRESS
CR      EQU     0DH     ;ASCII CARRIAGE RETURN
LF      EQU     0AH     ;ASCII LINE FEED
BEL     EQU     07H     ;ASCII BELL
;
;
       ORG     100H
;
START   LXI     SP,STACK        ;LOAD STACK POINTER
;
TEST    MVI     A,CR    ;LOAD A WITH CARRIAGE RETURN
       CALL    TTYOUT  ;PRINT CARRIAGE RETURN
       MVI     A,LF    ;LOAD A WITH LINE FEED
       CALL    TTYOUT  ;PRINT LINE FEED
       MVI     A,BEL   ;LOAD A WITH BELL
       CALL    TTYOUT  ;RING BELL
       MVI     A,0A0H  ;THE FIRST CHARACTER TO SEND
;
NXTCHR  CPI     0E0H    ;LAST CHARACTER TO BE PRINTED
       JZ      CHECK   ;CHECK FOR STOP COMMAND
       CALL    TTYOUT  ;PRINT CHARACTER
       INR     A       ;INCREMENT THE CHAR VALUE
       JMP     NXTCHR
;
CHECK   IN      TPORT   ;GET MODEM STATUS
       ANI     P0DAV   ;DATA AVAILABLE?
       JZ      TEST    ;RETURN IF NOT INTERRUPTED
       IN      DPORT   ;CLEAR DATA PORT
       JMP     0       ;STOP TEST
;
TTYOUT  MOV     B,A     ;SAVE THE CHARACTER IN B
TTYO    IN      TPORT   ;GET STATUS
       ANI     P0TBMT  ;CHECK XMIT BUFFER
       JZ      TTYO    ;LOOP WHILE WAITING FOR TRANSMITTER
       CALL    VDM     ;OUTPUT TO CONSOLE
       MOV     A,B     ;GET CHARACTER
       OUT     DPORT   ;SENT IT TO MODEM
       RET
;
       END