2019年07月21日

SD6031ファームウエアコマンド一覧(1)

  SD6031/SD6031WIFで扱う事が出来るコマンド一覧です(その1)。


  本来のドライブ(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 に指定する事により、通常のフロッピーへの読み書きのコマンドを使う事も可能です(後述)。


posted by えすび at 22:57| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。