home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 4: Demo 1 / almathera_demo1.bin / sourcecode / ac3 / demo9.s next >
Text File  |  1995-03-17  |  30KB  |  1,422 lines

  1. **********************************************
  2. *         AMIGA COMPUTING DEMO No.3          *
  3. *        Written and (C) J.Ralph 1989        *
  4. *                                            *
  5. * Assemble with HISOFT DEVPAC V2.08 or later * 
  6. **********************************************      
  7.  
  8.  
  9.  
  10.  section me,code_c
  11.  opt c-,o+
  12.  
  13. nlines equ 1142-1064
  14. comp equ $ff0
  15. go:
  16.  
  17. ; bra copwobble
  18. ;  bra getline
  19.  
  20.  move.w #200,d6
  21. flp
  22.  move.w d6,-(sp)
  23.  bsr copscroll
  24.  move.w (sp)+,d6
  25.  dbf d6,flp
  26.  
  27.  
  28.  
  29.  jsr mt_init
  30.  
  31.  bset #1,$bfe001        ; kill the filter
  32.  lea gfxlib,a1
  33.  moveq #0,d0
  34.  move.l 4.w,a6
  35.  jsr -$228(a6) ; OpenLibrary
  36.  tst D0
  37.  beq error
  38.  move.l d0,gfxbase
  39.  move.l d0,A6
  40.  move.l 38(A6),oldcopper
  41.  
  42.  
  43.  
  44.  
  45.  jsr spritemaker
  46.  
  47.  move.l #sprite0,d0
  48.  move.w d0,sp0l
  49.  swap d0
  50.  move.w d0,sp0h
  51.  move.l #sprite1,d0
  52.  move.w d0,sp1l
  53.  swap d0
  54.  move.w d0,sp1h
  55.  move.l #sprite2,d0
  56.  move.w d0,sp2l
  57.  swap d0
  58.  move.w d0,sp2h
  59.  move.l #sprite3,d0
  60.  move.w d0,sp3l
  61.  swap d0
  62.  move.w d0,sp3h
  63.  move.l #sprite4,d0
  64.  move.w d0,sp4l
  65.  swap d0
  66.  move.w d0,sp4h
  67.  move.l #sprite5,d0
  68.  move.w d0,sp5l
  69.  swap d0
  70.  move.w d0,sp5h
  71.  move.l #sprite6,d0
  72.  move.w d0,sp6l
  73.  swap d0
  74.  move.w d0,sp6h
  75.  move.l #sprite7,d0
  76.  move.w d0,sp7l
  77.  swap d0
  78.  move.w d0,sp7h
  79.  
  80.  
  81.  
  82.  
  83.  move.l #scrollpath+40*15,d0
  84.  move.w d0,pt0l
  85.  swap d0
  86.  move.w d0,pt0h
  87.  swap d0
  88.  add.l #7880,d0
  89.  move.w d0,pt2l
  90.  swap d0
  91.  move.w d0,pt2h
  92.  swap d0
  93.  add.l #7880,d0
  94.  move.w d0,pt4l
  95.  swap d0
  96.  move.w d0,pt4h
  97.  
  98.  move.l #scrollplane,d0
  99.  move.w d0,pt1l
  100.  swap d0
  101.  move.w d0,pt1h
  102.  swap d0
  103.  add.l #8000,d0
  104.  move.w d0,pt3l
  105.  swap d0
  106.  move.w d0,pt3h
  107.  swap d0
  108.  add.l #8000,d0
  109.  move.w d0,pt5l
  110.  swap d0
  111.  move.w d0,pt5h
  112.  
  113.  move.l #amigalogo,d0
  114.  move.w d0,pl0l
  115.  swap d0
  116.  move.w d0,pl0h
  117.  swap d0
  118.  add.l #3680,d0
  119.  move.w d0,pl1l
  120.  swap d0
  121.  move.w d0,pl1h
  122.  swap d0
  123.  add.l #3680,d0
  124.  move.w d0,pl2l
  125.  swap d0
  126.  move.w d0,pl2h
  127.  swap d0
  128.  add.l #3680,d0
  129.  move.w d0,pl3l
  130.  swap d0
  131.  move.w d0,pl3h
  132.  swap d0
  133.  add.l #3680,d0
  134.  move.l d0,a0
  135.  lea colregs,a1
  136.  moveq #15,d0
  137.  move.w #$180,d1
  138. colreglp
  139.  move.w d1,(a1)+
  140.  addq.w #2,d1
  141.  move.w (a0)+,(a1)+
  142.  dbf d0,colreglp
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  move.w #$80,$dff096
  149.  move.l #newcopper,$dff080
  150.  move.w #$8080,$dff096
  151.  
  152.  move.w #$8010,$dff09a
  153.  move.l $6c.w,old
  154.  move.l  #new,$6c.w
  155.  
  156. WAIT: btst #6,$bfe001
  157.  bne.s wait
  158.  
  159.  move.l old,$6c.w
  160.  
  161.  
  162.  
  163.  move.w #$0080,$dff096
  164.  move.l OLDCOPPER,$dff080
  165.  move.w #$8080,$dff096
  166.  
  167.  
  168. ERROR: clr.l d0
  169.  move.w #$f,$dff096
  170.  move.w #$0,$dff0a8
  171.  move.w #$0,$dff0b8
  172.  move.w #$0,$dff0c8
  173.  move.w #$0,$dff0d8
  174.  RTS
  175.          
  176.  
  177.  
  178. new: movem.l d0-d7/a0-a6,-(sp)
  179.  and #$10,$dff01e        
  180.  beq.s out
  181.  move.w #$10,$dff09c
  182.  
  183. ; interupt routine goes in here
  184.  
  185.  
  186.  jsr mt_music
  187.  
  188.  btst #7,$bfe001
  189.  beq.s out
  190.   
  191.  moveq #29,d0
  192.  move.l #sprite4,a1
  193. s4ud:
  194.  move.b 1(a1),d1
  195.  addq.b #3,d1
  196.  move.b d1,1(a1)
  197.  add.l #24,a1
  198.  dbf d0,s4ud
  199.  
  200.  
  201.  moveq #44,d0
  202.  move.l #sprite5,a1
  203. s5ud:
  204.  move.b 1(a1),d1
  205.  addq.b #2,d1
  206.  move.b d1,1(a1)
  207.  add.l #16,a1
  208.  dbf d0,s5ud
  209.  
  210.  moveq #59,d0
  211.  move.l #sprite6,a1
  212. s6ud:
  213.  move.b 1(a1),d1
  214.  addq.b #1,d1
  215.  move.b d1,1(a1)
  216.  add.l #12,a1
  217.  dbf d0,s6ud
  218.  
  219.  
  220. subout1:
  221.  
  222.  bsr.s copscroll
  223.  bsr copwobble
  224.  bsr blitshift
  225.  bsr scroll2
  226. out: movem.l (sp)+,d0-d7/a0-a6
  227.  dc.w $4ef9
  228. old: dc.l 0
  229.  
  230. ;2c09  fffe  0182 000f 0184 0f00 0186 000f 0188 0f00 018a 000f 018c 0f00 018e 000f
  231. ; 0 1   2 3   4 5  6 7  8 9 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 
  232. ;3233  3435  3637 3839 4041 4243 4445 4647 4849 5051 5253 5455 5657 5859 6061 6263
  233.  
  234. copscroll
  235.  lea scrollclist,a0
  236.  moveq #99,d0
  237. lp1: move.w 38(a0),6(a0)
  238.  move.w 42(a0),10(a0)
  239.  move.w 46(a0),14(a0)
  240.  move.w 50(a0),18(a0)
  241.  move.w 54(a0),22(a0)
  242.  move.w 58(a0),26(a0)
  243.  move.w 62(a0),30(a0)
  244.  add.l #32,a0
  245.  dbf d0,lp1
  246.  
  247.  move.w ov,d5
  248.  
  249.  move.w #comp,d4
  250.  eor.w d5,d4
  251.  
  252.  move.w d5,ov
  253.  
  254.  cmp.b #4,ctdn
  255.  bne.s toast
  256.  bsr getline
  257. toast
  258.  subq.b #1,ctdn
  259.  bne.s rped 
  260. rr
  261.  
  262.  
  263.  move.l ctptr,a3
  264.  move.w (a3)+,ov
  265.  bne.s rpok
  266.  move.l #coltab,ctptr
  267.  bra.s rr
  268. rpok
  269.  bchg #0,swap
  270.  bne.s ffgh
  271.  eor.w #comp,ov
  272. ffgh
  273.  
  274.  move.l a3,ctptr
  275.  move.b #4,ctdn
  276.  
  277. rped
  278.  move.w d5,6(a0)
  279.  move.w d4,10(a0)
  280.  move.w d5,14(a0)
  281.  move.w d4,18(a0)
  282.  move.w d5,22(a0)
  283.  move.w d4,26(a0)
  284.  move.w d5,30(a0)
  285.  
  286. ; get next line of scroll
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  btst #7,charbyte
  295.  beq.s .next1
  296.  move.w twod,6(a0)
  297. .next1
  298.  btst #6,charbyte
  299.  beq.s .next2
  300.  move.w twod,10(a0)
  301. .next2
  302.  btst #5,charbyte
  303.  beq.s .next3
  304.  move.w twod,14(a0)
  305. .next3
  306.  btst #4,charbyte
  307.  beq.s .next4
  308.  move.w twod,18(a0)
  309. .next4
  310.  btst #3,charbyte
  311.  beq.s .next5
  312.  move.w twod,22(a0)
  313. .next5
  314.  btst #2,charbyte
  315.  beq.s .next6
  316.  move.w twod,26(a0)
  317. .next6
  318.  btst #1,charbyte
  319.  beq.s .next7
  320.  move.w twod,30(a0)
  321. .next7
  322.  
  323. ; eor.w #$f00,twod
  324.  
  325.  rts
  326.  
  327.  
  328. getline:
  329.  
  330.  addq.w #$2,twod
  331.  subq.b #1,charctd
  332.  beq.s needachar
  333.  move.l charaddr,a5
  334.  move.b (a5)+,charbyte
  335.  move.l a5,charaddr
  336.  rts
  337. needachar
  338.  move.w #$110,twod
  339.  moveq #0,d2            ; faster than clr.l d2
  340.  move.l scrollptr,a5
  341.  move.b (a5)+,d2
  342.  bne.s notfin
  343.  move.l #scroller,scrollptr
  344.  bra.s needachar
  345. notfin
  346.  move.l a5,scrollptr
  347.  sub.b #32,d2
  348.  mulu #8,d2
  349.  lea fontdata,a5
  350.  add.l d2,a5
  351.  move.l a5,charaddr
  352.  move.b #0,charbyte
  353.  move.b #8,charctd
  354.  rts
  355.  
  356.  
  357.  
  358. copwobble
  359.  lea woblogoclist,a0
  360.  moveq #nlines,d0
  361. cwloop 
  362.  move.b 19(a0),7(a0)
  363.  add.l #12,a0
  364.  dbf d0,cwloop
  365. sphagettiloop
  366.  move.l wobptr,a1
  367.  move.b (a1)+,d0
  368.  cmp.b #$fe,d0
  369.  bne.s valokfor
  370.  move.l #woblist,wobptr
  371.  bra.s sphagettiloop
  372. valokfor
  373.  move.l a1,wobptr
  374.  move.b d0,7(a0)
  375.  rts
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382. gfxlib: dc.b "graphics.library",0 ; Yeuch! Libraries!!!!!
  383.  EVEN
  384. gfxbase: dc.l 0
  385.  
  386.  
  387.  
  388.  
  389.  
  390. spritemaker:
  391.  move.l #sprite4,a0
  392.  moveq #29,d0
  393.  move.l #$30003500,d1
  394. sp4lp:
  395.  move.l d1,(a0)+
  396.  move.l #$8700,(a0)+
  397.  move.l #$100ef80,(a0)+
  398.  move.l #$7fc0,(a0)+
  399.  move.l #$1800ee00,(a0)+
  400.  move.l #$8700,(a0)+
  401.  add.l #$06000600,d1
  402.  swap d1
  403.  move.b $dff007,d2
  404.  eor.b d2,d1
  405.  swap d1
  406.  
  407.  move.l #2000,d3
  408. lcap:
  409.  
  410.  move.w $dff006,$dff180
  411.  dbf d3,lcap
  412.  
  413.  dbf d0,sp4lp
  414.  
  415.  move.l #sprite5,a0
  416.  moveq #44,d0
  417.  move.l #$30003300,d1
  418. sp5lp:
  419.  move.l d1,(a0)+
  420.  move.l #$8009000,(a0)+
  421.  move.l #$7c00,(a0)+
  422.  move.l #$9800,(a0)+
  423.  
  424.  
  425.  add.l #$04000400,d1
  426.  swap d1
  427.  move.b $dff007,d2
  428.  eor.b d2,d1
  429.  swap d1
  430.  move.l #2000,d3
  431. lcap2: 
  432.  move.w $dff006,$dff180
  433.  dbf d3,lcap2
  434.  
  435.  
  436.  dbf d0,sp5lp
  437.  
  438. ; dc.w $1000,$A000,$0000,$7800
  439.  
  440.  
  441.  
  442.  move.l #sprite6,a0
  443.  moveq #59,d0
  444.  move.l #$30003200,d1
  445. sp6lp:
  446.  move.l d1,(a0)+
  447.  move.l #$1000a000,(a0)+
  448.  move.l #$7800,(a0)+
  449.  
  450.  
  451.  
  452.  add.l #$03000300,d1
  453.  swap d1
  454.  move.b $dff007,d2
  455.  eor.b d2,d1
  456.  swap d1
  457.  move.l #2000,d3
  458. lcap3:
  459.  
  460.  move.w $dff006,$dff180
  461.  dbf d3,lcap3
  462.  dbf d0,sp6lp
  463.  
  464.  rts
  465.  
  466.  
  467. charprint:
  468. ; called with d0 containing ascii code
  469.  lea bigfontdata,a0
  470.  sub.b #32,d0
  471.  cmp.b #40,d0
  472.  bge.s plus40
  473.  cmp.b #20,d0
  474.  bge.s plus20
  475. plus0
  476.  add.l d0,d0
  477.  add.l d0,a0
  478.  moveq #23,d0
  479.  lea scrollplane+145*42-2,a1
  480.  move.l a1,a3
  481.  move.l a0,a2
  482.  add.l #8000,a3
  483.  add.l #2840,a2
  484.  
  485. cpl1
  486.  move.w (a0),(a1)
  487.  add.l #40,a0
  488.  add.l #42,a1
  489.  move.w (a2),(a3)
  490.  add.l #40,a2
  491.  add.l #42,a3
  492.  dbf d0,cpl1
  493.  rts
  494.  
  495.  
  496.  
  497.  
  498. plus20
  499.  add.l #40*23,a0
  500.  bra.s plus0
  501.  
  502. plus40
  503.  add.l #80*23,a0
  504.  bra.s plus0
  505.  
  506.  
  507. blitwait
  508.  btst #6,$dff002
  509.  bne.s blitwait
  510.  rts
  511.  
  512. blitshift
  513.  lea scrollplane+145*42,a0
  514.  lea scrollplane+2+145*42,a1
  515.  bsr.s blitwait
  516.  move.l a0,$dff054
  517.  move.l a1,$dff050
  518.  move.l #-1,$dff044
  519.  clr.l $dff064
  520.  move.w #%1101100111110000,$dff040
  521.  clr.w $dff042
  522.  move.w #%101000010111,$dff058
  523.  lea scrollplane+8000+145*42,a0
  524.  lea scrollplane+8002+145*42,a1
  525.  bsr.s blitwait
  526.  move.l a0,$dff054
  527.  move.l a1,$dff050
  528.  move.l #-1,$dff044
  529.  clr.l $dff064
  530.  move.w #%1101100111110000,$dff040
  531.  clr.w $dff042
  532.  move.w #%101000010111,$dff058
  533.  
  534.  bsr blitwait
  535.  rts
  536.  
  537.  
  538. scroll2
  539.  
  540.  move.b scr2ctd,d0
  541.  subq.b #1,d0
  542.  beq.s newlet
  543.  move.b d0,scr2ctd
  544.  rts
  545. newlet
  546.  move.b #5,scr2ctd
  547. wwrap
  548.  moveq #0,d0
  549.  move.l scr2ptr,a0
  550.  move.b (a0)+,d0
  551.  bne.s nowrap
  552.  move.l #scrolly2,scr2ptr
  553.  bra.s wwrap
  554. nowrap
  555.  move.l a0,scr2ptr
  556.  bra charprint
  557.  
  558.  
  559. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  560. ;­   NoisetrackerV1.0 replayroutine   ­
  561. ;­ Mahoney & Kaktus - HALLONSOFT 1989 ­
  562. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  563.  
  564.  
  565.  
  566. mt_init:lea    mt_data,a0
  567.     move.l    a0,a1
  568.     add.l    #$3b8,a1
  569.     moveq    #$7f,d0
  570.     moveq    #0,d1
  571. mt_loop:move.l    d1,d2
  572.     subq.w    #1,d0
  573. mt_lop2:move.b    (a1)+,d1
  574.     cmp.b    d2,d1
  575.     bgt.s    mt_loop
  576.     dbf    d0,mt_lop2
  577.     addq.b    #1,d2
  578.  
  579.     lea    mt_samplestarts(pc),a1
  580.     asl.l    #8,d2
  581.     asl.l    #2,d2
  582.     add.l    #$43c,d2
  583.     add.l    a0,d2
  584.     move.l    d2,a2
  585.     moveq    #$1e,d0
  586. mt_lop3:clr.l    (a2)
  587.     move.l    a2,(a1)+
  588.     moveq    #0,d1
  589.     move.w    42(a0),d1
  590.     asl.l    #1,d1
  591.     add.l    d1,a2
  592.     add.l    #$1e,a0
  593.     dbf    d0,mt_lop3
  594.  
  595.     or.b    #$2,$bfe001
  596.     move.b    #$6,mt_speed
  597.     clr.w    $dff0a8
  598.     clr.w    $dff0b8
  599.     clr.w    $dff0c8
  600.     clr.w    $dff0d8
  601.     clr.b    mt_songpos
  602.     clr.b    mt_counter
  603.     clr.w    mt_pattpos
  604.     rts
  605.  
  606. mt_end:    clr.w    $dff0a8
  607.     clr.w    $dff0b8
  608.     clr.w    $dff0c8
  609.     clr.w    $dff0d8
  610.     move.w    #$f,$dff096
  611.     rts
  612.  
  613. mt_music:
  614.     movem.l    d0-d4/a0-a3/a5-a6,-(a7)
  615.     lea    mt_data,a0
  616.     addq.b    #$1,mt_counter
  617.     move.b    mt_counter,D0
  618.     cmp.b    mt_speed,D0
  619.     blt.s    mt_nonew
  620.     clr.b    mt_counter
  621.     bra    mt_getnew
  622.  
  623. mt_nonew:
  624.     lea    mt_voice1(pc),a6
  625.     lea    $dff0a0,a5
  626.     bsr    mt_checkcom
  627.     lea    mt_voice2(pc),a6
  628.     lea    $dff0b0,a5
  629.     bsr    mt_checkcom
  630.     lea    mt_voice3(pc),a6
  631.     lea    $dff0c0,a5
  632.     bsr    mt_checkcom
  633.     lea    mt_voice4(pc),a6
  634.     lea    $dff0d0,a5
  635.     bsr    mt_checkcom
  636.     bra    mt_endr
  637.  
  638. mt_arpeggio:
  639.     moveq    #0,d0
  640.     move.b    mt_counter,d0
  641.     divs    #$3,d0
  642.     swap    d0
  643.     cmp.w    #$0,d0
  644.     beq.s    mt_arp2
  645.     cmp.w    #$2,d0
  646.     beq.s    mt_arp1
  647.  
  648.     moveq    #0,d0
  649.     move.b    $3(a6),d0
  650.     lsr.b    #4,d0
  651.     bra.s    mt_arp3
  652. mt_arp1:moveq    #0,d0
  653.     move.b    $3(a6),d0
  654.     and.b    #$f,d0
  655.     bra.s    mt_arp3
  656. mt_arp2:move.w    $10(a6),d2
  657.     bra.s    mt_arp4
  658. mt_arp3:asl.w    #1,d0
  659.     moveq    #0,d1
  660.     move.w    $10(a6),d1
  661.     lea    mt_periods(pc),a0
  662.     moveq    #$24,d7
  663. mt_arploop:
  664.     move.w    (a0,d0.w),d2
  665.     cmp.w    (a0),d1
  666.     bge.s    mt_arp4
  667.     addq.l    #2,a0
  668.     dbf    d7,mt_arploop
  669.     rts
  670. mt_arp4:move.w    d2,$6(a5)
  671.     rts
  672.  
  673. mt_getnew:
  674.     lea    mt_data,a0
  675.     move.l    a0,a3
  676.     move.l    a0,a2
  677.     add.l    #$c,a3
  678.     add.l    #$3b8,a2
  679.     add.l    #$43c,a0
  680.  
  681.     moveq    #0,d0
  682.     move.l    d0,d1
  683.     move.b    mt_songpos,d0
  684.     move.b    (a2,d0.w),d1
  685.     asl.l    #8,d1
  686.     asl.l    #2,d1
  687.     add.w    mt_pattpos,d1
  688.     clr.w    mt_dmacon
  689.  
  690.     lea    $dff0a0,a5
  691.     lea    mt_voice1(pc),a6
  692.     bsr.s    mt_playvoice
  693.     lea    $dff0b0,a5
  694.     lea    mt_voice2(pc),a6
  695.     bsr.s    mt_playvoice
  696.     lea    $dff0c0,a5
  697.     lea    mt_voice3(pc),a6
  698.     bsr.s    mt_playvoice
  699.     lea    $dff0d0,a5
  700.     lea    mt_voice4(pc),a6
  701.     bsr.s    mt_playvoice
  702.     bra    mt_setdma
  703.  
  704. mt_playvoice:
  705.     move.l    (a0,d1.l),(a6)
  706.     addq.l    #4,d1
  707.     moveq    #0,d2
  708.     move.b    $2(a6),d2
  709.     and.b    #$f0,d2
  710.     lsr.b    #4,d2
  711.     move.b    (a6),d0
  712.     and.b    #$f0,d0
  713.     or.b    d0,d2
  714.     tst.b    d2
  715.     beq.s    mt_setregs
  716.     moveq    #0,d3
  717.     lea    mt_samplestarts(pc),a1
  718.     move.l    d2,d4
  719.     subq.l    #$1,d2
  720.     asl.l    #2,d2
  721.     mulu    #$1e,d4
  722.     move.l    (a1,d2.l),$4(a6)
  723.     move.w    (a3,d4.l),$8(a6)
  724.     move.w    $2(a3,d4.l),$12(a6)
  725.     move.w    $4(a3,d4.l),d3
  726.     tst.w    d3
  727.     beq.s    mt_noloop
  728.     move.l    $4(a6),d2
  729.     asl.w    #1,d3
  730.     add.l    d3,d2
  731.     move.l    d2,$a(a6)
  732.     move.w    $4(a3,d4.l),d0
  733.     add.w    $6(a3,d4.l),d0
  734.     move.w    d0,8(a6)
  735.     move.w    $6(a3,d4.l),$e(a6)
  736.     move.w    $12(a6),$8(a5)
  737.     bra.s    mt_setregs
  738. mt_noloop:
  739.     move.l    $4(a6),d2
  740.     add.l    d3,d2
  741.     move.l    d2,$a(a6)
  742.     move.w    $6(a3,d4.l),$e(a6)
  743.     move.w    $12(a6),$8(a5)
  744. mt_setregs:
  745.     move.w    (a6),d0
  746.     and.w    #$fff,d0
  747.     beq    mt_checkcom2
  748.     move.b    $2(a6),d0
  749.     and.b    #$F,d0
  750.     cmp.b    #$3,d0
  751.     bne.s    mt_setperiod
  752.     bsr    mt_setmyport
  753.     bra    mt_checkcom2
  754. mt_setperiod:
  755.     move.w    (a6),$10(a6)
  756.     and.w    #$fff,$10(a6)
  757.     move.w    $14(a6),d0
  758.     move.w    d0,$dff096
  759.     clr.b    $1b(a6)
  760.  
  761.     move.l    $4(a6),(a5)
  762.     move.w    $8(a6),$4(a5)
  763.     move.w    $10(a6),d0
  764.     and.w    #$fff,d0
  765.     move.w    d0,$6(a5)
  766.     move.w    $14(a6),d0
  767.     or.w    d0,mt_dmacon
  768.     bra    mt_checkcom2
  769.  
  770. mt_setdma:
  771.     move.w    #$12c,d0
  772. mt_wait:dbf    d0,mt_wait
  773.     move.w    mt_dmacon,d0
  774.     or.w    #$8000,d0
  775.     move.w    d0,$dff096
  776.     move.w    #$12c,d0
  777. mt_wai2:dbf    d0,mt_wai2
  778.     lea    $dff000,a5
  779.     lea    mt_voice4(pc),a6
  780.     move.l    $a(a6),$d0(a5)
  781.     move.w    $e(a6),$d4(a5)
  782.     lea    mt_voice3(pc),a6
  783.     move.l    $a(a6),$c0(a5)
  784.     move.w    $e(a6),$c4(a5)
  785.     lea    mt_voice2(pc),a6
  786.     move.l    $a(a6),$b0(a5)
  787.     move.w    $e(a6),$b4(a5)
  788.     lea    mt_voice1(pc),a6
  789.     move.l    $a(a6),$a0(a5)
  790.     move.w    $e(a6),$a4(a5)
  791.  
  792.     add.w    #$10,mt_pattpos
  793.     cmp.w    #$400,mt_pattpos
  794.     bne.s    mt_endr
  795. mt_nex:    clr.w    mt_pattpos
  796.     clr.b    mt_break
  797.     addq.b    #1,mt_songpos
  798.     and.b    #$7f,mt_songpos
  799.     move.b    mt_songpos,d1
  800.     cmp.b    mt_data+$3b6,d1
  801.     bne.s    mt_endr
  802.     clr.b    mt_songpos
  803. mt_endr:tst.b    mt_break
  804.     bne.s    mt_nex
  805.     movem.l    (a7)+,d0-d4/a0-a3/a5-a6
  806.     rts
  807.  
  808. mt_setmyport:
  809.     move.w    (a6),d2
  810.     and.w    #$fff,d2
  811.     move.w    d2,$18(a6)
  812.     move.w    $10(a6),d0
  813.     clr.b    $16(a6)
  814.     cmp.w    d0,d2
  815.     beq.s    mt_clrport
  816.     bge.s    mt_rt
  817.     move.b    #$1,$16(a6)
  818.     rts
  819. mt_clrport:
  820.     clr.w    $18(a6)
  821. mt_rt:    rts
  822.  
  823. mt_myport:
  824.     move.b    $3(a6),d0
  825.     beq.s    mt_myslide
  826.     move.b    d0,$17(a6)
  827.     clr.b    $3(a6)
  828. mt_myslide:
  829.     tst.w    $18(a6)
  830.     beq.s    mt_rt
  831.     moveq    #0,d0
  832.     move.b    $17(a6),d0
  833.     tst.b    $16(a6)
  834.     bne.s    mt_mysub
  835.     add.w    d0,$10(a6)
  836.     move.w    $18(a6),d0
  837.     cmp.w    $10(a6),d0
  838.     bgt.s    mt_myok
  839.     move.w    $18(a6),$10(a6)
  840.     clr.w    $18(a6)
  841. mt_myok:move.w    $10(a6),$6(a5)
  842.     rts
  843. mt_mysub:
  844.     sub.w    d0,$10(a6)
  845.     move.w    $18(a6),d0
  846.     cmp.w    $10(a6),d0
  847.     blt.s    mt_myok
  848.     move.w    $18(a6),$10(a6)
  849.     clr.w    $18(a6)
  850.     move.w    $10(a6),$6(a5)
  851.     rts
  852.  
  853. mt_vib:    move.b    $3(a6),d0
  854.     beq.s    mt_vi
  855.     move.b    d0,$1a(a6)
  856.  
  857. mt_vi:    move.b    $1b(a6),d0
  858.     lea    mt_sin(pc),a4
  859.     lsr.w    #$2,d0
  860.     and.w    #$1f,d0
  861.     moveq    #0,d2
  862.     move.b    (a4,d0.w),d2
  863.     move.b    $1a(a6),d0
  864.     and.w    #$f,d0
  865.     mulu    d0,d2
  866.     lsr.w    #$6,d2
  867.     move.w    $10(a6),d0
  868.     tst.b    $1b(a6)
  869.     bmi.s    mt_vibmin
  870.     add.w    d2,d0
  871.     bra.s    mt_vib2
  872. mt_vibmin:
  873.     sub.w    d2,d0
  874. mt_vib2:move.w    d0,$6(a5)
  875.     move.b    $1a(a6),d0
  876.     lsr.w    #$2,d0
  877.     and.w    #$3c,d0
  878.     add.b    d0,$1b(a6)
  879.     rts
  880.  
  881. mt_nop:    move.w    $10(a6),$6(a5)
  882.     rts
  883.  
  884. mt_checkcom:
  885.     move.w    $2(a6),d0
  886.     and.w    #$fff,d0
  887.     beq.s    mt_nop
  888.     move.b    $2(a6),d0
  889.     and.b    #$f,d0
  890.     tst.b    d0
  891.     beq    mt_arpeggio
  892.     cmp.b    #$1,d0
  893.     beq.s    mt_portup
  894.     cmp.b    #$2,d0
  895.     beq    mt_portdown
  896.     cmp.b    #$3,d0
  897.     beq    mt_myport
  898.     cmp.b    #$4,d0
  899.     beq    mt_vib
  900.     move.w    $10(a6),$6(a5)
  901.     cmp.b    #$a,d0
  902.     beq.s    mt_volslide
  903.     rts
  904.  
  905. mt_volslide:
  906.     moveq    #0,d0
  907.     move.b    $3(a6),d0
  908.     lsr.b    #4,d0
  909.     tst.b    d0
  910.     beq.s    mt_voldown
  911.     add.w    d0,$12(a6)
  912.     cmp.w    #$40,$12(a6)
  913.     bmi.s    mt_vol2
  914.     move.w    #$40,$12(a6)
  915. mt_vol2:move.w    $12(a6),$8(a5)
  916.     rts
  917.  
  918. mt_voldown:
  919.     moveq    #0,d0
  920.     move.b    $3(a6),d0
  921.     and.b    #$f,d0
  922.     sub.w    d0,$12(a6)
  923.     bpl.s    mt_vol3
  924.     clr.w    $12(a6)
  925. mt_vol3:move.w    $12(a6),$8(a5)
  926.     rts
  927.  
  928. mt_portup:
  929.     moveq    #0,d0
  930.     move.b    $3(a6),d0
  931.     sub.w    d0,$10(a6)
  932.     move.w    $10(a6),d0
  933.     and.w    #$fff,d0
  934.     cmp.w    #$71,d0
  935.     bpl.s    mt_por2
  936.     and.w    #$f000,$10(a6)
  937.     or.w    #$71,$10(a6)
  938. mt_por2:move.w    $10(a6),d0
  939.     and.w    #$fff,d0
  940.     move.w    d0,$6(a5)
  941.     rts
  942.  
  943. mt_portdown:
  944.     clr.w    d0
  945.     move.b    $3(a6),d0
  946.     add.w    d0,$10(a6)
  947.     move.w    $10(a6),d0
  948.     and.w    #$fff,d0
  949.     cmp.w    #$358,d0
  950.     bmi.s    mt_por3
  951.     and.w    #$f000,$10(a6)
  952.     or.w    #$358,$10(a6)
  953. mt_por3:move.w    $10(a6),d0
  954.     and.w    #$fff,d0
  955.     move.w    d0,$6(a5)
  956.     rts
  957.  
  958. mt_checkcom2:
  959.     move.b    $2(a6),d0
  960.     and.b    #$f,d0
  961.     cmp.b    #$e,d0
  962.     beq.s    mt_setfilt
  963.     cmp.b    #$d,d0
  964.     beq.s    mt_pattbreak
  965.     cmp.b    #$b,d0
  966.     beq.s    mt_posjmp
  967.     cmp.b    #$c,d0
  968.     beq.s    mt_setvol
  969.     cmp.b    #$f,d0
  970.     beq.s    mt_setspeed
  971.     rts
  972.  
  973. mt_setfilt:
  974.     rts
  975. mt_pattbreak:
  976.     not.b    mt_break
  977.     rts
  978. mt_posjmp:
  979.     move.b    $3(a6),d0
  980.     subq.b    #$1,d0
  981.     move.b    d0,mt_songpos
  982.     not.b    mt_break
  983.     rts
  984. mt_setvol:
  985.     cmp.b    #$40,$3(a6)
  986.     ble.s    mt_vol4
  987.     move.b    #$40,$3(a6)
  988. mt_vol4:move.b    $3(a6),$8(a5)
  989.     rts
  990. mt_setspeed:
  991.     move.b    $3(a6),d0
  992.     and.w    #$1f,d0
  993.     beq.s    mt_rts2
  994.     clr.b    mt_counter
  995.     move.b    d0,mt_speed
  996. mt_rts2:rts
  997.  
  998.  
  999.  
  1000.  
  1001. mt_sin:
  1002.  dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  1003.  dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  1004.  
  1005. mt_periods:
  1006.  dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
  1007.  dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
  1008.  dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
  1009.  dc.w $007f,$0078,$0071,$0000,$0000
  1010.  
  1011. mt_speed:    dc.b    $6
  1012. mt_songpos:    dc.b    $0
  1013. mt_pattpos:    dc.w    $0
  1014. mt_counter:    dc.b    $0
  1015.  
  1016. mt_break:    dc.b    $0
  1017. mt_dmacon:    dc.w    $0
  1018. mt_samplestarts:dcb.l    $1f,0
  1019. mt_voice1:    dcb.w    10,0
  1020.         dc.w    $1
  1021.         dcb.w    3,0
  1022. mt_voice2:    dcb.w    10,0
  1023.         dc.w    $2
  1024.         dcb.w    3,0
  1025. mt_voice3:    dcb.w    10,0
  1026.         dc.w    $4
  1027.         dcb.w    3,0
  1028. mt_voice4:    dcb.w    10,0
  1029.         dc.w    $8
  1030.         dcb.w    3,0
  1031.  
  1032.  
  1033. mt_data incbin "df1:mod.heavyzing"
  1034.  
  1035.  
  1036. ov dc.w 0
  1037. twod dc.w $FFF
  1038. ctptr dc.l coltab
  1039. scrollptr dc.l scroller
  1040. scr2ptr dc.l scrolly2
  1041. charaddr dc.l 0
  1042. charctd dc.b 3
  1043. ctdn: dc.b 3
  1044. scr2ctd dc.b 4
  1045. swap: dc.b 0
  1046. charbyte: dc.b %0000
  1047.  
  1048.  even
  1049.  
  1050.  
  1051. scroller dc.b "                       AMIGA COMPUTING      PRESENTS THE HEAVY DEMO      "
  1052.     dc.b "CODED BY JOLYON RALPH OF STATYX SOFTWARE     MUSIC BY STEVE HOGG     AMIGA LOGO BY GEORG DROSCHL FROM AUSTRIA (THANKS MATE).    "
  1053.     dc.b " THIS DEMO IS CALLED HEAVY DUE TO THE HEAVY TUNE WRITTEN BY MY FRIEND STEVE. IT WAS COMPOSED ON SOUNDTRACKER.  "
  1054.     DC.B " WELL, NOW FOR SOME TECHY INFO: THIS SCROLL USES HEAPS OF COPPER LIST. IT'S BASICALLY A 8 COLOUR PICTURE WITH COLOUR CYCLING - DIFFERNENT "
  1055.     DC.B "COLOURS CYCLED ON EACH SCANLINE! NEAT EH?    CREDIT MUST BE GIVEN TO THE ORIGINAL DISCOVERERS OF THIS TECHNIQUE - MAHONEY AND KAKTUS FROM SWEDEN. "
  1056.     DC.B " ONE OF THEM'S 16, THE OTHERS ONLY 14!!!    MAKES YOU SICK DOESN'T IT?     OH WELL, READ THE SCROLL BELOW!  ",0
  1057.  
  1058. scrolly2 dc.b " AMIGA COMPUTING PRESENTS THE HEAVY DEMO - CODED BY JOLYON RALPH, MUSIC BY STEVE HOGG AND AMIGA COMPUTING LOGO PAINTED "
  1059.        DC.B "BY GEORG DROSCHL - ONE OF OUR GOOD AUSTRIAN FRIENDS.        "
  1060.       DC.B "MANY THANKS TO DEREK, ADAM AND JOBY OF CREATIVE THOUGHTS - YES I DID PINCH YOUR COLOUR DATA - I HOPE YOU DON'T MIND! "
  1061.     DC.B "   AND PERSONAL HELLO'S GO OUT TO    RUSS, JIM, RICHARD, KEVIN, COLIN, JOLYON M. - YES THERE IS ANOTHER ONE!!!! -    SORRY, "
  1062.     DC.B "I SHOULD HAVE MENTIONED ALL OF YOU, BUT THAT WOULD BE PRETTY BORING, JUST A LONG LIST OF NAMES.  SO TO KEEP A FEW PROMISES I'VE MADE, HERE'S "
  1063.  
  1064.     DC.B "A FEW CRYPTIC MESSAGES.   TO MY SISTER. ONCE AGAIN, POLAND ? ? ?    "
  1065.     DC.B "TO DEL - LOOK NO OPTIMISATIONS THIS TIME!!!!   TO GEORG AND THOMAS FROM AUSTRIA - SEE YOU AGAIN SOON. "
  1066.      DC.B " WELL CHRISTMAS TIME IS COMING FAST, SO WATCH OUT FOR A SPECIAL YULETIDE DEMO NEXT MONTH! "   
  1067.  
  1068.  DC.B "     NOTE: WE ARE ALL AVAILABLE FOR COMMERCIAL PROJECTS ON THE AMIGA - IF INTERESTED PLEASE SEND A JIFFY BAG STUFFED FULL OF FIVERS TO "
  1069.       DC.B "STATYX SOFTWARE, PO BOX 241, COULSDON, SURREY, CR3, 2EZ    "
  1070.        DC.B "LET US KNOW WHAT YOU REQUIRE, AND WE'LL TELL YOU WHAT WE REQUIRE IN RETURN!!!!                            "
  1071.      
  1072.     DC.B 0
  1073.  
  1074. OLDCOPPER: DC.l 0
  1075. NEWCOPPER:
  1076.  dc.w $100,$5600,$102,$0,$104,$40,$108,0,$10a,2
  1077.  dc.w $92,$38,$94,$d0,$8e,$2c81,$90,$2cc1
  1078.  dc.w $1a2,$fff,$1a4,$aaa,$1a6,$666
  1079.  dc.w $1aa,$fff,$1ac,$aaa,$1ae,$666
  1080.  dc.w $1b2,$fff,$1b4,$aaa,$1b6,$666
  1081.  dc.w $1ba,$fff,$1bc,$aaa,$1be,$666
  1082.  dc.w $192,$444,$194,$777,$196,$ccc,$180,0
  1083.  dc.w    $120
  1084. sp0h: dc.w    0,$122
  1085. sp0l: dc.w    0,$124
  1086. sp1h: dc.w    0,$126
  1087. sp1l: dc.w    0,$128
  1088. sp2h: dc.w    0,$12a
  1089. sp2l: dc.w    0,$12c
  1090. sp3h: dc.w    0,$12e
  1091. sp3l: dc.w    0,$130
  1092. sp4h: dc.w    0,$132
  1093. sp4l: dc.w    0,$134
  1094. sp5h: dc.w    0,$136
  1095. sp5l: dc.w    0,$138
  1096. sp6h: dc.w    0,$13a
  1097. sp6l: dc.w    0,$13c
  1098. sp7h: dc.w    0,$13e
  1099. sp7l: dc.w    0,$e0
  1100. pt0h: dc.w    0,$e2
  1101. pt0l: dc.w    0,$e4
  1102. pt1h: dc.w    0,$e6
  1103. pt1l: dc.w    0,$e8
  1104. pt2h: dc.w    0,$ea
  1105. pt2l: dc.w    0,$ec
  1106. pt3h: dc.w    0,$ee
  1107. pt3l: dc.w    0,$f0
  1108. pt4h: dc.w    0,$f2
  1109. pt4l: dc.w    0,$f4
  1110. pt5h: dc.w    0,$f6
  1111. pt5l: dc.w    0
  1112.  
  1113.  
  1114.  
  1115.  
  1116. scrollclist
  1117.  dc.w $2c09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1118.  dc.w $3009,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1119.  dc.w $3409,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1120.  dc.w $3809,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1121.  dc.w $3b09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1122.  dc.w $3e09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1123.  dc.w $4109,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1124.  dc.w $4409,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1125.  dc.w $4709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1126.  dc.w $4a09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1127.  dc.w $4d09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1128.  dc.w $4f09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1129.  dc.w $5109,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1130.  dc.w $5309,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1131.  dc.w $5509,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1132.  dc.w $5709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1133.  dc.w $5909,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1134.  dc.w $5b09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1135.  dc.w $5d09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1136.  dc.w $5f09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1137.  dc.w $6109,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1138.  dc.w $6309,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1139.  dc.w $6509,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1140.  dc.w $6609,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1141.  dc.w $6709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1142.  dc.w $6809,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1143.  dc.w $6909,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1144.  dc.w $6a09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1145.  dc.w $6b09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1146.  dc.w $6c09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1147.  dc.w $6d09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1148.  dc.w $6e09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1149.  dc.w $6f09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1150.  dc.w $7009,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1151.  dc.w $7109,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1152.  dc.w $7209,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1153.  dc.w $7309,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1154.  dc.w $7409,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1155.  dc.w $7509,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1156.  dc.w $7609,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1157.  dc.w $7709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1158.  dc.w $7809,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1159.  dc.w $7909,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1160.  dc.w $7a09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1161.  dc.w $7b09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1162.  dc.w $7c09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1163.  dc.w $7d09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1164.  dc.w $7e09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1165.  dc.w $7f09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1166.  dc.w $8009,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1167.  dc.w $8109,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1168.  dc.w $8209,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1169.  dc.w $8309,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1170.  dc.w $8409,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1171.  dc.w $8509,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1172.  dc.w $8609,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1173.  dc.w $8709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1174.  dc.w $8809,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1175.  dc.w $8909,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1176.  dc.w $8a09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1177.  dc.w $8b09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1178.  dc.w $8c09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1179.  dc.w $8d09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1180.  dc.w $8e09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1181.  dc.w $8f09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1182.  dc.w $9009,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1183.  dc.w $9109,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1184.  dc.w $9209,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1185.  dc.w $9309,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1186.  dc.w $9409,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1187.  dc.w $9509,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1188.  dc.w $9609,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1189.  dc.w $9709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1190.  dc.w $9709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1191.  dc.w $9709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1192.  dc.w $9809,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1193.  dc.w $9909,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1194.  dc.w $9a09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1195.  dc.w $9b09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1196.  dc.w $9c09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1197.  dc.w $9d09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1198.  dc.w $9e09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1199.  dc.w $a009,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1200.  dc.w $a209,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1201.  dc.w $a409,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1202.  dc.w $a609,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1203.  dc.w $a809,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1204.  dc.w $aa09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1205.  dc.w $ac09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1206.  dc.w $ae09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1207.  dc.w $b009,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1208.  dc.w $b209,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1209.  dc.w $b409,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1210.  dc.w $b709,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1211.  dc.w $ba09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1212.  dc.w $bd09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1213.  dc.w $c009,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1214.  dc.w $c309,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1215.  dc.w $c609,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1216.  dc.w $ca09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1217.  dc.w $ce09,$fffe,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1218.  
  1219.  
  1220.  
  1221.   dc.w $d209,$fffe,$100,$4200,$10a,0
  1222.   dc.w $e0
  1223. pl0h: dc.w    0,$e2
  1224. pl0l: dc.w    0,$e4
  1225. pl1h: dc.w    0,$e6
  1226. pl1l: dc.w    0,$e8
  1227. pl2h: dc.w    0,$ea
  1228. pl2l: dc.w    0,$ec
  1229. pl3h: dc.w    0,$ee
  1230. pl3l: dc.w    0
  1231. colregs dcb.w 32,0
  1232.  
  1233.  
  1234. woblogoclist
  1235.  dc.w $d309,$fffe,$102,$88,$180,1
  1236.  dc.w $d409,$fffe,$102,$88,$180,2
  1237.  dc.w $d509,$fffe,$102,$88,$180,3
  1238.  dc.w $d609,$fffe,$102,$88,$180,4
  1239.  dc.w $d709,$fffe,$102,$88,$180,5
  1240.  dc.w $d809,$fffe,$102,$88,$180,6
  1241.  dc.w $d909,$fffe,$102,$88,$180,5
  1242.  dc.w $da09,$fffe,$102,$88,$180,4
  1243.  dc.w $db09,$fffe,$102,$88,$180,3
  1244.  dc.w $dc09,$fffe,$102,$88,$180,2
  1245.  dc.w $dd09,$fffe,$102,$88,$180,1
  1246.  dc.w $de09,$fffe,$102,$88,$180,0
  1247.  dc.w $df09,$fffe,$102,$88,$180,0
  1248.  dc.w $e009,$fffe,$102,$88,$180,0
  1249.  dc.w $e109,$fffe,$102,$88,$180,0
  1250.  dc.w $e209,$fffe,$102,$88,$180,$100
  1251.  dc.w $e309,$fffe,$102,$88,$180,$100
  1252.  dc.w $e409,$fffe,$102,$88,$180,$200
  1253.  dc.w $e509,$fffe,$102,$88,$180,$200
  1254.  dc.w $e609,$fffe,$102,$88,$180,$300
  1255.  dc.w $e709,$fffe,$102,$88,$180,$400
  1256.  dc.w $e809,$fffe,$102,$88,$180,$510
  1257.  dc.w $e909,$fffe,$102,$88,$180,$610
  1258.  dc.w $ea09,$fffe,$102,$88,$180,$710
  1259.  dc.w $eb09,$fffe,$102,$88,$180,$820
  1260.  dc.w $ec09,$fffe,$102,$88,$180,$930
  1261.  dc.w $ed09,$fffe,$102,$88,$180,$a50
  1262.  dc.w $ee09,$fffe,$102,$88,$180,$b70
  1263.  dc.w $ef09,$fffe,$102,$88,$180,$c90
  1264.  dc.w $f009,$fffe,$102,$88,$180,$db0
  1265.  dc.w $f109,$fffe,$102,$88,$180,0
  1266.  dc.w $f209,$fffe,$102,$88,$180,0
  1267.  dc.w $f309,$fffe,$102,$88,$180,0
  1268.  dc.w $f409,$fffe,$102,$88,$180,0
  1269.  dc.w $f509,$fffe,$102,$88,$180,0
  1270.  dc.w $f609,$fffe,$102,$88,$180,0
  1271.  dc.w $f709,$fffe,$102,$88,$180,0
  1272.  dc.w $f809,$fffe,$102,$88,$180,0
  1273.  dc.w $f909,$fffe,$102,$88,$180,0
  1274.  dc.w $fa09,$fffe,$102,$88,$180,0
  1275.  dc.w $fb09,$fffe,$102,$88,$180,0
  1276.  dc.w $fc09,$fffe,$102,$88,$180,0
  1277.  dc.w $fd09,$fffe,$102,$88,$180,0
  1278.  dc.w $fe09,$fffe,$102,$88,$180,0
  1279.  dc.w $ff09,$fffe,$102,$88,$ffdf,$fffe        ; pal copper enable
  1280.  dc.w $0009,$fffe,$102,$88,$180,0
  1281.  dc.w $0109,$fffe,$102,$88,$180,0
  1282.  dc.w $0209,$fffe,$102,$88,$180,0
  1283.  dc.w $309,$fffe,$102,$88,$180,0
  1284.  dc.w $409,$fffe,$102,$88,$180,$1
  1285.  dc.w $509,$fffe,$102,$88,$180,$1
  1286.  dc.w $609,$fffe,$102,$88,$180,$1
  1287.  dc.w $709,$fffe,$102,$88,$180,$1
  1288.  dc.w $809,$fffe,$102,$88,$180,$2
  1289.  dc.w $909,$fffe,$102,$88,$180,$2
  1290.  dc.w $a09,$fffe,$102,$88,$180,$2
  1291.  dc.w $b09,$fffe,$102,$88,$180,$2
  1292.  dc.w $c09,$fffe,$102,$88,$180,$2
  1293.  dc.w $d09,$fffe,$102,$88,$180,$3
  1294.  dc.w $e09,$fffe,$102,$88,$180,$3
  1295.  dc.w $f09,$fffe,$102,$88,$180,$3
  1296.  dc.w $1009,$fffe,$102,$88,$180,$3
  1297.  dc.w $1109,$fffe,$102,$88,$180,$3
  1298.  dc.w $1209,$fffe,$102,$88,$180,$3
  1299.  dc.w $1309,$fffe,$102,$88,$180,$3
  1300.  dc.w $1409,$fffe,$102,$88,$180,$3
  1301.  dc.w $1509,$fffe,$102,$88,$180,$3
  1302.  dc.w $1609,$fffe,$102,$88,$180,$4
  1303.  dc.w $1709,$fffe,$102,$88,$180,$4
  1304.  dc.w $1809,$fffe,$102,$88,$180,$4
  1305.  dc.w $1909,$fffe,$102,$88,$180,$4
  1306.  dc.w $1a09,$fffe,$102,$88,$180,$4
  1307.  dc.w $1b09,$fffe,$102,$88,$180,$4
  1308.  dc.w $1c09,$fffe,$102,$88,$180,$4
  1309.  dc.w $1d09,$fffe,$102,$88,$180,$4
  1310.  dc.w $1e09,$fffe,$102,$88,$180,$4
  1311.  dc.w $1f09,$fffe,$102,$88,$180,$4
  1312.  dc.w $2009,$fffe,$102,$88,$180,$4
  1313.  dc.w $2109,$fffe,$102,$88,$180,$4
  1314.  dc.w $2209,$fffe,$102,$88,$180,$4
  1315.  
  1316.  dc.w $9c,$8010
  1317.  DC.w $FFFF,$FFFE ; End copper
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. bigfontdata
  1325.  incbin "df1:font.raw"
  1326.  
  1327.  
  1328.  
  1329.  
  1330. fontdata:
  1331.  
  1332.  
  1333.  
  1334.  incbin "df1:smallfont.raw"
  1335.  
  1336.  
  1337. wobptr dc.l woblist
  1338. woblist
  1339.     incbin "df1:sindata.bin"
  1340.     dc.b $fe
  1341.      
  1342.  
  1343.  even
  1344.  
  1345.  
  1346.  
  1347. sprite0:
  1348. sprite1:
  1349. sprite2:    
  1350. sprite3: dc.w 0,0,0,0
  1351.     
  1352.  
  1353. sprite4:
  1354.  dc.w $34a0,$3900
  1355.  dc.w $0000,$8700,$0100,$EF80,$0000,$7FC0,$0180,$EE00,$0000,$8700
  1356.  ds.w 30*12
  1357.  
  1358. sprite5:
  1359.  ds.w 45*10 
  1360.  
  1361. ; dc.w $0000,$8700,$0100,$EF80,$0000,$7FC0,$0180,$EE00,$0000,$8700
  1362.  
  1363. ; dc.w $0800,$9000,$0000,$7C00,$0000,$9800
  1364.  
  1365. sprite6:
  1366.  ds.w 60*6
  1367.  
  1368. sprite7:
  1369.  dc.w 0,0,0,0,0,0,0,0
  1370.     
  1371.     
  1372.  
  1373.  
  1374. coltab    dc.w $ff0,$ee0,$de0,$ce0
  1375.     dc.w $be0,$ae0,$9e1,$8e2
  1376.     dc.w $7e3,$6e4,$5e5,$4e6
  1377.     dc.w $3e7,$2e8,$1e9,$0ea
  1378.     dc.w $0db,$0cc,$0bd,$0ae
  1379.     dc.w $09f,$18f,$27f,$36f
  1380.     dc.w $45f,$54f,$63f,$72f
  1381.     dc.w $81f,$90f,$a0f,$b0f
  1382.     dc.w $c0d,$d0c,$e0b,$f0a
  1383.     dc.w $f19,$f28,$f37,$f46
  1384.     dc.w $f55,$f64,$f73,$f82
  1385.     dc.w $f91,$fa0,$eb0,$dc0
  1386.     dc.w $cd0,$be0,$af0,$9f1
  1387.     dc.w $8f2,$7f3,$6f4,$5f5    
  1388.     dc.w $4f6,$3f7,$2f8,$1f9
  1389.     dc.w $0fa,$0eb,$0dc,$0cd
  1390.     dc.w $0be,$0af,$19f,$28f
  1391.  
  1392.     dc.w $37f,$46f,$55f,$64f
  1393.     dc.w $73f,$82f,$91f,$a0f    
  1394.     dc.w $b0e,$c0d,$d0c,$e0b
  1395.     dc.w $f0a,$f19,$f28,$f37
  1396.     dc.w $f46,$f55,$f64,$f73
  1397.     dc.w $f82,$f91,$fa0,$eb0
  1398.     dc.w $dc0,$cd0,$be0,$af0
  1399.     dc.w $9f1,$8f2,$7f3,$6f4
  1400.     dc.w $5f5,$4f6,$3f7,$2f8
  1401.     dc.w $1f9,$0fa,$0eb,$0dc
  1402.     dc.w $0cd,$0be,$0af,$19f
  1403.     dc.w $28f,$37f,$46f,$55f
  1404.     dc.w $64f,$73f,$82f,$91f
  1405.     dc.w $a0f,$b0e,$c0d,$d0c
  1406.     dc.w $e0b,$f0a,$f19,$f28
  1407.     dc.w $f37,$f46,$f55,$f64
  1408.     dc.w $f73,$f82,$f91,$fa0
  1409.     dc.w $fb0,$fc0,$fd0,$fe0
  1410.     dc.w 0
  1411.  
  1412. amigalogo: incbin "df1:logo"
  1413. scrollpath incbin "df1:grid"
  1414. scrollplane dcb.b 16000,0
  1415.            
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421.  
  1422.