PS/55標準の日本語対応BASICインタープリター [PS/55]
パソコン黎明期の1980年代初頭、パソコンはBASICインタープリターを搭載しているのが当然みたいな風潮があった。理由は色々あったと予想する。今みたいに無料で手軽に手に入る開発ソフトがなかったとか、ソフトウェア産業が未熟で必要なアプリケーションは自作するしかなかったとか、パソコンのデモンストレーション的な意味合いがあったとか、プログラミングを学習したいというコンピューター入門者の需要を満たすためとか。
海外IBM PCの世界では、IBMはかなり後期の機種までROMにBASICを搭載し続け、PC DOSでその拡張版にあたるAdvanced BASIC(ROM BASICがないと正常に動作しない)を提供した。一方、互換機ではROMにBASICを搭載せず、代わりにMicrosoftのMS-DOSに添付されるスタンドアロンで動作可能なGW-BASICによってBASICインタープリターが提供された。ファイル入出力に必要なカセットテープインターフェイスは早々に消えたにもかかわらず、IBMはROM BASICをPS/2世代の途中まで約10年にわたって搭載し続けた。この理由はIBM PC開発当初のMicrosoftとの独占契約によるものと言われている(誰が言い始めたのか、ソースは不明)。
日本IBMのマルチステーション5550(以下単に5550)の場合は、別売の日本語DOSにセットで収録される形で、日本語DOS上で動くBASICインタープリターが提供された。製品名に含まれていることからも、当時の位置づけは何となく分かるだろう。コマンドを網羅した数百ページのマニュアルも付いてくる。5550(PS/55ブランドの旧マルチステーション5550モデルを含む)では日本語DOSの最終バージョンとなるK3.4までBASICのマニュアルが付属した。
PS/55のROM BASIC
PS/55(旧5550モデルを除く、以下MCA機とする)はPS/2に対して5550相当の日本語処理(日本語入力・表示・印刷)機能を付加したものであり、それぞれPS/2でベースとなったモデルが存在する。
PS/55 モデル5550-S(紛らわしいことに、これは旧5550モデルではなくMCA機)の場合はPS/2 Model 70あたりがベースとなっており、どちらもROM BASICを搭載している。
起動可能なフロッピーディスクやハードディスクがない状態で電源を入れると、メモリカウントが表示された後にフロッピーディスクを挿入するよう指示するテキストアニメーションが表示される。そこでDOSの起動ディスクを入れてF1キーを押すとディスクからDOSが起動するが、ディスクを入れずにF1キーを押すと以下のようなBASICインタープリターが起動する。
The IBM Personal Computer Basic
Version C1.10 Copyright IBM Corp 1981
62940 Bytes free
Ok
ちゃんと検証したわけではないが、画面表示がIBM PCやPS/2に搭載されているものとバージョン表記を含め完全一致するところを見るに、機能的にも同じだろう。VGAのテキストモードは日本語をサポートしていないので、このBASICでも日本語は使えない(グラフィックで表示する力業を除く)。ROM BASICのプログラムコードはBIOS ROMの一部に含まれており、物理メモリアドレスではPS/2と同様にF600:0000hに配置される。このモデルでは日本語DOSのほかにPC DOS 3.3(英語版)がサポートされており、PC DOSに含まれるAdvanced BASIC (BASICA)を動かすためにROM BASICが必要になる。
KDOS/JDOSのBASICインタープリター
PS/55世代になっても過去のアプリケーションとの互換性のため、JDOS最終バージョンのIBM DOS バージョンJ5.0までBASICインタープリターが付属した。一応、マニュアルも別売で提供されていた。PTF(修正プログラム)適用後のDOS J5.02Dに付属するBASICのバージョンはK3.34Dとなっている。KDOS 3.3以降のBASIC.EXE内部にはGW-BASIC 3.20
の表記があり、MicrosoftのGW-BASICのバリアントである事が分かる(それ以前のバージョンは不明)。
5550用BASICインタープリターのバージョンは、大まかに分けると、K1.0, K1.1, K2.0, K2.1, K3.2, K3.3がある。機能的な進化は1988年のバージョンK3.30で止まっている。このバージョンに至るまで16色グラフィックモードや共用ファイルへの対応など少しずつ拡張されてきたが、基本となる言語仕様は、GOTO命令にラベルが使えない、構造化プログラミングに対応していない、メモリの64KB制限など、実用的とは言えないものだった。
あくまでBASICインタープリターは初心者向けの学習用もしくは初歩的なプログラムの作成用。より複雑で処理速度が求められる業務用アプリケーションの作成は別売のBASICコンパイラー (Microsoft BASIC Compiler; BASCOM) が担当する領域であり、Microsoftにとっても開発環境の本流はそちらだったのだろう。これは後にQuickBASIC、BASIC Professional Development System、Visual Basicと、現在へ繋がっていく。
日本IBMからは、BASICコンパイラー、BASICコンパイラーK2.0、BASICコンパイラー/2が販売されていた。それぞれMicrosoft BASIC Compiler 5.31、5.60、6.0のOEMであり、このことはランタイム実行ファイル BRUN20K.EXE や BRUN30KC.EXE などの実行メッセージで確認できる(厳密にはISAMのサポートといった改変があり、完全にOEMとは言い切れない)。
DOS/VのBASICインタープリター
DOS/Vの系統もDOS J5.0/VまではAdvanced BASICに加えて日本語DOSと同系統のBASICインタープリターが付属した。最終バージョンはDOS J5.02/V以降付属のもので、バージョン表記はKV3.38となっている。
このバージョンは起動時にBIOS ROM上(F000:E008h)の文字列COPR. IBM 1981,
をチェックして互換機では動作しないようになっているが、実行ファイル中の1バイトのコードを書き換えるだけで互換機でも動作させることができる。
→ IBM DOS (PC DOS)のBASIC | の回想録
このチェックは同じDOS/VでもDOS J4.06/V付属のBASIC Version KV3.35には存在しない。もちろん、PS/55でしか動作しないJDOSには存在しない。サポートの都合か、他の意図があるのか分からないが、互換機で動作しないようにする措置が後から追加された事は明らかだろう。
SCREEN命令の引数が0(テキストモード)しか対応していないあたり、グラフィックの互換性は低いらしい。テキストモードのアプリケーションであっても、色や罫線が正しく表示されないといった不具合が生じる。
下はマルチステーション5550のKDOSに付属するサンプルプログラム(作表プログラム)をDOS/V (BASIC Version KV3.38)で実行した結果。
下は同じプログラムをJDOS (BASIC Version K3.34D)で実行した結果。
以下に、BASIC末期のバージョン番号を分かる範囲でまとめた。
BASIC Ver | DOS Ver | Timestamp |
---|---|---|
K3.30 | K3.31 (5550-S/T) | 1988/04/12 3:30:00 |
K3.31 | K3.44 (5540-M/P) | 1989/03/03 3:42:32 |
K3.34 | J4.04, J4.05 | 1990/05/28 4:01:32 |
K3.34B | J4.07 | 1991/06/21 4:01:00 |
K3.34C | J4.08 | 1992/05/22 4:01:00 |
K3.34D | J5.02D | 1993/02/01 5:02:00 |
KV3.35 | J4.06/V | 1991/02/28 4:01:00 |
KV3.37 | J5.00/V | 1991/10/25 5:00:00 |
KV3.38 | J5.02/V, J5.02D/V | 1992/02/21 5:02:00 |