( Controller: Buttons should highlight on press and display the button and key bytes. ) |00 @System/vector $2 &wst $1 &rst $1 &pad $4 &r $2 &g $2 &b $2 &debug $1 &halt $1 |20 @Screen/vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |80 @Controller/vector $2 &button $1 &key $1 |000 @center/x $2 &y $2 |100 @on-reset ( -> ) ( | theme ) #0fff .System/r DEO2 #0f0f .System/g DEO2 #0f0f .System/b DEO2 ( | find center ) .Screen/width DEI2 #01 SFT2 .center/x STZ2 .Screen/height DEI2 #01 SFT2 .center/y STZ2 controller/ ;on-button .Controller/vector DEO2 BRK @on-button ( -> ) controller/ ( | print stack on start button ) [ LIT2 08 -Controller/button ] DEI NEQ ?{ #010e DEO } BRK ( @|Controller ) @controller/ ( -- ) .Controller/button DEI2 ( | background ) .center/x LDZ2 #0040 SUB2 .Screen/x DEO2 .center/y LDZ2 #0020 SUB2 .Screen/y DEO2 #01f9 ;&icns #f6 ( | output ) .Screen/x DEI2 #0010 ADD2 .Screen/x DEO2 .Screen/y DEI2 #0050 SUB2 .Screen/y DEO2 DUP2 hex/ ( | A button ) OVR #01 AND #00 EQU ?{ .center/x LDZ2 #0028 ADD2 .Screen/x DEO2 .center/y LDZ2 .Screen/y DEO2 #01fe ;large/icns #16 } ( | B button ) OVR #02 AND #00 EQU ?{ .center/x LDZ2 #0010 ADD2 .Screen/x DEO2 .center/y LDZ2 .Screen/y DEO2 #01fe ;large/icns #16 } ( | C button ) OVR #04 AND #00 EQU ?{ .center/x LDZ2 #0008 SUB2 .Screen/x DEO2 .center/y LDZ2 #0008 ADD2 .Screen/y DEO2 #01ff ;small/icn #16 } ( | S button ) OVR #08 AND #00 EQU ?{ .center/x LDZ2 #0018 SUB2 .Screen/x DEO2 .center/y LDZ2 #0008 ADD2 .Screen/y DEO2 #01ff ;small/icn #16 } ( | Up arrow ) OVR #10 AND #00 EQU ?{ .center/x LDZ2 #0030 SUB2 .Screen/x DEO2 .center/y LDZ2 #0008 SUB2 .Screen/y DEO2 #05ff ;arrow/icn #00 } ( | Down arrow ) OVR #20 AND #00 EQU ?{ .center/x LDZ2 #0030 SUB2 .Screen/x DEO2 .center/y LDZ2 #0008 ADD2 .Screen/y DEO2 #05ff ;arrow/icn #00 } ( | Left arrow ) OVR #40 AND #00 EQU ?{ .center/x LDZ2 #0038 SUB2 .Screen/x DEO2 .center/y LDZ2 .Screen/y DEO2 #05ff ;arrow/icn #00 } ( | Right arrow ) OVR #80 AND #00 EQU ?{ .center/x LDZ2 #0028 SUB2 .Screen/x DEO2 .center/y LDZ2 .Screen/y DEO2 #05ff ;arrow/icn #00 } POP2 JMP2r @ ( color times addr* auto -- ) .Screen/auto DEO .Screen/addr DEO2 SWP STH [ LITr -Screen/sprite ] &>l DEOkr INC DUP ?&>l POP POP2r JMP2r ( @|drawing ) @hex/ ( short* -- ) [ LIT2 01 -Screen/auto ] DEO SWP / ( >> ) @hex/ ( byte -- ) DUP #04 SFT / ( >> ) @hex/ ( char -- ) #00 SWP #0f AND #30 SFT2 ;&icns ADD2 .Screen/addr DEO2 [ LIT2 03 -Screen/sprite ] DEO JMP2r ( @|assets ) @large/icns [ 071f 3f7f 7fff ffff e0f8 fcfe feff ffff ffff ff7f 7f3f 1f07 ffff fffe fefc f8e0 ] @small/icn [ 0000 001f 3f3f 3f1f 0000 00f8 fcfc fcf8 ] @arrow/icn [ 187e 7eff ff7e 7e18 ] @controller/icns [ 0000 0f30 4040 8080 0000 ff00 0000 0000 0042 8100 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 ff00 0000 0000 0000 f00c 0202 0101 8080 8080 8080 8080 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0101 0101 0101 0101 8080 8080 8080 8080 0000 0000 0000 0000 0000 0000 0000 0018 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0302 0000 0000 0000 8040 0000 0000 0000 0000 0000 0000 0000 0102 0000 0000 0000 8040 0101 0101 0101 0101 8080 8080 8080 8080 0000 0001 0101 011f 6681 8100 0000 0000 0000 0080 8080 80f8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0203 0202 0300 0000 4080 4040 8000 0000 0000 0000 0000 0000 0203 0202 0200 0000 40c0 4040 4000 0000 0101 0101 0101 0101 8080 8081 8180 8080 6080 8000 0080 8060 0000 0000 0000 0000 0601 0100 0001 0106 0000 0080 8000 0000 0001 0202 0100 0201 0080 4000 8040 4080 0001 0202 0202 0201 0080 4000 0000 4080 0000 0000 0000 0000 0718 2040 4080 8080 e018 0402 0201 0101 0000 0000 0000 0000 0718 2040 4080 8080 e018 0402 0201 0101 0101 0101 0101 0101 8080 8080 8080 8080 1f01 0101 0100 0000 0000 0000 0081 8166 f880 8080 8000 0000 0000 0000 0000 0000 0000 001f 2020 201f 0000 00f8 0404 04f8 0000 001f 2020 201f 0000 00f8 0404 04f8 0000 0000 0000 0000 8080 8040 4020 1807 0101 0102 0204 18e0 0000 0000 0000 0000 8080 8040 4020 1807 0101 0102 0204 18e0 0101 0101 0101 0101 8080 8080 4040 300f 0000 0000 0000 00ff 1800 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0000 0000 0000 00ff 0101 0101 0202 0cf0 ] @hex/icns [ 0018 2424 2424 2418 0008 1808 0808 0808 0018 2404 1820 203c 0018 2404 1804 2418 0024 2424 1c04 0404 003c 2020 1804 2418 0018 2420 3824 2418 003c 0408 1010 1010 0018 2424 1824 2418 0018 2424 1c04 2418 0018 2424 3c24 2424 0038 2424 3824 2438 0018 2420 2020 2418 0038 2424 2424 2438 001c 2020 3820 201c 001c 2020 3820 2020 ]