home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
90xx
/
9001a.d64
/
q_hprg
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
8KB
|
362 lines
1 ; +++++++++++++++++++++++++++++
2 ; + +
3 ; + --- THE CHAR-KILLER --- +
4 ; + +
5 ; + (C) 9/89 BY ALEX GEVATTER +
6 ; + +
7 ; +++++++++++++++++++++++++++++
8 ; + +
9 ; + TEILPRG.: HAUPTPROGRAMM +
10 ; + SPEICHERBEL.: 40192-40930 +
11 ; + QUELLTEXT FUER: +
12 ; + KINGSOFT POWER ASSEMBLER +
13 ; + +
14 ; +++++++++++++++++++++++++++++
15 ;
16 *=40192 ;STARTADRESSE
17 &=49152
18 ;
19 VIC =53248 ;LABELS DEFI-
20 SID =54272 ;NIEREN
21 BILD.L =253
22 BILD.H =254
23 ANFANG =40950
24 INT.L =ANFANG
25 INT.H =ANFANG+1
26 AN =ANFANG+2
27 ZAEH.L =ANFANG+3
28 ZAEH.H =ANFANG+4
29 ZUF =ANFANG+5
30 ZEILE =ANFANG+6
31 SPR.Z =ANFANG+7
32 SPALTE =ANFANG+8
33 LOE.Z =ANFANG+9
34 ;
35 LDA #0 ;PROGRAMM VOR
36 STA 55 ;UEBERSCHREI-
37 LDA #157 ;BEN SCHUETZEN
38 STA 56
39 ;
40 LDX #0 ;SPRITEDATEN
41 LOOP.1 LDA SPRITE,X ;"SPRITE" IN
42 STA 896,X ;SPRITE-BLOCKS
43 STA 960,X ;14 U. 15
44 INX ;KOPIEREN
45 CPX #63
46 BNE LOOP.1
47 LDA #255
48 STA 896+22
49 STA 896+25
50 STA 896+28
51 STA 896+31
52 ;
53 LDX #0 ;TEXT AUS TA-
54 LOOP.2 LDA TEXT,X ;BELLE "TEXT"
55 JSR $FFD2 ;AUSGEBEN
56 INX
57 CPX #19
58 BNE LOOP.2
59 ;
60 LDX #10 ;ZWISCHENSPEI-
61 LDA #0 ;CHER LOESCHEN
62 LOOP.3 STA ANFANG-1,X
63 DEX
64 BNE LOOP.3
65 ;
66 LDA #8 ;VIC-GRUND-
67 STA VIC+14 ;EINSTELLUNGEN
68 LDA VIC+16
69 AND #127
70 STA VIC+16
71 LDA VIC+21
72 ORA #128
73 STA VIC+21
74 LDA VIC+23
75 AND #127
76 STA VIC+23
77 LDA VIC+27
78 AND #127
79 STA VIC+27
80 LDA VIC+28
81 AND #127
82 STA VIC+28
83 LDA VIC+29
84 AND #127
85 STA VIC+29
86 LDA #7
87 STA VIC+46
88 LDA #14
89 STA 2047
90 ;
91 LDA #15 ;SID-GRUND-
92 STA SID+24 ;EINSTELLUNGEN
93 LDA #130
94 STA SID+14
95 LDA #8
96 STA SID+15
97 LDA #128
98 STA SID+18
99 LDA #0
100 STA SID+19
101 LDA #240
102 STA SID+20
103 ;
104 LDX #9 ;CBM80 AB
105 LOOP.4 DEX ;32768 SCHREI-
106 LDA CBM80,X ;BEN (RESET-
107 STA 32768,X ;SCHUTZ
108 BNE LOOP.4
109 ;
110 LDA #<REST. ;RESTORE AUF
111 STA 792 ;EIGENE ROU-
112 LDA #>REST. ;TINE EINSTEL-
113 STA 793 ;LEN
114 ;
115 LDA 788 ;ALTEN IRQ-
116 STA INT.L ;VEKTOR IN
117 LDA 789 ;INT.L + INT.H
118 STA INT.H ;SPEICHERN
119 SEI ;IRQ AUF
120 LDA #<INTER ;EIGENE ROU-
121 STA 788 ;TINE STELLEN
122 LDA #>INTER
123 STA 789
124 CLI
125 ;
126 RTS ;ZURUECK ZUM
127 ; ;BASIC
128 ;
129 ; *** EIGENE RESTORE-ROUTINE ***
130 ;
131 REST. PHA ;DIE NORMALE
132 TXA ;RESTORE-ROU-
133 PHA ;TINE WIRD
134 TYA ;AUSGEFUEHRT,
135 PHA ;NUR DAS ZU-
136 LDA #$7F ;RUECKSETZEN
137 STA $DD0D ;DES INTER-
138 LDY $DD0D ;RUPTS WIRD
139 BMI SPR.1 ;AUSGELASSEN
140 JSR $F6BC
141 JSR $FFE1
142 BNE SPR.1
143 JSR $FDA3
144 JSR $E518
145 JMP ($A002)
146 SPR.1 JMP $FE72
147 ;
148 ; *** EIGENE RESET-ROUTINE ***
149 ;
150 RESET STX $D016 ;DIE NORMALE
151 JSR $FDA3 ;RESET-ROUTINE
152 JSR $FD50 ;WIRD AUSGE-
153 JSR $FF8A ;FUEHRT, ZU
154 JSR $FF5B ;SAETZLICH
155 CLI ;WIRD NOCH
156 JSR $E453 ;DER CHAR-KIL-
157 JSR $E3BF ;LER AKTIVIERT
158 JSR $E422
159 LDA #71
160 STA 792
161 LDA #254
162 STA 793
163 JSR 40192
164 JMP $E386
165 ;
166 ;*** EIGENE INTERRUPT-ROUTINE ***
167 ;
168 INTER LDA VIC+21 ;WENN EIN
169 BNE SPR.2 ;RESTORE AUS-
170 SEI ;GEFUEHRT
171 LDA INT.L ;WURDE, MUSS
172 STA 788 ;DER CHAR-KIL-
173 LDA INT.H ;LER NEU INIT-
174 STA 789 ;IALISIERT
175 CLI ;WERDEN
176 JSR 40192
177 ;
178 SPR.2 LDA AN ;CHAR-KILLER
179 BNE LAEUFT ;AN=NACH
180 ; ;LAEUFT SPRIN.
181 ;
182 INC ZAEH.L ;WARTESCHLEIFE
183 LDA ZAEH.L ;(LO/HI-ZAEH-
184 BNE SPR.3 ;LER)
185 ;
186 LDA ZAEH.H
187 CMP ZUF
188 BCS ERSTAN
189 INC ZAEH.H
190 SPR.3 JMP (INT.L)
191 ;
192 ERSTAN INC AN ;DIE VORBEREI-
193 LDA 204 ;TUNGEN FUER
194 BEQ SPR.4 ;DAS AUFTAU-
195 ; ;CHEN DES
196 JSR ZUFALL ;CHAR-KILLERS
197 LDA ZUF ;WERDEN GE-
198 STA ZEILE ;TROFFEN,
199 JMP SPR.5 ;D.H. DIE Y-
200 ; ;POSITION FUER
201 SPR.4 LDA 214 ;DAS SPRITE
202 STA ZEILE ;SOWIE DIE
203 ; ;ANFANGSADRES-
204 SPR.5 ASL ;SE DER ENT-
205 ASL ;SPRECHENDEN
206 ASL ;ZEILE IM
207 CLC ;BILDSCHIRM-
208 ADC #45 ;SPEICHER WER-
209 STA VIC+15 ;DEN BERECHNET
210 ;
211 LDA #<1024
212 STA BILD.L
213 LDA #>1024
214 STA BILD.H
215 LDX #40
216 LOOP.5 CLC
217 LDA BILD.L
218 ADC ZEILE
219 STA BILD.L
220 LDA BILD.H
221 ADC #0
222 STA BILD.H
223 DEX
224 BNE LOOP.5
225 ;
226 JMP (INT.L)
227 ;
228 LAEUFT INC SPR.Z ;DAS "MAUL"
229 LDA SPR.Z ;DES CHAR-KIL-
230 CMP #5 ;LERS WIRD GE-
231 BNE SPR.7 ;OEFFNET UND
232 ; ;GESCHLOSSEN
233 LDA #0 ;UND DAS
234 STA SPR.Z ;FRESSGE-
235 LDA 2047 ;RAEUSCH ER-
236 CMP #15 ;ZEUGT
237 BEQ SPR.6
238 INC 2047
239 LDA #128
240 STA SID+18
241 JMP SPR.7
242 ;
243 SPR.6 DEC 2047
244 LDA #129
245 STA SID+18
246 ;
247 SPR.7 LDA VIC+16 ;BEWEGUNG DES
248 AND #128 ;SPRITES
249 BNE SPR.9
250 LDA VIC+14
251 CMP #255
252 BEQ SPR.8
253 JMP SPR.10
254 SPR.8 LDA VIC+16
255 ORA #128
256 STA VIC+16
257 SPR.9 LDA VIC+14
258 CMP #82
259 BEQ ENDE
260 SPR.10 INC VIC+14
261 LDA VIC+16 ;UEBERPRUEFEN,
262 AND #128 ;OB DAS LOE-
263 BNE SPR.11 ;SCHEN EINES
264 LDA VIC+14 ;ZEICHENS
265 CMP #10 ;NOETIG IST
266 BCC SPR.12
267 ;
268 SPR.11 LDA SPALTE
269 CMP #40
270 BEQ SPR.12
271 INC LOE.Z
272 LDA LOE.Z
273 CMP #8
274 BEQ SPR.13
275 SPR.12 JMP (INT.L)
276 ;
277 SPR.13 LDA #0 ;ES WIRD
278 STA LOE.Z ;UEBERPRUEFT,
279 LDA 204 ;OB DIE X- UND
280 BNE SPR.15 ;Y-POSITION
281 ; ;DES CURSORS
282 LDA 214 ;UND DIE DES
283 CMP ZEILE ;ZU LOESCHEN-
284 BNE SPR.15 ;DEN ZEICHENS
285 LDA 211 ;UEBEREINSTIM-
286 DEC ;MEN. IST DIES
287 CMP SPALTE ;SO, MUSS DER
288 BEQ SPR.14 ;CURSOR KURZ
289 LDA 213 ;AUSGESCHALTET
290 CMP #39 ;WERDEN
291 BEQ SPR.15
292 LDA 211
293 CMP #40
294 BCC SPR.15
295 LDA 211
296 DEC
297 SEC
298 SBC #40
299 CMP SPALTE
300 BNE SPR.15
301 ;
302 SPR.14 LDA #0
303 STA 207
304 INC
305 STA 204
306 ;
307 SPR.15 LDA #32 ;LOESCHEN DES
308 LDY SPALTE ;ZEICHENS
309 STA (BILD.L),Y
310 INC SPALTE
311 JMP (INT.L)
312 ;
313 ENDE LDA #0 ;DER CHAR-KIL-
314 STA AN ;LER HAT DEN
315 STA SPALTE ;RECHTEN RAND
316 STA ZAEH.H ;ERREICHT UND
317 STA LOE.Z ;WIRD ABGE-
318 LDA #8 ;SCHALTET
319 STA VIC+14
320 LDA VIC+16
321 AND #127
322 STA VIC+16
323 LDA #128
324 STA SID+18
325 JSR ZUFALL
326 LDA ZUF
327 LSR
328 LSR
329 STA ZUF
330 JMP (INT.L)
331 ;
332 ZUFALL LDA SID+27 ;UNTERROUTINE
333 STA ZUF ;ZUR BERECH-
334 CMP #250 ;NUNG EINER
335 BCS ZUFALL ;ZUFALLSZAHL
336 LDX #0 ;ZWISCHEN 0
337 LOOP.6 LDA ZUF ;UND 24
338 CMP #10
339 BCC SPR.16
340 SEC
341 LDA ZUF
342 SBC #10
343 STA ZUF
344 INX
345 JMP LOOP.6
346 SPR.16 STX ZUF
347 RTS
348 ;
349 SPRITE .0,0,0,0,0,0,0,0,0,0,0,0,0
350 .120,0,0,252,0,1,254,0,3
351 .240,0,3,224,0,3,224,0,3
352 .248,0,1,254,0,0,252,0,0
353 .120,0,0,0,0,0,0,0,0,0,0
354 .0,0,0,0,0,0,0,0,0,0,0,0
355 ;
356 TEXT .17,"READY. (TO KILL!)",145
357 ;
358 CBM80 .235,157,20,158,195,194,205
359 .56,48
360 ;
361 ; --- ENDE ---