UCSD-P SYSTEM

ふと思い出しました「UCSD-P SYSTEM」

UCSD : University of California San Diego

ちょっと検索してみましょう。

UCSD-P system wiki  とか UCSD PASCAL wiki 等があると思います。

月刊ASCII等のパソコン雑誌やマイコン雑誌で、PC-8001やAPPLE II に並んで広告が出ていたのを思い出します。

画像検索をしてみました。

関連画像は出てきているようですが、日本の雑誌に掲載された画像は見当たりません。

それらをざっと読んで頂いたとしたら、次に見て頂きたいのは

P-コードマシン wikiです。

昔、まだ、8ビットマイコンの時代に、メインメモリーが64Kバイト程度の時代に、UCSD Pascal が、出現し、UCSD-P systemが出現し、Pコードマシンと言う、仮想的なマシンをインタプリター形式でエミュレートするスタックマシンの仕組みがすでに存在してて、8ビットマイコンと言うものすごい貧弱なスペックで動いていた。と言う事実です。

と言った処で、マイブームの回想録であり、他人の方々には、それがどうしたと言う感じでしょう。

そもそも、初めて触ったBASIC言語はインタプリター形式でした。NEC PC-8001 に搭載されていた、N-BASICでした。

うん?、あれ?、あ、そうだった、最初に触ったBASICは、TSSのインタプリターのBASICでした。

TSS : Time sharing system

高校の授業で、数学のアルゴリズムの授業で、FORTRANとCOBOLをちょこっと習った気がするんです。図書館で関連書籍を読んだ記憶とかすこーしあります。

高校時代は、TK-80EμPD8080AFCという8ビットCPUのマシン語に明け暮れては居たものの、学校にコンピュータが無く、FORTRANもCOBOLも試す機会はありませんでした。月刊ASCII等を見ていてBASICはPC-8001で動くというので、BASICは熱心に読んでいました。でも、NEC PC-8001を買うまでは、実際に触るチャンスが無く、どんな感じなんだろうBASICって?。と思っていた所、当時電電公社のショールームと言うかデモンストレーションブースが、京都四条と、大阪の地下街、(大阪南の虹の街だったかな、どこだったけかな)にあったと記憶しています。そこには、DEMOS-EのTSS端末が据え付けてあって、希望者は使わせてもらえたと思います。私は広告でそれを知り、TSS端末使わせてもらって、BASICのサンプルプログラムを打ち込んでみた記憶があります。自宅から京都四条までの電車代も馬鹿にならないので、PC-8001かうべぇ。と決心した記憶があります。

PC-8001を買えば、BASICインタプリターは入っているので使いまくれるのですが、FORTRANとかCOBOLとかは、偉い高価で買えるものではありませんでした。FORTRANやCOBOLの広告は雑誌に掲載されていましたが、白黒広告で素っ気ない広告でした。買っても、当時の私は、それでどうすると言うこともありませんでしたし、あまり興味が沸きませんでした。

そんな中、APPLE IIには、UCSD-P SYSTEMの綺麗な広告がありました。PASCAL,FORTRAN,COBOLが使えるというふれこみだったと思います。

UCSD-P SYSTEMがとても優秀だと言う広告だったような気がします。そして記憶が正しければ、このソフトウェアは48万円ぐらいだったような気がします。

そして、APPLE II DISK SYSTEM にモニターにプリンターを買えば、当時のオフコン(オフィスコンピュータ)に手が届く値段だったような気もします。

と言うことで、私は、APPLE IIについては、知り合いが所有していて、少し触らせてもらったのと、後は眺めていただけでした。

あ、思い出しついでに、大津の膳所に西武百貨店がありまして、当時その中でコンピュータショップと言うか、家電のなかでワンコーナー、パソコンのコーナーがありまして、わずか1年か2年ほどだった気はしますが、近所のマイコン好きが集っていた場所です。NECのシステムイン滋賀か、西武のこのコーナーによく見る面子が集っていた気がします。西武のこのパソコンコーナーには、NEC PC-8001以外に、タンディーラジオシャックのTRS-80COMMODORE PET 2001COMMODORE 64APPLE II沖電気 IF-80等が置かれてたような気がします。気ままに触らせていただけたのが、とてもありがたかったなと思います。その後は、京都寺町の電機屋さん街で、特にニノミヤ無線さんではしょっちゅう触らせていただいておりました。apple Macintosh 等は、ニノミヤ無線さんで、触らせていただいて、ハイパーカード等も使わせていただいた気がします。ニノミヤ無線さんで思い出したのが、ashtontatedBASE III のPRがあり、トライアル版を使わせていただく機会を頂いたことが記憶にあります。

時代は、8ビットマシンのPC-8001から、PC-8801、PC-9801に、そしてソフトウェア的には、N-BAISCはN88-BAISCになり、N88-DISKBASICにと移行していく時代だったと思います。

そんな時代、「N88‐日本語BASIC(86) コンパイラ活用法―MS‐DOS版」と言う(名前だったとおもうのですが)本で、内部構造の解説を見て、驚きました。

「コンパイラーだけど、マシン語にはしていません。」と言うこと。

「コンパイルした後の実行モジュールを動かすには、RUNタイムライブラリと言われるソフトが必須」と言うこと。

つまり自分で過去に組み上げたBASIC言語でかいたソフトをコンパイルしたあと、そのコンパイル結果のファイルを配布しても動かないと言うことでした。RUNタイムライブラリも同時にいれておかないと、動かないというのです。

最初の部分を読んだだけではピンと来ませんでしたが、熟読して分かりました。驚きました。

このRUNタイムライブラリと言うものは、インタプリター本体だと言うのです。

N88-DISC BASIC コンパイラーは、UCSD-Pシステムのようにコンパイル対象のプログラムを、中間言語にコンパイル(翻訳)するのだそうです。

そして、そのNBASICコンパイラーがコンパイル(翻訳)した結果の中間言語(中間コード)を、解釈実行するインタプリターがRUNタイムライブラリだと言うことでした。

つまり、通常はN88DSIKBASICの言語仕様に従って記述されたBASICプログラムを解釈実行するのが、N88BASICインタプリターですが、UCSD-P Systemのような、中間コードインタプリターに解釈実行させるために、N88DISC BASICで書かれたBASICプログラムを中間言語に変換している。と言うことをコンパイルする。と言っていた。ようなんですね。

でも、コンパイル後のコードを実行すると、ノーマルに比べて、10倍くらい処理が速くなると言うことでした。

BASIC言語でかかれたソフトは見慣れていましたので、みれば読めるのですが、この中間コードにコンパイルされた結果は、ほとんどバイナリーコードに見えて、中間コードなんだよと教えてもらわないと、わからないものでした。なので、本で読むまでマシン語にコンパイルされていると勘違いしていました。

この中間コードだけをコンピュータに入れても動かないのです。

この中間コードに成ったソフトが動くには、RUNタイムライブラリと呼ばれていたインタープリターが入っていてこそ動けるのです。このRUNタイムライブラリが解釈実行するから、動くのです。

つまり、「それ」はプログラムなんだけど、中間言語にコンパイルされたプログラムであり、その中間言語を解釈実行する主体が存在しないと、それ単体では動かないのです。動かしても、RUNタイムライブラリがありません。としか表示できないプログラムでしかない。

と言う事で、一旦RUNタイムライブラリと言われるインタープリターが入れば、解釈実行できるようになるので動き出せるのです。

なんだか、すごいですよね。

御本家の純正BASICより、10倍くらい高速な処理速度で動作するなんて。

うーん、動き方は、コンパイル後のファイルの拡張子はexeかcomだったと思うのですが、どっちだったかな、exeモデルとかcomモデルms-dosはそれぞれの形式にしたがった起動をさせると思うのですが、コンパイル後のファイルが起動されると言うのは、fork,execでいうと、この場合forkではコンパイル後のファイルを入れるプロセスをforkして、そこにコンパイル後のプログラムをロードする事で、execするというのは、そのコンパイル後のプログラムを起動すると言うこと。そして、起動されたコンパイル後のファイルは、runタイムライブラリーを、所定のエリアに読み込みますよね、読み込んだ、runタイムライブラリは、実はインタプリタ-なので、そのインタプリターの所定のアドレスがインタプリター起動開始アドレスなので、そこにジャンプするんじゃないんだろうか?、そして、起動された中間コードインタプリターは、プロセスの所定のアドレスにコンパイル後のプログラムが格納されているはずなので、そこから読み出して解釈実行を始めるの出はないでしょうか?)

まとめ

UCSD-P system は FORTRAN、COBOL、PASCALが動く(中間コードに変換している)が、とても高価で高値の花でした。

と言う事と

N-BASIC系にも、中間言語にコンパイルするBASICコンパイラーが実在した。

と言う事と。

コンパイルと言ったって、マシン語にするとは限らない。中間コードに変換するものもある。と言うこと。

コンピュータのハードウェアには、様々なファイルが入ると思います。

単なるデータファイルなのか?プログラムなのか?

それは、単体で動くものなのか?、それとも何らかの解釈実行を司るインタプリターが必要なのか?。

思い返せば、メインメモリーが1Mバイト以下の時代に、HDDが40Mバイトの時代に、既にこういうテクノロジーは存在していて、それが、ウィルスかどうかなんて、見極めるのが困難で。気がつけばメインメモリは2Gだ、4Gだと言う時代になり、HDDはテラバイトになり、当時のインタプリターぐらいは何種類でも入れる時代になってしまったという事。

後書き

かなり、昔の話であり、そうとうに勘違いや、思い込みもあるかもしれません。お気づきの点がございましたら、ぜひとも、コメントなりなんなりで、ご指摘をお願いいたします。

おまけ

THE UCSD P-SYSTEM MUSEUMへのリンク

SD Super computer centor

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です