uxn

Varvara Ordinator, written in ANSI C(SDL2)
git clone https://git.eamoncaddigan.net/uxn.git
Log | Files | Refs | README | LICENSE

commit 7a49c5527fc7f671f6485b6244ca82f56bd11ea3
parent 3b6701ba39b4ed2e0aebd77a7346aba31ae8cb0a
Author: Devine Lu Linvega <aliceffekt@gmail.com>
Date:   Fri, 12 Nov 2021 15:26:45 -0500

(calc.rom) Added bitwise operators

Diffstat:
Mprojects/software/calc.tal | 81++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 72 insertions(+), 9 deletions(-)

diff --git a/projects/software/calc.tal b/projects/software/calc.tal @@ -22,7 +22,6 @@ %DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO } %RTN { JMP2r } -%SWP2? { #01 JCN SWP2 } %BRK? { #01 JCN BRK } %RTN? { #01 JCN RTN } %TOS { #00 SWP } @@ -98,12 +97,12 @@ #0040 ++ .modpad-frame/x2 STZ2 .keypad-frame/y LDZ2 #0040 ++ DUP2 .modpad-frame/y STZ2 - #0010 ++ .modpad-frame/y2 STZ2 + #0020 ++ .modpad-frame/y2 STZ2 .keypad-frame/x LDZ2 DUP2 .bitpad-frame/x STZ2 #0040 ++ .bitpad-frame/x2 STZ2 - .keypad-frame/y LDZ2 #0058 ++ + .modpad-frame/y2 LDZ2 #0008 ++ DUP2 .bitpad-frame/y STZ2 #0010 ++ .bitpad-frame/y2 STZ2 @@ -204,13 +203,16 @@ BRK @click-modpad ( x* y* -> ) - POP2 - ( get key ) - .modpad-frame/x LDZ2 -- 10// NIP + .modpad-frame/y LDZ2 -- 10// 4** + SWP2 .modpad-frame/x LDZ2 -- 10// #0003 AND2 ++ NIP DUP #00 ! ,&no-add JCN ;do-add JSR2 &no-add DUP #01 ! ,&no-sub JCN ;do-sub JSR2 &no-sub DUP #02 ! ,&no-mul JCN ;do-mul JSR2 &no-mul DUP #03 ! ,&no-div JCN ;do-div JSR2 &no-div + DUP #04 ! ,&no-and JCN ;do-and JSR2 &no-and + DUP #05 ! ,&no-ora JCN ;do-ora JSR2 &no-ora + DUP #06 ! ,&no-eor JCN ;do-eor JSR2 &no-eor + DUP #07 ! ,&no-not JCN ;do-not JSR2 &no-not POP ;draw-bitpad JSR2 @@ -364,6 +366,62 @@ RTN RTN +@do-and ( -- ) + + .input/value LDZ2 #0000 == ,&no-push JCN + ;do-push JSR2 + &no-push + + ( stack empty ) .stack/length LDZ #01 > RTN? + + #46 .Audio0/pitch DEO + #04 ;draw-modpad JSR2 + ;pop JSR2 ;pop JSR2 SWP2 AND2 ;push JSR2 + +RTN + +@do-ora ( -- ) + + .input/value LDZ2 #0000 == ,&no-push JCN + ;do-push JSR2 + &no-push + + ( stack empty ) .stack/length LDZ #01 > RTN? + + #47 .Audio0/pitch DEO + #05 ;draw-modpad JSR2 + ;pop JSR2 ;pop JSR2 SWP2 ORA2 ;push JSR2 + +RTN + +@do-eor ( -- ) + + .input/value LDZ2 #0000 == ,&no-push JCN + ;do-push JSR2 + &no-push + + ( stack empty ) .stack/length LDZ #01 > RTN? + + #48 .Audio0/pitch DEO + #06 ;draw-modpad JSR2 + ;pop JSR2 ;pop JSR2 SWP2 EOR2 ;push JSR2 + +RTN + +@do-not ( -- ) + + .input/value LDZ2 #0000 == ,&no-push JCN + ;do-push JSR2 + &no-push + + ( stack empty ) .stack/length LDZ #00 > RTN? + + #49 .Audio0/pitch DEO + #07 ;draw-modpad JSR2 + ;pop JSR2 #ffff EOR2 ;push JSR2 + +RTN + @key-value ( key -- value ) DUP #2f > OVR #3a < #0101 !! ,&no-num JCN @@ -490,12 +548,12 @@ RTN @draw-modpad ( key -- ) STH - #04 #00 + #08 #00 &loop ( state ) DUP STHkr = STH ( glyph ) DUP TOS 8** ;mod-icns ++ STH2 - ( y ) .modpad-frame/y LDZ2 STH2 - ( x ) DUP TOS 10** .modpad-frame/x LDZ2 ++ STH2 + ( y ) DUP 4/ TOS 10** .modpad-frame/y LDZ2 ++ STH2 + ( x ) DUP 4MOD TOS 10** .modpad-frame/x LDZ2 ++ STH2 STH2r STH2r STH2r STHr #03 ;draw-key JSR2 INC GTHk ,&loop JCN POP2 @@ -689,6 +747,11 @@ RTN 0010 5428 c628 5410 0010 0000 fe00 0010 + 0078 8484 4836 8876 + 0010 1010 1010 1010 + 0000 1028 4482 0000 + 0000 0060 920c 0000 + @button-icns &outline 3f40 8080 8080 8080