NITETIME GOPHER 1.0 - Lake Koshkonong Node
Server: gopher.nitetime.net:70    Selector: /archive/mechanical-minds/c128/demo2-cinematic-fixed.bas
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
SIGNAL ACTIVE   //   WISCO 608   //   Gateway locked to gopher.nitetime.net