summaryrefslogtreecommitdiff
path: root/cpu.c
diff options
context:
space:
mode:
authorvin <git@vineetk.net>2024-06-04 16:16:11 +0530
committervin <git@vineetk.net>2024-06-04 16:16:48 +0530
commit36a8eefd000ab79a4e1226db4ce0b61fb4454807 (patch)
tree39b6c0fa4847a0d57cdca720c9bcf6f12c19e136 /cpu.c
parent7245191e86e4c8da9fe18788e3daae9b30005812 (diff)
shorten addressing mode enum names
Diffstat (limited to 'cpu.c')
-rw-r--r--cpu.c58
1 files changed, 28 insertions, 30 deletions
diff --git a/cpu.c b/cpu.c
index 770206d..a8c6ceb 100644
--- a/cpu.c
+++ b/cpu.c
@@ -26,20 +26,18 @@ struct registers {
26struct registers regs; 26struct registers regs;
27 27
28enum addressing_mode { 28enum addressing_mode {
29 AM_ACCUMULATOR, 29 AM_ACC,
30 AM_IMMEDIATE, 30 AM_IMM,
31 AM_ZERO_PAGE, 31 AM_ZP,
32 AM_ZERO_PAGE_X, 32 AM_ZP_X,
33 AM_ZERO_PAGE_Y, 33 AM_ZP_Y,
34 AM_RELATIVE, 34 AM_REL,
35 AM_ABSOLUTE, 35 AM_ABS,
36 AM_ABSOLUTE_X, 36 AM_ABS_X,
37 AM_ABSOLUTE_Y, 37 AM_ABS_Y,
38 AM_INDIRECT, 38 AM_IND,
39 AM_INDIRECT_X, 39 AM_IND_X,
40 AM_INDIRECT_Y, 40 AM_IND_Y,
41 AM_INDEXED_INDIRECT,
42 AM_INDIRECT_INDEXED,
43}; 41};
44 42
45/* 64K address space, 16bit words */ 43/* 64K address space, 16bit words */
@@ -98,28 +96,28 @@ lda(enum addressing_mode mode)
98 arg = peek(regs.pc++); 96 arg = peek(regs.pc++);
99 97
100 switch (mode) { 98 switch (mode) {
101 case AM_IMMEDIATE: /* $A9 */ 99 case AM_IMM: /* $A9 */
102 val = arg; 100 val = arg;
103 break; 101 break;
104 case AM_ZERO_PAGE: /* $A5 */ 102 case AM_ZP: /* $A5 */
105 val = peek(arg % 256); 103 val = peek(arg % 256);
106 break; 104 break;
107 case AM_ABSOLUTE: /* $AD */ 105 case AM_ABS: /* $AD */
108 val = peek(arg); 106 val = peek(arg);
109 break; 107 break;
110 case AM_ZERO_PAGE_X: /* $B5 */ 108 case AM_ZP_X: /* $B5 */
111 val = peek((arg + regs.x) % 256); 109 val = peek((arg + regs.x) % 256);
112 break; 110 break;
113 case AM_ABSOLUTE_X: /* $BD */ 111 case AM_ABS_X: /* $BD */
114 val = peek(arg + regs.x); 112 val = peek(arg + regs.x);
115 break; 113 break;
116 case AM_ABSOLUTE_Y: /* $B9 */ 114 case AM_ABS_Y: /* $B9 */
117 val = peek(arg + regs.y); 115 val = peek(arg + regs.y);
118 break; 116 break;
119 case AM_INDIRECT_X: /* $A1 */ 117 case AM_IND_X: /* $A1 */
120 val = peek(peek((arg + regs.x) % 256) + peek((arg + regs.x + 1) % 256) * 256); 118 val = peek(peek((arg + regs.x) % 256) + peek((arg + regs.x + 1) % 256) * 256);
121 break; 119 break;
122 case AM_INDIRECT_Y: /* $B1 */ 120 case AM_IND_Y: /* $B1 */
123 val = peek(peek(arg) + peek((arg + 1) % 256) * 256 + regs.y); 121 val = peek(peek(arg) + peek((arg + 1) % 256) * 256 + regs.y);
124 break; 122 break;
125 default: 123 default:
@@ -149,31 +147,31 @@ interpret(void)
149 brk(); 147 brk();
150 return; 148 return;
151 case 0xa1: 149 case 0xa1:
152 lda(AM_INDIRECT_X); 150 lda(AM_IND_X);
153 break; 151 break;
154 case 0xa5: 152 case 0xa5:
155 lda(AM_ZERO_PAGE); 153 lda(AM_ZP);
156 break; 154 break;
157 case 0xa9: 155 case 0xa9:
158 lda(AM_IMMEDIATE); 156 lda(AM_IMM);
159 break; 157 break;
160 case 0xaa: 158 case 0xaa:
161 tax(); 159 tax();
162 break; 160 break;
163 case 0xad: 161 case 0xad:
164 lda(AM_ABSOLUTE); 162 lda(AM_ABS);
165 break; 163 break;
166 case 0xb1: 164 case 0xb1:
167 lda(AM_INDIRECT_Y); 165 lda(AM_IND_Y);
168 break; 166 break;
169 case 0xb5: 167 case 0xb5:
170 lda(AM_ZERO_PAGE_X); 168 lda(AM_ZP_X);
171 break; 169 break;
172 case 0xb9: 170 case 0xb9:
173 lda(AM_ABSOLUTE_Y); 171 lda(AM_ABS_Y);
174 break; 172 break;
175 case 0xbd: 173 case 0xbd:
176 lda(AM_ABSOLUTE_X); 174 lda(AM_ABS_X);
177 break; 175 break;
178 case 0xe8: 176 case 0xe8:
179 inx(); 177 inx();