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 ----
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.