X68000(CZ-600CE)昔話(1)

シャープ株式会社より1987年に発売されたパーソナルコンピュータ

歴戦のX68000(CZ-600CE)

1986年に発表されると同時に心奪われた方々も多いと思います。

スプライト128枚、グラフィック画面65,535色同時発色、FM音源(YM-2151)、音声合成(ADPCM)、ビットマップ方式のテキスト画面、CPUには68000搭載という当時としては夢のような仕様。このパソコンなら何かすごいことができそうだと妄想が膨らんだものです。

しかし、実際に入手してみると独自OS(Human68k)、独自BASIC(X-BASIC)であるが故、情報不足に悩むことになりました。

このX68000が初めてのパソコンというわけではなく、入手前まではMSXユーザーでした。他には友人宅でPC-8801mk2SRやif800(!)などにも触れていたものの、それまでの経験は残念ながらあまり役に立たない状況になりました。

ビジュアルシェル(VS.X)の使い方がさっぱり分からない。グラディウスはどうやれば起動できるのか?
マウスの使い方もろくに理解できていない。ダブルクリックとは何者か?
戦車のアイコンから謎の黒い画面になって途方に暮れる。「A:¥>」カーソル点滅してどうして欲しいのか?
システムディスクとグラディウス

今でも入手当日のことは目の前の出来事のように思い出されます。

入手当日、パソコンショップのおじさんがX68000を設置しに自宅へ来てくれたのですが、そのおじさんを以てしても設置当日はビジュアルシェルとマウスの使い方が分からずに持ち帰り案件となりました。

起動画面(スクリーンショットはエミュレータで取得したもの)

ショップのおじさんが諦めて帰った後、試行錯誤しマウスのボタンを2連続で押すと反応することを自力で発見したときの感動はまだ人差し指が覚えているような気がします。

VS.Xの起動画面(スクリーンショットはエミュレータで取得したもの)

なお、ショップのおじさんは次の日にわざわざ自宅まで再訪してくれ、誇らしげにダブルクリックを教えてくれたことを今でも覚えています。とても優しいショップのおじさんでした。

設置当日に自力で解決したことはショップのおじさんには内緒です。

今、当時はCUIが当たり前の世界でした。マウスなどというものは噂に聞いたことがあるレベルの人間の手元に突然このようなラスボス的なマシンが現れてしまい、冷静に考えるとかなりの無理ゲーをプレイしていたような気もします。それでも1つ1つの発見が全て楽しくて仕方がなかったあの頃です。

そんなこんなで基本的な使い方には徐々に慣れていき、グラディウスにも遊び疲れたところで、いよいよX-BASICに挑戦していくわけです。

X-BASIC version 1.00の起動画面。(スクリーンショットはエミュレータ取得したもの)

しかし、当初はBASIC上でMMLを使ってFM音源で音楽を流すことさえも理解できずにいました。

M_ALLOCしてM_ASSIGNしてM_TRKしてM_PLAYする。

この挙動をサンプルプログラムとマニュアルだけで誰から説明されたわけでも無いのによく理解できたものだと、今思い返しても自分で自分自身を感心します。

当時の他のパソコンではPLAY分にだらただMMLを詰め込めば音が鳴っていたのですが、X-BASICは大違い。これまでのBASIC側がよしなに対応してくれることを良しとせず、全て己で制御せよという思想だったんでしょうか。

この辺りの思想はX-BASICのアーキテクト担当の方にお話を聞く機会があったら是非とも確認したい事項の一つ。

手探り状態はその後もしばらく続くことになります。当時、この致命的な情報量の少なさを補完するための手段は極限られていました。

付属品:付属のマニュアル、福袋のサンプルプログラムを頼りに試行錯誤を繰り返す日々。
雑誌類:Oh!MZやマイコンBASICマガジンを読み漁る日々。
口コミ:知人・友人と競うようにX68000を使いこなす技を鍛錬する日々。
左側タワー部のX68000ロゴ

あの頃は現在のインターネット環境はまだまだ夢のまた夢。とは言え当時の人類のコミュ力は当時なりに高く、書籍の充実や口コミによる伝搬の力により必要な情報は徐々に整っていくのでした。

X-BASICはとても優秀でしばらくの間はこれだけで伸び伸びとプログラミングを楽しむことができました。

X68000のプログラミングの真髄の一つにメモリーマップドI/Oを利用して好き勝手し放題というところにあると思います。ところがX-BASICには他のパソコンのBASICには標準的な機能であるPOKE文とPEEK文に相当するものが存在していませんでした。事前に用意された関数群でお行儀良くプログラミングしてねというメッセージだったのだろうとは思います。

しかし、X-BASICのアーキテクトはその枠を突破する方法をきちんと用意してくれていました。
外部関数を作成すれば、オリジナルの関数をX-BASICで使えるという仕組みが実装されていたのです。

外部関数はアセンブラで作成する必要があるのですが、これまた狙い澄ましたかのように福袋フォルダにはアセンブラ(AS.X)とリンカ(LK.X)が仕込まれているという念の入れよう。

今でいう沼という言葉がぴったりな、恐ろしい罠に足を突っ込んだ瞬間だ。

この時からOh!MZ、Oh!X掲載のソースを参考に見様見真似で色々な関数拡張が始まったのは言うまでもありません。こうしていつの間にかアセンブラに両足突っ込んでいたのも良い思い出です。

サラッと思い出話をまとめて記事にしようと考えていましたが、思った以上に溢れ出てくる記憶に驚きを隠せません。どこまで記憶が残っているのか怪しいところもありますが、本日はここまでにして続きはまた次回にしたいと思います。

(続く)