This is the source code to the game "Frank N Stein" All rights belong to the author, Colin Stewart. Many thanks to Colin for granting permission to release the source code Note two major changes: 1) the variable "pi" has been changed to "pie" to allow BASin to tokenise correctly 2) A lot of expressions have too many parenthesis (). MCoder2d is fussy with the - (minus) operator, so any x-y expression has been surrounded with parenthesis. The listing is in BASin format (as it uses many control code sequences). If a line will not compile then 'edit' the line and just press ENTER. (I've had problems with line 1230) THe compiled code will not run immediately after compilation as the compiler will have destroyed data areas (particularly before 27890). The easiest workaround is to save the compiled code (use start and end address values provided by compiler), and then load it back into an existing snapshot of the game. Here is the listing: 1 REM #0 15 BORDER 0:PAPER 0:INK 7:FLASH 0:OVER 0:INVERSE 0:BRIGHT 0:CLS:BEEP 1 / 300,0:RANDOMIZE USR 53361 25 POKE 23606,155:POKE 23607,222:POKE 59197,0:POKE 53795,1:POKE 53796,0:FOR x = 23510 TO 23529:POKE x,1:NEXT x 30 POKE 59125,0:POKE 59120,12:POKE 59121,0:POKE 59122,0:POKE 59123,0:POKE 59124,0:GOTO 1600 50 CLEAR:LET num = 1:LET sc = 0:LET lev = 1:LET alev = 1:LET liv = 3 60 LET con = 9400+PEEK(59124):LET hsc = PEEK(59122)+256 * PEEK(59123):LET x$ = "\{p2}\{i4}\u\u\{i5}\i\j\i\j\{i4}\n\o\p\o":LET key = 0:LET ar = 10:LET r = 1:LET e = 0:LET d$ = " \m\n\q\r\o\p":POKE 53799,1 100 LET sp = 1:LET die = 0:CLS:LET dir = 0:LET p = 1 105 LET f$ = "QCDEFGH":LET j$ = "\c\d\e\f\g\h" 110 GOSUB 9000 115 IF PEEK(53794) = 0 THEN GOSUB 3600 118 INK 6:BRIGHT 0:PLOT 0,144:DRAW 22,0:DRAW 0,24:DRAW -22,0:DRAW 0,-24:PRINT AT 2,1;liv 130 INK 7:POKE 23659,0:PRINT AT 22,0;"SCORE 00000 HIGH 00000 LEV 000":POKE 23659,2:GOSUB 4010 140 LET s1 = 3:LET s2 = 25:LET x = 2:LET y = 3:IF PEEK(53794) = 1 THEN LET x = 19:LET y = 0:LET num = 8:LET s1 = 2:LET s2 = 29 145 POKE 23675,80:POKE 23676,220:PRINT AT s1,s2; BRIGHT 0; INK 4;"\p":INK 8:POKE 23675,78:POKE 23676,222:PRINT AT x,y;" \a";AT x+1,y;" \b" 150 FOR r = 10 TO 500 STEP 10:IF PEEK(59125) = 1 AND alev = r AND liv < 9 THEN LET liv = liv+1:FOR f = 1 TO 5:FOR d = 0 TO 7:PRINT AT 2,11; INK d;"BONUS LIFE";AT 2,1;liv:BEEP 1 / 300,d:NEXT d:NEXT f:PRINT AT 2,11; INK 7;" ";AT 2,1; INK 6;liv:GOTO 160 155 NEXT r 160 POKE 59125,0:LET p = 1:LET dir = 1:POKE 59190,0:POKE 59191,0:POKE 59192,4:POKE 59193,0:POKE 59194,0 170 GOSUB 1100 180 POKE 23675,164:POKE 23676,221 200 GOTO con 205 IF key = 0 THEN FOR j = 1 TO 100:NEXT j:GOTO 260 210 IF key <> 2 AND key <> 3 AND key <> 5 AND y >= 0 THEN GOSUB 405:POKE 23675,164:POKE 23676,221:GOSUB 1000:GOTO 260 220 IF key <> 1 AND key <> 3 AND key <> 4 AND y < 31 THEN GOSUB 505:POKE 23675,78:POKE 23676,222:GOSUB 1100:GOTO 260 230 IF key <> 1 AND key <> 2 AND key <> 5 AND p = 2 AND dir = 0 THEN LET y = y+1:GOSUB 1200:LET y = (y - 1):GOTO 260 240 IF key <> 1 AND key <> 2 AND key <> 4 AND p = 2 AND dir = 1 THEN GOSUB 1200 260 GOSUB 1400 300 GOTO 200 405 LET e = 0:IF r <> 1 THEN RETURN 410 IF ATTR(x,y) > 64 THEN RETURN 415 IF ATTR(x+1,y) > 64 THEN RETURN 420 IF ATTR(x,y) <> 7 THEN GOTO 260 425 IF ATTR(x+1,y) <> 7 THEN GOTO 260 430 RETURN 505 LET e = 1:IF r <> 1 THEN RETURN 510 IF ATTR(x+1,y+1) > 64 THEN RETURN 515 IF ATTR(x,y+1) > 64 THEN RETURN 520 IF ATTR(x,y+1) <> 7 THEN GOTO 260 525 IF ATTR(x+1,y+1) <> 7 THEN GOTO 260 530 RETURN 1000 BRIGHT 8:IF p = 5 THEN LET p = 1 1005 IF dir = 1 THEN GOSUB 2000 1020 IF p = 1 AND dir = 0 THEN PRINT AT x,y;"\a ";AT x+1,y;"\b ":LET r = 1:GOSUB 1200:LET y = (y - 1):GOSUB 1400:BEEP 1 / 500,(50 - x * 2) 1025 IF p = 1 AND dir = 1 THEN PRINT AT x,y;"\a";AT x+1,y;"\b":LET r = 1:GOSUB 1200:LET y = (y - 1):GOSUB 1400 1027 LET dir = 0 1030 IF p = 2 THEN PRINT AT x,y;"\d\c";AT x+1,y;"\f\e":LET r = 2:GOSUB 1400 1040 IF p = 3 THEN PRINT AT x,y;"\h\g";AT x+1,y;"\j\i":LET r = 3:GOSUB 1400 1050 IF p = 4 THEN PRINT AT x,y;"\l\k";AT x+1,y;"\n\m":LET r = 4:GOSUB 1400 1070 LET p = p+1 1080 RETURN 1100 BRIGHT 8:IF p = 5 THEN LET p = 1 1105 IF dir = 0 THEN GOSUB 2000 1120 IF p = 1 AND dir = 1 THEN PRINT AT x,y;" \a";AT x+1,y;" \b":LET r = 1:LET y = y+1:GOSUB 1200:GOSUB 1400:BEEP 1 / 500,(50 - x * 2) 1125 IF p = 1 AND dir = 0 THEN PRINT AT x,y+1;"\a";AT x+1,y+1;"\b":LET r = 1:LET y = y+1:GOSUB 1200:GOSUB 1400 1127 LET dir = 1 1130 IF p = 2 THEN PRINT AT x,y;"\c\d";AT x+1,y;"\e\f":LET r = 2:GOSUB 1400 1140 IF p = 3 THEN PRINT AT x,y;"\g\h";AT x+1,y;"\i\j":LET r = 3:GOSUB 1400 1150 IF p = 4 THEN PRINT AT x,y;"\k\l";AT x+1,y;"\m\n":LET r = 4:GOSUB 1400 1170 LET p = p+1 1180 RETURN 1200 LET dr = 0:POKE 59197,0:POKE 53799,1 1201 IF ATTR(x+2,y) = 20 THEN POKE 53799,5:GOSUB 3300:GOTO 1211 1202 IF ATTR(x+2,y) = 4 THEN POKE 53799,2:GOTO 1211 1203 IF ATTR(x+2,y) = 5 THEN POKE 53799,3:GOSUB 3110:GOTO 1211 1204 IF ATTR(x+2,y) = 15 THEN GOSUB 3205:GOTO 1211 1205 IF ATTR(x+2,y) = 3 THEN GOSUB 3000:GOTO 1211 1206 IF ATTR(x+2,y) = 6 THEN GOSUB 3500:GOTO 1211 1207 IF ATTR(x+1,y+1) = 4 AND num = 8 THEN GOSUB 3615 1208 IF ATTR(x+2,y) <> 2 AND ATTR(x+2,y) <> 69 THEN POKE 23402,50:POKE 23403,1:GOTO 1215 1209 IF ATTR(x+2,y) = 69 AND key <> 1 AND key <> 2 THEN POKE 23402,30:POKE 23403,1:GOTO 1215 1211 IF die = 0 THEN RETURN 1212 IF die = 1 THEN GOTO 1530 1215 LET dr = dr+1:IF die = 1 THEN GOTO 1530 1217 IF ATTR(x+2,y) > 64 AND ATTR(x+2,y) <> 69 THEN LET die = 1:GOTO 1530 1220 INK 8:BRIGHT 8:PRINT AT x,y; OVER 1;"\a";AT x+1,y;"\b";AT x,y;"\r";AT x+1,y;"\s";AT x+2,y;"\t":GOSUB 1410 1230 PRINT AT x,y; OVER 1;"\r";AT x+1,y;"\s";AT x+2,y;"\t";AT x,y;"\o";AT x+1,y;"\p";AT x+2,y;"\q":GOSUB 1410 1240 PRINT AT x,y; OVER 1;"\o";AT x+1,y;"\p";AT x+2,y;"\q";AT x+1,y;"\a";AT x+2,y;"\b" 1250 GOSUB 1410 1280 LET x = x+1:IF ATTR(x+2,y) = 69 THEN GOTO 1220 1285 IF ATTR(x+2,y) = 7 THEN GOTO 1215 1287 IF ATTR(x+2,y) > 64 AND ATTR(x+2,y) < 100 THEN LET die = 1:GOTO 1530 1290 POKE 23402,0:IF dr > 4 THEN LET die = 1:GOTO 1530 1295 GOTO 1201 1400 GOSUB 3710:RETURN 1410 POKE 59197,1:GOSUB 8010:POKE 59197,0:IF PEEK(53794) = 0 THEN GOSUB 1500 1420 RETURN 1500 IF die = 1 THEN GOTO 1530 1520 LET p1 = PEEK(23675):LET p2 = PEEK(23676):POKE 23675,68:POKE 23676,227:POKE 53798,PEEK(53798)+1:IF PEEK(53798) = 8 THEN POKE 53798,0:POKE 53797,PEEK(53797)+1:IF PEEK(53797) = 3 THEN POKE 53797,1 1522 LET k = (PEEK(53797) * 4 - 3):PRINT AT 0,28;d$(k TO k+1);AT 1,28;d$(k+2 TO k+3):POKE 23675,p1:POKE 23676,p2 1524 POKE 53796,PEEK(53796)+1:IF PEEK(53796) = 225 THEN POKE 53795,PEEK(53795)+1:PLOT INVERSE 1; INK 5; 180,161:DRAW INK 5; INVERSE 1; (PEEK(53795) - 11),10:PLOT INK 5; 180,161:DRAW INK 5; (PEEK(53795) - 10),10:POKE 53796,0:IF PEEK(53795) = 20 THEN LET die = 1:POKE 53795,0:LET num = 1 1526 IF die = 1 THEN GOTO 1530 1528 RETURN 1530 IF dr <= 4 THEN GOTO 1540 1532 POKE 23675,166:POKE 23676,219:IF e = 1 THEN PRINT AT x,y;" ";AT x+1,(y - 1);"\p\q":GOTO 1540 1535 IF e = 0 THEN PRINT AT x,y;" ";AT x+1,y;"\s\r" 1540 POKE 23403,0:FOR q = 1 TO 10:POKE 23402,(150 - q * 10):PAUSE 5:NEXT q 1550 LET liv = (liv - 1):IF liv = 0 THEN GOTO 1600 1560 GOTO 100 1600 BRIGHT 0:INK 7:LET l = USR 55464 1603 POKE 53795,0:POKE 53796,0:POKE 23675,128:POKE 23676,209:FOR x = 0 TO 28 STEP 28:PRINT AT 0,x; BRIGHT 1; INK 4;"\a\b\c\d";AT 1,x;"\e\f\g\h";AT 2,x;"\i\j\k\l";AT 3,x;"\m\n\o\p";AT 4,x;"\q\r\s\t":NEXT x 1610 PRINT AT 1,9; INK 4;"FRANK N. STEIN";AT 4,6; INK 3;"\* 1984 COLIN STEWART";AT 6,3; INK 6;"Z...LEFT X...RIGHT";AT 8,7;"SPACE.....ACTIVATE";AT 19,7;"PRESS 'S' TO START" 1620 IF sc > PEEK(59122)+256 * PEEK(59123) THEN POKE 59123,sc / 256:POKE 59122,(sc - 256 * PEEK(59123)) 1630 LET k = 3:PRINT AT 12,0; INK 3;"A..KEYBOARD/AGF B.....KEMPSTON";AT 15,0;"C.PROTEK/CURSOR D.SINCLAIR ZX2" 1632 PRINT AT PEEK(59120),PEEK(59121); INK k; OVER 1;" ":LET k = (10 - k) 1636 FOR x = 1 TO 110:IF INKEY$ = "s" THEN GOTO 1690 1640 IF INKEY$ = "a" THEN POKE 59120,12:POKE 59121,0:POKE 59124,0:GOTO 1630 1642 IF INKEY$ = "b" THEN POKE 59120,12:POKE 59121,17:POKE 59124,50:GOTO 1630 1644 IF INKEY$ = "c" THEN POKE 59120,15:POKE 59121,0:POKE 59124,100:GOSUB 1630 1646 IF INKEY$ = "d" THEN POKE 59120,15:POKE 59121,17:POKE 59124,150:GOTO 1630 1680 NEXT x:GOTO 1632 1690 POKE 23402,1:POKE 23403,0:POKE 53794,0:GOTO 50 2000 IF p = 1 THEN LET p = 2:RETURN 2010 IF p = 3 THEN LET p = 4:RETURN 2020 IF p = 2 THEN LET p = 1:RETURN 2030 IF p = 4 THEN LET p = 3:RETURN 2040 RETURN 3000 IF key <> 1 AND key <> 2 AND key <> 0 THEN POKE 23402,100:POKE 23403,0:LET key = 0:BRIGHT 8:INK 8:FOR u = 1 TO 4:GOTO 3010 3005 RETURN 3010 PRINT AT x,y; OVER 1;"\a";AT x+1,y;"\b";AT (x - 1),y;"\o";AT x,y;"\p";AT x+1,y;"\q":GOSUB 1410 3015 IF ATTR(x+1,y) >= 64 THEN LET die = 1:GOTO 1530 3020 PRINT AT (x - 1),y; OVER 1;"\o";AT x,y;"\p";AT x+1,y;"\q";AT (x - 1),y;"\r";AT x,y;"\s";AT x+1,y;"\t":GOSUB 1410 3025 IF ATTR(x+1,y) >= 64 THEN LET die = 1:GOTO 1530 3030 PRINT AT (x - 1),y; OVER 1;"\r";AT x,y;"\s";AT x+1,y;"\t";AT (x - 1),y;"\a";AT x,y;"\b":LET x = (x - 1):GOSUB 1410 3035 IF ATTR((x - 1),y) >= 64 THEN LET die = 1:GOTO 1530 3040 NEXT u:POKE 23402,0:GOSUB 1200 3050 RETURN 3110 IF PEEK(23676) = 222 THEN GOTO 3150 3120 POKE 23675,80:POKE 23676,220:POKE 23402,30:POKE 23403,0:LET y = (y - 1):PRINT AT x,y;" \a";AT x+1,y;"\c\b":LET y = (y - 1):GOSUB 1400:LET y = y+1:PRINT AT x,y;"\d\e";AT x+1,y;"\f\g":LET y = (y - 1):GOSUB 1400:LET y = y+1 3130 PRINT AT x,y;"\h\i";AT x+1,y;"\j\k":LET y = (y - 1):GOSUB 1400:LET y = y+1:PRINT AT x,y;"\l\m";AT x+1,y;"\n\o":POKE 23675,164:POKE 23676,221:PRINT AT x,y;"\a ";AT x+1,y;"\b " 3140 POKE 23402,0:GOSUB 1400:IF ATTR(x+2,y) = 5 THEN GOTO 3110 3145 GOSUB 1200:POKE 53799,1:RETURN 3150 POKE 23675,250:POKE 23676,220:POKE 23402,30:POKE 23403,0:PRINT AT x,y;"\a";AT x+1,y;"\b\c":GOSUB 1400:PRINT AT x,y;"\d\e";AT x+1,y;"\f\g":GOSUB 1400 3160 PRINT AT x,y;"\h\i";AT x+1,y;"\j\k":GOSUB 1400:PRINT AT x,y;"\l\m";AT x+1,y;"\n\o":POKE 23675,78:POKE 23676,222:PRINT AT x,y;" \a";AT x+1,y;" \b" 3170 POKE 23402,0:GOSUB 1400:LET y = y+1:IF ATTR(x+2,y) = 5 THEN GOTO 3150 3180 GOSUB 1200:POKE 53799,1:RETURN 3205 POKE 59149,0:POKE 59195,159:IF dir = 0 THEN POKE 59195,162 3210 POKE 23675,250:POKE 23676,220:FOR q = 1 TO 25:GOSUB 3270:POKE 23402,100:POKE 23403,1:PRINT AT x,y;CHR$(PEEK(59195));AT x+1,y;CHR$(PEEK(59195)+1):GOSUB 1400:PRINT AT x,y;CHR$(PEEK(59195)+2):GOSUB 1400:NEXT q:PRINT AT x+2,y; INK 2; OVER 1; PAPER 0;" ":POKE 23403,0:RETURN 3270 POKE 59149,PEEK(59149)+1:IF PEEK(59149) = 5 AND PEEK(53795) > 0 THEN POKE 53795,(PEEK(53795) - 1):PLOT INVERSE 1; INK 5; 180,161:DRAW INK 5; INVERSE 1; (PEEK(53795) - 9),10:PLOT INK 5; 180,161:DRAW INK 5; (PEEK(53795) - 10),10:POKE 59149,0 3280 RETURN 3300 LET w = 0:IF e = 0 THEN LET w = 1 3310 POKE 23402,1:POKE 23403,1:FOR h = 7 TO 0 STEP -1:PRINT AT x,y; INK h;"\a";AT x+1,y;"\b":LET y = (y - w):GOSUB 1400:LET y = y+w:FOR j = 1 TO 800:NEXT j:NEXT h:PRINT AT x,y; INK 7; BRIGHT 0;" ";AT x+1,y;" " 3315 LET y = (y - 2):IF e = 1 THEN LET y = y+4 3320 POKE 23403,0:FOR h = 0 TO 7:PRINT AT x,y; INK h;"\a";AT x+1,y;"\b":LET y = (y - w):GOSUB 1400:LET y = y+w:FOR j = 1 TO 800:NEXT j:NEXT h:POKE 53799,1:POKE 23402,0:GOSUB 1200:RETURN 3500 POKE 23606,230:POKE 23607,225:IF SCREEN$(x+2,y) = f$(num) THEN GOTO 3520 3510 POKE 23606,155:POKE 23607,222:RETURN 3520 LET sc = sc+3:POKE 23606,155:POKE 23607,222:GOSUB 4010:LET p1 = PEEK(23675):LET p2 = PEEK(23676):POKE 23675,156:POKE 23676,226:PRINT AT x+2,y; INK 2; BRIGHT 0;g$:POKE 23402,50:POKE 23403,0:LET num = num+1:GOSUB 3600:POKE 23675,p1:POKE 23676,p2:GOTO 3510 3600 POKE 23675,238:POKE 23676,227:IF num >= 2 THEN PRINT AT 2,28; INK 6; BRIGHT 1;"\a\b" 3603 LET v = 3:LET c = 28:FOR j = 3 TO 8:IF num >= j THEN PRINT AT v,c; INK 6; BRIGHT 1;j$((j - 2)) 3604 LET c = c+1:IF c = 30 THEN LET c = 28:LET v = v+1 3605 NEXT j:RETURN 3615 POKE 23675,80:POKE 23676,220:FOR x = 159 TO 162:PRINT AT s1,s2; INK 4;CHR$(x):PAUSE 5:NEXT x 3620 IF PEEK(53794) = 0 THEN POKE 57193,4:POKE 23402,112:POKE 23403,0:LET l = USR 57178:POKE 23402,0:GOTO 3630 3625 POKE 57193,5:POKE 23402,20:POKE 23403,1:LET l = USR 57186:LET sc = sc+(20 - PEEK(53795)):GOSUB 4010:POKE 23402,0:POKE 53795,0 3630 POKE 59125,1:FOR x = 1 TO 5:FOR y = 1 TO 10000:NEXT y:NEXT x:LET alev = alev+1:POKE 53796,0 3640 IF PEEK(53794) = 0 THEN LET lev = lev+1:POKE 53794,1:GOTO 3648 3644 IF PEEK(53794) = 1 THEN POKE 53794,0 3648 IF lev = 26 THEN LET lev = 1 3650 LET num = 1:GOTO 100 3710 FOR b = 1 TO PEEK(53799):GOSUB 8010:IF PEEK(53794) = 0 THEN GOSUB 1500 3720 NEXT b:RETURN 4010 POKE 23659,0:POKE 23606,155:POKE 23607,222:LET q$ = STR$ sc:LET w = LEN q$:PRINT AT 22,6+(5 - w);sc 4020 LET q$ = STR$ hsc:LET w = LEN q$:PRINT AT 22,18+(5 - w);hsc 4030 LET q$ = STR$ alev:LET w = LEN q$:PRINT AT 22,29+(3 - w);alev:POKE 23659,2:RETURN 8010 PAPER 8:BRIGHT 1:LET p1 = PEEK(23675):LET p2 = PEEK(23676):IF PEEK(53794) = 1 THEN GOSUB 8600 8030 FOR s = 0 TO 6 8040 LET a = 23296+s * 10 8050 IF PEEK(a) = 0 THEN FOR j = 1 TO 40:NEXT j:GOTO 8300 8060 POKE a,PEEK(a)+1:IF PEEK(a+1) = (PEEK(a) - 1) THEN POKE a,1:GOTO 8070 8065 GOTO 8300 8070 POKE 23675,PEEK(a+2):POKE 23676,PEEK(a+3) 8080 LET x1 = PEEK(a+5):LET y1 = PEEK(a+6):LET c1 = PEEK(a+7):LET px = 8 * x1:LET py = ((22 - y1) * 8 - 1) 8090 LET pie = PEEK(a+4):IF pie > 100 THEN GOTO 8150 8100 IF pie = 1 THEN PRINT AT y1,x1; PAPER 8; OVER 1; INK 7; BRIGHT 0;"\h\i\j";AT y1,x1+1; OVER 1; INK c1; BRIGHT 1;"\a\b" 8110 IF pie = 1 AND x1+2 >= PEEK(a+9) THEN LET v = USR "A":FOR c = 1 TO 80:POKE v,PEEK(53376+PEEK(v)):LET v = v+1:NEXT c:POKE a+4,101:POKE a+5,x1:PRINT AT y1,x1; INK c1;"\j\i\h":POKE 23509+(USR "A" / 80+147),2:GOTO 8300 8112 IF pie = 1 THEN LET x1 = x1+1:POKE a+5,PEEK(a+5)+1 8115 IF pie = 2 THEN PRINT AT y1,x1; INK 7; BRIGHT 0;" ";AT y1,x1; PAPER 8; INK c1; BRIGHT 1;"\c\d" 8120 IF pie = 3 THEN PRINT AT y1,x1; OVER 1; INK 7; BRIGHT 0;"\c\d";AT y1,x1; PAPER 8; INK c1; BRIGHT 1;"\e\f\g" 8130 IF pie = 4 THEN PRINT AT y1,x1; OVER 1; INK 7; BRIGHT 0;"\e\f\g";AT y1,x1; PAPER 8; BRIGHT 1; OVER 1; INK c1; BRIGHT 1;"\h\i\j" 8135 LET pie = pie+1:IF pie = 5 THEN LET pie = 1 8140 POKE a+4,pie:GOTO 8300 8150 IF pie = 101 THEN PRINT AT y1,x1; OVER 1; INK 7; BRIGHT 0;"\j\i\h";AT y1,x1; PAPER 8; INK c1; BRIGHT 1;"\b\a" 8160 IF pie = 102 THEN PRINT AT y1,x1; INK 7; BRIGHT 0;" ";AT y1,x1; PAPER 8; BRIGHT 1; INK c1;"\d\c" 8170 IF pie = 103 THEN PRINT AT y1,x1; OVER 1; INK 7; BRIGHT 0;"\d\c";AT y1,(x1 - 1); PAPER 8; INK c1; BRIGHT 1;"\g\f\e" 8175 IF pie = 103 THEN LET x1 = (x1 - 1):POKE a+5,x1 8180 IF pie = 104 THEN PRINT AT y1,x1; OVER 1; INK 7; BRIGHT 0;"\g\f\e";AT y1,x1; PAPER 8; INK c1; BRIGHT 1;"\j\i\h" 8190 IF pie = 104 AND x1 <= PEEK(a+8) THEN POKE a+4,1:LET v = USR "A":FOR c = 1 TO 80:POKE v,PEEK(53376+PEEK(v)):LET v = v+1:NEXT c:POKE a+5,x1:PRINT AT y1,x1; INK c1;"\h\i\j":POKE 23509+(USR "A" / 80+147),1:GOTO 8300 8200 LET pie = pie+1:IF pie >= 105 THEN LET pie = 101 8210 POKE a+4,pie 8300 NEXT s:IF PEEK(59197) = 0 THEN GOSUB 8400 8305 POKE 59197,0:POKE 23675,p1:POKE 23676,p2:BRIGHT 8:RETURN 8400 LET die = 1 8410 IF e = 0 THEN GOTO 8500 8420 IF r = 1 AND ATTR(x,y) < 64 AND ATTR(x+1,y) < 64 THEN LET die = 0 8430 IF r = 2 AND ATTR(x,y) < 64 AND ATTR(x+1,y) < 64 THEN LET die = 0 8440 IF r = 3 AND ATTR(x,y) < 64 AND ATTR(x+1,y) < 64 THEN LET die = 0 8450 IF r = 4 AND ATTR(x,y+1) < 64 AND ATTR(x+1,y+1) < 64 THEN LET die = 0 8460 GOTO 8540 8500 IF r = 1 AND ATTR(x,y+1) < 64 AND ATTR(x+1,y+1) < 64 THEN LET die = 0 8510 IF r = 2 AND ATTR(x,y+1) < 64 AND ATTR(x+1,y+1) < 64 THEN LET die = 0 8520 IF r = 3 AND ATTR(x,y+1) < 64 AND ATTR(x+1,y+1) < 64 THEN LET die = 0 8530 IF r = 4 AND ATTR(x,y) < 64 AND ATTR(x+1,y) < 64 THEN LET die = 0 8540 IF die = 1 THEN GOTO 1530 8550 RETURN 8600 POKE 23675,204:POKE 23676,216:GOSUB 8800:IF PEEK(59190) = 0 THEN GOTO 8660 8610 POKE 59191,PEEK(59191)+1:IF PEEK(59191) = 5 THEN POKE 59191,1 8620 LET bx = PEEK(59192):LET by = PEEK(59193):LET fr = PEEK(59191):IF PEEK(59190) = 2 THEN GOTO 8700 8630 IF fr = 1 THEN PRINT AT by,bx; BRIGHT 0; OVER 1;"\f\g";AT by,bx+1; BRIGHT 1;"\a":POKE 59192,PEEK(59192)+1:IF PEEK(59192) = 29 THEN POKE 59190,0:PRINT AT 0,5;"\a" 8635 IF fr = 2 THEN PRINT AT by,bx; OVER 1;"\a";AT by,bx; BRIGHT 1;"\b\c" 8640 IF fr = 3 THEN PRINT AT by,bx; OVER 1;"\b\c";AT by,bx; BRIGHT 1;"\d\e" 8645 IF fr = 4 THEN PRINT AT by,bx; BRIGHT 0; OVER 1;"\d\e";AT by,bx; BRIGHT 1;"\f\g" 8650 IF fr = 1 AND ATTR(by,bx+2) = 68 THEN POKE 59190,2:POKE 59191,0:POKE 23675,166:POKE 23676,219:PRINT AT 0,3; INK 4;"\a\b" 8660 RETURN 8700 IF fr = 1 AND ATTR(by+1,bx) > 64 THEN POKE 59191,0:GOTO 8660 8710 IF fr = 1 THEN PRINT AT by,bx; OVER 1; BRIGHT 0; INK 8;"\a";AT by,bx; BRIGHT 1;"\h";AT by+1,bx;"\i" 8720 IF fr = 2 THEN PRINT AT by,bx; OVER 1; BRIGHT 0; INK 8;"\h";AT by+1,bx;"\i";AT by,bx; BRIGHT 1;"\j";AT by+1,bx;"\k" 8730 IF fr = 3 THEN PRINT AT by,bx; OVER 1; BRIGHT 0; INK 8;"\j";AT by+1,bx;"\k";AT by,bx; BRIGHT 1;"\l";AT by+1,bx;"\m" 8740 IF fr = 4 THEN PRINT AT by,bx; OVER 1; BRIGHT 0; INK 8;"\l";AT by+1,bx;"\m";AT by+1,bx; BRIGHT 1;"\a":POKE 59193,PEEK(59193)+1:IF PEEK(59193) = 20 THEN POKE 59190,1:POKE 59191,1 8750 GOTO 8660 8800 IF PEEK(59190) <> 0 THEN RETURN 8820 LET q = RND / 1500:IF q = 1 THEN POKE 59190,1:POKE 59191,1:POKE 59192,5:POKE 59193,0:PRINT AT 0,ar; BRIGHT 0; INK 7;" ":LET ar = y+1:GOTO 8825 8822 GOTO 8660 8825 IF ar < 8 THEN LET ar = 8 8827 IF ar > 27 THEN LET ar = 27 8830 POKE 23675,166:POKE 23676,219:PRINT AT 0,3; INK 4;" \k":POKE 23675,204:POKE 23676,216:PRINT AT 0,ar; BRIGHT 1; INK 4;"\n":GOTO 8660 9000 PAPER 0:INK 7:BRIGHT 0:CLS 9005 POKE 23675,156:POKE 23676,226:LET q = 55400+2 * (lev - 1):LET pie = PEEK(q)+256 * PEEK(q+1):IF PEEK(53794) = 1 THEN LET pie = 55685 9010 LET ti = PEEK pie:LET g$ = CHR$(PEEK(pie+1)):LET pie = pie+2:LET y = pie:FOR x = 1 TO PEEK pie:LET d = PEEK(y+1):LET i = PEEK(y+2):LET l = PEEK(y+3):FOR q = i TO (i+l) - 1:PRINT AT d,q; INK 2;g$:NEXT q:LET y = y+3:NEXT x:LET pie = y 9020 LET pie = pie+1:LET w = PEEK pie:FOR y = 1 TO w:LET am = 2:LET pie = pie+1:IF PEEK pie = 1 THEN PRINT AT PEEK(pie+1),PEEK(pie+2); BRIGHT 0; INK 3;"\a" 9030 IF PEEK pie = 2 THEN PRINT AT PEEK(pie+1),PEEK(pie+2); INK 5;"\i\j" 9040 IF PEEK pie = 3 THEN PRINT AT PEEK(pie+1),PEEK(pie+2); INK 7; PAPER 1;"\t" 9050 IF PEEK pie = 4 THEN PRINT AT PEEK(pie+1),PEEK(pie+2); INK 4;"\n\o\p" 9060 IF PEEK pie = 5 THEN PRINT AT PEEK(pie+1),PEEK(pie+2); PAPER 2; INK 4;"\u" 9065 IF PEEK pie = 6 THEN LET am = 3:LET d = PEEK(pie+2):PRINT AT d,PEEK(pie+3); BRIGHT 1; INK 5;"\k":FOR s = 1 TO (PEEK(pie+1) - 2):PRINT AT d+s,PEEK(pie+3); BRIGHT 1; INK 5;"\l":NEXT s:PRINT AT d+s,PEEK(pie+3); BRIGHT 1; INK 5;"\m" 9067 IF PEEK pie = 7 THEN LET am = 3:POKE 23675,238:POKE 23676,227:LET i = PEEK(pie+3):LET d = PEEK(pie+2):FOR x = 1 TO PEEK(pie+1):PRINT AT d,(i - 1); INK 2;"\r\s":LET i = i+1:LET d = d+1:NEXT x:POKE 23675,156:POKE 23676,226 9068 IF PEEK pie = 8 THEN LET am = 3:POKE 23675,238:POKE 23676,227:LET i = PEEK(pie+3):LET d = PEEK(pie+2):FOR x = 1 TO PEEK(pie+1):PRINT AT d,i; INK 2;"\t\u":LET d = d+1:LET i = (i - 1):NEXT x:POKE 23675,156:POKE 23676,226 9070 LET pie = pie+am:NEXT y:IF PEEK(53794) = 1 THEN LET pie = pie+1:GOTO 9100 9080 POKE 23675,238:POKE 23676,227:LET pie = pie+1:LET p$ = "\q\c\d\e\f\g\h":LET ps = 23536:FOR w = 1 TO 7:PRINT AT PEEK pie,PEEK(pie+1); INK 6;p$(w):POKE ps,PEEK pie:POKE ps+1,PEEK(pie+1):LET ps = ps+2:LET pie = pie+2:NEXT w 9085 POKE 23675,156:POKE 23676,226:IF num > 1 THEN LET w = 23536:FOR v = 1 TO (num - 1):PRINT AT PEEK(w),PEEK(w+1); INK 2; BRIGHT 0;g$:LET w = w+2:NEXT v 9090 POKE 23675,68:POKE 23676,227:PRINT AT 0,25; INK 2;"\u\t";AT 1,26; INK 5;"\a \o\p \b":FOR c = 2 TO 5:PRINT AT c,26; INK 5;"\c\d \f\e":NEXT c:PRINT AT 6,26; INK 5;"\g\i\k\l\j\h";AT 3,26; INK 5;"\s" 9100 LET pq = pie:IF PEEK(53794) = 1 THEN LET pq = 57080 9102 FOR x = 23296 TO 23296+79:POKE x,0:NEXT x:LET a = 23296:FOR x = 1 TO 8:IF PEEK(pq) = 1 THEN FOR y = 1 TO 10:POKE a,PEEK(pq):LET a = a+1:LET pq = pq+1:NEXT y:NEXT x 9105 LET a = 53800:FOR x = 23510 TO 23529:IF PEEK(x) = 2 THEN LET v = a:FOR c = 1 TO 80:POKE v,PEEK(53376+PEEK(v)):LET v = v+1:NEXT c:POKE x,1 9107 LET a = a+80:NEXT x:IF PEEK(53794) = 1 THEN GOSUB 9200 9110 LET w = 23296:FOR q = 1 TO 8:POKE 23675,PEEK(w+2):POKE 23676,PEEK(w+3):IF PEEK(w+4) = 1 THEN PRINT AT PEEK(w+6),PEEK(w+5); BRIGHT 1; INK PEEK(w+7); OVER 1;"\h\i\j" 9130 LET w = w+10:NEXT q:IF PEEK(53794) = 1 THEN RETURN 9140 POKE 23675,156:POKE 23676,226:PRINT AT 4,0;"\{i2}\q\r\r\r\s";AT 4,8;"\q\r\r\r\r\r\s\q\r\r\s\q\r\r\r\r\r\s\{i7}":POKE 23675,82:POKE 23676,218:PRINT AT 0,4;"\{i6}\a\b \{i3}\m \{i2} \e\f \{i6}\o\{i4}\p \{i5}\i\j\k\{i2}\u";AT 1,4;"\{i6}\c\d \{i7}\{b1}\n\{b0} \{i2} \g\h \{i3}\q\r\r\q \{i5} \l\s\t\{i7}" 9150 INK 5:PLOT 180,161:DRAW (PEEK(53795) - 10),10:RETURN 9200 LET q = RND / 1500:IF q >= 17 THEN GOTO 9200 9210 LET x = 23298:LET a = 40+q * 80:FOR q = 1 TO 4:LET a1 = a / 256:LET a2 = (a - 256 * a1):POKE x,a2:POKE x+1,210+a1:POKE (x - 1),(PEEK(x - 1)) + 5 - PEEK(53795) / 4:LET x = x+10:LET a = a+80:NEXT q 9220 FOR x = 6 TO 21 STEP 3:LET a = RND / 1500+6 9225 LET b = RND / 3000:IF b > 0 AND b < 4 THEN GOTO 9230 9227 GOTO 9225 9230 PRINT AT x,a;x$(b * 6 - 5 TO b * 6):NEXT x 9240 FOR x = 6 TO 21 STEP 3 9250 LET a = RND / 1800+5:LET b = RND / 1800+12:IF ATTR(x,a) <> 2 THEN GOTO 9250 9255 IF ATTR(x,b) <> 2 THEN GOTO 9250 9260 PRINT AT x,a; INK 3;"\a";AT x,b;"\a":NEXT x:POKE 23675,204:POKE 23676,216:PRINT AT 0,5;"\a":POKE 23675,166:POKE 23676,219:PRINT AT 0,3; INK 4;"\a\b";AT 1,3;"\c\d";AT 2,3;"\e\f";AT 3,3;"\g\h";AT 4,3;"\i\j";AT 5,2; INK 1;"\l\m\n\o" 9270 PRINT AT 19,29; INK 3; PAPER 3; BRIGHT 1;"\::\::\::";AT 20,29;"\::\::\::":RETURN 9400 LET key = 0:LET n = USR 57130:IF n = 253 THEN LET key = 1 9410 IF n = 251 THEN LET key = 2 9420 LET n = USR 57141:IF n = 254 THEN LET z = 3:LET key = key+z 9430 GOTO 205 9450 LET key = 0:LET n = IN 31:IF n = 2 THEN LET key = 1 9460 IF n = 1 THEN LET key = 2 9470 IF n = 16 THEN LET key = 3 9480 IF n = 18 THEN LET key = 4 9490 IF n = 17 THEN LET key = 5 9495 GOTO 205 9500 LET key = 0:LET n = USR 57163:IF n = 239 THEN LET key = 1 9510 LET m = USR 57152:IF m = 251 THEN LET key = 2 9520 IF m = 254 THEN LET key = 3 9530 IF m = 250 THEN LET key = 5 9540 IF m = 254 AND n = 239 THEN LET key = 4 9545 GOTO 205 9550 LET key = 0:LET n = USR 57152:IF n = 239 THEN LET key = 1 9560 IF n = 247 THEN LET key = 2 9570 IF n = 254 THEN LET key = 3 9580 IF n = 238 THEN LET key = 4 9590 IF n = 246 THEN LET key = 5 9595 GOTO 205