見出し画像

Language System と UCSD-PASCAL

Apple][のメモリの使い方に関しては

メモリの取り合い、せめぎあい

Apple][のアドレス配置 - 3:1の法則

でも書きましたが、システムが拡張されるに連れユーザが自由に使える領域が狭まっていきました。またBASICがROMとして決まったアドレス空間を専有しているので、BASIC以外のシステムを使うには邪魔になってしまいます。そこでApple社はLanguage Systemと呼ばれる拡張スロットに挿すRAMカードを用意したのです。このカードを挿すことで6502が利用できる(I/Oにマップされている4Kを除いてではありますが、4K分のメモリをバンク切り替えで使えるのであわせて64K分にはなります)すべてのメモリをRAMにすることが可能となりました。

Apple II Language Card

この拡張カードは当初、UCSD-PASCALというPASCALコンパイラと開発環境とのセットで売られていました。PASCALを使うのにはBASICはいらないし、その分のRAMがたくさんあったほうが良いよね。という建付けです。

ちなみに、これが出るまでUCLAは知っていてもUCSDなんて大学は知りませんでした。これを調べるうちにUCBも知ったので、カリフォルニア大学すげぇ。と思いました。その後、実際に訪ねることがあったのですが、キャンパスの雰囲気としては早稲田っぽかったです。

UCSD Pascal

コンパイラだけではなくて、エディタやプログラムの実行環境などを含んでいて、このシステムの内側で閉じるようになっていました。DOSともフロッピーの管理方法も違うので互いに直接、読み書きすることは出来ませんでした(ローレベルは同じなのでツールを使えば変換はできました)。

Apple Pascal

私が最初に手に入れたのは多分、1.1だと思います。とにかくたくさんのフロッピーを入れ替えながら使う必要があって、大きなシステムを使うのは面倒だなと思ったものです。

このPascal、コンパイラと言ってもP-CODEと呼ばれる仮想的なCPUに対するバイナリを生成して、この仮想CPUをインタプリタとして動かすという代物です。USCD-PASCALはいろいろなシステムに移植するために、やりやすくしたというのもありますが、パソコンのCPU命令までコンパイルするとバイナリのサイズが大きくなりがちで、1命令の機能が高い仮想CPU命令であれば、それなりにサイズをコンパクトに出来るという側面もあったように思います。ただ実行速度はそれなりに低下しますが、インタプリタであるBASICに比べれば、かなりのアドバンテージがありました(Javaみたいなものです)。

実際にコードを書いてみると、PASCALという言語はBASICに比べれば、構造化されたコードを書けるので、書いたプログラムも読みやすく処理が大規模になっても扱いやすいものだと感じました。ただ入出力に関しては言語仕様上の制約があって、あまり細かなことをやりにくかったです。汎用的なシステムなので、ハードウェアを直接さわるような処理を書くことは出来ず、マシン語とのインターフェースも無かったので、Appleらしいプログラムを書くのは厳しいものがありました。もっとも他のシステムへの移植性は良かったわけですけど。

グラフィックだけはPASCALらしいライブラリがあって、それなりに美しいビジュアルを扱えたのですが、少々癖が強かったです。それから、やっぱり文字列処理はBASICが書きやすいなぁ。と再確認しました。

かなり致命的だったのが、エラー処理が無いことで、フロッピーの蓋が閉まっていない状態でアクセスするとエラーでプログラム全体が終わってしまうことです。回避策としては、コードの中にコメント記法でエラー処理をするかしないかを指示する手順があって、エラー処理を切ってからディスクを読み込んで、ちゃんと中身があったら、大丈夫と判断して、エラー処理を復活させて処理を続けるという大技を使いました。BASICでもON ERROR GOTO を書かないと落ち着かない私としては、言語にエラー処理がないシステムは、使い物にならないと、かなり不満でした。

あとデバッグ環境がほぼ無くて、コードにデバッグ情報を入れて走らせるしか無くて、これは今でも似たり寄ったりなところはあるのですが、やはり良いデバッガが無いと問題を特定するのが大変です。特に言語仕様の問題やコンパイラ、ライブラリのバグなんかは、いくら頭を捻っても、実際に走っている状態をみないと如何ともし難いです。

このようにして、いわゆる「パソコン」な世界から一歩、大きなシステムへ進んでいった訳ですが、パソコンの手軽さが少し失われ、ハードウェアべったりで、隅々までシャブレたシステムが徐々に触ってはいけないところが出てきて、ブラックボックスになっていくのを寂しく思ったものです。ただBASICで書かれていても他のパソコンで使いたい場合には、その都度、丁寧な移植作業が必要だったのに対して、システムさえ同一であれば、そのまま動くのは素晴らしいと思いました。1台のパソコンを使い倒す世界から、ひとりで何台ものパソコンを使っていく世界が見えてきた時代です。

LanguageCardの仕組みやUCSD-PASCALが使われたゲームであるWizardryについてなども、いずれ書いてみるつもりです。


この記事が気に入ったらサポートをしてみませんか?