by Darius Kazemi, March 15 2019
A working NCP
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:
- you connect to socket x'101' and request to log in
- if accepted, you're in luck, the program was already in core memory by chance and you're good to go
- if rejected, you need to try and connect again, because the Host is programmed to reject any initial login attempt if the Interface isn't in core memory, and then load the NCP Interface into core memory, ready to receive a connection for real this time
- if there's a second rejection then there's something wrong with the OLS!
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.
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.