summaryrefslogtreecommitdiff
path: root/projects/12/MathTest
diff options
context:
space:
mode:
authorFrederick Yin <fkfd@fkfd.me>2022-08-16 11:54:23 +0800
committerFrederick Yin <fkfd@fkfd.me>2022-08-16 11:54:23 +0800
commit9542deeb483a00b6fabed7574720926ce97d7511 (patch)
tree0f2c1f72c03dd4693fd59df67544d2a4dddc5494 /projects/12/MathTest
parent9c0cb1d1c32724fc95ac9548e4f8d873d3adaccc (diff)
Projects, 01-06 completed
Diffstat (limited to 'projects/12/MathTest')
-rw-r--r--projects/12/MathTest/Main.jack35
-rw-r--r--projects/12/MathTest/MathTest.cmp2
-rw-r--r--projects/12/MathTest/MathTest.tst15
3 files changed, 52 insertions, 0 deletions
diff --git a/projects/12/MathTest/Main.jack b/projects/12/MathTest/Main.jack
new file mode 100644
index 0000000..de5cec2
--- /dev/null
+++ b/projects/12/MathTest/Main.jack
@@ -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: projects/12/MathTest/Main.jack
+
+/** Test program for the OS Math class. */
+class Main {
+
+ /** Performs various mathematical operations, using calls to the Math class methods. */
+ function void main() {
+ var Array r; // stores the test results;
+
+ let r = 8000;
+
+ let r[0] = 2 * 3; // 6
+ let r[1] = r[0] * (-30); // 6 * (-30) = -180
+ let r[2] = r[1] * 100; // (-180) * 100 = -18000
+ let r[3] = 1 * r[2]; // 1 * (-18000) = -18000
+ let r[4] = r[3] * 0; // 0
+
+ let r[5] = 9 / 3; // 3
+ let r[6] = (-18000) / 6; // -3000
+ let r[7] = 32766 / (-32767); // 0
+
+ let r[8] = Math.sqrt(9); // 3
+ let r[9] = Math.sqrt(32767); // 181
+
+ let r[10] = Math.min(345, 123); // 123
+ let r[11] = Math.max(123, -345); // 123
+ let r[12] = Math.abs(27); // 27
+ let r[13] = Math.abs(-32767); // 32767
+
+ return;
+ }
+}
diff --git a/projects/12/MathTest/MathTest.cmp b/projects/12/MathTest/MathTest.cmp
new file mode 100644
index 0000000..703c1be
--- /dev/null
+++ b/projects/12/MathTest/MathTest.cmp
@@ -0,0 +1,2 @@
+|RAM[8000]|RAM[8001]|RAM[8002]|RAM[8003]|RAM[8004]|RAM[8005]|RAM[8006]|RAM[8007]|RAM[8008]|RAM[8009]|RAM[8010]|RAM[8011]|RAM[8012]|RAM[8013]|
+| 6 | -180 | -18000 | -18000 | 0 | 3 | -3000 | 0 | 3 | 181 | 123 | 123 | 27 | 32767 |
diff --git a/projects/12/MathTest/MathTest.tst b/projects/12/MathTest/MathTest.tst
new file mode 100644
index 0000000..127dbb4
--- /dev/null
+++ b/projects/12/MathTest/MathTest.tst
@@ -0,0 +1,15 @@
+// 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/MathTest/MathTest.tst
+
+load,
+output-file MathTest.out,
+compare-to MathTest.cmp,
+output-list RAM[8000]%D2.6.1 RAM[8001]%D2.6.1 RAM[8002]%D2.6.1 RAM[8003]%D2.6.1 RAM[8004]%D2.6.1 RAM[8005]%D2.6.1 RAM[8006]%D2.6.1 RAM[8007]%D2.6.1 RAM[8008]%D2.6.1 RAM[8009]%D2.6.1 RAM[8010]%D2.6.1 RAM[8011]%D2.6.1 RAM[8012]%D2.6.1 RAM[8013]%D2.6.1;
+
+repeat 1000000 {
+ vmstep;
+}
+
+output;