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+	&times ( -- )
 57+		[ LIT2 &color $1 -Screen/sprite ] DEO
 58+		INC DUP ?&times
 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
+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