home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src3.dms / in.adf / Source / Nightfall / Ntro3.lha / bt-3.S < prev    next >
Encoding:
Text File  |  1992-10-03  |  46.6 KB  |  2,045 lines

  1. * ALL OF THE TEXTS ARE AT THE BOTTOM!
  2. * for NIGHTFALL if you wanna use this...
  3. * 1> If you wann change the MOD go to the END Of the FILE and 
  4. *    Put a new MOD name and path
  5. * 2> The text is section off into 25x40 blocks.. to
  6. *    add another screen just copy a block of memory and edite it out
  7. *    I have section it off for ya to make it easier...
  8. * UPDATED SCROLLY 
  9. * 3> YOU CAN FIND THE BOTTOM SCROLLY Down below... under TEXTT
  10. *    I HOPE YOU LIKE THIS ONE!!!
  11. * 4> If you want a NEW FONT then use PF8 to make an 8x8 font
  12. *    and use PF16 to make a 16x16 font
  13. *    Now just change the incbins to point at them
  14.  
  15.  
  16.  
  17. * Now... 
  18. *  A  ;Assemble
  19. *  WO ;Write Object file
  20. *  Name.exe ; Name of Object file
  21. *  G  ; GO <test file to see if it works..
  22.  
  23. * Now Exit and crunch it with power packer...
  24.  
  25. * I released this file 09-09-92...
  26. * However I went back and REdid the MUSIC for Pro-Tracker..
  27. * Electronic Ice updated his mod and Specfied I have to stop
  28. * using Digital Sound Studio..  Also from now on I'm writing for PAL!
  29. * I also updated the routine for the scrolling.. its SMOOTHER NOW!
  30. * A Coders life is never done... I'm about finished with this....
  31. * I know I shouldn't do this but I'm adding a SCROLL text for the bottom...
  32.  
  33.     section    code,code
  34. ************ DEMO STARTER! *************************************
  35.     move    #$20,$dff1dc
  36.     bsr    start
  37.     rts
  38. START:    JSR    STARST
  39.     JSR    SCROLL
  40.     MOVE.L    4,A6         ;Move Exec Base to A6
  41.     JSR    -132(A6)     ;Exec-Forbid
  42.     LEA    GRNAM(PC),A1     ;Open graphics.library
  43.     JSR    -552(A6)     ;Exec-Open Library
  44.     MOVE.L    D0,GRBAS     ;Store the Library start Address
  45.     MOVE.L    GRBAS,A6     ;Move Grafics Base to A6
  46.     JSR    -456(A6)     ;Grafics-Own Blitter
  47.     move.l    $6c,oldirq     ;store the old interrupt
  48.     move.l    #newirq,$6c     ;insert YOUR interrupt
  49.     JSR    mt_init
  50.     Jsr    INTROST
  51.     jsr    mt_end
  52.     move.l    oldirq,$6C     ;setback old interrupt
  53. wt:    btst    #14,$dff002     ;Is blitter finished?
  54.     bne.b    wt         ;no? >goto wt:
  55.     MOVE.L    GRBAS,A1     ;Move Grafics Base to A6
  56.     JSR    -462(A1)     ;Grafics-DisownBlitter
  57.     MOVE.L    38(A1),$DFF080     ;Free Copper
  58.     tst.W    $DFF088         ;Restore Old Copper
  59.     MOVE.L    4,A6         ;Move Exec base to A6
  60.     JSR    -414(A6)     ;Exec-CloseOldLibrary
  61.     JSR    -138(A6)     ;Exec-Permit
  62.     MOVE.W    #$8420,$DFF096     ;Restore DM
  63.     RTS             ;End Program!
  64. GRBAS:    DC.L 0             ;Grafics Base Address
  65. GRNAM:    DC.B "graphics.library",0;Name of Grafics Library
  66.     EVEN             ;Even up Byte
  67. oldirq: dc.l 0    ;reserve place for oldinterrupt POINTER
  68. newirq:    movem.l    a0-a6/d0-d7,-(a7)
  69.     jsr    scrollback
  70.     jsr    scrolld1
  71.     JSR    SCROLLT
  72.     jsr    mt_music
  73.     JSR    MOVESTAR
  74.     jsr    scrolloff2    
  75.     move.w #$0070,$dff09c
  76. intend:    movem.l    (a7)+,a0-a6/d0-d7
  77.     rte
  78. VWAIT:    move.l    $dff004,d0
  79.     and.l    #$0001ff00,d0
  80.     Bne.b      VWAIT
  81.     RTS
  82.  
  83. INTROST:Lea    2+bmap,a0
  84.     Lea    2+cmap,a1
  85.     Lea    2+dmap,a2
  86.     move.l    #bpic,d0
  87.     move.l    #bpic+40,d1
  88.     move    d0,4(a0)
  89.     move    d1,12(a0)
  90.     move    d0,4(a1)
  91.     move    d1,12(a1)
  92.     move    d0,4(a2)
  93.     move    d1,12(a2)
  94.     swap    d0
  95.     swap    d1
  96.     move    d0,(a0)
  97.     move    d1,8(a0)
  98.     move    d0,(a1)
  99.     move    d1,8(a1)
  100.     move    d0,(a2)
  101.     move    d1,8(a2)
  102.  
  103.     Lea    2+Smap,a0
  104.     move.l    #S_pic,d0
  105.     move.l    #S_pic+40,d1
  106.     move    d0,4(a0)
  107.     move    d1,12(a0)
  108.     swap    d0
  109.     swap    d1
  110.     move    d0,(a0)
  111.     move    d1,8(a0)
  112.  
  113.     MOVE.L    #copa,$DFF080
  114.     MOVE    #0,$DFF088
  115.  
  116. MLEFT:    BTST    #6,$BFE001    
  117.     BNE.B    MRIGHT
  118.     cmp    #0,soff
  119.     bne.b    mright
  120.     move    #48,soff
  121. MRIGHT:    BTST    #10,$dff016    ;Right Mouse button
  122.     BNE.B    MLEFT
  123.     BTST    #6,$BFE001    
  124.     BNE.B    MLEFT
  125.     bsr    scrolloff1
  126.     rts
  127. SCorMV:    dc.w    0
  128.  
  129. scrollback:
  130.     tst    up_down
  131.     bne.w    scrollbacku
  132.     bra.b    scrollbackd
  133.  
  134. up_down:dc.w    0
  135.  
  136. scrollbacKd:
  137.     moveq    #0,d0
  138.     add    #1,backpt
  139.     cmp    #Back,backpt
  140.     bne.b    dsc_Go
  141.     move    #0,backpt
  142.     move    #1,up_down
  143. dsc_go:    move    backpt,d0
  144.     lea    backsine,a0
  145.     add    d0,d0
  146.     move    (a0,d0),d0
  147.     tst    d0
  148.     beq.w    rts
  149.     
  150.     move    d0,d1
  151.     lsl    #6,d1    ;setting up opertion for 1line
  152.     add    d1,d1
  153.     add    #20,d1
  154.     move    #100,d2    
  155.     sub    d0,d2
  156.     add    #1,d2
  157.     lsl    #6,d2
  158.     add    d2,d2
  159.     add    #20,d2
  160.     mulu    #80,d0
  161.     move.l    #8000,d3
  162.     sub    d0,d3
  163.     add.l    #bpic,d3
  164.         
  165. dsback:    BTST #14,$DFF002;
  166.     BNE.B    dsback
  167.     MOVE.L     #$ffffffff,$dff044
  168.     moVE.L    d3,$dff050    ; A OBJ
  169.     MOVE.L    #buffer,$dff054    ; D
  170.     MOVE.W    #0,$dff064    ; A
  171.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  172.     MOVE.W    #$0,$dff042
  173.     move.w    #$09f0,$dff040
  174.     MOVE.W    d1,$dff058
  175. dsback2:BTST #14,$DFF002;
  176.     BNE.B    dsback2
  177.     MOVE.L     #$ffffffff,$dff044
  178.     moVE.L    d3,$dff050    ; A OBJ    d0
  179.     MOVE.L    #bpic+8000,$dff054    ; D
  180.     MOVE.W    #0,$dff064    ; A
  181.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  182.     MOVE.W    #$2,$dff042
  183.     move.w    #$09f0,$dff040
  184.     MOVE.W    d2,$dff058    ;d2
  185. dsback3:BTST #14,$DFF002;
  186.     BNE.B    dsback3
  187.     MOVE.L     #$ffffffff,$dff044
  188.     moVE.L    #buffer,$dff050    ; A OBJ
  189.     MOVE.L    #bpic,$dff054    ; D
  190.     MOVE.W    #0,$dff064    ; A
  191.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  192.     MOVE.W    #$0,$dff042
  193.     move.w    #$09f0,$dff040
  194.     MOVE.W    d1,$dff058
  195.     rts
  196.  
  197. scrollbacKu:
  198.     moveq    #0,d0
  199.     add    #1,backpt
  200.     cmp    #Back,backpt
  201.     bne.b    sc_Go
  202.     move    #0,backpt
  203.     move    #0,up_down
  204. sc_go:    move    backpt,d0
  205.     lea    backsine,a0
  206.     add    d0,d0
  207.     move    (a0,d0),d0
  208.     tst    d0
  209.     beq.w    rts
  210.     move    d0,d1
  211.     lsl    #6,d1    ;setting up opertion for 1line
  212.     add    d1,d1
  213.     add    #20,d1
  214.     move    #100,d2
  215.     sub    d0,d2
  216.     add    #1,d2
  217.     lsl    #6,d2    ;setting up opertion for 1line
  218.     add    d2,d2
  219.     add    #20,d2
  220.     mulu    #80,d0
  221.     move.l    #8000,d3
  222.     sub    d0,d3
  223.     add.l    #bpic,d0
  224.     add.l    #bpic,d3
  225.         
  226. sback:    BTST #14,$DFF002;
  227.     BNE.B    sback
  228.     MOVE.L     #$ffffffff,$dff044
  229.     moVE.L    #bpic,$dff050    ; A OBJ
  230.     MOVE.L    #buffer,$dff054    ; D
  231.     MOVE.W    #0,$dff064    ; A
  232.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  233.     MOVE.W    #$0,$dff042
  234.     move.w    #$09f0,$dff040
  235.     MOVE.W    d1,$dff058
  236.  
  237. sback2:    BTST #14,$DFF002;
  238.     BNE.B    sback2
  239.     MOVE.L     #$ffffffff,$dff044
  240.     moVE.L    d0,$dff050    ; A OBJ
  241.     MOVE.L    #bpic,$dff054    ; D
  242.     MOVE.W    #0,$dff064    ; A
  243.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  244.     MOVE.W    #$0,$dff042
  245.     move.w    #$09f0,$dff040
  246.     MOVE.W    d2,$dff058
  247.  
  248. sback3:    BTST #14,$DFF002;
  249.     BNE.B    sback3
  250.     MOVE.L     #$ffffffff,$dff044
  251.     moVE.L    #buffer,$dff050    ; A OBJ
  252.     MOVE.L    d3,$dff054    ; D
  253.     MOVE.W    #0,$dff064    ; A
  254.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  255.     MOVE.W    #$0,$dff042
  256.     move.w    #$09f0,$dff040
  257.     MOVE.W    d1,$dff058
  258.     rts
  259.  
  260.  
  261. scrolloff2:
  262.     cmp    #200,sup
  263.     bne.b    rts
  264.     cmp    #0,soff
  265.     beq.b    rts
  266.     leA    SINE,A0
  267.     MOVE    Soff,D0
  268.     ADD    D0,D0
  269.     MOVEQ    #0,D2
  270.     MOVE.W    (A0,D0.W),D2
  271.     MULS    #40,D2
  272.  
  273.     lea    2+amap,a0
  274.     move.l    #apic+8000,d0
  275.     SUB.L    D2,D0
  276.     MOVE.L    D0,D1
  277.     ADD.L    #41,D1
  278.     move    d0,4(a0)
  279.     move    d1,12(a0)
  280.     swap    d0
  281.     swap    d1
  282.     move    d0,(a0)
  283.     move    d1,8(a0)
  284.     sub    #1,soff
  285.     beq.w    scroll
  286. rts:    rts
  287. soff:    dc.w    0
  288.  
  289.  
  290. scrollD1:
  291.     cmp    #200,sup
  292.     beq.b    rts
  293.     leA    SINE,A0
  294.     MOVE    SUP,D0
  295.     ADD    D0,D0
  296.     MOVEQ    #0,D2
  297.     MOVE.W    (A0,D0.W),D2
  298.     MULS    #40,D2
  299.  
  300.     lea    2+amap,a0
  301.     move.l    #apic+8000,d0
  302.     SUB.L    D2,D0
  303.     MOVE.L    D0,D1
  304.     ADD.L    #41,D1
  305.     move    d0,4(a0)
  306.     move    d1,12(a0)
  307.     swap    d0
  308.     swap    d1
  309.     move    d0,(a0)
  310.     move    d1,8(a0)
  311.     add    #1,sup
  312.     rts
  313. sup:    dc.w    0
  314.  
  315.  
  316. scrolloff1:
  317.     cmp    #200,sup
  318.     bne.b    scrolloff1
  319.     move    #40,soff1
  320. bl_tst:    BTST #14,$DFF002;
  321.     BNE.B    bl_tst
  322.     MOVE.L     #$000fffff,$dff044
  323.     moVE.L    #apic,$dff050    ; A OBJ
  324.     MOVE.L    #apic-2,$dff054    ; D
  325.     MOVE.W    #0,$dff064    ; A
  326.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  327.     MOVE.W    #$0,$dff042
  328.     move.w    #$59f0,$dff040
  329.     MOVE.W    #$3214,$dff058
  330.     sub    #1,soff1
  331.     bne.b    bl_tst
  332.     rts
  333. soff1:    dc.w    0
  334. SCROLL:    movem.l    a0-a6/d0-d7,-(a7)
  335.     move    #0,sup
  336.     Lea    2+amap,a0
  337.     move.l    #apic+8000,d0
  338.     move.l    #apic+8041,d1
  339.     move    d0,4(a0)
  340.     move    d1,12(a0)    
  341.     swap    d0
  342.     swap    d1
  343.     move    d0,(a0)
  344.     move    d1,8(a0)
  345.     moveq    #9,d4
  346. golp:    move.l    #99,d6    ;Num in line -1
  347. gotxt:    moveq    #0,d0
  348.     lea    text,a0
  349.     move.l    txt_pnt,d1
  350.     move.b    (a0,d1),d0
  351.     bne.b    n_nwtxt
  352.     move.l    #0,txt_pnt
  353.     move.b    text,d0
  354. n_nwtxt:add.l    #1,txt_pnt
  355. n_CHNGE:sub    #32,d0        ;Subtract hex start
  356.     lsl    #3,d0        ;And get offset in the FONT
  357.     add.l    #font8,d0        ;now to locate in RAM!
  358.     MOVEQ    #0,D7
  359.     ADD    #1,XOFF
  360.     cmp    #40,XOFF
  361.     bne.b    y_go
  362.     move    #0,Xoff
  363.     move    #0,d7
  364.     add    #320,Yoff
  365.     cmp    #8000,Yoff
  366.     bne.b    Y_go
  367.     move    #0,Yoff
  368. Y_go:    MOVE    XOFF,D7
  369.     add    yoff,d7
  370.     ADD.L    OFFSET,D7
  371.     ADD.L    #apic,D7
  372.     move.l    d7,a1
  373.     move.l    d0,a0
  374.      moveq    #7,d3    ;number of data
  375. looper:    move.b    (a0)+,(a1)
  376.     lea    40(a1),a1
  377.     dbf    d3,looper
  378.     dbf    d6,gotxt
  379.     movem.l    a0-a6/d0-d7,-(a7)
  380.     jsr    scrollback
  381.     JSR    MOVESTAR
  382.     jsr    mt_music
  383.     jsr    scrollT
  384.     movem.l    (a7)+,a0-a6/d0-d7
  385.     dbf    d4,golp
  386.  
  387.     movem.l    (a7)+,a0-a6/d0-d7
  388.     RTS
  389. YOFF:    DC.W    0
  390. XOFF:    DC.W    -1
  391. offset:    dc.L    0
  392.  
  393. txt_pnt:dc.l    0
  394.  
  395. TST_CHN:lea    mt_chan1temp,a1
  396.     lea    SPOINT,a0
  397.     moveq    #3,d1    ;Num of channels -1
  398. gloop:    move.b    1(a1),d0
  399.     TST.B    D0
  400.     BEQ.B    NOSTOVR
  401.     MOVE    #-1,(a0)
  402. NOSTOVR:ADD    #1,(a0)
  403.     cmp    #8,(a0)
  404.     bne.b    not0
  405.     move    #7,(a0)
  406. not0:    move    (a0)+,(a0)+
  407.     lea    44(a1),a1
  408.     dbf    d1,gloop
  409.     rts
  410.  
  411. * STARS USE SPRITES *
  412. STARSt:    jsr    tst_chn
  413.     lea    csprite,a4
  414.     lea    spoint,a6
  415.     lea    buffpt,a5
  416.     moveq    #7,d7    ;This is the number of sprites used -1
  417. sprloop:MOVEQ    #0,D0
  418.     move    (a6)+,d0
  419.     MULU    #64,D0
  420.     ADD.L    #STR0,D0
  421.     move.l    (a5),a1    ;Location of the START of data
  422.     moveq    #$2c,d5    ;Start of sprites
  423.     moveq    #7,d6    ;Num of V Sprites in loop -1
  424. ;Randing stars
  425. not1:    move.l    d0,a0
  426.  
  427.     move.b    $dff007,d1    ;Rand start height!
  428.     and.b    #$f,d1
  429.     beq.b    not1
  430.     add.b    d1,d5
  431.  
  432.     move.b    d5,(a1)+    ;4 more
  433.  
  434. not2:    move.b    $dff007,d1
  435.     AND.b    $dff007,d1
  436.     OR.b    $dff007,d1
  437.     AND.B    $DFF007,D1
  438.     beq.b    not2
  439.     move.b    d1,(a1)+
  440.  
  441.     add.b    #$F,d5
  442.     move.b    d5,(a1)+
  443.     lea    1(a1),a1
  444.  
  445. ;Coping that data into the sprite
  446.     moveq    #14,d1    ;Num -1 of lines
  447. scopylp:move.l    (a0)+,(a1)+
  448.     dbf    d1,scopylp
  449.     dbf    d6,not1
  450.     
  451. ;Put sprites in copper
  452.     move.l    (a5)+,d0
  453. COPYS:    MOVE.W     D0,6(a4)
  454.     SWAP     D0
  455.     MOVE.W     D0,2(a4)
  456.     lea    8(a4),a4
  457.     dbf    d7,sprloop    
  458.     rts
  459.  
  460.  
  461. STR_rnd:MOVEQ    #0,D0
  462.     move    (a6),d0
  463.     MULU    #64,D0
  464.     ADD.L    #STR0,D0
  465.     move.l    (a5),a1    ;Location of the START of data
  466.     moveq    #$2c,d5    ;Start of sprites
  467.     moveq    #7,d6    ;Num of V Sprites in loop -1
  468. xnot1:    move.l    d0,a0
  469.     move.b    $dff007,d1    ;Rand start height!
  470.     and.b    #$f,d1
  471.     beq.b    xnot1
  472.     add.b    d1,d5
  473.     move.b    d5,(a1)+    ;4 more
  474. xnot2:    move.b    $dff007,d1
  475.     AND.b    $dff007,d1
  476.     OR.b    $dff007,d1
  477.     beq.b    xnot2
  478.     move.b    d1,(a1)+
  479.     add.b    #$F,d5
  480.     move.b    d5,(a1)+
  481.     lea    61(a1),a1
  482.     dbf    d6,xnot1
  483.     rts
  484.  
  485.  
  486.  
  487.  
  488.  
  489. * STARS USE SPRITES *
  490. MOVESTAR:jsr    tst_chn
  491.      lea    csprite,a4
  492.      lea    spoint,a6
  493.      lea    buffpt,a5
  494.      lea    speed,a3
  495. ***
  496.     moveq    #7,d7    ;This is the number of sprites used -1
  497. ;Get the actual Data pointer
  498. xsprloop:MOVEQ    #0,D0
  499.     move    (a6)+,d0
  500.     MULU    #64,D0
  501.     ADD.L    #STR0,D0
  502.     moveq    #7,d6    ;Vloop!
  503.     move.b    (a3)+,d2
  504.     move.l    (a5),a1    ;Location of the START of data
  505. xloop:    move.l    d0,a0
  506.     move    (a1),d3
  507.     add.b    d2,d3
  508.     move    d3,(a1)
  509.     lea    4(a1),a1
  510. ; Coping that data into the sprite
  511.     moveq    #14,d1    ;Num -1 of lines
  512. zscopylp:move.l    (a0)+,(a1)+
  513.     dbf    d1,zscopylp
  514.     dbf    d6,xloop
  515. ; Put sprites in copper
  516.     move.l    (a5)+,d0
  517. zCOPYS:    MOVE.W     D0,6(a4)
  518.     SWAP     D0
  519.     MOVE.W     D0,2(a4)
  520.     lea    8(a4),a4
  521.     dbf    d7,xsprloop
  522. ;testing rnd factor
  523.     lea    spoint,a6
  524.     lea    buffpt,a5
  525.     move    #8,numlp;numtimes to loop    -1
  526. rndlp:    cmp    #7,(a6)    ;
  527.     bne.b    nornd
  528.     bsr.w    str_rnd
  529. nornd:    lea    2(a6),a6
  530.     lea    4(a5),a5
  531.     sub    #1,numlp
  532.     bne.b    rndlp
  533.     rts
  534. numlp:    dc.w    0
  535. speed:    ;dc.b    1,0,2,0,1,0,2,0
  536.     dc.b    0,0,0,0,0,0,0,0
  537. SPOINT:    dc.w    0,0,0,0,0,0,0,0
  538. buffpt:    dc.l    sbuff0,sbuff1,sbuff2,sbuff3,sbuff4,sbuff5,sbuff6,sbuff7
  539.     section    PT,code
  540.  
  541. ;**************************************************
  542. ;*    ----- Protracker V2.1A Playroutine -----    *
  543. ;* Peter "CRAYON" Hanning / Mushroom Studios 1992 *
  544. ;*     Vinterstigen 12, 14440 Ronninge, Sweden    *
  545. ;**************************************************
  546.  
  547. ; VBlank Version 2:
  548. ; Call mt_init to initialize the routine, then call mt_music on
  549. ; each vertical blank (50 Hz). To end the song and turn off all
  550. ; voices, call mt_end.
  551.  
  552. ; This playroutine is not very fast, optimized or well commented,
  553. ; but all the new commands in PT2.1A should work.
  554. ; If it's not good enough, you'll have to change it yourself.
  555. ; We'll try to write a faster routine soon...
  556.  
  557. ; Changes from V1.0C playroutine:
  558. ; - Vibrato depth changed to be compatible with Noisetracker 2.0.
  559. ;   You'll have to double all vib. depths on old PT modules.
  560. ; - Funk Repeat changed to Invert Loop.
  561. ; - Period set back earlier when stopping an effect.
  562.  
  563. DMAWait = 300 ; Set this as low as possible without losing low notes.
  564.  
  565. n_note        EQU    0  ; W
  566. n_cmd        EQU    2  ; W
  567. n_cmdlo        EQU    3  ; B
  568. n_start        EQU    4  ; L
  569. n_length    EQU    8  ; W
  570. n_loopstart    EQU    10 ; L
  571. n_replen    EQU    14 ; W
  572. n_period    EQU    16 ; W
  573. n_finetune    EQU    18 ; B
  574. n_volume    EQU    19 ; B
  575. n_dmabit    EQU    20 ; W
  576. n_toneportdirec    EQU    22 ; B
  577. n_toneportspeed    EQU    23 ; B
  578. n_wantedperiod    EQU    24 ; W
  579. n_vibratocmd    EQU    26 ; B
  580. n_vibratopos    EQU    27 ; B
  581. n_tremolocmd    EQU    28 ; B
  582. n_tremolopos    EQU    29 ; B
  583. n_wavecontrol    EQU    30 ; B
  584. n_glissfunk    EQU    31 ; B
  585. n_sampleoffset    EQU    32 ; B
  586. n_pattpos    EQU    33 ; B
  587. n_loopcount    EQU    34 ; B
  588. n_funkoffset    EQU    35 ; B
  589. n_wavestart    EQU    36 ; L
  590. n_reallength    EQU    40 ; W
  591.  
  592. mt_init    LEA    mt_data,A0
  593.     MOVE.L    A0,mt_SongDataPtr
  594.     MOVE.L    A0,A1
  595.     LEA    952(A1),A1
  596.     MOVEQ    #127,D0
  597.     MOVEQ    #0,D1
  598. mtloop    MOVE.L    D1,D2
  599.     SUBQ.W    #1,D0
  600. mtloop2    MOVE.B    (A1)+,D1
  601.     CMP.B    D2,D1
  602.     BGT.S    mtloop
  603.     DBRA    D0,mtloop2
  604.     ADDQ.B    #1,D2
  605.             
  606.     LEA    mt_SampleStarts(PC),A1
  607.     ASL.L    #8,D2
  608.     ASL.L    #2,D2
  609.     ADD.L    #1084,D2
  610.     ADD.L    A0,D2
  611.     MOVE.L    D2,A2
  612.     MOVEQ    #30,D0
  613. mtloop3    CLR.L    (A2)
  614.     MOVE.L    A2,(A1)+
  615.     MOVEQ    #0,D1
  616.     MOVE.W    42(A0),D1
  617.     ASL.L    #1,D1
  618.     ADD.L    D1,A2
  619.     ADD.L    #30,A0
  620.     DBRA    D0,mtloop3
  621.  
  622.     OR.B    #2,$BFE001
  623.     MOVE.B    #6,mt_speed
  624.     CLR.B    mt_counter
  625.     CLR.B    mt_SongPos
  626.     CLR.W    mt_PatternPos
  627. mt_end    CLR.W    $DFF0A8
  628.     CLR.W    $DFF0B8
  629.     CLR.W    $DFF0C8
  630.     CLR.W    $DFF0D8
  631.     MOVE.W    #$F,$DFF096
  632.     RTS
  633.  
  634. mt_music
  635.     MOVEM.L    D0-D4/A0-A6,-(SP)
  636.     ADDQ.B    #1,mt_counter
  637.     MOVE.B    mt_counter(PC),D0
  638.     CMP.B    mt_speed(PC),D0
  639.     BLO.S    mt_NoNewNote
  640.     CLR.B    mt_counter
  641.     TST.B    mt_PattDelTime2
  642.     BEQ.S    mt_GetNewNote
  643.     BSR.S    mt_NoNewAllChannels
  644.     BRA    mt_dskip
  645.  
  646. mt_NoNewNote
  647.     BSR.S    mt_NoNewAllChannels
  648.     BRA    mt_NoNewPosYet
  649.  
  650. mt_NoNewAllChannels
  651.     LEA    $DFF0A0,A5
  652.     LEA    mt_chan1temp(PC),A6
  653.     BSR    mt_CheckEfx
  654.     LEA    $DFF0B0,A5
  655.     LEA    mt_chan2temp(PC),A6
  656.     BSR    mt_CheckEfx
  657.     LEA    $DFF0C0,A5
  658.     LEA    mt_chan3temp(PC),A6
  659.     BSR    mt_CheckEfx
  660.     LEA    $DFF0D0,A5
  661.     LEA    mt_chan4temp(PC),A6
  662.     BRA    mt_CheckEfx
  663.  
  664. mt_GetNewNote
  665.     MOVE.L    mt_SongDataPtr(PC),A0
  666.     LEA    12(A0),A3
  667.     LEA    952(A0),A2    ;pattpo
  668.     LEA    1084(A0),A0    ;patterndata
  669.     MOVEQ    #0,D0
  670.     MOVEQ    #0,D1
  671.     MOVE.B    mt_SongPos(PC),D0
  672.     MOVE.B    (A2,D0.W),D1
  673.     ASL.L    #8,D1
  674.     ASL.L    #2,D1
  675.     ADD.W    mt_PatternPos(PC),D1
  676.     CLR.W    mt_DMACONtemp
  677.  
  678.     LEA    $DFF0A0,A5
  679.     LEA    mt_chan1temp(PC),A6
  680.     BSR.S    mt_PlayVoice
  681.     LEA    $DFF0B0,A5
  682.     LEA    mt_chan2temp(PC),A6
  683.     BSR.S    mt_PlayVoice
  684.     LEA    $DFF0C0,A5
  685.     LEA    mt_chan3temp(PC),A6
  686.     BSR.S    mt_PlayVoice
  687.     LEA    $DFF0D0,A5
  688.     LEA    mt_chan4temp(PC),A6
  689.     BSR.S    mt_PlayVoice
  690.     BRA    mt_SetDMA
  691.  
  692. mt_PlayVoice
  693.     TST.L    (A6)
  694.     BNE.S    mt_plvskip
  695.     BSR    mt_PerNop
  696. mt_plvskip
  697.     MOVE.L    (A0,D1.L),(A6)
  698.     ADDQ.L    #4,D1
  699.     MOVEQ    #0,D2
  700.     MOVE.B    n_cmd(A6),D2
  701.     AND.B    #$F0,D2
  702.     LSR.B    #4,D2
  703.     MOVE.B    (A6),D0
  704.     AND.B    #$F0,D0
  705.     OR.B    D0,D2
  706.     TST.B    D2
  707.     BEQ    mt_SetRegs
  708.     MOVEQ    #0,D3
  709.     LEA    mt_SampleStarts(PC),A1
  710.     MOVE    D2,D4
  711.     SUBQ.L    #1,D2
  712.     ASL.L    #2,D2
  713.     MULU    #30,D4
  714.     MOVE.L    (A1,D2.L),n_start(A6)
  715.     MOVE.W    (A3,D4.L),n_length(A6)
  716.     MOVE.W    (A3,D4.L),n_reallength(A6)
  717.     MOVE.B    2(A3,D4.L),n_finetune(A6)
  718.     MOVE.B    3(A3,D4.L),n_volume(A6)
  719.     MOVE.W    4(A3,D4.L),D3 ; Get repeat
  720.     TST.W    D3
  721.     BEQ.S    mt_NoLoop
  722.     MOVE.L    n_start(A6),D2    ; Get start
  723.     ASL.W    #1,D3
  724.     ADD.L    D3,D2        ; Add repeat
  725.     MOVE.L    D2,n_loopstart(A6)
  726.     MOVE.L    D2,n_wavestart(A6)
  727.     MOVE.W    4(A3,D4.L),D0    ; Get repeat
  728.     ADD.W    6(A3,D4.L),D0    ; Add replen
  729.     MOVE.W    D0,n_length(A6)
  730.     MOVE.W    6(A3,D4.L),n_replen(A6)    ; Save replen
  731.     MOVEQ    #0,D0
  732.     MOVE.B    n_volume(A6),D0
  733.     MOVE.W    D0,8(A5)    ; Set volume
  734.     BRA.S    mt_SetRegs
  735.  
  736. mt_NoLoop
  737.     MOVE.L    n_start(A6),D2
  738.     ADD.L    D3,D2
  739.     MOVE.L    D2,n_loopstart(A6)
  740.     MOVE.L    D2,n_wavestart(A6)
  741.     MOVE.W    6(A3,D4.L),n_replen(A6)    ; Save replen
  742.     MOVEQ    #0,D0
  743.     MOVE.B    n_volume(A6),D0
  744.     MOVE.W    D0,8(A5)    ; Set volume
  745. mt_SetRegs
  746.     MOVE.W    (A6),D0
  747.     AND.W    #$0FFF,D0
  748.     BEQ    mt_CheckMoreEfx    ; If no note
  749.     MOVE.W    2(A6),D0
  750.     AND.W    #$0FF0,D0
  751.     CMP.W    #$0E50,D0
  752.     BEQ.S    mt_DoSetFineTune
  753.     MOVE.B    2(A6),D0
  754.     AND.B    #$0F,D0
  755.     CMP.B    #3,D0    ; TonePortamento
  756.     BEQ.S    mt_ChkTonePorta
  757.     CMP.B    #5,D0
  758.     BEQ.S    mt_ChkTonePorta
  759.     CMP.B    #9,D0    ; Sample Offset
  760.     BNE.S    mt_SetPeriod
  761.     BSR    mt_CheckMoreEfx
  762.     BRA.S    mt_SetPeriod
  763.  
  764. mt_DoSetFineTune
  765.     BSR    mt_SetFineTune
  766.     BRA.S    mt_SetPeriod
  767.  
  768. mt_ChkTonePorta
  769.     BSR    mt_SetTonePorta
  770.     BRA    mt_CheckMoreEfx
  771.  
  772. mt_SetPeriod
  773.     MOVEM.L    D0-D1/A0-A1,-(SP)
  774.     MOVE.W    (A6),D1
  775.     AND.W    #$0FFF,D1
  776.     LEA    mt_PeriodTable(PC),A1
  777.     MOVEQ    #0,D0
  778.     MOVEQ    #36,D7
  779. mt_ftuloop
  780.     CMP.W    (A1,D0.W),D1
  781.     BHS.S    mt_ftufound
  782.     ADDQ.L    #2,D0
  783.     DBRA    D7,mt_ftuloop
  784. mt_ftufound
  785.     MOVEQ    #0,D1
  786.     MOVE.B    n_finetune(A6),D1
  787.     MULU    #36*2,D1
  788.     ADD.L    D1,A1
  789.     MOVE.W    (A1,D0.W),n_period(A6)
  790.     MOVEM.L    (SP)+,D0-D1/A0-A1
  791.  
  792.     MOVE.W    2(A6),D0
  793.     AND.W    #$0FF0,D0
  794.     CMP.W    #$0ED0,D0 ; Notedelay
  795.     BEQ    mt_CheckMoreEfx
  796.  
  797.     MOVE.W    n_dmabit(A6),$DFF096
  798.     BTST    #2,n_wavecontrol(A6)
  799.     BNE.S    mt_vibnoc
  800.     CLR.B    n_vibratopos(A6)
  801. mt_vibnoc
  802.     BTST    #6,n_wavecontrol(A6)
  803.     BNE.S    mt_trenoc
  804.     CLR.B    n_tremolopos(A6)
  805. mt_trenoc
  806.     MOVE.L    n_start(A6),(A5)    ; Set start
  807.     MOVE.W    n_length(A6),4(A5)    ; Set length
  808.     MOVE.W    n_period(A6),D0
  809.     MOVE.W    D0,6(A5)        ; Set period
  810.     MOVE.W    n_dmabit(A6),D0
  811.     OR.W    D0,mt_DMACONtemp
  812.     BRA    mt_CheckMoreEfx
  813.  
  814. mt_SetDMA
  815.     MOVE.W    #300,D0
  816. mt_WaitDMA
  817.     DBRA    D0,mt_WaitDMA
  818.     MOVE.W    mt_DMACONtemp(PC),D0
  819.     OR.W    #$8000,D0
  820.     MOVE.W    D0,$DFF096
  821.     MOVE.W    #300,D0
  822. mt_WaitDMA2
  823.     DBRA    D0,mt_WaitDMA2
  824.  
  825.     LEA    $DFF000,A5
  826.     LEA    mt_chan4temp(PC),A6
  827.     MOVE.L    n_loopstart(A6),$D0(A5)
  828.     MOVE.W    n_replen(A6),$D4(A5)
  829.     LEA    mt_chan3temp(PC),A6
  830.     MOVE.L    n_loopstart(A6),$C0(A5)
  831.     MOVE.W    n_replen(A6),$C4(A5)
  832.     LEA    mt_chan2temp(PC),A6
  833.     MOVE.L    n_loopstart(A6),$B0(A5)
  834.     MOVE.W    n_replen(A6),$B4(A5)
  835.     LEA    mt_chan1temp(PC),A6
  836.     MOVE.L    n_loopstart(A6),$A0(A5)
  837.     MOVE.W    n_replen(A6),$A4(A5)
  838.  
  839. mt_dskip
  840.     ADD.W    #16,mt_PatternPos
  841.     MOVE.B    mt_PattDelTime,D0
  842.     BEQ.S    mt_dskc
  843.     MOVE.B    D0,mt_PattDelTime2
  844.     CLR.B    mt_PattDelTime
  845. mt_dskc    TST.B    mt_PattDelTime2
  846.     BEQ.S    mt_dska
  847.     SUBQ.B    #1,mt_PattDelTime2
  848.     BEQ.S    mt_dska
  849.     SUB.W    #16,mt_PatternPos
  850. mt_dska    TST.B    mt_PBreakFlag
  851.     BEQ.S    mt_nnpysk
  852.     SF    mt_PBreakFlag
  853.     MOVEQ    #0,D0
  854.     MOVE.B    mt_PBreakPos(PC),D0
  855.     CLR.B    mt_PBreakPos
  856.     LSL.W    #4,D0
  857.     MOVE.W    D0,mt_PatternPos
  858. mt_nnpysk
  859.     CMP.W    #1024,mt_PatternPos
  860.     BLO.S    mt_NoNewPosYet
  861. mt_NextPosition    
  862.     MOVEQ    #0,D0
  863.     MOVE.B    mt_PBreakPos(PC),D0
  864.     LSL.W    #4,D0
  865.     MOVE.W    D0,mt_PatternPos
  866.     CLR.B    mt_PBreakPos
  867.     CLR.B    mt_PosJumpFlag
  868.     ADDQ.B    #1,mt_SongPos
  869.     AND.B    #$7F,mt_SongPos
  870.     MOVE.B    mt_SongPos(PC),D1
  871.     MOVE.L    mt_SongDataPtr(PC),A0
  872.     CMP.B    950(A0),D1
  873.     BLO.S    mt_NoNewPosYet
  874.     CLR.B    mt_SongPos
  875. mt_NoNewPosYet    
  876.     TST.B    mt_PosJumpFlag
  877.     BNE.S    mt_NextPosition
  878.     MOVEM.L    (SP)+,D0-D4/A0-A6
  879.     RTS
  880.  
  881. mt_CheckEfx
  882.     BSR    mt_UpdateFunk
  883.     MOVE.W    n_cmd(A6),D0
  884.     AND.W    #$0FFF,D0
  885.     BEQ.S    mt_PerNop
  886.     MOVE.B    n_cmd(A6),D0
  887.     AND.B    #$0F,D0
  888.     BEQ.S    mt_Arpeggio
  889.     CMP.B    #1,D0
  890.     BEQ    mt_PortaUp
  891.     CMP.B    #2,D0
  892.     BEQ    mt_PortaDown
  893.     CMP.B    #3,D0
  894.     BEQ    mt_TonePortamento
  895.     CMP.B    #4,D0
  896.     BEQ    mt_Vibrato
  897.     CMP.B    #5,D0
  898.     BEQ    mt_TonePlusVolSlide
  899.     CMP.B    #6,D0
  900.     BEQ    mt_VibratoPlusVolSlide
  901.     CMP.B    #$E,D0
  902.     BEQ    mt_E_Commands
  903. SetBack    MOVE.W    n_period(A6),6(A5)
  904.     CMP.B    #7,D0
  905.     BEQ    mt_Tremolo
  906.     CMP.B    #$A,D0
  907.     BEQ    mt_VolumeSlide
  908. mt_Return2
  909.     RTS
  910.  
  911. mt_PerNop
  912.     MOVE.W    n_period(A6),6(A5)
  913.     RTS
  914.  
  915. mt_Arpeggio
  916.     MOVEQ    #0,D0
  917.     MOVE.B    mt_counter(PC),D0
  918.     DIVS    #3,D0
  919.     SWAP    D0
  920.     CMP.W    #0,D0
  921.     BEQ.S    mt_Arpeggio2
  922.     CMP.W    #2,D0
  923.     BEQ.S    mt_Arpeggio1
  924.     MOVEQ    #0,D0
  925.     MOVE.B    n_cmdlo(A6),D0
  926.     LSR.B    #4,D0
  927.     BRA.S    mt_Arpeggio3
  928.  
  929. mt_Arpeggio1
  930.     MOVEQ    #0,D0
  931.     MOVE.B    n_cmdlo(A6),D0
  932.     AND.B    #15,D0
  933.     BRA.S    mt_Arpeggio3
  934.  
  935. mt_Arpeggio2
  936.     MOVE.W    n_period(A6),D2
  937.     BRA.S    mt_Arpeggio4
  938.  
  939. mt_Arpeggio3
  940.     ASL.W    #1,D0
  941.     MOVEQ    #0,D1
  942.     MOVE.B    n_finetune(A6),D1
  943.     MULU    #36*2,D1
  944.     LEA    mt_PeriodTable(PC),A0
  945.     ADD.L    D1,A0
  946.     MOVEQ    #0,D1
  947.     MOVE.W    n_period(A6),D1
  948.     MOVEQ    #36,D7
  949. mt_arploop
  950.     MOVE.W    (A0,D0.W),D2
  951.     CMP.W    (A0),D1
  952.     BHS.S    mt_Arpeggio4
  953.     ADDQ.L    #2,A0
  954.     DBRA    D7,mt_arploop
  955.     RTS
  956.  
  957. mt_Arpeggio4
  958.     MOVE.W    D2,6(A5)
  959.     RTS
  960.  
  961. mt_FinePortaUp
  962.     TST.B    mt_counter
  963.     BNE.S    mt_Return2
  964.     MOVE.B    #$0F,mt_LowMask
  965. mt_PortaUp
  966.     MOVEQ    #0,D0
  967.     MOVE.B    n_cmdlo(A6),D0
  968.     AND.B    mt_LowMask(PC),D0
  969.     MOVE.B    #$FF,mt_LowMask
  970.     SUB.W    D0,n_period(A6)
  971.     MOVE.W    n_period(A6),D0
  972.     AND.W    #$0FFF,D0
  973.     CMP.W    #113,D0
  974.     BPL.S    mt_PortaUskip
  975.     AND.W    #$F000,n_period(A6)
  976.     OR.W    #113,n_period(A6)
  977. mt_PortaUskip
  978.     MOVE.W    n_period(A6),D0
  979.     AND.W    #$0FFF,D0
  980.     MOVE.W    D0,6(A5)
  981.     RTS    
  982.  
  983. mt_FinePortaDown
  984.     TST.B    mt_counter
  985.     BNE    mt_Return2
  986.     MOVE.B    #$0F,mt_LowMask
  987. mt_PortaDown
  988.     CLR.W    D0
  989.     MOVE.B    n_cmdlo(A6),D0
  990.     AND.B    mt_LowMask(PC),D0
  991.     MOVE.B    #$FF,mt_LowMask
  992.     ADD.W    D0,n_period(A6)
  993.     MOVE.W    n_period(A6),D0
  994.     AND.W    #$0FFF,D0
  995.     CMP.W    #856,D0
  996.     BMI.S    mt_PortaDskip
  997.     AND.W    #$F000,n_period(A6)
  998.     OR.W    #856,n_period(A6)
  999. mt_PortaDskip
  1000.     MOVE.W    n_period(A6),D0
  1001.     AND.W    #$0FFF,D0
  1002.     MOVE.W    D0,6(A5)
  1003.     RTS
  1004.  
  1005. mt_SetTonePorta
  1006.     MOVE.L    A0,-(SP)
  1007.     MOVE.W    (A6),D2
  1008.     AND.W    #$0FFF,D2
  1009.     MOVEQ    #0,D0
  1010.     MOVE.B    n_finetune(A6),D0
  1011.     MULU    #37*2,D0
  1012.     LEA    mt_PeriodTable(PC),A0
  1013.     ADD.L    D0,A0
  1014.     MOVEQ    #0,D0
  1015. mt_StpLoop
  1016.     CMP.W    (A0,D0.W),D2
  1017.     BHS.S    mt_StpFound
  1018.     ADDQ.W    #2,D0
  1019.     CMP.W    #37*2,D0
  1020.     BLO.S    mt_StpLoop
  1021.     MOVEQ    #35*2,D0
  1022. mt_StpFound
  1023.     MOVE.B    n_finetune(A6),D2
  1024.     AND.B    #8,D2
  1025.     BEQ.S    mt_StpGoss
  1026.     TST.W    D0
  1027.     BEQ.S    mt_StpGoss
  1028.     SUBQ.W    #2,D0
  1029. mt_StpGoss
  1030.     MOVE.W    (A0,D0.W),D2
  1031.     MOVE.L    (SP)+,A0
  1032.     MOVE.W    D2,n_wantedperiod(A6)
  1033.     MOVE.W    n_period(A6),D0
  1034.     CLR.B    n_toneportdirec(A6)
  1035.     CMP.W    D0,D2
  1036.     BEQ.S    mt_ClearTonePorta
  1037.     BGE    mt_Return2
  1038.     MOVE.B    #1,n_toneportdirec(A6)
  1039.     RTS
  1040.  
  1041. mt_ClearTonePorta
  1042.     CLR.W    n_wantedperiod(A6)
  1043.     RTS
  1044.  
  1045. mt_TonePortamento
  1046.     MOVE.B    n_cmdlo(A6),D0
  1047.     BEQ.S    mt_TonePortNoChange
  1048.     MOVE.B    D0,n_toneportspeed(A6)
  1049.     CLR.B    n_cmdlo(A6)
  1050. mt_TonePortNoChange
  1051.     TST.W    n_wantedperiod(A6)
  1052.     BEQ    mt_Return2
  1053.     MOVEQ    #0,D0
  1054.     MOVE.B    n_toneportspeed(A6),D0
  1055.     TST.B    n_toneportdirec(A6)
  1056.     BNE.S    mt_TonePortaUp
  1057. mt_TonePortaDown
  1058.     ADD.W    D0,n_period(A6)
  1059.     MOVE.W    n_wantedperiod(A6),D0
  1060.     CMP.W    n_period(A6),D0
  1061.     BGT.S    mt_TonePortaSetPer
  1062.     MOVE.W    n_wantedperiod(A6),n_period(A6)
  1063.     CLR.W    n_wantedperiod(A6)
  1064.     BRA.S    mt_TonePortaSetPer
  1065.  
  1066. mt_TonePortaUp
  1067.     SUB.W    D0,n_period(A6)
  1068.     MOVE.W    n_wantedperiod(A6),D0
  1069.     CMP.W    n_period(A6),D0
  1070.     BLT.S    mt_TonePortaSetPer
  1071.     MOVE.W    n_wantedperiod(A6),n_period(A6)
  1072.     CLR.W    n_wantedperiod(A6)
  1073.  
  1074. mt_TonePortaSetPer
  1075.     MOVE.W    n_period(A6),D2
  1076.     MOVE.B    n_glissfunk(A6),D0
  1077.     AND.B    #$0F,D0
  1078.     BEQ.S    mt_GlissSkip
  1079.     MOVEQ    #0,D0
  1080.     MOVE.B    n_finetune(A6),D0
  1081.     MULU    #36*2,D0
  1082.     LEA    mt_PeriodTable(PC),A0
  1083.     ADD.L    D0,A0
  1084.     MOVEQ    #0,D0
  1085. mt_GlissLoop
  1086.     CMP.W    (A0,D0.W),D2
  1087.     BHS.S    mt_GlissFound
  1088.     ADDQ.W    #2,D0
  1089.     CMP.W    #36*2,D0
  1090.     BLO.S    mt_GlissLoop
  1091.     MOVEQ    #35*2,D0
  1092. mt_GlissFound
  1093.     MOVE.W    (A0,D0.W),D2
  1094. mt_GlissSkip
  1095.     MOVE.W    D2,6(A5) ; Set period
  1096.     RTS
  1097.  
  1098. mt_Vibrato
  1099.     MOVE.B    n_cmdlo(A6),D0
  1100.     BEQ.S    mt_Vibrato2
  1101.     MOVE.B    n_vibratocmd(A6),D2
  1102.     AND.B    #$0F,D0
  1103.     BEQ.S    mt_vibskip
  1104.     AND.B    #$F0,D2
  1105.     OR.B    D0,D2
  1106. mt_vibskip
  1107.     MOVE.B    n_cmdlo(A6),D0
  1108.     AND.B    #$F0,D0
  1109.     BEQ.S    mt_vibskip2
  1110.     AND.B    #$0F,D2
  1111.     OR.B    D0,D2
  1112. mt_vibskip2
  1113.     MOVE.B    D2,n_vibratocmd(A6)
  1114. mt_Vibrato2
  1115.     MOVE.B    n_vibratopos(A6),D0
  1116.     LEA    mt_VibratoTable(PC),A4
  1117.     LSR.W    #2,D0
  1118.     AND.W    #$001F,D0
  1119.     MOVEQ    #0,D2
  1120.     MOVE.B    n_wavecontrol(A6),D2
  1121.     AND.B    #$03,D2
  1122.     BEQ.S    mt_vib_sine
  1123.     LSL.B    #3,D0
  1124.     CMP.B    #1,D2
  1125.     BEQ.S    mt_vib_rampdown
  1126.     MOVE.B    #255,D2
  1127.     BRA.S    mt_vib_set
  1128. mt_vib_rampdown
  1129.     TST.B    n_vibratopos(A6)
  1130.     BPL.S    mt_vib_rampdown2
  1131.     MOVE.B    #255,D2
  1132.     SUB.B    D0,D2
  1133.     BRA.S    mt_vib_set
  1134. mt_vib_rampdown2
  1135.     MOVE.B    D0,D2
  1136.     BRA.S    mt_vib_set
  1137. mt_vib_sine
  1138.     MOVE.B    0(A4,D0.W),D2
  1139. mt_vib_set
  1140.     MOVE.B    n_vibratocmd(A6),D0
  1141.     AND.W    #15,D0
  1142.     MULU    D0,D2
  1143.     LSR.W    #7,D2
  1144.     MOVE.W    n_period(A6),D0
  1145.     TST.B    n_vibratopos(A6)
  1146.     BMI.S    mt_VibratoNeg
  1147.     ADD.W    D2,D0
  1148.     BRA.S    mt_Vibrato3
  1149. mt_VibratoNeg
  1150.     SUB.W    D2,D0
  1151. mt_Vibrato3
  1152.     MOVE.W    D0,6(A5)
  1153.     MOVE.B    n_vibratocmd(A6),D0
  1154.     LSR.W    #2,D0
  1155.     AND.W    #$003C,D0
  1156.     ADD.B    D0,n_vibratopos(A6)
  1157.     RTS
  1158.  
  1159. mt_TonePlusVolSlide
  1160.     BSR    mt_TonePortNoChange
  1161.     BRA    mt_VolumeSlide
  1162.  
  1163. mt_VibratoPlusVolSlide
  1164.     BSR.S    mt_Vibrato2
  1165.     BRA    mt_VolumeSlide
  1166.  
  1167. mt_Tremolo
  1168.     MOVE.B    n_cmdlo(A6),D0
  1169.     BEQ.S    mt_Tremolo2
  1170.     MOVE.B    n_tremolocmd(A6),D2
  1171.     AND.B    #$0F,D0
  1172.     BEQ.S    mt_treskip
  1173.     AND.B    #$F0,D2
  1174.     OR.B    D0,D2
  1175. mt_treskip
  1176.     MOVE.B    n_cmdlo(A6),D0
  1177.     AND.B    #$F0,D0
  1178.     BEQ.S    mt_treskip2
  1179.     AND.B    #$0F,D2
  1180.     OR.B    D0,D2
  1181. mt_treskip2
  1182.     MOVE.B    D2,n_tremolocmd(A6)
  1183. mt_Tremolo2
  1184.     MOVE.B    n_tremolopos(A6),D0
  1185.     LEA    mt_VibratoTable(PC),A4
  1186.     LSR.W    #2,D0
  1187.     AND.W    #$001F,D0
  1188.     MOVEQ    #0,D2
  1189.     MOVE.B    n_wavecontrol(A6),D2
  1190.     LSR.B    #4,D2
  1191.     AND.B    #$03,D2
  1192.     BEQ.S    mt_tre_sine
  1193.     LSL.B    #3,D0
  1194.     CMP.B    #1,D2
  1195.     BEQ.S    mt_tre_rampdown
  1196.     MOVE.B    #255,D2
  1197.     BRA.S    mt_tre_set
  1198. mt_tre_rampdown
  1199.     TST.B    n_vibratopos(A6)
  1200.     BPL.S    mt_tre_rampdown2
  1201.     MOVE.B    #255,D2
  1202.     SUB.B    D0,D2
  1203.     BRA.S    mt_tre_set
  1204. mt_tre_rampdown2
  1205.     MOVE.B    D0,D2
  1206.     BRA.S    mt_tre_set
  1207. mt_tre_sine
  1208.     MOVE.B    0(A4,D0.W),D2
  1209. mt_tre_set
  1210.     MOVE.B    n_tremolocmd(A6),D0
  1211.     AND.W    #15,D0
  1212.     MULU    D0,D2
  1213.     LSR.W    #6,D2
  1214.     MOVEQ    #0,D0
  1215.     MOVE.B    n_volume(A6),D0
  1216.     TST.B    n_tremolopos(A6)
  1217.     BMI.S    mt_TremoloNeg
  1218.     ADD.W    D2,D0
  1219.     BRA.S    mt_Tremolo3
  1220. mt_TremoloNeg
  1221.     SUB.W    D2,D0
  1222. mt_Tremolo3
  1223.     BPL.S    mt_TremoloSkip
  1224.     CLR.W    D0
  1225. mt_TremoloSkip
  1226.     CMP.W    #$40,D0
  1227.     BLS.S    mt_TremoloOk
  1228.     MOVE.W    #$40,D0
  1229. mt_TremoloOk
  1230.     MOVE.W    D0,8(A5)
  1231.     MOVE.B    n_tremolocmd(A6),D0
  1232.     LSR.W    #2,D0
  1233.     AND.W    #$003C,D0
  1234.     ADD.B    D0,n_tremolopos(A6)
  1235.     RTS
  1236.  
  1237. mt_SampleOffset
  1238.     MOVEQ    #0,D0
  1239.     MOVE.B    n_cmdlo(A6),D0
  1240.     BEQ.S    mt_sononew
  1241.     MOVE.B    D0,n_sampleoffset(A6)
  1242. mt_sononew
  1243.     MOVE.B    n_sampleoffset(A6),D0
  1244.     LSL.W    #7,D0
  1245.     CMP.W    n_length(A6),D0
  1246.     BGE.S    mt_sofskip
  1247.     SUB.W    D0,n_length(A6)
  1248.     LSL.W    #1,D0
  1249.     ADD.L    D0,n_start(A6)
  1250.     RTS
  1251. mt_sofskip
  1252.     MOVE.W    #$0001,n_length(A6)
  1253.     RTS
  1254.  
  1255. mt_VolumeSlide
  1256.     MOVEQ    #0,D0
  1257.     MOVE.B    n_cmdlo(A6),D0
  1258.     LSR.B    #4,D0
  1259.     TST.B    D0
  1260.     BEQ.S    mt_VolSlideDown
  1261. mt_VolSlideUp
  1262.     ADD.B    D0,n_volume(A6)
  1263.     CMP.B    #$40,n_volume(A6)
  1264.     BMI.S    mt_vsuskip
  1265.     MOVE.B    #$40,n_volume(A6)
  1266. mt_vsuskip
  1267.     MOVE.B    n_volume(A6),D0
  1268.     MOVE.W    D0,8(A5)
  1269.     RTS
  1270.  
  1271. mt_VolSlideDown
  1272.     MOVEQ    #0,D0
  1273.     MOVE.B    n_cmdlo(A6),D0
  1274.     AND.B    #$0F,D0
  1275. mt_VolSlideDown2
  1276.     SUB.B    D0,n_volume(A6)
  1277.     BPL.S    mt_vsdskip
  1278.     CLR.B    n_volume(A6)
  1279. mt_vsdskip
  1280.     MOVE.B    n_volume(A6),D0
  1281.     MOVE.W    D0,8(A5)
  1282.     RTS
  1283.  
  1284. mt_PositionJump
  1285.     MOVE.B    n_cmdlo(A6),D0
  1286.     SUBQ.B    #1,D0
  1287.     MOVE.B    D0,mt_SongPos
  1288. mt_pj2    CLR.B    mt_PBreakPos
  1289.     ST     mt_PosJumpFlag
  1290.     RTS
  1291.  
  1292. mt_VolumeChange
  1293.     MOVEQ    #0,D0
  1294.     MOVE.B    n_cmdlo(A6),D0
  1295.     CMP.B    #$40,D0
  1296.     BLS.S    mt_VolumeOk
  1297.     MOVEQ    #$40,D0
  1298. mt_VolumeOk
  1299.     MOVE.B    D0,n_volume(A6)
  1300.     MOVE.W    D0,8(A5)
  1301.     RTS
  1302.  
  1303. mt_PatternBreak
  1304.     MOVEQ    #0,D0
  1305.     MOVE.B    n_cmdlo(A6),D0
  1306.     MOVE.L    D0,D2
  1307.     LSR.B    #4,D0
  1308.     MULU    #10,D0
  1309.     AND.B    #$0F,D2
  1310.     ADD.B    D2,D0
  1311.     CMP.B    #63,D0
  1312.     BHI.S    mt_pj2
  1313.     MOVE.B    D0,mt_PBreakPos
  1314.     ST    mt_PosJumpFlag
  1315.     RTS
  1316.  
  1317. mt_SetSpeed
  1318.     MOVE.B    3(A6),D0
  1319.     BEQ    mt_Return2
  1320.     CLR.B    mt_counter
  1321.     MOVE.B    D0,mt_speed
  1322.     RTS
  1323.  
  1324. mt_CheckMoreEfx
  1325.     BSR    mt_UpdateFunk
  1326.     MOVE.B    2(A6),D0
  1327.     AND.B    #$0F,D0
  1328.     CMP.B    #$9,D0
  1329.     BEQ    mt_SampleOffset
  1330.     CMP.B    #$B,D0
  1331.     BEQ    mt_PositionJump
  1332.     CMP.B    #$D,D0
  1333.     BEQ.S    mt_PatternBreak
  1334.     CMP.B    #$E,D0
  1335.     BEQ.S    mt_E_Commands
  1336.     CMP.B    #$F,D0
  1337.     BEQ.S    mt_SetSpeed
  1338.     CMP.B    #$C,D0
  1339.     BEQ    mt_VolumeChange
  1340.     BRA    mt_PerNop
  1341.  
  1342. mt_E_Commands
  1343.     MOVE.B    n_cmdlo(A6),D0
  1344.     AND.B    #$F0,D0
  1345.     LSR.B    #4,D0
  1346.     BEQ.S    mt_FilterOnOff
  1347.     CMP.B    #1,D0
  1348.     BEQ    mt_FinePortaUp
  1349.     CMP.B    #2,D0
  1350.     BEQ    mt_FinePortaDown
  1351.     CMP.B    #3,D0
  1352.     BEQ.S    mt_SetGlissControl
  1353.     CMP.B    #4,D0
  1354.     BEQ    mt_SetVibratoControl
  1355.     CMP.B    #5,D0
  1356.     BEQ    mt_SetFineTune
  1357.     CMP.B    #6,D0
  1358.     BEQ    mt_JumpLoop
  1359.     CMP.B    #7,D0
  1360.     BEQ    mt_SetTremoloControl
  1361.     CMP.B    #9,D0
  1362.     BEQ    mt_RetrigNote
  1363.     CMP.B    #$A,D0
  1364.     BEQ    mt_VolumeFineUp
  1365.     CMP.B    #$B,D0
  1366.     BEQ    mt_VolumeFineDown
  1367.     CMP.B    #$C,D0
  1368.     BEQ    mt_NoteCut
  1369.     CMP.B    #$D,D0
  1370.     BEQ    mt_NoteDelay
  1371.     CMP.B    #$E,D0
  1372.     BEQ    mt_PatternDelay
  1373.     CMP.B    #$F,D0
  1374.     BEQ    mt_FunkIt
  1375.     RTS
  1376.  
  1377. mt_FilterOnOff
  1378.     MOVE.B    n_cmdlo(A6),D0
  1379.     AND.B    #1,D0
  1380.     ASL.B    #1,D0
  1381.     AND.B    #$FD,$BFE001
  1382.     OR.B    D0,$BFE001
  1383.     RTS    
  1384.  
  1385. mt_SetGlissControl
  1386.     MOVE.B    n_cmdlo(A6),D0
  1387.     AND.B    #$0F,D0
  1388.     AND.B    #$F0,n_glissfunk(A6)
  1389.     OR.B    D0,n_glissfunk(A6)
  1390.     RTS
  1391.  
  1392. mt_SetVibratoControl
  1393.     MOVE.B    n_cmdlo(A6),D0
  1394.     AND.B    #$0F,D0
  1395.     AND.B    #$F0,n_wavecontrol(A6)
  1396.     OR.B    D0,n_wavecontrol(A6)
  1397.     RTS
  1398.  
  1399. mt_SetFineTune
  1400.     MOVE.B    n_cmdlo(A6),D0
  1401.     AND.B    #$0F,D0
  1402.     MOVE.B    D0,n_finetune(A6)
  1403.     RTS
  1404.  
  1405. mt_JumpLoop
  1406.     TST.B    mt_counter
  1407.     BNE    mt_Return2
  1408.     MOVE.B    n_cmdlo(A6),D0
  1409.     AND.B    #$0F,D0
  1410.     BEQ.S    mt_SetLoop
  1411.     TST.B    n_loopcount(A6)
  1412.     BEQ.S    mt_jumpcnt
  1413.     SUBQ.B    #1,n_loopcount(A6)
  1414.     BEQ    mt_Return2
  1415. mt_jmploop    MOVE.B    n_pattpos(A6),mt_PBreakPos
  1416.     ST    mt_PBreakFlag
  1417.     RTS
  1418.  
  1419. mt_jumpcnt
  1420.     MOVE.B    D0,n_loopcount(A6)
  1421.     BRA.S    mt_jmploop
  1422.  
  1423. mt_SetLoop
  1424.     MOVE.W    mt_PatternPos(PC),D0
  1425.     LSR.W    #4,D0
  1426.     MOVE.B    D0,n_pattpos(A6)
  1427.     RTS
  1428.  
  1429. mt_SetTremoloControl
  1430.     MOVE.B    n_cmdlo(A6),D0
  1431.     AND.B    #$0F,D0
  1432.     LSL.B    #4,D0
  1433.     AND.B    #$0F,n_wavecontrol(A6)
  1434.     OR.B    D0,n_wavecontrol(A6)
  1435.     RTS
  1436.  
  1437. mt_RetrigNote
  1438.     MOVE.L    D1,-(SP)
  1439.     MOVEQ    #0,D0
  1440.     MOVE.B    n_cmdlo(A6),D0
  1441.     AND.B    #$0F,D0
  1442.     BEQ.S    mt_rtnend
  1443.     MOVEQ    #0,D1
  1444.     MOVE.B    mt_counter(PC),D1
  1445.     BNE.S    mt_rtnskp
  1446.     MOVE.W    (A6),D1
  1447.     AND.W    #$0FFF,D1
  1448.     BNE.S    mt_rtnend
  1449.     MOVEQ    #0,D1
  1450.     MOVE.B    mt_counter(PC),D1
  1451. mt_rtnskp
  1452.     DIVU    D0,D1
  1453.     SWAP    D1
  1454.     TST.W    D1
  1455.     BNE.S    mt_rtnend
  1456. mt_DoRetrig
  1457.     MOVE.W    n_dmabit(A6),$DFF096    ; Channel DMA off
  1458.     MOVE.L    n_start(A6),(A5)    ; Set sampledata pointer
  1459.     MOVE.W    n_length(A6),4(A5)    ; Set length
  1460.     MOVE.W    #300,D0
  1461. mt_rtnloop1
  1462.     DBRA    D0,mt_rtnloop1
  1463.     MOVE.W    n_dmabit(A6),D0
  1464.     BSET    #15,D0
  1465.     MOVE.W    D0,$DFF096
  1466.     MOVE.W    #300,D0
  1467. mt_rtnloop2
  1468.     DBRA    D0,mt_rtnloop2
  1469.     MOVE.L    n_loopstart(A6),(A5)
  1470.     MOVE.L    n_replen(A6),4(A5)
  1471. mt_rtnend
  1472.     MOVE.L    (SP)+,D1
  1473.     RTS
  1474.  
  1475. mt_VolumeFineUp
  1476.     TST.B    mt_counter
  1477.     BNE    mt_Return2
  1478.     MOVEQ    #0,D0
  1479.     MOVE.B    n_cmdlo(A6),D0
  1480.     AND.B    #$F,D0
  1481.     BRA    mt_VolSlideUp
  1482.  
  1483. mt_VolumeFineDown
  1484.     TST.B    mt_counter
  1485.     BNE    mt_Return2
  1486.     MOVEQ    #0,D0
  1487.     MOVE.B    n_cmdlo(A6),D0
  1488.     AND.B    #$0F,D0
  1489.     BRA    mt_VolSlideDown2
  1490.  
  1491. mt_NoteCut
  1492.     MOVEQ    #0,D0
  1493.     MOVE.B    n_cmdlo(A6),D0
  1494.     AND.B    #$0F,D0
  1495.     CMP.B    mt_counter(PC),D0
  1496.     BNE    mt_Return2
  1497.     CLR.B    n_volume(A6)
  1498.     MOVE.W    #0,8(A5)
  1499.     RTS
  1500.  
  1501. mt_NoteDelay
  1502.     MOVEQ    #0,D0
  1503.     MOVE.B    n_cmdlo(A6),D0
  1504.     AND.B    #$0F,D0
  1505.     CMP.B    mt_Counter,D0
  1506.     BNE    mt_Return2
  1507.     MOVE.W    (A6),D0
  1508.     BEQ    mt_Return2
  1509.     MOVE.L    D1,-(SP)
  1510.     BRA    mt_DoRetrig
  1511.  
  1512. mt_PatternDelay
  1513.     TST.B    mt_counter
  1514.     BNE    mt_Return2
  1515.     MOVEQ    #0,D0
  1516.     MOVE.B    n_cmdlo(A6),D0
  1517.     AND.B    #$0F,D0
  1518.     TST.B    mt_PattDelTime2
  1519.     BNE    mt_Return2
  1520.     ADDQ.B    #1,D0
  1521.     MOVE.B    D0,mt_PattDelTime
  1522.     RTS
  1523.  
  1524. mt_FunkIt
  1525.     TST.B    mt_counter
  1526.     BNE    mt_Return2
  1527.     MOVE.B    n_cmdlo(A6),D0
  1528.     AND.B    #$0F,D0
  1529.     LSL.B    #4,D0
  1530.     AND.B    #$0F,n_glissfunk(A6)
  1531.     OR.B    D0,n_glissfunk(A6)
  1532.     TST.B    D0
  1533.     BEQ    mt_Return2
  1534. mt_UpdateFunk
  1535.     MOVEM.L    A0/D1,-(SP)
  1536.     MOVEQ    #0,D0
  1537.     MOVE.B    n_glissfunk(A6),D0
  1538.     LSR.B    #4,D0
  1539.     BEQ.S    mt_funkend
  1540.     LEA    mt_FunkTable(PC),A0
  1541.     MOVE.B    (A0,D0.W),D0
  1542.     ADD.B    D0,n_funkoffset(A6)
  1543.     BTST    #7,n_funkoffset(A6)
  1544.     BEQ.S    mt_funkend
  1545.     CLR.B    n_funkoffset(A6)
  1546.  
  1547.     MOVE.L    n_loopstart(A6),D0
  1548.     MOVEQ    #0,D1
  1549.     MOVE.W    n_replen(A6),D1
  1550.     ADD.L    D1,D0
  1551.     ADD.L    D1,D0
  1552.     MOVE.L    n_wavestart(A6),A0
  1553.     ADDQ.L    #1,A0
  1554.     CMP.L    D0,A0
  1555.     BLO.S    mt_funkok
  1556.     MOVE.L    n_loopstart(A6),A0
  1557. mt_funkok
  1558.     MOVE.L    A0,n_wavestart(A6)
  1559.     MOVEQ    #-1,D0
  1560.     SUB.B    (A0),D0
  1561.     MOVE.B    D0,(A0)
  1562. mt_funkend
  1563.     MOVEM.L    (SP)+,A0/D1
  1564.     RTS
  1565.  
  1566.  
  1567. mt_FunkTable dc.b 0,5,6,7,8,10,11,13,16,19,22,26,32,43,64,128
  1568.  
  1569. mt_VibratoTable    
  1570.     dc.b   0, 24, 49, 74, 97,120,141,161
  1571.     dc.b 180,197,212,224,235,244,250,253
  1572.     dc.b 255,253,250,244,235,224,212,197
  1573.     dc.b 180,161,141,120, 97, 74, 49, 24
  1574.  
  1575. mt_PeriodTable
  1576. ; Tuning 0, Normal
  1577.     dc.w    856,808,762,720,678,640,604,570,538,508,480,453
  1578.     dc.w    428,404,381,360,339,320,302,285,269,254,240,226
  1579.     dc.w    214,202,190,180,170,160,151,143,135,127,120,113
  1580. ; Tuning 1
  1581.     dc.w    850,802,757,715,674,637,601,567,535,505,477,450
  1582.     dc.w    425,401,379,357,337,318,300,284,268,253,239,225
  1583.     dc.w    213,201,189,179,169,159,150,142,134,126,119,113
  1584. ; Tuning 2
  1585.     dc.w    844,796,752,709,670,632,597,563,532,502,474,447
  1586.     dc.w    422,398,376,355,335,316,298,282,266,251,237,224
  1587.     dc.w    211,199,188,177,167,158,149,141,133,125,118,112
  1588. ; Tuning 3
  1589.     dc.w    838,791,746,704,665,628,592,559,528,498,470,444
  1590.     dc.w    419,395,373,352,332,314,296,280,264,249,235,222
  1591.     dc.w    209,198,187,176,166,157,148,140,132,125,118,111
  1592. ; Tuning 4
  1593.     dc.w    832,785,741,699,660,623,588,555,524,495,467,441
  1594.     dc.w    416,392,370,350,330,312,294,278,262,247,233,220
  1595.     dc.w    208,196,185,175,165,156,147,139,131,124,117,110
  1596. ; Tuning 5
  1597.     dc.w    826,779,736,694,655,619,584,551,520,491,463,437
  1598.     dc.w    413,390,368,347,328,309,292,276,260,245,232,219
  1599.     dc.w    206,195,184,174,164,155,146,138,130,123,116,109
  1600. ; Tuning 6
  1601.     dc.w    820,774,730,689,651,614,580,547,516,487,460,434
  1602.     dc.w    410,387,365,345,325,307,290,274,258,244,230,217
  1603.     dc.w    205,193,183,172,163,154,145,137,129,122,115,109
  1604. ; Tuning 7
  1605.     dc.w    814,768,725,684,646,610,575,543,513,484,457,431
  1606.     dc.w    407,384,363,342,323,305,288,272,256,242,228,216
  1607.     dc.w    204,192,181,171,161,152,144,136,128,121,114,108
  1608. ; Tuning -8
  1609.     dc.w    907,856,808,762,720,678,640,604,570,538,508,480
  1610.     dc.w    453,428,404,381,360,339,320,302,285,269,254,240
  1611.     dc.w    226,214,202,190,180,170,160,151,143,135,127,120
  1612. ; Tuning -7
  1613.     dc.w    900,850,802,757,715,675,636,601,567,535,505,477
  1614.     dc.w    450,425,401,379,357,337,318,300,284,268,253,238
  1615.     dc.w    225,212,200,189,179,169,159,150,142,134,126,119
  1616. ; Tuning -6
  1617.     dc.w    894,844,796,752,709,670,632,597,563,532,502,474
  1618.     dc.w    447,422,398,376,355,335,316,298,282,266,251,237
  1619.     dc.w    223,211,199,188,177,167,158,149,141,133,125,118
  1620. ; Tuning -5
  1621.     dc.w    887,838,791,746,704,665,628,592,559,528,498,470
  1622.     dc.w    444,419,395,373,352,332,314,296,280,264,249,235
  1623.     dc.w    222,209,198,187,176,166,157,148,140,132,125,118
  1624. ; Tuning -4
  1625.     dc.w    881,832,785,741,699,660,623,588,555,524,494,467
  1626.     dc.w    441,416,392,370,350,330,312,294,278,262,247,233
  1627.     dc.w    220,208,196,185,175,165,156,147,139,131,123,117
  1628. ; Tuning -3
  1629.     dc.w    875,826,779,736,694,655,619,584,551,520,491,463
  1630.     dc.w    437,413,390,368,347,328,309,292,276,260,245,232
  1631.     dc.w    219,206,195,184,174,164,155,146,138,130,123,116
  1632. ; Tuning -2
  1633.     dc.w    868,820,774,730,689,651,614,580,547,516,487,460
  1634.     dc.w    434,410,387,365,345,325,307,290,274,258,244,230
  1635.     dc.w    217,205,193,183,172,163,154,145,137,129,122,115
  1636. ; Tuning -1
  1637.     dc.w    862,814,768,725,684,646,610,575,543,513,484,457
  1638.     dc.w    431,407,384,363,342,323,305,288,272,256,242,228
  1639.     dc.w    216,203,192,181,171,161,152,144,136,128,121,114
  1640.  
  1641. mt_chan1temp    dc.l    0,0,0,0,0,$00010000,0,0,0,0,0
  1642. mt_chan2temp    dc.l    0,0,0,0,0,$00020000,0,0,0,0,0
  1643. mt_chan3temp    dc.l    0,0,0,0,0,$00040000,0,0,0,0,0
  1644. mt_chan4temp    dc.l    0,0,0,0,0,$00080000,0,0,0,0,0
  1645.  
  1646. mt_SampleStarts    dc.l    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1647.         dc.l    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  1648.  
  1649. mt_SongDataPtr    dc.l 0
  1650.  
  1651. mt_speed    dc.b 6
  1652. mt_counter    dc.b 0
  1653. mt_SongPos    dc.b 0
  1654. mt_PBreakPos    dc.b 0
  1655. mt_PosJumpFlag    dc.b 0
  1656. mt_PBreakFlag    dc.b 0
  1657. mt_LowMask    dc.b 0
  1658. mt_PattDelTime    dc.b 0
  1659. mt_PattDelTime2    dc.b 0,0
  1660.  
  1661. mt_PatternPos    dc.w 0
  1662. mt_DMACONtemp    dc.w 0
  1663.  
  1664. ;/* End of File */
  1665.  
  1666.     section    sprites,data_c
  1667. SBUFF0:    ds.l    130
  1668. SBUFF1:    ds.l    130
  1669. SBUFF2:    ds.l    130
  1670. SBUFF3:    ds.l    130
  1671. SBUFF4:    ds.l    130
  1672. SBUFF5:    ds.l    130
  1673. SBUFF6:    ds.l    130
  1674. SBUFF7:    ds.l    130
  1675.  
  1676.     section    screens,bss_c    
  1677.     ds.b    1000
  1678. APIC:    ds.b    16000
  1679.  
  1680.     section    sin,data
  1681. sine:
  1682.     DC.W    $0001,$0001
  1683.     dc.w    $0001,$0002,$0003,$0004,$0005,$0006,$0008,$000A
  1684.     dc.w    $000C,$000E,$0010,$0013,$0016,$0019,$001C,$001F
  1685.     dc.w    $0023,$0026,$002A,$002E,$0032,$0036,$003B,$003F
  1686.     dc.w    $0044,$0048,$004D,$0052,$0058,$005D,$0062,$0068
  1687.     dc.w    $006D,$0073,$0079,$007F,$0084,$008A,$0090,$0097
  1688.     dc.w    $009D,$00A3,$00A9,$00AF,$00B6,$00BC,$00C2,$00C8
  1689.  
  1690.     dc.w    $00C8,$00C2,$00BC,$00B5,$00AF,$00A9,$00A3,$009D
  1691.     dc.w    $0097,$0092,$008D,$0088,$0083,$007E,$007A,$0076
  1692.     dc.w    $0073,$0070,$006D,$006B,$0069,$0067,$0066,$0065
  1693.     dc.w    $0065,$0065,$0065,$0066,$0067,$0069,$006B,$006D
  1694.     dc.w    $0070,$0073,$0076,$007A,$007E,$0083,$0088,$008D
  1695.     dc.w    $0092,$0097,$009D,$00A3,$00A9,$00AF,$00B5,$00BC
  1696.     dc.w    $00C2,$00C8
  1697.  
  1698.     dc.w    $00C8,$00C5,$00C2,$00BF,$00BC,$00B9,$00B6,$00B3
  1699.     dc.w    $00B0,$00AD,$00AB,$00A8,$00A6,$00A3,$00A1,$009F
  1700.     dc.w    $009E,$009C,$009B,$009A,$0099,$0098,$0097,$0097
  1701.     dc.w    $0097,$0097,$0097,$0097,$0098,$0099,$009A,$009B
  1702.     dc.w    $009C,$009E,$009F,$00A1,$00A3,$00A6,$00A8,$00AB
  1703.     dc.w    $00AD,$00B0,$00B3,$00B6,$00B9,$00BC,$00BF,$00C2
  1704.     dc.w    $00C5,$00C8
  1705.  
  1706.     dc.w    $00C8,$00C7,$00C5,$00C4,$00C2,$00C1,$00BF,$00BE
  1707.     dc.w    $00BC,$00BB,$00BA,$00B8,$00B7,$00B6,$00B5,$00B4
  1708.     dc.w    $00B3,$00B2,$00B2,$00B1,$00B1,$00B0,$00B0,$00B0
  1709.     dc.w    $00B0,$00B0,$00B0,$00B0,$00B0,$00B1,$00B1,$00B2
  1710.     dc.w    $00B2,$00B3,$00B4,$00B5,$00B6,$00B7,$00B8,$00BA
  1711.     dc.w    $00BB,$00BC,$00BE,$00BF,$00C1,$00C2,$00C4,$00C5
  1712.     dc.w    $00C7,$00C8
  1713.  
  1714.  
  1715. backpt:    dc.w    0
  1716. back=    520
  1717. backsine:
  1718.     dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1719.     dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1720.     dc.w    $0000,$0000,$0000,$0001,$0001,$0001,$0001,$0001
  1721.     dc.w    $0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001
  1722.     dc.w    $0001,$0001,$0001,$0001,$0001,$0002,$0002,$0002
  1723.     dc.w    $0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002
  1724.     dc.w    $0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002
  1725.     dc.w    $0002,$0003,$0003,$0003,$0003,$0003,$0003,$0003
  1726.     dc.w    $0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003
  1727.     dc.w    $0003,$0003,$0003,$0003,$0003,$0003,$0003,$0004
  1728.     dc.w    $0004,$0004,$0004,$0004,$0004,$0004,$0004,$0004
  1729.     dc.w    $0004,$0004,$0004,$0004,$0004,$0004,$0004,$0004
  1730.     dc.w    $0004,$0004,$0004,$0004,$0004,$0004,$0004,$0004
  1731.     dc.w    $0004,$0004,$0005,$0005,$0005,$0005,$0005,$0005
  1732.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1733.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1734.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1735.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1736.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1737.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1738.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1739.     dc.w    $0005,$0006
  1740.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1741.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1742.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1743.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1744.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1745.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1746.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1747.     dc.w    $0006,$0006,$0006,$0006
  1748.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1749.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1750.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1751.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1752.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1753.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1754.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1755.     dc.w    $0006,$0006,$0006,$0006
  1756.  
  1757.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1758.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1759.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1760.     dc.w    $0006,$0006,$0007,$0007,$0007,$0006,$0006,$0006
  1761.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1762.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1763.     dc.w    $0006,$0006,$0006,$0006,$0006,$0006,$0006,$0006
  1764.     dc.w    $0006,$0006,$0006,$0006
  1765.  
  1766.     dc.w    $0006,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1767.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1768.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1769.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1770.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1771.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1772.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1773.     dc.w    $0005,$0005,$0005,$0005,$0005,$0005,$0005,$0005
  1774.     dc.w    $0004,$0004,$0004,$0004,$0004,$0004,$0004,$0004
  1775.     dc.w    $0004,$0004,$0004,$0004,$0004,$0004,$0004,$0004
  1776.     dc.w    $0004,$0004,$0004,$0004,$0004,$0004,$0004,$0004
  1777.     dc.w    $0004,$0004,$0004,$0003,$0003,$0003,$0003,$0003
  1778.     dc.w    $0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003
  1779.     dc.w    $0003,$0003,$0003,$0003,$0003,$0003,$0003,$0003
  1780.     dc.w    $0003,$0002,$0002,$0002,$0002,$0002,$0002,$0002
  1781.     dc.w    $0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002
  1782.     dc.w    $0002,$0002,$0002,$0002,$0002,$0001,$0001,$0001
  1783.     dc.w    $0001,$0001,$0001,$0001,$0001,$0001,$0001,$0001
  1784.     dc.w    $0001,$0001,$0001,$0001,$0001,$0001,$0001,$0000
  1785.     dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1786.     dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
  1787.     dc.w    $0000,$0000
  1788. SCROLLT:movem.l    a0-a6/d0-d7,-(a7)
  1789. GO_TEXT:moveq    #0,d0
  1790.     move.w    SPEED_,d7
  1791.     sub.w    d7,delay
  1792.     bgt    bl_shft
  1793.     move    #16,delay
  1794.     lea    TEXTT,a0
  1795.     move.l    TEXT_PNT,d1
  1796.     move.b    (a0,d1),d0
  1797.     bne    n_nwtxt.
  1798.     move.l    #0,TEXT_PNT
  1799.     move.b    TEXTT,d0
  1800.     moveq    #8,d1
  1801. n_nwtxt.:add.l    #1,TEXT_PNT
  1802.     moveq    #$F,d1
  1803. no_loop:cmp    d1,d0
  1804.     beq    cspeed
  1805.     dbf    d1,no_LOOP
  1806.     bra    N_CHNGE.
  1807. cspeed:    move    d1,SPEED_
  1808.     bra    GO_TEXT
  1809. n_CHNGE.:sub    #32,d0        ;Subtract hex start
  1810.     lsl    #5,d0        ;And get offset in the FONT
  1811.     add.l    #FONT16,d0        ;now to locate in RAM!
  1812. PUT_FNT:BTST    #14,$DFF002    ; Blitter tester
  1813.     BNE    put_fnt        ; Loop until blitter stops
  1814.     move.l    #$ffffffff,$dff044;
  1815.     MOVE.L    d0,$dff050    ; A Mask of Logo
  1816.     MOVE.L    #42+spic,$dff054    ; D Destination!
  1817.     MOVE.W    #42,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  1818.     MOVE.W    #0,$dff064    ; A Modula
  1819.     move.w    #$9f0,$dff040    ; CookieCut
  1820.     MOVE.W    #0,$dff042    ; Mode of operation
  1821.     MOVE.W    #$0401,$dff058    ; (Height*64*Bitplanes)+(Words Wide of BLIT!)
  1822. bl_shft:BTST    #14,$DFF002
  1823.     BNE    bl_shft
  1824.     MOVE.L    #$ffff0000,$dff044
  1825.     MOVE.L    #spic+2,$dff050
  1826.     MOVE.L    #spic,$dff054
  1827.     MOVE.W    #0,$dff064
  1828.     MOVE.W    #0,$dff066
  1829.     MOVE.W    #$0,$dff042
  1830.     eor    #$f,d7
  1831.     add    #1,d7
  1832.     swap    d7
  1833.     ror.l    #4,d7
  1834.     or.w    #$9f0,d7
  1835.     move.w    d7,$dff040
  1836.     MOVE.W    #$0416,$dff058
  1837. ;COPY DATA TO REAL PLANE;!!!!
  1838. tst:    BTST #14,$DFF002;
  1839.     BNE    tst
  1840.     MOVE.L     #$FFFFFFFF,$dff044
  1841.     moVE.L    #spic+2,$dff050    ; A OBJ
  1842.     MOVE.L    #S_PIC,$dff054    ; D
  1843.     MOVE.W    #4,$dff064    ; A
  1844.     MOVE.W    #0,$dff066    ; D <Pl Wdth bytes40>-(BLT Words1*2)
  1845.     move.w    #$9f0,$dff040
  1846.     MOVE.W    #$0414,$dff058
  1847.     movem.l    (a7)+,a0-a6/d0-d7
  1848.     RTS
  1849. TEXT_PNT:dc.l    0
  1850. SPEED_:    dc.w    2
  1851. delay:    dc.w    0
  1852.     SECTION    BSS,BSS_C
  1853. spic:    DS.b    800
  1854. s_pic:    DS.b    9000
  1855.  
  1856.     section    copper,data_c
  1857. COPA:
  1858. CSPRITE:dc.l $01200000,$01220000,$01240000,$01260000,$01280000,$012A0000
  1859.     dc.l $012C0000,$012E0000,$01300000,$01320000,$01340000,$01360000 
  1860.     dc.l $01380000,$013A0000,$013C0000,$013E0000
  1861. C17:    dc.l $01A20444,$01A40888,$01A60Fff,$01Aa0400,$01Ac0800,$01Ae0f00
  1862. C25:    dc.l $01b20040,$01b40080,$01b600f0,$01ba0044,$01bc0088,$01be00ff
  1863.     DC.L $008E2c81,$00902cc1,$00920038,$009400D0,$00968020
  1864.     DC.L $01020000,$01040024,$01080000,$010A0028,$01004400
  1865.     DC.L $0180000e
  1866. AMAP:    DC.L $00e00000,$00e20000,$00E80000,$00Ea0000,$01040024
  1867. BMAP:    DC.L $00e40000,$00e60000,$00Ec0000,$00Ee0000
  1868.     dc.l $0192000e,$0194000e,$0196000e
  1869.     dc.l $0182000e,$0184000e,$0186000e
  1870.     dc.l $3501fffe,$01920aaa,$01940444,$01960fff
  1871.     dc.l            $01820000,$01840ff8,$01860ff0
  1872.  
  1873.     dc.l $3c01fffe,$0180000d,$01920aaa,$01940444,$01960eee
  1874.     dc.l $4c01fffe,$0180000c,$01920999,$01940444,$01960ddd
  1875.     dc.l $5c01fffe,$0180000b,$01920888,$01940333,$01960ccc
  1876.     dc.l $6c01fffe,$01800009,$01920777,$01940333,$01960bbb
  1877.     dc.l $7c01fffe,$01800008,$01920666,$01940222,$01960aaa
  1878.     dc.l $8c01fffe,$01800007,$01920555,$01940222,$01960999
  1879.     dc.l $9001fffe
  1880. DMAP:    DC.L $00e40000,$00e60000,$00Ec0000,$00Ee0000
  1881.     dc.l $9c01fffe,$01800006,$01920444,$01940111,$01960888
  1882.     dc.l $ac01fffe,$01800005,$01920333,$01940111,$01960777
  1883.     dc.l $bc01fffe,$01800004,$01920222,$01940000,$01960666
  1884.     dc.l $cc01fffe,$01800003,$01920111,$01940000,$01960666
  1885.     dc.l $dc01fffe,$01800002,$01920000,$01940000,$01960555
  1886.     dc.l $ec01fffe,$01800001,$01920000,$01940000,$01960555
  1887.     dc.l $f301fffe,$01040064,$01920000,$01940000,$01960444
  1888.     dc.l $01840000,$01860000
  1889.     dc.l $f401fffe
  1890. cMAP:    DC.L $00e40000,$00e60000,$00Ec0000,$00Ee0000
  1891.     dc.l $ff01fffe,$00960020,$01440000,$01400000    ;TURN OFF SPRITE SHIT...
  1892.     DC.L $01820fFf,$01840000,$01860fff
  1893. SMAP:    DC.L $00e00000,$00e20000,$00E80000,$00Ea0000,$01040024
  1894.     dc.l $01820000,$01840ff8,$01860ff0
  1895.     DC.L $FFFFFFFE
  1896. text:    ;Top line leave alone.. it will only half show...
  1897.     dc.b    '                                        ' 
  1898.     dc.b    '                                        ' 
  1899.     dc.b    '      THIS FILE WAS LEECH FROM THE      '
  1900.     dc.b    '                                        '
  1901.     dc.b    ' _ __  _  ____     _      ___  _ _  ___ '
  1902.     dc.b    '///_/\//\/___/\   /_\    /\__\/\\\\/\__\'
  1903.     dc.b    '\\\ \ \\ \ __\/   | |   / /_ / //// /__/'
  1904.     dc.b    ' \\\ \ \\ \\ \    | |  / //// //// // \ '
  1905.     dc.b    '  \\\ \ \\ \\ \__ | | / //// ////\/_~~/ '
  1906.     dc.b    '   \~  \ \\ \\/ /\| |/ //// ////\~~\//  '
  1907.     dc.b    '    \   \/\\/\~~\/| |\/ ~/\/ ~/\/~~~/   '
  1908.     dc.b    '     ~~~~  ~  ~~~  ~  ~~~  ~~~  ~~~~    '
  1909.     dc.b    '             ( CIRCLE BBS )             '
  1910.     dc.b    '                                        '
  1911.     dc.b    '        -*- REGISTERED 2.20 -*-         '
  1912.     dc.b    ' -*- A NIGHTFALL DISTRABUTION SITE  -*- '
  1913.     dc.b    '                                        '
  1914.     dc.b    '   SYSOP  - RAISTLIN       HST"S ONLY   '
  1915.     dc.b    'CO-SYSOP  - DARK ANGEL     AMIGA ONLY   '
  1916.     dc.b    '          - THE RIPPER       0-DAY      '
  1917.     dc.b    '          - X /\ D        Warez/Counsel '
  1918.     dc.b    '                                        '
  1919.     dc.b    '            (1-813-799-4094)            '
  1920.     dc.b    '                                        '
  1921.     dc.b    '                         < LEFT BUTTON >'
  1922.     ;Top line leave alone.. it will only half show...
  1923.     dc.b    '                                        ' 
  1924.     dc.b    '        _        _                      '
  1925.         dc.b    '  ___ /|_) _____/|\________________|\|\ ' 
  1926.         dc.b    ' /   | |_ /  _________   __/___/ _ | | |'  
  1927.         dc.b    '/  \   | |  (_/  _  \/  ||  _// _  | | |'
  1928.         dc.b    '\_ |\__|_|\_  \__|__/\_ || | / _/|_|_|_|'
  1929.         dc.b    '==\|========|__|=======\||/==\/Present=='
  1930.     dc.b    '                                      Mb'
  1931.     dc.b    '                                        '
  1932.     dc.b    '           Proudly  Presents            '
  1933.     dc.b    '                                        '
  1934.     dc.b    '               XXXXXXX                  '
  1935.     dc.b    '                                        '
  1936.     dc.b    '          Released  10-xx-92            '
  1937.     dc.b    '                                        '
  1938.     dc.b    '                                        '
  1939.     dc.b    '                                        '
  1940.     dc.b    '                                        '
  1941.     dc.b    '                                        '
  1942.     dc.b    '                                        '
  1943.     dc.b    '                                        '
  1944.     dc.b    '                                        '
  1945.     dc.b    '                                        '
  1946.     dc.b    '                                        '
  1947.     dc.b    '                         < LEFT BUTTON >'
  1948.  
  1949.     ;Top line leave alone.. it will only half show...
  1950.     dc.b    '                                        ' 
  1951.     dc.b    '        _        _                      ' 
  1952.         dc.b    '  ___ /|_) _____/|\________________|\|\ ' 
  1953.         dc.b    ' /   | |_ /  _________   __/___/ _ | | |'  
  1954.         dc.b    '/  \   | |  (_/  _  \/  ||  _// _  | | |'
  1955.         dc.b    '\_ |\__|_|\_  \__|__/\_ || | / _/|_|_|_|'
  1956.         dc.b    '==\|== =====|__|=======\||/==\/Present=='
  1957.     dc.b    '                                      Mb'
  1958.     dc.b    '          -*-  MEMBER LIST -*-          '
  1959.     dc.b    '                                        '
  1960.     dc.b    '  BOOGER ---------> Coder               '
  1961.     dc.b    '  X/\D -----------> Modem Trader        '
  1962.     dc.b    '  THe RiPer ------> Another Trader      '
  1963.     dc.b    '                                        '
  1964.     dc.b    '            -*- BBS LIST -*-            '
  1965.     dc.b    '                                        '
  1966.     dc.b    ' ViCiOuS CiRcLe -- UhQ - +1-813-7994094 '
  1967.     dc.b    ' BuRiEd TrEaSuRe - UhQ - +1-813-5354253 '
  1968.     dc.b    ' MeNtAl HoSpItAl - IhQ - +39-11-6601590 '
  1969.     dc.b    ' MaDnEsS CoNfUSiOn     - +39-2-48401439 '
  1970.     dc.b    ' HiDDeN PoWer ---- WhQ - ++39-40-350660 '
  1971.     dc.b    ' GaMbLer --------- IhQ - ++39-40-630998 '
  1972.     dc.b    ' EmPiRe of PoWeR - IhQ - ++39-40-569973 '
  1973.     dc.b    ' FuTuRa ---------- IhQ - ++39-40-350580 '
  1974.     dc.b    '                         < LEFT BUTTON >'
  1975.  
  1976.     ;Top line leave alone.. it will only half show...
  1977.     dc.b    '                                        ' 
  1978.     dc.b    '                                        '
  1979.     dc.b    '                                        '
  1980.     dc.b    '                                        '
  1981.     dc.b    '                                        '
  1982.     dc.b    '                                        '
  1983.     dc.b    '                                        '
  1984.     dc.b    '                                        '
  1985.     dc.b    '                                        '
  1986.     dc.b    '      Both buttons to exit...           '
  1987.     dc.b    '                                        '
  1988.     dc.b    '                                        '
  1989.     dc.b    '                                        '
  1990.     dc.b    '                                        '
  1991.     dc.b    '                                        '
  1992.     dc.b    '                                        '
  1993.     dc.b    '                                        '
  1994.     dc.b    '                                        '
  1995.     dc.b    '                                        '
  1996.     dc.b    '                                        '
  1997.     dc.b    '                                        '
  1998.     dc.b    '                                        '
  1999.     dc.b    '                                        '
  2000.     dc.b    '                                        '
  2001.     dc.b    '                         < LEFT BUTTON >'
  2002.  
  2003.     dc.b    0    ; This signals the END...
  2004.     even
  2005.  
  2006.  
  2007. textT:    dc.b    3,'ONCE AGAIN THIS IS IT....  '
  2008.     dc.b    5,'BY NOW YOU ARE SEEING THE PLIGHT OF A PROGRAMER    '
  2009.     dc.b    4,' JUST WHEN YOU THINK YOU ARE FINISHED.....  '
  2010.     dc.b    5,' BAM!  YOU END UP TOUCHING UP THE PROGRAM EVEN MORE!! '
  2011.     dc.b    7,' THE TEXT IS IN SECTIONS OF 25 BY 40..   '
  2012.     dc.b    2,' YOU CAn ADD MORE SCREENS JUST REMBER TO MAKE IT 25 BY 40'
  2013.     dc.b    1,' SPEED 1......   '
  2014.     dc.b    2,' SPEED 2......   '
  2015.     dc.b    3,' SPEED 3......   '
  2016.     dc.b    4,' SPEED 4......   '
  2017.     dc.b    5,' SPEED 5......   '
  2018.     dc.b    6,' SPEED 6......   '
  2019.     dc.b    7,' SPEED 7......   '
  2020.     dc.b    8,' SPEED 8......   '
  2021.     dc.b    9,' SPEED 9......   '
  2022.     dc.b    10,' SPEED A......   '
  2023.     dc.b    11,' SPEED B......   '
  2024.     dc.b    12,' SPEED C......   '
  2025.     dc.b    13,' SPEED D......   '
  2026.     dc.b    14,' SPEED E......   '
  2027.     dc.b    15,' SPEED F......   '
  2028.     even
  2029.  
  2030.  
  2031.  
  2032.     section    mod,data_C
  2033. buffer:    ds.b    8000
  2034. BPIC:    incbin    "bt_disk1:demo_03/bt-3-background.raw"
  2035.     ds.b    8000
  2036. STR0:    incbin    "bt_disk1:demo_03/bt-3-stars.RAW"
  2037. font8:incbin    "bt_disk1:demo_03/bt-3-font8"
  2038. font16:    incbin    "bt_disk1:demo_03/bt-3-font16"
  2039. MT_DATA:incbin  "bt_disk1:demo_03/mod.muzik_2_go_def_by!"
  2040. ; Change the MOD above...
  2041. ; also change the paths if there is a problem loading..
  2042.     section    mode,code
  2043.  
  2044.  
  2045.