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))