User Tools

Site Tools


systems:usg2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
systems:usg2 [2026/04/30 10:46] segalocosystems:usg2 [2026/05/16 17:53] (current) segaloco
Line 9: Line 9:
  
 This version appears to be comparable to [[systems:6th_edition|Sixth Edition Unix]], albeit retaining some components from earlier Research versions and incorporating some new features that would show up in [[systems:7th_edition|Seventh Edition Unix]] and [[systems:pwb|PWB Unix]]. This version appears to be comparable to [[systems:6th_edition|Sixth Edition Unix]], albeit retaining some components from earlier Research versions and incorporating some new features that would show up in [[systems:7th_edition|Seventh Edition Unix]] and [[systems:pwb|PWB Unix]].
 +
 +Program Generic Issue 2 includes the following differences from Sixth Edition UNIX:
 +
 +  * Only nroff(I) is included, neither roff(I) nor troff(I) are.
 +  * The behavior of /etc/motd is made much more explicit in the manual.
 +  * The credits in the manual credit members of USG as well as departments 127, 522, 8234, and 9152; the Computing Science Research Center, Switching Maintenance and Administration Laboratory, Computer Planning Department, and Support Products and Systems Department respectively.
 +  * Tables are moved to manual section VII, user subroutines drop out.
 +  * Manual section IV is renamed from "Special files" to "Drivers".
 +  * Several components such as bas(I) and cdb(I) are more akin to their V4 versions.
 +  * The new ar(V) format also seen in V7 and PWB is introduced over the V6 format.  The ar(I) utility accordingly is more akin to these versions, but featuring an 'l'(ell) to list in "long" mode ala ls(I).  The 'l' option is recycled in later ar(I) utilities as the "Local" option to place temporary files in the CWD instead.  Ar(I) in the USG lineage also features an "interactive" mode requested by the 'n' option.
 +  * Date setting over TIU has been removed
 +  * The updated diff(I) with '>' and '<' is introduced.  Unique options '-1' and '-2' are used to indicate which file is the source, which does not survive into Issue 3 or other lines.
 +  * Newline suppression in echo(I) is requested by following the arguments with a quoted space (e.g. `echo "prompt --> "`).  This feature is included in Issue 3 as well, and CB-UNIX 2.1 retains this as a compatibility feature.
 +  * Eqn(I) and neqn(I) are not incorporated until Issue 3.
 +  * Exit(I) includes a return code argument similar to PWB.
 +  * If(I) includes a mechanism to define a least-acceptable return code for a bracketed command.  When a numerical argument is given after the brackets, any return code less than or equal to that argument will be considered true.
 +  * The line-printer service lpr(I) is still around.
 +  * The mtm(I) utility is included to simplify magtape manipulation.
 +  * The mv(I) utility adopts a '-f' flag to force activity.  This is handled differently in other streams.
 +  * A quite different read(I) implementation is provided which can be used to incrementally read a file opened in the shell process space, much like read(II) when used in an application.
 +  * The system offers a return(I) utility for completing interrupt handlers or profile files.  It otherwise behaves as exit(I).
 +  * The rev(I) utility is not included.
 +  * The rew(I) tape manipulation program is retained from earlier research versions.
 +  * The USG shell implements stderr redirection using the character '%' in similar fashion to '>' for stdout.  In practice this means that redirecting stderr to the file error.txt is `%error.txt` rather than `2>error.txt`.  This syntax does not survive in other shells.
 +  * The USG shell has a few pre-defined environment variables that do not appear in other lineages.
 +  * The USG shell uses the file profile.sh rather than .profile in the user's home directory to initialize.
 +  * The shift(I) command includes an optional argument which represents the first positional argument to shift out, rather than always shifting from index 0.  Any arguments less than this index are retained in their positions.
 +  * The sort(I) command looks much closer to the V7 version.
 +  * The stty(I) command does not include 'hup'-related options.
 +  * The wait(I) command allows an optional argument to identify the child to wait upon.  Interestingly this disappears and shows back up in late 80s UNIX and is now standardized in POSIX.
 +  * The "who am i" version of who(I) is not supported.
 +  * The alarm(II) and pause(II) syscalls are added.
 +  * The lock(II) semaphore mechanism is added.
 +  * The mdate(II) syscall is added.
 +  * The nice(II) range is 100-106 rather than 100-119.
 +  * The core allocator in alloc(III) is an older version.
 +  * A default compar(III) is provided for qsort(III).
 +  * The dtol(III) and ltod(III) utilities are provided for long-double conversion.
 +  * The hypot(III) trig calculation is added.
 +  * The mesg(III) subroutine is added.
 +  * The mktemp(III) subroutine is added.
 +  * The cat(IV) phototypesetter driver is not included.
 +  * The dn(IV) driver uses an 8-second rather than 4-second dial tone delay.  Entry of '#' and '*' are not supported.
 +  * The dp(IV) timeout is cut in half from 10 to 5 seconds.
 +  * The suggested hp(IV) disk geometry is modified.
 +  * Magtape drivers include means to indicate BPI and whether to rewind.
 +  * The symbol table and relocation bits order is swapped in a.out(V).
 +  * An associative memory driver system is included.  [[https://www.tuhs.org/Archive/Documentation/TechReports/USG_Library/1064_Agen_An_Associative_Memory_Generator.pdf|Click here]] for more information.
 +  * Several user-maintained (Section VI) items are removed.
 +  * The hyphen(VI), lex(VI) and ptx(VI) utilities are added.
 +  * The boot process is significantly altered and features a different set of loaders for different system configurations.  The process is roughly similar to that described in the Program Generic Issue 1 installation notes [[https://www.tuhs.org/Archive/Documentation/TechReports/USG_Library/1017_Setting_Up_UNIX_Issue_Three.pdf|here]].
 +  * Disk checking utilities appear to be a bit more primitive.  Icheck(VIII) has some USG-specific changes to feedback.
 +  * The dataphone daemon dpd(VIII) is not included.
 +  * The getty(VIII) command supports 1200 and 110 baud now.
 +  * The ino(VIII) command is included.
 +  * The reloc(VIII) object file relocation utility is still present.
 +  * The shell accounting files are modified and renamed.
 +  * The wall(VIII) command is not included.
 +  * Online manuals (and the related man(I) command) are not included.
 +  * The spell(I) spellchecker is not included.
 +  * The ptrace(II) syscall is not included.
 +  * The LIL language and compiler are included.
 +  * Ratfor is not included.
 +  * Tee(I) is not included.
 +  * Cron(VIII) is not included.
 +  * Groups are not implemented.
 +  * The sticky bit is not implemented.
 +  * Setting the specific priority via nice(I) is not implemented.
 +  * Reassignment of erase and kill is not supported.
 +  * Effective ID reporting is not present in getgid(II) or getuid(II)
 +
  
 See Shamim Sharifuddin Pirzada's [[https://www.tuhs.org/Archive/Documentation/Theses/Shamim_Sharfuddin_Pirzada-1988-PhD-Thesis.pdf|A Statistical Examination of The Evolution of the UNIX System]] for more information about the history of USG UNIX. See Shamim Sharifuddin Pirzada's [[https://www.tuhs.org/Archive/Documentation/Theses/Shamim_Sharfuddin_Pirzada-1988-PhD-Thesis.pdf|A Statistical Examination of The Evolution of the UNIX System]] for more information about the history of USG UNIX.
systems/usg2.txt · Last modified: by segaloco