// 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 Math.init(); do Keyboard.init(); do Memory.init(); do Output.init(); do Screen.init(); do Main.main(); do Sys.halt(); } /** Halts the program execution. */ function void halt() { while(true){ } } /** Waits approximately duration milliseconds and returns. */ function void wait(int duration) { var int i; while (duration > 0){ let i = 100; while(i > 0){ let i = i -1; } let duration = duration - 1; } return; } /** Displays the given error code in the form "ERR", * and halts the program's execution. */ function void error(int errorCode) { var String s; let s = String.new(3); do s.setInt(errorCode); do Output.printString("ERR"); do Output.printString(s); return; } }