User Tools

Site Tools


systems:usg3

USG PG-1C300 Issue 3

Release Date: March, 1977
Released By: UNIX Support Group
Source Code: usg_pg_issue_3.tar.bz2 in the Unix Archive, browsable in the Unix Tree
Documentation: The UNIX Programmer's Manual's for PG-1C300 has been preserved in the Unix Archive
A WIP reconstruction of the manpage sources is maintained here

UNIX Program Generic Issue 3, otherwise known as PG-1C300, is a version of the UNIX operating system issued by the UNIX Support Group in March of 1977. The Program Generic line was used as a standard, supported UNIX base on which to base other projects and supply a computing environment to a larger group of users than the Research group could support. PG 3 would go on to serve as the base of the real-time MERT Release 0 system.

One particular change is the adoption of a new runlevel-based init system, an ancestor of the inittab-driven systems found in later UNIX branches. Issue 3 also sees the adoption of SCCS from the PWB project as well as half-duplex terminal support, allowing for the use of various Dataspeed (Teletype) Model 40 terminals.

On April 25th, 2026 it was announced that a copy of Program Generic Issue 3 had been successfully archived, preserved, and resurrected in SimH's PDP-11 emulator. More can be found here.

Program Generic Issue 3 includes the following differences from Issue 2:

  • Support for half-duplex terminals such as the Teletype/Dataspeed 40/1 and 40/2 and Tektronix 4010 and 4012 are added via the hd(IV) driver. More can be found in the document UNIX DH-11 Driver to Support Both TTY and Dataspeed 40 Timesharing Terminals
  • The db(I) and cdb(I) debuggers are retired in favor of adb(I).
  • The PWB/SCCS Release 3 is added. This version is the prior release described in the PWB/SCCS Release 4.0 PIB here.
  • as(I) and ld(I) allow specification of the output file name.
  • cat(I) gains the -u (unbuffered) option.
  • cc(I) will pass “.s” files to the assembler.
  • The -E, -D, -I, and -C options are added to cc(I). In particular, the -C option is used to specify a “compool” directory for include searches. The default directory is “/compool/”. Additionally an -h option is provided to include the CWD (as opposed to the directory of a source file) in the search path for local includes.
  • cd is added as an alias for chdir(I).
  • Support for the sticky bit is added.
  • The chroot(I) command is added.
  • The cp(I) command gains a -t option to report the number of blocks copied.
  • The cpall(I) and mvall(I) commands are added to bulk-transfer filesystem objects.
  • utmp and wtmp are moved into /etc
  • dd(I) loses the sync conversion flag
  • diff(I) takes on the more familiar e and f options, dropping 1 and 2.
  • diff(I) adds the b option for ignoring whitespace.
  • diff3(I) is added.
  • ed(I) regular expressions add '-' ranges.
  • ed(I) adds subsequent matching of prior subexpressions.
  • ed(I) adds the Q and E commands to override warnings on q and e.
  • ed(I) adds a u command to undo the last s command.
  • Typesetting utilities troff(I), eqn(I), neqn(I), and tbl(VI) are added.
  • ld(I) adds -e and -b options for defining the entry point and memory base respectively.
  • The lines(V)-based init(VIII) is added, resulting in changes to getty(VIII) as well as the retirement of many tty-flavored utilities and pages in favor of line-flavored utilities. This init system resembles CB/System V init much moreso than Research init.
  • The ps(I) command adds PPID, CPU, NICE, LNE, and TIME for the parent process-id, CPU process magic number, process penalty, line number, and user/system time respectively.
  • The sed(I) command is added.
  • Kill and erase reassignment are added to stty(I).
  • The tail(I) and tee(I) text filters are added.
  • The wall(I) command is added.
  • Character count is added to wc(I).
  • The who(I) command is greatly expanded with regards to the lines(V)-based init and accounting.
  • Errno 14 has been reassigned EFAULT for “Memory fault”.
  • Errnos 33-37 have been assigned ETABLE, EFUNC, ENOMSG, ENOALOC, and EBIOCTL.
  • The mdate(II) syscall is dropped.
  • The access, acct, ioctl, ptrace, and tell syscalls are added.
  • The chroot(II) syscall is added, later showing up in 1980's Release 3.0.
  • The call(II) syscall is added as a combined fork-exec.
  • The errlog(II) syscall is added for error logging to an error daemon.
  • The msg(II) IPC primitive is added (more here)
  • The getppid syscall is added to support IPC.
  • The lock(II) semaphore interface is greatly expanded.
  • The signal(II) syscall adds 15 (catchable kill) and 18 (death of a child) signals.
  • TTY 1200 baud support is more clearly stated.
  • The times(II) syscall now returns a struct of longs.
  • The itol(III) and ltoi(III) subroutines are added for packing/unpacking between longs and ints.
  • The lseek(III) subroutine is added for using longs with seeks.
  • The %D, %O, and %X format specifiers for printf(III) are added for specifying decimal, octal, or hexadecimal *long* integers respectively.
  • A %u specifier is added for unsigned integers in printf(III).
  • The cm(IV) minitape interface is added.
  • Line disciplines are supported in the tty(IV) driver via ioctl(II).
  • The dp(IV) Dataphone interface timeout is doubled from 5 to 10 seconds.
  • The suggested hp(IV) disk geometry has changed.
  • The a.out(V) magic number 405 is added as an “overlay” file.
  • A recsize field is added to the header structure of a dump(V).
  • The reform(VI) utility is added.
  • The accton(VIII) utility is added.
  • The dcheck(VIII) and ncheck(VIII) disk utilities are added.
  • The dump(VIII) and restor(VIII) command adds options for 800/1600 bpi switching.
  • The errdemon(VIII) and errpt(VIII) error reporting mechanism is added.
  • The iostat(VIII) I/O statistics utility is added.
  • The load(VIII), mkconf(VIII) and mkpt(VIII) system generation utilities are documented.

See Shamim Sharifuddin Pirzada's A Statistical Examination of The Evolution of the UNIX System for more information about the history of USG UNIX.

systems/usg3.txt · Last modified: by segaloco