RFC 109
Level III Server Protocol for the Lincoln Laboratory 360/67 Host
RFC 109 (Part 1 of 3) โจ๐
Title Block ๐
okay bestie, RFC 109 is the Level III Server Protocol for the Lincoln Laboratory 360/67 Host ๐ฅ๏ธโจ. It's by J. Winett of MIT Lincoln Laboratory, it's listed under NIC 5805, and it's dated 24 March 1971 ๐ . The header doesn't list a category, status, or anything it obsoletes or updates, so there's nothing to report there ๐ซถ. This is part 1 of 3, so the story continues in the next chunk ๐ง
Disclaimer ๐
this material hasn't been reviewed for public release ๐ซ. it's only meant for use with the ARPA network, so please don't quote or cite it in any publication that isn't related to the ARPA network ๐
Introduction ๐ฆ
the Lincoln Laboratory IBM 360/67 is hooked up to the ARPA network and works as a serving host, giving people access to the CP-67 virtual machine operating system ๐ป. once you finish logging in, you get control of a 360 virtual machine through a virtual 1052 online console ๐จ๏ธ. the virtual machine also comes with a virtual card reader, card punch, line printer, and a bunch of disk storage devices ๐. it can be either a virtual 360/67 with dynamic address translation hardware or a standard System/360 ๐ฅ. most users go with a standard 360 that has 256K bytes of virtual memory and run the CMS conversational monitor system ๐ธ. CMS gives you tools for file creation, maintenance, and manipulation, program development, debugging and execution, plus a bunch of other useful utility functions ๐ . for the full rundown on what's available, check out the section on the Lincoln Laboratory 360/67 in the Network Notebook ๐โจ
Network Control Program ๐
all communication with the 360/67 that goes through the IMP gets processed by a Network Control Program (NCP) ๐ง . the NCP works with the Host-Host Protocol described in the Network Working Group Document No. 1, dated 3 August 1970 ๐
Initial Connection Protocol ๐งโโ๏ธ
so, to make a virtual machine from the network, you need a pair of connections with the LOGGER ๐. the sockets get assigned following the Initial Connection Protocol (ICP) ๐. the LOGGER is set up and waiting for an RTS control command on socket X'0A 0000 01' โญ. that ICP socket matches home X'0A', user X'0000', and tag X'01' (send gender) ๐
requests for a connection on the ICP socket get stacked up until it's free ๐. if the LOGGER is up for serving another network user, it sends a 32 bit socket ID for a receive socket over this initial connection, and then the ICP socket closes ๐ฆ. if the LOGGER isn't up for it, it won't finish the initial connection for the ICP socket. it just refuses the request by closing the connection without completing it ๐ญ
LOGGER Protocol ๐ซง
once a pair of user sockets is assigned, the connection protocol should be completed on those sockets ๐. the LOGGER then expects to receive (on the receive socket) one 8-bit byte that tells it the data type. that's the transmission code used to talk to the network user over this pair of sockets ๐. a code of X'01' means 7 bit ASCII code in 8-bit bytes, with the leading bit zero ๐. a code of X'02' means 8-bit EBCDIC code ๐ธ. once the data type code comes in, the LOGGER echoes it back over the send socket, followed by this message, in the matching code ๐
LINCOLN LABORATORY CP-67 ONLINE NL
(in ASCII, NL gets sent as CR LF) ๐ซถ
the procedure keeps going according to the normal CP-67 login protocol ๐ . the LOGGER also does an extra job: it maps network userids and passwords into valid CP-67 userids and passwords โจ. that mapping is defined by entries in a file called the LOGGER FILE, which the LOGGER reads ๐. if a network userid doesn't match an entry in that file, or the password doesn't match the matching network password, the users get the usual CP responses ๐. so basically, network access to the Lincoln Laboratory system is locked down to accounts that have an entry in the LOGGER FILE ๐
one more thing ๐: CP sends a BYP code (Bypass) to stop printing the characters you type while a password is being entered ๐คซ. once the password is in, CP sends a RES code (Restore) to start printing again when you type ๐จ๏ธ. when you're talking in ASCII, these codes get converted to X'FF', since there's no matching ASCII code ๐. for more on CP-67 and CMS, check the Network Resource Notebook ๐๐ง
The NET Account ๐ท
Lincoln Laboratory is giving out one account that network users can use to get comfy with the time-sharing system ๐ฅฐ. its userid is NET and its password is ARPA ๐. the account has 900 records of storage, which can hold about 720,000 characters ๐. NET users are free to ERASE any file on this account, since lots of different people might be using it at the same time ๐ฌโจ
The SERVER Protocol ๐ฅ๏ธ
CP-67 works one line at a time ๐. that means a group of characters gets processed as a line, not as individual characters ๐ . the system also normally buffers input lines, so input doesn't get entered until something requests it with a read from the system ๐ซง. with IBM 2741 or 1052 terminals, the keyboard stays locked until a read is requested ๐. the virtual terminals that network users go through to reach CP-67 were designed to support either a line oriented terminal or a character oriented terminal ๐
when CP asks for a line of input, the SERVER sends a prompting code X'80' ๐. that character can tell a user process to change transmission modes and send an input line โญ. characters the SERVER gets are buffered until it receives an NL character ๐. the lines it receives can then be used to satisfy CP's requests for an input line ๐ฆ
CP might send out lines that may or may not end with an NL character ๐คทโโ๏ธ. if a line doesn't end with an NL character, the prompting character is sent right after the output line to ask a CP process for input ๐
when a user wants to interrupt a CP process (like to change modes), they send an interrupt code X'80' to the SERVER ๐จ. that code causes an asynchronous interrupt in the running process, like pressing the 'attention' button on a 2741 terminal ๐ฅ. along with the interrupt code, the user should make an INS get sent over the send link ๐ซถ. this signal gets synchronized with the interrupt code ๐. if the interrupt code hasn't been received and processed yet, all the characters that are buffered, plus any received before the interrupt code arrived, get flushed (deleted) ๐ซ . when the interrupt code comes in, it gets paired with the INS that was received earlier ๐. if an INS comes in after an interrupt code has been received and processed, the INS gets paired with that earlier interrupt code ๐ง
last one, and it's a big deal ๐ญ: if CP has a line to send to a user after it has requested an input line but before it gets any input, the SERVER sends an INS on the user's receive link ๐จ. that tells the user the prompting character sent earlier should be retracted, and that a line has been or will be sent to them ๐. this message line is called a "warning" โ ๏ธ
Graphic and Control Codes ๐
Figure 1 gives the 8-bit codes for the EBCDIC graphics and controls ๐งพ. Figure 2 gives the 7-bit codes for the ASCII graphics and controls ๐. the controls are tabulated and compared in Figure 3 ๐. the standard interpretation of the ASCII controls is in Figure 4 ๐ซถ
there are 4 ASCII codes that don't have a matching graphic or control in EBCDIC ๐. the EBCDIC codes given to them are:
| Hex Code
ASCII |-------+--------
Symbol | ASCII | EBCDIC
-------+-------+--------
DC3 | 13 | 3A
| |
` | 60 | 70
| |
\ | 5C | 71
| |
^ | 5E | 72
there are 29 EBCDIC graphics codes and 19 EBCDIC control codes that don't have a matching graphic or control in ASCII ๐. on top of that, there are 84 other EBCDIC codes whose interpretation is unspecified ๐ธ. four of those got picked to match the ASCII controls and ASCII graphics that don't have an EBCDIC code ๐. when you convert EBCDIC codes to ASCII, the remaining 80 codes, plus the 29 EBCDIC graphics and 18 EBCDIC controls (not counting NL), all become X'FF' ๐. the NL character is special ๐ซถ. the NL character, EBCDIC code X'15', turns into the two character sequence CR LF, which is ASCII X'0D 0A' ๐. like we said before, X'80' gets sent as a prompting character whenever CP asks for an input line ๐ง
going the other way, from ASCII to EBCDIC, if any code other than the 128 ASCII codes (or the interrupt codem X'80') comes in, it gets converted to X'FF' ๐ซ . also, whenever the two ASCII characters CR LF show up next to each other in the input stream, they get converted into the single EBCDIC character NL โจ
[In Figure 1, positions shown as "[?]" cannot be printed in ASCII.] ๐
Okay so picking up right where we left off ๐ These are the code tables and control function notes, and the vibe is pure chart-nerd joy ๐โจ
Figure 1. Extended Binary-Coded Decimal Interchange Code (EBCDIC) ๐ง
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
3 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
4567+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0000|NUL|DLE|DS | |SP | & | - | | | |[?]|[?]| | | | 0 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0001|SOH|DC1|SOS| | | | / | | a | j |[?]|[?]| A | J | | 1 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0010|STX|DC2|FS |SYN| | | | | b | k | s |[?]| B | K | S | 2 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0011|ETX|TM | | | | | | | c | l | t |[?]| C | L | T | 3 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0100|PF |RES|BYP|PN | | | | | d | m | u |[?]| D | M | U | 4 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0101|HT |NL |LF |RS | | | | | e | n | v |[?]| E | N | V | 5 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0110|LC |BS |ETB|UC | | | | | f | o | w |[?]| F | O | W | 6 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0111|DEL|IL |ESC|EOT| | | | | g | p | x |[?]| G | P | X | 7 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1000| |CAN| | | | | | | h | q | y |[?]| H | Q | Y | 8 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1001| |EM | | | | | | | i | r | z |[?]| I | R | Z | 9 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1010|SMM|CC |SM | |[1]| ! | | : | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1011|VT |CU1|CU2|CU3| . | $ | , | # | { | } |[?]|[?]| | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1100|FF |IFS| |DC4| < | * | % | @ |[?]|[?]|[?]|[?]| | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1101|CR |IGS|ENQ|NAK| ( | ) | _ | ' |[?]|[?]| [ | ] | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1110|SO |IRS|ACK| | + | ; | > | = |[?]|[?]|[?]|[?]| | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1111|SI |IUS|BEL|SUB| | |[2]| ? | " |[?]|[?]|[?]|[?]| | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+---+---+---+---+---+---+---+
Code Structure
Figure 1 is the EBCDIC grid, bestie, and the layout is the whole point ๐ฅน Those [?] slots are just spots the table leaves open ๐คทโโ๏ธ
Figure 2. Extended Binary-Coded Decimal Interchange Code (EBCDIC), read in the other direction ๐
8 0 0 0 0 0 0 0 0
7 0 0 0 0 1 1 1 1
6 0 0 1 1 0 0 1 1
5 0 1 0 1 0 1 0 1
4321+---+---+---+---+---+---+---+---+
0000|NUL|DLE|SP | 0 | @ | P | ` | p |
+---+---+---+---+---+---+---+---+
0001|SOH|DC1| ! | 1 | A | Q | a | q |
+---+---+---+---+---+---+---+---+
0010|STX|DC2| " | 2 | B | R | b | r |
+---+---+---+---+---+---+---+---+
0011|ETX|DC3| # | 3 | C | S | c | s |
+---+---+---+---+---+---+---+---+
0100|EOT|DC4| $ | 4 | D | T | d | t |
+---+---+---+---+---+---+---+---+
0101|ENQ|NAK| % | 5 | E | U | e | u |
+---+---+---+---+---+---+---+---+
0110|ACK|SYN| & | 6 | F | V | f | v |
+---+---+---+---+---+---+---+---+
0111|BEL|ETB| ' | 7 | G | W | g | w |
+---+---+---+---+---+---+---+---+
1000|BS |CAN| ( | 8 | H | X | h | x |
+---+---+---+---+---+---+---+---+
1001|HT |EM | ) | 9 | I | Y | i | y |
+---+---+---+---+---+---+---+---+
1010|LF |SUB| * | : | J | Z | j | z |
+---+---+---+---+---+---+---+---+
1011|VT |ESC| + | ; | K | [ | k | { |
+---+---+---+---+---+---+---+---+
1100|FF |FS | , | < | L | \ | l | | |
+---+---+---+---+---+---+---+---+
1101|CR |GS | - | = | M | ] | m | } |
+---+---+---+---+---+---+---+---+
1110|SO |RS | . | > | N | ^ | n | ~ |
+---+---+---+---+---+---+---+---+
1111|SI |SU | / | ? | O | _ | o |DEL|
+---+---+---+---+---+---+---+---+
+---+---+---+---+---+---+---+---+---+---+---+---+
| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
+---+---+---+---+---+---+---+---+
Code Structure
Figure 2. ๐ซ
Figure 3. USA Standard Code for Information Interchange (USASCII) ๐ฆ This one is the big boss of the chart world ๐
CAT EBCDIC ASCII TTY PTTC FUNCTION
NUL NUL NULL Null
CC SOH SOH SOM Start of Heading
CC STX STX EOA EOA (D) Start of Text
CC ETX ETX EOM End of Text
DC PF PF Punch Off
FE HT HT H.TAB TAB Horizontal Tab
GR LC LC Lower Case
DEL DEL RUBOUT DEL Delete
SMM Start of Manual Message
FE VT VT V.TAB Vertical Tab
FE FF FF FORM Form Feed
FE CR CR RETURN Carriage Return
GR SO SO SO Shift Out
GR SI SI SI Shift In
CC DLE DLE DC0 Data Link Escape
DC DC1 DC1 X-ON Device Control 1
DC DC2 DC2 TAPE ON Device Control 2
TM Tape Mark
DC RES RES Restore
FE NL NL New Line
FE BS BS BS Backspace
IL IL Idle
CAN CAN FE0 CAN Cancel
EM EM S1 End of Medium
CC Cursor Control
CU CU1 Customer Use 1
IS IFS FS S4 Info. Field Separator
IS IGS GS S5 Info. Group Separator
IS IRS RS S6 Info. Record Separator
IS IUS US S7 Info Unit Separator
ED DS Digit Select
ED SOS Start of Significance
ED FS Field Separator
DC BYP BYP Bypass
FE LF LF LF LF Line Feed
CC ETB ETB LEM EOB (B) End of Text Block
ESC ESC S3 PRE Escape
SM Set Mode
CU CU2 Customer Use 2
CC ENQ ENQ WRU Enquiry
CC ACK ACK RU (Y) Acknowledge
BEL BEL BELL Bell
CC SYN SYN SYNC Synchronous Idle
DC PN PN Punch On
DC RS RS Reader Stop
GR UC UC Upper Case
CC EOT EOT EOT EOT (C) End of Transmission
CU CU3 Customer Use 3
DC DC4 DC4 TAPE OFF Device Control 4
CC NAK NAK ERROR (N) Negative Acknowledge
SUB SUB S2 Substitute
DC DC3 X-OFF Device Control 3
Figure 3 is the one where every column has its own story ๐
Control Functions Compared ๐
- CC (Communication Control): a functional character meant to control or facilitate sending information over communication networks ๐ก
- FE (Format Effector): a functional character that controls the layout or positioning of information on printing or display devices ๐จ๏ธ
- IS (Information Separator): a character used to separate and qualify information in a logical sense. There is a group of four of these, and they are meant to be used in a hierarchical order ๐ช
- DC (Device Control): a functional character used to control ancillary devices tied to data processing or telecommunication systems, especially switching devices "on" and "off" ๐
- ED (Edit and Mark): a control character used by the System/360 Edit and Mark (EDMK) instruction to format alphanumeric fields ๐งฎ
- GB (Graphic Control): a control character that says the code combinations following it should be read in a particular code table, depending on which control character it is ๐จ
- CU (Customer Use): a character excluded from future assignment by IBM. These "protected" codes are for customer systems, so they won't clash with a possible future IBM use ๐
Figure 3 (Continued) ๐
Categories of Control Functions ๐
- NUL (Null): the all-zeros character that can be used to fill time and media ๐ซง
- SOH (Start of Heading): a communication control character used at the start of a sequence of characters that makes up a machine-sensible address or routing information. That sequence is called the heading. An STX character ends a heading ๐งญ
- STX (Start of Text): a communication control character that comes before a sequence of characters to be treated as one entity and sent all the way through to the ultimate destination. That sequence is called text. SIX may be used to end a sequence of characters started by SOH ๐
- ETX (End of Text): a communication control character used to end a sequence of characters that started with STX and was sent as one entity ๐
- EOT (End of Transmission): a communication control character used to show that a transmission has concluded, which may have had one or more texts and any headings attached ๐ญ
- ENQ (Enquiry): a communication control character used in data communication systems to request a response from a remote station. It can be used as a "Who Are You" (WRU) to get identification, to get station status, or both ๐โโ๏ธ
- ACK (Acknowledge): a communication control character sent by a receiver as a yes, got it, affirmative response to a sender ๐ซถ
- BEL (Bell): a character for when there's a need to call for human attention. It may control alarm or attention devices ๐
- BS (Backspace): a format effector that moves the printing position one printing space backward on the same line (this also applies to display devices) โฌ ๏ธ
- HT (Horizontal Tabulation): a format effector that moves the printing position to the next of a series of predetermined positions along the printing line. This also applies to display devices and the skip function on punched cards ๐
- LF (Line Feed): a format effector that moves the printing position to the next printing line (this also applies to display devices) โฌ๏ธ
VT(Vertical Tabulation) ๐: a format effector that moves the printing position to the next line in a series of predetermined printing lines. It also applies to display devices ๐ฅ๏ธ.FF(Form Feed) ๐: a format effector that moves the printing position to the first predetermined printing line on the next form or page. It also applies to display devices.CR(Carriage Return) ๐: a format effector that moves the printing position to the first printing position on the same printing line. It also applies to display devices.SO(Shift Out) ๐: a control character that says the code combinations which follow shall be interpreted as outside of the character set of the standard code table, until a Shift In character is reached.SI(Shift In) ๐: a control character that says the code combinations which follow shall be interpreted according to the standard code table.DLE(Data Link Escape) ๐ฆ: a communication control character that changes the meaning of a limited number of contiguously following characters. It is used exclusively to provide supplementary controls in data communication networks.DC1,DC2,DC3,DC4(Device Controls) ๐: characters for controlling ancillary devices associated with data processing or telecommunication systems, especially switching devices "on" and "off". If a single "stop" control is required to interrupt or turn off ancillary devices,DC4is the preferred assignment.NAK(Negative Acknowledge) ๐ : a communication control character transmitted by a receiver as a negative response to a sender.SYN(Synchronous Idle) ๐ธ: a communication control character used by a synchronous transmission system when no other character is present, to provide a signal from which synchronism may be achieved or retained.ETB(End of Transmission Block) ๐ง: a communication control character used to indicate the end of a block of data for communication purposes.ETBis used for blocking data where the block structure is not necessarily related to the processing format.CAN(Cancel) ๐ซ: a control character used to indicate that the data it is sent with is in error or is to be disregarded.EM(End of Medium) ๐ผ: a control character associated with the sent data, which may be used to identify the physical end of the medium, or the end of the used, or wanted, portion of information recorded on a medium. The position of this character does not necessarily correspond to the physical end of the medium.SS(Start of Special Sequence) โจ: a control character used to indicate the start of a variable length sequence of characters which have special significance or which are to receive special handling.ESC(Escape) ๐๏ธ: a control character intended to provide code extension (supplementary characters) in general information interchange. The Escape character is itself a prefix that affects the interpretation of a limited number of contiguously following characters.FS(File Separator),GS(Group Separator),RS(Record Separator) andUS(Unit Separator) ๐๏ธ: these information separators may be used within data in an optional fashion, except that the hierarchical relationship shall be:FSis the most inclusive, thenGS, thenRS, andUSis the least inclusive. The content and length of a File, Group, Record, or Unit are not specified.DEL(Delete) ๐งฝ: this character is used primarily to "erase" or "obliterate" erroneous or unwanted characters in perforated tape. In the strict sense,DELis not a control character.
Figure 4 ASCII Control Functions
Endnotes โจ
[1]- Cent sign ๐ธ[2]- Logical not ("bent bar") ๐ซถ[?]- Graphics not in ASCII. See Postscript or PDF version of this document.
[This RFC was put into machine readable form for entry]
[into the online RFC archives by Lorrie Shiota, 10/02]
๐ฆ where this page comes from
- ietf: rfc109 1971-03
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms