diff options
Diffstat (limited to 'jackos/Sys.jack')
| -rw-r--r-- | jackos/Sys.jack | 51 | 
1 files changed, 51 insertions, 0 deletions
| diff --git a/jackos/Sys.jack b/jackos/Sys.jack new file mode 100644 index 0000000..53c078c --- /dev/null +++ b/jackos/Sys.jack @@ -0,0 +1,51 @@ +// This file is part of www.nand2tetris.org
 +// and the book "The Elements of Computing Systems"
 +// by Nisan and Schocken, MIT Press.
 +// File name: projects/12/Sys.jack
 +
 +/**
 + * A library that supports various program execution services.
 + */
 +class Sys {
 +
 +    /** Performs all the initializations required by the OS. */
 +    function void init() {
 +        do Keyboard.init();
 +        do Math.init();
 +        do Memory.init();
 +        do Output.init();
 +        do Screen.init();
 +        do Main.main();
 +        do Sys.halt();
 +        return;
 +    }
 +
 +    /** Halts the program execution. */
 +    function void halt() {
 +        while (true){
 +        }
 +        return;
 +    }
 +
 +    /** Waits approximately duration milliseconds and returns.  */
 +    function void wait(int duration) {
 +        var int i, j;
 +        let i = 0;
 +        while (i < duration){
 +            let i = i + 1;
 +            let j = 0;
 +            while (j < 318){
 +                let j = j + 1;
 +            }
 +        }
 +        return;
 +    }
 +
 +    /** Displays the given error code in the form "ERR<errorCode>",
 +     *  and halts the program's execution. */
 +    function void error(int errorCode) {
 +        do Output.printString("ERR");
 +        do Output.printInt(errorCode);
 +        return;
 +    }
 +}
 | 
