Wednesday, August 21, 2013

History of BSD: 1BSD

In last part I wrote what let to creation of BSD operating system.

And I finished with talking a bit about 1BSD, the very first BSD. I mentioned, that it was not operating system, it didn't provide a kernel nor operating system. It provided a variety of useful programs and utilities for UNIX. [1]

When looking for software included, I found out that on various ftps you can still download it. So I downloaded one. Size of 1bsd.tar.gz is around 1.2MB, unpacked around 3.4MB.

Update file informs that This tape reflects updates to Thu Jan 19 10:34:29 PST 1978.

1BSD was released as Berkeley UNIX Software Tape (according to read me file). 30 free copies of 1BSD have been sent out and 35 tapes sold for 50 USD, all during late 1977 and 1978. [2]

The tape came with 2 labels.

First label on the tape:

    Berkeley UNIX Software Tape
    Jan 16, 1978    TP 800BPI

    To extract contents do:
      tp xm ./setup; sh setup; tp xm

    See accompanying document
Second label on the tape:

    The contents of this tape are
    distributed to UNIX licensees
    only, subject to the software
    agreement you have with Western
    Electric and an agreement with
    the University of California.


Most of the data on this tape has been archived, so that they could write it on tape. This tape included sources and binaries for a quantity of UC Berkeley software. The major items on this tape were the instructional Pascal system and the text editor "ex". Other software includes a modified shell, a new shell, new commands, and a "star trek" game. Machine readable documentation was also included for all programs.  The "Pascal User's Manual" and the "Ex reference manual" needed a phototypesetter
if readable copies wanted to be produced. [3]

Reading Read Me file, you can find out that compiled  binaries  have  been  included  for  most  of  the software  there.   (A few of the routines in the directory s6 include system dependent headers and so binaries would be of no use and are not included.) The major programs "pi", "pxp", "px", and "ex-1.1" have  the binaries  in  the  directories  with  the same names.


Each major directory includes a  file  "READ_ME"  describing the  software  in  the  directory.   There  is often a shell script "setup" in the directory to  perform  one  time  only operations.   The script "install" in these directories placed the software in its standard home. [3]


ashell directory



ashell read me file

For recompilation of these programs users could use the  scripts "make*",  and  "comp"  and  "load" in the directories.  Most directories also had "print" scripts,  i.e.  "printpi",  to make  a program listing with utility files and programs in a reasonable order.[3]

The suggested way to bring up the software on this  tape  was to  run the install scripts in "pi", "pxp", and "px", and to then install (some or all) of the software from "bin". [3]

As read me file says, the directory structure goes like this:

        pi           Pascal translator source
        px           Pascal interpreter
        pxp          Pascal execution profiler
        eyacc        Modified yacc for Pascal
        assubs       Assembly stuff for Pascal
        tests        Test programs for Pascal
        pcs          Wirth's Pascal-S
        pxref        Pascal cross-refence program
        opcodes      Definition files for Pascal
        fpterp       Sep ID floating point interpreter using FETCHI sys call
        s?           Command software source
        man?         Documents for s? stuff
        ashell       A new shell with some nice features
        ex-1.1       Ex source
        exrecover    Ex recovery routines (after system crashes)
        trek         Source for a "star trek" game
        portlib      Portable library used by trek
        exrefm       Troff source for "Ex 1.1 Reference Manual"
        puman        Troff source for "UNIX Pascal User's Manual"
        help         Sections from our help command

        lib          Routines for /lib and /usr/lib
        bin          Routines for /usr/bin
        etc          Stuff for /etc
More about history of BSD in next parts.

[1] http://www.bsdnewsletter.com/2012/05/Features181.html
[2] http://cvsweb.netbsd.org/bsdweb.cgi/src/share/misc/bsd-family-tree
[3] READ_ME file from downloaded 1BSD