summary refs log tree commit diff
path: root/instructions/sys.ts
diff options
context:
space:
mode:
Diffstat (limited to 'instructions/sys.ts')
-rw-r--r--instructions/sys.ts55
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