通信プロトコル(CSA形式98年版(最新版))

(1) コマンド

(a) 通常の指し手:
先後(先手:+ 、後手:- )の後、移動前、移動後の位置、移動後の駒名
駒名:歩から玉まで:FU, KY, KE, GI, KI, KA, HI, OU
上の成駒:TO, NY, NK, NG, , UM, RY
駒台の位置は、00
(注)成りは、移動後の駒名で判断する。
例:+7776FU(▲7六歩)、-0034KA(△3四角打)、+2423TO(▲2三歩成)
(b) 特殊なコマンド:(+-を付けない)
投 了:%TORYO
待った:%MATTA
中 断:%CHUDAN
千日手:%SENNICHITE
持将棋:%JISHOGI
(入玉で)勝ちの宣言:%KACHI
(入玉で)引き分けの宣言:%HIKIWAKE
(a)(b)共、以上の文字列の後にLF(16進の0A)を付加する。
待ったは、自分の手番において行い、それに対して相手は2手戻し、待ったをした方の手番とする。待ったをした手の消費時間は戻す。待ったは、代理ソフトで手入力にミスがあったときに使用する。
持将棋、勝ちの宣言、引き分けの宣言は、試合のルールによって使い分ける。

(2) 通信条件

通信回線は、RS232Cを使用する(条件は以下のとおり)。
ボーレイト 1200bps
データ長 8 bit
パリティ なし
ストップビット 1 bit
X制御 あり

(3) ケーブル、コネクタ

コンピュータ側コネクタはD-SUB9ピンオスとする。その他のコネクタしかない機種については、変換コネクタ(ケーブル)を使用し、D-SUB9ピンオスに変換する(リバース不可)。コンピュータ間の接続にはリバースケーブルでコネクタが両端ともD-SUB9ピンメスのものを使用する。
以上を原則とするが、変換コネクタと接続ケーブルが一緒になったものを使用してもよい。

(4) 開始時の処理

後手が受信待ち状態であることを確認した後、先手が思考を開始する。

(5) 終了時の処理

(a) 投了
投了によって対局の終了とする。コンピュータが負けと判断したならば、投了コマンドを送信し、対局を終了する。詰ませても対局を終了せず、相手からの投了コマンドを待って対局を終了する。
(b) 千日手
自分の手番の局面において、千日手と判断された場合、千日手コマンドを送信し、対局を終了する(自動可)。相手の手番(自分が指した後)の局面における千日手を検出しても、受信を中断してはいけない。
千日手コマンドを受信した場合、対局を終了する。
どちらの場合も、その状態から再開できることが望ましい。
(c) 持将棋
持将棋と判断した場合、持将棋コマンドを送信し、対局を終了する(持将棋の判定は、試合のルールによる)。
(d) 中断
受信待ちの状態において、何らかの操作で強制的に対局を中断できるようにしなければならない。その際には、相手から中断コマンドが送られてきたときと同様の処理を行う。

(6) 再開時の処理(できることが望ましい機能)

中断およびそれに類する状態から、以下の処理で再開ができるようにすることが望ましい。
対局している両者で手数が異なるときは、進んでいる方の局面を戻し(戻した手の消費時間も戻す)、同一局面とする。
(a) 通信の場合
指し手を受けるほうが受信待機し、手番側の思考を開始する。
(b) 手入力の場合
指し手を受けるほうを指し手入力待ちとし、手番側の思考を開始する。

(7) トラブル発生時の処理

ルール上指せない手や意味不明の文字列等が送られてきた場合には、送られてきた文字列を画面に表示し、中断処理を行う。

(8) その他

コンピュータ同士の通信対局では、待った・中断を自動的に行ってはならない。