commit 187de4f
Devine Lu Linvega
·
2026-06-16 18:55:54 +0000 UTC
parent 381c892
Implemented 79K support
3 files changed,
+171,
-137
+52,
-14
1@@ -17,6 +17,8 @@
2
3 @on-reset ( -> )
4 ;meta #06 DEO2
5+ #0180 .Screen/width DEO2
6+ #0180 .Screen/height DEO2
7 ( | theme )
8 #0f0f .System/r DEO2
9 #00ff .System/g DEO2
10@@ -34,7 +36,7 @@
11 @meta 00 "Perifs 0a
12 ( details ) "A 20 "Peripherals 20 "Test 0a
13 ( author ) "By 20 "Hundred 20 "Rabbits 0a
14- ( date ) "6 20 "Jun 20 "2026 00
15+ ( date ) "13 20 "Jun 20 "2026 00
16 ( . ) 02
17 ( - ) 56 =Varvara/version
18 ( - ) 83 =appicon
19@@ -198,16 +200,18 @@
20 @smile/<next> ( -- )
21 [ LIT &ptr $1 ] INCk ,&ptr STR
22 [ LIT2 00 -Screen/auto ] DEO
23- #09 u8/mod
24+ #0a u8/mod
25 ( | draw )
26 #0020 .Screen/x DEO2
27 .Screen/height DEI2 #0018 SUB2 .Screen/y DEO2
28 DUP hex/<draw-byte>
29+ /<clear>
30 #00 SWP DUP ADD ;&lut ADD2 LDA2 JMP2
31
32 @smile/<draw-all> ( -- )
33 ;&lut-end ;&lut
34 &>l
35+ /<clear>
36 LDA2k JSR2 INC2 INC2 GTH2k ?&>l
37 POP2 POP2 JMP2r
38
39@@ -216,7 +220,19 @@
40 .Screen/height DEI2 #0020 SUB2 .Screen/y DEO2
41 JMP2r
42
43-@smile/<draw-a> ( Draw 1bpp four times by moving x,y )
44+@smile/<clear> ( -- )
45+ [ LIT2 11 -Screen/auto ] DEO
46+ ( | bg )
47+ /<set-pos>
48+ ;hash .Screen/addr DEO2
49+ [ LIT2 03 -Screen/sprite ] DEOk DEO
50+ ( | fg )
51+ /<set-pos>
52+ ;fill .Screen/addr DEO2
53+ [ LIT2 40 -Screen/sprite ] DEOk DEO
54+ JMP2r
55+
56+@smile/<draw-0> ( Draw 1bpp four times by moving x,y )
57 /<set-pos>
58 [ LIT2 00 -Screen/auto ] DEO
59 ( a ) ;&hor-a .Screen/addr DEO2
60@@ -232,21 +248,21 @@
61 [ LIT2 03 -Screen/sprite ] DEO
62 JMP2r
63
64-@smile/<draw-b> ( Draw 1bpp two times using addr-y )
65+@smile/<draw-1> ( Draw 1bpp two times using addr-y )
66 /<set-pos>
67 [ LIT2 16 -Screen/auto ] DEO
68 ;&hor .Screen/addr DEO2
69 [ LIT2 03 -Screen/sprite ] DEOk DEO
70 JMP2r
71
72-@smile/<draw-c> ( Draw 1bpp two times using addr-x )
73+@smile/<draw-2> ( Draw 1bpp two times using addr-x )
74 /<set-pos>
75 [ LIT2 15 -Screen/auto ] DEO
76 ;&ver .Screen/addr DEO2
77 [ LIT2 03 -Screen/sprite ] DEOk DEO
78 JMP2r
79
80-@smile/<draw-d> ( Draw 1bpp-flipx two times using addr-y )
81+@smile/<draw-3> ( Draw 1bpp-flipx two times using addr-y )
82 /<set-pos>
83 #0008 #0000 Screen/<mod>
84 [ LIT2 16 -Screen/auto ] DEO
85@@ -254,7 +270,7 @@
86 [ LIT2 13 -Screen/sprite ] DEOk DEO
87 JMP2r
88
89-@smile/<draw-e> ( Draw 1bpp-flipy two times using addr-x )
90+@smile/<draw-4> ( Draw 1bpp-flipy two times using addr-x )
91 /<set-pos>
92 #0000 #0008 Screen/<mod>
93 [ LIT2 15 -Screen/auto ] DEO
94@@ -262,14 +278,14 @@
95 [ LIT2 23 -Screen/sprite ] DEOk DEO
96 JMP2r
97
98-@smile/<draw-f> ( Draw 2bpp two times using addr-x )
99+@smile/<draw-5> ( Draw 2bpp two times using addr-x )
100 /<set-pos>
101 [ LIT2 15 -Screen/auto ] DEO
102 ;&2bpp .Screen/addr DEO2
103 [ LIT2 81 -Screen/sprite ] DEOk DEO
104 JMP2r
105
106-@smile/<draw-g> ( Draw 1bpp, once for the outline, once for the face )
107+@smile/<draw-6> ( Draw 1bpp, once for the outline, once for the face )
108 /<set-pos>
109 [ LIT2 16 -Screen/auto ] DEO
110 ;&outline .Screen/addr DEO2
111@@ -279,7 +295,7 @@
112 [ LIT2 0f -Screen/sprite ] DEOk DEO
113 JMP2r
114
115-@smile/<draw-h> ( Draw 1bpp, once for the outline, once for the face in fg )
116+@smile/<draw-7> ( Draw 1bpp, once for the outline, once for the face in fg )
117 /<set-pos>
118 [ LIT2 16 -Screen/auto ] DEO
119 ;&outline .Screen/addr DEO2
120@@ -289,7 +305,7 @@
121 [ LIT2 43 -Screen/sprite ] DEOk DEO
122 JMP2r
123
124-@smile/<draw-i> ( Draw using pixels )
125+@smile/<draw-8> ( Draw using pixels )
126 /<set-pos>
127 ;&hor-a icn/<draw-tile>
128 #0008 #fff8 Screen/<mod>
129@@ -299,10 +315,18 @@
130 #0008 #fff8 Screen/<mod>
131 ;&hor-d !icn/<draw-tile>
132
133+@smile/<draw-9> ( Draw offscreen origin )
134+ /<set-pos>
135+ .Screen/x DEI2 #0030 SUB2 .Screen/x DEO2
136+ ;&offscreen .Screen/addr DEO2
137+ [ LIT2 76 -Screen/auto ] DEO
138+ [ LIT2 03 -Screen/sprite ] DEOk DEO
139+ JMP2r
140+
141 @smile/lut [
142- =/<draw-a> =/<draw-b> =/<draw-c> =/<draw-d>
143- =/<draw-e> =/<draw-f> =/<draw-g> =/<draw-h>
144- =/<draw-i> ] &lut-end
145+ =/<draw-0> =/<draw-1> =/<draw-2> =/<draw-3>
146+ =/<draw-4> =/<draw-5> =/<draw-6> =/<draw-7>
147+ =/<draw-8> =/<draw-9> ] &lut-end
148
149 @icn/<draw-tile> ( addr* -- )
150 [ LIT2 01 -Screen/auto ] DEO
151@@ -351,6 +375,10 @@
152 (
153 @|Assets )
154
155+@hash [ aa55 aa55 aa55 aa55 ]
156+
157+@fill [ ffff ffff ffff ffff ]
158+
159 @appicon [
160 0000 0000 0000 0000 0000 0000 0000 0000
161 0000 0000 0000 0000 0000 0000 0000 0000
162@@ -512,3 +540,13 @@
163 0000 0000 0000 081c 0000 0000 0000 1028
164 0800 0403 0000 0000 1000 20c0 0000 0000 ]
165
166+@smile/offscreen [
167+ aa55 aa55 aa55 aa55 0000 0000 0000 0000
168+ 0000 0000 0000 0000 0000 0000 0000 0000
169+ 0000 0000 0000 0000 0000 0000 0000 0000
170+ 030c 1020 4040 889c c030 0804 0202 1129
171+ aa55 aa55 aa55 aa55 0000 0000 0000 0000
172+ 0000 0000 0000 0000 0000 0000 0000 0000
173+ 0000 0000 0000 0000 0000 0000 0000 0000
174+ 8880 4443 2010 0c03 1101 22c2 0408 30c0 ]
175+
+104,
-104
1@@ -1,44 +1,44 @@
2 a001 1f80 0637 a001 6480 1037 a003 1716
3-1c20 000a a003 0260 0a47 a001 0f17 0000
4+1c20 000a a003 0260 0a44 a001 0f17 0000
5 4472 6966 626c 696d 0a55 786e 7461 6c28
6 3534 4b29 2041 7373 656d 626c 6572 0a42
7 7920 4465 7669 6e65 204c 7520 4c69 6e76
8 6567 610a 3131 204a 756e 2032 3032 3600
9 0156 0050 a002 1716 0b20 0007 8012 1660
10 000c 00a0 0198 40ff 90a0 0003 136c a03f
11-0081 80fb 1389 2000 0ca0 0c00 a000 00a0
12+0081 80fb 1389 2000 0ca0 0bfd a000 00a0
13 0326 6000 5703 116c a002 1716 0b20 0007
14 8012 1660 001d 0060 018b a000 0060 0059
15-6001 8860 09d6 2000 05a0 800f 1700 a001
16-0f17 00a0 7f40 8180 fb13 8920 000c a00c
17-00a0 0040 a003 2660 0012 0311 6c94 0620
18-0003 0222 6c60 ffdb 2140 fff1 6009 9860
19-0967 2460 096b a00b b060 0965 6009 6280
20+6001 8860 09d3 2000 05a0 800f 1700 a001
21+0f17 00a0 7f40 8180 fb13 8920 000c a00b
22+fda0 0040 a003 2660 0012 0311 6c94 0620
23+0003 0222 6c60 ffdb 2140 fff1 6009 9560
24+0964 2460 0968 a00b ad60 0962 6009 5f80
25 0a40 0000 8019 176c 2126 a000 0028 2000
26-0f60 ff65 26a0 017e 6008 4a80 0060 ff5e
27+0f60 ff65 26a0 017e 6008 4780 0060 ff5e
28 80a8 37a0 0001 80aa 3760 0247 a000 0060
29-095a 2000 1ca0 0259 80ac 3780 a316 2000
30-169d 2000 0ca0 0c09 a000 00a0 032b 60ff
31+0957 2000 1ca0 0259 80ac 3780 a316 2000
32+169d 2000 0ca0 0c06 a000 00a0 032b 60ff
33 9b22 800a 4002 2521 8000 6002 1f40 ffcf
34 800f 3380 0e13 a002 6d80 0237 6c00 0001
35 0001 0000 0001 0001 0001 0000 0000 0280
36-00a0 0b8f 6008 d2a0 0040 6008 d4a0 0b99
37-6008 cea0 0a4e 3426 a000 ff39 6008 c8a0
38-0b9e 6008 bca0 0040 80a8 37a0 0001 80aa
39+00a0 0b8c 6008 cfa0 0040 6008 d1a0 0b96
40+6008 cba0 0a4b 3426 a000 ff39 6008 c5a0
41+0b9b 6008 b9a0 0040 80a8 37a0 0001 80aa
42 37a0 00ff 2126 80c1 33a0 0275 8002 37a0
43 0280 80ae 37a9 20ff eb22 22a0 0330 60ff
44-0ca0 0040 80a8 37a0 07c4 34a0 4d39 a000
45+0ca0 0040 80a8 37a0 07c4 34a0 4d36 a000
46 0280 aa37 2680 ae37 a000 0338 9480 0004
47 af80 aa37 2126 80ae 376f 38aa 20ff df22
48 226c 7573 6167 653a 2064 7269 6662 6c69
49 6d2e 726f 6d20 696e 2e74 616c 206f 7574
50 2e72 6f6d 0a00 5061 7468 0046 696c 6500
51-2e73 796d 00a0 0c35 4001 9080 4132 a003
52-b829 2000 09a0 0c2d a00b f060 07d9 802e
53-32a0 03f7 2920 0009 a00c 2da0 0bde 6007
54-c660 0828 2000 0c60 05ee 6008 1f20 0003
55+2e73 796d 00a0 0c32 4001 9080 4132 a003
56+b829 2000 09a0 0c2a a00b ed60 07d6 802e
57+32a0 03f7 2920 0009 a00c 2aa0 0bdb 6007
58+c360 0825 2000 0c60 05ee 6008 1c20 0003
59 4004 e16c 8008 336c 9020 0002 226c a003
60-882c a003 8840 ffec 6007 3520 0667 6002
61+882c a003 8840 ffec 6007 3220 0667 6002
62 4f20 064c 9060 0166 a11d 2000 0d22 6000
63 a2a1 1d20 00c0 2240 01d3 2134 2c22 a001
64 0913 a003 b840 ffbc 3426 c000 a028 0028
65@@ -48,36 +48,36 @@ e440 ff90 34a0 7b00 2920 000a a001 0a13
66 a003 f740 ff7e 6cb4 26c0 0080 7b08 0480
67 7b08 1d0f 58a0 7d00 280f 59cf c0eb 5320
68 0009 2280 0060 0011 40ff 6760 0005 8020
69-4000 06a0 0429 4006 3ca0 0d39 a126 a01d
70-392b 2000 09a0 0c00 a00b d760 06e9 80e9
71-3315 6c60 030d af80 e032 a00d 3926 ef60
72-0686 2000 0e60 067a 6006 77aa 20ff ee22
73-a0ff ff23 626c 2360 0009 6006 65a0 047c
74-4005 f2a0 c024 13a0 00c0 116c 0680 200a
75-2000 16a0 00c0 60fe ef80 0a09 2000 07a0
76+4000 06a0 0429 4006 39a0 0d36 a126 a01d
77+362b 2000 09a0 0bfd a00b d460 06e6 80e9
78+3315 6c60 030d af80 e032 a00d 3626 ef60
79+0683 2000 0e60 0677 6006 74aa 20ff ee22
80+a0ff ff23 626c 2360 0009 6006 62a0 047c
81+4005 efa0 c024 13a0 00c0 116c 0680 200a
82+2000 16a0 00c0 60fe ef80 0a09 20ff e4a0
83 0001 2180 fa33 40ff daa0 00c0 8106 80ff
84-0b20 0009 a00c 00a0 0be4 6006 7a80 eb13
85-316c a000 8081 0680 bf0b 2000 09a0 0c00
86-a00b d060 0661 80eb 1331 6c26 a080 e413
87+0b20 0009 a00b fda0 0be1 6006 7780 eb13
88+316c a000 8081 0680 bf0b 2000 09a0 0bfd
89+a00b cd60 065e 80eb 1331 6c26 a080 e413
90 9480 2f08 2000 0994 60ff d721 9420 fff0
91 2280 d012 8005 1340 027f 21a0 00c5 1380
92-2f60 ffbe a000 8024 a004 b240 0567 0fa0
93+2f60 ffbe a000 8024 a004 b240 0564 0fa0
94 05a0 94cf 0820 000c a000 0338 9420 fff2
95 22a0 ffff 426c 226c 2240 01d0 40fe 8e60
96-006c 40fe ae60 0066 6003 0840 0533 6000
97-5d60 02ff 4005 2660 0054 40ff 8e60 ffaa
98+006c 40fe ae60 0066 6003 0840 0530 6000
99+5d60 02ff 4005 2360 0054 40ff 8e60 ffaa
100 4002 2680 8060 04e8 6000 4360 03e3 4004
101 df80 8060 04da 6000 3560 03c7 4004 d180
102 a060 04cc 6000 2760 03c1 4004 bf60 001e
103 8020 4004 b160 0016 8040 4004 a980 6040
104 04a4 6000 0940 045e 6000 0340 044c 2194
105-8020 0a20 0009 a00c 09a0 0be4 4005 886c
106+8020 0a20 0009 a00c 06a0 0be1 4005 856c
107 7c05 2524 052e 4005 3726 053d 2c05 435f
108 0548 2e05 512d 0556 3b05 5f3d 0564 2105
109 753f 056d 2305 8222 0588 7d05 187e 0208
110 2805 1c29 0516 5b05 165d 0516 2505 1f00
111-2660 000e 8000 090f 26a0 06ba 6004 e94f
112-1d6c e01f 00a0 065a a4a0 0003 2460 04e1
113+2660 000e 8000 090f 26a0 06ba 6004 e64f
114+1d6c e01f 00a0 065a a4a0 0003 2460 04de
115 2000 0f41 a000 0338 9420 ffec 2222 6280
116 006c 225c b4a0 4c49 2880 701f 0f5d a000
117 0338 9480 210b 2000 2e94 8032 0920 0005
118@@ -90,91 +90,91 @@ c020 4000 1d94 8072 0920 0005 c040 4000
119 4c44 5253 5452 4c44 4153 5441 4445 4944
120 454f 4144 4453 5542 4d55 4c44 4956 414e
121 444f 5241 454f 5253 4654 4252 4b00 22a0
122-0000 a180 fa33 26a0 0c39 a121 80f9 3335
123+0000 a180 fa33 26a0 0c36 a121 80f9 3335
124 6000 0e05 6000 0a80 3733 8036 33a0 070f
125-6c06 8004 1f60 038d 0440 0389 80d9 3226
126-a00c 3929 2000 09a0 0c09 a00b d060 0427
127+6c06 8004 1f60 038a 0440 0386 80d9 3226
128+a00c 3629 2000 09a0 0c06 a00b cd60 0424
129 a000 0239 b460 ffc8 6000 5e80 ba33 6cce
130-bb2e 2e2e 2e00 6003 a720 0025 9480 7b08
131+bb2e 2e2e 2e00 6003 a420 0025 9480 7b08
132 2000 1e94 60fd d721 1d20 0015 60fd 1421
133 1d20 0016 6000 a621 1d20 000e 60fe a10c
134-6ca0 0c09 a00b e440 03dd a00c 11a0 0be4
135-4003 d494 807b 0820 ff64 9480 2f08 20fd
136+6ca0 0c06 a00b e140 03da a00c 0ea0 0be1
137+4003 d194 807b 0820 ff64 9480 2f08 20fd
138 8994 8026 0820 fd82 6c60 0071 a11d 2000
139-1022 a007 c434 6002 4d80 0260 02db 4000
140-1d23 2660 0240 6001 3020 0008 6002 ca27
141-3540 0136 22a0 0c11 a00b d040 0389 0460
142+1022 a007 c434 6002 4d80 0260 02d8 4000
143+1d23 2660 0240 6001 3020 0008 6002 c727
144+3540 0136 22a0 0c0e a00b cd40 0386 0460
145 0021 6000 1e60 001b e007 c4f4 8000 6000
146-1260 ff62 a007 c360 02ab 6474 6779 6455
147-4280 00a0 4d39 a126 a095 392b 2000 09a0
148-0c00 a00b c860 034f 80e9 3315 6c26 8018
149-3360 02d3 010f 80db 32a0 4d39 26a0 0003
150-3894 cf09 2000 0aa1 a000 0060 02da 2000
151+1260 ff62 a007 c360 02a8 6474 6779 6455
152+4280 00a0 4d36 a126 a095 362b 2000 09a0
153+0bfd a00b c560 034c 80e9 3315 6c26 8018
154+3360 02d0 010f 80db 32a0 4d36 26a0 0003
155+3894 cf09 2000 0aa1 a000 0060 02d7 2000
156 1622 a000 0338 9480 0004 0138 aa20 ffdc
157 2222 a0ff ff42 6c22 2342 6c60 ffbf a11d
158 2000 0e22 a007 c434 2480 01a0 ffff 40ff
159-6d23 6c60 028a 2002 6960 ff17 60ff 9e60
160-006f 2000 09a0 0c09 a00b d060 02d9 6000
161-6f34 236c a007 c434 a04d 39a1 2114 8001
162+6d23 6c60 0287 2002 6660 ff17 60ff 9e60
163+006f 2000 09a0 0c06 a00b cd60 02d6 6000
164+6f34 236c a007 c434 a04d 36a1 2114 8001
165 1c20 0027 b4a0 0100 2820 001f 26a0 0004
166-3894 8041 1980 1a0b 2000 0fa0 0ba7 6002
167-e026 6002 dc80 0a60 f97a 22a0 0003 3894
168+3894 8041 1980 1a0b 2000 0fa0 0ba4 6002
169+dd26 6002 d980 0a60 f97a 22a0 0003 3894
170 8000 0401 38aa 20ff c222 2240 f9e3 26a0
171-0080 3802 2000 016c a00c 1ba0 0bd0 4002
172-76a1 1d20 0003 8000 6ca1 2114 8002 1c6c
173+0080 3802 2000 016c a00c 18a0 0bcd 4002
174+73a1 1d20 0003 8000 6ca1 2114 8002 1c6c
175 a121 af14 8001 1d6f 156c 2121 af14 8002
176 1d6f 156c 8017 3360 fe79 60ff 3e60 ffd9
177-2000 1d26 6001 7260 001b 6000 18a0 0000
178+2000 1d26 6001 6f60 001b 6000 18a0 0000
179 6000 12a0 0000 6000 0ca0 0490 3460 0005
180-60ff bd34 6c04 6000 00a0 1d39 a126 a04d
181-392b 2000 09a0 0c00 a00b b360 0209 80e9
182+60ff bd34 6c04 6000 00a0 1d36 a126 a04d
183+362b 2000 09a0 0bfd a00b b060 0206 80e9
184 3315 6ca0 098d 60ff ab03 6ca0 0995 40ff
185 a3a0 099c 60ff 9da1 1d20 0004 2280 006c
186-6001 1660 000e 60ff 5503 6ca0 09ab 60ff
187-8360 0105 2121 396c 80af 32a0 1d39 a820
188-0013 26a0 0b08 35a6 a000 0438 342e a000
189-0a38 40ff e922 226c b460 00e5 a121 3460
190-ff2f 2000 06a0 0c09 4001 6d34 6c60 ffe8
191+6001 1360 000e 60ff 5503 6ca0 09ab 60ff
192+8360 0102 2121 396c 80af 32a0 1d36 a820
193+0013 26a0 0b05 35a6 a000 0438 342e a000
194+0a38 40ff e922 226c b460 00e2 a121 3460
195+ff2f 2000 06a0 0c06 4001 6a34 6c60 ffe8
196 2303 4000 9b60 ffe0 2340 0090 60ff d924
197 3460 ffb0 6000 0f03 4000 8560 ffca 2434
198 60ff a140 0076 26a0 0080 3802 2000 016c
199-a00c 1b40 0132 26a0 0003 3834 a0ce bb29
200-2000 0222 6ca0 08f4 356c a00a 3040 0085
201-60fc 0f40 004a 6000 ce80 0209 8050 1f80
202-801d 6000 3b60 00c8 8000 0820 001e 6000
203-b606 8002 0920 0008 0260 0096 0340 0020
204-8004 0920 0006 6000 8940 0010 22a0 0c09
205-a00b e940 0101 6000 0760 ff1f 0460 0000
206-6000 1207 2000 0b22 02a0 0c23 a00b f840
207-00e5 40f8 1ba0 0100 a180 fa33 26a0 0100
208-2b20 0004 2680 f633 6c80 ea32 6c60 fff9
209-3880 e233 6c2f 9406 2000 0402 2262 6cef
210-2e21 40ff f180 0f1c 800a 8b20 0005 1980
211-6118 6c02 8030 186c 9480 3019 0680 090a
212-0c6c 8027 1906 800a 1980 050a 0c6c 0280
213-ff6c e000 00c0 407f 60ff ddc0 000f 7821
214-9420 fff1 226f 6ca6 6000 1724 2139 036c
215-2660 ffc4 0120 0005 1480 0008 6c21 40ff
216-f021 9420 fffb 216c 2f26 60ff f524 4000
217-092f 2738 2440 0002 2161 a820 0007 94d4
218-4f08 20ff f362 286c a00b be60 005b 6000
219-60a0 0bb0 6000 5aa0 0000 a121 34a0 0004
220-3860 004d 26a0 0008 3834 24a0 0006 3834
221-a000 0438 4000 1960 002f 6000 34a0 0bb0
222-6000 2ea0 00c0 6000 28a0 0490 34a0 0080
223-a00b 9960 001b 6000 1880 3a60 f6b6 6000
224-1660 0033 800a 40f6 ab60 0005 8020 40f6
225-a3a0 0204 40fe fee0 ff00 a000 0abb af3a
226-396f 419d 20ff f322 0380 3018 60f6 8547
227-58cf 20ff f362 6ca0 0102 136c 8000 6c41
228-7373 656d 626c 6564 0020 696e 2000 2062
229-7974 6573 2e0a 002d 2d20 556e 7573 6564
230-3a20 0052 6566 6572 656e 6365 7300 5265
231-6665 7265 6e63 6500 5379 6d62 6f6c 7300
232-5379 6d62 6f6c 004d 6163 726f 7300 4d61
233-6372 6f00 4e61 6d65 004e 756d 6265 7200
234-436f 6d6d 656e 7400 5772 6974 696e 6700
235-6578 6365 6564 6564 0069 6e76 616c 6964
236-0064 7570 6c69 6361 7465 0074 6f6f 2066
237-6172 007a 6572 6f2d 7061 6765 006f 7065
238-6e00 2e2e 0054 6f70 00
239+a00c 1840 012f 26a0 0003 3834 a0ce bb29
240+2000 0222 6ca0 08f4 356c a00a 3040 0082
241+60fc 0f40 004a 6000 cb80 0209 8050 1f80
242+801d 6000 3b60 00c5 8000 0820 001e 6000
243+b306 8002 0920 0008 0260 0093 0340 0020
244+8004 0920 0006 6000 8640 0010 22a0 0c06
245+a00b e640 00fe 6000 0760 ff1f 0460 0000
246+6000 0f07 20f8 2922 02a0 0c20 a00b f540
247+00e2 a001 00a1 80fa 3326 a001 002b 2000
248+0426 80f6 336c 80ea 326c 60ff f938 80e2
249+336c 2f94 0620 0004 0222 626c ef2e 2140
250+fff1 800f 1c80 0a8b 2000 0519 8061 186c
251+0280 3018 6c94 8030 1906 8009 0a0c 6c80
252+2719 0680 0a19 8005 0a0c 6c02 80ff 6ce0
253+0000 c040 7f60 ffdd c000 0f78 2194 20ff
254+f122 6f6c a660 0017 2421 3903 6c26 60ff
255+c401 2000 0514 8000 086c 2140 fff0 2194
256+20ff fb21 6c2f 2660 fff5 2440 0009 2f27
257+3824 4000 0221 61a8 2000 0794 d44f 0820
258+fff3 6228 6ca0 0bbb 6000 5b60 0060 a00b
259+ad60 005a a000 00a1 2134 a000 0438 6000
260+4d26 a000 0838 3424 a000 0638 34a0 0004
261+3840 0019 6000 2f60 0034 a00b ad60 002e
262+a000 c060 0028 a004 9034 a000 80a0 0b96
263+6000 1b60 0018 803a 60f6 b960 0016 6000
264+3380 0a40 f6ae 6000 0580 2040 f6a6 a002
265+0440 fefe e0ff 00a0 000a bbaf 3a39 6f41
266+9d20 fff3 2203 8030 1860 f688 4758 cf20
267+fff3 626c a001 0213 6c80 006c 4173 7365
268+6d62 6c65 6400 2069 6e20 0020 6279 7465
269+732e 0a00 2d2d 2055 6e75 7365 643a 2000
270+5265 6665 7265 6e63 6573 0052 6566 6572
271+656e 6365 0053 796d 626f 6c73 0053 796d
272+626f 6c00 4d61 6372 6f73 004d 6163 726f
273+004e 616d 6500 4e75 6d62 6572 0043 6f6d
274+6d65 6e74 0057 7269 7469 6e67 0065 7863
275+6565 6465 6400 696e 7661 6c69 6400 6475
276+706c 6963 6174 6500 746f 6f20 6661 7200
277+7a65 726f 2d70 6167 6500 6f70 656e 002e
278+2e00 546f 7000
+15,
-19
1@@ -495,7 +495,6 @@ screen_deo_pixel(void)
2 static void
3 screen_deo_sprite(void)
4 {
5- int i, j, x = rX, y = rY;
6 const int ctrl = dev[0x2f];
7 const int flipx = ctrl & 0x10, flipy = ctrl & 0x20;
8 const int dx = flipx ? -rDY : rDY, dy = flipy ? -rDX : rDX;
9@@ -506,9 +505,10 @@ screen_deo_sprite(void)
10 const int addr_incr = rMA << is_2bpp;
11 const int stride = screen_wmar2;
12 const int blend = ctrl & 0xf;
13+ const int row_step = dy * stride;
14 const Uint8 opaque_mask = blend % 5;
15 const Uint8 *table = blend_lut[blend][layer >> 6];
16- const int row_step = dy * stride;
17+ int i, j, x = rX, y = rY;
18 int row_base = (y + 8) * stride;
19 for(i = 0; i <= rML; i++, x += dx, y += dy, rA += addr_incr, row_base += row_step) {
20 const Uint16 x0 = x + 8, y0 = y + 8;
21@@ -664,19 +664,25 @@ put_text(Uint8 *dest, const char *text)
22 return dest - anchor;
23 }
24
25+static inline unsigned int
26+put_size(Uint8 *dest, unsigned int len, unsigned int size)
27+{
28+ unsigned int i;
29+ for(i = 0, dest += len; i < len; i++, size >>= 4)
30+ *(--dest) = "0123456789abcdef"[(Uint8)(size & 0xf)];
31+ return len;
32+}
33+
34 static unsigned int
35 put_stat(Uint8 *dest, unsigned int len, unsigned int size, unsigned int err, unsigned int dir, unsigned int capsize)
36 {
37- unsigned int i;
38 if(err || dir || (capsize && size >= 0x10000)) {
39 memset(dest, err ? '!' : dir ? '-' :
40 '?',
41 len);
42 return len;
43 }
44- for(i = 0, dest += len; i < len; i++, size >>= 4)
45- *(--dest) = "0123456789abcdef"[(Uint8)(size & 0xf)];
46- return len;
47+ return put_size(dest, len, size);
48 }
49
50 static unsigned int
51@@ -693,7 +699,7 @@ put_statfile(Uint8 *dest, char *pathbuf, unsigned int prefix_len, unsigned int c
52 err = stat(pathbuf, &st);
53 dir = !err && S_ISDIR(st.st_mode);
54 dest += put_stat(dest, 4, st.st_size, err, dir, 1);
55- dest += put_text(dest, " ");
56+ dest += put_text(dest, "\t");
57 dest += put_text(dest, basename);
58 dest += put_text(dest, dir ? "/\n" : "\n");
59 return dest - anchor;
60@@ -939,8 +945,7 @@ static const dei_handler dei_handlers[256] = {
61 [0xc6] = datetime_dei_sec,
62 [0xc7] = datetime_dei_wday,
63 [0xc8] = datetime_dei_yday,
64- [0xca] = datetime_dei_dst,
65-};
66+ [0xca] = datetime_dei_dst};
67
68 static const deo_handler deo_handlers[256] = {
69 [0x03] = system_deo_expansion,
70@@ -1112,15 +1117,6 @@ emu_restart(unsigned int soft)
71 uxn_eval(0x100);
72 }
73
74-static inline unsigned int
75-put_size(Uint8 *dest, unsigned int len, unsigned int size)
76-{
77- unsigned int i;
78- for(i = 0, dest += len; i < len; i++, size >>= 4)
79- *(--dest) = "0123456789abcdef"[(Uint8)(size & 0xf)];
80- return len;
81-}
82-
83 static void
84 emu_screenshot(void)
85 {
86@@ -1328,7 +1324,7 @@ main(int argc, char **argv)
87 {
88 int i = 1;
89 if(argc == 2 && argv[1][0] == '-' && argv[1][1] == 'v')
90- return !fprintf(stdout, "%s - Varvara Emulator(80K), 14 Jun 2026.\n", argv[0]);
91+ return !fprintf(stdout, "%s - Varvara Emulator(79K), 16 Jun 2026.\n", argv[0]);
92 else if(argc == 1)
93 return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
94 else if(!system_boot(argv[i++], argc > 2))