by Darius Kazemi, March 15 2019

In 2019 I'm reading one RFC a day in chronological order starting from the very first one. More on this project here. There is a table of contents for all my RFC posts.

A working NCP

RFC-74 is titled “SPECIFICATIONS FOR NETWORK USE OF THE UCSB ON-LINE SYSTEM”, by Jim White of UCSB. It's dated October 16th, 1970. There is a PDF scan of the original documents available as well.

The technical content

This is a document that teaches programmers at other ARPANET sites how to communicate with the OLS (on-line system) at UCSB. This is the Culler-Fried On-Line System developed by Glen Culler of UCSB and Burton Fried of UCLA. It was an interactive graphical mathematics computer from the mid 1960s with features similar to a graphing calculator today. But it supported multiple users, and Jim White wrote the NCP and its associated “Interface” for it based on Dave Walden's RFC-62. This document describes how to use the Interface.

Remote users who want to log in and use the OLS functionality will need to connect to Site 3, socket x'101', and log in as user number 196, ID number 57372, and provide a name; the suggestion is to use your site ID like UCLA, MIT, BBN, RAND, etc.

Logging in is an interesting process. The NCP Interface isn't normally resident in core memory, so the way a login works is:

Then the NCP sends back 8 bits of zeroes (for “message type zero”) and then an ID of a new socket for the remote user to connect to (since x'101' is reserved for login).

Once login is complete, a connection has been established. All data is a continuous stream of single-byte key codes and operates exactly like using the OLS in person. This immediately and instantly solves all the message boundary problems that we've heard about at length for last 20 or so RFCs.

The exception to this is the first two bytes sent. One is yet another “message type zero” byte, followed by a byte with some flags set to filter out particular kinds of messages. For example, a user could request to filter our all “curvilinear output”, which is an array of vectors (X/Y coordinates) forming shapes that would normally be displayed on a Tektronix 564 model 5” storage oscilloscope. If the user didn't have that scope at hand it might make sense to suppress those graphics. The arrays are specified in section B of the RFC. In section C there is also described a kind of special character that denotes relative movement, kind of like a pen moving across a surface, essentially identical to a modern drawing function like moveTo in HTML canvas.


Notice there is no password to log in.

I'm not at all surprised that this functional NCP (which according to Jim White's LinkedIn profile was “the Arpanet’s first operational Network Control Program”) was based on Walden's excellent and simple RFC-62.

Further reading

This interview with Glen Culler, which also has the text of a speech his son gave on behalf of his father earning the President's Science Medal, provides a lot of really interesting context about the innovations of the Culler-Fried On-Line System.

I also happened to stumble on this lovely short personal essay by Nancy Oster in October 1995 in memory of Glen Culler.

Those in or around Portland, Oregon should visit the VintageTEK museum, where you can receive tours from retired Tektronix engineers who will tell you all about their various scopes. If I recall from my last tour, the 564 scope used by the OLS was a very popular model, in part because it supported a plugin system that would allow you to physically add and remove pieces of functionality from the front panel. It is also what's referred to as a “storage oscilloscope”, which was designed to hold an image for up to one hour, useful for things like photographing experimental results. You can check out the manual for the 564 as well.

How to follow this blog

You can subscribe to this blog's RSS feed or if you're on a federated ActivityPub social network like Mastodon or Pleroma you can search for the user “@365-rfcs@write.as” and follow it there.

About me

I'm Darius Kazemi. I'm a Mozilla Fellow and I do a lot of work on the decentralized web with both ActivityPub and the Dat Project.