BASICMASTER, 昔のパソコン

NEG命令が意外に使える命令だとわかったので、他にも特殊なフラグ変化をする命令がないか探してみた。あった。 シフト・ローテート命令群のVフラグの変化に特記事項⑥がついている。 M6800 Microprocessor Application ...

BASICMASTER, 昔のパソコン

NEG命令の続きである。NEGを使うとある1byteが00であるか80であるかそれ以外かを1命令で判断できる。 $00のとき C=0, V=0 $80のとき C=1, V=1 その他 C=1, V=0 これ何かに使えそうだなと思っていてひら ...

BASICMASTER, 昔のパソコン

前回記事を投稿した後で気がついたけど、NEG命令が意外に使えそうである。 NEGはAccやメモリの内容の2の補数を取る命令。この命令だけ、CとVの変化が覚えにくい。 Cは、元々の値が0(結果も0)のときだけ、C=0。そうでなければC=1であ ...

2024/12/01BASICMASTER, 昔のパソコン

Fuzix-Compiler-Kit の Cコンパイラ(fcc)の現在のバージョンは、分岐の場合は下記のようなコードを生成する。 比較がサブルーチンになっているのは、オブジェクトサイズを小さくするためと、分岐条件を beq/bne (Z f ...

BASICMASTER, 昔のパソコン

Fuzix-Compiler-Kitの6800用コンパイラ(6)(ベーシックマスター開発 その38) | ず@沖縄に続いてコードの比較。今度は騎士巡歴問題。 騎士巡歴問題 チェスのナイトを動かして、盤面全部を巡回できるか?という問題。 プロ ...

BASICMASTER, 昔のパソコン

plot ルーチンはうまく動いたので、Life Game を実装してみました。 Life Game ソースコード 初期画面はxorshiftを使った乱数で書いています。乱数の種はタイマーから得ています。タイマー割り込みが実装されていないエミ ...

BASICMASTER, 昔のパソコン

Fuzix-Compiler-Kit を使って、BASICMASTERで動く Life Game を作ってみました。まずは表示のための plot ルーチンの作成。 簡易グラフィック(横64縦48)については、簡易グラフィックスとPLOTルー ...

2024/11/22BASICMASTER, 昔のパソコン

私がFuzix-Compiler-Kitを使うようになって、6800で動くコードが出るようになったのは2024年10月上旬ごろ。issueが反映されたのが10月下旬。 commit logを確認すると 2ad3a0f56b0f07f4ac3 ...

BASICMASTER, 昔のパソコン

前回(MC6800のプログラミングテクニック(4) 8bit/16bit混在時の加減算(1) )は、加算を検討したので、今回は減算。8bit - 8bit = 16bit の計算である。 まずは unsigned同士 の場合。 この場合は、 ...

2024/11/18BASICMASTER, 昔のパソコン

MC6800は8bit演算は得意だが、16bit演算はそこそこで、16bitのアドレス計算は苦手なCPUである。プログラムを書くときはなるべくAccA/Bで収まるようなコードにしたい。 大昔にLSI-C80という8080用のCコンパイラがあ ...

2024/11/06BASICMASTER, 昔のパソコン

ベーシックマスター用の最低限の定義をでっち上げて、エミュレーターでテストプログラムが動くようになりました。 表示プログラムのソースコード・解説は下記を参照してください。上記の例ではベーシックマスターの画面サイズ(横32列・縦24行)に合わせ ...

BASICMASTER, 昔のパソコン

コンパイラが生成するオブジェクト(MC6800用)についてのメモです。 関数の引数 右から積む 引数のクリアは呼ばれた側が行う(可変長引数の関数の場合は呼ぶ側が行う) 引数の型がわかっている場合は、charは1バイトpush。わかっていない ...