あなたCPUなんか創ってどうするのかしら?! 第4章 第2節

~あんたCPUなんか創ってどうするのよ?! Vol.4~

2018/10/8
技術書典5 け39

第4章 第2節 初期化およびデモンストレーションの切り替え

 TD4EX41KHz 
 INIT: 
000:60 MOVA0; 全キー確認
001:AE MOV[0xE]A 
002:7E MOVB0xE 
003:9E SUBB[0xE]; 入力無し
004:E0 JNCCALC2 ; 2桁電卓
005:20 
006:AF MOV[0xF]A; 入力有
007:61 MOVA1; ゼロ表示
008:AF MOV[0xF]A 
009:62 MOVA2 
00A:AF MOV[0xF]A 
 START: 
00B:60 MOVA0 
00C:A0 MOV[0]A 
00D:F0 JMPKBDIN ; キー入力
00E:08 
 SELECT: 
00F:2F SUBA1; 0キー
010:E0 JNCCNT99 ; 0→99
011:02 
012:2F SUBA1; 1キー
013:E0 JNCRAMEN ; ラーメン
014:04 
015:2F SUBA1; 2キー
016:E0 JNCKBDTST ; 入力テスト
017:12 
018:2F SUBA1; 3キー
019:E0 JNCCALC1 ; 1桁電卓
01A:18 
01B:2F SUBA1; 4キー
01C:E0 JNCCALC2 ; 2桁電卓
01D:20 
01E:FB JMPSTART ; 入力待機
01F:00 ; 終了

電源ONもしくはリセットされるとTD4EX4はROMのアドレスの0番地からプログラムの実行を開始します。これはTD4と同じです。

実行を開始するとすぐにテンキーの状態を確認し、何のキーも押されていなければ2桁電卓へと分岐します。何かのキーが押されている場合はKBDINという疑似サブルーチンを実行し、キーの判別を行います。これについては後ほど説明します。

いきなりKBDINによるキーの判別をせずに、最初にキー入力の有無を確認している理由は、KBDINが何かのキーが押されるまで戻ってこない仕様になっているからです。

KBDINから戻ると、Aレジスタに押されているキーの数値が格納されています。従ってAレジスタの内容をチェックして実行すべきデモンストレーション・プログラムへ分岐します。

LEDの初期化は個々のデモンストレーション・プログラムに任せています。ただし何らかの原因でTD4EX4が正常動作しなかった場合に、初期化ルーチンまでは動作していることを示す目的で0を2個表示するようにしてあります。