Close

More Jump Instructions

A project log for BREDSAC

Electronic Dynamic Storage Breadboard Computer

greg.ewinggreg.ewing 07/10/2020 at 12:260 Comments

I found while writing the test program that programming with just the two original EDSAC jump instructions was quite awkward, so I added a couple of instructions from a later version of the machine: an unconditional jump, and a jump if AC nonzero.

To support the jump if nonzero instruction, I connected my one remaining ubranch multiplexer input to the zero FF output from the ALU. (I hope I won't need any more ubranch conditions!)

Both of the new jump instructions are encoded with opcode F, and distinguished by instruction bit 0. Accordingly, they are written in assembly language as

F addr F # Jump
F addr D # Jump if nonzero

(In the original version of the EDSAC, opcode F was "Read the last character output for verification". I don't think I will miss that.)

New ubranch input:

Microcode for the new jump instructions:

# UBCOND values
BNZER = 111  # Zero FF = 0

# F F - Unconditional jump
   10001 0 0001 :  -  EOI  11  X0    -  Y0    CY0  --   -   -  MSW LSW  -    -    -   JUMP    -   BSGN0  ----

# F D - Jump if accumulator <> 0
   10001 1 0001 :  -   -   00  XAC   -  Y0    CY0  --   -   -   -  LSW  -    -    -   ---     -   ---    ----
   10001 1 0010 :  -   -   10  XAC   -  Y0    CY0  --   -   -   -   -   -    -    -   ---     -   ---    ----
   10001 1 0011 :  -   -   01  XAC   -  Y0    CY0  --   -   -   -   -   -    -    -   ---     -   ---    ----
   10001 1 0100 :  -  EOI  11  XAC   -  Y0    CY0  --   -   -  MSW  -   -    -    -   JUMP    -   BNZER  ----

ALU Change

While testing the Jump if Nonzero instruction, I found that I had to add logic to the ALU to force the unused bit to zero so that it would not spuriously set the Zero FF.

Discussions