// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: tools/builtIn/ROM32K.hdl

/**
 * Read-Only memory (ROM) of 16K registers, each 16-bit wide.
 * The chip is designed to facilitate data read, as follows:
 *     out(t) = ROM32K[address(t)](t)
 * In words: the chip always outputs the value stored at the 
 * memory location specified by address.
 *
 * The built-in chip implementation has a GUI side-effect, 
 * showing an array-like component that displays the ROM's 
 * contents. The ROM32K chip is supposed to be pre-loaded with 
 * a machine language program. To that end, the built-in chip
 * implementation also knows how to handle the "ROM32K load Xxx"
 * script command, where Xxx is the name of a text file containing 
 * a program written in the Hack machine language.  When the 
 * simulator encounters such a command in a test script, the code 
 * found in the file is loaded into the simulated ROM32K unit.
 */

CHIP ROM32K {

    IN  address[15];
    OUT out[16];

    BUILTIN ROM32K;
}
