CPU実験室

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

C言語で8031

いままで統合環境CMPLDRV上でMCS51のコードはアセンブラASで処理していましたがCコンパイラSDCCでもうまくいきそうなのでビルド部分のバッチを差し替え、C言語に対応しました。いずれ言語選択(処理系切り替え)もドロップダウンリストで行えるようにしようと思います。
バッチはコマンドラインでSDCCを起動し、ターゲットCPU、メモリモデル、エントリーポイント、includeファイル、ライブラリのパスを指定しているのみです。

sdcc -mmcs51 --model-small --code-loc 0x8000 -I"C:\Program Files\SDCC\include"    -L"C:\Program Files\SDCC\lib" test.c

 

以下はプログラム例でカウンタ値をシリアルに垂れ流しているだけのものです。
シリアルの入出力はモニタのROM内ルーチンを使ってもいいのですがCPU内部レジスタをCからアクセスする確認のため手作りしてみました。

ほぼCの標準的なライブラリを使えるので文字列書式制御にsprintf関数を使ってみましたがやはりバイナリは大きくなります

 

f:id:O3I:20190824150722j:plain

 

モニタプログラムもOTP(AT27C256)に固定しましたが、これも8085と同じでROMエリア内に割込みテーブルが来るので、割込み実験をするときにはまた書き換えなければなりません。

 

f:id:O3I:20190824150652j:plain