SD6031 のファームの改造が一応終わりました。
書き込み側のテストなどがまだなので、リリースはもうちょっと先になるとは思いますが...
仕様としては、以下の通りです。
・送信/受信に今までのコマンドを使った場合、最大16Mバイトまでのディスクイメージを扱える
・送信/受信に新しいコマンドを使った場合、最大1Gバイトまでのディスクイメージを扱える
・送信/受信には、従来の1バイト/2バイト、以外に4バイトを追加
追加したコマンドは以下の通りです。
○コマンド0x80:SET SECTOR DATA(開始/終了セクタ番号のセット)
P6→SD6031:0x80 ドライブ番号 開始セクタ番号 終了セクタ番号
従来は、開始セクタ番号=0x01、終了セクタ番号=0x10、と固定になっていたものを変更できるようにしました。デフォルト値(リセット後/INITIALIZE後)は、開始セクタ番号=0x01、終了セクタ番号=0x10です。
○コマンド0x81:ASK SECTOR DATA(開始/終了セクタ番号の読み出し)
P6→SD6031:0x81 ドライブ番号
SD6031→P6:開始セクタ番号 終了セクタ番号
コマンド0x80で設定した値の読み出しです。
○コマンド0x82:REPORT DISK IMAGE LENGTH(イメージファイル長の読み出し)
P6→SD6031:0x82 ドライブ番号
SD6031→P6:イメージファイル長×4(最上位から送信される)
イメージファイル長は4バイトのため、4回読み出しになります。純粋に〜.P31 のファイル長を読み出します(P31のフォーマットの関係上、実際にアクセスできるサイズの倍の値がレポートされます)。
通常の1D/1DD(2D)のディスクイメージの場合は、0x000A0000(655360バイト)がレポートされます。1DD(2D)実際に使える分(80×16×256=327680)の倍がレポートされます。
○コマンド0x83:EXPAND WRITE(ディスクへの拡張版書き込み)
P6→SD6031:0x83 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ
コマンド0x01(WRITE DISK) の拡張版です。トラック番号を1バイトではなく2バイト指定できます。このため、最大1Gバイトまでアクセスが可能になります。
拡張版を使わない場合は、自動的にトラック番号の上位バイトを0x00と見なします。
○コマンド0x84:EXPAND HIGH SPEED WRITE(高速ハンドシェークでのディスクへの拡張版書き込み)
P6→SD6031:0x84 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ
コマンド0x11(FAST WRITE DISK) の拡張版です。高速ハンドシェークで、一度のアクセスで2バイトの書き込みを行います。
○コマンド0x85:EXPAND READ(ディスクからの拡張版読み出し)
P6→SD6031:0x85 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号
コマンド0x01(READ DISK) の拡張版です。トラック番号を1バイトではなく2バイト指定できます。このため、最大1Gバイトまでアクセスが可能になります。
拡張版を使わない場合は、自動的にトラック番号の上位バイトを0x00と見なします。
○コマンド0x86:DOUBLE HIGH SPEED WRITE(4バイトハンドシェークでのディスクへの拡張版書き込み)
P6→SD6031:0x86 書き込むセクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ
コマンド0x01(WRITE DISK)を4バイトハンドシェークでデータを受け渡しするものです。一度のアクセスで4バイトの書き込みを行います。
○コマンド0x87:EXPAND DOUBLE HIGH SPEED WRITE(4バイトハンドシェークでのディスクへの拡張版書き込み)
P6→SD6031:0x87 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ
コマンド0x84(EXPAND HIGH SPEED WRITE) の拡張版です。4バイトハンドシェークで、一度のアクセスで4バイトの書き込みを行います。
○コマンド0x88:DOUBLE HIGH SPEED TRANSFER READ DATA(4バイトハンドシェークでのディスクからの読み出し)
P6→SD6031:0x88
SD6031→P6:読み出しデータ…読み出しデータ
コマンド0x03(TRANSFER BUFFER) を4バイトハンドシェークでデータを受け渡しするものです。一度のアクセスで4バイトの読み出しを行います。
組み合わせの関係でコマンド数が多くなっていますが、実質的に追加した仕様は少ないです。
4バイトアクセスは、送受信時にポートの設定を変更するので、データのやり取りがちょっとややこしくなります。
後に公開する予定のサンプルプログラムを参考にしてもらった方がいいかと思います。
ちなみに、4バイトアクセス時に、画面データ1フレーム分(16Kバイト)を転送すると、大体0.7秒かかります。
フラグチェックしないバージョンだと、0.55秒ぐらいになります。
これを速いと見るか、遅いと見るか...
2013年05月23日
この記事へのコメント
コメントを書く

