CPU実験室

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

6809用Cコンパイラ

以前作ったCPUボードの開発環境整備を気が向いたときにしていますが、久々に6809ボードを引っ張り出してきました。酷い埃まみれ・・

 

f:id:O3I:20210211111229j:plain

6809用のクロスCコンパイラとしてMicro-Cというのがありましたが、今動かそうとするとありがちなエラー

f:id:O3I:20210210222617j:plain

が出てしまいます。古いCPUのアセンブラ/コンパイラMS-DOSコマンドラインで動いていたようなものはほぼ全滅ですね。

他に探すとCMOCというコンパイラがフォルダから発掘されました。これは米国Tandy社のTRS-80ColorComputer(通称CoCo)をターゲットにしたもので、どこかからか拾ってきてインストールしたのが2016年くらい。バージョンが0.1.32となっています。

これはもともとcygwin環境下で動かすものですがWin32用にビルドされたものを落としてきたようなのです。ところがこれも今動かすと何故かリンク未解決エラーが消せません。このボード用に活用していたかも覚えていないのですが、たしかコンパイラドライバがちゃんとWin32へ移植できてなくプリプロセッサアセンブラ、リンカを個別に呼び出すバッチを自分で組んでました。環境変数の設定に問題があるのかもしれません。

このコンパイラを現時点でさがすと今も開発は継続されていて直近バージョンが0.1.69になっていました。Win32用のパッケージもあったのでさっそくアップデートして簡単なソースをコンパイルしてみたらちゃんとバイナリまでできたので使えそうです

 

0xFFC0番地にあるパラレルポートにインクリメントデータを出力するいつものLチカテストをしてみます

f:id:O3I:20210210220515j:plain

 

起動させるのはコンパイラドライバcmocのみです。コマンドラインのオプションも  --srecでSフォーマット出力、--org=0x0000で先頭番地を0番地に指定するくらいです。

f:id:O3I:20210210220531j:plain

 

リスティングファイルをみると最適化の過程などいろいろコメントが埋め込まれてきますがちょっとそれをどけてやるとかなり質の良いコードを生成しているのがわかります

f:id:O3I:20210210220546j:plain

 

Sフォーマットの形でボードに転送して実行してみました。パラレルLEDのLSBで約43kHzでチカチカしています。

f:id:O3I:20210210220753j:plain