> Any ideas on why businesses didn’t pick up the H11 in 1980?
> [priced too high for hobbyists]
>
> Wikipedia says:
>
> 1978: H11 US$1295 (kit) or US$1595 fully assembled ("4kword base system”)
> display advert <http://www.decodesystems.com/heathkit-h11-ad-1.gif> $1295 kit + postage/freight, bare system, 8KB (4kword), 6 Q-bus slots free. ROM ?
>
> 1981: IBM 5150(PC) US$1,565 for "16 KB RAM, Color Graphics Adapter, and no disk drives.”
> ( I only saw 5150’s with 2x 5.25” 360KB floppies included - otherwise, can’t run programs & store files)
Note that those are nominal prices. In terms of purchasing power USD 1595 in 1978 equated about USD 2200 in 1981 (https://www.in2013dollars.com/us/inflation/1978?endYear=1981&amount=1595)
Otherwise agree with your observation on packaged, off-the-shelf software being the main driver. In small business before the IBM PC, Visicalc drove Apple II uptake; Wordstar, C-Basic 2 and DBase drove CP/M uptake.
Would LSI-11 hardware with LSX, ed and nroff have been competitive in small business? The experiences of John Walker (of AutoCAD fame) suggests not:
https://www.fourmilab.ch/documents/marinchip/
> While looking for something else, I found this:
>
> VAX-UNIX Networking Support Project Implementation Description
> Robert F. Gurwitz; January, 1981
> https://www.rfc-editor.org/ien/ien168.txt
>
> in a somewhat obscure location. I have no idea if it's already widely known
> or not, but here it is anyway.
Hi Noel,
Thank you for highlighting this document. I had seen it before and the implementation (as found on the tapes from CSRG and now on THUS) follows the plan outlined in IEN168 quite closely. The first snapshot of the code is just a few months after this document.
In a way it is modeled after the UoI Arpanet Unix implementation (and thank you again for finding that source!), with a separate (kernel) process for network activity. In my experiments I have found that it is not all that easy to get smooth network data flow as this network process is difficult to schedule just right. I now better understand why Joy moved to "software interrupts” to get better scheduling of kernel network operations.
Wbr,
Paul
While looking for something else, I found this:
VAX-UNIX Networking Support Project Implementation Description
Robert F. Gurwitz; January, 1981
https://www.rfc-editor.org/ien/ien168.txt
in a somewhat obscure location. I have no idea if it's already widely known
or not, but here it is anyway.
Noel
> Also, another problem with trying to 'push' LSX into a previously
> un-handled operating regions (e.g. large disks, but there are likely
> others) is that there are probably things that are un-tested in that
> previously unused operating mode, and there may be un-found bugs that
> you trip across.
'Speak of the devil, and hear the sound of his wings.'
>> From: Gavin Tersteeg
>> Interestingly enough, existing large V6 RK05 images can be mounted,
>> read from, and written to. The only limitations on these pre existing
>> images is that if enough files are deleted, the system will randomly
>> crash.
> I had a look at the source (in sys4.c, nami.c, iget.c, rdwri.c, and
> alloc.c), but I couldn't quickly find the cause; it isn't obvious.
I don't know if the following is _the_ cause of the crashes, but another
problem (another aspect of the '100 free inodes cache' thing) swam up out of
my brain. If you look at V6's alloc$ifree(), it says:
if(fp->s_ninode >= 100)
return;
fp->s_inode[fp->s_ninode++] = ino;
LSX's is missing the first two lines. So, if you try and free more than 100
inodes on LSX, the next line will march out of the s_inode array and smash
other fields in the in-core copy of the super-block.
Like I said, this is not certain to be the cause of those crashes; and it's
not really a 'bug' (as in the opening observation) - but the general sense of
that observation is right on target. LSX is really designed to operate only
on disks with less than 100 inodes, and tring to run it elsewhere is going to
run into issues.
How many similar limitations exist in other areas I don't know.
> From: Heinz Lycklama <heinz(a)osta.com>
> Remember that the LSX and Mini-UNIX systems were developed for two
> different purposes.
Oh, that's understood - but this just re-states my observation, that LSX was
designed to operate in a certain environment, and trying to run it elsewhere
is just asking for problems.
Noel
{I was going to reply to an earlier message, but my CFS left me with
insufficient energy; I'll try and catch up on the points I was goibf to make
here.}
> From: Gavin Tersteeg
> This leaves me with about 1.9kb of space left in the kernel for
> additional drivers
I'm curious how much memory you have in your target system; it must not be a
lot, if you're targeting LSX.
I ask because LSX has been somewhat 'lobotimized' (I don't mean that in a
negative way; it's just recognition that LSX has had a lot of corners
trimmed, to squeeze it down as much as possible), and some of those trims
behind some of the issues you're having (below).
At the time the LSI-11 came out, semiconductor DRAM was just getting started,
so an LSI-11 with 8KB onboard and a 32KB DRAM card (or four 8KB MMV11 core
memory cards :-), to produce the 40KB target for LSX systems, was then a
reasonable configuration. These days, one has to really search to find
anything smaller than 64KB...
It might be easier to just run MINI-UNIX (which is much closer to V6, and
thus a known quantity), than add a lot of things back in to LSX to produce
what will effectively be MINI-UNIX; even if you have to buy a bit more QBUS
memory for the machine.
> the LSX "mkfs" was hardcoded to create filesystems with 6 blocks of
> inodes. This maxed the number of files on a disk to 96, but even with
> the maximum circumvented LSX would only tolerate a maximum of 101 files.
And here you're seeing the 'lobotomizing' of LSX come into play. That '101'
made me suspicious, as the base V6 'caches' 100 free inodes in the
super-block; once those are used, it scans the ilist on disk to refill it.
The code in alloc$ialloc in LSX is hard to understand (there are a lot of
#ifdef's), and it's very different from the V6 code, but I'm pretty sure it
doesn't refill the 'cache' after it uses the cached 100 free inodes. So, you
can have as many free inodes on a disk as you want, but LSX will never use
more than the first 100.
(Note that the comment in the LSX source "up to 100 spare I nodes in the
super block. When this runs out, a linear search through the I list is
instituted to pick up 100 more." is inaccurate; it probably wasn't updated
after the code was changed. ISTR tis is true of a lot of the comments.)
Use MINI-UNIX.
> A fresh filesystem that was mkfs'd on stock V6 can be mounted on LSX,
> but any attempt to create files on it will fail.
The V6 'mkfs' does not fill the free inode cache in the super-block. So, it's
empty when you start out. The LSX ialloc() says:
if(fp->s_ninode > 0) {
...
}
u.u_error = ENOSPC;
return(NULL);
which would produce what you're seeing.
Also, another problem with trying to 'push' LSX into a previously un-handled
operating regions (e.g. large disks, but there are likely others) is that
there are probably things that are un-tested in that previously unused
operating mode, and there may be un-found bugs that you trip across.
Use MINI-UNIX.
> Interestingly enough, existing large V6 RK05 images can be mounted,
> read from, and written to. The only limitations on these pre existing
> images is that if enough files are deleted, the system will randomly crash.
I had a look at the source (in sys4.c, nami.c, iget.c, rdwri.c, and alloc.c),
but I couldn't quickly find the cause; it isn't obvious. (When unlinking a
file, the blocks in the file have to be freed - that's inode 'ip' - and the
directory - inode 'pp' - has to be updated; so it's pretty complicated.)
Use MINI-UNIX.
> The information there about continuous files ... will be extremely
> helpful if I ever try to make those work in the future.
My recollection is that the LSX kernel doesn't have code to create contiguous
files; the LSX page at the CHWiki says "the paper describing LSX indicates
there were two separate programs, one to allocate space for such files, and
one to move a file into such an area, but they do not seem to be extant". If
you find them, could you let me know? Thanks.
Noel
The MERT (Multi-Environment Real-Time) system was developed
at Bell Telephone Laboratories in Murray Hill, NJ by myself and
Doug Bayer in the mid 1970's on a DEC PDP 11/45 computer.
MERT was picked up by the UNIX Support Group (USG) in 1977 and
has been distributed and supported throughout the Bell System.
The MERT Manual consists of both the MERT Programmer's
Manual and the UNIX Programmer's Manual. You can find
all of this documentation at:
1. https://www.tuhs.org/Archive/Documentation/Manuals/MERT_Release_0/
The hosting of this manual online was made possible by Clem Cole's
painstaking efforts to scan in and organize the hundreds of pages
in the hard copy MERT Manual. Clem had previously scanned in
my Technical Memoranda documenting my work at Bell Labs in
the 1970's on MERT, LSX, Mini-UNIX and the Mini-Computer
Satellite Processor System:
2.
https://www.tuhs.org/Archive/Documentation/TechReports/Heinz_Tech_Memos/
The monthly UNIX Technology Advisor newsletter published
in 1989 and 1990 contains articles written by some of the leading
open systems industry pioneers. The first issue is available online here:
3. https://www.tuhs.org/Archive/Documentation/Unix_Advisor/
I want to thank Warren Toomey for providing and maintaining
the TUHS.org <https://www.tuhs.org/> platform for the hosting of this
historical information
on UNIX systems for the community.
Heinz Lycklama
> From: Paul Ruizendaal
> Note that LSX only holds one process in core and swaps other processes
> (NPROC = 3) out to floppy. It reportedly took several hours for the
> Terak to self-compile LSX from source.
If one is working in a simulator, and not a real hardware PDP-11, there's a
'trick' one can use to make life a lot easier - for MINI-UNIX, at least; I'll
comment on LSX below.
As I report in the MINI-UNIX Computer History Wiki article: "MINI-UNIX uses
the same file system as V6; this allows MINI-UNIX packs to be 'mounted' on V6
systems (either real, or simulated), which is very convenient for working on
them." So just spin up a V6 in the simulator, mount the LSX/MINI-UNIX pack,
and away you go. The V6 toolchain can be used to compile/link kernels; to
link user commands one will need to import the LSX/MINI-UNIX loader (which,
since V6 is source compatible with LSX/MINI-UNIX, is trivial).
LSX is potentially more complex, as it supports _two different_ file system
formats: the standard V6 one, and a 'contiguous' one which is very similar
to the V6 one (rdwri.c has no conditionals on CONTIG; not so alloc.c,
though), but is not fully compatible. So non-contiguous LSX file systems
can be mounted under V6, but not contiguous ones.
Noel
Hi,
long time lurker here. Today I ended up on an article by Christian Lee Seibold about the origin of shells [1].
Coincidentally the article explained how the “rc” files came to be and why they’re called “rc”: everything started with RUNCOM and Multics. An excerpt from the article:
====
Unix Shells have had a very long history, and it all starts with a program written by Louis Pouzin for the MIT CTSS Operating System, called RUNCOM (which stood for “run commands”). It executed commands from a file, called “a runcom”. According to Kernighan and Ritchie[1], “rc” configuration files from Unix descended from this. Tom Van Vleck also gives origins of Unix’s use of “rc” to RUNCOM [2], and notes that the first time he read the term “shell” was from Multics documentation created by Doug Eastwood. According to Louis Pouzin, he coined the word “shell”.
====
Well, now I know…
[1] https://portal.mozz.us/gemini/auragem.space/~krixano/ShellHistory-Unix.pdf
— Michelangelo
I've not seen an earlier post of mine on this topic; apologies if this
is a duplicate. Roff was probably the earliest way to get a
line-numbered file listing. Of course it took a bit of chicanery to
apply it to a roff input file, but even that was not a big shell
script.
As has often been told, Joe Ossanna used to promise of line numbers
(required by USPTO) to attract the Bell Labs patent department as the
first Unix "customer".
Doug