commit 240da66
Devine Lu Linvega
·
2026-01-07 20:09:29 +0000 UTC
parent c49be24
Grouped port functions
1 files changed,
+66,
-296
+66,
-296
1@@ -9,7 +9,7 @@
2 #include <poll.h>
3
4 /*
5-Copyright (c) 2021-2026 Devine Lu Linvega, Andrew Alderwick,
6+Copyright (c) 2021-2026 Devine Lu Linvega, Andrew Alderwick,
7 Andrew Richards, Eiríkr Åsheim, Sigrid Solveig Haflínudóttir
8
9 Permission to use, copy, modify, and distribute this software for any
10@@ -211,35 +211,15 @@ system_deo_expansion(void)
11 fprintf(stderr, "Unknown command: %s\n", &ram[exp]);
12 }
13
14-Uint8
15-system_dei_wst(void)
16-{
17- return ptr[0];
18-}
19-
20-Uint8
21-system_dei_rst(void)
22-{
23- return ptr[1];
24-}
25+/* clang-format off */
26
27-void
28-system_deo_wst(void)
29-{
30- ptr[0] = dev[4];
31-}
32+Uint8 system_dei_wst(void) { return ptr[0]; }
33+Uint8 system_dei_rst(void) { return ptr[1]; }
34+void system_deo_wst(void) { ptr[0] = dev[4]; }
35+void system_deo_rst(void) { ptr[0] = dev[4]; }
36+void system_deo_print(void) { system_print("WST", 0), system_print("RST", 1); }
37
38-void
39-system_deo_rst(void)
40-{
41- ptr[0] = dev[4];
42-}
43-
44-void
45-system_deo_print(void)
46-{
47- system_print("WST", 0), system_print("RST", 1);
48-}
49+/* clang-format on */
50
51 /*
52 @|Console ----------------------------------------------------------- */
53@@ -436,49 +416,17 @@ console_close(void)
54 kill_child();
55 }
56
57-Uint8
58-console_dei_childlive(void)
59-{
60- check_child();
61- return dev[CMD_LIVE];
62-}
63-
64-Uint8
65-console_dei_childexit(void)
66-{
67- check_child();
68- return dev[CMD_EXIT];
69-}
70-
71-void
72-console_deo_vector(void)
73-{
74- console_vector = PEEK2(&dev[0x10]);
75-}
76-
77-void
78-console_deo_stdout(void)
79-{
80- fputc(dev[0x18], stdout), fflush(stdout);
81-}
82-
83-void
84-console_deo_stderr(void)
85-{
86- fputc(dev[0x19], stderr), fflush(stderr);
87-}
88+/* clang-format off */
89
90-void
91-console_deo_hb(void)
92-{
93- fprintf(stderr, "%02x", dev[0x1a]);
94-}
95+Uint8 console_dei_childlive(void) { check_child(); return dev[CMD_LIVE]; }
96+Uint8 console_dei_childexit(void) { check_child(); return dev[CMD_EXIT]; }
97+void console_deo_vector(void) { console_vector = PEEK2(&dev[0x10]); }
98+void console_deo_stdout(void) { fputc(dev[0x18], stdout), fflush(stdout); }
99+void console_deo_stderr(void) { fputc(dev[0x19], stderr), fflush(stderr); }
100+void console_deo_hb(void) { fprintf(stderr, "%02x", dev[0x1a]); }
101+void console_deo_lb(void) { fprintf(stderr, "%02x", dev[0x1b]); }
102
103-void
104-console_deo_lb(void)
105-{
106- fprintf(stderr, "%02x", dev[0x1b]);
107-}
108+/* clang-format on */
109
110 /*
111 @|Screen ------------------------------------------------------------ */
112@@ -651,88 +599,10 @@ screen_deo_pixel(void)
113 }
114 }
115
116-Uint8
117-screen_dei_rxhb(void)
118-{
119- return rX >> 8;
120-}
121-
122-Uint8
123-screen_dei_rxlb(void)
124-{
125- return rX;
126-}
127-
128-Uint8
129-screen_dei_ryhb(void)
130-{
131- return rY >> 8;
132-}
133-
134-Uint8
135-screen_dei_rylb(void)
136-{
137- return rY;
138-}
139-
140-Uint8
141-screen_dei_rahb(void)
142-{
143- return rA >> 8;
144-}
145-
146-Uint8
147-screen_dei_ralb(void)
148-{
149- return rA;
150-}
151-
152-void
153-screen_deo_vector(void)
154-{
155- screen_vector = PEEK2(&dev[0x20]);
156-}
157-
158-void
159-screen_deo_width(void)
160-{
161- screen_resize(PEEK2(&dev[0x22]) & 0xfff, screen_height & 0xfff);
162-}
163-
164-void
165-screen_deo_height(void)
166-{
167- screen_resize(screen_width & 0xfff, PEEK2(&dev[0x24]) & 0xfff);
168-}
169-
170-void
171-screen_deo_auto(void)
172-{
173- rMX = dev[0x26] & 0x1, rMY = dev[0x26] & 0x2, rMA = dev[0x26] & 0x4, rML = dev[0x26] >> 4, rDX = rMX << 3, rDY = rMY << 2;
174-}
175-
176-void
177-screen_deo_x(void)
178-{
179- rX = (dev[0x28] << 8) | dev[0x29], rX = TWOS(rX);
180-}
181-
182-void
183-screen_deo_y(void)
184-{
185- rY = (dev[0x2a] << 8) | dev[0x2b], rY = TWOS(rY);
186-}
187-
188-void
189-screen_deo_addr(void)
190-{
191- rA = (dev[0x2c] << 8) | dev[0x2d];
192-}
193-
194 /* clang-format off */
195
196-#define PUT_PIXEL(n, op) if(op | color) dst[n] = (dst[n] & layer_mask) | table[color];
197-#define GET_COLOR(depth) const int color = depth ? (((ch1 >> qx) & 1) | ((ch2 >> qx) & 2)) : (ch1 >> qx) & 1;
198+#define PUT_PIXEL(n, op) if(op | color) dst[n] = (dst[n] & layer_mask) | table[color];
199+#define GET_COLOR(depth) const int color = depth ? (((ch1 >> qx) & 1) | ((ch2 >> qx) & 2)) : (ch1 >> qx) & 1;
200
201 #define PUT_PIXELS(n,op,depth,c1,c2) {\
202 int qx = qfx; const int ch1 = c1, ch2 = c2;\
203@@ -816,6 +686,24 @@ screen_deo_sprite(void)
204 if(rMY) rY += rDY * fy;
205 }
206
207+/* clang-format off */
208+
209+Uint8 screen_dei_rxhb(void) { return rX >> 8; }
210+Uint8 screen_dei_rxlb(void) { return rX; }
211+Uint8 screen_dei_ryhb(void) { return rY >> 8; }
212+Uint8 screen_dei_rylb(void) { return rY; }
213+Uint8 screen_dei_rahb(void) { return rA >> 8; }
214+Uint8 screen_dei_ralb(void) { return rA; }
215+void screen_deo_vector(void) { screen_vector = PEEK2(&dev[0x20]); }
216+void screen_deo_width(void) { screen_resize(PEEK2(&dev[0x22]) & 0xfff, screen_height & 0xfff); }
217+void screen_deo_height(void) { screen_resize(screen_width & 0xfff, PEEK2(&dev[0x24]) & 0xfff); }
218+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; }
219+void screen_deo_x(void) { rX = (dev[0x28] << 8) | dev[0x29], rX = TWOS(rX); }
220+void screen_deo_y(void) { rY = (dev[0x2a] << 8) | dev[0x2b], rY = TWOS(rY); }
221+void screen_deo_addr(void) { rA = (dev[0x2c] << 8) | dev[0x2d]; }
222+
223+/* clang-format on */
224+
225 /*
226 @|Controller -------------------------------------------------------- */
227
228@@ -1137,77 +1025,22 @@ file_success(unsigned int port, unsigned int value)
229 dev[port] = value >> 8, dev[port + 1] = value;
230 }
231
232-void
233-filea_deo_vector(void)
234-{
235- rL1 = PEEK2(&dev[0xaa]);
236-}
237-
238-void
239-filea_deo_stat(void)
240-{
241- file_success(0xa2, file_stat(0, PEEK2(&dev[0xa4]), rL1));
242-}
243-
244-void
245-filea_deo_delete(void)
246-{
247- file_success(0xa2, file_delete(0));
248-}
249-
250-void
251-filea_deo_name(void)
252-{
253- file_success(0xa2, file_init(0, PEEK2(&dev[0xa8])));
254-}
255-
256-void
257-filea_deo_read(void)
258-{
259- file_success(0xa2, file_read(0, PEEK2(&dev[0xac]), rL1));
260-}
261-
262-void
263-filea_deo_write(void)
264-{
265- file_success(0xa2, file_write(0, PEEK2(&dev[0xae]), rL1, dev[0xa7]));
266-}
267-
268-void
269-fileb_deo_vector(void)
270-{
271- rL2 = PEEK2(&dev[0xba]);
272-}
273-
274-void
275-fileb_deo_stat(void)
276-{
277- file_success(0xb2, file_stat(0, PEEK2(&dev[0xb4]), rL2));
278-}
279-
280-void
281-fileb_deo_delete(void)
282-{
283- file_success(0xb2, file_delete(0));
284-}
285-
286-void
287-fileb_deo_name(void)
288-{
289- file_success(0xb2, file_init(0, PEEK2(&dev[0xb8])));
290-}
291+/* clang-format off */
292
293-void
294-fileb_deo_read(void)
295-{
296- file_success(0xb2, file_read(0, PEEK2(&dev[0xbc]), rL2));
297-}
298+void filea_deo_vector(void) { rL1 = PEEK2(&dev[0xaa]); }
299+void filea_deo_stat(void) { file_success(0xa2, file_stat(0, PEEK2(&dev[0xa4]), rL1)); }
300+void filea_deo_delete(void) { file_success(0xa2, file_delete(0)); }
301+void filea_deo_name(void) { file_success(0xa2, file_init(0, PEEK2(&dev[0xa8]))); }
302+void filea_deo_read(void) { file_success(0xa2, file_read(0, PEEK2(&dev[0xac]), rL1)); }
303+void filea_deo_write(void) { file_success(0xa2, file_write(0, PEEK2(&dev[0xae]), rL1, dev[0xa7])); }
304+void fileb_deo_vector(void) { rL2 = PEEK2(&dev[0xba]); }
305+void fileb_deo_stat(void) { file_success(0xb2, file_stat(0, PEEK2(&dev[0xb4]), rL2)); }
306+void fileb_deo_delete(void) { file_success(0xb2, file_delete(0)); }
307+void fileb_deo_name(void) { file_success(0xb2, file_init(0, PEEK2(&dev[0xb8]))); }
308+void fileb_deo_read(void) { file_success(0xb2, file_read(0, PEEK2(&dev[0xbc]), rL2)); }
309+void fileb_deo_write(void) { file_success(0xb2, file_write(0, PEEK2(&dev[0xbe]), rL2, dev[0xb7])); }
310
311-void
312-fileb_deo_write(void)
313-{
314- file_success(0xb2, file_write(0, PEEK2(&dev[0xbe]), rL2, dev[0xb7]));
315-}
316+/* clang-format on */
317
318 /*
319 @|Datetime ---------------------------------------------------------- */
320@@ -1226,82 +1059,21 @@ datetime_update(void)
321 datetime_t = &datetime_zt;
322 }
323
324-Uint8
325-datetime_dei_yhb(void)
326-{
327- datetime_update();
328- return (datetime_t->tm_year + 1900) >> 8;
329-}
330-
331-Uint8
332-datetime_dei_ylb(void)
333-{
334- datetime_update();
335- return (datetime_t->tm_year + 1900);
336-}
337-
338-Uint8
339-datetime_dei_mon(void)
340-{
341- datetime_update();
342- return datetime_t->tm_mon;
343-}
344-
345-Uint8
346-datetime_dei_day(void)
347-{
348- datetime_update();
349- return datetime_t->tm_mday;
350-}
351-
352-Uint8
353-datetime_dei_hou(void)
354-{
355- datetime_update();
356- return datetime_t->tm_hour;
357-}
358-
359-Uint8
360-datetime_dei_min(void)
361-{
362- datetime_update();
363- return datetime_t->tm_min;
364-}
365-
366-Uint8
367-datetime_dei_sec(void)
368-{
369- datetime_update();
370- return datetime_t->tm_sec;
371-}
372-
373-Uint8
374-datetime_dei_wday(void)
375-{
376- datetime_update();
377- return datetime_t->tm_wday;
378-}
379-
380-Uint8
381-datetime_dei_ydayhb(void)
382-{
383- datetime_update();
384- return datetime_t->tm_yday >> 8;
385-}
386+/* clang-format off */
387
388-Uint8
389-datetime_dei_ydaylb(void)
390-{
391- datetime_update();
392- return datetime_t->tm_yday;
393-}
394+Uint8 datetime_dei_yhb(void) { datetime_update(); return (datetime_t->tm_year + 1900) >> 8; }
395+Uint8 datetime_dei_ylb(void) { datetime_update(); return (datetime_t->tm_year + 1900); }
396+Uint8 datetime_dei_mon(void) { datetime_update(); return datetime_t->tm_mon; }
397+Uint8 datetime_dei_day(void) { datetime_update(); return datetime_t->tm_mday; }
398+Uint8 datetime_dei_hou(void) { datetime_update(); return datetime_t->tm_hour; }
399+Uint8 datetime_dei_min(void) { datetime_update(); return datetime_t->tm_min; }
400+Uint8 datetime_dei_sec(void) { datetime_update(); return datetime_t->tm_sec; }
401+Uint8 datetime_dei_wday(void) { datetime_update(); return datetime_t->tm_wday; }
402+Uint8 datetime_dei_ydayhb(void) { datetime_update(); return datetime_t->tm_yday >> 8; }
403+Uint8 datetime_dei_ydaylb(void) { datetime_update(); return datetime_t->tm_yday; }
404+Uint8 datetime_dei_dst(void) { datetime_update(); return datetime_t->tm_isdst; }
405
406-Uint8
407-datetime_dei_dst(void)
408-{
409- datetime_update();
410- return datetime_t->tm_isdst;
411-}
412+/* clang-format on */
413
414 /*
415 @|Core -------------------------------------------------------------- */
416@@ -1381,8 +1153,7 @@ emu_connect(void)
417 Uint8
418 emu_dei(const Uint8 port)
419 {
420- if(dei_handlers[port])
421- return dei_handlers[port]();
422+ if(dei_handlers[port]) return dei_handlers[port]();
423 return dev[port];
424 }
425
426@@ -1390,8 +1161,7 @@ void
427 emu_deo(const Uint8 port, const Uint8 value)
428 {
429 dev[port] = value;
430- if(deo_handlers[port])
431- deo_handlers[port]();
432+ if(deo_handlers[port]) deo_handlers[port]();
433 }
434
435 void