Compucolor.org – Virtual Media

Listing of file='SUBS.MAC;06' on disk='vmedia/life-sector.ccvf'

;---------------------SUBROUTINE--------------------------
;
;	ERASE SCREEN
;
	EXTRN	OSTR

	ENTRY	ERASE

ERASE:	LXI	H,CLRMSG
	CALL	OSTR
	RET

CLRMSG:	6,2,12,15,27,24,239

;---------------------SUBROUTINE--------------------------
;
;	CURSOR
;
;	H,L --> DESIRED CURSOR POS
;	CURSLOC --> OLD POS
;
;	CURSLOC --> NEW POS
;
CURSCCI	EQU	8
NORMCCI	EQU	2

	PUBLIC	CURSLOC

	ENTRY	CURSOR

CURSOR: INX	H
	MVI	M,CURSCCI	;SET BKG/FGD COLOR FOR CURSOR
	DCX	H
	PUSH	H
	LHLD	CURSLOC
	INX	H
	MVI	M,NORMCCI	;SET OLD SPOT TO NORMAL COLORS
	POP	H
	SHLD	CURSLOC
	RET

CURSLOC:	DW	0

;---------------------SUBROUTINE--------------------------
;
;	LIMIT
;
;	HL CONTAINS INCREMENT IN CURSOR ADDRESS
;
;	RETURNS:
;	CARRY FLAG 0 - OK, WITHIN LIMITS
;			  HL -->DESIRED CURSOR POS
;		   1 - NOT OK. HL NOT VALID.
;
;	DESTROYS:
;	   DE, HL
;
	EXTRN	CMPHD
	EXTRN	BEGWR,ENDWR

	ENTRY	LIMIT

LIMIT:  XCHG
	LHLD	CURSLOC
	DAD	D
	XCHG
	LXI	H,ENDWR
	CALL	CMPHD
	RC
	LXI	H,BEGWR
	CALL	CMPHD
	CMC
	RC
	XCHG
	RET

;----------------------SUBROUTINE--------------------------
;
;	GETCH - GET A CHARACTER
;
READY	EQU	81FFH
KBCHA	EQU	81FEH

	ENTRY	GETCH

GETCH:  LDA	READY
	CPI	80H
	JNZ	GETCH	;IF 80H, A CHAR IS READY
	XRA	A
	STA	READY
	LDA	KBCHA
	RET

	END