Close

Output Instruction

A project log for BREDSAC

Electronic Dynamic Storage Breadboard Computer

gregewinggreg.ewing 11/18/2018 at 01:070 Comments

The Output instruction takes the upper 5 bits of a memory word and sends it to an alphanumeric output device, originally a teleprinter. I'm not sure exactly what kind of output device I'm going to use yet, so at this stage I've just designed a rudimentary parallel output interface with a strobe output OSTRB and a busy input OBSY. It consists of a 5-bit transparent latch fed from outputs 13 to 15 of the S register, and gating to load it and generate the strobe pulse during T17 when MISC = OUTPT. The OBSY input is connected to the microcode branch multiplexer.

I used a transparent latch instead of an edge-triggered one because I want the outputs to be valid before the trailing edge of the strobe. I found it necessary to gate the strobe with the second half of the bit clock cycle, to ensure that its trailing edge occurs while the inputs to the latch are still valid.

For testing purposes, I also mocked up an emulation of a 5-bit teleprinter using a Logisim TTY component, a ROM to translate from EDSAC character codes to ASCII, and a flip-flop to keep track of the letters/figures shift state.

This is how it all fits together on the main circuit.

And here's the microcode. It loops until OBSY is not active, and then reads from memory into the S-register and loads the output latch.

OUTPT = 101  # Load output register and send output strobe

BOBSY = 101  # Output device busy

# O - Output
   01001 0 0001 :  -   -   --  ---   -  --    --   --   -   -   -   -   -    -    -   ---     -   BOBSY  1000    # Loop until output device ready
   01001 0 0010 : SHS EOI  --  ---   -  --    --   --   -   -   -   -   -    -    -   OUTPT   -   ---    ----    # Read memory and perform output

Discussions