commit a26538c
Devine Lu Linvega
·
2026-01-21 20:34:49 +0000 UTC
parent 693c7c9
Removed file_success for poke2
1 files changed,
+29,
-34
+29,
-34
1@@ -44,7 +44,9 @@ static unsigned int uxn_eval(Uint16 pc);
2
3 #define CLAMP(v, a, b) { if(v < a) v = a; else if(v >= b) v = b; }
4 #define TWOS(v) (v & 0x8000 ? (int)v - 0x10000 : (int)v)
5-#define PEEK2(d) (*(d) << 8 | (d)[1])
6+
7+static inline Uint16 peek2(const Uint8 *d) { return ((Uint16)d[0] << 8) | d[1]; }
8+static inline void poke2(Uint8 *d, Uint16 v) { d[0] = v >> 8, d[1] = v; }
9
10 /* clang-format on */
11
12@@ -102,18 +104,17 @@ system_reboot(const unsigned int soft)
13 static void
14 system_deo_expansion(void)
15 {
16- const Uint16 exp = PEEK2(dev + 2);
17+ const Uint16 exp = peek2(dev + 2);
18 Uint8 *aptr = ram + exp;
19- Uint16 length = PEEK2(aptr + 1);
20- unsigned int bank = PEEK2(aptr + 3) * 0x10000;
21- unsigned int addr = PEEK2(aptr + 5);
22+ Uint16 length = peek2(aptr + 1);
23+ unsigned int bank = peek2(aptr + 3) * 0x10000;
24+ unsigned int addr = peek2(aptr + 5);
25 if(ram[exp] == 0x0) {
26- unsigned int dst_value = ram[exp + 7];
27 if(bank < BANKS_CAP)
28- memset(ram + bank + addr, dst_value, length);
29+ memset(ram + bank + addr, ram[exp + 7], length);
30 } else if(ram[exp] == 1 || ram[exp] == 2) {
31- unsigned int dst_bank = PEEK2(aptr + 7) * 0x10000;
32- unsigned int dst_addr = PEEK2(aptr + 9);
33+ unsigned int dst_bank = peek2(aptr + 7) * 0x10000;
34+ unsigned int dst_addr = peek2(aptr + 9);
35 if(bank < BANKS_CAP && dst_bank < BANKS_CAP)
36 memmove(ram + dst_bank + dst_addr, ram + bank + addr, length);
37 } else
38@@ -212,7 +213,7 @@ start_fork_pipe(void)
39 {
40 pid_t pid;
41 pid_t parent_pid = getpid();
42- int addr = PEEK2(&dev[CMD_ADDR]);
43+ int addr = peek2(&dev[CMD_ADDR]);
44 fflush(stdout);
45 if(child_mode & 0x08) {
46 dev[CMD_EXIT] = dev[CMD_LIVE] = 0x00;
47@@ -329,7 +330,7 @@ console_close(void)
48
49 static Uint8 console_dei_childlive(void) { check_child(); return dev[CMD_LIVE]; }
50 static Uint8 console_dei_childexit(void) { check_child(); return dev[CMD_EXIT]; }
51-static void console_deo_vector(void) { console_vector = PEEK2(&dev[0x10]); }
52+static void console_deo_vector(void) { console_vector = peek2(&dev[0x10]); }
53 static void console_deo_stdout(void) { fputc(dev[0x18], stdout), fflush(stdout); }
54 static void console_deo_stderr(void) { fputc(dev[0x19], stderr), fflush(stderr); }
55 static void console_deo_hb(void) { fprintf(stderr, "%02x", dev[0x1a]); }
56@@ -561,9 +562,9 @@ static Uint8 screen_dei_ryhb(void) { return rY >> 8; }
57 static Uint8 screen_dei_rylb(void) { return rY; }
58 static Uint8 screen_dei_rahb(void) { return rA >> 8; }
59 static Uint8 screen_dei_ralb(void) { return rA; }
60-static void screen_deo_vector(void) { screen_vector = PEEK2(&dev[0x20]); }
61-static void screen_deo_width(void) { screen_resize(PEEK2(&dev[0x22]) & 0xfff, screen_height & 0xfff); }
62-static void screen_deo_height(void) { screen_resize(screen_width & 0xfff, PEEK2(&dev[0x24]) & 0xfff); }
63+static void screen_deo_vector(void) { screen_vector = peek2(&dev[0x20]); }
64+static void screen_deo_width(void) { screen_resize(peek2(&dev[0x22]) & 0xfff, screen_height & 0xfff); }
65+static void screen_deo_height(void) { screen_resize(screen_width & 0xfff, peek2(&dev[0x24]) & 0xfff); }
66 static void screen_deo_auto(void) { rMX = dev[0x26] & 0x1, rMY = dev[0x26] & 0x2, rMA = dev[0x26] & 0x4, rML = dev[0x26] >> 4, rDX = rMX << 3, rDY = rMY << 2; }
67 static void screen_deo_x(void) { rX = (dev[0x28] << 8) | dev[0x29], rX = TWOS(rX); }
68 static void screen_deo_y(void) { rY = (dev[0x2a] << 8) | dev[0x2b], rY = TWOS(rY); }
69@@ -607,7 +608,7 @@ controller_key(Uint8 key)
70 void
71 controller_deo_vector(void)
72 {
73- controller_vector = PEEK2(&dev[0x80]);
74+ controller_vector = peek2(&dev[0x80]);
75 }
76
77 /*
78@@ -650,7 +651,7 @@ mouse_scroll(Uint16 x, Uint16 y)
79 void
80 mouse_deo_vector(void)
81 {
82- mouse_vector = PEEK2(&dev[0x90]);
83+ mouse_vector = peek2(&dev[0x90]);
84 }
85
86 /*
87@@ -887,26 +888,20 @@ file_delete(unsigned int id)
88 return !unlink(ufs[id].filepath);
89 }
90
91-static void
92-file_success(unsigned int port, unsigned int value)
93-{
94- dev[port] = value >> 8, dev[port + 1] = value;
95-}
96-
97 /* clang-format off */
98
99-static void filea_deo_vector(void) { rL1 = PEEK2(&dev[0xaa]); }
100-static void filea_deo_stat(void) { file_success(0xa2, file_stat(0, PEEK2(&dev[0xa4]), rL1)); }
101-static void filea_deo_delete(void) { file_success(0xa2, file_delete(0)); }
102-static void filea_deo_name(void) { file_success(0xa2, file_init(0, PEEK2(&dev[0xa8]))); }
103-static void filea_deo_read(void) { file_success(0xa2, file_read(0, PEEK2(&dev[0xac]), rL1)); }
104-static void filea_deo_write(void) { file_success(0xa2, file_write(0, PEEK2(&dev[0xae]), rL1, dev[0xa7])); }
105-static void fileb_deo_vector(void) { rL2 = PEEK2(&dev[0xba]); }
106-static void fileb_deo_stat(void) { file_success(0xb2, file_stat(1, PEEK2(&dev[0xb4]), rL2)); }
107-static void fileb_deo_delete(void) { file_success(0xb2, file_delete(1)); }
108-static void fileb_deo_name(void) { file_success(0xb2, file_init(1, PEEK2(&dev[0xb8]))); }
109-static void fileb_deo_read(void) { file_success(0xb2, file_read(1, PEEK2(&dev[0xbc]), rL2)); }
110-static void fileb_deo_write(void) { file_success(0xb2, file_write(1, PEEK2(&dev[0xbe]), rL2, dev[0xb7])); }
111+static void filea_deo_vector(void) { rL1 = peek2(&dev[0xaa]); }
112+static void filea_deo_stat(void) { poke2(&dev[0xa2], file_stat(0, peek2(&dev[0xa4]), rL1)); }
113+static void filea_deo_delete(void) { poke2(&dev[0xa2], file_delete(0)); }
114+static void filea_deo_name(void) { poke2(&dev[0xa2], file_init(0, peek2(&dev[0xa8]))); }
115+static void filea_deo_read(void) { poke2(&dev[0xa2], file_read(0, peek2(&dev[0xac]), rL1)); }
116+static void filea_deo_write(void) { poke2(&dev[0xa2], file_write(0, peek2(&dev[0xae]), rL1, dev[0xa7])); }
117+static void fileb_deo_vector(void) { rL2 = peek2(&dev[0xba]); }
118+static void fileb_deo_stat(void) { poke2(&dev[0xb2], file_stat(1, peek2(&dev[0xb4]), rL2)); }
119+static void fileb_deo_delete(void) { poke2(&dev[0xb2], file_delete(1)); }
120+static void fileb_deo_name(void) { poke2(&dev[0xb2], file_init(1, peek2(&dev[0xb8]))); }
121+static void fileb_deo_read(void) { poke2(&dev[0xb2], file_read(1, peek2(&dev[0xbc]), rL2)); }
122+static void fileb_deo_write(void) { poke2(&dev[0xb2], file_write(1, peek2(&dev[0xbe]), rL2, dev[0xb7])); }
123
124 /* clang-format on */
125