FDloaderアプリケーションFD作成ツール FDLDMKFD Version.2.00
使用説明書 Copyright(C) 2022,24 まりも
PC-98のうちフラッシュROM搭載機には、「FDloader」という機能があり、あらゆる初期チェックを行わずにいきなりリアルモード16bitプログラムを走らせる機能があります。詳しくはこちらを参照してください。
FDloaderのプログラムはフロッピーディスクの所定の位置に書き込まれている必要があります。それを行うのが本ツールです。FDloaderとして開発されたCOM形式のプログラムモジュールを読み込んで、フロッピーに書き込みます。ファイル全体のチェックサムやファイルサイズなどの情報は本ツールが適切に作成するので、FDloader固有の仕様についてあまり把握していなくても、アプリケーションFDを作ることができるようになっています。当サイトで既に公開しているFDloaderはいくつかありますがFD作成ツールは個別にことなります。2022年4月からは本ツールを利用することを前提に、FD作成部を含まない形のFDloaderアプリケーションを公開してゆく予定です。その端緒として 2022年4月3日に ROMSUMSVというものを公開しました。
MS-DOSのCOM形式プログラムという仕様なので、基本的には開発は容易なはずです。FDloaderのアプリケーション開発では、FDを作るというところまで行わないといけないのが面倒なところです。アセンブルしてすぐに実行できないからです。そこで少しでもモジュール作成からFD作成までの手間を簡単化しようことで本ツールを作りました。バージョン2.00からは、通常ぼブートフロッピーとしても FDloaderのアプリケーションを起動できるようにしています。
COM形式のDOSアプリケーションはMicrosoft Assembler 3.0のような古いものでも開発できます。これはIPLwareのアプリケーションと同様です。FDloaderのアプリケーション開発が難しいのは、デバッグ環境(すぐに実行できない)や、DOS,BIOSのファンクションを一切使用できないこと、システム共通域の情報も使えないことなどの点にあります。キーボード入力も画面出力もディスク書き込みも、無からハードウェア操作するプログラムを書いて行かなければなりません。IPLwareの開発よりもハードルが高くなります。IPLwareではDOSファンクションが使えないだけでした。
まず解凍して FDLDMKFD.EXE をカレントディレクトリに置いてください。カレントディレクトリには FDloaderとして開発されたCOM形式実行モジュールも用意しておき、DOSコマンドラインからFDLDMKFD と打って実行します。
いっぽうフロッピーディスクも用意します。2HDでPC-98固有の1MBフォーマット(1024B/sect, 8sect,1232KB)で物理フォーマットされたフロッピーを、最も若い番号のフロッピードライブに挿入しておきます。
実行が開始されると、ファイル名の入力を要求してくるので、そのCOM形式モジュール名をキーボード入力してください。コマンド引数としてそのファイル名を与えることもできます。その場合はファイル名の入力プロンプトは現れません。
フロッピーを挿入しているかの問い合わせが出ますのでYを押すと、いきなりフロッピーディスクに書き込みに行きます。ですので予め内容が無いか潰してもよいメディアを挿入しておいてください。現状のFDloaderアプリケーションはせいぜい16KB〜24KB程度のものですので、すぐに書き込みは完了します。
作成したFDは、[ESC]+[HELP]+[8]の3つのキーを同時押しした状態で電源投入またはリセットボタンを押すことで、アプリケーションの実行が開始されます。「Insert ROM data disk」というメッセージが出たらENTER(RETURN)キーを押して下さい。終了後には基本的には電源断かリセットとなりますが、RET命令で戻るアプリケーションであれば、「リセットまたは電源を再投入してください」という表示のときにESCキーを押すと、ソフトウェア的に再起動します。
作成したFDを入れたまま電源を入れるかリセットすると、自動的にアプリケーションが実行されます。したがってFDからのブートが可能な状態に(メモリスイッチ設定が標準か1MBFDとなるように)しておいてください。
実行後RET命令で戻るアプリケーションであれば、実行後に最下行に次のようなメニューが現れます。
操作 [H]か[1]IDE#1, [2]IDE#2, [S]SCSI HD, [M]MO からブート, [ESC]リセット
いずれかの[ ]内のキーを押すと該当するデバイスから起動します。例えばIDE#1であれば[H]か[1]です。明記されていませんが、[B] を押すとROM BASICも起動できるほか、フロッピーを取り替えてから[F]を押すと、別のFDからの起動が可能です。[ESC]を押すとソフトウェアリブートも可能です。この機能だけでも非常に便利であると言えます。FD-IPLwareあるいはOS-FDIPLwareとも似ていますが、FDloaderアプリケーションとしても実行できる点が違います。
FD運用上およびアプリケーション開発上の注意事項を掲げておきます。
●FDloaderのフロッピーについて
●FDloaderのアプリケーションの仕様について
全ソースコードがこちらにあります。source.lzhを解凍してください。このプログラムでは基本的な技術しか使っていませんが、FDloaderの仕様として必要なことが書かれています。
FDloaderのアプリケーション開始時点のCPUレジスタは次のとおりです。
・CS:IP=0060:0100h
・CS=DS=ES=SS=0060h(SS以外はNECが決めた仕様どおり)
・BP=SP=0F5FEh (バージョン2.00以降でわずかな変更あり)
<バージョン2.00からの変更>
ただしアプリケーションが31KB以下のときは7FFEhに縮小されます。
その他のレジスタは不定とします(0を仮定することはできません)。
CS:0000〜00FFhには、COM形式モジュールをロード実行するためのローダが入っています。この256バイトは、アプリケーションがRET命令で戻ったときには使用されるので、戻ったときの機能を使うので有れば、先頭の文字列データ部や最後部は破壊しないほうがよいです。
FS,GSは触っておらず、FDloaderに飛んでくる前の状態の値です。FSにはCPUIDの値が入っていることが多いようです。
FDloader開始時点ではフラッシュROMのVpp電圧として12Vがかかった状態になる本体仕様となっています。しかし本ツールではローダの段階で5Vに落としています。したがって不用意にITF/BIOS ROMが書き換わる恐れはありません。また書き換えるようなアプリケーションは本ツールでは作成できないということになります。
バージョン1.10より、FDloader開始時点のスタックの保存と復帰は行わないことにしました。FDloaderを呼び出すITF内ルーチンではスタックを使用していないとみられるためです。
このプログラムはフリーソフトウェアです。自由に使用してよい代わりにサポートのようなものはありません。直接・間接的に、このプログラムの運用の結果に何があっても、作者は一切責任をとることはないものとします。著作権は作者が保持しています。著作権侵害のないようにお使いください。他のサイトへの無断転載は認めません。連絡先メールアドレスは、トップページに記載されています。
まりも(DOSsoft)