100 REM Ins{nt av 4868 101 ! ********************************************************************** 102 ! Program SUPERMSK.802 Utg}va 2.16 1984-07-15 103 ! av The Cool Programmer 104 ! Ins{nd av 4868 105 ! F|r ABC802, med l}ggrafik, med ASCII-grafik 106 ! Testad p} ABC802 107 ! 108 ! Screened by --"-TCP-"-- 109 ! ********************************************************************** 110 ! 111 ! 112 EXTEND 113 INTEGER 114 DIM Rekord$(10),Fart(10),Rekord(10),Datum$(10) 115 Ut$=CUR(21,5)+SPACE$(150)+CUR(21,5)+YEL+"Tryck p} RETURN f|r de markerade svaren"+CUR(22,5)+YEL 116 PRINT CHR$(12) 117 RANDOMIZE 118 WIDTH 80 119 ; CHR$(12) 120 ON ERROR GOTO 122 121 IF VAL(MID$(TIME$,3,2))<0 OR VAL(MID$(TIME$,3,2))>88 THEN 122 ELSE 136 122 ON ERROR GOTO 122 : INPUT "]R (2 siffror) ";]r : IF ]r<1 OR ]r>99 THEN 122 123 ON ERROR GOTO 123 : INPUT "M}nad ";M}nad : IF M}nad<1 OR M}nad>12 THEN 123 124 ON ERROR GOTO 124 : INPUT "Datum ";Dag : IF Dag<1 THEN 124 125 ON ERROR GOTO 126 IF ]r/4.=INT(]r/4.) AND M}nad=2 THEN Dagar=29 : Namn$="Februari" : GOTO 131 127 RESTORE 128 FOR I=1 TO M}nad 129 READ Dagar,Namn$ 130 NEXT I 131 IF Dag<=Dagar THEN 133 132 PRINT : PRINT "Det finns bara" Dagar "dagar i " Namn$ ".." : GOTO 124 133 POKE -17,]r,M}nad,Dag 134 DATA 31,Januari,28,Februari,31,Mars,30,April,31,Maj,30,Juni 135 DATA 31,Juli,31,Augusti,30,September,31,Oktober,30,November,31,December 136 ! KOLLA OM PUNKT D[R MASKEN S[TTS UT ! 137 DEF FNDot(R,K) LOCAL R,K 138 IF PEEK(30720+(R*80)+K*2)=32 THEN RETURN 0 ELSE RETURN -1 139 FNEND 140 ! INFO 141 PRINT CHR$(12) TAB(30) "MASKEN" 142 PRINT : PRINT : PRINT "I det h{r spelet {r din uppgift att styra en hungrig mask " 143 PRINT "p} jakt efter n}got {tbart!" 144 PRINT : PRINT "Du styr }t v{nster med tangenten A" 145 PRINT "och }t h|ger med tangenten [" 146 PRINT : PRINT "En liten hake: Du styr fr}n maskens huvud sett..." 147 PRINT : PRINT "och ett tips: Du sparar tid genom att anv{nda genv{gen" 148 PRINT " genom M\RKRETS BONING!" 149 ON ERROR GOTO 149 150 PRINT CUR(16,10) "Vill du ha hinder"; : INPUT S$ : S$=LEFT$(S$+"J",1) 151 IF S$="J" OR S$="j" THEN Hinder=1 ELSE Hinder=0 152 ON ERROR GOTO 152 153 IF INSTR(1,"JjNn",S$)=0 THEN ; TAB(11) "Ja eller Nej" : GOTO 150 154 PRINT CUR(18,10) "Tryck p} RETURN n{r du {r redo!!"; 155 GET A$ : IF A$=CHR$(13) THEN 159 156 PRINT 157 PRINT CUR(19,10) CHR$(7) "Det d{r var inte RETURN !" : GOTO 154 158 ! INITIERING ! 159 X=26 : Y=15 160 DIM M1(500),M2(500),B$=30 161 DIM S(5),T(1000),D(1000),F(10) 162 F9=75 : T8=RND*5+2 : A9=2 163 WIDTH 40 : T3=0 : P=0 : R=0 164 FOR I=1 TO 10 : P(I)=0 : NEXT I : M9=1 : P9=0 165 Antal=0 : Flag=0 ! Antal f|rkortningar & Lucka-|ppen flagga 166 ! T[ND CAPS LOCK 167 OUT 34,136 168 ! SL] AV TANGENTBORDSKLICK ! 169 OUT 34,2 170 ! SPARA GAMMAL SLUMPTALSSERIE ! 171 FOR I=65351 TO 65355 172 S(I-65351)=PEEK(I) 173 NEXT I 174 A0=A9 : IF Hinder=1 THEN A0=A0+10 175 ! H{mta rekordlista ! 176 ; CHR$(12) CUR(12,10) 'V{nta...' 177 ON ERROR GOTO 182 178 OPEN 'famehall.'+NUM$(A0) AS FILE 1 179 FOR I=1 TO 10 : INPUT #1,S$ : INPUT #1,S : INPUT #1,P(I) : INPUT #1,S$ 180 M9=I 181 NEXT I 182 ON ERROR GOTO : CLOSE 1 183 ! BLANKA SK[RM ! 184 ; CHR$(12) 185 FOR I=0 TO 23 : ; CUR(I,0);GWHT; : NEXT I 186 FOR I=1 TO 39 : ; CUR(0,I) "," CUR(23,I) ","; : NEXT I 187 FOR I=1 TO 22 : ; CUR(I,1) "" CUR(I,39) "" : NEXT I 188 PRINT CUR(13,1) " " : ; CUR(13,39) " " 189 PRINT CUR(0,1) "|" CUR(0,39) "|" 190 PRINT CUR(23,1) "/" CUR(23,39) "/"; 191 ; CUR(11,10) "OOOO\" 192 FOR I=2 TO 7 : ; CUR(12,I) "/" : ; CUR(I+3,3) "" : NEXT I 193 FOR I=4 TO 7 : ; CUR(7,I) "/" : ; CUR(10,I) "|" : NEXT I 194 PRINT CUR(5,2) "#" CUR(8,2) "W" 195 PRINT CUR(12,7) " " : FOR I=7 TO 11 : ; CUR(I,8) "" : NEXT I : ; CUR(12,8) "/" 196 ; CUR(12,7) "/" 197 ON ERROR GOTO 198 IF Hinder=0 THEN 205 199 FOR I=1 TO (7-A9)*3 200 R=INT(RND*20)+2 : K=INT(RND*34)+3 201 IF R>4 AND R<14 AND K<13 THEN 200 202 IF FNDot(R,K) THEN 200 203 PRINT CUR(R,K) "" 204 NEXT I 205 ! INITIERA STARTV[RDEN F\R ! 206 ! MASKENS KOORDINATER ! 207 FOR I=1 TO 5 : M1(I+250)=11 : M2(256-I)=9+I : NEXT I 208 B=251 : E=255 : F=0 : R=0 209 FOR D=-2000*R TO 2000 : NEXT D 210 T2=-1 : GOSUB 245 211 T3=1+T3 212 IF M1(E)=4 AND M2(E)=2 THEN PRINT CUR(5,2) "#" : ; CUR(8,2) "W" 213 IF T3=T7 THEN T7=0 : R=0 : GOSUB 317 214 IF NOT R THEN 219 215 IF R THEN 220 216 IF T3<>T(P) THEN 227 217 A=D(P) : P=P+1 218 GOTO 226 219 A=PEEK(65506) 220 IF INT(T3/100.)<>T3/100. THEN 222 221 IF Flag THEN Flag=0 : ; CUR(12,7) "/" : ; CUR(8,2) "W" ELSE Flag=1 : ; CUR(12,7) " " 222 IF R THEN 216 223 IF A=0 THEN 227 224 A=INP(34) : POKE 65506,0 225 T(P)=T3 : D(P)=A : P=P+1 226 F=(F+(A=91)-(A=65)) AND 3 227 M1(B-1)=M1(B)+(F=1)-(F=3) 228 M2(B-1)=M2(B)+(F=2)-(F=0) 229 IF M2(B-1)=40 THEN M2(B-1)=1 : GOSUB 421 : GOTO 231 230 IF M2(B-1)<1 THEN M2(B-1)=39 : GOSUB 421 231 W=M1(B-1) : Z=M2(B-1) 232 IF (W=Y) AND (Z=X OR Z=X+1) THEN GOSUB 246 : GOTO 232 233 IF W=8 AND Z=2 THEN GOSUB 392 234 IF FNDot(W,Z) THEN 259 235 IF W=13 THEN 237 236 IF W<1 OR W>22 OR Z<2 OR Z>38 THEN 259 237 ; CUR(M1(B),M2(B));"O"; 238 ; CUR(M1(B-1),M2(B-1));"\"; 239 IF RND>.1 THEN PRINT CUR(M1(E),M2(E)) " " : E=E-1 240 IF E=-1 THEN E=499 241 B=B-1 242 IF B=0 THEN M1(500)=M1(0) : M2(500)=M2(0) : B=500 243 FOR D.=-F9*R TO F9 : NEXT D. 244 GOTO 211 245 ! Tr{ff p} m}let ! 246 A=0 : T2=T2+1 247 IF T2
=P(I) THEN P9=I : GOTO 250 249 NEXT I 250 PRINT CUR(8,3);WHT; : ; USING "###" ABS(P9); : ; GWHT; 251 PRINT CUR(9,3);WHT; : ; USING "###" ABS(T2); : ; GWHT; 252 POKE 64512,T2,SWAP%(T2) 253 PRINT CUR(Y,X) " " 254 X=RND*35+3 : Y=RND*22+1 255 IF Y>6 AND Y<13 AND X<13 THEN 254 256 IF FNDot(Y,X) OR FNDot(Y,X+1) THEN 254 257 ; CUR(Y,X) "ff" 258 RETURN 259 ! Nu {r det slut ! 260 WIDTH 80 261 FOR Delay.=1 TO 2000 : NEXT Delay. 262 ; CHR$(12) 263 IF A8 THEN 291 264 IF R THEN 296 265 OUT 34,8 266 OUT 34,130 267 GOSUB 323 268 ; DBLE CYA "Du tr{ffade" T2 "g}nger." 269 B$=RED+"Urkasst..." 270 IF T2>2 B$=RED+"Inte riktigt bra." 271 IF T2>5 B$=RED+"Bravo..." 272 IF T2>10 B$=YEL+"Mycket bra..." 273 IF T2>25 B$=GRN+"Fenomenalt..." 274 IF T2>50 B$=CYA+"Professionellt k|rt!" 275 IF T2>100 B$=CYA+"*** FANTASTISKT! ***" 276 IF T2>150 B$=CYA+"*** OTROLIGT ***" 277 PRINT : PRINT DBLE B$ 278 PRINT 279 IF T2>80 THEN PRINT RED "Du har alla chanser att bli maskf|rarutbildare!" : GOTO 283 280 IF T2>60 THEN PRINT RED "Du borde bli maskf|rare p} heltid!" : GOTO 283 281 IF T2>20 THEN PRINT RED "Du b|r nog tr{na h}rdare..." 282 ON ERROR GOTO 282 283 PRINT Ut$+"Vill du ha en repris (Nej) "; : POKE 65506,0 : INPUT A$ 284 T7=0 285 ON ERROR GOTO 287 286 T7=T3-VAL(A$) 287 ON ERROR GOTO 288 IF T7 291 289 IF INSTR(1,"Jj",LEFT$(A$+" ",1)) 291 290 GOTO 296 291 WIDTH 40 292 FOR I=65351 TO 65355 293 POKE I,S(I-65351) 294 NEXT I 295 R=-1 : T3=0 : P=0 : GOTO 184 296 ON ERROR GOTO 296 297 PRINT Ut$+"Vill du kolla listorna (Nej) "; : POKE 65506,0 : INPUT A$ 298 IF INSTR(1,"Jj",LEFT$(A$+"N",1)) THEN GOSUB 441 299 ON ERROR GOTO 299 300 PRINT Ut$+"Vill du {ndra fart (Nej) "; : POKE 65506,0 : INPUT A$ 301 IF INSTR(1,"Jj",LEFT$(A$+" ",1)) THEN 312 302 ON ERROR GOTO 302 303 PRINT Ut$+"Vill du f|rs|ka igen (Ja) "; : POKE 65506,0 : INPUT A$ 304 IF INSTR(1,"Nn",LEFT$(A$+" ",1)) THEN 320 305 IF Hinder THEN Svar$="(Ja)" ELSE Svar$="(Nej)" 306 ON ERROR GOTO 306 307 ; Ut$+"Vill du ha hinder ";Svar$ " "; : INPUT Svar$ 308 IF LEN(Svar$)=0 THEN 311 309 Svar$=LEFT$(Svar$+"J",1) : IF INSTR(1,"JjNn",Svar$)=0 THEN ; CHR$(12) "F|rs|k igen !!" : GOTO 307 310 IF Svar$="J" OR Svar$="j" THEN Hinder=1 ELSE Hinder=0 311 GOTO 163 312 ON ERROR GOTO 312 313 PRINT CUR(21,5) SPACE$(150) CUR(22,5) YEL "Fart ( 0 , 1 , 2 , 3 , 4 eller 5 )"; : INPUT A9 314 ON ERROR GOTO 315 IF A9<6 AND A9>=0 THEN F9=(5-A9)*25 : GOTO 305 316 A8=-69 : GOTO 291 ! snusk ! 317 POKE 65506,0 318 IF PEEK(65506)=0 THEN 318 319 RETURN 320 OUT 34,8 321 OUT 34,130 322 END 323 ! CHECK HALL OF FAME ! 324 IF T2=0 THEN PRINT DBLE RED "Meningen {r att du ska tr{ffa m}len.." : GOTO 326 325 ; DBLE CYA "Du tr{ffade" T2 "g}nger." 326 N=0 : I=1 327 IF Bl{dderflag THEN 330 328 A0=A9 329 IF Hinder=1 THEN A0=10+A9 330 ON ERROR GOTO 342 331 OPEN "famehall."+NUM$(A0) AS FILE 1 332 N=0 333 WHILE N<11 334 N=N+1 335 I=N 336 INPUT #1,Rekord$(I) 337 INPUT #1,Fart(I) 338 INPUT #1,Rekord(I) 339 INPUT #1,Datum$(I) 340 WEND 341 CLOSE 1 342 IF ERRCODE=34 THEN N=N-1 343 IF Bl{dderflag=1 THEN RETURN 344 IF ERRCODE=21 THEN 357 345 FOR I=1 TO N 346 IF T2>=Rekord(I) THEN 350 347 NEXT I 348 IF T2>0 AND N<10 THEN 350 349 GOTO 378 350 ! SORT HALL OF FAME ! 351 FOR J=9 TO I STEP -1 352 Rekord(J+1)=Rekord(J) 353 Fart(J+1)=Fart(J) 354 Rekord$(J+1)=Rekord$(J) 355 Datum$(J+1)=Datum$(J) 356 NEXT J 357 ! INGEN REMMARE ALLS ! 358 ON ERROR GOTO 391 359 Rekord(I)=T2 : Fart(I)=A9 360 POKE 65506,0 361 ON ERROR GOTO 361 362 PRINT CHR$(12) : INPUT "Vad heter du ?";In$ 363 IF LEN(In$)>20 THEN PRINT "Max 20 tecken !" : GOTO 362 364 IF LEN(In$)<2 THEN 362 365 ON ERROR GOTO 391 366 J=I 367 Rekord$(I)=In$ 368 Datum$(I)=LEFT$(TIME$,10) 369 PREPARE "famehall."+NUM$(A0) AS FILE 1 370 IF N<10 THEN N=N+1 ELSE N=10 371 FOR I=1 TO N 372 PRINT #1,Rekord$(I) 373 PRINT #1,Fart(I) 374 PRINT #1,Rekord(I) 375 PRINT #1,Datum$(I) 376 NEXT I 377 CLOSE 1 378 PRINT CHR$(12) "Maskf|rarnas rekordlista "; : IF Hinder=0 THEN PRINT "(UTAN HINDER)" ELSE PRINT "(MED HINDER)" 379 PRINT : PRINT WHT "NAMN FART PO[NG DATUM" 380 PRINT CUR(3,0) STRING$(42,45) 381 FOR I=1 TO N 382 PRINT CUR(3+I,0); : IF I=J THEN PRINT FLSH; ELSE PRINT GRN; 383 PRINT Rekord$(I) 384 PRINT CUR(3+I,21) Fart(I); 385 PRINT CUR(3+I,26); : PRINT USING "###" Rekord(I) 386 PRINT CUR(3+I,31) Datum$(I) 387 NEXT I 388 PRINT STRING$(42,45) 389 J=0 390 RETURN 391 ; 'Error :' ERRCODE : STOP 392 ! KORTA AV MASK ! 393 Antal=Antal+1 : IF Antal<4 THEN 396 394 PRINT CUR(10,11) RED "Du f}r bara f|rkorta" : ; CUR(12,11) RED "Masken 3 g}nger!!" 395 FOR I9.=1 TO 3000 : NEXT I9. : Flag=0 396 IF Flag=0 THEN 419 ! Ingen '*' = CRASH ! 397 Ge=E 398 WHILE B<>E-4 399 E=E-1 400 IF E=-1 THEN E=499 : IF B=499 THEN 404 401 T5=T5+1 402 IF INT(T5/10.)=T5/10. THEN ; CUR(M1(E),M2(E)) "X" 403 WEND 404 E=Ge : T5=0 405 PRINT CUR(8,2) " " : ; CUR(5,2) " " 406 WHILE B<>E-4 407 PRINT CUR(M1(E),M2(E)) " " : E=E-1 408 IF E=-1 THEN E=499 : IF B=499 THEN 419 409 T5=T5+1 410 IF INT(T5/10.)=T5/10. THEN T2=T2+1 : POKE 64512,T2,SWAP%(T2) 411 PRINT CUR(9,3);WHT; : ; USING "###" ABS(T2); : ; GWHT; 412 IF T2
=P(I) THEN P9=I : GOTO 415 414 NEXT I 415 PRINT CUR(8,3);WHT; : ; USING "###" ABS(P9); : ; GWHT; 416 FOR I9=0 TO F9 417 NEXT I9 418 WEND 419 ! HOPP HIT ! 420 RETURN 421 ! G|m masken ! 422 ; CUR(M1(B),M2(B)) "O" 423 Ge=E 424 WHILE B<>E 425 PRINT CUR(M1(E),M2(E)) " " : E=E-1 426 IF Hinder=0 THEN PRINT CUR(10,12) "VEM SL[CKTE LJUSET" 427 IF E=-1 THEN E=499 : IF B=499 THEN 430 428 FOR D.=-F9*R TO F9 : NEXT D. 429 WEND 430 ! Masken g|md ! 431 FOR I.=1 TO 2000 : NEXT I. 432 IF Hinder=0 THEN PRINT CUR(10,11) " " 433 ; CUR(Y,X) "ff" 434 E=Ge 435 WHILE B<>E 436 M1(E)=M1(B+1) : M2(E)=M2(B+1) 437 E=E-1 : IF E=-1 THEN E=499 : IF B=499 THEN 439 438 WEND 439 E=Ge-1 440 RETURN 441 ! Bl{ddra listor ! 442 Hinderflag=Hinder : Hinder=0 443 ; CHR$(12) 444 A0=0 : Bl{dderflag=1 ! MARKERA ATT BL[DDRING P]G]R ! 445 GOSUB 327 : GOSUB 378 446 PRINT YEL "TRYCK P] PF5 F\R F\REG]ENDE LISTA" 447 PRINT YEL " PF7 F\R N[STA LISTA" 448 PRINT YEL " RETURN F\R ]TERG]NG!"; 449 GET A$ 450 IF A$=CHR$(13) THEN Hinder=Hinderflag : Bl{dderflag=0 : RETURN 451 IF A$<>CHR$(196) AND A$<>CHR$(198) THEN 449 452 IF A$=CHR$(196) THEN A0=A0-1 453 IF A$=CHR$(198) THEN A0=A0+1 454 IF A0=-1 THEN A0=15 455 IF A0=6 THEN A0=10 456 IF A0=16 THEN A0=0 457 IF A0=9 THEN A0=5 458 IF A0>9 THEN Hinder=1 ELSE Hinder=0 459 GOTO 445