summaryrefslogtreecommitdiff
path: root/tools/builtInChips/Screen.hdl
blob: 5e7837b04422a58cd5bcfc7a5e77aa8865bb9888 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 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/Screen.hdl

/**
 * The Screen (memory map).
 * Functions exactly like a 16-bit 8K RAM:
 *    1. out(t)=Screen[address(t)](t)
 *    2. If load(t-1) then Screen[address(t-1)](t)=in(t-1)
 *
 * The built-in chip implementation has the side effect of continuously 
 * refreshing a visual 256 by 512 black-and-white screen, simulated 
 * by the simulator. Each row in the visual screen is represented 
 * by 32 consecutive 16-bit words, starting at the top left corner 
 * of the visual screen. Thus the pixel at row r from the top and 
 * column c from the left (0<=r<=255, 0<=c<=511) reflects the c%16 
 * bit (counting from LSB to MSB) of the word found in 
 * Screen[r*32+c/16]. 
 */

CHIP Screen {

    IN  in[16],    // what to write
    load,          // write-enable bit
    address[13];   // where to read/write
    OUT out[16];   // Screen value at the given address

    BUILTIN Screen;
    CLOCKED in, load;
}