summaryrefslogtreecommitdiff
path: root/tools/builtInChips/Screen.hdl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/builtInChips/Screen.hdl')
-rw-r--r--tools/builtInChips/Screen.hdl35
1 files changed, 35 insertions, 0 deletions
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