💡📝H. G. Muller wrote on Sat, Jan 2, 2021 08:16 AM UTC:
This is generated by an include file that contains the code
set sqrs explode chr 45 trim elem dec #i #parts; // split last part at hyphen
if != 2 count #sqrs: // must give 2 squares
print . count= count #sqrs;
print thismove;
if == resign thismove:
print ok;
resign;
elseif == drawn thismove:
print notok;
drawn;
endif;
print giveup;
die "board step does not mention two squares";
endif;
print survived;
in its ParseMove routine. So for normal move primitives (i.e. containing a hyphen) is directly skips to the 'print survived'. On receiving 'resign' it correctly reaches the 'print ok', and aborts ParseMove, so that it never reaches the die or 'print survived'. But it continues execution of the GAME code at the caller of ParseMove (HandleMove in the Pre-Move code), which eventually leads to the later die when it chokes on 'resign'.
This is generated by an include file that contains the code
in its ParseMove routine. So for normal move primitives (i.e. containing a hyphen) is directly skips to the 'print survived'. On receiving 'resign' it correctly reaches the 'print ok', and aborts ParseMove, so that it never reaches the die or 'print survived'. But it continues execution of the GAME code at the caller of ParseMove (HandleMove in the Pre-Move code), which eventually leads to the later die when it chokes on 'resign'.