整数型Cコンパイラーシステム for シャープX1 (1987年4月)
【概 要】
 昭和62年に実施された工学社主催の「第5回I/Oプログラムコンテスト」に応募し審査員特別賞を受賞した作品です。シャープの8ビットパソコンテレビX1で動く整数型のCコンパイラーです。Z80アセンブラーで作成しています。

 シャープから販売されていたパソコンは, MZシリーズの他にもう一つX1シリーズがあります。X1シリーズは、発売当初は8ビット機でしたがその後ゲームマシンとして人気を博す16ビット機にまで発展していきました。この作品は初期の8ビット機(外部記憶はオーディオカセットでした)に対応したものです。

 工学社では昭和59年の第1回開催を始めとしておよそ半年毎に1回のペースでプログラムコンテストを開催していました。何回まで続いたか覚えていませんが相当数続いたように記憶しています。この当時はまだパソコン通信が普及していなくて、自作したプログラムを他の人に知ってもらうにはパソコン誌(当時はマイコン誌)に投稿するしかありませんでした。そして雑誌に掲載されたプログラムはその後商品化されるという図式が結構続いていたように思います。

 ニフティーサーブやPC−VANに代表されるパソコン通信が普及しだすとプログラム発表の場は専門誌の誌上からネットワークへと移行し手軽に誰もが発表できるようになりました。PDS、フリーソフト、シェアウェアなど多彩な方法によりプログラムがネットワークを通じて流通するようになり始めると、雑誌に投稿する意義や出版社やソフト会社がプログラムコンテストを開催することの意義も薄れ、いつしかこのコンテストも無くなりました。

 さて、第1回プログラムコンテストにMZ80用の整数型ベーシックコンパイラを作成して応募、優秀賞を受賞しましたが、この時には賞状と楯ならびに副賞として50万円を頂戴しました。ちなみに最優秀賞受賞者には100万円が贈られました。今でもこれだけの賞金を出してくれるコンテストはそう無いのではないでしょうか。当時としては破格の値段でした。

 第1回の入賞で味をしめ、またの機会をねらっておりました。コンテストに応募される作品はゲームプログラムが大半を占めており、ゲームプログラムで応募しても入賞は難しい状況でした。更にゲームプログラムはプログラミングもさることながらゲームとしてのアィデア・着想が最も重要ですが、この点は私の苦手とする所です。コンパイラーなどのシステムプログラムの分野で挑戦するのが入賞の近道であろうと判断し、このプログラムを作った次第です。この当時C言語は今ほど普及していませんでしたので珍しさもあってCコンパイラを題材に取り上げることにしました。

 結果は審査員特別賞に入賞し、賞状・楯と副賞金30万円を頂戴しました。この時のプログラムは、開発に使用したX1ともども廃棄処理してしまい手元にありません。ただ操作説明書のみ残っていましたので、こちらを公開しております。

Cコンパイラーシステム取扱説明書(html txt)

【補 足】
 この説明書を今読み返し、我ながらよくもこんなコンパイラシステムを作ったものだと呆れております。当時の8ビットパソコンのメモリは64KBしかありません。ただ、X1にはグラフィック画面用として48KBの裏メモリというものがありました。

 現在のようにハードディスクも無く、外部記憶装置はテープという状況です。私が作成したコンパイラはCソースを読み込み、まずアセンブラソースを吐き出します。その後、アセンブラでアセンブルするという、今のコンパイラシステムと同様の手順を採っていました。

 これらを全て限られたメモリ空間で実行させる必要がありました。必要な時にテープから必要なプログラムを読み込むなんて手法は取れません(テープの読み書きが遅すぎて実用的でない)。全てをメモリに常駐させる方法を考える必要がありました。このために裏メモリもフルに活用することとなり必然的にプログラムが複雑となってしまったようでした。

 この他にも当時はCに関する書籍も少なく、Cそのものの言語仕様の解釈で色々悩みながら作っていたようです。また開発言語がアセンブラしかなく相当苦労していた思い出があります。