100ボードをハイレゾモードで動かす(ROMアプリケーション)
HIRES100 1.00 (C) 2025 まりも
■ PC-9801-100のBIOSはノーマルモード専用ですが
PC-9801-100およびアダプテックから発売されているAHA-1030P,AHA-1030B (以降、100ボードと総称する)は、ボードの仕様によりノーマルモードにしか対応していません。これをハイレゾモードで動作させようというのが、本ツールの試みです。ハイレゾモードでは拡張ROM域のEA000-EDFFFhのところに書き込み保護されたRAMを出すことができます。ここに100ボードのROMをコピーしてからブートに入れば、ハイレゾモードでも100ボードのSCSIが使えるのではないかというわけです。またRAM上での動作により高速化されます。
このような試みですがどうやら成功しているようなので、公開いたします。ただし今のところA-mateのハイレゾのみの対応です。XA,XL、XL^2やRLには対応しません。
100ボードの活性化だけでは物足りませんので、「DIV0ROM」の機能も付け加わっています(バージョン0.70から)。
![]()
■ 使い方1(ROMボードの準備)
ハイレゾモードのアドレスEA000h〜EF000hのいずれかの4KB境界で動作可能なROMボードを用意してください。といっても現状では100ボード以外のCバスSCSIボードの流用品くらいしか存在していないと思います。そのROMに HIRES100.ROM を焼き込みます。2個のROMが使われているSCSIボードでは、偶数番地用 HIRES100.EVN と 奇数番地用 HIRES100.ODD をそれぞれのROMに焼いて正しい位置に装着してください。なおROMのアドレスはEA000hが望ましいです。とくに理由がなければEA000hとしてください。
SCSI流用ROMボードの場合、ボードのROMアドレス(SW2-1,2,3)はノーマルモードでD000またはD600に(要するにD800,DA00,DC00,DE00以外)設定し、ハイレゾモード(SW2-4,5)でEA00に設定します。SW2-6,7はハイレゾ兼用の設定にしておきます。INTは0以外にすればよく、他はどうであっても問題は無いようです。
■ 使い方2(運用)
100ボードがもしAdaptec製であれば、非PnP機上で予めAdaptecのSCSI utilityにて「非PnPで使用」、「割り込み INT0(IRQ3)」にしておいてください、またDIPスイッチはデフォルトのDC000を選択した状態にしてください。
ボードをA-mateに装着します。ハイレゾモードで起動すると、ROMボードにある本アプリケーションが動作し、100ボードのBIOSがRAMに転送されます。ついで100ボードのBIOS自身が初期化動作に入り、ノーマルモードの時と同様にSCSIドライブが認識されるはずです。
■ 注意点
本来ノーマルモード用のアドレスDC000hに出現するはずの100ボードのBIOSを、ハイレゾモードから無理矢理出現させて、EA000hからの拡張ROM域に移すという、危うい綱渡りのようなことをやっています。このため何が起こるかまだ判っていません。また100ボードのBIOS自体、完全にリロケータブルかどうか判っていません。とくにシステムワークエリアの使い方においてノーマルモードとハイレゾモードでは違いがあります。一応、本ツールではそこの辻褄合わせを行っていますが、どの程度確実に動作するかは未だ確認されていません。
IPLwareアプリケーションのいくつかは、「シャドウRAM」を操作します。ハイレゾモードでEA000-EDFFFhのところに通常はBIOSなど存在していませんので、その操作の際に出現を取り消してしまいます。そのようなアプリケーションを同時に使うことができません。そのようなアプリケーションのほうを修正しないと併用可能にはなりませんので、今後、対象アプリケーションを更新する予定です。この文書のWebサイト版のほうに、対応アプリケーションを追記して行く予定です。
10月12日現在、SCSI_RAM はHIRES100に影響しないようになっています(そもそも不要ですがIPLwareに入れてあっても問題ないようにしました)。A1030ROMというプログラムでパッチをあてたBIOSでも、HIRES100は動作します。表示されるメッセージが1行欠けますが心配は要りません。
▲EXIDE486 との併用
EXIDE486 との併用については注意が必要です。EXIDE486のあるROMボードをEA000h に、 HIRES100のあるROMボードをEC000hに置いてください。つまりEXIDEのほうを低位のアドレスに(先に実行されるように)します。逆にするとHIRES100が動作開始した時点でEXIDE486のROMの出現を取り消してしまうため動作しません。またHIRES100の入ったROMボードをそのままにしながら100ボードを抜いてあるという場合もこのアドレス配置でないとEXIDE486が正常に動作しなくなります。なおHIRES100が動作して100ボードのBIOSがEA000hに現れた後は、どちらのROMボードのROMも見えなくなります。DOS実行形式のお試し版はバージョン1.00で廃止されました。
■ 技術的解説
読み飛ばして構いませんが、一応書いておきます。
ハイレゾモード下でも100ボードのROMはCバスに接続されています。しかしCPUからアクセスはできません。CPUからはG-VRAMが見えるようになっているためです。また100ボードもハイレゾ信号を受けるとアドレスを引っ込ませてしまう作りにはなっているようです。このため一度ノーマルモードであるという信号を出し、G-VRAMの接続を切って、DC000hにROMが現れるようにします。これを一旦メモリ上にコピーしたあと、G-VRAMの出現を戻し、ハイレゾである信号をたたき出します。さらに一時的にメモリに置いたデータを、内部RAMのEA000hのところにコピーします。
つまりEA000hのところは、最初はROMボードの本プログラムが現れているものの、本プログラムがRAM上に自身をコピ−、ジャンプして動作すると、100ボードのBIOSの載ったRAMにすり替わります。実行から戻ったときには 100ボードの最初に呼び出されるエントリにジャンプします。これにより100ボードの初期化動作は自動的に行われます。これでブート可能となるようです。なおROMボードをEA000h以外のアドレスに置いても、EA000hに現れた100ボードのエントリは実行されます。
ソースプログラムはこちらにあります。(10月11日リンク設置)
■ お約束
非常にイレギュラーなことを行う実験的プログラムです。使用したことによりSCSIドライブのデータを失うなどのことがあったとしても、作者は責任を負いません。実用性はそこそこ有りますが、ボードを2枚挿すくらいなら、ふつうのSMITのSCSIボードのほうが、転送速度の点でも勝っています。
■ 改版履歴
日付 版 内容 2025-10-10 0.50 新規作成 2025-10-12 0.70 DIV0ROM機能の追加 2025-10-17 0.90 表示メッセージの日本語化 2025-10-20 1.00 ROMアドレスはEA000h固定ではなく、以降のどこに配置しても動作可能とした