From a000308104aab27c2dde9a306f1bc654b2db4806 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Wed, 29 Nov 2017 12:30:41 +0100 Subject: first commit --- tools/builtInChips/Screen.hdl | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tools/builtInChips/Screen.hdl (limited to 'tools/builtInChips/Screen.hdl') diff --git a/tools/builtInChips/Screen.hdl b/tools/builtInChips/Screen.hdl new file mode 100644 index 0000000..5e7837b --- /dev/null +++ b/tools/builtInChips/Screen.hdl @@ -0,0 +1,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; +} + + + + \ No newline at end of file -- cgit v1.2.3