home *** CD-ROM | disk | FTP | other *** search
/ Falcon 030 Power 2 / F030_POWER2.iso / ST_STE / MAGS / STOSBTS1.ARJ / stosbts1.msa / PROGRAMM / MORECOLS.S < prev    next >
Text File  |  1987-04-22  |  39KB  |  1,771 lines

  1.  
  2.         bra     start
  3.  
  4. pic_name        dc.b "\data\happ.pi1",0
  5. font_name       dc.b "\data\happen.fon",0
  6.                 even
  7.  
  8. start   clr.l   -(sp)           supervisor mode on
  9.         move.w  #$20,-(sp)
  10.         trap    #1
  11.         move.l  d0,savereg
  12.         
  13.         move.l  $44e,a0         current physbase
  14.         sub.l   #$2000,a0       go back a bit because our 50-60 hz...
  15.         move.l  a0,physbase     ..trick would push us into rom
  16.  
  17.         lea     stack,a7        stack needed
  18.  
  19.         move.l  #moff,-(sp)     mouse off
  20.         clr.w   -(sp)
  21.         move.w  #25,-(sp)
  22.         trap    #14
  23.         addq.l  #8,sp
  24.         dc.w    $a00a
  25.  
  26.         move.w  #4,-(sp)                get resolution        
  27.         trap    #14
  28.         addq.l  #2,sp
  29.         move.w  d0,oldrez               and save it
  30.         move.l  $44e,oldscr
  31.         move.l  physbase,screen
  32.  
  33.         movem.l $ffff8240.w,d0-d7       save colors...
  34.         movem.l d0-d7,oldpal            ..quickly
  35.  
  36.         move.w  #0,-(sp)                set low res
  37.         move.l  screen(pc),-(sp)        phys    
  38.         move.l  screen(pc),-(sp)        log
  39.         move.w  #5,-(sp)
  40.         trap    #14
  41.         add.l   #12,sp
  42.  
  43. *       bra     hi                      avoid loading degas pic
  44.  
  45. * load a degas picture at a specific address 
  46.         move.w  #0,-(sp)
  47.         move.l  #pic_name,-(sp) open file       
  48.         move.w  #$3D,-(sp)
  49.         trap    #1
  50.         addq.l  #8,sp
  51.         move.w  d0,handle
  52.  
  53.         move.l  screen,d0       load direct to current screen
  54.         sub.l   #34,d0
  55.         sub.l   #1*160,d0       hide the palette data
  56.         move.l  d0,-(sp) 
  57.         move.l  #34,-(A7)       read it
  58.         move.w  handle,-(A7)
  59.         move.w  #$3F,-(A7)
  60.         trap    #1
  61.         adda.l  #12,A7
  62.  
  63.         move.l  screen,d0       load direct to current screen
  64.         add.l   #0*160,d0      push the picture 40 lines DOWN
  65. ;                               inside the bottom border!
  66.         move.l  d0,-(sp) 
  67.         move.l  #32000,-(A7)    read picture
  68.         move.w  handle,-(A7)
  69.         move.w  #$3F,-(A7)
  70.         trap    #1
  71.         adda.l  #12,A7
  72.  
  73.         move.w  handle,-(SP)
  74.         move.w  #$3E,-(SP)
  75.         trap    #1              close file
  76.         addq.l  #4,SP
  77.  
  78.         move.l  screen,a0
  79.         sub.l   #192,a0         locate palette's origin
  80.         lea     palette,a1      destination
  81.         move.l  #16-1,d0
  82. paloop  move.w  (a0)+,(a1)+     save it
  83.         dbra    d0,paloop
  84.  
  85.         move.l  #font_name,-(A7)        open fontish c/set
  86.         move.w  #$3D,-(A7)
  87.         trap    #1
  88.         move.w  d0,handle
  89.         move.l  #font,-(A7)     load it here (end of this prog)
  90.         move.l  #1953,-(A7)     1953 bytes
  91.         move.w  handle,-(A7)
  92.         move.w  #$3f,-(a7)      read file
  93.         trap    #1
  94.         adda.l  #$c,A7  
  95.         move.w  handle,-(a7)
  96.         move.w  #$3e,-(a7)
  97.         trap    #1              close file
  98.         addq.l  #4,a7 
  99.  
  100.         move.l  screen,d5
  101.         add.l   #103*160+158,d5  line of scroll number 1
  102.         move.l  d5,line_one     
  103.         move.w  #1,speed
  104.         move.l  #text_1,text_address    budgie message in scroll variable
  105.  
  106.         move.l  #scroll,a5      enable scroll interrupt 
  107.         bsr     enable_vbi
  108.  
  109.  
  110.  
  111. *-----------------------------------------------
  112.  
  113.         bsr     hblon           enable my interrupts#
  114.     MOVE.L #VBI,$4de
  115. *------------------------------------------------
  116. *------------------------------------------------
  117. get     
  118.         bsr     getkey
  119.         cmp.b   #$61,d0         esc
  120.         beq     quit
  121.  
  122.         bra     get
  123. *-------------------------------------------------
  124. getkey  
  125.         move.w  #$ff,-(sp)      
  126.         move.w  #6,-(sp)
  127.         trap    #1
  128.         addq.l  #4,sp
  129.         swap    d0
  130.         rts
  131. *------------------------------------------------
  132. quit
  133.         move.l  #scroll,a5      cut out message scroll
  134.         bsr     disable_vbi
  135.  
  136.  
  137.  
  138.         bsr     hbloff          disable MFP interrupts
  139.  
  140.         movem.l oldpal,d0-d7    old colors back
  141.         movem.l d0-d7,$ffff8240.w
  142.         move.w  oldrez,-(sp)    old resolution back
  143.         move.l  oldscr,-(sp)
  144.         move.l  oldscr,-(sp)
  145.         move.w  #5,-(sp)
  146.         trap    #14
  147.         add.l   #12,sp
  148.  
  149.         move.l  #mon,-(sp)      mouse on
  150.         clr.w   -(sp)
  151.         move.w  #25,-(sp)
  152.         trap    #14
  153.         addq.l  #8,sp
  154.         dc.w    $a009
  155.  
  156.         move.l  savereg,-(sp)   leave supervisor
  157.         move.w  #$20,-(sp)
  158.         trap    #1
  159.         addq.l  #6,sp
  160.  
  161.         clr.w   -(sp)           quit
  162.         trap    #1
  163.  
  164.  
  165.  
  166. *------------------------------------------------
  167.         move.l  #scroll,a5      enable scroll interrupt 
  168.         bsr     disable_vbi
  169.         bsr     hbloff          disable interrupts
  170.  
  171.         movem.l oldpal,d0-d7    old colors back
  172.         movem.l d0-d7,$ffff8240.w
  173.         move.w  oldrez,-(sp)    old resolution back
  174.         move.l  oldscr,-(sp)
  175.         move.l  oldscr,-(sp)
  176.         move.w  #5,-(sp)
  177.         trap    #14
  178.         add.l   #12,sp
  179.  
  180.         move.l  #mon,-(sp)      mouse on
  181.         clr.w   -(sp)
  182.         move.w  #25,-(sp)
  183.         trap    #14
  184.         addq.l  #8,sp
  185.         dc.w    $a009
  186.  
  187.         move.l  savereg,-(sp)   leave supervisor
  188.         move.w  #$20,-(sp)
  189.         trap    #1
  190.         addq.l  #6,sp
  191.  
  192.         clr.w   -(sp)           sayonara!
  193.         trap    #1
  194.  
  195. oldrez:         dc.w    0
  196. oldscr:         dc.l    0
  197. savereg:        dc.l    0
  198. screen:         dc.l    0
  199. oldpal:         ds.w    16
  200. mon:            dc.b    $08
  201. moff:           dc.b    $12
  202.  
  203.                 even
  204.  
  205. *-------------------------------------------------------
  206.  
  207. ; see the article for comments about these addresses
  208.  
  209. hblon   move.l  $120,oldtb      save old timer B vector
  210.         move.l  $70,old4        save old vb vector
  211.         move.l  $70,new4b+2     now, new vb routine will jump to
  212. ;                               old one afterwards
  213.         move.b  $fffffa07,old07 timer B enable
  214.         move.b  $fffffa09,old09 timer C enable
  215.         move.b  $fffffa0f,old0f timer B in-service
  216.         move.b  $fffffa11,old11 timer C in-service
  217.         move.b  $fffffa1b,old1b timer B control
  218.         and.b   #$df,$fffa09    disable timer C
  219.         and.b   #$fe,$fffa07    disable timer B 
  220.         move.l  #newtb1,$120    new timer B vector
  221.         move.l  #new4,$70       new vb vector
  222.         or.b    #1,$fffffa07    enable timer B
  223.         or.b    #1,$fffffa13    set timer B mask
  224.         rts
  225.  
  226. hbloff  move.w  sr,-(sp)
  227.         move.w  #$2700,sr       cut out all interrupts
  228.         move.b  old07(pc),$fffffa07 restore all old vectors
  229.         move.b  old09(pc),$fffffa09
  230.         move.b  old0f(pc),$fffffa0f
  231.         move.b  old11(pc),$fffffa11
  232.         move.b  old1b(pc),$fffffa1b
  233.         move.l  oldtb,$120
  234.         move.l  old4,$70
  235.         move.w  (sp)+,sr
  236.         rts
  237.  
  238. old4:           dc.l    0
  239. oldtb:          dc.l    0
  240. old07:          dc.b    0
  241. old09:          dc.b    0
  242. old0f:          dc.b    0
  243. old11:          dc.b    0
  244. old1b:          dc.b    0
  245.  
  246.         even
  247.  
  248. ; This is the new VBL handler
  249. new4    clr.b   $fffffa1b.w     disable timer B
  250.         move.b  #1,$fffffa21   first raster 36 lines away
  251.         move.b  #8,$fffffa1b    enable timer B
  252.         move.w  #$000,$ff8240   initial border (black)
  253.         move.l  #newtb1,$120    timer B vector
  254. new4b   jmp     $12345678       pass ontrol to OLD vb vector
  255.  
  256. newtb1  clr.b   $fffffa1b.w     timer stop
  257.         movem.l d0-d7/a0-a1,-(sp)  save from corruption
  258.         move.w  #$fa21,a1       timer B data register (ie scanline!)
  259.         move.b  #40,(a1)        next interrupt at 22+36= line 58
  260.         move.l  #newtb2,$120    set new timer B vector
  261.         move.b  #8,$fffffa1b.w  allow timer B again
  262.  
  263.         moveq.w #48-1,d2        number of colors in table
  264. ; change above figure to 48 and we'll get 48 lines with different
  265. ; colors BUT, next interrupt further down will be unstable..
  266.         move.l  #pal1,a0        pal1: color table
  267. ; I am now randomly modifying A0 to point ANYWHERE in memory
  268.         move.l  $466,d3         random value
  269.         lsl.l   #1,d3           make it even
  270.         move.l  #pal3,a0           point to it
  271.         add.l   #100,a0          add 22 words
  272.  
  273. ; we can now clearly see these 22 lines grouped at the top of picture
  274. ; from line 36 onwards (22 different random colors)
  275.  
  276. loop    move.b  (a1),d0         get value of timer B
  277. wait    cmp.b   (a1),d0         wait one scanline !
  278.         beq     wait
  279.         move.w  -(a0),$ff8240   use those randoms colors (backwards)
  280.  
  281. ;       move.w  (a0)+,d1
  282. ;       move.w  d1,$ff8240      set colors
  283. ;       move.w  d1,$ff8242
  284. ;       move.w  d1,$ff8244
  285. ;       move.w  d1,$ff8246
  286. ;       move.w  d1,$ff8248
  287. ;       move.w  d1,$ff824a
  288. ;       move.w  d1,$ff824c
  289. ;       move.w  d1,$ff824e
  290.         dbra    d2,loop
  291.  
  292.         movem.l palette,d1-d7/a0
  293. loopx   move.b  (a1),d0         more waiting for...
  294. waitx   cmp.b   (a1),d0         ... next scanline
  295.         beq     waitx
  296.         movem.l d1-d7/a0,$ff8240
  297.                 
  298.         movem.l (sp)+,d0-d7/a0-a1
  299.         bclr    #0,$fffffa0f.w  end of interrupt
  300.         rte
  301.  
  302. newtb2  clr.b   $fffffa1b.w     timer stop
  303.         movem.l d0-d7/a0-a1,-(sp)
  304.         move.w  #$fa21,a1
  305.         move.b  #76,(a1)        next interrupt at 22+36+76= line 134
  306.         move.l  #newtb3,$120
  307.         move.b  #8,$fffffa1b.w
  308.  
  309. ; now follows the second lot of lines from location 58 to 80
  310.         move.w  #50-1,d1        raster is 22 scanlines deep
  311.         move.l  #pal3,d2         get a random number
  312.         lsl.l   #1,d2           make sure it's even
  313.         move.l  #pal3,a0           that's where we'll get our colors from!
  314. loop2   move.b  (a1),d0
  315. wait2   cmp.b   (a1),d0         see if scanline has moved on
  316.         beq     wait2
  317.         move.w  (a0)+,$ff8240   now use those totally random colors
  318.         dbra    d1,loop2
  319. *--------------------------
  320.  
  321.  
  322.         movem.l palette,d1-d7/a0        restore original palette
  323.         move.b  (a1),d0
  324. waity   cmp.b   (a1),d0
  325.         beq     waity
  326.         movem.l d1-d7/a0,$ff8240
  327.                 
  328.         movem.l (sp)+,d0-d7/a0-a1
  329.         bclr    #0,$fffffa0f.w  end of interrupt
  330.         rte
  331.  
  332. newtb3  clr.b   $fffffa1b.w     timer stop
  333.         movem.l d0-d7/a0-a1,-(sp)
  334.         move.w  #$fa21,a1
  335.         move.b  #64,(a1)        next interrupt 134+64=198 (kill border)
  336. ; the above figure is critical. It must add up to line 198
  337. ; less and bottom border doesn't open. More and we go over the top
  338.         move.l  #killborder,$120
  339.         move.b  #8,$fffffa1b.w
  340.  
  341. ; now we have the third group of colors, again random
  342.         move.w  #21-1,d1        number of scanlines wanted
  343.         move.l  #pal2,a0        where colors are stored
  344. loop3   move.b  (a1),d0
  345. wait3   cmp.b   (a1),d0
  346.         beq     wait3
  347.         move.w  (a0)+,$ff8242           the Budgie logo this time
  348.         dbra    d1,loop3
  349.  
  350.         movem.l palette,d1-d7/a0        again restore original palette
  351.         move.b  (a1),d0
  352. waitz   cmp.b   (a1),d0
  353.         beq     waitz
  354.         movem.l d1-d7/a0,$ff8240
  355.                 
  356.         movem.l (sp)+,d0-d7/a0-a1
  357.         bclr    #0,$fffffa0f.w  end of interrupt
  358.         rte
  359.  
  360. killborder
  361.         clr.b   $fffffa1b.w     timer stop
  362. *       bra     bill            jumping to bill will skip the 50-60 hz bit
  363.         movem.l d0-d1/a0-a1,-(sp)
  364.         move.w  #$fa21,a1
  365.         move.b  #0,(a1) changing this number had little effect
  366.         move.b  #8,$fffffa1b.w  this line is essential
  367.  
  368.         move.b  (a1),d0
  369. wait4   cmp.b   (a1),d0         wait last scanline
  370.         beq     wait4           
  371.         clr.b   $ffff820a.w     60 Hz
  372.         moveq   #4,d0
  373. nopi2   nop                     wait a while
  374.         dbf     d0,nopi2
  375.         move.b  #2,$ffff820a.w  50 Hz
  376.         movem.l (sp)+,d0-d1/a0-a1 
  377. bill      
  378.         bclr    #0,$fffffa0f.w  end of interrupt
  379.         rte                     final exit 
  380.  
  381. *------------------------------------------
  382.  
  383. pal1    dc.w    $100,$200,$300,$400,$500,$600,$700,$701
  384.         dc.w    $702,$703,$704,$705,$706,$707,$717,$727
  385.         dc.w    $737,$747,$757,$767,$777,$767,$757,$747
  386.         dc.w    $001,$002,$003,$004,$005,$006,$007,$107
  387.         dc.w    $207,$307,$407,$507,$607,$707,$717,$727
  388.         dc.w    $737,$747,$757,$767,$777,$776,$775,$774        
  389. pal2    dc.w    $010,$020,$030,$040,$050,$060,$070,$071
  390.         dc.w    $072,$073,$074,$075,$076,$077,$177,$277
  391.         dc.w    $377,$477,$577,$677,$777,$666,$555,$444
  392. pal3    dc.w    $001,$002,$003,$004,$005,$006,$007,$107
  393.         dc.w    $207,$307,$407,$507,$607,$707,$706,$705
  394.         dc.w    $704,$703,$702,$701,$700,$710,$720,$730
  395.         dc.w    $740,$750,$760,$770,$670,$570,$470,$370
  396.         dc.w    $270,$170,$070,$060,$050,$040,$030,$020
  397.         dc.w    $010,$000,$001,$002,$003,$004,$005,$006
  398.         
  399. palette         ds.w    32
  400.                 ds.w    310
  401.  
  402. stack           dc.l    0
  403. physbase        dc.l    0
  404. screen_0        dc.l    0
  405. handle          dc.w    0
  406.  
  407.         even
  408. *----------------
  409. *       SET a Sequence of VBI routines  [ C.Maertens ] 20/9/87
  410. * Each routine has to be enabled or disabled separately
  411. * Address of routine expected in A5
  412. * first available slot is usually the second one, first being gem
  413. * move.l #myroutine,$4d2 also does the same job
  414. * see example of TWO vbi's at once in Operation Angelica
  415. enable_vbi
  416.         movem.l a0-a5,-(sp)
  417.         move.l  $456,a0
  418. enab1   tst.l   (a0)            is is nought? (free)
  419.         beq     enab2
  420.         adda.l  #4,a0
  421.         bra     enab1
  422. enab2   move.l  a5,(a0)         slot in this routine
  423.         movem.l (sp)+,a0-a5
  424.         rts
  425. *------------
  426. disable_vbi
  427.         movem.l d0/a0-a5,-(sp)  a5 holds address of routine
  428.         move.l  $456,a0
  429. disab1  cmp.l   (a0),a5         contents of $456 same as routine?
  430.         beq     disab2
  431. disab3  adda.w  #4,a0           try next one
  432.         bra     disab1
  433. disab2  move.l  #0,(a0)         switch it off
  434.         movem.l (sp)+,d0/a0-a5
  435.         rts
  436. *---------------------------
  437. * message scroller ONE
  438. scroll
  439.         tst.w   vvar1
  440.         bne     tscr18
  441.         cmpi.w  #16,vvar2
  442.         bls.s   tscr6
  443.         clr.w   vvar2
  444. tscr3   movea.l text_address,a0 scroll variable (holds address of text)
  445.         moveq   #0,d0
  446.         move.b  (a0)+,d0
  447.         cmpi.b  #$ff,d0         end of main message?
  448.         beq     tscr11
  449.      
  450. tscr4   move.l  a0,text_address
  451.         cmp.b   #$20,d0
  452.         ble     tscr12
  453. tscr5   subi.b  #$20,d0
  454.         lea     font,a1         where font is loaded
  455.         lsl.l   #5,d0
  456.         adda.l  d0,a1
  457.         lea     workspace,a2
  458.         move.l  (a1)+,(a2)+
  459.         move.l  (a1)+,(a2)+
  460.         move.l  (a1)+,(a2)+
  461.         move.l  (a1)+,(a2)+
  462.         move.l  (a1)+,(a2)+
  463.         move.l  (a1)+,(a2)+
  464.         move.l  (a1)+,(a2)+
  465.         move.l  (a1)+,(a2)+
  466. tscr6   move.w  speed,d0
  467. tscr7   
  468.         move.l  screen,d7
  469.         add.l   #128*160,d7             line of scroll number 2
  470.         move.l  d7,old_screen_pos
  471.         move.l  d7,a2  
  472.         lea     workspace,a1
  473.         moveq   #15,d1
  474. tscr8   lsl     (a1)+
  475.         roxl    $98(a2)
  476.         roxl    $90(a2)
  477.         roxl    $88(a2)
  478.         roxl    $80(a2)
  479.         roxl    $78(a2)
  480.         roxl    $70(a2)
  481.         roxl    $68(a2)
  482.         roxl    $60(a2)
  483.         roxl    $58(a2)
  484.         roxl    $50(a2)
  485.         roxl    $48(a2)
  486.         roxl    $40(a2)
  487.         roxl    $38(a2)
  488.         roxl    $30(a2)
  489.         roxl    $28(a2)
  490.         roxl    $20(a2)
  491.         roxl    $18(a2)
  492.         roxl    $10(a2)
  493.         roxl    8(a2)
  494.         roxl    (a2)
  495.         adda.l  #$a0,a2
  496.         dbf     d1,tscr8
  497.         addq.w  #1,vvar2
  498.         dbf     d0,tscr7
  499. tscr9   move.l  old_screen_pos,a0 
  500.         movea.l line_one,a1     the message at the top
  501.     adda.l  #2,a1
  502.         moveq   #$f,d0
  503. tscr10  
  504.         move.w  (a0),(a1)
  505.         move.w  8(a0),8(a1)
  506.         move.w  $10(a0),$10(a1)
  507.         move.w  $18(a0),$18(a1)
  508.         move.w  $20(a0),$20(a1)
  509.         move.w  $28(a0),$28(a1)
  510.         move.w  $30(a0),$30(a1)
  511.         move.w  $38(a0),$38(a1)
  512.         move.w  $40(a0),$40(a1)
  513.         move.w  $48(a0),$48(a1)
  514.         move.w  $50(a0),$50(a1)
  515.         move.w  $58(a0),$58(a1)
  516.         move.w  $60(a0),$60(a1)
  517.         move.w  $68(a0),$68(a1)
  518.         move.w  $70(a0),$70(a1)
  519.         move.w  $78(a0),$78(a1)
  520.         move.w  $80(a0),$80(a1)
  521.         move.w  $88(a0),$88(a1)
  522.         move.w  $90(a0),$90(a1)
  523.         move.w  $98(a0),$98(a1)
  524.         adda.l  #$a0,a0
  525.         adda.l  #$a0,a1
  526.         dbf     d0,tscr10
  527.         rts
  528. tscr11  lea     text_1,a0       at end of main message, we come..
  529.         move.b  #32,d0          ..here again
  530.         bra     tscr4
  531.  
  532. tscr12  cmp.b   #1,d0           speeds 1 slow  4 fast  5 stop
  533.         beq     tscr13
  534.         cmp.b   #2,d0
  535.         beq     tscr14
  536.         cmp.b   #3,d0
  537.         beq     tscr15
  538.         cmp.b   #4,d0
  539.         beq     tscr16
  540.         cmp.b   #5,d0
  541.         beq     tscr17
  542.         bra     tscr5
  543. tscr13  move.w  #0,speed
  544.         bra     tscr3
  545. tscr14  move.w  #1,speed
  546.         bra     tscr3
  547. tscr15  move.w  #2,speed
  548.         bra     tscr3
  549. tscr16  move.w  #5,speed
  550.         bra     tscr3
  551. tscr17  move.w  #50,vvar1
  552.         move.w  #16,vvar2
  553.         bra     tscr18
  554. tscr18  subi.w  #1,vvar1
  555.         bra     tscr9
  556.  
  557.  
  558. * TEXT FOR MESSAGE *
  559. * speed: 1 to 4 (slow-fast)  5 is stop    255 is end
  560. text_1  
  561.         dc.b    3," HELLO AND WELCOME TO EDDIES DEMO........ PRODUCED"
  562.     dc.b    3," USING THE ODD ROUTINE FROM GARY WHEATON AND THE SHAPESHIFTERS ( WHAT NICE GUY'S )"
  563.     DC.B    3," I HAVE CREATED THIS DEMO ENTITLED 'MORE COLOURS THAN YOURS' DEMO (TO SHOW IAN I CAN PRODUCE SOMETHING IN 68000 ASWELL."
  564.     DC.B    3," LOOK AT THE TOP, AT LEAST 100 COLOURS !!!!!!, PLUS THE BOIZ LOGO,"
  565.     DC.B    3," AND THE GREEN SCROLLY TEXT !!!!. AND FOR YOUR PLEASURE AND FOR MY EGO "
  566.     DC.B    3," I HAVE ADDED A SHORT TUNE (THE TUNE FROM GALAXIA) WITH SPECTRUM ANALYSER........"
  567.     DC.B    3," NOW HERE ARE THE GREETINGS.... HI TO CAMY, GARY, SIMON AT BUDGIE UK, I MUST ALSO SAY HI TO"
  568.     DC.B    3," MANIKIN, SAMMY JOE AND SPAZ OF THE LOST BOYS ( GITS! HOW COME YOU CAN DO ALL THOSE FLASH DEMOS !!!)"
  569.     DC.B    3," ...WELL.... ITS  8 MINUTES PAST 11 (PM) ON MONDAY 14 MAY 1990 AND I MUST GO TO BED !.....SEE YOU LATER"
  570.     DC.B    3," ..............GONE YET?"
  571.     DC.B    3," ......BYE,BYE.........."
  572.     dc.b     3," A BOIZ PRODUCTION",5
  573.     DC.B    3,"                 "
  574.     DC.B    3," COPYRIGHT 1990 THE HAPPENING BOIZ AND BUDGIE UK"
  575.     DC.B    3,"                 "
  576.     DC.B    3," ...HERE COMES THE NEWS !!!!"
  577.     dc.b    3,"                       "
  578.         DC.B    255
  579.         even
  580.  
  581. vvar1           ds.w    1
  582. vvar2           ds.w    1
  583. text_address    ds.l    6
  584. workspace       ds.l    8       temp storage for character
  585. speed           ds.w    1
  586.  
  587. line_one        ds.l    1
  588. old_screen_pos  dc.l    0
  589.                 ds.w    8
  590.  
  591. font            ds.b    2192    c/set is physically loaded HERE
  592.  
  593.  
  594.                 ds.w    24      spare
  595.  
  596.  
  597. *---------------------------
  598. * star field  (Gary Wheaton / Shapeshifters)
  599.  
  600.  
  601.  
  602. * STARFIELD [Gary Wheaton  October 88 ]
  603. * PLOTTER & GET POINT [ G.Wheaton. ]
  604. * with a dual screen, the problem is unplotting the correct screen
  605. * This routine plots a number of dots (stars) on the screen,
  606. * then replaces those dots with black,
  607. * then moves them about when joystick is moved
  608. * as used in Zenith and Ace invaders
  609.  
  610. starfield
  611.     MOVE    $FF8240,bcka
  612.     MOVE    #0,$ff8240
  613.     BRA    STARa
  614. *    at this point Gary has a trap call (joy vector)
  615. JOYa    DC.W    0
  616. HJTBa    DC.B    0,0,0,0,1,1,1,0,-1,-1,-1
  617. VJTBa    DC.B    0,-1,1,0,0,-1,1,0,0,-1,1
  618.  
  619.  
  620.  
  621.  
  622. STARa    MOVE.L     #HTABa,A4
  623.  
  624. *    bsr    vtsync
  625.     CLR.L    D0
  626.     MOVE    JOYa,A0
  627.     MOVE.B    (A0),D0
  628. *    move.b    joyport1,d0
  629.     CLR    D4
  630.     CLR    D6
  631.     MOVE.B    HJTBa(PC,D0),D4         \HZ
  632.     MOVE.B    VJTBa(PC,D0),D6         \VT
  633.  
  634. LP0a    MOVE.B     #0,D5        this must be the unplot
  635.     MOVE     (A4),D0
  636.     MOVE.B     91(A4),D1
  637.     BSR    CPLOTTa
  638.     MOVE    180(A4),D0
  639.     CMP.B    #10,D4
  640.     BGT    OKa
  641.     move.b    #2,d4    test only
  642.     CMP.B    #0,D4
  643.     BEQ    OK1a
  644.     BMI    RIGHTa 
  645.     SUB    D0,(A4)
  646.     BPL    OK1a
  647.     MOVE     #320,(A4)
  648.     MOVE.B    91(A4),D1 
  649.     ROL.B    #1,D1           RANDOMIZE VERT A BIT
  650.     MOVE.B     D1,91(A4) 
  651.     BRA    OK1a
  652. RIGHTa    ADD    D0,(A4)
  653.         CMP    #320,(A4)
  654.     BLT OK1a
  655.     CLR (A4)
  656.                 *\SHOULD RAND HERE ALSO
  657. OK1a    CMP.B #0,D6
  658.     BEQ OKa
  659.     BPL UPa
  660.     SUB D0,90(A4)
  661.     BPL OK2a 
  662.     MOVE #199,90(A4)
  663.     BRA OK2a
  664.  
  665. UPa    ADD    D0,90(A4)
  666.     CMP    #200,90(A4)
  667.     BLT    OK2a
  668.     CLR    90(A4)
  669. OK2a
  670. OKa    MOVE.B     91(A4),D1      \V
  671.     MOVE     (A4),D0
  672.     MOVE.B     D1,D5
  673.     BSR     CPLOTTa
  674.     SUB.L     #2,A4
  675.     CMP.L     #TRa,A4
  676.     BGT     LP0a
  677. *    dbra    d7,stara
  678. SM    
  679. *    DC.W    $A009           SHOW MOUSE
  680.     MOVE    bcka,$FF8240
  681.     RTS            exit (bombs quite ok) should call trap
  682. bcka    dc.w 0
  683. *-----------
  684. CPLOTTa     AND.L     #15,D5        color
  685.     AND     #255,D1        x
  686.     CMP     #320,D0        y
  687.     BLT     PLOa   
  688.     RTS
  689. PLOa     MOVE     D0,D3
  690.     LSR.W     #3,D0
  691.     MOVE     D0,D2
  692.     AND     #7,D3
  693.     AND     #1,D0
  694.     AND    #65534,D2
  695.     ASL      #2,D2
  696.     ADD     D2,D0
  697.     MULU     #160,D1
  698.     ADD.W     D1,D0
  699.     MOVE.L    a6,a0 work_screen,a0 $44E,A0 MOVE.L #ZZ,A0 (zz=physbase)
  700.     ADD.L      D0,A0
  701.     MOVE.L     A0,A1
  702.     MOVE.B     TBLa(PC,D3),D0 \GET MASK
  703.  
  704.   
  705. PLOKa    AND.B     D0,(A0) \C.0:PL.X,Y
  706.     AND.B     D0,2(A0) \
  707.     AND.B     D0,4(A0)
  708.          AND.B     D0,6(A0)
  709.     
  710.     CMP.B     #0,D5   \COLOR TO PLOT
  711.     BNE     COLOa      \IF>0 THEN PLOT
  712.     RTS           \ELSE RTS 
  713. *---------
  714.  
  715. *       \COLOR 0 MASKS
  716. tbla     DC.B    127,255-64,223,239
  717.         DC.B    247,251,253,254  
  718. COLOa    EOR.B   #255,D0     \REVERSE BIT PATTN
  719.         ASL     #2,D5         \COL*4
  720.         MOVE.L  #XGOTOa,A0
  721.         ADD.W   D5,A0
  722.         MOVE.L  (A0),A0
  723.         JMP     (A0)           \GOTO COLOR
  724. C15a     OR.B    D0,6(A1)  \COLOR 15
  725. C14a     OR.B    D0,2(A1)
  726. C10a     OR.B    D0,(A1)
  727. C2a      OR.B    D0,4(A1)
  728.         RTS
  729. *----------
  730. C3a      OR.B    D0,4(A1)   
  731. C1a      OR.B    D0,6(A1)   \COLOR 1 ENTRY
  732.         RTS
  733. C5a      OR.B    D0,2(A1)
  734.         OR.B    D0,6(A1)
  735.         RTS
  736. C7a      OR.B    D0,6(A1)
  737. C6a      OR.B    D0,4(A1)
  738. C4a      OR.B    D0,2(A1)
  739.         RTS
  740. C11a     OR.B    D0,4(A1)
  741. C9a      OR.B    D0,6(A1)
  742. C8a      OR.B    D0,(A1)
  743.         RTS
  744. C13a     OR.B    D0,6(A1)
  745. C12a     OR.B    D0,(A1)
  746.         OR.B    D0,2(A1) 
  747.         RTS
  748. C16a     RTS
  749. *         \ JSR TABLE interesting way
  750. XGOTOa   DC.L    C1a,C1a,C2a,C3a,C4a,C5a,C6a,C7a,C8a
  751.         DC.L    C9a,C10a,C11a,C12a,C13a,C14a,C15a,C16a
  752.  
  753.  
  754.  
  755. *       \\\\\23
  756. * across *
  757. TRa
  758.         DC.W    0,20,30,120,319,200,230,290
  759.         DC.W    80,140,134,180,240,290,199
  760.         DC.W    50,95,130,180,234,256,300
  761.  
  762.         DC.W    8,16,23,30,40,48,54,62,78,83
  763.         DC.W    100,105,115,123,134,140,150
  764.         DC.W    156,160,170,178,1,1
  765.  
  766. * down *        Y pos of stars
  767. HTABa    DC.W    172
  768.  
  769.         DC.W    160,170,180,166,172,174,183
  770.         DC.W    185,192,169,163,195,192,147
  771.         dc.w    184,172,173,186,152,167,163,181,191,199,156
  772.         dc.w    171,189,154,154,108,155
  773.         DC.W    169,159,158,169,147,170,176
  774.         DC.W    183,154,165,176,197,168
  775. * speed *
  776.         DC.W    1,4,1,3,1,6,2,1,3,1,4,3,1,1,2
  777.         DC.W    1,5,1,1,1,1,1,1
  778.         DC.W    1,1,2,1,3,2,4,1,4,1,1,3,1,5,6
  779.         DC.W    2,6,1,2,1,1,5,1
  780.  
  781. *--------------------------
  782. * max.s  oct 89  music from Galaxia
  783. ; this is Gary Wheaton music driver
  784. ; the tune will play during the vertical blank.
  785. ; the slot chosen in the v/b queue is fairly high up
  786. ; which means that it is immune from interference
  787. ; this code is copyright Gary Wheaton  Aug 1989
  788. ; Gary Wheaton and the Shapeshifters are members
  789. ; of the Budgie UK group.
  790. ; Budgie UK Licenceware: the fairer face of PD
  791.  
  792. * LA.S   Oct 89
  793.  
  794.  MOVE.L A7,A5
  795.  MOVE.L 4(A5),A5
  796.  MOVE.L $C(A5),D0
  797.  ADD.L $14(A5),D0
  798.  ADD.L $1C(A5),D0
  799.  ADD.L #$1100,D0
  800.  MOVE.L A5,D1
  801.  ADD.L D0,D1
  802.  AND.L #-2,D1
  803.  MOVE.L D1,A7
  804.  MOVE.L D0,-(SP)
  805.  MOVE.L A5,-(SP)
  806.  MOVE.W D0,-(SP)
  807.  MOVE.W #$4A,-(SP) ; Setblock.
  808.  TRAP #1
  809.  ADD.L #12,SP
  810. ;
  811.  CLR.L -(SP)       ; Enter supervisor mode.
  812.  MOVE.W #$20,-(SP) ; Super.
  813.  TRAP #1
  814.  ADDQ.L #6,SP
  815.  MOVE.L D0,SUPER   ; Save old status.
  816.  
  817.     movem.l    $ff8240,d0-d7 save palette
  818.     movem.l    d0-d7,palette
  819.  
  820.  
  821.  
  822.  move #$700,$ff8240+20
  823.  
  824.  move.b #7,sl
  825.  move.b #%11111000,sd
  826.  
  827.  move.l $44e,a0
  828.  add.l #160*200,a0
  829.  move.l a0,screen
  830.  
  831.  
  832.     clr.l    $200
  833.     not.l    $200        on/off switch
  834.     bclr     #0,$484        no keyclick
  835.     bclr     #1,$484        no repeat key
  836.  
  837.     dc.w    $a000
  838.     MOVEA.L    8(A0),A0
  839.     CLR.W    (A0)
  840.     DC.W    $A00A        hidemouse
  841.  
  842.  
  843.  
  844.     MOVE.L #VBI,$4de    further down the queue to avoid gem etc.
  845.  
  846.  
  847. getrez    move.w    #4,-(sp)
  848.     trap    #14
  849.     addq.l    #2,sp
  850.     move.w    d0,res
  851.  
  852. setlowrez
  853.     CLR.W    -(A7)        0=low res
  854.     MOVE.L    $44e,-(A7)    -1=ignore physbase
  855.     MOVE.L    $44e,-(A7)    -1=ignore logbase
  856.     MOVE.W    #5,-(A7)
  857.     TRAP    #14        
  858.     LEA    $0C(A7),A7    
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865. res    dc.w     0
  866. ***
  867. skreen    dc.w 0
  868.  
  869.  move #$5,$ff8240+20
  870.  
  871.  move.l $44e,a0
  872.  add.l #160*169,a0
  873.  move.l a0,skreen
  874.  
  875.  
  876. ;1 VIBRATO        256
  877. ;2 WARBUP        512
  878. ;3 DRUM            768
  879. ;4 HOLD            1024
  880. ;5 WARBHOLD        1280
  881. ;6 WARBDWN        1536
  882. ;7 SLIDE UP WITH WARB   1792
  883. ;8 SLIDE UP               2048
  884. ;9            2304
  885. ;10            2560
  886.  
  887. e equ 2
  888. J EQU 8
  889. I EQU 4
  890. H EQU 2
  891. T EQU 1
  892. A EQU 2
  893. Q EQU 8
  894. Z EQU 2
  895. f EQU 8
  896. C EQU 1
  897.  
  898.  
  899. SL EQU $FF8800
  900. SD EQU $FF8802
  901.  move.b #7,sl
  902.  move.b #%11111000,sd
  903.  
  904. ****
  905.  
  906.  
  907. VBI  movem.l d0-d7/a0-a6,-(sp)
  908.  
  909.     lea    $fffc00,a1        acia
  910.     cmp.b    #$61,2(a1)        undo
  911.     beq    end_it
  912.     cmp.b    #$62,2(a1)        help
  913.     beq    on_off
  914.  
  915.     lea    $200,a0
  916.     tst.l    (a0)
  917.     beq    quiet
  918.  
  919.      move.b #7,sl
  920.     move.b #%11111000,sd        mixer
  921.  
  922.     LEA TAB,A3
  923.  MOVE.L UPTO,A2
  924.  MOVE CUNT,D3
  925.  MOVE.B 33(A2),D4
  926. SSU SUBQ.W #1,D3
  927.  BPL.S PART1
  928.  MOVE.L #1,PNT0
  929.  MOVE.L #1,PNT1
  930.  MOVE.L #1,PNT2
  931.  MOVE.L #1,PNT3
  932.  MOVE.L #1,PNT4
  933.  MOVE.L #$8000000,SL
  934.  
  935.  ADD.L #36,a2
  936.  CMP.L #CHAN0,A2
  937.  BNE.S LLA
  938.  LEA DOTH,A2
  939. LLA
  940.  MOVE 34(A2),D3
  941.  MOVE.B 33(A2),D4
  942. PART1
  943.  CLR.B D2
  944.  BTST #1,D4
  945.  BEQ.S W1
  946.  MOVE.L (A2),A1
  947.  MOVE.L 4(A2),A0
  948.  BSR CHAN0
  949. W1 BTST #2,D4
  950.  BEQ.S W2
  951.  MOVE.L 8(A2),A1
  952.  MOVE.L 12(A2),A0
  953.  BSR CHAN0
  954. W2 MOVEQ.B #1,D2
  955.  BTST #3,D4
  956.  BEQ.S W3
  957.  MOVE.L 16(A2),A1
  958.  MOVE.L 20(A2),A0
  959.  BSR CHAN0
  960. W3 BTST #4,D4
  961.  BEQ.S W4
  962.  MOVE.L 24(A2),A1
  963.  MOVE.L 28(A2),A0
  964.  BSR CHAN0
  965. W4 MOVE.L A2,UPTO
  966.  MOVE D3,CUNT
  967.  
  968.  BSR SHOWBAR
  969.  
  970.      movem.l (sp)+,d0-d7/a0-a6 
  971.     rts
  972.  
  973. end_it
  974.     bclr    #6,$fffa11    acknowledge key press interrupt
  975.     lea    $ff8800,a0
  976.     move.b    #7,(a0)
  977.     move.b    #%11111111,2(a0)
  978.     move.l    #0,$4de        end interrupt
  979.     movem.l (sp)+,d0-d7/a0-a6
  980.      rts
  981. on_off    bclr    #6,$fffa11    
  982.     not.l    $200        toggle on/off
  983.     lea    $ff8800,a0
  984.     move.b    #7,(a0)
  985.     move.b    #%11111111,2(a0)
  986.     movem.l (sp)+,d0-d7/a0-a6
  987.      rts
  988.  
  989. quiet    movem.l (sp)+,d0-d7/a0-a6
  990.     rts
  991.     even
  992.  
  993.  
  994.  
  995.  
  996.  DC.B " (C) G.WHEATON.  45 GOLDRILL AVE BOLTON. LANCS, U.K. "
  997.  
  998.  
  999.  
  1000. UPTO DC.L EE-36
  1001. CUNT DC.W 0
  1002.  EVEN
  1003. ;\\RUNNING ORDER SEQUENCE
  1004. EE
  1005. DOTH
  1006.  
  1007.  DC.L PNT4,cow1
  1008.  DC.L PNT0,cow1
  1009.  DC.L PNT2,null y2
  1010.  DC.L PNT3,sdum DRSM
  1011.  DC.B 0,%00011100
  1012.  DC.W 511
  1013.  
  1014.  DC.L PNT4,YI
  1015.  DC.L PNT1,cow1
  1016.  DC.L PNT2,y2
  1017.  DC.L PNT3,DRSM
  1018.  DC.B 0,%00011110
  1019.  DC.W 511
  1020.  
  1021.  DC.L PNT4,Y3
  1022.  DC.L PNT1,Y2
  1023.  DC.L PNT2,YI
  1024.  DC.L PNT3,DRSM
  1025.  DC.B 2,%00111110
  1026.  DC.W 1023
  1027.  
  1028.  DC.L PNT4,Y3
  1029.  DC.L PNT1,Y3+4
  1030.  DC.L PNT2,Y3+8
  1031.  DC.L PNT3,DRMM
  1032.  DC.B 1,%00001110
  1033.  DC.W 1023
  1034.  
  1035.  DC.L PNT4,YI
  1036.  DC.L PNT1,YI+8
  1037.  DC.L PNT2,YI
  1038.  DC.L PNT3,SDUM
  1039.  DC.B 2,%00011110
  1040.  DC.W 511
  1041.  
  1042.  
  1043.  DC.L PNT4,Y2
  1044.  DC.L PNT1,Y2+8
  1045.  DC.L PNT2,RF2 Y2
  1046.  DC.L PNT3,SDUM
  1047.  DC.B 2,%00111110
  1048.  DC.W 1023
  1049.  
  1050. ;EE
  1051. ;DOTH
  1052.  DC.L PNT4,T2
  1053.  DC.L PNT0,RF2
  1054.  DC.L PNT2,t2+4
  1055.  DC.L PNT3,DRSM
  1056.  DC.B 1,%00011110
  1057.  DC.W 511
  1058.  
  1059.  DC.L PNT0,T2
  1060.  DC.L PNT4,RF3
  1061.  DC.L PNT2,t2d
  1062.  DC.L PNT3,DRSM
  1063.  DC.B 1,%00011110
  1064.  DC.W 511+511
  1065.  
  1066.  
  1067.  
  1068.  
  1069. ;part 2
  1070.  DC.L PNT4,rigel
  1071.  DC.L PNT1,bas
  1072.  DC.L PNT2,DRIFT
  1073.  DC.L PNT3,DRYM
  1074.  DC.B 1,%00111110
  1075.  DC.W 127
  1076.  
  1077.  DC.L PNT4,raz1
  1078.  DC.L PNT1,t2
  1079.  DC.L PNT2,t2
  1080.  DC.L PNT3,DRSM
  1081.  DC.B 1,%00011110
  1082.  DC.W 511
  1083.  
  1084.  
  1085.  DC.L PNT4,RAZ
  1086.  DC.L PNT1,RAZ2
  1087.  DC.L PNT2,NULL 
  1088.  DC.L PNT3,SDUM
  1089.  DC.B 1,%000011110
  1090.  DC.W 511
  1091.  
  1092.  DC.L PNT1,RAZ  TOM
  1093.  DC.L PNT4,TOM  2
  1094.  DC.L PNT2,T2
  1095.  DC.L PNT3,DRSM
  1096.  DC.B 2,%00011110
  1097.  DC.W 511
  1098.  
  1099.  
  1100.  DC.L PNT4,T2
  1101.  DC.L PNT1,no2
  1102.  DC.L PNT2,T2
  1103.  DC.L PNT3,DRMM
  1104.  DC.B 2,%00011110
  1105.  DC.W 1023
  1106.  
  1107.  DC.L PNT4,BAS
  1108.  DC.L PNT1,bas1
  1109.  DC.L PNT2,BAS
  1110.  DC.L PNT3,DRMM
  1111.  DC.B 2,%00011110
  1112.  DC.W 127
  1113.  
  1114.  DC.L PNT4,DL
  1115.  DC.L PNT1,GL
  1116.  DC.L PNT2,FL
  1117.  DC.L PNT3,DRMM
  1118.  DC.B 2,%00001110
  1119.  DC.W 255
  1120.  
  1121.  DC.L PNT4,YI
  1122.  DC.L PNT1,cow
  1123.  DC.L PNT2,y2
  1124.  DC.L PNT3,DRSM
  1125.  DC.B 0,%00011110
  1126.  DC.W 2047
  1127.  
  1128.  
  1129.  DC.L PNT4,rf2
  1130.  DC.L PNT0,cow
  1131.  DC.L PNT2,cow+4
  1132.  DC.L PNT3,DRSM
  1133.  DC.B 0,%00011110
  1134.  DC.W 511
  1135.  
  1136. CHAN0
  1137. ;\\\\\\\\\\\\\\\\\\\\\\
  1138.  MOVE (A1),D0
  1139.  ADD D0,A0
  1140.  MOVE.L (A0),D1  ;GET NOTE 0 & DURATION
  1141.  MOVE.B 13(A1),D5
  1142.  EXT.W D5
  1143.  SWAP D1
  1144.  ADD D5,D1
  1145.  SWAP D1
  1146.  CMP #$FFFF,D1
  1147.  BNE CON2
  1148.  CLR (A1)        ;RESET TO START
  1149.  SUB D0,A0
  1150.  MOVE.L (A0),D1
  1151. CON2
  1152.  SUBQ.B #1,3(A1)    ;NP0
  1153.  BNE STILLON
  1154.  MOVE.L D1,6(A1) ;TMP0  \D1.W IS DURATION
  1155.  MOVE.L D1,20(A1);TEMP  HOLD NOTE
  1156.  MOVE.B 26(A1),4(A1)   ;VOL0
  1157.  MOVE D1,2(A1)   ;NP0  \SET NEW DURATION
  1158.  ADDQ.W #4,(A1)        ; & INC POINTER
  1159. STILLON
  1160. ;\\VOLUME
  1161. RFF
  1162. ;\\\\\\\\\EFFECTS\\\\\\\\\\
  1163. NV0 
  1164.  MOVE.B 2(A1),D0
  1165.  CMP.B #4,D0
  1166.  BNE DOIT
  1167.  ADDQ.B #1,4(A1)
  1168.  RTS
  1169. DOIT 
  1170.  
  1171. DZZ
  1172.  MOVE.B #7,SL
  1173.  MOVE.B #%11111000,SD
  1174.  BRA.S FCC
  1175. EFCT
  1176.  
  1177.  DC.L FINK,VIB,WARB,DRUM,FINK,WB1,WRP,SLW
  1178.  DC.L SLR,HOLD,TWERP,SLR1,inup,HOLDLOW,Half
  1179.  
  1180. FCC
  1181.  AND.L #15,D0
  1182.  ASL #2,D0
  1183.  MOVE.L EFCT(PC,D0),A0
  1184.  JSR (A0)
  1185.  
  1186. MAZ ADDQ.B #1,4(A1)          ;VOL0
  1187.  MOVE.B 11(A1),SL
  1188.  MOVE.B 21(A1),SD   ;TMP0+1
  1189.  MOVE.B 12(A1),SL
  1190.  MOVE.B 20(A1),SD   ;TMP0
  1191.  CLR D0
  1192.  MOVE.B 4(A1),D0
  1193.  MOVE.B 10(A1),SL
  1194.  MOVE.B 28(A1,D0),D2    ;VOL0
  1195.  MOVE.B D2,SD
  1196.  
  1197. ;----------------BAR CHART SET
  1198.  MOVE 20(A1),D1
  1199.  AND #255,D1
  1200.  LSR #2,D1
  1201.  
  1202.  CMP #40,D1
  1203.  BLT.S DXIT
  1204.  SUB #40,D1 
  1205. DXIT OR.B D2,(A3,D1)      ;BAR TABLE
  1206.  
  1207. FINK RTS
  1208.  
  1209. ;-------EFFECTS ROUTINES--------
  1210. ;1-256---DELAYED--VIBRATO-------
  1211. VV EOR.B #1,MC
  1212.  BEQ.S SDC
  1213. VIB CMP.B #8,4(A1)
  1214.  BLT SDC
  1215.  SUB.B #1,24(A1)
  1216.  BNE SDC
  1217.  MOVE.B 25(A1),24(A1)
  1218.  MOVE 16(A1),D1
  1219.  ADD D1,18(A1)
  1220.  MOVE 14(A1),D1
  1221.  CMP 18(A1),D1
  1222.  BLT.S RIST
  1223. KJ NEG D1
  1224.  CMP 18(A1),D1
  1225.  BGT.S RIST
  1226. SAZ MOVE 6(A1),D1
  1227.  ADD 18(A1),D1
  1228.  MOVE D1,20(A1)
  1229. SDC RTS
  1230. RIST NEG 16(A1)
  1231.  BRA.S SAZ
  1232. ;2-512------WARB DW-----------
  1233. WARB
  1234.  EOR.B #1,MIN
  1235.  BEQ SAX
  1236.  SUBQ.B #1,4(A1)
  1237. SAX ASL 20(A1)
  1238.  CMP #460,20(A1)
  1239.  BLT.S PLOP
  1240.  MOVE 6(A1),20(A1)
  1241. PLOP BRA.S VV
  1242. ;RTS
  1243.  
  1244.  
  1245. ;3--768--------DRUM-----------
  1246. DRUM 
  1247.  
  1248.  SUBQ.B #4,19(A1)
  1249.  MOVE.B #7,SL
  1250.  MOVE.B #%11011000,SD
  1251.  MOVE.B #6,SL
  1252.  MOVE.B 19(A1),SD
  1253.  MOVE.B #5,SL
  1254.  MOVE.B 32(A2),SD
  1255.  MOVE.B #4,SL
  1256.  MOVE.B 19(A1),D0
  1257.  ASL.B #5,D0
  1258.  MOVE.B D0,SD
  1259. JUNK RTS
  1260.  
  1261. ;-4--------DRUM OFF
  1262.  
  1263. ;5--1280--WARB CONSTANT VOLUME
  1264. WB1 MOVE.B #5,4(A1)
  1265.  BRA.S SAX
  1266.  
  1267. ;6--1536-----WARB UP---------
  1268. WRP 
  1269.  MOVE.B #17,4(A1)
  1270. SDX LSR 20(A1)
  1271.  CMP #35,20(A1)
  1272.  BGT PLAP
  1273.  MOVE 6(A1),20(A1)
  1274. PLAP BRA VV ;RTS
  1275.  
  1276. ;7--1792---SLIDE-UP--WARBLE
  1277. SLW CMP.B #9,4(A1)
  1278.  BLT.S WRP
  1279.  ADDQ.W #2,6(A1)
  1280.  BRA.S WRP
  1281.  
  1282. ;--2048---SLIDE UP CONST VOL 
  1283. SLR 
  1284.  CLR.B 4(A1)
  1285.  ADDq.W #6,20(A1)
  1286.  RTS
  1287.  
  1288. YIN DC.B 0,0
  1289. ;9--2304-------HOLD-------------
  1290. HOLD MOVE.B #29,4(A1)
  1291.  RTS
  1292.  
  1293. ;10--2560---HIGH NOTE WARB------
  1294. TWERP 
  1295.  MOVE.B #17,4(A1)
  1296.  LSR 20(A1)
  1297.  CMP #8,20(A1)
  1298.  BGT TETSYFLY
  1299.  MOVE 6(A1),20(A1)
  1300. TETSYFLY BRA VV 
  1301.  
  1302. ;11-------2816 SLIDE UP WITH ADSR
  1303. SLR1
  1304.  SUBQ.W #6,20(A1)
  1305.  RTS
  1306.  
  1307. ;12-------3072  inc up
  1308. inup
  1309.  sub.b #1,nije
  1310.  bne.s pod
  1311.  sub.w #4,6(a1)
  1312.  move.b #5,nije
  1313.  sub.b #6,4(a1)
  1314. pod bra wrp rts
  1315.  
  1316. ;13-------3328--HOLD VOL LOW
  1317. HOLDLOW
  1318.  MOVE.B #32,4(A1)
  1319.  RTS 
  1320.  
  1321. ;1--------3584 half adsr
  1322. half
  1323.  ADD.B #50,nije+1
  1324.  bCC.s aslef
  1325.  subq.b #1,4(a1)
  1326. aslef rts
  1327.  
  1328.  
  1329. nije dc.b 1,0
  1330.  
  1331. ;\\\\\\\\\\\\\\DATAS\\\\\\\\\\\\\\\
  1332. ;\\NOTE 1ST WORD. DURATION 2ND WORD
  1333. ;\\\LEAD
  1334. PNT0 DC.W 0
  1335. NP0 DC.W 1
  1336.  DC.W 0
  1337.  DC.L 0
  1338.  DC.B 9,2,3
  1339.  DC.B 1      ;ADD TO NOTE
  1340.  DC.W 144      ;VIB LIMIT
  1341.  DC.W 72      ;16(A1)  ADD
  1342.  DC.W 0      ;VIB 18(A1)
  1343.  DC.L 0      ;TMP NOTE 20(A1)
  1344.  DC.B 1,1    ;VIB RATE 24(A1)
  1345.  DC.B 0,0    ;INITIAL VOL
  1346. ;ADSR  28(A1)
  1347.  DC.B 15,15,14,14,13
  1348.  REPT  40
  1349.  DC.B 12
  1350.  ENDR
  1351.  
  1352.  
  1353.  EVEN
  1354. ;\\\MIDDLE
  1355. PNT1 DC.W 0
  1356.  DC.W 1       ;EFFECT & DURATION 2(A1)
  1357.  DC.B 0,0
  1358.  DC.L 0
  1359.  DC.B 9,2,3
  1360.  DC.B 1       ;ADD  13(A1)
  1361.  DC.W 6       ;VIB LIMIT
  1362.  DC.W 2       ;VIB ADD 16(A1)
  1363.  DC.W 0       ;VIB 18(A1)
  1364.  DC.L 0       ;TEMP NOTE 20(A1)
  1365.  DC.B 1,1     ;VIB RATE  24)A1)
  1366.  DC.B 0,0     ;INITIAL VOL
  1367. ;ADSR  28(A1)
  1368.  DC.B 15,14,9,13,12,14,14,13,12,12
  1369.  DC.B 12,12,12,12
  1370.  
  1371.  REPT 190
  1372.  DC.B 10
  1373.  ENDR
  1374.  
  1375.  EVEN
  1376. ;\\\BASS
  1377. PNT2 DC.W 0
  1378.  DC.W 1          ;2(A1) DURATION
  1379.  DC.B 0,0        ;4(A1)
  1380.  DC.L 0          ;6
  1381.  DC.B 10,4,5     ;10(A1) VOL REG
  1382.  DC.B 2          ;ADD TO NOTE 13(A1)
  1383.  DC.W 6          ;VIB LIMIT
  1384.  DC.W 2          ;VIBRATO ADD 16(A1)
  1385.  DC.W 2       ;VIB 18(A1)
  1386.  DC.L 0          ;TMP NOTE 20(A1)
  1387.  DC.B 2,2        ;VIB RATE
  1388.  DC.B 0,0        ;INITIAL VOL 26(A1)
  1389. ;\ADSR  28(A1)
  1390. ADSR
  1391.  DC.B 15,15,14,14,14,13,13,13,13,13
  1392.  DC.B 13,13,12,12,11,11,10,10,10,9
  1393.  DC.B 8,7,6,5,4,3,4,2
  1394.  
  1395.  REPT 180
  1396.  DC.B 3
  1397.  ENDR
  1398.  
  1399.  EVEN
  1400. PNT3 DC.W 0
  1401. NP3 DC.W 1      ;2(A1) DURATION
  1402.  DC.B 0,0        ;4(A1)
  1403.  DC.L 0          ;6
  1404.  DC.B 10,6,11    ;10(A1) VOL REG
  1405.  DC.B -1         ;ADD  13(A1)
  1406.  DC.W 10         ;VIB LIMIT
  1407.  DC.W 4          ;VIBRATO ADD 16(A1)
  1408.  DC.W 0          ;VIB 18(A1)
  1409.  DC.L 0          ;TMP NOTE 20(A1)
  1410.  DC.B 1,1        ;VIB RATE
  1411.  DC.B 0,0        ;INITIAL VOL 26(A1)
  1412. ;\ADSR  28(A1)
  1413.  DC.B 15,15,15,14,13,12
  1414.  DC.B 11,11,11,11,10
  1415.  DC.B 11,11,11,11,10
  1416.  
  1417.  
  1418.  EVEN
  1419. PNT4 DC.W 0
  1420. NP4 DC.W 1      ;2(A1) DURATION
  1421.  DC.B 0,0        ;4(A1)
  1422.  DC.L 0
  1423.  DC.B 8,0,1      ;10(A1) VOL REG
  1424.  DC.B 0          ;ADD 13(A1)
  1425.  DC.W 5          ;VIB LIMIT
  1426.  DC.W 7          ;VIBRATO ADD 16(A1)
  1427.  DC.W 0          ;VIB 18(A1)
  1428.  DC.L 0          ;TMP NOTE 20(A1)
  1429.  DC.B 1,1        ;VIB RATE
  1430.  DC.B 0,0        ;INITIAL VOL 26(A1)
  1431. ;\ADSR  28(A1)
  1432.  
  1433.  DC.B 15,15,15,14,14,14,13,13
  1434.  REPT 32
  1435.  DC.B 13
  1436.  ENDR
  1437.  
  1438.  REPT 32
  1439.  DC.B 12
  1440.  ENDR
  1441.  
  1442.  REPT 32
  1443.  DC.B 11
  1444.  ENDR
  1445.  
  1446.  REPT 32
  1447.  DC.B 9
  1448.  ENDR
  1449.  
  1450.  REPT 32
  1451.  DC.B 8
  1452.  ENDR
  1453.  
  1454.  REPT 64
  1455.  DC.B 7
  1456.  ENDR
  1457.  
  1458.  EVEN
  1459. TE2 DC.W 2,3
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465. MIN DC.B 0,0
  1466. MC DC.B 0,0
  1467. ;-----------MUSIC DATA
  1468. Y3 
  1469.  DC.W 144*H,64+1536,121*H,64+1536
  1470.  DC.W 108*H,64+1536,96*H,32+1536
  1471.  DC.W 108*H,16+1536,96*H,16+1536
  1472.  
  1473.  DC.W 144*T,64+1536,121*T,64+1536
  1474.  DC.W 108*T,64+1536,96*T,32+1536
  1475.  DC.W 108*T,16+1536,96*T,16+1536
  1476.  
  1477.  DC.W 144/2,64+2560,121/2,64+2560
  1478.  DC.W 108/2,64+2560,96/2,32+2560
  1479.  DC.W 108/2,16+2560,96/2,16+2560
  1480.  
  1481.  DC.W 144*H,64+1536,121*H,64+1536
  1482.  DC.W 108*H,64+1536,96*H,64+1792
  1483.  DC.W 108*H,16+1536,96*H,16+1536
  1484.  DC.W $FFFF,$FFFF
  1485.  
  1486.  
  1487.  
  1488. Y2D DC.W 2,6
  1489. Y2
  1490.  DC.W 144*Q,8,72*Q,8,144*Q,8,72*Q,8
  1491.  DC.W 144*Q,8,72*Q,8,144*Q,8,72*Q,8
  1492.  
  1493.  DC.W 121*Q,16,121*Q,16,121*Q,16,121*Q,16
  1494.  
  1495.  DC.W 108*Q,8,217*Q,8,108*Q,8,217*Q,8
  1496.  DC.W 108*Q,8,53*Q,8,108*Q,8,53*Q,8
  1497.  
  1498.  DC.W 108*Q,16,108*Q,16,108*Q,32+2048
  1499.  DC.W $FFFF,$FFFF
  1500.   
  1501.  
  1502. YI
  1503.  DC.W 144*Q,8,144*Q,8,72*Q,8
  1504.  DC.W 144*Q,8,144*Q,8
  1505.  DC.W 144*Q,8,144*Q,8,72*Q,8
  1506.  
  1507.  DC.W 121*Q,8,121*Q,8,60*Q,8
  1508.  DC.W 121*Q,8,121*Q,8
  1509.  DC.W 121*Q,8,121*Q,8,60*Q,8
  1510.  
  1511.  DC.W 108*Q,8,108*Q,8,53*Q,8
  1512.  DC.W 108*Q,8,108*Q,8
  1513.  DC.W 108*Q,8,108*Q,8,53*Q,8
  1514.  
  1515.  DC.W 108*Q,8,108*Q,8,53*Q,8
  1516.  DC.W 108*Q,8,108*Q,8
  1517.  DC.W 108*Q,8,108*Q,8,53*Q,8
  1518.  
  1519.  DC.W $FFFF,$FFFF
  1520.  
  1521.  
  1522. DRMM
  1523.  dc.w 8,1+768
  1524.  DC.W 0,7+1024
  1525.  dc.w 8,1+768
  1526.  DC.W 0,7+1024
  1527.  dc.w 8,1+768
  1528.  DC.W 0,7+1024
  1529.  dc.w 8,1+768
  1530.  DC.W 0,7+1024
  1531.  
  1532.  dc.w 31,8+768
  1533.  DC.W 0,8+1024
  1534.  
  1535.  
  1536.  dc.w 18,2+768
  1537.  DC.W 0,6+1024
  1538.  dc.w 14,2+768
  1539.  DC.W 0,6+1024
  1540.  dc.w 10,1+768
  1541.  DC.W 0,7+1024
  1542.  dc.w 8,1+768
  1543.  DC.W 0,7+1024
  1544.  dc.w 8,1+768
  1545.  DC.W 0,7+1024
  1546.  dc.w 8,1+768
  1547.  DC.W 0,7+1024
  1548.  
  1549.  dc.w 31,10+768
  1550.  DC.W 0,6+1024
  1551.  
  1552.  DC.W 0,16+1024
  1553.  
  1554.  DC.W $FFFF,$FFFF
  1555.  
  1556.  
  1557.  
  1558.  
  1559. SDUM
  1560.  DC.W 0,16+1024
  1561.  dc.w 16,8+768
  1562.  DC.W 0,8+1024
  1563.  DC.W $FFFF,$FFFF
  1564.  
  1565.  
  1566.  
  1567. DRSM
  1568.  DC.W 0,16+1024
  1569.  dc.w 8,4+768
  1570.  DC.W 0,4+1024
  1571.  DC.W 2,2+768
  1572.  DC.W 0,6+1024
  1573.  
  1574.  
  1575.  DC.W 0,16+1024
  1576.  dc.w 8,4+768
  1577.  DC.W 0,12+1024
  1578.  
  1579.  DC.W 0,16+1024
  1580.  dc.w 8,4+768
  1581.  DC.W 0,12+1024
  1582.  
  1583.  DC.W 0,16+1024
  1584.  dc.w 8,4+768
  1585.  DC.W 0,12+1024
  1586.  
  1587.  
  1588.  DC.W 0,16+1024
  1589.  dc.w 8,4+768
  1590.  DC.W 0,4+1024
  1591.  DC.W 2,2+768
  1592.  DC.W 0,6+1024
  1593.  
  1594.  
  1595.  DC.W 0,16+1024
  1596.  dc.w 8,4+768
  1597.  DC.W 0,12+1024
  1598.  
  1599.  
  1600.  DC.W 0,16+1024
  1601.  dc.w 8,4+768
  1602.  DC.W 0,4+1024
  1603.  dc.w 4,6+768
  1604.  DC.W 0,6+1024
  1605.  
  1606.  DC.W 0,12+1024
  1607.  dc.w 31,4+768
  1608.  DC.W 0,12+1024
  1609.  
  1610.  DC.W $FFFF,$FFFF
  1611.  
  1612.  
  1613.  
  1614. SLOG
  1615.  DC.W 72,255+512
  1616.  DC.W $FFFF,$FFFF
  1617.  
  1618.  
  1619. T2D DC.W 2,1
  1620. T2
  1621.  DC.W 144*Q,8,72*Q,8,144*Q,8,72*Q,8+2816
  1622.  DC.W 144*Q,8,72*Q,8,144*Q,8,72*Q,8 +2816
  1623.  
  1624.  DC.W 121*Q,8,60*Q,8,121*Q,8,60*Q,8+2816
  1625.  DC.W 121*Q,8,60*Q,8,121*Q,8,60*Q,8 +2816
  1626.  
  1627.  DC.W 217*Q,8,108*Q,8,217*Q,8,108*Q,8+2816
  1628.  DC.W 217*Q,8,108*Q,8,217*Q,8,108*Q,8 +2816
  1629.  
  1630.  DC.W 108*Q,8,53*Q,8,108*Q,8,53*Q,8+2816
  1631.  DC.W 108*Q,8,53*Q,8,108*Q,8,53*Q,8 +2816
  1632.  DC.W $FFFF,$FFFF
  1633.  
  1634. rigel 
  1635.  dc.w 144,128+3072
  1636.  DC.W $FFFF,$FFFF
  1637.  
  1638.  
  1639. TOM DC.W 2,64*4+3328
  1640.  DC.W 144*C,64+512,121*C,64+512,108*C,128+512
  1641.  
  1642.  
  1643. NO2 
  1644.  DC.W 108*e,8+256,91*e,8+256,96*e,8+256,102*e,8+256
  1645.  DC.W 108*e,8+256,217*e,8+256,204*e,8,102*e,8+256
  1646.  DC.W 193*e,8+256,96*e,8+256,204*e,8+256,102*e,8+256
  1647.  DC.W 108*e,8+256,217*e,8+256,193*e,8+256,96*e,8+256
  1648.  dc.w 2,128
  1649.  DC.W $FFFF,$FFFF
  1650.  
  1651.  
  1652. DRYM
  1653.  DC.W 12,4+768,8,4+768
  1654.  DC.W $FFFF,$FFFF
  1655.  
  1656. BAS1 DC.W 0,5
  1657. bas dc.w 144*f,8,72*f,8,128*f,8,64*f,8
  1658.     dc.w 121*f,8,60*f,8,114*f,8,57*f,8
  1659.     dc.w 108*f,8,53*f,8
  1660.     dc.w 96*f,8,47*f,8,91*f,8,45*f,8
  1661.     dc.w 81*f,8,81*f,2,40*f,8
  1662.  
  1663. NULL DC.W 2,128
  1664.  DC.W $FFFF,$FFFF
  1665.  
  1666. RF2 DC.W 0,255+3328,0,192+3328
  1667.  DC.W 144*2,16+512,144,16+512,72,32+512
  1668.  DC.W $FFFF,$FFFF
  1669.  
  1670. RF3 DC.W 0,255+3328,0,192+3328
  1671.  DC.W 144*2,16+512,144,16+512,72,255+512
  1672.  DC.W $FFFF,$FFFF
  1673.  
  1674.  
  1675.  
  1676. RAZ2 DC.W 0,2 
  1677. raz 
  1678.  dc.w 36*q,24+1536,2,8+3328
  1679.  dc.w 36*q,24+1536,2,8+3328
  1680.  dc.w 2,128+64+3328
  1681.  
  1682.  dc.w 36*q,24+1536,2,8+3328
  1683.  dc.w 36*q,24+1536,2,8+3328
  1684.  dc.w 2,128+3328
  1685.  
  1686.  DC.W 144*2,16+2304,144,16+2304,72,24+2304,0,8
  1687.  DC.W $FFFF,$FFFF
  1688.  
  1689. RAZ1 
  1690.  dc.w 36*q,24+1536,2,8+3328
  1691.  dc.w 36*q,24+1536,2,8+3328
  1692.  dc.w 2,128+64+3328
  1693.  
  1694.  dc.w 36*q,24+1536,2,8+3328
  1695.  dc.w 36*q,24+1536,2,8+3328
  1696.  dc.w 2,255+3328
  1697.  
  1698.  DC.W $FFFF,$FFFF
  1699.  
  1700. cow
  1701.  dc.w 96,4,2,4+2304
  1702.  dc.w 144,4,2,4+2304
  1703.  dc.w 36,4,2,4+2304
  1704.  dc.w 72,4,2,4+2304
  1705.  dc.w 47,4,2,4+2304
  1706.  dc.w 60,4,2,4+2304
  1707.  DC.W $FFFF,$FFFF
  1708.  
  1709. cow1
  1710.  dc.w 72,4,2,12+2304
  1711.  DC.W $FFFF,$FFFF
  1712.  
  1713.  
  1714.  
  1715.     
  1716. DRIFT DC.W 144/4,128+512,0,255+3328
  1717.  
  1718.  
  1719. DL DC.W 144*A,255+3584
  1720. FL DC.W 193*A,255+3584
  1721. GL DC.W 114*A,255+3584
  1722.  
  1723.  
  1724.  
  1725.  
  1726. TAB DS.B 64
  1727. DO DC.B 0,0
  1728.  
  1729.  
  1730. showbar 
  1731. ;----make---BAR CHARTS
  1732.  move.l screen,a2 
  1733.  add.l #160*169,a2
  1734.  move #$7,$ff8240+20 
  1735. ;------rout to show bars
  1736.  MOVEQ.W #39,D3
  1737.  moveq.w #7,d6
  1738.  moveq.b #%01111110,d7
  1739.  
  1740. MLP MOVE.L A2,A0
  1741.  
  1742. LP2 
  1743.  MOVE.B (A3)+,D1
  1744.  BEQ.S LP
  1745.  SUBQ.B #1,-1(A3)
  1746.  
  1747.  
  1748. lp    AND #30,D1     
  1749.       MOVEQ.W #15,d2
  1750.       SUB D1,D2
  1751.  
  1752. LP1    clr.b 8(A0)
  1753.     clr.b 166(A0)
  1754.     lea 320(A0),a0
  1755.     DBRA D2,LP1
  1756.  
  1757. DID     MOVE.B d7,8(A0)  
  1758.     MOVE.B d7,166(A0)  
  1759.     lea 320(A0),a0
  1760.      DBRA D1,DID
  1761.  
  1762.  EOR #6,D6
  1763.  ADD.W D6,A2
  1764.  DBRA D3,MLP
  1765. DONT RTS
  1766. quiet_flag dc.w 0
  1767. super    dc.l 0
  1768. name    dc.b "budgii3.pi1",0
  1769.     even
  1770.  
  1771.