Improved UX for calc.tal
This commit is contained in:
parent
a09c4fb841
commit
b792169909
|
@ -1,4 +1,6 @@
|
||||||
( a simple calculator )
|
(
|
||||||
|
a simple calculator
|
||||||
|
uxnasm projects/software/calc.tal bin/calc.rom && uxnemu bin/calc.rom )
|
||||||
|
|
||||||
%+ { ADD } %- { SUB } %/ { DIV }
|
%+ { ADD } %- { SUB } %/ { DIV }
|
||||||
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
|
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
|
||||||
|
@ -34,7 +36,6 @@
|
||||||
|80 @Controller [ &vector $2 &button $1 &key $1 ]
|
|80 @Controller [ &vector $2 &button $1 &key $1 ]
|
||||||
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &wheel $1 ]
|
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &wheel $1 ]
|
||||||
|a0 @File [ &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
|
|a0 @File [ &vector $2 &success $2 &offset-hs $2 &offset-ls $2 &name $2 &length $2 &load $2 &save $2 ]
|
||||||
|b0 @DateTime [ &year $2 &month $1 &day $1 &hour $1 &minute $1 &second $1 &dotw $1 &doty $2 &isdst $1 ]
|
|
||||||
|
|
||||||
( variables )
|
( variables )
|
||||||
|
|
||||||
|
@ -48,7 +49,7 @@
|
||||||
@center
|
@center
|
||||||
&x $2 &y $2
|
&x $2 &y $2
|
||||||
@pointer
|
@pointer
|
||||||
&x $2 &y $2
|
&x $2 &y $2 &last $1
|
||||||
@keypad-frame
|
@keypad-frame
|
||||||
&x $2 &y $2 &x2 $2 &y2 $2
|
&x $2 &y $2 &x2 $2 &y2 $2
|
||||||
@modpad-frame
|
@modpad-frame
|
||||||
|
@ -63,9 +64,9 @@
|
||||||
|0100 ( -> )
|
|0100 ( -> )
|
||||||
|
|
||||||
( theme )
|
( theme )
|
||||||
#6e7d .System/r DEO2
|
#0e7d .System/r DEO2
|
||||||
#6ec6 .System/g DEO2
|
#0ec6 .System/g DEO2
|
||||||
#6e95 .System/b DEO2
|
#0e95 .System/b DEO2
|
||||||
|
|
||||||
( size )
|
( size )
|
||||||
#0090 .Screen/width DEO2
|
#0090 .Screen/width DEO2
|
||||||
|
@ -109,7 +110,7 @@
|
||||||
.center/x LDZ2 #0020 --
|
.center/x LDZ2 #0020 --
|
||||||
DUP2 .input-frame/x STZ2
|
DUP2 .input-frame/x STZ2
|
||||||
#0040 ++ .input-frame/x2 STZ2
|
#0040 ++ .input-frame/x2 STZ2
|
||||||
.center/y LDZ2 #0030 --
|
.center/y LDZ2 #002a --
|
||||||
DUP2 .input-frame/y STZ2
|
DUP2 .input-frame/y STZ2
|
||||||
#0010 ++ .input-frame/y2 STZ2
|
#0010 ++ .input-frame/y2 STZ2
|
||||||
|
|
||||||
|
@ -164,20 +165,29 @@ BRK
|
||||||
.pointer/y LDZ2 .Screen/y DEO2
|
.pointer/y LDZ2 .Screen/y DEO2
|
||||||
#41 .Mouse/state DEI #01 = + .Screen/sprite DEO
|
#41 .Mouse/state DEI #01 = + .Screen/sprite DEO
|
||||||
|
|
||||||
.Mouse/state DEI #00 ! ,&continue JCN
|
( handle events )
|
||||||
;redraw JSR2 BRK
|
.Mouse/state DEI .pointer/last LDZ
|
||||||
&continue
|
DUP2 #0100 !! ,&no-down JCN
|
||||||
|
.Mouse/state DEI .pointer/last STZ
|
||||||
.Mouse/x DEI2 .Mouse/y DEI2
|
POP2
|
||||||
OVR2 OVR2 .keypad-frame
|
.Mouse/x DEI2 .Mouse/y DEI2
|
||||||
;within-rect JSR2 ;click-keypad JCN2
|
OVR2 OVR2 .keypad-frame
|
||||||
OVR2 OVR2 .input-frame
|
;within-rect JSR2 ;click-keypad JCN2
|
||||||
;within-rect JSR2 ;click-input JCN2
|
OVR2 OVR2 .input-frame
|
||||||
OVR2 OVR2 .modpad-frame
|
;within-rect JSR2 ;click-input JCN2
|
||||||
;within-rect JSR2 ;click-modpad JCN2
|
OVR2 OVR2 .modpad-frame
|
||||||
OVR2 OVR2 .bitpad-frame
|
;within-rect JSR2 ;click-modpad JCN2
|
||||||
;within-rect JSR2 ;click-bitpad JCN2
|
OVR2 OVR2 .bitpad-frame
|
||||||
POP2 POP2
|
;within-rect JSR2 ;click-bitpad JCN2
|
||||||
|
POP2 POP2
|
||||||
|
BRK
|
||||||
|
&no-down
|
||||||
|
DUP2 #0001 !! ,&no-up JCN
|
||||||
|
.Mouse/state DEI .pointer/last STZ
|
||||||
|
POP2 ;redraw JSR2 BRK
|
||||||
|
&no-up
|
||||||
|
POP2
|
||||||
|
.Mouse/state DEI .pointer/last STZ
|
||||||
|
|
||||||
BRK
|
BRK
|
||||||
|
|
||||||
|
@ -230,12 +240,10 @@ BRK
|
||||||
|
|
||||||
POP2
|
POP2
|
||||||
.input-frame/x LDZ2 -- 8// NIP
|
.input-frame/x LDZ2 -- 8// NIP
|
||||||
DUP #06 ! ,&no-push JCN
|
DUP #00 ! ,&no-push JCN
|
||||||
.input/value LDZ2 #0001 << ,&no-push-empty JCN
|
;do-push JSR2
|
||||||
;do-push JSR2
|
|
||||||
&no-push-empty
|
|
||||||
&no-push
|
&no-push
|
||||||
DUP #07 ! ,&no-pop JCN
|
DUP #01 ! ,&no-pop JCN
|
||||||
;do-pop JSR2
|
;do-pop JSR2
|
||||||
&no-pop
|
&no-pop
|
||||||
POP
|
POP
|
||||||
|
@ -277,9 +285,12 @@ RTN
|
||||||
|
|
||||||
@do-push ( -- )
|
@do-push ( -- )
|
||||||
|
|
||||||
.stack/length LDZ #07 < ,&continue JCN
|
.input/value LDZ2 #0000 >> ,¬-empty JCN
|
||||||
RTN
|
RTN
|
||||||
&continue
|
¬-empty
|
||||||
|
.stack/length LDZ #07 < ,¬-full JCN
|
||||||
|
RTN
|
||||||
|
¬-full
|
||||||
#40 .Audio0/pitch DEO
|
#40 .Audio0/pitch DEO
|
||||||
.input/value LDZ2 ;push JSR2
|
.input/value LDZ2 ;push JSR2
|
||||||
|
|
||||||
|
@ -374,7 +385,7 @@ RTN
|
||||||
#ff ;draw-modpad JSR2
|
#ff ;draw-modpad JSR2
|
||||||
#ff ;draw-input JSR2
|
#ff ;draw-input JSR2
|
||||||
;draw-bitpad JSR2
|
;draw-bitpad JSR2
|
||||||
;draw-stack JSR2
|
,draw-stack JSR
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@ -384,8 +395,8 @@ RTN
|
||||||
&loop
|
&loop
|
||||||
( color ) DUP #08 .stack/length LDZ - #01 - > STH
|
( color ) DUP #08 .stack/length LDZ - #01 - > STH
|
||||||
( value ) DUP 2* .stack/items + [ #10 .stack/length LDZ 2* - - ] LDZ2 STH2
|
( value ) DUP 2* .stack/items + [ #10 .stack/length LDZ 2* - - ] LDZ2 STH2
|
||||||
( y ) DUP TOS 8** .input-frame/y LDZ2 ++ #0048 -- STH2
|
( y ) DUP TOS 8** .input-frame/y LDZ2 ++ #004c -- STH2
|
||||||
( x ) .input-frame/x LDZ2 #0020 ++ STH2r STH2r STHr ;draw-short JSR2
|
( x ) .input-frame/x LDZ2 #0020 ++ STH2r STH2r STHr ,draw-short JSR
|
||||||
INC GTHk ,&loop JCN
|
INC GTHk ,&loop JCN
|
||||||
POP2
|
POP2
|
||||||
|
|
||||||
|
@ -395,13 +406,20 @@ RTN
|
||||||
|
|
||||||
STH STH2
|
STH STH2
|
||||||
.Screen/y DEO2
|
.Screen/y DEO2
|
||||||
.Screen/x DEO2
|
#0020 ++ .Screen/x DEO2
|
||||||
#04 #00
|
#04 #00
|
||||||
&loop
|
&loop
|
||||||
.Screen/x DEI2 #0008 -- .Screen/x DEO2
|
.Screen/x DEI2 #0008 -- .Screen/x DEO2
|
||||||
( value ) DUP STH2kr ROT 4* SFT2 #000f AND2
|
( value ) DUP STH2kr ROT 4* SFT2 #000f AND2
|
||||||
( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
|
( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
|
||||||
ROTr STHkr ROTr ROTr .Screen/sprite DEO
|
( no not draw zeros )
|
||||||
|
( get color ) ROTr STHkr
|
||||||
|
( place stack ) ROTr ROTr
|
||||||
|
( no leading zeros )
|
||||||
|
OVR STH2kr ,get-length JSR < ,&visible JCN
|
||||||
|
POP #00
|
||||||
|
&visible
|
||||||
|
( draw ) .Screen/sprite DEO
|
||||||
INC GTHk ,&loop JCN
|
INC GTHk ,&loop JCN
|
||||||
POP2
|
POP2
|
||||||
POP2r POPr
|
POP2r POPr
|
||||||
|
@ -420,24 +438,21 @@ RTN
|
||||||
@draw-input ( key -- )
|
@draw-input ( key -- )
|
||||||
|
|
||||||
STH
|
STH
|
||||||
.input-frame/y LDZ2 #0003 ++ .Screen/y DEO2
|
|
||||||
#04 #00
|
( draw value )
|
||||||
&loop
|
.input-frame/x LDZ2 #0020 ++
|
||||||
( x ) DUP TOS 8** .input-frame/x LDZ2 #0018 ++ SWP2 -- .Screen/x DEO2
|
.input-frame/y LDZ2 #0003 ++
|
||||||
( value ) STHk .input/value LDZ2 STHr 4* SFT2 #000f AND2
|
.input/value LDZ2
|
||||||
( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
|
#02
|
||||||
( color ) DUP INC .input/value LDZ2 ,get-length JSR >
|
;draw-short JSR2
|
||||||
#01 + .Screen/sprite DEO
|
|
||||||
INC GTHk ,&loop JCN
|
|
||||||
POP2
|
|
||||||
|
|
||||||
( controls )
|
( controls )
|
||||||
.input-frame/x LDZ2 #0030 ++
|
.input-frame/x LDZ2
|
||||||
.input-frame/y LDZ2
|
.input-frame/y LDZ2
|
||||||
;stack-icns/push [ STHkr #00 = ] #02
|
;stack-icns/push [ STHkr #00 = ] #02
|
||||||
;draw-key-thin JSR2
|
;draw-key-thin JSR2
|
||||||
|
|
||||||
.input-frame/x LDZ2 #0038 ++
|
.input-frame/x LDZ2 #0008 ++
|
||||||
.input-frame/y LDZ2
|
.input-frame/y LDZ2
|
||||||
;stack-icns/pop [ STHkr #01 = ] #03
|
;stack-icns/pop [ STHkr #01 = ] #03
|
||||||
;draw-key-thin JSR2
|
;draw-key-thin JSR2
|
||||||
|
|
Loading…
Reference in New Issue