TITLE CDPERK - CRT DRIVER FOR PERKIN-ELMER TERMINALS ;********************************************************************** ;*** *** ;*** 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 (CTRL-U) DB X'7F' ;CHAR DELETE (DEL) DB X'06' ;FORWARD SPACE (CTRL-F) DB X'08' ;BACK SPACE (BACK SPACE) DB X'2B' ;PLUS SIGN DB X'2D' ;MINUS SIGN DB 0 ;END OF LIST $TLIST: ;TERMINATOR KEY DEFINITIONS DB X'02' ;BACKTAB (CTRL-B) DB X'1B' ;ESCAPE (ESC) DB X'0D' ;CARRIAGE RETURN DB X'09' ;TAB (CTRL-I) DB X'0A' ;LINE FEED DB 0 ;END OF LIST $FLIST: ;FUNCTION KEY DEFINITIONS DB X'01' ;CTRL-A DB X'03' ;CTRL-C DB X'18' ;CTRL-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,"X" CALL $OUTCH ;SEND "X" MOV A,H ADI 31D ;ADJUST ROW NUMBER CALL $OUTCH ;SEND ROW MVI A,ESCAPE CALL $OUTCH ;SEND ESCAPE MVI A,"Y" CALL $OUTCH ;SEND "Y" 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 PERKIN-ELMER TERMINALS ; HIGHLIGHT VIDEO - NOT AVAILABLE ON PERKIN-ELMER TERMINALS ;**************************************************** ; $HILIT: $LOLIT: $CURON: $CUROF: RET ;NOT AVAILABLE ON PERKIN-ELMER TERMINALS ;**************************************************** ; ERASE TO END OF SCREEN ; [HL] = SEQUENTIAL CURSOR POSITION ;**************************************************** ; $ERASE: MVI A,ESCAPE CALL $OUTCH ;SEND ESCAPE MVI A,"J" JMP $OUTCH ;SEND "J" AND RETURN ;**************************************************** ; 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,"I" JMP $OUTCH ;SEND EOL CODE 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