100ボードをハイレゾモードで動かす(ROMアプリケーション)

HIRES100  0.70  (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ボードの準備)

 ハイレゾモードのアドレスEE000hでも動作可能なROMボードを用意してください。といっても現状では100ボード以外のCバスSCSIボードの流用品くらいしか存在していないと思います。そのROMに HIRES100.ROM を焼き込みます。2個のROMが使われているSCSIボードでは、偶数番地用と奇数番地用に振り分けたデータをご自身で用意し、それぞれのROMに焼いてください。

 SCSI流用ROMボードの場合、ボードのROMアドレス(SW2-1,2,3)はノーマルモードでD000またはD600に(要するにD800,DA00,DC00,DE00以外)設定し、ハイレゾモード(SW2-4,5)でEE00に設定します(これ以外不可)。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ドライブが認識されるはずです。

■ お試し版

 HIRES100.COM はDOS上で動作するテストプログラムです。100ボードを装着したままハイレゾモードで起動し、このプログラムを実行してください。すると、EA000hからの16KBに100ボードのROMが出現しているはずです。もしお使いの環境で現れないようでしたら、ROM版もその環境では動作しないと思います。

■ 注意点

 本来ノーマルモード用のアドレスDC000hに出現するはずの100ボードのBIOSを、ハイレゾモードから無理矢理出現させて、EA000hからの拡張ROM域に移すという、危うい綱渡りのようなことをやっています。このため何が起こるかまだ判っていません。また100ボードのBIOS自体、完全にリロケータブルかどうか判っていません。とくにシステムワークエリアの使い方においてノーマルモードとハイレゾモードでは違いがあります。一応、本ツールではそこの辻褄合わせを行っていますが、どの程度確実に動作するかは未だ確認されていません。

 IPLwareアプリケーションのいくつかは、「シャドウRAM」を操作します。ハイレゾモードでEA000-EDFFFhのところに通常はBIOSなど存在していませんので、その操作の際に出現を取り消してしまいます。そのようなアプリケーションを同時に使うことができません。そのようなアプリケーションのほうを修正しないと併用可能にはなりませんので、今後、対象アプリケーションを更新する予定です。この文書のWebサイト版のほうに、対応アプリケーションを追記して行く予定です。
10月12日現在、SCSI_RAM はHIRES100に影響しないようになっています(そもそも不要ですがIPLwareに入れてあっても問題ないようにしました)。

 A1030ROMというプログラムでパッチをあてたBIOSでも、HIRES100は動作します。表示されるメッセージが1行欠けますが心配は要りません。

■ 技術的解説

 読み飛ばして構いませんが、一応書いておきます。

 ハイレゾモード下でも100ボードのROMはCバスに接続されています。しかしCPUからアクセスはできません。CPUからはG-VRAMが見えるようになっているためです。また100ボードもハイレゾ信号を受けるとアドレスを引っ込ませてしまう作りにはなっているようです。このため一度ノーマルモードであるという信号を出し、G-VRAMの接続を切って、DC000hにROMが現れるようにします。これを一旦メモリ上にコピーしたあと、G-VRAMの出現を戻し、ハイレゾである信号をたたき出します。さらに一時的にメモリに置いたデータを、内部RAMのEA000hのところにコピーします。

 しかしこれだけではROMボードのスキャンには出遅れているため、最初のブートROM読み出しのときに行われる処理を代替し、次回のROMスキャンに間に合わせます。この処理は、システムワークエリアの0000:4B2,4BA,4BChのところにEA(出現するアドレスの上位8バイトの値)を置くことと、0000:04C4hにある「ROM ID」を記入することです。 これでブート可能となるようです。

 ソースプログラムはこちらにあります。(10月11日リンク設置)

■ お約束

 非常にイレギュラーなことを行う実験的プログラムです。使用したことによりSCSIドライブのデータを失うなどのことがあったとしても、作者は責任を負いません。実用性はそこそこ有りますが、ボードを2枚挿すくらいなら、ふつうのSMITのSCSIボードのほうが、転送速度の点でも勝っています。

■ 改版履歴

日付    版  内容
2025-10-10 0.50 新規作成
2025-10-12 0.70 DIV0ROM機能の追加

←【トップページに戻る】