Okay, I think I figured out what I did wrong. It was the notation. I
should have entered 10. h4-d4 and then joined an extra move to it with a
semicolon
;@-c4
So that your parser will store a zero into the position on the board where
the Cannonball Pawn is. I naturally assume you are using some kind of a
byte map to store the board, and then the parser comes along and ANDs off
the superfluous bits of the script byte, before storing the result into
the map? Thus the @ character turns into a zero that you can store into
the byte map?
Hmm. Okay. I prefer the form of notation where the many captured (and
resurrected) pieces are listed, enclosed inside of parentheses, rather
than connected as miniature moves joined by semicolons.