Browse code

Starting keyboard input to calc.tal

neauoire authored on 20/09/2021 20:42:23
Showing 1 changed files
... ...
@@ -67,9 +67,14 @@
67 67
 	#0fc5 .System/g DEO2 
68 68
 	#0f25 .System/b DEO2
69 69
 
70
+	( size )
70 71
 	#0120 .Screen/width DEO2
71 72
 	#0160 .Screen/height DEO2
72 73
 
74
+	( vectors )
75
+	;on-mouse .Mouse/vector DEO2
76
+	;on-button .Controller/vector DEO2
77
+
73 78
 	( center )
74 79
 	.Screen/width DEI2 2// .center/x STZ2
75 80
 	.Screen/height DEI2 2// .center/y STZ2
... ...
@@ -95,12 +100,29 @@
95 100
 	DUP2 .input-frame/y STZ2
96 101
 		#0010 ++ .input-frame/y2 STZ2
97 102
 
98
-	;on-mouse .Mouse/vector DEO2
99
-
100 103
 	;redraw JSR2
101 104
 
102 105
 BRK
103 106
 
107
+@on-button ( -> )
108
+
109
+	.Controller/key DEI BRK?
110
+
111
+	.Controller/key DEI 
112
+	DUP #0d ! ,&no-enter JCN
113
+		;send-input JSR2 POP BRK
114
+		&no-enter
115
+	DUP LIT '+ ! ,&no-add JCN ;do-add JSR2 POP BRK &no-add
116
+	DUP LIT '- ! ,&no-sub JCN ;do-sub JSR2 POP BRK &no-sub
117
+	DUP LIT '* ! ,&no-mul JCN ;do-mul JSR2 POP BRK &no-mul
118
+	DUP LIT '/ ! ,&no-div JCN ;do-div JSR2 POP BRK &no-div
119
+	DUP #1b ! ,&no-esc JCN
120
+		;do-pop JSR2 POP BRK
121
+		&no-esc
122
+	;key-value JSR2 ;push-input JSR2
123
+
124
+BRK
125
+
104 126
 @on-mouse ( -> )
105 127
 
106 128
 	;pointer-icn .Screen/addr DEO2
... ...
@@ -136,7 +158,7 @@ BRK
136 158
 	( get key )
137 159
 	.keypad-frame/y LDZ2 -- 10// 4**
138 160
 	SWP2 .keypad-frame/x LDZ2 -- 10// #0003 AND2
139
-	++ ;keypad/layout ++ LDA ;push-key JSR2
161
+	++ ;keypad/layout ++ LDA ;push-input JSR2
140 162
 
141 163
 	( release mouse ) #00 .Mouse/state DEO
142 164
 
... ...
@@ -147,11 +169,8 @@ BRK
147 169
 	NIP2
148 170
 	( get key )
149 171
 	.modpad-frame/y LDZ2 -- 10// NIP
150
-	DUP #00 ! ,&no-add JCN
151
-		;pop JSR2
152
-		;pop JSR2
153
-		ADD2 ;push JSR2
154
-		&no-add
172
+	DUP #00 ! ,&no-add JCN ;do-add JSR2 &no-add
173
+	DUP #01 ! ,&no-sub JCN ;do-sub JSR2 &no-sub
155 174
 	POP
156 175
 
157 176
 	( release mouse ) #00 .Mouse/state DEO
... ...
@@ -164,13 +183,11 @@ BRK
164 183
 	.input-frame/x LDZ2 #0008 ++ -- 10// NIP
165 184
 	DUP #01 ! ,&no-push JCN
166 185
 		.input/value LDZ2 #0001 << ,&no-push-empty JCN
167
-			.input/value LDZ2 ;push JSR2
186
+			;send-input JSR2
168 187
 			&no-push-empty
169 188
 		&no-push
170 189
 	DUP #02 ! ,&no-pop JCN
171
-		.stack/length LDZ #01 < ,&no-pop-empty JCN
172
-			;pop JSR2 POP2
173
-			&no-pop-empty
190
+		;do-pop JSR2
174 191
 		&no-pop
175 192
 	POP
176 193
 
... ...
@@ -178,7 +195,7 @@ BRK
178 195
 
179 196
 BRK
180 197
 
181
-@push-key ( key -- )
198
+@push-input ( key -- )
182 199
 
183 200
 	TOS .input/value LDZ2 #40 SFT2 ++ .input/value STZ2
184 201
 	.input/length LDZ INC .input/length STZ
... ...
@@ -186,6 +203,12 @@ BRK
186 203
 
187 204
 RTN
188 205
 
206
+@send-input ( -- )
207
+
208
+	.input/value LDZ2 ;push JSR2
209
+
210
+RTN
211
+
189 212
 @push ( value* -- )
190 213
 
191 214
 	( store ) .stack/length LDZ 2* .stack/items + STZ2
... ...
@@ -206,6 +229,58 @@ RTN
206 229
 
207 230
 RTN
208 231
 
232
+@do-pop ( -- )
233
+
234
+	.stack/length LDZ BRK?
235
+	;pop JSR2 POP2
236
+	;draw-input JSR2
237
+	;draw-stack JSR2
238
+
239
+RTN
240
+
241
+@do-add ( -- )
242
+
243
+	.stack/length LDZ #01 > BRK?
244
+	;pop JSR2 ;pop JSR2 ADD2 ;push JSR2
245
+
246
+RTN
247
+
248
+@do-sub ( -- )
249
+
250
+	.stack/length LDZ #01 > BRK?
251
+	;pop JSR2 ;pop JSR2 SUB2 ;push JSR2
252
+
253
+RTN
254
+
255
+@do-mul ( -- )
256
+
257
+	.stack/length LDZ #01 > BRK?
258
+	;pop JSR2 ;pop JSR2 MUL2 ;push JSR2
259
+
260
+RTN
261
+
262
+@do-div ( -- )
263
+
264
+	.stack/length LDZ #01 > BRK?
265
+	;pop JSR2 ;pop JSR2 DIV2 ;push JSR2
266
+
267
+RTN
268
+
269
+@key-value ( key -- value )
270
+
271
+	DUP #2f > OVR #3a < #0101 !! ,&no-num JCN
272
+		#30 - RTN
273
+		&no-num
274
+	DUP #60 > OVR #67 < #0101 !! ,&no-lc JCN
275
+		#57 - RTN ( #61 - #0a + )
276
+		&no-lc
277
+	DUP #40 > OVR #47 < #0101 !! ,&no-uc JCN
278
+		#37 - RTN ( #41 - #0a + )
279
+		&no-uc
280
+	POP #00
281
+
282
+RTN
283
+
209 284
 @redraw ( -- )
210 285
 
211 286
 	;draw-keypad JSR2