Browse code

(calc.rom) Added bitwise operators

Devine Lu Linvega authored on 12/11/2021 20:26:45
Showing 1 changed files
... ...
@@ -22,7 +22,6 @@
22 22
 %DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO }
23 23
 
24 24
 %RTN { JMP2r }
25
-%SWP2? { #01 JCN SWP2 }
26 25
 %BRK? { #01 JCN BRK }
27 26
 %RTN? { #01 JCN RTN }
28 27
 %TOS { #00 SWP }
... ...
@@ -98,12 +97,12 @@
98 97
 		#0040 ++ .modpad-frame/x2 STZ2
99 98
 	.keypad-frame/y LDZ2 #0040 ++
100 99
 	DUP2 .modpad-frame/y STZ2
101
-		#0010 ++ .modpad-frame/y2 STZ2
100
+		#0020 ++ .modpad-frame/y2 STZ2
102 101
 
103 102
 	.keypad-frame/x LDZ2
104 103
 	DUP2 .bitpad-frame/x STZ2
105 104
 		#0040 ++ .bitpad-frame/x2 STZ2
106
-	.keypad-frame/y LDZ2 #0058 ++
105
+	.modpad-frame/y2 LDZ2 #0008 ++
107 106
 	DUP2 .bitpad-frame/y STZ2
108 107
 		#0010 ++ .bitpad-frame/y2 STZ2
109 108
 
... ...
@@ -204,13 +203,16 @@ BRK
204 203
 
205 204
 @click-modpad ( x* y* -> )
206 205
 
207
-	POP2
208
-	( get key )
209
-	.modpad-frame/x LDZ2 -- 10// NIP
206
+	.modpad-frame/y LDZ2 -- 10// 4**
207
+	SWP2 .modpad-frame/x LDZ2 -- 10// #0003 AND2 ++ NIP
210 208
 	DUP #00 ! ,&no-add JCN ;do-add JSR2 &no-add
211 209
 	DUP #01 ! ,&no-sub JCN ;do-sub JSR2 &no-sub
212 210
 	DUP #02 ! ,&no-mul JCN ;do-mul JSR2 &no-mul
213 211
 	DUP #03 ! ,&no-div JCN ;do-div JSR2 &no-div
212
+	DUP #04 ! ,&no-and JCN ;do-and JSR2 &no-and
213
+	DUP #05 ! ,&no-ora JCN ;do-ora JSR2 &no-ora
214
+	DUP #06 ! ,&no-eor JCN ;do-eor JSR2 &no-eor
215
+	DUP #07 ! ,&no-not JCN ;do-not JSR2 &no-not
214 216
 	POP
215 217
 
216 218
 	;draw-bitpad JSR2
... ...
@@ -364,6 +366,62 @@ RTN
364 366
 
365 367
 RTN
366 368
 
369
+@do-and ( -- )
370
+
371
+	.input/value LDZ2 #0000 == ,&no-push JCN
372
+		;do-push JSR2
373
+		&no-push
374
+
375
+	( stack empty ) .stack/length LDZ #01 > RTN?
376
+
377
+	#46 .Audio0/pitch DEO
378
+	#04 ;draw-modpad JSR2
379
+	;pop JSR2 ;pop JSR2 SWP2 AND2 ;push JSR2
380
+
381
+RTN
382
+
383
+@do-ora ( -- )
384
+
385
+	.input/value LDZ2 #0000 == ,&no-push JCN
386
+		;do-push JSR2
387
+		&no-push
388
+
389
+	( stack empty ) .stack/length LDZ #01 > RTN?
390
+
391
+	#47 .Audio0/pitch DEO
392
+	#05 ;draw-modpad JSR2
393
+	;pop JSR2 ;pop JSR2 SWP2 ORA2 ;push JSR2
394
+
395
+RTN
396
+
397
+@do-eor ( -- )
398
+
399
+	.input/value LDZ2 #0000 == ,&no-push JCN
400
+		;do-push JSR2
401
+		&no-push
402
+
403
+	( stack empty ) .stack/length LDZ #01 > RTN?
404
+
405
+	#48 .Audio0/pitch DEO
406
+	#06 ;draw-modpad JSR2
407
+	;pop JSR2 ;pop JSR2 SWP2 EOR2 ;push JSR2
408
+
409
+RTN
410
+
411
+@do-not ( -- )
412
+
413
+	.input/value LDZ2 #0000 == ,&no-push JCN
414
+		;do-push JSR2
415
+		&no-push
416
+
417
+	( stack empty ) .stack/length LDZ #00 > RTN?
418
+
419
+	#49 .Audio0/pitch DEO
420
+	#07 ;draw-modpad JSR2
421
+	;pop JSR2 #ffff EOR2  ;push JSR2
422
+
423
+RTN
424
+
367 425
 @key-value ( key -- value )
368 426
 
369 427
 	DUP #2f > OVR #3a < #0101 !! ,&no-num JCN
... ...
@@ -490,12 +548,12 @@ RTN
490 548
 @draw-modpad ( key -- )
491 549
 
492 550
 	STH
493
-	#04 #00
551
+	#08 #00
494 552
 	&loop
495 553
 		( state ) DUP STHkr = STH
496 554
 		( glyph ) DUP TOS 8** ;mod-icns ++ STH2
497
-		( y ) .modpad-frame/y LDZ2 STH2
498
-		( x ) DUP TOS 10** .modpad-frame/x LDZ2 ++ STH2
555
+		( y ) DUP 4/ TOS 10** .modpad-frame/y LDZ2 ++ STH2
556
+		( x ) DUP 4MOD TOS 10** .modpad-frame/x LDZ2 ++ STH2
499 557
 		STH2r STH2r STH2r STHr #03 ;draw-key JSR2
500 558
 		INC GTHk ,&loop JCN
501 559
 	POP2
... ...
@@ -689,6 +747,11 @@ RTN
689 747
 	0010 5428 c628 5410
690 748
 	0010 0000 fe00 0010
691 749
 
750
+	0078 8484 4836 8876
751
+	0010 1010 1010 1010
752
+	0000 1028 4482 0000
753
+	0000 0060 920c 0000
754
+
692 755
 @button-icns
693 756
 	&outline
694 757
 		3f40 8080 8080 8080