Browse code

Added input to the calculator

neauoire authored on 18/09/2021 19:27:19
Showing 1 changed files
... ...
@@ -6,9 +6,11 @@
6 6
 %<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
7 7
 
8 8
 %4/   { #02 SFT }
9
+%4* { #20 SFT }
9 10
 %2**  { #10 SFT2 } %2// { #01 SFT2 }
11
+%4** { #20 SFT2 }
10 12
 %8**  { #30 SFT2 } %8// { #03 SFT2 }
11
-%10** { #40 SFT2 }
13
+%10** { #40 SFT2 } %10// { #04 SFT2 }
12 14
 
13 15
 %4MOD { #03 AND }
14 16
 
... ...
@@ -38,6 +40,8 @@
38 40
 
39 41
 |0000
40 42
 
43
+@input
44
+	&length $1 &value $2
41 45
 @center
42 46
 	&x $2 &y $2
43 47
 @rect
... ...
@@ -106,15 +110,42 @@ BRK
106 110
 
107 111
 @click-keypad ( -> )
108 112
 
109
-	#00 .Mouse/state DEO
110
-	#aa DEBUG
113
+	( get key )
114
+	.Mouse/x DEI2 .keypad-frame/x LDZ2 -- 10// 4MOD
115
+	.Mouse/y DEI2 .keypad-frame/y LDZ2 -- 10// 4**
116
+	++ ;keypad/layout ++ LDA ;push-key JSR2
117
+
118
+	( release mouse ) #00 .Mouse/state DEO
111 119
 
112 120
 BRK
113 121
 
122
+@push-key ( key -- )
123
+
124
+	TOS .input/value LDZ2 #40 SFT2 ++ .input/value STZ2
125
+	.input/length LDZ INC .input/length STZ
126
+	;draw-value JSR2
127
+
128
+RTN
129
+
114 130
 @redraw ( -- )
115 131
 
116 132
 	;draw-keypad JSR2
117 133
 	;draw-modpad JSR2
134
+	;draw-value JSR2
135
+
136
+RTN
137
+
138
+@draw-value ( -- )
139
+
140
+	.center/y LDZ2 #0030 -- .Screen/y DEO2
141
+	#04 #00
142
+	&loop
143
+		( x ) DUP TOS 8** .center/x LDZ2 SWP2 -- .Screen/x DEO2
144
+		( value ) STHk .input/value LDZ2 STHr 4* SFT2 #000f AND2
145
+		( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
146
+		#01 .Screen/sprite DEO
147
+		INC GTHk ,&loop JCN
148
+	POP2
118 149
 
119 150
 RTN
120 151