--- title: "Pilot" id: 72004 type: "computer_media" slug: "pilot" url: "http://localhost/computer_media/pilot/" markdown_url: "http://localhost/computer_media/pilot.md" published_at: "2026-10-20T14:07:43+00:00" modified_at: "2026-10-20T14:15:06+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/10/Pilot2.png" excerpt: "An instrument-flight simulator with an artificial horizon, ADF, VOR/ILS and DME, seven modes from take-off to autolanding, and scored landings with track plots." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Mindware" slug: "mindware" taxonomy: "post_tag" url: "http://localhost/tag/mindware/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" indiv: - name: "M. Male" slug: "m-male" taxonomy: "indiv" url: "http://localhost/indiv/m-male/" genre: - name: "Simulation" slug: "simulation" taxonomy: "genre" url: "http://localhost/type/simulation/" media_type: "Cassette" programmers: - name: "M. Male" slug: "m-male" taxonomy: "indiv" url: "http://localhost/indiv/m-male/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Pilot%20%281982%29%28Male%2C%20M.%29%28TS1000%29%28US%29%28Cassette%29.zip" mediadate: "1982" producer_company: - id: 11120 title: "Mindware, Inc." type: "company" url: "http://localhost/company/mindware/" images: - url: "http://localhost/wp-content/uploads/2026/10/Pilot2.png" - url: "http://localhost/wp-content/uploads/2026/10/Pilot1.png" - url: "http://localhost/wp-content/uploads/2026/10/Pilot-Tape-scaled.jpg" related_products: - id: 13568 title: "Pilot" type: "product" url: "http://localhost/product/pilot/" - id: 13719 title: "Quickload Cartridge" type: "product" url: "http://localhost/product/quickload-cartridge/" media_type_tags: "Simulation" --- # Pilot Simulates instrument flying of a light aircraft from a cockpit panel with an artificial horizon, ADF needle, VOR/ILS course and glideslope indicator, DME, fuel gauge, flap and gear status and a wind readout, plus heading, altitude, vertical speed, RPM, airspeed and time across the bottom. Seven modes are offered: final approach, inbound NDB, inbound VOR, take-off, random position, autopilot and autolanding. The aircraft can stall, exceed its never-exceed, gear or flap speeds, run out of fuel, hit one of two mountain areas or land off the airfield, and the landing check reports faults such as an undershoot, overshoot, heavy landing or gear-up landing. After each flight the program gives a navigation and skill score, then plots the ground track and the approach profile. The cassette label reads “MINDWARE – PILOT, by M. Male – A QUICKLOAD PROGRAM – (c) Mindware 1982 16K”, and the title line reads “PILOT-(C)M.MALE 1982”. The tape starts with a short loader, saved as `AUTOBOOT`, that shows a notice that the program is being loaded “USING QUICKLOAD (TM), A PROPRIETARY PRODUCT OF MINDWARE, INC.”, “PAT PENDING”, and then calls machine code in its REM line to load the main program at higher speed. ## Program Analysis ### Program Structure - Line 5: a REM holding the panel artwork and the machine code that draws and updates the display. - 10–211: initial state. Wind direction and speed are random (`W(1)`, `W(2)`); the array `G(100,3)` holds the beacon positions (NDB at `G(1)`, VOR at `G(2)`, runway at `G(3)`) and then the aircraft’s track, one row per step. - 215–311: mode menu and a `GOTO 230+10*VAL Q$` jump to a block that sets the start position, heading, altitude, speed and fuel for that mode. - 330–780: the flight loop: read keys, redraw the horizon with `PLOT`/`UNPLOT`, compute airspeed, climb rate, heading, position (including wind drift) and fuel use. - 833–1115: update the readouts, the ADF needle, the course deviation bar and, after ILS is selected, the glideslope bar. - 1120–1390: warnings, crash and landing checks and the score deductions for each fault. - 1855–2130: score screen, ground-track plot and approach-profile plot. - 2200–2790: the autopilot and autolanding logic, which adjusts heading, bank, pitch, power, flaps and gear and prints what it is doing; pressing T hands control back to the player. ### Controls From the listing: `5` and `8` change the bank angle, `6` and `7` pitch, `4` and `9` nudge the heading, `J` and `K` lower and raise RPM between 800 and 2500, `F` toggles flaps, `G` toggles the gear, `I` switches the course indicator to the ILS, and `0` halves the time step. ### Notable Techniques - If no key is pressed at the menu, the routine at line 3000 times out using the high byte of the `FRAMES` counter (16437) and the program starts mode 7, autolanding. After an autolanding it restarts with `GOTO 0`, so it runs as a self-playing demonstration. - Bearings to the beacons are computed with `ATN` plus quadrant corrections, and the needles are moved by unplotting the old position and plotting the new one only when the value has changed. - Wind is applied as a separate drift vector in the position update (lines 700–705). - Near the runway, line 1360 computes two screen columns from the lateral offset and distance and POKEs them into the machine code at 16932–16933 before calling 16934, apparently to draw the runway as it comes into view. - Many flags are folded into arithmetic, for example `LET R=R+(INKEY$="K" AND R<2500)*100-(INKEY$="J" AND R>800)*100`. ### Potential Issues - The track index `E` grows by 0.5 every step and `G` is dimensioned to 100 rows, so a very long flight will stop with a subscript error. - Line 1345 adds `(V>=-200)*50+(V<-200)*50`, which is always 50, so the heavy-landing test has no effect on the score. - Several jumps target lines that do not exist (1331, 2215, 2241, 2250); the ZX81 continues at the next line, which gives the intended result in each case. ## Source Code ``` 5 REM ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄███[A][/][H]███[A][D][F]██[V][O][R][3][6][0][R]██[D][M][E]███████▀▀▀▀▀▀▜▀▀▜▀▀▜▀▀▀▛▀▀▜████████████ ▐ ▐▘ ▐██[F][U][E][L]██████ ▐ ▐▘ ▐████████████▄▖▄▄▖▄▟▘ ▝ ▜▌ ▟██[F][L][A][P]█UP███ ▐ ▝ ▐▘ ▐████████████ ▐ ▐ ▐▘ ▐██[G][E][A][R]█UP███ ▐██████▘ ▖ ▐██████████████████████████████████[W][N][D]███████[H][D][G]█[A][L][T]██[V][S][I]██[R][P][M]███[A][S][I]██[T][I][M][E]██5£RND#7#5E▘;##5▙RND▘4 GOSUB [K]<# RETURN LLIST 4 PRINT # RETURNINKEY$ 4 LIST TAN A #ACS 9ACS 9ACS 9ACS 9ACS =ACS 9ACS =#- ;#; GOSUB #£RND;)▘ ;#TAN ▌.:▖▞3Y LN ▝PI( CLSLN ▝PI£# RETURN▒4 INPUT 58PI#7#:▖VAL Y[▒]STR$ LN ▝PISGN ▖#[U]4 POKE AT # RETURN▛COS £# RETURN C▘▌# RETURN3C▘=/ TO :~~Y[▒]▞▀LN ▝PI( CLS£# RETURN$4 LET :"▞▛Y[▒]LN ▝PI▖# RETURN$4 PRINT £# RETURN:4 GOSUB :▖▞▌Y[V]LN ▝PI:(▞=Y[N]LN ▝PI▞~~Y[R]LN ▝PI▖Y[W]LN ▝PITAN -0:+▞ #STR$ LN ▝PISGN #CHR$ ▝##LEN ▀#=# RETURNA4 GOTO TAN :=▞3Y█LN ▝PI( CLSLN ▝PI£# RETURN-4 INPUT TAN ▞~~5£RND#7#5CHR$ ▝;, RETURN#C~~ PAUSE LET PICHR$ █/▝LEN █><#[X]4 GOTO #[W]4 CONT (>=TAN QQQQQQQQQI 10 LET B=0 15 LET M=180 20 LET P=B 25 LET N=-6 30 LET R=2000 35 LET O=N 40 LET H=270 45 LET V=B 50 LET T=B 55 LET S=70 60 LET GS=1 61 LET FS=GS 65 LET K=120 70 LET A$="UP" 80 LET B$=A$ 85 LET TA=10 90 LET C=B 93 LET EA=5 95 LET NT=B 96 LET NV=B 97 LET NA=B 100 LET D=B 105 LET E=EA 110 LET F=360 115 LET V$="V" 120 DIM W(2) 125 RAND 130 LET W(1)=RND*PI+PI 140 LET W(2)=INT (RND*20) 145 LET AA=1600+(-(W(1)<3/2*PI)+(W(1)>3/2*PI))*100+(RND>.5)*50 150 LET A=AA 155 DIM G(100,3) 160 LET G(3,1)=20 170 LET G(3,2)=10 180 LET G(2,1)=10 190 LET G(2,2)=35 200 LET G(1,1)=40 210 LET G(1,2)=10 211 CLS 215 LET C$="1 FINAL APP 2 INBOUND NDB3 INBOUND VOR4 TAKE OFF 5 RANDOM POSN6 AUTOPILOT 7 AUTOLANDING" 216 PRINT TAB 4;"█[P][I][L][O][T][-][(][C][)][M][.][M][A][L][E]█[1][9][8][2]█" 217 PRINT 218 PRINT " SELECT MODE-"; 219 FOR Z=1 TO 79 STEP 13 220 PRINT TAB 15;C$(Z TO Z+12) 221 NEXT Z 222 GOSUB 3000 225 LET Q$=INKEY$ 226 IF Q$="" THEN LET Q$="7" 228 IF ABS (CODE Q$-32)>3 THEN GOTO 222 231 CLS 232 LET Z=13*(CODE Q$-29)+1 233 PRINT AT 0,4;"PILOT-MODE ";C$(Z TO Z+12) 235 GOTO 230+10*VAL Q$ 240 LET G(4,1)=52 241 LET G(4,2)=6+RND*8 242 LET W(2)=INT (W(2)/2) 244 LET TA=5 247 LET U=53 249 GOTO 311 250 LET G(4,1)=30 251 LET G(4,2)=20+RND*8 252 LET H=130 257 LET U=80 259 GOTO 311 260 LET G(4,1)=8+RND*4 261 LET G(4,2)=15 262 LET U=140 263 LET H=360 264 LET A=(AA-1000+RND*2000) 265 PRINT "MAINTAIN "; 269 GOTO 310 270 LET G(4,1)=20 271 LET G(4,2)=10 272 LET A=0 273 LET R=2300 274 LET K=A 275 LET A$="DN" 276 LET U=180 277 PRINT "CLIMB TO "; 278 LET GS=-1 279 GOTO 310 280 LET G(4,1)=28+RND*30 281 LET G(4,2)=RND*40 282 LET H=360 283 LET U=180 284 PRINT "MAINTAIN "; 285 LET W(2)=W(2)+20 286 LET F=270 287 LET NT=50 289 GOTO 310 290 LET G(4,1)=52 291 LET G(4,2)=7.5+(RND>.5)*5 292 LET TA=5 293 LET W(2)=0 294 LET U=60 295 LET AA=1200 296 LET A=AA 299 GOTO 311 300 LET G(4,1)=26 301 LET G(4,2)=10 302 LET TA=5 303 LET W(2)=0 304 LET A=395 305 LET R=1600 306 LET V=-400 307 LET K=70 308 LET U=15 309 GOTO 311 310 PRINT AA;"FT CROSS VOR LEVEL" 311 RAND USR 16866 315 IF VAL Q$<3 OR VAL Q$>5 THEN GOSUB 790 320 PRINT AT 18,26;INT (W(1)*180/PI);"/";W(2) 325 IF Q$="5" THEN PRINT AT 10,17;"[2][7][0]" 330 PRINT AT 10,0;"I" 332 LET B=B+(INKEY$ ="5" AND B<4)*2-(INKEY$ ="8" AND B>-4)*2 335 LET H=H+(INKEY$ ="9")*5-(INKEY$ ="4")*5 350 LET P=P+(INKEY$ ="7" AND P<6)-(INKEY$ ="6" AND P>-6) 365 IF INKEY$ ="0" THEN LET TA=5 370 IF C=P AND D=B THEN GOTO 510 380 LET Y=B 390 LET X=D 400 FOR Z=1 TO 5 410 IF ABS (X-C)<7 THEN UNPLOT 5+Z,14-X+C 430 IF ABS (Y-P)<7 THEN PLOT 5+Z,14-Y+P 450 LET Y=Y-B/2 460 LET X=X-D/2 470 NEXT Z 480 LET C=P 490 LET D=B 510 IF INKEY$ <>"F" THEN GOTO 550 520 LET FS=-FS 530 LET B$="UP" 540 IF FS<0 THEN LET B$="DN" 550 IF INKEY$ <>"G" THEN GOTO 600 560 LET GS=-GS 570 LET A$="UP" 580 IF GS<0 THEN LET A$="DN" 600 LET R=R+(INKEY$ ="K" AND R<2500)*100-(INKEY$ ="J" AND R>800)*100 620 IF INKEY$ ="I" THEN GOSUB 790 625 PRINT AT 10,0;"█" 627 IF P>0 AND KK+10 THEN LET Z=K+10 647 IF Z=S) 660 LET H=H-TA*B*1.5 662 LET H=H+((H<=0)-(H>360))*360 670 IF Z>V+100 THEN LET Z=V+100 680 IF Z.55 THEN LET T=T+40 720 LET G(E,3)=A/100 731 LET X=100-ABS (G(E,1)-10)*50-ABS (G(E,2)-35)*50 732 IF X>NV THEN LET NV=X 733 IF H>210 THEN GOTO 736 734 LET X=100-ABS (G(E,1)-40)*50-ABS (G(E,2)-10)*50 735 IF X>NA THEN LET NA=X 736 IF TA=10 THEN LET NT=NT+1 737 IF G(E,1)>12 AND G(E,2)>15 THEN LET NT=NT-ABS (A-AA)/10 740 LET X=(G(2,1)-G(E,1))*.25 745 LET Y=(G(2,2)-G(E,2))*.25 750 LET L=INT (SQR (X*X+Y*Y)*100)/100 760 LET U=U-R*TA/10000 763 IF U>0 THEN GOTO 780 765 LET U=0 770 LET R=800 775 PRINT AT 2,0;"[O][U][T]█[O][F]█[F][U][E][L]" 780 GOTO 833 790 LET G(2,1)=G(3,1) 800 LET G(2,2)=G(3,2) 810 PRINT AT 10,13;"██[I][L][S]███" 820 LET F=270 830 LET V$="I" 832 RETURN 833 PRINT AT 10,27;"█████";AT 10,27;L 834 IF V$="I" AND G(E,1)<20 THEN PRINT AT 10,27;"-" 835 PRINT AT 12,28;"███";AT 12,28;INT U;AT 14,28;B$;AT 16,28;A$ 836 RAND USR 17092 837 PRINT AT 20,1;H;TAB 5;A;TAB 10;V;TAB 15;R;TAB 21;K;TAB 26;T/100 840 LET X=G(1,1)-INT (G(E,1)*10)/10+.01 850 LET Y=G(1,2)-INT (G(E,2)*10)/10+.01 860 LET Z=(ATN (X/Y)+(X<0)*2*PI+(Y<0)*PI)*180/PI 870 LET Z=Z-H+360*(Z-H<=0) 880 IF INT (Z/16)=INT (M/16) THEN GOTO 930 890 FOR Y=0 TO 4 STEP 2 900 UNPLOT 21+SIN (M/180*PI)*Y,15+COS (M/180*PI)*Y 910 PLOT 21+SIN (Z/180*PI)*Y,15+COS (Z/180*PI)*Y 920 NEXT Y 925 LET M=Z 930 LET X=G(E,1)-G(2,1) 935 LET X=X+(X=0)*.01 940 LET Y=G(E,2)-G(2,2) 945 LET Y=Y+(Y=0)*.01 950 LET Z=(ATN (X/Y)+(X<0)*2*PI+(Y<0)*PI)*180/PI 960 LET Z=INT (Z-F+180+.5)-(Z>360)*360 970 IF Z>12 THEN LET Z=12 975 IF Z<-12 THEN LET Z=-12 980 IF Z/2=N THEN GOTO 1040 990 FOR X=9 TO 19 STEP 2 1000 UNPLOT 34+N,X 1010 PLOT 34+Z/2,X 1020 NEXT X 1030 LET N=Z/2 1040 IF V$="V" OR L<.1 THEN GOTO 1120 1050 LET Z=INT (A/L/50+.5) 1060 IF Z>10 THEN LET Z=10 1070 IF Z<1 THEN LET Z=1 1080 IF O=Z THEN GOTO 1120 1090 FOR X=29 TO 39 STEP 2 1095 UNPLOT X,20-O 1100 PLOT X,20-Z 1110 NEXT X 1115 LET O=Z 1120 IF G(E,1)>40 AND G(E,2)<15 AND H<300 THEN PRINT AT 1,0;" COMMENCE DESCENT WHEN READY " 1125 PRINT AT 2,0; 1130 IF G(E,1)<2 OR G(E,1)>8 OR G(E,2)<17 OR G(E,2)>23 THEN GOTO 1138 1136 GOTO 1140 1138 IF G(E,1)<14 OR G(E,1)>28 OR G(E,2)<15 OR G(E,2)>21 THEN GOTO 1144 1140 PRINT "HIT MOUNTAIN" 1143 GOTO 1760 1144 IF A<>0 OR K>=70 OR A$="DN" THEN GOTO 1150 1145 PRINT "GEAR RETRACTED" 1147 GOTO 1750 1150 IF A>10 THEN GOTO 1220 1160 IF V=0 AND A=0 THEN GOTO 1220 1161 IF A>0 AND K>60 THEN GOTO 1220 1164 IF G(E,1)>22 OR G(E,1)<17 OR G(E,2)>12 OR G(E,2)<8 THEN GOTO 1380 1170 IF G(E,2)<9.8 OR G(E,2)>10.2 THEN PRINT ;"MISSED RUNWAY", 1180 IF G(E,1)>20 THEN PRINT ;"UNDERSHOT R/WAY", 1190 IF V<-300 THEN PRINT ;"CRASH LANDING", 1195 IF B<>0 THEN PRINT ;"WINGTIP GROUNDED", 1200 IF G(E,1)<18.5 THEN PRINT ;"OVERSHOT R/WAY", 1203 IF K>60 THEN PRINT "TOO FAST", 1205 IF A$="UP" THEN PRINT ;"GEAR UP LANDING" 1206 LET NT=NT-(G(E,1)>20)*50-(G(E,1)<18.5)*50-(G(E,2)<9.8 OR G(E,2)>10.2)*100 1207 LET NT=NT-(V<-300)*100-(B<>0)*50-(A$="UP")*100 1210 IF K<=60 AND G(E,1)<=20 AND G(E,1)>=18.5 AND G(E,2)<=10.2 AND G(E,2)>=9.8 AND V>=-300 AND B=0 AND A$="DN" THEN GOTO 1330 1215 GOTO 1850 1220 IF K>=S OR A=0 THEN GOTO 1250 1230 PRINT "STALLED FROM ";INT A;" FT " 1235 LET NT=NT-100*(A>50) 1240 GOTO 1780 1250 IF K<=145 THEN GOTO 1270 1260 PRINT "VNE EXCEEDED-CRASH" 1265 GOTO 1760 1270 IF A$="UP" OR K<=90 THEN GOTO 1290 1280 PRINT "GEAR LIMIT EXCEEDED-CRASH" 1285 GOTO 1760 1290 IF B$="UP" OR K<=85 THEN GOTO 1310 1300 PRINT "FLAP LIMIT EXCEEDED-CRASH " 1305 GOTO 1760 1310 IF G(E,2)<12 AND ABS (G(E,1)-22)<2 THEN GOSUB 1360 1312 IF G(E,1)<20 AND G(E,2)>14 THEN LET EA=E 1313 LET G(E-1,2)=G(E,2) 1314 LET G(E-1,1)=G(E,1) 1315 LET E=E+.5 1317 IF VAL Q$>5 THEN GOTO 2200 1320 GOTO 330 1330 LET Z=6 1335 PRINT AT 6,9;"LANDED SAFELY" 1340 IF V<-200 THEN PRINT TAB 8;"HEAVY LANDING" 1342 PRINT AT 6,9;"[L][A][N][D][E][D]█[S][A][F][E][L][Y]" 1343 LET Z=Z-1 1344 IF Z>0 THEN GOTO 1331 1345 LET NT=NT+(V>=-200)*50+(V<-200)*50+(G(E,1)-18.5)*50+50-ABS (G(E,2)-10)*50 1350 GOTO 1855 1360 LET Z=30-INT ((G(E,2)-9.8)*75) 1361 LET X=2+INT (10-10*L) 1362 LET Y=Z-X 1363 IF Y>31 THEN GOTO 1371 1364 IF Y<0 THEN LET Y=0 1365 POKE 16932,Y 1366 LET Y=Z+X 1367 IF Y<0 THEN GOTO 1371 1368 IF Y>31 THEN LET Y=31 1369 POKE 16933,Y 1370 RAND USR 16934 1371 RETURN 1380 PRINT "CRASH-OFF AIRFIELD " 1390 GOTO 1206 1750 LET NT=NT-50 1760 LET NT=NT-50 1770 LET NT=NT-50 1780 LET NT=NT-50 1850 RAND USR 17113 1855 PRINT AT 8,2;"PRESS N/L FOR SCORE AND PLOT" 1856 IF Q$="7" THEN GOTO 0 1860 GOSUB 3000 1865 CLS 1866 PRINT "NAV=";INT (NA+NV);"+SKILL=";INT (NT+U/4);" TOTAL=";INT (NT+U/4)+INT (NV+NA) 1900 RAND USR 16995 1910 FOR Z=4 TO E-2 STEP 2 1920 IF G(Z,1)>0 AND G(Z,1)<64 AND G(Z,2)>0 AND G(Z,2)<42 THEN PLOT G(Z,1),G(Z,2) 1930 NEXT Z 1940 RAND USR 16995 2010 PRINT AT 21,0;"PRESS N/L FOR APP PROFILE" 2020 GOSUB 3000 2030 CLS 2060 RAND USR 17065 2065 FOR Z=EA TO E STEP 2 2070 PLOT (G(Z,1)-20)*1.5,G(Z,3)/10*14.6 2080 NEXT Z 2090 PRINT AT 0,0;"PRESS S TO STOP,ANY KEY TO GO " 2100 GOSUB 3000 2110 IF INKEY$ ="S" THEN STOP 2120 CLS 2130 GOTO 0 2200 PRINT AT 1,0;" " 2201 PRINT AT 1,0; 2202 IF INKEY$ ="T" THEN GOTO 2600 2203 IF ABS (H-270)<=5 THEN LET H=270 2204 IF K<85 AND FS>0 THEN GOTO 2730 2205 IF K<91 AND GS>0 THEN GOTO 2700 2211 IF L<.9 THEN GOTO 2300 2212 IF O<6 THEN GOTO 2330 2213 IF O>=6 THEN GOTO 2380 2230 IF ABS N<=1 AND ABS (H-270)<=5 AND B=0 THEN GOTO 2300 2235 LET B=(N<0 AND H>260)*2-(N>0 AND H<280)*2 2238 IF B<>0 THEN GOTO 2241 2240 LET B=(N=0 AND H>275)*2-(N=0 AND H<265)*2 2245 IF B<>0 THEN GOTO 2760 2290 GOTO 370 2300 LET H=270+(N>0)*5-(N<0)*5 2305 IF L<.9 THEN GOTO 2500 2306 IF H=270 THEN GOTO 2250 2307 PRINT "[A][D][J][U][S][T]█[H][D][G]█[T][O]█[S][T][A][Y]█[O][N]█[C][E][N][T][R][E][L][I][N][E]" 2310 GOTO 370 2330 IF A=AA THEN GOTO 2215 2340 LET Z=(K<70) 2350 LET R=R+100*(Z=1) 2360 LET P=P+(Z=0) 2365 PRINT "█[A][D][J][U][S][T][S]█[P][O][W][E][R]█[O][R]█[P][I][T][C][H]█[T][O]█[K][E][E][P]██[O][N]█[R][E][C][O][M][M][E][N][D][E][D]█[G][L][I][D][E]█[S][L][O][P][E]█████" 2370 GOTO 370 2380 LET Z=(K>75) 2385 IF V<-500 THEN GOTO 2215 2390 LET R=R-100*(Z=1) 2400 LET P=P-(Z=0) 2410 GOTO 2365 2500 IF L<.5 THEN LET H=270 2505 PRINT "█[A][D][J][U][S][T][S]█[P][O][W][E][R][,][P][I][T][C][H]█[A][N][D]█[H][D][G]█[T][O]██[S][T][A][L][L]█[O][N][T][O]█[R][U][N][W][A][Y]█[F][R][O][M]█[<][=][1][0][F][T]██" 2510 LET R=1500+(A<180)*100+(A<55)*100 2520 LET P=(A<80)+(A<31)+(A<17) 2530 GOTO 370 2600 PRINT AT 1,0;"PLAYER HAS CONTROL" 2610 LET Q$="1" 2620 GOTO 330 2700 LET A$="DN" 2705 LET GS=-1 2710 PRINT "[G][E][A][R]█[D][O][W][N]" 2720 GOTO 370 2730 LET B$="DN" 2735 LET FS=-1 2740 PRINT "[F][L][A][P]█[D][O][W][N]" 2750 GOTO 370 2760 PRINT "[T][U][R][N][I][N][G]█"; 2770 IF N<>0 THEN PRINT "[O][N][T][O]█[C][L][O][S][I][N][G]█[H][E][A][D][I][N][G]" 2780 IF N=0 THEN PRINT "[O][N][T][O]█[T][H][E]█[C][E][N][T][R][E][L][I][N][E]" 2790 GOTO 370 3000 LET X=PEEK 16437-8 3005 IF X<128 THEN LET X=128 3010 IF INKEY$ ="" AND PEEK 16437>X THEN GOTO 3010 3020 RETURN 4000 SAVE "PILO[T]" 4005 SLOW 4010 RUN ```