A bit of history: on this day in 1941, Konrad Zuse presented the Z3, the
world's first working programmable, fully automatic computer, in Berlin.
Pity it got destroyed when the joint was bombed...
-- Dave
[ COFF not TUHS ]
Clem Cole <clemc(a)ccc.com> wrote:
> On Sun, May 9, 2021 at 3:58 PM Larry McVoy <lm(a)mcvoy.com> wrote:
>
> > National couldn't get it together to produce bug free chips or maybe
> > we'd all be running that, pretty nice architecture (in theory).
>
> I've always wondered if a Nat Semi NS32016 based system running in a PC/AT
> form factor had appeared that was priced like a PC/AT if that might have
> had a chance.
Acorn Computers made an odd machine consisting of a BBC micro with a 32016
second processor in a box. (It didn't run a unix-like OS, I'm afraid.) The
32016 was one of the CPUs that inspired the ARM, because its performance
was so terrible: it was not able to make good use of the available memory
bandwidth. (There wasn't a 68000 second processor because its interrupt
latency was too bad to drive the "tube" interface.)
http://chrisacorns.computinghistory.org.uk/Computers/ACW.htmlhttps://en.wikipedia.org/wiki/Acorn_Computers#New_RISC_architecture
Tony.
--
f.anthony.n.finch <dot(a)dotat.at> https://dotat.at/
Malin, Southeast Hebrides: Cyclonic 4 to 6. Slight or moderate in
southeast, moderate or rough in northwest. Showers. Good, occasionally
poor.
I've got a number of DEC terminals, ranging from the VT220 to the VT520
(sadly, I got rid of my VT100 and VT102 many years ago, before I started
collecting DEC equipment instead of just using it), and some of them
have one or more burned out serial ports. Before I start taking them
apart to find out what chips were used, I figured I'd check if any of
you folks happen to know. I'd like to order a stash of replacements,
and it would be nice to have them handy before I clear the work bench to
start dismantling terminals...
Oh, and for the record: the Q-bus PDP-11/23 uses 9636ACP and 9637ACP for
output and input, respectively, while the VAX-11/630 substitutes a
9639ATC optocoupler for the 9637ACP differential receiver. (I have a
couple of spare CPU boards with damaged ports, as well, so these are all
on my shopping list already.)
-tih
--
Most people who graduate with CS degrees don't understand the significance
of Lisp. Lisp is the most important idea in computer science. --Alan Kay
Re: [COFF] Happy birthday, the Internet!
> From: Jim Carpenter
> But even that isn't really correct, as the Internet is a network of
> networks and Arpanet was all alone.
Correct: the ARPANET was merely an ancestor (albeit an important one) of the
Internet. (The most important, in terms of technical influence, was CYCLADES,
"the key intermediate technical step between the ARPANET and the Internet".)
The ARPANET was later sort of subsumed into the Internet, as its original
long-haul backbone ("sort of" because the ARPANET's main protocol was
discarded, in doing so), but that's not too important.
If you want to select _a_ birthday for the Internet, I'd pick the day they
settled on the IPv4 packet format; we know when that was, it was the second
day of the 15/16 June, 1978 meeting (see IEN-68). I'm not wedded to that
date, if someone has a better suugestion (e.g. the firt PRNET to ARPNET test),
I'm open to hearing why the alternative's preferable.
Noel
Born on this day in 1969 with the publication of RFC-1 "Host Software" by
Steve Crocker, it basically specified the ARPAnet and the IMPs.
Oh, and it really peeves me when the stupid media call it "the internet";
it's a proper noun, hence is capitalised.
-- Dave
On Fri, Apr 2, 2021 at 1:50 PM Theodore Ts'o <tytso(a)mit.edu> wrote:
> Out of curiousity, how was TCF different or similar to Mosix?
>
Many similar ideas. TCF was basically the commercial implementation of the
Locus, which Jerry and students built at UCLA (one 11/70s original). I
want to say the Locus papers are in some early SOSPs.
MOSIX was its own Unix-like OS, as was Locus [and some of this was in
Sprite too BTW]. TCF was a huge number of rewrites to BSD and was UNIX.
The local/remote restructuring was ad-hoc. By the time Roman and I lead
TNF, we had created a formal VPROC layer as an analog to the VFS layer
(more in a minute). TNC was to be the gut of Intel's Paragon using OSF/1
as base OS.
The basic idea of all of them is that the cluster is looks like a single
protection domain with nodes contributing resources. A Larry says a ps is
cluster-wide. TCF had the idea of features that each node provides (ISA,
floating-point unit, AP, *etc*..) so if a process needed specific
resources, it would only run on a node that had those resources. But it
also meant that processes could be migrated from a node that had the same
resources.
One of the coolest demos I ever saw was we took a new unconfigured PS/2 at
a trade show and connected the ethernet to it on the trade show network,
and put in a boot floppy. We dialed back into a system at an LCC, and
filled in some security things, details like the IP address of the new
system and soon it booted and joined the cluster. It immediately started
to add services to the cluster, we walked away, and (overnight) the system
had set up the hard disk and started caching locally things that were
needed for speed. Later I was editing a file and from another screen
migrated the process around the cluster while the editing was active.
The problem with VPROC (like VFS) is it takes surgery all over the kernel.
In fact, for Linux 2.x kernel the OpenSSI
<https://sourceforge.net/projects/ssic-linux/> folks did all the kernel
work to virtualize the concept of process, which sadly never got picked up
as the kernel.org folks did not like it (a real shame IMO). BTW, one of
the neat side effects of a layer like VPROC is things like
checkpoint/restart are free -- you are just migrating a process to the
storage instead of an active processor.
Anyway, Mosix has a lot of the same types of ideas. I have much less
experience with it directly.
On Fri, Apr 02, 2021 at 09:11:47AM -0700, Larry McVoy wrote:
> > Long before Linus released Linux into the wild in 1990 for the >>386<< much
> > less any other ISA, IBM had been shipping as a product AIX/370 (and AIX/PS2
> > for the 386); which we developed at Locus for them. The user-space was
> > mostly System V, the kernel was based on BSD (4.1 originally) pluis a great
> > deal of customization, including of course the Locus OS work, which IBM
> > called TCF - the transparent computing facility. It was very cool you
> > could cluster 370s and PS/2 and from >>any<< node run a program of either
> > ISA. It has been well discussed in this forum, previously.
>
> It's really a shame that TCF didn't get more widespread usage/traction.
> That's exactly what BitMover wanted to do, I wanted to scale small cheap
> SMPs in a cluster with a TCF layer on it. I gave some talks about it,
> it obviously went nowhere but might have if we had TCF as a starting
> point. TCF was cool.
(Moving this to COFF...)
Out of curiousity, how was TCF different or similar to Mosix?
- Ted
The tab/detab horse was still twitching, so I decided to beat it a little
more.
Doug's claim that tabs saving space was an urban legend didn't ring true,
but betting again Doug is a good way to get poor quick. So I tossed
together a perl script (version run through col -x is at the end of this
note) to measure savings. A simpler script just counted tabs,
distinguishing leading tabs, which I expected to be very common, from
embedded tabs, which I expected to be rare. In retrospect, embedded tabs
are common in (my) C code, separating structure types from the element
names and trailing comments. As Norman pointed out, genuine tabs often
preserve line to line alignment in the presence of small changes. So the
fancier script distinguishes between leading tabs and embedded tabs for
various possible tab stops. Small tab stops keep heavily indented code
lines short, large tab stops can save more space when tabbing past leading
blanks. My coding style uses "set-width" of 4, which vi turns into spaces
or tabs, with "standard" tabs every 8 columns. My code therefore benefits
most with tabstops every 4 columns. A lot of code is indented 4 spaces,
which saves 3 bytes when replaced by a tab, but there is no saving with
tabstops at 8. Here's the output when run on itself (before it was
detabbed) and on a largish C program:
/home/jpl/bin/tabsave.pl /home/jpl/bin/tabsave.pl rsort.c
/home/jpl/bin/tabsave.pl, size 1876
2: Leading 202, Embedded 3, Total 205
4: Leading 303, Embedded 4, Total 307
8: Leading 238, Embedded 5, Total 243
rsort.c, size 209597
2: Leading 13186, Embedded 4219, Total 17405
4: Leading 19776, Embedded 5990, Total 25766
8: Leading 16506, Embedded 6800, Total 23306
The bytes saved by using tabs compared to the (detabbed) original size are
not chump change, with 2, 4 or 8 column tabstops. On ordinary text, savings
are totally unimpressive, usually 0. Your savings may vary. I think the
horse is now officially deceased. -- jpl
===
#!/usr/bin/perl -w
use strict;
my @Tab_stops = ( 2, 4, 8 );
sub check_stop {
my ($line, $stop_at) = @_;
my $pos = length($line);
my ($leading, $embedded) = (0,0);
while ($pos >= $stop_at) {
$pos -= ($pos % $stop_at); # Get to previous tab stop
my $blanks = 0;
while ((--$pos >= 0) && (substr($line, $pos, 1) eq ' ')) {
++$blanks; }
if ($blanks > 1) {
my $full = int($blanks/$stop_at);
my $partial = $blanks - $full * $stop_at;
my $savings = (--$partial > 0) ? $partial : 0;
$savings += $full * ($stop_at - 1);
if ($pos < 0) {
$leading += $savings;
} else {
$embedded += $savings;
}
}
}
return ($leading, $embedded);
}
sub dofile {
my $file = shift;
my $command = "col -x < $file";
my $notabsfh;
unless (open($notabsfh, "-|", $command)) {
printf STDERR ("Open failed on '$command': $!");
return;
}
my $size = 0;
my ($leading, $embedded) = (0,0);
my @savings;
for (my $i = 0; $i < @Tab_stops; ++$i) { $savings[$i] = [0,0]; }
while (my $line = <$notabsfh>) {
my $n = length($line);
$size += $n;
$line =~ s/(\s*)$//;
for (my $i = 0; $i < @Tab_stops; ++$i) {
my @l_e = check_stop($line, $Tab_stops[$i]);
for (my $j = 0; $j < @l_e; ++$j) {
$savings[$i][$j] += $l_e[$j];
}
}
}
print("$file, size $size\n");
for (my $i = 0; $i < @Tab_stops; ++$i) {
print(" $Tab_stops[$i]: ");
my $l = $savings[$i][0];
my $e = $savings[$i][1];
my $t = $l + $e;
print("Leading $l, Embedded $e, Total $t\n");
}
print("\n");
}
sub main {
for my $file (@ARGV) {
dofile($file);
}
}
main();