Listing of file='TIM2VC.MAC;01' on disk='vmedia/taylor_8-sector.ccvf'
;******************************************************** ;* * ;* TIMER2 ROUTINE * ;* * ;* LINKED TO WHEN THE TIMER 2 GOES OFF, THIS * ;* ROUTINE MAINTAINS THE MASTER COUNTER (0-255) * ;* AND CALLS THE VOICE ROUTINE, WHICH MANIPULATES * ;* THE AY-3-8910 CHIP REGISTERS ACCORDING TO THE * ;* CALLER'S PARAMETERS IN THE "VOICE" TABLES. * ;* * ;******************************************************** ; ENTRY TIM2RTN EXTRN VOICE1,VOICE2,VOICE3 EXTRN COUNTER,TIMEVALUE EXTRN MIXERVALUE TIM2RTN: PUSH PSW PUSH B PUSH D PUSH H LDA COUNTER INR 1 ;INCREMENT MAIN COUNTER STA COUNTER JZ EXIT ;256 TIMES ONLY LXI H,VOICE1 CALL SOUNDER ;DO IT FOR FIRST VOICE LXI H,VOICE2 CALL SOUNDER ;2ND LXI H,VOICE3 CALL SOUNDER ;3RD LDA TIMEVALUE ;PICK UP TIMER DELAY, OUT 10 ;AND STICK INTO TIMER EXIT: POP H POP D POP B POP PSW RET PAGE ;******************************************************** ;* * ;* VOICE ROUTINE * ;* * ;* THIS ROUTINE TURNS THE VOICE TABLE INTO * ;* SOUND IF THE MAIN COUNTER IS WITHIN LIMITS. * ;* * ;******************************************************** ; SOUNDER: PUSH PSW INX H INX H ;STEP OVER INITIAL VALUES CMP M ;COMPARE COUNTER TO START VAL JC ELSE ;COUNTER LESS INX H ;COMPARE TO STOP VALUE CMP M JNC ELSE ;COUNTER >= INX H MOV E,M INX H MOV D,M ;INCREMENT IN D,E INX H MOV C,M INX H MOV B,M ;COARSE, FINE VALS IN B,C INX H MOV A,M ;FINE TONE REG OUT 48 MOV A,C ;FINE TONE OUT 49 ;AND OUT MOV A,M INR A ;COARSE TONE REG OUT 48 MOV A,B ;COARSE TONE OUT 49 ;AND OUT XCHG DAD B ;H,L NOW = CRS/FINE + INCR XCHG ;D,E NOW DCX H DCX H MOV M,E INX H MOV M,D ;RESTORE ADJUSTED TONE VALUES INX H ;FOR NEXT TIME INX H INX H MOV A,M ;NOISE VALUE TO A CPI 0 JZ NONOISE MOV B,A MVI A,6 ;NOISE REG IS 6 OUT 48 MOV A,B OUT 49 ;OUTPUT NOISE VALUE NONOISE: INX H MOV B,M ;VOLUME VALUE INX H MOV A,M ;VOLUME REGISTER OUT 48 MOV A,B OUT 49 ;OUTPUT VOLUME VALUE INX H MOV B,M ;MIXER VALUE MASK LDA MIXERVALUE ANA B ;AND OUR VALUE INTO MASK STA MIXERVALUE ;AND STORE IT MOV B,A MVI A,7 OUT 48 ;PREPARE TO OUTPUT MIXER VALU MOV A,B OUT 49 ;SOUND NOW ALL DONE. THIS VOICE'S REGS ARE ALL SET. TABLES ARE ;READY FOR NEXT TIME. ELSE: POP PSW ;RESTORE MAIN COUNTER RET END