PC-8001/8801は、従来機種との互換性を保つために「建て増し」された構造となっています。これは別にPC-8801に限った話ではなく、この世代のソフトウェアはハードウェアの仕様に強く依存したもので、OSが差異を吸収するなんてことはまずなかったからです。
本体を新品で入手すると、マニュアルにはその機種の「モード」について説明があったので、当時のユーザはそれを読んで適切に設定ができました。 でも今それを知るのは大変手間がかかるでしょう。
例題1:誰かから「PC-8801FH」一式と、「PC-8801/mkII用」の「ハイドライドII」をもらった(買った)として、このソフトを動かすための設定は?
例題2:昔の雑誌に掲載されていた「PC-8001、PC-8001mkII、PC-8801、PC-8801mkII用」のプログラムを打ち込むとして、このソフトを動かすための設定は?
もちろん、当時のユーザからすれば簡単な問題ですが、これらを初めて手にしたユーザは困惑するしかないでしょう。というわけで、自分が把握している範囲で書き記してみました。
PC-8001/8801の各機種は、(PC-88VAシリーズを除き)N-BASICモードという共通基盤があり、PC-8001系とPC-8801系でそれぞれ互換性のない(似て異なる)進化を遂げています(一方、PC-6001/6601シリーズの間は互換の範囲が大きい)。そのため、以下のような非互換性が存在します。
また、少ないもののこの前提に当てはまらないソフトウェアも存在します。例えばPC-8801mkIISRでは動作するが、FR以降では動作しないなど。逆にPC-8001mkIISR/PC-8801mkIISR両対応のソフトウェアも存在します。また、BASICモードを自力で適切に切り替えてしまうソフトもわずかに存在します。
そして、起動中にスイッチを操作することによるモード切り替え(クロック切り替えも含む)はサポートされていません。切り替えた場合は、リセットまたは電源を再投入することで反映されます。
たとえば「N88V1S」(V1Sモード)はPC-8801相当のモードを指しますが、PC-8801発売当時にあった名称ではありません(レトロニム)。 PC-8801mkIISRで新設された「N88V2」(V2モード)と区別するために、この名前となっています。
こういった経緯により、当時のマニュアルやパッケージの表記には揺らぎがあります。
また、設定方法の略語は次のとおりです。 セットアップモードは、[PC]キー(DO/DO+は[GRPH]キー)を押しながらリセット、あるいは電源オンで現れるメニュー画面のことです。
略称 | 意味 |
---|---|
DIPSW | DIPスイッチ。ボールペンの先で上下させ、値を変化させるスイッチ。設定方法はリンク先参照。 |
SSW | スライドスイッチ。横方向にスライドさせるスイッチ。 |
SETUP+SSW | セットアップモードによる設定(BASIC)と、スライドスイッチの設定(CLOCK)を併用。 |
SETUP | セットアップモード。画面を見ながらキーボードで値を設定する。 |
また、各モードの記号は次のような意味で記しています。
記号 | 意味 |
---|---|
− | 利用不可 |
△ | 直接モード変更ができない |
▲ | 隠しコマンド([N][8][0]リセット、後述)でモード変更可能 |
○ | 対応(互換モード) |
◎ | 対応(その機種本来のモード) |
モードの指示がある場合は、もちろんそれに従ってください。ソフトウェアの対応機種が分かる場合、他に特別な指示がない限りは◎のあるモードを選択すれば良いです。
例題1の答え:「PC-8801FH」で「PC-8801/mkII用」の「ハイドライドII」を動かす場合、この表でPC-8801mkIIの「◎」がある「N88V1・4MHz」を選択する。
例題2の答え:「PC-8001、PC-8001mkII、PC-8801、PC-8801mkII用」のプログラムを動かす場合、全ての機種の共通項である「N・4MHz」を選択する。
機種 | BASICモード | クロック | 設定方法 | 特徴 | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
N | N80 | N80SR | N88V1 | N88V2 | N88V3 | 4MHz | 8MHzS | 8MHzH | |||
PC-8001 | |||||||||||
PC-8001 | ◎ | − | − | − | − | − | ◎ | − | − | − | N-BASICはここから |
PC-8001mkII | ○ | ◎ | − | − | − | − | ◎ | − | − | DIPSW | GVRAM搭載(80mkII方式) |
PC-8001mkIISR | ○ | ○ | ◎ | − | − | − | ◎ | − | − | DIPSW | GVRAM追加(80mkIISR方式)、高速化 |
PC-8801 (V1S) | |||||||||||
PC-8801 | ○ | − | − | ◎ | − | − | ◎ | − | − | DIPSW | N88-BASIC、GVRAM搭載(88方式) |
PC-8801mkII | ○ | − | − | ◎ | − | − | ◎ | − | − | DIPSW | JIS第一水準漢字ROM搭載、FDD内蔵(5"2D)/内蔵可 |
PC-8801 V2 4MHz | |||||||||||
PC-8801mkIISR | ○ | − | − | ○ | ◎ | − | ◎ | − | − | SSW | 高速化、FM音源(OPN) |
PC-8801mkIITR | ○ | − | − | ○ | ◎ | − | ◎ | − | − | SSW | モデム・受話器追加(TR) |
PC-8801mkIIFR | △ | − | − | ○ | ◎ | − | ◎ | − | − | SSW | SRの廉価版 |
PC-8801mkIIMR | △ | − | − | ○ | ◎ | − | ◎ | − | − | SSW | JIS第二水準漢字ROM搭載、5"2HD内蔵、メモリ増設(Mシリーズ) |
PC-8801 V2 8MHz (8MHzS) | |||||||||||
PC-8801FH | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP+SSW | 8MHzS |
PC-8801MH | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP+SSW | 8MHzS |
PC-8801FA | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP+SSW | FM音源(OPNA) |
PC-8801MA | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP+SSW | FM音源(OPNA) |
PC-8801FE | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP+SSW | FM音源(OPN)、廉価版 |
PC-8801MA2 | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP+SSW | FM音源(OPNA) |
PC-8801 V2 8MHzH | |||||||||||
PC-8801FE2 | ▲ | − | − | ○ | ◎ | − | ○ | ○ | ◎ | SETUP | 8MHzH、FM音源(OPN)、廉価版 |
PC-8801MC | ▲ | − | − | ○ | ◎ | − | ○ | ○ | ◎ | SETUP | 8MHzH、FM音源(OPNA)、CD-ROM2搭載/搭載可 |
PC-88VA (V3 mode) | |||||||||||
PC-88VA | − | − | − | ○ | ○ | ◎ | ○ | ◎ | − | SSW | V30/Z80切り替え |
PC-88VA2/3 | − | − | − | ○ | ○ | ◎ | ○ | ◎ | − | SETUP | V1/V2互換性向上、FM音源(OPNA)、2TD搭載/搭載可 |
PC-88+PC-98 (88モード) | |||||||||||
PC-98DO | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP | 98VM11/88MH相当のハイブリッド機 |
PC-98DO+ | ▲ | − | − | ○ | ◎ | − | ○ | ◎ | − | SETUP | 98VM11/88MA相当のハイブリッド機 |
機種 | N | N80 | N80SR | N88V1 | N88V2 | N88V3 | 4MHz | 8MHzS | 8MHzH | 設定方法 | 特徴 |
BASICモード | クロック |
PC-8001互換のモードで、PC-8001mkII/SRやPC-8801の全シリーズ共通で持っているモード。唯一の例外として、PC-88VAシリーズのみN-BASIC ROMが存在しないため、このモードを持たない(参考)。
88MR/FR以降はこのモードに直接入るためのスイッチが廃されたが、V1Sモードを経由して利用することはできる(N88-BASIC から NEW ON 1 コマンド実行など)。
88FH/MH以降、98DO以降はV1Sモードで[N][8][0](全てフルキー側)を押しながらリセットすると、このモードに遷移する。 FE2/MCの場合はV1H/V2モードからでも切り替えられる。
このほか、V1H/V2モードからでもソフトウェア的に切り替えることもでき、一部のソフトウェアは切り替えた上で動作している。
ちなみに、このモードにしても各機種固有のハードウェア(例:SRで追加されたALU、FM音源など)にはアクセスできる。また、88SR以降のSPEEDスイッチを H にすると、V1Hモード同様に高速化される。
N-BASIC起動直後のメッセージは以下のようなもので、N-BASICという表示ではなく、PC-8001 BASICとなっている点に注意。
NEC PC-8001 BASIC Ver.1.X Copyright 1979 (C) by Microsoft
PC-8001mkII互換のモードで、PC-8001mkIISRもこのモードを持っている。N-BASICに命令を拡張した作りになっている。
[CTRL]キーを押しながら起動すると、DIPSW (80mkII:SW8 / 80SR:SW2)の指定とは逆の設定で立ち上がる。
他のBASICの名称から推測すると、PC-8001に搭載されたBASICのような名前だが、PC-8001/8801に搭載されたBASICではない。
NEC N-80 BASIC Ver.1.X Copyright 1979 (C) by Microsoft Enhanced 1982 by NEC
PC-8001mkIISRにのみ存在するモード。
N80-BASICに命令を拡張した作りになっている。
[SHIFT]キーを押しながら起動すると、DIPSW (80SR:SW1)の指定とは逆の設定で立ち上がる。
NEC N80SR-BASIC Ver.1.X Copyright (C) 1979 Microsoft Corporation Copyright (C) 1984 NEC Corporation XXXXX Bytes free
PC-8801互換のモードで、全てのPC-8801シリーズ、PC-88VAシリーズ、PC-98DOシリーズに存在する。 80mkIIのように「N-BASICを拡張」したものではなく、中間コードも異なる別個のBASICとして登場している。
88/mkIIの頃は「N88-BASICモード」だったが、88SRが出た際に、N88-BASICモードが2つとなり、この従来互換のモードがV1モードと名付けられた。SR以降はSPEEDスイッチでV1モードがさらに2つに分かれている。V1SはテキストVRAMのウェイトで互換を持たせたモードであり、単に「V1モード」とある場合、このV1Sモードのことを示す。
細かい話をすると、SR以降のN88-BASICは、V1/V2ともDISK-BASICで拡張されていた機能の一部をROMで搭載している。
How many files(0-15)? は、OPEN文で利用する#1〜#15のバッファをいくつ確保するかの問いであり、そのままリターンキーを押すと接続中のディスクドライブ数に応じたバッファ数が指定される。
How many files(0-15)? NEC N-88 BASIC Ver.1.X Copyright (C) 1981 by Microsoft XXXXX Bytes free
PC-8801mkIISR以降、つまり「V2モードが存在する全てのPC-88シリーズで利用可能」なモードである。 V1Sとメモリマップは同一で、V2モード同様、テキストVRAMのDMAウェイトがかからない高速モードである。 ソフトウェアによっては高速すぎて利用に支障が出ることもあるので、その場合はV1Sを利用する。 「V2モードの速度で動作するV1モード」と言い換えることもできる。
PC-8801mkIISR互換モード。世の中に存在するPC-88用ソフトの多くはこのモード用に作られている。 テキストVRAMによるDMAウェイトから解放され、高速化が図られた。 ハードウェアの初期化方法の一部がV1モードとは異なる。 なお、V2モードはSPEEDスイッチがSであってもH相当で動作する。
V2モードでV1Sモード用のプログラムを実行すると、パレットの初期化方法が異なるために「グラフィックが全体的に青っぽくなる」ことがある。 これは本体の故障ではなく、V1Sモードで起動すれば正しく表示される。
How many files(0-15)? NEC N-88 BASIC Ver.2.X Copyright (C) 1981 by Microsoft XXXXX Bytes free
PC-88VAシリーズにのみ存在するモードで、V30(16bit) 8MHz相当のモードで動作する。
PC-8001シリーズの全てと、PC-8801/mkII/SR/TR/FR/MRは、このクロック周波数で動作している。 これらの機種まではクロック周波数の切り替えがそもそもできなかったので、明記されることはなかった。
PC-88VAでは本体前面のスピードスイッチを「Sモード」に、PC-88VA2/3ではセットアップメニューの「スピード」を「標準」にすると、このモード相当となる。
PC-8801MH/FHでは、クロック周波数を8MHzに切り替えることができるようになった。 ただし8MHzでは若干のウェイトが挿入されている。 MC/FE2登場までは単に「8MHz」と称された。
ソフトウェアによっては高速すぎて利用に支障が出ることもあるので、その場合は4MHzを利用する。
なお、クロック周波数はBASICモードとは独立して設定できるため、(あまり利用価値がないが)V1S 8MHzのような組み合わせの設定も可能ではある。
PC-88VAでは本体前面のスピードスイッチを「Hモード」に、PC-88VA2/3ではセットアップメニューの「スピード」を「ハイスピード」にすると、このモード相当となる。
PC-8801MC/FE2で利用できる、クロック周波数8MHzでウェイトを廃したモード。 利用できる機種が少ないこともあり、対応していないソフトウェアもあるので注意が必要。
8MHzでの動作を試す場合は、まず8MHzSから試してみることを推奨。
説明書の対応機種のキーワードと、モードスイッチの対応は、原則としてこのような具合です。 説明書などに具体的な指示がある場合は、それに従ってください。
もちろん、V1S用のソフトウェアをV1Hで動かしたり、4MHzのソフトウェアを8MHzS/8MHzHで動かすこともできるかもしれません。 シミュレーションゲームのように、処理に時間のかかるソフトには有効という場合もあります。 ただし、キー入力がしづらくなったり、BGMがおかしくなったりといった可能性もあります。
V1S用のソフトウェアをV2で動かそうとすると、ワークエリアの違いなどから正常に動作しなかったり、パレットなどの初期化が一部異なるため正しい表示にならなかったりすることもあります。 88の、とくに古いソフトウェアで挙動がおかしい場合は、V1Sで試してみることをおすすめします。
V2用のソフトウェアをV1S/Hで動かそうとした場合、"V2 mode only!" などのメッセージを表示するソフトウェアも存在します。 この場合は素直にV2に切り替えて動かします。
ソフトウェアからモードスイッチの状態を読み取ることができます。このため、複数の設定に対応したソフトウェアも存在します。
そのモードの有無がある機種でしか機能しない点には注意してください(V1/V2の判別は88SR以降、など)。PC-8000/8800シリーズの機種の判別方法は、BASIC ROMが持っているバージョン情報を調べるのが一般的です。
I/Oアドレス | bit | 内容 | bit=0のとき | bit=1のとき |
---|---|---|---|---|
30H | 0 | BASICモード | N-BASIC | N88-BASIC |
31H | 7 | V1/V2モード | V2モード | V1モード |
31H | 6 | ハイスピードモード | スタンダードモード(V1S) | ハイスピードモード(V1H/V2) |
6EH | 7 | CPUクロックモード | 8MHz | 4MHz |
I/Oアドレス | bit | 内容 | bit=0のとき | bit=1のとき |
---|---|---|---|---|
30H | 0 | 起動時のBASIC | N-BASIC | N80-BASIC |
33H | 7 | ROMモードコントロール | N80SR-BASIC | N/N80-BASIC |
bit 0は最下位ビット、bit 7は最上位ビットを示す。
N88-V1SモードのBASICからは NEW ON 1 コマンドでN-BASICモードに切り替えることができます。 しかし、N88-V1H/V2モードで NEW ON 1 を実行すると Feature not available エラーとなってしまいます。
N88-V1H/V2モードでどうしても切り替えたい場合は、マシン語でモード切替IPLと同じようなことをすれば、切り換えられます。 このプログラムを実行するとリセットがかかるので、必要なら事前にSAVEしておきましょう。
10 ' N88 to N mode 20 DEF USR=&HD000 30 CLEAR ,&HCFFF:RESTORE 40 FOR ADR=&HD000 TO &HD008:READ D$:POKE ADR,VAL("&H"+D$):NEXT 50 A=USR(0) 60 DATA F3,AF,D3,E6,3E,04,D3,31,C7
; DATA文の中身 ; N88→Nモード切替 F3 DI ; 割り込み禁止 AF XOR A D3 E6 OUT (0E6H),A ; RS-232C/VRTC/タイマ割り込み禁止 3E 04 LD A,04H D3 31 OUT (31H),A ; N-BASICモード選択 C7 RST 00H ; N-BASIC ROMの0000H番地へ(リセット)
N88-BASICでマシン語ルーチンを呼び出すには、DEF USR文のほかにCALL文もありますが、CALL文はPC-8801/mkIIではDisk BASICで追加される命令です。(?NA Error になる)
N88-BASICモードにどうしても切り替えたい場合は、マシン語でモード切替IPLと同じようなことをすれば、切り換えられます。 V1モードかV2モードかは、本体のスイッチがどちら側にあるか(I/Oポート31H bit7の値)次第となります。 このプログラムを実行するとリセットがかかるので、必要なら事前にSAVEしておきましょう。
10 ' N to N88 mode 20 DEF USR=&HD000 30 CLEAR 300,&HCFFF:RESTORE 40 FOR A=&HD000 TO &HD00D:READ D$:POKE A,VAL("&H"+D$):NEXT 50 A=USR(0) 60 DATA AF,D3,31,DB,32,E6,FC,D3,32,3E,04,C3,FE,77
; DATA文の中身 ; N→N88モード切替 AF XOR A D3 31 OUT (31H),A ; N88-BASICモード選択(A=0) DB 32 IN A,(32H) E6 FC AND 0FCH D3 32 OUT (32H),A ; 内蔵拡張ROMバンク0選択(4th ROM) 3E 04 LD A,0CH ; DIP-SW値 DELコード無視/Sパラメータ無効/テキスト80x25/N88-BASIC C3 FE 77 JP 77FEH ; N88-BASIC ROMの77FEH番地へ(初期化処理)
PC-88VAシリーズにはN-BASIC ROMが内蔵されていません。 ただ、全く動かす方法がないかといえば、そうではありません。 VA-NBASIC SYSTEMを使い、他の機種のN-BASICをdiskに転送、これをPC-88VAで実行することで動作させることができるようです。
ただし、PC-88VAシリーズのテキスト画面はPC-8001/8801シリーズと一部仕様が異なるため、表示が異なるソフトウェアも存在します。
参考:
今だから使うPC-88へ戻る