M src/main.c => src/main.c +0 -7
@@ 3,13 3,6 @@
#include "devices/apu.h"
#include "devices/ppu.h"
-/* clang-format off */
-
-#define POKE16(d, v) { (d)[0] = (v) >> 8; (d)[1] = (v); }
-#define PEEK16(d) ((d)[0] << 8 | (d)[1])
-
-/* clang-format on */
-
#define RAM_PAGES 0x10
#define POLYPHONY 4
#define BOOT_ROM_FILENAME "boot.rom"
M src/uxn.c => src/uxn.c +4 -5
@@ 27,8 27,7 @@ WITH REGARD TO THIS SOFTWARE.
#define POP(o) { if(m2) { POP16(o) } else { POP8(o) } }
#define POKE(x, y) { if(m2) { t = (y); u->ram[(x)] = t >> 8; u->ram[(x) + 1] = t; } else { u->ram[(x)] = (y); } }
-#define PEEK16(o, x) { o = (u->ram[(x)] << 8) | u->ram[(x) + 1]; }
-#define PEEK(o, x) { if(m2) PEEK16(o, x) else o = u->ram[(x)]; }
+#define PEEK(o, x) { if(m2) { o = PEEK16(u->ram + x); } else o = u->ram[(x)]; }
#define DEVR(o, x) { o = u->dei(u, x); if(m2) o = (o << 8) | u->dei(u, (x) + 1); }
#define DEVW(x, y) { if(m2) { u->deo(u, (x), (y) >> 8); u->deo(u, (x) + 1, (y)); } else { u->deo(u, x, (y)); } }
@@ 55,12 54,12 @@ uxn_eval(Uxn *u, Uint16 pc)
/* Immediate */
case -0x0: /* BRK */ return 1;
case -0x1: /* JCI */ POP8(b) if(!b) { pc += 2; break; }
- case -0x2: /* JMI */ PEEK16(a, pc) pc += a + 2; break;
- case -0x3: /* JSI */ s = u->rst; PUSH16(pc + 2) PEEK16(a, pc) pc += a + 2; break;
+ case -0x2: /* JMI */ pc += PEEK16(u->ram + pc) + 2; break;
+ case -0x3: /* JSI */ s = u->rst; PUSH16(pc + 2) pc += PEEK16(u->ram + pc) + 2; break;
case -0x4: /* LIT */
case -0x6: /* LITr */ a = u->ram[pc++]; PUSH8(a) break;
case -0x5: /* LIT2 */
- case -0x7: /* LIT2r */ PEEK16(a, pc) PUSH16(a) pc += 2; break;
+ case -0x7: /* LIT2r */ PUSH16(PEEK16(u->ram + pc)) pc += 2; break;
/* ALU */
case 0x01: /* INC */ POP(a) PUSH(a + 1) break;
case 0x02: /* POP */ POP(a) break;
M src/uxn.h => src/uxn.h +7 -0
@@ 11,6 11,13 @@ WITH REGARD TO THIS SOFTWARE.
#define PAGE_PROGRAM 0x0100
+/* clang-format off */
+
+#define POKE16(d, v) { (d)[0] = (v) >> 8; (d)[1] = (v); }
+#define PEEK16(d) ((d)[0] << 8 | (d)[1])
+
+/* clang-format on */
+
typedef unsigned char Uint8;
typedef signed char Sint8;
typedef unsigned short Uint16;