TITLE CDZEPH - CRT DRIVER FOR ZENTEC ZEPHR TERMINAL ;********************************************************************** ;*** *** ;*** COPYRIGHT (C) 1980, MICROSOFT *** ;*** *** ;********************************************************************** ENTRY $CRWID,$CRLEN,$CURON,$CUROF,$CURBK ENTRY $SETCR,$ERASE,$ALARM ENTRY $CLIST,$TLIST,$FLIST ENTRY $EOL,$HILIT,$LOLIT ENTRY $INCRT,$OUCRT EXT $OUTCH,$INKEY ;**************************************************** ; KEYBOARD CODE DEFINITIONS ;**************************************************** ; $CLIST: ;EDITING KEY DEFINITIONS DB X'15' ;LINE DELETE (CTL-U) DB X'7F' ;CHAR DELETE (DEL) DB X'06' ;FORWARD SPACE (CTL-F) DB X'08' ;BACK SPACE (CTL-H) DB X'2B' ;PLUS SIGN DB X'2D' ;MINUS SIGN DB 0 ;END OF LIST $TLIST: ;TERMINATOR KEY DEFINITIONS DB X'02' ;BACKTAB (CTL-B) DB X'1B' ;ESCAPE (ESC) DB X'0D' ;CARRIAGE RETURN DB X'09' ;TAB (CTL-I) DB X'0A' ;LINE FEED DB 0 ;END OF LIST $FLIST: ;FUNCTION KEY DEFINITIONS DB X'01' ;CTL-A DB X'03' ;CTL-C DB X'18' ;CTL-X DB 0 ;END OF LIST ;**************************************************** ; TERMINAL SCREEN DIMENSIONS ;**************************************************** ; $CRLEN: DB 24D ;24 LINES $CRWID: DB 80D ;80 COLUMNS ;**************************************************** ; TERMINAL OUTPUT CODES ;**************************************************** ; ESCAPE EQU X'1B' BSPACE EQU X'08' BELL EQU X'07' ;**************************************************** ; O U T P U T F U N C T I O N S ;**************************************************** ; SET CURSOR POSITION ; [H] = ROW NUMBER ; [L] = COLUMN NUMBER ;**************************************************** ; $SETCR: MVI A,ESCAPE CALL $OUTCH ;SEND ESCAPE MVI A,"0" CALL $OUTCH ;SEND "0" MOV A,H ADI 31D ;ADJUST ROW NUMBER CALL $OUTCH ;SEND ROW MOV A,L ADI 31D ;ADJUST COLUMN NUMBER JMP $OUTCH ;SEND COLUMN AND RETURN ;**************************************************** ; BACKSPACE CURSOR ;**************************************************** ; $CURBK: MVI A,BSPACE JMP $OUTCH ;SEND BACKSPACE AND RETURN ;**************************************************** ; CURSOR ON/OFF - NOT AVAILABLE ON ZENTEC ZEPHR ;**************************************************** ; $CURON: ;NOT AVAILABLE ON ZENTEC ZEPHR $CUROF: RET ;NOT AVAILABLE ON ZENTEC ZEPHR ;**************************************************** ; ERASE TO END OF SCREEN ; [HL] = SEQUENTIAL CURSOR POSITION ;**************************************************** ; $ERASE: MVI A,ESCAPE CALL $OUTCH ;SEND ESCAPE MVI A,"Y" CALL $OUTCH ;SEND "Y" MVI D,10 XRA A ;NULL CHARACTER ERNULL: CALL $OUTCH ;SEND NULL DCR D ;COUNT 10 OF THEM JNZ ERNULL RET ;**************************************************** ; SOUND AUDIBLE TONE ;**************************************************** ; $ALARM: MVI A,BELL JMP $OUTCH ;SEND BELL CODE AND RETURN ;**************************************************** ; ERASE TO END OF LINE ; [H] = CURRENT ROW NUMBER ; [L] = CURRENT COLUMN NUMBER ;**************************************************** ; $EOL: MVI A,ESCAPE CALL $OUTCH ;SEND ESCAPE MVI A,"T" JMP $OUTCH ;SEND EOL CODE AND RETURN ;**************************************************** ; SET/RESET REVERSE VIDEO MODE ;**************************************************** ; $HILIT: MVI A,"4" ;REVERSE VIDEO CODE JMP LITE $LOLIT: MVI A,"0" ;NORMAL VIDEO CODE LITE: PUSH PSW MVI A,ESCAPE CALL $OUTCH ;SEND ESCAPE MVI A,"G" CALL $OUTCH ;SEND "G" POP PSW ;VIDEO CODE JMP $OUTCH ;SEND AND RETURN ;**************************************************** ; INPUT CHARACTER FROM TERMINAL ;**************************************************** ; $INCRT: JMP $INKEY ;GET KEY AND RETURN ;**************************************************** ; OUTPUT CHARACTER TO TERMINAL ;**************************************************** ; $OUCRT: JMP $OUTCH ;PUT CHARACTER AND RETURN END