PC-98の「メモリスイッチ」 と「DIPスイッチ」
Copyright(C) 2025 まりも
要点
- 「DIPスイッチ」 には機械式とソフトウェア式があるが本質は同じで、後者は記憶域が拡張されてきた
- 「DIPスイッチ」 はアプリケーションソフトウェアから変更することを想定していないものである
- 「メモリスイッチ」 はアプリケーションソフトウェアからの変更を想定したものである
- 「メモリスイッチ」 は、再起動後の状態を変更したい場合に特に有用であり、ブート装置選択がこれに該当する
- 後期のPC-98では「DIPスイッチ」 の設定をソフト的に変更できなくはないが、そのプロセスはあまりに機種固有であるし、仕様も未解明である
■ PC-98本体を設定する2つの「スイッチ」
PC-98シリーズ各機種には、「DIPスイッチ」 と「メモリスイッチ」 とがあります。しかしこれらの違いを理解している人は、今もあまり多くないようです。いずれのスイッチも、正しく動作させるには、バックアップ電池が健全である必要があります。そうでない場合、全ての設定項目について、デフォルトの設定でしか使用できなくなります。電源を落とすと設定はデフォルトに戻されます。しかも「メモリスイッチ」 の保持と初期化の選択が、「DIPスイッチ」 の設定項目となっているという、ややこしい関係にあります。これらのスイッチの違いは、PC-98を使いこなす上では必ず知っておくべきです。
■ 「DIPスイッチ」
PC-9801VXの頃の機種には、本体の前面に機械式の8bit「DIPスイッチ」 が3個並んでいました。このスイッチはPC-98の動作に係わるさまざまな設定を行うものです。主にInitial Test Firmwareがこの設定をソフト的に読み出して、98の動作を決定していましたが、場合によっては回路直結であったかもしれません。なかでも「DIPスイッチ」 2はアプリケーションソフトウェアからI/Oアドレス31hを通じて簡単に読み出すことができました。「DIPスイッチ」 の特徴は、ソフトウェアから設定(の一部)を読み出すことはできても、設定を変更できないという点です。もともとは機械式スイッチですから、電源を入れ続けていなくても設定は永久に保たれるものです。
時代が進んで行くと、このスイッチの一部はソフトウェアで行うものに変わって行きました。H98シリーズや98 FELLOWからは完全にソフトウェアに置き換わりました。この設定を行うソフトウェアが「システムセットアップメニュー」です。これは、電源投入時にHELPキーを押すと現れる、おなじみのものです。しかし元が機械式であったことは忘れてはなりません。そう、システムセットアップメニュー以外の一般のアプリケーションでは、設定を変更することができないという点です。では設定はどこに記憶されているか? 実はこれはあまり解明されていません。基本的には電池でバックアップされたSRAMに記憶されていますが、その設定手順は機種世代によって大きく異なるようです。最後期の機種では、一部の設定がシリアルEEPROM 24C01に記憶されている可能性も指摘されています。
電池によるバックアップが失われると、ソフトウェア「DIPスイッチ」 の内容も失われることになります。これが、起動時に現れる「SET THE SOFTWARE SWITCH」のメッセージの意味です。Initial Test Firmwareは、SRAMの記憶に何らかの異常(チェックサムなど)を見つけると、このメッセージを出して、デフォルトの設定にしたうえで再起動します。ちなみに、このメッセージが無限に繰り替えされて再起動する場合は、SRAM周辺回路の故障が推測されます。多くの場合、基板のプリントパターン切れです。
■ 「メモリスイッチ」
「DIPスイッチ」 はソフトウェア的に変更できないものですが、それでは困る場合がいくつか考えられました。たとえばROM BASICにおけるRS-232Cの通信パラメータのBIOS設定、起動するデバイス(FD,HD,SCSI)の選択、です。これらの機能のための情報は、いったんリセットをしたあとにも引き継がれなければならない事項であるため、通常のアプリケーションのようにシステムメモリ内に置くわけにはいきません。システム外の記憶場所に置かねばならないことから、「メモリスイッチ」 というものが用意されたと考えられます。とはいっても、再起動のたびに起動デバイスをソフト側から変える必要があるのは、OSのインストールのときくらいです。一般ユーザにとっては、起動したいデバイスの指定は、機械式「DIPスイッチ」 でも構わなかったはずです。実はそのほうが面倒はありませんでした。
「メモリスイッチ」 の設定は、例えばMS-DOSアプリケーションのSWITCH.EXEで行います。もちろん一般のアプリケーションも直接「メモリスイッチ」 の読み書きをすることはできますが、OSを起動しなければいけないという点で手間がかかります。
実際、「メモリスイッチ」 が使われる設定項目の多くは、BASIC時代のものが多いです。これはROM BASICを起動したときにすぐに設定が反映される必要性があるためと考えられます。他のOSでは、再起動後の状態を変更するもの以外、「メモリスイッチ」 の必要性はありません。このため98が進化しても「メモリスイッチ」 の機能が追加されることはありませんでした。1989年頃の、SCSIと光ディスクの起動についてのbitの追加を除けば、です。
■ 「メモリスイッチ」 の初期化と保持を「DIPスイッチ」 で決定するという仕組み
起動デバイスの選択は「メモリスイッチ」 の設定によって指示を受け、システムが起動します。しかしDOSのSWITCH.EXEにみられるように、OSが起動しないとその設定ができません。このため、例えば誤ってSCSIからの起動に設定されている場合、SCSI装置の存在がないと、起動できなくなってしまいます。これを避けるために、「DIPスイッチ2-5」 には「メモリスイッチ」 の設定を破棄する機能があります。「初期化」のほうに設定するとデフォルトの設定となり、起動デバイスについてはFD->HD-SCSIの順で検索されるようになります。誤ってSCSIに設定してあっても他の装置から起動可能となります。いっぽう、「メモリスイッチ」 の内容を常に保持するためには「DIPスイッチ2-5」 の操作に入り、
![]()
次の画面で「メモリスイッチ」を「保持する」側にしなければなりません。デフォルト設定では「初期化」です。
■ 「起動装置の選択」が「メモリスイッチ」 に残されたことの問題
しかし再びSCSI HDDを繋いでSCSIのみから起動させたいときには、この仕組みではとても不便です。起動デバイスの選択も「DIPスイッチ」 に移行すべきでした。とくにソフトウェア「DIPスイッチ」 になってからは、項目は増やすことができたはずなので、「メモリスイッチ」 の保持をしつつ、その設定初期値をシステムセットアップメニューで設定できるようにするのが望ましかったと言えます。ソフト側から見た機構は従来通り「メモリスイッチ」 のままとしておけば、システムセットアップメニューを実行しない場合にはアプリケーション側で変更でき、従来互換性が保たれます。しかしこれは実現されませんでした。
なるべく起動の初期段階でメモリスイッチのブート装置とソフトウェアDIPスイッチの2-5の設定が同時にできると便利であることから、「FDloader」兼「通常のFD起動」で使える設定ツールMEMSWBTを作ってありますので、ご活用ください。
![]()
なおハイレゾリューションモードでは、起動装置をメモリスイッチの設定に委ねるという機構が廃止されており、起動時のキーボード操作での選択となっています。ROM BASICも無いことから、メモリスイッチに相当する記憶域は、存在していてもあまり使用されていません。
■ それぞれのスイッチの従来互換性
「メモリスイッチ」 はアプリケーションソフトウェアからの変更を可能としているため、互換性が保たれています。PC-9801VMの頃から最終機まで同じ仕様です。とはいってもほとんどはBASICで予約してしまっており、空いているbitは非常に限られます。「メモリスイッチ」 6番のbit 0,1,2くらいです。しかしBASICで使うことなど想定しない現在では、かなり自由に使っても構わないといえます。「メモリスイッチ」 の難点は、既に述べたように、「DIPスイッチ2-5」 で初期化設定となっていると、全く記憶できないことです。しかもそれがデフォルト設定です。
いっぽう「DIPスイッチ」 は機械式の3つのものは機能の割り当てに互換性が保たれているとはいうものの、アプリケーションソフト側からの読み出し法で互換性が保たれているのは、「DIPスイッチ2」 に限られています。
「DIPスイッチ」1と3の読み出し方は機種によってかなり異なり、互換性にやや乏しいです。ソフトウェア化されたことから書き込みも可能な場合がありますが、それはもっと手数がかかる上に機種互換性がありません。アプリケーションソフトからの利用はかなり限定されます。わたしのソフトウェアでは、PCIバス搭載世代の機種についてのみ、EXIDEシリーズの設定記憶のためにソフトウェアDIPスイッチの空きを利用しており、その他の機種では、汎用性のあるメモリスイッチ6の空きを利用しています。
なお両方のスイッチ類の設定を一挙に表示するソフトウェアとして VSWITCH というものを作ってあります。ご利用ください。IPLwareでもDOSアプリケーションでも実行できます。
![]()
まりも (連絡先メールアドレスはホームページ上で) Written on 7,Jul,2025 Revised on 12,Jul,2025