Justin Ratliff's ping robot article
8
BRANCH bstate,[bDone1,bbup]
breset: 'end state 2, now reset
bstate = 0 'state machine to idle
RETURN
bbup: 'end state 1, now
bDir = rl 'rotate left away
bDur = 65 'sets time limit
bstate = 2 'next state
GOTO bdrive
bmpnow: 'being bumped now
bDir = rv 'set backup while bumped and
bDur = 61 'for a while (+1) after not being bumped
bstate = 1 'start state machine
bmpact: 'bump mode active
bDur = bDur - 1 'decrement bump timer
bdrive:
drive = bDir 'set drive direction to bump
bDone1: 'no bump
RETURN
END