つきいち日記へ戻る  

復刊MSXマガジン1,2

2003年12月5日

 日本で8bitパソコンの代表といえばNEC PC-8001ということになろうが、そのころにはシャープや富士通の独自パソコンにも結構ファンがいた。今のようにWindowsソフトがどのDOS/V機でも動く、ということはなく、一眼レフカメラの本体とレンズと同じで、ソフトの互換性は微妙に無かったから、各機種毎にコミュニティーがあり、応用を競っていた。
 MSXは8bitパソコンの規格で、DOS/Vマシンと同様にメーカー間の互換性を持たせようという計画であったと思う。同時代にIBM PCは売られており、実用ソフトの開発は主に16bit機に移行しつつあった。もうはっきりとは覚えていないが、ソニーとパナソニックが競ってMSXの高級機を開発していたと思う。
 最近、ASCIIからMSX Magazine 永久保存版第二号が発売され、やってみたいゲームがあったので購入してみた。同じ売り場に第一号(第三刷)も売られていたので同時購入。前に秀和システムの同様の企画の本も購入している。

● 8bitパソコン

 任天堂のファミリーコンピュータも、初期の商用機のインベーダゲームもCPUは8bitだから、8bit機といえども潜在的な能力はかなり高い。実際、ごく初期のシャープの8bitパソコンで統計の一種、主成分分析を計算したことがあるから、計算機という点では一般のプログラム電卓をはるかに凌駕していた。実用的な16bit機は一セット数十万円はしたのに対し、8bit機なら数万円で一応使える状態だったから、計算機入門や趣味利用が主目的な場合は8bit機が最適であった。特にMSXはソフトの互換性があったから、欲しい周辺機器に応じて機種を決めれば良く、他のパソコンから見るとうらやましい状態であったと思う。
 私はMSXを個人で買ったことは無いのだが、仕事用のビデオ編集用に買ったことはある。たしかPanasonicの据え置き型で、大きなビデオ編集用のハードを外付けしていた。勉強のために個人で買った本は今でも書棚に4冊ほど残っている。残念なことに、MSX自体の詳しい資料は昔の職場に置いてきてしまったので、手元には無い。初期のビデオチップですらかなり複雑な動作をするので、詳しい資料がなければ本格活用は無理であろう。

● MSXという機種

 私が個人で買った8bit機、NEC PC-6001もMSXと同様の層を狙った機種だったと思う。時代が経るにつれ、MSXもPC-6001シリーズもどんどん仕様が拡大し、複雑になっていった。
 資料によると、MSXといっても、MSX(1983), MSX2(1985), MSX2+(1988), MSX turboR(1990)の4種類がある。オリジナルのMSXは当時としても非力であったが、手軽なパソコンとしてヒットした。MSX2は拡張版で、多数の機種が発売されたと思う。MSX2+は強力だが選択肢が少なくなり、turboRは1社から2機種が発売されたのみという。上述のビデオ編集用のはMSX2と思う。
 MSX2の時代でもディスプレイはテレビが主流であったと思う。パソコン専用ディスプレイは高価だった。漢字はかろうじて表示できたが、解像度よりも256色同時表示の方がゲームには重宝されたであろう。
 外部記憶装置は初期には音声テープだったが、MSX2の時代には3.5インチフロッピーとなっていた。組み込みのBASICが主体の機器だがMSX-DOSと呼ばれるPC/MS-DOS互換の簡単なOSが利用できた。これがMSXの寿命が長かった要因の一つと思える。
 turboRともなると日本語ワープロとしての応用も可能と思うが、MSX2ではかなり無理があった。ハードディスクは高価な時代で手が出せず、パソコン通信は低速であった。ビジネス用途には全く向いておらず、結局ゲーム機のようなもの、で終わってしまった印象である。

● エミュレータ

 今回のMSXのリバイバルはWindowsなどの他機種上で動くエミュレータである。つまり、MSXの機能をシミュレーションしてしまうソフトである。永久保存版のは公式エミュレータということで、MSX-DOSもMSX BASICも使える。動作速度など、細かい点までオリジナルに忠実だそうである。MSX2+(永久保存版)とMSX turboR(永久保存版2)のエミュレータがある。ものすごくありがたいことに、両者ともFM音源内蔵なのでなつかしの「あの音」が楽しめる。
 同梱のソフトはゲーム主体だが、MSX2+の方にはアセンブラの開発システムが入っている。turboRの方はBASICコンパイラが組み込みで、手軽なプログラムの加速はこちらでOKだ。最強のパソコンBASICシステムと言って良いだろう。
 エミュレータによる復刻には趣味以上の動機があるようだ。たとえば、まともにゲームを作るならタイミング調整は大切で、MSXというソフトだけでないハードまでの規格の合致が必要、ということらしい。すばらしい発想だと思う。

● 動作させてみました

 公式MSX2+エミュレータで図形を描かせてみた(本文末のリスト)。懐かしい遅さである(速度は高速側にも調節できる)。turboRエミュレータで動かすとずっと速くなる。両者とも多人数のチェックが入っているエミュレータだけに、非常にしっかりした印象である。
 やってみたゲームはMSX2のもので、私の印象では快適動作している。画面こそシンプルだが、よくできている。最後まで行くのも簡単ではない。元々のゲームの作りがよほど良かったようだ。MSXに熱心なファンがいるのも道理である。このゲームはRPGなのでタイミングの制約は緩い。キーボードの応答はよさそうであり、アクションゲーム好きの人に印象を聞いてみたいところだ。
 C言語コンパイラもフリーのがあって、本の通りインストールしたら一応動いた。MSX用のライブラリを作ってくださった方もいる。世代が合っていたら私もこれでプログラム作りを楽しんでいたと思う。

● if MSX=∞ then goto ...

 もしMSXがそのまま突っ走っていたら、世の中どこまで行ったのか、と想像することは楽しい。熱心なファンには申し訳なく、少々無責任とは思うが、私なりのシナリオを描いてみようと思う。
 まず、ハードディスク(今のフラッシュメモリ程度の容量で十分)とネットワーク(MSX同士の通信)は必要である。MSX-DOS v2.xxならハードディスクが使用できるらしい。ネットワークはシリアル入出力があれば何とかなり、そのための規格も実際のカートリッジもあったらしい。しかし、現在のエミュレータでは両者は使用できないようである。ここまでは将来のエミュレータで頑張って欲しいと思う。
 それ以上はソフトの出番となる。ハードディスクによりデータベース系のソフトが稼働できるようになるから、データ収集と検索にMSXが使えるようになる。フライトシミュレータをデータの大海の上を飛行するエイジェントソフトに例えた人がいたが、ゲームのインターフェースでデータベース上やネット上を飛行するイメージとなる。
 今の「実用アプリ」はあまりにも従来からの紙の文書形式に縛られている。精緻なワープロも今や伝票書きに使われる表計算ソフトも、使われ方がコピーに似ているレーザプリンタもそうだ。紙の書類生成器に化してしまった実用パソコンより、いささかゲームに傾いているMSXの方が地球にやさしいのではないだろうか。
 情報交換だけなら、携帯電話のメールやページ検索で済むことも多い。問題は、それらの情報を順序立てて整理し、要約して見せることであり、それこそ計算機にしかできない作業である。既存の文書形式にこだわらないデータベース利用がもし考えられるとしたら、それはMSXのような最後のパソコンらしいパソコンが開拓する広大な未知の領域なのだと思う。

● for next

 今のUNIXやWindowsと同じではない何かがMSXにはある。私に言わせれば、それは「勢い」だ(永久保存版2、p105参照)。ノートにプログラムのスケッチを書き、いきなり実機でコーディング、それでも何とかなる…、理想的な開発環境ではないだろうか。
 その筋のハッカーなら、そういう用途にはLISP言語、なんてことになるのだろうが、それが小学生にもMSXならできた、というのは決して小さいことではない。

 何、実数演算が高速でないし、3Dもまともにはできないだろうって? デジカメの画像はどうする、ビデオ編集は、ですって? 後者ははっきり言って家電の世界である。パソコンの時代は長続きしないと思う。コントロールだけならMSXで十分だ。
 地球シミュレータや、プロの3Dデザイナが描く細密画を真似るのは無理だ。しかし、3Dゲームの「三次元」は真の三次元ではない。乱暴に言えば、射影変換した三角形の輝度を適当に変えてスプライトと同様に二次元の画面に貼り付けているだけである。だとすると、CPUかVDPに今少し頑張ってもらうだけで、ある程度は何とかなるのではないだろうか。

● stop end

10 REM tr1.bas:yokada:031211
100 SCREEN 5:COLOR 15,1,1:CLS
110 FOR K=2 TO 15
120  FOR J=1 TO 20
130   X=INT(RND(1)*256)
140   Y=INT(RND(1)*212)
150   X1=INT(RND(1)*256)
160   LINE(X,Y)-(X1,Y),K
170   X=INT(RND(1)*256)
180   Y=INT(RND(1)*212)
190   Y1=INT(RND(1)*212)
200   LINE(X,Y)-(X,Y1),K
210  NEXT J
220  X=INT(RND(1)*256)
230  Y=INT(RND(1)*212)
240  PAINT(X,Y),1,K
250 NEXT K
260 GOTO 110