前回、大方のスペックとソフトウェアの状況などは書いたので今回は技術的なアプローチを。
N-BASIC
当時のプログラミング環境は稚拙だったとはいえ、現在よりもプログラマーを目指すものにとってよかった事がひとつだけあります。それは市販のゲームなどを購入しないで使うには「プログラムしないとなにもできない事」です。そう、当時のコンピューターには現在のようにWindowsやMacOSのようなGUIを持つOSなど存在しませんでした。それどころかOSという概念すらなかったと言えます。結果、当時のコンピューターは「目的のためのソフトウェアを動かすハード」ではなく「目的のためのソフトウェアを『つくり』動かすハード」だったのです。
そんな環境でしたのでハードに付属する取扱説明書は電話帳ほどのボリュームでN-BASIC入門・詳細やメモリ構成とその内容説明がありました。当時コンピューターとプログラムはセットだったんです。もちろん湯水の如くお金を使える方やビジネスとして購入した方は市販ソフトウェアを購入していたんだとは思いますが、当時コンピューターといえば銀行のスーパーコンピューター、家庭にコンピューターなんかないのが当たり前の時代ですから、個人でソフトウェアを購入する方は多くなかったと思います。
さて、言語の話に戻しましょう。PC-8001にはN-BASICインタプリタが組み込まれていたので書記起動した時点で既にN-BASICをプログラミングできるコンソール画面が表示されました。そこで「行番号+スペース+命令セット+改行」をワンセットとしてプログラムを記憶させていき、全て記憶させたら「RUN+改行」で実行といったインターフェイスでした。簡単ですね、インタプリタは現在ではあまり見ない形式のプログラム環境ですのでプログラムを目指す人にとって目から鱗なものかもしれませんね。
実際のコードはこんな感じでした。
10 WIDTH 80,20 20 X=0 30 LOCATE 39,9 40 PRINT X 50 X=X+1 60 IF X>9 THEN X=0 70 GOTO 30
実際の命令は行番号の少ない順に処理されていきます。
WIDTH 80,20
これは最初に画面のテキストモードを80文字×20行に設定しています。
X=0
変数Xに0を代入。
LOCATE 39,9
次にくる出力文の画面表示位置を39文字目の9行目に指定。
PRINT X
Xを表示。
X=X+1
変数Xに変数Xに1追加したものを代入。
IF X>9 THEN X=0
もし変数Xが9より大きければ変数Xに0を代入。
GOTO 30
次の命令処理を行番号30からやる。以降行番号40〜行番号70の繰り返しとなります。
どのようなプログラムか理解できますか?これは画面中央に0〜9の数字を順番にひたすら表示するプログラムです。
これだけのプログラムなのですが、自分の思い通りにコンピューターが動いてくれると感動したものです。こうして思い返してみると、やはり初心者やテスト用にはインタプリタは優れていると思わざるを得ません。全ての機能を使いこなすだけの優れた拡張性が必要なのではなく、わかり易い表現機能と即座に実行できるインターフェイス、人間にどれだけプログラムされた命令がどのように作用しているかを認識させることがプログラミングの教育には重要なのかもしれませんね。
実はPC-8001ではN-BASICインタプリタ上で「MON+改行」と入力するとマシン語モードなるものを起動できました。マシン語モードとはその名の通りメモリーに直接PCが理解できる形でデータや命令を書き込んでいくモードです。でも、ROMには書き込めないとは書かれているもののそこまで当時のハードは信用できなかったので素人が書くと起動しなくなるんじゃないか等と心配して市販ゲームの読み込みにしか私は使いませんでした。
サウンド
前回も書きましたが、サウンド機能はビープ音しかなかったので、オン/オフを繰り返すことで音程をつけていました。N-BASICだと「BEEP 1」でオンになり「ピーー」と甲高い音が鳴り続けます。「BEEP 0」でオフにして音が鳴り止むので、これを繰り返すことで音を変えます。たとえばループの中で最初にオン、次の回はオフとすると「ブー」になり、オン・オン・オフ・オン・オフとしたら「ビョー」になるような感じです。N-BASICだと実行速度が遅くあまり音階の精度を調整できませんでしたが、前回も紹介しましたが、マシン語で組まれていたマリオブラザーズなどは相当な精度を出していました。当時のプログラマーさんには恐れ入ります。
マリオブラザーズ/任天堂(ゲーム画面は8分30秒頃)
ビジュアル
市販ゲームの主流は汚くてもピクセル表現でしたが、N-BASICでそのような事をするとプログラム内に数字データが多くなり、当時の発表の場であった雑誌掲載での不評に繋がったと思われます。自然と、短く打ち込みやすいプログラムで斬新なゲームを表現することがよいとされる風潮になりましたので、N-BASICプログラムの主流はテキスト表現が多くなりました。今の人はこういうと、「テキストベースのゲーム?つまらない」なんて思うかもしれません。でも、そうじゃなく、文字を使ってキャラクターを抽象化していた、ということです。現代のアスキーアートの初期です。もちろん文字数も画面幅も限られているので現代のような大きなアスキーアートではありません。それこそ『「A」これはロケットね』程度のものや大きくても4文字×4文字くらいの大きさのキャラクターです。
画面枠などはグラフィカルな文字を使い表現されていました。下図のような文字セットでした。
限られた機能の中で表現することは見た目は当然キレイと呼べたものではありませんが、そもそもゲームとは想像の世界のもので、そのキャラクターを抽象表現するのはユーザーの想像をたくましくして、ユーザーはより自分の世界の中でゲームを楽しむことができました。現代の視覚表現に凝り過ぎたゲームももちろん素敵なのですが、私はゲームの本質からは少しずれている気がしてなりません。