home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src3.dms / in.adf / Source / Masters / Masters.lha / masters.S < prev    next >
Encoding:
Text File  |  1993-06-10  |  19.8 KB  |  936 lines

  1. ;---------------------------------------------------------------
  2. ;- FIRST INTRO FOR MASTERS WRITTEN BY
  3. ;-                                     \X/ CADDY - MASTERS \X/
  4. ;- ON 1st OF JANUARY 1991!!!!
  5. ;-
  6. ;- MASTERS MEMBERS ONLY...  TEXT IS AT LINE 830-860...
  7. ;-
  8. ;- LOWMEM = $40000    <--- FOR USE IN DEFPACK
  9. ;- HIGHMEM= $78000
  10. ;- 
  11. ;---------------------------------------------------------------
  12.  
  13.  jmp    $40000
  14.  org    $40000
  15.  load    $40000
  16.  
  17. ;---------------------------------------------------------------
  18. BEGINish:
  19.     movem.l    d0-d7/a0-a6,-(a7)
  20.     bsr    setup
  21. TestButton:
  22.     btst    #6,$bfe001
  23.     beq.s    Exit
  24.     cmp.b    #$fe,6(a6)
  25.     bne.s    TestBUtton
  26.  
  27. ;    move.w    #$888,$180(a6)
  28.     bsr    copperfuck
  29.     bsr    Texta
  30.     bsr    Bitch
  31. ;    move.w    #$808,$180(a6)
  32.  
  33.     bra.s    TestButton
  34. Exit:
  35.     move.l 4,a0
  36.     move.l 156(a0),a1
  37.     move.l 38(a1),$80(a6)
  38.     move.w #$7fff,$9a(a6)
  39.     move.l Cold1,$6c
  40.     move.w cold2,d0
  41.     or.w #$8000,d0
  42.     move.w d0,$9a(a6)
  43.     move.w #$000f,$96(a6)
  44.  
  45.     bsr    Mt_end
  46.  
  47.     movem.l    (a7)+,d0-d7/a0-a6
  48.     rts
  49.  
  50. cold1:    dc.l    0
  51. Cold2:    dc.w    0
  52. ;---------------------------------------------------------------
  53. int1:
  54.     movem.l d0-d7/a0-a5,-(a7)
  55.  
  56.     bsr    Mt_music
  57.  
  58.     movem.l (a7)+,d0-d7/a0-a5
  59.     move.w #$0020,$9c(a6)
  60.     rte
  61. ;---------------------------------------------------------------
  62. setup:
  63.     lea    $dff000,a6
  64.  
  65.     lea    $7fff4,a0
  66.     move.l    #$00000100,(a0)+
  67.     clr.l    (a0)+
  68.     clr.l    (a0)+
  69.  
  70.     bsr    FixSineList
  71.  
  72.     bsr    Copperinit
  73.  
  74.     lea    screen,a0
  75.     move.w    #$d00,d0
  76.     bsr    blitclear
  77.  
  78.     BSR    Mt_init
  79.  
  80.     move.l    $6c,Cold1
  81.     move.w    $1c(a6),Cold2
  82.     move.w    #$7fff,$9a(a6)
  83.     move.l    #int1,$6c
  84.     move.w    #$c020,$9a(a6)
  85.  
  86.     move.l #copper,$80(a6)
  87.     move.w #$8020,$96(a6)
  88.  
  89.     rts
  90. Bitch:
  91.     lea    Screen+[141*40]+34,a0
  92.     lea    intVector(pc),a1
  93.     move.l    (a1)+,(a0)
  94.     move.l    (a1)+,40(a0)
  95.     move.l    (a1)+,80(a0)
  96.     move.l    (a1)+,120(a0)
  97.     move.l    (a1)+,160(a0)
  98.     rts
  99. ;---------------------------------------------------------------
  100. clear:    clr.b    (a0)+
  101.     cmp.l    a0,a1
  102.     bne.s    clear
  103.     rts
  104. ;---------------------------------------------------------------
  105. blitclear:
  106.     bsr.L    blitwait
  107.     move.l    a0,$54(a6)
  108.     move.w    #$100,$40(a6)
  109.     clr.w    $42(a6)
  110.     clr.l    $44(a6)
  111.     move.l    #-1,$64(a6)
  112.     move.w    d0,$58(a6)
  113.     rts
  114. ;---------------------------------------------------------------
  115. blitwait:
  116.     btst #14,$2(a6)
  117.     bne.s blitwait
  118.     rts
  119. ;---------------------------------------------------------------
  120. Xpos:    dc.w    0
  121. Ypos:    dc.w    0
  122. Wait:    dc.w    1
  123. TEXTA:
  124.     cmp.w    #1,Wait
  125.     bne.s    Noclear
  126.     lea    screen,a0
  127.     move.w    #$b00,d0
  128.     bsr    blitclear
  129. Noclear:
  130.     tst.w    Wait
  131.     beq.s    NoHalt
  132.     subq.w    #1,Wait
  133.     rts
  134. NoHalt:
  135.     move.l    TextP,a0
  136.     tst.b    (a0)
  137.     bne.s    NoEndLine
  138.     move.w    #0,Xpos
  139.     addq.w    #1,Ypos
  140.     addq.l    #1,TextP
  141.     rts
  142. NoEndLine:
  143.     cmp.b    #$1,(a0)
  144.     bne.s    NoEnd
  145.     move.w    #0,Xpos
  146.     move.w    #0,Ypos
  147.     move.w    #400,Wait
  148.  
  149.     addq.l    #1,Textp
  150.     move.l    textp,a0
  151.     cmp.b    #2,(a0)
  152.     bne.s    MorePages
  153.     move.l    #text,TextP
  154. MorePages:
  155.     rts
  156. NoEnd:
  157.     moveq    #0,d0
  158.     moveq    #0,d1
  159.     move.b    (a0),d0
  160.     sub.b    #32,d0
  161.     lsl.w    #1,d0
  162.     move.w    d0,d1
  163.     divu    #40,d0
  164.     mulu    #11*40,d0
  165.     add.l    d0,d1
  166.     lea    font,a0
  167.     lea    (a0,d1.w),a0
  168.  
  169.     lea    Screen,a1
  170.     move.w    Xpos,d0
  171.     lea    (a1,d0.w),a1
  172.     move.w    Ypos,d0
  173.     mulu    #12*40,d0
  174.     lea    (a1,d0.w),a1
  175.  
  176.     moveq    #11,d7
  177. CopyChar:
  178.     move.w    (a0),(a1)
  179.     lea    40(a0),a0
  180.     lea    40(a1),a1
  181.     dbf    d7,Copychar
  182.  
  183.     addq.l    #1,TextP
  184.     add.w    #2,Xpos
  185.  
  186.     rts
  187. even
  188. ;---------------------------------------------------------------
  189. CopLines=126
  190. CopInst=48
  191.  
  192. copperfuck:
  193.     cmp.l    #sineEnd,SinePos
  194.     blt.s    MoreList
  195.     sub.l    #sinesize/2,sinepos
  196. MoreList:
  197.     cmp.l    #colsEnd,ColsPos
  198.     blt.s    Morecollist
  199.     sub.l    #collistsize,colspos
  200. MoreColList:
  201.     lea    CopperBlock+6(pc),a0
  202.     move.l    ColsPos(pc),a1
  203.     move.l    SinePos(pc),a2
  204.     move.w    #copLines-1,d7
  205. DoDisplay:
  206.     move.w    (a2)+,d1
  207.     lea    (a1,d1.w),a3
  208. WaitCrap:
  209.     btst    #$e,$2(a6)
  210.     bne.s    WaitCrap
  211.     move.l    a3,$50(a6)
  212.     move.l    a0,$54(a6)
  213.     move.l    #$09f00000,$40(a6)
  214.     move.l    #$00000002,$64(a6)
  215.     move.l    #-1,$44(a6)
  216.     move.w    #copinst-2*64+1,$58(a6)
  217.  
  218.     add.l    #copinst-2*2,a3
  219. ;    addq.l    #2,a1
  220.     lea    CopInst*4(a0),a0
  221.     dbf    d7,DoDisplay
  222.  
  223.     tst.w    ChangeWait
  224.     beq.s    NextPattern
  225.     move.l    sineadd,d0
  226.     move.l    colsadd,d1
  227.     add.l    d0,SinePos
  228.     add.l    d1,ColsPos
  229.     subq.w    #1,changewait
  230.     rts
  231. NextPattern:
  232.     move.l    ChangeAdr(pc),a0
  233.     cmp.b    #-1,(a0)
  234.     bne.L    Morechg
  235.  
  236.     tst.w    Op1
  237.     beq.s    NoAdd
  238.     addq.l    #2,a1
  239. Noadd:
  240.     move.l    #changelist,Changeadr
  241.     bra.s    NextPattern
  242. Morechg:
  243.     moveq    #0,d0
  244.     moveq    #0,d1
  245.     moveq    #0,d2
  246.     move.b    (a0)+,d0
  247.     move.b    (a0)+,d1
  248.     move.b    (a0)+,d2
  249.     move.w    d2,Op1
  250.     move.l    d0,sineadd
  251.     move.l    d1,colsadd
  252.     move.w    #300,Changewait
  253.     addq.l    #3,changeadr
  254.     rts
  255.  
  256. SineAdd:dc.l    0
  257. Colsadd:dc.l    0
  258. Op1:    dc.w    0
  259.  
  260. ChangeWait:dc.w    0
  261. ChangeAdr:dc.l    Changelist
  262. ChangeList:
  263.     dc.b    2,2,0,4,2,0,6,2,0,8,2,0
  264.     dc.b    2,4,0,4,4,0,6,4,0,8,4,0
  265.     dc.b    2,2,1,4,2,1,6,2,1,8,2,1
  266.     dc.b    2,4,1,4,4,1,6,4,1,8,4,1
  267.     dc.b    -1
  268.     even
  269. ;---------------------------------------------------------------
  270. copperinit:
  271.     lea    CopperBlock(pc),a0
  272.     move.w    #copLines-1,d7
  273.     move.w    #$772f,d0
  274. DoDisplay2:
  275.     move.w    d0,(a0)+
  276.     move.w    #$fffe,(a0)+
  277.  
  278.     moveq    #Copinst-3,d6
  279. DoLine2:
  280.     move.w    #$0180,(a0)+
  281.     move.w    #$0000,(a0)+
  282.     dbf    d6,DoLine2
  283.     add.w    #$0100,d0
  284.  
  285.     move.l    #$01800000,(a0)+
  286.     dbf    d7,DoDisplay2
  287.  
  288.     rts
  289. ;----------------------------------------------------------------
  290. FixSineList:
  291.     lea    SineList(pc),a0
  292.     move.w    #sineSize/2-1,d7
  293. FixPos:
  294.     moveq    #0,d0
  295.     move.w    (a0),d0
  296.     sub.b    #$69,d0
  297.     lsl.w    #1,d0
  298.     move.w    d0,(a0)+
  299.     dbf    d7,FixPos
  300.     rts
  301. ;----------------------------------------------------------------
  302. SinePos:dc.l    SineList
  303. SineList:
  304. dc.w    $69,$69,$69,$69,$69,$69,$69,$69,$6a,$6a,$6a,$6b,$6b,$6b,$6c,$6c
  305. dc.w    $6d,$6d,$6e,$6e,$6f,$70,$70,$71,$71,$72,$73,$74,$74,$75,$76,$77
  306. dc.w    $77,$78,$79,$7a,$7b,$7c,$7c,$7d,$7e,$7f,$80,$81,$82,$82,$83,$84
  307. dc.w    $85,$86,$86,$87,$88,$89,$8a,$8b,$8b,$8c,$8d,$8e,$8f,$8f,$90,$91
  308. dc.w    $92,$92,$93,$94,$94,$95,$96,$96,$97,$97,$98,$98,$99,$99,$9a,$9a
  309. dc.w    $9a,$9b,$9b,$9b,$9b,$9b,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9b
  310. dc.w    $9b,$9b,$9b,$9b,$9a,$9a,$9a,$99,$99,$98,$98,$97,$97,$96,$96,$95
  311. dc.w    $94,$94,$93,$92,$92,$91,$90,$8f,$8f,$8e,$8d,$8c,$8b,$8b,$8a,$89
  312. dc.w    $88,$87,$86,$86,$85,$84,$83,$82,$82,$81,$80,$7f,$7e,$7d,$7c,$7c
  313. dc.w    $7b,$7a,$79,$78,$77,$77,$76,$75,$74,$74,$73,$72,$71,$71,$70,$70
  314. dc.w    $6f,$6e,$6e,$6d,$6d,$6c,$6c,$6b,$6b,$6b,$6a,$6a,$6a,$69,$69,$69
  315. dc.w    $69,$69,$69,$69,$69
  316. SineEnd:
  317. dc.w    $69,$69,$69,$69,$69,$69,$69,$69,$6a,$6a,$6a,$6b,$6b,$6b,$6c,$6c
  318. dc.w    $6d,$6d,$6e,$6e,$6f,$70,$70,$71,$71,$72,$73,$74,$74,$75,$76,$77
  319. dc.w    $77,$78,$79,$7a,$7b,$7c,$7c,$7d,$7e,$7f,$80,$81,$82,$82,$83,$84
  320. dc.w    $85,$86,$86,$87,$88,$89,$8a,$8b,$8b,$8c,$8d,$8e,$8f,$8f,$90,$91
  321. dc.w    $92,$92,$93,$94,$94,$95,$96,$96,$97,$97,$98,$98,$99,$99,$9a,$9a
  322. dc.w    $9a,$9b,$9b,$9b,$9b,$9b,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9b
  323. dc.w    $9b,$9b,$9b,$9b,$9a,$9a,$9a,$99,$99,$98,$98,$97,$97,$96,$96,$95
  324. dc.w    $94,$94,$93,$92,$92,$91,$90,$8f,$8f,$8e,$8d,$8c,$8b,$8b,$8a,$89
  325. dc.w    $88,$87,$86,$86,$85,$84,$83,$82,$82,$81,$80,$7f,$7e,$7d,$7c,$7c
  326. dc.w    $7b,$7a,$79,$78,$77,$77,$76,$75,$74,$74,$73,$72,$71,$71,$70,$70
  327. dc.w    $6f,$6e,$6e,$6d,$6d,$6c,$6c,$6b,$6b,$6b,$6a,$6a,$6a,$69,$69,$69
  328. dc.w    $69,$69,$69,$69,$69
  329. SineSize=*-SineList
  330. ;----------------------------------------------------------------
  331. ;dc.w    000,010,020,030,040,050,060,070,080,090,0a0,0b0,0c0,0d0,0e0,0f0
  332. ;dc.w    0f0,1f0,2f0,3f0,4f0,5f0,6f0,7f0,8f0,9f0,af0,bf0,cf0,df0,ef0,ff0
  333. ;dc.w    ff0,fe1,fd2,fc3,fb4,fa5,f96,f87,f78,f69,f5a,f4b,f3c,f2d,f1e,f0f
  334. ;dc.w    f0f,e0e,d0d,c0c,b0b,a0a,909,808,707,606,505,404,303,202,101,000
  335. ;----------------------------------------------------------------
  336. ColsPos:dc.l    CopperCols
  337. CopperCols:
  338. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  339. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  340. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  341. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  342.  
  343. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  344. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  345. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  346. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  347.  
  348. CollistSize=*-coppercols
  349. ColsEnd:
  350. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  351. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  352. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  353. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  354. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  355. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  356. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  357. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  358.  
  359. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  360. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  361. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  362. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  363. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  364. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  365. dc.w    $ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
  366. dc.w    $f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
  367.  
  368. ;---------------------------------------------------------------
  369. textp:    dc.l    text
  370. ;---------------------------------------------------------------
  371. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  372. ;­   NoisetrackerV1.0 replayroutine   ­
  373. ;­ Mahoney & Kaktus - HALLONSOFT 1989 ­
  374. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  375. mt_init:lea    MT_DATA,a0
  376.     move.l    a0,a1
  377.     add.l    #$3b8,a1
  378.     moveq    #$7f,d0
  379.     moveq    #0,d1
  380. mt_loop:move.l    d1,d2
  381.     subq.w    #1,d0
  382. mt_lop2:move.b    (a1)+,d1
  383.     cmp.b    d2,d1
  384.     bgt.s    mt_loop
  385.     dbf    d0,mt_lop2
  386.     addq.b    #1,d2
  387.     lea    mt_samplestarts(pc),a1
  388.     asl.l    #8,d2
  389.     asl.l    #2,d2
  390.     add.l    #$43c,d2
  391.     add.l    a0,d2
  392.     move.l    d2,a2
  393.     moveq    #$1e,d0
  394. mt_lop3:clr.l    (a2)
  395.     move.l    a2,(a1)+
  396.     moveq    #0,d1
  397.     move.w    42(a0),d1
  398.     asl.l    #1,d1
  399.     add.l    d1,a2
  400.     add.l    #$1e,a0
  401.     dbf    d0,mt_lop3
  402.     or.b    #$2,$bfe001
  403.     move.b    #$6,mt_speed
  404.     clr.w    $dff0a8
  405.     clr.w    $dff0b8
  406.     clr.w    $dff0c8
  407.     clr.w    $dff0d8
  408.     clr.b    mt_songpos
  409.     clr.b    mt_counter
  410.     clr.w    mt_pattpos
  411.     rts
  412. mt_end:    clr.w    $dff0a8
  413.     clr.w    $dff0b8
  414.     clr.w    $dff0c8
  415.     clr.w    $dff0d8
  416.     move.w    #$f,$dff096
  417.     rts
  418. mt_music:
  419.     movem.l    d0-d4/a0-a3/a5-a6,-(a7)
  420.     lea    mt_data,a0
  421.     addq.b    #$1,mt_counter
  422.     move.b    mt_counter,D0
  423.     cmp.b    mt_speed,D0
  424.     blt.s    mt_nonew
  425.     clr.b    mt_counter
  426.     bra    mt_getnew
  427. mt_nonew:
  428.     lea    mt_voice1(pc),a6
  429.     lea    $dff0a0,a5
  430.     bsr    mt_checkcom
  431.     lea    mt_voice2(pc),a6
  432.     lea    $dff0b0,a5
  433.     bsr    mt_checkcom
  434.     lea    mt_voice3(pc),a6
  435.     lea    $dff0c0,a5
  436.     bsr    mt_checkcom
  437.     lea    mt_voice4(pc),a6
  438.     lea    $dff0d0,a5
  439.     bsr    mt_checkcom
  440.     bra    mt_endr
  441. mt_arpeggio:
  442.     moveq    #0,d0
  443.     move.b    mt_counter,d0
  444.     divs    #$3,d0
  445.     swap    d0
  446.     cmp.w    #$0,d0
  447.     beq.s    mt_arp2
  448.     cmp.w    #$2,d0
  449.     beq.s    mt_arp1
  450.     moveq    #0,d0
  451.     move.b    $3(a6),d0
  452.     lsr.b    #4,d0
  453.     bra.s    mt_arp3
  454. mt_arp1:moveq    #0,d0
  455.     move.b    $3(a6),d0
  456.     and.b    #$f,d0
  457.     bra.s    mt_arp3
  458. mt_arp2:move.w    $10(a6),d2
  459.     bra.s    mt_arp4
  460. mt_arp3:asl.w    #1,d0
  461.     moveq    #0,d1
  462.     move.w    $10(a6),d1
  463.     lea    mt_periods(pc),a0
  464.     moveq    #$24,d7
  465. mt_arploop:
  466.     move.w    (a0,d0.w),d2
  467.     cmp.w    (a0),d1
  468.     bge.s    mt_arp4
  469.     addq.l    #2,a0
  470.     dbf    d7,mt_arploop
  471.     rts
  472. mt_arp4:move.w    d2,$6(a5)
  473.     rts
  474. mt_getnew:
  475.     lea    mt_data,a0
  476.     move.l    a0,a3
  477.     move.l    a0,a2
  478.     add.l    #$c,a3
  479.     add.l    #$3b8,a2
  480.     add.l    #$43c,a0
  481.     moveq    #0,d0
  482.     move.l    d0,d1
  483.     move.b    mt_songpos,d0
  484.     move.b    (a2,d0.w),d1
  485.     asl.l    #8,d1
  486.     asl.l    #2,d1
  487.     add.w    mt_pattpos,d1
  488.     clr.w    mt_dmacon
  489.     lea    $dff0a0,a5
  490.     lea    mt_voice1(pc),a6
  491.     bsr.s    mt_playvoice
  492.     lea    $dff0b0,a5
  493.     lea    mt_voice2(pc),a6
  494.     bsr.s    mt_playvoice
  495.     lea    $dff0c0,a5
  496.     lea    mt_voice3(pc),a6
  497.     bsr.s    mt_playvoice
  498.     lea    $dff0d0,a5
  499.     lea    mt_voice4(pc),a6
  500.     bsr.s    mt_playvoice
  501.     bra    mt_setdma
  502. mt_playvoice:
  503.     move.l    (a0,d1.l),(a6)
  504.     addq.l    #4,d1
  505.     moveq    #0,d2
  506.     move.b    $2(a6),d2
  507.     and.b    #$f0,d2
  508.     lsr.b    #4,d2
  509.     move.b    (a6),d0
  510.     and.b    #$f0,d0
  511.     or.b    d0,d2
  512.     tst.b    d2
  513.     beq.s    mt_setregs
  514.     moveq    #0,d3
  515.     lea    mt_samplestarts(pc),a1
  516.     move.l    d2,d4
  517.     subq.l    #$1,d2
  518.     asl.l    #2,d2
  519.     mulu    #$1e,d4
  520.     move.l    (a1,d2.l),$4(a6)
  521.     move.w    (a3,d4.l),$8(a6)
  522.     move.w    $2(a3,d4.l),$12(a6)
  523.     move.w    $4(a3,d4.l),d3
  524.     tst.w    d3
  525.     beq.s    mt_noloop
  526.     move.l    $4(a6),d2
  527.     asl.w    #1,d3
  528.     add.l    d3,d2
  529.     move.l    d2,$a(a6)
  530.     move.w    $4(a3,d4.l),d0
  531.     add.w    $6(a3,d4.l),d0
  532.     move.w    d0,8(a6)
  533.     move.w    $6(a3,d4.l),$e(a6)
  534.     move.w    $12(a6),$8(a5)
  535.     bra.s    mt_setregs
  536. mt_noloop:
  537.     move.l    $4(a6),d2
  538.     add.l    d3,d2
  539.     move.l    d2,$a(a6)
  540.     move.w    $6(a3,d4.l),$e(a6)
  541.     move.w    $12(a6),$8(a5)
  542. mt_setregs:
  543.     move.w    (a6),d0
  544.     and.w    #$fff,d0
  545.     beq    mt_checkcom2
  546.     move.b    $2(a6),d0
  547.     and.b    #$F,d0
  548.     cmp.b    #$3,d0
  549.     bne.s    mt_setperiod
  550.     bsr    mt_setmyport
  551.     bra    mt_checkcom2
  552. mt_setperiod:
  553.     move.w    (a6),$10(a6)
  554.     and.w    #$fff,$10(a6)
  555.     move.w    $14(a6),d0
  556.     move.w    d0,$dff096
  557.     clr.b    $1b(a6)
  558.     move.l    $4(a6),(a5)
  559.     move.w    $8(a6),$4(a5)
  560.     move.w    $10(a6),d0
  561.     and.w    #$fff,d0
  562.     move.w    d0,$6(a5)
  563.     move.w    $14(a6),d0
  564.     or.w    d0,mt_dmacon
  565.     bra    mt_checkcom2
  566. mt_setdma:
  567.     move.w    #$12c,d0
  568. mt_wait:dbf    d0,mt_wait
  569.     move.w    mt_dmacon,d0
  570.     or.w    #$8000,d0
  571.     move.w    d0,$dff096
  572.     move.w    #$12c,d0
  573. mt_wai2:dbf    d0,mt_wai2
  574.     lea    $dff000,a5
  575.     lea    mt_voice4(pc),a6
  576.     move.l    $a(a6),$d0(a5)
  577.     move.w    $e(a6),$d4(a5)
  578.     lea    mt_voice3(pc),a6
  579.     move.l    $a(a6),$c0(a5)
  580.     move.w    $e(a6),$c4(a5)
  581.     lea    mt_voice2(pc),a6
  582.     move.l    $a(a6),$b0(a5)
  583.     move.w    $e(a6),$b4(a5)
  584.     lea    mt_voice1(pc),a6
  585.     move.l    $a(a6),$a0(a5)
  586.     move.w    $e(a6),$a4(a5)
  587.     add.w    #$10,mt_pattpos
  588.     cmp.w    #$400,mt_pattpos
  589.     bne.s    mt_endr
  590. mt_nex:    clr.w    mt_pattpos
  591.     clr.b    mt_break
  592.     addq.b    #1,mt_songpos
  593.     and.b    #$7f,mt_songpos
  594.     move.b    mt_songpos,d1
  595.     cmp.b    mt_data+$3b6,d1
  596.     bne.s    mt_endr
  597.     move.b    mt_data+$3b7,mt_songpos
  598. mt_endr:tst.b    mt_break
  599.     bne.s    mt_nex
  600.     movem.l    (a7)+,d0-d4/a0-a3/a5-a6
  601.     rts
  602. mt_setmyport:
  603.     move.w    (a6),d2
  604.     and.w    #$fff,d2
  605.     move.w    d2,$18(a6)
  606.     move.w    $10(a6),d0
  607.     clr.b    $16(a6)
  608.     cmp.w    d0,d2
  609.     beq.s    mt_clrport
  610.     bge.s    mt_rt
  611.     move.b    #$1,$16(a6)
  612.     rts
  613. mt_clrport:
  614.     clr.w    $18(a6)
  615. mt_rt:    rts
  616. mt_myport:
  617.     move.b    $3(a6),d0
  618.     beq.s    mt_myslide
  619.     move.b    d0,$17(a6)
  620.     clr.b    $3(a6)
  621. mt_myslide:
  622.     tst.w    $18(a6)
  623.     beq.s    mt_rt
  624.     moveq    #0,d0
  625.     move.b    $17(a6),d0
  626.     tst.b    $16(a6)
  627.     bne.s    mt_mysub
  628.     add.w    d0,$10(a6)
  629.     move.w    $18(a6),d0
  630.     cmp.w    $10(a6),d0
  631.     bgt.s    mt_myok
  632.     move.w    $18(a6),$10(a6)
  633.     clr.w    $18(a6)
  634. mt_myok:move.w    $10(a6),$6(a5)
  635.     rts
  636. mt_mysub:
  637.     sub.w    d0,$10(a6)
  638.     move.w    $18(a6),d0
  639.     cmp.w    $10(a6),d0
  640.     blt.s    mt_myok
  641.     move.w    $18(a6),$10(a6)
  642.     clr.w    $18(a6)
  643.     move.w    $10(a6),$6(a5)
  644.     rts
  645. mt_vib:    move.b    $3(a6),d0
  646.     beq.s    mt_vi
  647.     move.b    d0,$1a(a6)
  648. mt_vi:    move.b    $1b(a6),d0
  649.     lea    mt_sin(pc),a4
  650.     lsr.w    #$2,d0
  651.     and.w    #$1f,d0
  652.     moveq    #0,d2
  653.     move.b    (a4,d0.w),d2
  654.     move.b    $1a(a6),d0
  655.     and.w    #$f,d0
  656.     mulu    d0,d2
  657.     lsr.w    #$6,d2
  658.     move.w    $10(a6),d0
  659.     tst.b    $1b(a6)
  660.     bmi.s    mt_vibmin
  661.     add.w    d2,d0
  662.     bra.s    mt_vib2
  663. mt_vibmin:
  664.     sub.w    d2,d0
  665. mt_vib2:move.w    d0,$6(a5)
  666.     move.b    $1a(a6),d0
  667.     lsr.w    #$2,d0
  668.     and.w    #$3c,d0
  669.     add.b    d0,$1b(a6)
  670.     rts
  671. mt_nop:    move.w    $10(a6),$6(a5)
  672.     rts
  673. mt_checkcom:
  674.     move.w    $2(a6),d0
  675.     and.w    #$fff,d0
  676.     beq.s    mt_nop
  677.     move.b    $2(a6),d0
  678.     and.b    #$f,d0
  679.     tst.b    d0
  680.     beq    mt_arpeggio
  681.     cmp.b    #$1,d0
  682.     beq.s    mt_portup
  683.     cmp.b    #$2,d0
  684.     beq    mt_portdown
  685.     cmp.b    #$3,d0
  686.     beq    mt_myport
  687.     cmp.b    #$4,d0
  688.     beq    mt_vib
  689.     move.w    $10(a6),$6(a5)
  690.     cmp.b    #$a,d0
  691.     beq.s    mt_volslide
  692.     rts
  693. mt_volslide:
  694.     moveq    #0,d0
  695.     move.b    $3(a6),d0
  696.     lsr.b    #4,d0
  697.     tst.b    d0
  698.     beq.s    mt_voldown
  699.     add.w    d0,$12(a6)
  700.     cmp.w    #$40,$12(a6)
  701.     bmi.s    mt_vol2
  702.     move.w    #$40,$12(a6)
  703. mt_vol2:move.w    $12(a6),$8(a5)
  704.     rts
  705. mt_voldown:
  706.     moveq    #0,d0
  707.     move.b    $3(a6),d0
  708.     and.b    #$f,d0
  709.     sub.w    d0,$12(a6)
  710.     bpl.s    mt_vol3
  711.     clr.w    $12(a6)
  712. mt_vol3:move.w    $12(a6),$8(a5)
  713.     rts
  714. mt_portup:
  715.     moveq    #0,d0
  716.     move.b    $3(a6),d0
  717.     sub.w    d0,$10(a6)
  718.     move.w    $10(a6),d0
  719.     and.w    #$fff,d0
  720.     cmp.w    #$71,d0
  721.     bpl.s    mt_por2
  722.     and.w    #$f000,$10(a6)
  723.     or.w    #$71,$10(a6)
  724. mt_por2:move.w    $10(a6),d0
  725.     and.w    #$fff,d0
  726.     move.w    d0,$6(a5)
  727.     rts
  728. mt_portdown:
  729.     clr.w    d0
  730.     move.b    $3(a6),d0
  731.     add.w    d0,$10(a6)
  732.     move.w    $10(a6),d0
  733.     and.w    #$fff,d0
  734.     cmp.w    #$358,d0
  735.     bmi.s    mt_por3
  736.     and.w    #$f000,$10(a6)
  737.     or.w    #$358,$10(a6)
  738. mt_por3:move.w    $10(a6),d0
  739.     and.w    #$fff,d0
  740.     move.w    d0,$6(a5)
  741.     rts
  742. mt_checkcom2:
  743.     move.b    $2(a6),d0
  744.     and.b    #$f,d0
  745.     cmp.b    #$e,d0
  746.     beq.s    mt_setfilt
  747.     cmp.b    #$d,d0
  748.     beq.s    mt_pattbreak
  749.     cmp.b    #$b,d0
  750.     beq.s    mt_posjmp
  751.     cmp.b    #$c,d0
  752.     beq.s    mt_setvol
  753.     cmp.b    #$f,d0
  754.     beq.s    mt_setspeed
  755.     rts
  756. mt_setfilt:
  757.     move.b    $3(a6),d0
  758.     and.b    #$1,d0
  759.     asl.b    #$1,d0
  760.     and.b    #$fd,$bfe001
  761.     or.b    d0,$bfe001
  762.     rts
  763. mt_pattbreak:
  764.     not.b    mt_break
  765.     rts
  766. mt_posjmp:
  767.     move.b    $3(a6),d0
  768.     subq.b    #$1,d0
  769.     move.b    d0,mt_songpos
  770.     not.b    mt_break
  771.     rts
  772. mt_setvol:cmp.b    #$40,$3(a6)
  773.     ble.s    mt_vol4
  774.     move.b    #$40,$3(a6)
  775. mt_vol4:move.b    $3(a6),$8(a5)
  776.     rts
  777. mt_setspeed:
  778.     cmp.b    #$1f,$3(a6)
  779.     ble.s    mt_sets
  780.     move.b    #$1f,$3(a6)
  781. mt_sets:move.b    $3(a6),d0
  782.     beq.s    mt_rts2
  783.     move.b    d0,mt_speed
  784.     clr.b    mt_counter
  785. mt_rts2:rts
  786. mt_sin:
  787. dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  788. dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  789. mt_periods:
  790. dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
  791. dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
  792. dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
  793. dc.w $007f,$0078,$0071,$0000,$0000
  794. mt_speed:    dc.b    $6
  795. mt_songpos:    dc.b    $0
  796. mt_pattpos:    dc.w    $0
  797. mt_counter:    dc.b    $0
  798. mt_break:    dc.b    $0
  799. mt_dmacon:    dc.w    $0
  800. mt_samplestarts:blk.l    $1f,0
  801. mt_voice1:    blk.w    10,0
  802.         dc.w    $1,0,0,0
  803. mt_voice2:    blk.w    10,0
  804.         dc.w    $2,0,0,0
  805. mt_voice3:    blk.w    10,0
  806.         dc.w    $4,0,0,0
  807. mt_voice4:    blk.w    10,0
  808.         dc.w    $8,0,0,0
  809. IntVector:
  810.     dc.l    $0739e791,$08451451,$087d144a
  811.     dc.l    $08451444,$0745e784
  812. ;---------------------------------------------------------------
  813. ;- EACH LINE MUST END WITH A ZERO, PAGE ENDS WITH 1,0
  814. ;- END OF TEXT ENDS WITH 1,2 - EACH LINE CAN BE ANYLENGTH...
  815. ;- PAGES ARE 10 LINES LONG
  816. Text:
  817. dc    0
  818. dc    "** M A S T E R S **",0
  819. dc    0
  820. dc    0
  821. dc    "   ARE HERE WITH",0
  822. dc    0
  823. dc    "  ANOTHER RELEASE",0
  824. dc    0
  825. dc    0
  826. dc    0
  827. dc    "FIRST WITH THE BEST",1,0
  828.  
  829. dc    " CALL THESE BOARDS ",0
  830. dc    " ----------------- ",0
  831. dc    "MASTER'S WHQ   ",0
  832. dc    "       XXXXXXXX",0,0
  833. dc    "CRYPTIC DEAD   ",0
  834. dc    "       BLA BLA",0,0
  835. dc    "TEMPEST BBS:   ",0
  836. dc    "       -----------",1,0
  837.  
  838. dc    "OPTICAL ILLUSION",0
  839. dc    "       DEPARTED ",0,0
  840. dc    "PRIME TIME",0
  841. dc    "       ----------",0,0
  842. dc    "CHERNOBYL BBS",0
  843. dc    "      +++++++++++++",0
  844. dc    "                   ",0
  845. dc    " ALL BOARDS R 9600+ ",1,0
  846.  
  847. dc    " MINI CREDITS:     ",0
  848. dc    " -------------     ",0
  849. dc    " CODING-     CADDY ",0
  850. dc    "                   ",0
  851. dc    " LOGO-  METALLIKAT ",0
  852. dc    "                   ",0
  853. dc    " FONT-   DIGIT/PNS ",0
  854. dc    "                   ",0
  855. dc    " MUSIC-  DIGIT/PNS ",0
  856. dc    " SAY GOODNIGHT BILL",1,2
  857. ;---------------------------------------------------------------
  858.     even
  859. copper:
  860. dc.l    $01200007,$0122fff4,$01240007,$0126fff4,$01280007,$012afff4
  861. dc.l    $012c0007,$012efff4,$01300007,$0132fff4,$01340007,$0136fff4
  862. dc.l    $01380007,$013afff4,$013c0007,$013efff4
  863.  
  864. dc.l    $008e2071,$009030c8
  865. dc.l    $00920038,$009400d0
  866. dc.l    $01020000,$01800000,$01040003
  867. dc.l    $01080000,$010a0000,$01000000
  868.  
  869. dc.l    $00e00005,$00e21000
  870. dc.l    $00e40005,$00e61be0
  871. dc.l    $00e80005,$00ea27c0
  872. dc.l    $00ec0005,$00ee33a0
  873. dc.l    $00f00005,$00f23f80
  874.  
  875. dc.w    $0180,$0000 ,$0182,$0fff ,$0184,$0fc6 ,$0186,$0e94
  876. dc.w    $0188,$0d96 ,$018a,$0fca ,$018c,$0fea ,$018e,$0731
  877. dc.w    $0190,$0a36 ,$0192,$0814 ,$0194,$0c05 ,$0196,$0c26
  878. dc.w    $0198,$0d48 ,$019a,$0d79 ,$019c,$0e9b ,$019e,$0a15
  879. dc.w    $01a0,$0620 ,$01a2,$0e52 ,$01a4,$0a52 ,$01a6,$0a53
  880. dc.w    $01a8,$000d ,$01aa,$011d ,$01ac,$023d ,$01ae,$044d
  881. dc.w    $01b0,$0226 ,$01b2,$066e ,$01b4,$088e ,$01b6,$099e
  882. dc.w    $01b8,$0aae ,$01ba,$0ccf ,$01bc,$0ddf ,$01be,$044b
  883.  
  884. dc.l    $260ffffe,$01005000
  885. dc.l    $720ffffe,$01000000
  886.  
  887. dc.l    $00e00006,$00e20190
  888. dc.l    $00e40006,$00e601b8
  889.  
  890. dc.l    $01820000,$01840fff,$01860fff
  891.  
  892. dc.l    $730ffffe,$01800000
  893. dc.l    $740ffffe,$01800099
  894. dc.l    $750ffffe,$018000cc
  895. dc.l    $760ffffe,$018000ff
  896. dc.l    $770ffffe,$01002000,$01020089,$01800000
  897.  
  898. CopperBlock:
  899. blk.l    Coplines*copInst,-1
  900. endblock:
  901.  
  902. dc.l    $f50ffffe,$018000ff
  903. dc.l    $f60ffffe,$018000cc
  904. dc.l    $f70ffffe,$01800099
  905. dc.l    $f80ffffe,$01800000,$01001000
  906.  
  907. dc.l    $fa0ffffe,$01820fff
  908. dc.l    $fb0ffffe,$01820eee
  909. dc.l    $fc0ffffe,$01820ddd
  910. dc.l    $fd0ffffe,$01820ccc
  911. dc.l    $fe0ffffe,$01820bbb
  912.  
  913. dc.l    $ff0ffffe,$01000000
  914.  
  915. dc.l    $fffffffe
  916. ;---------------------------------------------------------------
  917. Endish:
  918.  
  919. Font=$55000
  920. screen=$60000
  921. MT_DATA=$70000
  922.  
  923. ;>EXTERN "katlogo.b",$51000
  924. ;>EXTERN "digfont.b",$55000
  925. ;>EXTERN "MOD.HAPPY",$70000
  926.  
  927.     org $51000
  928.     incbin "df1:masters/katlogo.b"
  929.  
  930.     org    $55000
  931.     incbin "df1:masters/digfont.b"
  932.  
  933.     org    $70000
  934.     incbin "df1:masters/MOD.HAPPY"
  935. ;---------------------------------------------------------------
  936.