I realized that I had never used (until now) the Mux4Way16 in an implementation. I see that I got tripped up by the left-to-right, right-to-left in my Truth Table and my implementation. Not sure how I would know this form the Mux4Way16 specification?
I did a Google search "Mux4Way16" and the first page came up:
https://github.com/whostolebenfrog/The-Elements-of-Computing-Systems/blob/master/project1/Mux4Way16.hdlI saw the sel[0] and sel[1] were the opposite of mine.
I understand the LSB is the right-most bit and the MSB is the right-most bit; I guess it's as simple as that.
Now on to the zr, ng outputs...
Taking the incremental approach (thank you for exhortation!) I was able to tackle the zr and ng bits separately; and was able to implement successfully. It also helped to comment out the compare file in order to evaluate each output independently.
Thanks again for all those who helped me with all the chips/gates. I can now move on to Sequential Logic; one step closer to "Building a Computer from First Principles".