; Best Missile evasion I could come up with.

locked_ 1 3:  -- explain
goto frombehind

locked_ 1 1:  -- explain
if missile ready then gosub boogieman
goto deadahead

locked_ 1 2:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

locked_ 1 4:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

locked_ 3 1:  -- explain
goto frombehind
 
locked_ 3 3:  -- explain
if missile ready then gosub boogieman
goto deadahead

locked_ 3 2:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

locked_ 3 4:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

locked_ 2 4:  -- explain
goto frombehind

locked_ 2 2:  -- explain
if missile ready then gosub boogieman
goto deadahead

locked_ 2 1:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

locked_ 2 3:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

locked_ 4 2:  -- explain
goto frombehind

locked_ 4 4:  -- explain
if missile ready then gosub boogieman
goto deadahead

locked_ 4 1:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

locked_ 4 3:  -- explain
scan relative 1  -- explain
if value #scan <> 0 then move backward
if value #inbound = 0 then if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto err_ #cur_head  -- explain
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain
if value #inbound >= 1 then goto locked_ #cur_head #inbound  -- explain

deadahead:  -- explain
lay mines on
move backward
lay mines off
if bump barrier then goto evade  -- explain
scan perimeter  -- explain
if value #scan <> 3 then goto #scan  -- explain
move backward
if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto evade
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain

frombehind:  -- explain
lay mines on
move forward
lay mines off
if bump barrier then goto evade  -- explain
scan perimeter  -- explain
if value #scan <> 3 then goto #scan  -- explain
move forward
if value #enemy_x <> #x_pos then if value #enemy_y <> #y_pos then goto evade
if value #x_pos = #enemy_x then goto same_x_ #cur_head  -- explain
if value #y_pos = #enemy_y then goto same_y_ #cur_head  -- explain