chapter7/CH7PRG3.SRC:

0100 ;
0110 ; VONLY      Bob Fraser 7-23-81
0120 ;
0130 ;
0140 ;volume-only AUDC1-4 bit test routine
0150 ;
0160 ;
0170 ;
0180 ;
0190 AUDCTL =    $D208
0200 AUDF1  =    $D200
0210 AUDC1  =    $D201
0220 SKCTL  =    $D20F
0230 ;
0240 ;
0250     *=  $BO
0260 TEMPO  .BYTE 1
0270 MSC    .BYTE 0
0280 ;
0290 ;
0300 ;
0310     *=   $4000
0320     LDA  #0
0330     STA  AUDCTL
0340     LDA  #3
0350     STA  SKCTL
0360     LDX  #0
0370 ;
0380     LDA  #0
0390     STA  $D40E  ; kill vbi's
0400     STA  $D20E  ; kill irq's
0410     STA  $D400  ; kill dma
0420 ;
0430 ;
0440 ;
0450 L00 LDA  DTAB,X
0460     STA  MSC
0470 ;
0480     LDA  VTAB,X
0490 L0  LDY  TEMPO
0500     STA  AUDC1
0510 L1  DEY
0520     BNE  L1
0530 ;
0540 ; dec most sig ctr
0550     DEC  MSC
0560     BNE  L0
0570 ;
0580 ;
0590 ; new note
0600 ;
0610    INX
0620    CPX  NC
0630    BNE  L00
0640 ;
0650 ; wrap note pointer
0660    LDX #0
0670    BEQ L00
0680 ;
0690 ;
0700 NC   .BYTE 28;  note count
0710 ;
0720 ; table of volumes to be played In succession
0730 VTAB
0740     .BYTE 24,25,26,27,28,29,30,31
0750     .BYTE 30,29,28,27,26,25,24
0760     .BYTE 23,22,21,20,19,18,17
0770     .BYTE 18,19,20,21,22,23
0780 ;
0790 ; this table contains the duration of each entry above
0800 DTAB
0810     .BYTE 1,1,1,2,2,2,3,6
0820     .BYTE 3,2,2,2,1,1,1
0830     .BYTE 1,1,2,2,2,3,6
0840     .BYTE 3,2,2,2,1,1

Back to previous page