アセンブラのリスティングで上位下位が逆なのがどうも気になってマクロ内でswapを定義し内部でひっくり返しておきました。これで表示上はビッグエンディアンのように見えます。
この変更に伴い制御FWもHI/LO読み込む順番を変え、ついでにタイムアウトでファイルの終わりを検出するようにしています。
修正済マクロライブラリ 14500.LIB
あと、もう一点。PROASMⅡは8ビット、バイトオーダーのCPUを想定しているので16ビットワード定数を置くとプログラムカウンタが2個進んでしまいます。これはうっかりしていました。引数にプログラム空間のアドレスを取るJMP,CALLコマンドだけはラベル値の1/2がコードに埋め込まれるように修正しました。
このライブラリを使ったアセンブル結果例です。命令コードが読み易くなりました。
さらに大きいプログラム:8ビット変数をインクリメントしてその結果をデコードする全396バイトの実行状態を動画にしてみました。
このCPUボードは最高速で何かの処理させるのが目的ではなくゆっくりしたクロックで各信号線でLEDがチカチカするのを鑑賞するのを愉しむものです。
PICから供給するクロックを徐々に速くしていて最初1Hz、50秒あたりで10Hz、1分30秒あたりで100Hz、1分50秒あたりで1kHzに切り替えています。最後の10秒くらいでにゅっと手が出てきますが、ボード上のスイッチを切替えMC14500内部の発振器で自走させていてこの時のクロックは約28kHzです。