home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1988 January / 64er_Magazin_88-01_1988_Markt__Technik_de_Side_B.d64 / spriteanim.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  20KB  |  1,407 lines

  1. 100 print    = $ffd2
  2. 110 get      = $ffe4
  3. 120 load     = $ffd5
  4. 130 save     = $ffd8
  5. 140 input2   = $ffcf
  6. 150 v        = $d000
  7. 160 clrscr   = $e544
  8. 170 home     = $e566
  9. 180 ivect    = $0314
  10. 190 irq0     = $ea31
  11. 200 offirq   = $febc
  12. 210 vram     = $0288
  13. 220 cia2     = $dd00
  14. 230 spoint   = $a3f8
  15. 240 cia1     = $dc00
  16. 250 mccalc   = $0097
  17. 260 spnr     = $00fc
  18. 270 colour   = $0287
  19. 280 revers   = $00c7
  20. 290 esprite  = $a800
  21. 300 espriteh = $a840
  22. 310 colour0  = $b03f
  23. 320 colour1  = $b07f
  24. 330 colour2  = $b0bf
  25. 340 colour3  = $b0ff
  26. 350 colour4  = $b13f
  27. 360 mc       = $b17f
  28. 370 paintcol = $006a
  29. 380 countl   = $00cc
  30. 390 counth   = $00cd
  31. 400 cursy    = $00d1
  32. 410 cursx    = $00d3
  33. 420 coly     = $00f3
  34. 430 curson   = $0002
  35. 440 xpos     = $006e
  36. 450 ypos     = $006f
  37. 460 lotab    = $00d9
  38. 470 hitab    = $ecf0
  39. 480 irq2     = $ea61
  40. 490 fspeed   = $00fd
  41. 500 fcount   = $00fe
  42. 510 xtemp    = $00cc
  43. 520 ytemp    = $00cd
  44. 530 seqtab   = $b400
  45. 540 input    = $ffcf
  46. 550 fpiccnt  = $0069
  47. 560 name     = $02c0
  48. 570 intprint = $bdcd
  49. 580 rbutton  = $006d
  50. 590 nmivect  = $0318
  51. 600 normnmi  = $fe47
  52. 610 newnmi   = $fec1
  53. 620 *=$8000
  54. 630 lda #<newnmi
  55. 640 sta nmivect
  56. 650 lda #>newnmi
  57. 660 sta nmivect+1
  58. 670 lda #0
  59. 680 sta mc
  60. 690 sta colour3
  61. 700 tax
  62. 710 sc sta $b000,x
  63. 720 sta $b100,x
  64. 730 sta $b200,x
  65. 740 sta $b300,x
  66. 750 inx
  67. 760 bne sc
  68. 770 ldy #16
  69. 780 sty seqtab+$4f
  70. 790 dey
  71. 800 ldx #$cf
  72. 810 stabinit txa
  73. 820 sta seqtab,y
  74. 830 dex
  75. 840 dey
  76. 850 bpl stabinit
  77. 860 lda #11
  78. 870 sta colour0
  79. 880 lda #1
  80. 890 sta colour1
  81. 900 lda #12
  82. 910 sta colour2
  83. 920 lda #7
  84. 930 sta colour4
  85. 940 lda #$80
  86. 950 sta 650
  87. 960 lda #$36
  88. 970 sta 1
  89. 980 lda #$a0
  90. 990 sta vram
  91. 1000 lda #1
  92. 1010 sta cia2
  93. 1020 begin *=*
  94. 1030 ldx #0
  95. 1040 sprnrp lda sprnr,x
  96. 1050 jsr print
  97. 1060 inx
  98. 1070 cmp #$d
  99. 1080 bne sprnrp
  100. 1090 ldy #4
  101. 1100 jsr spritebg
  102. 1110 ldy #18
  103. 1120 jsr spritebg
  104. 1130 sei
  105. 1140 lda #<irq1
  106. 1150 sta ivect
  107. 1160 lda #>irq1
  108. 1170 sta ivect+1
  109. 1180 ldy #$24
  110. 1190 vl lda victab,y
  111. 1200 sta v,y
  112. 1210 dey
  113. 1220 bpl vl
  114. 1230 ldx #7
  115. 1240 lda #$c7
  116. 1250 spl sta spoint,x
  117. 1260 sec
  118. 1270 sbc #1
  119. 1280 dex
  120. 1290 bpl spl
  121. 1300 jsr colset
  122. 1310 cli
  123. 1320 jmp choose
  124. 1330 colset lda colour1
  125. 1340 ldy #7
  126. 1350 cols sta v+$27,y
  127. 1360 dey
  128. 1370 bpl cols
  129. 1380 lda colour2
  130. 1390 sta v+$25
  131. 1400 lda colour3
  132. 1410 sta v+$26
  133. 1420 lda mc
  134. 1430 sta v+$1c
  135. 1440 rts
  136. 1450 spritebg *=*
  137. 1460 ldx #0
  138. 1470 jsr printat
  139. 1480 lda colour0
  140. 1490 sta $286
  141. 1500 ldy #16
  142. 1510 spbg ldx #6
  143. 1520 b(NULL)ut lda bgasc,x
  144. 1530 jsr print
  145. 1540 dex
  146. 1550 bpl b(NULL)ut
  147. 1560 dey
  148. 1570 bne spbg
  149. 1580 ldy #8
  150. 1590 sprst ldx #6
  151. 1600 rstout lda rstasc,x
  152. 1610 jsr print
  153. 1620 dex
  154. 1630 bpl rstout
  155. 1640 dey
  156. 1650 bne sprst
  157. 1660 rts
  158. 1670 bgasc .asc " [146]    "
  159. 1680 rstasc .asc " [146][185][185][185] "
  160. 1690 victab *=*
  161. 1700 .byt $20,$52,$48,$52,$70,$52,$98,$52
  162. 1710 .byt $c0,$52,$e8,$52,$10,$52,$38,$52
  163. 1720 .byt $c0,$1b,$80,$00,$00,$ff,$08,$00
  164. 1730 .byt $84,$0f,$01,$00,$00,$00,$00,$00
  165. 1740 .byt $00,$00,$00,$00,$00
  166. 1750 irq1 *=*
  167. 1760 lda v+$19
  168. 1770 sta v+$19
  169. 1780 bmi raster
  170. 1790 lda cia1+$d
  171. 1800 cli
  172. 1810 jmp irq0
  173. 1820 raster *=*
  174. 1830 ldy #$f
  175. 1840 sy lda v,y
  176. 1850 eor #$52^($52+112)
  177. 1860 sta v,y
  178. 1870 dey
  179. 1880 dey
  180. 1890 bpl sy
  181. 1900 ldx #7
  182. 1910 np lda spoint,x
  183. 1920 eor #8
  184. 1930 sta spoint,x
  185. 1940 dex
  186. 1950 bpl np
  187. 1960 lda v+$12
  188. 1970 eor #$80
  189. 1980 and #$80
  190. 1990 sta v+$12
  191. 2000 jmp offirq
  192. 2010 choose *=*
  193. 2020 ldx #0
  194. 2030 sc0 jsr invert
  195. 2040 sc1 txa
  196. 2050 pha
  197. 2060 jsr get
  198. 2070 pla
  199. 2080 tax
  200. 2090 cpy #""
  201. 2100 bne nright
  202. 2110 jsr invert
  203. 2120 inx
  204. 2130 jmp sc0
  205. 2140 nright cpy #""
  206. 2150 bne nleft
  207. 2160 jsr invert
  208. 2170 dex
  209. 2180 jmp sc0
  210. 2190 nleft cpy #"[133]"
  211. 2200 bne sc1
  212. 2210 jsr invert
  213. 2220 stx spnr
  214. 2230 txa
  215. 2240 and #3
  216. 2250 tay
  217. 2260 lda stabl,y
  218. 2270 sta $fa
  219. 2280 lda stabh,x
  220. 2290 sta $fb
  221. 2300 ldy #$3e
  222. 2310 sco0 lda ($fa),y
  223. 2320 sta esprite,y
  224. 2330 dey
  225. 2340 bpl sco0
  226. 2350 jmp screen
  227. 2360 stabl *=*
  228. 2370 .byt $00,$40,$80,$c0
  229. 2380 stabh *=*
  230. 2390 .byt $b0,$b0,$b0,$b0,$b1,$b1,$b1,$b1
  231. 2400 .byt $b2,$b2,$b2,$b2,$b3,$b3,$b3,$b3
  232. 2410 invert *=*
  233. 2420 txa
  234. 2430 and #$f
  235. 2440 tax
  236. 2450 and #3
  237. 2460 tay
  238. 2470 lda stabl,y
  239. 2480 sta $fa
  240. 2490 lda stabh,x
  241. 2500 sta $fb
  242. 2510 ldy #$3e
  243. 2520 inv lda ($fa),y
  244. 2530 eor #$ff
  245. 2540 sta ($fa),y
  246. 2550 dey
  247. 2560 bpl inv
  248. 2570 inx
  249. 2580 stx $a008
  250. 2590 dex
  251. 2600 rts
  252. 2610 sprnr *=*
  253. 2620 .asc "[147]sprite:"
  254. 2630 .byt $d
  255. 2640 text *=*
  256. 2650 .asc "[147]     **** sprite-animator v1.0 ****"
  257. 2660 .byt $8d
  258. 2670 .asc  "      by ingolf koch  (mcmlxxxvii)"
  259. 2680 .byt $d
  260. 2690 frame *=*
  261. 2700 .byt 26,3
  262. 2710 .asc "[213][192][192][192][192][192][192][192][192][192][192][201]"
  263. 2720 .byt $8d
  264. 2730 .asc "[221]      [146][221]   [146][221]"
  265. 2740 .byt $8d
  266. 2750 .asc "[221]      [146][221]   [146][221]"
  267. 2760 .byt $8d
  268. 2770 .asc "[221]      [146][221][185][185][185][146][221]"
  269. 2780 .byt $8d
  270. 2790 .asc "[221]      [146][221]   [146][221]"
  271. 2800 .byt $8d
  272. 2810 .asc "[221]      [146][221]   [146][221]"
  273. 2820 .byt $8d
  274. 2830 .asc "[221][183][183][183][183][183][183][221][185][185][185][146][221]"
  275. 2840 .byt $8d
  276. 2850 .asc "[202][192][192][192][192][192][192][192][192][192][192][203]"
  277. 2860 .byt $d
  278. 2870 border *=*
  279. 2880 .byt 26,12
  280. 2890 .asc "sprite:  "
  281. 2900 .wor $8d8d,$8d8d,$8d8d,$8d8d
  282. 2910 .asc "colours:"
  283. 2920 .byt $8d
  284. 2930 .asc "  1234"
  285. 2940 .byt $8d
  286. 2950 .asc "      "
  287. 2960 .byt $d
  288. 2970 printat *=*
  289. 2980 lda #""
  290. 2990 jsr print
  291. 3000 py dey
  292. 3010 bmi px
  293. 3020 lda #""
  294. 3030 jsr print
  295. 3040 jmp py
  296. 3050 px dex
  297. 3060 bmi pend
  298. 3070 lda #""
  299. 3080 jsr print
  300. 3090 jmp px
  301. 3100 pend rts
  302. 3110 screen *=*
  303. 3120 lda #0
  304. 3130 sta v+$15
  305. 3140 sta v+$1a
  306. 3150 sta xpos
  307. 3160 sta ypos
  308. 3170 sta curson
  309. 3180 jsr normirq
  310. 3190 ldx #0
  311. 3200 tl lda text,x
  312. 3210 jsr print
  313. 3220 inx
  314. 3230 cmp #$d
  315. 3240 bne tl
  316. 3250 ldx frame
  317. 3260 stx $fd
  318. 3270 ldy frame+1
  319. 3280 jsr printat
  320. 3290 ldy #2
  321. 3300 sty v+$10
  322. 3310 fl lda frame,y
  323. 3320 jsr print
  324. 3330 iny
  325. 3340 cmp #$8d
  326. 3350 bne nsr
  327. 3360 ldx $fd
  328. 3370 jsr px
  329. 3380 jmp fl
  330. 3390 nsr cmp #$d
  331. 3400 bne fl
  332. 3410 ldx border
  333. 3420 stx $fd
  334. 3430 ldy border+1
  335. 3440 jsr printat
  336. 3450 ldy #2
  337. 3460 dl lda border,y
  338. 3470 jsr print
  339. 3480 iny
  340. 3490 cmp #$8d
  341. 3500 bne nsrd
  342. 3510 ldx $fd
  343. 3520 jsr px
  344. 3530 jmp dl
  345. 3540 nsrd cmp #$d
  346. 3550 bne dl
  347. 3560 ldx #1
  348. 3570 ldy #2
  349. 3580 jsr printat
  350. 3590 lda #""
  351. 3600 jsr print
  352. 3610 ldx #23
  353. 3620 lda #"[164]"
  354. 3630 ro jsr print
  355. 3640 dex
  356. 3650 bpl ro
  357. 3660 lda #$d
  358. 3670 jsr print
  359. 3680 ldy #$14
  360. 3690 nz lda #"[167]"
  361. 3700 jsr print
  362. 3710 lda #""
  363. 3720 sta revers
  364. 3730 ldx #$17
  365. 3740 lda #"[208]"
  366. 3750 sx jsr print
  367. 3760 dex
  368. 3770 bpl sx
  369. 3780 lda #0
  370. 3790 sta revers
  371. 3800 lda #"[165]"
  372. 3810 jsr print
  373. 3820 lda #$d
  374. 3830 jsr print
  375. 3840 dey
  376. 3850 bpl nz
  377. 3860 lda #" "
  378. 3870 jsr print
  379. 3880 ldx #$17
  380. 3890 lda #"[163]"
  381. 3900 ru jsr print
  382. 3910 dex
  383. 3920 bpl ru
  384. 3930 lda #$a0
  385. 3940 sta spoint
  386. 3950 sta spoint+1
  387. 3960 lda #1
  388. 3970 sta v+$17
  389. 3980 sta v+$1d
  390. 3990 sta paintcol
  391. 4000 lda #$f0
  392. 4010 sta v
  393. 4020 lda #$28
  394. 4030 sta v+2
  395. 4040 lda #$52
  396. 4050 sta v+1
  397. 4060 sta v+3
  398. 4070 lda #3
  399. 4080 sta v+$15
  400. 4090 sta fspeed
  401. 4100 sta fcount
  402. 4110 sei
  403. 4120 lda #<irq2
  404. 4130 sta ivect
  405. 4140 lda #>irq2
  406. 4150 sta ivect+1
  407. 4160 cli
  408. 4170 lda #1
  409. 4180 sta countl
  410. 4190 display jsr displspr
  411. 4200 jsr pcolinv
  412. 4210 jmp getloop
  413. 4220 displspr *=*
  414. 4230 jsr colset
  415. 4240 lda #3*40+1
  416. 4250 sta coly
  417. 4260 lda #$d8
  418. 4270 sta coly+1
  419. 4280 lda mc
  420. 4290 and #$42
  421. 4300 ora #$81
  422. 4310 sta mccalc
  423. 4320 lda paintcol
  424. 4330 tax
  425. 4340 lda $a364,x
  426. 4350 and #$7f
  427. 4360 sta $a364,x
  428. 4370 txa
  429. 4380 and mccalc
  430. 4390 sta paintcol
  431. 4400 ldy #3
  432. 4410 pcolset tya
  433. 4420 jsr colcalc
  434. 4430 sta $db8c,y
  435. 4440 dey
  436. 4450 bpl pcolset
  437. 4460 ldy #20
  438. 4470 ldx #0
  439. 4480 sline tya
  440. 4490 pha
  441. 4500 ldy #0
  442. 4510 esprreg txa
  443. 4520 pha
  444. 4530 lda esprite,x
  445. 4540 ldx #7
  446. 4550 byteout pha
  447. 4560 and mccalc
  448. 4570 and #$c0
  449. 4580 beq col0
  450. 4590 eor #$c0
  451. 4600 bne col0
  452. 4610 clc
  453. 4620 adc #$c0
  454. 4630 col0 stx $fa
  455. 4640 tax
  456. 4650 lda colour0,x
  457. 4660 ldx $fa
  458. 4670 jsr setmccol
  459. 4680 pla
  460. 4690 asl
  461. 4700 iny
  462. 4710 dex
  463. 4720 bit mc
  464. 4730 bpl nmcdispl
  465. 4740 asl
  466. 4750 dex
  467. 4760 nmcdispl cpx #0
  468. 4770 bpl byteout
  469. 4780 pla
  470. 4790 tax
  471. 4800 inx
  472. 4810 cpy #24
  473. 4820 bcc esprreg
  474. 4830 lda coly
  475. 4840 clc
  476. 4850 adc #40
  477. 4860 sta coly
  478. 4870 lda coly+1
  479. 4880 adc #0
  480. 4890 sta coly+1
  481. 4900 pla
  482. 4910 tay
  483. 4920 dey
  484. 4930 bpl sline
  485. 4940 lda #4*40+27
  486. 4950 sta coly
  487. 4960 lda #$d8
  488. 4970 sta coly+1
  489. 4980 ldx #6
  490. 4990 backgr ldy #9
  491. 5000 lda colour0
  492. 5010 backset sta (coly),y
  493. 5020 backd dey
  494. 5030 cpy #6
  495. 5040 beq backd
  496. 5050 cpy #0
  497. 5060 bpl backset
  498. 5070 lda coly
  499. 5080 clc
  500. 5090 adc #40
  501. 5100 sta coly
  502. 5110 lda coly+1
  503. 5120 adc #0
  504. 5130 sta coly+1
  505. 5140 dex
  506. 5150 bne backgr
  507. 5160 ldx spnr
  508. 5170 inx
  509. 5180 stx $a202
  510. 5190 rts
  511. 5200 colcalc *=*
  512. 5210 asl
  513. 5220 asl
  514. 5230 asl
  515. 5240 asl
  516. 5250 asl
  517. 5260 asl
  518. 5270 tax
  519. 5280 lda #>colour0
  520. 5290 adc #0
  521. 5300 sta cincload
  522. 5310 sta cincsave
  523. 5320 cincload = *+2
  524. 5330 lda colour0,x
  525. 5340 rts
  526. 5350 ;**** editor ****
  527. 5360 crampnt *=*
  528. 5370 pha
  529. 5380 ldx xpos
  530. 5390 ldy ypos
  531. 5400 inx
  532. 5410 stx cursx
  533. 5420 iny
  534. 5430 iny
  535. 5440 iny
  536. 5450 lda hitab,y
  537. 5460 sta cursy
  538. 5470 sta coly
  539. 5480 lda lotab,y
  540. 5490 and #3
  541. 5500 ora vram
  542. 5510 sta cursy+1
  543. 5520 and #3
  544. 5530 ora #$d8
  545. 5540 sta coly+1
  546. 5550 pla
  547. 5560 rts
  548. 5570 getloop *=*
  549. 5580 ldx cia1
  550. 5590 cpx #$7f
  551. 5600 beq cursctrl
  552. 5610 jsr cnorm
  553. 5620 txa
  554. 5630 u lsr
  555. 5640 bcs d
  556. 5650 jsr up
  557. 5660 d lsr
  558. 5670 bcs l
  559. 5680 jsr down
  560. 5690 l lsr
  561. 5700 bcs r
  562. 5710 jsr left
  563. 5720 r lsr
  564. 5730 bcs b
  565. 5740 jsr right
  566. 5750 b jsr crampnt
  567. 5760 lsr
  568. 5770 bcs cursctrl
  569. 5780 jsr button
  570. 5790 cursctrl *=*
  571. 5800 dec countl
  572. 5810 bne getc
  573. 5820 jsr crampnt
  574. 5830 lda #5
  575. 5840 sta countl
  576. 5850 ldy cursx
  577. 5860 lsr curson
  578. 5870 lda colour
  579. 5880 bcs cwrt
  580. 5890 inc curson
  581. 5900 lda (coly),y
  582. 5910 sta colour
  583. 5920 lda colour4
  584. 5930 cwrt jsr setmccol
  585. 5940 getc jsr get
  586. 5950 cmp #"!"
  587. 5960 bcc nocol
  588. 5970 cmp #"&"
  589. 5980 bcs noinc
  590. 5990 sec
  591. 6000 sbc #"!"
  592. 6010 jsr colcalc
  593. 6020 adc #1
  594. 6030 and #15
  595. 6040 cincsave = *+2
  596. 6050 sta colour0,x
  597. 6060 jsr cnorm
  598. 6070 jmp display
  599. 6080 noinc cmp #"1"
  600. 6090 bcc nocol
  601. 6100 cmp #"5"
  602. 6110 bcs nocol
  603. 6120 selectc sec
  604. 6130 sbc #"1"
  605. 6140 pha
  606. 6150 jsr pcolinv
  607. 6160 pla
  608. 6170 and mccalc
  609. 6180 and #$03
  610. 6190 sta paintcol
  611. 6200 jsr pcolinv
  612. 6210 jmp getloop
  613. 6220 nocol ldy #17
  614. 6230 keytest cmp cmdtab,y
  615. 6240 beq found
  616. 6250 dey
  617. 6260 bpl keytest
  618. 6270 jsr loop
  619. 6275 jmr getloop
  620. 6280 found tax
  621. 6290 lda ctabh,y
  622. 6300 pha
  623. 6310 lda ctabl,y
  624. 6320 pha
  625. 6330 jsr cnorm
  626. 6340 txa
  627. 6350 rts
  628. 6360 loop ldx #$30
  629. 6380 lpy dey
  630. 6390 bne lpy
  631. 6400 dex
  632. 6410 bne lpy
  633. 6420 rts
  634. 6430 cnorm lda #1
  635. 6440 sta countl
  636. 6450 lda #0
  637. 6460 sta curson
  638. 6470 lda colour
  639. 6480 ldy cursx
  640. 6490 setmccol *=*
  641. 6500 sta (coly),y
  642. 6510 bit mc
  643. 6520 bpl nsmc
  644. 6530 iny
  645. 6540 sta (coly),y
  646. 6550 nsmc rts
  647. 6560 pcolinv *=*
  648. 6570 ldx paintcol
  649. 6580 lda $a364,x
  650. 6590 eor #$80
  651. 6600 sta $a364,x
  652. 6610 rts
  653. 6620 cmdtab *=*
  654. 6630 .asc "xi[136]f+-cenrmts[204][211][196][195]"
  655. 6640 ctabl *=*
  656. 6650 .byt <exit-1,<chome-1,<invers-1,<multi-1,<film-1
  657. 6660 .byt <ufilm-1,<dfilm-1,<clrspr-1,<exchspr-1,<newspr-1
  658. 6670 .byt <rollspr-1,<mirror-1,<turnspr-1,<sequence-1
  659. 6680 .byt <loadspr-1,<savespr-1,<dir-1,<command-1
  660. 6690 ctabh *=*
  661. 6700 .byt >exit-1,>chome-1,>invers-1,>multi-1,>film-1
  662. 6710 .byt >ufilm-1,>dfilm-1,>clrspr-1,>exchspr-1,>newspr-1
  663. 6720 .byt >rollspr-1,>mirror-1,>turnspr-1,>sequence-1
  664. 6730 .byt >loadspr-1,>savespr-1,>dir-1,>command-1
  665. 6740 up *=*
  666. 6750 ldy ypos
  667. 6760 dey
  668. 6770 bpl u1
  669. 6780 ldy #20
  670. 6790 sty ypos
  671. 6800 jmp left
  672. 6810 u1 sty ypos
  673. 6820 rts
  674. 6830 left *=*
  675. 6840 pha
  676. 6850 lda mc
  677. 6860 and #3
  678. 6870 eor #$ff
  679. 6880 lsr
  680. 6890 and xpos
  681. 6900 sbc #1
  682. 6910 bcs l1
  683. 6920 adc #24
  684. 6930 sta xpos
  685. 6940 pla
  686. 6950 jmp up
  687. 6960 l1 sta xpos
  688. 6970 pla
  689. 6980 rts
  690. 6990 right *=*
  691. 7000 pha
  692. 7010 lda mc
  693. 7020 and #3
  694. 7030 lsr
  695. 7040 eor #$ff
  696. 7050 and xpos
  697. 7060 adc #1
  698. 7070 cmp #24
  699. 7080 bcc r1
  700. 7090 sbc #24
  701. 7100 sta xpos
  702. 7110 pla
  703. 7120 jmp down
  704. 7130 r1 sta xpos
  705. 7140 pla
  706. 7150 rts
  707. 7160 down *=*
  708. 7170 ldy ypos
  709. 7180 iny
  710. 7190 cpy #21
  711. 7200 bcc d1
  712. 7210 ldy #0
  713. 7220 sty ypos
  714. 7230 jmp right
  715. 7240 d1 sty ypos
  716. 7250 rts
  717. 7260 exit *=*
  718. 7270 jsr suretest
  719. 7280 ;ldy #24
  720. 7290 ;ldx #1
  721. 7300 ;jsr printat
  722. 7310 jsr normirq
  723. 7320 lda #<normnmi
  724. 7330 sta nmivect
  725. 7340 lda #>normnmi
  726. 7350 sta nmivect+1
  727. 7360 cli
  728. 7370 lda #0
  729. 7380 sta 650
  730. 7390 sta v+21
  731. 7400 lda #4
  732. 7410 sta vram
  733. 7420 lda #$14
  734. 7430 sta v+$18
  735. 7440 lda #3
  736. 7450 sta cia2
  737. 7460 lda #$37
  738. 7470 sta 1
  739. 7480 lda #"[153]"
  740. 7490 jsr print
  741. 7500 jmp clrscr
  742. 7510 normirq *=*
  743. 7520 sei
  744. 7530 lda #<irq0
  745. 7540 sta ivect
  746. 7550 lda #>irq0
  747. 7560 sta ivect+1
  748. 7570 rts
  749. 7580 chome *=*
  750. 7590 lda #0
  751. 7600 sta xpos
  752. 7610 sta ypos
  753. 7620 jmp getloop
  754. 7630 invers *=*
  755. 7640 ldx #$3e
  756. 7650 invl lda esprite,x
  757. 7660 eor #255
  758. 7670 sta esprite,x
  759. 7680 dex
  760. 7690 bpl invl
  761. 7700 jmp display
  762. 7710 multi *=*
  763. 7720 lda #$ff
  764. 7730 asl mc
  765. 7740 adc #0
  766. 7750 sta mc
  767. 7760 jsr displspr
  768. 7770 jsr pcolinv
  769. 7780 jmp chome
  770. 7790 film *=*
  771. 7800 lda #$28
  772. 7810 sta v+4
  773. 7820 lda #6
  774. 7830 sta v+$10
  775. 7840 lda #$6a
  776. 7850 sta v+5
  777. 7860 lda v+$15
  778. 7870 eor #%100
  779. 7880 sta v+$15
  780. 7890 lda #0
  781. 7900 sta fpiccnt
  782. 7910 sei
  783. 7920 lda ivect
  784. 7930 eor #<(irq2^irq3)
  785. 7940 sta ivect
  786. 7950 lda ivect+1
  787. 7960 eor #>(irq2^irq3)
  788. 7970 sta ivect+1
  789. 7980 cli
  790. 7990 jmp getloop
  791. 8000 ufilm *=*
  792. 8010 dec fspeed
  793. 8020 lda #1
  794. 8030 sta fcount
  795. 8040 jmp getloop
  796. 8050 dfilm *=*
  797. 8060 inc fspeed
  798. 8070 lda #1
  799. 8080 sta fcount
  800. 8090 jmp getloop
  801. 8100 irq3 *=*
  802. 8110 dec fcount
  803. 8120 bne fok0
  804. 8130 lda fspeed
  805. 8140 sta fcount
  806. 8150 ldy fpiccnt
  807. 8160 lda seqtab,y
  808. 8170 tax
  809. 8180 and #15
  810. 8190 cmp spnr
  811. 8200 php
  812. 8210 txa
  813. 8220 plp
  814. 8230 bne nesp
  815. 8240 ldx #$a0
  816. 8250 nesp stx spoint+2
  817. 8260 iny
  818. 8270 cpy seqtab+$4f
  819. 8280 bcc endflm
  820. 8290 ldy #0
  821. 8300 endflm sty fpiccnt
  822. 8310 fok0 jmp irq2
  823. 8320 button *=*
  824. 8330 lda ypos
  825. 8340 asl
  826. 8350 adc ypos
  827. 8360 sta $fa
  828. 8370 lda xpos
  829. 8380 pha
  830. 8390 lsr
  831. 8400 lsr
  832. 8410 lsr
  833. 8420 clc
  834. 8430 adc $fa
  835. 8440 tay
  836. 8450 pla
  837. 8460 and #7
  838. 8470 tax
  839. 8480 lda mccalc
  840. 8490 and #$c0
  841. 8500 cpx #0
  842. 8510 beq nmaskrl
  843. 8520 maskrl lsr
  844. 8530 dex
  845. 8540 bne maskrl
  846. 8550 nmaskrl pha
  847. 8560 lda paintcol
  848. 8570 lsr
  849. 8580 bcc col0set
  850. 8590 bit mc
  851. 8600 bpl col0set
  852. 8610 eor #1
  853. 8620 col0set rol
  854. 8630 tax
  855. 8640 pla
  856. 8650 pha
  857. 8660 and mask,x
  858. 8670 sta $fa
  859. 8680 pla
  860. 8690 eor #$ff
  861. 8700 and esprite,y
  862. 8710 ora $fa
  863. 8720 sta esprite,y
  864. 8730 lda paintcol
  865. 8740 jsr colcalc
  866. 8750 sta colour
  867. 8760 setend jmp cnorm
  868. 8770 mask *=*
  869. 8780 .byt $00,$ff,$55,$aa
  870. 8790 clrspr *=*
  871. 8800 jsr suretest
  872. 8810 ldx #63
  873. 8820 lda #0
  874. 8830 espcl sta esprite,x
  875. 8840 dex
  876. 8850 bpl espcl
  877. 8860 jmp display
  878. 8870 sure *=*
  879. 8880 .asc "[146]! sure ?"
  880. 8890 clrmess *=* ; y=length
  881. 8900 pha
  882. 8910 lda #""
  883. 8920 mclr jsr print
  884. 8930 dey
  885. 8940 bpl mclr
  886. 8950 pla
  887. 8960 rts
  888. 8970 messpos *=*
  889. 8980 ldx #26
  890. 8990 ldy #16
  891. 9000 jmp printat
  892. 9010 suretest *=*
  893. 9020 pha
  894. 9030 jsr messpos
  895. 9040 lda #""
  896. 9050 jsr print
  897. 9060 pla
  898. 9070 jsr print
  899. 9080 sureout iny
  900. 9090 lda sure,y
  901. 9100 jsr print
  902. 9110 cmp #"?"
  903. 9120 bne sureout
  904. 9130 surein jsr get
  905. 9140 beq surein
  906. 9150 ldy #8
  907. 9160 jsr clrmess
  908. 9170 cmp #"y"
  909. 9180 beq endsure
  910. 9190 pla
  911. 9200 pla
  912. 9210 jmp getloop
  913. 9220 endsure rts
  914. 9230 exchspr *=*
  915. 9240 jsr sprtnr
  916. 9250 bcc noexc
  917. 9260 sta spnr
  918. 9270 adc #0
  919. 9280 sta $a202
  920. 9290 noexc jmp getloop
  921. 9300 spnrtxt .asc "def a-p,cr"
  922. 9310 sprtnr *=*
  923. 9320 jsr messpos
  924. 9330 ldy #0
  925. 9340 spnrout lda spnrtxt,y
  926. 9350 jsr print
  927. 9360 iny
  928. 9370 cmp #"r"
  929. 9380 bne spnrout
  930. 9390 spnrin jsr get
  931. 9400 beq spnrin
  932. 9410 cmp #13
  933. 9420 clc
  934. 9430 beq cret
  935. 9440 cmp #"a"
  936. 9450 bcc spnrin
  937. 9460 cmp #"q"
  938. 9470 bcs spnrin
  939. 9480 sec
  940. 9490 sbc #1
  941. 9500 and #15
  942. 9510 cret php
  943. 9520 ldy #9
  944. 9530 jsr clrmess
  945. 9540 plp
  946. 9550 rts
  947. 9560 withdef .asc "with def ?"
  948. 9570 newspr *=*
  949. 9580 jsr suretest
  950. 9590 jsr messpos
  951. 9600 ldy #0
  952. 9610 wthdfout lda withdef,y
  953. 9620 jsr print
  954. 9630 iny
  955. 9640 cmp #"?"
  956. 9650 bne wthdfout
  957. 9660 wthdfin jsr get
  958. 9670 beq wthdfin
  959. 9680 cmp #"n"
  960. 9690 beq nodef
  961. 9700 cmp #"y"
  962. 9710 bne wthdfin
  963. 9720 lda spnr
  964. 9730 tax
  965. 9740 and #3
  966. 9750 tay
  967. 9760 lda stabl,y
  968. 9770 sta $fa
  969. 9780 lda stabh,x
  970. 9790 sta $fb
  971. 9800 ldy #$3e
  972. 9810 sprdef lda esprite,y
  973. 9820 sta ($fa),y
  974. 9830 dey
  975. 9840 bpl sprdef
  976. 9850 nodef jmp begin
  977. 9860 udlr .asc "roll joy/cr:"
  978. 9870 rollspr *=*
  979. 9880 jsr messpos
  980. 9890 ldy #0
  981. 9900 udlrout lda udlr,y
  982. 9910 jsr print
  983. 9920 iny
  984. 9930 cmp #":"
  985. 9940 bne udlrout
  986. 9950 udlrin lda cia1
  987. 9960 pha
  988. 9970 and #$10
  989. 9980 sta rbutton
  990. 9990 pla
  991. 10000 lsr
  992. 10010 pha
  993. 10020 bcs rolld
  994. 10030 ldy #2
  995. 10040 upha lda esprite,y
  996. 10050 pha
  997. 10060 dey
  998. 10070 bpl upha
  999. 10080 iny
  1000. 10090 ldx #3
  1001. 10100 rcopyu lda esprite,x
  1002. 10110 sta esprite,y
  1003. 10120 inx
  1004. 10130 iny
  1005. 10140 cpx #$3f
  1006. 10150 bcc rcopyu
  1007. 10160 upla pla
  1008. 10170 ldx rbutton
  1009. 10180 bne ucopy
  1010. 10190 txa
  1011. 10200 ucopy sta esprite,y
  1012. 10210 iny
  1013. 10220 cpy #$3f
  1014. 10230 bcc upla
  1015. 10240 rolld *=*
  1016. 10250 pla
  1017. 10260 lsr
  1018. 10270 pha
  1019. 10280 bcs rolll
  1020. 10290 ldy #$3e
  1021. 10300 dpha lda esprite,y
  1022. 10310 pha
  1023. 10320 dey
  1024. 10330 cpy #$3c
  1025. 10340 bcs dpha
  1026. 10350 ldx #$3e
  1027. 10360 rcopyd lda esprite,y
  1028. 10370 sta esprite,x
  1029. 10380 dex
  1030. 10390 dey
  1031. 10400 bpl rcopyd
  1032. 10410 ldy #0
  1033. 10420 dpla pla
  1034. 10430 ldx rbutton
  1035. 10440 bne dcopy
  1036. 10450 txa
  1037. 10460 dcopy sta esprite,y
  1038. 10470 iny
  1039. 10480 cpy #3
  1040. 10490 bcc dpla
  1041. 10500 rolll *=*
  1042. 10510 pla
  1043. 10520 lsr
  1044. 10530 pha
  1045. 10540 bcs rollr
  1046. 10550 lda mc
  1047. 10560 sta $fb
  1048. 10570 rrlloop ldx #$3f
  1049. 10580 rlinelft ldy #3 ; 3 bytes
  1050. 10590 clc
  1051. 10600 rl rol esprite-1,x
  1052. 10610 dex
  1053. 10620 dey
  1054. 10630 bne rl
  1055. 10640 tya
  1056. 10650 ldy rbutton
  1057. 10660 beq nolcopy
  1058. 10670 rol
  1059. 10680 nolcopy ora esprite+2,x
  1060. 10690 sta esprite+2,x
  1061. 10700 txa
  1062. 10710 bne rlinelft
  1063. 10720 inc $fb
  1064. 10730 beq rrlloop
  1065. 10740 rollr *=*
  1066. 10750 pla
  1067. 10760 lsr
  1068. 10770 bcs rollcr
  1069. 10780 lda mc
  1070. 10790 sta $fb
  1071. 10800 lrlloop ldx #0
  1072. 10810 rlinergt ldy #3 ; 3 bytes
  1073. 10820 clc
  1074. 10830 rr ror esprite,x
  1075. 10840 inx
  1076. 10850 dey
  1077. 10860 bne rr
  1078. 10870 tya
  1079. 10880 ldy rbutton
  1080. 10890 beq norcopy
  1081. 10900 ror
  1082. 10910 norcopy ora esprite-3,x
  1083. 10920 sta esprite-3,x
  1084. 10930 cpx #$3f
  1085. 10940 bcc rlinergt
  1086. 10950 inc $fb
  1087. 10960 beq lrlloop
  1088. 10970 rollcr *=*
  1089. 10980 jsr displspr
  1090. 10990 jsr get
  1091. 11000 cmp #13
  1092. 11010 beq endroll
  1093. 11020 ldx #$f4 ; speed
  1094. 11030 rloop iny
  1095. 11040 bne rloop
  1096. 11050 inx
  1097. 11060 bne rloop
  1098. 11070 jmp udlrin
  1099. 11080 endroll *=*
  1100. 11090 ldy #11
  1101. 11100 jsr clrmess
  1102. 11110 jmp display+3
  1103. 11120 horvert .asc "h[146]or/v[146]ert/cr ?"
  1104. 11130 mirror *=*
  1105. 11140 jsr messpos
  1106. 11150 ldy #0
  1107. 11160 hvout lda horvert,y
  1108. 11170 jsr print
  1109. 11180 iny
  1110. 11190 cmp #"?"
  1111. 11200 bne hvout
  1112. 11210 hvin jsr get
  1113. 11220 beq hvin
  1114. 11230 cmp #"h"
  1115. 11240 bne vert
  1116. 11250 ldx #$3e
  1117. 11260 hstore lda esprite,x
  1118. 11270 pha
  1119. 11280 dex
  1120. 11290 bpl hstore
  1121. 11300 ldx #$3e
  1122. 11310 horcopy pla
  1123. 11320 sta esprite-2,x
  1124. 11330 dex
  1125. 11340 pla
  1126. 11350 sta esprite,x
  1127. 11360 dex
  1128. 11370 pla
  1129. 11380 sta esprite+2,x
  1130. 11390 dex
  1131. 11400 bpl horcopy
  1132. 11410 bmi endhv
  1133. 11420 vert cmp #"v"
  1134. 11430 bne hvcr
  1135. 11440 ldx #$3e
  1136. 11450 vshft ldy #7
  1137. 11460 vlsr lsr esprite,x
  1138. 11470 bit mc
  1139. 11480 bpl nmcmirr
  1140. 11490 php
  1141. 11500 lsr esprite,x
  1142. 11510 rol
  1143. 11520 dey
  1144. 11530 plp
  1145. 11540 nmcmirr rol
  1146. 11550 dey
  1147. 11560 bpl vlsr
  1148. 11570 pha
  1149. 11580 dex
  1150. 11590 bpl vshft
  1151. 11600 inx
  1152. 11610 vcopy pla
  1153. 11620 sta esprite+2,x
  1154. 11630 inx
  1155. 11640 pla
  1156. 11650 sta esprite,x
  1157. 11660 inx
  1158. 11670 pla
  1159. 11680 sta esprite-2,x
  1160. 11690 inx
  1161. 11700 cpx #$3f
  1162. 11710 bcc vcopy
  1163. 11720 bcs endhv
  1164. 11730 hvcr cmp #13
  1165. 11740 bne hvin
  1166. 11750 endhv ldy #12
  1167. 11760 jsr clrmess
  1168. 11770 jmp display
  1169. 11780 turnspr *=*
  1170. 11790 bit mc
  1171. 11800 bpl tsprite
  1172. 11810 jmp getloop
  1173. 11820 tsprite jsr suretest
  1174. 11830 ldy #$3e
  1175. 11840 rcopy lda esprite,y
  1176. 11850 sta espriteh,y
  1177. 11860 lda #0
  1178. 11870 sta esprite,y
  1179. 11880 dey
  1180. 11890 bpl rcopy
  1181. 11900 iny
  1182. 11910 sty ytemp
  1183. 11920 tspr ldx #0
  1184. 11930 turn asl espriteh+2,x
  1185. 11940 rol espriteh+1,x
  1186. 11950 rol espriteh,x
  1187. 11960 stx xtemp
  1188. 11970 ldx ytemp
  1189. 11980 ror esprite,x
  1190. 11990 ror esprite+1,x
  1191. 12000 ror esprite+2,x
  1192. 12010 ldx xtemp
  1193. 12020 inx
  1194. 12030 inx
  1195. 12040 inx
  1196. 12050 cpx #$3d
  1197. 12060 bcc turn
  1198. 12070 stx xtemp
  1199. 12080 ldy ytemp
  1200. 12090 iny
  1201. 12100 iny
  1202. 12110 iny
  1203. 12120 sty ytemp
  1204. 12130 cpy #$3d
  1205. 12140 bcc tspr
  1206. 12150 jmp display
  1207. 12160 seqmess .asc "[147]enter sequence (max 79 steps) :"
  1208. 12170 .byt $d
  1209. 12180 sequence *=*
  1210. 12190 ldy #0
  1211. 12200 sty v+$15
  1212. 12210 seqout lda seqmess,y
  1213. 12220 jsr print
  1214. 12230 iny
  1215. 12240 cmp #$d
  1216. 12250 bne seqout
  1217. 12260 ldy #0
  1218. 12270 stabout lda seqtab,y
  1219. 12280 sec
  1220. 12290 sbc #$c0-"a"
  1221. 12300 jsr print
  1222. 12310 iny
  1223. 12320 cpy seqtab+$4f
  1224. 12330 bcc stabout
  1225. 12340 lda #"[157]" ; crsr_
  1226. 12350 stabback jsr print
  1227. 12360 dey
  1228. 12370 bne stabback
  1229. 12380 jsr normirq
  1230. 12390 cli
  1231. 12400 stabin jsr input
  1232. 12410 cmp #$d
  1233. 12420 beq endstab
  1234. 12430 sec
  1235. 12440 sbc #"a"
  1236. 12450 cmp #16
  1237. 12460 bcs endstab
  1238. 12470 adc #$c0
  1239. 12480 sta seqtab,y
  1240. 12490 iny
  1241. 12500 cpy #$4f
  1242. 12510 bcc stabin
  1243. 12520 endstab sty seqtab+$4f
  1244. 12530 jmp screen
  1245. 12540 loadspr *=*
  1246. 12550 jsr param
  1247. 12560 ldx #$00
  1248. 12570 ldy #$b0 ; load from $b000
  1249. 12580 lda #0
  1250. 12590 jsr load
  1251. 12600 jmp begin
  1252. 12610 savespr *=*
  1253. 12620 jsr param
  1254. 12630 lda #$00
  1255. 12640 sta $fa
  1256. 12650 lda #$b0 ; save from $b000
  1257. 12660 sta $fb
  1258. 12670 lda #$fa
  1259. 12680 ldx #$50
  1260. 12690 ldy #$b4 ;      to $b450
  1261. 12700 jsr save
  1262. 12710 jmp screen
  1263. 12720 filename .asc "[147]enter filename / return : "
  1264. 12730 .byt $d
  1265. 12740 param *=*
  1266. 12750 ldy #0
  1267. 12760 sty v+$15
  1268. 12770 nameout lda filename,y
  1269. 12780 jsr print
  1270. 12790 iny
  1271. 12800 cmp #$d
  1272. 12810 bne nameout
  1273. 12820 jsr normirq
  1274. 12830 cli
  1275. 12840 ldy #0
  1276. 12850 namein jsr input
  1277. 12860 cmp #$d
  1278. 12870 beq endname
  1279. 12880 sta name,y
  1280. 12890 iny
  1281. 12900 cpy #18
  1282. 12910 bne namein
  1283. 12920 endname tya ; length
  1284. 12930 jsr nametest
  1285. 12940 bne namedef
  1286. 12950 pla
  1287. 12960 pla
  1288. 12970 jmp screen
  1289. 12980 namedef ldx #<name
  1290. 12990 ldy #>name
  1291. 13000 jsr $fdf9 ; def name
  1292. 13010 lda #$7f ; lfn
  1293. 13020 ldx $ba ; device
  1294. 13030 ldy #0 ; sec.adr
  1295. 13040 sty $286
  1296. 13050 jmp $fe00 ; set par
  1297. 13060 nametest *=*
  1298. 13070 cmp #1
  1299. 13080 bne endntest
  1300. 13090 ldx name
  1301. 13100 cpx #" "
  1302. 13110 endntest rts
  1303. 13120 dirtext .asc "[147]>$0"
  1304. 13130 dir *=*
  1305. 13140 ldy #0
  1306. 13150 sty v+$15
  1307. 13160 dirout lda dirtext,y
  1308. 13170 jsr print
  1309. 13180 iny
  1310. 13190 cmp #"0"
  1311. 13200 bne dirout
  1312. 13210 lda #$7f ; lfn
  1313. 13220 ldx #8 ; device
  1314. 13230 ldy #0 ; sec.adr
  1315. 13240 jsr $ffba
  1316. 13250 lda #2
  1317. 13260 ldx #<dirtext+3
  1318. 13270 ldy #>dirtext+3
  1319. 13280 jsr $ffbd
  1320. 13290 jsr $ffc0 ; open127,8,0,"$0,p,r"
  1321. 13300 bcs direrror
  1322. 13310 ldx #$7f
  1323. 13320 jsr $ffc6 ; chkin
  1324. 13330 jsr get
  1325. 13340 jsr get ; start.adr
  1326. 13350 newline lda #$d
  1327. 13360 jsr print
  1328. 13370 jsr get
  1329. 13380 tax
  1330. 13390 jsr get
  1331. 13400 bne noenddir
  1332. 13410 cpx #0
  1333. 13420 beq enddir
  1334. 13430 noenddir lda #$37
  1335. 13440 sta 1 ; basic on
  1336. 13450 jsr get
  1337. 13460 tax
  1338. 13470 jsr get
  1339. 13480 jsr intprint
  1340. 13490 lda #$36
  1341. 13500 sta 1 ; basic off
  1342. 13510 readline jsr get
  1343. 13520 jsr print
  1344. 13530 bne readline
  1345. 13540 beq newline
  1346. 13550 enddir jsr $ffcc ; clrch
  1347. 13560 jsr waitkey
  1348. 13570 direrror lda #$7f
  1349. 13580 jsr $ffc3
  1350. 13590 jmp screen
  1351. 13600 waitkey *=*
  1352. 13610 sei
  1353. 13615 jsr loop
  1354. 13620 ldx #$fe
  1355. 13630 stx cia1
  1356. 13640 dex
  1357. 13650 waitcr cpx cia1+1
  1358. 13660 bne waitcr
  1359. 13670 cli
  1360. 13680 rts
  1361. 13690 comtext .asc "[147]enter disk-command :"
  1362. 13700 .byt $d
  1363. 13710 command *=*
  1364. 13720 ldy #0
  1365. 13730 sty v+$15
  1366. 13740 comout lda comtext,y
  1367. 13750 jsr print
  1368. 13760 iny
  1369. 13770 cmp #$d
  1370. 13780 bne comout
  1371. 13790 jsr normirq
  1372. 13800 cli
  1373. 13810 ldy #0
  1374. 13820 comin jsr input
  1375. 13830 sta name,y
  1376. 13840 cmp #$d
  1377. 13850 beq endcom
  1378. 13860 iny
  1379. 13870 cpy #$28
  1380. 13880 bcc comin
  1381. 13890 endcom tya
  1382. 13900 jsr nametest
  1383. 13910 bne strdef
  1384. 13920 lda #0
  1385. 13930 strdef ldx #<name
  1386. 13940 ldy #>name
  1387. 13950 jsr $ffbd
  1388. 13960 lda #$7f
  1389. 13970 ldx #8
  1390. 13980 ldy #15
  1391. 13990 jsr $ffba
  1392. 14000 jsr $ffc0 ; open1,8,15,comstr
  1393. 14010 bcs comerror
  1394. 14020 lda #$d
  1395. 14030 jsr print
  1396. 14040 ldx #$7f
  1397. 14050 jsr $ffc6
  1398. 14060 diskerr jsr get
  1399. 14070 jsr print
  1400. 14080 bit $90
  1401. 14090 bvc diskerr
  1402. 14100 jsr $ffcc
  1403. 14110 jsr waitkey
  1404. 14120 comerror lda #$7f
  1405. 14130 jsr $ffc3
  1406. 14140 jmp screen
  1407.