MSXと似たようなハードのゲームパソコンの最大の違い

Z80+TMS9918+AY-3-8910」という組み合わせ自体はなんというか非常に一般的でハードウェアとしては面白いところはありませんが(何せ、TMS9918はVRAMをメインメモリにマップできないという変態ハードウェアなのでパフォーマンスを上げようがない。サイクルスチールさせたくないとか、DMA駆動中にCPUのバスを止めたくないとか、メモリコントローラとバッファみたいなものを作りたくないとか、いろいろ理由はあると思うけど)、MSXはそれ以外の部分で面白い技術が幾つか使われていました。
まず、「バンク切り替え」が一般的だった時代に、メモリを16KByte単位に区切ってスロットとして初歩的なMMUを積んでいたということ(Z80でリロケータブルなコードを書くのは難しいっていうかほとんど無理なので、論理メモリのアドレスマッピングまではしなかったけど)。
たしかに初期のMSXはRAM16KByteにROM32KByteと非常にしょぼいもので、16ビットのアドレスバスでアクセスしきれるような容量でしたが、メモリはそのうち足りなくなる(というか、CP/MMSX-DOSを動かすためにRAMを64KByte積もうとするとROMの領域がじゃまになる。あ、MSX-DOSCP/Mは何気にAPI互換だったりして)という見込みがあったらしく、最大で1MByteまでメモリを増やせるようになっていました。
その上でMSX-BIOSはインタースロットコールをすることを大前提にして、インタースロットコール以外ではハードに触ることすらもできないという極端なハードウェアでした。唯一の例外がI/Oポートにぶら下がっているVDP。VDPだけは特例で直接触ってもいいことになっていました。ただし、特定のI/Oポートを決め打ちにせず、BIOSにポートの番号を問い合わせてからじゃないと使っちゃいけないという制限付き(これのせいで、初期MSXのお行儀の悪いソフトはMSX2では動かなかった)。
ただ、これのおかげでどのスロットのバンクにあるプログラムであっても統一されたAPIMSX-BIOSにアクセスできるというメリットは有りました。
これらの機構がMSX1の時点ですでに備わっていたというのはマイクロソフト的にはかなり先見の明があったと思います。こんなに面倒くさい動きをさせている割には何故かN88-BASICよりも速度が出ていましたし。


MMUを積んだ8bitパソコンはもっとあとになるといろいろ出てきます。完全リロケータブルコードを割り当てることを前提にしたS-1とか、MSXによく似たインタースロットコールを備え持つX1turboとか、完全なMMUで巨大なメモリ空間を持つMZ-2500とか。
ただ、「巨大なメモリ空間16KByte!」とか言っていた時代にインタースロットコール必須にしたMSXはやっぱり、伊達に標準機目指していなかったというところでしょうか。「メガロム」なんかはまさにこのメモリスロットの応用例ですし。ただ、本当に1MByte(8Mbit)使ったソフトは結局出なかったなぁ。
ちなみに、ナムコのアーケード基板はメモリ空間が64KByteを超えそうになるとおもむろにCPUを1個ふやすという豪快な手で逃げていました。なので、グラフィックの多い基板はCPUも多いみたいです。いや、逃げてたんじゃないな、積極的にマルチCPUコンピューティングにしてたというか。
セガは同時期(System16A/B)にはすでに68000に移行していましたし、1MByteを超えそうになったらあっさりFDによる配信からも撤退(System24の後期)しちゃうし。
ま、MMUが当たり前のOSが一般的になった今となってはロストテクノロジーですな。


VDPのVRAMをCPUバス上にマップ出きないという制限はMSX2で使われていたヤマハのV9938でもバッチリ受け継がれちゃってて、VRAMはすごい巨大なのに高速転送できない(VRAM-VRAM間は若干早い、けど雀の涙)という不思議なハードウェアになっていました。FM-77AVやMZ-2500、X1turboZがMMUみたいな方法論で巨大なVRAMとDMA転送でやっつけていたのとは好対象。その上、この時期に珍しいことにVRAMのフレームバッファが垂直型だったのでプレーンによるマルチスクロールもできないし、かと言って色数を沢山使おうとすると書き換えが見えるしと、なんともしょぼいハードウェアになっていましたっけ。
あと、MSX-BIOSには「垂直同期待ち」の命令がなくて、その代わり「垂直同期割り込み」だけサポートされていたので書き換えに何フレームもかかるようなグラフィックの描画には激しく向いてなかったっけ。まぁ、当時1フレームで全画面を書き換えることができるハードウェアは逆に珍しかったので、ティアリング上等な書き換えでゴリゴリ動かしていましたっけ。
やー、なつかしいなぁ。
X1やMZ-2500でならまたゲーム作ってもいいけど(PCG:Programable Character Generator。ゲーム機で言うところのBG面)が強力なので、かなりいろんなことが出来る)、MSXではもう勘弁だなー。