( uxnemu sliderule.rom ) |00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2 |10 @Console &vector $2 &read $1 &pad $5 &write $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 |90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1 |a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2 |0000 @state &c $2 &d $2 &cursor $2 |0100 @on-reset ( -> ) ( | theme ) #af0f .System/r DEO2 #a20f .System/g DEO2 #a20f .System/b DEO2 load-theme ( | size ) #0148 .Screen/width DEO2 #0078 .Screen/height DEO2 ( | unlock ) ;on-mouse .Mouse/vector DEO2 BRK ( @|vectors ) @on-mouse ( -> ) [ LIT2 00 -Mouse/state ] DEI NEQ #41 ADD ;pointer-icn [ LIT &last $1 ] .Mouse/state DEI DUP ,&last STR DUP2 #0001 EQU2 ?&down DUP2 #0101 EQU2 ?&drag POP2 BRK &down ( states* -> ) POP2 .Mouse/x DEI2 ,&from STR2 BRK &drag ( states* -> ) POP2 [ LIT2 &from $2 ] .Mouse/x DEI2 DUP2 ,&from STR2 SWP2 SUB2 @on-drag ( offset* -> ) .Mouse/y DEI2 ( ) DUP2 #0020 LTH2 ?&cursor ( ) DUP2 #0038 LTH2 ?&c ( ) DUP2 #0050 LTH2 ?&d &cursor ( offset* y* -> ) POP2 DUP2 .state/c LDZ2 ADD2 .state/c STZ2 .state/d LDZ2 ADD2 .state/d STZ2 BRK &c ( offset* y* -> ) POP2 .state/c LDZ2 ADD2 .state/c STZ2 BRK &d ( offset* y* -> ) POP2 .state/d LDZ2 ADD2 .state/d STZ2 BRK ( @|core ) ( @|drawing ) @ ( -- ) #0000 DUP2 .Screen/x DEO2 .Screen/y DEO2 #80 .Screen/pixel DEO JMP2r @ ( -- ) #0050 .Screen/x DEO2 #0018 .Screen/y DEO2 #76 .Screen/auto DEO ;cursor-chr .Screen/addr DEO2 #0800 &l ( -- ) #85 .Screen/sprite DEO INC GTHk ?&l POP2 JMP2r @ ( -- ) #0020 .state/c LDZ2 ADD2 .Screen/x DEO2 #0020 .Screen/y DEO2 ( | cap ) #25 .Screen/auto DEO ;cap-chr .Screen/addr DEO2 #85 .Screen/sprite DEO ( | cap ) #25 .Screen/auto DEO ;cap-end-chr .Screen/addr DEO2 #85 .Screen/sprite DEO ( | numbers ) #05 .Screen/auto DEO #0024 .state/c LDZ2 ADD2 .Screen/x DEO2 #0028 .Screen/y DEO2 JMP2r @ ( -- ) #0030 .state/d LDZ2 ADD2 .Screen/x DEO2 #0037 .Screen/y DEO2 ( | cap ) #25 .Screen/auto DEO ;cap-chr .Screen/addr DEO2 #85 .Screen/sprite DEO ( | cap ) #25 .Screen/auto DEO ;cap-end-chr .Screen/addr DEO2 #85 .Screen/sprite DEO ( | numbers ) #05 .Screen/auto DEO #0034 .state/d LDZ2 ADD2 .Screen/x DEO2 #0041 .Screen/y DEO2 JMP2r @ ( -- ) #01 ( small ) #0900 &l ( -- ) #00 OVR STH2 .Screen/x DEI2k #0016 STH2r SUB2 ADD2 ROT DEO2 INCk INC GTHk ?&l POP2 ( | next ) .Screen/x DEI2k #000d ADD2 ROT DEO2 #02 .Screen/x DEI2k #0083 ADD2 ROT DEO2 #03 .Screen/x DEI2k #006b ADD2 ROT DEO2 #04 .Screen/x DEI2k #0042 ADD2 ROT DEO2 #05 .Screen/x DEI2k #003a ADD2 ROT DEO2 #06 .Screen/x DEI2k #0036 ADD2 ROT DEO2 #07 .Screen/x DEI2k #002d ADD2 ROT DEO2 #08 .Screen/x DEI2k #0024 ADD2 ROT DEO2 #09 JMP2r @ ( num -- ) #00 SWP #30 SFT2 ;num-icn ADD2 .Screen/addr DEO2 #0a .Screen/sprite DEO JMP2r @ ( num -- ) #00 SWP #30 SFT2 ;num-icn ADD2 .Screen/addr DEO2 #05 .Screen/sprite DEO JMP2r @ ( -- ) #2300 &l ( -- ) ( | bg ) #06 .Screen/auto DEO ;bg-chr .Screen/addr DEO2 [ LIT2 85 -Screen/sprite ] DEOk DEO ( | scale ) #05 .Screen/auto DEO #00 OVR #40 SFT2 ;rule-chr ADD2 .Screen/addr DEO2 [ LIT2 85 -Screen/sprite ] DEO ( adjust ) .Screen/y DEI2k #0010 SUB2 ROT DEO2 INC GTHk ?&l POP2 ( adjust ) .Screen/x DEI2k #0005 SUB2 ROT DEO2 JMP2r @ ( -- ) #2300 &l ( -- ) ( | scale ) #06 .Screen/auto DEO #00 OVR #40 SFT2 ;rule-chr ADD2 .Screen/addr DEO2 [ LIT2 a5 -Screen/sprite ] DEO ( | bg ) #15 .Screen/auto DEO ;bg-rev-chr .Screen/addr DEO2 [ LIT2 85 -Screen/sprite ] DEO ( adjust ) .Screen/y DEI2k #0008 SUB2 ROT DEO2 INC GTHk ?&l POP2 ( adjust ) .Screen/x DEI2k #0005 SUB2 ROT DEO2 JMP2r @ ( color addr* -- ) [ LIT2 00 -Screen/auto ] DEO ;fill-icn .Screen/addr DEO2 #40 .Mouse/x DEI2 ,/x STR2 .Mouse/y DEI2 ,/y STR2 .Screen/addr DEO2 @ ( color -- ) [ LIT2 &x $2 ] .Screen/x DEO2 [ LIT2 &y $2 ] .Screen/y DEO2 .Screen/sprite DEO JMP2r @ ( short* -- ) SWP /b &b ( -- ) DUP #04 SFT /c &c ( -- ) #0f AND DUP #09 GTH #27 MUL ADD LIT "0 ADD #18 DEO JMP2r ( @|utils ) @load-theme ( -- ) ;&path .File/name DEO2 #0002 .File/length DEO2 ;&r .File/read DEO2 ;&g .File/read DEO2 ;&b .File/read DEO2 .File/success DEI2 ORA #01 JCN JMP2r LIT2 &r $2 .System/r DEO2 LIT2 &g $2 .System/g DEO2 LIT2 &b $2 .System/b DEO2 JMP2r &path ".theme $1 ( @|spritesheet ) ~assets.tal