diff options
Diffstat (limited to 'subx/019syscalls.cc')
-rw-r--r-- | subx/019syscalls.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/subx/019syscalls.cc b/subx/019syscalls.cc new file mode 100644 index 00000000..96c11ee0 --- /dev/null +++ b/subx/019syscalls.cc @@ -0,0 +1,19 @@ +:(before "End Single-Byte Opcodes") +case 0xcd: { // int imm8 (software interrupt) + uint8_t code = next(); + if (code != 0x80) { + raise << "Unimplemented interrupt code " << HEXBYTE << code << '\n' << end(); + raise << " Only `int 80h` supported for now.\n" << end(); + break; + } + process_int80(); + break; +} + +:(code) +void process_int80() { + switch (Reg[EAX].u) { + case 1: + exit(Reg[EBX].u); + } +} |