Updated opcodes and modes to match the docs.
h3rald h3rald@h3rald.com
Fri, 13 Feb 2026 07:30:02 +0100
M
xyw.c
→
xyw.c
@@ -14,8 +14,8 @@ "LDB", "LDW", "STB", "STW",
"INC", "DEC", "SHL", "SHR", "ADD", "SUB", "MUL", "DIV", "EQU", "NEQ", "GTH", "LTH", - "AND", "IOR", "XOR", "NOT", - "SWP", "DUP", "OVR", "ROT", + "NOT", "AND", "IOR", "XOR", + "DUP", "SWP", "OVR", "ROT", "JMP", "JCN", "JSR", "RTS"}; int flag(const char *arg, const char *str)
M
xywrun.c
→
xywrun.c
@@ -425,14 +425,14 @@ /* EQU */ OPC_SR2(0x10, PUSH(a == b));
/* NEQ */ OPC_SR2(0x11, PUSH(a != b)); /* GTH */ OPC_SR2(0x12, PUSH(a > b)); /* LTH */ OPC_SR2(0x13, PUSH(a < b)); - /* AND */ OPC_SR2(0x14, PUSH(a & b)); - /* IOR */ OPC_SR2(0x15, PUSH(a | b)); - /* XOR */ OPC_SR2(0x16, PUSH(a ^ b)); - /* NOT */ OPC_SR1(0x17, , SET(~ARG)); - /* NOT */ OPC_SR1r(0x17, SET(~ARGX); SET(~ARGY); ); - /* SWP */ OPC_SR2(0x18, if ((rx||ry)) { SET(b); } else { PUSH(b); PUSH(a); } ); - /* DUP */ OPC_SR1(0x19, , SET(READ(USER_STACK_START + (*u) - (w ? 2 : 1)))); - /* DUP */ OPC_SR1r(0x19, SETX(READ(USER_STACK_START + (*u) - (w ? 2 : 1))); SETY(READ(USER_STACK_START + (*u) - (w ? 2 : 1))); ); + /* NOT */ OPC_SR1(0x14, , SET(~ARG)); + /* NOT */ OPC_SR1r(0x14, SET(~ARGX); SET(~ARGY); ); + /* AND */ OPC_SR2(0x15, PUSH(a & b)); + /* IOR */ OPC_SR2(0x16, PUSH(a | b)); + /* XOR */ OPC_SR2(0x17, PUSH(a ^ b)); + /* DUP */ OPC_SR1(0x18, , SET(READ(USER_STACK_START + (*u) - (w ? 2 : 1)))); + /* DUP */ OPC_SR1r(0x18, SETX(READ(USER_STACK_START + (*u) - (w ? 2 : 1))); SETY(READ(USER_STACK_START + (*u) - (w ? 2 : 1))); ); + /* SWP */ OPC_SR2(0x19, if ((rx||ry)) { SET(b); } else { PUSH(b); PUSH(a); } ); /* OVR */ OPC_SR2(0x1A, PUSH(b); PUSH(a); PUSH(b)); /* ROT */ OPC_SR2(0x1B, PUSH(b); PUSH(POP()); PUSH(a)); /* JMP */ OPC_SR1(0x1C, , *pc = ADDR(ARG)-1;);