commit 8970ba7
Devine Lu Linvega
·
2026-06-14 16:10:59 +0000 UTC
parent 2cff48e
Dei only calls once per short
1 files changed,
+20,
-22
+20,
-22
1@@ -532,12 +532,9 @@ screen_deo_sprite(void)
2
3 /* clang-format off */
4
5-static Uint8 screen_dei_rxhb(void) { return rX >> 8; }
6-static Uint8 screen_dei_rxlb(void) { return rX; }
7-static Uint8 screen_dei_ryhb(void) { return rY >> 8; }
8-static Uint8 screen_dei_rylb(void) { return rY; }
9-static Uint8 screen_dei_rahb(void) { return rA >> 8; }
10-static Uint8 screen_dei_ralb(void) { return rA; }
11+static Uint8 screen_dei_rx(void) { dev[0x29] = rX; return rX >> 8; }
12+static Uint8 screen_dei_ry(void) { dev[0x2b] = rY; return rY >> 8; }
13+static Uint8 screen_dei_ra(void) { dev[0x2d] = rA; return rA >> 8; }
14 static void screen_deo_vector(void) { screen_vector = peek2(&dev[0x20]); }
15 static void screen_deo_width(void) { screen_resize(peek2(&dev[0x22]) & 0xfff, screen_height & 0xfff); }
16 static void screen_deo_height(void) { screen_resize(screen_width & 0xfff, peek2(&dev[0x24]) & 0xfff); }
17@@ -901,16 +898,22 @@ datetime_update(void)
18
19 /* clang-format off */
20
21-static Uint8 datetime_dei_yhb(void) { datetime_update(); return (datetime_t->tm_year + 1900) >> 8; }
22-static Uint8 datetime_dei_ylb(void) { datetime_update(); return (datetime_t->tm_year + 1900); }
23+static Uint8 datetime_dei_y(void) {
24+ datetime_update();
25+ const int v = (datetime_t->tm_year + 1900);
26+ dev[0xc1] = v;
27+ return v >> 8; }
28 static Uint8 datetime_dei_mon(void) { datetime_update(); return datetime_t->tm_mon; }
29 static Uint8 datetime_dei_day(void) { datetime_update(); return datetime_t->tm_mday; }
30 static Uint8 datetime_dei_hou(void) { datetime_update(); return datetime_t->tm_hour; }
31 static Uint8 datetime_dei_min(void) { datetime_update(); return datetime_t->tm_min; }
32 static Uint8 datetime_dei_sec(void) { datetime_update(); return datetime_t->tm_sec; }
33 static Uint8 datetime_dei_wday(void) { datetime_update(); return datetime_t->tm_wday; }
34-static Uint8 datetime_dei_ydayhb(void) { datetime_update(); return datetime_t->tm_yday >> 8; }
35-static Uint8 datetime_dei_ydaylb(void) { datetime_update(); return datetime_t->tm_yday; }
36+static Uint8 datetime_dei_yday(void) {
37+ datetime_update();
38+ const int v = datetime_t->tm_yday;
39+ dev[0xc9] = v;
40+ return v >> 8; }
41 static Uint8 datetime_dei_dst(void) { datetime_update(); return datetime_t->tm_isdst; }
42
43 /* clang-format on */
44@@ -923,22 +926,17 @@ static const dei_handler dei_handlers[256] = {
45 [0x05] = system_dei_rst,
46 [0x15] = console_dei_childlive,
47 [0x16] = console_dei_childexit,
48- [0x28] = screen_dei_rxhb,
49- [0x29] = screen_dei_rxlb,
50- [0x2a] = screen_dei_ryhb,
51- [0x2b] = screen_dei_rylb,
52- [0x2c] = screen_dei_rahb,
53- [0x2d] = screen_dei_ralb,
54- [0xc0] = datetime_dei_yhb,
55- [0xc1] = datetime_dei_ylb,
56+ [0x28] = screen_dei_rx,
57+ [0x2a] = screen_dei_ry,
58+ [0x2c] = screen_dei_ra,
59+ [0xc0] = datetime_dei_y,
60 [0xc2] = datetime_dei_mon,
61 [0xc3] = datetime_dei_day,
62 [0xc4] = datetime_dei_hou,
63 [0xc5] = datetime_dei_min,
64 [0xc6] = datetime_dei_sec,
65 [0xc7] = datetime_dei_wday,
66- [0xc8] = datetime_dei_ydayhb,
67- [0xc9] = datetime_dei_ydaylb,
68+ [0xc8] = datetime_dei_yday,
69 [0xca] = datetime_dei_dst,
70 };
71
72@@ -1013,7 +1011,7 @@ emu_deo(const Uint8 port, const Uint8 value)
73 #define Pux(s,v) if(d) Pu1(s,(v)>>8) Pu1(s,v)
74 #define Lda(s,o) Pu1(r,ram[o]) if(d) Pu1(r,ram[(s)(o+1)])
75 #define Sta(s,o,u) if(d) ram[o]=u>>8, ram[(s)(o+1)]=u; else ram[o]=u;
76-#define Dei Pu1(r,emu_dei(x)) if(d) Pu1(r,emu_dei(x+1))
77+#define Dei Pu1(r,emu_dei(x)) if(d) Pu1(r,dev[(x+1)&0xff])
78 #define Deo if(d) emu_deo(x,y>>8), emu_deo(x+1,y); else emu_deo(x,y);
79
80 #define MUTE (void)x;(void)y;(void)z;(void)r;(void)d;
81@@ -1333,7 +1331,7 @@ main(int argc, char **argv)
82 {
83 int i = 1;
84 if(argc == 2 && argv[1][0] == '-' && argv[1][1] == 'v')
85- return !fprintf(stdout, "%s - Varvara Emulator(80K), 13 Jun 2026.\n", argv[0]);
86+ return !fprintf(stdout, "%s - Varvara Emulator(80K), 14 Jun 2026.\n", argv[0]);
87 else if(argc == 1)
88 return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
89 else if(!system_boot(argv[i++], argc > 2))