Wildcat機のGVRAM/拡張ROM域/BASIC ROM域をすべてRAM化する 

 WCRAM.SYS ほか

Copyright(C) 2021 まりも (DOSsoft)

■ このアプリケーションの意義

 PC-9800シリーズではA800hセグメント以上のところにはグラフィックメモリや拡張ROM域がありますが、WildCat機では そこを全てRAMにすることができる仕組みがあります。なんと1MBの空間全てをRAMにすることができ、しかもCPUのキャッシュが効くのです。

 本アプリケーションは、A800-DFFFhの区間およびE000-EFFFhの区間をすべてRAMにします。これらの区間は合計で256KBもあります。ここをUMBツールなどでUMBとして使用することができるようになります。これだけの大きなUMBエリアがあると、例えば日本語フロントエンドプロセッサもEMS無しで収まってしまいます。

 ただしG-VRAMの全てとROM BASICのエリアをRAMにしてしまうことから、グラフィックを使用するアプリケーションは一切使えないことになりますし、ROM BASICインタープリタも使えなくなります。それでは困るという場合のため、グラフィックメモリは通常通り使えるバージョンも用意しました。

■ プログラムファイルの説明

 このアプリケーションには、通常のEXE実行版、DOSデバイスドライバ版、IPLware版の3つのタイプがあります。それぞれにグラフィックメモリをRAMにしないバージョンがあり、合計6個のファイルがあります。

WCRAM1.SYSDOSデバイスドライバ
WCRAMG1.SYSDOSデバイスドライバ, グラフィックVRAM領域に適用しない
WCRAM.BINIPLwareアプリケーション
WCRAMG.BINIPLwareアプリケーション,グラフィックVRAM領域に適用しない
WCRAM.EXE実行版
WCRAMG.EXE実行版,グラフィックVRAM領域に適用しない
WCRAM.TXTこの説明書テキストファイル

■ 使い方

(1)デバイスドライバ版 WCRAM1.SYS, WCRAM1G.SYS

config.sysの先頭にdevice= 文で記述してください。すくなくともHIMEM.SYSより前に位置する必要があります。その直後にしかるべきUMB拡張ドライバを記述してください。例として EMUMBのうちの「EMUMB386」を取り上げますと、
device= WCRAM1.SYS
device= EMUMB386.SYS /eA800-D7FF /mE000-EFFF
devicehigh= HIMEM.SYS
のようになります。D800にはPCI/IDE BIOSがあり、D000,D400,DC00にはブート可能な拡張ROMが存在している可能性がありますから、そこは範囲から外して下さい。

 WCRAM1.SYSでは拡張ROMで使っているかどうかは調査しているので、とくにオプションの指定はありません。なおUMBドライバが組み込まれた直後からUMBは使用できるので、より後のHIMEM.SYSはdevicehigh の記述でそれ自身をUMBに置くこともできます。

(2)IPLware版 WCRAM.BIN, WCRAMG.BIN

IPLareとして組み込んでください。98本体がWildcat機でない場合でも正しく動作を回避するので、組み込みっぱなしでも構いません(CPUが80386以上の場合に限り)。DOS起動後のUMB拡張デバイスドライバは上記のように必要となります。

 DOS以外のOSでは、グラフィックVRAMのエリアがRAM化されていると不具合が起こると考えられます。まずグラフィック画面が表示できずどうにもなりません。通常はデバイスドライバ版で十分あり、IPLware版を使う必要は一般的にはないはずです。

(3)DOS実行版 WCRAM.EXE, WCRAMG.EXE

DOS起動後にUMBを構築することは一般的ではありませんので通常は使うことはないはずですが、実際にメモリが出現できているかどうかのテスト用として用意してあります。

■ 注意事項

 UMBを目的とする場合はMS-DOS 5.00以上が必要です。

 C000-DFFFエリアに拡張ROMが存在している場合は、そのままの属性で残されます。つまりROMがそのまま見えている状態、もともとRAMに転送されている状態があったとして、そのそのまま引き継ぎます。このため拡張ROMが存在していればメモリとして連続しませんので、UMB拡張ドライバの範囲指定は各自で把握したうえで適切におこなってください。

 このアプリケーションはリアルモードDOSで使うことに意味があるのであって、EMM386など仮想86EMSとUMBを使用する場合はとくに必要のないものです。仮想86ドライバの機能で通常は自動的にUMBを割り当てることができます。本アプリケーションによってRAM化してあるところはEMM386では既に使用されているものと見なされ、それによるUMB割当が回避されてしまいます。

 IPLwareのアプリケーションでもDOSデバイスドライバでも、G-VRAMや裏RAMを使うものがあります(とくにRAM DISKドライバによくある)。そのようなアプリケーションとは同時に使うことはできません。

 RAM化されたところはCPUキャッシュが有効となるようにもしています。副作用として、PCI SCSIアダプタなどのブートBIOS ROM域もキャッシュが効くことから、BIOSでのディスクアクセスが高速化されますが、それが問題を引き起こすということもあり得なくはありません。

 既存の他のプログラム、C000RAMとE800RAMは本アプリケーションと機能重複します ので、両方使用しないようにご注意下さい。Wildcat機についてはキャッシュが 有効になるなどの点で本アプリケーションのほうが改良されています。

■ その他

 ソースコードが付属しています。source.lzhの中にまとめられています。先頭のIPLwareという定義を外すとDOS実行版となります。WCRAM1.asmをアセンブルすればデバイスドライバ版となります。USE_GRAPHという定義を有効にするとG-VRAMエリアのRAM化をしないバージョンが作成されます。

 ソースプログラムに少し手を加えれば、テキストVRAMのA000-A7FFも実はRAM化できます。そのままDOSを起動すると画面は表示されなくなりますが、832KBのフリーメモリエリアが連続で確保された状態にできます。一般的にはそのような状態では使いようがありませんが、DOSアプリケーション内部で一時的のそのような状態にしてからメモリを確保するというような応用は考えられます(もちろんテキスト表示は一切しないという前提で)。

■ お約束

 このプログラムはフリーソフトウェアです。自由に使用してよい代わりにサポートはありません。直接的・間接的に、このプログラムの運用の結果に何があっても、作者は一切責任を負わないものとします。著作権は作者が保持しています。著作権侵害のないようにお使い下さい。他のサイトへの転載は認めません。連絡先メールアドレスは、トップページに記載されています。

[同意の上ダウンロードする]

【改版履歴】

2021.12.21 1.00版 新規作成

[戻る]