There seem to be less and less threads as the course goes on. However, I did find this one (
http://nand2tetris-questions-and-answers-forum.32033.n3.nabble.com/Memory-Mapped-I-O-Misunderstanding-td2744686.html), in which Mark states:
For the HACK computer, memory addresses
0..16K-1 read and write from the RAM16K chip,
16K..24K-1 read and write from Screen chip addresses 0..8K-1, respectively,
24K reads from the Keyboard chip.
24K+1..
64K-1 undefined what will happen (I.e., "don't try this at home, kids!")
Coming from C++, the 24K+ part being undefined is very familiar to me. Currently, my memory chip passes the test, but to make the decision of which chip to pass the inputs to, assumes that the Keyboard chip is 8K in length.
In other words, an address from 0-16K will cause the inputs to be delegated to the RAM16K chip, an address of 16K-24K will cause the inputs to be delegated to the Screen chip, and an address of 24K-32K will cause interaction with the Keyboard chip. I don't mention 32K-64K because the address input is 15 bits wide.
Is it ok to take "undefined" to mean that if an invalid address is passed in, it's the passer's fault and the chip can do as it pleases, including causing all 8K memory addresses past the starting range of the Keyboard chip to act as if the address was the Keyboard chip's single address (e.g. passing in 28967 would act as if 24576 was passed in)?