ROM-BASIC

ROM-BASIC（ロムベーシック）は、BASICを提供方法で分類した分類名であり、ROMに書き込まれたスタンドアロンBASICである。ROMモードBASICとも。1980年代の8ビットパーソナルコンピュータのほとんどと、初期の16ビットパーソナルコンピュータに搭載されていたものである。

ROM-BASICという用語は、基本的には、補助記憶装置のコンパクトカセットからBASIC（の処理系）をシステム起動時にロードして使用するもの（Casette BASIC）やフロッピーディスクからロードするもの（Disk BASIC）と対比していう。そのほか、フロッピーディスクを利用できるように機能拡張したという意味でのDISK-BASICと対比していう場合とがある。（つまり、当時は「Disk BASIC」という用語は曖昧で、"ディスクから起動するBASIC"という意味で使うメーカーと、「フロッピーディスクを操作できるBASIC」という意味で使うメーカーがあった）

 概要 
ROM-BASICは、プログラムを編集する、プログラムをコンパクトカセットにセーブ・ロードする、プログラムを実行・停止するという、OSのごく基本的な機能も備えており、CP/MやMS-DOS等のOSが普及する以前にはごく簡便なOSとしての役割も担った。

パーソナルコンピュータにサウンド機能やグラフィック機能を備えたものでは、それをサポートする命令も備えていた。

なお、シャープのMZシリーズは、クリーン設計が特長で、意図的にROM-BASICの採用を避けた。#ROM-BASICを避ける設計

 歴史 
ROM-BASIC以前
黎明期のマイクロコンピュータであり1974年12月発売のAltair 8800では、Altair BASICが紙テープの形で提供され、起動時に端末のASR-33でロードを命令した。つまりこれはROM-BASICではなかった。1976年4月に発売したApple Iは当初BASICが無く、半年後の9月にスティーブ・ウォズニアックが開発した:en:Integer BASICがコンパクトカセットテープで提供され、テープレコーダなどからロードして使えるようになった。これもROM-BASICではなかった。

ROM-BASICの歴史
1976年にフランスで発売となったMicral Micromel 80-22がROM-BASICを搭載した。（これがおそらく世界で最初のROM-BASICだとされている）

1977年発売のApple IIではスティーブ・ウォズニアックが開発した:en:Integer BASICがROM-BASICで標準搭載され、引き続きMicrosoftがApple II向けに開発した10KByte BASICも同様だった。1977年8月発売のTRS-80も初期バージョンからROM-BASICを搭載。1977年末から翌年初頭にかけて発売されたCommodore PET（PET 2001）もROM-BASICを搭載していた。ユーザがBASICで作成したプログラムは、データレコーダでコンパクトカセットでセーブやロードを行えた。1979年発売のAtari 400, Atari 800もAtari BASICをROM-BASICの形で搭載し、TI-99/4Aも同様であった。こうしてROM-BASICが定着し、Commodore VIC-20やCommodore 64（C64）も同様でMicrosoft BASICをROM BASICで搭載（なおC64はベストセラーとなり世界で推定1700万台売れた）。

日本では1976年にワンボード形式で「トレーニングキット」TK-80が発売となったが、これのプログラミングは機械語でするもの（紙の上でニーモニックでプログラミングしてハンドアセンブルして16進数で入力するもの）で、ROM-BASICは非搭載であった。だが1977年11月にオプションとしてROM-BASICのキット（TK-80BS BASIC Station）が発売となった。日立が1978年9月に発売したベーシックマスター（MB6880）は最初からROM-BASICを標準搭載していた。

この段階で、ROM-BASICを意図的に避けるマシンが登場した。MZ-80Kに始まるシャープのMZ-80シリーズは「クリーン設計」を謳い、意図的にROM-BASICを避けたことで、サードパーティのBASICも利用したり、あえてBASICを一切ロードしない使用法も選べるようになった。

だが、MZシリーズの方式に追随する流れは起きず、1979年9月発売のPC-8001もROM-BASICを標準搭載であった。（なお、カセットテープをデータレコーダとして使用する人が多かったが、PC-8001本体よりも高価なフロッピーディスクドライブを購入し接続したユーザは、その入出力機能を拡張したDISK-BASICを使用した。）

1981年9月発売のPC-8801シリーズやPC-6001もROM-BASICを標準搭載した。

1982年発売のPC-9800シリーズでは後年までROM-BASICが搭載され続け、起動可能だったが、標準でカセットインターフェースを搭載した機種は皆無で、比較的初期の機種に限り、別売りの拡張ボードとしてサポートされた程度だった。さらにPC-9801RA/RX以降（近い時期にモデルチェンジされたUV11やVM11も含む）からはCMT-BIOSも省略されたため、BASIC側に用意されているカセット関連の命令も動作しなくなった。このため外部とのデータ交換は後述のシリアルポートなどに限られた。PC-9801NV以降のレジューム機能を備えた98NOTEであればバッテリーバックアップとして運用できないこともないが、そのような運用では他のOSが一切利用できなくなってしまう。こうした事情から単独での使用は実質不可能であった。ただし、ROM内のサブルーチンを利用しているプログラムの互換性を維持するため、ROM自体は必要なものであった。Microsoft Windowsの使用を前提としたPC-9821シリーズが登場する頃になるとデフォルトのBIOS設定（システムセットアップメニュー）ではROM-BASICが起動できないようになった。それでも設定を変更すればまだROM-BASICを起動できるようになっていたが、1996年後半頃の機種からはそれもできなくなった。EPSON PCシリーズでは、初期にはROMを搭載していない機種もあったが、搭載している機種でも起動はできないようになっていた。なおPC-9800シリーズのROM-BASICにはRS-232Cポート接続のコンソールとして動作するターミナルモードが存在する関係で、通常のBASICモードで起動した場合についても標準でRS-232Cポートを制御する機能は搭載されている。このためFDDを使用できないROMモードBASICであってもRS-232Cポートに対しては標準でSAVE・LOADコマンドを使用することができる。すなわち通信条件さえ合わせればシリアルクロスケーブルで接続された他のPC上の通信ソフトを相手にセーブやロードが可能である。さらに、シリアルポート接続のモデム製品の中にはミニジャック端子を備え、モニタ音をデータレコーダに入出力できる製品も存在した。これを利用すれば、必ずしもCMTインターフェースボードやCMT-BIOSが存在せずともカセットテープに入出力できる手段となりえた。

1981年8月発売で、後に世界を席巻し世界標準となっていったIBM PCの場合、初代5150は標準でFDDを搭載せず、ROM-BASICとしてIBM BASICが搭載された。しかしOSとしては当初からPC DOSが提供されており、基本的にはCMTからDOSを読み込む形で運用された。DOS上からはBASIC.COMコマンドでROM-BASICベースのDISK-BASICを起動する形だが、さらに機能拡張版BASICを起動するためのBASICA.COMも用意された。いずれもIBM純正品ではROM-BASICが必要である。起動装置が存在しない場合にROM-DOSや専用メニューを起動するようになった機種では直接ROM-BASICを利用する機会がなくなったが、BASICのROMはその後もある程度の時期まで搭載されつづけたので、その間は従来通りDISK-BASICが起動できるようになっていた。互換機の互換BIOSの場合は一般的にROM-BASICを搭載していないが、BASICA.COMを元にしたが提供された。製品によっては互換性のためにBASIC.COMやBASICA.COMのプログラム名のBASICが提供されることもあった。やがてこれらはQBasicに置き換わった。

 長所・短所 

メリット
起動時にOSやBASICの処理系をロードする時間を要さず、すぐに使用を開始できる。
ROM内部に置かれたサブルーチンをアプリケーション、システムなどからコールすることによって、あらかじめ持っている機能であればスクラッチから書かずとも、それを流用することができる。但し、その場合ROMバージョンが変わっても影響を受けないようにテーブルジャンプ方式とするなどエントリアドレスが固定されている必要がある。

デメリット
メリットで挙げたサブルーチンのエントリやデータの受け渡し方法がメーカーによって公開されていることはまれで、サードパーティーのソフトウェア開発業者などが解析した結果をドキュメント化して出版したものを入手して参照するか、自力でROM内部をリバースエンジニアリングせざるを得なかった。当然バグフィックスが行われるなどで、ROMのリビジョンが変わってしまうと使えなくなる可能性があった。
互換性維持のために、実用にならない状況にあっても、後継機もまた同じプログラムを本体に持ち続けなければならない。
ROM-BASICでサポートされていた外部記憶装置はオーディオ用コンパクトカセットを流用したデータレコーダであり、読み書きの速度は300～1600bpsであり、主記憶を越える量のデータの取り扱いに対して低速であった。また、シーケンシャルデバイスであるため、外部記憶装置からの特定のデータの呼び出しなどは実用的ではなかった。

なお、ROM-BASICを搭載しているからという理由ではなく、メモリへの配置の都合で、0番地から配置されたうえで、切り替える方法を持たない機種では、同じ領域を使用するCP/Mなど、先頭部分のアドレスを使用するプログラムの使用には制限が発生する。バンク切り替えなどにより、これらのページを変更できる実装の場合はその限りではない。

 ROM-BASICを避ける設計 
多くの機種ではROMはメモリ空間に直接マッピングされたが、クリーン設計思想で作られていたシャープのX1に用意されていたオプションボードであるCZ-8RB01は、ROM-BASICでありながら直接マッピングされるわけではなく、拡張ボード上のROMからIPLが読み込みを行い、RAMにBASICを展開する形になっている。そのため、起動後はRAM上のBASICやモニタ部分の書き換えも可能になっており、標準添付のCZ-8CB01と同じように使用することが可能である。同社MZ (コンピュータ)でも同様の仕組みが存在し、サードパーティーのROMボードが存在する。これらの機種では補助記憶装置からのシステムの読み込みを必要とし、こういったボードが装備されていないシステムでは、コールドスタートに際して本体にROM-BASICを内蔵した機種と比較し、時間が掛かった。

 脚注 

関連項目
DISK-BASIC
クリーン設計

Category:BASIC