Лунолёты (HP 35s)

| рубрика «Заметки» | автор lvg_brest
Метки: ,

Игровые программы из серии «Путь к Земле» для HP 35s

Лунолёт-1

A001    LBL A   C:
A002    CLEAR VARS
A003    SF 10
A004    eqn LUNOLET-1
A005    PSE
A006    2250
A007    STO W
A008    400
A009    STO F
A010    1.62
A011    STO G
A012    3660
A013    STO C
A014    29.43
A015    STO J
A016    RCL H   A:
A017    0.001
A018    +
A019    x>=0
A020    GTO A043
A021    RCL G
A022    RCL P
A023    RCL D
A024    x
A025    -
A026    RCL H
A027    x
A028    2
A029    x
A030    RCL U
A031    x^2
A032    +
A033    SQRT
A034    RCL U
A035    -
A036    RCL H
A037    2
A038    x
A039    xy
A040    /
A041    STO T
A042    GTO A165
A043    RCL H
A044    ABS
A045    0.001
A046    -
A047    x>=0
A048    GTO A071
A049    0
A050    STO H
A051    RCL E
A052    x=0
A053    GTO A070
A054    0
A055    STO E
A056    RCL U
A057    ABS
A058    12.5
A059    -
A060    x>0
A061    GTO A066
A062    eqn LANDING GOOD
A063    PSE
A064    XEQ A206
A065    GTO A204
A066    eqn LANDING BAD
A067    PSE
A068    XEQ A206
A069    GTO A204
A070    GTO A122
A071    1
A072    STO E
A073    RCL P
A074    ABS
A075    100
A076    -
A077    x>0
A078    GTO A088
A079    RCL P
A080    ABS
A081    25
A082    -
A083    x<=0
A084    GTO A094
A085    eqn OVERLOAD
A086    PSE
A087    GTO A094
A088    eqn OVERLOAD
A089    PSE
A090    eqn YOU DIED
A091    PSE
A092    XEQ A206
A093    GTO A204
A094    RCL P
A095    ABS
A096    RCL J
A097    -
A098    x<0
A099    GTO A108
A100    0
A101    STO M
A102    RCL P
A103    ABS
A104    RCL J
A105    -
A106    STO T
A107    GTO A154
A108    RCL F
A109    0.001
A110    -
A111    x>=0
A112    GTO A122
A113    0
A114    STO F
A115    STO M
A116    eqn FUEL ENDED
A117    PSE
A118    RCL C
A119    STO T
A120    XEQ A206
A121    GTO A142
A122    XEQ A206    S:
A123    R/S
A124    INPUT M
A125    100
A126    -
A127    x<=0
A128    GTO A132
A129    eqn ERROR INPUT
A130    PSE
A131    GTO A124
A132    INPUT T
A133    x<>0
A134    GTO A138
A135    eqn ERROR INPUT
A136    PSE
A137    GTO A132
A138    x>0
A139    GTO A142
A140    eqn REVERSE
A141    PSE
A142    RCL T   E:
A143    SGN
A144    RCL M
A145    SGN
A146    x
A147    STO D
A148    RCL T
A149    ABS
A150    STO T
A151    RCL M
A152    ABS
A153    STO M
A154    RCL M   G:
A155    RCL T
A156    /
A157    STO Q
A158    RCL C
A159    x
A160    RCL W
A161    RCL F
A162    +
A163    /
A164    STO P
A165    RCL R   X:
A166    RCL T
A167    +
A168    STO R
A169    RCL P
A170    RCL D
A171    x
A172    RCL G
A173    -
A174    RCL T
A175    x
A176    RCL U
A177    +
A178    STO B
A179    RCL U
A180    +
A181    RCL T
A182    x
A183    2
A184    /
A185    RCL H
A186    +
A187    STO H
A188    RCL B
A189    STO U
A190    RCL F
A191    RCL Q
A192    RCL T
A193    x
A194    -
A195    STO F
A196    x>=0
A197    GTO A016
A198    RCL F
A199    RCL Q
A200    /
A201    STO T
A202    GTO A165
A203    GTO A016
A204    R/S B:
A205    GTO A001
A206    VIEW H
A207    PSE
A208    VIEW U
A209    PSE
A210    RCL R
A211    RCL F
A212    RCL U
A213    RCL H
A214    RTN
---------
CK=213B
LN=792

Запуск: XEQ A

После останова отображается:

  • Н - высота, м
  • U - вертикальная скорость, м/с

Нажать: R/S

На запрос ввести:

  • M - расход топлива, кг
  • Т - время маневра, с
  • Реверс тяги: ввести время со знаком минус.

Нажать: R/S

После останова отображается:

  • Н - высота, м
  • U - вертикальная скорость, м/с
  • В регистрах стека (прокручивать нажатием кнопки R↓):
  • X - высота, м
  • Y - вертикальная скорость, м/с
  • Z - остаток топлива, кг
  • T - суммарное время полета, с

В регистрах памяти:

  • H - высота, м
  • U - вертикальная скорость, м/с
  • F - остаток топлива, кг
  • R - суммарное время полета, с

Ограничения:

  • Расход топлива за маневр не может превышать 100 кг.

Математическая модель:

C:
 PRINT "LUNOLET-1"

 G = 1.62
 W = 2250
 C = 3660
 J = 29.43
 F = 400
 R = 0
 H = 0
 U = 0
 E = 0

A:
  IF H < -.001 THEN
    T = 2 * H / (SQR(U * U + 2 * H * (G - P * D)) - U)
    GOTO X
  END IF

  IF ABS(H) <= .001 THEN
    H = 0
    IF E = 1 THEN
      E = 0
      SELECT CASE ABS(U)
        CASE 0 TO 12
          PRINT "Landing good"
          PRINT H
          PRINT U
          PRINT F
          PRINT R
          GOTO B
        CASE IS > 12.5
          PRINT "Landing bad"
          PRINT H
          PRINT U
          PRINT F
          PRINT R
          GOTO B
          END
      END SELECT
    END IF
    GOTO S
  END IF
  E = 1

  SELECT CASE ABS(P)
    CASE 25 TO 100
      PRINT "Overload"
    CASE IS > 100
      PRINT "Overload"
      PRINT "You died": GOTO B
      END
  END SELECT

  IF ABS(P) >= J THEN
    M = 0
    T = ABS(P) - J
    GOTO G
  END IF

  IF F >= .001 THEN GOTO S
  F = 0
  PRINT "Fuel ended"
  M = 0
  T = C
  PRINT H
  PRINT U
  GOTO E

S:
  PRINT H
  PRINT U
  PRINT F
  PRINT R

  INPUT M
  IF M > 100 THEN PRINT "Error input": GOTO S
  INPUT T
  IF T = 0 THEN PRINT "Error input": GOTO S
  IF T < 0 THEN PRINT "Reverse"

E:
  D = SGN(T) * SGN(M)
  T = ABS(T)
  M = ABS(M)

G:
  Q = M / T
  P = Q * C / (W + F)

X:
  R = R + T
  B = U + (P * D - G) * T
  H = H + (U + B) * T / 2
  U = B
  F = F - Q * T

  IF F < 0 THEN T = F / Q: GOTO X
GOTO A

B:
  A$ = INPUT$(1)
  GOTO C

Лунолёт-2

B001    LBL B   C:
B002    CLEAR VARS
B003    SF 10
B004    eqn LUNOLET-2
B005    PSE
B006    2250
B007    STO W
B008    1000
B009    STO F
B010    1.62
B011    STO G
B012    3660
B013    STO C
B014    29.43
B015    STO J
B016    RCL H   A:
B017    0.001
B018    +
B019    x>=0
B020    GTO B044
B021    RCL G
B022    RCL P
B023    RCL A
B024    COS
B025    x
B026    -
B027    RCL H
B028    x
B029    2
B030    x
B031    RCL U
B032    x^2
B033    +
B034    SQRT
B035    RCL U
B036    -
B037    RCL H
B038    2
B039    x
B040    xy
B041    /
B042    STO T
B043    GTO B176
B044    RCL H
B045    ABS
B046    0.001
B047    -
B048    x>=0
B049    GTO B076
B050    0
B051    STO H
B052    RCL E
B053    x=0
B054    GTO B075
B055    0
B056    STO E
B057    RCL U
B058    x^2
B059    RCL V
B060    x^2
B061    +
B062    SQRT
B063    12.5
B064    -
B065    x>0
B066    GTO B071
B067    eqn LANDING GOOD
B068    PSE
B069    XEQ B234
B070    GTO B232
B071    eqn LANDING BAD
B072    PSE
B073    XEQ B234
B074    GTO B232
B075    GTO B127
B076    1
B077    STO E
B078    RCL P
B079    ABS
B080    100
B081    -
B082    x>0
B083    GTO B093
B084    RCL P
B085    ABS
B086    25
B087    -
B088    x<=0
B089    GTO B099
B090    eqn OVERLOAD
B091    PSE
B092    GTO B099
B093    eqn OVERLOAD
B094    PSE
B095    eqn YOU DIED
B096    PSE
B097    XEQ B234
B098    GTO B232
B099    RCL P
B100    ABS
B101    RCL J
B102    -
B103    x<0
B104    GTO B113
B105    0
B106    STO M
B107    RCL P
B108    ABS
B109    RCL J
B110    -
B111    STO T
B112    GTO B165
B113    RCL F
B114    0.001
B115    -
B116    x>=0
B117    GTO B127
B118    0
B119    STO F
B120    STO M
B121    eqn FUEL ENDED
B122    PSE
B123    RCL C
B124    STO T
B125    XEQ B234
B126    GTO B159
B127    XEQ B234    S:
B128    R/S
B129    INPUT M
B130    100
B131    -
B132    x<=0
B133    GTO B136
B134    XEQ B247
B135    GTO B129
B136    INPUT T
B137    x>0
B138    GTO B141
B139    XEQ B247
B140    GTO B136
B141    INPUT A
B142    RCL H
B143    x>0
B144    GTO B159
B145    RCL A
B146    85
B147    -
B148    x<0
B149    GTO B152
B150    XEQ B247
B151    GTO B141
B152    RCL A
B153    85
B154    +
B155    x>0
B156    GTO B159
B157    XEQ B247
B158    GTO B141
B159    RCL T   E:
B160    ABS
B161    STO T
B162    RCL M
B163    ABS
B164    STO M
B165    RCL M   G:
B166    RCL T
B167    /
B168    STO Q
B169    RCL C
B170    x
B171    RCL W
B172    RCL F
B173    +
B174    /
B175    STO P
B176    RCL A   X:
B177    SIN
B178    RCL T
B179    x
B180    RCL P
B181    x
B182    RCL V
B183    +
B184    STO B
B185    RCL V
B186    +
B187    RCL T
B188    x
B189    2
B190    /
B191    RCL L
B192    +
B193    STO L
B194    RCL B
B195    STO V
B196    RCL A
B197    COS
B198    RCL P
B199    x
B200    RCL G
B201    -
B202    RCL T
B203    x
B204    RCL U
B205    +
B206    STO B
B207    RCL U
B208    +
B209    RCL T
B210    x
B211    2
B212    /
B213    RCL H
B214    +
B215    STO H
B216    RCL B
B217    STO U
B218    RCL F
B219    RCL Q
B220    RCL T
B221    x
B222    -
B223    STO F
B224    x>=0
B225    GTO B016
B226    RCL F
B227    RCL Q
B228    /
B229    STO T
B230    GTO B176
B231    GTO B016
B232    R/S B:
B233    GTO B001
B234    VIEW H
B235    PSE
B236    VIEW U
B237    PSE
B238    VIEW V
B239    PSE
B240    VIEW L
B241    PSE
B242    RCL L
B243    RCL V
B244    RCL U
B245    RCL H
B246    RTN
B247    eqn ERROR INPUT
B248    PSE
B249    RTN

---------
CK=AB9E
LN=885

Запуск: XEQ B

После останова отображается:

  • Н - высота, м
  • U - вертикальная скорость, м/с
  • V - горизонтальная скорость, м/с
  • L - пройденное расстояние, м
  • Нажать: R/S
  • На запрос ввести:
  • M - расход топлива, кг
  • Т - время маневра, с
  • A - угол, градусы

Нажать: R/S

После останова отображается:

  • Н - высота, м
  • U - вертикальная скорость, м/с
  • V - горизонтальная скорость, м/с
  • L - пройденное расстояние, м
  • В регистрах стека (прокручивать нажатием кнопки R↓):
  • X - высота, м
  • Y - вертикальная скорость, м/с
  • Z - горизонтальная скорость, м/с
  • T - пройденное расстояние, м

В регистрах памяти:

  • H - высота, м
  • U - вертикальная скорость, м/с
  • V - горизонтальная скорость, м/с
  • L - пройденное расстояние, м
  • F - остаток топлива, кг

Ограничения:

  • Расход топлива за маневр не может превышать 100 кг.

Математическая модель:

C:
 PRINT "LUNOLET-2"

 PI# = 3.1415926#
 G = 1.62
 W = 2250
 C = 3660
 J = 29.43
 F = 1000
 H = 0
 U = 0
 V = 0
 A = 0
 L = 0
 E = 0

A:
  IF H < -.001 THEN
    T = 2 * H / (SQR(U * U + 2 * H * (G - P * COS(A))) - U)
    GOTO X
  END IF

  IF ABS(H) <= .001 THEN
    H = 0
    IF E = 1 THEN
      E = 0
       SELECT CASE SQR(U * U + V * V)
        CASE 0 TO 12
          PRINT "Landing good"
          PRINT H
          PRINT U
          PRINT V
          PRINT L
          GOTO B
        CASE IS > 12.5
          PRINT "Landing bad"
          PRINT H
          PRINT U
          PRINT V
          PRINT L
          GOTO B
          END
      END SELECT
    END IF
    GOTO S
  END IF
  E = 1

  SELECT CASE ABS(P)
    CASE 25 TO 100
      PRINT "Overload"
    CASE IS > 100
      PRINT "Overload"
      PRINT "You died": GOTO B
      END
  END SELECT

  IF ABS(P) >= J THEN
    M = 0
    T = ABS(P) - J
    GOTO G
  END IF

  IF F >= .001 THEN GOTO S
  F = 0
  PRINT "Fuel ended"
  M = 0
  T = C
  PRINT H
  PRINT U
  PRINT V
  PRINT L
  GOTO E

S:
  PRINT H
  PRINT U
  PRINT V
  PRINT L

  INPUT M
  IF M > 100 THEN PRINT "Error input": GOTO S
  INPUT T
  IF T = 0 THEN PRINT "Error input": GOTO S
  INPUT A
  IF H = 0 THEN
    IF A > 85 THEN PRINT "Error input": GOTO S
    IF A < -85 THEN PRINT "Error input": GOTO S
  END IF
  A = A * PI# / 180

E:
  T = ABS(T)
  M = ABS(M)

G:
  Q = M / T
  P = Q * C / (W + F)

X:
  B = V + P * T * SIN(A)
  L = L + (V + B) * T / 2
  V = B
  B = U + (P * COS(A) - G) * T
  H = H + (U + B) * T / 2
  U = B
  F = F - Q * T

  IF F < 0 THEN T = F / Q: GOTO X
GOTO A

B:
  A$ = INPUT$(1)
  GOTO C

Лунолёт-3

C001    LBL C   C:
C002    CLEAR VARS
C003    SF 10
C004    eqn LUNOLET-3
C005    PSE
C006    2250
C007    STO W
C008    3500
C009    STO F
C010    1.62
C011    STO G
C012    3660
C013    STO C
C014    29.43
C015    STO J
C016    1738000
C017    STO R
C018    STO D
C019    x^2
C020    RCL G
C021    x
C022    STO K
C023    RCL H   A:
C024    x>=0
C025    GTO C043
C026    RCL T   E:
C027    ABS
C028    2
C029    /
C030    RCL H
C031    SGN
C032    x
C033    STO T
C034    XEQ C195
C035    RCL H
C036    ABS
C037    0.001
C038    -
C039    x<0
C040    GTO C026
C041    0
C042    STO H
C043    RCL H
C044    x=0
C045    GTO C047
C046    GTO C071
C047    RCL E
C048    x=0
C049    GTO C070
C050    0
C051    STO E
C052    RCL U
C053    x^2
C054    RCL V
C055    x^2
C056    +
C057    SQRT
C058    12.5
C059    -
C060    x>0
C061    GTO C066
C062    eqn LANDING GOOD
C063    PSE
C064    XEQ C296
C065    GTO C294
C066    eqn LANDING BAD
C067    PSE
C068    XEQ C296
C069    GTO C294
C070    GTO C120
C071    1
C072    STO E
C073    RCL P
C074    ABS
C075    100
C076    -
C077    x>0
C078    GTO C088
C079    RCL P
C080    ABS
C081    25
C082    -
C083    x<=0
C084    GTO C094
C085    eqn OVERLOAD
C086    PSE
C087    GTO C094
C088    eqn OVERLOAD
C089    PSE
C090    eqn YOU DIED
C091    PSE
C092    XEQ C296
C093    GTO C294
C094    RCL P
C095    ABS
C096    RCL J
C097    -
C098    x<0
C099    GTO C108
C100    0
C101    STO M
C102    RCL P
C103    ABS
C104    RCL J
C105    -
C106    STO T
C107    GTO C170
C108    RCL F
C109    0.001
C110    -
C111    x>=0
C112    GTO C120
C113    0
C114    STO F
C115    STO M
C116    eqn FUEL ENDED
C117    PSE
C118    100
C119    STO T
C120    RCL L   S:
C121    COS
C122    x>=0
C123    GTO C127
C124    eqn BACK SIDE
C125    PSE
C126    GTO C130
C127    eqn FRONT SIDE
C128    PSE
C129    XEQ C296
C130    R/S
C131    RCL F
C132    x=0
C133    GTO C170
C134    INPUT M
C135    100
C136    -
C137    x<=0
C138    GTO C141
C139    XEQ C316
C140    GTO C134
C141    INPUT T
C142    x>0
C143    GTO C146
C144    XEQ C316
C145    GTO C141
C146    100
C147    -
C148    x<=0
C149    GTO C152
C150    XEQ C316
C151    GTO C141
C152    INPUT A
C153    RCL H
C154    x>0
C155    GTO C170
C156    RCL A
C157    85
C158    -
C159    x<0
C160    GTO C163
C161    XEQ C316
C162    GTO C152
C163    RCL A
C164    85
C165    +
C166    x>0
C167    GTO C170
C168    XEQ C316
C169    GTO C152
C170    RCL M   G:
C171    RCL T
C172    /
C173    STO Q
C174    RCL C
C175    x
C176    RCL W
C177    RCL F
C178    +
C179    /
C180    STO P
C181    RCL H
C182    x=0
C183    GTO C186
C184    XEQ C195
C185    GTO C023
C186    RCL P
C187    RCL A
C188    COS
C189    x
C190    RCL G
C191    -
C192    x<=0
C193    GTO C139
C194    GTO C184
C195    RCL P   X:
C196    RCL A
C197    SIN
C198    x
C199    RCL U
C200    RCL V
C201    x
C202    RCL D
C203    /
C204    -
C205    RCL T
C206    x
C207    RCL V
C208    +
C209    STO B
C210    RCL V
C211    RCL B
C212    +
C213    RCL T
C214    x
C215    RCL D
C216    2
C217    x
C218    /
C219    RCL O
C220    +
C221    STO O
C222    π
C223    2
C224    x
C225    -
C226    x<0
C227    GTO C229
C228    STO O
C229    RCL O
C230    180
C231    x
C232    π
C233    /
C234    STO L
C235    RCL O
C236    RCL R
C237    x
C238    1000
C239    /
C240    STO N
C241    RCL B
C242    STO V
C243    RCL P
C244    RCL A
C245    COS
C246    x
C247    RCL V
C248    x^2
C249    RCL D
C250    /
C251    +
C252    RCL K
C253    RCL D
C254    x^2
C255    /
C256    -
C257    RCL T
C258    x
C259    RCL U
C260    +
C261    STO B
C262    RCL U
C263    +
C264    RCL T
C265    x
C266    2
C267    /
C268    RCL D
C269    +
C270    STO D
C271    RCL R
C272    -
C273    STO H
C274    RCL B
C275    STO U
C276    RCL K
C277    RCL D
C278    /
C279    SQRT
C280    STO S
C281    RCL F
C282    RCL Q
C283    RCL T
C284    x
C285    -
C286    STO F
C287    x>=0
C288    RTN
C289    RCL F
C290    RCL Q
C291    /
C292    STO T
C293    GTO C195
C294    R/S B:
C295    GTO C001
C296    RCL H
C297    x>0
C298    GTO C 301
C299    0
C300    STO S
C301    VIEW H
C302    PSE
C303    VIEW U
C304    PSE
C305    VIEW V
C306    PSE
C307    VIEW S
C308    PSE
C309    VIEW L
C310    PSE
C311    RCL S
C312    RCL V
C313    RCL U
C314    RCL H
C315    RTN
C316    eqn ERROR INPUT
C317    PSE
C318    RTN
---------
CK=648E
LN=1127

Запуск: XEQ C

После останова отображается:

  • Н - высота, м
  • U - вертикальная скорость, м/с
  • V - горизонтальная скорость, м/с
  • S - первая космическая скорость для данной высоты, м/с
  • L - пройденное угловое расстояние, градусы

Нажать: R/S

На запрос ввести:

  • M - расход топлива, кг
  • Т - время маневра, с
  • A - угол, градусы

Нажать: R/S

После останова отображается:

  • Н - высота, м
  • U - вертикальная скорость, м/с
  • V - горизонтальная скорость, м/с
  • S - первая космическая скорость для данной высоты, м/с
  • L - пройденное угловое расстояние, градусы

В регистрах стека (прокручивать нажатием кнопки R↓):

  • X - высота, м
  • Y - вертикальная скорость, м/с
  • Z - горизонтальная скорость, м/с
  • T - первая космическая скорость для данной высоты, м/с

В регистрах памяти:

  • H - высота, м
  • U - вертикальная скорость, м/с
  • V - горизонтальная скорость, м/с
  • L - пройденное угловое расстояние, градусы
  • N - пройденное угловое расстояние, км
  • F - остаток топлива, кг

Ограничения:

  • Расход топлива за маневр не может превышать 100 кг.
  • Время маневра не может превышать 100 с.
  • При H=0 блокируется недостаточная для взлета тяга.
  • При H=0 блокируется некорректный для взлета угол.

Математическая модель:

C:
 PRINT "LUNOLET-3"

 PI# = 3.1415926#
 G = 1.62
 W = 2250
 C = 3660
 J = 29.43
 R = 1738000
 F = 3500
 V = 0
 U = 0
 O = 0
 A = 0
 E = 0
 L = 0
 H = 0

 D = R
 K = G * R * R

A:
  IF H < 0 THEN
E:
    T = ABS(T) / 2 * SGN(H)
    GOSUB X
    IF ABS(H) < .001 THEN
      GOTO E
    END IF
    H = 0
  END IF

  IF H = 0 THEN
    IF E = 1 THEN
      E = 0
       SELECT CASE SQR(U * U + V * V)
        CASE 0 TO 12
          PRINT "Landing good"
          PRINT H
          PRINT U
          PRINT V
          PRINT L
          GOTO B
        CASE IS > 12.5
          PRINT "Landing bad"
          PRINT H
          PRINT U
          PRINT V
          PRINT L
          GOTO B
          END
      END SELECT
    END IF
    GOTO S
  END IF
  E = 1

  SELECT CASE ABS(P)
    CASE 25 TO 100
      PRINT "Overload"
    CASE IS > 100
      PRINT "Overload"
      PRINT "You died": GOTO B
      END
  END SELECT

  IF ABS(P) >= J THEN
    M = 0
    T = ABS(P) - J
    GOTO G
  END IF

 IF F >= .001 THEN GOTO S
  F = 0
  PRINT "Fuel ended"
  M = 0
  T = 100

S:
   IF COS(O) >= 0 THEN
    PRINT "Front side"
   ELSE
    PRINT "Back side"
   END IF

   PRINT H
   PRINT U
   PRINT V
   PRINT L
   PRINT S

   IF F = 0 THEN GOTO G

   INPUT M
   IF M > 100 THEN PRINT "Error input": GOTO S
   INPUT T
   IF T <= 0 THEN PRINT "Error input": GOTO S
   IF T > 100 THEN PRINT "Error input": GOTO S
   INPUT A
   IF H = 0 THEN
    IF A > 85 THEN PRINT "Error input": GOTO S
    IF A < -85 THEN PRINT "Error input": GOTO S
   END IF
   A = A * PI# / 180

G:
  Q = M / T
  P = Q * C / (W + F)
  IF H = 0 THEN
   IF P * COS(A) - G <= 0 THEN PRINT "Error input": GOTO S
  END IF
  GOSUB X
  GOTO A

X:
  B = V + (P * SIN(A) - U * V / D) * T
  O = O + (V + B) * T / (2 * D)
  L = O * 180 / PI#
  V = B
  B = U + (P * COS(A) - K / (D * D) + V * V / D) * T
  D = D + (U + B) * T / 2
  U = B
  H = D - R
  S = SQR(K / D)
  F = F - Q * T
  IF F < 0 THEN T = F / Q: GOTO X
  RETURN

B:
  A$ = INPUT$(1)
  GOTO C