Files
RomWBW/Source/Images/d_cobol/u0/CDBEE.MAC
2025-05-20 22:55:18 -04:00

157 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
TITLE CDBEE - CRT DRIVER FOR BEEHIVE 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 (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,"F"
CALL $OUTCH ;SEND "F"
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 BEEHIVE TERMINALS
;****************************************************
;
$CURON: ;NOT AVAILABLE ON BEEHIVE TERMINALS
$CUROF: RET ;NOT AVAILABLE ON BEEHIVE TERMINALS
;****************************************************
; ERASE TO END OF SCREEN
; [HL] = SEQUENTIAL CURSOR POSITION
;****************************************************
;
$ERASE: MVI A,ESCAPE
CALL $OUTCH ;SEND ESCAPE
MVI A,"J"
CALL $OUTCH ;SEND "J"
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,"K"
JMP $OUTCH ;SEND EOL CODE AND RETURN
;****************************************************
; SET/RESET BLINK MODE
;****************************************************
;
$HILIT:
MVI A,"l" ;START BLINK CODE
JMP LITE
$LOLIT:
MVI A,"m" ;STOP BLINK CODE
LITE: PUSH PSW
MVI A,ESCAPE
CALL $OUTCH ;SEND ESCAPE
POP PSW ;START/STOP 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