home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1990 January / 64er_Magazin_90-01_1990_Markt__Technik_de_Side_A.d64 / q_hprg (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  8KB  |  362 lines

  1. 1  ;  +++++++++++++++++++++++++++++
  2. 2  ;  +                           +
  3. 3  ;  +  --- the char-killer ---  +
  4. 4  ;  +                           +
  5. 5  ;  + (c) 9/89 by alex gevatter +
  6. 6  ;  +                           +
  7. 7  ;  +++++++++++++++++++++++++++++
  8. 8  ;  +                           +
  9. 9  ;  +  teilprg.: hauptprogramm  +
  10. 10  ;  + speicherbel.: 40192-40930 +
  11. 11  ;  +      quelltext fuer:      +
  12. 12  ;  + kingsoft  power assembler +
  13. 13  ;  +                           +
  14. 14  ;  +++++++++++++++++++++++++++++
  15. 15  ;
  16. 16  *=40192      ;startadresse
  17. 17  &=49152
  18. 18  ;
  19. 19  vic    =53248       ;labels defi-
  20. 20  sid    =54272       ;nieren
  21. 21  bild.l =253
  22. 22  bild.h =254
  23. 23  anfang =40950
  24. 24  int.l  =anfang
  25. 25  int.h  =anfang+1
  26. 26  an     =anfang+2
  27. 27  zaeh.l =anfang+3
  28. 28  zaeh.h =anfang+4
  29. 29  zuf    =anfang+5
  30. 30  zeile  =anfang+6
  31. 31  spr.z  =anfang+7
  32. 32  spalte =anfang+8
  33. 33  loe.z  =anfang+9
  34. 34  ;
  35. 35  lda #0       ;programm vor
  36. 36  sta 55       ;ueberschrei-
  37. 37  lda #157     ;ben schuetzen
  38. 38  sta 56
  39. 39  ;
  40. 40  ldx #0       ;spritedaten
  41. 41  loop.1 lda sprite,x ;"sprite" in
  42. 42  sta 896,x    ;sprite-blocks
  43. 43  sta 960,x    ;14 u. 15
  44. 44  inx          ;kopieren
  45. 45  cpx #63
  46. 46  bne loop.1
  47. 47  lda #255
  48. 48  sta 896+22
  49. 49  sta 896+25
  50. 50  sta 896+28
  51. 51  sta 896+31
  52. 52  ;
  53. 53  ldx #0       ;text aus ta-
  54. 54  loop.2 lda text,x   ;belle "text"
  55. 55  jsr $ffd2    ;ausgeben
  56. 56  inx
  57. 57  cpx #19
  58. 58  bne loop.2
  59. 59  ;
  60. 60  ldx #10      ;zwischenspei-
  61. 61  lda #0       ;cher loeschen
  62. 62  loop.3 sta anfang-1,x
  63. 63  dex
  64. 64  bne loop.3
  65. 65  ;
  66. 66  lda #8       ;vic-grund-
  67. 67  sta vic+14   ;einstellungen
  68. 68  lda vic+16
  69. 69  and #127
  70. 70  sta vic+16
  71. 71  lda vic+21
  72. 72  ora #128
  73. 73  sta vic+21
  74. 74  lda vic+23
  75. 75  and #127
  76. 76  sta vic+23
  77. 77  lda vic+27
  78. 78  and #127
  79. 79  sta vic+27
  80. 80  lda vic+28
  81. 81  and #127
  82. 82  sta vic+28
  83. 83  lda vic+29
  84. 84  and #127
  85. 85  sta vic+29
  86. 86  lda #7
  87. 87  sta vic+46
  88. 88  lda #14
  89. 89  sta 2047
  90. 90  ;
  91. 91  lda #15      ;sid-grund-
  92. 92  sta sid+24   ;einstellungen
  93. 93  lda #130
  94. 94  sta sid+14
  95. 95  lda #8
  96. 96  sta sid+15
  97. 97  lda #128
  98. 98  sta sid+18
  99. 99  lda #0
  100. 100  sta sid+19
  101. 101  lda #240
  102. 102  sta sid+20
  103. 103  ;
  104. 104  ldx #9       ;cbm80 ab
  105. 105  loop.4 dex          ;32768 schrei-
  106. 106  lda cbm80,x  ;ben (reset-
  107. 107  sta 32768,x  ;schutz
  108. 108  bne loop.4
  109. 109  ;
  110. 110  lda #<rest.  ;restore auf
  111. 111  sta 792      ;eigene rou-
  112. 112  lda #>rest.  ;tine einstel-
  113. 113  sta 793      ;len
  114. 114  ;
  115. 115  lda 788      ;alten irq-
  116. 116  sta int.l    ;vektor in
  117. 117  lda 789      ;int.l + int.h
  118. 118  sta int.h    ;speichern
  119. 119  sei          ;irq auf
  120. 120  lda #<inter  ;eigene rou-
  121. 121  sta 788      ;tine stellen
  122. 122  lda #>inter
  123. 123  sta 789
  124. 124  cli
  125. 125  ;
  126. 126  rts          ;zurueck zum
  127. 127  ;                   ;basic
  128. 128  ;
  129. 129  ; *** eigene  restore-routine ***
  130. 130  ;
  131. 131  rest.  pha          ;die normale
  132. 132  txa          ;restore-rou-
  133. 133  pha          ;tine wird
  134. 134  tya          ;ausgefuehrt,
  135. 135  pha          ;nur das zu-
  136. 136  lda #$7f     ;ruecksetzen
  137. 137  sta $dd0d    ;des inter-
  138. 138  ldy $dd0d    ;rupts wird
  139. 139  bmi spr.1    ;ausgelassen
  140. 140  jsr $f6bc
  141. 141  jsr $ffe1
  142. 142  bne spr.1
  143. 143  jsr $fda3
  144. 144  jsr $e518
  145. 145  jmp ($a002)
  146. 146  spr.1  jmp $fe72
  147. 147  ;
  148. 148  ;  *** eigene  reset-routine ***
  149. 149  ;
  150. 150  reset  stx $d016    ;die normale
  151. 151  jsr $fda3    ;reset-routine
  152. 152  jsr $fd50    ;wird ausge-
  153. 153  jsr $ff8a    ;fuehrt, zu
  154. 154  jsr $ff5b    ;saetzlich
  155. 155  cli          ;wird noch
  156. 156  jsr $e453    ;der char-kil-
  157. 157  jsr $e3bf    ;ler aktiviert
  158. 158  jsr $e422
  159. 159  lda #71
  160. 160  sta 792
  161. 161  lda #254
  162. 162  sta 793
  163. 163  jsr 40192
  164. 164  jmp $e386
  165. 165  ;
  166. 166  ;*** eigene  interrupt-routine ***
  167. 167  ;
  168. 168  inter  lda vic+21   ;wenn ein
  169. 169  bne spr.2    ;restore aus-
  170. 170  sei          ;gefuehrt
  171. 171  lda int.l    ;wurde, muss
  172. 172  sta 788      ;der char-kil-
  173. 173  lda int.h    ;ler neu init-
  174. 174  sta 789      ;ialisiert
  175. 175  cli          ;werden
  176. 176  jsr 40192
  177. 177  ;
  178. 178  spr.2  lda an       ;char-killer
  179. 179  bne laeuft   ;an=nach
  180. 180  ;                   ;laeuft sprin.
  181. 181  ;
  182. 182  inc zaeh.l   ;warteschleife
  183. 183  lda zaeh.l   ;(lo/hi-zaeh-
  184. 184  bne spr.3    ;ler)
  185. 185  ;
  186. 186  lda zaeh.h
  187. 187  cmp zuf
  188. 188  bcs erstan
  189. 189  inc zaeh.h
  190. 190  spr.3  jmp (int.l)
  191. 191  ;
  192. 192  erstan inc an       ;die vorberei-
  193. 193  lda 204      ;tungen fuer
  194. 194  beq spr.4    ;das auftau-
  195. 195  ;                   ;chen des
  196. 196  jsr zufall   ;char-killers
  197. 197  lda zuf      ;werden ge-
  198. 198  sta zeile    ;troffen,
  199. 199  jmp spr.5    ;d.h. die y-
  200. 200  ;                   ;position fuer
  201. 201  spr.4  lda 214      ;das sprite
  202. 202  sta zeile    ;sowie die
  203. 203  ;                   ;anfangsadres-
  204. 204  spr.5  asl          ;se der ent-
  205. 205  asl          ;sprechenden
  206. 206  asl          ;zeile im
  207. 207  clc          ;bildschirm-
  208. 208  adc #45      ;speicher wer-
  209. 209  sta vic+15   ;den berechnet
  210. 210  ;
  211. 211  lda #<1024
  212. 212  sta bild.l
  213. 213  lda #>1024
  214. 214  sta bild.h
  215. 215  ldx #40
  216. 216  loop.5 clc
  217. 217  lda bild.l
  218. 218  adc zeile
  219. 219  sta bild.l
  220. 220  lda bild.h
  221. 221  adc #0
  222. 222  sta bild.h
  223. 223  dex
  224. 224  bne loop.5
  225. 225  ;
  226. 226  jmp (int.l)
  227. 227  ;
  228. 228  laeuft inc spr.z    ;das "maul"
  229. 229  lda spr.z    ;des char-kil-
  230. 230  cmp #5       ;lers wird ge-
  231. 231  bne spr.7    ;oeffnet und
  232. 232  ;                   ;geschlossen
  233. 233  lda #0       ;und das
  234. 234  sta spr.z    ;fressge-
  235. 235  lda 2047     ;raeusch er-
  236. 236  cmp #15      ;zeugt
  237. 237  beq spr.6
  238. 238  inc 2047
  239. 239  lda #128
  240. 240  sta sid+18
  241. 241  jmp spr.7
  242. 242  ;
  243. 243  spr.6  dec 2047
  244. 244  lda #129
  245. 245  sta sid+18
  246. 246  ;
  247. 247  spr.7  lda vic+16   ;bewegung des
  248. 248  and #128     ;sprites
  249. 249  bne spr.9
  250. 250  lda vic+14
  251. 251  cmp #255
  252. 252  beq spr.8
  253. 253  jmp spr.10
  254. 254  spr.8  lda vic+16
  255. 255  ora #128
  256. 256  sta vic+16
  257. 257  spr.9  lda vic+14
  258. 258  cmp #82
  259. 259  beq ende
  260. 260  spr.10 inc vic+14
  261. 261  lda vic+16   ;ueberpruefen,
  262. 262  and #128     ;ob das loe-
  263. 263  bne spr.11   ;schen eines
  264. 264  lda vic+14   ;zeichens
  265. 265  cmp #10      ;noetig ist
  266. 266  bcc spr.12
  267. 267  ;
  268. 268  spr.11 lda spalte
  269. 269  cmp #40
  270. 270  beq spr.12
  271. 271  inc loe.z
  272. 272  lda loe.z
  273. 273  cmp #8
  274. 274  beq spr.13
  275. 275  spr.12 jmp (int.l)
  276. 276  ;
  277. 277  spr.13 lda #0       ;es wird
  278. 278  sta loe.z    ;ueberprueft,
  279. 279  lda 204      ;ob die x- und
  280. 280  bne spr.15   ;y-position
  281. 281  ;                   ;des cursors
  282. 282  lda 214      ;und die des
  283. 283  cmp zeile    ;zu loeschen-
  284. 284  bne spr.15   ;den zeichens
  285. 285  lda 211      ;uebereinstim-
  286. 286  dec          ;men. ist dies
  287. 287  cmp spalte   ;so, muss der
  288. 288  beq spr.14   ;cursor kurz
  289. 289  lda 213      ;ausgeschaltet
  290. 290  cmp #39      ;werden
  291. 291  beq spr.15
  292. 292  lda 211
  293. 293  cmp #40
  294. 294  bcc spr.15
  295. 295  lda 211
  296. 296  dec
  297. 297  sec
  298. 298  sbc #40
  299. 299  cmp spalte
  300. 300  bne spr.15
  301. 301  ;
  302. 302  spr.14 lda #0
  303. 303  sta 207
  304. 304  inc
  305. 305  sta 204
  306. 306  ;
  307. 307  spr.15 lda #32      ;loeschen des
  308. 308  ldy spalte   ;zeichens
  309. 309  sta (bild.l),y
  310. 310  inc spalte
  311. 311  jmp (int.l)
  312. 312  ;
  313. 313  ende   lda #0       ;der char-kil-
  314. 314  sta an       ;ler hat den
  315. 315  sta spalte   ;rechten rand
  316. 316  sta zaeh.h   ;erreicht und
  317. 317  sta loe.z    ;wird abge-
  318. 318  lda #8       ;schaltet
  319. 319  sta vic+14
  320. 320  lda vic+16
  321. 321  and #127
  322. 322  sta vic+16
  323. 323  lda #128
  324. 324  sta sid+18
  325. 325  jsr zufall
  326. 326  lda zuf
  327. 327  lsr
  328. 328  lsr
  329. 329  sta zuf
  330. 330  jmp (int.l)
  331. 331  ;
  332. 332  zufall lda sid+27   ;unterroutine
  333. 333  sta zuf      ;zur berech-
  334. 334  cmp #250     ;nung einer
  335. 335  bcs zufall   ;zufallszahl
  336. 336  ldx #0       ;zwischen 0
  337. 337  loop.6 lda zuf      ;und 24
  338. 338  cmp #10
  339. 339  bcc spr.16
  340. 340  sec
  341. 341  lda zuf
  342. 342  sbc #10
  343. 343  sta zuf
  344. 344  inx
  345. 345  jmp loop.6
  346. 346  spr.16 stx zuf
  347. 347  rts
  348. 348  ;
  349. 349  sprite .0,0,0,0,0,0,0,0,0,0,0,0,0
  350. 350  .120,0,0,252,0,1,254,0,3
  351. 351  .240,0,3,224,0,3,224,0,3
  352. 352  .248,0,1,254,0,0,252,0,0
  353. 353  .120,0,0,0,0,0,0,0,0,0,0
  354. 354  .0,0,0,0,0,0,0,0,0,0,0,0
  355. 355  ;
  356. 356  text   .17,"ready. (to kill!)",145
  357. 357  ;
  358. 358  cbm80  .235,157,20,158,195,194,205
  359. 359  .56,48
  360. 360  ;
  361. 361  ;          --- ende ---
  362.