Compucolor.org – Virtual Media

Listing of file='CALLVC.MAC;04' on disk='vmedia/taylor_8-sector.ccvf'

;********************************************************
;*							*
;*	CALL ROUTINE, LINK FROM BASIC PROGRAM.		*
;*							*
;*	WHEN CALLED, IT GENERATES, OR CAUSES TO BE	*
;*	GENERATED, WHATEVER SOUND IS REQUESTED IN	*
;*	D,E AS FOLLOWS:					*
;*	  0-3 VOICE SOUND WITH TIMER 2			*
;*	  1-NOT YET DEFINED				*
;*	  2-NEITHER IS THIS ONE				*
;*							*
;********************************************************
;
	ENTRY	CALLRTN		;DEFINE TO OUTSIDE WORLD
;
;========================================================
;		CODE 0 PARAMETERS
;
COUNTER:  DB	0		;MAIN COUNTER
TIMEVALUE: DS	1		;VALUE USED FOR TIMER STARTING
MIXERVALUE: DS	1		;SHARED MIXER VALUE
	PUBLIC	COUNTER,TIMEVALUE,MIXERVALUE
	EXTRN	TIM2RTN		;TIMER 2 ROUTINE
;
INITFINE1: DS	1		;INITIAL FINE TUNE VALUE
INITCORSE: DS	1		;SAME FOR COARSE
CNTSTART: DS	1		;CNTR VALUE TO BEGIN EFFECTIVENESS
CNTSTOP:  DS	1		;VALUE ON WHICH TO END
INCR:	DS	2		;INCREMENT TO TONE VALUE
TUNE:	DS	2		;WHICH IS HERE
TUNEREG: DB	0		;8910 TUNE REG
NOISEVAL: DS	1		;NOISE VALUE, ZERO IF NO NOISE
VOLVAL:	DS	1		;VOLUME VALUE
VOLREG:	DB	8		;VOLUME REGISTER
MIXMASK:  DS	1		;MIXER MASK
VOICE1	EQU	INITFINE1
;
VOICE2:	DB	0,0,0,0,0,0,0,0,2,0,0,9,0
;
VOICE3:	DB	0,0,0,0,0,0,0,0,4,0,0,10,0
;
	PUBLIC	VOICE1,VOICE2,VOICE3
;
;==============================================================
;
CALLRTN:	PUSH	PSW
	PUSH	B
	PUSH	H
	MOV	A,E		;TEST CALLER PARAM
	CPI	0
	JNZ	NOTZERO
;
;	CALLER CODE WAS ZERO
;
	MOV	A,D		;TIME VALUE IN D
	STA	TIMEVALUE
	XRA	A
	STA	COUNTER
	MVI	A,11111111B	;NULL MIXER VALUE TO START
	STA	MIXERVALUE
	LXI	D,TUNE-VOICE1
;

	LXI	H,VOICE1
	MOV	B,M
	INX	H		;PICK UP INIT TUNE VALUES,
	MOV	C,M
	DAD	D		;POINT TO "WORK" TUNE VALUE
	MOV	M,B		;AND STORE INIT VALUES THERE
	INX	H
	MOV	M,C
;
	LXI	H,VOICE2
	MOV	B,M
	INX	H
	MOV	C,M
	DAD	D
	MOV	M,B
	INX	H
	MOV	M,C
;
	LXI	H,VOICE3
	MOV	B,M
	INX	H
	MOV	C,M
	DAD	D
	MOV	M,B
	INX	H
	MOV	M,C
;
	CALL	TIM2RTN		;LET TIMER ROUTINE RUN ONCE
	JMP	EXIT
;
;	CODE 1
;
NOTZERO:	NOP
;
;	NO KNOWN CODE
;
EXIT:	POP	H
	POP	B
	POP	PSW
	RET
	END	CALLRTN