home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 4: Demo 1 / almathera_demo1.bin / sourcecode / amigacomputing / picture-this.asm next >
Assembly Source File  |  1995-03-17  |  26KB  |  1,325 lines

  1.  
  2.  section scx,code_c
  3.  opt c-,o+,ow-
  4.  
  5. max equ 2
  6.  
  7. WOBMAX EQU $24
  8.  
  9. go:
  10.  
  11.  
  12.  
  13.  jsr start_muzak
  14.  
  15.  
  16.  move.l #sprite0,d0
  17.  move.w d0,sp0l
  18.  swap d0
  19.  move.w d0,sp0h
  20.  
  21.  move.l 4.w,a6
  22.  jsr -132(a6)
  23.  
  24.  lea GFXLIB,a1
  25.  MOVEQ #0,D0
  26.  MOVE.L 4.w,a6
  27.  JSR -$228(a6) ; OpenLibrary
  28.  TST D0
  29.  BEQ ERROR
  30.  MOVE.L D0,GFXBASE
  31.  
  32.  
  33.  
  34.  move.l #amigalogo,d0
  35.  move.w d0,pl0l
  36.  swap d0
  37.  move.w d0,pl0h
  38.  swap d0
  39.  add.l #10240,d0
  40.  move.w d0,pl2l
  41.  swap d0
  42.  move.w d0,pl2h
  43.  swap d0
  44.  add.l #10240,d0
  45.  move.w d0,pl4l
  46.  swap d0
  47.  move.w d0,pl4h
  48.  
  49.  
  50.  move.l #scrollplane,d0
  51.  move.w d0,pl1l
  52.  swap d0
  53.  move.w d0,pl1h
  54.  
  55.  move.l #showplane,d0
  56.  move.w d0,zl6l
  57.  swap d0
  58.  move.w d0,zl6h
  59.  
  60.  
  61. ff equ 8
  62.  move.l #mountains+40*ff,d0
  63.  move.w d0,p2l0l
  64.  swap d0
  65.  move.w d0,p2l0h
  66.  swap d0
  67.  add.l #5200,d0
  68.  move.w d0,p2l1l
  69.  swap d0
  70.  move.w d0,p2l1h
  71.  swap d0
  72.  add.l #5200,d0
  73.  move.w d0,p2l2l
  74.  swap d0
  75.  move.w d0,p2l2h
  76.  
  77.  swap d0
  78.  add.l #5200,d0
  79.  move.w d0,p2l3l
  80.  swap d0
  81.  move.w d0,p2l3h
  82.  swap d0
  83.  add.l #5200,d0
  84.  move.w d0,p2l4l
  85.  swap d0
  86.  move.w d0,p2l4h
  87.  swap d0
  88.  add.l #5200-40*ff,d0
  89.  move.l d0,a0
  90.  lea cols2,a1
  91.  lea cols3,a2
  92.  moveq #31,d0
  93.  move.w #$180,D2
  94. ffl
  95.  move.w d2,(a1)+
  96.  move.w d2,(a2)+
  97.  addq.w #2,d2
  98.  move.w (a0)+,d3
  99.  move.w d3,(a1)+
  100.  lsr.w d3
  101.  and.w #%0000011101110111,d3
  102.  move.w d3,(a2)+
  103.  dbra d0,ffl
  104.  
  105.  
  106.  
  107.  
  108.  move.l #blankplane,d0
  109.  move.w d0,pl3l
  110.  swap d0
  111.  move.w d0,pl3h
  112.  
  113.  
  114.  
  115.  MOVE.L GFXBASE,A6
  116.  ADD.L #$32,A6
  117.  MOVE.W #$80,$dff096
  118.  MOVE.L (A6),OLDCOPPER
  119.  MOVE.L #NEWCOPPER,(A6)
  120.  MOVE.W #$8080,$dff096
  121.  
  122.  move.w #$8010,$dff09a
  123.  move.l $6c.w,old
  124.  move.l  #new,$6c.w
  125.  
  126. WAIT: ANDI.B #$40,$BFE001
  127.  Bne.s wait
  128.  
  129.  move.l old,$6c.w
  130.  
  131.  
  132.  MOVE.L GFXBASE,A6
  133.  ADD.L #$32,A6
  134.  
  135.  MOVE.W #$0080,$dff096
  136.  MOVE.L OLDCOPPER,(A6)
  137.  MOVE.W #$8080,$dff096
  138.  
  139.  
  140. ERROR:
  141.  
  142.  move.l 4.w,a6
  143.  jsr -138(a6)
  144.  
  145.  moveq #0,d0
  146.  move.w #$f,$dff096
  147.  move.w #$0,$dff0a8
  148.  move.w #$0,$dff0b8
  149.  move.w #$0,$dff0c8
  150.  move.w #$0,$dff0d8
  151.  RTS
  152.  
  153. new: movem.l d0-d7/a0-a6,-(sp)
  154.  and #$10,$dff01e        
  155.  beq.s out
  156.  move.w #$10,$dff09c
  157.  
  158.  jsr replay_muzak
  159.  
  160.  btst #10,$dff016
  161.  beq out
  162.  
  163.  jsr scrolly
  164.  
  165.  subq.b #1,ctd
  166.  bne.s out
  167.  move.b #max,ctd
  168.  
  169.  bsr.s scrolltext
  170.  bsr.s blittest
  171.  
  172.  subq.b #1,ct2
  173.  bne.s out
  174.  move.b #8,ct2
  175.  
  176.  bsr.s printline
  177.  
  178. ; interupt routine goes in here
  179.  
  180. out: movem.l (sp)+,d0-d7/a0-a6
  181.  dc.w $4ef9
  182. old: dc.l 0
  183.  
  184. ctd dc.b 1,0
  185. ct2 dc.b 1,0
  186.     
  187. blittest: btst #14,$dff002
  188.     bne.s blittest
  189.     rts
  190.  
  191. scrolltext:
  192.  bsr.s blittest
  193.  move.l #scrollplane,$dff054
  194.  move.l #scrollplane+40,$dff050
  195.  move.l #$ffffffff,$dff044
  196.  clr.l $dff064
  197.  move.w #%100111110000,$dff040
  198.  clr.w $dff042
  199.  move.w #%1011010010100,$dff058
  200.  rts
  201.  
  202.  
  203. printline
  204.  move.l textptr,a0
  205.  cmp.b #0,(a0)
  206.  bne.s lineok
  207.  move.l #text,textptr
  208.  bra.s printline
  209. lineok
  210.  lea scrollplane+40*60,a1
  211.  moveq #39,d1
  212. .loop1
  213.  moveq #0,d0            ; clear d0 first
  214.  move.b (a0)+,d0
  215.  sub.b #32,d0            ; space is 32 in ascii
  216.  lsl.w #3,d0            ; multiply by 8
  217.  lea font(pc),a2            ; and add to font start address
  218.  add.l d0,a2    
  219.  moveq #7,d2            ; 8 bytes per character
  220.  move.l a1,a3            ; can scratch a3, not a1
  221. .loop2
  222.  move.b (a2)+,(a3)            ; transfer byte
  223.  add.l #40,a3            ; point to next line
  224.  dbra d2,.loop2
  225.  addq.l #1,a1
  226.  dbra d1,.loop1
  227.  move.l a0,textptr 
  228.  rts
  229.  
  230.  
  231.  
  232.  
  233. textptr dc.l text
  234.  
  235.           *0123456789012345678901234567890123456789* 
  236. text    dc.b  "             AMIGA COMPUTING            "
  237.     dc.b  "                                        "
  238.     dc.b  "    Present another little demo.......  "
  239.         dc.b  "                                        "
  240.     dc.b  "                                        "
  241.     dc.b  " Code by Jolyon Ralph of STATYX SOFTWARE"
  242.     dc.b  "                                        "
  243.     dc.b  "    Music by Kevin 'Savage' Collier     "
  244.     dc.b  "                                        "
  245.     dc.b  "     Mountain graphics by OZONE of      "
  246.     dc.b  "           SHARE AND ENJOY              "          
  247.     dc.b  "                                        "
  248.     dc.b  "    Special thanks must go to TONY of   "
  249.     dc.b  "                                        "
  250.     dc.b  "          SABRE 16 COMPUTERS            "
  251.     dc.b  "                                        "
  252.     dc.b  " who saved the day by replacing my B2000"
  253.     dc.b  "     in time to finish this demo.       "
  254.     dc.b  "                                        "
  255.     dc.b  "     So long and goodbye from me.       "
  256.     dc.b  "                                        "
  257.     dc.b  "                                        "
  258.     dc.b  0
  259.     
  260.     
  261.  
  262.     even
  263. *Spectrum font 8x8
  264. * chars 32-127
  265.  
  266.  
  267. font:    
  268.  
  269.     dc.b    $00,$00,$00,$00,$00,$00,$00,$00
  270.     dc.b    $00,$10,$10,$10,$10,$00,$10,$00
  271.     dc.b    $00,$24,$24,$00,$00,$00,$00,$00
  272.     dc.b    $00,$24,$7e,$24,$24,$7e,$24,$00
  273.     dc.b    $00,$08,$3e,$28,$3e,$0a,$3e,$08
  274.     dc.b    $00,$62,$64,$08,$10,$26,$46,$00
  275.     dc.b    $00,$10,$28,$10,$2a,$44,$3a,$00
  276.     dc.b    $00,$08,$10,$00,$00,$00,$00,$00
  277.     dc.b    $04,$08,$08,$08,$08,$08,$04,$00
  278.     dc.b    $00,$20,$10,$10,$10,$10,$20,$00
  279.     dc.b    $00,$00,$14,$08,$3e,$08,$14,$00
  280.     dc.b    $00,$00,$08,$08,$3e,$08,$08,$00
  281.     dc.b    $00,$00,$00,$00,$00,$08,$08,$10
  282.     dc.b    $00,$00,$00,$00,$3e,$00,$00,$00
  283.     dc.b    $00,$00,$00,$00,$00,$18,$18,$00
  284.     dc.b    $00,$00,$02,$04,$08,$10,$20,$00
  285.     dc.b    $00,$3c,$46,$4a,$52,$62,$3c,$00
  286.     dc.b    $00,$18,$28,$08,$08,$08,$3e,$00
  287.     dc.b    $00,$3c,$42,$02,$3c,$40,$7e,$00
  288.     dc.b    $00,$3c,$42,$0c,$02,$42,$3c,$00
  289.     dc.b    $00,$08,$18,$28,$48,$7e,$08,$00
  290.     dc.b    $00,$7e,$40,$7c,$02,$42,$3c,$00
  291.     dc.b    $00,$3c,$40,$7c,$42,$42,$3c,$00
  292.     dc.b    $00,$7e,$02,$04,$08,$10,$10,$00
  293.     dc.b    $00,$3c,$42,$3c,$42,$42,$3c,$00
  294.     dc.b    $00,$3c,$42,$42,$3e,$02,$3c,$00
  295.     dc.b    $00,$00,$10,$00,$00,$00,$10,$00
  296.     dc.b    $00,$00,$10,$00,$00,$10,$10,$20
  297.     dc.b    $00,$00,$04,$08,$10,$08,$04,$00
  298.     dc.b    $00,$00,$00,$3e,$00,$3e,$00,$00
  299.     dc.b    $00,$00,$10,$08,$04,$08,$10,$00
  300.     dc.b    $00,$3c,$42,$04,$08,$00,$08,$00
  301.     dc.b    $00,$3c,$4a,$56,$5e,$40,$3c,$00
  302.     dc.b    $00,$3c,$42,$42,$7e,$42,$42,$00
  303.     dc.b    $00,$7c,$42,$7c,$42,$42,$7c,$00
  304.     dc.b    $00,$3c,$42,$40,$40,$42,$3c,$00
  305.     dc.b    $00,$78,$44,$42,$42,$44,$78,$00
  306.     dc.b    $00,$7e,$40,$7c,$40,$40,$7e,$00
  307.     dc.b    $00,$7e,$40,$7c,$40,$40,$40,$00
  308.     dc.b    $00,$3c,$42,$40,$4e,$42,$3c,$00
  309.     dc.b    $00,$42,$42,$7e,$42,$42,$42,$00
  310.     dc.b    $00,$3e,$08,$08,$08,$08,$3e,$00
  311.     dc.b    $00,$02,$02,$02,$42,$42,$3c,$00
  312.     dc.b    $00,$44,$48,$70,$48,$44,$42,$00
  313.     dc.b    $00,$40,$40,$40,$40,$40,$7e,$00
  314.     dc.b    $00,$42,$66,$5a,$42,$42,$42,$00
  315.     dc.b    $00,$42,$62,$52,$4a,$46,$42,$00
  316.     dc.b    $00,$3c,$42,$42,$42,$42,$3c,$00
  317.     dc.b    $00,$7c,$42,$42,$7c,$40,$40,$00
  318.     dc.b    $00,$3c,$42,$42,$52,$4a,$3c,$00
  319.     dc.b    $00,$7c,$42,$42,$7c,$44,$42,$00
  320.     dc.b    $00,$3c,$40,$3c,$02,$42,$3c,$00
  321.     dc.b    $00,$fe,$10,$10,$10,$10,$10,$00
  322.     dc.b    $00,$42,$42,$42,$42,$42,$3c,$00
  323.     dc.b    $00,$42,$42,$42,$42,$24,$18,$00
  324.     dc.b    $00,$42,$42,$42,$42,$5a,$24,$00
  325.     dc.b    $00,$42,$24,$18,$18,$24,$42,$00
  326.     dc.b    $00,$82,$44,$28,$10,$10,$10,$00
  327.     dc.b    $00,$7e,$04,$08,$10,$20,$7e,$00
  328.     dc.b    $00,$0e,$08,$08,$08,$08,$0e,$00
  329.     dc.b    $00,$00,$40,$20,$10,$08,$04,$00
  330.     dc.b    $00,$70,$10,$10,$10,$10,$70,$00
  331.     dc.b    $00,$10,$38,$54,$10,$10,$10,$00
  332.     dc.b    $00,$00,$00,$00,$00,$00,$00,$ff
  333.     dc.b    $00,$1c,$22,$78,$20,$20,$7e,$00
  334.     dc.b    $00,$00,$38,$04,$3c,$44,$3c,$00
  335.     dc.b    $00,$20,$20,$3c,$22,$22,$3c,$00
  336.     dc.b    $00,$00,$1c,$20,$20,$20,$1c,$00
  337.     dc.b    $00,$04,$04,$3c,$44,$44,$3c,$00
  338.     dc.b    $00,$00,$38,$44,$78,$40,$3c,$00
  339.     dc.b    $00,$0c,$10,$18,$10,$10,$10,$00
  340.     dc.b    $00,$00,$3c,$44,$44,$3c,$04,$38
  341.     dc.b    $00,$40,$40,$78,$44,$44,$44,$00
  342.     dc.b    $00,$10,$00,$30,$10,$10,$38,$00
  343.     dc.b    $00,$04,$00,$04,$04,$04,$24,$18
  344.     dc.b    $00,$20,$28,$30,$30,$28,$24,$00
  345.     dc.b    $00,$10,$10,$10,$10,$10,$0c,$00
  346.     dc.b    $00,$00,$68,$54,$54,$54,$54,$00
  347.     dc.b    $00,$00,$78,$44,$44,$44,$44,$00
  348.     dc.b    $00,$00,$38,$44,$44,$44,$38,$00
  349.     dc.b    $00,$00,$78,$44,$44,$78,$40,$40
  350.     dc.b    $00,$00,$3c,$44,$44,$3c,$04,$06
  351.     dc.b    $00,$00,$1c,$20,$20,$20,$20,$00
  352.     dc.b    $00,$00,$38,$40,$38,$04,$78,$00
  353.     dc.b    $00,$10,$38,$10,$10,$10,$0c,$00
  354.     dc.b    $00,$00,$44,$44,$44,$44,$38,$00
  355.     dc.b    $00,$00,$44,$44,$28,$28,$10,$00
  356.     dc.b    $00,$00,$44,$54,$54,$54,$28,$00
  357.     dc.b    $00,$00,$44,$28,$10,$28,$44,$00
  358.     dc.b    $00,$00,$44,$44,$44,$3c,$04,$38
  359.     dc.b    $00,$00,$7c,$08,$10,$20,$7c,$00
  360.     dc.b    $00,$0e,$08,$30,$08,$08,$0e,$00
  361.     dc.b    $00,$08,$08,$08,$08,$08,$08,$00
  362.     dc.b    $00,$70,$10,$0c,$10,$10,$70,$00
  363.     dc.b    $00,$14,$28,$00,$00,$00,$00,$00
  364.     
  365.     
  366.     
  367.  
  368. OLDCOPPER: DC.L 0
  369. NEWCOPPER:
  370.  dc.w $100,$5600,$102,$0,$104,%1000000,$108,0,$10a,0
  371.  dc.w $92,$38,$94,$d0,$8e,$2c81,$90,$2cc1,$e0
  372. pl0h: dc.w    0,$e2
  373. pl0l: dc.w    0,$e4
  374. pl1h: dc.w    0,$e6
  375. pl1l: dc.w    0,$e8
  376. pl2h: dc.w    0,$ea
  377. pl2l: dc.w    0,$ec
  378. pl3h: dc.w    0,$ee
  379. pl3l: dc.w    0,$f0
  380. pl4h: dc.w    0,$f2
  381.   
  382. pl4l: dc.w    0,$120
  383. SP0H DC.W 0,$122
  384. SP0L DC.W 0,$180,$0,$182,$0,$184,$555,$186,$888
  385.       dc.w     $18c,$999,$18e,$777
  386.       DC.W     $190,$fff,$192,$111,$194,$fff,$196,$fff
  387.       DC.W     $1a8,$fff,$1aa,$fff,$1ac,$fff,$1ae,$fff
  388.       DC.W     $1b0,$fff,$1b2,$fff,$1b4,$fff,$1b6,$fff
  389.       DC.W     $1b8,$fff,$1ba,$fff,$1bc,$fff,$1be,$fff
  390.     
  391.     dc.w $2e09,$fffe,$192,$444
  392.     dc.w $2f09,$fffe,$192,$666
  393.   
  394.   dc.w $3009,$fffe,$10a,-40,$192,$888
  395.   dc.w $3109,$fffe,$10a,0,$192,$aaa
  396.   
  397.   
  398.   dc.w $3209,$fffe,$10a,-40,$192,$ccc
  399.   dc.w $3309,$fffe,$10a,0,$192,$fff
  400.       
  401.  
  402.   dc.w $3409,$fffe,$10a,-40,$192,$ffe
  403.   dc.w $3509,$fffe,$192,$ffd
  404.   dc.w $3609,$fffe,$10a,0,$192,$ffc
  405.       
  406.   dc.w $3709,$fffe,$10a,-40,$192,$ffb
  407.   dc.w $3809,$fffe,$192,$ffa
  408.  
  409.   dc.w $3909,$fffe,$10a,0,$192,$ff9
  410.       
  411.   dc.w $3a09,$fffe,$10a,-40,$192,$ff8
  412.   dc.w $3b09,$fffe,$192,$fff,$192,$ff7
  413.   dc.w $3c09,$fffe,$192,$ff6
  414.  
  415.   dc.w $3d09,$fffe,$10a,0,$192,$ff5
  416.       
  417.   dc.w $3e09,$fffe,$10a,-40,$192,$ff4
  418.   dc.w $3f09,$fffe,$192,$ff3
  419.   dc.w $4009,$fffe,$192,$ff2
  420.  
  421.   dc.w $4109,$fffe,$10a,0,$192,$ff1
  422.   
  423.   
  424.   dc.w $4209,$fffe,$10a,-40,$192,$ff0
  425.   dc.w $4309,$fffe,$192,$fe0
  426.  
  427.   dc.w $4409,$fffe,$10a,0,$192,$fd0
  428.       
  429.  
  430.   dc.w $4509,$fffe,$10a,-40,$192,$fc0
  431.   dc.w $4609,$fffe,$192,$fb0
  432.   dc.w $4709,$fffe,$10a,0,$192,$fa0
  433.       
  434.   dc.w $4809,$fffe,$10a,-40,$192,$f90
  435.   dc.w $4909,$fffe,$10a,0,$192,$f80
  436.       
  437.   dc.w $4a09,$fffe,$10a,-40,$192,$f70
  438.   dc.w $4b09,$fffe,$10a,0,$192,$f60
  439.   dc.w $4c09,$fffe,$192,$f50
  440.   dc.w $4d09,$fffe,$192,$f40
  441.   dc.w $4e09,$fffe,$192,$f30
  442.   dc.w $4f09,$fffe,$192,$f20
  443.       
  444.   dc.w $5009,$fffe,$10a,-40,$192,$f10
  445.   dc.w $5109,$fffe,$10a,0,$192,$f00
  446.   
  447.   
  448.   dc.w $5209,$fffe,$10a,-40,$192,$f01
  449.   dc.w $5309,$fffe,$10a,0,$192,$f02
  450.       
  451.  
  452.   dc.w $5409,$fffe,$10a,-40,$192,$f03
  453.   dc.w $5509,$fffe,$192,$f04
  454.  
  455.   dc.w $5609,$fffe,$10a,0,$192,$f05
  456.       
  457.   dc.w $5709,$fffe,$10a,-40,$192,$f06
  458.   dc.w $5809,$fffe,$192,$f07
  459.   dc.w $5909,$fffe,$10a,0,$192,$f08
  460.       
  461.   dc.w $5a09,$fffe,$10a,-40,$192,$f09
  462.   dc.w $5b09,$fffe,$192,$f0a
  463.   dc.w $5c09,$fffe,$192,$f0b
  464.   dc.w $5d09,$fffe,$10a,0,$192,$f0c
  465.       
  466.   dc.w $5e09,$fffe,$10a,-40,$192,$f0d
  467.   dc.w $5f09,$fffe,$192,$f0e
  468.   dc.w $6009,$fffe,$192,$f0f
  469.   dc.w $6109,$fffe,$10a,0,$192,$e0f
  470.   
  471.   
  472.   dc.w $6209,$fffe,$10a,-40,$192,$d0f
  473.   dc.w $6309,$fffe,$192,$c0f
  474.   dc.w $6409,$fffe,$10a,0,$192,$a0f
  475.        
  476.  
  477.   dc.w $6509,$fffe,$10a,-40,$192,$90f
  478.   dc.w $6609,$fffe,$192,$80f
  479.   
  480.   dc.w $6709,$fffe,$10a,0,$192,$70f
  481.       
  482.   dc.w $6809,$fffe,$10a,-40,$192,$60f
  483.   dc.w $6909,$fffe,$10a,0,$192,$50f
  484.       
  485.   dc.w $6a09,$fffe,$10a,-40,$192,$40f
  486.   dc.w $6b09,$fffe,$10a,0,$192,$30f
  487.  
  488.  dc.w $8c09,$fffe,$192,$108
  489.  dc.w $8d09,$fffe,$192,$6
  490.  dc.w $8e09,$fffe,$192,$4
  491.  
  492.  dc.w $8f09,$fffe,$100,0
  493. cols2 dcb.l 32
  494.   
  495.   dc.w $9009,$fffe,$100,$6200
  496.   
  497.    dc.w $e0
  498. p2l0h: dc.w    0,$e2
  499. p2l0l: dc.w    0,$e4
  500. p2l1h: dc.w    0,$e6
  501. p2l1l: dc.w    0,$e8
  502. p2l2h: dc.w    0,$ea
  503. p2l2l: dc.w    0,$ec
  504. p2l3h: dc.w    0,$ee
  505. p2l3l: dc.w    0,$f0
  506. p2l4h: dc.w    0,$f2
  507. p2l4l: dc.w 0,$f4
  508. zl6h   dc.w 0,$f6
  509. zl6l   dc.w 0
  510.       
  511.  dc.w $ff09,$fffe,$108,-120,$10a,-120
  512. cols3 dcb.l 32
  513.  
  514.  dc.w $2b09,$fffe
  515.  dc.w $9c,$8010,$ffff,$fffe
  516.  
  517.   ; End copper
  518. gfxlib: dc.b "graphics.library",0 ; Yeuch! Libraries!!!!!
  519.  EVEN
  520. gfxbase: dc.l 0
  521.  
  522. amigalogo: incbin "jh0:sources/amigalogo"
  523.  
  524. scrollplane: dcb.b 8000,0
  525.  
  526. blankplane dcb.b 10240,0
  527.  
  528. mountains: incbin "jh0:sources/mountains"
  529.  
  530. sinscroll:
  531. ; first blit clear the scrolly
  532.  
  533.     lea showplane+35*40,a0        ; visible bitplane
  534. blitready:
  535.     btst #14,$dff002        
  536.     bne.s blitready            ; wait till blitter ready
  537.  
  538.     move.l a0,$dff054        ; source address
  539.     move.l a0,$dff050        ; destination address
  540.     clr.l $dff044            ; no FWM/LWM (see hardware manual)
  541.     clr.l $dff064            ; no MODULO (see hardware manual)
  542.  
  543.     move.w #%100000000,$dff040     ; Enable DMA channel D, nothing
  544.                     ; else, no minterms active. 
  545.     clr.w $dff042            ; nothing set in BLTCON1
  546.     move.w #%111100010101,$dff058    ; Window size = 21 words wide
  547.                     ; 60 lines deep
  548.  
  549.  
  550.     move.l sinpt,a3
  551.     subq.l #1,a3
  552.     move.b (a3),d0
  553.     cmp.b #255,d0
  554.     bne.s notendofsine
  555.     lea sintabend(pc),a3
  556. notendofsine:
  557.     move.l a3,sinpt
  558.  
  559.     moveq #19,d0
  560.     lea scplane2,a0
  561.     lea showplane+35*40-2,a1
  562.  
  563. sloop3:
  564.  
  565.     bsr getsinval
  566.  
  567. blitready2
  568.     btst #14,$dff002
  569.     bne.s blitready2
  570.  
  571.     move.l a0,$dff050
  572.     move.l a2,$dff054
  573.     move.l #$f000f000,$dff044
  574.     move.w #40,$dff064
  575.     move.w #38,$dff066
  576.     move.w #%0000100111110000,$dff040
  577.     clr.w $dff042
  578.     move.w #%100000000001,$dff058
  579.  
  580.     bsr getsinval
  581.  
  582. zonk2:
  583.     btst #14,$dff002
  584.     bne zonk2
  585.  
  586.     move.l a0,$dff050
  587.     move.l a2,$dff054
  588.     move.l a2,$dff04c
  589.     move.l #$f000f00,$dff044
  590.     move.w #40,$dff064
  591.     move.w #38,$dff066
  592.     move.w #38,$dff062
  593.     move.w #%0000110111111100,$dff040
  594.      clr.w $dff042
  595.     move.w #%100000000001,$dff058
  596.  
  597.     bsr getsinval
  598. zonk3:
  599.     btst #14,$dff002
  600.     bne zonk3
  601.  
  602.     move.l a0,$dff050
  603.     move.l a2,$dff054
  604.     move.l a2,$dff04c
  605.     move.l #$f000f0,$dff044
  606.     move.w #40,$dff064
  607.     move.w #38,$dff066
  608.     move.w #38,$dff062
  609.     move.w #%0000110111111100,$dff040
  610.     clr.w $dff042
  611.     move.w #%100000000001,$dff058
  612.  
  613.     bsr getsinval
  614. zonk4:
  615.     btst #14,$dff002
  616.     bne zonk4
  617.     move.l a0,$dff050
  618.     move.l a2,$dff054
  619.     move.l a2,$dff04c
  620.     move.l #$f000f,$dff044
  621.     move.w #40,$dff064
  622.     move.w #38,$dff066
  623.     move.w #38,$dff062
  624.     move.w #%0000110111111100,$dff040
  625.     clr.w $dff042
  626.     move.w #%100000000001,$dff058
  627.  
  628.  
  629.  
  630.     addq.l #2,a0
  631. LOAD    addq.l #2,a1
  632.     dbra d0,sloop3
  633.  
  634. rts
  635.  
  636. getsinval:
  637.     moveq #0,d1
  638.     move.b (a3)+,d1
  639.     move.b (a3),d2
  640.     cmp.b #255,d2
  641.     bne okyar
  642.     move.l #sintab,a3
  643. okyar:
  644.  
  645.     lsr.b #1,d1
  646.  
  647.     bclr #0,d1
  648.  
  649.  
  650.     mulu #20,d1
  651.  
  652.     move.l a1,a2
  653.     add.l d1,a2
  654.  
  655.     rts
  656. scrolly: 
  657.     move.b pause,d0
  658.     cmp.b #0,d0
  659.     beq gopast
  660.     sub.b #1,d0
  661.     move.b d0,pause
  662.     bra gopast2
  663. gopast:
  664.     move.l #scplane2,a0
  665.     move.l #scplane2+2,a1
  666. blitready3:
  667.     btst #14,$dff002
  668.     bne blitready3
  669.     move.l a0,$dff054
  670.     move.l a1,$dff050
  671.     move.l #-1,$dff044
  672.     clr.l $dff064
  673.     move.w #%1100100111110000,$dff040
  674.     clr.w $dff042
  675.     move.w #%101000010111,$dff058
  676. gopast2:
  677.     bsr sinscroll
  678.     move.b pause,d0
  679.     cmp.b #0,d0
  680.     bne iuo
  681.  
  682.     move.b countdown,d0
  683.     sub.b #1,d0
  684.     cmp.b #0,d0
  685.     beq mfc
  686.     move.b d0,countdown
  687. iuo:
  688.     rts
  689.     
  690. countdown:
  691.     dc.b 4,0
  692.  
  693.  
  694. sinpt:     dc.l sintabend        
  695. sinpt2: dc.l sintab2
  696.  
  697. eqtab    ds.b 40
  698.  
  699.  
  700.      dc.b 255
  701. sintab:
  702.  
  703.     dc.b $3C,$3F,$42,$46,$49,$4C,$50,$53,$56,$59
  704.     dc.b $5C,$5F,$61,$64,$67,$6B,$6F
  705.     dc.b $72,$75,$76
  706.     dc.b $77,$75,$72,$6F,$6B
  707.     dc.b $67,$64,$61,$5F,$5C,$59,$56,$53,$50
  708.     dc.b $4C,$49,$46,$42,$3F,$3C,$38,$35,$31,$2E
  709.     dc.b $2B,$27,$24,$21,$1E,$1B,$18,$16,$13,$10
  710.     dc.b $E,$C,$A,$8,$6,$5,$4,$2,$1,$1
  711.     dc.b $0,$0,$0,$0,$0,$0,$1,$1,$2,$4
  712.     dc.b $5,$6,$8,$A,$C,$E,$10,$13,$16,$18
  713.     dc.b $1B,$1E,$21,$24,$27,$2B,$2E,$31,$35
  714.  
  715. sintabend:
  716.  dc.b $38,255
  717.  
  718.  
  719. sintab2:
  720.  
  721.  dc.b $2D,$31,$34,$38,$3B,$3E,$41,$45,$47,$4A,$4D,$4F,$51,$53,$55,$57
  722.  dc.b $58,$59,$59,$5A,$5A,$5A,$59,$59,$58,$57,$55,$53,$51,$4F,$4D,$4A
  723.  dc.b $47,$45,$41,$3E,$3B,$38,$34,$31,$2D,$29,$26,$22,$1F,$1C,$19,$15
  724.  dc.b $13,$10,$D,$B,$9,$7,$5,$3,$2,$1,$1,$0,$0,$0,$1,$1,$2,$3,$5,$7,$9
  725.  dc.b $B,$D,$10,$13,$15,$19,$1C,$1F,$22,$26,$29,$ff
  726.  
  727. pause:     dc.b 0
  728. sinmodulo:
  729.     dc.b 0
  730.  
  731.      even
  732. mfc:
  733.     move.b #4,countdown
  734.     clr.w scplane2+40
  735.     clr.w scplane2+82
  736.     move.l #scplane2+124,a1
  737.     bsr charaddress
  738.  
  739.     moveq #15,d0
  740. zonkin:
  741.     move.w (a0),(a1)
  742.     lea 40(a0),a0
  743.     lea 42(a1),a1
  744.     dbf d0,zonkin
  745.  
  746.     rts
  747. CHARADDRESS:
  748.     move.l mesptr,a0
  749.     moveq #0,d0
  750.     move.l d0,d1
  751.     move.l d0,d2
  752.     move.b (a0)+,d0
  753.     cmp.b #$0a,d0
  754.     bne wizy
  755.     move.b #32,d0
  756. wizy:
  757.     cmp.b #255,d0
  758.     bne wazy
  759.     move.l #message,a0
  760.     move.b #32,d0
  761. wazy:
  762.     cmp.b #254,d0
  763.     bne wozy
  764.     move.b #32,d0
  765.     move.b #$60,pause
  766. wozy:
  767.     move.l a0,mesptr
  768.  
  769.     sub.b #32,d0 
  770.      moveq #0,d1
  771.      divu #20,d0          ; 20 chars on each line
  772.      move.b d0,d1 
  773.      clr.w d0
  774.      swap d0  
  775.     move.l #fnt2,a0
  776.     mulu #640,d1
  777.     add.l d0,d0
  778.     add.l d0,a0
  779.     add.l d1,a0
  780.  
  781.     rts
  782.  
  783.  
  784.  even
  785.  
  786.  
  787. SPRITE0 DC.W 0,0,0,0,0,0
  788. mesptr: dc.l message
  789. message:
  790.       ;12345678901234567890
  791.  dc.b "HOLY ZARQUON SINGING FISH! "
  792.  
  793.  dc.b " IT'S AMIGA COMPUTING DEMO NUMBER TWO!!!!    LOOK ABOVE FOR THE CREDITS, "
  794.  DC.B " SPECIAL MESSAGES COMING UP.........   HI TO RUSS, DEL, JIM, KEVIN, RICHARD, "
  795.  DC.B "JOBY, ADAM, TIM AND EVERYONE ELSE.     "
  796.  dc.b " NOTE - THIS SCROLLY USES THE EXTRA HALF BRITE MODE, IF YOU HAVE AN OLD "
  797.  DC.B "AMIGA 1000 (PRE-RELEASE MODEL) YOU WILL NOT BE ABLE TO SEE THIS SCROLLER, "
  798.  DC.B "SO THERE!   FOR THE 99.9999 PERCENT OF YOU WHO CAN READ IT, COUNT YOURSELVES LUCKY. "
  799.  
  800.  
  801.  DC.B "    BYE BYE!!!!   SEE YOU NEXT DEMO. "    
  802.  dc.b 255
  803.  
  804.     
  805.     even
  806. showplane:     ds.b 6000
  807. scplane2:     ds.b 2500
  808. fnt2:         incbin jh0:sources/fnt
  809.  
  810.  
  811.  
  812.  
  813. *** END OF MY CODE ***
  814.  
  815.  
  816. ** THIS IS THE PLAY ROUTINE FOR THE MUSIC - WRITTEN BY TIP OF TNM **
  817.  
  818. start_muzak:
  819.     move.l    #data,muzakoffset    ;** get offset
  820.  
  821. init0:    move.l    muzakoffset,a0        ;** get highest used pattern
  822.     add.l    #472,a0
  823.     move.l    #$80,d0
  824.     clr.l    d1
  825. init1:    move.l    d1,d2
  826.     subq.w    #1,d0
  827. init2:    move.b    (a0)+,d1
  828.     cmp.b    d2,d1
  829.     bgt.s    init1
  830.     dbf    d0,init2
  831.     addq.b    #1,d2
  832.  
  833. init3:    move.l    muzakoffset,a0        ;** calc samplepointers
  834.     lea    pointers(pc),a1
  835.     lsl.l    #8,d2
  836.     lsl.l    #2,d2
  837.     add.l    #600,d2
  838.     add.l    a0,d2
  839.     moveq    #14,d0
  840. init4:    move.l    d2,(a1)+
  841.     clr.l    d1
  842.     move.w    42(a0),d1
  843.     lsl.l    #1,d1
  844.     add.l    d1,d2
  845.     add.l    #30,a0
  846.     dbf    d0,init4
  847.  
  848. init5:    clr.w    $dff0a8            ;** clear used values
  849.     clr.w    $dff0b8
  850.     clr.w    $dff0c8
  851.     clr.w    $dff0d8
  852.     clr.w    timpos
  853.     clr.l    trkpos
  854.     clr.l    patpos
  855.  
  856. init6:    move.l    muzakoffset,a0        ;** initialize timer irq
  857.     move.b    470(a0),numpat+1    ;number of patterns
  858.     rts
  859.  
  860. stop_muzak:
  861.     move.l    lev3save+2,$6c.w
  862.     clr.w    $dff0a8
  863.     clr.w    $dff0b8
  864.     clr.w    $dff0c8
  865.     clr.w    $dff0d8
  866.     move.w    #$f,$dff096
  867.     rts
  868.  
  869. lev3interrupt:
  870.     bsr.s    replay_muzak
  871. lev3save:
  872.     jmp    $0
  873.  
  874. replay_muzak:
  875.     movem.l    d0-d7/a0-a6,-(a7)
  876.     addq.w    #1,timpos
  877. speed:    cmp.w    #6,timpos
  878.     beq.w    replaystep
  879.  
  880. chaneleffects:                ;** seek effects
  881.     lea    datach0(pc),a6
  882.     tst.b    3(a6)
  883.     beq.s    ceff1
  884.     lea    $dff0a0,a5
  885.     bsr.s    ceff5
  886. ceff1:    lea    datach1(pc),a6
  887.     tst.b    3(a6)
  888.     beq.s    ceff2
  889.     lea    $dff0b0,a5
  890.     bsr.s    ceff5
  891. ceff2:    lea    datach2(pc),a6
  892.     tst.b    3(a6)
  893.     beq.s    ceff3
  894.     lea    $dff0c0,a5
  895.     bsr.s    ceff5
  896. ceff3:    lea    datach3(pc),a6
  897.     tst.b    3(a6)
  898.     beq.s    ceff4
  899.     lea    $dff0d0,a5
  900.     bsr.s    ceff5
  901. ceff4:    movem.l    (a7)+,d0-d7/a0-a6
  902.     rts
  903.  
  904. ceff5:    move.b    2(a6),d0        ;room for some more
  905.     and.b    #$f,d0            ;implementations below
  906.     tst.b    d0
  907.     beq.s    arpreggiato
  908.     cmp.b    #1,d0
  909.     beq.w    pitchup
  910.     cmp.b    #2,d0
  911.     beq.w    pitchdown
  912.     cmp.b    #12,d0
  913.     beq.w    setvol
  914.     cmp.b    #14,d0
  915.     beq.w    setfilt
  916.     cmp.b    #15,d0
  917.     beq.w    setspeed
  918.     rts
  919.  
  920. arpreggiato:                ;** spread by time
  921.     cmp.w    #1,timpos
  922.     beq.s    arp1
  923.     cmp.w    #2,timpos
  924.     beq.s    arp2
  925.     cmp.w    #3,timpos
  926.     beq.s    arp3
  927.     cmp.w    #4,timpos
  928.     beq.s    arp1
  929.     cmp.w    #5,timpos
  930.     beq.s    arp2
  931.     rts
  932.  
  933. arp1:    clr.l    d0            ;** get higher note-values
  934.     move.b    3(a6),d0        ;   or play original
  935.     lsr.b    #4,d0
  936.     bra.s    arp4
  937. arp2:    clr.l    d0
  938.     move.b    3(a6),d0
  939.     and.b    #$f,d0
  940.     bra.s    arp4
  941. arp3:    move.w    16(a6),d2
  942.     bra.s    arp6
  943. arp4:    lsl.w    #1,d0
  944.     clr.l    d1
  945.     move.w    16(a6),d1
  946.     lea    notetable,a0
  947. arp5:    move.w    (a0,d0.w),d2
  948.     cmp.w    (a0),d1
  949.     beq.s    arp6
  950.     addq.l    #2,a0
  951.     bra.s    arp5
  952. arp6:    move.w    d2,6(a5)
  953.     rts
  954.  
  955. pitchdown:
  956.     bsr.s    newrou
  957.     clr.l    d0
  958.     move.b    3(a6),d0
  959.     and.b    #$f,d0
  960.     add.w    d0,(a4)
  961.     cmp.w    #$358,(a4)
  962.     bmi.s    ok1
  963.     move.w    #$358,(a4)
  964. ok1:    move.w    (a4),6(a5)
  965.     rts
  966.  
  967. pitchup:bsr.s    newrou
  968.     clr.l    d0
  969.     move.b    3(a6),d0
  970.     and.b    #$f,d0
  971.     sub.w    d0,(a4)
  972.     cmp.w    #$71,(a4)
  973.     bpl.s    ok2
  974.     move.w    #$71,(a4)
  975. ok2:    move.w    (a4),6(a5)
  976.     rts
  977.  
  978. setvol:    move.b    3(a6),8(a5)
  979.     rts
  980.  
  981. setfilt:move.b    3(a6),d0
  982.     and.b    #1,d0
  983.     lsl.b    #1,d0
  984.     and.b    #$fd,$bfe001
  985.     or.b    d0,$bfe001
  986.     rts
  987.  
  988. setspeed:
  989.     clr.l    d0
  990.     move.b    3(a6),d0
  991.     and.b    #$f,d0
  992.     move.w    d0,speed+2
  993.     rts
  994.  
  995. newrou:    cmp.l    #datach0,a6
  996.     bne.s    next1
  997.     lea    voi1(pc),a4
  998.     rts
  999. next1:    cmp.l    #datach1,a6
  1000.     bne.s    next2
  1001.     lea    voi2(pc),a4
  1002.     rts
  1003. next2:    cmp.l    #datach2,a6
  1004.     bne.s    next3
  1005.     lea    voi3(pc),a4
  1006.     rts
  1007. next3:    lea    voi4(pc),a4
  1008.     rts
  1009.  
  1010. replaystep:                ;** work next pattern-step
  1011.     clr.w    timpos
  1012.     move.l    muzakoffset,a0
  1013.     move.l    a0,a3
  1014.     add.l    #12,a3            ;ptr to soundprefs
  1015.     move.l    a0,a2
  1016.     add.l    #472,a2            ;ptr to pattern-table
  1017.     add.l    #600,a0            ;ptr to first pattern
  1018.     clr.l    d1
  1019.     move.l    trkpos,d0        ;get ptr to current pattern
  1020.     move.b    (a2,d0),d1
  1021.     lsl.l    #8,d1
  1022.     lsl.l    #2,d1
  1023.     add.l    patpos,d1        ;get ptr to current step
  1024.     clr.w    enbits
  1025.     lea    $dff0a0,a5        ;chanel 0
  1026.     lea    datach0(pc),a6
  1027.     bsr.w    chanelhandler
  1028.     lea    $dff0b0,a5        ;chanel 1
  1029.     lea    datach1(pc),a6
  1030.     bsr.w    chanelhandler
  1031.     lea    $dff0c0,a5        ;chanel 2
  1032.     lea    datach2(pc),a6
  1033.     bsr.w    chanelhandler
  1034.     lea    $dff0d0,a5        ;chanel 3
  1035.     lea    datach3(pc),a6
  1036.     bsr.w    chanelhandler
  1037.     move.w    #400,d0            ;** wait a while and set len
  1038. rep1:    dbf    d0,rep1            ;   of oneshot to 1 word
  1039.     move.w    #$8000,d0
  1040.     or.w    enbits,d0
  1041.     move.w    d0,$dff096
  1042.     cmp.w    #1,datach0+14
  1043.     bne.s    rep2
  1044.     clr.w    datach0+14
  1045.     move.w    #1,$dff0a4
  1046. rep2:    cmp.w    #1,datach1+14
  1047.     bne.s    rep3
  1048.     clr.w    datach1+14
  1049.     move.w    #1,$dff0b4
  1050. rep3:    cmp.w    #1,datach2+14
  1051.     bne.s    rep4
  1052.     clr.w    datach2+14
  1053.     move.w    #1,$dff0c4
  1054. rep4:    cmp.w    #1,datach3+14
  1055.     bne.s    rep5
  1056.     clr.w    datach3+14
  1057.     move.w    #1,$dff0d4
  1058.  
  1059. rep5:    add.l    #16,patpos        ;next step
  1060.     cmp.l    #64*16,patpos        ;pattern finished ?
  1061.     bne.s    rep6
  1062.     clr.l    patpos
  1063.     addq.l    #1,trkpos        ;next pattern in table
  1064.     clr.l    d0
  1065.     move.w    numpat,d0
  1066.     cmp.l    trkpos,d0        ;song finished ?
  1067.     bne.s    rep6
  1068.     clr.l    trkpos
  1069. rep6:    movem.l    (a7)+,d0-d7/a0-a6
  1070.     rts
  1071.  
  1072. chanelhandler:
  1073.     move.l    (a0,d1.l),(a6)        ;get period & action-word
  1074.     addq.l    #4,d1            ;point to next chanel
  1075.     clr.l    d2
  1076.     move.b    2(a6),d2        ;get nibble for soundnumber
  1077.     lsr.b    #4,d2
  1078.     beq.s    chan2            ;no soundchange !
  1079.     move.l    d2,d4            ;** calc ptr to sample
  1080.     lsl.l    #2,d2
  1081.     mulu    #30,d4
  1082.     lea    pointers-4(pc),a1
  1083.     move.l    (a1,d2.l),4(a6)        ;store sample-address
  1084.     move.w    (a3,d4.l),8(a6)        ;store sample-len in words
  1085.     move.w    2(a3,d4.l),18(a6)    ;store sample-volume
  1086.  
  1087.     move.l    d0,-(a7)
  1088.     move.b    2(a6),d0
  1089.     and.b    #$f,d0
  1090.     cmp.b    #$c,d0
  1091.     bne.s    ok3
  1092.     move.b    3(a6),8(a5)
  1093.     bra.s    ok4
  1094. ok3:    move.w    2(a3,d4.l),8(a5)    ;change chanel-volume
  1095. ok4:    move.l    (a7)+,d0
  1096.  
  1097.     clr.l    d3
  1098.     move.w    4(a3,d4),d3        ;** calc repeatstart
  1099.     add.l    4(a6),d3
  1100.     move.l    d3,10(a6)        ;store repeatstart
  1101.     move.w    6(a3,d4),14(a6)        ;store repeatlength
  1102.     cmp.w    #1,14(a6)
  1103.     beq.s    chan2            ;no sustainsound !
  1104.     move.l    10(a6),4(a6)        ;repstart  = sndstart
  1105.     move.w    6(a3,d4),8(a6)        ;replength = sndlength
  1106. chan2:    tst.w    (a6)
  1107.     beq.s    chan4            ;no new note set !
  1108.     move.w    22(a6),$dff096        ;clear dma
  1109.     tst.w    14(a6)
  1110.     bne.s    chan3            ;no oneshot-sample
  1111.     move.w    #1,14(a6)        ;allow resume (later)
  1112. chan3:    bsr.w    newrou
  1113.     move.w    (a6),(a4)
  1114.     move.w    (a6),16(a6)        ;save note for effect
  1115.     move.l    4(a6),0(a5)        ;set samplestart
  1116.     move.w    8(a6),4(a5)        ;set samplelength
  1117.     move.w    (a6),6(a5)        ;set period
  1118.     move.w    22(a6),d0
  1119.     or.w    d0,enbits        ;store dma-bit
  1120.     move.w    18(a6),20(a6)        ;volume trigger
  1121. chan4:    rts
  1122.  
  1123. datach0:    dcb.w    11,0
  1124.         dc.w    1
  1125. datach1:    dcb.w    11,0
  1126.         dc.w    2
  1127. datach2:    dcb.w    11,0
  1128.         dc.w    4
  1129. datach3:    dcb.w    11,0
  1130.         dc.w    8
  1131. voi1:        dc.w    0
  1132. voi2:        dc.w    0
  1133. voi3:        dc.w    0
  1134. voi4:        dc.w    0
  1135. pointers:    dcb.l    15,0
  1136. notetable:    dc.w    856,808,762,720,678,640,604,570
  1137.         dc.w    538,508,480,453,428,404,381,360
  1138.         dc.w    339,320,302,285,269,254,240,226  
  1139.         dc.w    214,202,190,180,170,160,151,143
  1140.         dc.w    135,127,120,113,000
  1141. muzakoffset:    dc.l    0
  1142. trkpos:        dc.l    0
  1143. patpos:        dc.l    0
  1144. numpat:        dc.w    0
  1145. enbits:        dc.w    0
  1146. timpos:        dc.w    0
  1147. data:        incbin jh0:sources/tune.dat
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153. ;EQUATES for HARDWARE REGISTERS
  1154.  
  1155.  
  1156. ; NOTE: For more information about these hardware registers, read
  1157. ; either the 'Amiga Hardware Reference Manual' by Addison Wesley or
  1158. ; the 'Amiga System Programmers Guide' by Abacus, both of which
  1159. ; document them fully.
  1160.  
  1161. bltddat    EQU   $000
  1162. dmaconr    EQU   $002
  1163. vposr    EQU   $004
  1164. vhposr    EQU   $006
  1165. dskdatr    EQU   $008
  1166. joy0dat    EQU   $00A
  1167. joy1dat    EQU   $00C
  1168. clxdat    EQU   $00E
  1169.  
  1170. adkconr    EQU   $010
  1171. pot0dat    EQU   $012
  1172. pot1dat    EQU   $014
  1173. potinp    EQU   $016
  1174. serdatr    EQU   $018
  1175. dskbytr    EQU   $01A
  1176. intenar    EQU   $01C
  1177. intreqr    EQU   $01E
  1178.  
  1179. dskpt    EQU   $020
  1180. dsklen    EQU   $024
  1181. dskdat    EQU   $026
  1182. refptr    EQU   $028
  1183. vposw    EQU   $02A
  1184. vhposw    EQU   $02C
  1185. copcon    EQU   $02E
  1186. serdat    EQU   $030
  1187. serper    EQU   $032
  1188. potgo    EQU   $034
  1189. joytest    EQU   $036
  1190. strequ    EQU   $038
  1191. strvbl    EQU   $03A
  1192. strhor    EQU   $03C
  1193. strlong    EQU   $03E
  1194.  
  1195. bltcon0    EQU   $040
  1196. bltcon1    EQU   $042
  1197. bltafwm    EQU   $044
  1198. bltalwm    EQU   $046
  1199. bltcpth    EQU   $048
  1200. bltcptl EQU   $04A
  1201. bltbpth    EQU   $04C
  1202. bltbptl EQU   $04E
  1203. bltapth    EQU   $050
  1204. bltaptl EQU   $052
  1205. bltdpth    EQU   $054
  1206. bltdptl EQU   $056
  1207. bltsize    EQU   $058
  1208.  
  1209. bltcmod    EQU   $060
  1210. bltbmod    EQU   $062
  1211. bltamod    EQU   $064
  1212. bltdmod    EQU   $066
  1213.  
  1214. bltcdat    EQU   $070
  1215. bltbdat    EQU   $072
  1216. bltadat    EQU   $074
  1217.  
  1218. dsksync    EQU   $07E
  1219.  
  1220. cop1lc    EQU   $080
  1221. cop2lc    EQU   $084
  1222. copjmp1    EQU   $088
  1223. copjmp2    EQU   $08A
  1224. copins    EQU   $08C
  1225. diwstrt    EQU   $08E
  1226. diwstop    EQU   $090
  1227. ddfstrt    EQU   $092
  1228. ddfstop    EQU   $094
  1229. dmacon    EQU   $096
  1230. clxcon    EQU   $098
  1231. intena    EQU   $09A
  1232. intreq    EQU   $09C
  1233. adkcon    EQU   $09E
  1234.  
  1235.  
  1236. aud0vol    EQU   $0A8
  1237. aud1vol EQU   $0B8
  1238. aud2vol    EQU   $0C8
  1239. aud3vol    EQU   $0D8
  1240.  
  1241. bpl1pth    EQU   $0E0
  1242. bpl1ptl    EQU   $0E2
  1243. bpl2pth    EQU   $0E4
  1244. bpl2ptl    EQU   $0E6
  1245. bpl3pth    EQU   $0E8
  1246. bpl3ptl    EQU   $0EA
  1247. bpl4pth    EQU   $0EC
  1248. bpl4ptl    EQU   $0EE
  1249. bpl5pth    EQU   $0F0
  1250. bpl5ptl    EQU   $0F2
  1251. bpl6pth    EQU   $0F4
  1252. bpl6ptl    EQU   $0F6
  1253.  
  1254. bplcon0    EQU   $100
  1255. bplcon1    EQU   $102
  1256. bplcon2    EQU   $104
  1257. bpl1mod    EQU   $108
  1258. bpl2mod    EQU   $10A
  1259.  
  1260. bpldat    EQU   $110
  1261.  
  1262. spr0pth    EQU   $120
  1263. spr0ptl EQU   $122
  1264. spr1pth EQU   $124
  1265. spr1ptl EQU   $126
  1266. spr2pth    EQU   $128
  1267. spr2ptl EQU   $12A
  1268. spr3pth EQU   $12C
  1269. spr3ptl EQU   $12E
  1270. spr4pth    EQU   $130
  1271. spr4ptl EQU   $132
  1272. spr5pth EQU   $134
  1273. spr5ptl EQU   $136
  1274. spr6pth    EQU   $138
  1275. spr6ptl EQU   $13A
  1276. spr7pth EQU   $13C
  1277. spr7ptl EQU   $13E
  1278.  
  1279. spr0pos    EQU   $140
  1280. spr1pos    EQU   $148
  1281. spr2pos EQU   $150
  1282. spr3pos EQU   $158
  1283. spr4pos EQU   $160
  1284. spr5pos EQU   $168
  1285. spr6pos EQU   $170
  1286. spr7pos EQU   $178
  1287.  
  1288. spr0ctl    EQU   $142
  1289. spr1ctl    EQU   $14A
  1290. spr2ctl EQU   $152
  1291. spr3ctl EQU   $15A
  1292. spr4ctl EQU   $162
  1293. spr5ctl EQU   $16A
  1294. spr6ctl EQU   $172
  1295. spr7ctl EQU   $17A
  1296.  
  1297. spr0data EQU  $144
  1298. spr1data EQU  $14c
  1299. spr2data EQU  $154
  1300. spr3data EQU  $15c
  1301. spr4data EQU  $164
  1302. spr5data EQU  $16c
  1303. spr6data EQU  $174
  1304. spr7data EQU  $17c
  1305.  
  1306.  
  1307. spr0datb EQU  $146
  1308. spr1datb EQU  $14e
  1309. spr2datb EQU  $156
  1310. spr3datb EQU  $15e
  1311. spr4datb EQU  $166
  1312. spr5datb EQU  $16e
  1313. spr6datb EQU  $176
  1314. spr7datb EQU  $17e
  1315.  
  1316. col0    EQU   $180
  1317. col1     EQU   $182
  1318. col2    EQU   $184
  1319. col3    EQU   $186
  1320. col8    EQU   $190
  1321. col16   EQU   $1A0    
  1322.  
  1323.   
  1324.  
  1325.