home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / demosrc.lha / demo.seka.source < prev    next >
Encoding:
Text File  |  1991-04-25  |  41.7 KB  |  1,944 lines

  1. ;--------------------------------------------------------;
  2. ; This Demo was Originally Coded by Corto of Angels      ;
  3. ;                                                        ;
  4. ; This is the Original Seka Version with only            ;
  5. ; filenames, intial comments, and scroll-text modified   ;
  6. ;                                                        ;
  7. ; Provided as an example of poor-programming style :-)   ;
  8. ;--------------------------------------------------------;
  9. ; This Demo was coded using SEKA (some version of it)    ;
  10. ; To run from SEKA....                                   ;
  11. ; > A <ret> <ret>               assemble
  12. ; > Y <ret> <ret>               include files
  13. ; > J run                       run from label
  14. ; To save demo from SEKA
  15. ; > WI filename run end
  16. ; Then crunch and make executable ....
  17. ;
  18. ; Enjoy the code .... hahahaha
  19.  
  20. org $40000
  21. load $40000
  22. run:
  23. ;movem.L d0-d7/a0-a6,-(sp)
  24. bsr.L save_all
  25. lea $50000,a0
  26. move #24575,d7
  27. run1:
  28. move.b #$ff,(a0)+
  29. dbra d7,run1
  30. lea $56000,a1
  31. move #37887,d7
  32. run2:clr.l (a1)+
  33. dbra d7,run2
  34. move sin+$200,sin200+2
  35. move cos+$200,cos200+2
  36. move sin+$200,sin200b+2
  37. move cos+$200,cos200b+2
  38. move sin+$600,sin600+2
  39. move cos+$600,cos600+2
  40. move sin+$600,sin600b+2
  41. move cos+$600,cos600b+2
  42. bsr.L makecopper
  43. lea $dff000,a6
  44. move #$3fff,$9a(a6)
  45. move #$3fff,$96(a6)
  46. move #$83c0,$96(a6)
  47. move.l #irq,$6c
  48. move.L #%111101111011100111101111,$56000+9982+38
  49. move.L #%100001001010100011001001,$56000+9982+46+38
  50. move.L #%100001001011100011001001,$56000+9982+92+38
  51. move.l #%100001001010010011001001,$56000+9982+138+38
  52. move.l #%111101111010010011001111,$56000+9982+184+38
  53. bsr.L makmask
  54. bsr.L suite
  55.  
  56. affiche:
  57. tst.b count1
  58. bne.s affiche1
  59. lea fonts,a1
  60. move.l bpp,a2
  61. clr.w d0
  62. lettre:
  63. move.L text1c,a0
  64. move.l (a0),a0
  65. lea quelle(pc),a3
  66. add.w (a3),a0
  67. move.b (a0),d0
  68. addq.w #1,(a3)
  69. nextline:
  70. cmpi.b #$fe,d0
  71. bne.s dernier
  72. addi.l #[46*8]-40,a2
  73. bra.s lettre
  74. dernier:
  75. tst.b    d0
  76. beq.s    suit
  77. espace:
  78. cmpi.b    #$20,d0
  79. bne.s    noespace
  80. add.w    #96,a1
  81. bra.s    affichelettre
  82. noespace:
  83. sub.b    #$2b,d0
  84. add.b    d0,d0
  85. add.w    d0,a1
  86. affichelettre:
  87. bsr.l    affichefont
  88. addq.l    #1,a2
  89. move.L a2,bpp
  90. rts
  91.  
  92. affiche1:
  93. subq.b #1,count1
  94. beq.s affiche2
  95. rts
  96. affiche2:
  97. move.L text1c,a0
  98. addq.l #4,a0
  99. cmpi #$7777,(a0)
  100. bne.s affiche2a
  101. lea textlist,a0
  102. affiche2a:
  103. move.L a0,text1c
  104. clr quelle
  105. rts
  106.  
  107. affichefont:
  108. move.b    (a1),(a2)
  109. move.b    [$62*1](a1),[46*1](a2)
  110. move.b    [$62*2](a1),[46*2](a2)
  111. move.b    [$62*3](a1),[46*3](a2)
  112. move.b    [$62*4](a1),[46*4](a2)
  113. move.b    [$62*5](a1),[46*5](a2)
  114. rts
  115. suit:lea $56000+[46*70]+2,a2
  116. move.L a2,bpp
  117. clr quelle
  118. move.b #-1,count1
  119. rts
  120.  
  121. bpp:dc.L $56000+[46*70]+2
  122.  
  123. ;    *** ici la liste des textes successifs    
  124.  
  125. textlist:dc.l text1,text2,text3,text4,text5
  126.  
  127. dc.L $77777777
  128. text1c:dc.l textlist
  129.  
  130. text1:;        *** chaque texte doit faire
  131.         ;imperativement  12 lignes de 40 caracteres !
  132.  
  133. dc.b "             --- ANGELS ---             ",$FE
  134. dc.b "                                        ",$fe
  135. DC.B "                PRESENTS                ",$FE
  136. DC.B "                                        ",$FE
  137. dc.b "                                        ",$fe
  138. dc.b "                                        ",$fe
  139. DC.B "          XXXXXX FINAL VERSION          ",$fe
  140. dc.b "                                        ",$fe
  141. dc.b "                                        ",$fe
  142. dc.b "                                        ",$fe
  143. dc.b "        PRESS RIGHT MOUSE-BUTTON        ",$fe
  144. dc.b "         TO HID/SHOW SCROLLTEXT         ",0
  145. even
  146.  
  147. text2:
  148. dc.b "            CALL OUR BOARDS:            ",$FE
  149. dc.b "                                        ",$FE
  150. DC.B "        AAAAA EEEE: xxx-xxx-xxxx        ",$FE
  151. DC.B "                WORLD HQ                ",$FE
  152. dc.b "                                        ",$FE
  153. dc.b "                                        ",$FE
  154. DC.B "      IIIIIII BBB: +xx-xxx-xxx-xxx      ",$FE
  155. DC.B "                EURO. HQ                ",$FE
  156. dc.b "                                        ",$FE
  157. dc.b "                                        ",$FE
  158. DC.B "   WWWWW TTTTT CCCCCC: +xx-xxx-xxxxx    ",$FE
  159. DC.B "                SWISS HQ                ",0
  160. even
  161.  
  162. text3:
  163. dc.b "                                        ",$FE
  164. dc.b "                                        ",$FE
  165. DC.B "      SSSSSS BBB: +xx-xxx-xxx-xxx       ",$FE
  166. DC.B "               GERMAN  HQ               ",$FE
  167. dc.b "                                        ",$fe
  168. dc.b "                                        ",$FE
  169. DC.B "     CCCC LLLLLL: +xx-xxx-xxx-xxx       ",$FE
  170. DC.B "               ENGLAND HQ               ",$FE
  171. dc.b "                                        ",$FE
  172. dc.b "                                        ",$FE
  173. DC.B "   TTT DDDDD PPPPPP: +xx-xxx-xxx-xxx    ",$FE
  174. DC.B "               HOLLAND HQ               ",0
  175. EVEN
  176.  
  177. TEXT4:
  178. DC.B "       EEEEEE ZZZZ: xxx-xxx-xxxx        ",$FE
  179. dc.b "                                        ",$FE
  180. DC.B "   DDDDDDD EEEEEEEEEE: xxx-xxx-xxxx     ",$FE
  181. dc.b "                                        ",$FE
  182. DC.B "       WWWWW HHHHH: xxx-xxx-xxxx        ",$FE
  183. dc.b "                                        ",$FE
  184. DC.B "   RRRRR II BBBBB: +xx-xxx-xxx-xxxx     ",$FE
  185. dc.b "                                        ",$FE
  186. DC.B "   HHHHH OO IIIIIIII: xxx-xxx-xxxx      ",$FE
  187. dc.b "                                        ",$FE
  188. dc.b "                                        ",$FE
  189. DC.B "  OR WRITE TO THE FOLLOWING ADDRESSES:  ",0
  190. EVEN
  191.  
  192. text5:
  193. dc.b "                                        ",$fe
  194. dc.b "    - P.O. BOX xx - xxxx  OOOOOOOO -    ",$FE
  195. DC.B "             - LUXEMBURG -              ",$FE
  196. dc.b "                                        ",$fe
  197. DC.B "      - P.O. BOX x - xxxx  JJJJJ -      ",$FE
  198. DC.B "              - BELGIUM -               ",$FE
  199. dc.b "                                        ",$fe
  200. DC.B "   - P.O. BOX xx - xxxx  MMMMMMMMMM -   ",$FE
  201. DC.B "              - BELGIUM -               ",$FE
  202. dc.b "                                        ",$fe
  203. DC.B "    - P.O. BOX xxxx - xxxx SSSSSSS -    ",$FE
  204. DC.B "              - NORWAY -                ",0
  205. even
  206.  
  207. ;    *** voici le big-scrolltext:
  208. text:
  209. dc.B "      GREETINGS TO ALL OUR FRIENDS AND CONTACTS !"
  210. DC.B " THIS INTRO WAS CODED BY CORTO",0
  211. even
  212. textptr:dc.l text
  213.  
  214. quelle:dc.w 0
  215. count1:dc.b 0
  216. even
  217.  
  218. rout1:move d0,6(a0)
  219. swap d0
  220. move d0,2(a0)
  221. addq.L #8,a0
  222. rts
  223.  
  224. suite:
  225. lea copspr,a0
  226. move.L #set1,d0
  227. bsr.s rout1
  228. move.l #set2,d0
  229. bsr.s rout1
  230. move.l #set3,d0
  231. bsr.s rout1
  232. move.l #set4,d0
  233. bsr.s rout1
  234. move.l #set5,d0
  235. bsr.s rout1
  236. move.l #set6,d0
  237. bsr.s rout1
  238. move.l #setf,d0
  239. bsr.s rout1
  240. move.l #setf,d0
  241. bsr.s rout1
  242.  
  243. jsr init_music
  244. lea $dff000,a6
  245. move.L #$217937c9,$8e(a6)
  246. move.l #$3000d8,$92(a6)
  247. move.L #copperlist,$80(a6)
  248. clr $88(a6)
  249. move #$c010,$9a(a6)
  250. wait:
  251. tst flag1
  252. bne.s wait1
  253. ;bsr moveball
  254. bsr.L bras
  255. move #1,flag1
  256. wait1:
  257. btst #6,$bfe001
  258. bne.s wait
  259. wb:btst #$e,2(a6)
  260. bne.s wb
  261. jsr end_music
  262. bsr.L restore_all
  263. ;movem.L (sp)+,d0-d7/a0-a6
  264. rts
  265. flag:dc.w -1
  266. flag1:dc.w 0
  267. juga:dc.w 0
  268. jugw:dc.w 50
  269.  
  270. makmask:
  271. lea bob1,a0
  272. lea mask1,a1
  273. bsr.s masque1
  274. lea bob2,a0
  275. lea mask2,a1
  276. bsr.s masque1
  277. lea bob8,a0
  278. lea mask8,a1
  279. bsr.s masque1
  280. move #4,d6
  281. lea bob3,a0
  282. lea mask3,a1
  283. masl1:
  284. bsr.s masque2
  285. dbra d6,masl1
  286. lea bob9,a0
  287. lea mask9,a1
  288. bsr.s masque2
  289. rts
  290.  
  291. masque1:
  292. move #31,d7
  293. masq1:
  294. move.L (a0),d0
  295. addq.L #6,a0
  296. or.l (a0),d0
  297. addq.l #6,a0
  298. or.l (a0),d0
  299. addq.L #6,a0
  300. move.l d0,(a1)+
  301. clr (a1)+
  302. move.l d0,(a1)+
  303. clr (a1)+
  304. move.l d0,(a1)+
  305. clr (a1)+
  306. dbra d7,masq1
  307. rts
  308.  
  309. masque2:
  310. move #15,d7
  311. masq2:
  312. move (a0),d0
  313. addq.L #4,a0
  314. or.w (a0),d0
  315. addq.l #4,a0
  316. or.w (a0),d0
  317. addq.L #4,a0
  318. move d0,(a1)+
  319. clr (a1)+
  320. move d0,(a1)+
  321. clr (a1)+
  322. move d0,(a1)+
  323. clr (a1)+
  324. dbra d7,masq2
  325. rts
  326.  
  327. irq:
  328. movem.L d0-d7/a0-a6,-(a7)
  329. lea $dff000,a6
  330. bsr.L altern
  331. tst jugw
  332. beq.s juga00
  333. subq #1,jugw
  334. bra.s juga0
  335. juga00:
  336. btst #$a,$16(a6)
  337. bne.s juga0
  338. bchg #0,juga
  339. move #50,jugw
  340. juga0:
  341. tst juga
  342. bne.s juga1
  343. move.L #bp1,d0
  344. sub.L scrval,d0
  345. move d0,copbpl1+6
  346. swap d0
  347. move d0,copbpl1+2
  348. move.l #$1820003,bar1
  349. move.L #$1820002,bar2
  350. move.l #$1820001,bar3
  351. move.l #$1820000,bar4
  352. move.l #$1820000,bar5
  353. bsr.L print
  354. bsr.L cycle
  355. bsr.L scroll
  356. bra.s juga2
  357. juga1:move #$b000,copbpl1+6
  358. move #6,copbpl1+2
  359. move.l #$1800002,bar1
  360. move.l #$1800004,bar2
  361. move.l #$1800007,bar3
  362. move.l #$1800004,bar4
  363. move.l #$1800002,bar5
  364. juga2:
  365. bsr.L stars
  366. jsr play
  367. lea $dff000,a6
  368. bsr.L affiche
  369. move #$8400,$96(a6)
  370. cyc:btst #$e,2(a6)
  371. bne.s cyc
  372. move #$400,$96(a6)
  373. tst flag
  374. bne.s irq1
  375. bsr.L clear
  376. bsr.L copscroll
  377. move #$8400,$96(a6)
  378. cyc2:btst #$e,2(a6)
  379. bne.s cyc2
  380. move #$400,$96(a6)
  381. move #1,flag
  382. irq4:move #$10,$9c(a6)
  383. movem.L (a7)+,d0-d7/a0-a6
  384. rte
  385.  
  386. irq1:
  387. tst flag1
  388. beq.s irq4
  389. move #$8400,$96(a6)
  390. cyc4:btst #$e,2(a6)
  391. bne.s cyc4
  392. move #$400,$96(a6)
  393. bsr.L bob
  394. ;move #$f00,$180(a6)
  395. move #$8400,$96(a6)
  396. cyc3:btst #$e,2(a6)
  397. bne.s cyc3
  398. move #$400,$96(a6)
  399. ;move #$ff0,$180(a6)
  400. move #$10,$9c(a6)
  401. clr flag
  402. clr flag1
  403. movem.L (a7)+,d0-d7/a0-a6
  404. rte
  405. t1:dc.l 0
  406. t2:dc.l 0
  407. altern:
  408. tst flag
  409. bne.s alt1
  410. move.L bpw1,d0
  411. move.L bpa1,bpw1
  412. move.l d0,bpa1
  413. move d0,copbpl3+6
  414. swap d0
  415. move d0,copbpl3+2
  416. swap d0
  417. addi.L #64,d0
  418. move d0,copbpl3+14
  419. swap d0
  420. move d0,copbpl3+10
  421. swap d0
  422. addi.L #64,d0
  423. move d0,copbpl3+22
  424. swap d0
  425. move d0,copbpl3+18
  426. alt1:rts
  427.  
  428. stars:
  429. lea set5+1,a0
  430. move #15,d7
  431. spriteloop:
  432. subq.B #5,(a0)
  433. add.l #8,a0
  434. dbra d7,spriteloop
  435. lea set6+1,a0
  436. move #15,d7
  437. spriteloopa:
  438. subq.B #6,(a0)
  439. add.l #8,a0
  440. dbra d7,spriteloopa
  441. lea set3+1,a0
  442. move #21,d7
  443. spriteloop2:
  444. subq.b #3,(a0)
  445. add.l #8,a0
  446. dbra d7,spriteloop2
  447. lea set4+1,a0
  448. move #21,d7
  449. sprite2loopa:
  450. subq.B #4,(a0)
  451. add.L #8,a0
  452. dbra d7,sprite2loopa
  453. lea set1+1,a0
  454. move #31,d7
  455. spriteloop3:
  456. subq.b #1,(a0)
  457. add.l #8,a0
  458. dbra d7,spriteloop3
  459. lea set2+1,a0
  460. move #31,d7
  461. spriteloop3a:
  462. subq.b #2,(a0)
  463. add.l #8,a0
  464. dbra d7,spriteloop3a
  465. rts
  466.  
  467. scroll:
  468. move.L scrollc,a0
  469. move.B (a0)+,d0
  470. cmpi.b #$77,(a0)
  471. bne.s scroll1
  472. lea scrol,a0
  473. scroll1:move.L a0,scrollc
  474. ext d0
  475. muls #46,d0
  476. subi.L #1426,d0
  477. move.l d0,scrval
  478. rts
  479.  
  480. scrval:dc.l 1426
  481. scrol:
  482. dc.b 0,0,0,0,0,0
  483. dc.b 1,1,1
  484. dc.b 2,2
  485. dc.b 3,4,5,7,9,11,13,16,19,23,27,31
  486. dc.b 27,23,19,16,13,11,9,7,5,4,3,2,2,1,1,1
  487. dc.b 0,0,0,0,0,0,$77
  488. even
  489. scrollc:dc.l scroll
  490.  
  491. clear:move #$34,$66(a6)
  492. move.l bpw1,d0
  493. addi.L #[10*3*64]+16,d0
  494. move.l d0,$54(a6)
  495. move.L #$1000000,$40(a6)
  496. move #[199*3*64]+6,$58(a6)
  497. rts
  498.  
  499.  
  500.  
  501. spball:dc.w 0
  502. balls:dc.w 0
  503.  
  504. moveball:
  505. lea boules+2,a0
  506. tst balls
  507. bne.s mb1
  508. add #12,spball
  509. move spball,d0
  510. sub d0,(a0)
  511. cmpi #-1400,(a0)
  512. blo.s mb2
  513. rts
  514. mb2:move #-1,balls
  515. add d0,(a0)
  516. rts
  517. mb1:
  518. sub #12,spball
  519. move spball,d0
  520. add d0,(a0)
  521. tst spball
  522. beq.s mb3
  523. rts
  524. mb3:clr balls
  525. move #$200,bra1
  526. rts
  527.  
  528. bras:
  529. bsr.s moveball
  530. lea sin,a0
  531. lea cos,a1
  532. lea hand+2,a2
  533. move bra1,d6
  534. addi #72,d6
  535. andi #$7fe,d6
  536. move d6,bra1
  537. move.L #38*8,d0
  538. muls (a1,d6.w),d0
  539. asr.L #5,d0
  540. asr.l #8,d0
  541. addi #12,d0
  542. move d0,18(a2)
  543. addq.l #6,a2
  544.  
  545. move.L #75*8,d0
  546. muls (a1,d6.w),d0
  547. asr.L #5,d0
  548. asr.l #8,d0
  549. subi #25,d0
  550. move d0,18(a2)
  551. addq.L #6,a2
  552.  
  553. move.L #100*8,d0
  554. muls (a1,d6.w),d0
  555. asr.L #5,d0
  556. asr.l #8,d0
  557. subi #50,d0
  558. move d0,18(a2)
  559.  
  560. ;*** La variable speed contient la vitesse de rotation (paire)
  561.  
  562. speed=32
  563.  
  564. calcule:
  565. addi #speed,z+2
  566. andi #$7fe,z+2
  567. lea jug,a2
  568. lea coord,a3
  569. lea val,a4
  570. sub.l a5,a5
  571. movem.L vide,d0-d7
  572. calculoop:
  573. movem.w (a2)+,d0/d1/d2
  574. move d0,d5
  575. move d1,d6
  576. sin200:muls #,d0    
  577. cos200:muls #,d1
  578. sub.l d1,d0
  579. cos200b:muls #,d5
  580. move d6,d1
  581. sin200b:muls #,d1
  582. add.l d5,d1
  583. asr.l #8,d0
  584. asr.l #2,d0
  585. asr.l #8,d1
  586. asr.l #2,d1
  587. y:move #$600,d3
  588. move d1,d5
  589. move d2,d6
  590. sin600:muls #,d1
  591. cos600:muls #,d2
  592. sub.l d2,d1
  593. cos600b:muls #,d5
  594. move d6,d2
  595. sin600b:muls #,d2
  596. add.l d5,d2
  597. asr.l #2,d1
  598. asr.l #8,d2
  599. asr.l #2,d2
  600. z:move #$200,d3
  601. move d2,d5
  602. move d0,d6
  603. muls (a0,d3),d2
  604. muls (a1,d3),d0
  605. sub.l d0,d2
  606. muls (a1,d3),d5
  607. move d6,d0
  608. muls (a0,d3),d0
  609. add.l d5,d0
  610. asr.l #2,d0
  611. asr.l #8,d2
  612. asr.l #6,d2
  613.  
  614. add #300,d2
  615. divs d2,d0
  616. divs d2,d1
  617. move d2,(a4)+
  618. cmpi #3,a5
  619. blo.s cal0
  620. addi #[41*64]+16,d0
  621. addi #[111*16],d1
  622. bra.s cal1
  623. cal0:addi #[40*64]-48,d0
  624. addi #[111*16],d1
  625. cal1:
  626. asr #4,d0
  627. asr #4,d1
  628. move d0,d2
  629. lsr #3,d0
  630. bclr #0,d0
  631. and #$f,d2
  632. lsl #6,d1
  633. move d1,d6
  634. add d6,d1
  635. add d6,d1
  636. add d1,d0
  637. swap d0
  638. clr d0
  639. swap d0
  640. move.l d0,(a3)+
  641. ror #4,d2
  642. move d2,(a3)+
  643. or #$fca,d2
  644. move d2,(a3)+
  645. add #1,a5
  646. cmpi #$7777,(a2)
  647. bne.L calculoop
  648. move #$7777,(a3)
  649. move #$7777,(a4)
  650.  
  651. lea ordre,a0
  652. lea val,a1
  653. clr.L d0
  654. loop1:
  655. move.L d0,d1
  656. add.l #2,d1
  657. loop2:
  658. move (a0,d0.w),d2
  659. move (a0,d1.w),d3
  660. lsl #1,d2
  661. lsl #1,d3
  662. move (a1,d2.w),d4
  663. move (a1,d3.w),d5
  664. cmp d5,d4
  665. bge.s noexg
  666. lsr #1,d2
  667. lsr #1,d3
  668. move d2,(a0,d1.w)
  669. move d3,(a0,d0.w)
  670. noexg:
  671. addq.L #2,d1
  672. cmpi #$7777,(a0,d1.w)
  673. bne.s loop2
  674. add.l #2,d0
  675. cmpi #$7777,2(a0,d0.w)
  676. bne.s loop1
  677. clr.l d0
  678. rts
  679.  
  680. bob:
  681. lea ordre,a1
  682. lea bo,a4
  683. lea coord,a3
  684. move.l #$ffff0000,$44(a6)
  685. clr.L $62(a6)
  686. move #$8400,$96(a6)
  687. move.l bpw1,d0
  688. bobl1:
  689. btst #$e,2(a6)
  690. bne.s bobl1
  691. move (a1)+,d2
  692. lsl #3,d2
  693. move.l (a3,d2.w),d1
  694. add.L d0,d1
  695. move.l (a4,d2.w),d4
  696. move.l d4,$4c(a6)
  697. move.L 4(a4,d2.w),$50(a6)
  698. move.l d1,$48(a6)
  699. move.L d1,$54(a6)
  700. cmpi.L #bob1,d4
  701. beq.s bobb2
  702. cmpi.L #bob2,d4
  703. beq.s bobb2
  704. cmpi.l #bob8,d4
  705. beq.s bobb2
  706. move #$3c,$60(a6)
  707. move #$3c,$66(a6)
  708. move 4(a3,d2.w),$42(a6)
  709. move 6(a3,d2.w),$40(a6)
  710. move #3074,$58(a6)
  711. cmpi #$7777,(a1)
  712. bne.s bobl1
  713. rts
  714.  
  715. bobb2:
  716. move #$3a,$60(a6)
  717. move #$3a,$66(a6)
  718. move 4(a3,d2.w),$42(a6)
  719. move 6(a3,d2.w),$40(a6)
  720. move #6147,$58(a6)
  721. cmpi #$7777,(a1)
  722. bne.L bobl1
  723. rts
  724.  
  725. var1:dc.w 15
  726. print:
  727. move #$8400,$96(a6)
  728. printwb:btst #6,2(a6)
  729. bne.s printwb
  730. move #$400,$96(a6)
  731. move.L #$9f00000,$40(a6)
  732. move.l #-1,$44(a6)
  733. clr $64(a6)
  734. move #44,$66(a6)
  735. lea fonte,a1
  736. move.L #bp1,d2
  737. add.L #44+1426,d2
  738. clr.l d0
  739. move.l textptr,a0
  740. move.b (a0),d0
  741. sub.b #$20,d0
  742. lsl.b #1,d0
  743. add.l d0,a1
  744. move #15,d6
  745. print1:
  746. move (a1),d0
  747. add.l #120,a1
  748. move var1,d7
  749. move.L d2,d1
  750. btst d7,d0
  751. beq.s print2
  752. move #$8400,$96(a6)
  753. wbl:btst #6,2(a6)
  754. bne.s wbl
  755. move.L #carre,$50(a6)
  756. move.L d1,$54(a6)
  757. move #769,$58(a6)
  758. move #$400,$96(a6)
  759. bra.s print03
  760. print2:
  761. move #$8400,$96(a6)
  762. wbl4:btst #6,2(a6)
  763. bne.s wbl4
  764. move.L #carre1,$50(a6)
  765. move.L d1,$54(a6)
  766. move #769,$58(a6)
  767. move #$400,$96(a6)
  768. print03:
  769. add.L #552,d2    ;13*46
  770. dbra d6,print1
  771. subq #1,var1
  772. cmpi #-1,var1
  773. bne.s print3
  774. move #15,var1
  775. move.L textptr,a0
  776. addq.L #1,a0
  777. move.L a0,textptr
  778. tst.B (a0)
  779. beq.s fini
  780. cmpi.b #"s",(a0)
  781. beq.s chspeed
  782. print3:rts
  783. fini:
  784. move.l #text,textptr
  785. rts
  786. chspeed:
  787. addq.L #1,textptr
  788. cmpi.B #$49,delai2+2
  789. beq.s chsp1
  790. move.l #$49f00000,delai2+2
  791. rts
  792. chsp1:
  793. move.L #$9f00000,delai2+2
  794. rts
  795.  
  796. cycle:
  797. btst #$e,$2(a6)
  798. bne.s cycle
  799. move.l #bp1,d0
  800. add.l #1426,d0
  801. move.L d0,$54(a6)
  802. addq.L #2,d0
  803. move.l d0,$50(a6)
  804. delai2:move.l #$9f00000,$40(a6)
  805. move.l #$ffffffff,$44(a6)
  806. move #2,$64(a6)
  807. move #2,$66(a6)
  808. move.w #14230,$58(a6)
  809. rts
  810.  
  811. copscroll:
  812. lea cop1+6,a0
  813. move #94,d7
  814. move (a0),d0
  815. cops1:
  816. move 20(a0),(a0)
  817. move 20(a0),4(a0)
  818. move 20(a0),8(a0)
  819. move 20(a0),12(a0)
  820. add.L #20,a0
  821. dbra d7,cops1
  822. move d0,(a0)
  823. move d0,4(a0)
  824. move d0,8(a0)
  825. move d0,12(a0)
  826. rts
  827.  
  828. fonte:
  829. dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
  830. dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
  831. dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
  832. dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
  833. dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
  834. dc.l $000003E0,$0E380000,$03800004,$000001C0,$00F80F80,$008003C0
  835. dc.l $00000000,$00000008,$00000000,$00000000,$00000000,$00000000
  836. dc.l $00000000,$00000000,$00000000,$00000FF0,$00000000,$00000000
  837. dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
  838. dc.l $00000000,$00000000,$00000000,$00000000,$00000000,$00000000
  839. dc.l $000003E0,$1F7C0000,$03801C0E,$0FF003E0,$01F007C0,$008003C0
  840. dc.l $00000000,$0000001C,$0FF00180,$0FF03FF8,$781E7FFE,$0FF07FF0
  841. dc.l $0FF007F0,$00000000,$00000000,$00003FFC,$00000FF0,$7FF00FF0
  842. dc.l $7FF00FFE,$0FFE0FF0,$781E3FFC,$001E781E,$78007C3E,$7FF00FF0
  843. dc.l $7FF00FF0,$7FF00FFE,$7FF8781E,$781E781E,$781E7878,$7FFE0000
  844. dc.l $000003E0,$1F7C0000,$1FF03E1F,$3FFC03E0,$03E003E0,$01C003C0
  845. dc.l $00000000,$0000003E,$3FFC0780,$3FFC3FFE,$781E7FFE,$3FFC7FFC
  846. dc.l $3FFC3FFC,$01C001C0,$00000000,$00003FFC,$00003FFC,$7FFC3FFC
  847. dc.l $7FFC3FFE,$3FFE3FFC,$781E3FFC,$001E783E,$78007E7E,$7FFC3FFC
  848. dc.l $7FFC3FFC,$7FFC3FFE,$7FF8781E,$781E781E,$781E7878,$7FFE0000
  849. dc.l $000003E0,$1F7C0080,$3FF83E3E,$3C3C03E0,$03E003E0,$01C003C0
  850. dc.l $00000000,$0000007F,$3C3C1F80,$3C3C001E,$781E7800,$3C3C7FFC
  851. dc.l $3C3C3C3C,$03E003E0,$00007FFF,$00007FFE,$00003C3C,$783C3C3C
  852. dc.l $783C3C00,$3C003C3C,$781E03C0,$001E787C,$78007FFE,$783C3C3C
  853. dc.l $783C3C3C,$783C3C00,$0780781E,$781E781E,$7C3E7878,$001E0000
  854. dc.l $000003E0,$0F3C0140,$3FF83E7C,$781E01E0,$07C001F0,$03E003C0
  855. dc.l $00000000,$000000FE,$781E0780,$781E000F,$781E7800,$781E7FFE
  856. dc.l $781E781E,$03E003E0,$00007FFF,$0000783E,$0000781E,$781E781E
  857. dc.l $781E7800,$7800781E,$781E03C0,$001E78F8,$78007BDE,$781E781E
  858. dc.l $781E781E,$781E7800,$0780781E,$781E781E,$3C3C7878,$001E0000
  859. dc.l $000003E0,$06180220,$3B801CF8,$781E00C0,$07C001F0,$7FFF03C0
  860. dc.l $00007FFF,$000001FC,$781E0780,$001E000F,$781E7800,$7800003E
  861. dc.l $781E781E,$03E003E0,$00007FFF,$0000003C,$0000781E,$781E781E
  862. dc.l $781E7800,$7800781E,$781E03C0,$001E79F0,$7800799E,$781E781E
  863. dc.l $781E781E,$781E7800,$0780781E,$781E781E,$3E7C7878,$001E0000
  864. dc.l $000003E0,$0C3007F0,$3FF001F0,$7C3E0180,$07C001F0,$3FFE7FFF
  865. dc.l $00007FFF,$000003F8,$781E0780,$003C001F,$781E7800,$7C00001E
  866. dc.l $7C3E3C3E,$01C001C0,$00007FFF,$0000007C,$0000781E,$783E781E
  867. dc.l $781E7800,$78007800,$781E03C0,$001E7BE0,$7800781E,$781E781E
  868. dc.l $783C781E,$783C3C00,$0780781E,$781E781E,$1FF87CF8,$003C0000
  869. dc.l $000003E0,$00000A28,$3FF803E0,$3FFC0000,$07C001F0,$1FFC7FFF
  870. dc.l $00007FFF,$000007F0,$7C1E0780,$0FFC03FE,$7FFE7FF0,$7FF0001E
  871. dc.l $3FFC3FFE,$00000000,$00000000,$000001F8,$00007FFE,$7FFC7C00
  872. dc.l $7C1E7FE0,$7FE07C7E,$7FFE07C0,$003E7FF0,$7C007C1E,$7C1E7C1E
  873. dc.l $7FFC7C1E,$7FFC3FF0,$0F807C1E,$7C3E799E,$0FF03FF0,$0FFC0000
  874. dc.l $000003E0,$00001144,$1FF807C0,$3FFC0000,$07C001F0,$0FF87FFF
  875. dc.l $01C07FFF,$00000FE0,$7E1E0780,$3FF003FE,$7FFE7FFC,$7FFC003E
  876. dc.l $3FFC0FFE,$01C001C0,$00007FFF,$000003E0,$00007FFE,$7FFC7E00
  877. dc.l $7E1E7FE0,$7FE07E7E,$7FFE0FC0,$007E7FF0,$7E007E1E,$7E1E7E1E
  878. dc.l $7FF07E1E,$7FF80FFC,$1F807E1E,$3E7C7BDE,$1FF83FF0,$3FF00000
  879. dc.l $00000000,$00003FFE,$03B80F9C,$781E0000,$07C001F0,$0FF87FFF
  880. dc.l $03E00000,$00001FC0,$7E1E0780,$3E00003F,$007E007C,$783C007E
  881. dc.l $781E001E,$03E003E0,$00007FFF,$000003C0,$00007E1E,$7E1E7E1E
  882. dc.l $7E1E7E00,$7E007E1E,$7E1E0FC0,$787E7EF8,$7E007E1E,$7E1E7E1E
  883. dc.l $7E007E1E,$7E3C003C,$1F807E1E,$3FFC7FFE,$3FFC1FE0,$3E000000
  884. dc.l $000001C0,$00000000,$3FF81F3E,$781E0000,$07C001F0,$1FFC03C0
  885. dc.l $03E00000,$01C03F80,$7E3E0780,$7C00003F,$007E003E,$783E007E
  886. dc.l $781E783E,$03E003E0,$00007FFF,$00000000,$00007E1E,$7E1E7E3E
  887. dc.l $7E3E7E00,$7E007E3E,$7E1E0FC0,$7E7E7EF8,$7E007E1E,$7E1E7E3E
  888. dc.l $7E007E3E,$7E1E003E,$1F807E3E,$1FF87FFE,$3FFC0780,$7C000000
  889. dc.l $000003E0,$00000000,$3FF83E3E,$7FFE0000,$03E003E0,$1E3C03C0
  890. dc.l $03E00000,$03E07F00,$7FFE7FF8,$7FFE3FFF,$007E7FFE,$7FFE007E
  891. dc.l $7FFE7FFE,$03E003E0,$00007FFF,$00000180,$00007E1E,$7FFE7FFE
  892. dc.l $7FFE7FFE,$7E007FFE,$7E1E3FFC,$7FFE7E7C,$7FFE7E1E,$7E1E7FFE
  893. dc.l $7E007FFE,$7E1E7FFE,$1F807FFE,$0FF07FFE,$7E7E0780,$7FFE0000
  894. dc.l $000003E0,$00000000,$1FF07C3E,$3FFF0000,$03E003E0,$380E03C0
  895. dc.l $01E00000,$03E03E00,$3FFC7FF8,$7FFE3FFE,$007E7FFC,$3FFC007E
  896. dc.l $3FFC3FFC,$01C001E0,$00000000,$000003C0,$00007E1E,$7FFC3FFC
  897. dc.l $7FFC3FFE,$7E003FFC,$7E1E3FFC,$3FFC7E7C,$3FFE7E1E,$7E1E3FFC
  898. dc.l $7E003FF8,$7E1E7FFC,$1F803FFC,$07E07FFE,$7E7E0780,$7FFE0000
  899. dc.l $000003E0,$00000000,$0380381C,$3FFE0000,$01F007C0,$200203C0
  900. dc.l $00C00000,$03E01C00,$3FFC7FF8,$7FFE3FFE,$007E7FFC,$3FFC007E
  901. dc.l $3FFC3FFC,$000000C0,$00000000,$000003C0,$00007E1E,$7FFC3FFC
  902. dc.l $7FFC3FFE,$7E003FFC,$7E1E3FFC,$3FFC7E3E,$3FFE7E1E,$7E1E3FFC
  903. dc.l $7E003FFE,$7E1E7FFC,$1F803FFC,$03C07E7E,$7C3E0780,$7FFE0000
  904. dc.l $000001C0,$00000000,$03801000,$0FF40000,$00F80F80,$000003C0
  905. dc.l $01800000,$01C00800,$0FF07FF8,$7FFE3FF8,$007E7FF0,$0FF0007E
  906. dc.l $0FF00FF0,$00000180,$00000000,$00000180,$00007E1E,$7FF00FF0
  907. dc.l $7FF00FFE,$7E000FF0,$7E1E3FFC,$0FF07E3E,$0FFE7E1E,$7E1E0FF0
  908. dc.l $7E000FE6,$7E1E7FF0,$1F800FF0,$01807C3E,$7C3E0780,$7FFE0000
  909.  
  910. save_all:
  911. move.L 4,a6
  912. jsr -132(a6)
  913. move.b #%10000111,$bfd100
  914. move.l $6c,save_vecteur_irq
  915. move.w $dff01c,save_intena
  916. or.w #$c000,save_intena
  917. move.w $dff002,save_dmacon
  918. or.w #$8100,save_dmacon
  919. rts
  920. restore_all:
  921. move.l save_vecteur_irq,$6c
  922. move.w #$7fff,$dff09a
  923. move.w save_intena,$dff09a
  924. move.w #$7fff,$dff096
  925. move.w save_dmacon,$dff096
  926. move.l 4,a6
  927. lea name_glib,a1
  928. moveq #0,d0
  929. jsr -552(a6)
  930. move.l d0,a0
  931. move.l 38(a0),$dff080
  932. clr.w $dff088
  933. move.L 4,a6
  934. jsr -138(a6)
  935. rts
  936. save_intena:dc.w 0
  937. save_dmacon:dc.w 0
  938. save_vecteur_irq:dc.l 0
  939. name_glib:dc.b "graphics.library",0
  940. even
  941.  
  942. makecopper:
  943. lea cop1,a0
  944. move.L #$670ffffe,d0
  945. move #95,d6
  946. mcl0:
  947. move.l d0,(a0)+
  948. move.L #$1840000,(a0)+
  949. move.l #$1860000,(a0)+
  950. move.l #$18c0000,(a0)+
  951. move.l #$18e0000,(a0)+
  952. add.L #$1000000,d0
  953. dbra d6,mcl0
  954.  
  955. lea cop1+6,a0
  956. lea deg,a1
  957. move #5,d6
  958. mcl5:
  959. move (a1)+,d0
  960. move (a1)+,d1
  961. move (a1),d2
  962. move #15,d7
  963. mcl6:
  964. move d0,(a0)
  965. move d0,4(a0)
  966. move d0,8(a0)
  967. move d0,12(a0)
  968. add.L #20,a0
  969. add d1,d0
  970. dbra d7,mcl6
  971. dbra d6,mcl5
  972.  
  973. lea copbpl2,a0
  974. move.L #logo0b,d0
  975. move d0,6(a0)
  976. swap d0
  977. move d0,2(a0)
  978. swap d0
  979. addi.L #36*44,d0
  980. move d0,14(a0)
  981. swap d0
  982. move d0,10(a0)
  983. swap d0
  984. addi.L #36*44,d0
  985. move d0,22(a0)
  986. swap d0
  987. move d0,18(a0)
  988. rts
  989. mcs1:dc.w 0
  990.  
  991. deg:dc.W $f00,$10,$ff0,-$100,$f0,1,$ff,-$10,$f,$100,$f0f,-1,$f00
  992.  
  993. copperlist:        ;quel bordel !
  994. dc.L $10ffffe,$920030,$9400d8
  995. copspr:dc.L $1200000,$1220000,$1240000,$1260000,$1280000,$12a0000
  996. dc.L $12c0000,$12e0000,$1300000,$1320000,$1340000,$1360000,$1380000
  997. dc.l $13a0000,$13c0000,$13e0000
  998. dc.l $1020000,$1040000,$1080002,$10a0094,$1000200
  999. dc.w    $0180,$0000 ,$0182,$0000
  1000. dc.L $1880888,$18a0888
  1001. dc.w    $0190,$0000 ,$0192,$0eca ,$0194,$035e ,$0196,$023a
  1002. dc.w    $0198,$0126 ,$019a,$0cc0 ,$019c,$0c80 ,$019e,$0c50
  1003.  
  1004. dc.w    $01a0,$0000 ,$01a2,$0334 ,$01a4,$0778 ,$01a6,$099a
  1005. dc.w    $01a8,$0000 ,$01aa,$0223 ,$01ac,$0445 ,$01ae,$0667
  1006. dc.w    $01b0,$0000 ,$01b2,$0666 ,$01b4,$0aaa ,$01b6,$0fff
  1007. dc.L $1b80000,$1ba0000,$1bc0000,$1be0000
  1008. dc.L $200ffffe,$9683e0
  1009. copbpl1:dc.W $e0,5,$e2,$0000,$e8,5,$ea,$6000,$f0,5,$f2,$602e
  1010. copbpl3:dc.w $e4,6,$e6,$b000,$ec,6,$ee,$b000,$f4,6,$f6,$b000
  1011. copscr1:dc.L $210ffffe,$1006600
  1012. dc.L $250ffffe,$1820001
  1013. dc.L $260ffffe,$1820002
  1014. dc.L $270ffffe,$1820003
  1015. dc.L $280ffffe,$1820004
  1016. dc.L $290ffffe,$1820005
  1017.  
  1018. cop1:blk.b 96*20
  1019.  
  1020. dc.L $f90ffffe,$9c8010,$1004600,$1840fff,$1860fff,$1820004;,$960020,$9683c0
  1021. dc.l $1a20000,$1a40000,$1a60000,$1aa0000,$1ac0000,$1ae0000
  1022. dc.l $1b20000,$1b40000,$1b60000
  1023. dc.L $fa0ffffe,$1840eee,$1860eee
  1024. bar1:dc.L $1820003
  1025. dc.L $fb0ffffe,$1840ddd,$1860ddd
  1026. bar2:dc.l $1820002
  1027. dc.L $fc0ffffe,$1840ccc,$1860ccc
  1028. bar3:dc.L $1820001
  1029. dc.L $fd0ffffe,$1840bbb,$1860bbb
  1030. bar4:dc.L $1820000
  1031. dc.l $fe0ffffe
  1032. bar5:dc.L $1820000
  1033.  
  1034. dc.L $ff0ffffe
  1035. dc.L $1000200,$1820000,$1800000
  1036. dc.L $ffdffffe
  1037. copbpl2:dc.l $e00006,$e2b000,$e40006,$e6b000,$e80006,$eab000
  1038. logdec:dc.L $1020000,$1080000,$10a0000    ;,$920028,$9400d8
  1039.  
  1040. dc.w    $0180,$0000 ,$0182,$0fff ,$0184,$0bcd ,$0186,$07ab
  1041. dc.w    $0188,$0589 ,$018a,$0257 ,$018c,$0145 ,$018e,$0023
  1042.  
  1043. dc.L $20ffffe,$1003200
  1044. dc.l $250ffffe,$108ff7c,$10aff7c
  1045. dc.w    $0180,$0000 ,$0182,$0888 ,$0184,$0566 ,$0186,$0455
  1046. dc.w    $0188,$0344 ,$018a,$0134 ,$018c,$0023 ,$018e,$0012
  1047. dc.L $280ffffe,$1020011
  1048. dc.l $2a0ffffe,$1020022
  1049. dc.l $2c0ffffe,$1020033
  1050. dc.L $2e0ffffe,$1020044
  1051. dc.L $300ffffe,$1020055
  1052. dc.L $320ffffe,$1020066
  1053. dc.L $340ffffe,$1020077
  1054. dc.L $360ffffe,$1020088
  1055. dc.l $370ffffe,$1000200
  1056. dc.L -2
  1057.  
  1058. bpa1:dc.L bp3
  1059. bpw1:dc.L bp4
  1060.  
  1061. END_MUSIC:
  1062. ;clr.w onoff
  1063. clr.l $dff0a6
  1064. clr.l $dff0b6
  1065. clr.l $dff0c6
  1066. clr.l $dff0d6
  1067. move.w #$000f,$dff096
  1068. rts
  1069.  
  1070. INIT_MUSIC:
  1071. ;move.w #1,onoff
  1072. lea MODULE(pc),a0
  1073. lea 100(a0),a1
  1074. lea    SEQpoint(pc),a5
  1075. move.l a1,(a5)
  1076. move.l a0,a1
  1077. add.l 8(a0),a1
  1078. lea    PATpoint(pc),a5
  1079. move.l a1,(a5)
  1080. move.l a0,a1
  1081. add.l 16(a0),a1
  1082. lea    FRQpoint(pc),a5
  1083. move.l a1,(a5)
  1084. move.l a0,a1
  1085. add.l 24(a0),a1
  1086. lea    VOLpoint(pc),a5
  1087. move.l a1,(a5)
  1088. move.l 4(a0),d0
  1089. divu #13,d0
  1090.  
  1091. lea 40(a0),a1
  1092. lea SOUNDINFO+4(pc),a2
  1093. moveq #10-1,d1
  1094. initloop:
  1095. move.w (a1)+,(a2)+
  1096. move.l (a1)+,(a2)+
  1097. addq.w #4,a2
  1098. dbf d1,initloop
  1099. moveq #0,d2
  1100. move.l a0,d1
  1101. add.l 32(a0),d1
  1102. lea    waveforms(pc),a5
  1103. sub.l a5,d1
  1104. lea SOUNDINFO(pc),a0
  1105. move.l d1,(a0)+
  1106. moveq #9-1,d3
  1107. initloop1:
  1108. move.w (a0),d2
  1109. add.l d2,d1
  1110. add.l d2,d1
  1111. addq.w #6,a0
  1112. move.l d1,(a0)+
  1113. dbf d3,initloop1
  1114.  
  1115. move.l SEQpoint(pc),a0
  1116. moveq #0,d2
  1117. move.b 12(a0),d2        ;Get replay speed
  1118. bne.s speedok
  1119. move.b #3,d2            ;Set default speed
  1120. speedok:
  1121. lea    respcnt(pc),a5
  1122. move.w d2,(a5)        ;Init repspeed counter
  1123. lea    repspd(pc),a5
  1124. move.w d2,(a5)
  1125. INIT2:
  1126. lea    audtemp(pc),a5
  1127. clr.w (a5)
  1128. move.w #$000f,$dff096        ;Disable audio DMA
  1129. move.w #$0780,$dff09a        ;Disable audio IRQ
  1130. moveq #0,d7
  1131. mulu #13,d0
  1132. moveq #4-1,d6            ;Number of soundchannels-1
  1133. lea V1data(pc),a0        ;Point to 1st voice data area
  1134. lea silent(pc),a1
  1135. lea o4a0c8(pc),a2
  1136. initloop2:
  1137. move.l a1,10(a0)
  1138. move.l a1,18(a0)
  1139. clr.l 14(a0)
  1140. clr.b 45(a0)
  1141. clr.b 47(a0)
  1142. clr.w 8(a0)
  1143. clr.l 48(a0)
  1144. move.b #$01,23(a0)
  1145. move.b #$01,24(a0)
  1146. clr.b 25(a0)
  1147. clr.l 26(a0)
  1148. clr.w 30(a0)
  1149. moveq #$00,d3
  1150. move.w (a2)+,d1
  1151. move.w (a2)+,d3
  1152. divu #$0003,d3
  1153. move.b d3,32(a0)
  1154. mulu #$0003,d3
  1155. andi.l #$00ff,d3
  1156. andi.l #$00ff,d1
  1157. addi.l #$dff0a0,d1
  1158. move.l d1,a6
  1159. move.l #$0000,(a6)
  1160. move.w #$0100,4(a6)
  1161. move.w #$0000,6(a6)
  1162. move.w #$0000,8(a6)
  1163. move.l d1,60(a0)
  1164. clr.w 64(a0)
  1165. move.l SEQpoint(pc),(a0)
  1166. move.l SEQpoint(pc),52(a0)
  1167. add.l d0,52(a0)
  1168. add.l d3,52(a0)
  1169. add.l d7,(a0)
  1170. add.l d3,(a0)
  1171. move.w #$000d,6(a0)
  1172. move.l (a0),a3
  1173. move.b (a3),d1
  1174. andi.l #$00ff,d1
  1175. lsl.w #6,d1
  1176. move.l PATpoint(pc),a4
  1177. adda.w d1,a4
  1178. move.l a4,34(a0)
  1179. clr.l 38(a0)
  1180. move.b #$01,33(a0)
  1181. move.b #$02,42(a0)
  1182. move.b 1(a3),44(a0)
  1183. move.b 2(a3),22(a0)
  1184. clr.b 43(a0)
  1185. clr.b 45(a0)
  1186. clr.w 56(a0)
  1187. adda.w #$004a,a0    ;Point to next voice's data area
  1188. dbf d6,initloop2
  1189. rts
  1190.  
  1191. PLAY:
  1192. lea pervol(pc),a6
  1193. ;tst.w onoff
  1194. ;bne.s music_on
  1195. ;rts
  1196. music_on:
  1197. lea    respcnt(pc),a5
  1198. subq.w #1,(a5)            ;Decrease replayspeed counter
  1199. bne.s nonewnote
  1200. move.w repspd(pc),(a5)        ;Restore replayspeed counter
  1201. lea V1data(pc),a0        ;Point to voice1 data area
  1202. bsr.L new_note
  1203. lea V2data(pc),a0        ;Point to voice2 data area
  1204. bsr.L new_note
  1205. lea V3data(pc),a0        ;Point to voice3 data area
  1206. bsr.L new_note
  1207. lea V4data(pc),a0        ;Point to voice4 data area
  1208. bsr.L new_note
  1209.  
  1210. nonewnote:
  1211. lea    audtemp(pc),a5
  1212. clr.w (a5)
  1213. lea V1data(pc),a0
  1214. bsr.L effects
  1215. move.w d0,(a6)+
  1216. move.w d1,(a6)+
  1217. lea V2data(pc),a0
  1218. bsr.L effects
  1219. move.w d0,(a6)+
  1220. move.w d1,(a6)+
  1221. lea V3data(pc),a0
  1222. bsr.L effects
  1223. move.w d0,(a6)+
  1224. move.w d1,(a6)+
  1225. lea V4data(pc),a0
  1226. bsr.L effects
  1227. move.w d0,(a6)+
  1228. move.w d1,(a6)+
  1229. lea pervol(pc),a6
  1230. move.w audtemp(pc),d0
  1231. ori.w #$8000,d0            ;Set/clr bit = 1
  1232. move.w d0,-(a7)
  1233. moveq #0,d1
  1234. move.l start1(pc),d2        ;Get samplepointers
  1235. move.w offset1(pc),d1        ;Get offset
  1236. add.l d1,d2            ;Add offset
  1237. move.l start2(pc),d3
  1238. move.w offset2(pc),d1
  1239. add.l d1,d3
  1240. move.l start3(pc),d4
  1241. move.w offset3(pc),d1
  1242. add.l d1,d4
  1243. move.l start4(pc),d5
  1244. move.w offset4(pc),d1
  1245. add.l d1,d5
  1246. move.w ssize1(pc),d0        ;Get sound lengths
  1247. move.w ssize2(pc),d1
  1248. move.w ssize3(pc),d6
  1249. move.w ssize4(pc),d7
  1250. move.w (a7)+,$dff096        ;Enable audio DMA
  1251. chan1:
  1252. lea V1data(pc),a0
  1253. tst.w 72(a0)
  1254. beq.l chan2
  1255. subq.w #1,72(a0)
  1256. cmpi.w #1,72(a0)
  1257. bne.s chan2
  1258. clr.w 72(a0)
  1259. move.l d2,$dff0a0        ;Set soundstart
  1260. move.w d0,$dff0a4        ;Set soundlength
  1261. chan2:
  1262. lea V2data(pc),a0
  1263. tst.w 72(a0)
  1264. beq.s chan3
  1265. subq.w #1,72(a0)
  1266. cmpi.w #1,72(a0)
  1267. bne.s chan3
  1268. clr.w 72(a0)
  1269. move.l d3,$dff0b0
  1270. move.w d1,$dff0b4
  1271. chan3:
  1272. lea V3data(pc),a0
  1273. tst.w 72(a0)
  1274. beq.s chan4
  1275. subq.w #1,72(a0)
  1276. cmpi.w #1,72(a0)
  1277. bne.s chan4
  1278. clr.w 72(a0)
  1279. move.l d4,$dff0c0
  1280. move.w d6,$dff0c4
  1281. chan4:
  1282. lea V4data(pc),a0
  1283. tst.w 72(a0)
  1284. beq.s setpervol
  1285. subq.w #1,72(a0)
  1286. cmpi.w #1,72(a0)
  1287. bne.s setpervol
  1288. clr.w 72(a0)
  1289. move.l d5,$dff0d0
  1290. move.w d7,$dff0d4
  1291. setpervol:
  1292. lea $dff0a6,a5
  1293. move.w (a6)+,(a5)    ;Set period
  1294. move.w (a6)+,2(a5)    ;Set volume
  1295. move.w (a6)+,16(a5)
  1296. move.w (a6)+,18(a5)
  1297. move.w (a6)+,32(a5)
  1298. move.w (a6)+,34(a5)
  1299. move.w (a6)+,48(a5)
  1300. move.w (a6)+,50(a5)
  1301. rts
  1302.  
  1303. NEW_NOTE:
  1304. moveq #0,d5
  1305. move.l 34(a0),a1
  1306. adda.w 40(a0),a1
  1307. cmp.w #64,40(a0)
  1308. bne.s samepat
  1309. move.l (a0),a2
  1310. adda.w 6(a0),a2        ;Point to next sequence row
  1311. cmpa.l 52(a0),a2    ;Is it the end?
  1312. bne.s notend
  1313. move.w d5,6(a0)        ;yes!
  1314. move.l (a0),a2        ;Point to first sequence
  1315. notend:
  1316. moveq #0,d1
  1317. lea    spdtemp(pc),a5
  1318. addq.b #1,(a5)
  1319. cmpi.b #4,(a5)
  1320. bne.s nonewspd
  1321. move.b d5,(a5)
  1322. move.b -1(a1),d1    ;Get new replay speed
  1323. beq.s nonewspd
  1324. lea    respcnt(pc),a5
  1325. move.w d1,(a5)        ;store in counter
  1326. lea    repspd(pc),a5
  1327. move.w d1,(a5)
  1328. nonewspd:
  1329. move.b (a2),d1        ;Pattern to play
  1330. move.b 1(a2),44(a0)    ;Transpose value
  1331. move.b 2(a2),22(a0)    ;Soundtranspose value
  1332.  
  1333. move.w d5,40(a0)
  1334. lsl.w #6,d1
  1335. add.l PATpoint(pc),d1    ;Get pattern pointer
  1336. move.l d1,34(a0)
  1337. addi.w #$000d,6(a0)
  1338. move.l d1,a1
  1339. samepat:
  1340. move.b 1(a1),d1        ;Get info byte
  1341. move.b (a1)+,d0        ;Get note
  1342. bne.s ww1
  1343. andi.w #%11000000,d1
  1344. beq.s noport
  1345. bra.s ww11
  1346. ww1:
  1347. move.w d5,56(a0)
  1348. ww11:
  1349. move.b d5,47(a0)
  1350. move.b (a1),31(a0)
  1351.  
  1352.         ;31(a0) = PORTAMENTO/INSTR. info
  1353.             ;Bit 7 = portamento on
  1354.             ;Bit 6 = portamento off
  1355.             ;Bit 5-0 = instrument number
  1356.         ;47(a0) = portamento value
  1357.             ;Bit 7-5 = always zero
  1358.             ;Bit 4 = up/down
  1359.             ;Bit 3-0 = value
  1360. t_porton:
  1361. btst #7,d1
  1362. beq.s noport
  1363. move.b 2(a1),47(a0)    
  1364. noport:
  1365. andi.w #$007f,d0
  1366. beq.s nextnote
  1367. move.b d0,8(a0)
  1368. move.b (a1),9(a0)
  1369. move.b 32(a0),d2
  1370. moveq #0,d3
  1371. bset d2,d3
  1372. lea    audtemp(pc),a5
  1373. or.w d3,(a5)
  1374. move.w d3,$dff096
  1375. move.b (a1),d1
  1376. andi.w #$003f,d1    ;Max 64 instruments
  1377. add.b 22(a0),d1
  1378. move.l VOLpoint(pc),a2
  1379. lsl.w #6,d1
  1380. adda.w d1,a2
  1381. move.w d5,16(a0)
  1382. move.b (a2),23(a0)
  1383. move.b (a2)+,24(a0)
  1384. move.b (a2)+,d1
  1385. andi.w #$00ff,d1
  1386. move.b (a2)+,27(a0)
  1387. move.b #$40,46(a0)
  1388. move.b (a2)+,d0
  1389. move.b d0,28(a0)
  1390. move.b d0,29(a0)
  1391. move.b (a2)+,30(a0)
  1392. move.l a2,10(a0)
  1393. move.l FRQpoint(pc),a2
  1394. lsl.w #6,d1
  1395. adda.w d1,a2
  1396. move.l a2,18(a0)
  1397. move.w d5,50(a0)
  1398. move.b d5,26(a0)
  1399. move.b d5,25(a0)
  1400. nextnote:
  1401. addq.w #2,40(a0)
  1402. rts
  1403.  
  1404. EFFECTS:
  1405. moveq #0,d7
  1406. testsustain:
  1407. tst.b 26(a0)        ;Is sustain counter = 0
  1408. beq.s sustzero
  1409. subq.b #1,26(a0)    ;if no, decrease counter
  1410. bra.L VOLUfx
  1411. sustzero:        ;Next part of effect sequence
  1412. move.l 18(a0),a1    ;can be executed now.
  1413. adda.w 50(a0),a1
  1414. testeffects:
  1415. cmpi.b #$e1,(a1)    ;E1 = end of FREQseq sequence
  1416. beq.L VOLUfx
  1417. cmpi.b #$e0,(a1)    ;E0 = loop to other part of sequence
  1418. bne.s testnewsound
  1419. move.b 1(a1),d0        ;loop to start of sequence + 1(a1)
  1420. andi.w #$003f,d0
  1421. move.w d0,50(a0)
  1422. move.l 18(a0),a1
  1423. adda.w d0,a1
  1424. testnewsound:
  1425. cmpi.b #$e2,(a1)    ;E2 = set waveform
  1426. bne.s o49c64
  1427. moveq #0,d0
  1428. moveq #0,d1
  1429. move.b 32(a0),d1
  1430. bset d1,d0
  1431. lea    audtemp(pc),a5
  1432. or.w d0,(a5)
  1433. move.w d0,$dff096
  1434. move.b 1(a1),d0
  1435. andi.w #$00ff,d0
  1436. lea SOUNDINFO(pc),a4
  1437. add.w d0,d0
  1438. move.w d0,d1
  1439. add.w d1,d1
  1440. add.w d1,d1
  1441. add.w d1,d0
  1442. adda.w d0,a4
  1443. move.l 60(a0),a3
  1444. move.l (a4),d1
  1445. lea    waveforms(pc),a5
  1446. add.l a5,d1
  1447. move.l d1,(a3)
  1448. move.l d1,68(a0)
  1449. move.w 4(a4),4(a3)
  1450. move.l 6(a4),64(a0)
  1451. swap d1
  1452. move.w #$0003,72(a0)
  1453. tst.w d1
  1454. bne.s o49c52
  1455. move.w #$0002,72(a0)
  1456. o49c52:
  1457. clr.w 16(a0)
  1458. move.b #$01,23(a0)
  1459. addq.w #2,50(a0)
  1460. bra.L o49d02
  1461. o49c64:
  1462. cmpi.b #$e4,(a1)
  1463. bne.s testpatjmp
  1464. move.b 1(a1),d0
  1465. andi.w #$00ff,d0
  1466. lea SOUNDINFO(pc),a4
  1467. add.w d0,d0
  1468. move.w d0,d1
  1469. add.w d1,d1
  1470. add.w d1,d1
  1471. add.w d1,d0
  1472. adda.w d0,a4
  1473. move.l 60(a0),a3
  1474. move.l (a4),d1
  1475. lea    waveforms(pc),a5
  1476. add.l a5,d1
  1477. move.l d1,(a3)
  1478. move.l d1,68(a0)
  1479. move.w 4(a4),4(a3)
  1480. move.l 6(a4),64(a0)
  1481.  
  1482. swap d1
  1483. move.w #$0003,72(a0)
  1484. tst.w d1
  1485. bne.s o49cae
  1486. move.w #$0002,72(a0)
  1487. o49cae:
  1488. addq.w #2,50(a0)
  1489. bra.s o49d02
  1490. testpatjmp:
  1491. cmpi.b #$e7,(a1)
  1492. bne.s testnewsustain
  1493. move.b 1(a1),d0
  1494. andi.w #$00ff,d0
  1495. lsl.w #6,d0
  1496. move.l FRQpoint(pc),a1
  1497. adda.w d0,a1
  1498. move.l a1,18(a0)
  1499. move.w d7,50(a0)
  1500. bra.L testeffects
  1501. testnewsustain:
  1502. cmpi.b #$e8,(a1)    ;E8 = set sustain time
  1503. bne.s o49cea
  1504. move.b 1(a1),26(a0)
  1505. addq.w #2,50(a0)
  1506. bra.L testsustain
  1507. o49cea:
  1508. cmpi.b #$e3,(a1)
  1509. bne.s o49d02
  1510. addq.w #3,50(a0)
  1511. move.b 1(a1),27(a0)
  1512. move.b 2(a1),28(a0)
  1513. o49d02:
  1514. move.l 18(a0),a1
  1515. adda.w 50(a0),a1
  1516. move.b (a1),43(a0)
  1517. addq.w #1,50(a0)
  1518. VOLUfx:
  1519. tst.b 25(a0)
  1520. beq.s o49d1e
  1521. subq.b #1,25(a0)
  1522. bra.s o49d70
  1523. o49d1e:
  1524. subq.b #1,23(a0)
  1525. bne.s o49d70
  1526. move.b 24(a0),23(a0)
  1527. o49d2a:
  1528. move.l 10(a0),a1
  1529. adda.w 16(a0),a1
  1530. move.b (a1),d0
  1531. cmpi.b #$e8,d0
  1532. bne.s o49d4a
  1533. addq.w #2,16(a0)
  1534. move.b 1(a1),25(a0)
  1535. bra.s VOLUfx
  1536. o49d4a:
  1537. cmpi.b #$e1,d0
  1538. beq.s o49d70
  1539. cmpi.b #$e0,d0
  1540. bne.s o49d68
  1541. move.b 1(a1),d0
  1542. andi.l #$003f,d0
  1543. subq.b #5,d0
  1544. move.w d0,16(a0)
  1545. bra.s o49d2a
  1546. o49d68:
  1547. move.b (a1),45(a0)
  1548. addq.w #1,16(a0)
  1549. o49d70:
  1550. move.b 43(a0),d0
  1551. bmi.s o49d7e
  1552. add.b 8(a0),d0
  1553. add.b 44(a0),d0
  1554. o49d7e:
  1555. andi.w #$007f,d0
  1556. lea PERIODS(pc),a1
  1557. add.w d0,d0
  1558. move.w d0,d1
  1559. adda.w d0,a1
  1560. move.w (a1),d0
  1561. move.b 46(a0),d7
  1562. tst.b 30(a0)
  1563. beq.s o49d9e
  1564. subq.b #1,30(a0)
  1565.  
  1566. bra.s o49df4
  1567. o49d9e:
  1568. move.b d1,d5
  1569. move.b 28(a0),d4
  1570. add.b d4,d4
  1571. move.b 29(a0),d1
  1572. tst.b d7
  1573. bpl.s o49db4
  1574. btst #0,d7
  1575. bne.s o49dda
  1576. o49db4:
  1577. btst #5,d7
  1578. bne.s o49dc8
  1579. sub.b 27(a0),d1
  1580. bcc.s o49dd6
  1581. bset #5,d7
  1582. moveq #0,d1
  1583. bra.s o49dd6
  1584. o49dc8:
  1585. add.b 27(a0),d1
  1586. cmp.b d4,d1
  1587. bcs.s o49dd6
  1588. bclr #5,d7
  1589. move.b d4,d1
  1590. o49dd6:
  1591. move.b d1,29(a0)
  1592. o49dda:
  1593. lsr.b #1,d4
  1594. sub.b d4,d1
  1595. bcc.s o49de4
  1596. subi.w #$0100,d1
  1597. o49de4:
  1598. addi.b #$a0,d5
  1599. bcs.s o49df2
  1600. o49dea:
  1601. add.w d1,d1
  1602. addi.b #$18,d5
  1603. bcc.s o49dea
  1604. o49df2:
  1605. add.w d1,d0
  1606. o49df4:
  1607. eori.b #$01,d7
  1608. move.b d7,46(a0)
  1609.  
  1610. ; DO THE PORTAMENTO THING
  1611. moveq #0,d1
  1612. move.b 47(a0),d1    ;get portavalue
  1613. beq.s a56d0        ;0=no portamento
  1614. cmpi.b #$1f,d1
  1615. bls.s portaup
  1616. portadown: 
  1617. andi.w #$1f,d1
  1618. neg.w d1
  1619. portaup:
  1620. sub.w d1,56(a0)
  1621. a56d0:
  1622. add.w 56(a0),d0
  1623. o49e3e:
  1624. cmpi.w #$0070,d0
  1625. bhi.s nn1
  1626. move.w #$0071,d0
  1627. nn1:
  1628. cmpi.w #$06b0,d0
  1629. bls.s nn2
  1630. move.w #$06b0,d0
  1631. nn2:
  1632. moveq #0,d1
  1633. move.b 45(a0),d1
  1634. rts
  1635.  
  1636. pervol: blk.b 16,0    ;Periods & Volumes temp. store
  1637. respcnt: dc.w 0        ;Replay speed counter 
  1638. repspd:  dc.w 0        ;Replay speed counter temp
  1639. firseq:     dc.w 0        ;First sequence
  1640. lasseq:     dc.w 0        ;Last sequence
  1641. audtemp: dc.w 0
  1642. spdtemp: dc.w 0
  1643.  
  1644. V1data:  blk.b 64,0    ;Voice 1 data area
  1645. offset1: blk.b 02,0    ;Is added to start of sound
  1646. ssize1:  blk.b 02,0    ;Length of sound
  1647. start1:  blk.b 06,0    ;Start of sound
  1648.  
  1649. V2data:  blk.b 64,0    ;Voice 2 data area
  1650. offset2: blk.b 02,0
  1651. ssize2:  blk.b 02,0
  1652. start2:  blk.b 06,0
  1653.  
  1654. V3data:  blk.b 64,0    ;Voice 3 data area
  1655. offset3: blk.b 02,0
  1656. ssize3:  blk.b 02,0
  1657. start3:  blk.b 06,0
  1658.  
  1659. V4data:  blk.b 64,0    ;Voice 4 data area
  1660. offset4: blk.b 02,0
  1661. ssize4:  blk.b 02,0
  1662. start4:  blk.b 06,0
  1663.  
  1664. o4a0c8: dc.l $00000000,$00100003,$00200006,$00300009
  1665. SEQpoint: dc.l 0
  1666. PATpoint: dc.l 0
  1667. FRQpoint: dc.l 0
  1668. VOLpoint: dc.l 0
  1669.  
  1670. SILENT: dc.w $0100,$0000,$0000,$00e1
  1671.  
  1672. PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
  1673.     dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
  1674.     dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
  1675.     dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
  1676.     dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
  1677.     dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  1678.     dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
  1679.     dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
  1680.     dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
  1681.     dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
  1682.     dc.w $10d0,$0fe0,$0f00,$0e28
  1683.  
  1684. SOUNDINFO:
  1685. ;Offset.l , Sound-length.w , Start-offset.w , Repeat-length.w 
  1686.  
  1687. ;Reserved for samples
  1688.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1689.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1690.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1691.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1692.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1693.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1694.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1695.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1696.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001 
  1697.     dc.w $0000,$0000 ,$0000 ,$0000 ,$0001
  1698. ;Reserved for synth sounds
  1699.     dc.w $0000,$0000 ,$0010 ,$0000 ,$0010
  1700.     dc.w $0000,$0020 ,$0010 ,$0000 ,$0010 
  1701.     dc.w $0000,$0040 ,$0010 ,$0000 ,$0010 
  1702.     dc.w $0000,$0060 ,$0010 ,$0000 ,$0010 
  1703.     dc.w $0000,$0080 ,$0010 ,$0000 ,$0010 
  1704.     dc.w $0000,$00a0 ,$0010 ,$0000 ,$0010 
  1705.     dc.w $0000,$00c0 ,$0010 ,$0000 ,$0010 
  1706.     dc.w $0000,$00e0 ,$0010 ,$0000 ,$0010 
  1707.     dc.w $0000,$0100 ,$0010 ,$0000 ,$0010 
  1708.     dc.w $0000,$0120 ,$0010 ,$0000 ,$0010 
  1709.     dc.w $0000,$0140 ,$0010 ,$0000 ,$0010 
  1710.     dc.w $0000,$0160 ,$0010 ,$0000 ,$0010 
  1711.     dc.w $0000,$0180 ,$0010 ,$0000 ,$0010 
  1712.     dc.w $0000,$01a0 ,$0010 ,$0000 ,$0010 
  1713.     dc.w $0000,$01c0 ,$0010 ,$0000 ,$0010 
  1714.     dc.w $0000,$01e0 ,$0010 ,$0000 ,$0010 
  1715.     dc.w $0000,$0200 ,$0010 ,$0000 ,$0010 
  1716.     dc.w $0000,$0220 ,$0010 ,$0000 ,$0010
  1717.     dc.w $0000,$0240 ,$0010 ,$0000 ,$0010 
  1718.     dc.w $0000,$0260 ,$0010 ,$0000 ,$0010
  1719.     dc.w $0000,$0280 ,$0010 ,$0000 ,$0010 
  1720.     dc.w $0000,$02a0 ,$0010 ,$0000 ,$0010 
  1721.     dc.w $0000,$02c0 ,$0010 ,$0000 ,$0010 
  1722.     dc.w $0000,$02e0 ,$0010 ,$0000 ,$0010 
  1723.     dc.w $0000,$0300 ,$0010 ,$0000 ,$0010 
  1724.     dc.w $0000,$0320 ,$0010 ,$0000 ,$0010 
  1725.     dc.w $0000,$0340 ,$0010 ,$0000 ,$0010 
  1726.     dc.w $0000,$0360 ,$0010 ,$0000 ,$0010 
  1727.     dc.w $0000,$0380 ,$0010 ,$0000 ,$0010 
  1728.     dc.w $0000,$03a0 ,$0010 ,$0000 ,$0010 
  1729.     dc.w $0000,$03c0 ,$0010 ,$0000 ,$0010 
  1730.     dc.w $0000,$03e0 ,$0010 ,$0000 ,$0010 
  1731.     dc.w $0000,$0400 ,$0008 ,$0000 ,$0008 
  1732.     dc.w $0000,$0410 ,$0008 ,$0000 ,$0008 
  1733.     dc.w $0000,$0420 ,$0008 ,$0000 ,$0008 
  1734.     dc.w $0000,$0430 ,$0008 ,$0000 ,$0008 
  1735.     dc.w $0000,$0440 ,$0008 ,$0000 ,$0008
  1736.     dc.w $0000,$0450 ,$0008 ,$0000 ,$0008
  1737.     dc.w $0000,$0460 ,$0008 ,$0000 ,$0008
  1738.     dc.w $0000,$0470 ,$0008 ,$0000 ,$0008
  1739.     dc.w $0000,$0480 ,$0010 ,$0000 ,$0010
  1740.     dc.w $0000,$04a0 ,$0008 ,$0000 ,$0008
  1741.     dc.w $0000,$04b0 ,$0010 ,$0000 ,$0010
  1742.     dc.w $0000,$04d0 ,$0010 ,$0000 ,$0010
  1743.     dc.w $0000,$04f0 ,$0008 ,$0000 ,$0008
  1744.     dc.w $0000,$0500 ,$0008 ,$0000 ,$0008
  1745.     dc.w $0000,$0510 ,$0018 ,$0000 ,$0018
  1746.  
  1747. WAVEFORMS:
  1748. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1749. dc.w $3f37,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1750. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1751. dc.w $c037,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1752. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1753. dc.w $c0b8,$2f27,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1754. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1755. dc.w $c0b8,$b027,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1756. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1757. dc.w $c0b8,$b0a8,$1f17,$0f07,$ff07,$0f17,$1f27,$2f37
  1758. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1759. dc.w $c0b8,$b0a8,$a017,$0f07,$ff07,$0f17,$1f27,$2f37
  1760. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1761. dc.w $c0b8,$b0a8,$a098,$0f07,$ff07,$0f17,$1f27,$2f37
  1762. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1763. dc.w $c0b8,$b0a8,$a098,$9007,$ff07,$0f17,$1f27,$2f37
  1764. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1765. dc.w $c0b8,$b0a8,$a098,$9088,$ff07,$0f17,$1f27,$2f37
  1766. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1767. dc.w $c0b8,$b0a8,$a098,$9088,$8007,$0f17,$1f27,$2f37
  1768. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1769. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$0f17,$1f27,$2f37
  1770. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1771. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9017,$1f27,$2f37
  1772. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1773. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$1f27,$2f37
  1774. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1775. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a027,$2f37
  1776. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1777. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$2f37
  1778. dc.w $c0c0,$d0d8,$e0e8,$f0f8,$00f8,$f0e8,$e0d8,$d0c8
  1779. dc.w $c0b8,$b0a8,$a098,$9088,$8088,$9098,$a0a8,$b037
  1780. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1781. dc.w $7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1782. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1783. dc.w $817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1784. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1785. dc.w $8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1786. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1787. dc.w $8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1788. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1789. dc.w $8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1790. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1791. dc.w $8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1792. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1793. dc.w $8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1794. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1795. dc.w $8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f,$7f7f
  1796. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1797. dc.w $8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f,$7f7f
  1798. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1799. dc.w $8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f,$7f7f
  1800. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1801. dc.w $8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f,$7f7f
  1802. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1803. dc.w $8181,$8181,$8181,$8181,$8181,$817f,$7f7f,$7f7f
  1804. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1805. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$7f7f,$7f7f
  1806. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$8181,$8181
  1807. dc.w $8181,$8181,$8181,$8181,$8181,$8181,$817f,$7f7f
  1808. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1809. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$7f7f
  1810. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$8080
  1811. dc.w $8080,$8080,$8080,$8080,$8080,$8080,$8080,$807f
  1812. dc.w $8080,$8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f
  1813. dc.w $8080,$8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f
  1814. dc.w $8080,$8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1815. dc.w $8080,$8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1816. dc.w $8080,$8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1817. dc.w $8080,$807f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1818. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1819. dc.w $8080,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f,$7f7f
  1820. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1821. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1822. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1823. dc.w $4545,$797d,$7a77,$7066,$6158,$534d,$2c20,$1812
  1824. dc.w $04db,$d3cd,$c6bc,$b5ae,$a8a3,$9d99,$938e,$8b8a
  1825. dc.w $4545,$797d,$7a77,$7066,$5b4b,$4337,$2c20,$1812
  1826. dc.w $04f8,$e8db,$cfc6,$beb0,$a8a4,$9e9a,$9594,$8d83
  1827. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1828. dc.w $0000,$4060,$7f60,$4020,$00e0,$c0a0,$80a0,$c0e0
  1829. dc.w $8080,$9098,$a0a8,$b0b8,$c0c8,$d0d8,$e0e8,$f0f8
  1830. dc.w $0008,$1018,$2028,$3038,$4048,$5058,$6068,$707f
  1831. dc.w $8080,$a0b0,$c0d0,$e0f0,$0010,$2030,$4050,$6070
  1832.  
  1833. ;*** changer la taille du blk.b en fonction du module
  1834.  
  1835. >EXTERN "demo.module",MODULE
  1836.  
  1837. MODULE: blk.b 6378
  1838. even
  1839.  
  1840.  
  1841. setf:blk.b 4,0
  1842. >EXTERN "demo.set",set
  1843. set: blk.b 1120
  1844. even
  1845.  
  1846. set1=set
  1847. set2=set1+256
  1848. set3=set2+256
  1849. set4=set3+$b0
  1850. set5=set4+$b0
  1851. set6=set5+$80
  1852.  
  1853. carre:blk.b 32,0
  1854. carre1:blk.b 32,$ff
  1855.  
  1856. >EXTERN "demo.fonts",fonts
  1857. fonts: blk.b 588
  1858. even
  1859.  
  1860.  
  1861. >EXTERN "demo.sincos",sin
  1862. sin: blk.b 2560
  1863. even
  1864.  
  1865. cos=sin+$200
  1866. vide:blk.b 32,0
  1867.  
  1868.  
  1869. jug:
  1870. dc.w 0,500,0,0,0,0
  1871. dc.w 0,1180,0
  1872. dc.W 0,700,0
  1873. dc.w 350,550,0,500,380,0,650,220,0
  1874. dc.w -350,550,0,-400,300,0,-400,50,0
  1875. dc.W 300,-250,100,-300,-250,100
  1876. dc.W 300,-480,100,300,-710,100
  1877. dc.W -300,-480,100,-300,-710,100
  1878. dc.w 300,-940,90,300,-1170,60
  1879. dc.w -300,-940,90,-300,-1170,60
  1880. dc.W 300,-1400,20,-300,-1400,20
  1881. hand:dc.w 520,100,0,370,25,0,220,-50,0
  1882. dc.w -400,-25,200,-400,-100,350,-400,-150,470
  1883. boules:dc.w -400,-250,470
  1884. dc.w 110,1070,190,-110,1070,190
  1885. dc.w $7777
  1886.  
  1887. coord:blk.w 138,0
  1888. ordre:dc.w 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
  1889. dc.w 15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,$7777
  1890.  
  1891. bra1:dc.w $200
  1892.  
  1893. bo:dc.L bob1,mask1,bob2,mask2
  1894. dc.l bob8,mask8
  1895. dc.L bob3,mask3
  1896. dc.l bob5,mask5,bob5,mask5,bob5,mask5
  1897. dc.l bob5,mask5,bob5,mask5,bob5,mask5
  1898. dc.l bob4,mask4,bob4,mask4
  1899. dc.l bob5,mask5,bob5,mask5
  1900. dc.l bob5,mask5,bob5,mask5
  1901. dc.l bob5,mask5,bob5,mask5
  1902. dc.l bob5,mask5,bob5,mask5
  1903. dc.l bob5,mask5,bob5,mask5
  1904. dc.l bob5,mask5,bob6,mask6,bob7,mask7
  1905. dc.l bob5,mask5,bob6,mask6,bob7,mask7
  1906. dc.L bob9,mask9    ;boules
  1907. dc.L bob7,mask7,bob7,mask7
  1908. val:blk.w 35
  1909.  
  1910. >EXTERN "demo.bobs",bobs
  1911. bobs: blk.b 2880
  1912. even
  1913.  
  1914. bob1=bobs
  1915. bob2=bob1+576
  1916. bob3=bob2+576
  1917. bob4=bob3+192
  1918. bob5=bob4+192
  1919. bob6=bob5+192
  1920. bob7=bob6+192
  1921. bob8=bob7+192
  1922. bob9=bob8+576
  1923.  
  1924. >EXTERN "demo.logo44",logo0b
  1925. logo0b: blk.b 4752
  1926. even
  1927.  
  1928. end:
  1929. masks:
  1930. mask1=masks
  1931. mask2=mask1+576
  1932. mask3=mask2+576
  1933. mask4=mask3+192
  1934. mask5=mask4+192
  1935. mask6=mask5+192
  1936. mask7=mask6+192
  1937. mask8=mask7+192
  1938. mask9=mask8+576
  1939. bp1=$50000
  1940. bp5=$56000
  1941. bp3=$60000
  1942. bp4=$70000
  1943. bpv=$6b000
  1944.