[ SDF Public Access UNIX System .. Est. 1987 ]

join welcome faq status members projects store tour gopher abuse dialup minecraft social
tilde nihongo europa webmail gallery usermap irc tutorials telnet git ssh

-+- H Y S T E R I C A L -+- U N I X E S -+-

this is meant to be a tutorial and/or tips 'n tricks for the hysterical unixes on https://unix50.org.

Available instances are:

    [a]  UNICS (Version Zero)   PDP-7       Summer   1969
    [b]  First Edition UNIX     PDP-11/20   November 1971
    [c]  Fifth Edition UNIX     PDP-11/40   June     1974
    [d]  Sixth Edition UNIX     PDP-11/45   May      1975
    [e]  Seventh Edition UNIX   PDP-11/70   January  1979
    [f]  Research UNIX 8        VAX-11/780           1981
    [g]  AT&T UNIX System III   PDP-11/70   Fall     1982
    [h]  AT&T UNIX System V     PDP-11/70            1983
    [i]  AT&T UNIX System V     3b2/400              1984
    [j]  4.3  BSD               MicroVAX    June     1986
    [k]  2.11 BSD               PDP-11/70   January  1992

  • Some features, such as persistent images, multiple TTYs and networking are only available on the SDF MetaArray

    1969 – 50 Years of Unix – 2019
    1987 – 32 Years of SDF – 2019

    unix50th — In Search of Ancient Unix


    For the double celebration of the 50th anniversary of the creation of the Unix operating system and the 32nd anniversary of the establishment of the SDF Public Access Unix system, a collection of simulated historical Unix systems has been prepared for your exploration and entertainment.

    You can connect to the systems from the web page: https://unix50.org.

    If you have a MetaArray account, you can also access the historical systems by logging in and entering the following shell command: unix50th

    The rest of this documents consists of notes and command “cheat sheets” to help new users on each of the historical systems. It is assumed the reader is already somewhat familiar with contemporary Unix-like systems.

    Note to SDF MetaARPA members: I am not an expert on any of the historical systems and it's unlikely I'll be able to investigate all of them in sufficient depth, so feel free to check out this document and enhance it with your own insights and discoveries, or features or tricks I have missed. — papa


    commandCommand name or other fixed syntax;enter as-is.
    place-holderPlace-holder for user-supplied value.
    [item]item is optional.
    itemitem may be repreated one or more times.

    UNICS (Version Zero)

    Release: Summer 1969
    Platform: PDP-7

    The operating system hacked together so Ken Thompson could play Space Travel after Bell Labs withdrew from the Multics Project. The new operating system was named as a parody of “Multics”.

    This version of the operating system has a file system, a shell, a text editor, an assembler, and very little else.

  • commands available: as, bc, cat, chdir, chmod, chown, chrm, cp, date, ln, ls, mv, stat

    ken writes

       here is sme stuff..
       adm and apr submit jobs to the central
       batch processing machine (ge-635 gcos)
       i only remember a command to submit a print
       job. the pdp-7 had no printer. actually, there
       was a newer print job that got the printing
       done by rejecting the batch job for some
       trivial syntax error. printing would cost.
       job rejection was free.
       sys save generated a core file that,
       when executed, would continue after the
       sys save. it was used for breakpointing
       long jobs and for jobs that had a lot of
       initialization so they would start up faster.
       a note; this unix did not have a hierarchial
       file system. there were only a fixed number
       of directories. each was linked to by the
       directory directory dd. to get to another
       directory, you did
       chdir dd
       chdir dir
       but the chdir command would take
       multiple arguments so the above is
       chdir dd dir
       if you ever unlinked your link to dd,
       you would be cut off.
       later dd became .. meaning up. one could
       not reference a file in another directory
       directly. thus you had to link to it by a local
       name and then reference through the local
       name. this
       link; sys; x; y
       made a local link y to the file x in directory
       sys referenced off of dd. does that clear
       up some of the naming confusion.
       i will work on some of the other stuff you
       mention. some of it sends gravity waves
       through the cobwebs, but nothing specific.

    Logging on to the ken or dmr account - password is the same as the username

    Notes on the TELETYPE

    Yeah, remember you're on an ASR33 Teletype - you can only go forward!
    (Special thanks to Dan Cross and Mary Ann Horton for discovering and demonstrating these at UNIX50)

  • @ = kill's the current line
  • # = erase character
  • } = intr (equiv to ^C)
  • ^D = EOT (used to close a file)

    Notes on the Commands

  • bc - not the calculator, but the B compiler.
  • ls - supports the -l option which displays inum, type[dls]/umode/omode, nlink, uid, size and name - warren toomey
  • Manual Pages for UNIX Version 0 for the PDP-7 (special thanks to wkt and tuhs)

    There is no concept of filesystem paths or '..' in Unics 0. It is also important to note that 'dd' is a Multicism and stands for
    the "Directory Directory". This concept will become '/' or 'root' in Version 1 UNIX. The shell searches two locations: 'system' and '.'
    However, '.' must be linked with the following command:

  • ln dd userdirectory . - links 'userdirectory' in the 'directory directory' to '.' aka the current directory.
  • ln dd dd udd - creates a new link named 'udd' to 'directory directory directory directory' in the current directory.

    (You'll need to do this for the next example)

    A Hello, World! written in B for Unics Version 0

  • login as dmr, dmr
  • ln dd dmr .

    Now you can type ls and see the contents of the directory

  • The file hello.b contains:
    @ cat hello.b
    main $(
     write(' W');
  • bc hello.b hello.s # bc will compile hello.b and produce hello.s
  • as ops.s bl.s hello.s bi.s # as will assemble hello.s along with the standard libraries and produce an a.out

    @ a.out
    Hello, World!

    Notes on using 'as' under Unics Version 0

  • ops.s, bl.s and bi.s Opcodes and System Calls - must be included in any assembly

    For the UNIX 50th on 10-Jul-2019 SDF held a B Language challenge on the DEC PDP-7 running UNIX Version 0 under simh.
    A herd of hackers gave it a go over the course of 2 hours and in the end there were 4 that put in best efforts:

  • Karl Koscher (@supersat) - WINNER
  • Dan Cross - Runner UP
  • Mary Ann Horton - Valiant Effort
  • Seth Morabito (@twylo) - Flailing Attempt (awarded with a '?')

    Karl's effort implements a somewhat ROT1 and was the only working example of TTY IO. The code follows:


    main $(
     auto c;
     while (1) $(
       c = read();
       write(c + 1);
    // gplv3 lol
    // karl koscher
    The winner was awarded a handsome ASVEL UNIX WARE(tm) Japanese write storage container and a delicious bag of Tamanishiki Premium Short Grain Rice

    First Edition UNIX

    Release: November 1971
    Platform: PDP-11/20

    Fifth Edition UNIX

    Release: June 1974
    Platform: PDP-11/40

    Sixth Edition UNIX

    Release: May 1975
    Platform: PDP-11/45

    Seventh Edition UNIX

    Release: January 1979
    Platform: PDP-11/70

    Research UNIX 8

    Release: 1981
    Platform: VAX-11/780

    AT&T UNIX System III

    Release: Fall 1982
    Platform: PDP-11/70

    AT&T UNIX System V (PDP-11/70)

    Release: 1983
    Platform: PDP-11/70

    AT&T UNIX System V (3b2/400)

    Release: 1984
    Platform: 3b2/400

    4.3 BSD

    Release: June 1986
    Platform: MicroVAX3900

    2.11 BSD

    Release: January 1992
    Platform: PDP-11/70

    By issuing the sac -nar command, your spirit animal will be changed to the narwhal.

    20 INPUT X
    $ finger man@arms
    Login: man                                 Name: Duncan
    Directory: /eternia/heroic_warriors/man    Shell: /bin/bashasaurus
    No mail.
    Plan: Make Orko clean-up the mess he left in my workshop.

    Subsection Heading

    Do not forget to flush the buffer. If you do, the smell will be intolerable.

    Another Section Heading

    The Honeywell 6080 can be induced to perform a samba by pressing the button labeled "Samba" on the operator's console1. That mainframe's forté, however, is the foxtrot(2), but the inducement of that particular step is beyond the scope of this tutorial.


    1. Zurgone Vemliat, Mainframe Dancing Habits (Milwaukie: Brewers' Press, 1988), 96.
    2. Vemliat, Mainframe, 112.


    The Open Group. 2018. “History and Timeline”. http://www.unix.org/what_is_unix/history_timeline.html.

    Eric Steven Raymond. 2003. “Origins and History of Unix, 1969-1995”. The Art of Unix Programming. http://www.catb.org/esr/writings/taoup/html/ch02s01.html.

    Ken Thompson and Dennis M. Ritchie. 1971. UNIX Programmer's Manual. Bell Labs. https://www.bell-labs.com/usr/dmr/www/1stEdman.html.

    Unix Heritage Wiki. 2015. “PDP-7 Unix”. https://wiki.tuhs.org/doku.php?id=systems:pdp7_unix

    Wikipedia. 2018. “History of Unix”. https://en.wikipedia.org/wiki/History_of_Unix.

    $Id: unix50th.html,v 1.13 2020/08/11 14:40:49 papa Exp $

    ©1987-2065 SDF Public Access UNIX System, Inc. 501(c)(7)
    (this page was generated using ksh, sed and awk)