- LUNAR1 ;PROGRAM MOON
- 100 ;MAIN DRIVER
- S %LN=1 X %TC
- W *7,"ATTENTION APOLLO!",!
- W "FAILURE IN MAIN COMPUTER DESCENT MODULE...",!
- W "MODULE WILL HAVE TO BE LANDED UNDER MANUAL CONTROL",!
- W "YOU MAY ADJUST THE RATE OF BURN BETWEEN 0 AND 100 kg/s",!
- W "AND THE DIRECTIONAL BURN BETWEEN -100 AND +100 kg/s",!
- W "POSITIVE BURNS MAKE THE MODULE TRAVEL TO THE RIGHT",!,*7
- D 300 R !,"DO YOU WANT TO TRY AGAIN ? ",A S PA=0 S:A="Y" PA=1
- Q
- 300 ;DESCENT STAGE
- R !,"TYPE 'RETURN' WHEN YOU ARE READY",A W !,"OK",*7 H 1 D 600
- S H=20000,X=34,V=1000,F=4800,T=0,G=16400,M=6000
- S CR=0,D=0,DI="->",XV=200,%LN=1,%CO=1 X %TP
- W "TIME(s) HEIGHT(m) VELOCITY(m/s) FUEL(kg) BURN(kg/s) DIRECTION (kg/s)",!
- 314 W ?2,T,?8,H,?21,V," + ",XV,DI,?40,F
- R ?50,"?",B:5,?57,"?",BH:5," "
- D:(B>100)!(B<0) 500 S BI=BH D:BH>100!(BH<0) 2000
- F K=1:1:5 D 400,800 G:+CR=1 327 G:H'>0 321 G:F'>0 371
- D 700 S T=T+5 G 314
- 321 S H=-1000 D 700 W *7,!!,"TOUCHDOWN AT ",T+K," seconds",!,"LANDING VELOCITY ",V,"m/s",!
- W "HORIZONTAL ",XV,"m/s",!,"FUEL ",F,"kg",!
- G:(V>8)!(XV>2) 325 W *7,*7,*7,"CONGRATULATIONS ON A SAFE LANDING !",! Q
- 325 G:V>20 327 W "WOULD YOU PLEASE CLEAN BUZZ ALDRIN OFF THE WALLS!",! Q
- 327 W "YOU HAVE ACHEIVED IMMORTALITY - THEY ARE GOING TO NAME THE CRATER AFTER YOU !",! Q
- 371 S %LN=1,%CO=1 X %TP W "TIME(s) HEIGHT(m) VELOCITY(m/s) ",?50,"** OUT OF FUEL ***",!,*7,*7
- 381 F J=1:1:5 S B=0 D 400,800 G:+CR=1 327 D 700 G:H'>0 321
- S T=T+5,%LN=1,%CO=78 X %TP W ! W ?2,T,?8,H,?21,V," + ",XV,DI G 381
- Q
- 400 S B=B-.25+($P($H,",",2)#6/10) I B<0 S B=0
- I B>F S B=F
- S H=H-V
- S C=H\1000+100
- S V=V+$J(G/(C*C)-(P*B/M),0,2)
- S M=M-B,F=F-B
- Q
- 500 ;ILLEGAL BURN
- S:B<0 B=0 S:B>100 B=100
- Q
- 600 ;DISPLAY BACKGROUND
- S %LN=1 X %TC
- S NO=1
- S %LN=24 X %TC
- F Z=1:1:80 W "_"
- F Y=1:1:10 I $N(^MON(+NO,+Y,+-1))>0 F X=34:1:109 I $D(^(+X)) S %LN=25-Y,%CO=X-31 X %TP W ^(+X)
- S Y=38,X=34 X $P($T(720)," ",2,99) S W=X,Z=38
- Q
- 700 ;DISPLAY LUNAR MODULE
- S Y=54-(H\1000) S:Y>55 Y=55 S:Y<38 Y=38 I Y=Z,X=W G 725
- S %LN=Z-33,%CO=W-30 X %TP W " " S %LN=Z-32,%CO=W-31 X %TP W " " S %LN=Z-31,%CO=W-31 X %TP W " "
- 720 S %LN=Y-33,%CO=X-30 X %TP W "_" S %LN=Y-32,%CO=X-31 X %TP W "(#)" S %LN=Y-31,%CO=X-31 X %TP W "/-\"
- 725 S Z=Y,W=X S %LN=1,%CO=1 X %TP W !
- Q
- 800 I BI>F S BH=$J(BH/BI*F,0,2),BI=F
- S XV=XV+$J(P-100*BH/M+($P($H,",",2)#5/3)-.5,0,2) S DI="->" S:XV<0 DI="<-" S M=M-BI,F=F-BI
- S D=D+XV,X=D\1000+34,X2=X-34 S:X<34 X=34 S:X>109 X=109
- ;Q:H>5000
- I H<0 S H=0
- I $D(^MON(NO,H\1000+1,X+1)) D 900
- Q
- 900 S %LN=Y-31,%CO=X-31 X %TP W "\M/"
- S %LN=%LN-1 X %TP W "<@>"
- S %LN=%LN-1 X %TP W "/W\"
- S %LN=1,%CO=1 X %TP,%TCL
- S %LN=2 X %TP,%TCL
- W *7,*7,*7,!!,"CRASH LANDING ON MOON...NO SURVIVORS",!!
- S H=0,CR=1
- Q
- 2000 ;DIRECTIONAL BURN CORRECTION
- S:BH<0 BI=-BI S:BH>100 BH=100,BI=100 S:BH<-100 BI=100,BH=-100
- Q