mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.3 KiB
153 lines
4.3 KiB
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
|
|
|