commit dc7b6b0
Devine Lu Linvega
·
2025-08-13 20:10:37 +0000 UTC
parent 674acb3
Datetime optimization
4 files changed,
+207,
-199
+156,
-155
1@@ -1,166 +1,167 @@
2-a002 7e80 0637 a00b 4d60 02e9 a001 2580
3-1037 a003 1716 1c20 000a a002 4b60 0955
4+a002 7e80 0637 a00b 6660 02e5 a001 2580
5+1037 a003 1716 1c20 000a a002 4b60 096e
6 a001 0f17 00a0 0217 160b 2000 1d80 1216
7-a02f 0081 80fb 1389 2000 0ca0 0b15 a000
8-00a0 026f 6008 f903 1100 a001 5040 ffbf
9+a02f 0081 80fb 1389 2000 0ca0 0b2e a000
10+00a0 026f 6009 1203 1100 a001 5040 ffbf
11 a002 1716 0b20 0007 8012 1660 000b 00a0
12-0000 6000 3260 0153 00a0 5f30 8180 fb13
13-8920 000c a00b 15a0 0030 a002 6f60 08c0
14+0000 6000 3260 0152 00a0 5f30 8180 fb13
15+8920 000c a00b 2ea0 0030 a002 6f60 08d9
16 0311 6c94 0620 0003 0222 6c60 ffdb 2140
17 fff1 8019 176c 2180 a837 a000 0180 aa37
18-6002 06a0 0000 800f 1620 001c a001 cc80
19-ac37 80a3 1620 0012 9d20 000c a00b 1ea0
20-0000 a002 7460 0878 226c 2180 0060 01e2
21-40ff d3a0 0aa4 6008 9c80 2060 ffb4 a000
22-3060 0891 a00a ae60 088b a001 0026 a001
23-0039 6008 8fa0 0ab3 6008 7aa0 0030 80a8
24-37a0 0100 3980 aa37 a07d 5380 ae37 a002
25+6002 02a0 0000 800f 1620 001c a001 cc80
26+ac37 80a3 1620 0012 9d20 000c a00b 37a0
27+0000 a002 7460 0891 226c 2180 0060 01de
28+40ff d3a0 0abd 6008 b580 2060 ffb4 a000
29+3060 08aa a00a c760 08a4 a001 0026 a001
30+0039 6008 a8a0 0acc 6008 93a0 0030 80a8
31+37a0 0100 3980 aa37 a07d 6c80 ae37 a002
32 7960 ff6f a080 0f16 0920 002e a000 3080
33-a837 a007 8034 a034 53a0 0002 80aa 3726
34-80ae 37a0 0003 3826 6007 d9a4 3980 aa37
35+a837 a007 9c34 a034 6ca0 0002 80aa 3726
36+80ae 37a0 0003 3826 6007 f2a4 3980 aa37
37 2480 ae37 aa20 ffe1 2222 6c75 7361 6765
38 3a20 6472 6966 626c 696d 2e72 6f6d 2069
39 6e2e 7461 6c20 6f75 742e 726f 6d0a 0050
40 6174 6800 4669 6c65 002e 7379 6d00 0044
41 7269 6662 6c69 6d0a 5578 6e74 616c 2041
42 7373 656d 626c 6572 0a42 7920 4465 7669
43-6e65 204c 7520 4c69 6e76 6567 610a 3234
44-204a 756e 2032 3032 3500 0080 4732 a003
45-4e29 2000 0ca0 0b45 a00b 4aa0 0b05 6007
46-6f80 3132 a003 6f29 2000 0ca0 0b45 a00b
47-4aa0 0af3 6007 5980 0f16 2000 1060 05ad
48-800f 1620 0007 a080 0f17 4004 9c6c 9020
49-0002 226c a003 252c a003 2580 f733 6ca0
50-034e 80f0 33a0 0136 136c a003 6f80 e533
51-a000 4c13 6c60 06de 2000 0340 0614 6001
52-e020 05f9 9060 00f5 a11d 2000 0e22 2660
53-0320 a11d 2003 6722 4001 6021 342c c000
54-3426 a029 0029 2000 03c0 0159 a028 0029
55-2000 0141 cfc0 e753 2000 0340 ff9a 6cc0
56-00b4 a07d 0029 2000 11c0 0159 cf20 000a
57-8000 6003 0f22 4240 ff7e cf80 0008 2000
58-0ba0 0060 6002 ee80 2060 02f8 34a0 7b00
59-2920 0001 41c0 c853 6ca0 6018 13a0 0060
60-116c 0680 200a 2000 0a02 a000 6060 ff3e
61-40ff e6a0 0060 8106 808f 0b20 0009 a00b
62-15a0 0af9 6006 6580 eb13 316c a000 9081
63-0680 bf0b 2000 09a0 0b15 a00a e560 064c
64-80eb 1331 6ca0 90e5 1394 802f 0820 0009
65-9460 ffd8 2194 20ff f022 80d1 1280 0313
66-6c21 a000 c813 802f 60ff c194 0620 0006
67-0222 a000 906c 60ff b321 40ff ee0f a004
68-d494 cf08 2000 0ca0 0003 3894 20ff f222
69-a0ff ff42 6c22 6c22 4001 c222 40fe c060
70-0070 6003 a440 055f 6000 6760 039b 4005
71-5260 005e 2660 ff8d 4002 6360 ffa3 4002
72-5d80 8060 0504 6000 4960 03fa 4004 fb80
73-8060 04f6 6000 3b60 03de 4004 ed80 a060
74-04e8 6000 2d60 03d8 4004 db60 0024 8020
75-4004 cd60 001c 8040 4004 c580 6040 04c0
76-6000 0f40 047d 6000 0940 0466 6000 0340
77-0180 2194 8020 0a20 0009 a00b 1ea0 0af9
78-4005 696c 7c04 4f24 0458 4004 6126 046b
79-2504 bc28 044b 2c04 715f 0476 2e04 7f2d
80-0484 3b04 8d3d 0492 3f04 9b21 04a3 2304
81-b022 04b6 7d04 477e 0196 5b04 455d 0445
82-0026 6000 0e80 0009 0f26 a005 eb60 04fe
83-4f1d 6ce0 1f00 a005 8ba4 a000 0324 6004
84-f420 000f 41a0 0003 3894 20ff ec22 2262
85-8000 6c22 5cb4 a04c 4928 8070 1f0f 5da0
86-0003 3894 8021 0b20 002e 9480 3209 2000
87-05c0 2040 001d 9480 7209 2000 05c0 4040
88-0011 9480 6b09 2000 05c0 8040 0005 2242
89-8000 6c5d 2140 ffcb 224f 6c4c 4954 494e
90-4350 4f50 4e49 5053 5750 524f 5444 5550
91-4f56 5245 5155 4e45 5147 5448 4c54 484a
92-4d50 4a43 4e4a 5352 5354 484c 445a 5354
93-5a4c 4452 5354 524c 4441 5354 4144 4549
94-4445 4f41 4444 5355 424d 554c 4449 5641
95-4e44 4f52 4145 4f52 5346 5442 524b 0080
96-0081 80fb 1306 a01b 53a1 80fa 3315 0680
97-041f 6003 b604 8018 33a0 061f 6c80 e732
98-a000 0139 9460 ffe6 6000 b380 d933 6cce
99-bb2e 2e00 6003 df20 0001 6c94 60fd fe21
100-1d20 0005 60fe da0c 6ca0 0b1e a00a f940
101-03fa 60ff df26 6000 1921 1d20 0076 2660
102-00b2 211d 2000 6d60 002b 8000 6000 3540
103-fcb8 2f80 2f32 a00b 53a8 2000 1126 ef60
104-03ac 2000 0d60 039c 6003 9940 ffeb 22a0
105-ffff 2362 6c94 0620 0003 0222 6c60 0004
106-2140 fff1 a00b 53a1 26a0 1b53 2b20 0009
107-a00b 15a0 0aec 6003 9380 e933 156c 60fc
108-f860 0360 9406 2000 0402 2222 6c60 fcf2
109-2140 fff0 22a0 0b33 a00a f340 036e 2660
110-0032 a11d 2000 0922 8002 6002 d240 007f
111-a121 1480 021c 2000 1060 02c3 2735 2121
112-9480 021d 0505 1522 6c22 22a0 0b33 a00a
113-e540 0338 2fa0 0780 34a0 3453 a820 0012
114-26a0 0003 38ef 6003 0520 000a 6000 c040
115-ffea 22a0 ffff 2362 6c34 2fa0 0780 34a0
116-3453 2660 00a9 34ef 242b 2000 0760 009f
117-aa20 ffee 2362 6c26 60ff b9a1 1d20 000d
118-2280 2c32 2780 01a0 ffff 6000 0223 6c04
119-6000 1c60 0019 6000 1660 feb8 2660 fef2
120-211d 20ff 8594 6000 0621 9420 fff7 14a0
121-3453 a126 a07c 532b 2000 09a0 0b15 a00a
122-dd60 02a8 80e9 3315 6ca0 0780 34a0 3453
123-a820 0036 a121 1480 011c 2000 27b4 a001
124-0028 2000 1f26 a000 0338 9480 4119 801a
125-0b20 000f a00a bc60 02ab 2660 02a7 800a
126-60f9 bf22 6000 0840 ffc6 2222 40f9 f4a0
127-0003 3840 022e 26a0 0080 3802 2000 016c
128-a00b 3da0 0ae5 4002 4360 020a 2000 0640
129-01e6 8037 3394 807b 0920 0004 2260 fddf
130-9480 2f09 2000 0360 fbf7 9480 2609 2000
131-0360 fbed 60ff 20a1 21af 1480 021c 2000
132-1026 6001 7a60 0012 6000 0fa0 0000 6000
133-09d4 4f80 011d 6f15 346c 0460 0000 a01c
134-53a1 26a0 3453 2b20 0009 a00b 15a0 0ac8
135-6001 d980 e933 156c a008 d160 ff94 036c
136-a008 d940 ff8c a008 e060 ff86 a11d 2000
137-0422 8000 6c60 0127 6000 0e60 ff58 036c
138-a008 ef60 ff6c 6001 1621 2139 6c80 af32
139-a01c 53a8 2000 1326 a009 0835 a6a0 0004
140-3834 2ea0 0006 3840 ffe9 2222 6cb4 6000
141-f6a1 2134 34a1 1d20 0006 a00b 1e60 0037
142-6c60 ffe9 2303 4000 a160 ffe1 2340 0096
143-60ff da24 3460 ffb1 6000 0f03 4000 8b60
144-ffcb 2434 60ff a240 007c 26a0 0080 3802
145-2000 016c a00b 3da0 0000 2660 fe1b a000
146-0338 60fa e021 2134 a000 0338 a00a d340
147-011e 9460 0054 2194 20ff f722 6c60 fbf3
148-4000 4760 00c7 8002 0980 501f 8080 1d60
149-0038 6000 c120 001e 6000 b206 8002 0920
150-0008 0260 0092 0340 0020 8004 0920 0006
151-6000 8540 0010 22a0 0b1e a00a fe40 00cc
152-6000 0760 ff1a 0460 0000 0660 0029 a07c
153-5338 1520 0001 6c60 0025 0720 0009 a00b
154-26a0 0b0d 6000 a526 a001 eb34 2a20 0002
155-226c a001 eb35 6ca0 0100 a180 fa33 6c80
156-f632 6c60 fff9 3880 ee33 6c80 0f1c 800a
157-8b20 0005 1980 6118 6c02 8030 186c 9480
158-3019 0680 090a 0c6c 8027 1906 800a 1980
159-050a 0c6c 0280 ff6c e000 00c0 407f 60ff
160-ddc0 000f 7821 9420 fff1 226f 6ca6 6000
161-1324 2139 036c 2660 ffc4 0120 0002 146c
162-2140 fff3 9420 0002 216c 2140 fff6 a660
163-fff2 2439 242f 2738 24a8 2000 0c94 d44f
164-0920 0005 2161 40ff f062 286c a000 6024
165-800f 1620 002b 6000 2c80 2060 f744 2460
166-0023 a00a c560 001d 6000 1aa0 0aae 6000
167-14a0 0090 6000 0e80 0a60 f726 a001 0f17
168-6c22 2222 6c94 0620 0003 0222 6c60 f712
169-2140 fff1 e0ff 00a0 000a bbaf 3a39 6f41
170-9d20 fff3 2203 8030 1860 f6f6 4758 cf20
171-fff3 626c 4173 7365 6d62 6c65 6400 2069
172-6e20 0020 6279 7465 732e 0a00 2d2d 2055
173-6e75 7365 643a 2000 5265 6665 7265 6e63
174-6573 0052 6566 6572 656e 6365 0053 796d
175-626f 6c73 0053 796d 626f 6c00 4d61 6372
176-6f73 004d 6163 726f 004e 616d 6500 4e75
177-6d62 6572 0043 6f6d 6d65 6e74 0057 7269
178-7469 6e67 0065 7863 6565 6465 6400 696e
179-7661 6c69 6400 696e 207a 6572 6f2d 7061
180-6765 0064 7570 6c69 6361 7465 0074 6f6f
181-2066 6172 006f 7065 6e00 2e2e 0052 4553
182-4554 ff
183+6e65 204c 7520 4c69 6e76 6567 610a 3920
184+4175 6720 3230 3235 0000 8047 32a0 034a
185+2920 000c a00b 5ea0 0b63 a00b 1e60 0789
186+8031 32a0 036b 2920 000c a00b 5ea0 0b63
187+a00b 0c60 0773 800f 1620 0010 6005 c180
188+0f16 2000 07a0 800f 1740 04b9 6c90 2000
189+0222 6ca0 0324 2ca0 0324 80f7 336c a003
190+4a80 f033 a001 3313 6ca0 036b 80e5 33a0
191+0049 136c 6006 f520 062b 6001 e320 0610
192+9060 00f5 a11d 2000 0e22 2660 0343 a11d
193+2003 8a22 4001 6021 342c c000 3426 a029
194+0029 2000 03c0 0159 a028 0029 2000 0141
195+cfc0 e753 8000 0820 ff9d 6cc0 00b4 a07d
196+0029 2000 11c0 0159 cf20 000a 8000 6003
197+3222 4240 ff81 cf80 0008 2000 0ba0 0060
198+6003 1180 2060 031b 34a0 7b00 2920 0001
199+41c0 c853 6ca0 6018 13a0 0060 116c 0680
200+200a 2000 0a02 a000 6060 ff41 40ff e6a0
201+0060 8106 808f 0b20 0009 a00b 2ea0 0b12
202+6006 8280 eb13 316c a000 9081 0680 bf0b
203+2000 09a0 0b2e a00a fe60 0669 80eb 1331
204+6ca0 90e5 1394 802f 0820 0009 9460 ffd8
205+2194 20ff f022 80d1 1280 0313 6c21 a000
206+c813 802f 60ff c194 0620 0006 0222 a000
207+906c 60ff b321 40ff ee0f a004 d094 cf08
208+2000 0ca0 0003 3894 20ff f222 a0ff ff42
209+6c22 6c22 4001 c922 40fe c360 0070 6003
210+c440 0579 6000 6760 03bb 4005 6c60 005e
211+2660 ff8d 4002 8660 ffa3 4002 8080 8060
212+051e 6000 4960 0411 4005 1580 8060 0510
213+6000 3b60 03f5 4005 0780 a060 0502 6000
214+2d60 03ef 4004 f560 0024 8020 4004 e760
215+001c 8040 4004 df80 6040 04da 6000 0f40
216+0494 6000 0940 047d 6000 0340 01a3 2194
217+8020 0a20 0009 a00b 37a0 0b12 4005 866c
218+7c04 4b24 0454 4004 5d26 0467 2c04 6d5f
219+0472 2e04 7b2d 0480 3b04 893d 048e 2104
220+9f3f 0497 2304 ac22 04b2 7d04 437e 0196
221+2804 4729 0441 5b04 415d 0441 2504 b800
222+2660 000e 8000 090f 26a0 05ea 6005 184f
223+1d6c e01f 00a0 058a a4a0 0003 2460 050e
224+2000 0f41 a000 0338 9420 ffec 2222 6280
225+006c 225c b4a0 4c49 2880 701f 0f5d a000
226+0338 9480 210b 2000 2e94 8032 0920 0005
227+c020 4000 1d94 8072 0920 0005 c040 4000
228+1194 806b 0920 0005 c080 4000 0522 4280
229+006c 5d21 40ff cb22 4f6c 4c49 5449 4e43
230+504f 504e 4950 5357 5052 4f54 4455 504f
231+5652 4551 554e 4551 4754 484c 5448 4a4d
232+504a 434e 4a53 5253 5448 4c44 5a53 545a
233+4c44 5253 5452 4c44 4153 5441 4445 4944
234+454f 4144 4453 5542 4d55 4c44 4956 414e
235+444f 5241 454f 5253 4654 4252 4b00 2280
236+0081 80fb 1306 a01b 6ca1 80fa 3315 0680
237+041f 6003 cc04 6003 c880 1833 a006 226c
238+80e4 32a0 0001 3994 60ff e360 00cf 80d6
239+336c cebb 2e2e 0060 03f2 2000 1594 60fd
240+f821 1d20 000c 9480 7b08 2000 0560 fed0
241+0c6c a00b 37a0 0b12 4004 0a94 807b 0820
242+ff9c 9480 2f08 20fd b494 8026 0820 fdad
243+6c60 ffc3 2660 0019 211d 2000 7626 6000
244+b221 1d20 006d 6000 2b80 0060 0035 40fc
245+982f 802f 32a0 0b6c a820 0011 26ef 6003
246+a620 000d 6003 9660 0393 40ff eb22 a0ff
247+ff23 626c 9406 2000 0302 226c 6000 0421
248+40ff f1a0 0b6c a126 a01b 6c2b 2000 09a0
249+0b2e a00b 0560 038d 80e9 3315 6c60 fcd5
250+6003 5a94 0620 0004 0222 226c 60fc cf21
251+40ff f022 a00b 4ca0 0b0c 4003 6826 6000
252+32a1 1d20 0009 2280 0260 02c9 4000 7ca1
253+2114 8002 1c20 0010 6002 ba27 3521 2194
254+8002 1d05 0515 226c 2222 a00b 4ca0 0afe
255+4003 322f a007 9c34 a034 6c26 a000 0338
256+ef60 0303 2000 0b60 00c1 aa20 ffed 22a0
257+ffff 2362 6c34 2fa0 079c 34a0 346c 2660
258+00a9 34ef 242b 2000 0760 009f aa20 ffee
259+2362 6c26 60ff bca1 1d20 000d 2280 2c32
260+2780 01a0 ffff 6000 0223 6c04 6000 1c60
261+0019 6000 1660 fe9f 2660 fef5 211d 20ff
262+8894 6000 0621 9420 fff7 14a0 346c a126
263+a07c 6c2b 2000 09a0 0b2e a00a f660 02a5
264+80e9 3315 6ca0 079c 34a0 346c a820 0036
265+a121 1480 011c 2000 27b4 a001 0028 2000
266+1f26 a000 0338 9480 4119 801a 0b20 000f
267+a00a d560 02a8 2660 02a4 800a 60f9 a322
268+6000 0840 ffc6 2222 40f9 d8a0 0003 3840
269+022b 26a0 0080 3802 2000 016c a00b 56a0
270+0afe 4002 4060 0204 2001 e360 fe2d 60ff
271+02a1 1d20 0009 a00b 37a0 0aec 6002 2634
272+6c80 1b33 60fe 1460 ff29 a121 af14 8002
273+1c20 0010 2660 017d 6000 1260 000f a000
274+0060 0009 d44f 8001 1d6f 1534 6c04 6000
275+00a0 1c6c a126 a034 6c2b 2000 09a0 0b2e
276+a00a e160 01df 80e9 3315 6ca0 08e4 60ff
277+b003 6ca0 08ec 40ff a8a0 08f3 60ff a2a1
278+1d20 0004 2280 006c 6001 2a60 000e 60ff
279+6103 6ca0 0902 60ff 8860 0119 2121 396c
280+80af 32a0 1c6c a820 0013 26a0 091b 35a6
281+a000 0438 342e a000 0638 40ff e922 226c
282+b460 00f9 a121 3434 a11d 2000 06a0 0b37
283+6000 376c 60ff e923 0340 00a4 60ff e123
284+4000 9960 ffda 2434 60ff b160 000f 0340
285+008e 60ff cb24 3460 ffa2 4000 7f26 a000
286+8038 0220 0001 6ca0 0b56 a000 0026 60fe
287+24a0 0003 3860 fac9 2121 34a0 0003 38a0
288+0aec 4001 2494 6000 5721 9420 fff7 226c
289+60fb df40 004a 6000 ca80 0209 8050 1f80
290+801d 6000 3b60 00c4 8000 0820 001e 6000
291+b206 8002 0920 0008 0260 0092 0340 0020
292+8004 0920 0006 6000 8540 0010 22a0 0b37
293+a00b 1740 00cf 6000 0760 ff17 0460 0000
294+0660 0029 a07c 6c38 1520 0001 6c60 0025
295+0720 0009 a00b 3fa0 0b26 6000 a826 a001
296+eb34 2a20 0002 226c a001 eb35 6ca0 0100
297+a180 fa33 6c80 f632 6c60 fff9 3880 ee33
298+6c80 0f1c 800a 8b20 0005 1980 6118 6c02
299+8030 186c 9480 3019 0680 090a 0c6c 8027
300+1906 800a 1980 050a 0c6c 0280 ff6c e000
301+00c0 407f 60ff ddc0 000f 7821 9420 fff1
302+226f 6ca6 6000 1624 2139 036c 2660 ffc4
303+0120 0005 1480 0008 6c21 40ff f094 2000
304+0221 6c21 40ff f6a6 60ff f224 3924 2f27
305+3824 a820 000c 94d4 4f09 2000 0521 6140
306+fff0 6228 6ca0 0060 2480 0f16 2000 2b60
307+002c 8020 60f7 2b24 6000 23a0 0ade 6000
308+1d60 001a a00a c760 0014 a000 9060 000e
309+800a 60f7 0da0 010f 176c 2222 226c 9406
310+2000 0302 226c 60f6 f921 40ff f1e0 ff00
311+a000 0abb af3a 396f 419d 20ff f322 0380
312+3018 60f6 dd47 58cf 20ff f362 6c41 7373
313+656d 626c 6564 0020 696e 2000 2062 7974
314+6573 2e0a 002d 2d20 556e 7573 6564 3a20
315+0052 6566 6572 656e 6365 7300 5265 6665
316+7265 6e63 6500 5379 6d62 6f6c 7300 5379
317+6d62 6f6c 004d 6163 726f 7300 4d61 6372
318+6f00 4e61 6d65 004e 756d 6265 7200 436f
319+6d6d 656e 7400 5772 6974 696e 6700 6578
320+6365 6564 6564 0069 6e76 616c 6964 0069
321+6e20 7a65 726f 2d70 6167 6500 6475 706c
322+6963 6174 6500 746f 6f20 6661 7200 6f70
323+656e 002e 2e00 5245 5345 54
M
makefile
+5,
-5
1@@ -33,13 +33,13 @@ format:
2 @ clang-format -i src/uxncli.c src/uxn11.c
3
4 grab:
5- @ cp ../drifblim/etc/drifblim.rom.txt etc/utils/drifblim.rom.txt
6- @ cp ../uxn-utils/cli/opctest/src/opctest.tal etc/tests/opctest.tal
7+ cp ../drifblim/etc/drifblim.rom.txt etc/utils/drifblim.rom.txt
8+ cp ../uxn-utils/cli/opctest/src/opctest.tal etc/tests/opctest.tal
9
10 archive:
11- @ cp src/uxncli.c ../oscean/etc/uxncli.c.txt
12- @ cp src/uxn11.c ../oscean/etc/uxn11.c.txt
13- @ cp doc/man/uxntal.7 ../oscean/etc/uxntal.7.txt
14+ cp src/uxncli.c ../oscean/etc/uxncli.c.txt
15+ cp src/uxn11.c ../oscean/etc/uxn11.c.txt
16+ cp doc/man/uxntal.7 ../oscean/etc/uxntal.7.txt
17
18 clean:
19 @ rm -fr bin
+23,
-19
1@@ -911,6 +911,18 @@ static unsigned int rL1, rL2;
2
3 #include <time.h>
4
5+time_t datetime_seconds;
6+struct tm *datetime_t, datetime_zt = {0};
7+
8+void
9+datetime_update(void)
10+{
11+ datetime_seconds = time(NULL);
12+ datetime_t = localtime(&datetime_seconds);
13+ if(datetime_t == NULL)
14+ datetime_t = &datetime_zt;
15+}
16+
17 /*
18 @|Core -------------------------------------------------------------- */
19
20@@ -937,25 +949,17 @@ emu_dei(const Uint8 port)
21 case 0x2b: return rY;
22 case 0x2c: return rA >> 8;
23 case 0x2d: return rA;
24- }
25- if((port & 0xf0) == 0xc0) {
26- time_t seconds = time(NULL);
27- struct tm zt = {0};
28- struct tm *t = localtime(&seconds);
29- if(t == NULL) t = &zt;
30- switch(port) {
31- case 0xc0: return (t->tm_year + 1900) >> 8;
32- case 0xc1: return (t->tm_year + 1900);
33- case 0xc2: return t->tm_mon;
34- case 0xc3: return t->tm_mday;
35- case 0xc4: return t->tm_hour;
36- case 0xc5: return t->tm_min;
37- case 0xc6: return t->tm_sec;
38- case 0xc7: return t->tm_wday;
39- case 0xc8: return t->tm_yday >> 8;
40- case 0xc9: return t->tm_yday;
41- case 0xca: return t->tm_isdst;
42- }
43+ case 0xc0: datetime_update(); return (datetime_t->tm_year + 1900) >> 8;
44+ case 0xc1: datetime_update(); return (datetime_t->tm_year + 1900);
45+ case 0xc2: datetime_update(); return datetime_t->tm_mon;
46+ case 0xc3: datetime_update(); return datetime_t->tm_mday;
47+ case 0xc4: datetime_update(); return datetime_t->tm_hour;
48+ case 0xc5: datetime_update(); return datetime_t->tm_min;
49+ case 0xc6: datetime_update(); return datetime_t->tm_sec;
50+ case 0xc7: datetime_update(); return datetime_t->tm_wday;
51+ case 0xc8: datetime_update(); return datetime_t->tm_yday >> 8;
52+ case 0xc9: datetime_update(); return datetime_t->tm_yday;
53+ case 0xca: datetime_update(); return datetime_t->tm_isdst;
54 }
55 return dev[port];
56 }
+23,
-20
1@@ -617,6 +617,18 @@ static unsigned int rL1, rL2;
2
3 #include <time.h>
4
5+time_t datetime_seconds;
6+struct tm *datetime_t, datetime_zt = {0};
7+
8+void
9+datetime_update(void)
10+{
11+ datetime_seconds = time(NULL);
12+ datetime_t = localtime(&datetime_seconds);
13+ if(datetime_t == NULL)
14+ datetime_t = &datetime_zt;
15+}
16+
17 /*
18 @|Core -------------------------------------------------------------- */
19
20@@ -630,26 +642,17 @@ emu_dei(const Uint8 port)
21 /* Console */
22 case CMD_LIVE:
23 case CMD_EXIT: check_child(); break;
24- }
25- /* Datetime */
26- if((port & 0xf0) == 0xc0) {
27- time_t seconds = time(NULL);
28- struct tm zt = {0};
29- struct tm *t = localtime(&seconds);
30- if(t == NULL) t = &zt;
31- switch(port) {
32- case 0xc0: return (t->tm_year + 1900) >> 8;
33- case 0xc1: return (t->tm_year + 1900);
34- case 0xc2: return t->tm_mon;
35- case 0xc3: return t->tm_mday;
36- case 0xc4: return t->tm_hour;
37- case 0xc5: return t->tm_min;
38- case 0xc6: return t->tm_sec;
39- case 0xc7: return t->tm_wday;
40- case 0xc8: return t->tm_yday >> 8;
41- case 0xc9: return t->tm_yday;
42- case 0xca: return t->tm_isdst;
43- }
44+ case 0xc0: datetime_update(); return (datetime_t->tm_year + 1900) >> 8;
45+ case 0xc1: datetime_update(); return (datetime_t->tm_year + 1900);
46+ case 0xc2: datetime_update(); return datetime_t->tm_mon;
47+ case 0xc3: datetime_update(); return datetime_t->tm_mday;
48+ case 0xc4: datetime_update(); return datetime_t->tm_hour;
49+ case 0xc5: datetime_update(); return datetime_t->tm_min;
50+ case 0xc6: datetime_update(); return datetime_t->tm_sec;
51+ case 0xc7: datetime_update(); return datetime_t->tm_wday;
52+ case 0xc8: datetime_update(); return datetime_t->tm_yday >> 8;
53+ case 0xc9: datetime_update(); return datetime_t->tm_yday;
54+ case 0xca: datetime_update(); return datetime_t->tm_isdst;
55 }
56 return dev[port];
57 }