eueeのおうち掲示板
NFCCのFDI形式の対応 - チューリップ
2021/11/19 (Fri) 02:11:57
FDI形式は意外と汎用性の高いベタイメージ形式で、
昨今、海外製エミュレーターに採用されつつあります。そこで提案なのですがNFCCでFDI形式の対応を
希望しています。
備考
VFICでD88やMAHARITOから他形式に変換する際に、内部のディスク種別フラグを
を見て2Dだった場合は変換を拒否するようです。
(VFIC内部ディスク種別フラグ 2DD=00h、2HD=01h、2D=02h)
入力プラグインにパッチすれば簡単じゃんと思い、パッチを当てたら
D88←→MAHARITO変換時に2DDになってしまって駄目でした。
(なぜそうしたかと言うとNFD入力プラグイン exnfd.vinが複雑だったのと、
2Dイメージの変換もうまくいったからです。)
入力プラグインに手を付けてはいけないと判明したので、
出力プラグインを弄る方向に方針転換。
出来上がったのでバイナリパッチを公開します。
なぜかERCVFD形式(exvfd.vex)でうまく変換できる事が判明したのでそのパッチも。
ベタ形式はチェック箇所が多いのと解除しても、2Dイメージの変換はできるが
エラーメッセージが出るのと、1Dや1DDの場合はゴミファイルが出来てしまったので
とりあえず掲載なしです。
Virtual Floppy Image Converter Version 011010
exfdi.vex (HDI)
①D88やMAHARITOの2Dフラグチェックを無効化
"0F 85 E3 00 00 00"
↓
"90 90 90 90 90 90"
②トラック数チェックを無効化
"3B D7 74 51"
↓
"3B D7 EB 51"
exvfd.vex (VFD)
トラック数チェックを無効化
"0F 85 E8 06 00 00"
↓
"90 90 90 90 90 90"
exnfd.vex (NFD)
①D88やMAHARITOの2Dフラグチェックを無効化
"C7 44 24 44 00 20 00 00 75 51"
↓
"C7 44 24 44 00 20 00 00 EB 51"
②D88やMAHARITOの2Dフラグの場合にバグってしまうのを対策
"80 BA 01 01 00 00 00 75 0A"
↓
"80 BA 01 01 00 00 01 74 0A"
結果は(D88やMAHARITOからの変換及び逆変換)
FDI(Anex86)形式
2D ◎、1D △、1DD △ ←(1D/1DDの場合はヘッダの容量値とシリンダ数が0になってしまう。またヘッド数を修正する必要がある。)
VFD(ERCVFD)形式
2D ◎、1D ◎、1DD ◎ ←そもそもヘッダに情報が少ない
NFD
2D ◎、1D ○、1DD ○ ←(1D/1DDの場合はヘッダのヘッド数を修正する必要がある。
という結果になりました。
また注意事項としては本来2Dに対応していない変換ペアなので
ディスク種別が2DDとして扱われます。
データ部は問題ないようです。
D88に戻した場合は必要に応じてディスク種別を書き換えてください。
MAHARITO形式に戻した場合は、拡張子を変更してください。
また片面ディスク(1D、1DD)の場合はヘッダにヘッド数がある場合は
修正が必要です。
あと1DディスクでのDOSブート、エミュレーターで動かすことに成功
しました。1DのD88イメージをNFDに変換して、ヘッド数を修正したら、
エミュレーターで正しくFATが見えました。とりあえずfreedos(98)での
ブートに成功しています。MS-DOSではフォーマット時にブートセクタが
書き込まれるので、フォーマットがうまく行かないのでまだ試していません。
リサイクル掲示板:
http://ematei.s602.xrea.com/cgi-bin/bbs39_ris3/bbs39.cgi?mode=past&year=2021&mon=10
Re: NFCCのFDI形式の対応 - euee
2021/11/20 (Sat) 20:59:46
要望ありがとうございます。
NFCCのFDIについては対応できるかと思います。
NHCのHDIのセクタサイズですが、2048くらいでは制限を入れていなかったと思います。変換のどの時点でエラーになったでしょうか?(変換元のファイルの読み込み時や変換中や変換後のファイルが不正など)
NVXについてですが、古いソフトでソースや開発環境がなくなってしまい対応できなそうです。すみません。
更に蛇足ですがNHCのHDIに変換する際のセクタサイズ制限の緩和 - チューリップ
2021/11/19 (Fri) 02:28:44
HDI形式は意外と汎用性の高いベタイメージ形式で、
昨今、海外製エミュレーター(例えばDOSBOX-XやPcem)に採用されつつあります。そこで提案なのですがNHCでFDIファイルに変換する際のセクタサイズ制限の緩和を希望しています。
HDI形式のヘッダはセクタサイズに4バイトの割り当てが
ありますから大きなセクタサイズに対応しています。
現状では1024B/Sまでにしか対応していないようですが、2048B/Sに対応していただけないでしょうか?
これはNHCでNHD形式に変換する際の制限と同等になります。4096B/S以上も論理上可能ですがそこまでは強くは望んでいません。
蛇足ですがNVXの不具合 - チューリップ
2021/11/19 (Fri) 02:18:29
NVXでCHSのパラメーターがなんか変という報告です。
ディスクイメージのCHSのHをH、SをSとして、
NVXでWindowsに渡されるCHSのHをh'、SをS'とすると、
H'=H S'=H*Sになっているように思われます。
これはPC-98版Windows 2000でNVXを使用する際に98型
パーティションの認識がうまくいかなくなるのを確認しています。