commit d2d8463
Devine Lu Linvega
·
2025-12-29 17:31:35 +0000 UTC
parent 6554004
Use drifloon
8 files changed,
+897,
-411
+1,
-1
1@@ -47,7 +47,7 @@ After running `make install` the man page should be found by `man uxntal`.
2
3 ## Devices
4
5-The file device is _sandboxed_, meaning that it should not be able to read or write outside of the working directory.
6+The file device is _not sandboxed_, meaning that it should not be able to read or write outside of the working directory.
7
8 - `00` system
9 - `10` console(+)
+152,
-0
1@@ -0,0 +1,152 @@
2+( All five portraits should look right )
3+
4+|00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1
5+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
6+
7+|0100
8+ ( | size )
9+ #00a0 .Screen/width DEO2
10+ #0020 .Screen/height DEO2
11+ ( | theme )
12+ #05ae .System/r DEO2
13+ #0a9f .System/g DEO2
14+ #097f .System/b DEO2
15+ ( | normal horizontal )
16+ #0000 .Screen/x DEO2
17+ #0000 .Screen/y DEO2
18+ [ LIT2 35 -Screen/auto ] DEO
19+ ;img-hor .Screen/addr DEO2
20+ #85 <draw-4times>
21+ ( | normal vertical )
22+ #0020 .Screen/x DEO2
23+ #0000 .Screen/y DEO2
24+ [ LIT2 36 -Screen/auto ] DEO
25+ ;img-ver .Screen/addr DEO2
26+ #85 <draw-4times>
27+ ( | flipped horizontal )
28+ #0058 .Screen/x DEO2
29+ #0000 .Screen/y DEO2
30+ [ LIT2 36 -Screen/auto ] DEO
31+ ;img-x-flipped .Screen/addr DEO2
32+ #95 <draw-4times>
33+ ( | flipped vertical )
34+ #0060 .Screen/x DEO2
35+ #0018 .Screen/y DEO2
36+ [ LIT2 36 -Screen/auto ] DEO
37+ ;img-y-flipped .Screen/addr DEO2
38+ #a5 <draw-4times>
39+ ( | flipped horizontal/vertical )
40+ #0098 .Screen/x DEO2
41+ #0018 .Screen/y DEO2
42+ [ LIT2 36 -Screen/auto ] DEO
43+ ;img-xy-flipped .Screen/addr DEO2
44+ #b5 <draw-4times>
45+ BRK
46+
47+@<draw-4times> ( color -- )
48+ .Screen/sprite DEOk DEOk DEOk DEO
49+ JMP2r
50+
51+@draw-fast ( w h addr* color -- )
52+ ,&color STR
53+ .Screen/addr DEO2
54+ SWP #01 SUB #40 SFT #06 ORA .Screen/auto DEO
55+ #00 SWP SUB
56+ × ( -- )
57+ [ LIT2 &color $1 -Screen/sprite ] DEO
58+ INC DUP ?×
59+ POP JMP2r
60+
61+(
62+@|assets )
63+
64+@img-ver [
65+ 0000 0008 0404 0501 ffff fff7 fbfa f9f9
66+ 0000 1000 21ff ffff ffff efde 21ff ffff
67+ 2020 0060 f8ff fffc dfdf 9f67 f8ff fffc
68+ 0703 2110 0888 c851 e7fb ddee 76b6 d64d
69+ 0307 0617 172f 080c fbf7 f6e5 e7cf e8ec
70+ ffef 1fff ff1f 0f37 f7ef 1fff 8f07 0733
71+ fbff ffff fcf8 f3f7 fbf7 fff8 f0f0 f1f1
72+ d3d7 c783 0100 0040 8bc7 d79b 1d3e 3e5e
73+ 0e06 0301 0101 0505 eef6 fbfd fdfd f9f9
74+ 7bfb 3fff ffff ffff 3b3b 3fff ffff ffff
75+ f7f7 f7ff fff7 fffb f3ff fff3 fbff ffe3
76+ c0e0 e0e4 e5e3 c7cf feee eeea e9eb f7cf
77+ 3800 0103 c7ff ffff c6fe fd3b c7ff ffff
78+ ff7f 3f0f a0b8 bebf ff7f 3f5f b1bf bfbf
79+ dfbf fefd fb07 0fdf c387 fefd fb07 efdf
80+ bf7f ffff ffff ffff bf7f ffff ffff ffff ]
81+
82+@img-hor [
83+ 0000 0008 0404 0501 ffff fff7 fbfa f9f9
84+ 0307 0617 172f 080c fbf7 f6e5 e7cf e8ec
85+ 0e06 0301 0101 0505 eef6 fbfd fdfd f9f9
86+ 3800 0103 c7ff ffff c6fe fd3b c7ff ffff
87+ 0000 1000 21ff ffff ffff efde 21ff ffff
88+ ffef 1fff ff1f 0f37 f7ef 1fff 8f07 0733
89+ 7bfb 3fff ffff ffff 3b3b 3fff ffff ffff
90+ ff7f 3f0f a0b8 bebf ff7f 3f5f b1bf bfbf
91+ 2020 0060 f8ff fffc dfdf 9f67 f8ff fffc
92+ fbff ffff fcf8 f3f7 fbf7 fff8 f0f0 f1f1
93+ f7f7 f7ff fff7 fffb f3ff fff3 fbff ffe3
94+ dfbf fefd fb07 0fdf c387 fefd fb07 efdf
95+ 0703 2110 0888 c851 e7fb ddee 76b6 d64d
96+ d3d7 c783 0100 0040 8bc7 d79b 1d3e 3e5e
97+ c0e0 e0e4 e5e3 c7cf feee eeea e9eb f7cf
98+ bf7f ffff ffff ffff bf7f ffff ffff ffff ]
99+
100+@img-x-flipped [
101+ e0c0 8408 1011 138a e7df bb77 6e6d 6bb2
102+ 0404 0006 1fff ff3f fbfb f9e6 1fff ff3f
103+ 0000 0800 84ff ffff ffff f77b 84ff ffff
104+ 0000 0010 2020 a080 ffff ffef df5f 9f9f
105+ cbeb e3c1 8000 0002 d1e3 ebd9 b87c 7c7a
106+ dfff ffff 3f1f cfef dfef ff1f 0f0f 8f8f
107+ fff7 f8ff fff8 f0ec eff7 f8ff f1e0 e0cc
108+ c0e0 60e8 e8f4 1030 dfef 6fa7 e7f3 1737
109+ 0307 0727 a7c7 e3f3 7f77 7757 97d7 eff3
110+ efef efff ffef ffdf cfff ffcf dfff ffc7
111+ dedf fcff ffff ffff dcdc fcff ffff ffff
112+ 7060 c080 8080 a0a0 776f dfbf bfbf 9f9f
113+ fdfe ffff ffff ffff fdfe ffff ffff ffff
114+ fbfd 7fbf dfe0 f0fb c3e1 7fbf dfe0 f7fb
115+ fffe fcf0 051d 7dfd fffe fcfa 8dfd fdfd
116+ 1c00 80c0 e3ff ffff 637f bfdc e3ff ffff ]
117+
118+@img-y-flipped [
119+ ffff ffc7 0301 0038 ffff ffc7 3bfd fec6
120+ bfbe b8a0 0f3f 7fff bfbf bfb1 5f3f 7fff
121+ df0f 07fb fdfe bfdf dfef 07fb fdfe 87c3
122+ ffff ffff ffff 7fbf ffff ffff ffff 7fbf
123+ 0505 0101 0103 060e f9f9 fdfd fdfb f6ee
124+ ffff ffff ff3f fb7b ffff ffff ff3f 3b3b
125+ fbff f7ff fff7 f7f7 e3ff fffb f3ff fff3
126+ cfc7 e3e5 e4e0 e0c0 cff7 ebe9 eaee eefe
127+ 0c08 2f17 1706 0703 ece8 cfe7 e5f6 f7fb
128+ 370f 1fff ff1f efff 3307 078f ff1f eff7
129+ f7f3 f8fc ffff fffb f1f1 f0f0 f8ff f7fb
130+ 4000 0001 83c7 d7d3 5e3e 3e1d 9bd7 c78b
131+ 0105 0404 0800 0000 f9f9 fafb f7ff ffff
132+ ffff ff21 0010 0000 ffff ff21 deef ffff
133+ fcff fff8 6000 2020 fcff fff8 679f dfdf
134+ 51c8 8808 1021 0307 4dd6 b676 eedd fbe7 ]
135+
136+@img-xy-flipped [
137+ ffff ffff ffff fefd ffff ffff ffff fefd
138+ fbf0 e0df bf7f fdfb fbf7 e0df bf7f e1c3
139+ fd7d 1d05 f0fc feff fdfd fd8d fafc feff
140+ ffff ffe3 c080 001c ffff ffe3 dcbf 7f63
141+ f3e3 c7a7 2707 0703 f3ef d797 5777 777f
142+ dfff efff ffef efef c7ff ffdf cfff ffcf
143+ ffff ffff fffc dfde ffff ffff fffc dcdc
144+ a0a0 8080 80c0 6070 9f9f bfbf bfdf 6f77
145+ 0200 0080 c1e3 ebcb 7a7c 7cb8 d9eb e3d1
146+ efcf 1f3f ffff ffdf 8f8f 0f0f 1fff efdf
147+ ecf0 f8ff fff8 f7ff cce0 e0f1 fff8 f7ef
148+ 3010 f4e8 e860 e0c0 3717 f3e7 a76f efdf
149+ 8a13 1110 0884 c0e0 b26b 6d6e 77bb dfe7
150+ 3fff ff1f 0600 0404 3fff ff1f e6f9 fbfb
151+ ffff ff84 0008 0000 ffff ff84 7bf7 ffff
152+ 80a0 2020 1000 0000 9f9f 5fdf efff ffff ]
153+
+253,
-0
1@@ -0,0 +1,253 @@
2+( )
3+
4+|00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
5+|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
6+|80 @Controller &vector $2 &button $1 &key $1
7+|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2
8+
9+|000
10+
11+ @position &x $2 &y $2
12+
13+|100
14+
15+@on-reset ( -> )
16+ #375e .System/r DEO2
17+ #286c .System/g DEO2
18+ #2358 .System/b DEO2
19+ ;on-mouse .Mouse/vector DEO2
20+ ;on-button .Controller/vector DEO2
21+ <draw-guide>
22+ #0028 #0028 <move>
23+ BRK
24+
25+@on-button ( -> )
26+ .Controller/button DEI
27+ ( | handlers )
28+ DUP #10 NEQ ?{
29+ .position/x LDZ2 .position/y LDZ2 #0004 SUB2 <move> }
30+ DUP #20 NEQ ?{
31+ .position/x LDZ2 .position/y LDZ2 #0004 ADD2 <move> }
32+ DUP #40 NEQ ?{
33+ .position/x LDZ2 #0004 SUB2 .position/y LDZ2 <move> }
34+ DUP #80 NEQ ?{
35+ .position/x LDZ2 #0004 ADD2 .position/y LDZ2 <move> }
36+ DUP #14 NEQ ?{
37+ .position/x LDZ2 .position/y LDZ2 #0040 SUB2 <move> }
38+ DUP #24 NEQ ?{
39+ .position/x LDZ2 .position/y LDZ2 #0040 ADD2 <move> }
40+ DUP #44 NEQ ?{
41+ .position/x LDZ2 #0040 SUB2 .position/y LDZ2 <move> }
42+ DUP #84 NEQ ?{
43+ .position/x LDZ2 #0040 ADD2 .position/y LDZ2 <move> }
44+ DUP #01 NEQ ?{ <toggle-size> }
45+ DUP #02 NEQ ?{ <toggle-theme> }
46+ DUP #08 NEQ ?{ <toggle-pos> }
47+ POP <draw-portraits>
48+ BRK
49+
50+@on-mouse ( -> )
51+ .Mouse/x DEI2 .Mouse/y DEI2 <move>
52+ BRK
53+
54+(
55+@|drawing )
56+
57+@<toggle-pos> ( -- )
58+ .position/x LDZ2 #8000 NEQ2 ?{
59+ #0000 DUP2 !<move> }
60+ #8000 DUP2 !<move>
61+
62+@<toggle-size> ( -- )
63+ .Screen/width DEI2 #0200 EQU2 ?{
64+ #0200 .Screen/width DEO2
65+ #0200 .Screen/height DEO2
66+ <draw-guide> !<draw-portraits> }
67+ #0180 .Screen/width DEO2
68+ #0180 .Screen/height DEO2
69+ <draw-guide> !<draw-portraits>
70+
71+@<toggle-theme> ( -- )
72+ #ff00 .System/r DEI2 EQU2 ?{
73+ #ff00 .System/r DEO2
74+ #0ff0 .System/g DEO2
75+ #00ff .System/b DEO2
76+ JMP2r }
77+ #00ff .System/r DEO2
78+ #0ff0 .System/g DEO2
79+ #ff00 .System/b DEO2
80+ JMP2r
81+
82+@<move> ( x* y* -- )
83+ ( | clear )
84+ .position/x LDZ2 #0020 SUB2 .Screen/x DEO2
85+ .position/y LDZ2 #0020 SUB2 .Screen/y DEO2
86+ [ LIT2 71 -Screen/auto ] DEO
87+ ;fill-icn .Screen/addr DEO2
88+ #f8
89+ &>l ( -- )
90+ #40 .Screen/sprite DEO
91+ INC DUP ?&>l
92+ POP
93+ OVR2 <phex> #2018 DEO
94+ DUP2 <phex> #0a18 DEO
95+ ( | update )
96+ .position/y STZ2
97+ .position/x STZ2
98+ ( >> )
99+
100+@<draw-portraits> ( -- )
101+ .position/x LDZ2 .Screen/x DEO2
102+ .position/y LDZ2 .Screen/y DEO2
103+ [ LIT2 36 -Screen/auto ] DEO
104+ .Mouse/state DEI .Controller/button DEI #0f AND ORA ?<draw-box>
105+ ( | top-left )
106+ .Screen/x DEI2k #0000 ADD2 ROT DEO2
107+ .Screen/y DEI2k #0020 SUB2 ROT DEO2
108+ #8140 ORA <draw-portrait>
109+ .Screen/x DEI2k #0008 SUB2 ROT DEO2
110+ .Screen/y DEI2k #0020 SUB2 ROT DEO2
111+ #9140 ORA <draw-portrait>
112+ .Screen/x DEI2k #0000 SUB2 ROT DEO2
113+ .Screen/y DEI2k #0018 ADD2 ROT DEO2
114+ #b140 ORA <draw-portrait>
115+ .Screen/x DEI2k #0008 ADD2 ROT DEO2
116+ .Screen/y DEI2k #0020 ADD2 ROT DEO2
117+ #a140 ORA <draw-portrait>
118+ .position/x LDZ2 .Screen/x DEO2
119+ .position/y LDZ2 .Screen/y DEO2
120+ [ LIT2 00 -Screen/auto ] DEO
121+ #43 .Screen/pixel DEO
122+ JMP2r
123+
124+@<draw-portrait> ( color -- )
125+ ;portrait-chr .Screen/addr DEO2
126+ .Screen/sprite DEOk DEOk DEOk DEO
127+ JMP2r
128+
129+@<draw-box> ( -- )
130+ ( | top left )
131+ .Screen/x DEI2k #0020 SUB2 ROT DEO2
132+ .Screen/y DEI2k #0020 SUB2 ROT DEO2
133+ ;box-icn .Screen/addr DEO2
134+ #43 .Screen/sprite DEOk DEOk DEOk DEO
135+ ( | top right )
136+ .Screen/x DEI2k #0038 ADD2 ROT DEO2
137+ .Screen/y DEI2k #0020 SUB2 ROT DEO2
138+ ;box-icn .Screen/addr DEO2
139+ #53 .Screen/sprite DEOk DEOk DEOk DEO
140+ ( | bottom right )
141+ .Screen/x DEI2k #0000 ADD2 ROT DEO2
142+ .Screen/y DEI2k #0018 ADD2 ROT DEO2
143+ ;box-icn .Screen/addr DEO2
144+ #73 .Screen/sprite DEOk DEOk DEOk DEO
145+ ( | bottom left )
146+ .Screen/x DEI2k #0038 SUB2 ROT DEO2
147+ .Screen/y DEI2k #0020 ADD2 ROT DEO2
148+ ;box-icn .Screen/addr DEO2
149+ #63 .Screen/sprite DEOk DEOk DEOk DEO
150+ JMP2r
151+
152+@<draw-circle> ( color -- )
153+ [ LITr -Screen/x ] DEI2r ;circle-chr .Screen/addr DEO2
154+ DUP .Screen/sprite DEO
155+ DUP #10 ORA .Screen/sprite DEO
156+ .Screen/y DEI2k #0008 ADD2 ROT DEO2
157+ DUP #20 ORA .Screen/sprite DEO
158+ #30 ORA .Screen/sprite DEO
159+ .Screen/y DEI2k #0008 SUB2 ROT DEO2
160+ [ LIT2r 0010 ] ADD2r [ LITr -Screen/x ] DEO2r
161+ JMP2r
162+
163+@<draw-guide> ( -- )
164+ #0080 .Screen/x DEO2
165+ #0080 .Screen/y DEO2
166+ #82 .Screen/pixel DEO
167+ #93 .Screen/pixel DEO
168+ #a1 .Screen/pixel DEO
169+ #0008 DUP2 .Screen/x DEO2
170+ .Screen/y DEO2
171+ #e2 .Screen/auto DEO
172+ ;guide-icn .Screen/addr DEO2
173+ #0f00
174+ &>l ( -- )
175+ #01 .Screen/sprite DEO
176+ INC GTHk ?&>l
177+ POP2
178+ ( | circles 1bpp )
179+ #0088 .Screen/x DEO2
180+ #0008 .Screen/y DEO2
181+ #01 .Screen/auto DEO
182+ #0f00
183+ &>ll ( -- )
184+ DUP <draw-circle>
185+ INC GTHk ?&>ll
186+ POP2
187+ ( | circles 2bpp )
188+ #0088 .Screen/x DEO2
189+ #0018 .Screen/y DEO2
190+ #01 .Screen/auto DEO
191+ #0f00
192+ &>lll ( -- )
193+ DUP #80 ORA <draw-circle>
194+ INC GTHk ?&>lll
195+ POP2 JMP2r
196+
197+@<update-cursor> ( color addr* -- )
198+ [ LIT2 00 -Screen/auto ] DEO
199+ ;fill-icn .Screen/addr DEO2
200+ #40 <draw-cursor>
201+ .Mouse/x DEI2 ,<draw-cursor>/x STR2
202+ .Mouse/y DEI2 ,<draw-cursor>/y STR2
203+ .Screen/addr DEO2
204+
205+@<draw-cursor> ( color -- )
206+ [ LIT2 &x $2 ] .Screen/x DEO2
207+ [ LIT2 &y $2 ] .Screen/y DEO2
208+ .Screen/sprite DEO
209+ JMP2r
210+
211+@<phex> ( short* -: )
212+ SWP /b
213+ &b ( byte -: )
214+ DUP #04 SFT /c
215+ &c ( byte -: )
216+ #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO
217+ JMP2r
218+
219+@guide-icn [ 8000 0000 0000 0000 ]
220+
221+@fill-icn [ ffff ffff ffff ffff ]
222+
223+@cursor-icn [ 80c0 e0f0 f8e0 1000 ]
224+
225+@portrait-chr [
226+ 070f 1e1d 1b3b 3b3b f0e0 c0c0 d08b 8080
227+ f76f cf9f 9f5f 5f5f 0000 0007 1c40 4040
228+ fffb f975 7576 7667 0000 3164 0406 0607
229+ efef efef eddd 9e1e 0060 8000 0000 0000
230+ 3b2b 280d 0105 0506 8080 8081 e1f1 f1f0
231+ 5f6c 639b 0f27 77ab 4060 639b 0f27 67ab
232+ 0dc8 b0e5 cded fdfc 0dc8 b0e4 ccec fcfc
233+ 5e1e 1c9c 9d1d 5d59 4000 0080 8000 4040
234+ 0607 0707 070e 0e0e f0f0 f0f0 f0e0 e0e0
235+ fb73 7fb7 bbbf bfdd f373 7b37 3b3f 3f1c
236+ ffff ffff ffff ffff ffff ffff ffff ff7f
237+ dba7 97f7 f7ed dd9d c080 90f0 f0e0 c080
238+ 1e0e 0000 0000 0000 c0c0 f0ff ffff ffff
239+ ee03 0000 0000 0000 0e12 fcff ffff ffff
240+ fffc f30f 1f1f 1f3f 9f3c f30f dfdf dfbf
241+ 3c80 8080 80c0 c0e0 0003 3fbf bfbf dfef ]
242+
243+@box-icn [
244+ 0000 0000 0001 0204 0000 0f30 c000 0000
245+ 03fc 0000 0000 0000 ff00 0000 0000 0000
246+ 0808 1010 2020 2020 0000 0000 0000 0000
247+ 0000 0000 0000 0000 0000 0000 0000 0000
248+ 4040 4040 4040 8080 0000 0000 0000 0000
249+ 0000 0000 0000 0000 0000 0000 0000 0000
250+ 8080 8080 8080 8080 0000 0000 0000 0000
251+ 0000 0000 0000 0000 0000 0000 0000 0000 ]
252+
253+@circle-chr [ 071f 3c70 60e3 c7c7 0000 030f 1f1f 3f3f ]
254+
+96,
-0
1@@ -0,0 +1,96 @@
2+( Screen.pixel: test rom for screen pixel drawing )
3+
4+|00 @System/vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
5+|20 @Screen/vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
6+
7+|000
8+
9+ @center &x $2 &y $2
10+
11+|100
12+
13+@on-reset ( -> )
14+ ( | theme )
15+ #f07f .System/r DEO2
16+ #f0d6 .System/g DEO2
17+ #f0b2 .System/b DEO2
18+ ( | resize )
19+ #00c8 DUP2 .Screen/width DEO2
20+ .Screen/height DEO2
21+ ( | find screen center )
22+ .Screen/width DEI2 #01 SFT2 .center/x STZ2
23+ .Screen/height DEI2 #01 SFT2 .center/y STZ2
24+ ( | draw )
25+ <draw-bg-fill>
26+ <draw-bg-corners>
27+ <draw-fg-corners>
28+ <draw-pixels>
29+ BRK
30+
31+@<draw-bg-fill> ( -- )
32+ .center/x LDZ2 .Screen/x DEO2
33+ .center/y LDZ2 .Screen/y DEO2
34+ ( | 4-way backgrounds )
35+ #0400
36+ &>l
37+ DUP DUP #40 SFT #80 ADD ORA .Screen/pixel DEO
38+ INC GTHk ?&>l
39+ POP2 JMP2r
40+
41+@<draw-bg-corners> ( -- )
42+ .center/x LDZ2 #01 SFT2 .Screen/x DEO2
43+ .center/y LDZ2 #01 SFT2 .Screen/y DEO2
44+ #b0 .Screen/pixel DEO
45+ .center/x LDZ2 #01 SFT2 #0003 MUL2 .Screen/x DEO2
46+ .center/y LDZ2 #01 SFT2 .Screen/y DEO2
47+ #a1 .Screen/pixel DEO
48+ .center/x LDZ2 #01 SFT2 #0003 MUL2 .Screen/x DEO2
49+ .center/y LDZ2 #01 SFT2 #0003 MUL2 .Screen/y DEO2
50+ #83 .Screen/pixel DEO
51+ .center/x LDZ2 #01 SFT2 .Screen/x DEO2
52+ .center/y LDZ2 #01 SFT2 #0003 MUL2 .Screen/y DEO2
53+ #92 .Screen/pixel DEO
54+ JMP2r
55+
56+@<draw-fg-corners> ( -- )
57+ .center/x LDZ2 #02 SFT2 .Screen/x DEO2
58+ .center/y LDZ2 #02 SFT2 .Screen/y DEO2
59+ #f1 .Screen/pixel DEO
60+ .center/x LDZ2 #02 SFT2 #0007 MUL2 .Screen/x DEO2
61+ .center/y LDZ2 #02 SFT2 .Screen/y DEO2
62+ #e3 .Screen/pixel DEO
63+ ( clear ) #e0 .Screen/pixel DEO
64+ .center/x LDZ2 #02 SFT2 #0007 MUL2 .Screen/x DEO2
65+ .center/y LDZ2 #02 SFT2 #0007 MUL2 .Screen/y DEO2
66+ #c2 .Screen/pixel DEO
67+ .center/x LDZ2 #02 SFT2 .Screen/x DEO2
68+ .center/y LDZ2 #02 SFT2 #0007 MUL2 .Screen/y DEO2
69+ #d0 .Screen/pixel DEO
70+ JMP2r
71+
72+@<draw-pixels> ( -- )
73+ ( | bottom-left, background )
74+ .center/x LDZ2 #0010 SUB2 .Screen/x DEO2
75+ .center/y LDZ2 .Screen/y DEO2
76+ ( auto-x ) #01 .Screen/auto DEO
77+ #00
78+ &>bl
79+ #00 OVR EQU OVR #0f AND ORA ?{
80+ .center/x LDZ2 #0010 SUB2 .Screen/x DEO2
81+ .Screen/y DEI2k INC2 ROT DEO2 }
82+ DUP #04 SFT OVR #0f AND LTH INC .Screen/pixel DEO
83+ INC DUP ?&>bl
84+ POP
85+ ( | bottom-right, foreground )
86+ .center/x LDZ2 .Screen/x DEO2
87+ .center/y LDZ2 #0010 SUB2 .Screen/y DEO2
88+ ( auto-y ) #02 .Screen/auto DEO
89+ #00
90+ &>br
91+ #00 OVR EQU OVR #0f AND ORA ?{
92+ .center/y LDZ2 #0010 SUB2 .Screen/y DEO2
93+ .Screen/x DEI2k INC2 ROT DEO2 }
94+ DUP #04 SFT OVR #0f AND GTH INC #40 ORA .Screen/pixel DEO
95+ INC DUP ?&>br
96+ POP JMP2r
97+
+203,
-239
1@@ -1,253 +1,217 @@
2-( )
3+( Screen:
4+ Draws a table of all possible sprite arrangements. )
5
6 |00 @System &vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
7 |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
8-|80 @Controller &vector $2 &button $1 &key $1
9-|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2
10-
11-|000
12-
13- @position &x $2 &y $2
14-
15-|100
16-
17-@on-reset ( -> )
18- #375e .System/r DEO2
19- #286c .System/g DEO2
20- #2358 .System/b DEO2
21- ;on-mouse .Mouse/vector DEO2
22- ;on-button .Controller/vector DEO2
23- <draw-guide>
24- #0028 #0028 <move>
25- BRK
26-
27-@on-button ( -> )
28- .Controller/button DEI
29- ( | handlers )
30- DUP #10 NEQ ?{
31- .position/x LDZ2 .position/y LDZ2 #0004 SUB2 <move> }
32- DUP #20 NEQ ?{
33- .position/x LDZ2 .position/y LDZ2 #0004 ADD2 <move> }
34- DUP #40 NEQ ?{
35- .position/x LDZ2 #0004 SUB2 .position/y LDZ2 <move> }
36- DUP #80 NEQ ?{
37- .position/x LDZ2 #0004 ADD2 .position/y LDZ2 <move> }
38- DUP #14 NEQ ?{
39- .position/x LDZ2 .position/y LDZ2 #0040 SUB2 <move> }
40- DUP #24 NEQ ?{
41- .position/x LDZ2 .position/y LDZ2 #0040 ADD2 <move> }
42- DUP #44 NEQ ?{
43- .position/x LDZ2 #0040 SUB2 .position/y LDZ2 <move> }
44- DUP #84 NEQ ?{
45- .position/x LDZ2 #0040 ADD2 .position/y LDZ2 <move> }
46- DUP #01 NEQ ?{ <toggle-size> }
47- DUP #02 NEQ ?{ <toggle-theme> }
48- DUP #08 NEQ ?{ <toggle-pos> }
49- POP <draw-portraits>
50- BRK
51-
52-@on-mouse ( -> )
53- .Mouse/x DEI2 .Mouse/y DEI2 <move>
54- BRK
55+|90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1
56+
57+|0000
58+
59+ @center &x $2 &y $2
60+
61+|0100 ( -> )
62+
63+ ( vector )
64+ ;on-frame .Screen/vector DEO2
65+ ( theme )
66+ #f07f .System/r DEO2
67+ #f0e0 .System/g DEO2
68+ #f0c0 .System/b DEO2
69+ ( gba screen size 00f0 x 00a0 )
70+ ( nds screen size 0100 x 00c0 )
71+ #0100 .Screen/width DEO2
72+ #00b0 .Screen/height DEO2
73+ ( find screen center )
74+ .Screen/width DEI2 #01 SFT2 .center/x STZ2
75+ .Screen/height DEI2 #01 SFT2 .center/y STZ2
76+ ( draw )
77+ draw-size
78+ draw-sprites
79+ draw-1bpp
80+ draw-2bpp
81+
82+BRK
83+
84+(
85+@|vectors )
86+
87+@on-frame ( -> )
88+
89+ ( scroll background )
90+ [ LIT2 &f $2 ] INC2k ,&f STR2
91+ #01 SFT2
92+ #001f AND2
93+ #0040 SUB2
94+ DUP2 .Screen/x DEO2
95+ .Screen/y DEO2
96+ ;patt-icn draw-fill
97+
98+ .center/x LDZ2 #0070 SUB2 .Screen/x DEO2
99+ .center/y LDZ2 #0048 SUB2 .Screen/y DEO2
100+ ;anim-chr ,&f LDR2 #00ff AND2 #02 SFT #07 AND #40 SFT ADD2 .Screen/addr DEO2
101+ #8f .Screen/sprite DEO
102+
103+ draw-size
104+ draw-sprites
105+ draw-1bpp
106+ draw-2bpp
107+
108+BRK
109
110 (
111 @|drawing )
112
113-@<toggle-pos> ( -- )
114- .position/x LDZ2 #8000 NEQ2 ?{
115- #0000 DUP2 !<move> }
116- #8000 DUP2 !<move>
117-
118-@<toggle-size> ( -- )
119- .Screen/width DEI2 #0200 EQU2 ?{
120- #0200 .Screen/width DEO2
121- #0200 .Screen/height DEO2
122- <draw-guide> !<draw-portraits> }
123- #0180 .Screen/width DEO2
124- #0180 .Screen/height DEO2
125- <draw-guide> !<draw-portraits>
126-
127-@<toggle-theme> ( -- )
128- #ff00 .System/r DEI2 EQU2 ?{
129- #ff00 .System/r DEO2
130- #0ff0 .System/g DEO2
131- #00ff .System/b DEO2
132- JMP2r }
133- #00ff .System/r DEO2
134- #0ff0 .System/g DEO2
135- #ff00 .System/b DEO2
136- JMP2r
137-
138-@<move> ( x* y* -- )
139- ( | clear )
140- .position/x LDZ2 #0020 SUB2 .Screen/x DEO2
141- .position/y LDZ2 #0020 SUB2 .Screen/y DEO2
142- [ LIT2 71 -Screen/auto ] DEO
143- ;fill-icn .Screen/addr DEO2
144- #f8
145- &>l ( -- )
146- #40 .Screen/sprite DEO
147- INC DUP ?&>l
148+@draw-sprites ( -- )
149+
150+ ( horizontal )
151+ .center/x LDZ2 #0060 SUB2 .Screen/x DEO2
152+ .center/y LDZ2 #0048 SUB2 .Screen/y DEO2
153+ ;font-icn .Screen/addr DEO2
154+ #f6 .Screen/auto DEO
155+ #05 .Screen/sprite DEO
156+ ( vertical )
157+ .center/x LDZ2 #0070 SUB2 .Screen/x DEO2
158+ .center/y LDZ2 #0038 SUB2 .Screen/y DEO2
159+ ;font-icn .Screen/addr DEO2
160+ #f5 .Screen/auto DEO
161+ #05 .Screen/sprite DEO
162+ ( table )
163+ #00 .Screen/auto DEO
164+ ;preview-chr .Screen/addr DEO2
165+ #00
166+ &loop
167+ ( move ) #00 OVR #0f AND #30 SFT
168+ .center/x LDZ2 #0060 SUB2 ADD2 .Screen/x DEO2
169+ ( move ) #00 OVR #f0 AND #01 SFT
170+ .center/y LDZ2 #0038 SUB2 ADD2 .Screen/y DEO2
171+ ( draw ) DUP .Screen/sprite DEO
172+ INC DUP ?&loop
173 POP
174- OVR2 <phex> #2018 DEO
175- DUP2 <phex> #0a18 DEO
176- ( | update )
177- .position/y STZ2
178- .position/x STZ2
179- ( >> )
180-
181-@<draw-portraits> ( -- )
182- .position/x LDZ2 .Screen/x DEO2
183- .position/y LDZ2 .Screen/y DEO2
184- [ LIT2 36 -Screen/auto ] DEO
185- .Mouse/state DEI .Controller/button DEI #0f AND ORA ?<draw-box>
186- ( | top-left )
187- .Screen/x DEI2k #0000 ADD2 ROT DEO2
188- .Screen/y DEI2k #0020 SUB2 ROT DEO2
189- #8140 ORA <draw-portrait>
190- .Screen/x DEI2k #0008 SUB2 ROT DEO2
191- .Screen/y DEI2k #0020 SUB2 ROT DEO2
192- #9140 ORA <draw-portrait>
193- .Screen/x DEI2k #0000 SUB2 ROT DEO2
194- .Screen/y DEI2k #0018 ADD2 ROT DEO2
195- #b140 ORA <draw-portrait>
196- .Screen/x DEI2k #0008 ADD2 ROT DEO2
197- .Screen/y DEI2k #0020 ADD2 ROT DEO2
198- #a140 ORA <draw-portrait>
199- .position/x LDZ2 .Screen/x DEO2
200- .position/y LDZ2 .Screen/y DEO2
201- [ LIT2 00 -Screen/auto ] DEO
202- #43 .Screen/pixel DEO
203- JMP2r
204-
205-@<draw-portrait> ( color -- )
206- ;portrait-chr .Screen/addr DEO2
207- .Screen/sprite DEOk DEOk DEOk DEO
208- JMP2r
209-
210-@<draw-box> ( -- )
211- ( | top left )
212- .Screen/x DEI2k #0020 SUB2 ROT DEO2
213- .Screen/y DEI2k #0020 SUB2 ROT DEO2
214- ;box-icn .Screen/addr DEO2
215- #43 .Screen/sprite DEOk DEOk DEOk DEO
216- ( | top right )
217- .Screen/x DEI2k #0038 ADD2 ROT DEO2
218- .Screen/y DEI2k #0020 SUB2 ROT DEO2
219- ;box-icn .Screen/addr DEO2
220- #53 .Screen/sprite DEOk DEOk DEOk DEO
221- ( | bottom right )
222- .Screen/x DEI2k #0000 ADD2 ROT DEO2
223- .Screen/y DEI2k #0018 ADD2 ROT DEO2
224- ;box-icn .Screen/addr DEO2
225- #73 .Screen/sprite DEOk DEOk DEOk DEO
226- ( | bottom left )
227- .Screen/x DEI2k #0038 SUB2 ROT DEO2
228- .Screen/y DEI2k #0020 ADD2 ROT DEO2
229- ;box-icn .Screen/addr DEO2
230- #63 .Screen/sprite DEOk DEOk DEOk DEO
231- JMP2r
232-
233-@<draw-circle> ( color -- )
234- [ LITr -Screen/x ] DEI2r ;circle-chr .Screen/addr DEO2
235- DUP .Screen/sprite DEO
236- DUP #10 ORA .Screen/sprite DEO
237- .Screen/y DEI2k #0008 ADD2 ROT DEO2
238- DUP #20 ORA .Screen/sprite DEO
239- #30 ORA .Screen/sprite DEO
240- .Screen/y DEI2k #0008 SUB2 ROT DEO2
241- [ LIT2r 0010 ] ADD2r [ LITr -Screen/x ] DEO2r
242- JMP2r
243-
244-@<draw-guide> ( -- )
245- #0080 .Screen/x DEO2
246- #0080 .Screen/y DEO2
247- #82 .Screen/pixel DEO
248- #93 .Screen/pixel DEO
249- #a1 .Screen/pixel DEO
250- #0008 DUP2 .Screen/x DEO2
251- .Screen/y DEO2
252- #e2 .Screen/auto DEO
253- ;guide-icn .Screen/addr DEO2
254- #0f00
255- &>l ( -- )
256- #01 .Screen/sprite DEO
257- INC GTHk ?&>l
258+
259+JMP2r
260+
261+@draw-1bpp ( -- )
262+
263+ #1000
264+ &loop
265+ ( color ) STHk
266+ ( y ) #00 OVR #42 SFT2
267+ .center/y LDZ2 #0038 SUB2 ADD2 STH2
268+ ( x ) #00 OVR #03 AND #40 SFT2 #0040 ADD2
269+ .center/x LDZ2 #0010 SUB2 ADD2
270+ STH2r STHr #00 draw-circle
271+ INC GTHk ?&loop
272 POP2
273- ( | circles 1bpp )
274- #0088 .Screen/x DEO2
275- #0008 .Screen/y DEO2
276- #01 .Screen/auto DEO
277- #0f00
278- &>ll ( -- )
279- DUP <draw-circle>
280- INC GTHk ?&>ll
281+
282+JMP2r
283+
284+@draw-2bpp ( -- )
285+
286+ #1000
287+ &loop
288+ ( color ) STHk
289+ ( y ) #00 OVR #42 SFT2
290+ .center/y LDZ2 #0008 ADD2 ADD2 STH2
291+ ( x ) #00 OVR #03 AND #40 SFT2 #0040 ADD2
292+ .center/x LDZ2 #0010 SUB2 ADD2
293+ STH2r STHr #80 draw-circle
294+ INC GTHk ?&loop
295 POP2
296- ( | circles 2bpp )
297- #0088 .Screen/x DEO2
298- #0018 .Screen/y DEO2
299+
300+JMP2r
301+
302+@draw-circle ( x* y* color depth -- )
303+
304+ ADD STH
305+ ;preview-chr .Screen/addr DEO2
306+ .Screen/y DEO2
307+ .Screen/x DEO2
308+ #01 .Screen/auto DEO
309+ STHr .Screen/sprite DEOk
310+ #02 .Screen/auto DEO
311+ SWP #10 ADD SWP DEOk
312+ .Screen/x DEI2k #0008 SUB2 ROT DEO2
313 #01 .Screen/auto DEO
314- #0f00
315- &>lll ( -- )
316- DUP #80 ORA <draw-circle>
317- INC GTHk ?&>lll
318- POP2 JMP2r
319-
320-@<update-cursor> ( color addr* -- )
321- [ LIT2 00 -Screen/auto ] DEO
322- ;fill-icn .Screen/addr DEO2
323- #40 <draw-cursor>
324- .Mouse/x DEI2 ,<draw-cursor>/x STR2
325- .Mouse/y DEI2 ,<draw-cursor>/y STR2
326+ SWP #10 ADD SWP DEOk
327+ SWP #10 ADD SWP DEO
328+
329+JMP2r
330+
331+@draw-fill ( patt* color -- )
332+
333 .Screen/addr DEO2
334+ [ LIT2 01 -Screen/auto ] DEO
335+ .Screen/x DEI2 ,&anchor STR2
336+ .Screen/width DEI2 #03 SFT2 NIP #08 ADD ,&x STR
337+ .Screen/height DEI2 #03 SFT2 NIP #08 ADD #00
338+ &h
339+ DUP #02 SFT STH
340+ [ LIT &x $1 ] #00
341+ &w
342+ DUP #02 SFT STHkr ADD #01 AND .Screen/sprite DEO
343+ INC GTHk ?&w
344+ .Screen/y DEI2k #0008 ADD2 ROT DEO2
345+ [ LIT2 &anchor $2 ] .Screen/x DEO2
346+ POP2 POPr
347+ INC GTHk ?&h
348+ POP2
349+
350+JMP2r
351+
352+@draw-size ( -- )
353+
354+ #01 .Screen/auto DEO
355+ .center/x LDZ2 #0030 ADD2 .Screen/x DEO2
356+ .center/y LDZ2 #0048 SUB2 .Screen/y DEO2
357+ .Screen/width DEI2 draw-dec
358+ ;x-icn .Screen/addr DEO2
359+ #01 .Screen/sprite DEO
360+ .Screen/height DEI2
361+
362+@draw-dec ( short* -- )
363+
364+ #00 ,&z STR
365+ #2710 draw-dec/parse
366+ #03e8 draw-dec/parse
367+ #0064 draw-dec/parse
368+ #000a draw-dec/parse
369+ NIP
370+ &emit
371+ DUP [ LIT &z $1 ] EQU ?&skip
372+ #ff ,&z STR #00 OVR #30 SFT ;font-icn ADD2 .Screen/addr DEO2
373+ #01 .Screen/sprite DEO
374+ &skip
375+ POP
376
377-@<draw-cursor> ( color -- )
378- [ LIT2 &x $2 ] .Screen/x DEO2
379- [ LIT2 &y $2 ] .Screen/y DEO2
380- .Screen/sprite DEO
381- JMP2r
382-
383-@<phex> ( short* -: )
384- SWP /b
385- &b ( byte -: )
386- DUP #04 SFT /c
387- &c ( byte -: )
388- #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO
389- JMP2r
390-
391-@guide-icn [ 8000 0000 0000 0000 ]
392-
393-@fill-icn [ ffff ffff ffff ffff ]
394-
395-@cursor-icn [ 80c0 e0f0 f8e0 1000 ]
396-
397-@portrait-chr [
398- 070f 1e1d 1b3b 3b3b f0e0 c0c0 d08b 8080
399- f76f cf9f 9f5f 5f5f 0000 0007 1c40 4040
400- fffb f975 7576 7667 0000 3164 0406 0607
401- efef efef eddd 9e1e 0060 8000 0000 0000
402- 3b2b 280d 0105 0506 8080 8081 e1f1 f1f0
403- 5f6c 639b 0f27 77ab 4060 639b 0f27 67ab
404- 0dc8 b0e5 cded fdfc 0dc8 b0e4 ccec fcfc
405- 5e1e 1c9c 9d1d 5d59 4000 0080 8000 4040
406- 0607 0707 070e 0e0e f0f0 f0f0 f0e0 e0e0
407- fb73 7fb7 bbbf bfdd f373 7b37 3b3f 3f1c
408- ffff ffff ffff ffff ffff ffff ffff ff7f
409- dba7 97f7 f7ed dd9d c080 90f0 f0e0 c080
410- 1e0e 0000 0000 0000 c0c0 f0ff ffff ffff
411- ee03 0000 0000 0000 0e12 fcff ffff ffff
412- fffc f30f 1f1f 1f3f 9f3c f30f dfdf dfbf
413- 3c80 8080 80c0 c0e0 0003 3fbf bfbf dfef ]
414-
415-@box-icn [
416- 0000 0000 0001 0204 0000 0f30 c000 0000
417- 03fc 0000 0000 0000 ff00 0000 0000 0000
418- 0808 1010 2020 2020 0000 0000 0000 0000
419- 0000 0000 0000 0000 0000 0000 0000 0000
420- 4040 4040 4040 8080 0000 0000 0000 0000
421- 0000 0000 0000 0000 0000 0000 0000 0000
422- 8080 8080 8080 8080 0000 0000 0000 0000
423- 0000 0000 0000 0000 0000 0000 0000 0000 ]
424-
425-@circle-chr [ 071f 3c70 60e3 c7c7 0000 030f 1f1f 3f3f ]
426+JMP2r
427+ &parse DIV2k DUP ,&emit JSR MUL2 SUB2 JMP2r
428+
429+(
430+@|assets )
431+
432+@patt-icn [
433+ aa55 aa55 aa55 aa55 ]
434+@x-icn [
435+ 0000 0018 1800 0000 ]
436+@preview-chr [
437+ 0f38 675f dfbf bfbf 0007 1820 2344 4848 ]
438+@font-icn ( 0-f ) [
439+ 007c 8282 8282 827c 0030 1010 1010 1010
440+ 007c 8202 7c80 80fe 007c 8202 1c02 827c
441+ 000c 1424 4484 fe04 00fe 8080 7c02 827c
442+ 007c 8280 fc82 827c 007c 8202 1e02 0202
443+ 007c 8282 7c82 827c 007c 8282 7e02 827c
444+ 007c 8202 7e82 827e 00fc 8282 fc82 82fc
445+ 007c 8280 8080 827c 00fc 8282 8282 82fc
446+ 007c 8280 f080 827c 007c 8280 f080 8080 [
447+@anim-chr [
448+ 0000 0018 1800 0000 c381 0000 0000 81c3
449+ 0000 183c 3c18 0000 0000 0000 0000 0000
450+ 0018 3c7e 7e3c 1800 0000 0000 0000 0000
451+ 3c7e ffe7 e7ff 7e3c 0000 0018 1800 0000
452+ ffff e7c3 c3e7 ffff 0000 183c 3c18 0000
453+ ffe7 c381 81c3 e7ff 0018 3c7e 7e3c 1800
454+ c381 0000 0000 81c3 3c7e ffe7 e7ff 7e3c
455+ 0000 0000 0000 0000 ffff e7c3 c3e7 ffff
456+ 0000 0000 0000 0000 ffe7 c381 81c3 e7ff ]
457
+177,
-0
1@@ -0,0 +1,177 @@
2+a002 ab80 0637 a00b fc60 037c a001 2580
3+1037 a003 1716 1c20 000a a002 7860 0a10
4+a001 0f17 00a0 0217 160b 2000 1d80 1216
5+a03f 0081 80fb 1389 2000 0ca0 0bc7 a000
6+00a0 029c 6009 c003 1100 a001 5040 ffbf
7+a002 1716 0b20 0007 8012 1660 000b 00a0
8+0000 6000 3260 0180 00a0 7f40 8180 fb13
9+8920 000c a00b c7a0 0040 a002 9c60 0987
10+0311 6c94 0620 0003 0222 6c60 ffdb 2140
11+fff1 8019 176c 2180 a837 a000 0180 aa37
12+6002 8da0 0000 800f 1620 001c a001 cc80
13+ac37 80a3 1620 0012 9d20 000c a00b d0a0
14+0000 a002 a160 093f 226c 2180 0060 0269
15+40ff d380 0f33 800e 13a0 01e0 8002 376c
16+0000 0100 0100 0000 0100 0100 0100 0000
17+0001 f300 a00b 5660 0936 8020 60ff 93a0
18+0040 6009 2ba0 0b60 6009 25a0 09d7 3426
19+a001 0039 6009 1fa0 0b65 6009 13a0 0040
20+80a8 37a0 0001 80aa 37a0 0100 2680 bd33
21+a001 e880 0237 a001 f380 ae37 21aa 20ff
22+eb22 22a0 02a6 60ff 3aa0 0040 80a8 37a0
23+0764 34a0 4d02 a000 0280 aa37 2680 ae37
24+a000 0338 2660 07f2 a439 80aa 3724 80ae
25+37aa 20ff e122 226c 7573 6167 653a 2064
26+7269 6662 6c69 6d2e 726f 6d20 696e 2e74
27+616c 206f 7574 2e72 6f6d 0a00 5061 7468
28+0046 696c 6500 2e73 796d 0000 4472 6966
29+626c 696d 0a55 786e 7461 6c20 4173 7365
30+6d62 6c65 720a 4279 2044 6576 696e 6520
31+4c75 204c 696e 7665 6761 0a32 3720 4465
32+6320 3230 3235 0000 800a 6001 4c80 4732
33+a003 7529 2000 0ca0 0bf4 a00b f9a0 0bb7
34+6008 0480 3132 a003 b729 2000 0ca0 0bf4
35+a00b f9a0 0ba5 6007 ee80 0f16 2000 1060
36+05c0 800f 1620 0007 a080 0f17 4004 ab6c
37+9020 0002 226c a003 422c a003 42a0 0337
38+356c 6007 0420 0636 6002 5320 061b 9060
39+0166 a11d 2000 0e22 2660 00a7 a11d 2000
40+c222 4001 d621 342c 22a0 0375 a003 3735
41+a001 0413 6c34 26c0 00a0 2800 280f 58a0
42+2900 280f 59cf c0ef 5320 0003 40ff ab6c
43+6003 3060 004d 8000 6000 4ea0 03a3 a003
44+3735 6c34 a07b 0029 2000 0ba0 03b7 a003
45+3735 a001 0413 6cb4 26c0 0080 7b08 0480
46+7b08 1d0f 58a0 7d00 280f 59cf c0eb 5320
47+0009 2280 0060 0011 40ff 5f60 0005 8020
48+4000 06a0 03e9 4006 05a0 0d02 a126 a01d
49+022b 2000 09a0 0bc7 a00b 9e60 0684 80e9
50+3315 6c2f 80e3 32a0 0d02 26ef 6006 5520
51+000e 6006 4560 0642 aa20 ffee 22a0 ffff
52+2362 6c23 6000 0960 0630 a004 3940 05be
53+a0c0 2413 a000 c011 6c06 8020 0a20 0016
54+a000 c060 feea 800a 0920 0007 a000 0121
55+80fa 3340 ffda a000 c081 0680 ff0b 2000
56+09a0 0bc7 a00b ab60 0618 80eb 1331 6ca0
57+0080 8106 80bf 0b20 0009 a00b c7a0 0b97
58+6005 ff80 eb13 316c a080 e513 9480 2f08
59+2000 0994 60ff d821 9420 fff0 2280 d112
60+8003 136c 21a0 00c8 1380 2f60 ffc1 a000
61+8024 a004 6f40 0536 0fa0 055e 94cf 0820
62+000c a000 0338 9420 fff2 22a0 ffff 426c
63+226c 2240 01d4 40fe 8f60 0070 40fe b160
64+006a 6002 d540 0502 6000 6160 02cc 4004
65+f560 0058 2660 ff90 4002 1d60 ffa6 4002
66+1780 8060 04b3 6000 4360 03af 4004 aa80
67+8060 04a5 6000 3560 0393 4004 9c80 a060
68+0497 6000 2760 038d 4004 8a60 001e 8020
69+4004 7c60 0016 8040 4004 7480 6040 046f
70+6000 0940 0429 6000 0340 0417 2194 8020
71+0a20 0009 a00b d0a0 0bab 4005 256c 7c04
72+df24 04e8 4004 f126 04fb 2c05 015f 0506
73+2e05 0f2d 0514 3b05 1d3d 0522 2105 333f
74+052b 2305 4022 0546 7d04 d27e 0196 2804
75+d629 04d0 5b04 d05d 04d0 2504 d900 2660
76+000e 8000 090f 26a0 0678 6004 b74f 1d6c
77+e01f 00a0 0618 a4a0 0003 2460 04ad 2000
78+0f41 a000 0338 9420 ffec 2222 6280 006c
79+225c b4a0 4c49 2880 701f 0f5d a000 0338
80+9480 210b 2000 2e94 8032 0920 0005 c020
81+4000 1d94 8072 0920 0005 c040 4000 1194
82+806b 0920 0005 c080 4000 0522 4280 006c
83+5d21 40ff cb22 4f6c 4c49 5449 4e43 504f
84+504e 4950 5357 5052 4f54 4455 504f 5652
85+4551 554e 4551 4754 484c 5448 4a4d 504a
86+434e 4a53 5253 5448 4c44 5a53 545a 4c44
87+5253 5452 4c44 4153 5441 4445 4944 454f
88+4144 4453 5542 4d55 4c44 4956 414e 444f
89+5241 454f 5253 4654 4252 4b00 22a0 0000
90+a180 fa33 26a0 0c02 a121 80f9 3335 6000
91+0e05 6000 0a80 2633 8025 33a0 06bc 6c06
92+8004 1f60 0358 0440 0354 80d9 32a0 0002
93+39b4 60ff d960 0060 80cb 336c cebb 2e2e
94+2e2e 0060 0383 2000 2794 807b 0820 0020
95+9460 fde4 211d 2000 1726 60fd 2621 1d20
96+0017 2660 0097 211d 2000 0e60 feb0 0c6c
97+a00b d0a0 0bab 4003 89a0 0bd8 a00b ab40
98+0380 9480 7b08 20ff 7394 802f 0820 fd94
99+9480 2608 20fd 8d6c 2660 0061 a11d 2000
100+1022 a007 6434 6002 2680 0260 02b4 4000
101+1d23 2660 0219 6001 0320 0008 6002 a327
102+3540 0110 22a0 0bd8 a00b 9740 0334 0460
103+0011 6000 0e60 000b 60ff 68a0 0763 6002
104+8d80 00a0 4d02 a126 a095 022b 2000 09a0
105+0bc7 a00b 8f60 030a 80e9 3315 6c2f 80e3
106+32a0 4d02 26a0 0003 38ef 6002 d720 000f
107+a000 0338 6002 c3aa 20ff e922 a0ff ff23
108+626c 2660 ffd7 a11d 2000 0d22 80b5 3224
109+8001 a0ff ff40 ff96 236c 6002 8c20 026b
110+60ff 3f60 ffb7 6000 6b20 0009 a00b d0a0
111+0b97 6002 ad60 0072 346c a007 6434 a04d
112+02a8 2000 3760 005b 2000 27b4 a001 0028
113+2000 1f26 a000 0338 9480 4119 801a 0b20
114+000f a00b 6e60 0328 2660 0324 800a 60f9
115+8122 a000 0338 6002 4140 ffc5 2222 40f9
116+d326 a000 8038 0220 0001 6ca0 0be2 a00b
117+9740 024e a11d 2000 0380 006c a121 1480
118+021c 6ca1 2114 8001 1c6c a121 af14 8001
119+1d6f 156c 2121 af14 8002 1d6f 156c 8017
120+3360 fe9e 60ff 3b60 ffd2 2000 1d26 6001
121+7160 001b 6000 18a0 0000 6000 12a0 0000
122+6000 0ca0 044d 3460 0005 60ff bd34 6c04
123+6000 00a0 1d02 a126 a04d 022b 2000 09a0
124+0bc7 a00b 7a60 01da 80e9 3315 6ca0 0916
125+60ff ab03 6ca0 091e 40ff a3a0 0925 60ff
126+9da1 1d20 0004 2280 006c 6001 1560 000e
127+60ff 4e03 6ca0 0934 60ff 8360 0104 2121
128+396c 80af 32a0 1d02 a820 0013 26a0 0acf
129+35a6 a000 0438 342e a000 0a38 40ff e922
130+226c b460 00e4 a121 3434 a11d 2000 06a0
131+0bd0 4001 9b6c 60ff e923 0340 009b 60ff
132+e123 4000 9060 ffda 2434 60ff b160 000f
133+0340 0085 60ff cb24 3460 ffa2 4000 7626
134+a000 8038 0220 0001 6ca0 0be2 4001 6126
135+a000 0338 34a0 cebb 2920 0002 226c a008
136+7e35 6ca0 09b9 4000 8560 fc44 4000 4a60
137+00ce 8002 0980 501f 8080 1d60 003b 6000
138+c880 0008 2000 1e60 00b6 0680 0209 2000
139+0802 6000 9603 4000 2080 0409 2000 0660
140+0089 4000 1022 a00b d0a0 0bb0 4000 d360
141+0007 60ff 2004 6000 0060 0012 0720 000b
142+2202 a00b eaa0 0bbf 4000 b740 f805 a001
143+00a1 80fa 33a1 a001 002b 2000 04a1 80f6
144+336c 80ea 326c 60ff f938 80e2 336c 2f94
145+0620 0004 0222 626c ef2e 2140 fff1 800f
146+1c80 0a8b 2000 0519 8061 186c 0280 3018
147+6c94 8030 1906 8009 0a0c 6c80 2719 0680
148+0a19 8005 0a0c 6c02 80ff 6ce0 0000 c040
149+7f60 ffdd c000 0f78 2194 20ff f122 6f6c
150+a660 0016 2421 3903 6c26 60ff c401 2000
151+0514 8000 086c 2140 fff0 9420 0002 216c
152+2140 fff6 a660 fff2 2439 242f 2738 24a8
153+2000 0c94 d44f 0920 0005 2161 40ff f062
154+286c 800f 1620 0025 a001 0f17 6000 a180
155+2060 f6fe 6000 99a0 0b77 6000 93a0 00c0
156+6000 8da0 044d 34a0 0080 4000 4322 226c
157+800f 1620 0038 a001 0f17 a00b 8560 0070
158+8020 60f6 cd60 0068 a00b 7760 0062 a000
159+00a1 2134 a000 0338 6000 5526 a000 0838
160+3424 a000 0638 34a0 0003 3840 0002 226c
161+a00b 6060 003a 6000 3780 3a60 f694 6000
162+3580 0a60 f68c 6c80 0f16 2000 1fa0 010f
163+1760 001c 8020 60f6 7924 6000 13a0 0b77
164+6000 0d60 000a 800a 60f6 676c 2222 226c
165+a001 9240 feb8 e0ff 00a0 000a bbaf 3a39
166+6f41 9d20 fff3 2203 8030 1860 f644 4758
167+cf20 fff3 626c 4173 7365 6d62 6c65 6400
168+2069 6e20 0020 6279 7465 732e 0a00 2d2d
169+2055 6e75 7365 643a 2000 5265 6665 7265
170+6e63 6573 0052 6566 6572 656e 6365 0053
171+796d 626f 6c73 0053 796d 626f 6c00 4d61
172+6372 6f73 004d 6163 726f 004e 616d 6500
173+4e75 6d62 6572 0043 6f6d 6d65 6e74 0057
174+7269 7469 6e67 0065 7863 6565 6465 6400
175+696e 7661 6c69 6400 6475 706c 6963 6174
176+6500 746f 6f20 6661 7200 7a65 726f 2d70
177+6167 6500 6f70 656e 002e 2e00 5245 5345
178+54
+0,
-156
1@@ -1,156 +0,0 @@
2-a001 6380 0637 a00a b460 0234 a001 1380
3-1037 00a0 0417 1608 2000 0780 1216 6001
4-d000 6000 7b00 a093 ba38 156c a00a 0e60
5-08b6 a00a 1860 08b0 a008 8f34 26a0 0100
6-3960 08aa a00a 1d60 089e a093 ba38 a094
7-ba94 8018 1721 aa20 fff7 2222 6c22 6c80
8-1917 6c00 4472 6966 6c6f 6f6e 0a55 786e
9-7461 6c20 4173 7365 6d62 6c65 720a 4279
10-2044 6576 696e 6520 4c75 204c 696e 7665
11-6761 0a32 3720 4465 6320 3230 3235 0000
12-800a 6001 4c80 4732 a002 2d29 2000 0ca0
13-0aac a00a b1a0 0a6f 6008 0480 3132 a002
14-6f29 2000 0ca0 0aac a00a b1a0 0a5d 6007
15-ee80 0f16 2000 1060 05c0 800f 1620 0007
16-a080 0f17 4004 ab6c 9020 0002 226c a001
17-fa2c a001 faa0 01ef 356c 6007 0420 0636
18-6002 5320 061b 9060 0166 a11d 2000 0e22
19-2660 00a7 a11d 2000 c222 4001 d621 342c
20-22a0 022d a001 ef35 a001 0413 6c34 26c0
21-00a0 2800 280f 58a0 2900 280f 59cf c0ef
22-5320 0003 40ff ab6c 6003 3060 004d 8000
23-6000 4ea0 025b a001 ef35 6c34 a07b 0029
24-2000 0ba0 026f a001 ef35 a001 0413 6cb4
25-26c0 0080 7b08 0480 7b08 1d0f 58a0 7d00
26-280f 59cf c0eb 5320 0009 2280 0060 0011
27-40ff 5f60 0005 8020 4000 06a0 02a1 4006
28-05a0 0bba a126 a01b ba2b 2000 09a0 0a7f
29-a00a 5660 0684 80e9 3315 6c2f 80e3 32a0
30-0bba 26ef 6006 5520 000e 6006 4560 0642
31-aa20 ffee 22a0 ffff 2362 6c23 6000 0960
32-0630 a002 f140 05be a040 2413 a000 4011
33-6c06 8020 0a20 0016 a000 4060 feea 800a
34-0920 0007 a000 0121 80fa 3340 ffda a000
35-4081 0680 7f0b 2000 09a0 0a7f a00a 6360
36-0618 80eb 1331 6ca0 0000 8106 803f 0b20
37-0009 a00a 7fa0 0a4f 6005 ff80 eb13 316c
38-a000 e513 9480 2f08 2000 0994 60ff d821
39-9420 fff0 2280 d112 8003 136c 21a0 00c8
40-1380 2f60 ffc1 a000 0024 a003 2740 0536
41-0fa0 0416 94cf 0820 000c a000 0338 9420
42-fff2 22a0 ffff 426c 226c 2240 01d4 40fe
43-8f60 0070 40fe b160 006a 6002 d540 0502
44-6000 6160 02cc 4004 f560 0058 2660 ff90
45-4002 1d60 ffa6 4002 1780 8060 04b3 6000
46-4360 03af 4004 aa80 8060 04a5 6000 3560
47-0393 4004 9c80 a060 0497 6000 2760 038d
48-4004 8a60 001e 8020 4004 7c60 0016 8040
49-4004 7480 6040 046f 6000 0940 0429 6000
50-0340 0417 2194 8020 0a20 0009 a00a 88a0
51-0a63 4005 256c 7c03 9724 03a0 4003 a926
52-03b3 2c03 b95f 03be 2e03 c72d 03cc 3b03
53-d53d 03da 2103 eb3f 03e3 2303 f822 03fe
54-7d03 8a7e 015d 2803 8e29 0388 5b03 885d
55-0388 2503 9100 2660 000e 8000 090f 26a0
56-0530 6004 b74f 1d6c e01f 00a0 04d0 a4a0
57-0003 2460 04ad 2000 0f41 a000 0338 9420
58-ffec 2222 6280 006c 225c b4a0 4c49 2880
59-701f 0f5d a000 0338 9480 210b 2000 2e94
60-8032 0920 0005 c020 4000 1d94 8072 0920
61-0005 c040 4000 1194 806b 0920 0005 c080
62-4000 0522 4280 006c 5d21 40ff cb22 4f6c
63-4c49 5449 4e43 504f 504e 4950 5357 5052
64-4f54 4455 504f 5652 4551 554e 4551 4754
65-484c 5448 4a4d 504a 434e 4a53 5253 5448
66-4c44 5a53 545a 4c44 5253 5452 4c44 4153
67-5441 4445 4944 454f 4144 4453 5542 4d55
68-4c44 4956 414e 444f 5241 454f 5253 4654
69-4252 4b00 22a0 0000 a180 fa33 26a0 0aba
70-a121 80f9 3335 6000 0e05 6000 0a80 2633
71-8025 33a0 0574 6c06 8004 1f60 0358 0440
72-0354 80d9 32a0 0002 39b4 60ff d960 0060
73-80cb 336c cebb 2e2e 2e2e 0060 0383 2000
74-2794 807b 0820 0020 9460 fde4 211d 2000
75-1726 60fd 2621 1d20 0017 2660 0097 211d
76-2000 0e60 feb0 0c6c a00a 88a0 0a63 4003
77-89a0 0a90 a00a 6340 0380 9480 7b08 20ff
78-7394 802f 0820 fd94 9480 2608 20fd 8d6c
79-2660 0061 a11d 2000 1022 a006 1c34 6002
80-2680 0260 02b4 4000 1d23 2660 0219 6001
81-0320 0008 6002 a327 3540 0110 22a0 0a90
82-a00a 4f40 0334 0460 0011 6000 0e60 000b
83-60ff 68a0 061b 6002 8d80 00a0 4bba a126
84-a093 ba2b 2000 09a0 0a7f a00a 4760 030a
85-80e9 3315 6c2f 80e3 32a0 4bba 26a0 0003
86-38ef 6002 d720 000f a000 0338 6002 c3aa
87-20ff e922 a0ff ff23 626c 2660 ffd7 a11d
88-2000 0d22 80b5 3224 8001 a0ff ff40 ff96
89-236c 6002 8c20 026b 60ff 3f60 ffb7 6000
90-6b20 0009 a00a 88a0 0a4f 6002 ad60 0072
91-346c a006 1c34 a04b baa8 2000 3760 005b
92-2000 27b4 a001 0028 2000 1f26 a000 0338
93-9480 4119 801a 0b20 000f a00a 2660 0328
94-2660 0324 800a 60fa 9622 a000 0338 6002
95-4140 ffc5 2222 40fa 5326 a000 8038 0220
96-0001 6ca0 0a9a a00a 4f40 024e a11d 2000
97-0380 006c a121 1480 021c 6ca1 2114 8001
98-1c6c a121 af14 8001 1d6f 156c 2121 af14
99-8002 1d6f 156c 8017 3360 fe9e 60ff 3b60
100-ffd2 2000 1d26 6001 7160 001b 6000 18a0
101-0000 6000 12a0 0000 6000 0ca0 0305 3460
102-0005 60ff bd34 6c04 6000 00a0 1bba a126
103-a04b ba2b 2000 09a0 0a7f a00a 3260 01da
104-80e9 3315 6ca0 07ce 60ff ab03 6ca0 07d6
105-40ff a3a0 07dd 60ff 9da1 1d20 0004 2280
106-006c 6001 1560 000e 60ff 4e03 6ca0 07ec
107-60ff 8360 0104 2121 396c 80af 32a0 1bba
108-a820 0013 26a0 0987 35a6 a000 0438 342e
109-a000 0a38 40ff e922 226c b460 00e4 a121
110-3434 a11d 2000 06a0 0a88 4001 9b6c 60ff
111-e923 0340 009b 60ff e123 4000 9060 ffda
112-2434 60ff b160 000f 0340 0085 60ff cb24
113-3460 ffa2 4000 7626 a000 8038 0220 0001
114-6ca0 0a9a 4001 6126 a000 0338 34a0 cebb
115-2920 0002 226c a007 3635 6ca0 0871 4000
116-8560 fc44 4000 4a60 00ce 8002 0980 501f
117-8080 1d60 003b 6000 c880 0008 2000 1e60
118-00b6 0680 0209 2000 0802 6000 9603 4000
119-2080 0409 2000 0660 0089 4000 1022 a00a
120-88a0 0a68 4000 d360 0007 60ff 2004 6000
121-0060 0012 0720 000b 2202 a00a a2a0 0a77
122-4000 b740 f8a0 a001 00a1 80fa 33a1 a001
123-002b 2000 04a1 80f6 336c 80ea 326c 60ff
124-f938 80e2 336c 2f94 0620 0004 0222 626c
125-ef2e 2140 fff1 800f 1c80 0a8b 2000 0519
126-8061 186c 0280 3018 6c94 8030 1906 8009
127-0a0c 6c80 2719 0680 0a19 8005 0a0c 6c02
128-80ff 6ce0 0000 c040 7f60 ffdd c000 0f78
129-2194 20ff f122 6f6c a660 0016 2421 3903
130-6c26 60ff c401 2000 0514 8000 086c 2140
131-fff0 9420 0002 216c 2140 fff6 a660 fff2
132-2439 242f 2738 24a8 2000 0c94 d44f 0920
133-0005 2161 40ff f062 286c 800f 1620 0025
134-a001 0f17 6000 a180 2060 f813 6000 99a0
135-0a2f 6000 93a0 0040 6000 8da0 0305 34a0
136-0000 4000 4322 226c 800f 1620 0038 a001
137-0f17 a00a 3d60 0070 8020 60f7 e260 0068
138-a00a 2f60 0062 a000 00a1 2134 a000 0338
139-6000 5526 a000 0838 3424 a000 0638 34a0
140-0003 3840 0002 226c a00a 1860 003a 6000
141-3780 3a60 f7a9 6000 3580 0a60 f7a1 6c80
142-0f16 2000 1fa0 010f 1760 001c 8020 60f7
143-8e24 6000 13a0 0a2f 6000 0d60 000a 800a
144-60f7 7c6c 2222 226c a001 5f40 feb8 e0ff
145-00a0 000a bbaf 3a39 6f41 9d20 fff3 2203
146-8030 1860 f759 4758 cf20 fff3 626c 4173
147-7365 6d62 6c65 6400 2069 6e20 0020 6279
148-7465 732e 0a00 2d2d 2055 6e75 7365 643a
149-2000 5265 6665 7265 6e63 6573 0052 6566
150-6572 656e 6365 0053 796d 626f 6c73 0053
151-796d 626f 6c00 4d61 6372 6f73 004d 6163
152-726f 004e 616d 6500 4e75 6d62 6572 0043
153-6f6d 6d65 6e74 0057 7269 7469 6e67 0065
154-7863 6565 6465 6400 696e 7661 6c69 6400
155-6475 706c 6963 6174 6500 746f 6f20 6661
156-7200 7a65 726f 2d70 6167 6500 6f70 656e
157-002e 2e00 5245 5345 54
M
makefile
+15,
-15
1@@ -24,7 +24,7 @@ install: bin/uxn11
2 uninstall:
3 rm -f ${PREFIX}/bin/uxn11
4 grab:
5- cp ../drifblim/etc/drifloon.rom.txt etc/utils/
6+ cp ../drifblim/etc/drifblim.rom.txt etc/utils/
7 cp ../uxn-utils/cli/opctest/src/opctest.tal etc/tests/
8 archive:
9 cp src/uxn11.c ../oscean/etc/uxn11.c.txt
10@@ -46,22 +46,22 @@ bin/uxn11-debug: src/uxn11.c
11
12 # Tools
13
14-bin/drifloon.rom: bin/uxn11 etc/utils/drifloon.rom.txt
15- @ cat etc/utils/drifloon.rom.txt | ./bin/uxn11 etc/utils/xh.rom > bin/drifloon.rom
16+bin/drifblim.rom: bin/uxn11 etc/utils/drifblim.rom.txt
17+ @ cat etc/utils/drifblim.rom.txt | ./bin/uxn11 etc/utils/xh.rom > bin/drifblim.rom
18
19 # Tests
20
21 tests: bin/opctest.rom bin/system.rom bin/console.rom bin/perifs.rom bin/file.rom bin/datetime.rom
22
23-bin/opctest.rom: bin/uxn11 bin/drifloon.rom etc/tests/opctest.tal
24- @ cat etc/tests/opctest.tal | bin/uxn11 bin/drifloon.rom > bin/opctest.rom
25-bin/system.rom: bin/uxn11 bin/drifloon.rom etc/tests/system.tal
26- @ cat etc/tests/system.tal | bin/uxn11 bin/drifloon.rom > bin/system.rom
27-bin/console.rom: bin/uxn11 bin/drifloon.rom etc/tests/console.tal
28- @ cat etc/tests/console.tal | bin/uxn11 bin/drifloon.rom > bin/console.rom
29-bin/perifs.rom: bin/uxn11 bin/drifloon.rom etc/tests/perifs.tal
30- @ cat etc/tests/perifs.tal | bin/uxn11 bin/drifloon.rom > bin/perifs.rom
31-bin/file.rom: bin/uxn11 bin/drifloon.rom etc/tests/file.tal
32- @ cat etc/tests/file.tal | bin/uxn11 bin/drifloon.rom > bin/file.rom
33-bin/datetime.rom: bin/uxn11 bin/drifloon.rom etc/tests/datetime.tal
34- @ cat etc/tests/datetime.tal | bin/uxn11 bin/drifloon.rom > bin/datetime.rom
35+bin/opctest.rom: bin/uxn11 bin/drifblim.rom etc/tests/opctest.tal
36+ @ bin/uxn11 bin/drifblim.rom etc/tests/opctest.tal bin/opctest.rom
37+bin/system.rom: bin/uxn11 bin/drifblim.rom etc/tests/system.tal
38+ @ bin/uxn11 bin/drifblim.rom etc/tests/system.tal bin/system.rom
39+bin/console.rom: bin/uxn11 bin/drifblim.rom etc/tests/console.tal
40+ @ bin/uxn11 bin/drifblim.rom etc/tests/console.tal bin/console.rom
41+bin/perifs.rom: bin/uxn11 bin/drifblim.rom etc/tests/perifs.tal
42+ @ bin/uxn11 bin/drifblim.rom etc/tests/perifs.tal bin/perifs.rom
43+bin/file.rom: bin/uxn11 bin/drifblim.rom etc/tests/file.tal
44+ @ bin/uxn11 bin/drifblim.rom etc/tests/file.tal bin/file.rom
45+bin/datetime.rom: bin/uxn11 bin/drifblim.rom etc/tests/datetime.tal
46+ @ bin/uxn11 bin/drifblim.rom etc/tests/datetime.tal bin/datetime.rom