あんたCPUなんか創ってどうするのよ?! Vol.1 第6章 第2節
~TD4とかいうCPUがあまりにも残念だったので拡張してみた~
2016/8/14
コミックマーケット C90 3日目 西g16b
第6章 第2節 ラーメンタイマー
さて4KB もの広大なROM が使用可能になったので、何か面白いサンプルプログラムが出来ないかと考えたのですが、加算すらまともにできないという仕様ではなかなか思いつきませんでした。
ということで「CPU の創りかた」にあるラーメンタイマーをTD4EX2 用に修正したものを掲載します。
アドレス | 命令コード | 命令 | 説明 | |
---|---|---|---|---|
000000000000 | 10110111 | OUT | 0111 | ; LED を3 つ点灯 |
000000000001 | 00000001 | ADD | A, 0001 | ; 16 回ループ |
000000000010 | 11100001 | JNC | 000000000001 | |
000000000011 | 00000000 | |||
000000000100 | 00000001 | ADD | A, 0001 | ; 16 回ループ |
000000000101 | 11100100 | JNC | 000000000100 | |
000000000110 | 00000000 | |||
000000000111 | 10110110 | OUT | 0110 | ; LED を2 つ点灯 |
000000001000 | 00000001 | ADD | A, 0001 | ; 16 回ループ |
000000001001 | 11101000 | JNC | 000000001000 | |
000000001010 | 00000000 | |||
000000001011 | 00000001 | ADD | A, 0001 | ; 16 回ループ |
000000001100 | 11101011 | JNC | 000000001011 | |
000000001101 | 00000000 | |||
000000001110 | 10110000 | OUT | 0000 | ; LED を全部消灯 |
000000001111 | 10110100 | OUT | 0100 | ; LED を1 つ点灯 |
000000010000 | 00000001 | ADD | A, 0001 | ; 16 回ループ |
000000010001 | 11100000 | JNC | 000000010000 | |
000000010010 | 00000001 | |||
000000010011 | 10111000 | OUT | 1000 | ; 終了のLED を点灯 |
000000010100 | 11110100 | JMP | 000000010100 | ; 自分自身へジャンプ |
000000010101 | 00000001 |