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.[1]
STR was still supported as of 1972,[1] 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. 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,[2] 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 |
Telephone1 | 0 1 0 1 1 1 0 0 | 5C |
Group Mark1 | 1 0 0 0 1 1 0 1 | 8D |
Longitudinal Redundancy Check (LRS) | - - - - - - - - | |
1also 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.[1]: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.
References
- IBM Corporation (1972). IBM 1130 Functional Characteristics (PDF). pp. 171–172.
- IBM Corporation (1961). Reference Manual IBM 7701 Magnetic Tape Transmission Terminal (PDF). p. 8.