home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 30 / 64er_Magazin_Sonderheft_30_19xx_Markt__Technik_de_Side_B.d64 / src.main (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  8KB  |  272 lines

  1. 105 ; abgetippt/ueberarbeitet/kommentiert von n.heusler, 19.4.88
  2. 106 ; ****************** !! **********
  3. 107 ; bitte zeile 105 unbedingt im listing lasssen und zeilen 106-108 loeschen !
  4. 108 ; ****************** !! **********
  5. 110  .eqv =53248
  6. 120  jsrinitial ; adressen init
  7. 130  jsrirq     ; irq umlenken
  8. 140  rts        ; fertig
  9. 150 setsprite lda#130 ; sprite 0 auf
  10. 160  stav       ; position (130/114)
  11. 170  lda#114
  12. 180  stav+1
  13. 190  lda#0
  14. 200  stav+16
  15. 210  stav+29
  16. 220  stav+23
  17. 225  lda#2      ; rot
  18. 230  stav+39    ; setzen
  19. 240  lda#5      ; gruen
  20. 250  stav+37    ; multicolor1
  21. 260  lda#32     ; spritepointer
  22. 270  sta2040
  23. 280  lda#1      ; multicolor an
  24. 290  stav+28
  25. 300  stav+21    ; sprite an
  26. 310  rts
  27. 320 animation rts
  28. 330 ; in diesen zeilen
  29. 340 ; steht spaeter
  30. 350 ; das unterprogramm
  31. 360 ; fuer die sprite-
  32. 370 ; animation
  33. 600 initial lda#39 ; daten fuer spr.0
  34. 610  sta2040    ; aus block 39
  35. 620  lda#0      ; null
  36. 650  sta65      ; lb von grafikpointer auf 0
  37. 660  stagame    ; spielstand
  38. 670  lda#7      ; softscrollzeiger
  39. 680  sta2       ; auf sieben
  40. 690  lda#200    ; verz. nach spielende
  41. 700  stadelay   ; 200/25 sek.
  42. 710  lda#$70    ; high von grafikpointer
  43. 720  sta66      ; auf $70
  44. 730  lda#<(1144)  ; pointer fuer
  45. 740  sta67      ; bildsch. grafik
  46. 750  lda#>(1144)  ; in 67/68 auf 1144
  47. 760  sta68
  48. 770  lda#5      ; fuenf
  49. 772  sta53281   ; damit's auf alten 64'ern laeuft ! (nh)
  50. 780  sta646     ; und auf neuen (cursorfarbe)
  51. 790  jsr$e544   ; denn diese scnslr routine gibt's
  52. 792 ; in 2 ausfuehrungen
  53. 800  lda53270
  54. 810  and#247    ; 38 zeichen pro zeile
  55. 820  sta53270
  56. 830  jsrramscreen ; grafik -> schirm
  57. 840  jsrsetsprite ; an
  58. 842  lda#0      ; tiefschwarz
  59. 844  sta53280   ; rahmen
  60. 846  sta53281   ; grund
  61. 850  lda53279   ; loeschen kollision sprite-grund
  62. 860  rts        ; fertig
  63. 870 delay brk  ; verzoegerungszaehler
  64. 880 irq sei    ; irq aus
  65. 890 ; hier
  66. 900 ; steht
  67. 910 ; routine
  68. 920 ; fuer die
  69. 930 ; interrupt-
  70. 940 ; gesteuerte
  71. 950 ; musik (spaeter mal)
  72. 960  lda#<(irqneu) ; low
  73. 970  sta$314    ; irqpointer auf eigene routine
  74. 980  lda#>(irqneu) ; high
  75. 990  sta$315    ; setzen
  76. 1000  lda#74    ; rasterzeile 74
  77. 1010  stav+$12  ; ins rasterreg.
  78. 1020  ldav+$11  ; highbyte der ra.zeile
  79. 1030  and#$7f   ; aus
  80. 1040  stav+$11
  81. 1050  lda#$81   ; rasterzeilenirq vom vic
  82. 1060  stav+$1a  ; zulassen
  83. 1070  cli       ; sonst geht's nicht (irq wieder an)
  84. 1080  rts       ; fertig
  85. 1090 game brk  ; spielstandvariable (anfangs null)
  86. 1100 joyab lda#224 ; tastatur
  87. 1110  sta56322  ; abschalten
  88. 1120  lda56320  ; joyport 2
  89. 1130  and#1     ; bit 1 gesetzt testen
  90. 1140  bnejoy2   ; ja, dann weiter abfragen
  91. 1150  decv+1    ; sprite y-pos erniedrigen
  92. 1160 joy2 lda56320
  93. 1170  and#2     ; bit 2 testen
  94. 1180  bnejoy3   ; ja, dann weiter
  95. 1190  incv+1    ; sonst sprite senken
  96. 1200 joy3 lda56320
  97. 1210  and#4     ; bit 3 testen
  98. 1220  bnejoy4   ; ja, weiter
  99. 1230  ldav      ; wenn die x-pos des sprite
  100. 1240  cmp#32    ; groesser 32 ist
  101. 1250  beqjoy4
  102. 1260  decv      ; erniedrigen
  103. 1270 joy4 lda56320
  104. 1280  and#8     ; bit 4
  105. 1290  bnejoy5   ; weiter
  106. 1300  ldav      ; wenn x-pos von sprite 0
  107. 1310  cmp#255   ; kleiner 255 ist
  108. 1320  beqjoy5   ; dann weiter
  109. 1330  incv      ; x-pos erhoehen
  110. 1340 joy5 lda#255 ; tastatur
  111. 1350  sta56322  ; ein
  112. 1360  rts       ; geschafft
  113. 1370 ramscreen ldx#0 ; 13 mal (anz. zeilen)
  114. 1380 ramscrl1 ldy#0 ; 40 zeichen
  115. 1390 ramscrl2 lda(65),y ; aus
  116. 1400  sta(67),y ; dem grafikbereich
  117. 1410  iny       ; zum
  118. 1420  cpy#40    ; bildschirm
  119. 1430  bneramscrl2 ; tranferieren
  120. 1440  inc66
  121. 1450  inc66     ; grafikvektor ist
  122. 1460  lda67
  123. 1470  clc       ; in der zeropage
  124. 1480  adc#40
  125. 1490  sta67     ; 65/66
  126. 1500  lda68     ; bildschirmvektor ist
  127. 1510  adc#0
  128. 1520  sta68     ; 67/68
  129. 1530  inx
  130. 1540  cpx#13    ; schon 13 zeilen
  131. 1550  bneramscrl1 ; nein
  132. 1560  lda66     ; grafikvektor
  133. 1570  sec
  134. 1580  sbc#26
  135. 1590  sta66
  136. 1600  lda#<(1144) ; bildschirmvektor
  137. 1610  sta67
  138. 1620  lda#>(1144)
  139. 1630  sta68     ; beide restaurieren
  140. 1640  rts       ; fertig
  141. 1650 warten ldy#0 ; text 1 in den schirm
  142. 1660 warten1 ldatext1,y
  143. 1670  sta1754,y
  144. 1680  iny       ; ab speicherzelle 1754
  145. 1690  cpy#20    ; 20 zeichen
  146. 1700  bnewarten1
  147. 1710  lda#224   ; tastatur
  148. 1720  sta56322  ; aus
  149. 1730  lda56320  ; joystick lesen
  150. 1740  cmp#111   ; knopf testen
  151. 1750  bnewartenend ; nein, ende
  152. 1760  lda#255   ; tastatur
  153. 1770  sta56322  ; ein
  154. 1780  ldy#0     ; text1 im schirm loeschen
  155. 1790  lda#32    ; == mit spaces uebermalen
  156. 1800 warten2 sta1754,y
  157. 1810  iny
  158. 1820  cpy#20
  159. 1830  bnewarten2
  160. 1840  incgame   ; spielstand auf 'spiel gestartet' setzen
  161. 1850 wartenend rts
  162. 1860 text1 .by8,9,20,32,20,18,9,7,7,5,18,32,20
  163. 1865  .by15,32,19,20,1,18,20
  164. 1870 boing ldy#0 ; text2 ausgeben
  165. 1880 bo1 ldatext2,y
  166. 1890  sta1754,y
  167. 1900  iny
  168. 1910  cpy#20    ; 20 zeichen
  169. 1920  bnebo1
  170. 1930  decdelay  ; warten bis
  171. 1940  ldadelay  ; verzoegerung
  172. 1950  bneboend  ; bei null
  173. 1960  ldy#0
  174. 1970  lda#32    ; text2 loeschen
  175. 1980 bo2 sta1754,y
  176. 1990  iny
  177. 2000  cpy#20
  178. 2010  bnebo2
  179. 2020  jsrinitial ; alles neu einstellen
  180. 2030 boend rts
  181. 2040 text2 .by25,15,21,18,32,13,9,19,19,9,15,14,32
  182. 2042  .by6,1,9,12,5,4,32
  183. 2050 over ldy#0  ; text 3 in den
  184. 2060 overl1 ldatext3,y ; bildschirm
  185. 2070  sta1754,y
  186. 2080  iny
  187. 2090  cpy#20      ; 20 zeichen
  188. 2100  bneoverl1   ; transferieren
  189. 2110  decdelay    ; warten bis
  190. 2120  ldadelay    ; verzoegerung
  191. 2130  bneoverend  ; null ist
  192. 2140  ldy#0       ; text3
  193. 2150  lda#32      ; mit spaces
  194. 2160 overl2 sta1754,y ; uebermalen
  195. 2170  iny
  196. 2180  cpy#20
  197. 2190  bneoverl2
  198. 2200  jsrinitial  ; alles initialisieren (neustart)
  199. 2210 overend rts
  200. 2220 text3 .by25,15,21,32,13,1,4,5,32,9,20,44,15,12
  201. 2222  .by4,32,2,15,25,44 ; text im bildschirmcode
  202. 2230 scroll lda2 ; 7 punkte nach links
  203. 2240  beqblkscroll ; hardscrolling
  204. 2250  dec2      ; einen punkt nach links
  205. 2260  lda65     ; abfragen
  206. 2270  cmp#$d8   ; ob die grafik am ende
  207. 2280  bneblkend
  208. 2290  lda66     ; angelangt ist
  209. 2300  cmp#$71   ; (bei $71d8)
  210. 2310  bneblkend ; nein, weiter
  211. 2320  incgame   ; game = game +2
  212. 2330  incgame
  213. 2340 blkend rts
  214. 2350 blkscroll lda#7; speicherstelle fuer softscroll
  215. 2360  sta2      ; auf sieben
  216. 2370  lda65     ; grafikpointer
  217. 2380  clc       ; um 1
  218. 2390  adc#1     ; (einfacher waere inc)
  219. 2400  sta65     ; erhoehen
  220. 2410  lda66     ; highbyte
  221. 2420  adc#0     ; sehr umstaendlich programmiert
  222. 2430  sta66
  223. 2440  jsrramscreen ; transferroutine aufrufen
  224. 2450  rts
  225. 2460 irqneu ldav+$19 ; irq-register
  226. 2470  stav+$19  ; loeschen
  227. 2480  bmiraster ; war raster-irq
  228. 2490  lda$dc0d  ; normalen
  229. 2500  cli       ; irq zulassen
  230. 2510  jmp$ea31  ; zur systemroutine
  231. 2520 raster ldav+$12 ; rasterirq
  232. 2530  cmp#178   ; bei zeile 178
  233. 2540  bcszweiter ; ja, weiter
  234. 2550  lda53270  ; ab zeile 74
  235. 2560  and#248   ; um den wert in
  236. 2570  ora2      ; speicherzelle 2
  237. 2580  sta53270  ; nach links scrollen (smooth)
  238. 2590  lda#5     ; rahmenfarbe
  239. 2600  sta53280  ; gruen
  240. 2610  lda#178   ; naechsten irq bei zeile 178
  241. 2620  sta$d012
  242. 2630  jmp$febc  ; irq fertig
  243. 2640 zweiter lda53270 ; bildschirm ab
  244. 2650  and#248   ; zeile 178
  245. 2660  ora#7     ; normal schalten
  246. 2670  sta53270
  247. 2680  lda#0     ; schwarz
  248. 2690  sta53280  ; rahmenfarbe
  249. 2700  ldagame   ; spielstand
  250. 2710  bnegame1  ; null - nein, dann weiter
  251. 2720  jsrwarten
  252. 2730  jmpexit
  253. 2740 game1 cmp#1
  254. 2750  bnegame2  ; ungleich 1
  255. 2760  jsrscroll ; scrollen
  256. 2770  jsranimation ; sprite
  257. 2780  jsrjoyab  ; joyst. abfragen
  258. 2790  lda53279  ; sprite-hintergrund kollision
  259. 2800  beqnoboing ; kein zusammenstoss
  260. 2810  incgame   ; sonst vermerken
  261. 2820 noboing jmpexit ; fertig
  262. 2830 game2 cmp#2 ; gleich 2
  263. 2840  bnegame3  ; immer noch nicht richtig
  264. 2850  jsrboing  ; zusammenstoss ausgeben
  265. 2860  jmpexit
  266. 2870 game3 cmp#3
  267. 2880  bneexit   ; auch nicht 3, dann ende
  268. 2890  jsrover   ; spielende
  269. 2900 exit lda#74 ; naechster rasterirq
  270. 2910  stav+$12  ; bei zeile 74
  271. 2920  jmp$febc  ; irq beenden
  272.