ず@沖縄

BASICMASTER

6800の未定義命令(1) 歴史と概要

現代のCPUは、定義されていない命令(利用されていないオペコード)を実行すると、未定義命令エラーが検出されてOS trapが発生する。けれども、往年のコンピューターでは、定義済みの命令と同じ動作をしたり、似たようで違う動作をしたり、はたまた...
BASICMASTER

MC6800のプログラミングテクニック(10) PSHX はできないけど、PSHSはできる

6800でプログラムを書いていて困るのは、IXレジスタの加算減算命令がないことと、IXレジスタがPUSH/POPできないことである。加算ができない弱点は1976年の富士通MB8861で解決されたのだけど、この改良はモトローラや日立にフィード...
BASICMASTER

MC6800のプログラミングテクニック(9) シフト・ローテート命令のVフラグ

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

MC6800のプログラミングテクニック(8) 分岐条件の生成(3)

NEG命令の続きである。NEGを使うとある1byteが00であるか80であるかそれ以外かを1命令で判断できる。$00のとき C=0, V=0, Z=1, N=0$80のとき C=1, V=1, Z=0, N=1その他 C=1, V=0, Z...
BASICMASTER

MC6800のプログラミングテクニック(7) 分岐条件の生成(2)

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

MC6800のプログラミングテクニック(6) 分岐条件の生成(1)

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

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

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

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

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

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

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

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

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

MC6800のプログラミングテクニック(5) 8bit/16bit混在時の加減算(2)

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

MC6800のプログラミングテクニック(4) 8bit/16bit混在時の加減算(1)

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