The Museum of HP Calculators
This program is by William F Graves and is used here by permission.
This program is supplied without representation or warranty of any kind. William F Graves and The Museum of HP Calculators therefore assume no responsibility and shall have no liability, consequential or otherwise, of any kind arising from the use of this program material or any part thereof.
This program is a rendition of the historical favorite calculator game intended to simulate the physics of a controlled decent towards a planet or moon. The coefficients are for the Earth's moon but can be set to other heavenly bodies. This routine uses the TWO line display available on the HP-33S and HP-35S new calculators. Variable names and section labels have been selected to make the program easy to follow. Check sum and length checks are available for each LBL section. This version uses the same physics and initialization variables as that of the original HP-25C routine but with the look and feel optimized for the new calculator. A new concept introduced is a "Set and Forget" burn-rate that extracts the some lbs/sec fuel from the tank each cycle through the program until changed by the pilot.
Shown in each section is the basis equation and the simplified equation for t=1 delta calculations per cycle of the loop.
H=Height (ft) V=Velocity (ft/s) A=acceleration (ft/s2) F=FuelTank (lbs) B=Burn Rate (lbs/s) T=Time (sec) New Height H1=H0+Vt+1/2×(At2) and for t=1 H1=H0+V+A/2 New Velocity V1=V0+At and for t=1 V1=V0+A New Fuel F1=F0-Bt and for t=1 F1=F0-B MOON Acceleration is considered negative down DECENT Velocity is considered negative A=5ft/sec which is about 1/6 of Earth gravity 32ft/sec
Thrust is a force F=ma or F/m=a so Thrust is treated as a positive acceleration. The physics of thrust has been simplified but is still functionally valid. This version uses a 60lb Fuel tank and the Pilot sets the Burn Rate on each cycle.
I hope you learned as much and enjoy this as much as I have. I did this work on vacation at the beach in Ft. Myers FL after receiving my HP-35S from Walmart.com for $59. I also,just received a fully functional 1972 vintage HP-35C bought on Ebay for under $60. Sweet.
L001 LBL L Lander Initiation L002 SF 10 Set Flag 10 to View EQN instead of execute them L003 HP35-LANDER [EQN] then [RCL]H,[RCL]P,[RCL]3,[RCL]5 ... etc L004 PSE Pause and view EQN L005 500 Initial Height H ft L006 STO H L007 -50 Initial Velocity V ft/sec enter as 50[+/-] L008 STO V L009 60 Initial Fuel F lbs L010 STO F L011 0 Initial Burn Rate B lbs/sec L012 STO B L013 0 Initial Net acceleration A L014 STO A L015 0 Initial Time T seconds L016 STO T Check Sum and Length [CK=E34D LN=70] M001 LBL M Main Control Section M002 FIX 1 Remove clutter from Display M003 INSRUMENT Instrument Panel Data to follow M004 PSE Pause and display M005 RCL H M006 x<0? Check if Landing has occurred 0 or negative M007 0 Set H=0 if landed to avoid display negative height M008 RCL V M009 PSE Pause and display H on Line-y and V on line-x M010 PSE M011 PSE M012 x⇔y Swap H into x register M013 x=0? If H=0 then GTO LAND MESSAGE M014 GTO E006 M015 CHECK-FUEL [EQN][RCL]C[RCL]H.. Fuel Tank level to follow M016 PSE M017 VIEW F Display Fuel Tank Level lbs remaining for 1 second M018 PSE M019 BURN-RATE [EQN][RCL]B[RCL]U... Burn Rate setup to follow M020 PSE M021 VIEW B Display Burn-Rate lbs/sec for 1 second M022 PSE M023 RCL B This section performs a count down to PILOT [R/S] M024 3 M025 x⇔y Place Current burn rate B in Line-x and count in Line-y M026 PSE M027 2 M028 x⇔y M029 PSE M030 1 M031 x⇔y M032 PSE M033 0 M034 x⇔y M035 PSE Pilot has 3 seconds to hit [R/S] and enter M036 PSE new Burn-Rate M037 PSE Check Sum and Length [CK=ADFC LN=145] C001 LBL C Calculation Section for Physics C002 ABS Makes sure PILOT input was positive C003 STO B C004 10 Set maximum burn-rate limit C005 x<y? If PILOT Burn-Rate is greater than limit set=limit C006 STO B C007 RCL B C008 RCL F C009 x<y? If PILOT Burn-Rate > than remaining fuel then C010 GTO E001 Go print msg and set to remaining fuel level C011 x⇔y C012 STO- F Subtract Burn B from Tank F C013 RCL B C013-C018 Calculate the new acceleration A C014 2 A1= Burn×2 + gravity: It takes 2.5lbs fuel to C015 x neutralize gravity C016 -5 Earth gravity 32ft/sec 1/6 Moon gravity about -5ft/sec C017 + C018 STO A Store new net acceleration vector C019 2 C019-C028 Calculates new height and velocity C020 ÷ C021 RCL H C022 + C023 RCL V C024 + H1=Ho+Vt+A/2(t2) since t=1 H1=Ho+V+A/2 C025 RCL A each cycle new height C026 STO+ V V1=Vo+At t=1 calculates new velocity C027 R↓ C028 STO H Store new height C029 1 C030 STO+ T Increment time counter - does nothing looks cool C031 VIEW T C032 PSE Show time counter C033 GTO M001 Return to main control section loop Check Sum and Length [CK=77A3 LN=106] E001 LBL E E002 PARTIAL-BURN Note partial burn executed and return to C section E003 PSE E004 RCL F This will get stuffed into Burn upon return E005 GTO C001 E006 5 Set maximum landing velocity is less then or = 5ft/sec E007 RCL V E008 ABS Set positive to E009 x>y? check magnitude relative to crash velocity E010 CRASH If Velocity > than Vmax View msg "CRASH" else Skip E011 PSE E012 LAND Land if WIN - A WIN will msg "LAND" only and skip CRASH E013 PSE E014 CF 10 Will return [EQN] mode to normal instead of msg display E015 ENG 3 Return to favorite display mode E016 0 E017 ENTER↑ E018 STOP Check Sum and Length [CK=C278 LN=77]