Starting stack manipulation for calc
This commit is contained in:
parent
a5201767d7
commit
6cc0fdec26
|
@ -52,6 +52,8 @@
|
||||||
&x $2 &y $2 &x2 $2 &y2 $2
|
&x $2 &y $2 &x2 $2 &y2 $2
|
||||||
@modpad-frame
|
@modpad-frame
|
||||||
&x $2 &y $2
|
&x $2 &y $2
|
||||||
|
@input-frame
|
||||||
|
&x $2 &y $2
|
||||||
|
|
||||||
( program )
|
( program )
|
||||||
|
|
||||||
|
@ -62,7 +64,7 @@
|
||||||
#0fc5 .System/g DEO2
|
#0fc5 .System/g DEO2
|
||||||
#0f25 .System/b DEO2
|
#0f25 .System/b DEO2
|
||||||
|
|
||||||
#0100 .Screen/width DEO2
|
#0120 .Screen/width DEO2
|
||||||
#0160 .Screen/height DEO2
|
#0160 .Screen/height DEO2
|
||||||
|
|
||||||
( center )
|
( center )
|
||||||
|
@ -79,6 +81,9 @@
|
||||||
.keypad-frame/x LDZ2 #0040 ++ .modpad-frame/x STZ2
|
.keypad-frame/x LDZ2 #0040 ++ .modpad-frame/x STZ2
|
||||||
.keypad-frame/y LDZ2 .modpad-frame/y STZ2
|
.keypad-frame/y LDZ2 .modpad-frame/y STZ2
|
||||||
|
|
||||||
|
.center/x LDZ2 #0010 -- .input-frame/x STZ2
|
||||||
|
.center/y LDZ2 #0030 -- .input-frame/y STZ2
|
||||||
|
|
||||||
;on-mouse .Mouse/vector DEO2
|
;on-mouse .Mouse/vector DEO2
|
||||||
|
|
||||||
;redraw JSR2
|
;redraw JSR2
|
||||||
|
@ -87,7 +92,7 @@ BRK
|
||||||
|
|
||||||
@on-mouse ( -> )
|
@on-mouse ( -> )
|
||||||
|
|
||||||
;pointer_icn .Screen/addr DEO2
|
;pointer-icn .Screen/addr DEO2
|
||||||
( clear last cursor )
|
( clear last cursor )
|
||||||
.pointer/x LDZ2 .Screen/x DEO2
|
.pointer/x LDZ2 .Screen/x DEO2
|
||||||
.pointer/y LDZ2 .Screen/y DEO2
|
.pointer/y LDZ2 .Screen/y DEO2
|
||||||
|
@ -126,7 +131,7 @@ BRK
|
||||||
|
|
||||||
TOS .input/value LDZ2 #40 SFT2 ++ .input/value STZ2
|
TOS .input/value LDZ2 #40 SFT2 ++ .input/value STZ2
|
||||||
.input/length LDZ INC .input/length STZ
|
.input/length LDZ INC .input/length STZ
|
||||||
;draw-value JSR2
|
;draw-input JSR2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@ -134,27 +139,49 @@ RTN
|
||||||
|
|
||||||
;draw-keypad JSR2
|
;draw-keypad JSR2
|
||||||
;draw-modpad JSR2
|
;draw-modpad JSR2
|
||||||
;draw-value JSR2
|
;draw-input JSR2
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@draw-value ( -- )
|
@draw-input ( -- )
|
||||||
|
|
||||||
.center/y LDZ2 #0030 -- .Screen/y DEO2
|
.input-frame/y LDZ2 #0002 ++ .Screen/y DEO2
|
||||||
#04 #00
|
#04 #00
|
||||||
&loop
|
&loop
|
||||||
( x ) DUP TOS 8** .center/x LDZ2 SWP2 -- .Screen/x DEO2
|
( x ) DUP TOS 8** .input-frame/x LDZ2 SWP2 -- .Screen/x DEO2
|
||||||
( value ) STHk .input/value LDZ2 STHr 4* SFT2 #000f AND2
|
( value ) STHk .input/value LDZ2 STHr 4* SFT2 #000f AND2
|
||||||
( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
|
( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
|
||||||
#01 .Screen/sprite DEO
|
( color ) DUP INC .input/value LDZ2 ;get-length JSR2 >
|
||||||
|
#01 + .Screen/sprite DEO
|
||||||
INC GTHk ,&loop JCN
|
INC GTHk ,&loop JCN
|
||||||
POP2
|
POP2
|
||||||
|
|
||||||
|
( controls )
|
||||||
|
.input-frame/x LDZ2 #0018 ++
|
||||||
|
.input-frame/y LDZ2
|
||||||
|
;stack-icns/push
|
||||||
|
;key-icns/outline #01
|
||||||
|
;draw-key JSR2
|
||||||
|
|
||||||
|
.input-frame/x LDZ2 #0028 ++
|
||||||
|
.input-frame/y LDZ2
|
||||||
|
;stack-icns/pop
|
||||||
|
;key-icns/outline #02
|
||||||
|
;draw-key JSR2
|
||||||
|
|
||||||
|
RTN
|
||||||
|
|
||||||
|
@get-length ( short* -- length )
|
||||||
|
|
||||||
|
DUP2 #0fff << ,&no4 JCN POP2 #04 RTN &no4
|
||||||
|
DUP2 #00ff << ,&no3 JCN POP2 #03 RTN &no3
|
||||||
|
DUP2 #000f << ,&no2 JCN POP2 #02 RTN &no2
|
||||||
|
#0000 !!
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@draw-keypad ( -- )
|
@draw-keypad ( -- )
|
||||||
|
|
||||||
( auto x addr ) #05 .Screen/auto DEO
|
|
||||||
#10 #00
|
#10 #00
|
||||||
&loop
|
&loop
|
||||||
( color ) DUP TOS ;keypad/color ++ LDA STH
|
( color ) DUP TOS ;keypad/color ++ LDA STH
|
||||||
|
@ -164,16 +191,14 @@ RTN
|
||||||
( y ) DUP 4/ TOS 10**
|
( y ) DUP 4/ TOS 10**
|
||||||
( origin-x ) STH2r .keypad-frame/x LDZ2 ++ SWP2
|
( origin-x ) STH2r .keypad-frame/x LDZ2 ++ SWP2
|
||||||
( origin-y ) .keypad-frame/y LDZ2 ++
|
( origin-y ) .keypad-frame/y LDZ2 ++
|
||||||
STH2r STHr ;draw-key JSR2
|
STH2r ;key-icns/full STHr ;draw-key JSR2
|
||||||
INC GTHk ,&loop JCN
|
INC GTHk ,&loop JCN
|
||||||
POP2
|
POP2
|
||||||
( auto none ) #00 .Screen/auto DEO
|
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@draw-modpad ( -- )
|
@draw-modpad ( -- )
|
||||||
|
|
||||||
( auto x addr ) #05 .Screen/auto DEO
|
|
||||||
#04 #00
|
#04 #00
|
||||||
&loop
|
&loop
|
||||||
( color ) DUP TOS ;modpad/color ++ LDA STH
|
( color ) DUP TOS ;modpad/color ++ LDA STH
|
||||||
|
@ -182,20 +207,21 @@ RTN
|
||||||
( y ) DUP TOS 10**
|
( y ) DUP TOS 10**
|
||||||
( origin-x ) STH2r .modpad-frame/x LDZ2 ++ SWP2
|
( origin-x ) STH2r .modpad-frame/x LDZ2 ++ SWP2
|
||||||
( origin-y ) .modpad-frame/y LDZ2 ++
|
( origin-y ) .modpad-frame/y LDZ2 ++
|
||||||
STH2r STHr ;draw-key JSR2
|
STH2r ;key-icns/full STHr ;draw-key JSR2
|
||||||
INC GTHk ,&loop JCN
|
INC GTHk ,&loop JCN
|
||||||
POP2
|
POP2
|
||||||
( auto none ) #00 .Screen/auto DEO
|
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@draw-key ( x* y* glyph* color -- )
|
@draw-key ( x* y* glyph* style* color -- )
|
||||||
|
|
||||||
|
( auto x addr ) #05 .Screen/auto DEO
|
||||||
( frame )
|
( frame )
|
||||||
STH STH2 ROTr
|
STH
|
||||||
|
( style ) .Screen/addr DEO2
|
||||||
|
STH2 ROTr
|
||||||
.Screen/y DEO2
|
.Screen/y DEO2
|
||||||
.Screen/x DEO2
|
.Screen/x DEO2
|
||||||
;key-icns/bg .Screen/addr DEO2
|
|
||||||
STHkr .Screen/sprite DEO
|
STHkr .Screen/sprite DEO
|
||||||
STHkr .Screen/sprite DEO
|
STHkr .Screen/sprite DEO
|
||||||
.Screen/x DEI2 #0010 -- .Screen/x DEO2
|
.Screen/x DEI2 #0010 -- .Screen/x DEO2
|
||||||
|
@ -207,6 +233,7 @@ RTN
|
||||||
.Screen/x DEI2 #000c -- .Screen/x DEO2
|
.Screen/x DEI2 #000c -- .Screen/x DEO2
|
||||||
.Screen/y DEI2 #0005 -- .Screen/y DEO2
|
.Screen/y DEI2 #0005 -- .Screen/y DEO2
|
||||||
STHr #04 MUL .Screen/sprite DEO
|
STHr #04 MUL .Screen/sprite DEO
|
||||||
|
( auto none ) #00 .Screen/auto DEO
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@ -310,11 +337,32 @@ RTN
|
||||||
0010 0000 fe00 0010
|
0010 0000 fe00 0010
|
||||||
|
|
||||||
@key-icns
|
@key-icns
|
||||||
&bg
|
&full
|
||||||
3f7f ffff ffff ffff
|
3f7f ffff ffff ffff
|
||||||
f8fc fefe fefe fefe
|
f8fc fefe fefe fefe
|
||||||
ffff ffff ff7f 3f00
|
ffff ffff ff7f 3f00
|
||||||
fefe fefe fefc f800
|
fefe fefe fefc f800
|
||||||
|
&outline
|
||||||
|
3f40 8080 8080 8080
|
||||||
|
f804 0202 0202 0202
|
||||||
|
8080 8080 8040 3f00
|
||||||
|
0202 0202 0204 f800
|
||||||
|
|
||||||
@pointer_icn
|
@stack-icns
|
||||||
|
&push
|
||||||
|
ffff ffef d7bb ffff
|
||||||
|
&pop
|
||||||
|
ffff efc7 83c7 efff
|
||||||
|
|
||||||
|
@input-icn
|
||||||
|
3f40 8080 8080 8080
|
||||||
|
ff00 0000 0000 0000
|
||||||
|
ff00 0000 0000 0000
|
||||||
|
f804 0202 0202 0202
|
||||||
|
8080 8080 8040 3f00
|
||||||
|
0000 0000 0000 ff00
|
||||||
|
0000 0000 0000 ff00
|
||||||
|
0202 0202 0204 f800
|
||||||
|
|
||||||
|
@pointer-icn
|
||||||
80c0 e0f0 f8e0 1000
|
80c0 e0f0 f8e0 1000
|
||||||
|
|
Loading…
Reference in New Issue