Windows上でJWASM(フリーのMASM6互換アセンブラ)と98エミュを使ってのプログラム作成に関するエトセトラ。また、PC-98プログラミング関係の書籍紹介とか自作ソフトの進捗とかも。

エミュを使ってIPLプログラミングもどき _悉猗

T98-Nextで作った未フォーマットのNFDファイルを使ってIPLプログラミングもどきをする方法がある程度分かったので書いてみる。
この項はNFDファイルの加工について。

NFDファイルは「NEW」ボタンから簡単に作れることは周知の通りです。
このファイルはセクタ情報が空になっているのでそのままでは使えず、MS-DOSを使ってエミュ上でフォーマットをするのも常識でしょう。
しかし、MS-DOSでシステムを転送せずにフォーマットをしても、実はIPLは書き込まれています。
フォーマット済みのディスクを入れると「No system files.」と表示されますが、これを表示するためのIPLが書き込まれているのです。

で、これを一々消したりするのも面倒だし、配布での著作権って本当に大丈夫なのか…と思うので、バイナリエディタでセクタ情報を書き込んで使えるようにします。

実例
120h番地から1セクタ当たり16byte(一行分)がセクタ情報になっています。
下では、反転してある部分が第一セクタ部分です。


さて、T98公式にあるnfdr0.txtによると、このセクタ情報の構造体は以下の通りです。
typedef struct {
BYTE C; // C (0xFFの時セクタ無し)
BYTE H; // H
BYTE R; // R
BYTE N; // N
BYTE flMFM; // 0:FM / 1:MFM
BYTE flDDAM; // 0:DAM / 1:DDAM
BYTE byStatus; // READ DATA(FDDBIOS)の結果
BYTE byST0; // READ DATA(FDDBIOS)の結果 ST0
BYTE byST1; // READ DATA(FDDBIOS)の結果 ST1
BYTE byST2; // READ DATA(FDDBIOS)の結果 ST2
BYTE byPDA; // FDDBIOSで使用するアドレス
char Reserve1[5]; // 予約


CHRNを適切に入力し、MFM、DDAM、ステータス等はエラーがないのでall 0、PDAは90hというのが基本のフォーマットになります。
(多分Status等を変えたり異常なCHRNにするとプロテクトがかけられそうな気がしますが、NFDファイルがコピー出来るので無意味…)
この辺についての詳しい情報は、各種プロテクト解説本やフロッピーディスクパーフェクトブック(アマゾンで2017/1現在安いDISK BIOSとかの解説本。安い紙の資料がほしい場合なら買ってもいいかも程度)とか、普通にネットでググった結果とかを参照してください。

全セクタを書き換えるのはツールを作った方が楽そうな位手間なので、今回は頭の8セクタ、1024*8byteの分を使用できるようにします。
具体的には以下のように変更してください。


さて、このファイルの末尾は以下のようになっています。

この末尾以降、10A10以降がデータの実体となります。
空だったり1024byteなどに足りない場合は自動的に0が入るっぽいのでサイズを気にする必要もなくお手軽です。

で、バイナリエディタでここにCOMファイルをくっつければ簡単にIPLの起動実験ができるのでとっても便利です、というところでその△愨海。

Menu

管理人/副管理人のみ編集できます