BonanzaのCSA形式の手駒の表現

Bonanza 6.0が公開されたことですし、またこのブログをぼちぼち更新していこうかと思っています。


今回はBonanzaのCSA読み込み部でちょっと疑問に思っていることを書いておきます。


CSA形式では

P+00HI

のように、00は手駒を表します。ちなみに、P+は先手を意味して、HIは飛車を意味しますので、P+00HIとは「先手の手駒に飛車があるよ」という意味です。


この部分、CSA形式では、00が手駒だと定められています。ところがBonanzaでは01でも02でも手駒扱いします。


実運用上、これでも問題はないのですが、不正な書式のCSAファイルを弾く意味でも、これはエラー扱いすべきではないかと思うのです。


ソースで言うとcsa.cのread_board_rep3です。

    /* hand */
    if ( ifile == 0 && ifile == 0 )
      {
	switch ( piece )

手駒であるかどうかを判定してあるようなのですが、このif式は、どう見ても冗長です。
ここはおそらく次のように書こうとして間違えてしまったのではないかと私は思います。

    /* hand */
    if ( ifile == 0 && irank == 0 )
      {
	switch ( piece )


.