diff options
author | Yuchen Pei <me@ypei.me> | 2017-12-12 14:30:43 +0100 |
---|---|---|
committer | Yuchen Pei <me@ypei.me> | 2017-12-12 14:30:43 +0100 |
commit | ec61018d15ba4ad0a41e1ab44d7e1ecb5f2870d2 (patch) | |
tree | 95941d2d7106df0f4641a22f0aa3f4f974bfe338 /projects/04/fill | |
parent | 7ce33ecd1734f5a83afb55b8311b541d17cbbd6f (diff) |
finished project 4
Diffstat (limited to 'projects/04/fill')
-rw-r--r-- | projects/04/fill/Fill.asm | 64 | ||||
-rw-r--r-- | projects/04/fill/Fill.tst | 2 | ||||
-rw-r--r-- | projects/04/fill/FillAutomatic.out | 4 | ||||
-rw-r--r-- | projects/04/fill/FillAutomatic.tst | 2 |
4 files changed, 69 insertions, 3 deletions
diff --git a/projects/04/fill/Fill.asm b/projects/04/fill/Fill.asm index 8f24a95..16d63e2 100644 --- a/projects/04/fill/Fill.asm +++ b/projects/04/fill/Fill.asm @@ -11,4 +11,66 @@ // "white" in every pixel;
// the screen should remain fully clear as long as no key is pressed.
-// Put your code here.
\ No newline at end of file +// Put your code here.
+
+(BEGIN)
+@KBD
+D=M
+
+@BLACK
+D;JNE
+
+@WHITE
+0;JMP
+
+(BLACK)
+@8191
+D=A
+@i
+M=D
+
+(LOOPB)
+@i
+D=M
+@j
+M=D
+@SCREEN
+D=A
+@j
+M=M+D
+A=M
+M=-1
+@i
+M=M-1
+D=M
+@LOOPB
+D+1;JGT
+
+@BEGIN
+0;JMP
+
+(WHITE)
+@8191
+D=A
+@i
+M=D
+
+(LOOPW)
+@i
+D=M
+@j
+M=D
+@SCREEN
+D=A
+@j
+M=M+D
+A=M
+M=0
+@i
+M=M-1
+D=M
+@LOOPW
+D+1;JGT
+
+@BEGIN
+0;JMP
diff --git a/projects/04/fill/Fill.tst b/projects/04/fill/Fill.tst index 149bfee..e8bb385 100644 --- a/projects/04/fill/Fill.tst +++ b/projects/04/fill/Fill.tst @@ -3,7 +3,7 @@ // by Nisan and Schocken, MIT Press.
// File name: projects/04/fill/Fill.tst
-load Fill.hack;
+load Fill.asm;
echo "Make sure that 'No Animation' is selected. Then, select the keyboard, press any key for some time, and inspect the screen.";
repeat {
diff --git a/projects/04/fill/FillAutomatic.out b/projects/04/fill/FillAutomatic.out new file mode 100644 index 0000000..a71db27 --- /dev/null +++ b/projects/04/fill/FillAutomatic.out @@ -0,0 +1,4 @@ +|RAM[16384]|RAM[17648]|RAM[18349]|RAM[19444]|RAM[20771]|RAM[21031]|RAM[22596]|RAM[23754]|RAM[24575]| +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +| -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | +| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | diff --git a/projects/04/fill/FillAutomatic.tst b/projects/04/fill/FillAutomatic.tst index 90bfef9..fbc29a0 100644 --- a/projects/04/fill/FillAutomatic.tst +++ b/projects/04/fill/FillAutomatic.tst @@ -12,7 +12,7 @@ // This is done in order to test that these registers are set to 000...0 or 111....1, // as mandated by how the Fill program should react to the keyboard events. -load Fill.hack, +load Fill.asm, output-file FillAutomatic.out, compare-to FillAutomatic.cmp, output-list RAM[16384]%D2.6.2 RAM[17648]%D2.6.2 RAM[18349]%D2.6.2 RAM[19444]%D2.6.2 RAM[20771]%D2.6.2 RAM[21031]%D2.6.2 RAM[22596]%D2.6.2 RAM[23754]%D2.6.2 RAM[24575]%D2.6.2; |