main pita/uxn12 / etc / tests / perifs.tal
  1( 54K . Perifs
  2| Controller: Buttons should highlight on press and display the button and key bytes.
  3| Mouse: Buttons should highlight on press and display the x and y position. )
  4
  5|00 @System/vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1
  6|20 @Screen/vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
  7|80 @Controller/vector $2 &button $1 &key $1
  8|90 @Mouse/vector $2 &x $2 &y $2 &state $1 &pad $3 &scrollx $2 &scrolly $2
  9|0050 @Varvara/version
 10
 11|000
 12
 13	@center/x $2 &y $2
 14	@wheel/y $1 &y-lo $1
 15
 16|100
 17
 18@on-reset ( -> )
 19	;meta #06 DEO2
 20	( | Set size )
 21	#0180 .Screen/width DEO2
 22	#0180 .Screen/height DEO2
 23	( | Theme )
 24	#0f0f .System/r DEO2
 25	#00ff .System/g DEO2
 26	#00ff .System/b DEO2
 27	( | Wipe layers )
 28	#0000 DUP2 .Screen/x DEO2
 29	.Screen/y DEO2
 30	[ LIT2 80 -Screen/pixel ] DEO
 31	[ LIT2 c0 -Screen/pixel ] DEO
 32	( | Blank vectors )
 33	#0000 #00 &l DEO2k #10 ADD DUP [ ?&l POP POP2 ]
 34	( | Halt recover )
 35	[ LIT2 80 -System/halt ] DEO
 36	[ LIT2 01 -System/halt ] DEO
 37	[ LIT2 00 -System/halt ] DEO
 38	( | Distant pixels )
 39	#8000 .Screen/x DEO2
 40	#8000 .Screen/y DEO2
 41	[ LIT2 00 -Screen/pixel ] DEO
 42	[ LIT2 40 -Screen/pixel ] DEO
 43	[ LIT2 80 -Screen/pixel ] DEO
 44	[ LIT2 c0 -Screen/pixel ] DEO
 45	[ LIT2 d0 -Screen/pixel ] DEO
 46	[ LIT2 e0 -Screen/pixel ] DEO
 47	[ LIT2 f0 -Screen/pixel ] DEO
 48	( | Find center )
 49	.Screen/width DEI2 #01 SFT2 .center/x STZ2
 50	.Screen/height DEI2 #01 SFT2 .center/y STZ2
 51	controller/<draw>
 52	mouse/<draw>
 53	smile/<draw-all>
 54	;controller/on-event .Controller/vector DEO2
 55	;mouse/on-event .Mouse/vector DEO2
 56	BRK
 57
 58@meta 00 "Perifs 0a
 59	( details ) "A 20 "Peripherals 20 "Test 0a
 60	( author ) "By 20 "Hundred 20 "Rabbits 0a
 61	( date ) "10 20 "Jul 20 "2026 00
 62	( . ) 02
 63	( - ) 56 =Varvara/version
 64	( - ) 83 =appicon
 65
 66%Screen/<mod-x> ( x* -- ) {
 67	.Screen/x DEI2 ADD2 .Screen/x DEO2 }
 68
 69%Screen/<mod-y> ( x* -- ) {
 70	.Screen/y DEI2 ADD2 .Screen/y DEO2 }
 71
 72%Screen/<mod> ( x* y* -- ) {
 73	Screen/<mod-y>
 74	Screen/<mod-x> }
 75
 76%u8/mod ( a b -- res ) {
 77	DIVk MUL SUB }
 78
 79(
 80@|Controller )
 81
 82@controller/on-event ( -> )
 83	/<draw>
 84	( | print stack on start button )
 85	[ LIT2 08 -Controller/button ] DEI
 86	( | handlers )
 87	DUP ?{ smile/<next> }
 88	NEQ ?{ #010e DEO }
 89	BRK
 90
 91@controller/<draw> ( -- )
 92	.Controller/button DEI2
 93	( | background )
 94	.center/x LDZ2 #0040 SUB2 .Screen/x DEO2
 95	.center/y LDZ2 #0040 SUB2 .Screen/y DEO2
 96	#03f9 ;&icns #f6 <draw-times>
 97	( | output )
 98	#0010 #ffb0 Screen/<mod>
 99	DUP2 hex/<draw-short>
100	( | A button )
101	OVR #01 AND #00 EQU ?{
102		.center/x LDZ2 #0028 ADD2 .Screen/x DEO2
103		.center/y LDZ2 #0020 SUB2 .Screen/y DEO2
104		#03fe ;large/icns #16 <draw-times> }
105	( | B button )
106	OVR #02 AND #00 EQU ?{
107		.center/x LDZ2 #0010 ADD2 .Screen/x DEO2
108		.center/y LDZ2 #0020 SUB2 .Screen/y DEO2
109		#03fe ;large/icns #16 <draw-times> }
110	( | C button )
111	OVR #04 AND #00 EQU ?{
112		.center/x LDZ2 #0008 SUB2 .Screen/x DEO2
113		.center/y LDZ2 #0018 SUB2 .Screen/y DEO2
114		#03ff ;small/icn #16 <draw-times> }
115	( | S button )
116	OVR #08 AND #00 EQU ?{
117		.center/x LDZ2 #0018 SUB2 .Screen/x DEO2
118		.center/y LDZ2 #0018 SUB2 .Screen/y DEO2
119		#03ff ;small/icn #16 <draw-times> }
120	( | Up arrow )
121	OVR #10 AND #00 EQU ?{
122		.center/x LDZ2 #0030 SUB2 .Screen/x DEO2
123		.center/y LDZ2 #0028 SUB2 .Screen/y DEO2
124		#0fff ;arrow/icn #00 <draw-times> }
125	( | Down arrow )
126	OVR #20 AND #00 EQU ?{
127		.center/x LDZ2 #0030 SUB2 .Screen/x DEO2
128		.center/y LDZ2 #0018 SUB2 .Screen/y DEO2
129		#0fff ;arrow/icn #00 <draw-times> }
130	( | Left arrow )
131	OVR #40 AND #00 EQU ?{
132		.center/x LDZ2 #0038 SUB2 .Screen/x DEO2
133		.center/y LDZ2 #0020 SUB2 .Screen/y DEO2
134		#0fff ;arrow/icn #00 <draw-times> }
135	( | Right arrow )
136	OVR #80 AND #00 EQU ?{
137		.center/x LDZ2 #0028 SUB2 .Screen/x DEO2
138		.center/y LDZ2 #0020 SUB2 .Screen/y DEO2
139		#0fff ;arrow/icn #00 <draw-times> }
140	POP2 JMP2r
141
142(
143@|Mouse )
144
145@mouse/on-event ( -> )
146	[ LIT2 &last $1 -Mouse/state ] DEI DUP ,&last STR
147	EQUk ?{
148		DUP #00 EQU ?{ smile/<next> } }
149	POP2 /<draw>
150	/<draw-cursor>
151	BRK
152
153@mouse/<draw-cursor> ( -- )
154	[ LIT2 00 -Screen/auto ] DEO
155	;&cursor-icn .Screen/addr DEO2
156	[ LIT2 &last-x $2 ] .Screen/x DEO2
157	[ LIT2 &last-y $2 ] .Screen/y DEO2
158	[ LIT2 40 -Screen/sprite ] DEO
159	.Mouse/x DEI2 #0003 SUB2 DUP2 ,&last-x STR2
160	.Screen/x DEO2
161	.Mouse/y DEI2 #0003 SUB2 DUP2 ,&last-y STR2
162	.Screen/y DEO2
163	[ LIT2 43 -Screen/sprite ] DEO
164	JMP2r
165
166@mouse/<draw> ( -- )
167	.center/x LDZ2 #0040 SUB2 .Screen/x DEO2
168	.center/y LDZ2 #0020 ADD2 .Screen/y DEO2
169	#03fc ;&icns #f6 <draw-times>
170	( | output )
171	#0010 #ffd0 Screen/<mod>
172	[ LIT2 01 -Screen/auto ] DEO
173	.Mouse/state DEI DUP hex/<draw-byte>
174	( | x )
175	#0018 Screen/<mod-x>
176	.Mouse/x DEI2 hex/<draw-short>
177	( | y )
178	#0008 Screen/<mod-x>
179	.Mouse/y DEI2 hex/<draw-short>
180	( | mouse 1 )
181	DUP #01 AND #00 EQU ?{
182		.center/x LDZ2 #0040 SUB2 .Screen/x DEO2
183		.center/y LDZ2 #0022 ADD2 .Screen/y DEO2
184		#0fff ;&tip-icn #16 <draw-times> }
185	( | mouse 2 )
186	DUP #02 AND #00 EQU ?{
187		.center/x LDZ2 #0028 SUB2 .Screen/x DEO2
188		.center/y LDZ2 #0022 ADD2 .Screen/y DEO2
189		#0fff ;small/icn #16 <draw-times> }
190	( | mouse 3 )
191	DUP #04 AND #00 EQU ?{
192		.center/x LDZ2 #0018 SUB2 .Screen/x DEO2
193		.center/y LDZ2 #0022 ADD2 .Screen/y DEO2
194		#0fff ;small/icn #16 <draw-times> }
195	POP !wheel/<redraw>
196
197@wheel/<redraw> ( -- )
198	.center/x LDZ2 #0047 ADD2 .Screen/x DEO2
199	.center/y LDZ2 #0010 ADD2 .Screen/y DEO2
200	[ LIT2 01 -Screen/auto ] DEO
201	.&y-lo LDZ hex/<draw-byte>
202	( | wheel )
203	.center/x LDZ2 #0048 ADD2 .Screen/x DEO2
204	.center/y LDZ2 #0020 ADD2 .Screen/y DEO2
205	#03ff ;&icns #16 <draw-times>
206	#03ff ;&icns2 #16 <draw-times>
207	.&y LDZ2k .Mouse/scrolly DEI2 ADD2 ROT STZ2
208	.&y LDZ2 DUP2 #0010 ADD2 /offset
209	( >> )
210	&offset ( wheelpos* -- )
211	DUP2 #001f AND2 .center/x LDZ2 #0048 ADD2 /load .Screen/x DEO2
212	#0018 ADD2 #001f AND2 .center/y LDZ2 #0020 ADD2 /load .Screen/y DEO2
213	[ LIT2 03 -Screen/pixel ] DEO
214	JMP2r
215
216	&load ( offset* base* -- coord* )
217	SWP2 ;&offsets ADD2 LDA #00 SWP ADD2 JMP2r
218
219(
220@|Smile )
221
222@smile/<next> ( -- )
223	[ LIT &ptr $1 ] INCk ,&ptr STR
224	[ LIT2 00 -Screen/auto ] DEO
225	#0a u8/mod
226	( | draw )
227	#0020 .Screen/x DEO2
228	.Screen/height DEI2 #0018 SUB2 .Screen/y DEO2
229	DUP hex/<draw-byte>
230	/<clear>
231	#00 SWP DUP ADD ;&lut ADD2 LDA2 JMP2
232
233@smile/<draw-all> ( -- )
234	;&lut-end ;&lut
235	&>l
236		/<clear>
237		LDA2k JSR2 INC2 INC2 GTH2k ?&>l
238	POP2 POP2 JMP2r
239
240@smile/<set-pos> ( -- )
241	#0010 .Screen/x DEO2
242	.Screen/height DEI2 #0020 SUB2 .Screen/y DEO2
243	JMP2r
244
245@smile/<clear> ( -- )
246	[ LIT2 11 -Screen/auto ] DEO
247	( | bg )
248	/<set-pos>
249	;hash .Screen/addr DEO2
250	[ LIT2 03 -Screen/sprite ] DEOk DEO
251	( | fg )
252	/<set-pos>
253	;fill .Screen/addr DEO2
254	[ LIT2 40 -Screen/sprite ] DEOk DEO
255	JMP2r
256
257@smile/<draw-0> ( Draw 1bpp four times by moving x,y )
258	/<set-pos>
259	[ LIT2 00 -Screen/auto ] DEO
260	( a ) ;&hor-a .Screen/addr DEO2
261	[ LIT2 03 -Screen/sprite ] DEO
262	#0008 Screen/<mod-x>
263	( b ) ;&hor-b .Screen/addr DEO2
264	[ LIT2 03 -Screen/sprite ] DEO
265	#fff8 #0008 Screen/<mod>
266	( c ) ;&hor-c .Screen/addr DEO2
267	[ LIT2 03 -Screen/sprite ] DEO
268	#0008 #0000 Screen/<mod>
269	( d ) ;&hor-d .Screen/addr DEO2
270	[ LIT2 03 -Screen/sprite ] DEO
271	JMP2r
272
273@smile/<draw-1> ( Draw 1bpp two times using addr-y )
274	/<set-pos>
275	[ LIT2 16 -Screen/auto ] DEO
276	;&hor .Screen/addr DEO2
277	[ LIT2 03 -Screen/sprite ] DEOk DEO
278	JMP2r
279
280@smile/<draw-2> ( Draw 1bpp two times using addr-x )
281	/<set-pos>
282	[ LIT2 15 -Screen/auto ] DEO
283	;&ver .Screen/addr DEO2
284	[ LIT2 03 -Screen/sprite ] DEOk DEO
285	JMP2r
286
287@smile/<draw-3> ( Draw 1bpp-flipx two times using addr-y )
288	/<set-pos>
289	#0008 #0000 Screen/<mod>
290	[ LIT2 16 -Screen/auto ] DEO
291	;&horx .Screen/addr DEO2
292	[ LIT2 13 -Screen/sprite ] DEOk DEO
293	JMP2r
294
295@smile/<draw-4> ( Draw 1bpp-flipy two times using addr-x )
296	/<set-pos>
297	#0000 #0008 Screen/<mod>
298	[ LIT2 15 -Screen/auto ] DEO
299	;&very .Screen/addr DEO2
300	[ LIT2 23 -Screen/sprite ] DEOk DEO
301	JMP2r
302
303@smile/<draw-5> ( Draw 2bpp two times using addr-x )
304	/<set-pos>
305	[ LIT2 15 -Screen/auto ] DEO
306	;&2bpp .Screen/addr DEO2
307	[ LIT2 81 -Screen/sprite ] DEOk DEO
308	JMP2r
309
310@smile/<draw-6> ( Draw 1bpp, once for the outline, once for the face )
311	/<set-pos>
312	[ LIT2 16 -Screen/auto ] DEO
313	;&outline .Screen/addr DEO2
314	[ LIT2 03 -Screen/sprite ] DEOk DEO
315	#0000 #fff0 Screen/<mod>
316	;&face .Screen/addr DEO2
317	[ LIT2 0f -Screen/sprite ] DEOk DEO
318	JMP2r
319
320@smile/<draw-7> ( Draw 1bpp, once for the outline, once for the face in fg )
321	/<set-pos>
322	[ LIT2 16 -Screen/auto ] DEO
323	;&outline .Screen/addr DEO2
324	[ LIT2 03 -Screen/sprite ] DEOk DEO
325	#0000 #fff0 Screen/<mod>
326	;&face .Screen/addr DEO2
327	[ LIT2 43 -Screen/sprite ] DEOk DEO
328	JMP2r
329
330@smile/<draw-8> ( Draw using pixels )
331	/<set-pos>
332	;&hor-a icn/<draw-tile>
333	#0008 #fff8 Screen/<mod>
334	;&hor-b icn/<draw-tile>
335	#fff8 #0000 Screen/<mod>
336	;&hor-c icn/<draw-tile>
337	#0008 #fff8 Screen/<mod>
338	;&hor-d !icn/<draw-tile>
339
340@smile/<draw-9> ( Draw offscreen origin )
341	/<set-pos>
342	.Screen/x DEI2 #0030 SUB2 .Screen/x DEO2
343	;&offscreen .Screen/addr DEO2
344	[ LIT2 76 -Screen/auto ] DEO
345	[ LIT2 03 -Screen/sprite ] DEOk DEO
346	JMP2r
347
348@smile/lut [
349	=/<draw-0> =/<draw-1> =/<draw-2> =/<draw-3>
350	=/<draw-4> =/<draw-5> =/<draw-6> =/<draw-7>
351	=/<draw-8> =/<draw-9> ] &lut-end
352
353@icn/<draw-tile> ( addr* -- )
354	[ LIT2 01 -Screen/auto ] DEO
355	DUP2 #0008 ADD2 SWP2
356	&>v
357		LDAk /<draw-row>
358		#fff8 #0001 Screen/<mod>
359		INC2 GTH2k ?&>v
360	POP2 POP2 JMP2r
361
362@icn/<draw-row> ( byte -- )
363	STH
364	#ff07
365	&>h
366		STHkr OVR SFT #01 AND #03 MUL .Screen/pixel DEO
367		#01 SUB NEQk ?&>h
368	POP2 POPr JMP2r
369
370(
371@|Generics )
372
373@<draw-times> ( color times addr* auto -- )
374	.Screen/auto DEO
375	.Screen/addr DEO2
376	SWP STH
377	[ LITr -Screen/sprite ]
378	&>l
379		DEOkr
380		INC DUP ?&>l
381	POP POP2r JMP2r
382
383@hex/<draw-short> ( short* -- )
384	[ LIT2 01 -Screen/auto ] DEO
385	SWP /<draw-byte>
386	( >> )
387
388@hex/<draw-byte> ( byte -- )
389	DUP #04 SFT /<draw-char>
390	( >> )
391
392@hex/<draw-char> ( char -- )
393	#00 SWP #0f AND #30 SFT2 ;&icns ADD2 .Screen/addr DEO2
394	[ LIT2 03 -Screen/sprite ] DEO
395	JMP2r
396
397(
398@|Assets )
399
400@hash [ aa55 aa55 aa55 aa55 ]
401
402@fill [ ffff ffff ffff ffff ]
403
404@appicon [
405	0000 0000 0000 0000 0000 0000 0000 0000
406	0000 0000 0000 0000 0000 0000 0000 0000
407	0000 0000 0000 0000 0000 0000 0000 0000
408	0001 0201 0000 0000 0000 0000 0000 0000
409	8143 2743 8100 817e 0000 0000 0000 0000
410	0080 c080 0000 0000 0000 0000 0000 0000
411	0000 0000 0000 0000 0000 0000 0000 0000
412	0000 0000 0000 0000 0000 0000 0000 0000
413	0000 0000 0000 0000 0000 0000 0000 0000 ]
414
415@wheel/offsets [
416	07 08 09 0a 0b 0b 0c 0c 0c 0c 0c 0b 0b 0a 09 08
417	07 06 05 04 03 03 02 02 02 02 02 03 03 04 05 06 ]
418	&icns [ 0718 2040 4080 8081 c030 0804 0402 0202 ]
419	&icns2 [ 8080 4040 2018 0700 0202 0404 0830 c000 ]
420
421@arrow/icn [ 187e 7eff ff7e 7e18 ]
422
423@small/icn [ 0000 001f 3f3f 3f1f 0000 00f8 fcfc fcf8 ]
424
425@large/icns [
426	071f 3f7f 7fff ffff e0f8 fcfe feff ffff
427	ffff ff7f 7f3f 1f07 ffff fffe fefc f8e0 ]
428
429@controller/icns [
430	0000 0f30 4040 8080 0000 ff00 0000 0000
431	0042 8100 0000 0000 0000 ff00 0000 0000
432	0000 ff00 0000 0000 0000 ff00 0000 0000
433	0000 ff00 0000 0000 0000 ff00 0000 0000
434	0000 ff00 0000 0000 0000 ff00 0000 0000
435	0000 ff00 0000 0000 0000 ff00 0000 0000
436	0000 ff00 0000 0000 0000 ff00 0000 0000
437	0000 ff00 0000 0000 0000 f00c 0202 0101
438	8080 8080 8080 8080 0000 0000 0000 0000
439	0000 0000 0000 0000 0000 0000 0000 0000
440	0000 0000 0000 0000 0000 0000 0000 0000
441	0000 0000 0000 0000 0000 0000 0000 0000
442	0000 0000 0000 0000 0000 0000 0000 0000
443	0000 0000 0000 0000 0000 0000 0000 0000
444	0000 0000 0000 0000 0000 0000 0000 0000
445	0000 0000 0000 0000 0101 0101 0101 0101
446	8080 8080 8080 8080 0000 0000 0000 0000
447	0000 0000 0000 0018 0000 0000 0000 0000
448	0000 0000 0000 0000 0000 0000 0000 0000
449	0000 0000 0000 0000 0000 0000 0000 0000
450	0000 0000 0000 0000 0000 0000 0000 0000
451	0000 0000 0000 0302 0000 0000 0000 8040
452	0000 0000 0000 0000 0000 0000 0000 0102
453	0000 0000 0000 8040 0101 0101 0101 0101
454	8080 8080 8080 8080 0000 0001 0101 011f
455	6681 8100 0000 0000 0000 0080 8080 80f8
456	0000 0000 0000 0000 0000 0000 0000 0000
457	0000 0000 0000 0000 0000 0000 0000 0000
458	0000 0000 0000 0000 0000 0000 0000 0000
459	0203 0202 0300 0000 4080 4040 8000 0000
460	0000 0000 0000 0000 0203 0202 0200 0000
461	40c0 4040 4000 0000 0101 0101 0101 0101
462	8080 8081 8180 8080 6080 8000 0080 8060
463	0000 0000 0000 0000 0601 0100 0001 0106
464	0000 0080 8000 0000 0001 0202 0100 0201
465	0080 4000 8040 4080 0001 0202 0202 0201
466	0080 4000 0000 4080 0000 0000 0000 0000
467	0718 2040 4080 8080 e018 0402 0201 0101
468	0000 0000 0000 0000 0718 2040 4080 8080
469	e018 0402 0201 0101 0101 0101 0101 0101
470	8080 8080 8080 8080 1f01 0101 0100 0000
471	0000 0000 0081 8166 f880 8080 8000 0000
472	0000 0000 0000 0000 0000 001f 2020 201f
473	0000 00f8 0404 04f8 0000 001f 2020 201f
474	0000 00f8 0404 04f8 0000 0000 0000 0000
475	8080 8040 4020 1807 0101 0102 0204 18e0
476	0000 0000 0000 0000 8080 8040 4020 1807
477	0101 0102 0204 18e0 0101 0101 0101 0101
478	8080 8080 4040 300f 0000 0000 0000 00ff
479	1800 0000 0000 00ff 0000 0000 0000 00ff
480	0000 0000 0000 00ff 0000 0000 0000 00ff
481	0000 0000 0000 00ff 0000 0000 0000 00ff
482	0000 0000 0000 00ff 0000 0000 0000 00ff
483	0000 0000 0000 00ff 0000 0000 0000 00ff
484	0000 0000 0000 00ff 0000 0000 0000 00ff
485	0000 0000 0000 00ff 0101 0101 0202 0cf0 ]
486
487@mouse/icns [
488	0000 0001 0618 6482 0718 6080 0000 0000
489	e01f 0000 0000 0000 00c0 3f00 001f 2020
490	0000 ff00 00f8 0404 0000 ff00 001f 2020
491	0000 ff00 00f8 0404 0000 ff00 0000 0000
492	0000 ff00 0000 0000 0000 ff00 0000 0000
493	0000 ff00 0000 0000 0000 ff00 0000 0000
494	0000 ff00 0000 0000 0000 ff00 0000 0000
495	0000 ff00 0000 0000 0000 c03e 0101 0101
496	6418 0601 0000 0000 0000 0080 6018 0700
497	0000 0000 001f e000 201f 0000 3fc0 0000
498	04f8 0000 ff00 0000 201f 0000 ff00 0000
499	04f8 0000 ff00 0000 0000 0000 ff00 0000
500	0000 0000 ff00 0000 0000 0000 ff00 0000
501	0000 0000 ff00 0000 0000 0000 ff00 0000
502	0000 0000 ff00 0000 0000 0000 ff00 0000
503	0000 0000 ff00 0000 0101 013e c000 0000
504	0000 6090 90f0 9090 0000 0000 0000 0000
505	0000 0000 0000 0000 0000 0302 0203 0202
506	0000 8040 4080 4040 0000 0102 0202 0202
507	0000 8040 0000 0040 0000 0000 0000 0000
508	0000 0000 0000 0000 0000 0000 0000 0000
509	0000 0000 0000 0000 0000 0000 0000 0000
510	0000 0000 0000 0000 0000 0000 0000 0000
511	0000 0000 0000 0000 0000 0000 0000 0000
512	9000 0000 0000 0000 0000 0000 0000 0000
513	0000 0000 0000 0000 0300 0000 0000 0000
514	8000 0000 0000 0000 0100 0000 0000 0000
515	8000 0000 0000 0000 0000 0000 0000 0000
516	0000 0000 0000 0000 0000 0000 0000 0000
517	0000 0000 0000 0000 0000 0000 0000 0000
518	0000 0000 0000 0000 0000 0000 0000 0000
519	0000 0000 0000 0000 0000 0000 0000 0000 ]
520	&tip-icn [ 0000 0000 187c 1800 $8 ]
521	&cursor-icn [ 1010 10ee 1010 1000 ]
522
523@hex/icns [
524	0018 2424 2424 2418 0008 1808 0808 0808
525	0018 2404 1820 203c 0018 2404 1804 2418
526	0024 2424 1c04 0404 003c 2020 1804 2418
527	0018 2420 3824 2418 003c 0408 1010 1010
528	0018 2424 1824 2418 0018 2424 1c04 2418
529	0018 2424 3c24 2424 0038 2424 3824 2438
530	0018 2420 2020 2418 0038 2424 2424 2438
531	001c 2020 3820 201c 001c 2020 3820 2020 ]
532
533@smile/hor
534	&hor-a [ 030c 1020 4040 889c ]
535	&hor-b [ c030 0804 0202 1129 ]
536	&hor-c [ 8880 4443 2010 0c03 ]
537	&hor-d [ 1101 22c2 0408 30c0 ]
538
539@smile/horx [
540	030c 1020 4040 8894 c030 0804 0202 1139
541	8880 4443 2010 0c03 1101 22c2 0408 30c0 ]
542
543@smile/very [
544	030c 1020 4344 8088 9c88 4040 2010 0c03
545	c030 0804 c222 0111 2911 0202 0408 30c0 ]
546
547@smile/ver [
548	030c 1020 4040 889c 8880 4443 2010 0c03
549	c030 0804 0202 1129 1101 22c2 0408 30c0 ]
550
551@smile/2bpp [
552	030c 1020 4040 889c 030c 1020 4040 889c
553	8880 4443 2010 0c03 8880 4443 2010 0c03
554	c030 0804 0202 1129 c030 0804 0202 1129
555	1101 22c2 0408 30c0 1101 22c2 0408 30c0 ]
556
557@smile/outline [
558	030c 1020 4040 8080 c030 0804 0202 0101
559	8080 4040 2010 0c03 0101 0202 0408 30c0 ]
560
561@smile/face [
562	0000 0000 0000 081c 0000 0000 0000 1028
563	0800 0403 0000 0000 1000 20c0 0000 0000 ]
564
565@smile/offscreen [
566	aa55 aa55 aa55 aa55 0000 0000 0000 0000
567	0000 0000 0000 0000 0000 0000 0000 0000
568	0000 0000 0000 0000 0000 0000 0000 0000
569	030c 1020 4040 889c c030 0804 0202 1129
570	aa55 aa55 aa55 aa55 0000 0000 0000 0000
571	0000 0000 0000 0000 0000 0000 0000 0000
572	0000 0000 0000 0000 0000 0000 0000 0000
573	8880 4443 2010 0c03 1101 22c2 0408 30c0 ]
574