CoCo serial port

The Color Computer has a four-pin DIN connector on its back panel for its serial port. There is very little internal hardware dedicated to supporting this, so most of the work of sending and receiving bits is done in software; the CPU goes into a loop either setting the output bit or reading the input bit.

As you might imagine, doing both at the same time can be tricky, since you don't have any guarantees about when the first bit of a byte will arrive; it might be while you are right in the middle of sending a byte. The result is a limited baud rate; the CPU can only do so many bits per second. Some of my assembly-language programs can receive at 9600 baud, but don't do any sending at all. Comm programs might get up to 2400 baud, but may not be so reliable at that rate.

Here is a cheesy ASCII drawing of that connector, including a pinout and showing how the pins are numbered. The drawing is of the back-panel connector, looking at it from the back of the machine. So if you are looking at the pins of the connector at the end of a cable, it is backwards.

        ------       Pin#  RS-232 signal            Printer signal
      /  \__/  \     ----  ----------------------   ---------------
     /          \     
    / 4      1   \    1    CD - carrier detect      ignored
       o      o       
   |              |   2    RS232IN - input data     printer status
   |              |                                 (high == ready)
   |  3      2    |   
       o      o       3    GND - ground             ground
    \            /    
     \          /     4    RS232OUT - output data   data to printer  
      \        /       

Note that pins of connector are not always used the same way! This is possible because most everything is done in software; pins 1 and 2 are required by the hardware to be inputs, but it is up to the program to decide how to use those inputs. While any sort of communications program should use the RS-232 pin-out, the built-in BASIC printer routines use pin 2 as "printer status" and completely ignore pin 1. So the cable you wire up for a printer has to be different from the one you wire up for a modem. Thank MicroShaft for that.

Back to my top-level CoCo page

(remove all "x"s to get a valid address)