CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

C言語で開発

プログラム開発環境をCに移行しました。
コンパイラはLSIC-80でこれはもともとROM化を前提とした開発環境なので
CPUボードへのインプリメントは容易です。
ただ、DOS環境下で動作するのでパスや環境変数など根回しが必要です。

 

まずは簡単なスタートアップルーチンをアセンブラで記述しておきます
	PUBLIC	start_
	EXTRN	main_
	CSEG
start_:
	CALL 	main_
	RST	7
起動後、Cで書かれたユーザプログラムのmain()をコールします。返ってきたらRST 7でモニタのエントリポイントへ飛ぶ、という内容です
本来はここでスタックポインタの設定などもするのですが、実使用ではモニタでDLLしてそこから実行されるので、ここではモニタが設定したスタックポインタを継承して
利用することにします

 

コンパイラのオプションはほとんど必要ありません。
-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