> From: Will Senn <will.senn(a)gmail.com>
> I am studying Unix v6 using SimH and I am documenting the process
I did a very similar exercise using the Ersatz11 simulator; I have a lot
of stuff about the process here:
http://www.chiappa.net/~jnc/tech/V6Unix.html
It contains a number of items that you might find useful, e.g.: "V6 as
distributed is strictly a 20th Century operating system. Literally. You can't
set the date to anytime in the 21st century, for two reasons. First, the
'date' command only take a 2-digit year number. Second, even if you fix that,
the ctime() library routine has a bug in it that makes it stop working in the
closing months of 1999."
> the PDP architecture
Technically, a PDP-11 - there were a number of different PDP architectures:
https://en.wikipedia.org/wiki/Programmed_Data_Processor
is a decent listing of them; several (PDP-8, PDP-10, etc) were very popular
and successful.
A few things I noted in your first post:
> I am using the Ken Wellsch tape because it boots and is stated to be
> identical to Dennis Ritchie's tape other than being bootable and having
> a different timestamp on root.
The only differences I could discover between the two are that in the Wellsch
versions i) a Western Electric rights notice (which prints on booting) has
been added to ken/main.c, and the Unix bootable images; and ii) the RK pack
images do have, as you noted, the bootstrap in block 0.
> Note: sh is critically important, don't muck it up :). The issue is
> that if you do, there really isn't an easy way to recover.
One should _never_ install a new shell version as '/bin/sh' until it has been
run and tested for a while (for the exact reason you mention). Happily, in
Unix, as far as the OS is concerned, the command interpreter is just another
program, so it's trivial to name a new binary of the shell 'nsh' or
something, and run that for a while to make sure it's working OK, before
installing it as '/bin/sh'.
> a special file (whatever that is)
Special files are UNIXisms for 'devices'. _All_ devices in Unix appear as
'special files' in the file system, usually (but not necessarily) in /dev -
that location is a convention, not a requirment of the OS.
Noel
On Sun, Nov 29, 2015 at 08:55:23PM -0800, Paul McJones wrote:
> Thanks very much for making the original and the OCR-enhanced versions
> of Doug’s scan of the “UnixEditionZero” document available
> on tuhs.org. I notice that even with Nelson’s enhanced version,
> the file size is still large for a scanned text document, apparently
> because it was originally scanned in RGB mode, 24 bits/pixel. The
> attached version is 2.5MB, and to my eye is identical looks identical
> to UnixEditionZero-OCR.pdf.
Paul, I've added your version into the same directory. Thanks!
Warren
Hi all,
In v2 no5 AUUGN Jun-Jul 1980, Andy Tanenbaum announced the availability of a Portable Pascal Compiler for the then proposed ISO standard. A tape was made for v6, v7, and non-unix platforms. Does anyone know if there is a tape image around that has the distro?
On a related note, has anyone successfully installed 1BSD on a v6 install running in SImH? 1BSD has the Berkeley Pascal Instructional system on it.
Regards,
Will
Sent from my iPhone
I'm too tired to dig for the exact words in the ISO standard,
but I had the impression that the official C rule these days
is that the effect of writing on a string literal is undefined.
So it's legal for an implementation to make strings read-only,
or to point several references to "What's the recipe today, Jim"
to one copy of the stripng in memory, and even to point uses of
"Jim" to the tail of the same string. Or both.
It is also legal for every string literal to reside in its own
memory and to be writable, but since the effect is undefined,
code that relies on that is on thin ice, especially if meant to
be portable code.
I have used, and even fixed (unrelated) bugs in, a compiler
that merged identical strings. I forget whether it also looked
for suffix matches. Whether the strings went in read-only
memory was up to the code generator (of course); in the new
back-end I wrote for it, I made them so. This turned up quite a
few fumbles in very-old UNIX code that assumed unique, writable
string literals, especially those that called mktemp(3). To my
mind that just meant the programs needed to be fixed to match
current standards (just as many old programs needed fixes to
compile without error in ISO C), so I fixed them.
I didn't (and still don't) like Joy's heavy-handed hack, but I
see his point, and think it's just fine for the language rules
to allow the compiler to do it hacklessly.
Norman Wilson
Toronto ON
I've gotten sucked into an embedded system project and they are running out of
memory. I have a vague memory of some sort of tool that I think Bill Joy
wrote (or maybe he told me about it) that would do some magic processing of
all the string constants and somehow it de-dupped the space.
Though now that I'm typing this that doesn't seem possible. Does this ring
a bell with anyone? I'm sure it was for the PDP 11 port.
Thanks,
--lm
Thanks, Doug and Warren, for the new files at
http://www.tuhs.org/Archive/PDP-11/Distributions/research/McIlroy_v0/
At the TUHS mirror at my site, you can find an additional file
http://www.math.utah.edu/pub/mirrors/minnie.tuhs.org/PDP-11/Distributions/r…ftp://ftp.math.utah.edu/pub/mirrors/minnie.tuhs.org/PDP-11/Distributions/re…
that is less than half the size, and is (somewhat) searchable, thanks
to Adobe Acrobat Pro 11 OCR conversion. Please include that in the
TUHS master archive, even renaming it to the original file, if you
wish.
I like the beginning of "Section 2. Hardware", where Dennis wrote:
>> ...
>> The PDP-11 on which UNIX is implemented is a 16-bit 12K computer,
>> and UNIX occupies 8K words. More than half of this space, however, is
>> utilized for a variable number of disk buffers; with some loss of
>> speed the number of buffers could be cut significantly.
>> ...
How much more powerful early Unix was compared to CP/M and MS-DOS, in
a small fraction of their memory space!
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe(a)math.utah.edu -
- 155 S 1400 E RM 233 beebe(a)acm.org beebe(a)computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
> Woe betide the user if any string was changed at run time...
That was then. Now it would be OK to do so for const data.
(Unless the tool chain has discarded const indications.)
Doug
> It's worth noting that Unix was built for troff. Typesetting patents
if I recall correctly.
This is a stretch. Unix was really built because Ken and Dennis
had a good idea. The purchase of a PDP-11 for it was in part
justified by the goal of making a word-processing system. The
first in-house "sale" of Unix was indeed to the patent department
for typing patents--the selling point was that roff could be
made (by an overnight modification) to print line numbers as
USPTO required, whereas that was not a feature of a commercial
competitor. The timeline is really roff--Unix--patent--nroff--troff.
Though roff antedated Unix, it did not motivate Unix.
> Is this The UNIX Time-Sharing System, or related to it? The same
> claim appears in the first paragraph:
> https://www.bell-labs.com/usr/dmr/www/cacm.html
This draft clearly dates from 1971. Pieces of it were worked
into subsequent versions of the manual as well as published
descriptions of Unix, including the SIGOPS/CACM paper.
Doug
Hi,
I wanted to at least give it a try porting 2.11 BSD to my Z8001
machine. I din't really wrote any kernel part until now so it
will be a huge learning curve for sure. No idea what my spare
time permits, but... at least I'm planning giving it a try.
I didn't found something like "thing you should do first when
porting 2.11 BSD to another architecture" online so I thought
myself... maybe it would be good to start with the standalone
utilities - more precisely with "disklabel".
Is there a good "HOWTO" for "first things first" as implementing
disklabel seems to require quite some "device work" before the
first "hello world" is there - is there something else which
should be could be done first and does not require so much to
port (the whole disk subsystem on that machine is different
from "usual" disk subsystems as it is handled via a PIO)
Regards, Oliver