Skip to content

smihica/td4asm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

TD4 アセンブラ

あの魔書『CPUの創りかた』の TD4 CPU の ROM 部分をArduinoで作る場合のアセンブラです。 NodeJSでAssembly言語をArduinoに保存できるC言語に変換します。つなげばすぐ使えます。

命令セット

;; X は 10進数 で 0-15です

ADD A X  ; 0000xxxx AレジスタにXを加算
ADD B X  ; 0101xxxx BレジスタにXを加算
MOV A X  ; 0011xxxx AレジスタにXを転送
MOV B X  ; 0111xxxx BレジスタにXを転送
MOV A B  ; 00010000 AレジスタをBレジスタに転送
MOV B A  ; 01000000 BレジスタをAレジスタに転送
JMP X    ; 1111xxxx Xにジャンプ
JNC X    ; 1110xxxx キャリーフラグ(C)がなければジャンプ
IN  A    ; 00100000 INPUTからAにロード
IN  B    ; 01100000 INPUTからBにロード
OUT B    ; 10010000 BをOUTPUTへ
OUT x    ; 1011xxxx OUTPUTへXを転送
NOP      ; 00000000 何もしない (Aレジスタに0を加算)

アセンブリの例

;;; SLOWクロックで約1分たったら、出力ポートを1111にする。
;
OUT 0      ; 0を出力ポートに送る
ADD A 1    ; レジスタAに1を加える
JNC 0      ; 桁があふれなければアドレス0にジャンプする
MOV A 11   ; レジスタAを11にする
ADD A 1    ; レジスタAに1を加える
JNC 4      ; 桁があふれなければアドレス4にジャンプする
OUT 15     ; 15を出力ポートに送る
JMP 7      ; 停止する

使い方

必要

NodeJSが必要です。

$ brew install node.js # macでbrewでインストールする場合

コマンド

$ ./arduino/asm src.tdasm
byte code[16] = {
    B10110000,
    B00000001,
    B11100000,
...

プリントされたのCのコードをコピーして、Arduinoエディタに貼付け、転送してください。

Arduinoのつなぎ方

アドレス INPUT

| PIN |  2   3   4   5  |
+-----+-----------------+
| BIT |  LSB <---> MSB  |

データ OUTPUT

| PIN |  6   7   8   9  10  11  12  13  |
+-----+---------------------------------+
| BIT |  LSB <-------------------> MSB  |

Example

About

4BIT CPU TD4用アセンブラ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published