MSXとは、1980年代に提唱されたパソコンの共通規格である。同規格に沿って作られたパソコン自体のことを指すことも多い。
概要
TVに接続できる低価格のパソコンとして、マイクロソフトとアスキーが提唱した規格。CPUにZ80A、VDPにTMS9918を採用していた。
主に、松下電器・SONY・三洋電機・東芝などの家電メーカーがこの規格に則ったパソコンを発売しており、メーカーによっては独特のブランド名も付与されていた。
当時はパソコンと言えば各社それぞれの独自仕様で設計されており、機種間の互換性が存在しないことも多かった。また、価格帯的にもPC-6001シリーズなど十万円以下で購入可能な機種もあったが、十万円以上が普通であった。
その点、MSXロゴが付与されたパソコンであればどのメーカーでもソフトウェアが動作し、価格的にも十万円を切るのが普通というのは画期的であった。ただし、実際には差別化のために独自の機能を搭載した機種も多い。
ROM搭載された開発言語(いわゆるROM BASIC)として、BASICインタプリタのMSX-BASICを搭載している。ほとんど普及しなかったが、MSX-DOS(MS-DOSと同様のファイルシステムを持つCP/M互換OS)というOSも存在した。
大型のキーボードのような、キーボード一体型の筐体が知名度が高いが、機種によっては本体とキーボードが分離された形式のものもあった。
MSXの最も特徴的な機能として、ROMカートリッジによる機能拡張・ソフトウェアの提供が挙げられる。ほぼ全機種がROMカートリッジスロットを1~2スロット装備しており、ここに拡張機能のカートリッジを挿し込むことで本体の機能拡張が行われる、というものである。最も多かった用途はゲームソフトの提供であったが、ソフトウェアに限らず周辺機器も数多く発売された。公式に発売されたものだけでも、増設メモリ、音源(このうち、FM音源は後にMSX-AUDIO・MSX-MUSICとして、MIDIインタフェースはMSX-MIDIとして規格化)、モデム、RS-232Cインタフェース、フロッピーディスクドライブ、SCSIインタフェース、プリンタ(ワープロソフトが同梱されていた)、挙句には感温・感光・感圧センサなどというものまであった。
特筆すべきは、これら周辺機器カートリッジはBIOSソフトウェアが組み込まれており、MSXの独特なメモリ管理機構である「スロット」機構と組み合わせることで、挿し込むだけで特別な設定処理を行うことなく動作するようになるという、現代で言うプラグ・アンド・プレイの概念を1980年代の時点でほぼ完璧な形で実現していたことであろう。
最低搭載メモリ容量の拡大や、VDPを後継型にすることなど、主にゲーム系機能の増強を図った、MSX2・MSX2+・MSXTurboRという後継規格も生まれている。MSXturboRではCPUも16ビット化が行われた(R800/Z80の切り替え式)。
後継VDP(V9938、V9958)は速度が非常に遅く、MSX2/MSX2+をファミコンの対抗ハードにすることは出来なかったが、256色同時発色の実現など多色化時代の道標となった功績は十分に評価されよう。
東西冷戦下の共産圏にとっては、ココム規制下で輸入できる数少ないパソコンの一つでもあったという(16ビット以上のパソコンは共産圏へは輸出できなかった)。旧ソ連が打ち上げた宇宙ステーション「ミール」には、制御用コンピュータとしてSONYのHB-G900(MSX2)が搭載されていたというエピソードは有名である。
1995年を最後にMSX規格のパソコンは製造を終了しているが、2006年には1つのFPGAに機能を詰め込んだ1chipMSXが5000台限定で発売され(すでに完売)、2008年以降には任天堂のWiiで動作するバーチャルコンソールにMSX用ソフトが追加される(最初に提供されたのは「アレスタ」と「EGGY」)など、当時のユーザーを中心に現在でも根強い人気がある。
MSXの画面モード
MSXの特徴の一つとして、その独特の画面モードが挙げられる。以下に対応モードの一覧を示す。
名前 | 内部名称 | 対応 | 表示属性 | 解像度 | 色数 (初出時) |
備考 | ||
---|---|---|---|---|---|---|---|---|
MSX | MSX2 | MSX2+ | ||||||
SCREEN0 | TEXT 1 | 対応 | パレット 拡張 |
パレット 拡張 |
テキスト | 1~40桁 24行 | 固定16色中2色 | |
TEXT 2 | 対応 | 対応 | テキスト | 41~80桁 24行 | 512色中2色 | |||
SCREEN1 | GRAPHIC 1 | 対応 | パレット 拡張 |
パレット 拡張 |
テキスト | 1~32桁 24行 | 固定16色 | デフォルトモード |
SCREEN2 | GRAPHIC 2 | 対応 | パレット 拡張 |
パレット 拡張 |
PCG | 32×24パターン (256×192相当) |
固定16色 | 擬似グラフィックスモード。実際にはPCGモードであり、横8ドット単位で色制限がある |
SCREEN3 | MULTI COLOR |
対応 | パレット 拡張 |
パレット 拡張 |
グラフィックス | 64×48 | 固定16色 | 256×192相当の座標系を持っているが、4ピクセル四方のマス目単位で描画される |
SCREEN4 | GRAPHIC 3 | 対応 | 対応 | PCG | 32×24パターン (256×192相当) |
512色中16色 | SCREEN2のスプライト機能を拡張したモード | |
SCREEN5 | GRAPHIC 4 | 対応 | 対応 | グラフィックス | 256×212 | 512色中16色 | ページ処理対応(最大4ページ) | |
SCREEN6 | GRAPHIC 5 | 対応 | 対応 | グラフィックス | 512×212 (スプライト面は 256×212) |
512色中4色 | ページ処理対応(最大4ページ) | |
SCREEN7 | GRAPHIC 6 | VRAM 128kB |
対応 | グラフィックス | 512×212 (スプライト面は 256×212) |
512色中16色 | ページ処理対応(2ページ) | |
SCREEN8 | GRAPHIC 7 | VRAM 128kB |
対応 | グラフィックス | 256×212 | 256色 | ページ処理対応(2ページ) | |
SCREEN9 | 未定義(後述) | |||||||
SCREEN10 | GRAPHIC 7 拡張モード |
対応 | グラフィックス | 輝度:256×212 色差:64×212 または RGB:256×212 |
12499色 RGBモード時は 512色中16色 |
RGB・YJK混在モード(後述) | ||
SCREEN11 | GRAPHIC 7 拡張モード |
対応 | グラフィックス | 輝度:256×212 色差:64×212 または RGB:256×212 |
12499色 RGBモード時は 512色中16色 |
RGB・YJK混在モード(後述) | ||
SCREEN12 | GRAPHIC 7 拡張モード |
対応 | グラフィックス | 輝度:256×212 色差:64×212 |
19268色 | 純粋YJKモード(後述) |
- テキスト以外の画面モードは、コマンド待機状態では使用できない。命令実行やプログラム実行が終了すると同時に、直前まで使用していたテキストモードに戻される。
- SCREEN 2/4は、一見ビットマップグラフィックスモードに見えるが実際にはPCGモードである。即ち形状を変化させることが可能な8×8のキャラクターパターンが画面中に敷き詰められている状態であり、この文字形状を変化させることで擬似的にビットマップ描画を実現している。このパターン単位で1ライン毎に2色の制限があり、これがMSX1独特のカラーリングが必要となる要因になっている。その代わりにビットマップグラフィックスモードに比べて描画が高速であるため、動作速度を稼ぐために敢えて使用するケースがあった。
- 正式なモードではないが、SCREEN2のVDP状態のままSCREEN1に移行するテクニックが存在する(SCREEN2と同じく、文字色を1文字単位で1ライン毎に設定できるようになる)。俗にSCREEN1.5、多色刷りモードなどと呼ばれる。
- この他にも、MSXにはVDPが機能として持っているもののBASICで対応していなかったり、付属のBASIC解説書に記述がないことが多い機能がいくつか存在する。マシン語を使用せずに使用できるものとしては以下のようなものがある。
- TEXT 2(SCREEN0 WIDTH80)は、一定時間ごとに文字の色が交互に変化するカラーブリンク機能がある。
- GRAPHIC 1(SCREEN1)は、8文字単位(文字コード0~7、8~15、16~23、…)で文字色と背景色を設定できる。
- TEXT 1/2(SCREEN0)とGRAPHIC 1は、1文字単位で文字形状を変更することができる。また基本フォントそのものを変更することもできる。
- GRAPHIC 5(SCREEN6)の背景周辺色とスプライト面には、偶数ピクセルと奇数ピクセル(スプライトの場合はピクセルの左半分と右半分)で別な色を表示するカラータイル機能がある(カラーコードとして16~31を指定すると発動する)。背景周辺色では単に縞模様になるだけだが、スプライト面ではCOLOR SPRITEと組み合わせることで威力を発揮する。
- GRAPHIC 7(SCREEN8)ではカラーコードとして0~255が使用できる。RGBのうちRとGに3ビット(8階調)、Bに2ビット(4階調)が割り当てられたビットパターンになっている(Bのみ2ビットであるのは、人間の目は青の色調の判別に弱いため。実際に現代の24~32ビットカラー対応PCで、 R・G・Bの純色グラデーションを作成してみるとよく解る)。
- TEXT 1/2、GRAPHIC 1~3、MULTI COLOR(SCREEN3)にもページの概念がある。
- MSX2でも縦スクロールはさせることが出来る(実際、起動時のロゴ表示はこの機能を使用している)。ただしBASICのサポートは無いため、VDP関数でVDPレジスタを直接書き換える必要がある。また、画面外に追いやられていて表示されない部分が表示されるため、対策をしておかないと画面にゴミが出てくることになる。MSX2+(MSX BASIC 3.0)では横スクロールも含めてコマンドが増設された。
- SCREEN9は、韓国版MSX2において独自拡張で用意されていたハングルまじり文高精細表示モードである。正式仕様としてはMSX2+で一応取り込まれたが、独自拡張であるためMSX-Datapackでは内容を全く定義していない。わざわざ取り込んだ理由は不明であるが、MSXシリーズはもともと多言語展開していた関係があり、その上で競合することを嫌ったものと思われる。画面表示としてはSCREEN 6相当、解像度を稼ぐためにインターレース表示しており、表示速度はお世辞にも速いとは言えない。
- SCREEN12はYJK(輝度+色差。パラメータの内容が異なるだけでコンポーネントビデオと同じ)方式を使用し、1ドット毎に5ビットの輝度データと、横4ドット単位で6ビット2種類の色差データを持つことで、SCREEN8と同じVRAM容量で19268色を実現している。人間の目が色差よりも輝度の方に敏感に反応することを利用したデータ圧縮の一種であるが、この特性のため色調が急激に変化するイラストレーションにはあまり向かない。自然画モードと呼ばれる所以である。
- SCREEN10、11は、輝度情報のうち1ビットを属性値に提供することで、1ドット単位でRGB(512色中16色)とYJKの切り替えが可能になっている。SCREEN10と11の違いはBASICでのカラーコードサポートの有無であり、SCREEN10では描画命令を実行すると、描画されたピクセルが自動的にRGBモードに切り替わる。SCREEN11ではこのサポートがなく、SCREEN8のようにカラーコードとしてビットパターンを意識した値を描画命令に指定できる。
- MSX-JE使用時は、内部的にはSCREEN5または7の状態になっている。ただし描画命令は使用できない(明示的にビットマップグラフィックス対応モードに切り替える必要がある)。