Your PC is conceptually correct, but you have a few syntax errors in your HDL.
Inc16 does not have an input pin named 'a'.
You need to use 'true' and 'false' for 1 and 0 constants.
When you have your PC working, email it to me and I'll send back some alternative implementations.
Please edit your post to remove the [mostly] working HDL.
--Mark