Browse code

(calc.tal) Minor cleanup

Devine Lu Linvega authored on 17/11/2021 20:07:14
Showing 1 changed files
... ...
@@ -16,7 +16,9 @@
16 16
 %10** { #40 SFT2 } %10// { #04 SFT2 }
17 17
 %20** { #50 SFT2 }
18 18
 
19
+%2MOD2 { #0001 AND2 }
19 20
 %4MOD { #03 AND } %4MOD2 { #0003 AND2 }
21
+%8MOD { #07 AND }
20 22
 
21 23
 %DEBUG  { ;print-hex/byte JSR2 #0a .Console/write DEO }
22 24
 %DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO }
... ...
@@ -202,7 +204,6 @@ BRK
202 204
 
203 205
 @click-keypad ( x* y* -> )
204 206
 
205
-	( get key )
206 207
 	( y ) .keypad-frame/y LDZ2 -- #24 SFT2
207 208
 	( x ) SWP2 .keypad-frame/x LDZ2 -- 10// 4MOD2
208 209
 	( value ) ++ ;keypad/layout ++ LDA 
... ...
@@ -215,7 +216,8 @@ BRK
215 216
 @click-modpad ( x* y* -> )
216 217
 
217 218
 	( y ) .modpad-frame/y LDZ2 -- #24 SFT2 NIP STH
218
-	( x ) .modpad-frame/x LDZ2 -- 10// NIP STHr +
219
+	( x ) .modpad-frame/x LDZ2 -- 10// 
220
+	( value ) NIP STHr +
219 221
 	DUP #00 ! ,&no-add JCN ;do-add JSR2 &no-add
220 222
 	DUP #01 ! ,&no-sub JCN ;do-sub JSR2 &no-sub
221 223
 	DUP #02 ! ,&no-mul JCN ;do-mul JSR2 &no-mul
... ...
@@ -233,9 +235,9 @@ BRK
233 235
 
234 236
 @click-bitpad ( x* y* -> )
235 237
 
236
-	.bitpad-frame/y LDZ2 -- 8// NIP 8* STH
237
-	.bitpad-frame/x LDZ2 -- 8// NIP STHr +
238
-	STHk
238
+	( y ) .bitpad-frame/y LDZ2 -- 8// NIP 8* STH
239
+	( x ) .bitpad-frame/x LDZ2 -- 8// NIP 
240
+	( value ) STHr + STHk
239 241
 
240 242
 	#30 + .Audio0/pitch DEO
241 243
 
... ...
@@ -268,8 +270,8 @@ BRK
268 270
 
269 271
 	DUP #50 + .Audio0/pitch DEO
270 272
 	DUP TOS ;keypad/series ++ LDA ;draw-keypad JSR2
271
-	TOS .input/value LDZ2 #40 SFT2 ++ .input/value STZ2
272
-	.input/length LDZ INC .input/length STZ
273
+	TOS .input/value LDZ2 10** ++ .input/value STZ2
274
+	( INCZ ) .input/length LDZk INC SWP STZ
273 275
 	#ff ;draw-input JSR2
274 276
 	;draw-bitpad JSR2
275 277
 
... ...
@@ -278,7 +280,7 @@ RTN
278 280
 @push ( value* -- )
279 281
 
280 282
 	( store ) .stack/length LDZ 2* .stack/items + STZ2
281
-	( incr ) .stack/length LDZ INC .stack/length STZ
283
+	( INCZ ) .stack/length LDZk INC SWP STZ
282 284
 	( reset ) #0000 .input/value STZ2
283 285
 	#00 ;draw-input JSR2
284 286
 	;draw-stack JSR2
... ...
@@ -288,8 +290,8 @@ RTN
288 290
 @pop ( -- value* )
289 291
 
290 292
 	.stack/length LDZ #01 - 2* .stack/items + LDZ2
291
-	( clear ) #0000 .stack/length LDZ #01 - 2* .stack/items + STZ2
292
-	( incr ) .stack/length LDZ #01 - .stack/length STZ
293
+	( clear ) #0000 [ .stack/length LDZ #01 - 2* .stack/items + ] STZ2
294
+	( DECZ ) .stack/length LDZk #01 - SWP STZ
293 295
 	#01 ;draw-input JSR2
294 296
 	;draw-stack JSR2
295 297
 
... ...
@@ -297,12 +299,9 @@ RTN
297 299
 
298 300
 @do-push ( -- )
299 301
 
300
-	.input/value LDZ2 ADD ,&not-empty JCN
301
-		RTN
302
-		&not-empty
303
-	.stack/length LDZ #07 < ,&not-full JCN
304
-		RTN
305
-		&not-full
302
+	.input/value LDZ2 ADD #00 > JMP RTN
303
+	.stack/length LDZ #07 < JMP RTN
304
+
306 305
 	#40 .Audio0/pitch DEO
307 306
 	.input/value LDZ2 ;push JSR2
308 307
 
... ...
@@ -475,12 +474,11 @@ RTN
475 474
 	STH STH2
476 475
 	.Screen/y DEO2
477 476
 	#0020 ++ .Screen/x DEO2
478
-	#04 #00
477
+	#0400
479 478
 	&loop
480 479
 		.Screen/x DEI2 #0008 -- .Screen/x DEO2
481 480
 		( value ) DUP STH2kr ROT 4* SFT2 #000f AND2
482 481
 		( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
483
-		( no not draw zeros )
484 482
 		( get color ) ROTr STHkr 
485 483
 		( place stack ) ROTr ROTr
486 484
 		( no leading zeros )
... ...
@@ -575,9 +573,9 @@ RTN
575 573
 
576 574
 	#10 #00
577 575
 	&loop
578
-		( state ) DUP #0f SWP - .input/value LDZ2 ROT SFT2 #0001 AND2 NIP STH
576
+		( state ) DUP #0f SWP - .input/value LDZ2 ROT SFT2 2MOD2 NIP STH
579 577
 		( y ) DUP 8/ TOS 8** .bitpad-frame/y LDZ2 ++ STH2
580
-		( x ) DUP #07 AND TOS 8** .bitpad-frame/x LDZ2 ++
578
+		( x ) DUP 8MOD TOS 8** .bitpad-frame/x LDZ2 ++
581 579
 		STH2r STHr #01 ,draw-bit JSR
582 580
 		INC GTHk ,&loop JCN
583 581
 	POP2