Well I have it setup the way I want to do it with InForm:

In SmallBASIC I could do a message box, here I used the _title for messages.

`_TITLE "Lander B+ started 2018-06-02"`

' Lander update.bas SmallBASIC 0.12.11 (B+=MGA) 2018-06-01

'modified code from my 2nd mod of:

'Lander mod 2.txt for JB v2 B+ 2018-05-29 big mod of

'Lander by Carl mod Rod mod B+.txt for JB v2 started 2018-05-26

'where I rewired controls and changed physics of Lander Model.

'This will further depart from Carls's original by hand drawing Lander

'at different angles instead of using sprites and, alas, landscape will

'have to be updated each frame because there is no drawing on top of images

'in SmallBASIC.

' INSTRUCTIONS:

'Use the left or right arrow keys to rotate Lander left or right.

'Use the up arrow for thruster burst. These moves cost fuel!

'The Fuel Gage is Red Horizontal line below landscape.

'The fuel level is Yellow.

'You must make a VERY gentle and level landing

'on one of the flat areas!

'Horizontal location, speed in green.

' Vertical location, speed inblue

DIM SHARED main&

CONST xmax = 1200

CONST ymax = 720

main& = _NEWIMAGE(xmax, ymax, 32)

SCREEN main&

_SCREENMOVE 100, 10

RANDOMIZE TIMER

CONST ns = 75

DIM SHARED pi, d2r

pi = _PI

d2r = pi / 180

'stars

DIM SHARED sx(ns), sy(ns), sr(ns), sc&(ns)

'terrain

DIM SHARED terraH(xmax), terraC(xmax)

'vehicle globals

DIM SHARED fuel, vda, speed, vx, vy, dx, dy, dg, dat

restart: ' ========================================= initialize Game

makeStars

makeTerra

fuel = 500 'this is the space vehicle's fuel

'vda is vehicle degree angle = orientation of the vehicle, mainly it's thrusters

vda = 0 'the vehicle is traveling right across screen due East = 0 degrees = 0 Radians

speed = 6 'this is the speed the vehicle is moving in the vda direction

vx = 50 'this is current x position of vehicle 10 pixles from left side

vy = 30 'this is current y position of vehicle 10 pixels down from top of screen

'd stands for delta with stands for change dx = change in x, dy = change in y

'dg is change due to gravity (vertical)

'dat is change of acceleration due to thrust

dx = speed * COS(d2r * vda) 'this is the horizontal x change on screen due to speed and angle

dy = speed * SIN(d2r * vda) 'this is the vertical y change on screen due to speed and angle

dg = .1 'this is the constant acceleration gravity applies to the vehicle

dat = 2 'this is burst of acceleration a thrust or reverse thrust will apply to speed and angle

COLOR _RGB32(0, 0, 0), _RGB32(0, 45, 90)

CLS

'buttons

drwbtn 290, ymax - 80, "Rotate Left"

drwbtn 500, ymax - 80, "Forward Thrust"

drwbtn 710, ymax - 80, "Rotate Right"

WHILE 1

'respond to button clicks

DO WHILE _MOUSEINPUT: LOOP

mx = _MOUSEX

my = _MOUSEY

mb = _MOUSEBUTTON(1)

IF mb THEN

IF my > ymax - 80 AND my < ymax - 30 THEN

IF mx > 290 AND mx < 490 THEN

moveLeft

ELSEIF mx > 500 AND mx < 700 THEN

moveUp

ELSEIF mx > 710 AND mx < 910 THEN

moveRight

END IF

END IF

END IF

'respond to key press

k$ = INKEY$

IF LEN(k$) = 2 THEN

SELECT CASE ASC(RIGHT$(k$, 1))

CASE 72: moveUp

CASE 75: moveLeft

CASE 77: moveRight

END SELECT

ELSEIF LEN(k$) = 1 THEN

IF ASC(k$) = 27 THEN END

END IF

scene

'fuel line

rgb 300

recf 10, ymax - 25, xmax - 10, ymax - 5

ff = fuel / 500 * (xmax - 20)

rgb 860

recf 10, ymax - 20, ff + 10, ymax - 10

COLOR _RGB32(200, 200, 250), _RGB32(0, 45, 90)

_PRINTSTRING (10, ymax - 70), "Horizontal:" + STR$(INT(vx)) + "," + STR$(INT(dx))

_PRINTSTRING (10, ymax - 50), " Vertical:" + STR$(INT(vy)) + "," + STR$(INT(dy))

'vehicle falls faster and faster, because gravity effects the vertical speed

dy = dy + dg 'speed up falling due to gravity acceleration

'new position = last postion plus the horizontal and vertical changes from momentum

vx = vx + dx

vy = vy + dy

Lander vx, vy, d2r * vda

IF vx < 30 OR vx > xmax - 30 OR vy < -50 THEN 'edit keep Lander legs inside boundries of terraH()

_TITLE "You have drifted off screen. Press p to play again..."

EXIT WHILE

END IF

IF vy > terraH(vx) OR fuel <= 0 THEN

crash$ = ""

IF fuel <= 0 THEN

crash$ = crash$ + "Ran out of fuel. "

ELSE

IF vda <> 270 THEN crash$ = crash$ + "Vehicle not upright. "

IF dy > 4 THEN crash$ = crash$ + "Came down too fast. "

IF ABS(dx) > 4 THEN crash$ = crash$ + "Still moving hoizontally too fast. "

IF terraH(vx - 10) <> terraH(vx + 10) THEN crash$ = crash$ + "Did not land on level site. "

END IF

IF crash$ <> "" THEN

_TITLE "You crashed! because: " + crash$ + " Press p to play again..."

ELSE

_TITLE "Nice job! Successful landing! Press p to play again..."

END IF

EXIT WHILE

END IF

_DISPLAY

_LIMIT 10

WEND

k$ = ""

drwbtn 990, ymax - 80, "Restart"

_DISPLAY

WHILE LEN(k$) = 0

k$ = INKEY$

DO WHILE _MOUSEINPUT: LOOP

mx = _MOUSEX

my = _MOUSEY

mb = _MOUSEBUTTON(1)

IF mb THEN

IF my > ymax - 80 AND my < ymax - 30 THEN

IF mx > 990 AND mx < 1190 THEN

k$ = "p"

END IF

END IF

END IF

_LIMIT 200

WEND

IF k$ = "p" THEN GOTO restart

END

SUB scene

rgb 101

recf 4, 4, xmax - 5, ymax - 85

FOR i = 0 TO ns

COLOR sc&(i)

fcirc sx(i), sy(i), sr(i)

NEXT

FOR i = 4 TO xmax - 5

rgb terraC(i) * 100 + terraC(i) * 10 + terraC(i)

ln i, terraH(i), i, ymax - 86

NEXT

END SUB

' arrow + esc key

SUB moveUp

'here is the vertical and horizontal change from a burst of fuel for thrust

thrustx = dat * COS(d2r * vda)

thrusty = dat * SIN(d2r * vda)

'now change the horizontal and vertical momentums from the thrust

dx = dx + thrustx

dy = dy + thrusty

'update the position

vx = vx + dx

vy = vy + dy

rgb 990

fcirc vx, vy, 5

_DISPLAY

'the thrust cost fuel

fuel = fuel - 10

END SUB

SUB moveLeft

x1 = vx + 10 * COS(d2r * vda + .5 * pi)

y1 = vy + 10 * SIN(d2r * vda + .5 * pi)

rgb 990

fcirc x1, y1, 5

_DISPLAY

vda = vda - 22.5

IF vda < -0.01 THEN vda = 360

fuel = fuel - 10

END SUB

SUB moveRight

x1 = vx + 10 * COS(d2r * vda - .5 * pi)

y1 = vy + 10 * SIN(d2r * vda - .5 * pi)

rgb 990

fcirc x1, y1, 5

_DISPLAY

vda = vda + 22.5

IF vda > 337.51 THEN vda = 0

fuel = fuel - 10

END SUB

SUB Lander (x0, y0, rAngle) 'rebuilt from ground up literally!

'x0, y0 are at the base of the lander, the rocket will point rAngle up when landing

rgb 333

x1 = x0 + 10 * COS(rAngle - .5 * pi)

y1 = y0 + 10 * SIN(rAngle - .5 * pi)

x2 = x0 + 10 * COS(rAngle + .5 * pi)

y2 = y0 + 10 * SIN(rAngle + .5 * pi)

x3 = x0 + 10 * COS(rAngle)

y3 = y0 + 10 * SIN(rAngle)

x4 = x0 + 25 * COS(rAngle)

y4 = y0 + 25 * SIN(rAngle)

'legs/fins

ln x3, y3, x1, y1

ln x3, y3, x2, y2

ln x4, y4, x1, y1

ln x4, y4, x2, y2

pangle = 2 * pi / 5

COLOR _RGB32(20, 0, 0)

FOR i = 0 TO 5

SELECT CASE i

CASE 0, 5: r = 20

CASE 2, 3: r = 15

CASE 1, 4: r = 25

END SELECT

x1 = x4 + r * COS(i * pangle + rAngle)

y1 = y4 + r * SIN(i * pangle + rAngle)

IF i <> 0 THEN ln lx, ly, x1, y1

lx = x1: ly = y1

NEXT

PAINT (x4, y4), _RGB(160, 120, 120), _RGB32(20, 0, 0)

END SUB

SUB ln (x1, y1, x2, y2)

LINE (x1, y1)-(x2, y2)

END SUB

SUB rec (x1, y1, x2, y2)

LINE (x1, y1)-(x2, y2), , B

END SUB

SUB recf (x1, y1, x2, y2)

LINE (x1, y1)-(x2, y2), , BF

END SUB

SUB rgb (n) ' New (even less typing!) New Color System 1000 colors with up to 3 digits

s3$ = RIGHT$("000" + LTRIM$(STR$(n)), 3)

r = VAL(MID$(s3$, 1, 1)): IF r THEN r = 28 * r + 3

g = VAL(MID$(s3$, 2, 1)): IF g THEN g = 28 * g + 3

b = VAL(MID$(s3$, 3, 1)): IF b THEN b = 28 * b + 3

COLOR _RGB32(r, g, b)

END SUB

'Steve McNeil's copied from his forum note: Radius is too common a name

SUB fcirc (CX AS LONG, CY AS LONG, R AS LONG)

DIM subRadius AS LONG, RadiusError AS LONG

DIM X AS LONG, Y AS LONG

subRadius = ABS(R)

RadiusError = -subRadius

X = subRadius

Y = 0

IF subRadius = 0 THEN PSET (CX, CY): EXIT SUB

' Draw the middle span here so we don't draw it twice in the main loop,

' which would be a problem with blending turned on.

LINE (CX - X, CY)-(CX + X, CY), , BF

WHILE X > Y

RadiusError = RadiusError + Y * 2 + 1

IF RadiusError >= 0 THEN

IF X <> Y + 1 THEN

LINE (CX - Y, CY - X)-(CX + Y, CY - X), , BF

LINE (CX - Y, CY + X)-(CX + Y, CY + X), , BF

END IF

X = X - 1

RadiusError = RadiusError - X * 2

END IF

Y = Y + 1

LINE (CX - X, CY - Y)-(CX + X, CY - Y), , BF

LINE (CX - X, CY + Y)-(CX + X, CY + Y), , BF

WEND

END SUB

FUNCTION min (a, b)

IF a > b THEN min = b ELSE min = a

END FUNCTION

FUNCTION max (a, b)

IF a > b THEN max = a ELSE max = b

END FUNCTION

SUB drwbtn (x, y, s$)

th = 16: tw = LEN(s$) * 8

rgb 0

recf x, y, x + 200, y + 50

rgb 999

recf x, y, x + 198, y + 48

rgb 666

recf x + 2, y + 2, x + 198, y + 48

xoff = 100 - tw \ 2: yoff = 25 - th \ 2

COLOR _RGB(0, 0, 0), _RGB32(171, 171, 171)

_PRINTSTRING (x + xoff, y + yoff), s$

COLOR _RGB(0, 0, 0), _RGB(0, 0, 0)

END SUB

SUB makeStars

FOR i = 0 TO ns

sx(i) = RND * (xmax - 16) + 8

sy(i) = RND * (ymax - 96) + 8

r = RND

IF r < .8 THEN

sr(i) = 1

ELSEIF r < .95 THEN

sr(i) = 2

ELSE

sr(i) = 3

END IF

sc&(i) = _RGB32(RND * 74 + 180, RND * 74 + 180, RND * 74 + 180)

NEXT

END SUB

SUB makeTerra

FOR x = 4 TO xmax - 5

IF x > 5 AND RND < 0.06 THEN

xstop = min(xmax - 5, x + 50)

FOR lz = x TO xstop

terraH(lz) = y

c = INT(RND * 3) + 1

terraC(lz) = c

NEXT

x = lz - 1

ELSE

xstop = min(xmax - 5, x + RND * 25)

IF RND < .5 THEN yd = 1 ELSE yd = -1

yd = yd * RND * 2

FOR xx = x TO xstop

y = min(ymax - 90, y + yd)

y = max(y, ymax - 240)

terraH(xx) = y

c = INT(RND * 2) + 1

terraC(xx) = c

NEXT

x = xx - 1

END IF

NEXT

END SUB

2nd EDIT to fix the reasons for crash report.

3rd EDIT need ABS(dx) in crash report because could be moving too fast in minus direction.