Compucolor.org – Virtual Media

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	LIGHT-PEN UTILITY ROUTINES
;

	ENTRY	SPULSE

SPULSE:	MVI	A,14
	OUT	48
	IN	48
	ANI	02
	JNZ	SPULSE
	CALL	DELAY
	CALL	DELAY
	MVI	A,14
	OUT	48
	IN	48
	ANI	02
	JNZ	SPULSE
	RET

	ENTRY	COORDS

COORDS:	CALL	YCOORD
	MOV	A,C
	CPI	32
	JNC	COORDS
CO10:	CALL	XCOORD
	MOV	A,B
	CPI	64
	JNC	CO10
	RET

	ENTRY	YCOORD

YCOORD:	LXI	H,6001H
Y5:	MVI	M,36H
	INX	H
	INX	H
	MOV	A,H
	CPI	70H
	JNZ	Y5

	LXI	H,6001H
	MVI	C,32
Y10:	MVI	D,100
	MVI	B,64
Y20:	MVI	M,0
	INX	H
	INX	H
	DCR	B
	JNZ	Y20
	CALL	TESTIT
	JZ	Y35
Y25:	DCR	D
	JZ	Y30
	CALL	CHKPEN
	JNZ	Y25
Y30:	DCR	C
	JNZ	Y10
Y35:	MVI	A,32
	SUB	C
	MOV	C,A
	MOV	E,A
	CALL	BLANK
	RET

	ENTRY	XCOORD

XCOORD:	DCX	H
	DCX	H
	MVI	B,64
X10:	MVI	M,36H
	DCX	H
	DCX	H
	DCR	B
	JNZ	X10

	INX	H
	INX	H
	MVI	B,64
X20:	MVI	M,0
	MVI	D,200
X30:	CALL	TESTIT
	JZ	X40
X35:	DCR	D
	JZ	X40
	CALL	CHKPEN
	JNZ	X35
	INX	H
	INX	H
	DCR	B
	JNZ	X20
X40:	MVI	A,64
	SUB	B
	MOV	B,A
	MOV	D,A
	CALL	BLANK
	RET


	ENTRY	TESTIT

TESTIT:	PUSH	B
	MVI	B,15
TS10:	MVI	C,0FFH
TS20:	CALL	CHKPEN
	JZ	TS25
	NOP
	NOP
	CALL	CHKPEN
	JNZ	TS30
TS25:	DCR	C
	JNZ	TS20
	DCR	B
	JNZ	TS10
TS30:	POP	B
	RET

	ENTRY	CHKPEN

CHKPEN:	MVI	A,14	;SELECT PORT 'A' ON AY-3-8910
	OUT	48
	IN	48	;READ IT
	CMA
	ANI	01
	RET

BLANK:	PUSH	H
	LXI	H,6001H
BL10:	MVI	M,0
	INX	H
	INX	H
	MOV	A,H
	CPI	70H
	JNZ	BL10
	POP	H
	RET


DELAY:	PUSH	B
	MVI	C,0FFH
D2:	XRA	A
	DCR	C
	JNZ	D2
	POP	B
	RET

	END