FOCS (前編)
先日話したFORTRANコンパイラの話。
ちなみにタイトルはキツネさんのスペルミスではなく、高校生の時に作ったFORTRANコンパイラの名前です。:)
マイコンの創世記、世の中にはいろいろなコンパイラが出回っていた。
BASICを始め、FORTRANやPASCAL、独自言語のGAMEやTL/1、など種類も多かったが、それらは機能もサブセットでコンパクトなものが多かった。
ご存じのように当時のコンピュータはとても遅くて、ちょっと何かするにもBASICでは使い物にならない。
かと言って、機械語でロジックを組むのはかなり大変で、とても気軽にプログラムを作る気にならない。
そんなわけで、機能は少なくて整数演算しかできないけれど、高級言語の感覚でプログラムが書けて実行速度も機械語並みな、この手のコンパイラが流行っていたのだ。
中でもこのGAMEという独自言語のコンパイラはインタプリタも付いていて、インタプリタでデバッグし、最終的にコンパイル可能という優れものだった。
PC-8001やMZなどサポートするコンピュータも多く、これを使ったゲームも多く発表されていたような気がする。
そんな中、BASICからすぐに機械語に移っていたぼくが使っていたのは、ASCIIという雑誌に載っていた*1TL/1コンパイラ。
1バイト変数しか扱えなかったけど、BASICのコメント文としてソースを入力し、モニタから気軽にコンパイル・実行ができるのはなかなか便利で、よくこれでゲームを作っていたものだ。
これで平安京エイリアンを作り、学園祭に展示したこともあったっけ。
このゲーム、なかなか面白いので、若い人や知らない人は以下のページからダウンロードして遊んでみてください。
http://www.hyperware.co.jp/software/heian/
さて、そんなことをして遊んでいたある日、ふと自分でもコンパイラを作りたくなった。
高校3年で卒業研究が近づいていたこともあり、課題としてもなかなかよさけだな。
当時雑誌ではMZ用のFORTRANコンパイラFORMが公開されていたが、たしかPC-8001はなかったはず。
よし、PC-8001用のFORTRANコンパイラを作ろう!
どうせ作るならフル機械語だ!
というわけで、ぼくはFORTRANコンパイラを作るべく、設計を開始したのだった(無謀)
さて、このblogの読者であればご存じのように、ぼくは後先考えずに思いつきで行動する人である。^^;;
数学の知識が必要なのに、電子工作が好きっていうだけで工業高校に入って、落ちこぼれてしまう人だからね(笑)
この時点では、当然コンパイラやインタプリタなんて作ったこともなければ、256バイト以上の機械語を組んだこともない(汗)
その先には、本人が想像すらしていなかった困難が待ち受けていたのであった。
(TO BE CONTINUE)
*1:当時はパッケージ販売のものを買うことは少なく、みな雑誌に掲載されていた16進ダンプのリストを打ち込んでいたものである