The thing to understand in Figure 5.9 is that the "C" signals are a lot of individual signals. If you could magnify the figure you'd see the "C"s going into the top of the ALU as
![ALU showing control inputs](http://nand2tetris-questions-and-answers-forum.52.s1.nabble.com/file/n4027092/ALU.gif)
Magnifying the "C" outputs from the Decode block you'd see
![Decode showing control output detail](http://nand2tetris-questions-and-answers-forum.52.s1.nabble.com/file/n4027092/decode.gif)
As Ybakos said, Decode is just a bunch of logic in the CPU. Here's a hint to get you started:
Some of the control signals must only be asserted (true) during A-instructions and some of them only during C-instructions. You will need a signal that indicates when an A-instruction is executing. It will also be handy to have a signal that indicates a C-instruction. You can generate these as
// Instruction decoder
Not(in=instruction[15], out=aInst);
Not(in=aInst, out=cInst);
When do you want to load the A register? For all A-instructions and for C-instructions with the d1 bit set. So you need a control signal to hook to the A-register's load:
loadAreg = aInst | (cInst & d1)
If you need more help, feel free to email me directly.
--Mark