本来のドライブ(PC-6031/PC-80S31等)のコマンドは 0x00〜0x7f で、SD6031/SD6031WIF で新たに追加したコマンドは0x80〜0xfe になります。
今回のver1.00で削除したコマンドは以下の通り。
○コマンド0x80:SET SECTOR DATA(開始/終了セクタ番号のセット)
P6→SD6031:0x80 ドライブ番号 開始セクタ番号 終了セクタ番号
○コマンド0x81:ASK SECTOR DATA(開始/終了セクタ番号の読み出し)
P6→SD6031:0x81 ドライブ番号
SD6031→P6:開始セクタ番号 終了セクタ番号
今回のver1.00から追加されたコマンドは以下の通り。
1)バージョン関連
○コマンド0xf0:read version number
P6→SD6031 0xF0
次の send version number を使う前に、実行します。
○コマンド0xf1:send version number
P6→SD6031 0xF1
SD6031→P6 バージョン番号1バイト目 2バイト目 3バイト目 機種コード1バイト目 2バイト目
現在のバージョン番号、機種コードを返します。
SD6031/SD6031WIF ver1.00 では、アスキーコードの "100SD" が返ってきます。
このコマンドに先立って、前の read version number を実行する必要があります。実行していない場合はエラーになり、値を返しません。
バージョンの読み出し手順は以下の通りです。
コマンド 0xf1 を送信する
↓
コマンド 0x06 を送信する
↓
データを受信し、エラービットを確認する
↓
エラーなしの場合、ver1.00 以前のバージョン。
↓
コマンド 0xf0 を送信する
↓
コマンド 0xf1 を送信する
↓
データを受信する(5バイト)
2)イメージファイル関連
○コマンド0xf2:set file extention
P6→SD6031 0xF2 ドライブ番号 拡張子1バイト目 2バイト目 3バイト目
拡張子は3バイト固定で、アスキーコードで与えます。
リセット直後は、"P31" です。
○コマンド0xf3:send file extention
P6→SD6031 0xF3 ドライブ番号
SD6031→P6 拡張子1バイト目 2バイト目 3バイト目
今の拡張子を返します。
SD6031は、設定した拡張子のファイルのみを扱います。
拡張子を変更した時は、SDカードを新たに挿した場合と同様に扱います。
つまり、拡張子を D88 に変更した場合は、INIT.D88 がある場合は、INIT.D88 を設定し、ない場合は 〜.D88 の中で一番新しいファイルを設定します。
以下の拡張子を設定した場合は、特殊な動きをします。
P31:ファイルを P31 フォーマットとして扱います(今までと同じ動きです)。
D88:ファイルを D88 フォーマットとして扱います。
次の条件を満たすもののみ正常に動作します。
トラック 1D:#0〜#39(もしくは#0〜#34)/1DD:#0〜#79 が順番に抜けなく格納されている。
セクタ#1〜#16が順番に抜けなく格納されている。
1セクタ=256バイト。
途中のセクタが抜けているとかセクタサイズが違うものは、正常に動作しません。
DSK:ファイルを DSK フォーマットとして扱います。
いわゆるディスクのベタファイルです。
ファイルサイズが0x28000バイトの時、1D フォーマットとして扱います。
(ドライブとディスクが食い違う時、トラック番号の調整が入ります)
その他の拡張子の場合(例えば BIN)は、1セクタ=256バイト、1トラック=16セクタ、とした、ディスクのベタファイルとして扱います。HDDモード対応ですので、トラック数の最大は 65535 になります。
○コマンド0xfc:send image file
P6→SD6031 0xFE ドライブ番号
SD6031→P6 ファイル名1バイト目…ファイル名8バイト目
現在指定されているイメージファイル名を返します。ファイル名などは、set image file と同じです。
3)EEPROM関連
○コマンド0xe0:receive EEPROM memory
P6→SD6031 0xE0 EEPROM番号 アドレス上位 下位 サイズ上位 下位 データ、・・・
○コマンド0xe1:send EEPROM memory
P6→SD6031 0xE0 EEPROM番号 アドレス上位 下位 サイズ上位 下位
SD6031→P6 データ、・・・
EEPROM番号は、0x81=AVR内EEPROMです。
アドレスは 0x0000〜0x01FF が有効で、1バイトごとに書き込み/読み出しが可能です。
EEPROMに対する読み書きは、ドライブ番号を 0x81 に指定する事により、通常のフロッピーへの読み書きのコマンドを使う事も可能です(後述)。