[前頁] [次頁] [目次]


システム固有のこと


 本コンパイラシステムの固有の諸点について、システムの改造等を試みる場合の参考事項を説明したいとおもいます.

(1)アセンブラシステムの分離
     システムに組み込んであるアセンブラシステムは、それ単独で充分使用に耐えるものであります.事実このコンパイラシステム自体も、これによって作成しています.ここでは、これの分離方法を説明します.
     アセンブラシステムは、0x2000 番地から 0x3fff 番地に格納されて実行するものですが、C-system 動作時は、0x6800 〜 0x87ff の領域に存在しています.C-system より "*g1000" と打ち込んで X1 モニタに飛び、後はモニタのコマンドにより、アセンブラシステムを 0x2000 番地以降に転送し、0x012a 〜 0x012c の jump 命令をC3、00、20 に変更したうえで、モニタと合わせて一括テープにセーブすれば、IPL 起動のアセンブラシステムを作ることができます.

(2)C プログラムのオブジェクトを単独で動かす
     コンパイル・アセンブルの過程を経て作成された C のオブジェクトは、現在 C-system の存在なしでは、実行できません.この理由は、単にランタイムが C-system の中に組み込んであるがためです.コンパイルオブジェクトをアセンブラシステムのエディタでリスト表示しますと、オブジェクトの先頭にランタイムの人口ラベルが eque によりアドレス定義されているのがわかるとおもいます.
     説明書の最後に、システムで組み込んでいるランタイムのアセンブラリストを付けていますので、これ、又は、これ相当のものを別アドレスにアセンブルして equ の定義を変更するか、定義を削除した上でオブジェクトとランタイムをまとめてアセンブルすれば、X1 モニタのもとで、単独で実行させることが可能となります.ただし、main 関数への引数渡しは、できませんので、プログラムの中で必要な人力処理をコーディングしておいてください.さらに、実行開始前の sp の設定についても考慮しておくことを忘れないでください.

(3)システムの他機種への移植の可能性について
     メモリマップの説明を見て頂くとわかりますように、メインメモリの他、グラフィックメモリもフルに活用してシステムを実現していますので一見不可能に見えますが、これは、テープシステムの操作性を極力向上させるために、各プログラムが起動する直前にメモリ配置を動かしているだけで、コンパイラや、アセンブラの本質の部分には関係ありません.
     とはいえ、これは X1 のもつカセットシステムの高信頼性と、メモリオール RAM の特質あってのことですから、他機種へのテープシステムによる移植は困難といえるでしょう.
     ディスクシステムともなれば、それなりの DOS が完備されていれば、各プログラム毎に若干の DOS インタフェースをコーディングすればよく、可能性はあることでしょう.(私自身、いずれはディスク版を作成したいと思っています.)


[前頁] [次頁] [目次]