# Synchronous transmit-receive

Synchronous transmit-receive (STR) was an early IBM character-oriented communications protocol which preceded Bisync. STR was point-to-point only, and employed a four-of-eight transmission code, communicating at up to 5100 characters per second over half-duplex or full-duplex communication lines.
The IBM 1009 Data Transmission Unit, the IBM 1130 Synchronous Communications Adapter, the IBM System/360 model 20 Communications Adapter, and the IBM 2701 Data Transmission Unit provided host computer support for STR.
The IBM 7701, the IBM 7702 Magnetic Tape Transmission Terminal, the IBM 1013 Card Transmission Terminal, and the IBM 7710 and IBM 7711 Data Communication Units were among the remote devices supported by STR.
STR was still supported as of 1972, although it had generally faded from use.

## Four-of-eight code

The four-of-eight code was a 64 character set plus six control characters, encoded in eight bits. Like other kinds of 6b/8b encoding, exactly four bits of each character were one bits — there are 70 such possible bit combinations.

### Data codes

This is the four-of-eight code. The first column of graphics is for the 7701, where no graphic is shown the code is unassigned. Plus zero and minus zero had distinct values for many machines, and are shown as +0 and -0. The second column of graphics is for the 1130 SCA, graphics are shown only if different from the 7701, mostly characters from the EBCDIC character set which were not present in BCD.
| Graphic | 1130 Graphic | four-of-eight code | Hex |
| | | N X O R 8 4 2 1 | |
| | space | 1 1 1 1 0 0 0 0 | F0 |
| +0 | ¢ | 0 1 1 0 1 0 1 0 | 6A |
| . | | 1 0 0 0 1 0 1 1 | 8B |
| ⌑ | < | 0 1 1 0 1 1 0 0 | 6C |
| | ( | 0 1 0 1 0 1 1 0 | 56 |
| | + | 0 0 1 1 0 1 1 0 | 36 |
| group mark | | | 1 0 0 0 1 1 0 1 | 8D |
| & | | 1 0 0 0 1 1 1 0 | 8E |
| -0 | ! | 1 1 0 0 1 0 1 0 | CA |
| $ | | 0 1 0 0 1 0 1 1 | 4B |
| * | | 1 1 0 0 1 1 0 0 | CC |
| | ) | 0 1 0 1 1 1 0 0 | 5C |
| | ; | 0 0 1 1 1 1 0 0 | 3C |
| Δ | ¬ | 0 1 0 0 1 1 0 1 | 4D |
| - | | 0 1 0 0 1 1 1 0 | 4E |
| / | | 1 0 1 1 0 0 0 1 | B1 |
| , | | 0 0 1 0 1 0 1 1 | 2B |
| % | | 1 0 1 0 1 1 0 0 | AC |
| word separator | _ | 0 1 0 1 1 0 1 0 | 5A |
| | > | 0 0 1 1 1 0 1 0 | 3A |
| block mark | ? | 0 0 1 0 1 1 0 1 | 2D |
| space | : | 0 0 1 1 1 1 0 0 | 2E |
| # | | 0 0 0 1 1 0 1 1 | 1B |
| @ | | 1 0 0 1 1 1 0 0 | 9C |
| | ' | 0 0 0 0 1 1 1 1 | 0F |
| | = | 0 0 0 1 1 1 1 0 | 1E |
| tape mark | " | 0 0 0 1 1 1 0 1 | 1D |
| A | | 0 1 1 1 0 0 0 1 | 71 |
| B | | 0 1 1 1 0 0 1 0 | 72 |
| C | | 0 1 1 0 0 0 1 1 | 63 |
| D | | 0 1 1 1 0 1 0 0 | 74 |
| E | | 0 1 1 0 0 1 0 1 | 65 |
| F | | 0 1 1 0 0 1 1 0 | 66 |
| G | | 1 0 0 0 0 1 1 1 | 87 |
| H | | 0 1 1 1 1 0 0 0 | 78 |
| I | | 0 1 1 0 1 0 0 1 | 69 |
| J | | 1 1 0 1 0 0 0 1 | D1 |
| K | | 1 1 0 1 0 0 1 0 | D2 |
| L | | 1 1 0 0 0 0 1 1 | C3 |
| M | | 1 1 0 1 0 1 0 0 | D4 |
| N | | 1 1 0 0 0 1 0 1 | C5 |
| O | | 1 1 0 0 0 1 1 0 | C6 |
| P | | 0 1 0 0 0 1 1 1 | 47 |
| Q | | 1 1 0 1 1 0 0 0 | D8 |
| R | | 1 1 0 0 1 0 0 1 | C9 |
| record mark | | 1 0 1 0 1 0 1 0 | AA |
| S | | 1 0 1 1 0 0 1 0 | B2 |
| T | | 1 0 1 0 0 0 1 1 | A3 |
| U | | 1 0 1 1 0 1 0 0 | B4 |
| V | | 1 0 1 0 0 1 0 1 | A5 |
| W | | 1 0 1 0 0 1 1 0 | A6 |
| X | | 0 0 1 0 0 1 1 1 | 27 |
| Y | | 1 0 1 1 1 0 0 0 | B8 |
| Z | | 1 0 1 0 1 0 0 1 | A9 |
| 0 | | 1 0 0 1 1 0 1 0 | 9A |
| 1 | | 1 1 1 0 0 0 0 1 | E1 |
| 2 | | 1 1 1 0 0 0 1 0 | E2 |
| 3 | | 1 0 0 1 0 0 1 1 | 93 |
| 4 | | 1 1 1 0 0 1 0 0 | E4 |
| 5 | | 1 0 0 1 0 1 0 1 | 95 |
| 6 | | 1 0 0 1 0 1 1 0 | 96 |
| 7 | | 0 0 0 1 0 1 1 1 | 17 |
| 8 | | 1 1 1 0 1 0 0 0 | E8 |
| 9 | | 1 0 0 1 1 0 0 1 | 99 |

### Control codes

These are the synchronous transmit-receive control codes. Control characters were reserved; there was no provision for transparent operation.
| Graphic | four-of-eight code | Hex |
| | N X O R 8 4 2 1 | |
| Idle | 0 0 1 1 1 0 0 1 | 39 |
| Start of Record 1 or Acknowledge 1 (SOR1 or ACK1) | 0 1 0 1 0 0 1 1 | 53 |
| Start of Record 2 or Acknowledge 2 (SOR2 or ACK2 ) | 0 0 1 1 0 0 1 1 | 33 |
| Transmit Leader (TL) | 0 0 1 1 0 1 0 1 | 35 |
| Control Leader (CL) | 0 1 0 1 0 1 0 1 | 55 |
| End of Transmission (EOT)$^1$ | 0 1 0 1 1 0 1 0 | 5A |
| Inquiry or Error (INQ or ERR) | 0 1 0 1 1 0 0 1 | 59 |
| Telephone$^1$ | 0 1 0 1 1 1 0 0 | 5C |
| Group Mark$^1$ | 1 0 0 0 1 1 0 1 | 8D |
| Longitudinal Redundancy Check (LRS) | - - - - - - - - | |
| $^1$also used as a data character | | |

### Longitudinal Redundancy Check

The Longitudinal Redundancy Check byte was the only character that could have other than four one bits. This byte contains a zero in each bit position where the data record contained an even number of one bits, and one where an odd number. "Idle characters and control sequences are not included in the LRS.$^{:p.174}$

## Line control

When no data is being transmitted the line is maintained in synchronize mode — a terminal transmits idle characters for approximately 1.3 seconds followed by end-of-idle sequence (CL Idle). It then listens for the same sequence for approximately three seconds. For four wire operation, when data is being transmitted the other wire pair is maintained in synchronize mode. At least one idle character is sent before each transmission.
Ownership of the line is established by the transmitting station sending an inquiry sequence (TL INQ). The receiving terminal then responds with acknowledge (CL ACK2). Following this initiation sequence the transmitting terminal sends SOR1 TL followed by the first block of data. The data is terminated by an end-of-transmittal-record (TL LRS). The receiving terminal replies with CL ACK1, or CL ERR if the longitudinal redundancy check indicates a transmission error. This process continues with even/odd SOR and ACK, until the sending terminal has transmitted all the data. It sends the end-of-transmission sequence (CL EOT). The receiving terminal responds CL EOT and re-enters synchronize mode.