めざせ4004! IC24個で電卓用CPUを作ってみた: Chapter 6-2 初期化およびデモンストレーションの切り替え
電源ONもしくはリセットされるとEX4-2024はROMのアドレスの0x000番地からプログラムの実行を開始します。これはTD4EX4と同じです。
実行を開始すると全LEDに8を表示します。このうち最下位桁(右端)から7個にはインデックスレジスタを使用した間接参照によって数値の8を出力します。最上位桁(左端)はアドレス直接指定で8を表示させています。
デモンストレーションの切り替えはKBDINという疑似サブルーチンを実行し、キーの判別を行います。これについては後ほど説明します。
各デモンストレーションへの分岐時にLEDには8が表示されたままになっていますが、それをどうするかは各デモンストレーション・プログラムに任せています。
なんの変哲もないプログラムなので説明不要だと思いますが、ループカウンタがインクリメント・カウンタになっていることにご注意ください。これはイミディエイトデータによる減算命令が無く、さらに分岐命令がJNC命令しか無い事による影響です。
筆者はMC6809でアセンブラを学んだため、減算結果が負になった時に発生するボローは、キャリーフラグが1になるという宗派に属しています。しかしEX4-2024は0になる宗派であるため、非常にストレスが溜まります。
幸いなことに条件分岐命令がJNCであるため、キャリーが0の間はループする、という動作には適しています。おかげで出来上がったプログラムに不自然な点はありません。なので筆者の感じるストレスは皆さんには伝わらないかもしれません。