Browse code

Improved UX for calc.tal

neauoire authored on 20/10/2021 18:52:51
Showing 1 changed files
... ...
@@ -1,4 +1,6 @@
1
-( a simple calculator )
1
+( 
2
+	a simple calculator
3
+	uxnasm projects/software/calc.tal bin/calc.rom && uxnemu bin/calc.rom )
2 4
 
3 5
 %+  { ADD } %-   { SUB }              %/   { DIV }
4 6
 %<  { LTH } %>   { GTH }  %=  { EQU } %!   { NEQ }
... ...
@@ -34,7 +36,6 @@
34 36
 |80 @Controller [ &vector $2 &button   $1 &key    $1 ]
35 37
 |90 @Mouse      [ &vector $2 &x        $2 &y      $2 &state $1 &wheel  $1 ]
36 38
 |a0 @File       [ &vector $2 &success  $2 &offset-hs $2 &offset-ls $2 &name   $2 &length $2 &load $2 &save   $2 ]
37
-|b0 @DateTime   [ &year   $2 &month    $1 &day    $1 &hour  $1 &minute $1 &second $1 &dotw $1 &doty   $2 &isdst $1 ]
38 39
 
39 40
 ( variables )
40 41
 
... ...
@@ -48,7 +49,7 @@
48 49
 @center
49 50
 	&x $2 &y $2
50 51
 @pointer
51
-	&x  $2 &y  $2
52
+	&x $2 &y $2 &last $1
52 53
 @keypad-frame
53 54
 	&x $2 &y $2 &x2 $2 &y2 $2
54 55
 @modpad-frame
... ...
@@ -63,9 +64,9 @@
63 64
 |0100 ( -> )
64 65
 
65 66
 	( theme ) 
66
-	#6e7d .System/r DEO2 
67
-	#6ec6 .System/g DEO2 
68
-	#6e95 .System/b DEO2
67
+	#0e7d .System/r DEO2 
68
+	#0ec6 .System/g DEO2 
69
+	#0e95 .System/b DEO2
69 70
 
70 71
 	( size )
71 72
 	#0090 .Screen/width DEO2
... ...
@@ -109,7 +110,7 @@
109 110
 	.center/x LDZ2 #0020 -- 
110 111
 	DUP2 .input-frame/x STZ2
111 112
 		#0040 ++ .input-frame/x2 STZ2
112
-	.center/y LDZ2 #0030 -- 
113
+	.center/y LDZ2 #002a -- 
113 114
 	DUP2 .input-frame/y STZ2
114 115
 		#0010 ++ .input-frame/y2 STZ2
115 116
 
... ...
@@ -164,20 +165,29 @@ BRK
164 165
 	.pointer/y LDZ2 .Screen/y DEO2
165 166
 	#41 .Mouse/state DEI #01 = + .Screen/sprite DEO
166 167
 
167
-	.Mouse/state DEI #00 ! ,&continue JCN
168
-		;redraw JSR2 BRK
169
-		&continue
170
-
171
-	.Mouse/x DEI2 .Mouse/y DEI2 
172
-	OVR2 OVR2 .keypad-frame 
173
-		;within-rect JSR2 ;click-keypad JCN2
174
-	OVR2 OVR2 .input-frame 
175
-		;within-rect JSR2 ;click-input JCN2
176
-	OVR2 OVR2 .modpad-frame 
177
-		;within-rect JSR2 ;click-modpad JCN2
178
-	OVR2 OVR2 .bitpad-frame 
179
-		;within-rect JSR2 ;click-bitpad JCN2
180
-	POP2 POP2
168
+	( handle events )
169
+	.Mouse/state DEI .pointer/last LDZ
170
+	DUP2 #0100 !! ,&no-down JCN
171
+		.Mouse/state DEI .pointer/last STZ
172
+		POP2
173
+		.Mouse/x DEI2 .Mouse/y DEI2 
174
+		OVR2 OVR2 .keypad-frame 
175
+			;within-rect JSR2 ;click-keypad JCN2
176
+		OVR2 OVR2 .input-frame 
177
+			;within-rect JSR2 ;click-input JCN2
178
+		OVR2 OVR2 .modpad-frame 
179
+			;within-rect JSR2 ;click-modpad JCN2
180
+		OVR2 OVR2 .bitpad-frame 
181
+			;within-rect JSR2 ;click-bitpad JCN2
182
+		POP2 POP2
183
+		BRK
184
+		&no-down
185
+	DUP2 #0001 !! ,&no-up JCN
186
+		.Mouse/state DEI .pointer/last STZ
187
+		POP2 ;redraw JSR2 BRK
188
+		&no-up
189
+	POP2
190
+	.Mouse/state DEI .pointer/last STZ
181 191
 
182 192
 BRK
183 193
 
... ...
@@ -230,12 +240,10 @@ BRK
230 240
 
231 241
 	POP2
232 242
 	.input-frame/x LDZ2 -- 8// NIP
233
-	DUP #06 ! ,&no-push JCN
234
-		.input/value LDZ2 #0001 << ,&no-push-empty JCN
235
-			;do-push JSR2
236
-			&no-push-empty
243
+	DUP #00 ! ,&no-push JCN
244
+		;do-push JSR2
237 245
 		&no-push
238
-	DUP #07 ! ,&no-pop JCN
246
+	DUP #01 ! ,&no-pop JCN
239 247
 		;do-pop JSR2
240 248
 		&no-pop
241 249
 	POP
... ...
@@ -277,9 +285,12 @@ RTN
277 285
 
278 286
 @do-push ( -- )
279 287
 
280
-	.stack/length LDZ #07 < ,&continue JCN
288
+	.input/value LDZ2 #0000 >> ,&not-empty JCN
281 289
 		RTN
282
-		&continue
290
+		&not-empty
291
+	.stack/length LDZ #07 < ,&not-full JCN
292
+		RTN
293
+		&not-full
283 294
 	#40 .Audio0/pitch DEO
284 295
 	.input/value LDZ2 ;push JSR2
285 296
 
... ...
@@ -374,7 +385,7 @@ RTN
374 385
 	#ff ;draw-modpad JSR2
375 386
 	#ff ;draw-input JSR2
376 387
 	;draw-bitpad JSR2
377
-	;draw-stack JSR2
388
+	,draw-stack JSR
378 389
 
379 390
 RTN
380 391
 
... ...
@@ -384,8 +395,8 @@ RTN
384 395
 	&loop
385 396
 		( color ) DUP #08 .stack/length LDZ - #01 - > STH
386 397
 		( value ) DUP 2* .stack/items + [ #10 .stack/length LDZ 2* - - ] LDZ2 STH2
387
-		( y ) DUP TOS 8** .input-frame/y LDZ2 ++ #0048 -- STH2
388
-		( x ) .input-frame/x LDZ2 #0020 ++ STH2r STH2r STHr ;draw-short JSR2
398
+		( y ) DUP TOS 8** .input-frame/y LDZ2 ++ #004c -- STH2
399
+		( x ) .input-frame/x LDZ2 #0020 ++ STH2r STH2r STHr ,draw-short JSR
389 400
 		INC GTHk ,&loop JCN
390 401
 	POP2
391 402
 
... ...
@@ -395,13 +406,20 @@ RTN
395 406
 
396 407
 	STH STH2
397 408
 	.Screen/y DEO2
398
-	.Screen/x DEO2
409
+	#0020 ++ .Screen/x DEO2
399 410
 	#04 #00
400 411
 	&loop
401 412
 		.Screen/x DEI2 #0008 -- .Screen/x DEO2
402 413
 		( value ) DUP STH2kr ROT 4* SFT2 #000f AND2
403 414
 		( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
404
-		ROTr STHkr ROTr ROTr .Screen/sprite DEO
415
+		( no not draw zeros )
416
+		( get color ) ROTr STHkr 
417
+		( place stack ) ROTr ROTr
418
+		( no leading zeros )
419
+		OVR STH2kr ,get-length JSR < ,&visible JCN
420
+			POP #00
421
+			&visible
422
+		( draw ) .Screen/sprite DEO
405 423
 		INC GTHk ,&loop JCN
406 424
 	POP2
407 425
 	POP2r POPr
... ...
@@ -420,24 +438,21 @@ RTN
420 438
 @draw-input ( key -- )
421 439
 
422 440
 	STH
423
-	.input-frame/y LDZ2 #0003 ++ .Screen/y DEO2
424
-	#04 #00
425
-	&loop
426
-		( x ) DUP TOS 8** .input-frame/x LDZ2 #0018 ++ SWP2 -- .Screen/x DEO2
427
-		( value ) STHk .input/value LDZ2 STHr 4* SFT2 #000f AND2
428
-		( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
429
-		( color ) DUP INC .input/value LDZ2 ,get-length JSR >
430
-		#01 + .Screen/sprite DEO
431
-		INC GTHk ,&loop JCN
432
-	POP2
441
+
442
+	( draw value )
443
+	.input-frame/x LDZ2 #0020 ++
444
+	.input-frame/y LDZ2 #0003 ++
445
+	.input/value LDZ2
446
+	#02 
447
+		;draw-short JSR2
433 448
 
434 449
 	( controls )
435
-	.input-frame/x LDZ2 #0030 ++
450
+	.input-frame/x LDZ2
436 451
 	.input-frame/y LDZ2
437 452
 	;stack-icns/push [ STHkr #00 = ] #02
438 453
 		;draw-key-thin JSR2
439 454
 
440
-	.input-frame/x LDZ2 #0038 ++
455
+	.input-frame/x LDZ2 #0008 ++
441 456
 	.input-frame/y LDZ2
442 457
 	;stack-icns/pop [ STHkr #01 = ] #03
443 458
 		;draw-key-thin JSR2