Compucolor.org – Virtual Media

Listing of file='TEST2.MAC;0F' on disk='vmedia/sound_light_pen-sector.ccvf'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	LIGHT-PEN DRAWING PROGRAM
;
;	USE THE PEN TO DEFINE POINTS WHERE AN ASTERISK WILL
;	BE PLACED. IF AN ASTERISK IS ALREADY THERE, IT WILL
;	BE REMOVED.
;
	EXTRN	JMPVEC,CO,OSTR,LTPEN,XYADDR

	PLUS	EQU	'+'
	STAR	EQU	'*'

	KBCHA	EQU	81FEH
	READY	EQU	81FFH

TEST:	CALL	JMPVEC	;SETUP FOR I/O
	XRA	A
	STA	KBCHA
	STA	READY
	LXI	H,STMSG	;PRINT INSTRUCTIONS
	CALL	OSTR
T5:	LDA	KBCHA	;WAIT FOR USER TO READ THEM
	ORA	A
	JZ	T5

	XRA	A
	STA	KBCHA
	STA	READY
	LXI	H,FILLSC	;FILL SCREEN WITH PLUS SIGNS
	CALL	OSTR

T10:	CALL	LTPEN	;READ PEN
	PUSH	B
	CALL	XYADDR	;GET REFRESH RAM ADDRESS
	MOV	A,M
	CPI	STAR	;SEE IF A STAR
	JZ	T15	;YES
	MVI	M,STAR	;NO, STORE ONE
	INX	H
	MVI	M,1	;MAKE IT RED
	JMP	D1

T15:	MVI	M,PLUS	;STORE A PLUS SIGN
	INX	H
	MVI	M,2	;AND MAKE IT GREEN

D1:	LXI	H,0A000H
D2:	DCR	L	;WASTE TIME TO AVOID
	JNZ	D2	;   ACCIDENTALLY INITIATING
	DCR	H	;   ANOTHER SCAN
	JNZ	D2
	JMP	T10

FIN:	MVI	B,0
	RET
;
;	INSTRUCTIONS
;
STMSG:	DB	14,6,3,12,29
	DB	'LIGHT-PEN DRAWING PROGRAM'
	DB	15,13,10,10,6,6
	DB	'THE SENSITIVITY MUST BE ADJUSTED SO THAT THE'
	DB	' PEN',13,10
	DB	'RESPONDS CORRECTLY. A RED ASTERISK SHOULD'
	DB	' APPEAR',13,10
	DB	'ON THE SCREEN WHERE YOU POINT THE PEN WHEN'
	DB	' YOU',13,10
	DB	'PRESS THE PUSH-BUTTON.',13,10
	DB	'YOU MUST WAIT FOR THE CYAN SCREEN SCAN TO'
	DB	' FINISH',13,10
	DB	'BEFORE MOVING THE PEN.',13,10
	DB	'THE ASTERISKS CAN BE REMOVED BY USING THE'
	DB	' PEN',13,10
	DB	'ON THEM.',13,10,10
	DB	'ALL KEYS ARE FUNCTIONAL THE SAME AS IN CRT'
	DB	' MODE,',13,10
	DB	'INCLUDING <ERASE PAGE>, CURSOR KEYS, ETC.'
	DB	13,10,10
	DB	'TO EXIT THE PROGRAM, HIT <AUTO>.',13,10,10
	DB	'HIT <RETURN> WHEN READY ',239

FILLSC:	DB	6,2,15,12,27,25,'+',239

	END	TEST