Cyrix486 SLC,DLC,SRx2,DRx2などのCPUのキャッシュユーティリティをIPLware化、ROM化しようというのが目的です。FD-IPLwareを使えばDISK BASIC、ROM BASIC、そほのか非MS-DOSのFD起動システムでもCPUキャッシュが効くようになります。またROMで実行するアプリケーションも用意されており、ブート時からキャッシュを有効にできます。
このプログラムが主に対象とするのは、もとが80386/286機で、贅沢なハードウェア回路を持っていないCPUアクセラレータか、単体で載せる486DLC,SLCです。独自のハードウェアでCyrix486の拡張されたピンに接続があるような製品では、本プログラムは最適な動作を行うことができない可能性があります。80286機ではCPUがソフトウェアリセットを起こすことがあると、その時点でキャッシュが無効となってしまいますが、避けることのできない仕様です。
CX486IPL.COM は、IPLware(FD-IPLware、OSFD-IPLwareを含む)として、またはDOSコマンドラインからの実行としても使えます。
別途IPLware.exe など を入手しておき、
で組み込みます。FD-IPLware, OSFD-IPLwareも同様です。このうちFD-IPLware以外の環境で実行したものは、どういう使い方に発展しても安全な、必要最小限の設定になります。
CX486IPL.ROMはROMアプリケーションのイメージデータです。ROMボードを製作・入手できる方は試すとよいでしょう。動作環境によってキャッシュ設定が後述のように異なります。
CX486IPL.COM をDOSコマンド、とくにAUTOEXEC.BATの中で実行します。DOS起動後にはキャッシュ可能なゾーンを拡げても問題なくなるので、ここで改めてキャッシュの設定がなされます。キャッシュされる範囲は、3.の選択で指定したものとなります。
以上、さまざまな動作環境がありますが、まとめると次の表のようになります。
表1
実行環境 | CPUキャッシュの動作 |
---|---|
IPLware(固定ディスク起動) | 「安全な固定設定 」 |
OSFDIPLware(最初にフロッピー起動) | 「安全な固定設定 」 |
FD-FDIPLware(フロッピー起動) | 「キャッシュ可否設定に従う(変更可能) 」 |
MS-DOSコマンド | 「キャッシュ可否設定に従う(変更可能) 」 |
ROM(もと80286機,ノーマルモード) | 「キャッシュ可否設定に従う(変更可能) 」 |
上記以外のROM | 「安全な固定設定 」 |
安全なキャッシュ範囲は、次のような箇所をキャッシュ無効にしたものです。
ノーマルモードでは次のような Non cache regionの設定です。
ハイレゾモードでは次のようなNon cache regionの設定です。
1MB空間毎の最初の64KBをキャッシュ無効にしないとならないのは、MS-DOS起動後のHIMEM.SYSが「A20ライン制御エラー」という誤った判断を起こすためです。80000hからの128KBをキャッシュ無効にしないとならないのは、他のIPLwareアプリケーションで「メモリウィンドウ」を使用する場合(例えばSCSI_RAM、壁超えSCSI など)です。SYSTEM BIOSは F8000h以上のところがバンク切り替えとなるときにはキャッシュ有効では問題が起こりますが、そうでなければおおむねキャッシュ可です。ただし遅い80286機では不具合が出る可能性があります。
上の表1で「キャッシュ可否設定に従う」 としているところは、下記の設定を行うことで、よりキャッシュ範囲を拡げて、CPUパフォーマンスを向上させます。DOS起動完了後には、通常はメモリ領域のバンク切り替えなどが発生することがないためです。DOSコマンドからの場合、
というようにコマンドラインオプション -set または /set を付けると、設定モードとなります。
という表示に続き、
ハイレゾモード時には最後の問に代えて、
といった問が出ます。
キャッシュ無効に「しない」と「する」の選択ですから、基本的には「しない」のほうを選択すべきです。キャッシュによるパフォーマンス向上が見込まれます。全てについて無効に「する」を選ぶと、表1の「安全な固定設定」と同じになります。メッセージにしたがって、実際のお使いの環境に合わせて選択してください。なおハイレゾモードでNECのEMS.SYSや各社EMSボードでB0000hのところをウィンドウとして使用する場合は、「メモリウィンドウ」をキャッシュ無効とする必要があります。
DOSコマンドだけでなく、IPLware,FD-IPLware,OSFDIPLware ,ROMで実行した場合でも、設定モードに入ることができます。 CX486IPLが実行される
上記のメニューの通りに設定されるのは、表1で「キャッシュ可否設定に従う(変更可能) 」としている動作環境のときだけです。具体的には、MS-DOS以前の場合はFD-IPLware版と、「元が80286でノーマルモードのROM版」だけです。MS-DOSの場合は、それまでの段階でどのような設定であっても、コマンドラインで実行したときからこの設定が適用となります。したがって、IPLwareやROMとして実行してあっても、MS-DOSのAUTOEXEC.BATなどでもう1回実行しておくべきだと言えます。
キャッシュ可否範囲の設定を行った場合、その情報はメモリスイッチ7に記憶されます。バックアップバッテリが正常な状態で、DIPスイッチ2-5をONにし、メモリスイッチを保持する側で使用してください。メモリスイッチが保持できない環境では、デフォルトの設定(キャッシュをより広く効かせるが危険性は高い)になります。
本プログラムをIPLwareに組み込んである場合、EMM386はMS-DOS version 6.20やWindows 3.1に付属のものは動作するようです。LEMMも概ね動作するようです。MELEMM.386は動作しているかどうかあやふやです。 /CX オプションを指定すると本プログラムと同じようにDISK BIOSへのフックが発生します。どうしてもMELEMM.386を使いたい場合は、基本的には本プログラムを実行しないほうがよいでしょう。それか他のEMMに変更してください。
もとが80286機である場合、シャドウRAMがなくシステムBIOSにパッチを当てることができません。このため「CPUのソフトウェアリセット」が発生すると、キャッシュが全無効となってしまいます。HIMEM.SYSやEMM386の使用ではこのリセットが発生することがあります。他のXMM,EMMを使うと問題が解消される場合があります。
EPSON PC ではCPUリセット後のキャッシュ有効化は機能しません。NEC製の、もと80286機と同じ動作仕様となります。H98model70,60は仕様の詳細が不明のため対象外とします。ハイレゾ初代機のPC-98XAでは動作しません。
このプログラムを実行または組み込むと、有名なリブートツールであるHSBでの再起動ができなくなるかもしれません。ディスクブートからの再起動ではさまざまな問題が生じる可能性があります。再起動はリセットボタン押しが基本となります。
PC-9801前面の DIPスイッチ 2-7 をONにすると、強制的に「DISK BIOSへのフックを行わない」モードにします。もともとOFFがデフォルトとなっています。もしIPLwareのあとDOS以外のプロテクトモードを使うOSを起動する場合は、DIP SW 2-7 をONにしておいて下さい。そうでないと、DISK BIOSからOSのディスクドライバに切り替わったとき、ドライバがDMA転送を行うと、データを失うなどして正常に動作しなくなります。本来はCyrixのCPUにきちんと対応したOSのドライバを必要としますが、Win95用VxDを除くと存在はほとんど知られていません。なお「DISK BIOSへのフックを行わない」にするとパフォーマンスはかなり低化してしまいます。
ハードウェア改造をするか、ハードウェア回路によるFLUSH#ピン制御を行うCPUアクセラレータの場合、CCR0の bit4 を1 にして、FLUSH#ピン制御を行うようにすべきです。DIP SW 2-1 をONの状態で CX486IPLを実行すると、そのような動作になります。ハードウェア回路によるFLUSH#ピン制御を行う場合は DISK BIOSへのフックも不要のはずですから、同時に DIP SW 2-7 もONにすべきです。
なお DIP SW 2-1,2-7 は早期のPC-9801で廃止となっており、Cyrix486を搭載できるような機種では未使用・未参照となっているため、構わず流用しています。しかしPC-9801Dシリーズでは機械式DIPスイッチ自体が廃止となっており、上記の機能が使えません。
ソースプログラムはこちらです。CX486Dと共用です。
このソフトウェアはフリーソフトウェアです。自由に使っていただいて構いませんが、作者は、このプログラムの動作結果や影響に対して、一切責任は負いません。使い方を誤るとディスクのデータを破損する可能性のあるツールです。
著作権は作者である「まりも」が保有するものとします。不特定多数がダウンロードできる場所への転載はお断りします。連絡先メールアドレスは、ホームページ上に記載してあります。
まりも (連絡先メールアドレスはホームページ上で)
日付 | 版 | 内容 |
---|---|---|
2024-05-15 | 0.93 | 80286のままの機種に載せたときにエラーで終了するようにした |
2024-05-16 | 0.94 | CPUIDを見ずCyrix判定を行うようにし、486SLCが動作可能となった |
2024-05-17 | 0.95 | 適用機種判定強化、DIP SW2-1によるFLUSH#ピン使用の機能を追加 |
2024-05-18 | 0.96 | コンソール画面表示の改良, 内蔵SASI/SCSI存在判定の誤りを修正 |
2024-05-20 | 1.00 | CPU判定の改善 |
2024-05-25 | 1.10 | ハイレゾモード時の不具合を回避, ハイレゾEMSに対応 |
2024-10-06 | 1.20 | ノーマルモード時のNCRの設定が誤っていたバグを修正 |
2025-07-20 | 1.21 | SASI HDDが存在するときCX486IPLが暴走するバグを修正 |
2025-09-01 | 1.30 | I/O 22hへの不要なアクセスを削除, SYSTEM BIOSを一部キャッシュ可に変更 |
2025-09-08 | 2.00 | キャッシュ可否範囲を設定できる機能を追加、多数のバグの除去 |
2025-09-12 | 2.10 | CX486Dから内容を分離、FDIPLware時はDOSの時と同じ設定にした、 システム共通域を偽装し486機にみえるようにした |
2025-09-13 | 2.11 | 特定アドレスのキャッシュ可否設定画面に乱れがあるのを修正 |
2025-09-14 | 2.20 | ROM版でも設定メニューを出せるようにした もと80286機でのノーマルモードのROM版はDOSでの設定と同じとした 説明文書の簡略化 このバージョン2.20のダウンロード |
2025-09-15 | 2.21 | PC-98XAでは動作しないことを明記した ハイレゾモードのIPLwareやROMで実行中に768KBまで キャッシュできるというメッセージが現れないようにした |