Fuzix-Compiler-Kitの6800用コンパイラ(ベーシックマスター開発 その33)

2024/10/08BASICMASTER, 昔のパソコン

6800用のコンパイラを探して – Fuzix/CC6303(ベーシックマスター開発 その22) | ず@沖縄の続き。

サポートルーチンを追加して、バグ取りしたら、少しは動作するようになったのでメモ。6800わかる人に手伝って欲しい。

Fuzix-Compiler-Kitとは

Unix-like operating system であるFuzix用のコンパイラ。8bit CPU用もある。6800用は “Work in progress"。


簡単なテストは通るようになった

test/ ディレクトリにテストプログラムが33個ある。現在21個パス、12個はエラー。

動かないもの

配列のアドレス取得にバグがあって、それを使ってるやつは動かないです。
op16_on_node() in be-code-6800.c does not set array addresses correctly. · Issue #90 · EtchedPixels/Fuzix-Compiler-Kit

switchもコードが怪しいのですが、どこが悪いのかまだわからない。


0003-pointer:
0010-pointer:
0012-switch:
0014-array:
0103-pointerlong:
0109-divmodlong:
0110-pointerlong:
0112-switchlong:
0201-float:
0501-qsort:
0502-utol:
0601-register:

2024/10/09 追記: わかったのでissue書いた。23個パス、10個エラー。
2024/10/10 追記: 0201-float以外はpassするようになった。
2024/10/11 追記: 手元の版では全部passするようになった。issue報告中なので、そのうち反映されると思います。


オブジェクトコード

昔のCP/MやFLEXのコンパイラを思い出させるようなコードが出ます。乗除算はもとより、関係演算もサブルーチンコールになるのが辛いです。
このあたりは一通り動くようになってから対処かな。


    unsigned n = 0;
    unsigned c = 0;

    while (n++ < 100)
        c++;

_main:
    des
    des
    des
    des
;make local ptr off 0, rlim 254 noff 0
    tsx
    clr 1,x
    clr 0,x
;
;make local ptr off 2, rlim 254 noff 2
    tsx
    clr 3,x
    clr 2,x
;
L1_c:
;make local ptr off 0, rlim 252 noff 0
    tsx
    ldab 1,x
    ldaa 0,x
    pshb
    psha
    addb #1
    adca #0
    stab 1,x
    staa 0,x
    pula
    pulb
    pshb
    psha
    clra
    ldab #100
    jsr __ccltu
;
    jeq L1_b

リンク