10 REM ========================================== 20 REM CINEMATIC SCIENCE-FICTION DISPLAY SYSTEM 30 REM COMMODORE 128 NATIVE - BASIC 7.0 40 REM DEEP-SPACE TELEMETRY & COMMAND CONSOLE 50 REM ========================================== 100 REM --- SYSTEM INITIALIZATION --- 110 SLOW:PRINT CHR$(142); 120 COLOR 0,1:COLOR 4,1:COLOR 1,6:GRAPHIC 1,1 130 DIM X(60),Y(60),VX(60),VY(60),V(60) 140 DIM PX(16),PY(16),OX(16),OY(16),E1(20),E2(20) 150 DIM CX(8),CY(8),CZ(8) 160 FOR I=1 TO 16:READ E1(I),E2(I):NEXT 170 DATA 0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4 175 DATA 0,4,1,5,2,6,3,7,0,6,1,7,2,4,3,5 180 R=35 190 FOR I=0 TO 7:CX(I)=R*(1-2*(I AND 1)):CY(I)=R*(1-2*((I AND 2)/2)):CZ(I)=R*(1-2*((I AND 4)/4)):NEXT 200 REM --- MASTER DISPATCHER --- 210 REM BITMAP MEMORY IS ALLOCATED BEFORE ARRAYS 220 QF=0:MD=1 230 DO 240 GOSUB 9000 245 IF QF=1 THEN 300 250 ON MD GOSUB 1000,2000,3000,4000,5000,6000,7000,8000,9500,10000,11000,12000,13000 260 IF QF=1 THEN 300 270 MD=MD+1:IF MD>13 THEN MD=1 280 LOOP 300 SLOW:GRAPHIC 0:PRINT CHR$(147);"DEEP-SPACE CONSOLE OFFLINE.":END 500 REM --- STANDARD HEADER --- 510 BOX 0,0,0,319,16,0,1:COLOR 1,HC 520 CHAR 1,1,1,T$:RETURN 600 REM --- STANDARD INSTRUMENT FRAME --- 610 COLOR 1,HC:BOX 1,2,18,317,197,0,0 620 DRAW 1,2,175 TO 317,175 630 FOR Q=20 TO 300 STEP 20:DRAW 1,Q,18 TO Q,21:DRAW 1,Q,194 TO Q,197:NEXT 640 DRAW 1,2,22 TO 7,22:DRAW 1,312,22 TO 317,22 650 DRAW 1,2,190 TO 7,190:DRAW 1,312,190 TO 317,190 660 RETURN 1000 REM === 1: ORBITAL NAVIGATION === 1010 T$="ORBITAL NAVIGATION / SECTOR 7":HC=6:GOSUB 500:GOSUB 600 1020 COLOR 1,6:CIRCLE 1,154,94,108,52:CIRCLE 1,154,94,82,62:CIRCLE 1,154,94,58,36 1030 COLOR 1,2:CIRCLE 1,154,94,17,17:CIRCLE 1,154,94,17,7 1040 DRAW 1,137,94 TO 171,94:DRAW 1,154,77 TO 154,111 1050 COLOR 1,6:FOR I=0 TO 11:A=I*.5236:X1=154+111*COS(A):Y1=94+54*SIN(A) 1060 X2=154+115*COS(A):Y2=94+56*SIN(A):DRAW 1,X1,Y1 TO X2,Y2:NEXT 1070 A1=0:A2=2.1:A3=4.2:FR=0:T0=TI 1080 DO 1090 IF FR>0 THEN BOX 0,OX(0)-2,OY(0)-2,OX(0)+2,OY(0)+2,0,1:BOX 0,OX(1)-2,OY(1)-2,OX(1)+2,OY(1)+2,0,1 1100 IF FR>0 THEN CIRCLE 0,OX(2),OY(2),3,3 1110 X1=154+108*COS(A1):Y1=94+52*SIN(A1) 1120 X2=154+82*COS(A2):Y2=94+62*SIN(A2) 1130 X3=154+58*COS(A3):Y3=94+36*SIN(A3) 1140 COLOR 1,2:BOX 1,X1-2,Y1-2,X1+2,Y1+2,0,1 1150 COLOR 1,6:BOX 1,X2-2,Y2-2,X2+2,Y2+2,45,1 1160 COLOR 1,4:CIRCLE 1,X3,Y3,3,3 1170 OX(0)=X1:OY(0)=Y1:OX(1)=X2:OY(1)=Y2:OX(2)=X3:OY(2)=Y3 1180 COLOR 1,2:CHAR 1,1,22,"A ALT "+STR$(INT(900+200*SIN(A1)))+" V "+STR$(INT(7200+300*COS(A1)))+" " 1190 COLOR 1,6:CHAR 1,1,23,"B RNG "+STR$(INT(2400+400*SIN(A2)))+" TRACK LOCK " 1200 A1=A1+.045:A2=A2-.032:A3=A3+.071:FR=FR+1 1210 IF FR-INT(FR/12)*12=0 THEN COLOR 1,6:CIRCLE 1,154,94,108,52:CIRCLE 1,154,94,82,62:CIRCLE 1,154,94,58,36 1220 GET K$:IF K$="Q" THEN QF=1:RETURN 1230 LOOP UNTIL TI-T0>260 1240 RETURN 2000 REM === 2: 3D ATTITUDE PROJECTION === 2010 T$="VECTOR ATTITUDE / BODY REFERENCE":HC=2:GOSUB 500:GOSUB 600 2020 COLOR 1,2:DRAW 1,150,28 TO 150,160:DRAW 1,56,94 TO 244,94 2030 FOR I=60 TO 240 STEP 20:DRAW 1,I,92 TO I,96:NEXT 2040 FOR I=34 TO 154 STEP 15:DRAW 1,148,I TO 152,I:NEXT 2050 A=0:B=0:G=0:FR=0:T0=TI 2060 DO 2070 SA=SIN(A):CA=COS(A):SB=SIN(B):CB=COS(B):SG=SIN(G):CG=COS(G) 2080 FOR I=0 TO 7 2090 XY=CX(I)*CA-CY(I)*SA:YY=CX(I)*SA+CY(I)*CA 2100 XZ=XY*CB-CZ(I)*SB:ZY=XY*SB+CZ(I)*CB 2110 YZ=YY*CG-ZY*SG:ZZ=YY*SG+ZY*CG 2120 OX(I)=PX(I):OY(I)=PY(I) 2130 PX(I)=150+(XZ*110)/(180+ZZ):PY(I)=94+(YZ*110)/(180+ZZ) 2140 NEXT 2150 IF FR>0 THEN FOR J=1 TO 16:DRAW 0,OX(E1(J)),OY(E1(J)) TO OX(E2(J)),OY(E2(J)):NEXT 2160 COLOR 1,6:FOR J=1 TO 16:DRAW 1,PX(E1(J)),PY(E1(J)) TO PX(E2(J)),PY(E2(J)):NEXT 2170 COLOR 1,2:DRAW 1,150,28 TO 150,160:DRAW 1,56,94 TO 244,94 2180 COLOR 1,4:BOX 0,270,45,300,150,0,1:BOX 1,270,45,300,150,0,0 2190 BH=INT(50+35*SIN(A)):BOX 1,276,145-BH,284,145,0,1 2200 COLOR 1,2:CHAR 1,34,6,"ATT":CHAR 1,34,8,"P "+STR$(INT(A*57)) 2210 CHAR 1,34,10,"Y "+STR$(INT(B*57)):CHAR 1,34,12,"R "+STR$(INT(G*57)) 2220 COLOR 1,4:CHAR 1,1,23,"INERTIAL REF STABLE / SOLUTION ACTIVE" 2230 A=A+.075:B=B+.052:G=G+.061:FR=FR+1 2240 GET K$:IF K$="Q" THEN QF=1:RETURN 2250 LOOP UNTIL TI-T0>260 2260 RETURN 3000 REM === 3: TACTICAL RADAR === 3010 T$="TACTICAL RADAR / AUTOMATIC TRACK":HC=6:GOSUB 500:GOSUB 600 3020 COLOR 1,6:FOR R=24 TO 72 STEP 24:CIRCLE 1,140,94,R,R:NEXT 3030 DRAW 1,140,20 TO 140,168:DRAW 1,66,94 TO 214,94 3040 FOR I=0 TO 11:A=I*.5236:X1=140+68*COS(A):Y1=94+68*SIN(A) 3050 X2=140+75*COS(A):Y2=94+75*SIN(A):DRAW 1,X1,Y1 TO X2,Y2:NEXT 3060 FOR I=1 TO 7 3070 A=RND(1)*6.28:R=20+RND(1)*45:X(I)=140+R*COS(A):Y(I)=94+R*SIN(A) 3080 VX(I)=RND(1)*1.2-.6:VY(I)=RND(1)*1.2-.6:NEXT 3090 COLOR 1,2:FOR I=1 TO 7:BOX 1,X(I)-1,Y(I)-1,X(I)+1,Y(I)+1,0,1:NEXT 3100 A=0:OX(0)=140+72*COS(A):OY(0)=94+72*SIN(A):FR=0:T0=TI 3110 DO 3120 DRAW 0,140,94 TO OX(0),OY(0) 3130 A=A+.11:IF A>6.28 THEN A=A-6.28 3140 X1=140+72*COS(A):Y1=94+72*SIN(A):COLOR 1,6:DRAW 1,140,94 TO X1,Y1 3150 OX(0)=X1:OY(0)=Y1 3160 FOR I=1 TO 7 3170 BOX 0,X(I)-2,Y(I)-2,X(I)+2,Y(I)+2,0,1 3180 X(I)=X(I)+VX(I):Y(I)=Y(I)+VY(I) 3190 DX=X(I)-140:DY=Y(I)-94:IF DX*DX+DY*DY>4300 THEN VX(I)=-VX(I):VY(I)=-VY(I) 3200 COLOR 1,2:BOX 1,X(I)-1,Y(I)-1,X(I)+1,Y(I)+1,0,1 3210 NEXT 3220 IF FR-INT(FR/5)*5=0 THEN COLOR 1,6:FOR R=24 TO 72 STEP 24:CIRCLE 1,140,94,R,R:NEXT:DRAW 1,140,20 TO 140,168:DRAW 1,66,94 TO 214,94 3230 COLOR 1,4:CHAR 1,29,5,"TRACK 07":CHAR 1,29,7,"AZ "+STR$(INT(A*57.3)) 3240 CHAR 1,29,9,"RNG "+STR$(INT(SQR((X(1)-140)^2+(Y(1)-94)^2)*12)) 3250 COLOR 1,2:CHAR 1,29,12,"AUTO":CHAR 1,29,13,"ACQUIRE" 3260 COLOR 1,6:CHAR 1,1,23,"CONTACTS 07 / SWEEP / SCALE 08640" 3270 FR=FR+1:GET K$:IF K$="Q" THEN QF=1:RETURN 3280 LOOP UNTIL TI-T0>260 3290 RETURN 4000 REM === 4: THREE-CHANNEL WAVEFORM ANALYZER === 4010 T$="SIGNAL ANALYSIS / THREE CHANNEL PHASE":HC=2:GOSUB 500:GOSUB 600 4020 COLOR 1,2:DRAW 1,24,55 TO 296,55:DRAW 1,24,100 TO 296,100:DRAW 1,24,145 TO 296,145 4030 CHAR 1,2,5,"A":CHAR 1,2,11,"B":CHAR 1,2,17,"SUM" 4040 FOR I=0 TO 34:X(I)=24+I*8:NEXT 4050 P=0:FR=0:T0=TI 4060 DO 4070 IF FR>0 THEN FOR I=1 TO 34:DRAW 0,X(I-1),Y(I-1) TO X(I),Y(I):DRAW 0,X(I-1),VY(I-1) TO X(I),VY(I):DRAW 0,X(I-1),V(I-1) TO X(I),V(I):NEXT 4080 P=P+.16 4090 FOR I=0 TO 34 4100 Y(I)=55+16*SIN(I*.42+P) 4110 VY(I)=100+16*SIN(I*.42+P+1.7) 4120 V(I)=145+9*SIN(I*.42+P)+9*SIN(I*.42+P+1.7) 4130 NEXT 4140 COLOR 1,4:FOR I=1 TO 34:DRAW 1,X(I-1),Y(I-1) TO X(I),Y(I):NEXT 4150 COLOR 1,6:FOR I=1 TO 34:DRAW 1,X(I-1),VY(I-1) TO X(I),VY(I):NEXT 4160 COLOR 1,2:FOR I=1 TO 34:DRAW 1,X(I-1),V(I-1) TO X(I),V(I):NEXT 4170 COLOR 1,2:DRAW 1,24,55 TO 296,55:DRAW 1,24,100 TO 296,100:DRAW 1,24,145 TO 296,145 4180 COLOR 1,4:CHAR 1,1,22,"FREQ 4.882 GHZ PHASE "+STR$(INT(P*57)) 4190 COLOR 1,6:CHAR 1,1,23,"A+B COMPOSITE / LOCK / NOISE -42 DB" 4200 FR=FR+1:GET K$:IF K$="Q" THEN QF=1:RETURN 4210 LOOP UNTIL TI-T0>260 4220 RETURN 5000 REM === 5: STELLAR TRIANGULATION === 5010 T$="STELLAR NAVIGATION / TRIANGULATION":HC=6:GOSUB 500:GOSUB 600 5020 COLOR 1,2:FOR I=1 TO 32 5030 X(I)=20+RND(1)*275:Y(I)=30+RND(1)*125 5040 IF RND(1)>.75 THEN BOX 1,X(I)-1,Y(I)-1,X(I)+1,Y(I)+1,0,1 5050 IF RND(1)<=.75 THEN BOX 1,X(I),Y(I),X(I)+1,Y(I)+1,0,1 5060 NEXT 5070 COLOR 1,6:DRAW 1,158,28 TO 158,160:DRAW 1,35,94 TO 285,94 5080 FOR I=1 TO 6:V(I)=INT(RND(1)*32)+1:NEXT 5090 FR=1:T0=TI 5100 DO 5110 IF FR<=6 THEN N1=V(FR):N2=V(1+FR-INT(FR/6)*6) 5120 IF FR<=6 THEN COLOR 1,4:CIRCLE 1,X(N1),Y(N1),5,5:DRAW 1,X(N1),Y(N1) TO X(N2),Y(N2) 5130 IF FR<=6 THEN COLOR 1,6:DRAW 1,158,94 TO X(N1),Y(N1) 5140 IF FR<=6 THEN COLOR 1,2:CHAR 1,28,5,"STAR "+STR$(N1):CHAR 1,28,7,"LOCKED" 5150 IF FR>6 THEN COLOR 1,4:CHAR 1,28,9,"SOLUTION":CHAR 1,28,10,"VALID" 5160 COLOR 1,6:CHAR 1,1,23,"RA14H22M DEC+42.18 RESIDUAL .004" 5170 T1=TI 5172 DO 5174 GET K$:IF K$="Q" THEN QF=1:RETURN 5176 LOOP UNTIL TI-T1>16 5180 FR=FR+1:IF FR>9 THEN FR=9 5190 LOOP UNTIL TI-T0>260 5200 RETURN 6000 REM === 6: PROGRESSIVE TRAJECTORY SOLVER === 6010 T$="INTERCEPT TRAJECTORY / SOLUTION BUILD":HC=4:GOSUB 500:GOSUB 600 6020 COLOR 1,6:FOR X=20 TO 300 STEP 40:DRAW 1,X,28 TO X,162:NEXT 6030 FOR Y=30 TO 160 STEP 26:DRAW 1,20,Y TO 300,Y:NEXT 6040 COLOR 1,2:CIRCLE 1,292,156,7,7:DRAW 1,282,156 TO 302,156:DRAW 1,292,146 TO 292,166 6050 X=20:Y1=165:Y2=165:T0=TI:DN=0 6060 DO 6070 NX=X+4:IF NX>300 THEN NX=300 6080 N1=165-.00455*(NX-20)*(300-NX) 6090 N2=165-.00375*(NX-20)*(300-NX)-8*SIN((NX-20)/280*3.14) 6100 COLOR 1,2:DRAW 1,X,Y1 TO NX,N1 6110 COLOR 1,4:DRAW 1,X,Y2 TO NX,N2 6120 X=NX:Y1=N1:Y2=N2:DN=DN+1 6130 COLOR 1,6:CHAR 1,1,22,"T+ "+STR$(DN)+" DELTA-V "+STR$(INT(118-DN*.9))+" M/S " 6140 COLOR 1,4:CHAR 1,1,23,"PREDICTED MISS "+STR$(INT(420-DN*5.7))+" M / CORRECTING " 6150 IF X>=300 THEN COLOR 1,2:CHAR 1,20,20,"SOLUTION CONVERGED":GOTO 6180 6160 T1=TI:DO:LOOP UNTIL TI-T1>2 6170 GET K$:IF K$="Q" THEN QF=1:RETURN 6180 GET K$:IF K$="Q" THEN QF=1:RETURN 6190 LOOP UNTIL TI-T0>260 6200 RETURN 7000 REM === 7: SPACECRAFT SUBSYSTEM BUS === 7010 T$="SPACECRAFT SYSTEM BUS / LIVE ROUTING":HC=2:GOSUB 500:GOSUB 600 7020 COLOR 1,2 7030 BOX 1,8,34,58,64,0,0:CHAR 1,2,5,"REAC" 7040 BOX 1,70,34,120,64,0,0:CHAR 1,10,5,"NAV" 7050 BOX 1,132,34,182,64,0,0:CHAR 1,17,5,"COMM" 7060 BOX 1,194,34,244,64,0,0:CHAR 1,25,5,"LIFE" 7070 BOX 1,256,34,306,64,0,0:CHAR 1,33,5,"PWR" 7080 BOX 1,8,120,58,150,0,0:CHAR 1,2,15,"PROP" 7090 BOX 1,70,120,120,150,0,0:CHAR 1,10,15,"GUID" 7100 BOX 1,132,120,182,150,0,0:CHAR 1,17,15,"THRM" 7110 BOX 1,194,120,244,150,0,0:CHAR 1,25,15,"RADR" 7120 BOX 1,256,120,306,150,0,0:CHAR 1,33,15,"CTRL" 7130 COLOR 1,6:DRAW 1,20,88 TO 294,88:DRAW 1,20,101 TO 294,101 7140 FOR I=33 TO 281 STEP 62:DRAW 1,I,64 TO I,88:DRAW 1,I,101 TO I,120:NEXT 7150 COLOR 1,4:CHAR 1,2,10,"BUS A":CHAR 1,2,12,"BUS B" 7160 XP=20:OP=20:T0=TI 7170 DO 7180 BOX 0,OP-2,84,OP+2,92,0,1:COLOR 1,6:DRAW 1,20,88 TO 294,88 7190 XP=XP+4:IF XP>294 THEN XP=20 7200 COLOR 1,4:BOX 1,XP-2,86,XP+2,90,0,1:OP=XP 7210 N1=INT((XP-20)/62)+1:IF N1>5 THEN N1=5 7220 COLOR 1,2:CHAR 1,1,22,"ROUTE "+STR$(N1)+" POWER BUS 28.4V LOAD 71% " 7230 COLOR 1,6:CHAR 1,1,23,"PRIMARY NOMINAL / REDUNDANT ARMED" 7240 GET K$:IF K$="Q" THEN QF=1:RETURN 7250 LOOP UNTIL TI-T0>260 7260 RETURN 8000 REM === 8: CORE MEMORY MACHINE STATE === 8010 T$="CORE MEMORY / MACHINE STATE SCAN":HC=6:GOSUB 500:GOSUB 600 8020 COLOR 1,6:FOR I=0 TO 11:FOR J=0 TO 6 8030 BOX 1,12+I*24,30+J*19,31+I*24,44+J*19,0,0:NEXT:NEXT 8040 CL=0:OL=0:T0=TI 8050 DO 8060 I=CL-INT(CL/12)*12:J=INT(CL/12) 8070 I2=OL-INT(OL/12)*12:J2=INT(OL/12) 8080 BOX 0,13+I2*24,31+J2*19,30+I2*24,43+J2*19,0,1 8090 COLOR 1,6:BOX 1,12+I2*24,30+J2*19,31+I2*24,44+J2*19,0,0 8100 AD=4096+CL*64:COLOR 1,4:BOX 1,13+I*24,31+J*19,30+I*24,43+J*19,0,1 8110 IF RND(1)>.82 THEN COLOR 1,2:CIRCLE 1,21+I*24,37+J*19,3,3 8120 COLOR 1,6:CHAR 1,1,22,"BANK4 $"+HEX$(AD)+" R"+STR$(J)+" C"+STR$(I)+" VERIFY" 8130 COLOR 1,2:CHAR 1,1,23,"VERIFY / PARITY GOOD / REFRESH SYNC" 8140 OL=CL:CL=CL+1:IF CL>83 THEN CL=0 8150 T1=TI:DO:LOOP UNTIL TI-T1>2 8160 GET K$:IF K$="Q" THEN QF=1:RETURN 8170 LOOP UNTIL TI-T0>260 8180 RETURN 9000 REM --- TRANSITION: HORIZONTAL SCAN WIPE --- 9010 SLOW 9020 FOR W=0 TO 199 STEP 16 9030 BOX 0,0,W,319,W+7,0,1 9040 GET K$:IF K$="Q" THEN QF=1:RETURN 9050 NEXT W 9060 GRAPHIC 1,1:RETURN 9500 REM === 9: POLAR AND LISSAJOUS COMPUTATION === 9510 T$="POLAR MATRIX / LISSAJOUS SOLVER":HC=4:GOSUB 500:GOSUB 600 9520 COLOR 1,2:CIRCLE 1,90,94,58,58:DRAW 1,30,94 TO 150,94:DRAW 1,90,34 TO 90,154 9530 COLOR 1,6:BOX 1,166,34,304,154,0,0:DRAW 1,166,94 TO 304,94:DRAW 1,235,34 TO 235,154 9540 A=0:R=54*SIN(3*A):X1=90+R*COS(A):Y1=94+R*SIN(A) 9550 X2=235+62*SIN(3*A):Y2=94+52*SIN(2*A+1.2):T0=TI 9560 DO 9570 A=A+.075:R=54*SIN(3*A):NX=90+R*COS(A):NY=94+R*SIN(A) 9580 N1=235+62*SIN(3*A):N2=94+52*SIN(2*A+1.2) 9590 COLOR 1,4:DRAW 1,X1,Y1 TO NX,NY 9600 COLOR 1,6:DRAW 1,X2,Y2 TO N1,N2 9610 X1=NX:Y1=NY:X2=N1:Y2=N2 9620 COLOR 1,2:CHAR 1,1,22,"POLAR R=54 SIN(3A) / FIELD STABLE" 9630 COLOR 1,4:CHAR 1,1,23,"LISSAJOUS 3:2 PHASE "+STR$(INT(A*57)) 9640 IF A>6.28 THEN A=0 9650 GET K$:IF K$="Q" THEN QF=1:RETURN 9660 LOOP UNTIL TI-T0>260 9670 RETURN 10000 REM === 10: GRAVITATIONAL WELL === 10010 T$="GRAVITATIONAL WELL / TENSOR FIELD":HC=2:GOSUB 500:GOSUB 600 10020 COLOR 1,6:FOR R=16 TO 96 STEP 16:CIRCLE 1,150,95,R,INT(R*.46):NEXT 10030 FOR I=0 TO 11:A=I*.5236:X1=150+96*COS(A):Y1=95+44*SIN(A):DRAW 1,150,95 TO X1,Y1:NEXT 10040 COLOR 1,2:CIRCLE 1,150,95,7,4:CHAR 1,31,5,"FIELD":CHAR 1,31,7,"MODEL" 10050 A=0:OX(0)=235:OY(0)=95:T0=TI 10060 DO 10070 BOX 0,OX(0)-3,OY(0)-3,OX(0)+3,OY(0)+3,0,1 10080 A=A+.08:R=84-12*SIN(A*.5):X1=150+R*COS(A):Y1=95+(R*.46)*SIN(A) 10090 COLOR 1,4:CIRCLE 1,X1,Y1,3,3:DRAW 1,X1,Y1 TO 150+(R-12)*COS(A+.15),95+((R-12)*.46)*SIN(A+.15) 10100 OX(0)=X1:OY(0)=Y1 10110 COLOR 1,2:CHAR 1,31,9,"CURV":CHAR 1,31,10,STR$(INT(980+80*SIN(A))) 10120 COLOR 1,6:CHAR 1,1,23,"GRADIENT -.984 / PROBE GEODESIC" 10130 GET K$:IF K$="Q" THEN QF=1:RETURN 10140 LOOP UNTIL TI-T0>260 10150 RETURN 11000 REM === 11: AUTOMATED DESCENT COMPUTER === 11010 T$="AUTOMATED DESCENT / TERRAIN SOLUTION":HC=6:GOSUB 500:GOSUB 600 11020 COLOR 1,2:FOR I=0 TO 28:X(I)=20+I*10:Y(I)=146+RND(1)*22:NEXT 11030 FOR I=1 TO 28:DRAW 1,X(I-1),Y(I-1) TO X(I),Y(I):NEXT 11040 COLOR 1,6:DRAW 1,145,151 TO 175,151:DRAW 1,160,145 TO 160,158 11050 DX=105:DY=42:OX(0)=DX:OY(0)=DY:T0=TI 11060 DO 11070 GOSUB 11200 11080 DX=DX+(160-DX)*.045:DY=DY+.85 11090 IF DY>132 THEN DY=132 11100 COLOR 1,4:GOSUB 11300 11110 COLOR 1,6:CHAR 1,1,22,"ALT "+STR$(INT((151-DY)*18))+" M XERR "+STR$(INT(160-DX))+" " 11120 COLOR 1,2:CHAR 1,1,23,"VVEL -4.2 / CLOSED LOOP / PAD LOCK" 11130 OX(0)=DX:OY(0)=DY 11140 GET K$:IF K$="Q" THEN QF=1:RETURN 11150 LOOP UNTIL TI-T0>260 11160 RETURN 11200 REM ERASE OLD LANDER 11210 COLOR 1,1:DRAW 0,OX(0),OY(0)-7 TO OX(0)-7,OY(0)+3 TO OX(0)+7,OY(0)+3 TO OX(0),OY(0)-7 11220 DRAW 0,OX(0)-5,OY(0)+3 TO OX(0)-9,OY(0)+8:DRAW 0,OX(0)+5,OY(0)+3 TO OX(0)+9,OY(0)+8 11230 DRAW 0,OX(0),OY(0)+3 TO OX(0),OY(0)+10:RETURN 11300 REM DRAW NEW LANDER 11310 DRAW 1,DX,DY-7 TO DX-7,DY+3 TO DX+7,DY+3 TO DX,DY-7 11320 DRAW 1,DX-5,DY+3 TO DX-9,DY+8:DRAW 1,DX+5,DY+3 TO DX+9,DY+8 11330 IF RND(1)>.35 THEN COLOR 1,2:DRAW 1,DX,DY+3 TO DX,DY+10 11340 RETURN 12000 REM === 12: HEURISTIC LOGIC MATRIX === 12010 T$="HEURISTIC LOGIC MATRIX / SEARCH":HC=4:GOSUB 500:GOSUB 600 12020 FOR I=0 TO 11:A=I*.5236:X(I)=155+78*COS(A):Y(I)=94+55*SIN(A):NEXT 12030 COLOR 1,6:FOR I=0 TO 11:CIRCLE 1,X(I),Y(I),4,4:NEXT:CIRCLE 1,155,94,8,8 12040 FR=0:T0=TI 12050 DO 12060 N1=FR-INT(FR/12)*12:Z1=FR*5+3:N2=Z1-INT(Z1/12)*12 12070 COLOR 1,2:DRAW 1,X(N1),Y(N1) TO X(N2),Y(N2) 12080 COLOR 1,4:CIRCLE 1,X(N1),Y(N1),7,7:DRAW 1,155,94 TO X(N1),Y(N1) 12090 COLOR 1,6:CHAR 1,30,5,"NODE "+STR$(N1):CHAR 1,30,7,"EVAL" 12100 COLOR 1,2:CHAR 1,1,23,"SEARCH "+STR$(FR)+" / PATH ACCEPTED / MATRIX" 12110 FR=FR+1:IF FR>36 THEN FR=0 12120 T1=TI:DO:LOOP UNTIL TI-T1>5 12130 GET K$:IF K$="Q" THEN QF=1:RETURN 12140 LOOP UNTIL TI-T0>260 12150 RETURN 13000 REM === 13: 80 COLUMN VDC TELEMETRY WALL === 13010 GRAPHIC 5:FAST:PRINT CHR$(147); 13020 T0=TI 13030 DO 13040 PRINT CHR$(19); 13050 PRINT "==============================================================================" 13060 PRINT " COMMAND MODULE / DEEP SPACE TELEMETRY MISSION CLOCK ";TI;" " 13070 PRINT "==============================================================================" 13080 PRINT " NAVIGATION GUIDANCE PROPULSION POWER" 13090 PRINT " SOLUTION VALID MODE CLOSED-LOOP BUS A NOMINAL 28.4 V" 13100 PRINT " AZIMUTH ";INT(RND(1)*360);TAB(25);"X ERR ";INT(RND(1)*20-10);TAB(49);"THRUST ";INT(70+RND(1)*30);"%";TAB(69);INT(60+RND(1)*35);"%" 13110 PRINT " ELEVATION ";INT(RND(1)*180-90);TAB(25);"Y ERR ";INT(RND(1)*20-10);TAB(49);"CHAMBER ";INT(900+RND(1)*80);TAB(69);"STABLE" 13120 PRINT " RANGE ";INT(8000+RND(1)*4000);TAB(25);"RATE ";INT(RND(1)*8);TAB(49);"MIX ";INT(96+RND(1)*6);TAB(69);"BUS-1" 13130 PRINT "------------------------------------------------------------------------------" 13140 PRINT " TRACK SECTOR CHANNEL VECTOR BEARING RANGE QUALITY STATE" 13150 PRINT " ---- ------ ------- ---------- ------- ------- ------- --------" 13160 FOR I=1 TO 7:A$=HEX$(INT(RND(1)*255)):B$=HEX$(INT(RND(1)*4095)):R1=INT(RND(1)*9999):R2=INT(RND(1)*360):R3=INT(RND(1)*9999) 13170 PRINT TAB(2);I;TAB(10);A$;TAB(19);B$;TAB(29);R1;TAB(42);R2;TAB(52);R3;TAB(63);INT(90+RND(1)*10);"%";TAB(73);"LOCK" 13180 NEXT 13190 PRINT "------------------------------------------------------------------------------" 13200 PRINT " MEMORY BANK 04 $E000-$FFFF ALLOC ";INT(40+RND(1)*20);"% PARITY GOOD" 13210 PRINT " RADAR CONTACTS 07 AUTO ACQUIRE / TRACK HOLD" 13220 PRINT " COMPUTER SOLUTION CONVERGED REFERENCE UPDATE ACCEPTED" 13230 PRINT " COMM CARRIER LOCK PHASE ERROR ";INT(RND(1)*9);" DEG" 13240 PRINT "------------------------------------------------------------------------------" 13250 PRINT " SYSTEM STATUS: NOMINAL PRESS Q TO TERMINATE CONSOLE"; 13260 T1=TI 13262 DO 13264 GET K$:IF K$="Q" THEN QF=1:RETURN 13266 LOOP UNTIL TI-T1>8 13270 LOOP UNTIL TI-T0>260 13280 SLOW:GRAPHIC 1,1:RETURN