Browse code

Minor cleanup

neauoire authored on 11/02/2021 18:34:31
Showing 1 changed files
... ...
@@ -17,9 +17,11 @@ WITH REGARD TO THIS SOFTWARE.
17 17
 
18 18
 /* clang-format off */
19 19
 
20
-void   setflag(Uint8 *st, char flag, int b) { if(b) *st |= flag; else *st &= (~flag); }
21
-int    getflag(Uint8 *st, char flag) { return *st & flag; }
20
+void   setflag(Uint8 *a, char flag, int b) { if(b) *a |= flag; else *a &= (~flag); }
21
+int    getflag(Uint8 *a, char flag) { return *a & flag; }
22
+void   mempoke8(Memory *m, Uint16 a, Uint8 b) { m->dat[a] = b; }
22 23
 Uint8  mempeek8(Memory *m, Uint16 a) { return m->dat[a]; }
24
+void   mempoke16(Memory *m, Uint16 a, Uint16 b) { mempoke8(m, a, b >> 8); mempoke8(m, a + 1, b); }
23 25
 Uint16 mempeek16(Memory *m, Uint16 a) { return (mempeek8(m, a) << 8) + mempeek8(m, a + 1); }
24 26
 void   push8(St8 *s, Uint8 a) { s->dat[s->ptr++] = a; }
25 27
 Uint8  pop8(St8 *s) { return s->dat[--s->ptr]; }
... ...
@@ -34,8 +36,8 @@ void op_lix(Uxn *u) { u->literal += u->ram.dat[u->ram.ptr++]; }
34 36
 void op_nop(Uxn *u) { printf("NOP"); (void)u; }
35 37
 void op_ior(Uxn *u) { Device *dev = &u->dev[mempeek8(&u->ram, u->devr)]; if(dev) push8(&u->wst, dev->read(dev, pop8(&u->wst))); }
36 38
 void op_iow(Uxn *u) { Uint8 a = pop8(&u->wst); Device *dev = &u->dev[mempeek8(&u->ram, u->devw)]; if(dev) dev->write(dev, a); }
37
-void op_ldr(Uxn *u) { Uint16 a = pop16(&u->wst); push8(&u->wst, u->ram.dat[a]); }
38
-void op_str(Uxn *u) { Uint16 a = pop16(&u->wst); Uint8 b = pop8(&u->wst); u->ram.dat[a] = b; }
39
+void op_ldr(Uxn *u) { Uint16 a = pop16(&u->wst); push8(&u->wst, mempeek8(&u->ram, a)); }
40
+void op_str(Uxn *u) { Uint16 a = pop16(&u->wst); Uint8 b = pop8(&u->wst); mempoke8(&u->ram, a, b); }
39 41
 /* Logic */
40 42
 void op_jmp(Uxn *u) { u->ram.ptr = pop16(&u->wst); }
41 43
 void op_jsr(Uxn *u) { push16(&u->rst, u->ram.ptr); u->ram.ptr = pop16(&u->wst); }
... ...
@@ -61,8 +63,8 @@ void op_lth(Uxn *u) { Uint8 a = pop8(&u->wst), b = pop8(&u->wst); push8(&u->wst,
61 63
 /* --- */
62 64
 void op_ior16(Uxn *u) { Uint8 a = pop8(&u->wst); Device *dev = &u->dev[mempeek8(&u->ram, u->devr)]; if(dev) push16(&u->wst, (dev->read(dev, a) << 8) + dev->read(dev, a + 1)); }
63 65
 void op_iow16(Uxn *u) { Uint8 a = pop8(&u->wst); Uint8 b = pop8(&u->wst); Device *dev = &u->dev[mempeek8(&u->ram, u->devw)]; if(dev) { dev->write(dev, b); dev->write(dev, a); } }
64
-void op_ldr16(Uxn *u) { Uint16 a = pop16(&u->wst); push16(&u->wst, (u->ram.dat[a] << 8) + u->ram.dat[a + 1]); }
65
-void op_str16(Uxn *u) { Uint16 a = pop16(&u->wst); Uint16 b = pop16(&u->wst); u->ram.dat[a] = b >> 8; u->ram.dat[a + 1] = b & 0xff; }
66
+void op_ldr16(Uxn *u) { Uint16 a = pop16(&u->wst); push16(&u->wst, mempeek16(&u->ram, a)); }
67
+void op_str16(Uxn *u) { Uint16 a = pop16(&u->wst); Uint16 b = pop16(&u->wst); mempoke16(&u->ram, a, b); }
66 68
 /* Stack(16-bits) */
67 69
 void op_pop16(Uxn *u) { pop16(&u->wst); }
68 70
 void op_dup16(Uxn *u) { push16(&u->wst, peek16(&u->wst, 2)); }