home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Sound / Tracker / DLT-DIGI.DMS / in.adf / sources / DIGIplayer.s
Encoding:
Text File  |  1995-12-22  |  56.1 KB  |  3,942 lines

  1. ;----------------- DIGI Booster v1.1 player pure code ----------------
  2. ;            by Tap - Tomasz Piasta
  3. ;                © 20.07.1995
  4. ;
  5. ; This player is very easy to use:
  6. ; - first jump to db_init
  7. ; - in your own loop jump to db_music
  8. ; - to switch off player jump to db_end
  9. ;
  10. ; The player plays modules from Digi Booster 1.0/1.1 with packed 
  11. ; pattern data. Eight channels modules take about 0.25 frame
  12. ; (on standard Amiga 1200). The player automticly recognize
  13. ; processor (old Motorola 68000/68010 or 68020 and higher) and uses
  14. ; suitable instructions. If you want to use this player in your
  15. ; productions please buy the original (DIGI Booster with player
  16. ; source code).
  17. ; The code of player isn't optimized yet (except the mix routine
  18. ; which is extremly fast!).
  19. ; NOTE:
  20. ; If you want to use interrupt with this player you MUST use a VBL interrupt!
  21. ;------------------------- effects commands --------------------------
  22. ;   0xx arpeggio
  23. ; * 1xx portamento up
  24. ; * 2xx portamento down
  25. ; * 3xx glissando
  26. ; * 4xx vibrato
  27. ; * 5xx glissando + slide volume
  28. ; * 6xx vibrato + slide volume
  29. ;   7xx volume vibrato
  30. ; * 8xx robot
  31. ; * 9xx sample offset - main
  32. ; * axx slide volume
  33. ; * bxx song repeat
  34. ; * cxx set volume
  35. ; * dxx pattern break
  36. ; * fxx set speed
  37. ;
  38. ;----------------------------- exx commands ---------------------------
  39. ; * e00 filter off
  40. ; * e01 filter on
  41. ; * e1x fine slide up
  42. ; * e2x fine slide down
  43. ; * e30 backwd play sample
  44. ; * e31 backwd play sample+loop
  45. ; * e40 stop playing sample
  46. ; * e50 channel    off
  47. ; * e51 channel    on
  48. ; * e6x loops
  49. ; * e8x sample offset 2
  50. ; * e9x retrace
  51. ; * eax fine volume up
  52. ; * ebx fine volume down
  53. ; * ecx cut sample
  54. ;   edx sample delay
  55. ; * eex pause
  56.  
  57.  
  58.     Section    code,code_p
  59.  
  60. BuffSize    equ    16384
  61. ChanArea    equ    100
  62.  
  63. PackEnable:    equ    26
  64. PatNum:        equ    46
  65. OrdNum:        equ    47
  66. Orders:        equ    48
  67. SamLens:    equ    176
  68. SamReps:    equ    300
  69. SamReplens:    equ    424
  70. SamVols:    equ    548
  71. SamFins:    equ    579
  72. SongName:    equ    610
  73. SamNames:    equ    642
  74. SongData:    equ    1572
  75.  
  76.  
  77. SamBuffAdr:    equ    0    ; 4
  78. SamRep1:    equ    4    ; 4
  79. SamRep2:    equ    8    ; 4
  80. ChangeAdr:    equ    12    ; 1
  81. MixDon:        equ    13    ; 1
  82. VolA:        equ    14    ; 1
  83. VolB:        equ    15    ; 1
  84. SlideVolOldA    equ    16    ; 1
  85. SlideVolOldB    equ    17    ; 1
  86. ReplaceEnable    equ    18    ; 1
  87. OFFenable    equ    19    ; 1
  88. SamOffsetA    equ    20    ; 1
  89. SamOffsetB    equ    21    ; 1
  90. RetraceCntA    equ    22    ; 1
  91. RetraceCntB    equ    23    ; 1
  92. OldSamNumA:    equ    24    ; 1
  93. OldSamNumB:    equ    25    ; 1
  94. RobotOldVal:    equ    26    ; 1
  95. RobotEnable:    equ    27    ; 1
  96. MainPeriod:    equ    28    ; 2
  97. MainVol:    equ    30    ; 1
  98. MBRpointer    equ    31    ; 1
  99. PlayPointer    equ    32    ; 1
  100. Oldd0        equ    34    ; 2
  101. Oldd1        equ    36    ; 2
  102. Oldd2        equ    38    ; 2
  103. Oldd3        equ    40    ; 2
  104. Oldd4        equ    42    ; 2
  105. Oldd5        equ    44    ; 2
  106. Oldd6        equ    46    ; 2
  107. loopsdataschanA    equ    48    ; 3
  108. loopsdataschanB    equ    51    ; 3
  109. BACKWDenable:    equ    56    ; 1
  110. EqNewSamA    equ    57    ; 1
  111. EqNewSamB    equ    58    ; 1
  112. MainDTALEN:    equ    60    ; 2
  113. PortUpOldValA    equ    62    ; 1
  114. PortUpOldValB    equ    63    ; 1
  115. PortDownOldValA    equ    64    ; 1
  116. PortDownOldValB    equ    65    ; 1
  117. VibratoDatasA    equ    66    ; 4
  118. VibratoDatasB    equ    70    ; 4
  119. GlissandoDatasA    equ    74    ; 6
  120. GlissandoDatasB    equ    80    ; 6
  121. BuffBegADR    equ    86    ; 4
  122. BuffEndADR    equ    90    ; 4
  123. BuffMixADR    equ    94    ; 4
  124. OnOffChanA    equ    98    ; 1
  125. OnOffChanB    equ    99    ; 1
  126.  
  127. ; ----------------- przyklad wykorzystania playera -------------------
  128.  
  129. Start:    move.w    #$4000,$dff09a
  130.     bsr    db_Init
  131. Loop:    bsr    vbl
  132.     bsr    db_Music
  133.     btst    #6,$bfe001
  134.     bne.s    Loop
  135.     bsr    db_end
  136.     move.w    #$c000,$dff09a
  137.     rts
  138.  
  139. vbl:    cmp.b    #$ff,$dff006
  140.     bne.s    vbl
  141.     rts
  142. ; --------------------------------------------------------------------
  143.  
  144.  
  145. db_init:
  146.     move.l    4.w,a6    
  147.     move.w    296(a6),d0    
  148.     move.b    #1,OldCPU
  149.     btst    #0,d0
  150.     beq.s    MC68010
  151.     move.b    #1,OldCPU
  152. MC68010:
  153.     btst    #1,d0
  154.     beq.s    MC68020
  155.     clr.b    OldCPU
  156. MC68020:
  157.     btst    #2,d0
  158.     beq.s    MC68030
  159.     clr.b    OldCPU
  160. MC68030:
  161.     btst    #3,d0
  162.     beq.s    MC68040
  163.     clr.b    OldCPU
  164. MC68040:
  165.     lea    Channel1,a0
  166.     move.l    #sample_buff1_1,(a0)
  167.     move.l    #sample_buff1_1,BuffBegAdr(a0)
  168.     move.l    #sample_buff1_1+BuffSize,BuffEndAdr(a0)
  169.     move.l    #sample_buff1_2,ChanArea(a0)
  170.     move.l    #sample_buff1_2,ChanArea+BuffBegAdr(a0)
  171.     move.l    #sample_buff1_2+BuffSize,ChanArea+BuffEndAdr(a0)
  172.     move.l    #sample_buff1_3,ChanArea*2(a0)
  173.     move.l    #sample_buff1_3,[ChanArea*2]+BuffBegAdr(a0)
  174.     move.l    #sample_buff1_3+BuffSize,[ChanArea*2]+BuffEndAdr(a0)
  175.     move.l    #sample_buff1_4,ChanArea*3(a0)
  176.     move.l    #sample_buff1_4,[ChanArea*3]+BuffBegAdr(a0)
  177.     move.l    #sample_buff1_4+BuffSize,[ChanArea*3]+BuffEndAdr(a0)
  178.  
  179.     clr.b    SongPos
  180.     clr.b    PattPos
  181.     clr.b    count
  182.     move.b    #6,temp
  183.  
  184.     bset    #1,$bfe001
  185.     
  186.     moveq    #0,d0
  187.     moveq    #0,d1
  188.     moveq    #0,d2
  189.     moveq    #0,d3
  190.     moveq    #0,d4
  191.     moveq    #0,d5
  192.     moveq    #0,d6
  193.     moveq    #0,d7
  194.  
  195.     move.l    #0,a0
  196.     move.l    #0,a1
  197.     move.l    #0,a2
  198.     move.l    #0,a3
  199.     move.l    #0,a5
  200.  
  201.     bsr    db_InitVoices
  202.  
  203.     move.b    temp(pc),count
  204.     move.l    ModDIGI,a5
  205.  
  206.     lea    1572(a5),a1        ; song data
  207.     lea    PattAdresses(pc),a2
  208.     move.l    a1,(a2)+
  209.     move.b    PatNum(a5),d7
  210.     moveq    #0,d0
  211. db_MakePatAdr
  212.     move.w    (a1),d0
  213.     addq    #2,d0    
  214.     add.l    d0,a1
  215.     move.l    a1,(a2)+
  216.     dbf    d7,db_MakePatAdr
  217.  
  218.     lea    SamLens(a5),a0
  219.     move.l    a1,d6
  220.     lea    sample_starts(pc),a2
  221.     moveq    #30,d7
  222. db_MakeSamAdr
  223.     move.l    d6,(a2)+
  224.     add.l    (a0)+,d6
  225.     dbf    d7,db_MakeSamAdr
  226.  
  227.     lea    SamLens(a5),a0
  228.     lea    sample_lenghts(pc),a1
  229.     moveq    #31-1,d7
  230. db_cploop1:
  231.     move.l    (a0)+,(a1)+
  232.     dbf    d7,db_cploop1
  233.  
  234.     bsr    make_voltab
  235.     bsr    make_tab
  236.     rts
  237.  
  238. db_InitVoices:
  239.     move.l    #sample_buff1_1,$dff0a0
  240.     move.w    #166,$dff0a4
  241.     move.w    #214,$dff0a6
  242.     clr.w    $dff0a8
  243.     move.l    #sample_buff1_2,$dff0b0
  244.     move.w    #166,$dff0b4
  245.     move.w    #214,$dff0b6
  246.     clr.w    $dff0b8
  247.     move.l    #sample_buff1_3,$dff0c0
  248.     move.w    #166,$dff0c4
  249.     move.w    #214,$dff0c6
  250.     clr.w    $dff0c8
  251.     move.l    #sample_buff1_4,$dff0d0
  252.     move.w    #166,$dff0d4
  253.     move.w    #214,$dff0d6
  254.     clr.w    $dff0d8
  255.     rts
  256.  
  257. PattEnable:    dc.b    0
  258. SongPos:    dc.b    0
  259. PattPos:    dc.b    0
  260. temp:        dc.b    0
  261. count:        dc.b    0
  262. PauseEn:    dc.b    0
  263. PauseVBL:    dc.w    0
  264. JMPEN:        dc.b    0
  265. OldPattPos:    dc.b    0
  266. OldDepAdr:    dc.l    0
  267. modDIGI:    dc.l    module
  268. UnPackedData:    ds.l    8
  269. oldcpu:        dc.b    0
  270. DMA1:        dc.b    0
  271.         even
  272.  
  273. db_music:
  274.     move.l    ModDIGI,a5
  275.     lea    sample_starts(pc),a0    ; sample starts, 124(a0) lenghts
  276.     lea    SamReps(a5),a3        ; sample repeats, 124(a3) replens
  277.     lea    SamVols(a5),a4        ; sample volumes
  278.  
  279.     move.b    count(pc),d7
  280.     cmp.b    temp(pc),d7
  281.     blt    DepackDone
  282.  
  283.     tst.b    temp
  284.     beq.s    NoNewPos
  285.     cmp.b    #64,pattpos
  286.     bne.s    NoNewPos
  287.     clr.b    PattPos
  288.     tst.b    PattEnable
  289.     bne.s    NoNewPos
  290.     addq.b    #1,SongPos
  291. NoNewPos:
  292.     moveq    #0,d6
  293.     moveq    #0,d7
  294.     move.b    OrdNum(a5),d7
  295.     move.b    SongPos(pc),d6
  296.     cmp.w    d6,d7
  297.     bge.s    NoRepeatSong
  298.     clr.b    SongPos
  299.     clr.b    PattPos
  300.     move.l    PattAdresses(pc),a1
  301. NoRepeatSong:
  302.  
  303.     moveq    #0,d7
  304.     move.b    SongPos(pc),d7
  305.     move.b    Orders(a5,d7.w),d7
  306.     lsl.w    #2,d7
  307.     lea    PattAdresses(pc),a1
  308.     move.l    (a1,d7.w),a1
  309.  
  310.     addq.w    #2,a1
  311.     lea    (a1),a6
  312.     lea    64(a1),a5
  313.     moveq    #0,d7
  314.     move.b    PattPos(pc),d7
  315.     add.w    d7,a1
  316.     move.b    OldPattPos(pc),d6
  317.     addq.b    #1,d6
  318.     cmp.b    d6,d7
  319.     beq.s    NoCalcAdr
  320.  
  321.     tst.w    d7
  322.     beq.s    DepackData
  323.     subq    #1,d7
  324.     move.l    a5,d1
  325. DepackCalcAdr:
  326.     move.b    (a6)+,d0
  327.     btst    #7,d0
  328.     beq.s    DepackNoAdd7
  329.     addq    #4,d1
  330. DepackNoAdd7
  331.     btst    #6,d0
  332.     beq.s    DepackNoAdd6
  333.     addq    #4,d1
  334. DepackNoAdd6
  335.     btst    #5,d0
  336.     beq.s    DepackNoAdd5
  337.     addq    #4,d1
  338. DepackNoAdd5
  339.     btst    #4,d0
  340.     beq.s    DepackNoAdd4
  341.     addq    #4,d1
  342. DepackNoAdd4
  343.     btst    #3,d0
  344.     beq.s    DepackNoAdd3
  345.     addq    #4,d1
  346. DepackNoAdd3
  347.     btst    #2,d0
  348.     beq.s    DepackNoAdd2
  349.     addq    #4,d1
  350. DepackNoAdd2
  351.     btst    #1,d0
  352.     beq.s    DepackNoAdd1
  353.     addq    #4,d1
  354. DepackNoAdd1
  355.     btst    #0,d0
  356.     beq.s    DepackNoAdd0
  357.     addq    #4,d1
  358. DepackNoAdd0
  359.     dbf    d7,DepackCalcAdr
  360.     move.l    d1,a5
  361.     move.w    #$f,$dff180
  362.     bra.s    DepackData
  363. NoCalcAdr
  364.     move.l    OldDepAdr(pc),a5
  365. DepackData:
  366.     move.b    PattPos(pc),OldPattPos
  367.     lea    UnPackedData,a6
  368.     moveq    #7,d7
  369. DepackDataLoop
  370.     btst    d7,(a1)
  371.     beq.s    DepackPutZero
  372.     move.l    (a5)+,(a6)+
  373.     dbf    d7,DepackDataLoop
  374.     move.l    a5,OldDepAdr
  375.     bra.s    DepackDone
  376. DepackPutZero
  377.     clr.l    (a6)+
  378.     dbf    d7,DepackDataLoop
  379.     move.l    a5,OldDepAdr
  380. DepackDone
  381.  
  382.     lea    UnPackedData,a1
  383.     moveq    #0,d6
  384.     moveq    #0,d5
  385.     lea    Channel1(pc),a6
  386.     lea    $dff0a0,a5
  387.     bsr    playvoice
  388.     moveq    #1,d5
  389.     lea    Channel2(pc),a6
  390.     lea    $dff0b0,a5
  391.     bsr    playvoice
  392.     moveq    #2,d5
  393.     lea    Channel3(pc),a6
  394.     lea    $dff0c0,a5
  395.     bsr    playvoice
  396.     moveq    #3,d5
  397.     lea    Channel4(pc),a6
  398.     lea    $dff0d0,a5
  399.     bsr    playvoice
  400.  
  401.     tst.w    d6
  402.     beq.s    NoSetDma
  403.  
  404.     bsr    Wait_dma
  405.  
  406.     or.w    #$8000,d6
  407.     move.w    d6,$dff096
  408.  
  409. NoSetDma:
  410.     move.l    ModDIGI,a5
  411.     lea    channel1(pc),a6
  412.     bsr    MIXCHAN
  413.  
  414.     tst.w    PauseVBL
  415.     beq.s    NoPause
  416.     move.b    #1,PauseEn
  417.     subq.w    #1,PauseVBL
  418. NoPause:
  419.  
  420.     move.b    count(pc),d7
  421.     cmp.b    temp(pc),d7
  422.     blt.s    No_NEW
  423.     clr.b    count
  424.  
  425.     tst.w    PauseVBL
  426.     bne.s    DoPAUSE
  427.     addq.b    #1,pattpos
  428.     clr.b    PauseEn
  429. DoPAUSE
  430. No_NEW
  431.     addq.b    #1,count
  432.     rts
  433.  
  434. playvoice:
  435.     clr.b    EqNewSamA(a6)
  436.     clr.b    EqNewSamB(a6)
  437.  
  438.     tst.w    MainPeriod(a6)
  439.     beq.w    PlayOk
  440.  
  441.     tst.b    OffEnable(a6)
  442.     beq.s    NoOFFchan
  443.     clr.b    OffEnable(a6)
  444.  
  445.     tst.w    Oldd0(a6)
  446.     beq.s    NoData1
  447.     tst.w    Oldd4(a6)
  448.     bne.s    OFFchan
  449. NoData1
  450.     tst.b    PlayPointer(a6)
  451.     beq.s    OFFchan
  452.     move.w    Oldd2(a6),d1
  453.     lsr.w    #8,d1
  454.     cmp.b    #3,d1
  455.     beq.s    NoOFFchan
  456.     cmp.b    #5,d1
  457.     beq.s    NoOFFchan
  458.     move.w    Oldd6(a6),d1
  459.     lsr.w    #8,d1
  460.     cmp.b    #3,d1
  461.     beq.s    NoOFFchan
  462.     cmp.b    #5,d1
  463.     beq.s    NoOFFchan
  464. OFFchan
  465.     moveq    #0,d0
  466.     bset    d5,d0
  467.     move.w    d0,$dff096
  468.     bset    d5,d6
  469. NoOFFchan
  470.     cmp.w    #-1,MainPeriod(a6)
  471.     beq.w    StopChan
  472.  
  473.     tst.b    MBRpointer(a6)
  474.     bne.s    NoPlayMixBuff
  475.     move.l    BuffBegAdr(a6),(a5)
  476.     move.w    #BuffSize/2,4(a5)
  477.     move.w    MainPeriod(a6),6(a5)
  478.     moveq    #0,d7
  479.     move.b    MainVol(a6),d7
  480.     move.w    d7,8(a5)
  481.     move.b    #1,PlayPointer(a6)
  482.     bra.s    PlayOK
  483. NoPlayMixBuff
  484.     move.l    BuffMixADR(a6),(a5)
  485.     move.w    OldD3(a6),d3
  486.     lsr.w    #1,d3
  487.     move.w    d3,4(a5)
  488.     move.w    MainPeriod(a6),6(a5)
  489.     moveq    #0,d7
  490.     move.b    MainVol(a6),d7
  491.     move.w    d7,8(a5)
  492.     bra.s    PlayOK
  493. StopChan
  494.     moveq    #0,d0
  495.     bset    d5,d0
  496.     bclr    d5,d6
  497.     move.w    d0,$dff096
  498.     move.b    #1,PlayPointer(a6)
  499.     clr.w    MainPeriod(a6)
  500. PlayOK    rts
  501.  
  502.  
  503. WAIT_DMA:
  504.     moveq    #0,d1
  505.     move.b    $dff006,d1
  506.     ext.w    d1
  507. WAITDMA_loop
  508.     moveq    #0,d0
  509.     move.b    $dff006,d0
  510.     sub.w    #14,d0
  511.     ext.w    d0
  512.     cmp.w    d1,d0
  513.     blt.s    WAITDMA_loop
  514.     rts
  515.  
  516. MIXCHAN:
  517. *-------------------- channel 1a,1b mix ---------------------------
  518.     lea    sample_pos1(pc),a2    ; sample positions
  519.     move.w    Oldd0(a6),d0
  520.     move.w    Oldd1(a6),d1
  521.     move.w    Oldd2(a6),d2
  522.     move.w    Oldd3(a6),d3
  523.     move.w    Oldd4(a6),d4
  524.     move.w    Oldd5(a6),d5
  525.     move.w    Oldd6(a6),d6
  526.  
  527.     tst.w    what
  528.     bne.s    ok1
  529.     move.l    #sample_buff1_MIX,BuffMixADR(a6)
  530. ok1:
  531.     cmp.w    #1,what
  532.     bne.s    ok2
  533.     move.l    #sample_buff1_MIX+640,BuffMixADR(a6)
  534. ok2:
  535.     cmp.w    #2,what
  536.     bne.s    ok3
  537.     move.l    #sample_buff1_MIX+1280,BuffMixADR(a6)
  538. ok3:
  539.     bsr    mainPROC
  540.     move.w    d0,Oldd0(a6)
  541.     move.w    d1,Oldd1(a6)
  542.     move.w    d2,Oldd2(a6)
  543.     move.w    d3,Oldd3(a6)
  544.     move.w    d4,Oldd4(a6)
  545.     move.w    d5,Oldd5(a6)
  546.     move.w    d6,Oldd6(a6)
  547.  
  548. *-------------------- channel 2a,2b mix ---------------------------
  549.     lea    ChanArea(a6),a6
  550.     lea    sample_pos2(pc),a2    ; sample positions
  551.     move.w    Oldd0(a6),d0
  552.     move.w    Oldd1(a6),d1
  553.     move.w    Oldd2(a6),d2
  554.     move.w    Oldd3(a6),d3
  555.     move.w    Oldd4(a6),d4
  556.     move.w    Oldd5(a6),d5
  557.     move.w    Oldd6(a6),d6
  558.     lea    8(a1),a1
  559.  
  560.     tst.w    what
  561.     bne.s    ok1_2
  562.     move.l    #sample_buff2_MIX,BuffMixADR(a6)
  563. ok1_2:
  564.     cmp.w    #1,what
  565.     bne.s    ok2_2
  566.     move.l    #sample_buff2_MIX+640,BuffMixADR(a6)
  567. ok2_2:
  568.     cmp.w    #2,what
  569.     bne.s    ok3_2
  570.     move.l    #sample_buff2_MIX+1280,BuffMixADR(a6)
  571. ok3_2:
  572.     bsr    mainPROC
  573.     move.w    d0,Oldd0(a6)
  574.     move.w    d1,Oldd1(a6)
  575.     move.w    d2,Oldd2(a6)
  576.     move.w    d3,Oldd3(a6)
  577.     move.w    d4,Oldd4(a6)
  578.     move.w    d5,Oldd5(a6)
  579.     move.w    d6,Oldd6(a6)
  580. *-------------------- channel 3a,3b mix ---------------------------
  581.     lea    ChanArea(a6),a6
  582.     lea    sample_pos3(pc),a2    ; sample positions
  583.     move.w    Oldd0(a6),d0
  584.     move.w    Oldd1(a6),d1
  585.     move.w    Oldd2(a6),d2
  586.     move.w    Oldd3(a6),d3
  587.     move.w    Oldd4(a6),d4
  588.     move.w    Oldd5(a6),d5
  589.     move.w    Oldd6(a6),d6
  590.     lea    8(a1),a1
  591.  
  592.     tst.w    what
  593.     bne.s    ok1_3
  594.     move.l    #sample_buff3_MIX,BuffMixADR(a6)
  595. ok1_3:
  596.     cmp.w    #1,what
  597.     bne.s    ok2_3
  598.     move.l    #sample_buff3_MIX+640,BuffMixADR(a6)
  599. ok2_3:
  600.     cmp.w    #2,what
  601.     bne.s    ok3_3
  602.     move.l    #sample_buff3_MIX+1280,BuffMixADR(a6)
  603. ok3_3:
  604.     bsr    mainPROC
  605.     move.w    d0,Oldd0(a6)
  606.     move.w    d1,Oldd1(a6)
  607.     move.w    d2,Oldd2(a6)
  608.     move.w    d3,Oldd3(a6)
  609.     move.w    d4,Oldd4(a6)
  610.     move.w    d5,Oldd5(a6)
  611.     move.w    d6,Oldd6(a6)
  612. *-------------------- channel 4a,4b mix ---------------------------
  613.     lea    ChanArea(a6),a6
  614.     lea    sample_pos4(pc),a2    ; sample positions
  615.     move.w    Oldd0(a6),d0
  616.     move.w    Oldd1(a6),d1
  617.     move.w    Oldd2(a6),d2
  618.     move.w    Oldd3(a6),d3
  619.     move.w    Oldd4(a6),d4
  620.     move.w    Oldd5(a6),d5
  621.     move.w    Oldd6(a6),d6
  622.     lea    8(a1),a1
  623.  
  624.     tst.w    what
  625.     bne.s    ok1_4
  626.     move.l    #sample_buff4_MIX,BuffMixADR(a6)
  627. ok1_4:
  628.     cmp.w    #1,what
  629.     bne.s    ok2_4
  630.     move.l    #sample_buff4_MIX+640,BuffMixADR(a6)
  631. ok2_4:
  632.     cmp.w    #2,what
  633.     bne.s    ok3_4
  634.     move.l    #sample_buff4_MIX+1280,BuffMixADR(a6)
  635. ok3_4:
  636.     bsr    mainPROC
  637.     move.w    d0,Oldd0(a6)
  638.     move.w    d1,Oldd1(a6)
  639.     move.w    d2,Oldd2(a6)
  640.     move.w    d3,Oldd3(a6)
  641.     move.w    d4,Oldd4(a6)
  642.     move.w    d5,Oldd5(a6)
  643.     move.w    d6,Oldd6(a6)
  644. * ----------------------------------------------------------
  645.     tst.w    what
  646.     bne.s    whatok
  647.     move.w    #3,what
  648. whatok
  649.     subq    #1,what
  650.     rts
  651.  
  652. ; -------------- main procedure ----------------------------
  653. mainPROC:
  654.     tst.b    temp
  655.     beq    old_data
  656.  
  657.     move.b    count(pc),d7
  658.     cmp.b    temp(pc),d7
  659.     blt    old_data
  660.  
  661.     tst.b    PauseEn
  662.     bne.w    oldperiod_1
  663.     tst.b    OnOffChanA(a6)
  664.     bne.w    oldperiod_1
  665.  
  666.     moveq    #0,d3
  667.  
  668.     tst.w    (a1)
  669.     beq.s    oldperiod_1
  670.  
  671.     move.w    2(a1),d7
  672.     and.w    #$0f00,d7
  673.     cmp.w    #$300,d7
  674.     bne.s    NoClrGliss_1
  675.     clr.w    GlissandoDatasA+4(a6)
  676. NoClrGliss_1
  677.  
  678.     clr.b    BackWDenable(a6)
  679.     clr.w    VibratoDatasA(a6)
  680.  
  681.     move.b    #1,OffEnable(a6)
  682.     move.b    #1,EqNewSamA(a6)
  683.     move.w    (a1),d7
  684.  
  685.     btst    #12,d7
  686.     beq.s    nohisam1
  687.     move.b    #1,hisam
  688.     bclr    #12,d7
  689.     tst.w    d7
  690.     beq.s    oldperiod_1
  691. nohisam1
  692.     move.w    d7,d0
  693.  
  694.     tst.b    MixDon(a6)
  695.     beq.s    cont1
  696.  
  697.     move.l    (a0,d5.w),d7
  698.     add.l    124(a0,d5.w),d7
  699.     cmp.l    124(a2,d5.w),d7
  700.     bgt.s    cont1
  701.  
  702.     tst.l    (a3,d5.w)
  703.     bne.s    cont1
  704.  
  705.     clr.l    124(a2,d5.w)
  706.     moveq    #0,d4
  707.     moveq    #0,d5
  708.     moveq    #0,d6
  709.     clr.b    MixDon(a6)
  710. cont1:
  711.     bra.s    newperiod_1
  712. oldperiod_1:
  713.     moveq    #-1,d3
  714. newperiod_1:
  715.  
  716.     moveq    #0,d2
  717.  
  718.     tst.b    hisam
  719.     bne.s    neweff_1
  720.     tst.w    2(a1)
  721.     beq.w    oldeff_1
  722. neweff_1
  723.     move.w    2(a1),d2
  724.     move.w    d2,d7
  725.     lsr.w    #8,d7
  726.     lsr.w    #4,d7
  727.  
  728.     tst.b    hisam
  729.     beq.s    nohisam11
  730.     add.w    #$10,d7
  731.     clr.b    hisam
  732. nohisam11
  733.  
  734.     tst.b    d7
  735.     beq.s    oldeff_1
  736.  
  737.     cmp.b    #-1,d3
  738.     bne.s    noupvol_1
  739.     move.w    d1,d3
  740.     lsr.w    #2,d3
  741.     move.b    (a4,d3.w),VolA(a6)
  742.     and.w    #$0fff,d2
  743.     bra.s    NoOldNum_1
  744. noupvol_1:
  745.  
  746.     move.w    d7,d1
  747.     subq    #1,d1
  748.     lsl.w    #2,d1
  749.     move.w    d2,d7
  750.     and.w    #$0f00,d7
  751.     cmp.w    #$300,d7
  752.     bne.s    NewAdr_1
  753.  
  754.     tst.l    (a2,d1.w)
  755.     bne.s    NoNewAdr_1
  756.     moveq    #0,d0
  757.     moveq    #0,d1
  758.     moveq    #0,d2
  759.     bra.s    NoOldNum_1
  760. NewAdr_1
  761.     move.l    (a0,d1.w),(a2,d1.w)
  762. NoNewAdr_1
  763.     move.w    d1,d3
  764.     lsr.w    #2,d3
  765.     move.b    (a4,d3.w),VolA(a6)
  766.     and.w    #$0fff,d2
  767.     move.b    d1,OldSamNumA(a6)
  768.     bra.s    NoOldNum_1
  769. oldeff_1:
  770.     tst.w    (a1)
  771.     beq.s    NoOldNum_1
  772.  
  773.     moveq    #0,d1
  774.     move.b    OldSamNumA(a6),d1
  775.  
  776.     move.w    d2,d7
  777.     and.w    #$0f00,d7
  778.     cmp.w    #$500,d7
  779.     beq.s    YeGL_1
  780.     cmp.w    #$300,d7
  781.     bne.s    NoGL_1
  782. YeGL_1
  783.     tst.l    (a2,d1.w)
  784.     bne.s    NoOldNum_1
  785.     moveq    #0,d0
  786.     moveq    #0,d1
  787.     moveq    #0,d2
  788.     bra.s    NoOldNum_1
  789. NoGL_1
  790.  
  791.     move.l    (a0,d1.w),(a2,d1.w)
  792. NoOldNum_1
  793.  
  794.  
  795.  
  796.  
  797.  
  798.     tst.b    PauseEn
  799.     bne.w    oldperiod_2
  800.     tst.b    OnOffChanB(a6)
  801.     bne.s    oldperiod_2
  802.  
  803.     moveq    #0,d3
  804.  
  805.     tst.w    4(a1)
  806.     beq.s    oldperiod_2
  807.  
  808.     move.w    6(a1),d7
  809.     and.w    #$0f00,d7
  810.     cmp.w    #$300,d7
  811.     bne.s    NoClrGliss_2
  812.     clr.w    GlissandoDatasB+4(a6)
  813. NoClrGliss_2
  814.  
  815.     clr.w    VibratoDatasB(a6)
  816.     move.b    #1,OffEnable(a6)
  817.     move.b    #1,EqNewSamB(a6)
  818.  
  819.     move.w    4(a1),d7
  820.  
  821.     btst    #12,d7
  822.     beq.s    nohisam_2
  823.     move.b    #1,hisam
  824.     bclr    #12,d7
  825.     tst.w    d7
  826.     beq.s    oldperiod_2
  827. nohisam_2:
  828.     move.w    d7,d4
  829.  
  830.     tst.b    MixDon(a6)
  831.     beq.s    cont2
  832.  
  833.     move.l    (a0,d1.w),d7
  834.     add.l    124(a0,d1.w),d7
  835.     cmp.l    (a2,d1.w),d7
  836.     bgt.s    cont2
  837.  
  838.     tst.l    (a3,d1.w)
  839.     bne.s    cont2
  840.  
  841.     clr.l    (a2,d1.w)
  842.     moveq    #0,d0
  843.     moveq    #0,d1
  844.     moveq    #0,d2
  845.     clr.b    MixDon(a6)
  846. cont2:
  847.     bra.s    newperiod_2
  848. oldperiod_2:
  849.     moveq    #-1,d3
  850. newperiod_2:
  851.  
  852.     moveq    #0,d6
  853.  
  854.     tst.b    hisam
  855.     bne.s    neweff_2
  856.     tst.w    6(a1)
  857.     beq.s    oldeff_2
  858. neweff_2
  859.     move.w    6(a1),d6
  860.  
  861.     move.w    d6,d7
  862.     lsr.w    #8,d7
  863.     lsr.w    #4,d7
  864.  
  865.     tst.b    hisam
  866.     beq.s    nohisam22
  867.     add.w    #$10,d7
  868.     clr.b    hisam
  869. nohisam22
  870.  
  871.     tst.b    d7
  872.     beq.s    OldEff_2
  873.  
  874.     cmp.b    #-1,d3
  875.     bne.s    noupvol_2
  876.     move.w    d5,d3
  877.     lsr.w    #2,d3
  878.     move.b    (a4,d3.w),VolB(a6)
  879.     and.w    #$0fff,d6
  880.     bra.s    NoOldNum_2
  881. noupvol_2:
  882.     move.w    d7,d5
  883.     subq    #1,d5
  884.     lsl.w    #2,d5
  885.  
  886.     move.w    d6,d7
  887.     and.w    #$0f00,d7
  888.     cmp.w    #$300,d7
  889.     bne.s    NewAdr_2
  890.  
  891.     tst.l    124(a2,d5.w)        ; adres sampla
  892.     bne.s    NoNewAdr_2
  893.     moveq    #0,d4
  894.     moveq    #0,d5
  895.     moveq    #0,d6
  896.     bra.s    NoOldNum_2
  897. NewAdr_2
  898.     move.l    (a0,d5.w),124(a2,d5.w)    ; adres sampla
  899. NoNewAdr_2
  900.     move.w    d5,d3
  901.     lsr.w    #2,d3
  902.     move.b    (a4,d3.w),VolB(a6)
  903.     and.w    #$0fff,d6
  904.     move.b    d5,OldSamNumB(a6)
  905.     bra.s    NoOldNum_2
  906. OldEff_2:
  907.     tst.w    4(a1)
  908.     beq.s    NoOldNum_2
  909.  
  910.     moveq    #0,d5
  911.     move.b    OldSamNumB(a6),d5
  912.  
  913.     move.w    d6,d7
  914.     and.w    #$0f00,d7
  915.     cmp.w    #$500,d7
  916.     beq.s    YeGL_2
  917.     cmp.w    #$300,d7
  918.     bne.s    NoGL_2
  919. YeGL_2
  920.     tst.l    124(a2,d5.w)
  921.     bne.s    NoOldNum_2
  922.     moveq    #0,d4
  923.     moveq    #0,d5
  924.     moveq    #0,d6
  925.     bra.s    NoOldNum_2
  926. NoGL_2
  927.     move.l    (a0,d5.w),124(a2,d5.w)
  928. NoOldNum_2
  929.  
  930.     move.l    a5,-(sp)
  931.     bsr    EffectCommandsA2
  932.     bsr    EffectCommandsB2
  933.     move.l    (sp)+,a5
  934.  
  935.     tst.b    OnOffChanA(a6)
  936.     bne.s    Stop1
  937.     cmp.w    #$0e40,d2
  938.     bne.s    No_stop1
  939.     move.l    BuffBegAdr(a6),(a6)
  940.     move.b    #1,OffEnable(a6)
  941. Stop1    moveq    #0,d0
  942.     moveq    #0,d1
  943.     moveq    #0,d2
  944. No_stop1
  945.     tst.b    OnOffChanB(a6)
  946.     bne.s    Stop2
  947.     cmp.w    #$0e40,d6
  948.     bne.s    No_stop2
  949.     move.l    BuffBegAdr(a6),(a6)
  950.     move.b    #1,OffEnable(a6)
  951. Stop2    moveq    #0,d4
  952.     moveq    #0,d5
  953.     moveq    #0,d6
  954. No_stop2
  955.  
  956. old_data:
  957.  
  958.     move.b    temp(pc),d7
  959.     subq    #1,d7
  960.     cmp.b    count(pc),d7
  961.     bne.s    no_CLReff2
  962.     move.w    d2,d7
  963.     lsr.w    #8,d7
  964.     cmp.b    #8,d7
  965.     beq.s    no_CLReff1
  966.     cmp.b    #3,d7
  967.     beq.s    no_CLReff1
  968.     cmp.b    #5,d7
  969.     beq.s    CLReffSP1
  970.     move.w    d2,d7
  971.     lsr.w    #4,d7
  972.     cmp.w    #$ec,d7
  973.     beq.s    no_CLReff1
  974.     moveq    #0,d2
  975.     bra.s    no_CLReff1
  976. CLReffSP1:
  977.     move.w    #$0300,d2
  978. no_CLReff1
  979.     move.w    d6,d7
  980.     lsr.w    #8,d7
  981.     cmp.b    #3,d7
  982.     beq.s    no_CLReff2
  983.     cmp.b    #5,d7
  984.     beq.s    CLReffSP2
  985.     move.w    d6,d7
  986.     lsr.w    #4,d7
  987.     cmp.w    #$ec,d7
  988.     beq.s    no_CLReff2
  989.     moveq    #0,d6
  990.     bra.s    no_CLReff2
  991. CLReffSP2:
  992.     move.w    #$0300,d6
  993. no_CLReff2
  994.  
  995.     cmp.w    #113,d0
  996.     bge.w    OKKI1
  997.     moveq    #0,d0
  998.     moveq    #0,d1
  999.     moveq    #0,d2
  1000. OKKI1
  1001.     cmp.w    #113,d4
  1002.     bge.s    OKKI2
  1003.     moveq    #0,d4
  1004.     moveq    #0,d5
  1005.     moveq    #0,d6
  1006. OKKI2
  1007.  
  1008.     move.l    a5,-(sp)
  1009.     bsr    EffectCommandsA
  1010.     bsr    EffectCommandsB
  1011.     move.l    (sp)+,a5
  1012.  
  1013.     move.w    d0,GlissandoDatasA+2(a6)
  1014.     move.w    d4,GlissandoDatasB+2(a6)
  1015.  
  1016. ; -----------------------------------
  1017.  
  1018.     tst.w    d0
  1019.     bne.s    NoReplace1
  1020.     tst.w    d4
  1021.     beq.s    NoReplace1
  1022.     move.l    124(a2,d5.w),(a2,d5.w)
  1023.     clr.l    124(a2,d5.w)
  1024.     move.w    d4,d0
  1025.     move.w    d5,d1
  1026.     move.w    d6,d2
  1027.     moveq    #0,d4
  1028.     moveq    #0,d5
  1029.     moveq    #0,d6
  1030.     move.b    #1,ReplaceEnable(a6)
  1031.     move.b    VolA(a6),d3
  1032.     move.b    VolB(a6),VolA(a6)
  1033.     move.b    d3,VolB(a6)
  1034. NoReplace1
  1035.  
  1036.     tst.w    d4
  1037.     bne    mixing
  1038.  
  1039.     clr.b    MBRpointer(a6)
  1040.  
  1041.     tst.w    d0
  1042.     beq    nothing
  1043.  
  1044.     move.w    d0,MainPeriod(a6)
  1045.     move.b    VolA(a6),MainVol(a6)
  1046.  
  1047.     tst.b    OffEnable(a6)
  1048.     beq.s    NoAtStartBuff
  1049.     tst.b    PlayPointer(a6)
  1050.     beq.s    BuffAtStart
  1051.     move.w    d2,d7
  1052.     lsr.w    #8,d7
  1053.     cmp.b    #3,d7
  1054.     beq.s    NoAtStartBuff
  1055.     cmp.b    #5,d7
  1056.     beq.s    NoAtStartBuff
  1057. BuffAtStart
  1058.     move.l    BuffBegAdr(a6),(a6)
  1059. NoAtStartBuff
  1060.  
  1061.     move.l    #71590,d3
  1062.     divu    d0,d3
  1063.     and.l    #$0000ffff,d3
  1064. ; - - - - - - - - - - - - - - -  backwd play - - - - - - - - - - - - - - -
  1065.     tst.b    BackWDenable(a6)
  1066.     bne.s    bckOK
  1067.  
  1068.     move.w    d2,d7
  1069.     lsr.w    #4,d7
  1070.     cmp.w    #$e3,d7
  1071.     bne.s    no_backwd
  1072.     move.l    124(a0,d1.w),d7
  1073.     add.l    d7,(a2,d1.w)
  1074.     move.b    #1,BackWDenable(a6)
  1075.  
  1076.     move.b    d2,d7
  1077.     and.b    #$0f,d7
  1078.     beq.s    bckOK
  1079.     move.b    #2,BackWDenable(a6)
  1080. bckOK
  1081.     move.b    #1,MBRpointer(a6)
  1082.     movem.l    d0-d1/a4-a5,-(sp)
  1083.  
  1084.     move.l    (a0,d1.w),d0
  1085.     move.w    d3,d7
  1086.     move.l    (a2,d1.w),a5
  1087.     move.l    BuffMixADR(a6),a4
  1088.  
  1089.     cmp.b    #1,BackWDenable(a6)
  1090.     beq.s    copy_loopbck1
  1091.  
  1092. copy_loopbck2:
  1093.     cmp.l    d0,a5
  1094.     ble.s    sampleend_str
  1095.     move.b    -(a5),(a4)+
  1096.     dbf    d7,copy_loopbck2
  1097.     bra.s    bck_done
  1098. sampleend_str:
  1099.     clr.b    BackWDenable(a6)
  1100.     bra.s    bck_done
  1101. copy_loopbck1:
  1102.     cmp.l    d0,a5
  1103.     ble.w    sampleend
  1104.     move.b    -(a5),(a4)+
  1105.     dbf    d7,copy_loopbck1
  1106. bck_done:
  1107.  
  1108.     movem.l    (sp)+,d0-d1/a4-a5
  1109.     sub.l    d3,(a2,d1.w)
  1110.     bra.w    Replace2
  1111. no_backwd
  1112.     move.w    d2,d7
  1113.     lsr.w    #8,d7
  1114.     cmp.b    #$8,d7
  1115.     beq    RobotEffect
  1116.  
  1117.     tst.b    RobotEnable(a6)
  1118.     beq.s    NoOffCH
  1119.     move.b    #1,Offenable(a6)
  1120.     move.l    BuffBegAdr(a6),(a6)
  1121. NoOffCH    clr.b    RobotEnable(a6)
  1122. ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  1123.     addq    #1,d3
  1124.  
  1125.     tst.l    124(a3,d1.w)
  1126.     bne    sampleloop
  1127.  
  1128.     movem.l    d0-d1/a4-a5,-(sp)
  1129.  
  1130.     move.l    124(a0,d1.w),d0
  1131.     add.l    (a0,d1.w),d0
  1132.     move.l    (a2,d1.w),a5
  1133.     cmp.l    d0,a5
  1134.     blt.s    NotSamEnd0
  1135.     move.w    #-1,MainPeriod(a6)
  1136.     bra    realsampleend
  1137. NotSamEnd0
  1138.  
  1139.     move.l    (a6),d7
  1140.     move.l    (a6),d1
  1141.     add.l    d3,d1
  1142.     cmp.l    BuffEndAdr(a6),d1
  1143.     ble.s    NotEndBuff
  1144.  
  1145.     move.l    a5,d7
  1146.     add.l    d3,d7
  1147.     cmp.l    d0,d7
  1148.     ble.s    NotSamEnd2
  1149.     move.w    #-1,MainPeriod(a6)
  1150.     bra    realsampleend
  1151. NotSamEnd2
  1152.     sub.l    BuffEndAdr(a6),d1
  1153.     move.w    d3,d7
  1154.     sub.w    d1,d7
  1155.     subq.w    #1,d7
  1156.     move.l    (a6),a4
  1157.     bsr    copy_loop
  1158.  
  1159.     move.l    BuffBegAdr(a6),(a6)
  1160.     move.l    (a6),a4
  1161.  
  1162.     move.w    d1,d7
  1163.     subq.w    #1,d7
  1164.     bsr    copy_loop
  1165.     bra.s    CopyDone
  1166. NotEndBuff
  1167.  
  1168.     move.l    (a6),a4
  1169.  
  1170.     move.l    a5,d7
  1171.     add.l    d3,d7
  1172.     cmp.l    d0,d7
  1173.     ble.s    NotSamEnd1
  1174.     sub.l    d0,d7
  1175.     move.w    d7,d0
  1176.     move.w    d3,d7
  1177.     sub.w    d0,d7
  1178.     subq.w    #1,d7
  1179.     bsr    copy_loop
  1180.  
  1181.     move.w    d0,d7
  1182.     beq.s    nosubq1
  1183.     subq.w    #1,d7
  1184. nosubq1
  1185.     bra    sampleend
  1186. NotSamEnd1
  1187.     move.w    d3,d7
  1188.     subq    #1,d7
  1189.     bsr    copy_loop
  1190. CopyDone:
  1191.     move.l    a4,(a6)
  1192.     movem.l    (sp)+,d0-d1/a4-a5
  1193.     add.l    d3,(a2,d1.w)
  1194.  
  1195. Replace2:
  1196.     move.w    d3,MainDTALEN(a6)
  1197. Replace_R:
  1198.     tst.b    ReplaceEnable(a6)
  1199.     beq.s    NoReplace2
  1200.     move.l    (a2,d1.w),124(a2,d1.w)
  1201.     clr.l    (a2,d1.w)
  1202.     move.w    d0,d4
  1203.     move.w    d1,d5
  1204.     move.w    d2,d6
  1205.     clr.b    ReplaceEnable(a6)
  1206.     move.b    VolA(a6),d0
  1207.     move.b    VolB(a6),VolA(a6)
  1208.     move.b    d0,VolB(a6)
  1209.     moveq    #0,d0
  1210.     moveq    #0,d1
  1211.     moveq    #0,d2
  1212. NoReplace2
  1213.     rts
  1214.  
  1215. copy_loop:
  1216.     tst.w    d7
  1217.     blt.s    copy_loopex
  1218.     tst.b    VolA(a6)
  1219.     beq.s    copyclr_loop
  1220.     tst.b    OldCPU
  1221.     bne.s    copy_loopL68000
  1222.     movem.l    d7/a4-a5,-(sp)
  1223.     lsr.w    #2,d7
  1224. copy_loopL
  1225.     move.l    (a5)+,(a4)+
  1226.     dbf    d7,copy_loopL
  1227.     movem.l    (sp)+,d7/a4-a5
  1228.     addq    #1,d7
  1229.     add.w    d7,a5
  1230.     add.w    d7,a4
  1231.     rts
  1232. copy_loopL68000
  1233.     move.b    (a5)+,(a4)+
  1234.     dbf    d7,copy_loopL68000
  1235. copy_loopex
  1236.     rts
  1237.  
  1238. copyclr_loop:
  1239.     moveq    #0,d6
  1240.     tst.b    OldCPU
  1241.     bne.s    copyclr_loopL68000
  1242.     movem.l    d7/a4-a5,-(sp)
  1243.     lsr.w    #2,d7
  1244. copy_loopclrL
  1245.     move.l    d6,(a4)+
  1246.     dbf    d7,copy_loopclrL
  1247.     movem.l    (sp)+,d7/a4-a5
  1248.     addq    #1,d7
  1249.     add.w    d7,a5
  1250.     add.w    d7,a4
  1251.     rts
  1252. copyclr_loopL68000
  1253.     move.b    d6,(a4)+
  1254.     dbf    d7,copyclr_loopL68000
  1255.     rts
  1256.  
  1257. nothing:
  1258.     tst.w    MainPeriod(a6)
  1259.     beq.s    nostopperiod
  1260.     move.w    #-1,MainPeriod(a6)
  1261. nostopperiod
  1262.     rts
  1263.  
  1264. sampleend:
  1265.     moveq    #0,d0
  1266.     clr.b    -1(a4)
  1267. clr_loop:
  1268.     move.b    d0,(a4)+
  1269.     dbf    d7,clr_loop
  1270. realsampleend:
  1271.     movem.l    (sp)+,d0-d1/a4-a5
  1272.     clr.l    (a2,d1.w)
  1273.     moveq    #0,d0
  1274.     moveq    #0,d1
  1275.     moveq    #0,d2
  1276.     clr.b    ReplaceEnable(a6)
  1277.     clr.b    BackWDenable(a6)
  1278.     rts
  1279.  
  1280. sampleloop:
  1281.     movem.l    d0-d4/a4-a5,-(sp)
  1282.  
  1283.     move.l    (a2,d1.w),a5
  1284.     move.l    124(a3,d1.w),d4
  1285.     add.l    (a3,d1.w),d4
  1286.     add.l    (a0,d1.w),d4
  1287.  
  1288.     cmp.l    d4,a5
  1289.     ble.s    NotSamEndL
  1290.     move.l    d4,(a2,d1.w)
  1291.     subq.l    #1,(a2,d1.w)
  1292.     move.l    d4,a5
  1293.     subq.l    #1,a5
  1294. NotSamEndL
  1295.  
  1296.     move.l    (a6),d7
  1297.     move.l    (a6),d2
  1298.     add.l    d3,d2
  1299.     cmp.l    BuffEndAdr(a6),d2
  1300.     ble.w    NotEndBuff_L
  1301.  
  1302.     move.l    (a6),a4
  1303.     move.l    a5,d7
  1304.     add.l    d3,d7
  1305.     cmp.l    d4,d7
  1306.     ble.w    NoMakeLoop_EB
  1307.  
  1308.     sub.l    d4,d7            ; loop
  1309.     move.w    d7,d4
  1310.     move.w    d3,d7
  1311.     sub.w    d4,d7
  1312.  
  1313.     sub.l    BuffEndAdr(a6),d2
  1314.     move.w    d3,d0
  1315.     sub.w    d2,d0
  1316.  
  1317.     cmp.w    d0,d7
  1318.     bge.s    Copy_ToEndBuff
  1319. ; d0=>d7 koniec buff pozniej niz petla
  1320.  
  1321.     move.l    BuffEndAdr(a6),d2
  1322.  
  1323.     move.w    d3,d7
  1324.     subq    #1,d7
  1325.     move.l    124(a3,d1.w),d4
  1326.     add.l    (a3,d1.w),d4
  1327.     add.l    (a0,d1.w),d4
  1328.  
  1329.     move.l    (a3,d1.w),d0
  1330.     add.l    (a0,d1.w),d0
  1331.     bra.s    copy_loop3EBML2
  1332. copy_loop4EBML2:
  1333.     move.l    d0,a5
  1334. copy_loop3EBML2:
  1335.     cmp.l    d4,a5
  1336.     bge.s    copy_loop4EBML2
  1337.  
  1338.     cmp.l    d2,a4
  1339.     blt.s    EBMLcont
  1340.     move.l    BuffBegAdr(a6),(a6)
  1341.     move.l    (a6),a4
  1342. EBMLcont
  1343.     move.b    (a5)+,(a4)+
  1344.     dbf    d7,copy_loop3EBML2
  1345.     bra.s    MakeLoopEB_done
  1346.  
  1347. Copy_ToEndBuff
  1348.     exg    d0,d7
  1349.     sub.w    d7,d0
  1350.     subq    #1,d7
  1351.     bsr    copy_loop
  1352.     move.l    BuffBegAdr(a6),(a6)
  1353.     move.l    (a6),a4
  1354.     exg    d0,d7
  1355.     subq    #1,d7
  1356.     bsr    copy_loop
  1357.  
  1358.     move.w    d4,d7
  1359.     subq.w    #1,d7
  1360.     move.l    124(a3,d1.w),d4
  1361.     add.l    (a3,d1.w),d4
  1362.     add.l    (a0,d1.w),d4
  1363.  
  1364.     move.l    (a3,d1.w),d0
  1365.     add.l    (a0,d1.w),d0
  1366. copy_loop4EBML:
  1367.     move.l    d0,a5
  1368. copy_loop3EBML:
  1369.     cmp.l    d4,a5
  1370.     bge.s    copy_loop4EBML
  1371.     move.b    (a5)+,(a4)+
  1372.     dbf    d7,copy_loop3EBML
  1373.  
  1374. MakeLoopEB_done
  1375.     move.l    a4,(a6)
  1376.     move.l    a5,(a2,d1.w)
  1377.     movem.l    (sp)+,d0-d4/a4-a5
  1378.     bsr    Replace2
  1379.     rts
  1380.  
  1381. NoMakeLoop_EB
  1382.     sub.l    BuffEndAdr(a6),d2
  1383.     move.w    d3,d7
  1384.     sub.w    d2,d7
  1385.     subq.w    #1,d7
  1386.     bsr    copy_loop
  1387.  
  1388.     move.l    BuffBegAdr(a6),(a6)
  1389.     move.l    (a6),a4
  1390.  
  1391.     move.w    d2,d7
  1392.     subq.w    #1,d7
  1393.     bsr    copy_loop
  1394.  
  1395.     move.l    a4,(a6)
  1396.     move.l    a5,(a2,d1.w)
  1397.     movem.l    (sp)+,d0-d4/a4-a5
  1398.     bsr    Replace2
  1399.     rts
  1400.  
  1401. NotEndBuff_L
  1402.     move.l    (a6),a4
  1403.     move.l    a5,d7
  1404.     add.l    d3,d7
  1405.  
  1406.     cmp.l    d4,d7
  1407.     ble.s    NoMakeLoop
  1408.  
  1409.     sub.l    d4,d7
  1410.     move.w    d7,d4
  1411.     move.w    d3,d7
  1412.     sub.w    d4,d7
  1413.     subq.w    #1,d7
  1414.     bsr    copy_loop
  1415.  
  1416.     move.w    d4,d7
  1417.     subq.w    #1,d7
  1418.  
  1419.     move.l    124(a3,d1.w),d4
  1420.     add.l    (a3,d1.w),d4
  1421.     add.l    (a0,d1.w),d4
  1422.  
  1423.     move.l    (a3,d1.w),d0
  1424.     add.l    (a0,d1.w),d0
  1425. copy_loop4:
  1426.     move.l    d0,a5
  1427. copy_loop3:
  1428.     cmp.l    d4,a5
  1429.     bge.s    copy_loop4
  1430.     move.b    (a5)+,(a4)+
  1431.     dbf    d7,copy_loop3
  1432.  
  1433.     move.l    a4,(a6)
  1434.     move.l    a5,(a2,d1.w)
  1435.     movem.l    (sp)+,d0-d4/a4-a5
  1436.     bsr    Replace2
  1437.     rts
  1438.  
  1439. NoMakeLoop
  1440.     move.w    d3,d7
  1441.     subq    #1,d7
  1442.     bsr    copy_loop
  1443.     move.l    a4,(a6)
  1444.     move.l    a5,(a2,d1.w)
  1445.     movem.l    (sp)+,d0-d4/a4-a5
  1446.     bsr    Replace2
  1447.     rts
  1448.  
  1449. ; --------------------------- EffectCommands ---------------------------
  1450.  
  1451. EffectCommandsA2:
  1452. ; effects 9xx, bxx, cxx, dxx, fxx chan A
  1453.  
  1454.     move.w    d2,d7
  1455.     beq    EffComA2exit
  1456.     lsr.w    #8,d7
  1457.     clr.b    channelenable
  1458.     move.w    d2,d3
  1459.  
  1460.     lea    SamoffsetA(a6),a5
  1461.     cmp.b    #9,d7
  1462.     beq    SampleOffset
  1463.  
  1464.     cmp.b    #$b,d7
  1465.     beq    SongRepeat
  1466.  
  1467.     lea    VolA(a6),a5
  1468.     cmp.b    #$c,d7
  1469.     beq    SetVolume
  1470.  
  1471.     lea    Hex(pc),a5
  1472.     cmp.b    #$d,d7
  1473.     beq    PattBreak
  1474.  
  1475.     cmp.b    #$f,d7
  1476.     beq    SetTempo
  1477.  
  1478. ; effects E0x, E1x, E2x, E6x, E8x, EAx, EBx EEx chan A
  1479.  
  1480.     cmp.w    #$e00,d3
  1481.     beq.w    OffFilter
  1482.  
  1483.     cmp.w    #$e01,d3
  1484.     beq.w    OnFilter
  1485.  
  1486.     cmp.w    #$e50,d3
  1487.     beq.w    OffChannelA
  1488.  
  1489.     cmp.w    #$e51,d3
  1490.     beq.w    OnChannelA
  1491.  
  1492.     move.w    d2,d7
  1493.     lsr.w    #4,d7
  1494.     move.w    d2,d3
  1495.  
  1496.     cmp.b    #$e1,d7
  1497.     beq.w    FineSlideUp
  1498.  
  1499.     cmp.b    #$e2,d7
  1500.     beq.w    FineSlideDown
  1501.  
  1502.     lea    loopsdataschanA(a6),a5
  1503.     cmp.b    #$e6,d7
  1504.     beq.w    Loops
  1505.  
  1506.     lea    SamOffsetA(a6),a5
  1507.     cmp.b    #$e8,d7
  1508.     beq    offsets
  1509.  
  1510.     lea    VolA(a6),a5
  1511.     cmp.b    #$ea,d7
  1512.     beq    FineVolUp
  1513.  
  1514.     cmp.b    #$eb,d7
  1515.     beq    FineVolDown
  1516.  
  1517.     cmp.b    #$ee,d7
  1518.     beq    Pause
  1519. EffComA2exit
  1520.     rts
  1521.  
  1522. EffectCommandsB2:
  1523. ; effects 9xx, bxx, cxx, dxx, fxx chan B
  1524.  
  1525.     move.w    d6,d7
  1526.     beq    EffComB2exit
  1527.     lsr.w    #8,d7
  1528.     move.b    #1,channelenable
  1529.     move.w    d6,d3
  1530.  
  1531.     lea    SamoffsetB(a6),a5
  1532.     cmp.b    #9,d7
  1533.     beq    SampleOffset
  1534.  
  1535.     cmp.b    #$b,d7
  1536.     beq    SongRepeat
  1537.  
  1538.     lea    VolB(a6),a5
  1539.     cmp.b    #$c,d7
  1540.     beq    SetVolume
  1541.  
  1542.     lea    Hex(pc),a5
  1543.     cmp.b    #$d,d7
  1544.     beq    PattBreak
  1545.  
  1546.     cmp.b    #$f,d7
  1547.     beq    SetTempo
  1548.  
  1549. ; effects E0x, E1x, E2x, E6x, E8x, EAx, EBx EEx chan B
  1550.  
  1551.     cmp.w    #$e00,d3
  1552.     beq.w    OffFilter
  1553.  
  1554.     cmp.w    #$e01,d3
  1555.     beq.w    OnFilter
  1556.  
  1557.     cmp.w    #$e50,d3
  1558.     beq.w    OffChannelB
  1559.  
  1560.     cmp.w    #$e51,d3
  1561.     beq.w    OnChannelB
  1562.  
  1563.     move.w    d6,d7
  1564.     lsr.w    #4,d7
  1565.     move.w    d6,d3
  1566.  
  1567.     cmp.b    #$e1,d7
  1568.     beq.w    FineSlideUp
  1569.  
  1570.     cmp.b    #$e2,d7
  1571.     beq.w    FineSlideDown
  1572.  
  1573.     lea    loopsdataschanB(a6),a5
  1574.     cmp.b    #$e6,d7
  1575.     beq.w    Loops
  1576.  
  1577.     lea    SamOffsetB(a6),a5
  1578.     cmp.b    #$e8,d7
  1579.     beq    offsets
  1580.  
  1581.     lea    VolB(a6),a5
  1582.     cmp.b    #$ea,d7
  1583.     beq    FineVolUp
  1584.  
  1585.     cmp.b    #$eb,d7
  1586.     beq    FineVolDown
  1587.  
  1588.     cmp.b    #$ee,d7
  1589.     beq    Pause
  1590. EffComB2exit
  1591.     rts
  1592.  
  1593.  
  1594.  
  1595.  
  1596. EffectCommandsA:
  1597. ; effects 1xx, 2xx, 3xx, 4xx, 5xx, 6xx, axx, chan A
  1598.     move.w    d2,d7
  1599.     beq    EffComAexit
  1600.     lsr.w    #8,d7
  1601.     clr.b    channelenable
  1602.     move.w    d2,d3
  1603.  
  1604.     cmp.b    #1,d7
  1605.     beq.w    PortUp
  1606.  
  1607.     cmp.b    #2,d7
  1608.     beq.w    PortDown
  1609.  
  1610.     lea    GlissandoDatasA(a6),a5
  1611.     cmp.b    #3,d7
  1612.     beq.w    Glissando
  1613.  
  1614.     lea    VibratoDatasA(a6),a5
  1615.     cmp.b    #4,d7
  1616.     beq.w    Vibrato
  1617.  
  1618.     cmp.b    #5,d7
  1619.     beq.w    SlideVolGliss
  1620.  
  1621.     cmp.b    #6,d7
  1622.     beq.w    SlideVolVib
  1623.  
  1624.     lea    VolA(a6),a5
  1625.     cmp.b    #$a,d7
  1626.     beq    SlideVolume
  1627.  
  1628. ; effects E9x, ECx chan A
  1629.  
  1630.     move.w    d2,d7
  1631.     lsr.w    #4,d7
  1632.     move.w    d2,d3
  1633.  
  1634.     lea    RetraceCntA(a6),a5
  1635.     cmp.b    #$e9,d7
  1636.     beq.w    Retrace
  1637.  
  1638.     lea    VolA(a6),a5
  1639.     cmp.b    #$ec,d7
  1640.     beq    CutSample
  1641. EffComAexit
  1642.     rts
  1643.  
  1644.  
  1645. EffectCommandsB:
  1646. ; effects 1xx, 2xx, 3xx, 4xx, 5xx, 6xx, axx, chan B
  1647.     move.w    d6,d7
  1648.     beq    EffComBexit
  1649.     lsr.w    #8,d7
  1650.     move.b    #1,channelenable
  1651.     move.w    d6,d3
  1652.  
  1653.     cmp.b    #1,d7
  1654.     beq.w    PortUp
  1655.  
  1656.     cmp.b    #2,d7
  1657.     beq.w    PortDown
  1658.  
  1659.     lea    GlissandoDatasB(a6),a5
  1660.     cmp.b    #3,d7
  1661.     beq.w    Glissando
  1662.  
  1663.     lea    VibratoDatasB(a6),a5
  1664.     cmp.b    #4,d7
  1665.     beq.w    Vibrato
  1666.  
  1667.     cmp.b    #5,d7
  1668.     beq.w    SlideVolGliss
  1669.  
  1670.     cmp.b    #6,d7
  1671.     beq.w    SlideVolVib
  1672.  
  1673.     lea    VolB(a6),a5
  1674.     cmp.b    #$a,d7
  1675.     beq    SlideVolume
  1676.  
  1677. ; effects E9x, ECx chan B
  1678.  
  1679.     move.w    d6,d7
  1680.     lsr.w    #4,d7
  1681.     move.w    d6,d3
  1682.  
  1683.     lea    RetraceCntB(a6),a5
  1684.     cmp.b    #$e9,d7
  1685.     beq.w    Retrace
  1686.  
  1687.     lea    VolB(a6),a5
  1688.     cmp.b    #$ec,d7
  1689.     beq    CutSample
  1690. EffComBexit
  1691.     rts
  1692.  
  1693.  
  1694. channelenable:
  1695.     dc.w    0
  1696.  
  1697. ;------------------------------ effects -------------------------------------
  1698.  
  1699. ;looppattpos    (a5)
  1700. ;loopsongpos    1(a5)
  1701. ;loophowmany    2(a5)
  1702.  
  1703. loops:
  1704.     cmp.w    #$e60,d3
  1705.     bne.s    no_loop
  1706.     tst.b    2(a5)
  1707.     bne.s    loops_done
  1708.     move.b    pattpos(pc),(a5)
  1709.     subq.b    #1,(a5)
  1710.     move.b    songpos(pc),1(a5)
  1711.     bra.s    loops_done
  1712. no_loop
  1713.     tst.b    2(a5)
  1714.     beq.s    storehowmany
  1715.     subq.b    #1,2(a5)
  1716.     bne.s    no_done
  1717.     clr.b    (a5)
  1718.     clr.b    1(a5)
  1719.     clr.b    2(a5)
  1720.     bra.s    loops_done
  1721. no_done
  1722.     move.b    (a5),pattpos
  1723.     move.b    1(a5),songpos
  1724.     bra.s    loops_done
  1725. storehowmany
  1726.     and.b    #$0f,d3
  1727.     move.b    d3,2(a5)
  1728.     move.b    (a5),pattpos
  1729.     move.b    1(a5),songpos
  1730. loops_done
  1731.     rts
  1732.  
  1733. Pause:
  1734.     tst.b    PauseEn
  1735.     bne.s    no_pause
  1736.  
  1737.     moveq    #0,d7
  1738.     move.b    d3,d7
  1739.     and.b    #$0f,d7
  1740.     beq.s    No_pause
  1741.     moveq    #0,d3
  1742.     move.b    Temp(pc),d3
  1743.     mulu    d3,d7
  1744.     addq.w    #1,d7
  1745.     move.w    d7,PauseVBL
  1746. no_pause
  1747.     rts
  1748.  
  1749. SongRepeat:
  1750.     move.b    #-1,pattpos
  1751.     moveq    #0,d7
  1752.     move.b    d3,d7
  1753.     cmp.w    #$7f,d7
  1754.     blt.s    songrep_ok
  1755.     move.b    #$7f,d7
  1756. songrep_ok
  1757.     move.b    d7,songpos
  1758.     rts
  1759.  
  1760. PattBreak:
  1761.     moveq    #0,d7
  1762.     move.b    d3,d7
  1763.     cmp.w    #$63,d7
  1764.     blt.s    patt_ok
  1765.     move.b    #$63,d7
  1766. patt_ok
  1767.     cmp.b    #-1,pattpos
  1768.     beq.s    NoAddSP
  1769.     addq.b    #1,songpos
  1770. NoAddSP
  1771.     move.b    (a5,d7.w),d7
  1772.     move.b    d7,pattpos
  1773.     subq.b    #1,pattpos
  1774.     rts
  1775.  
  1776. SampleOffset:
  1777.     moveq    #0,d7
  1778.     move.b    (a5),d7
  1779.     lsl.w    #8,d7
  1780.     lsl.l    #8,d7
  1781.     and.w    #$00ff,d3
  1782.     lsl.w    #8,d3
  1783.     add.w    d3,d7
  1784.     tst.b    channelenable
  1785.     bne.s    SamOffsChanB
  1786.     add.l    d7,(a2,d1.w)
  1787.     rts
  1788. SamOffsChanB
  1789.     add.l    d7,124(a2,d5.w)
  1790.     rts
  1791.  
  1792.  
  1793. offsets:
  1794.     move.b    d3,d7
  1795.     and.b    #$0f,d7
  1796.     move.b    d7,(a5)
  1797.     rts
  1798.  
  1799. SetTempo:
  1800.     moveq    #0,d7
  1801.     move.b    d3,d7
  1802.     cmp.w    #$1f,d7
  1803.     bgt.s    old_temp
  1804.     move.b    d3,temp
  1805.     move.b    d3,count
  1806.     addq.b    #1,count
  1807. old_temp
  1808.     rts
  1809.  
  1810. OffChannelA:
  1811.     bset    #0,OnOffChanA(a6)
  1812.     rts
  1813. OnChannelA:
  1814.     bclr    #0,OnOffChanA(a6)
  1815.     rts
  1816. OffChannelB:
  1817.     bset    #0,OnOffChanB(a6)
  1818.     rts
  1819. OnChannelB:
  1820.     bclr    #0,OnOffChanB(a6)
  1821.     rts
  1822.  
  1823. OffFilter:
  1824.     bclr    #1,$bfe001
  1825.     rts
  1826. OnFilter:
  1827.     bset    #1,$bfe001
  1828.     rts
  1829.  
  1830.  
  1831.  
  1832. Retrace:
  1833.     cmp.b    #1,count
  1834.     bne.s    retrno_2
  1835.     clr.b    (a5)
  1836. retrno_2
  1837.     moveq    #0,d7
  1838.     move.b    d3,d7
  1839.     and.b    #$0f,d7
  1840.     subq.b    #1,d7
  1841.     cmp.b    (a5),d7
  1842.     bne.s    retrno_1
  1843.  
  1844.     tst.b    channelenable
  1845.     beq.s    retr_chan_a
  1846.     move.l    (a0,d5.w),124(a2,d5.w)    ; adres sampla
  1847.     bra.s    retr_chan_b
  1848. retr_chan_a
  1849.     move.l    (a0,d1.w),(a2,d1.w)    ; adres sampla
  1850. retr_chan_b
  1851.     clr.b    (a5)
  1852.     rts
  1853. retrno_1
  1854.     addq.b    #1,(a5)
  1855. no_retrace_1
  1856.     rts
  1857.  
  1858. cutsample:
  1859.     moveq    #0,d7
  1860.     move.b    d3,d7
  1861.     and.b    #$0f,d7
  1862.     cmp.b    count(pc),d7
  1863.     bne.s    no_cut_sam
  1864.     clr.b    (a5)
  1865. no_cut_sam:
  1866.     rts
  1867.  
  1868. ; ------------- portamento up -------------
  1869.  
  1870. PortUp:
  1871.     moveq    #0,d7
  1872.     move.b    d3,d7
  1873.  
  1874.     tst.b    channelenable
  1875.     bne.s    PortUp_chan_b
  1876.  
  1877. PortUp_chan_a
  1878.     tst.b    d7
  1879.     bne.s    NoOldPortUpA
  1880.     move.b    PortUpOldValA(a6),d7
  1881. NoOldPortUpA
  1882.     move.b    d7,PortUpOldValA(a6)
  1883.     sub.w    d7,d0
  1884.     cmp.w    #113,d0
  1885.     bge.s    PortUpOkA
  1886.     move.w    #113,d0
  1887. PortUpOkA
  1888.     rts
  1889.  
  1890. PortUp_chan_b
  1891.     tst.b    d7
  1892.     bne.s    NoOldPortUpB
  1893.     move.b    PortUpOldValB(a6),d7
  1894. NoOldPortUpB
  1895.     move.b    d7,PortUpOldValB(a6)
  1896.     sub.w    d7,d4
  1897.     cmp.w    #113,d4
  1898.     bge.s    PortUpOkB
  1899.     move.w    #113,d4
  1900. PortUpOkB
  1901.     rts
  1902. NoPortUp:
  1903.     rts
  1904.  
  1905. ; ------------- portamento down -------------
  1906. PortDown:
  1907.     moveq    #0,d7
  1908.     move.b    d3,d7
  1909.  
  1910.     tst.b    channelenable
  1911.     bne.s    PortDown_chan_b
  1912. PortDown_chan_a
  1913.     tst.b    d7
  1914.     bne.s    NoOldPortDownA
  1915.     move.b    PortDownOldValA(a6),d7
  1916. NoOldPortDownA
  1917.     move.b    d7,PortDownOldValA(a6)
  1918.     add.w    d7,d0
  1919.     cmp.w    #856,d0
  1920.     ble.s    PortDownOkA
  1921.     move.w    #856,d0
  1922. PortDownOkA
  1923.     rts
  1924.  
  1925. PortDown_chan_b
  1926.     tst.b    d7
  1927.     bne.s    NoOldPortDownB
  1928.     move.b    PortDownOldValB(a6),d7
  1929. NoOldPortDownB
  1930.     move.b    d7,PortDownOldValB(a6)
  1931.     add.w    d7,d4
  1932.     cmp.w    #856,d4
  1933.     ble.s    PortDownOkB
  1934.     move.w    #856,d4
  1935. PortDownOkB
  1936.     rts
  1937. noPortDown:
  1938.     rts
  1939.  
  1940. ; --------------- set volume  -------------
  1941. SetVolume:
  1942.     move.b    d3,(a5)
  1943.     rts
  1944.  
  1945. ; --------------- slide volume up -------------
  1946. SlideVolume:
  1947.     tst.b    d3
  1948.     bne.s    NoOldSlideVol
  1949.     move.b    2(a5),d3    ; Old SlideVolVolue
  1950. NoOldSlideVol
  1951.     move.b    d3,2(a5)
  1952.  
  1953.     moveq    #0,d7
  1954.     move.b    d3,d7
  1955.     cmp.w    #$10,d7
  1956.     blt.s    Voldown
  1957.     lsr.b    #4,d7
  1958.     add.b    d7,(a5)
  1959.     cmp.b    #64,(a5)
  1960.     blt.s    Voldone
  1961.     move.b    #64,(a5)
  1962.     rts
  1963. Voldown
  1964.     sub.b    d3,(a5)
  1965.     tst.b    (a5)
  1966.     bgt.s    Voldone
  1967.     clr.b    (a5)
  1968. Voldone:rts
  1969.  
  1970.  
  1971. ; --------------- fine slide down -------------
  1972. FineSlideDown:
  1973.     move.w    d3,d7
  1974.     and.w    #$000f,d7
  1975.  
  1976.     tst.b    channelenable
  1977.     bne.s    FineSlideDownB
  1978.  
  1979.     add.w    d7,d0
  1980.     cmp.w    #856,d0
  1981.     ble.s    FineSlideDownOkA
  1982.     move.w    #856,d0
  1983. FineSlideDownOkA
  1984.     moveq    #0,d2
  1985.     rts
  1986.  
  1987. FineSlideDownB
  1988.     add.w    d7,d4
  1989.     cmp.w    #856,d4
  1990.     ble.s    FineSlideDownOkB
  1991.     move.w    #856,d4
  1992. FineSlideDownOkB
  1993.     moveq    #0,d6
  1994.     rts
  1995.  
  1996. ; --------------- fine slide up -------------
  1997. FineSlideUp:
  1998.     move.w    d3,d7
  1999.     and.w    #$000f,d7
  2000.  
  2001.     tst.b    channelenable
  2002.     bne.s    FineSlideUpB
  2003.  
  2004.     sub.w    d7,d0
  2005.     cmp.w    #113,d0
  2006.     bge.s    FineSlideUpOkA
  2007.     move.w    #113,d0
  2008. FineSlideUpOkA
  2009.     moveq    #0,d2
  2010.     rts
  2011.  
  2012. FineSlideUpB
  2013.     sub.w    d7,d4
  2014.     cmp.w    #113,d4
  2015.     bge.s    FineSlideUpOkB
  2016.     move.w    #113,d4
  2017. FineSlideUpOkB
  2018.     moveq    #0,d6
  2019.     rts
  2020.  
  2021. ; --------------- fine volume up  -------------
  2022. FineVolUp:
  2023.     move.w    d3,d7
  2024.     and.b    #$0f,d7
  2025.     add.b    d7,(a5)
  2026.     cmp.b    #64,(a5)
  2027.     blt.s    FVUOK
  2028.     move.b    #64,(a5)
  2029. FVUOK
  2030.     tst.b    channelenable
  2031.     bne.s    FVUClrVolB
  2032.     moveq    #0,d2
  2033.     rts
  2034. FVUClrVolB
  2035.     moveq    #0,d6
  2036.     rts
  2037.  
  2038.  
  2039. ; --------------- fine volume down  -------------
  2040. FineVolDown:
  2041.     move.w    d3,d7
  2042.     and.b    #$0f,d7
  2043.     sub.b    d7,(a5)
  2044.     tst.b    (a5)
  2045.     bge.s    FVDOK
  2046.     clr.b    (a5)
  2047. FVDOK
  2048.     tst.b    channelenable
  2049.     bne.s    FVDClrVolB
  2050.     moveq    #0,d2
  2051.     rts
  2052. FVDClrVolB
  2053.     moveq    #0,d6
  2054. NoFVD    rts
  2055.  
  2056.  
  2057. ; ------------- glissando -------------
  2058.  
  2059. ;GlissOldValue:         (a5)
  2060. ;GlissEnable:        1(a5)
  2061. ;GlissOldPeriod:    2(a5)
  2062. ;GlissNewPeriod:    4(a5)
  2063.  
  2064. Glissando:
  2065.     move.w    d3,d7
  2066.     tst.b    d3
  2067.     bne.s    NoOLDgliss
  2068.     move.b    (a5),d3
  2069. NoOLDgliss
  2070.  
  2071.     cmp.b    #1,count
  2072.     bne.s    NoStore
  2073.     move.b    d3,(a5)
  2074. NoStore
  2075.  
  2076.     tst.w    2(a5)
  2077.     beq.w    GlissRTS
  2078.  
  2079.     tst.b    channelenable
  2080.     bne.s    GlissOK1B
  2081.  
  2082. GlissOK1A:
  2083.     tst.w    4(a5)
  2084.     bne.s    GlissOk2
  2085.     move.w    d0,d7
  2086.     move.w    d0,4(a5)
  2087.     move.w    2(a5),d0
  2088.     clr.b    1(a5)
  2089.     cmp.w    d0,d7
  2090.     beq.s    ClrNP
  2091.     bge.w    GlissRTS
  2092.     move.b    #1,1(a5)
  2093.     rts
  2094.  
  2095. GlissOK1B:
  2096.     tst.w    4(a5)
  2097.     bne.s    GlissOk2
  2098.     move.w    d4,d7
  2099.     move.w    d4,4(a5)
  2100.     move.w    2(a5),d4
  2101.     clr.b    1(a5)
  2102.     cmp.w    d4,d7
  2103.     beq.s    ClrNP
  2104.     bge.s    GlissRTS
  2105.     move.b    #1,1(a5)
  2106.     rts
  2107.  
  2108. ClrNP:    clr.w    4(a5)
  2109.     rts
  2110.  
  2111. GlissOk2:
  2112.     move.w    d3,d7
  2113.     and.w    #$0ff,d7
  2114.     tst.w    4(a5)
  2115.     beq.s    Glissrts
  2116.     tst.b    1(a5)
  2117.     bne.s    Glisssub
  2118.     add.w    d7,2(a5)
  2119.     move.w    4(a5),d7
  2120.     cmp.w    2(a5),d7
  2121.     bgt.s    GlissOK3
  2122.     move.w    4(a5),2(a5)
  2123.     clr.w    4(a5)
  2124. GlissOK3:
  2125.     tst.b    channelenable
  2126.     bne.s    GlissChanB
  2127. GlissChanA
  2128.     move.w    2(a5),d0
  2129.     rts
  2130. GlissChanB
  2131.     move.w    2(a5),d4
  2132.     rts
  2133.  
  2134. Glisssub:
  2135.     sub.w    d7,2(a5)
  2136.     move.w    4(a5),d7
  2137.     cmp.w    2(a5),d7
  2138.     blt.s    GlissOK3
  2139.     move.w    4(a5),2(a5)
  2140.     clr.w    4(a5)
  2141.     bra.s    GlissOK3
  2142.  
  2143. Glissrts:
  2144.     rts
  2145.  
  2146. SlideVolGliss:
  2147.     and.w    #$00ff,d3
  2148.     add.w    #$a00,d3
  2149.     tst.b    channelenable
  2150.     bne.s    SlideChanB
  2151.     lea    VolA(a6),a5
  2152.     bra.s    DoSlideChan
  2153. SlideChanB
  2154.     lea    VolB(a6),a5
  2155. DoSlideChan
  2156.     bsr    SlideVolume
  2157.  
  2158.     move.w    #$0300,d3
  2159.     tst.b    channelenable
  2160.     bne.s    GlissBChan
  2161.     lea    GlissandoDatasA(a6),a5
  2162.     bra.s    DoGlissChan
  2163. GlissBChan
  2164.     lea    GlissandoDatasB(a6),a5
  2165. DoGlissChan
  2166.     bra    Glissando
  2167.  
  2168.  
  2169.  
  2170.  
  2171. SlideVolVib:
  2172.     and.w    #$00ff,d3
  2173.     add.w    #$a00,d3
  2174.     tst.b    channelenable
  2175.     bne.s    SlideChanBV
  2176.     lea    VolA(a6),a5
  2177.     bra.s    DoSlideChanV
  2178. SlideChanBV
  2179.     lea    VolB(a6),a5
  2180. DoSlideChanV
  2181.     bsr    SlideVolume
  2182.  
  2183.     move.w    #$0400,d3
  2184.     tst.b    channelenable
  2185.     bne.s    VibBChan
  2186.     lea    VibratoDatasA(a6),a5
  2187.     bra.s    DoVibChan
  2188. VibBChan
  2189.     lea    VibratoDatasB(a6),a5
  2190. DoVibChan
  2191.     bra    Vibrato
  2192.  
  2193.  
  2194. ;VibPeriod    (a5)
  2195. ;VibValue    2(a5)
  2196. ;ViboldValue    3(a5)
  2197.  
  2198. Vibrato:
  2199.     movem.l    d2/d5,-(sp)
  2200.  
  2201.     move.w    d4,d2
  2202.     tst.b    channelenable
  2203.     bne.s    VibCHANB1
  2204.     move.w    d0,d2
  2205. VibCHANB1
  2206.     bsr    VibratoMain
  2207.     tst.b    channelenable
  2208.     bne.s    VibCHANB2
  2209.     move.w    d2,d0
  2210.     bra.s    VibMainDone
  2211. VibCHANB2
  2212.     move.w    d2,d4
  2213. VibMainDone
  2214.     movem.l    (sp)+,d2/d5
  2215.     rts
  2216.  
  2217. VibratoMain:
  2218.     move.b    d3,d5
  2219.     and.b    #$0f,d5
  2220.     bne.s    NoNew1
  2221.     move.b    3(a5),d5
  2222.     and.b    #$0f,d5
  2223.     add.b    d5,d3
  2224. NoNew1
  2225.     move.b    d3,d5
  2226.     and.b    #$f0,d5
  2227.     bne.s    NoNew2
  2228.     move.b    3(a5),d5
  2229.     and.b    #$f0,d5
  2230.     add.b    d5,d3
  2231. NoNew2
  2232.     move.w    d3,-(sp)
  2233.  
  2234.     move.b    d3,3(a5)
  2235.  
  2236.     tst.w    (a5)
  2237.     bne.s    NoNewPeriod
  2238.     move.w    d2,(a5)
  2239. NoNewPeriod
  2240.  
  2241.     move.b    d3,d7
  2242.     move.b    2(a5),d3
  2243.     lsr.w    #2,d3
  2244.     and.w    #$1f,d3
  2245.     moveq    #0,d5
  2246.     move.b    VibSin(pc,d3.w),d5
  2247.     mulu    #4,d5
  2248.     divu    #6,d5
  2249.  
  2250.     move.b    d7,d3
  2251.     and.w    #$f,d3
  2252.     mulu    d3,d5
  2253.     lsr.w    #7,d5
  2254.  
  2255.     tst.b    2(a5)
  2256.     bmi.s    VibSub
  2257.     add.w    d5,d2
  2258.     bra.s    VibNext
  2259. VibSub:
  2260.     sub.w    d5,d2
  2261. VibNext:
  2262.     move.w    d2,d5
  2263.     move.b    d7,d5
  2264.     lsr.w    #2,d5
  2265.     and.w    #$3c,d5
  2266.     add.b    d5,2(a5)
  2267.     move.w    (sp)+,d3
  2268.  
  2269.     move.b    temp(pc),d7
  2270.     subq    #2,d7
  2271.     cmp.b    count(pc),d7
  2272.     bne.s    NoVibrato
  2273.  
  2274.     move.w    (a5),d2
  2275.     clr.w    (a5)
  2276. NoVibrato
  2277.     rts
  2278. VibSin:
  2279.     dc.b    $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  2280.     dc.b    $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  2281.  
  2282.  
  2283. FindPeriod:
  2284.     move.w    d1,d3
  2285.     move.w    d2,d4
  2286.     sub.w    d0,d1
  2287.     sub.w    d0,d2
  2288.  
  2289.     tst.w    d1
  2290.     bge.s    periodOK1
  2291.     muls    #-1,d1
  2292. periodOK1
  2293.     tst.w    d1
  2294.     bge.s    periodOK2
  2295.     muls    #-1,d2
  2296. periodOK2
  2297.     cmp.w    d1,d2
  2298.     blt.s    periodOK3
  2299.     move.w    d3,d7
  2300.     rts
  2301. periodOK3
  2302.     move.w    d4,d7
  2303. periodOK4
  2304.     rts
  2305.  
  2306. OriginalPeriodA:    dc.w    0
  2307. OriginalPeriodB:    dc.w    0
  2308.  
  2309. mixing:
  2310.     move.w    d0,OriginalPeriodA
  2311.     move.w    d4,OriginalPeriodB
  2312.  
  2313.     movem.l    d0-d4/a3,-(sp)
  2314.     lea    periods(pc),a3
  2315. Seek1    cmp.w    (a3)+,d0
  2316.     blt.s    Seek1
  2317.     move.w    -2(a3),d1
  2318.     move.w    -4(a3),d2
  2319.     bsr    FindPeriod
  2320.     movem.l    (sp)+,d0-d4/a3
  2321.     move.w    d7,d0
  2322.  
  2323.     movem.l    d0-d4/a3,-(sp)
  2324.     lea    periods(pc),a3
  2325. Seek2    cmp.w    (a3)+,d4
  2326.     blt.s    Seek2
  2327.     move.w    d4,d0
  2328.     move.w    -2(a3),d1
  2329.     move.w    -4(a3),d2
  2330.     bsr    FindPeriod
  2331.     movem.l    (sp)+,d0-d4/a3
  2332.     move.w    d7,d4
  2333.  
  2334.     move.l    #35800,d3
  2335.     divu    d0,d3
  2336.     and.l    #$0000ffff,d3
  2337.     add.w    d3,d3
  2338.  
  2339.     movem.l    d0-d6/a0-a4,-(sp)
  2340.  
  2341.     move.l    (a2,d1.w),a0
  2342.  
  2343.     move.l    #35800,d0
  2344.     divu    d4,d0
  2345.     and.l    #$0000ffff,d0
  2346.     add.w    d0,d0
  2347.     move.l    124(a2,d5.w),a1
  2348.  
  2349.     move.w    d0,d4
  2350.  
  2351.     cmp.w    d3,d4
  2352.     ble    noreplace
  2353.  
  2354.     add.l    d0,124(a2,d5.w)
  2355.     exg    d1,d5
  2356.     lea    -124(a2),a2
  2357.  
  2358.     exg    d3,d4
  2359.     exg    d2,d6
  2360.     exg    a0,a1
  2361.     move.w    d3,leng
  2362.     move.b    VolA(a6),d7
  2363.     move.b    VolB(a6),VolA(a6)
  2364.     move.b    d7,VolB(a6)
  2365.  
  2366.     bsr    mix
  2367.     lea    124(a2),a2
  2368.  
  2369.     movem.l    (sp)+,d0-d6/a0-a4
  2370.  
  2371.     move.w    leng(pc),d3
  2372.     exg    d0,d4
  2373.     bsr    play
  2374.     exg    d0,d4
  2375.     move.b    VolA(a6),d7
  2376.     move.b    VolB(a6),VolA(a6)
  2377.     move.b    d7,VolB(a6)
  2378.  
  2379.     tst.b    ChangeADR(a6)
  2380.     beq.s    nochadr1
  2381.     move.l    SamRep2(a6),124(a2,d5.w)
  2382. nochadr1:
  2383.     move.w    OriginalPeriodA(pc),d0
  2384.     move.w    OriginalPeriodB(pc),d4
  2385.  
  2386.     cmp.b    #1,MixDon(a6)
  2387.     beq.s    offsam1
  2388.     rts
  2389.  
  2390. offsam1:clr.l    (a2,d1.w)
  2391.     clr.l    124(a2,d5.w)
  2392.     moveq    #0,d4
  2393.     moveq    #0,d5
  2394.     moveq    #0,d6
  2395.     moveq    #0,d0
  2396.     moveq    #0,d1
  2397.     moveq    #0,d2
  2398.     clr.b    MixDon(a6)
  2399.     rts
  2400.  
  2401. noreplace
  2402.     add.l    d3,(a2,d1.w)
  2403.     bsr    mix
  2404.  
  2405.     movem.l    (sp)+,d0-d6/a0-a4
  2406.  
  2407.     bsr    play
  2408.  
  2409.     tst.b    ChangeADR(a6)
  2410.     beq.s    nochadr2
  2411.     move.l    SamRep2(a6),(a2,d1.w)
  2412. nochadr2:
  2413.  
  2414.     move.w    OriginalPeriodA(pc),d0
  2415.     move.w    OriginalPeriodB(pc),d4
  2416.  
  2417.     cmp.b    #1,MixDon(a6)
  2418.     beq.s    offsam1
  2419.     rts
  2420.  
  2421.  
  2422. ; --------------- robot -------------
  2423.  
  2424. MakeBuff_ROBOT:
  2425.     move.b    #1,MBRpointer(a6)
  2426.  
  2427.     tst.l    124(a3,d1.w)
  2428.     bne    sampleloop_R
  2429.  
  2430.     movem.l    d0-d1/a4-a5,-(sp)
  2431.     move.l    BuffMixADR(a6),a4
  2432.     move.l    124(a0,d1.w),d0
  2433.     add.l    (a0,d1.w),d0
  2434.     move.w    d3,d7
  2435.     subq    #1,d7
  2436.     move.l    (a2,d1.w),a5
  2437.     cmp.l    d0,a5
  2438.     bgt    realsampleend
  2439.     move.l    a5,d1
  2440. copy_loop_R:
  2441.     cmp.l    d0,a5
  2442.     bgt    sampleend
  2443.     move.b    (a5)+,(a4)+
  2444.     dbf    d7,copy_loop_R
  2445.     movem.l    (sp)+,d0-d1/a4-a5
  2446.     add.l    d3,(a2,d1.w)
  2447.     rts
  2448.  
  2449. sampleloop_R:
  2450.     movem.l    d0-d4/a4-a5,-(sp)
  2451.     move.l    124(a3,d1.w),d4
  2452.     add.l    (a3,d1.w),d4
  2453.     add.l    (a0,d1.w),d4
  2454.  
  2455.     move.w    d3,d7
  2456.     subq    #1,d7
  2457.     move.l    (a2,d1.w),a5
  2458.     move.l    BuffMixADR(a6),a4
  2459. copy_loop2_R:
  2460.     cmp.l    d4,a5
  2461.     bge.s    makeloop_R
  2462.     move.b    (a5)+,(a4)+
  2463.     dbf    d7,copy_loop2_R
  2464.     movem.l    (sp)+,d0-d4/a4-a5
  2465.     add.l    d3,(a2,d1.w)
  2466.     rts
  2467.  
  2468. makeloop_R:
  2469.     move.l    (a3,d1.w),d0
  2470.     add.l    (a0,d1.w),d0
  2471. copy_loop4_R:
  2472.     move.l    d0,a5
  2473. copy_loop3_R:
  2474.     cmp.l    d4,a5
  2475.     bge.s    copy_loop4_R
  2476.     move.b    (a5)+,(a4)+
  2477.     dbf    d7,copy_loop3_R
  2478.     move.l    a5,(a2,d1.w)
  2479.     movem.l    (sp)+,d0-d4/a4-a5
  2480.     rts
  2481.  
  2482. RobotEffect:
  2483.     tst.b    RobotEnable(a6)
  2484.     bne.s    NoROffCH
  2485.     move.b    #1,Offenable(a6)
  2486. NoROffCH
  2487.     move.b    #1,RobotEnable(a6)
  2488.     bsr    MakeBuff_robot
  2489.     move.w    d3,MainDTALEN(a6)
  2490.     bsr    RobotMain
  2491.     bsr    Replace_R
  2492.     rts
  2493.  
  2494. RobotMain:
  2495.     tst.b    d2
  2496.     bne.s    NoOldRobot
  2497.     move.b    RobotOLDVal(a6),d2
  2498. NoOldRobot
  2499.     move.b    d2,RobotOLDVal(a6)
  2500.  
  2501.     moveq    #0,d7
  2502.     move.b    d2,d7
  2503.     add.w    #80,d7
  2504.  
  2505.     move.w    d3,d4
  2506.     lsr.w    #6,d4
  2507.     lsr.w    #2,d7
  2508.     mulu    d7,d4
  2509.  
  2510.     cmp.w    d4,d3
  2511.     ble.s    CLRrobot
  2512.     sub.w    d4,d3
  2513.     addq    #1,d3
  2514.     bra.s    NoRobot
  2515. CLRrobot:
  2516.     moveq    #2,d3
  2517. NoRobot:
  2518.     moveq    #0,d4
  2519.     rts
  2520.  
  2521.  
  2522. play:    move.w    d0,MainPeriod(a6)
  2523.     move.b    #$40,MainVol(a6)
  2524.     rts
  2525.  
  2526. db_end:
  2527.     move.w    #$f,$dff096
  2528.     clr.w    $dff0a8
  2529.     clr.w    $dff0b8
  2530.     clr.w    $dff0c8
  2531.     clr.w    $dff0d8
  2532.     rts
  2533.  
  2534. mix:
  2535.     move.b    #1,MBRpointer(a6)
  2536.  
  2537.     cmp.b    #1,OffEnable(a6)
  2538.     bne.w    NoSet3OnEn
  2539.  
  2540.     cmp.w    d3,d4
  2541.     beq.s    NoSet2OnEn
  2542.  
  2543.     cmp.w    MainDTALEN(a6),d3
  2544.     beq.s    NoSet3OnEn
  2545.     move.b    #1,OffEnable(a6)
  2546.     bra.s    NoSet2OnEn
  2547. NoSet3OnEn
  2548.  
  2549.     cmp.b    #2,OffEnable(a6)    ; jesli jedn. dwa mix sampl. to wait
  2550.     bne.w    NoSet1OnEn
  2551.     move.b    #1,OffEnable(a6)
  2552.     bra.s    NoSet2OnEn
  2553. NoSet1OnEn
  2554.     clr.b    OffEnable(a6)
  2555.     tst.b    PlayPointer(a6)
  2556.     beq.s    NoSet2OnEn
  2557.     clr.b    PlayPointer(a6)
  2558.     move.b    #1,OffEnable(a6)
  2559. NoSet2OnEn
  2560.  
  2561.     move.w    d3,MainDTALEN(a6)
  2562.  
  2563.     movem.l    d5/a2,-(sp)
  2564.     lea    sample_starts(pc),a4
  2565.     lea    (a3),a5            ; smaple repeats
  2566.  
  2567. ******
  2568.     lea    mix_tab1,a3
  2569.     move.l    BuffMixADR(a6),a2
  2570.  
  2571.     move.w    d3,d0
  2572.     mulu    #18,d0
  2573.     add.l    d0,a3
  2574.     move.l    (a3,d4.w),a3
  2575.  
  2576.     move.w    d4,d2
  2577.     move.w    d3,d7
  2578.     subq    #1,d7
  2579. ******
  2580.  
  2581.     tst.l    124(a5,d1.w)
  2582.     beq.s    nosamloop2
  2583.     move.l    (a5,d1.w),d4
  2584.     add.l    124(a5,d1.w),d4
  2585.     add.l    (a4,d1.w),d4
  2586.  
  2587.     tst.l    124(a5,d5.w)
  2588.     bne.s    doubleloop
  2589.     bra    samloopmix2
  2590. doubleloop
  2591.     move.l    (a5,d5.w),d6
  2592.     add.l    124(a5,d5.w),d6
  2593.     add.l    (a4,d5.w),d6
  2594.     bra    samloopmix3
  2595. nosamloop2:
  2596.  
  2597.     move.l    124(a4,d1.w),d4
  2598.     add.l    (a4,d1.w),d4
  2599.  
  2600.     tst.l    124(a5,d5.w)
  2601.     beq.s    nosamloop1
  2602.     move.l    (a5,d5.w),d6
  2603.     add.l    124(a5,d5.w),d6
  2604.     add.l    (a4,d5.w),d6
  2605.     bra    samloopmix1
  2606. nosamloop1:
  2607.  
  2608.     move.l    124(a4,d5.w),d6
  2609.     add.l    (a4,d5.w),d6
  2610.     move.l    d6,d5
  2611.  
  2612. ; -------------- mixing norm. sample + norm. sample
  2613.  
  2614.     moveq    #0,d0
  2615.     moveq    #0,d1
  2616.     move.b    VolA(a6),d0
  2617.     move.b    VolB(a6),d1
  2618.     lsl.w    #8,d0
  2619.     lsl.w    #8,d1
  2620.     lea    voltab,a4
  2621.     lea    voltab,a5
  2622.     add.l    d0,a4
  2623.     add.l    d1,a5
  2624.  
  2625.     cmp.l    d4,a0
  2626.     bge.w    sammixloop1_11
  2627.  
  2628.     cmp.l    d5,a1
  2629.     bge.w    sammixloop1_111
  2630.  
  2631.     move.l    a0,d0
  2632.     add.l    d3,d0
  2633.     cmp.l    d4,d0
  2634.     bge.w    sammixloop1_1111
  2635.  
  2636.     move.l    a1,d1
  2637.     add.l    d2,d1
  2638.     cmp.l    d5,d1
  2639.     bge.w    sammixloop1_1111
  2640.  
  2641. sammixloop1_1:
  2642.     moveq    #0,d0
  2643.     moveq    #0,d1
  2644.     moveq    #0,d2
  2645.     moveq    #0,d6
  2646. mixloop1_1:
  2647.  
  2648.     move.b    (a0)+,d1
  2649.     move.b    (a4,d1.w),d1
  2650.  
  2651.     tst.b    (a3)+
  2652.     bne.s    newdata1_1
  2653.  
  2654.     add.b    d2,d1
  2655.     move.b    d1,(a2)+
  2656.  
  2657.     dbf    d7,mixloop1_1
  2658.     bra    mixdone
  2659.  
  2660. newdata1_1
  2661.     move.b    (a1)+,d2
  2662.     move.b    (a5,d2.w),d2
  2663.  
  2664.     add.b    d2,d1
  2665.     move.b    d1,(a2)+
  2666.  
  2667.     dbf    d7,mixloop1_1
  2668.     bra    mixdone
  2669.  
  2670. ;                 test d5,a1
  2671.  
  2672. sammixloop1_11:
  2673.     moveq    #0,d0
  2674.     moveq    #0,d1
  2675.     moveq    #0,d2
  2676.     moveq    #0,d6
  2677. mixloop1_11:
  2678.     tst.b    (a3)+
  2679.     bne.s    newdata1_11
  2680.  
  2681.     move.b    d2,(a2)+
  2682.  
  2683.     dbf    d7,mixloop1_11
  2684.     bra    mixdone
  2685.  
  2686. newdata1_11
  2687.     cmp.l    a1,d5
  2688.     bgt.s    mixgoon2_11
  2689.  
  2690.     moveq    #0,d2
  2691.     move.b    d2,(a2)+
  2692.  
  2693.     dbf    d7,mixloop1_11
  2694.     bra    mixdone
  2695. mixgoon2_11
  2696.     move.b    (a1)+,d2
  2697.     move.b    (a5,d2.w),d2
  2698.     move.b    d2,(a2)+
  2699.  
  2700.     dbf    d7,mixloop1_11
  2701.     bra    mixdone
  2702.  
  2703. ;                 test d4,a0
  2704.  
  2705. sammixloop1_111:
  2706.     moveq    #0,d0
  2707.     moveq    #0,d1
  2708.     moveq    #0,d2
  2709.     moveq    #0,d6
  2710.  
  2711. mixloop1_111:
  2712.     move.b    (a0)+,d1
  2713.     move.b    (a4,d1.w),d1
  2714.  
  2715.     cmp.l    a0,d4
  2716.     bgt.s    mixgoon1_111
  2717.  
  2718.     clr.b    (a2)+
  2719.  
  2720.     dbf    d7,mixloop1_111
  2721.     bra    mixdone
  2722.  
  2723. mixgoon1_111
  2724.     move.b    d1,(a2)+
  2725.  
  2726.     dbf    d7,mixloop1_111
  2727.     bra    mixdone
  2728.  
  2729. ;                 test d4,a0,     d5,a1
  2730.  
  2731. sammixloop1_1111:
  2732.     moveq    #0,d0
  2733.     moveq    #0,d1
  2734.     moveq    #0,d2
  2735.     moveq    #0,d6
  2736. mixloop1_1111:
  2737.  
  2738.     move.b    (a0)+,d1
  2739.     move.b    (a4,d1.w),d1
  2740.  
  2741.     cmp.l    a0,d4
  2742.     bgt.s    mixgoon1_1111
  2743.  
  2744.     moveq    #0,d1
  2745. mixgoon1_1111
  2746.  
  2747.     tst.b    (a3)+
  2748.     bne.s    newdata1_1111
  2749.  
  2750.     add.b    d2,d1
  2751.     move.b    d1,(a2)+
  2752.  
  2753.     dbf    d7,mixloop1_1111
  2754.     bra    mixdone
  2755.  
  2756. newdata1_1111
  2757.     move.b    (a1)+,d2
  2758.     move.b    (a5,d2.w),d2
  2759.  
  2760.     cmp.l    a1,d5
  2761.     bgt.s    mixgoon2_1111
  2762.     moveq    #0,d2
  2763.  
  2764.     move.b    d1,(a2)+
  2765.  
  2766.     dbf    d7,mixloop1_1111
  2767.     bra    mixdone
  2768. mixgoon2_1111
  2769.  
  2770.     add.b    d2,d1
  2771.     move.b    d1,(a2)+
  2772.  
  2773.     dbf    d7,mixloop1_1111
  2774.     bra    mixdone
  2775.  
  2776. ; -------------- mixing norm. sample + loop. sample
  2777.  
  2778. samloopmix1:
  2779.     move.l    (a5,d5.w),d0
  2780.     add.l    (a4,d5.w),d0
  2781.     move.l    d0,SamRep1(a6)
  2782.     move.l    d6,d5
  2783.  
  2784.     moveq    #0,d0
  2785.     moveq    #0,d1
  2786.     move.b    VolA(a6),d0
  2787.     move.b    VolB(a6),d1
  2788.     lsl.w    #8,d0
  2789.     lsl.w    #8,d1
  2790.     lea    voltab,a4
  2791.     lea    voltab,a5
  2792.     add.l    d0,a4
  2793.     add.l    d1,a5
  2794.  
  2795.     cmp.l    a0,d4
  2796.     blt.w    sammixloop1_22
  2797.  
  2798.     move.l    a0,d0
  2799.     add.l    d3,d0
  2800.     cmp.l    d4,d0
  2801.     bge.w    sammixloop1_2
  2802.  
  2803.     move.l    a1,d1
  2804.     add.l    d2,d1
  2805.     cmp.l    d5,d1
  2806.     bge.w    sammixloop1_2
  2807.  
  2808.     bra    sammixloop1_1
  2809.  
  2810. sammixloop1_2:
  2811.     moveq    #0,d0
  2812.     moveq    #0,d1
  2813.     moveq    #0,d2
  2814.     moveq    #0,d6
  2815.  
  2816. mixloop1_2:
  2817.     move.b    (a0)+,d1
  2818.     move.b    (a4,d1.w),d1
  2819.  
  2820.     cmp.l    a0,d4
  2821.     bgt.s    mixgoon1_2
  2822.  
  2823.     moveq    #0,d1
  2824. mixgoon1_2
  2825.  
  2826.     tst.b    (a3)+
  2827.     bne.s    newdata1_2
  2828.  
  2829.     add.b    d2,d1
  2830.     move.b    d1,(a2)+
  2831.  
  2832.     dbf    d7,mixloop1_2
  2833.     bra    mixdone
  2834.  
  2835.  
  2836. newdata1_2
  2837.     move.b    (a1)+,d2
  2838.     move.b    (a5,d2.w),d2
  2839.  
  2840.     cmp.l    a1,d5
  2841.     bgt.s    mixgoon2_2
  2842.  
  2843.     move.l    SamRep1(a6),a1    ; samrep1
  2844. mixgoon2_2
  2845.  
  2846.     add.b    d2,d1
  2847.     move.b    d1,(a2)+
  2848.  
  2849.     dbf    d7,mixloop1_2
  2850.     bra    mixdone
  2851.  
  2852.  
  2853.  
  2854. sammixloop1_22:
  2855.     moveq    #0,d0
  2856.     moveq    #0,d1
  2857.     moveq    #0,d2
  2858.     moveq    #0,d6
  2859. mixloop1_22:
  2860.     tst.b    (a3)+
  2861.     bne.s    newdata1_22
  2862.  
  2863.     move.b    d2,(a2)+
  2864.  
  2865.     dbf    d7,mixloop1_22
  2866.     bra    mixdone
  2867.  
  2868. newdata1_22
  2869.     move.b    (a1)+,d2
  2870.     move.b    (a5,d2.w),d2
  2871.  
  2872.     cmp.l    a1,d5
  2873.     bgt.s    mixgoon2_22
  2874.     move.l    SamRep1(a6),a1    ; samrep1
  2875. mixgoon2_22
  2876.     move.b    d2,(a2)+
  2877.  
  2878.     dbf    d7,mixloop1_22
  2879.     bra    mixdone
  2880.  
  2881. ; -------------- mixing loop. sample + norm. sample
  2882.  
  2883. samloopmix2:
  2884.     move.l    124(a4,d5.w),d6
  2885.     add.l    (a4,d5.w),d6
  2886.     move.l    d6,d5
  2887.  
  2888.     move.l    (a5,d1.w),d0
  2889.     add.l    (a4,d1.w),d0
  2890.     move.l    d0,SamRep2(a6)
  2891.  
  2892.     moveq    #0,d0
  2893.     moveq    #0,d1
  2894.     move.b    VolA(a6),d0
  2895.     move.b    VolB(a6),d1
  2896.     lsl.w    #8,d0
  2897.     lsl.w    #8,d1
  2898.     lea    voltab,a4
  2899.     lea    voltab,a5
  2900.     add.l    d0,a4
  2901.     add.l    d1,a5
  2902.  
  2903.     cmp.l    a1,d5
  2904.     blt.w    sammixloop1_33
  2905.  
  2906.     move.l    a0,d0
  2907.     add.l    d3,d0
  2908.     cmp.l    d4,d0
  2909.     bge.w    sammixloop1_3
  2910.  
  2911.     move.l    a1,d1
  2912.     add.l    d2,d1
  2913.     cmp.l    d5,d1
  2914.     bge.w    sammixloop1_3
  2915.  
  2916.     bra    sammixloop1_1
  2917. sammixloop1_3
  2918.     moveq    #0,d0
  2919.     moveq    #0,d1
  2920.     moveq    #0,d2
  2921.     moveq    #0,d6
  2922.  
  2923. mixloop1_3:
  2924.     move.b    (a0)+,d1
  2925.     move.b    (a4,d1.w),d1
  2926.  
  2927.     cmp.l    a0,d4
  2928.     bgt.s    mixgoon1_3
  2929.  
  2930.     move.l    SamRep2(a6),a0
  2931.     move.b    #1,ChangeADR(a6)
  2932. mixgoon1_3
  2933.  
  2934.     tst.b    (a3)+
  2935.     bne.s    newdata1_3
  2936.  
  2937.     add.b    d2,d1
  2938.     move.b    d1,(a2)+
  2939.  
  2940.     dbf    d7,mixloop1_3
  2941.     bra    mixdone
  2942.  
  2943.  
  2944. newdata1_3
  2945.     move.b    (a1)+,d2
  2946.     move.b    (a5,d2.w),d2
  2947.  
  2948.     cmp.l    a1,d5
  2949.     bgt.s    mixgoon2_3
  2950.  
  2951.     moveq    #0,d2
  2952.  
  2953.     move.b    d1,(a2)+
  2954.  
  2955.     dbf    d7,mixloop1_3
  2956.     bra    mixdone
  2957.  
  2958. mixgoon2_3
  2959.  
  2960.     add.b    d2,d1
  2961.     move.b    d1,(a2)+
  2962.  
  2963.     dbf    d7,mixloop1_3
  2964.     bra    mixdone
  2965.  
  2966.  
  2967. sammixloop1_33
  2968.     moveq    #0,d0
  2969.     moveq    #0,d1
  2970.     moveq    #0,d2
  2971.     moveq    #0,d6
  2972. mixloop1_33:
  2973.     move.b    (a0)+,d1
  2974.  
  2975.     cmp.l    a0,d4
  2976.     bgt.s    mixgoon1_33
  2977.  
  2978.     move.l    SamRep2(a6),a0
  2979.     move.b    #1,ChangeADR(a6)
  2980. mixgoon1_33
  2981.     move.b    (a4,d1.w),(a2)+
  2982.  
  2983.     dbf    d7,mixloop1_33
  2984.     bra    mixdone
  2985.  
  2986. ; -------------- mixing loop. sample + loop. sample
  2987.  
  2988. samloopmix3:
  2989.     move.l    (a5,d5.w),d0
  2990.     add.l    (a4,d5.w),d0
  2991.     move.l    d0,SamRep1(a6)
  2992.  
  2993.     move.l    (a5,d1.w),d0
  2994.     add.l    (a4,d1.w),d0
  2995.     move.l    d0,SamRep2(a6)
  2996.  
  2997.     move.l    d6,d5
  2998.  
  2999.     moveq    #0,d0
  3000.     moveq    #0,d1
  3001.     move.b    VolA(a6),d0
  3002.     move.b    VolB(a6),d1
  3003.     lsl.w    #8,d0
  3004.     lsl.w    #8,d1
  3005.     lea    voltab,a4
  3006.     lea    voltab,a5
  3007.     add.l    d0,a4
  3008.     add.l    d1,a5
  3009.  
  3010.     moveq    #0,d0
  3011.     moveq    #0,d1
  3012.     moveq    #0,d2
  3013.     moveq    #0,d6
  3014.  
  3015. mixloop1_4:
  3016.     move.b    (a0)+,d1
  3017.     move.b    (a4,d1.w),d1
  3018.  
  3019.     cmp.l    a0,d4
  3020.     bgt.s    mixgoon1_4
  3021.     move.l    SamRep2(a6),a0
  3022.     move.b    #1,ChangeADR(a6)
  3023. mixgoon1_4
  3024.  
  3025.     tst.b    (a3)+
  3026.     bne.s    newdata1_4
  3027.  
  3028.     add.b    d2,d1
  3029.     move.b    d1,(a2)+
  3030.  
  3031.     dbf    d7,mixloop1_4
  3032.     bra    mixdone
  3033.  
  3034. newdata1_4
  3035.     move.b    (a1)+,d2
  3036.     move.b    (a5,d2.w),d2
  3037.  
  3038.     cmp.l    a1,d5
  3039.     bgt.s    mixgoon2_4
  3040.  
  3041.     move.l    SamRep1(a6),a1
  3042. mixgoon2_4
  3043.  
  3044.     add.b    d2,d1
  3045.     move.b    d1,(a2)+
  3046.  
  3047.     dbf    d7,mixloop1_4
  3048.     bra    mixdone
  3049.  
  3050. ; -------------------------------------------------- 
  3051.  
  3052. mixdone:
  3053.     lea    MixDon(a6),a4
  3054.     cmp.l    a0,d4
  3055.     bge.s    notyet3
  3056.     move.b    #3,(a4)
  3057. notyet3
  3058.     cmp.l    a1,d5
  3059.     bge.s    notyet2
  3060.     move.b    #2,(a4)
  3061. notyet2
  3062.     cmp.l    a1,d5
  3063.     bge.s    notyet1
  3064.     cmp.l    a0,d4
  3065.     bge.s    notyet1
  3066.     move.b    #1,(a4)
  3067. notyet1
  3068.     movem.l    (sp)+,d5/a2
  3069.     move.l    a0,SamRep2(a6)
  3070.     move.l    a1,124(a2,d5.w)
  3071.     rts
  3072.  
  3073. leng:        dc.w    0
  3074. what:        dc.w    0
  3075. hisam:        dc.b    0
  3076. offset:        dc.b    0
  3077.         even
  3078.  
  3079. ; Channel 1A&1B
  3080. Channel1:    blk.b    ChanArea,0
  3081. ; Channel 2A&2B datas
  3082. Channel2:    blk.b    ChanArea,0
  3083. ; Channel 3A&3B datas
  3084. Channel3:    blk.b    ChanArea,0
  3085. ; Channel 4A&4B datas
  3086. Channel4:    blk.b    ChanArea,0
  3087.     even
  3088. make_tab:
  3089.     lea    tab(pc),a0
  3090.     lea    mix_tab1,a3
  3091.     lea    mix_tab2,a1
  3092.     moveq    #12,d6
  3093.     moveq    #1,d2
  3094. make_loop2:
  3095.     moveq    #0,d0
  3096.     moveq    #0,d1
  3097.     move.w    (a0)+,d0
  3098.     move.w    (a0)+,d1
  3099.  
  3100.     cmp.w    #-1,d0
  3101.     beq.s    make_exit
  3102.  
  3103.     move.l    #35800,d3
  3104.     divu    d0,d3
  3105.     add.w    d3,d3
  3106.     move.w    d3,d0
  3107.  
  3108.     move.l    #35800,d3
  3109.     divu    d1,d3
  3110.     add.w    d3,d3
  3111.     move.w    d3,d1
  3112.  
  3113.     lea    (a1),a2
  3114.     move.w    d0,d7
  3115.     lsr.w    #2,d7
  3116.     moveq    #0,d4
  3117. make_clr:
  3118.     move.l    d4,(a2)+
  3119.     dbf    d7,make_clr
  3120.  
  3121.     move.w    d0,d3
  3122.     mulu    #18,d3
  3123.     add.l    d3,a3
  3124.     move.l    a1,(a3,d1.w)
  3125.     sub.l    d3,a3
  3126.  
  3127.     moveq    #0,d3
  3128.     move.w    d1,d7
  3129.     add.w    #20,d7
  3130.     move.w    d0,d5
  3131.     lsl.l    d6,d0
  3132.     divu    d1,d0
  3133. make_loop:
  3134.     move.w    d0,d4
  3135.     mulu    d3,d4
  3136.     lsr.l    d6,d4
  3137.     move.b    d2,(a1,d4.w)
  3138.     addq    #1,d3
  3139.     dbf    d7,make_loop
  3140.  
  3141.     add.l    d5,a1
  3142.     bra.s    make_loop2
  3143. make_exit
  3144.     rts
  3145.  
  3146. make_voltab:
  3147.     lea    voltab,a0
  3148.     moveq    #0,d2
  3149.     move.w    #128,d3
  3150.  
  3151.     moveq    #64,d6
  3152. make_voltabl2
  3153.     move.w    #$ff,d7
  3154.     moveq    #0,d0
  3155. make_voltabl1
  3156.     move.b    d0,d1
  3157.     ext.w    d1
  3158.     muls    d2,d1
  3159.     divs    d3,d1
  3160.     cmp.b    #63,d1
  3161.     blt.s    make_volok1
  3162.     moveq    #63,d1
  3163. make_volok1
  3164.     cmp.b    #-64,d1
  3165.     bgt.s    make_volok2
  3166.     moveq    #-64,d1
  3167. make_volok2
  3168.     move.b    d1,(a0)+
  3169.     addq    #1,d0
  3170.     dbf    d7,make_voltabl1
  3171.     addq    #2,d2
  3172.     dbf    d6,make_voltabl2
  3173.     rts
  3174.  
  3175.  
  3176. PattAdresses:
  3177.     blk.l    129,0
  3178. sample_starts:
  3179.     blk.l    31,0
  3180. sample_lenghts:
  3181.     blk.l    31,0
  3182.  
  3183. sample_pos1:
  3184.     blk.l    31,0
  3185.     blk.l    31,0
  3186. sample_pos2:
  3187.     blk.l    31,0
  3188.     blk.l    31,0
  3189. sample_pos3:
  3190.     blk.l    31,0
  3191.     blk.l    31,0
  3192. sample_pos4:
  3193.     blk.l    31,0
  3194.     blk.l    31,0
  3195. Hex:
  3196.  dc.b    0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,10,11,12,13,14,15,16,17,18,19
  3197.  dc.b    0,0,0,0,0,0,20,21,22,23,24,25,26,27,28,29,0,0,0,0,0,0,30,31
  3198.  dc.b    32,33,34,35,36,37,38,39,0,0,0,0,0,0,40,41,42,43,44,45,46,47
  3199.  dc.b    48,49,0,0,0,0,0,0,50,51,52,53,54,55,56,57,58,59,0,0,0,0,0,0
  3200.  dc.b    60,61,62,63
  3201. Periods:
  3202.  dc.w 856,808,762,720,678,640,604,570,538,508,480,453
  3203.  dc.w 428,404,381,360,339,320,302,285,269,254,240,226
  3204.  dc.w 214,202,190,180,170,160,151,143,135,127,120,113
  3205. PeriodsEnd:
  3206.  dc.w 1
  3207.  
  3208. tab:
  3209.     dc.w    113,856
  3210.     dc.w    113,808
  3211.     dc.w    113,762
  3212.     dc.w    113,720
  3213.     dc.w    113,678
  3214.     dc.w    113,640
  3215.     dc.w    113,604
  3216.     dc.w    113,570
  3217.     dc.w    113,538
  3218.     dc.w    113,508
  3219.     dc.w    113,480
  3220.     dc.w    113,453
  3221.     dc.w    113,428
  3222.     dc.w    113,404
  3223.     dc.w    113,381
  3224.     dc.w    113,360
  3225.     dc.w    113,339
  3226.     dc.w    113,320
  3227.     dc.w    113,302
  3228.     dc.w    113,285
  3229.     dc.w    113,269
  3230.     dc.w    113,254
  3231.     dc.w    113,240
  3232.     dc.w    113,226
  3233.     dc.w    113,214
  3234.     dc.w    113,202
  3235.     dc.w    113,190
  3236.     dc.w    113,180
  3237.     dc.w    113,170
  3238.     dc.w    113,160
  3239.     dc.w    113,151
  3240.     dc.w    113,143
  3241.     dc.w    113,135
  3242.     dc.w    113,127
  3243.     dc.w    113,120
  3244.     dc.w    113,113
  3245.  
  3246.     dc.w    120,856
  3247.     dc.w    120,808
  3248.     dc.w    120,762
  3249.     dc.w    120,720
  3250.     dc.w    120,678
  3251.     dc.w    120,640
  3252.     dc.w    120,604
  3253.     dc.w    120,570
  3254.     dc.w    120,538
  3255.     dc.w    120,508
  3256.     dc.w    120,480
  3257.     dc.w    120,453
  3258.     dc.w    120,428
  3259.     dc.w    120,404
  3260.     dc.w    120,381
  3261.     dc.w    120,360
  3262.     dc.w    120,339
  3263.     dc.w    120,320
  3264.     dc.w    120,302
  3265.     dc.w    120,285
  3266.     dc.w    120,269
  3267.     dc.w    120,254
  3268.     dc.w    120,240
  3269.     dc.w    120,226
  3270.     dc.w    120,214
  3271.     dc.w    120,202
  3272.     dc.w    120,190
  3273.     dc.w    120,180
  3274.     dc.w    120,170
  3275.     dc.w    120,160
  3276.     dc.w    120,151
  3277.     dc.w    120,143
  3278.     dc.w    120,135
  3279.     dc.w    120,127
  3280.     dc.w    120,120
  3281.  
  3282.     dc.w    127,856
  3283.     dc.w    127,808
  3284.     dc.w    127,762
  3285.     dc.w    127,720
  3286.     dc.w    127,678
  3287.     dc.w    127,640
  3288.     dc.w    127,604
  3289.     dc.w    127,570
  3290.     dc.w    127,538
  3291.     dc.w    127,508
  3292.     dc.w    127,480
  3293.     dc.w    127,453
  3294.     dc.w    127,428
  3295.     dc.w    127,404
  3296.     dc.w    127,381
  3297.     dc.w    127,360
  3298.     dc.w    127,339
  3299.     dc.w    127,320
  3300.     dc.w    127,302
  3301.     dc.w    127,285
  3302.     dc.w    127,269
  3303.     dc.w    127,254
  3304.     dc.w    127,240
  3305.     dc.w    127,226
  3306.     dc.w    127,214
  3307.     dc.w    127,202
  3308.     dc.w    127,190
  3309.     dc.w    127,180
  3310.     dc.w    127,170
  3311.     dc.w    127,160
  3312.     dc.w    127,151
  3313.     dc.w    127,143
  3314.     dc.w    127,135
  3315.     dc.w    127,127
  3316.  
  3317.     dc.w    135,856
  3318.     dc.w    135,808
  3319.     dc.w    135,762
  3320.     dc.w    135,720
  3321.     dc.w    135,678
  3322.     dc.w    135,640
  3323.     dc.w    135,604
  3324.     dc.w    135,570
  3325.     dc.w    135,538
  3326.     dc.w    135,508
  3327.     dc.w    135,480
  3328.     dc.w    135,453
  3329.     dc.w    135,428
  3330.     dc.w    135,404
  3331.     dc.w    135,381
  3332.     dc.w    135,360
  3333.     dc.w    135,339
  3334.     dc.w    135,320
  3335.     dc.w    135,302
  3336.     dc.w    135,285
  3337.     dc.w    135,269
  3338.     dc.w    135,254
  3339.     dc.w    135,240
  3340.     dc.w    135,226
  3341.     dc.w    135,214
  3342.     dc.w    135,202
  3343.     dc.w    135,190
  3344.     dc.w    135,180
  3345.     dc.w    135,170
  3346.     dc.w    135,160
  3347.     dc.w    135,151
  3348.     dc.w    135,143
  3349.     dc.w    135,135
  3350.  
  3351.     dc.w    143,856
  3352.     dc.w    143,808
  3353.     dc.w    143,762
  3354.     dc.w    143,720
  3355.     dc.w    143,678
  3356.     dc.w    143,640
  3357.     dc.w    143,604
  3358.     dc.w    143,570
  3359.     dc.w    143,538
  3360.     dc.w    143,508
  3361.     dc.w    143,480
  3362.     dc.w    143,453
  3363.     dc.w    143,428
  3364.     dc.w    143,404
  3365.     dc.w    143,381
  3366.     dc.w    143,360
  3367.     dc.w    143,339
  3368.     dc.w    143,320
  3369.     dc.w    143,302
  3370.     dc.w    143,285
  3371.     dc.w    143,269
  3372.     dc.w    143,254
  3373.     dc.w    143,240
  3374.     dc.w    143,226
  3375.     dc.w    143,214
  3376.     dc.w    143,202
  3377.     dc.w    143,190
  3378.     dc.w    143,180
  3379.     dc.w    143,170
  3380.     dc.w    143,160
  3381.     dc.w    143,151
  3382.     dc.w    143,143
  3383.  
  3384.     dc.w    151,856
  3385.     dc.w    151,808
  3386.     dc.w    151,762
  3387.     dc.w    151,720
  3388.     dc.w    151,678
  3389.     dc.w    151,640
  3390.     dc.w    151,604
  3391.     dc.w    151,570
  3392.     dc.w    151,538
  3393.     dc.w    151,508
  3394.     dc.w    151,480
  3395.     dc.w    151,453
  3396.     dc.w    151,428
  3397.     dc.w    151,404
  3398.     dc.w    151,381
  3399.     dc.w    151,360
  3400.     dc.w    151,339
  3401.     dc.w    151,320
  3402.     dc.w    151,302
  3403.     dc.w    151,285
  3404.     dc.w    151,269
  3405.     dc.w    151,254
  3406.     dc.w    151,240
  3407.     dc.w    151,226
  3408.     dc.w    151,214
  3409.     dc.w    151,202
  3410.     dc.w    151,190
  3411.     dc.w    151,180
  3412.     dc.w    151,170
  3413.     dc.w    151,160
  3414.     dc.w    151,151
  3415.  
  3416.     dc.w    160,856
  3417.     dc.w    160,808
  3418.     dc.w    160,762
  3419.     dc.w    160,720
  3420.     dc.w    160,678
  3421.     dc.w    160,640
  3422.     dc.w    160,604
  3423.     dc.w    160,570
  3424.     dc.w    160,538
  3425.     dc.w    160,508
  3426.     dc.w    160,480
  3427.     dc.w    160,453
  3428.     dc.w    160,428
  3429.     dc.w    160,404
  3430.     dc.w    160,381
  3431.     dc.w    160,360
  3432.     dc.w    160,339
  3433.     dc.w    160,320
  3434.     dc.w    160,302
  3435.     dc.w    160,285
  3436.     dc.w    160,269
  3437.     dc.w    160,254
  3438.     dc.w    160,240
  3439.     dc.w    160,226
  3440.     dc.w    160,214
  3441.     dc.w    160,202
  3442.     dc.w    160,190
  3443.     dc.w    160,180
  3444.     dc.w    160,170
  3445.     dc.w    160,160
  3446.  
  3447.     dc.w    170,856
  3448.     dc.w    170,808
  3449.     dc.w    170,762
  3450.     dc.w    170,720
  3451.     dc.w    170,678
  3452.     dc.w    170,640
  3453.     dc.w    170,604
  3454.     dc.w    170,570
  3455.     dc.w    170,538
  3456.     dc.w    170,508
  3457.     dc.w    170,480
  3458.     dc.w    170,453
  3459.     dc.w    170,428
  3460.     dc.w    170,404
  3461.     dc.w    170,381
  3462.     dc.w    170,360
  3463.     dc.w    170,339
  3464.     dc.w    170,320
  3465.     dc.w    170,302
  3466.     dc.w    170,285
  3467.     dc.w    170,269
  3468.     dc.w    170,254
  3469.     dc.w    170,240
  3470.     dc.w    170,226
  3471.     dc.w    170,214
  3472.     dc.w    170,202
  3473.     dc.w    170,190
  3474.     dc.w    170,180
  3475.     dc.w    170,170
  3476.  
  3477.     dc.w    180,856
  3478.     dc.w    180,808
  3479.     dc.w    180,762
  3480.     dc.w    180,720
  3481.     dc.w    180,678
  3482.     dc.w    180,640
  3483.     dc.w    180,604
  3484.     dc.w    180,570
  3485.     dc.w    180,538
  3486.     dc.w    180,508
  3487.     dc.w    180,480
  3488.     dc.w    180,453
  3489.     dc.w    180,428
  3490.     dc.w    180,404
  3491.     dc.w    180,381
  3492.     dc.w    180,360
  3493.     dc.w    180,339
  3494.     dc.w    180,320
  3495.     dc.w    180,302
  3496.     dc.w    180,285
  3497.     dc.w    180,269
  3498.     dc.w    180,254
  3499.     dc.w    180,240
  3500.     dc.w    180,226
  3501.     dc.w    180,214
  3502.     dc.w    180,202
  3503.     dc.w    180,190
  3504.     dc.w    180,180
  3505.  
  3506.     dc.w    190,856
  3507.     dc.w    190,808
  3508.     dc.w    190,762
  3509.     dc.w    190,720
  3510.     dc.w    190,678
  3511.     dc.w    190,640
  3512.     dc.w    190,604
  3513.     dc.w    190,570
  3514.     dc.w    190,538
  3515.     dc.w    190,508
  3516.     dc.w    190,480
  3517.     dc.w    190,453
  3518.     dc.w    190,428
  3519.     dc.w    190,404
  3520.     dc.w    190,381
  3521.     dc.w    190,360
  3522.     dc.w    190,339
  3523.     dc.w    190,320
  3524.     dc.w    190,302
  3525.     dc.w    190,285
  3526.     dc.w    190,269
  3527.     dc.w    190,254
  3528.     dc.w    190,240
  3529.     dc.w    190,226
  3530.     dc.w    190,214
  3531.     dc.w    190,202
  3532.     dc.w    190,190
  3533.  
  3534.     dc.w    202,856
  3535.     dc.w    202,808
  3536.     dc.w    202,762
  3537.     dc.w    202,720
  3538.     dc.w    202,678
  3539.     dc.w    202,640
  3540.     dc.w    202,604
  3541.     dc.w    202,570
  3542.     dc.w    202,538
  3543.     dc.w    202,508
  3544.     dc.w    202,480
  3545.     dc.w    202,453
  3546.     dc.w    202,428
  3547.     dc.w    202,404
  3548.     dc.w    202,381
  3549.     dc.w    202,360
  3550.     dc.w    202,339
  3551.     dc.w    202,320
  3552.     dc.w    202,302
  3553.     dc.w    202,285
  3554.     dc.w    202,269
  3555.     dc.w    202,254
  3556.     dc.w    202,240
  3557.     dc.w    202,226
  3558.     dc.w    202,214
  3559.     dc.w    202,202
  3560.  
  3561.     dc.w    214,856
  3562.     dc.w    214,808
  3563.     dc.w    214,762
  3564.     dc.w    214,720
  3565.     dc.w    214,678
  3566.     dc.w    214,640
  3567.     dc.w    214,604
  3568.     dc.w    214,570
  3569.     dc.w    214,538
  3570.     dc.w    214,508
  3571.     dc.w    214,480
  3572.     dc.w    214,453
  3573.     dc.w    214,428
  3574.     dc.w    214,404
  3575.     dc.w    214,381
  3576.     dc.w    214,360
  3577.     dc.w    214,339
  3578.     dc.w    214,320
  3579.     dc.w    214,302
  3580.     dc.w    214,285
  3581.     dc.w    214,269
  3582.     dc.w    214,254
  3583.     dc.w    214,240
  3584.     dc.w    214,226
  3585.     dc.w    214,214
  3586.  
  3587.     dc.w    226,856
  3588.     dc.w    226,808
  3589.     dc.w    226,762
  3590.     dc.w    226,720
  3591.     dc.w    226,678
  3592.     dc.w    226,640
  3593.     dc.w    226,604
  3594.     dc.w    226,570
  3595.     dc.w    226,538
  3596.     dc.w    226,508
  3597.     dc.w    226,480
  3598.     dc.w    226,453
  3599.     dc.w    226,428
  3600.     dc.w    226,404
  3601.     dc.w    226,381
  3602.     dc.w    226,360
  3603.     dc.w    226,339
  3604.     dc.w    226,320
  3605.     dc.w    226,302
  3606.     dc.w    226,285
  3607.     dc.w    226,269
  3608.     dc.w    226,254
  3609.     dc.w    226,240
  3610.     dc.w    226,226
  3611.  
  3612.     dc.w    240,856
  3613.     dc.w    240,808
  3614.     dc.w    240,762
  3615.     dc.w    240,720
  3616.     dc.w    240,678
  3617.     dc.w    240,640
  3618.     dc.w    240,604
  3619.     dc.w    240,570
  3620.     dc.w    240,538
  3621.     dc.w    240,508
  3622.     dc.w    240,480
  3623.     dc.w    240,453
  3624.     dc.w    240,428
  3625.     dc.w    240,404
  3626.     dc.w    240,381
  3627.     dc.w    240,360
  3628.     dc.w    240,339
  3629.     dc.w    240,320
  3630.     dc.w    240,302
  3631.     dc.w    240,285
  3632.     dc.w    240,269
  3633.     dc.w    240,254
  3634.     dc.w    240,240
  3635.  
  3636.     dc.w    254,856
  3637.     dc.w    254,808
  3638.     dc.w    254,762
  3639.     dc.w    254,720
  3640.     dc.w    254,678
  3641.     dc.w    254,640
  3642.     dc.w    254,604
  3643.     dc.w    254,570
  3644.     dc.w    254,538
  3645.     dc.w    254,508
  3646.     dc.w    254,480
  3647.     dc.w    254,453
  3648.     dc.w    254,428
  3649.     dc.w    254,404
  3650.     dc.w    254,381
  3651.     dc.w    254,360
  3652.     dc.w    254,339
  3653.     dc.w    254,320
  3654.     dc.w    254,302
  3655.     dc.w    254,285
  3656.     dc.w    254,269
  3657.     dc.w    254,254
  3658.  
  3659.     dc.w    269,856
  3660.     dc.w    269,808
  3661.     dc.w    269,762
  3662.     dc.w    269,720
  3663.     dc.w    269,678
  3664.     dc.w    269,640
  3665.     dc.w    269,604
  3666.     dc.w    269,570
  3667.     dc.w    269,538
  3668.     dc.w    269,508
  3669.     dc.w    269,480
  3670.     dc.w    269,453
  3671.     dc.w    269,428
  3672.     dc.w    269,404
  3673.     dc.w    269,381
  3674.     dc.w    269,360
  3675.     dc.w    269,339
  3676.     dc.w    269,320
  3677.     dc.w    269,302
  3678.     dc.w    269,285
  3679.     dc.w    269,269
  3680.  
  3681.     dc.w    285,856
  3682.     dc.w    285,808
  3683.     dc.w    285,762
  3684.     dc.w    285,720
  3685.     dc.w    285,678
  3686.     dc.w    285,640
  3687.     dc.w    285,604
  3688.     dc.w    285,570
  3689.     dc.w    285,538
  3690.     dc.w    285,508
  3691.     dc.w    285,480
  3692.     dc.w    285,453
  3693.     dc.w    285,428
  3694.     dc.w    285,404
  3695.     dc.w    285,381
  3696.     dc.w    285,360
  3697.     dc.w    285,339
  3698.     dc.w    285,320
  3699.     dc.w    285,302
  3700.     dc.w    285,285
  3701.  
  3702.     dc.w    302,856
  3703.     dc.w    302,808
  3704.     dc.w    302,762
  3705.     dc.w    302,720
  3706.     dc.w    302,678
  3707.     dc.w    302,640
  3708.     dc.w    302,604
  3709.     dc.w    302,570
  3710.     dc.w    302,538
  3711.     dc.w    302,508
  3712.     dc.w    302,480
  3713.     dc.w    302,453
  3714.     dc.w    302,428
  3715.     dc.w    302,404
  3716.     dc.w    302,381
  3717.     dc.w    302,360
  3718.     dc.w    302,339
  3719.     dc.w    302,320
  3720.     dc.w    302,302
  3721.  
  3722.     dc.w    320,856
  3723.     dc.w    320,808
  3724.     dc.w    320,762
  3725.     dc.w    320,720
  3726.     dc.w    320,678
  3727.     dc.w    320,640
  3728.     dc.w    320,604
  3729.     dc.w    320,570
  3730.     dc.w    320,538
  3731.     dc.w    320,508
  3732.     dc.w    320,480
  3733.     dc.w    320,453
  3734.     dc.w    320,428
  3735.     dc.w    320,404
  3736.     dc.w    320,381
  3737.     dc.w    320,360
  3738.     dc.w    320,339
  3739.     dc.w    320,320
  3740.  
  3741.     dc.w    339,856
  3742.     dc.w    339,808
  3743.     dc.w    339,762
  3744.     dc.w    339,720
  3745.     dc.w    339,678
  3746.     dc.w    339,640
  3747.     dc.w    339,604
  3748.     dc.w    339,570
  3749.     dc.w    339,538
  3750.     dc.w    339,508
  3751.     dc.w    339,480
  3752.     dc.w    339,453
  3753.     dc.w    339,428
  3754.     dc.w    339,404
  3755.     dc.w    339,381
  3756.     dc.w    339,360
  3757.     dc.w    339,339
  3758.  
  3759.     dc.w    360,856
  3760.     dc.w    360,808
  3761.     dc.w    360,762
  3762.     dc.w    360,720
  3763.     dc.w    360,678
  3764.     dc.w    360,640
  3765.     dc.w    360,604
  3766.     dc.w    360,570
  3767.     dc.w    360,538
  3768.     dc.w    360,508
  3769.     dc.w    360,480
  3770.     dc.w    360,453
  3771.     dc.w    360,428
  3772.     dc.w    360,404
  3773.     dc.w    360,381
  3774.     dc.w    360,360
  3775.  
  3776.     dc.w    381,856
  3777.     dc.w    381,808
  3778.     dc.w    381,762
  3779.     dc.w    381,720
  3780.     dc.w    381,678
  3781.     dc.w    381,640
  3782.     dc.w    381,604
  3783.     dc.w    381,570
  3784.     dc.w    381,538
  3785.     dc.w    381,508
  3786.     dc.w    381,480
  3787.     dc.w    381,453
  3788.     dc.w    381,428
  3789.     dc.w    381,404
  3790.     dc.w    381,381
  3791.  
  3792.     dc.w    404,856
  3793.     dc.w    404,808
  3794.     dc.w    404,762
  3795.     dc.w    404,720
  3796.     dc.w    404,678
  3797.     dc.w    404,640
  3798.     dc.w    404,604
  3799.     dc.w    404,570
  3800.     dc.w    404,538
  3801.     dc.w    404,508
  3802.     dc.w    404,480
  3803.     dc.w    404,453
  3804.     dc.w    404,428
  3805.     dc.w    404,404
  3806.  
  3807.     dc.w    428,856
  3808.     dc.w    428,808
  3809.     dc.w    428,762
  3810.     dc.w    428,720
  3811.     dc.w    428,678
  3812.     dc.w    428,640
  3813.     dc.w    428,604
  3814.     dc.w    428,570
  3815.     dc.w    428,538
  3816.     dc.w    428,508
  3817.     dc.w    428,480
  3818.     dc.w    428,453
  3819.     dc.w    428,428
  3820.  
  3821.     dc.w    453,856
  3822.     dc.w    453,808
  3823.     dc.w    453,762
  3824.     dc.w    453,720
  3825.     dc.w    453,678
  3826.     dc.w    453,640
  3827.     dc.w    453,604
  3828.     dc.w    453,570
  3829.     dc.w    453,538
  3830.     dc.w    453,508
  3831.     dc.w    453,480
  3832.     dc.w    453,453
  3833.  
  3834.     dc.w    480,856
  3835.     dc.w    480,808
  3836.     dc.w    480,762
  3837.     dc.w    480,720
  3838.     dc.w    480,678
  3839.     dc.w    480,640
  3840.     dc.w    480,604
  3841.     dc.w    480,570
  3842.     dc.w    480,538
  3843.     dc.w    480,508
  3844.     dc.w    480,480
  3845.  
  3846.     dc.w    508,856
  3847.     dc.w    508,808
  3848.     dc.w    508,762
  3849.     dc.w    508,720
  3850.     dc.w    508,678
  3851.     dc.w    508,640
  3852.     dc.w    508,604
  3853.     dc.w    508,570
  3854.     dc.w    508,538
  3855.     dc.w    508,508
  3856.  
  3857.     dc.w    538,856
  3858.     dc.w    538,808
  3859.     dc.w    538,762
  3860.     dc.w    538,720
  3861.     dc.w    538,678
  3862.     dc.w    538,640
  3863.     dc.w    538,604
  3864.     dc.w    538,570
  3865.     dc.w    538,538
  3866.  
  3867.     dc.w    570,856
  3868.     dc.w    570,808
  3869.     dc.w    570,762
  3870.     dc.w    570,720
  3871.     dc.w    570,678
  3872.     dc.w    570,640
  3873.     dc.w    570,604
  3874.     dc.w    570,570
  3875.  
  3876.     dc.w    604,856
  3877.     dc.w    604,808
  3878.     dc.w    604,762
  3879.     dc.w    604,720
  3880.     dc.w    604,678
  3881.     dc.w    604,640
  3882.     dc.w    604,604
  3883.  
  3884.     dc.w    640,856
  3885.     dc.w    640,808
  3886.     dc.w    640,762
  3887.     dc.w    640,720
  3888.     dc.w    640,678
  3889.     dc.w    640,640
  3890.  
  3891.     dc.w    678,856
  3892.     dc.w    678,808
  3893.     dc.w    678,762
  3894.     dc.w    678,720
  3895.     dc.w    678,678
  3896.  
  3897.     dc.w    720,856
  3898.     dc.w    720,808
  3899.     dc.w    720,762
  3900.     dc.w    720,720
  3901.  
  3902.     dc.w    762,856
  3903.     dc.w    762,808
  3904.     dc.w    762,762
  3905.  
  3906.     dc.w    808,856
  3907.     dc.w    808,808
  3908.  
  3909.     dc.w    856,856
  3910.     dc.w    $ffff
  3911. endtab
  3912.  
  3913.     Section    bufors,bss_c
  3914.  
  3915. sample_buff1_4:
  3916.     ds.b    BuffSize+4
  3917. sample_buff1_1:
  3918.     ds.b    BuffSize+4
  3919. sample_buff1_2:
  3920.     ds.b    BuffSize+4
  3921. sample_buff1_3:
  3922.     ds.b    BuffSize+4
  3923.  
  3924. sample_buff1_MIX:
  3925.     ds.b    640*3
  3926. sample_buff2_MIX:
  3927.     ds.b    640*3
  3928. sample_buff3_MIX:
  3929.     ds.b    640*3
  3930. sample_buff4_MIX:
  3931.     ds.b    640*3
  3932.  
  3933.     Section    tabs,bss_p
  3934.  
  3935. mix_tab1:    ds.b    $3000
  3936. mix_tab2:    ds.b    239130
  3937. voltab:        ds.b    16720
  3938.  
  3939.     Section    module,data_p
  3940.  
  3941. module:    incbin    "df0:modules/rave base.digi"
  3942.