2023年2月19日日曜日

パソピア7/700のFDバックアップ

前回紹介したFDコピーをもう少し拡張してみる。
XPAC2を持っている方はSDカードも使えるので、フロッピーイメージを分割してファイルに保存する方法を考えてみる。

パソピアの2Dは、1トラックに32セクタ(1セクタ256バイト)で8KBのデータ領域。
XPAC2のスロット#5は、8KBのSRAM RAM PAC2になっているので、ここをバッファとして利用する。

SDカードにトラック毎のデータ保存用ファイルを用意する
同じフォルダ内に"ファイル名.xx"で、拡張子xxが00~34のファイルを用意。
Trackファイル00はサイド0が単密度(128バイト)なので6,144バイト、Trackファイル01~34は8,192バイトのファイルを用意。
各Trackファイルは、ヘッド0 セクター1→16、ヘッド1 セクター1→16の順番で、合計32セクターのデータが保存されます。

例えばFormat.xxというファイル名の場合、"Format.00"(6,144バイト)と"Format.01~.34"(それぞれ8,192バイト)の35ファイルを用意。
これら35ファイルは、SDカードの同じフォルダに格納しておきます。
以前紹介した自作フォーマッタで初期化したディスクをイメージ化したのでアップします

SDカードへのExportと、FDへのImportプログラムを用意したのでアップしました。
RAM PAC2イメージには"BACKFD"というファイル名で保存されています。
フロッピーからSDカードにExportする場合、最初に1を選択。
フロッピードライブ番号を選択し、SDカードのバス名を指定します。
例えば、DiskフォルダにFormat.00~34ファイルを置いている場合、パス名は「/Disk/Format.」を指定します。00~34の拡張子2文字は自動で入力されます。

SDカードへの保存が成功すると、"Completed successfully."が表示されます。

SDカードからフロッピーにImportする場合、最初の選択でに2番を選びます。
あとは同じように、フロッピードライブ番号を選択し、SDカードのバス名を指定します。
"Completed successfully."が表示されると、SDカードに保存してあった35トラックデータがフロッピーに書き戻しされています。

あと、せっかくWindowsでTrackファイルを読み書きできるようになったので、TrackデータとD88ファイルを相互変換するWindowsアプリを作ってみました。
実行ファイル(32bitと64bit)とコードをアップしました。(つたないコードですが...)

実行ファイル(D88Track.exe)上にトラック00ファイルをドラッグ&ドロップすると、00~34ファイルを読み込み、同じフォルダにD88ファイルとログを出力します。
逆にD88ファイルをドラッグ&ドロップすると、00~34までのトラックデータに分割して、同じフォルダにTrackファイルを出力します。

D88Track.exeを単独で起動した場合は、ファイルを開くダイアログが開くので、トラック00ファイルかD88ファイルを指定して開いてください。
その後の動作はドラッグ&ドロップ時と同じです。

これで作成したD88ファイルをエミュレータで読込みましたが、問題なく利用できました。
但し全てのファイルで確認したわけではないので、うまく動作しない場合は連絡ください。

D88ファイルはトラック順に並んでいない場合があります。一旦セクターデータのオフセット位置を調べてから、Trackファイル00から順番にファイル出力する仕組みにしています。

PC-98の2D対応5インチドライブがあれば、パソピアの2Dフロッピーから直接D88ファイルを作ることができますが、今は環境を用意するのも難しくなってきました。

今回のツールで、パソピアの2Dフロッピー <-> SDカードのTrackファイル <-> D88ファイルの相互変換できるようになったので、実機とエミュの行き来がしやすくなったのかなと思います。

あと、パソピア700には1ドライブ仕様があります。
1ドライブの場合、ディスクコピーする際に何度もフロッピー入替えが必要でしたが、SDカード経由でバックアップ・リストアできれば、楽にコピーできるようになります。

2023年2月18日土曜日

パソピア7/700用のFDコピー

パソピア7/700用フロッピーディスクのコピープログラムを作ってみる。

前回調べたフォーマット形式を参考に作ってみる。
パソピアの2Dは、0~34トラック、1トラック毎に32セクタで、1セクタは256バイト。
(但し、トラック0ヘッド0のみ単密度で128バイト)

パソピア7純正コピープログラムは2トラック16KB(4000h)ずつコピーしている。
今回はできるだけ短いプログラムを組んで、3トラックずつコピーする方法を考える。
裏RAM利用も考えたが、BIOSコールと排他になるのでシンプルな方法で行くことにする。

BIOSコールのプログラムは、F000hに配置。BASICプログラムはできるだけ短くして、バッファは9000h~EFFFhで24KB(3トラック分)確保できました。

FDコピーのRAMPACイメージとBASICテキストをアップしました。
RAMPACイメージにはCOPYFDのファイル名で保存しています。

コピーを実行する前に、コピー先のフロッピーをフォーマットしておく必要があります。
COPYFDを実行すると、オリジナルのコピー元FDドライブ番号(1~4)と、コピー先FDドライブ番号(1~4)を聞かれるので入力。
フロッピーディスクを2枚それぞれ挿入し、RETURNキーを押すとコピー開始されます。
コピーが無事に終われば、"Completed Successsfully."の表示がされます。

1ドライブのみの場合、オリジナルFDドライブ番号とコピー先FDドライブ番号の両方に"1"をセット。ドライブ#1のディスクを入れ替えながら進めます。
前述のとおり、パソピアの2Dはトラック#0~#34の35トラックあり、3トラックずつコピーするので、12×2回のディスク入れ替えが必要です。
純正のコピーツールは2トラックずつなので、もっと大変だったはず...

パソピア700実機でコピーしたディスクを98で読み込んでバイナリ比較してみましたが、ちゃんとコピーできているようです。エミュでの確認も大丈夫でした。

パソピア7+FDD実機での確認はしていませんので、もし試された方がいましたら報告もらえると助かります。

1ドライブコピー時のディスク入れ替えは苦痛(というかドライブ壊れないか心配)なので、別な方法も考えてみます。
(続く)