diff options
| author | vin <git@vineetk.net> | 2024-06-04 16:16:11 +0530 |
|---|---|---|
| committer | vin <git@vineetk.net> | 2024-06-04 16:16:48 +0530 |
| commit | 36a8eefd000ab79a4e1226db4ce0b61fb4454807 (patch) | |
| tree | 39b6c0fa4847a0d57cdca720c9bcf6f12c19e136 /cpu.c | |
| parent | 7245191e86e4c8da9fe18788e3daae9b30005812 (diff) | |
shorten addressing mode enum names
Diffstat (limited to 'cpu.c')
| -rw-r--r-- | cpu.c | 58 |
1 files changed, 28 insertions, 30 deletions
| @@ -26,20 +26,18 @@ struct registers { | |||
| 26 | struct registers regs; | 26 | struct registers regs; |
| 27 | 27 | ||
| 28 | enum addressing_mode { | 28 | enum 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(); |
