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