「PC-9800シリーズ用30行BIOS&90桁BIOS」で30行BIOSのソースコードを公開しているのですが、現状では90桁BIOSはまだ公開していません。以前、公開のための作業をしていた時には、どのファイルがどれと関係していて、という分類をする時間がなくて30行BIOSのみソースコードを公開し、90桁BIOSは公開しなかったんだと思います。
それをまじめに整理して公開するかー、とちょっと思って整理していて気づいたんです。必要なファイルの一部が見つからない…。わーお。ちょっと自分で驚いてしまいました。
見つからない理由はBorland Turbo AssemblerのCFGファイルに記述をしてあり、暗黙的にパスが通って認識されるファイルはソースコードと別のディレクトリーにあるわけですが、これをコピーしていなかったわけなんですね。
ソースコードが入っているPC-9800シリーズは2台あって、PC-9821Xt/C10WとPC-9821Ld/260です。どちらか動くかなぁ。そのうち片づけて場所を作って取り出すことを考えないと…。まいったなぁ。後者の場合は取り出す方法も考えないと(外付けFDDが死んでいなければそれで、死んでいたら…どうしましょう? この機種に適合するシリアルクロスケーブルなんかもうないだろうしなぁ)。
あと、説明なしでコードの内容が理解してもらえるかどうかという不安もあったりします。
90桁BIOSは30行BIOSにパッチを当てる(30BIOS.ASM
の593行からのOUTSIDE_TABLE
という名前の構造体と、2か所にあるNOP
×5はそのための領域)とともに、MS-DOSに対してはCON
デバイスを登録しています。というのも、INT 29H
とINT 0DCH
をフックしただけでは、CON
デバイス経由で出力される処理まではフックできない為です。まぁ、ここでは「登録」などと書いていますが、実態としてはMS-DOSに対するパッチですね。さらに、CON
デバイスをデバイスチェーンに入れるだけではなく、組み込み時点で開き済みのCON
デバイスへの参照をすべて新しい90桁BIOSのCON
デバイスへ向ける必要があります。そのために、MS-DOSの持っている内部の非公開構造体(SFT : System File Table)をチェックしてデバイスドライバーのアドレスを書き換える必要があります。もちろん、常駐解除時にはすべて逆順に書き換える対応が必要になります。
などなど。説明しないとなぜそんなことをしているのかわからないことが多そうなのです。
なかなかファイルを取り出せそうにない場合には、先行して手元にあるものだけでも公開してしまうのもありかもしれないと、ちょっと考えています。