The overall design of the hack CPU is elegant, and a great example of good pedagogy. There is just one design aspect which I can't figure out. The Program Counter has two separate control lines: load and incr. I sort of think they are mutually exclusive: if we are loading the PC with a new value (i.e. a jump), then incr will be off, and if we are not loading a new value, we will be incrementing.
Could the design of the PC be changed to keep just one of these lines, e.g. just incr?