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