プログラム開発環境をCに移行しました。
コンパイラはLSIC-80でこれはもともとROM化を前提とした開発環境なので
CPUボードへのインプリメントは容易です。
ただ、DOS環境下で動作するのでパスや環境変数など根回しが必要です。
コンパイラはLSIC-80でこれはもともとROM化を前提とした開発環境なので
CPUボードへのインプリメントは容易です。
ただ、DOS環境下で動作するのでパスや環境変数など根回しが必要です。
まずは簡単なスタートアップルーチンをアセンブラで記述しておきます
本来はここでスタックポインタの設定などもするのですが、実使用ではモニタでDLLしてそこから実行されるので、ここではモニタが設定したスタックポインタを継承して
利用することにします
PUBLIC start_ EXTRN main_ CSEG start_: CALL main_ RST 7起動後、Cで書かれたユーザプログラムのmain()をコールします。返ってきたらRST 7でモニタのエントリポイントへ飛ぶ、という内容です
本来はここでスタックポインタの設定などもするのですが、実使用ではモニタでDLLしてそこから実行されるので、ここではモニタが設定したスタックポインタを継承して
利用することにします
コンパイラのオプションはほとんど必要ありません。
-rオプションを指定するとZ80特有の相対ジャンプ命令を生成しますが
黙っていれば8080/85のコードを吐くようです
スタートアップルーチンとユーザプログラムのオブジェクトをリンクさせれば
指定番地からロードできるHEXファイルができます
-rオプションを指定するとZ80特有の相対ジャンプ命令を生成しますが
黙っていれば8080/85のコードを吐くようです
-DLSI_C80 -X\usr\asm\LSIC80\BIN -I\usr\asm\LSIC80\INCLUDE -v -w2 -c $LSICOPTSリンカではコードとデータのスタート番地を絶対アドレスで与え
スタートアップルーチンとユーザプログラムのオブジェクトをリンクさせれば
指定番地からロードできるHEXファイルができます
knil #CODE=9000 #DATA=e000 %1.hex start.sof %1.sof @lnkfile浮動小数点パッケージやANSI準拠のライブラリをリンクできます
-f\usr\asm\lsic80\lib\flib -f\usr\asm\lsic80\lib\romlib