CR EQU 0DH LF EQU 0AH ; ; ISIS CALLS ; OPEN EQU 0 CLOSE EQU 1 READ EQU 3 WRITE EQU 4 EXIT EQU 9 ERROR EQU 12 ; TTYI EQU 0F4H TTYO EQU 0F4H TTYS EQU 0F5H TTYC EQU 0F5H ; TRDY EQU 00000001B RRDY EQU 00000010B ; DTR EQU 00000010B ; EXTRN ISIS EXTRN CO EXTRN CI ; CSEG ; HELP: LXI SP,STK+4 ; LXI H,HELPMSG-1 HELP0: INX H MOV A,M CPI 0 JZ LISTEN MOV C,M CALL CRTOUT ; CALL CI ; ANI 07FH ; CPI CR ; JZ ABORT JMP HELP0 ; LISTEN: CALL CRTIN ANI 07FH MOV C,A ; COPY TO C CPI 03EH ; IS IT ">"? JNZ NOTEND LDA BUFFER ; GET LAST CHAR CPI 05CH ; WAS IT "\"? JZ DONE NOTEND: MOV A,C ; STA BUFFER ; SAVE AS LAST CHAR CALL CO ; AND PRINT IT ON SCREEN JMP LISTEN ; HELPMSG: DB 'HELP',CR,0 ERRMSG: DB CR,'USER ABORTED',CR,LF,0 ; ABORT: LXI H,ERRMSG-1 ABORT0: INX H MOV A,M CPI 0 JZ DONE MOV C,M CALL CO JMP ABORT0 ; DONE: MVI C,CR ; FINISH OFF WITH CF, LF CALL CO MVI C,LF CALL CO MVI C,EXIT LXI D,XBLK CALL ISIS ; DSEG XBLK: DW STATUS EBLK: STATUS: DS 2 DW STATUS ; BUFFER: DS 128 ; STK: DS 4 ; CSEG ; CRTOUT: IN 0F7H ANI TRDY JZ CRTOUT MOV A,C OUT 0F6H RET ; CRTIN: IN 0F7H ANI RRDY JZ CRTIN IN 0F6H RET ; END HELP