The function selector board is completed.
This is 16-bit 8-to-1 multiplexer, using 16 74HC151 chips, and quite a lot of wire.
Here it is:
Additional ALU refinements
1. Adjusting ROT instruction:
For now, the ROT instruction can only be used with rotation value hardcoded into instruction itself. Very recently it occurred to me that with a small change (addition of one 4bit 2-to-1 multiplexer) it could be made so that it also can take the rotation value from Src2 register.
The ROT instruction will need addition of one more 74HC157 chip to be modified this way.
2. Replacing ZERO instruction by something more useful:
There are several ways to put zero value into register: could be subtraction from itself, or XOR with itself, or OR with zero, and maybe some other ways. So, having special instruction ZERO feels unnecessary. Therefore, I decided to incorporate some additional functions into the ALU, the Byte Sign Extend (BSE) and Magnitude (Mag).
BSE would just copy bit 7 into all higher bits, making byte values signed.
Mag should give the size of a number in bits, i.e. if there is number 0b 0000 0110 1100 1100 in source register,
the result would be 0b 0000 0000 0000 1011 (the number is eleven bits).
This will probably take one more board, and together with all boards already soldered, fully functional ALU can be assembled.
ALU scheme with updates:
1: Rotation amount source selector is added to barrel rotator board:
2: Thoughts on scaling back additional functionality:
As I am trying to come up with the circuit that would output number magnitude, it starts to seem that this is a non-trivial task, and such circuit most probably won't be implemented.
So, this would leave only BSE function, which is implemented only by wiring.