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

153 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 CDHZ15 - CRT DRIVER FOR HAZELTINE 1500 TERMINALS
;**********************************************************************
;*** ***
;*** COPYRIGHT (C) 1980, MICROSOFT ***
;*** ***
;**********************************************************************
ENTRY $CRWID,$CRLEN,$CURON,$CUROF,$CURBK
ENTRY $SETCR,$ERASE,$ALARM
ENTRY $EOL,$HILIT,$LOLIT
ENTRY $CLIST,$TLIST,$FLIST
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'5D' ;FORWARD SPACE (])
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'5C' ;BACKTAB (\)
DB X'1B' ;ESCAPE KEY (ESC)
DB X'09' ;FORWARD TAB (TAB)
DB X'0D' ;CARRIAGE RETURN
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
;****************************************************
;
LEADIN EQU X'7E'
DC1 EQU X'11'
CAN EQU X'18'
US EQU X'1F'
EM EQU X'19'
SI EQU X'0F'
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,LEADIN
CALL $OUTCH ;SEND LEADIN
MVI A,DC1
CALL $OUTCH ;SEND DC1
MOV A,L
DCR A ;ADJUST COLUMN
CPI 32 ;LESS THAN 32?
JNC SETC1 ;NO
ADI 96 ;YES, USE ALTERNATE
SETC1: CALL $OUTCH ;SEND COLUMN
MOV A,H
ADI 31D ;ADJUST ROW NUMBER
JMP $OUTCH ;SEND ROW AND RETURN
;****************************************************
; BACKSPACE CURSOR
;****************************************************
;
$CURBK: MVI A,BSPACE
JMP $OUTCH ;SEND BACKSPACE CODE
;****************************************************
; CURSOR ON/OFF - NOT AVAILABLE ON HAZELTINE 1500
;****************************************************
;
$CURON: ;NOT AVAILABLE ON HAZELTINE 1500
$CUROF: RET ;NOT AVAILABLE ON HAZELTINE 1500
;****************************************************
; ERASE TO END OF SCREEN
; [HL] = SEQUENTIAL CURSOR POSITION
;****************************************************
;
$ERASE: MVI A,CAN ;EOS CODE
JMP SEND ;SEND LEADIN CAN
;****************************************************
; 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,SI ;EOL CODE
JMP SEND ;SEND LEADIN SI
;****************************************************
; SET/RESET HIGH INTENSITY MODE
;****************************************************
;
$HILIT: MVI A,US ;HIGH INTENSITY CODE
JMP SEND
$LOLIT: MVI A,EM ;NORMAL INTENSITY CODE
SEND: PUSH PSW ;SAVE CONTROL CODE
MVI A,LEADIN
CALL $OUTCH ;SEND LEADIN
POP PSW
JMP $OUTCH ;SEND 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