
Hi everybody. I have been loving going through this process of building a computer from Nand chips.
My Mux4Way16 chip is implemented as such:
Mux16(a=a[0..15],b=d[0..15],sel=sel[0], out=q);
Mux16(a=c[0..15],b=b[0..15],sel=sel[1], out=z);
Xor(a=sel[0],b=sel[1],out=h);
Mux16(a=q, b=z, sel=h, out = out[0..15]);
However, I get a comparison failure at line seven. Here is the error:
My chips .out:
a 0001001000110100 b 1001100001110110 c 1010101010101010 d 0101010101010101 sel 01 out 1010101010101010 
Actual .out:
a 0001001000110100 b 1001100001110110 c 1010101010101010 d 0101010101010101 sel 01 out 1001100001110110
I don't understand why an input of 0 0 1 0 with a sel of 01 would output 1, as it does in the third "column" of my input.
