so I don't think I understand the assignment.. seams simple fill the screen when a key is pushed clear when not.. but we don't have bulk copy (I can in a command take 8192 memory positions and copy them to screen memory) so it takes time to blank the screen (background is white) or to fill the screen.
so there are two options, one is if the key is pressed to go fill screen and it does not matter if you let go..
and when that instance is done, if your not holding a key clear it..
or you can check at every memory update and change what you are doing mid clearing or filling.. which leads to a more reactive keyboard time..
Remember that the purpose of the programs in this project are not to accomplish some in-depth task -- they are merely to get you exposed to the tools available and to get your toes wet with the Hack Assembly Language.
The fill.asm program is just to get you to interact with the keyboard and the screen memory. Since you don't have any of the Standard Library functions available to you (since you haven't written them yet), you have to do this at a very superficial level. As the project specification clearly spells out, the screen should simply become all black if you hold the key down long enough and it should become white if you leave the key up long enough. Those are the only constraints. The details of HOW you accomplish this are completely up to you. There are several reasonable ways to go about it.