home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / pdoseric.hdv / SOURCE / MOCKBRD.SRC.txt < prev    next >
Text File  |  2020-08-13  |  8KB  |  206 lines

  1. ;
  2. ;MOCKBRD.SRC - MOCKINGBOARD ROUTINES
  3. ;
  4. ;
  5. MSLOT               EQU   $C400
  6. MSTS                EQU   MSLOT
  7. MDTA                EQU   MSTS+1
  8. ;
  9. ;
  10.                     ORG   $1000
  11. ;
  12.                     JMP   INITMOCK
  13.                     JMP   NOTEON
  14.                     JMP   NOTEOFF
  15. ;
  16. INPNOTE             DFB   $00
  17. ;
  18. DFLTVOL             DFB   $0F
  19. ;
  20. SPEAKER             DFB   $00      ;00=LEFT, 80=RIGHT
  21. ;
  22. REGISTER            DFB   $08
  23. ;
  24. DATA                DFB   $00
  25. ;
  26. VOICENUM            DFB   $00
  27. ;
  28. NOTENUM             DFB   $29
  29. ;
  30. VOLUME              DFB   $00
  31. ;
  32. VOICE               DFB   $00,$00,$00,$00,$00,$00
  33. ;
  34. ;
  35. ; POKE REGISTER WITH DATA
  36. ;
  37. POKEREG             LDA   SPEAKER        ;GET SPEAKER (L/R) INTO Y
  38.                     AND   #$80
  39.                     TAY   
  40.                     LDA   REGISTER        ;GET REGISTER #
  41.                     AND   #$0F
  42.                     STA   MDTA,Y      
  43.                     LDA   #$07         ;SEND REGISTER #
  44.                     STA   MSTS,Y
  45.                     LDA   #$04
  46.                     STA   MSTS,Y
  47.                     LDA   DATA        ;GET DATA BYTE
  48.                     STA   MDTA,Y
  49.                     LDA   #$06         ;SEND DATA BYTE
  50.                     STA   MSTS,Y
  51.                     LDA   #$04
  52.                     STA   MSTS,Y
  53.                     RTS   
  54. ;
  55. INITMOCK            LDA   #$FF         ;INIT
  56.                     STA   MSLOT+$03
  57.                     STA   MSLOT+$83
  58.                     LDA   #$07
  59.                     STA   MSLOT+$02
  60.                     STA   MSLOT+$82
  61.                     LDA   #$00         ;RESET ALL PARMS TO 0
  62.                     STA   MSTS
  63.                     STA   MSLOT+$80
  64.                     LDA   #$04
  65.                     STA   MSTS
  66.                     STA   MSLOT+$80
  67. ;
  68.                     LDA   #$00         ;SPEAKER= LEFT
  69.                     STA   SPEAKER
  70.                     LDA   #$07         ;ENABLE
  71.                     STA   REGISTER
  72.                     LDA   #$38         ; %00111000
  73.                     STA   DATA
  74.                     JSR   POKEREG        ;SEND IT 
  75.                     LDA   #$80        
  76.                     STA   SPEAKER        ;SPEAKER = RIGHT
  77.                     JSR   POKEREG        ;SEND IT 
  78.                     LDX   #$06
  79.                     LDA   #$00
  80. ;
  81. ZERONEXT            STA   VOLUME,X      ;ZERO OUT VOICE REGISTERS
  82.                     DEX   
  83.                     BNE   ZERONEXT
  84.                     RTS   
  85. ;
  86. PLAYVOIC            LDY   #$00         ;LEFT SPEAKER
  87.                     STY   SPEAKER
  88.                     LDA   VOICENUM        ;GET VOICE NUMBER
  89.                     AND   #$07
  90.                     CMP   #$06         ;IF OVER 6, EXIT
  91.                     BCC   DOVOICE
  92.                     RTS   
  93. ;
  94. DOVOICE             CMP   #$03         ;IF VOICE >=3, USE RIGHT SPKR
  95.                     BCC   LEFTONLY
  96.                     SEC   
  97.                     SBC   #$03         ;BY SUBTRACTING 3
  98.                     LDY   #$80
  99.                     STY   SPEAKER
  100. ;
  101. LEFTONLY            ASL   A               ;MULTIPLY BY 2
  102.                     STA   REGISTER
  103.                     LDX   NOTENUM      ;POKE THE FINE TUNE
  104.                     LDA   FINETUNE,X
  105.                     STA   DATA
  106.                     JSR   POKEREG
  107.                     LDA   REGISTER     ;ADD 1 TO GET CRSE PART OF REGISTER
  108.                     CLC   
  109.                     ADC   #$01
  110.                     STA   REGISTER
  111.                     LDX   NOTENUM
  112.                     LDA   CRSETUNE,X
  113.                     STA   DATA
  114.                     JSR   POKEREG      ;POKE THE COARSE BYTE
  115.                     LDA   REGISTER
  116.                     SEC   
  117.                     SBC   #$01
  118.                     LSR   A            ;CALCULATE THE VOL REGISTER (R-1)/2+8
  119.                     CLC   
  120.                     ADC   #$08
  121.                     STA   REGISTER
  122.                     LDA   VOLUME        ;GET VOLUME
  123.                     STA   DATA
  124.                     JSR   POKEREG      ;AND POKE HER
  125.                     RTS   
  126. ;
  127. ;
  128. NOTEON              LDX   #$01         ;LOOK FOR A FREE VOICE
  129. ;
  130. VOICLOOP            LDA   VOLUME,X     ;GET VOICE 
  131.                     BPL   FREEVOIC     ;IF <128, VOICE IS FREE FOR USE
  132.                     JMP   NEXTVOIC
  133. ;
  134. FREEVOIC            LDA   INPNOTE        ;GET NOTE #
  135.                     BEQ   EXITZERO     ;EXIT IF 0
  136.                     STA   NOTENUM      ;SET IT UP
  137.                     ORA   #$80         ;SET HI BIT
  138.                     STA   VOLUME,X     ;PUT IN VOICE ARRAY
  139.                     DEX   
  140.                     STX   VOICENUM     ;SET UP VOICE #
  141.                     LDA   DFLTVOL      ;AND DEFAULT VOL
  142.                     STA   VOLUME
  143.                     JSR   PLAYVOIC     ;START THIS VOICE PLAYING
  144. EXITZERO            RTS   
  145. ;
  146. ;
  147. NOTEOFF             LDX   #$06
  148. ;
  149. CMPLOOP             LDA   VOLUME,X     
  150.                     AND   #$7F
  151.                     CMP   INPNOTE      ;IF THIS ELEMENT = NOTE WE WANT TO FREE
  152.                     BEQ   FREEIT       ;GO DO IT.
  153.                     DEX                ;ELSE, CHECK OTHER VOICES
  154.                     BNE   CMPLOOP
  155.                     RTS   
  156. ;
  157. FREEIT              LDA   #$00         ;FREE THE NODE
  158.                     STA   VOLUME,X
  159.                     DEX                ;ONE LESS ACTIVE VOICE
  160.                     STX   VOICENUM
  161.                     LDA   #$00         ;PLAY THE VOICE WITH VOLUME 0
  162.                     STA   VOLUME
  163.                     JSR   PLAYVOIC
  164.                     RTS   
  165. ;
  166. NEXTVOIC            INX                ;ASSIGN NEXT VOICE
  167.                     CPX   #$07
  168.                     BNE   VOICLOOP
  169.                     RTS   
  170. ;
  171. ;
  172. FINETUNE            DFB   $00,$00,$00,$00,$00,$00,$00,$00
  173.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  174.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  175.                     DFB   $A3,$35,$CD,$6C,$0F,$B8,$66,$18
  176.                     DFB   $CF,$8A,$49,$0B,$D1,$9A,$66,$36
  177.                     DFB   $07,$DC,$B3,$8C,$67,$45,$24,$05
  178.                     DFB   $E8,$CD,$B3,$9B,$83,$6E,$59,$46
  179.                     DFB   $33,$22,$12,$02,$F4,$E6,$D9,$CD
  180.                     DFB   $C1,$B7,$AC,$A3,$99,$91,$89,$81
  181.                     DFB   $7A,$73,$6C,$66,$60,$5B,$56,$51
  182.                     DFB   $4C,$48,$44,$40,$3D,$39,$36,$33
  183.                     DFB   $30,$2D,$2B,$28,$26,$24,$22,$20
  184.                     DFB   $1E,$1C,$1B,$19,$18,$16,$15,$14
  185.                     DFB   $13,$12,$11,$10,$0F,$00,$00,$00
  186.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  187.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  188. ;
  189. CRSETUNE            DFB   $00,$00,$00,$00,$00,$00,$00,$00
  190.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  191.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00                     DFB   $07,$07,$06,$06,$06,$05,$05,$05
  192.                     DFB   $04,$04,$04,$04,$03,$03,$03,$03
  193.                     DFB   $03,$02,$02,$02,$02,$02,$02,$02
  194.                     DFB   $01,$01,$01,$01,$01,$01,$01,$01                  
  195.                     DFB   $01,$01,$01,$01,$00,$00,$00,$00
  196.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  197.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  198.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  199.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  200.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  201.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  202.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  203.                     DFB   $00,$00,$00,$00,$00,$00,$00,$00
  204. ;
  205. EOF                 BRK
  206.