|
The Registers
There are 16 registers in the MIC-1. The hardware refers to them numerically, but the following acronyms are used to better understand their use.
|
Acronym | Description and Use |
---|---|
A-Latch | Holds values sent out over the A-Bus that could then be sent AMUX which will then decide if it should be sent to the left side of the ALU or discarded. |
B-Latch | Holds values sent out over the B-Bus that could then be either sent to the right side of the ALU, or to the MBR , or both. |
AMUX | The A-Multiplexer selects one of two inputs to send to the left sine of the ALU. |
ALU | The Arithmetic Logic Unit can select among four possible functions, and then sends the result on to the Shifter. |
Shifter | The Shifter will select among various shift operations and then sends the value out on the C-Bus which also sends a copy to the MBR which may or may not use it. |
MAR | The Memory Address Register holds the address of some place in Main Memory. This register can only be loaded from the data from the B-Latch (B-Bus). |
MBR | The Memory Buffer Register will read or write its contents to Main Memory depending upon its control lines. The address that it uses for either of these operations is held in the MAR. The MBR can also be filled from the C-Bus. |
Main Memory | The Main Memory of the MIC-1 is a sequential array of 16-bit words that can hold a user's program. In the example shown here, the lowest memory address is 0000 and the highest is 9999, but the actual highest address would be controlled by the value in Register 8 ( A-Mask ). |
|
    |
Field | Numerical Value and Action |
---|---|
|
A-Multiplexer 0 - Load the ALU from the A-Latch 1 - Load the ALU from the MBR |
|
Conditional Branch 0 - No Branch 1 - Branch to value in ADDR if ALU is Negative 2 - Branch to value in ADDR if ALU is Zero 3 - Branch to value in ADDR Always |
|
Arithemtic Logic Unit Operations 0 - A + B (ADD from A-Latch Side and B-Latch) 1 - A & B (AND from A-Latch Side and B-Latch) 2 - A (Just let A-latch side pass through and do nothing) 3 - !A (INVERT A) |
|
Shifter Operations 0 - NO Shift 1 - Shift RIGHT one bit 2 - Shift LEFT one bit 3 - Not Used |
|
Memory Buffer Register 0 - Do Not Load the Memory Buffer Register 1 - Load the Memory Buffer Register from the C-Bus |
|
Memory Address Register 0 - Do Not Load the Memory Address Register 1 - Load the Memory Addres Register from the B-Latch |
|
Read from Main Memory 0 - Do Not Read from Memory 1 - Read into MBR, the contents of Main Memory according to the Address in MAR |
|
Write to Main Memory 0 - Do Not Write to Memory 1 - Write contents of MBR to Main Memory according to the Address in MAR |
|
Enable the C-Bus 0 - Do Not Activate the C-Bus (no storing of Values into any of the 16 Registers 1 - Activate C-Bus, or store the value leaving the Shifter into the register specified in the C-Field |
|
C-Bus Select Register 0 - 15 - Which of 16 Registers will be stored from the C-Bus. ENC must be active, too. |
|
B-Bus Select Register 0 - 15 - Select one of 16 Registers to be loaded onto the B-Bus and B-Latch |
|
A-Bus Select Register 0 - 15 - Select one of 16 Registers to be loaded onto the A-Bus and A-Latch |
|
Address Field 0 - 255 - One of 256 Addresses (Micro-instructions) in the Control Store. Will be used by the COND field for Microcode jumps. |