home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / F / FACE_INC / ZOXXED03.ZIP / ZOXXED03.MSA / REPLAY / REPLAY.LZH / REPLAY.S < prev   
Text File  |  1987-04-22  |  12KB  |  705 lines

  1.  
  2. ;----------------------------------------------------
  3. ;-------   Soundtracker V2.4 - playroutine    -------
  4. ;-------   Coded by CHECKSUM from EQUINOX!    -------
  5. ;----------------------------------------------------
  6.  
  7. ; call mt_init to initialize the playroutine.
  8. ; call mt_music in each vbl to play the music.
  9. ; WARNING !! You have only 4 registers to work
  10. ; in your program. they are d0,d1,a0,a1. Have fun !
  11.  
  12.     lea    deb,a0
  13.     lea    fin,a1
  14.  
  15. deb
  16.     bra    mt_init
  17.     bra    mt_music
  18.     bra    mt_end
  19. level1    ds.w    1
  20. level2    ds.w    1
  21. level3    ds.w    1
  22. level4    ds.w    1
  23.  
  24. mt_gfa
  25.     move.l    4(sp),a0
  26.     lea    mt_adrsave(pc),a1
  27.     move.l    a0,(a1)
  28.     clr.l    -(sp)
  29.     move.w    #$20,-(sp)
  30.     trap    #1
  31.     addq.l    #6,sp
  32.     lea    mt_adrsave(pc),a1
  33.     move.l    (a1),a0
  34.     move.l    d0,(a1)
  35.     clr.b    $fffa09
  36.     bsr    mt_init    
  37.     move.l    $70.w,-(sp)
  38.     lea    newvbl(pc),a0
  39.     move.l    a0,$70.w
  40. att    cmp.b    #$39,$fffc02
  41.     bne    att
  42.     move.w    #$2700,sr
  43.     move.l    (sp)+,$70.w
  44.     bsr    mt_end
  45.     move.b    #$64,$fffa09
  46.     move.w    #$2300,sr
  47.     move.w    #4000,d0
  48. wait68901
  49.     nop
  50.     dbra    d0,wait68901
  51.     move.l    mt_adrsave(pc),-(sp)
  52.     move.w    #$20,-(sp)
  53.     trap    #1
  54.     addq.l    #6,sp
  55.     rts
  56. newvbl
  57.     bsr    mt_music
  58.     rte
  59.  
  60. mt_init
  61.     lea    mt_data(pc),a1
  62.     move.l    a0,(a1)
  63.     move.l    #472,d0
  64.     move.l    #600,d1
  65.     cmp.l    #$4d2e4b2e,1080(a0)
  66.     bne.s    mt_oldversion
  67.     move.l    #$3b8,d0
  68.     move.l    #$43c,d1
  69. mt_oldversion
  70.     lea    mt_nbr1(pc),a1
  71.     move.l    d0,2(a1)
  72.     lea    mt_nbr2(pc),a1
  73.     move.l    d1,2(a1)
  74.     lea    mt_nbr3(pc),a1
  75.     move.l    d0,2(a1)
  76.     lea    mt_nbr4(pc),a1
  77.     move.l    d1,2(a1)
  78.     add.l    d0,a0
  79.     moveq    #$7f,d0
  80.     moveq    #0,d1
  81. mt_init1
  82.     move.l    d1,d2
  83.     subq.w    #1,d0
  84. mt_init2
  85.     move.b    (a0)+,d1
  86.     cmp.b    d2,d1
  87.     bgt.s    mt_init1
  88.     dbra    d0,mt_init2
  89.     addq.b    #1,d2
  90.  
  91. mt_init3
  92.     move.l    mt_data(pc),a0
  93.     lea    mt_sample1(pc),a1
  94.     asl.l    #8,d2
  95.     asl.l    #2,d2
  96. mt_nbr4    add.l    #0,d2
  97.     add.l    a0,d2
  98.     moveq    #30,d0
  99. mt_init4
  100.     move.l    d2,(a1)+
  101.     moveq    #0,d1
  102.     move.w    42(a0),d1
  103.     asl.l    #1,d1
  104.     add.l    d1,d2
  105.     add.l    #30,a0
  106.     dbra    d0,mt_init4
  107.     move.l    d2,a1
  108.     move.l    mt_sample1(pc),a0
  109. mt_init5
  110.     eor.b    #128,(a0)
  111.     tst.b    (a0)
  112.     bne.s    mt_init6
  113.     addq.b    #1,(a0)
  114. mt_init6
  115.     addq.l    #1,a0
  116.     cmp.l    a0,a1
  117.     bgt.s    mt_init5
  118.     lea    mt_sample1(pc),a0
  119.     moveq    #4,d0
  120. mt_clear
  121.     move.l    (a0,d0.w),a1
  122.     clr.l    -4(a1)
  123.     addq.w    #4,d0
  124.     cmp.w    #$7c,d0
  125.     bne.s    mt_clear
  126.     move.w    #$2700,sr
  127.     lea    $ffff8800.w,a0
  128.     moveq    #10,d0
  129. mt_yamahaclear
  130.     move.b    d0,(a0)
  131.     clr.b    2(a0)
  132.     dbra    d0,mt_yamahaclear
  133.     clr.b    (a0)
  134.     clr.b    2(a0)
  135.     move.b    #7,(a0)
  136.     move.b    #$ff,2(a0)
  137.     move.b    #$02,$fffa19
  138.     move.b    #14,$fffa1f
  139.     bclr    #3,$fffa17
  140.     bset    #5,$fffa07
  141.     bset    #5,$fffa13
  142.     lea    denise(pc),a0
  143.     move.l    a0,$134.w
  144.     lea    mt_partnrplay(pc),a0
  145.     clr.l    (a0)+
  146.     clr.l    (a0)+
  147.     clr.l    (a0)+
  148.     clr.w    (a0)
  149.     lea    mt_cool(pc),a0
  150.     move.w    #6,2(a0)
  151.     move.l    mt_data(pc),a0
  152. mt_nbr3    add.l    #$3b8,a0
  153.     lea    mt_maxpart(pc),a1
  154.     move.b    -2(a0),1(a1)
  155.     lea    mt_cool(pc),a0
  156.     move.b    #6,3(a0)
  157.     move.b    $fb0001,d7
  158.     lea    no_noise(pc),a2
  159.     lea    voice1(pc),a3
  160.     lea    voice2(pc),a4
  161.     lea    voice3(pc),a5
  162.     lea    voice4(pc),a6
  163.     move.l    a2,16(a3)
  164.     move.l    a2,16(a4)
  165.     move.l    a2,16(a5)
  166.     move.l    a2,16(a6)
  167.     move.l    a2,a3
  168.     move.l    a3,a4
  169.     move.l    a4,a5
  170.     moveq    #0,d2
  171.     moveq    #0,d3
  172.     moveq    #0,d4
  173.     moveq    #0,d5
  174.     lea    $fa0000,a6
  175.     lea    mt_selection(pc),a0
  176.     moveq    #0,d6
  177.     move.b    d7,d6
  178.     and.b    #$f0,d6
  179.     cmp.b    #$70,d6
  180.     bne.s    mt_testbat
  181.     move.w    #$601a,(a0)    
  182.     move.w    #$2300,sr
  183.     rts
  184. mt_testbat
  185.     cmp.b    #$ff,d7
  186.     beq.s    mt_monitor_outpout
  187.     move.w    #$6024,(a0)
  188.     move.w    #$2300,sr
  189.     rts
  190. mt_monitor_outpout
  191.     move.w    #$0246,(a0)
  192.     move.w    #$2300,sr
  193.     rts
  194.  
  195. mt_end
  196.     bset    #3,$fffa17
  197.     and.b    #$df,$fffa07
  198.     and.b    #$df,$fffa13
  199.     rts
  200.  
  201. ; now the playroutine ! call it every vbl.
  202.  
  203. mt_music
  204.     movem.l    d0/d1/a0/a1,-(sp)
  205.     lea    mt_counter(pc),a0
  206.     addq.w    #1,(a0)
  207. mt_cool
  208.     cmp.w    #6,(a0)
  209.     bne.s    mt_notsix
  210.     clr.w    (a0)
  211.     bra    mt_rout2
  212.  
  213. mt_notsix
  214.     lea    mt_aud1temp(pc),a1
  215.     tst.b    3(a1)
  216.     beq.s    mt_arp1
  217.     lea    voice1(pc),a0
  218.     bsr.s    mt_arprout
  219. mt_arp1
  220.     lea    mt_aud2temp(pc),a1
  221.     tst.b    3(a1)
  222.     beq.s    mt_arp2
  223.     lea    voice2(pc),a0
  224.     bsr.s    mt_arprout
  225. mt_arp2
  226.     lea    mt_aud3temp(pc),a1
  227.     tst.b    3(a1)
  228.     beq.s    mt_arp3
  229.     lea    voice3(pc),a0
  230.     bsr.s    mt_arprout    
  231. mt_arp3
  232.     lea    mt_aud4temp(pc),a1
  233.     tst.b    3(a1)
  234.     beq.s    mt_arp4
  235.     lea    voice4(pc),a0
  236.     bsr.s    mt_arprout
  237. mt_arp4
  238.     movem.l    (sp)+,d0/d1/a0/a1
  239.     rts
  240.  
  241.  
  242. mt_arprout
  243.     move.b    2(a1),d0
  244.     and.b    #$f,d0
  245.     tst.b    d0
  246.     beq    mt_arpegrt
  247.     cmp.b    #1,d0
  248.     beq    mt_portup
  249.     cmp.B    #2,d0
  250.     beq    mt_portdown
  251.     rts
  252.  
  253.  
  254. mt_portup
  255.     moveq    #0,d0
  256.     move.b    3(a1),d0
  257.     sub.w    d0,22(a1)
  258.     cmp.w    #$71,22(a1)
  259.     bpl.s    mt_ok1
  260.     move.w    #$71,22(a1)
  261. mt_ok1    move.w    22(a1),d0
  262.     lea    mt_frequences(pc),a1
  263.     asl.l    #2,d0
  264.     move.l    (a1,d0.w),2(a0)
  265.     rts
  266.  
  267. mt_portdown
  268.     moveq    #0,d0
  269.     move.b    3(a1),d0
  270.     add.w    d0,22(a1)
  271.     cmp.w    #$358,22(a1)
  272.     bmi.s    mt_ok2
  273.     move.w    #$358,22(a1)
  274. mt_ok2    bra    mt_ok1
  275.  
  276.  
  277. mt_arpegrt
  278.     move.w    mt_counter(pc),d0
  279.     cmp.w    #1,d0
  280.     beq.s    mt_loop2
  281.     cmp.w    #2,d0
  282.     beq.s    mt_loop3
  283.     cmp.w    #3,d0
  284.     beq.s    mt_loop4
  285.     cmp.w    #4,d0
  286.     beq.s    mt_loop2
  287.     cmp.w    #5,d0
  288.     beq.s    mt_loop3
  289.     rts
  290.  
  291. mt_loop2
  292.     moveq    #0,d0
  293.     move.b    3(a1),d0
  294.     lsr.b    #4,d0
  295.     bra.s    mt_cont
  296. mt_loop3
  297.     moveq    #0,d0
  298.     move.b    3(a1),d0
  299.     and.b    #$f,d0
  300.     bra.s    mt_cont
  301. mt_loop4
  302.     moveq    #0,d1
  303.     move.w    16(a1),d1
  304.     bra.s    mt_endpart
  305. mt_cont
  306.     add.w    d0,d0
  307.     moveq    #0,d1
  308.     move.w    16(a1),d1
  309.     and.w    #$fff,d1
  310.     lea    mt_arpeggio(pc),a1
  311. mt_loop5
  312.     cmp.w    (a1),d1
  313.     beq.s    loop5_exit
  314.     addq.l    #2,a1
  315.     bra.s    mt_loop5
  316. loop5_exit
  317.     move.w    (a1,d0.w),d1
  318. mt_endpart
  319.     lea    mt_frequences(pc),a1
  320.     asl.l    #2,d1
  321.     move.l    (a1,d1.w),2(a0)
  322.     rts
  323.  
  324. mt_rout2
  325.     move.l    mt_data(pc),a0
  326.     lea    mt_soundpref(pc),a1
  327.     move.l    a0,(a1)
  328.     add.l    #42,(a1)
  329.     move.l    a0,a1
  330. mt_nbr1    add.l    #0,a1
  331. mt_nbr2    add.l    #0,a0
  332.     move.l    a1,-(sp)
  333.     lea    mt_firstpattern(pc),a1
  334.     move.l    a0,(a1)
  335.     move.l    (sp)+,a1
  336.     moveq    #0,d1
  337.     move.l    mt_partnrplay(pc),d0
  338.     move.b    (a1,d0.w),d1
  339.     asl.l    #8,d1
  340.     asl.l    #2,d1
  341.     add.l    mt_partnote(pc),d1
  342.     lea    mt_aud1temp(pc),a1
  343.     bsr    mt_playit
  344.     lea    mt_aud2temp(pc),a1
  345.     move.l    mt_currentpos(pc),d1
  346.     bsr    mt_playit
  347.     lea    mt_aud3temp(pc),a1
  348.     move.l    mt_currentpos(pc),d1
  349.     bsr    mt_playit
  350.     lea    mt_aud4temp(pc),a1
  351.     move.l    mt_currentpos(pc),d1
  352.     bsr    mt_playit
  353.     move.w    #$2700,sr
  354. mt_voice1
  355.     lea    voice1(pc),a0
  356.     lea    mt_aud1temp(pc),a1
  357.     tst.w    (a1)
  358.     beq.s    mt_voice2
  359. ; here is for equa inf
  360.     move.l    a0,-(sp)
  361.     lea    level1(pc),a0
  362.     move.w    18(a1),(a0)
  363.     move.l    (sp)+,a0
  364.     moveq    #0,d0
  365.     move.w    (a1),d0
  366.     and.w    #$fff,d0
  367.     move.w    d0,16(a1)
  368.     move.W    d0,22(a1)
  369.     move.l    4(a1),a2
  370.     moveq    #0,d2
  371.     moveq    #0,d0
  372.     move.w    (a1),d0
  373.     and.w    #$fff,d0
  374.     asl.l    #2,d0
  375.     move.l    a1,-(sp)
  376.     lea    mt_frequences(pc),a1
  377.     move.l    (a1,d0.w),2(a0)
  378.     move.l    (sp)+,a1
  379.     tst.w    14(a1)
  380.     beq.s    mt_norepeat1
  381.     move.l    10(a1),16(a0)
  382.     bra.s    mt_voice2
  383. mt_norepeat1
  384.     lea    no_noise(pc),a1
  385.     move.l    a1,16(a0)
  386. mt_voice2
  387.     lea    voice2(pc),a0
  388.     lea    mt_aud2temp(pc),a1
  389.     tst.w    (a1)
  390.     beq.s    mt_voice3
  391. ; here is for equa inf
  392.     move.l    a0,-(sp)
  393.     lea    level2(pc),a0
  394.     move.w    18(a1),(a0)
  395.     move.l    (sp)+,a0
  396.     moveq    #0,d0
  397.     move.w    (a1),d0
  398.     and.w    #$fff,d0
  399.     move.w    d0,16(a1)
  400.     move.W    d0,22(a1)
  401.     move.l    4(a1),a3
  402.     moveq    #0,d3
  403.     moveq    #0,d0
  404.     move.w    (a1),d0
  405.     and.w    #$fff,d0
  406.     asl.l    #2,d0
  407.     move.l    a1,-(sp)
  408.     lea    mt_frequences(pc),a1
  409.     move.l    (a1,d0.w),2(a0)
  410.     move.l    (sp)+,a1
  411.     tst.w    14(a1)
  412.     beq.s    mt_norepeat2
  413.     move.l    10(a1),16(a0)
  414.     bra.s    mt_voice3
  415. mt_norepeat2
  416.     lea    no_noise(pc),a1
  417.     move.l    a1,16(a0)
  418. mt_voice3
  419.     lea    voice3(pc),a0
  420.     lea    mt_aud3temp(pc),a1
  421.     tst.w    (a1)
  422.     beq.s    mt_voice4
  423. ; here is for equa inf
  424.     move.l    a0,-(sp)
  425.     lea    level3(pc),a0
  426.     move.w    18(a1),(a0)
  427.     move.l    (sp)+,a0
  428.     moveq    #0,d0
  429.     move.w    (a1),d0
  430.     and.w    #$fff,d0
  431.     move.w    d0,16(a1)
  432.     move.W    d0,22(a1)
  433.     move.l    4(a1),a4
  434.     moveq    #0,d4
  435.     moveq    #0,d0
  436.     move.w    (a1),d0
  437.     and.w    #$fff,d0
  438.     asl.l    #2,d0
  439.     move.l    a1,-(sp)
  440.     lea    mt_frequences(pc),a1
  441.     move.l    (a1,d0.w),2(a0)
  442.     move.l    (sp)+,a1
  443.     tst.w    14(a1)
  444.     beq.s    mt_norepeat3
  445.     move.l    10(a1),16(a0)
  446.     bra.s    mt_voice4
  447. mt_norepeat3
  448.     lea    no_noise(pc),a1
  449.     move.l    a1,16(a0)
  450. mt_voice4
  451.     lea    voice4(pc),a0
  452.     lea    mt_aud4temp(pc),a1
  453.     tst.w    (a1)
  454.     beq.s    mt_voice0
  455. ; here is for equa inf
  456.     move.l    a0,-(sp)
  457.     lea    level4(pc),a0
  458.     move.w    18(a1),(a0)
  459.     move.l    (sp)+,a0
  460.     moveq    #0,d0
  461.     move.w    (a1),d0
  462.     and.w    #$fff,d0
  463.     move.w    d0,16(a1)
  464.     move.W    d0,22(a1)
  465.     move.l    4(a1),a5
  466.     moveq    #0,d5
  467.     moveq    #0,d0
  468.     move.w    (a1),d0
  469.     and.w    #$fff,d0
  470.     asl.l    #2,d0
  471.     move.l    a1,-(sp)
  472.     lea    mt_frequences(pc),a1
  473.     move.l    (a1,d0.w),2(a0)
  474.     move.l    (sp)+,a1
  475.     tst.w    14(a1)
  476.     beq.s    mt_norepeat4
  477.     move.l    10(a1),16(a0)
  478.     bra.s    mt_voice0
  479. mt_norepeat4
  480.     lea    no_noise(pc),a1
  481.     move.l    a1,16(a0)
  482. mt_voice0
  483.     move.w    #$2300,sr
  484.     lea    mt_partnote(pc),a0
  485.     add.l    #16,(a0)
  486.     cmp.l    #64*16,(a0)
  487.     bne    mt_nonewpat
  488. mt_higher
  489.     clr.l    (a0)
  490.     lea    mt_partnrplay(pc),a0
  491.     addq.l    #1,(a0)
  492.     moveq    #0,d0
  493.     move.w    mt_maxpart(pc),d0
  494.     move.l    (a0),d1
  495.     cmp.l    d0,d1
  496.     bne.s    mt_nonewpat
  497.     clr.l    (a0)
  498. mt_nonewpat
  499.     lea    mt_status(pc),a0
  500.     tst.w    (a0)
  501.     beq.s    mt_stop
  502.     clr.w    (a0)
  503.     lea    mt_partnote(pc),a0
  504.     bra.s    mt_higher
  505. mt_stop
  506.     movem.l    (sp)+,d0/d1/a0/a1
  507.     rts
  508.  
  509.  
  510. mt_playit
  511.     move.l    mt_firstpattern(pc),a0
  512.     move.l    (a0,d1.l),(a1)
  513.     addq.l    #4,d1
  514.     lea    mt_currentpos(pc),a0
  515.     move.l    d1,(a0)
  516.     moveq    #0,d1
  517.     move.b    2(a1),d1
  518.     lsr.b    #4,d1
  519.     moveq    #0,d0
  520.     move.b    (a1),d0
  521.     and.b    #$f0,d0
  522.     or.b    d0,d1
  523.     tst.b    d1
  524.     beq    mt_nosamplechange
  525.     move.l    d1,d0
  526.     asl.l    #2,d1
  527.     subq.b    #1,d0
  528.     mulu    #30,d0
  529.     lea    mt_samples(pc),a0
  530.     move.l    (a0,d1.l),4(a1)
  531.     move.l    mt_soundpref(pc),a0
  532.     move.w    (a0,d0.l),8(a1)
  533.     tst.w    8(a1)
  534.     bne.s    mt_sample_exist
  535.     move.l    a0,-(sp)
  536.     lea    no_noise(pc),a0
  537.     move.l    a0,4(a1)
  538.     move.l    (sp)+,a0
  539. mt_sample_exist
  540.     moveq    #0,d1
  541.     move.w    4(a0,d0.l),d1
  542.     add.l    4(a1),d1
  543.     move.l    d1,10(a1)
  544.     move.w    6(a0,d0.l),14(a1)
  545.     move.w    2(a0,d0.l),18(a1)
  546.     cmp.w    #1,14(a1)
  547.     bne    mt_nosamplechange
  548.     clr.w    14(a1)
  549. mt_nosamplechange
  550.     moveq    #0,d0
  551.     move.b    2(a1),d0
  552.     and.w    #$f,d0
  553.     cmp.b    #$0b,d0
  554.     beq.s    mt_posjmp
  555.     cmp.b    #$0c,d0
  556.     beq.s    mt_setvol
  557.     cmp.b    #$0d,d0
  558.     beq.s    mt_break
  559.     cmp.b    #$0e,d0
  560.     beq.s    mt_setfil
  561.     cmp.b    #$0f,d0
  562.     beq.s    mt_setspeed
  563.     rts
  564.  
  565. mt_posjmp
  566.     lea    mt_status(pc),a0
  567.     not.w    (a0)
  568.     moveq    #0,d0
  569.     move.b    3(a1),d0
  570.     subq.b    #1,d0
  571.     lea    mt_partnrplay(pc),a0
  572.     move.l    d0,(a0)
  573.     rts
  574.  
  575. mt_setvol
  576.     ; perhaps another time
  577.     moveq    #0,d0
  578.     move.b    3(a1),d0
  579.     tst.b    d0
  580.     bne    mt_back
  581.     lea    no_noise(pc),a0
  582.     move.l    a0,4(a1)
  583.     move.w    #1,(a1)
  584.     rts
  585.  
  586. mt_break
  587.     lea    mt_status(pc),a0
  588.     not.w    (a0)
  589.     rts
  590. mt_setfil
  591.     ; a filter ?? i would like have it !!!!
  592.     rts
  593. mt_setspeed
  594.     move.b    3(a1),d0
  595.     and.b    #$f,d0
  596.     beq.s    mt_back
  597.     lea    mt_counter(pc),a0
  598.     clr.w    (a0)
  599.     lea    mt_cool(pc),a0
  600.     move.b    d0,3(a0)
  601. mt_back    rts
  602.  
  603.  
  604.  
  605. ;this is the emulation of amiga sound processor !
  606.  
  607. denise
  608.     moveq    #0,d7
  609.     moveq    #0,d6
  610. voice1    add.l    #0,d2
  611.     swap    d2
  612.     move.b    (a2,d2.w),d7
  613.     bne.s    no_ini1
  614.     lea    $0,a2
  615.     moveq    #0,d2
  616.     moveq    #$7f,d7
  617. no_ini1    add.w    d7,d6
  618. voice2    add.l    #0,d3
  619.     swap    d3
  620.     move.b    (a3,d3.w),d7
  621.     bne.s    no_ini2
  622.     lea    $0,a3
  623.     moveq    #0,d3
  624.     moveq    #$7f,d7
  625. no_ini2    add.w    d7,d6
  626. voice3    add.l    #0,d4
  627.     swap    d4
  628.     move.b    (a4,d4.w),d7
  629.     bne.s    no_ini3
  630.     lea    $0,a4
  631.     moveq    #0,d4
  632.     moveq    #$7f,d7
  633. no_ini3    add.w    d7,d6
  634. voice4    add.l    #0,d5
  635.     swap    d5
  636.     move.b    (a5,d5.w),d7
  637.     bne.s    no_ini4
  638.     lea    $0,a5
  639.     moveq    #0,d5
  640.     moveq    #$7f,d7
  641. no_ini4    add.w    d7,d6
  642.     swap    d2
  643.     swap    d3
  644.     swap    d4
  645.     swap    d5
  646. mt_selection
  647.     and.w    #$fffc,d6
  648.     add.w    d6,d6
  649.     lea    digitab(pc,d6.w),a6
  650.     move.l    (a6)+,d6
  651.     move.w    (a6)+,d7
  652.     lea    $ffff8800.w,a6
  653.     movep.l    d6,(a6)
  654.     movep.w    d7,(a6)
  655.     rte
  656.  
  657. st_replay
  658.     lsr.w    #1,d6
  659.     move.b    (a6,d6.w),d6
  660.     rte
  661. bat
  662.     add.w    d6,d6
  663.     add.w    d6,d6
  664.     move.b    (a6,d6.w),d6
  665.     rte
  666.  
  667.  
  668.  
  669.  
  670.  
  671. digitab        incbin    digitab.bin
  672.     even
  673. mt_aud1temp    ds.b    24
  674. mt_aud2temp    ds.b    24
  675. mt_aud3temp    ds.b    24
  676. mt_aud4temp    ds.b    24
  677. mt_partnrplay    ds.l    1
  678. mt_partnote    ds.l    1
  679. mt_firstpattern    ds.l    1
  680. mt_counter    ds.w    1
  681. mt_samples    ds.l    1
  682. mt_sample1    ds.l    31
  683. mt_maxpart    ds.w    1
  684. mt_status    ds.w    1
  685. mt_register    ds.l    1
  686. mt_currentpos    ds.l    1
  687. mt_soundpref    ds.l    1
  688. mt_debpat    ds.l    1
  689. mt_data        ds.l    1
  690. mt_adrsave    ds.l    1
  691. mt_arpeggio    dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  692.         dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  693.         dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  694.         dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  695.         dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  696. no_noise
  697.     rept    512
  698.     dc.l    $7f7f7f7f
  699.     endr
  700.     dc.l    0
  701. mt_frequences
  702.     dc.l    0
  703.     incbin    freq.bin
  704. fin
  705.