@@ 452,6 452,14 @@ pc add) rPSP rdn) 0 i) ,)
xcode ps+, ( n -- )
( pc ) r0 pc@>reg, lblimmwr abs>rel b) ,)
+pc add) rTOP rdn) 0 i) ,)
+xcode W+n, ( n -- )
+ ( pc ) r0 pc@>reg, lblimmwr abs>rel b) ,)
+
+pc add) rA rdn) 0 i) ,)
+xcode A+n, ( n -- )
+ ( pc ) r0 pc@>reg, lblimmwr abs>rel b) ,)
+
pc mov) rTOP rd) 0 i) ,)
xcode LIT>W, ( n -- )
( pc ) r0 pc@>reg, L1 abs>rel b) ,)
@@ 460,6 468,14 @@ pc mov) rA rd) rTOP rm) ,)
xcode W>A, ( -- )
( pc ) r0 pc@>reg, lbldwrite abs>rel b) ,)
+pc eor) rTOP rdn) rA rm) ,)
+ eor) rA rdn) rTOP rm) ,)
+ eor) rTOP rdn) rA rm) ,)
+xcode W<>A, ( -- )
+ ( pc ) r0 pc>reg,
+ mov) r1 rd) 12 i) ,)
+ lblwriterange abs>rel b) ,)
+
\ operand is 16b
pc to L2 ( operand -- ) \ r0=base instr r1=off
orr) r0 rdn) $b0 i) ,) \ make into a ldrh/strh op
@@ 33,10 33,17 @@ code 1-! -1 W) [+n], drop, exit,
code16b -1 W) 16b) [+n], drop, exit,
code8b -1 W) 8b) [+n], drop, exit,
code @! W>A, drop, A) @!, exit,
-code16b HERE @ W>A, drop, A) 16b) @!, exit,
-code8b HERE @ W>A, drop, A) 8b) @!, exit,
-code c@! branch, drop
-code w@! branch, drop
+code16b W>A, drop, A) 16b) @!, exit,
+code8b W>A, drop, A) 8b) @!, exit,
+code @+ W>A, A) @, W<>A, 4 W+n, dup, W<>A, exit,
+code16b W>A, A) 16b) @, W<>A, 2 W+n, dup, W<>A, exit,
+code8b HERE @ W>A, A) 8b) @, W<>A, 1 W+n, dup, W<>A, exit,
+code c@+ branch, drop
+
+code !+ W>A, drop, A) !, W<>A, 4 W+n, exit,
+code16b W>A, drop, A) 16b) !, W<>A, 2 W+n, exit,
+code8b HERE @ W>A, drop, A) 8b) !, W<>A, 1 W+n, exit,
+code c!+ branch, drop
uartinit prompt interactive!