-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodule4_7TuringComplete_EEPROMref.txt
107 lines (101 loc) · 5.67 KB
/
module4_7TuringComplete_EEPROMref.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#define HLT 0b1000000000000000 //(halt)
#define MI 0b0100000000000000 //(RAM memory address in)
#define RI 0b0010000000000000 //(RAM memory content in)
#define RO 0b0001000000000000 //(RAM memory content out)
//----
#define IO 0b0000100000000000 //(instruction out)
#define II 0b0000010000000000 //(instruction in)
#define AI 0b0000001000000000 //(A register in)
#define AO 0b0000000100000000 //(A register out)
//----
#define EO 0b0000000010000000 //(ALU sum in)
#define SU 0b0000000001000000 //(ALU subtract)
#define BI 0b0000000000100000 //(B register in)
#define OI 0b0000000000010000 //(output display)
//----
#define CE 0b0000000000001000 //(counter enable)
#define CO 0b0000000000000100 //(counter out)
#define J 0b0000000000000010 //(counter in, or jump)
#define FI 0b0000000000000001 //(carry flag(CF)/zero flag(ZF) in)
const PROGMEM uint16_t INSTRUCTION_TEMPLATE[16][8] = {
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, //0000 - NOP (no operation)
{MI|CO, RO|II|CE, IO|MI, RO|AI, 0, 0, 0, 0}, //0001 - LDA (load register A from RAM)
{MI|CO, RO|II|CE, IO|MI, RO|BI, EO|AI|FI, 0, 0, 0}, //0010 - ADD (adding A and B)
{MI|CO, RO|II|CE, IO|MI, RO|BI, EO|AI|SU|FI, 0, 0, 0}, //0011 - SUB (subtracting A from B)
{MI|CO, RO|II|CE, IO|MI, AO|RI, 0, 0, 0, 0}, //0100 - STA (store registor A)
{MI|CO, RO|II|CE, IO|AI, 0, 0, 0, 0, 0}, //0101 - LDI (load register A from instruction)
{MI|CO, RO|II|CE, IO|J, 0, 0, 0, 0, 0}, //0110 - JMP (jump to instruction)
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, //0111 - JC (jump on carry)
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, //1000 - JZ (jump on zero)
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, //1001
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, //1010
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, //1011
{MI|CO, RO|II|CE, 0, 0, 0, 0, 0, 0}, //1100
{MI|CO, RO|II|CE, EO|OI, 0, 0, 0, 0, 0}, //1101 - OUTE (display sum)
{MI|CO, RO|II|CE, AO|OI, 0, 0, 0, 0, 0}, //1110 - OUTA (display A)
{MI|CO, RO|II|CE, HLT, 0, 0, 0, 0, 0}, //1111 - HLT (halt)
};
000: 40 14 00 00 00 00 00 00 40 14 48 12 00 00 00 00
010: 40 14 48 10 02 00 00 00 40 14 48 10 02 00 00 00
020: 40 14 48 21 00 00 00 00 40 14 0a 00 00 00 00 00
030: 40 14 08 00 00 00 00 00 40 14 00 00 00 00 00 00
040: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
050: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
060: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
070: 40 14 01 00 00 00 00 00 40 14 80 00 00 00 00 00
080: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
090: 04 08 00 20 81 00 00 00 04 08 00 20 c1 00 00 00
0a0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
0b0: 04 08 02 00 00 00 00 00 04 08 00 00 00 00 00 00
0c0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
0d0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
0e0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
0f0: 04 08 10 00 00 00 00 00 04 08 00 00 00 00 00 00
100: 40 14 00 00 00 00 00 00 40 14 48 12 00 00 00 00
110: 40 14 48 10 02 00 00 00 40 14 48 10 02 00 00 00
120: 40 14 48 21 00 00 00 00 40 14 0a 00 00 00 00 00
130: 40 14 08 00 00 00 00 00 40 14 08 00 00 00 00 00
140: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
150: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
160: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
170: 40 14 01 00 00 00 00 00 40 14 80 00 00 00 00 00
180: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
190: 04 08 00 20 81 00 00 00 04 08 00 20 c1 00 00 00
1a0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
1b0: 04 08 02 00 00 00 00 00 04 08 02 00 00 00 00 00
1c0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
1d0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
1e0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
1f0: 04 08 10 00 00 00 00 00 04 08 00 00 00 00 00 00
200: 40 14 00 00 00 00 00 00 40 14 48 12 00 00 00 00
210: 40 14 48 10 02 00 00 00 40 14 48 10 02 00 00 00
220: 40 14 48 21 00 00 00 00 40 14 0a 00 00 00 00 00
230: 40 14 08 00 00 00 00 00 40 14 00 00 00 00 00 00
240: 40 14 08 00 00 00 00 00 40 14 00 00 00 00 00 00
250: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
260: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
270: 40 14 01 00 00 00 00 00 40 14 80 00 00 00 00 00
280: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
290: 04 08 00 20 81 00 00 00 04 08 00 20 c1 00 00 00
2a0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
2b0: 04 08 02 00 00 00 00 00 04 08 00 00 00 00 00 00
2c0: 04 08 02 00 00 00 00 00 04 08 00 00 00 00 00 00
2d0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
2e0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
2f0: 04 08 10 00 00 00 00 00 04 08 00 00 00 00 00 00
300: 40 14 00 00 00 00 00 00 40 14 48 12 00 00 00 00
310: 40 14 48 10 02 00 00 00 40 14 48 10 02 00 00 00
320: 40 14 48 21 00 00 00 00 40 14 0a 00 00 00 00 00
330: 40 14 08 00 00 00 00 00 40 14 08 00 00 00 00 00
340: 40 14 08 00 00 00 00 00 40 14 00 00 00 00 00 00
350: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
360: 40 14 00 00 00 00 00 00 40 14 00 00 00 00 00 00
370: 40 14 01 00 00 00 00 00 40 14 80 00 00 00 00 00
380: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
390: 04 08 00 20 81 00 00 00 04 08 00 20 c1 00 00 00
3a0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
3b0: 04 08 02 00 00 00 00 00 04 08 02 00 00 00 00 00
3c0: 04 08 02 00 00 00 00 00 04 08 00 00 00 00 00 00
3d0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
3e0: 04 08 00 00 00 00 00 00 04 08 00 00 00 00 00 00
3f0: 04 08 10 00 00 00 00 00 04 08 00 00 00 00 00 00