Internal Busses - retrotruestory/M1DEV GitHub Wiki
Internal Busses
There are 3 internal busses connecting the registers and ALUs. Two busses, L and R, correspond to the left and right operands of an aluop. The other bus, Z, is the output of the ALU. In order to avoid microcode mistakes from damaging the machine, it will be possible for only one entity to drive a bus at a time (with one exception, see note below). The operand busses will have a corresponding "Enable" field in the microcode which will feed into a field decoder , the output of which will drive the 3-state enables of the various devices hanging off that bus.
If only the low byte of the Z bus is being driven by the ALU, then we automatically drive the high byte of the Z bus with a copy of bit 7 of the low byte. This provides the sign extend functionality.
The possible drivers for the various busses follow. Note that MDR can drive either or both operand busses.
- R Bus
- MDR
- Immediate (from microcode - not instruction)
- L Bus
- MDR
- A
- B
- C
- DP
- SP
- SSP
- TPC
- PC
- MAR
- Fault code (i.e. the output of the priority encoder)
- Z Bus
- ALU/Sign extend circuitry