all repos — xyw @ 94b81f553a2fdc7f410cd395c3f4ee69d55f9b43

A minimal virtual machine and assembler for terminals.

Refactoring macros.
h3rald h3rald@h3rald.com
Fri, 05 Dec 2025 14:11:51 +0100
commit

94b81f553a2fdc7f410cd395c3f4ee69d55f9b43

parent

13b10115f9d4a50b31324d88ca46d76d6f797222

1 files changed, 2 insertions(+), 20 deletions(-)

jump to
M xywrun.cxywrun.c

@@ -235,24 +235,6 @@ case opc: { const xyw_byte w = 0; body; } break; \

case XYW_MODE_W|opc: { const xyw_byte w = 1; body; } break; \ } -#define OPC_LDB(opc) { \ - case opc: { us_push(read( DIRECT_PAGE | us_pop())); } break; \ - case XYW_MODE_W|opc: { us_push(read(us_popw())); } break; \ - case XYW_MODE_X|opc: { us_push(read(DIRECT_PAGE | *x)); } break; \ - case XYW_MODE_Y|opc: { us_push(read(DIRECT_PAGE | *y)); } break; \ - case XYW_MODE_X|XYW_MODE_W|opc: { us_push(read(*xw)); } break; \ - case XYW_MODE_Y|XYW_MODE_W|opc: { us_push(read(*yw)); } break; \ -} - -#define OPC_LDW(opc) { \ - case opc: { us_pushw(readw( DIRECT_PAGE | us_pop())); } break; \ - case XYW_MODE_W|opc: { us_pushw(readw(us_popw())); } break; \ - case XYW_MODE_X|opc: { us_pushw(readw(DIRECT_PAGE | *x)); } break; \ - case XYW_MODE_Y|opc: { us_pushw(readw(DIRECT_PAGE | *y)); } break; \ - case XYW_MODE_X|XYW_MODE_W|opc: { us_pushw(readw(*xw)); } break; \ - case XYW_MODE_Y|XYW_MODE_W|opc: { us_pushw(readw(*yw)); } break; \ -} - // TODO: Review #define OPC_STB(opc) { \ case opc: { xyw_byte a = us_pop(), v = us_pop(); write(DIRECT_PAGE | a, v); } break; \

@@ -363,8 +345,8 @@ // clang-format off

/* BRK */ case 0x00: return 0; // Halting execution for now /* PSH */ OPC_PSH(0x01); /* POP */ OPC_POP(0x02); - /* LDB */ OPC_LDB(0x04); - /* LDW */ OPC_LDW(0x05); + /* LDB */ OPC_SR1(0x04, us_push(read( ADDR(ARG)) )); + /* LDW */ OPC_SR1(0x05, us_pushw(readw( ADDR(ARG)) )); /* STB */ OPC_STB(0x06); /* STW */ OPC_STW(0x07); /* INC */ OPC_IDC(0x08, +1);