mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-11 06:34:43 -05:00
project04: add template files
This commit is contained in:
11
04/fill/Fill.asm
Normal file
11
04/fill/Fill.asm
Normal file
@@ -0,0 +1,11 @@
|
||||
// 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/4/Fill.asm
|
||||
|
||||
// Runs an infinite loop that listens to the keyboard input.
|
||||
// When a key is pressed (any key), the program blackens the screen,
|
||||
// i.e. writes "black" in every pixel. When no key is pressed,
|
||||
// the screen should be cleared.
|
||||
|
||||
//// Replace this comment with your code.
|
||||
13
04/fill/Fill.tst
Normal file
13
04/fill/Fill.tst
Normal file
@@ -0,0 +1,13 @@
|
||||
// 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/04/fill/Fill.tst
|
||||
|
||||
// Tests the Fill.hack program in the CPU emulator.
|
||||
|
||||
load Fill.hack;
|
||||
echo "Make sure that 'No Animation' is selected. Then, select the keyboard, press any key for some time, and inspect the screen.";
|
||||
|
||||
repeat {
|
||||
ticktock;
|
||||
}
|
||||
36
04/fill/FillAutomatic.tst
Normal file
36
04/fill/FillAutomatic.tst
Normal file
@@ -0,0 +1,36 @@
|
||||
// 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/4/fill/FillAutomatic
|
||||
|
||||
// This script can be used to test the Fill program automatically,
|
||||
// rather than interactively. Specifically, the script sets the keyboard
|
||||
// memory map (RAM[24576]) to 0, 1, and then again to 0. This simulates the
|
||||
// acts of leaving the keyboard untouched, pressing some key, and then releasing
|
||||
// the key. After each one of these simulated events, the script outputs the values
|
||||
// of some selected registers from the screen memory map (RAM[16384]-RAM[24576]).
|
||||
// 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.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;
|
||||
|
||||
set RAM[24576] 0, // the keyboard is untouched
|
||||
repeat 1000000 {
|
||||
ticktock;
|
||||
}
|
||||
output; // tests that the screen is white
|
||||
|
||||
set RAM[24576] 1, // a keyboard key is pressed
|
||||
repeat 1000000 {
|
||||
ticktock;
|
||||
}
|
||||
output; // tests that the screen is black
|
||||
|
||||
set RAM[24576] 0, // the keyboard is untouched
|
||||
repeat 1000000 {
|
||||
ticktock;
|
||||
}
|
||||
output; // tests that the screen is white
|
||||
10
04/mult/Mult.asm
Normal file
10
04/mult/Mult.asm
Normal file
@@ -0,0 +1,10 @@
|
||||
// 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/4/Mult.asm
|
||||
|
||||
// Multiplies R0 and R1 and stores the result in R2.
|
||||
// (R0, R1, R2 refer to RAM[0], RAM[1], and RAM[2], respectively.)
|
||||
// The algorithm is based on repetitive addition.
|
||||
|
||||
//// Replace this comment with your code.
|
||||
78
04/mult/Mult.tst
Normal file
78
04/mult/Mult.tst
Normal file
@@ -0,0 +1,78 @@
|
||||
// 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/4/mult/Mult.tst
|
||||
|
||||
// Tests the Mult program, designed to compute R2 = R0 * R1.
|
||||
// Tests the program by having it multiply several sets of
|
||||
// R0 and R1 values.
|
||||
|
||||
load Mult.asm,
|
||||
output-file Mult.out,
|
||||
compare-to Mult.cmp,
|
||||
output-list RAM[0]%D2.6.2 RAM[1]%D2.6.2 RAM[2]%D2.6.2;
|
||||
|
||||
set RAM[0] 0, // Sets R0 and R1 to some input values
|
||||
set RAM[1] 0,
|
||||
set RAM[2] -1; // Ensures that the program initialized R2 to 0
|
||||
repeat 20 {
|
||||
ticktock;
|
||||
}
|
||||
set RAM[0] 0, // Restores R0 and R1 in case the program changed them
|
||||
set RAM[1] 0,
|
||||
output;
|
||||
|
||||
set PC 0,
|
||||
set RAM[0] 1, // Sets R0 and R1 to some input values
|
||||
set RAM[1] 0,
|
||||
set RAM[2] -1; // Ensures that the program initialized R2 to 0
|
||||
repeat 50 {
|
||||
ticktock;
|
||||
}
|
||||
set RAM[0] 1, // Restores R0 and R1 in case the program changed them
|
||||
set RAM[1] 0,
|
||||
output;
|
||||
|
||||
set PC 0,
|
||||
set RAM[0] 0, // Sets R0 and R1 to some input values
|
||||
set RAM[1] 2,
|
||||
set RAM[2] -1; // Ensures that the program initialized R2 to 0
|
||||
repeat 80 {
|
||||
ticktock;
|
||||
}
|
||||
set RAM[0] 0, // Restores R0 and R1 in case the program changed them
|
||||
set RAM[1] 2,
|
||||
output;
|
||||
|
||||
set PC 0,
|
||||
set RAM[0] 3, // Sets R0 and R1 to some input values
|
||||
set RAM[1] 1,
|
||||
set RAM[2] -1; // Ensures that the program initialized R2 to 0
|
||||
repeat 120 {
|
||||
ticktock;
|
||||
}
|
||||
set RAM[0] 3, // Restores R0 and R1 in case the program changed them
|
||||
set RAM[1] 1,
|
||||
output;
|
||||
|
||||
set PC 0,
|
||||
set RAM[0] 2, // Sets R0 and R1 to some input values
|
||||
set RAM[1] 4,
|
||||
set RAM[2] -1; // Ensures that the program initialized R2 to 0
|
||||
repeat 150 {
|
||||
ticktock;
|
||||
}
|
||||
set RAM[0] 2, // Restores R0 and R1 in case the program changed them
|
||||
set RAM[1] 4,
|
||||
output;
|
||||
|
||||
set PC 0,
|
||||
set RAM[0] 6, // Sets R0 and R1 to some input values
|
||||
set RAM[1] 7,
|
||||
set RAM[2] -1; // Ensures that the program initialized R2 to 0
|
||||
repeat 210 {
|
||||
ticktock;
|
||||
}
|
||||
set RAM[0] 6, // Restores R0 and R1 in case the program changed them
|
||||
set RAM[1] 7,
|
||||
output;
|
||||
Reference in New Issue
Block a user