「計算機械演習2」提出レポートを改稿したもの

「MSX規格」について


HandleName RJ



1.概念

 MSXは、コンピュータがテレビやビデオのように家電製品となるべき時代がささやかれ始めた1980年代初期に持ち上がった統合規格である。家電製品に使われるものは、ビデオやテープの例を挙げるまでもなく、基本的にまちまちの規格であっては困るものである。そのようなことをふまえ、コンピュータにもソフトウェアの統一した規格、「互換性」が必要とされるだろうという考えが産まれてきた。これらの思想は各家電メーカーの賛同が得られ、あらゆる家電製品とコンピュータとの連結を可能にするための仕様が考えられた。
 コンピュータは常に急速に進歩を続けるものである。そしてその方向性は多岐にわたるため、あまりにも多くの決定事項を定めることは、却って足枷になりかねない。そのためMSXでは、基本ソフトウェアOSと拡張のためのスロットの規格を中心として、押し進められた。そのため8ビットマシンが主流である当時においても、BASICの基本演算は倍精度で行われ、外部記憶装置のフォーマットにはMS−DOSと同一のものが採用されるなど、本格的コンピュータとしての設計を兼ね備えていた。

 こうしてMSXは世に出たが、MSXのその普及のほとんどは、パソコン入門機や、当時現れつつあったコンピュータ・ゲーム機と同一のものとして捉えられたためだった。だが、同時にその強力な統一規格は各方面で必要とされ、ファクトリー・オートメーションや通信機器、オーディオ・ビジュアルコントローラー、情操教育用玩具などにとどまらず、障害者用のワープロなどにも使われることとなった。ここで誤解してはならないのは、MSXという仕様はパソコンの仕様ではなく、コンピュータを使うための仕様であるということだ。パーソナルコンピュータはその一方面の結果にすぎない。
 もちろんそうした功績は、MSXの統一された規格だけでなく、各部品がかなり安価なもので構成されていたことや、熱への耐久力なども大きな要因となっていることは間違いない。しかし、これ程多岐へ渡る分野での活躍は、やはり基本設計がしっかりしているからなのである。

2.メモリの取扱い

 MSXはそのCPUに、当時もっとも安価で入手できたZ-80を採用している。Z-80は言うまでもなく、64Kバイトのメモリ空間しか扱えない。この不自由さを補うために、いくつかの方法があるが、そのひとつが「スロット」の概念である。このスロットは単に拡張スロットのことを指しているばかりでなく、メモリ空間の選択をも含んだ画期的な特徴を持っている。
 MSXは64Kバイトのメモリ空間を16Kごとに4枚のページとして区切り、それぞれの位置をページ0〜3と言う名称で扱っている。ここで重要なことは、各ページには必ずRAMがなければならないということは全くないのだ。ページ0にはROMが置かれていても、ページ1にはフロッピーディスク・コントローラ(そこに値を書き込むことによって外部記憶装置とアクセスする。ポート入出力のように扱えるメモリ空間)が設置されているかもしれないし、SRAMがあってもよいのだ。もちろんいままでその場所にあったものとは別のRAMを置けば、64Kバイトの枠を越えてメモりを扱うことができる。
 わかりやすく言えば、4枚(4か所)の各ページの選択は、スロットマシンの絵柄の組み合わせのように、並列して並んでいるものと切り替えることができるのだ。この並列に並んでいる4枚のページのセットを一つの「スロット」と呼び、追加ハードウェアのドライバや、予備のRAMは、基本スロットと並列に並んで、呼び出されるのを待っているのだ。これにより拡張スロットの数から計算すると16スロット×4ページ×16Kバイト=1Mバイトのメモリ空間をZ-80でアクセスすることができる。
 そして、「ハードウェアを追加するための拡張スロット」と「アクセス空間としてのスロット」を同一化したことで、新たな外部装置を追加すると同時に、そのドライバがすでに提供されているという、実に画期的な方法が可能になった。これによりユーザーは煩雑な手間を省いて、機能を拡張することが可能になった。
 しかもこれらはBASICでもDOSからでも使用できたため、ユーザはMSXにDOSが登場した際に、頭をひねることになる。なぜBASICからFD、モデム、MIDIと命令ひとつでなんでも制御できるのに、DOSが必要なのだろうと。

 64Kバイトの制限を破るもう一つの方法がメモリマッパーと呼ばれる方法である。これはメモリの論理アドレスを物理アドレスに変換し、1つのスロットに接続できるメモリ空間を拡張する方法である。セグメントレジスタのないZ-80で擬似的にセグメントの割り付けを実行することが可能になる。つまりRAMの各ページを一瞬にして切り替える機能で、「スロット」が平行に切り替えるのとは違い、全く任意に変えることができる。もちろんメモリマッパーはRAMに限ってのことだが。先のスロットマシンの例で言えば、こちらは絵柄を自由に交換できると言うことになる。そのマッパーセグメントという絵柄は 255枚まで持つことができるので、一つのスロットで最大4Mバイトの容量が実現できる。 言い方を変えれば、1ページ16Kバイトのセグメントが 255枚あるので(もちろん同時にアクセスできるのは4ページまで)、16K×255=4092=4M という計算になる。

 もちろん、こうした方法でZ-80パソコンとしては画期的な容量が扱えるのだが、実際には価格等の問題で、限界まで容量を装備したものは少なかった。なにしろMSXにはZ-80が使用するメインメモリとは別に、ビデオプロセッサ専用のRAMことVRAMが 128Kバイトをほぼ標準の機種が装備していたので、その空きエリアを一時的な保管場所として利用することで、かなり自由にメモりが扱えたからだ。それにMSXには「互換性」という観点から、動作条件を満たす機種が多いほど、良いソフトウェアと見なされたからである。さらに当時は、「Mega−ROM」と呼ばれる上記メモリマッパーのような方式で、比較的広いプログラムを納めることのできる技術が開発された頃であったので、アプリケーションソフトウェアにとって、64Kの壁はそれほど困難な環境でもなかった。

3.互換性のためのBIOS

 MSXは統一規格であるが、これは何もどこのメーカも判で押したような機械を造れということではない、例えばA社とB社のタブレットの仕組みが全く違っていてもそれはかまわない。そしてそれらの違いを吸収するためにBIOSがある。
 MSXにおけるBIOSは、ハードウェアとソフトウェアを分離し、ハードウェアの違いを吸収するためにある。MSXのプログラムは、マシン語レベルでも、例えば文字を表示する場合でもBIOSにアクセスすることが要求される。BIOSには入出力のための命令がまとめられており、ここをコールした結果はA社とB社でも同じ結果が得られるようにしなければならない。
 こうしてMSXは各機種の互換性を確保しているのだが、BIOSにはそれだけでなくアプリケーションプログラムの開発を容易にするという効果もある。これはPC- 8001などがマシン語プログラムの際、BASIC-ROM内のルーチンをアクセスするのとは基本的に違うものである。MSXでは、もともとマシン語レベルでのBIOSコールが考慮されているので、すべてのスタックを待避したり、ルーチンによってアクセス方法が違うと言ったようなことはない。こうしてプログラマはI/Oポートのアクセスについて頭を悩ますことなくプログラムに集中できる。
 ただBIOSの弱点は実効速度が遅くなると言うことだろう、直接I/Oポートをアクセスした方が互換性の面では危険ではあるが、実効速度ははるかに速い。そのため実際には画像処理などの高速性が要求され、かつハードウェアの変更がほとんど考えられないところでは、I/Oポートが使われていたようである。なにしろ当時は、アプリケーションの開発も数人で行われ、直接マシン語を使って1クロックでも早いプログラムを組もうとする職人芸的な風潮があった時代である。だが、もちろんBIOSはそのほかの点ではきちんと用いられ、互換性に貢献したことは間違いない。

4.ビデオプロセッサ(VDP)

 MSXにおける画像入出力の取り扱いは、当時の他のパソコンとは一線を画している。コンピューターのすべての処理をCPUが行うのが一般的な流れであったが、MSXではVDPとCPUが分離されていて、CPUはVDPに作画に関する命令(コマンド)を与えるだけでよい。いったん命令すればあとはCPUはその負荷から解き放たれて他の処理に集中できるようになる。これは1995年現在のいわゆるマルチメディアを掲げる次世代機と同じ仕組みである。このため画面表示に関しては、8ビット機でありながら、16ビット機にも劣らないパフォーマンスを得ることができた(1995年現在の次世代機が、32ビットマシンでも64ビット級の処理を謳い文句にしているのと同じ理由である)。惜しむらくは、VDP作業の終了を知るにはVDPのフラグを調べなければならないことであろうか、前の描画作業が終わらない内に次のコマンドを指定すると、結果が保証されないので、フラグを調べてコマンド実行中かをわざわざ調べなければならないのだ。「終了フラグが立つまで待機」という処理は、せっかくの高速なコマンド方式の足を引っ張りかねなかった。「ここは描画終了時に割り込みがかかるようにして欲しかった。」と、あるソフトハウスももらしている。もちろん、プログラムの構成を工夫して、前の作業が完璧に終了するまで他の処理を行うようにしておけばよいのだが。

5.MSX−DOS

 MSX−DOSとは、MS−DOSの元となっている8ビット用OSであるCP/M−80の上位互換であるディスクOSである。CP/Mの資産を有効活用できるという点やMS−DOSと共通のディスク・フォーマットを持つという点でも非常にすばらしいのだが、なにより優れているのは、フォーマット形式が、例えBASICでも、ビジュアルシェルでも、C言語やアセンブラにおいても、全く同一のフォーマットであるということだろう。いまでこそ当たり前だが、当時はBASICとDOSのフォーマットが違うことなどはさして珍しいことではなかった。このようなことが実現できたのは、やはりスロットの強みである。MSXにおけるディスク入出力は、必ずスロット上に置かれたディスクROMを介して行われる。そのため、いかなる環境でもディスクアクセスには共通のルーチンが使われることになるのである。この共通ルーチンにはフォーマットルーチンも含まれているので、例えDOS上で動いていないアプリケーションソフトでもディスクをフォーマットさせることができた。
 これは他機種では考えられないことであったのだろう。当時、「FDのフォーマットをしますか」というメニューが必要と思われるアプリケーションでも、「普通に立ち上げてフロッピーディスクをフォーマットしてください」という表示を出して、フォーマットをユーザまかせにしているものが結構あった。

6.MSXの意味

 1995年現在、世界的な標準パソコンとしてIBM-PC/AT互換機があるが、これは共通仕様としての意図があったわけではなく、開発期間を短縮するためのオープンアーキテクチャ戦略の結果、自然発生的に現れたものである。現にIBMはこの後続機(クローズドアーキテクチャ)を造って失敗している。そしてIBM自身が自社の互換機を造るという皮肉な結果になっている。今はウィンドウズという名のOSのもとで、ハードウェアの枠を越えての統合規格が世の主流になりつつある。このようなことを考えれば、MSXの考え方は決して間違ってはいなかっただろう。ただソフトウェアとハードウェア(Z-80)の完全なる分離をしていなかったことが短所でもり長所でもあった。MSXでは教育施設LANや動画像の再生などの様々な方向性が模索されたが、それが最後まで足枷となり、MSX自身の可能性を封じ込めてしまったのは残念でならない。(そしてこの動画像の再生という研究は、現在MPEGという名で動画像フォーマットの標準的規格となっている)
 これからはCPUに依存しないソフトウェアが主導権を握る時代になるだろう。このような時代だからこそ、オープンアーキテクチャで、ユーザーをエンドユーザ扱いしなかったコンピュータの統一規格があったことを忘れてはならない。

参考文献

 MSX-Datapack1,2(ASCII)
 MSX-Datapack turboR版(ASCII)
 MSX2テクニカルハンドブック(ASCII)
 MSXテクニカルガイドブック(アスキャット)
 MSXFAN1995年8月号(徳間書店)


MSX、MSX−DOS、Mega-ROMは株式会社ASCIIの商標です。
MS−DOSは米国Microsoft社の商標です。
CP−M/80は米国デジタルリサーチ社の商標です。