SBC6809でBASICインタプリタとGAME09が使えるようにはなったが、それ以外だとプログラム言語はアセンブラになる。実数演算の必要なものはBASIC一択しか無い。SBC6809(ESP32)でもSDカードからBASIC読み込んで、その後BASテキストロードして実行ってのを毎回やるのは面倒くさい。そこで扱いやすいC言語あたりが欲しくなる。FM-8/7系とかで動くKコンパイラやFORTRANなんかも有るけど それらも、FBASICのROM内ルーチンありきの構造になってる。海外のだとsmall-cなんかも有るが、やはりTRS-cocoのROM内ルーチンがある前提だったりする。それ以外だとflexやOS-9上で動作するC-compilerがあるが、SBC6809の様なROM/RAM 32Kの狭い領域では使い物にならない。gcc6809も四苦八苦しながらビルドしてhelpとversion表示が出るまでは持っていったことが有るが いざ"hello world" とか 表示させようとすると 標準のライブラリがまともに揃っていない。ファイル上は それらしきlibgcc.aとかあるのだが どこに 表示データ送ってるのか? FLEXかOS-9前提のオブジェクト吐いてくるのかと予想している。 m6809-unknown-elf-gcc hello.c とかやっても、linux の gccなら a.outとか吐き出して。仮に実行できたりするんだが gcc6809では まず できない。ビルトインのライブラリ類を一切当てにしてはいけない。gcc6809のビルドの為のソースに 大体の必要なライブラリソースが含まれてるので それらを流用してsbc6809用のサブセットライブラリを作ってやることにする。 m6809-unknown-elf-gcc -O2 -S -fno-builtin -DFLOAT -DFLOAT_ONLY $1.c -o $1.asm 今使ってる オプションは こんな感じ。 -fno-builtin :ビルトイン関数は使わない -DFLOAT -DFLOAT_ONLY :実数演算が必要な場合、単精度のみ -S :アセンブルソースを出力するだけにする。 あと、 -nostdlib ...
予てより取り組んできたSBC6809エミュの関係ファイルを 書庫にして公開 する。 とは言え、未だ 完全な完成には程遠いので恥ずかしい限りではある。 書庫サイズは390キロバイト弱になる、以下の文書は その中に収めた 但し書きの写しになる。 ---------------------------------------------------------- EXBASICから USING命令を削除した軽量版 タイマ割り込みを利用した簡易時計機能付き BASIC9.asm BASIC9.hex BASIC9.lst BASIC9.mot BASIC9.sym DBDC 12 BAWMST NOP hotstart : $DBDC ExBASIC 気になる部分のバグ修正したのみ。ほぼ原版 BasROM.asm BasROM.hex BasROM.lst BasROM.mot BasROM.sym DBCB 12 BAWMST NOP ;NOP REQ-D FOR WARM START hotstart : $DBCB HD6309チェッカ 現時点での このエミュレータでは無意味 CHK309.asm CHK309.lst CHK309.sym EXBASICソース構造参考.txt GAME09.asm GAME09.hex GAME09.lst GAME09インタプリタ COLD :$9000 HOT :$9003 これにはリセットベクタ情報は含まていないので、ロード後の初期起動時もVsetでベクタ設定が必要。 BASIC,GAME09 共通で ロード後 一度コールドスタートさせて CTRL+Dで CCPに戻り loadでソースをロード vsetで ホットスタートアドレスを設定、GOでインタプリタに戻り プログラムの確認、実行という手順です。 コンパイル済みのGAMEバイナリは 共通で$2000が実行アドレスです。 マンデルブロ集合 アスキアート表示デモ ascart.bas...