Content
Source Code
1 REM SAVE "PLANNER" LINE 1: REM © by Chuck Dawson, 1985; ALL RIGHTS RESERVED
10 REM GOTO 1870 TO LIST FIXES
12 BORDER 1: PAPER 1: INK 9
14 POKE 23658,8
16 CLS
18 OVER 0
20 GO TO 80
30 LET PASS=-10
31 LET WD=0
32 LET WS=0
35 DIM V(5)
40 DIM A(500)
42 DIM D$(10,5)
45 DIM T(5)
47 DIM V$(500,3)
50 DIM A$(500,5)
55 DIM G(5)
57 DIM F(10)
60 DIM Z$(1,5)
65 DIM W(5)
70 LET N=1
75 GO SUB 1030
80 LET PRINT=0: INPUT "DO YOU WANT THESE RESULTS SENT TO THE PRINTER? ";W$: IF CODE W$=89 THEN LET PRINT=1
85 PRINT AT 20,0;"CURRENT AIRCRAFT IS ";F$,"IS THIS CORRECT?"
90 INPUT Y$
100 IF CODE Y$=78 THEN GO SUB 1030
130 OVER 0: PAPER 1: BORDER 1: GO SUB 730
140 LET FIX=0
145 LET ALT=0
150 LET TOTQ=0
155 LET TOTG=0
160 LET TOTT=0
165 OVER 0: PAPER 1: BORDER 1
170 CLS
180 INPUT "INPUT DEPARTURE POINT ";B$
190 GO SUB 510
200 PRINT AT 0,0;"0" AND WD<10;"0" AND WD<100;WD;"/";WS;TAB 9;"DIS MC GAS CA GS TIME";ALT;" FT"
210 LET A1=INT A(I)
220 LET B1=(A(I)-INT (A(I)))*1E4
230 LET E$=B$
240 LET C$=B$
245 LET V=VAL (V$(I))
250 LET HERE=A(I)
255 IF ALT=0 THEN GO TO 1180
260 INPUT "INPUT NEXT FIX ";B$
290 IF B$=" STOP " THEN GO TO 1000
300 LET FIX=FIX+1
310 GO SUB 510
320 LET D$(FIX)=B$
330 LET THERE=A(I)
340 LET F(FIX+1)=A(I)
342 GO SUB 350
345 GO TO 990
350 LET A=INT HERE
360 LET B=INT (.5+(HERE-A)*1E4)
370 LET C=INT THERE
380 LET D=INT (.5+(THERE-C)*1E4)
390 LET E=(A+C)/120
400 LET G=(B+D)/120
410 REM LET V=-1*INT (((G-96)*13/(62-E))+7.2)
420 LET LAT=ABS (A-C)
430 LET LONG=ABS (B-D)
440 LET AVE=PI*(A+C)/21600
450 LET Q=INT (SQR ((LAT^2)+(COS AVE*LONG)^2)+.5)
460 LET TC=180*(C<A)+360*(A<C)
470 GO TO 480+380*(B=D)
480 LET TC=.5+(180/PI)*ATN ((A-C)/((B-D)*COS AVE))
490 LET TC=INT TC+90*(B>D)+270*(B<D)
500 GO TO 860
510 IF B$="RNAV" THEN GO TO 1670
520 LET Z$(1)=B$
530 FOR I=1 TO 500
540 IF A$(I)=Z$(1) THEN RETURN
550 NEXT I
560 PRINT AT 20,0;B$;" NOT STORED "
570 INPUT "LATITUDE? (DEG.MIN) ";LA
590 INPUT "LONGITUDE? (DEG.MIN) ";LO
600 INPUT "VARIATION? (+W -E) "; LINE V$(N)
610 LET A$(N)=B$
620 LET A(N)=INT LA*60+(LA-INT LA)*100+(INT LO*60+(LO-INT LO)*100)/1E4
630 LET I=N
640 LET N=N+1
650 IF N=500 THEN LET N=400
660 PRINT AT 20,0;" "
670 RETURN
730 CLS
732 FOR I=3+15*(MAXALT>=18000) TO MAXALT/1000 STEP 3+3*(MAXALT>=18000): LET I=I-2*(I=36)-(I=40)
733 LET P=I/(3+3*(MAXALT>=18000))-(MAXALT>=18000)*2
734 PRINT : PRINT I*1000,W(P);"/";V(P): IF W(P)=PASS THEN FOR B=1 TO 16: PRINT CHR$ 8;: NEXT B: PRINT " N/A "
735 NEXT I
740 INPUT "DO YOU WANT TO CHANGE THE WINDS?";K$: IF CODE K$<>89 THEN GO TO 840
745 CLS
750 FOR I=3+15*(MAXALT>=18000) TO MAXALT/1000 STEP 3+3*(MAXALT>=18000)
755 LET I=I-2*(I=36)-(I=40)
760 PRINT AT 0,0;"FOR ";I;"000 FEET, INPUT WIND DIRECTION "
770 INPUT W(I/(3+3*(MAXALT>=18000))-(MAXALT>=18000)*2)
775 IF W(I/(3+3*(MAXALT>=18000))-(MAXALT>=18000)*2)=PASS THEN GO TO 800
780 PRINT AT 0,0;"FOR ";I;"000 FEET, INPUT WIND VELOCITY "
790 INPUT V(I/(3+3*(MAXALT>=18000))-(MAXALT>=18000)*2)
800 NEXT I
840 CLS
850 RETURN
860 LET R=57.29578
865 LET TAS=T((ALT/(3000+500*(ALT>=16500)))*(MAXALT<=18000)+((ALT-12000)/6000)*(MAXALT>18000))
870 LET CA=INT (.5+(R*ASN (SIN ((WD-TC)/R)*WS/TAS)))
880 LET GS=INT (.5+(COS (CA/R)*TAS-(COS ((WD-TC)/R))*WS))
890 PRINT AT 2*FIX,0;C$;"-";B$;TAB 0;"▀▀▀▀▀▀▀";"▀" AND (LEN (B$+C$)>6);"▀" AND (LEN (B$+C$)>7)
900 PRINT AT 2*FIX,9+(Q<10)+(Q<100);Q;
910 LET TOTQ=TOTQ+Q
915 LET MC=TC+V: IF MC<=0 THEN LET MC=360+MC
920 PRINT TAB 13;"0" AND MC<10;"0" AND MC<100;MC;
930 LET TIME=Q/GS+(FIX=1 OR J=FIX)*ALT/(MAXALT*10)
935 LET GS=INT (.5+Q/TIME)
940 LET GAS=G((ALT/(3000+500*(ALT>=16500)))*(MAXALT<=18000)+((ALT-12000)/6000)*(MAXALT>18000))*TIME
945 LET TOTG=TOTG+GAS
950 PRINT TAB 17;" " AND (INT (GAS+.5))<10;STR$ (INT (.5+GAS)) AND WD>=0;"-----N/A-----" AND WD<0;
955 IF WD<0 THEN GO TO 985
960 PRINT TAB (20+(ABS CA<10));ABS CA;"R" AND CA>0;"L" AND CA<0;TAB 24;GS;
970 LET TOTT=TOTT+TIME
980 PRINT TAB 28;INT TIME;"+";"0" AND (INT (.5+((TIME-INT TIME)*60))<10);INT (.5+((TIME-INT TIME)*60))
985 RETURN
990 GO TO 240+760*(B$=S$)
1000 LET TOTT=(INT (TOTT*60+.5))/60
1010 PRINT AT 2*FIX+2,0;"TOTALs";TAB (9+(TOTQ<10)+(TOTQ<100));TOTQ;TAB 17;INT (.5+TOTG);TAB 24;INT (.5+TOTQ/TOTT);TAB 28;INT TOTT;"+";"0" AND (INT (.5+((TOTT-INT TOTT)*60))<10);INT (.5+((TOTT-INT TOTT)*60))
1020 GO TO 1900
1040 PRINT "INPUT TYPE AIRCRAFT "
1050 INPUT F$
1060 PRINT
1070 PRINT "INPUT MAX CRUISE ALTITUDE"
1080 INPUT MAXALT
1085 CLS
1110 FOR I=3+15*(MAXALT>=18000) TO MAXALT/1000 STEP 3+3*(MAXALT>=18000)
1115 LET I=I-2*(I=36)-(I=40)
1120 PRINT AT 0,0;" FOR ";I;"000 FEET, INPUT NORMAL CRUISE TAS (KTS) "
1130 INPUT T(I/(3+3*(MAXALT>=18000))-(MAXALT>=18000)*2)
1140 PRINT AT 0,0;" FOR ";I;"000 FEET, INPUT NORMAL FUEL FLOW (GAL/HR)"
1150 INPUT G(I/(3+3*(MAXALT>=18000))-(MAXALT>=18000)*2)
1160 NEXT I
1170 RETURN
1180 PRINT AT 0,0;" "'" "
1190 INPUT "INPUT DESTINATION ";B$
1195 LET S$=B$
1200 LET ALT=3000+15000*(MAXALT>=18000)
1210 LET FIX=FIX+1
1220 GO SUB 510
1230 LET D$(FIX)=B$
1240 LET THERE=A(I)
1250 LET F(FIX+1)=A(I)
1260 FOR J=1 TO 4+(MAXALT>=15000 AND MAXALT<18000)+(MAXALT>=39000)
1270 LET WS=V(J)
1280 LET WD=W(J)
1290 LET ALT=J*3000*(MAXALT<=18000)+(12000+J*6000-2000*(J=4)-3000*(J=5))*(MAXALT>18000)
1300 GO SUB 350
1310 PRINT AT 2*FIX,0;" " AND ALT<10000;ALT;" FT "
1320 LET FIX=FIX+1
1330 NEXT J
1335 LET J=50
1340 PRINT ''"INPUT DESIRED ALTITUDE."'"(NOTE: ABOVE FIGURES DO NOT CONSIDER M.E.A.'s ALONG ROUTE)"
1350 INPUT ALT
1355 IF ALT<1000 THEN LET ALT=ALT*100
1360 LET WS=V((ALT/(3000+500*(ALT>=16500)))*(MAXALT<=18000)+((ALT-12000)/6000)*(MAXALT>18000))
1370 LET WD=W((ALT/(3000+500*(ALT>=16500)))*(MAXALT<=18000)+((ALT-12000)/6000)*(MAXALT>18000))
1380 LET FIX=0
1390 CLS
1400 LET B$=C$
1410 LET TOTQ=0
1420 LET TOTT=0
1430 LET TOTG=0
1440 GO TO 190
1670 INPUT "INPUT VORTAC ";B$
1690 GO SUB 520
1700 LET LAT=INT A(I)
1710 LET LONG=1E4*(A(I)-INT A(I))
1720 REM LET V=-1*INT ((LONG/60-96)*13/(62-LAT/60))+7.2
1721 LET V$(500)=V$(I)
1730 LET B$=B$+"r"
1740 INPUT "INPUT RADIAL ";C
1760 LET C=C-V
1780 INPUT "INPUT DISTANCE ";D
1800 LET DLAT=INT ((D*SIN ((C-90)*PI/180))+.5)
1810 LET NEWLAT=LAT-DLAT
1820 LET DLONG=INT ((D*COS ((C-90)*PI/180)/COS (PI/10800*((LAT+NEWLAT)/2)))+.5): LET NEWLONG=LONG-DLONG
1840 LET A(500)=NEWLAT+NEWLONG/1E4
1850 LET I=500
1860 RETURN
1870 FOR J=1 TO 500
1890 PRINT J;"▖" AND (J=N);TAB 4;A$(J);TAB 11;A(J);TAB 22;V$(J)
1895 NEXT J
1900 IF PRINT=1 THEN COPY
1910 PAUSE 0
1920 BORDER 5: PAPER 5: CLS
1925 ON ERR GO TO 2085
1930 GO SUB 5000
1940 LET B=(A1-1540)*.064
1950 LET A=(6500-B1)*.061
1960 LET LIN=(42.5-B)/2
1970 LET COL=(A-.5)/2
1980 PRINT AT LIN,COL+1-(4.5+(LEN E$>=4))*(TC<170);E$ AND (A>=0 AND A<64 AND B>=0 AND B<44)
1990 FOR I=1 TO FIX
2000 LET D=(INT (F(I+1))-1540)*.064
2010 LET C=.061*(6500-((F(I+1)-INT (F(I+1)))*1E4))
2015 LET AA=A*4: LET BB=B*4: LET CC=C*4: LET DD=D*4
2020 CIRCLE AA,BB,2: PLOT AA,BB: DRAW CC-AA,DD-BB
2032 IF A=C THEN LET M=200: GO TO 2035
2033 LET M=(B-D)/(A-C)
2035 LET A=C: LET B=D
2040 LET LIN=(42.5-B)/2
2050 LET COL=(A-.5)/2
2060 PRINT AT LIN+(M<=1 AND M>-.1)-(M<=-.1 AND M>-.2),1-(M<=1 AND M>-.1)+COL;D$(I) AND (A>=0 AND A<64 AND B>=0 AND B<44)
2070 NEXT I
2080 CIRCLE CC,DD,2
2085 ON ERR RESET : BEEP .2,9: BEEP .2,12: BEEP 1,12: BEEP .1,10: BEEP .1,9: BEEP .1,7: BEEP .4,9: BEEP .4,10: BEEP .4,11: BEEP 1,12
2090 IF PRINT=1 THEN COPY
2100 INPUT "ANOTHER ROUTE? ";Y$
2110 IF CODE Y$=89 THEN GO TO 130
2120 GO TO 5310
5000 OVER 0
5010 PLOT 22,98
5020 DRAW 54,0
5030 DRAW 0,69
5040 DRAW 42,0
5050 DRAW 0,-30
5060 DRAW 45,-10,.2
5070 DRAW 44,-1,-.5
5080 DRAW 0,-23
5090 DRAW 3,-36,-.8
5100 DRAW -37,-29
5110 DRAW -8,-33,1.5
5115 DRAW 1,-5
5117 DRAW -1,5
5120 DRAW -22,2,-1
5130 DRAW -15,20,-1
5140 DRAW -25,28,-.5
5150 DRAW -33,-6,2
5160 DRAW -23,20,-1.2
5170 DRAW -25,29,-.1
5180 PLOT 24,93
5190 DRAW -22,0
5200 PLOT 77,167
5210 DRAW 0,8
5215 DRAW -76,0
5220 DRAW 199,0
5230 DRAW 0,-4
5231 DRAW 3,-43,-.2
5240 DRAW -3,43,.2
5250 DRAW 55,0
5260 PLOT 208,120
5270 DRAW 47,0
5280 PLOT 210,68
5290 DRAW 44,-4,-.5
5300 RETURN
5310 PRINT #0; FLASH 1;" HAVE A GOOD FLIGHT! © CWD ": IF PRINT=1 THEN LPRINT "HAVE A GOOD FLIGHT!"
5320 PAUSE 0: STOP
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.
