Compucolor.org – Virtual Media

Listing of file='LTPEN.MAC;1D' on disk='vmedia/sound_light_pen-sector.ccvf'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	LIGHT-PEN ROUTINE
;
	EXTRN	CO,OSTR

	ENTRY	LTPEN

LTPEN:	MVI	A,27
	CALL	CO
	MVI	A,24
	CALL	CO
	CALL	SPULSE
	LXI	H,6000H
	LXI	D,BUF
LT10:	MOV	A,M
	STAX	D
	INX	H
	INX	D
	MOV	A,H
	CPI	70H
	JNZ	LT10
	LXI	H,FILL
	CALL	OSTR
	CALL	COORDS
	LXI	H,6000H
	LXI	D,BUF
LT20:	LDAX	D
	MOV	M,A
	INX	H
	INX	D
	MOV	A,H
	CPI	70H
	JNZ	LT20
	RET

FILL:	DB	6,0,12,27,25,'+',8,239

SPULSE:	MVI	A,14
	OUT	48
	IN	48
	CMA
	ANI	02
	JZ	SPULSE
	CALL	DELAY
	CALL	DELAY
	MVI	A,14
	OUT	48
	IN	48
	CMA
	ANI	02
	RNZ
	JMP	SPULSE

COORDS:	MVI	D,6
	MVI	E,32
	MVI	A,78H	;=MOV A,B
	STA	W3
	CALL	WRTEST
	PUSH	PSW
	MVI	D,5
	MVI	E,16
	MVI	A,79H	;=MOV A,C
	STA	W3
	CALL	WRTEST
	MOV	C,A
	POP	PSW
	MOV	B,A
	RET

WRTEST:	XRA	A
	STA	VALUE
W1:	LXI	H,6FFFH
	MVI	C,32
W2:	MVI	B,64
W3:	MOV	A,B
	DCR	A
	ANA	E
	MVI	A,3	;YELLOW
	JNZ	W4
	XRA	A
W4:	MOV	M,A
	DCX	H
	DCX	H
	DCR	B
	JNZ	W3
	DCR	C
	JNZ	W2

	MVI	B,15
W5:	MVI	C,0FFH
W6:	CALL	CHKPEN
	JZ	OVER
	NOP
	NOP
	CALL	CHKPEN
	JNZ	W7
OVER:	DCR	C
	JNZ	W6
	DCR	B
	JNZ	W5
W7:	CALL	SAVPEN
	MOV	A,E
	RRC
	MOV	E,A
	DCR	D
	JNZ	W1
	LDA	VALUE
	RRC
	RET

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

SAVPEN:	CPI	04
	JNZ	S1
	MVI	A,1
S1:	MOV	B,A
	LDA	VALUE
	ORA	B
	RLC
	STA	VALUE
	RET

VALUE:	DB	0

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

BUF:	DS	1000H

	END