[TUHS] Unix on Aprpanet

Paul Ruizendaal pnr at planet.nl
Sat Jun 6 21:30:58 AEST 2020

>> On 2020, Jun 3, at 1:38 AM, Lars Brinkhoff <lars at nocrew.org> wrote: 
>> Lawrence Stewart wrote: 
>>> I remember working on getting Arpanet access on an 11/34 running V7 
>>> around 1978 or 1979. (SU-ISL). We used an 11/23 as a front end to run 
>>> NCP, using a variation of Rand’s code. I wrote some sort of bisync
>>> driver for packet communications between the /23 and the /34, and I
>>> think added an IOCTL or some hack to ask if there was a message ready.
>>> So a polling variety of non-blocking I/O :)
>> Has this, or Rand's code, been preserved? 
>> I'm only aware of one Arpanet NCP implementation for Unix that is 
>> online, the one from University of Illinois. 
> Alas I do not know. I may have some old emails from that era. I will check.

I have not so far come across an NCP Unix that was not based on the UoI code base.

At a time there was a “Rand Unix”, that combined the UoI code with a few other
extensions. A 1978 document describes the kernel as:

"UNIX version 6 with modifications some of which are:
- Accounting
- A system call to write end of files on pipes
- A system call which checks whether a process would sleep upon doing a read on either a pipe or tty
- Pseudo teletypes
- The network control program NCP written at the University of Illinois
- A new method of interprocess communication called ports. Ports are similar to pipes but have names and can be accessed by any process.”

The system call to write EOF on pipes is eofp() and the blocking read test is empty(). Both are available in the NCP Unix source code as included on the TUHS Unix Tree page. It could well be that the hack Lawrence refers to above was a modification to empty() to also cover his bisync driver.

I guess empty() is the first step on the path that includes capac()/await() and later select()/poll() as the preferred mechanism to prevent blocking on IPC files (incl. tty’s).

More information about the TUHS mailing list