DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦303a15acc⟧ TextFile

    Length: 4480 (0x1180)
    Types: TextFile
    Names: »CDANSI.MAC«

Derivation

└─⟦811637d18⟧ Bits:30005383 Microsoft COBOL-80 v4.01
    └─ ⟦this⟧ »CDANSI.MAC« 

TextFile

	TITLE	CDANSI - CRT DRIVER FOR ANSI STANDARD TERMINAL
	
	.8080

;**********************************************************************
;***                                                                ***
;***	COPYRIGHT (C) 1980, MICROSOFT                               ***
;***                                                                ***
;**********************************************************************

	ENTRY	$CRWID,$CRLEN,$CURON,$CUROF,$CURBK
	ENTRY	$SETCR,$ERASE,$ALARM
	ENTRY	$EOL,$HILIT,$LOLIT
	ENTRY	$CLIST,$TLIST,$FLIST

	EXT	$OUTCH

;****************************************************
; KEYBOARD CODE DEFINITIONS
;****************************************************
;

$CLIST:				;EDITING KEY DEFINITIONS
	DB	15H		;LINE DELETE (CTRL-U)
	DB	7FH		;CHAR DELETE (DEL,RUB)
	DB	06H		;FORWARD SPACE (CTRL-F)	
	DB	08H		;BACK SPACE (CTRL-H)
	DB	2BH		;PLUS SIGN
	DB	2DH		;MINUS SIGN
	DB	00H		;END OF LIST

$TLIST:				;TERMINATOR KEY DEFINITIONS
	DB	02H		;BACKTAB (CTL-B)
	DB	1BH		;ESCAPE KEY (ESC)
	DB	09H		;FORWARD TAB (CTL-I)
	DB	0DH		;CARRIAGE RETURN
	DB	0AH		;LINE FEED
	DB	00H		;END OF LIST

$FLIST:				;FUNCTION KEY DEFINITIONS
	DB	01H		;CTL-A
	DB	03H		;CTL-C
	DB	18H		;CTL-X
	DB	00H

;****************************************************
; TERMINAL SCREEN DIMENSIONS
;****************************************************
;
$CRLEN:	DB	24D	;24 LINES
$CRWID:	DB	80D	;80 COLUMNS

;****************************************************
; TERMINAL OUTPUT CODES
;****************************************************
;
ESCAPE	EQU	1BH
BSPACE	EQU	08H
BELL	EQU	07H

;****************************************************
;	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:
	CALL	SETUP		;SEND ESC Æ
	MOV	A,H
	CALL	SEND2		;SEND LINE
	MVI	A,";"
	CALL	$OUTCH		;SEND SEPARATOR
	MOV	A,L
	CALL	SEND2		;SEND COLUMN
	MVI	A,"f"
	JMP	$OUTCH		;SEND END CODE AND RETURN

;****************************************************
; BACKSPACE CURSOR
;****************************************************
;
$CURBK:	MVI	A,BSPACE	;BACKSPACE
	JMP	$OUTCH

;****************************************************
; CURSOR ON/OFF
;****************************************************
;
$CURON:	MVI	A,"l"		;RESET MODE
	JMP	CURSW
$CUROF:	MVI	A,"h"		;SET MODE
CURSW:	PUSH	PSW
	CALL	SETUP		;SEND ESC Æ
	MVI	A,">"
	CALL	$OUTCH		;SEND >
	MVI	A,"5"		;MODE NUMBER 5
	CALL	$OUTCH
	POP	PSW
	JMP	$OUTCH		;SEND SET/RESET

;****************************************************
; ERASE TO END OF SCREEN
;	ÆHLÅ = SEQUENTIAL CURSOR POSITION
;****************************************************
;
$ERASE:	MVI	A,"J"		;ERASE EOS CODE
ERASE:	PUSH	PSW
	CALL	SETUP		;SEND ESC Æ
	MVI	A,"0"
	CALL	$OUTCH		;SEND 0
	POP	PSW
	JMP	$OUTCH		;SEND EOS/EOL CODE AND RETURN

;****************************************************
; ERASE TO END OF LINE
;	ÆHÅ = CURRENT ROW NUMBER
;	ÆLÅ = CURRENT COLUMN NUMBER
;****************************************************
;
$EOL:	MVI	A,"K"		;ERASE EOL CODE
	JMP	ERASE

;****************************************************
; SOUND AUDIBLE TONE
;****************************************************
;
$ALARM:	MVI	A,BELL
	JMP	$OUTCH		;SEND BELL CODE AND RETURN

;****************************************************
; SET/RESET HIGHLIGHTED VIDEO MODE
;****************************************************
;
$HILIT:	MVI	A,"7"		;REVERSE VIDEO CODE
	JMP	LITE
$LOLIT:	MVI	A,"0"		;STOP REVERSE CODE
LITE:	PUSH	PSW
	CALL	SETUP		;SEND ESC Æ
	POP	PSW
	CALL	$OUTCH		;SEND SET/RESET REVERSE
	MVI	A,"m"
	JMP	$OUTCH		;SEND END CODE AND RETURN

;****************************************************

SETUP:	MVI	A,ESCAPE
	CALL	$OUTCH
	MVI	A,"Æ"
	JMP	$OUTCH

;****************************************************

SEND2:	CALL	BTOA		;CONVERT BINARY TO 2 ASCII DIGITS
	PUSH	B		;SAVE RESULT
	MOV	A,B
	CALL	$OUTCH		;SEND HIGH-ORDER DIGIT
	POP	B
	MOV	A,C
	JMP	$OUTCH		;SEND LOW-ORDER DIGIT

;****************************************************

BTOA:	MVI	B,"0"
BTOA1:	SUI	10
	JC	BTOA2		;IF < 0
	INR	B		;INCREMENT HIGH DIGIT
	JMP	BTOA1
BTOA2:	ADI	10+"0"		;RESTORE & CONVERT LOW DIGIT
	MOV	C,A
	RET

	END
«eof»