diff options
Diffstat (limited to 'instructions/sys.ts')
-rw-r--r-- | instructions/sys.ts | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/instructions/sys.ts b/instructions/sys.ts deleted file mode 100644 index 5131bf2..0000000 --- a/instructions/sys.ts +++ /dev/null @@ -1,55 +0,0 @@ -// deno-lint-ignore-file no-case-declarations no-process-globals -import { PC } from "../pc.ts"; - -export default { - function(this: PC) { - switch (this.registers[0]) { - case 0: - switch (this.registers[1]) { - case 0: - const data = new Uint8Array(1024) - const len = Deno.stdin.readSync(data) ?? 0 - let i = 0; - while (i < len) { - this.mem[this.registers[2] + i] = data[i] - i++ - } - this.registers[0] = len - this.mem[this.registers[2] + i] = 0 - break; - - default: - throw 'unknown fd' - } - break; - case 1: - const writeBuff = []; - let i = this.registers[2]; - while (this.mem[i] != 0 && i <= this.mem.length) { - writeBuff.push(this.mem[i]); - i++ - } - switch (this.registers[1]) { - case 1: - process.stdout.write(writeBuff.map(a => String.fromCharCode(a)).join('')) - break; - - case 2: - process.stderr.write(writeBuff.map(a => String.fromCharCode(a)).join('')) - break; - - default: - throw 'unknown fd' - } - break; - - case 2: - Deno.stdin.setRaw(this.registers[1] ? true : false); - break; - - default: - throw 'unknown syscall id ' + this.registers[0] - } - }, - args: 0 -} \ No newline at end of file |