From: Brian Hechinger <wonko at 4amlunch.net>
I wonder how hard/impossible it would be to implement this entirely in an
FPGA of some sort. That would be a LOT of work, but extremely cool.
This could be a really neat project -- much easier with J11s than PDP-11/70s
though. The J11 has the TSTSET and WRTLCK interlocked instructions which
are obviously intended to take the place of the ASRB kludge on the PDP-11/74
(which is used by RSX11M+ to implement spinlocks). So you'd need some kind
of shared memory (doesn't have to emulate the MKA11 at all, shouldn't be
complicated enough to need an FPGA), and some kind of IIST emulation (which
could be mostly done with microcontrollers), and that's it. Somewhere on
the web there's a quote from one of the RSX guys which basically says that
all of this has already been done, but never released, and it was no sweat
at all.
John Wilson
D Bit
On Mon, Oct 19, 2009 at 05:45:27PM +0200, Johnny Billquist wrote:
Such as (just as an example):
======
HOST: MIM
HARDWARE: E11 (PDP-11/74)
OS: RSX-11M-PLUS V4.6
LOCATION: UPPSALA, SWEDEN
MANAGER: Johnny Billquist
EMAIL: bqt at update.uu.se
EMAIL: MIM::BILLQUIST
======
Keep the format simple, and very relaxed. Let software figure out if
they can do anything with it or not.
Uppercase, lowercase, free flowing text. Just keep the tags standard to
start with. Maybe we can have some tags with a more formalized value, if
needed, such as a POS: value with LAT/LONG if people want to add that?
Hmm, that looks a LOT like an LDIF file. :)
-brian
--
"Coding in C is like sending a 3 year old to do groceries. You gotta
tell them exactly what you want or you'll end up with a cupboard full of
pop tarts and pancake mix." -- IRC User (http://www.bash.org/?841435)
John, did you notice that the IIST documentation now is available at bitsavers?
Johnny
John Wilson wrote:
From: "Bob Armstrong" <bob at jfcl.com>
So can E11 actually use multiple processors on the host (aka Intel) side
so that the emulated 11/74 CPUs can really run in parallel?
Exactly. It also commits some atrocities (making CPUs wait for each other
while sending/receiving inter-CPU interrupts) to ensure that it'll still
basically work even on Linux/Windows systems which don't have enough
(available) 80x86 CPUs/cores to cover all the PDP-11/74 CPUs (and more
importantly, doesn't crash just because of occasional latency problems on a
heavily loaded host PC). The DOS and stand-alone versions DO need enough
80x86 CPUs though, since there's no time-slicing there (there are different
atrocities there -- all I/O is done on the boot processor since DOS and the
BIOS aren't mP-safe).
The bugginess is annoying (occasional hangs) but part of the problem is
that there are no real manuals for the IIST (the inter-processor interrupt
device) and obviously I don't have access to a real mP system to test on.
So I just did the best I could. RSX comes with sources of course, and the
IIST diag listings are in the PDP-11 fiche kit, but as always the diags
themselves mostly focus on little details (evidently the IIST used some kind
of serial bus so there's parity and other weirdness) which are hard/pointless
to emulate, and doesn't point towards whatever I'm getting wrong, so it's
not as if it's just a simple matter of ironing things out until the diag
makes it all the way through.
Anyway I would love it if more people tried out the mP feature. There's a
chapter in the Ersatz-11 manual which tells how to turn it on, and how
to configure RSX to use it. The more users, the more bug reports, and the
sooner the mP parts of E11 get all the kinks worked out. It's a lot of fun to
play with! DEC sort of pretended mP PDP-11s never happened (there was never
any official support) but only after they'd already done *all* of the work.
The mP stuff is in the real printed RSX manuals, and the diags are on the
regular XXDP packs, it's great! And lots of fun to play with...
John Wilson
D Bit
Brian Hechinger wrote:
On Mon, Oct 19, 2009 at 05:37:39PM +0200, Johnny Billquist wrote:
But all the pieces are documented, and the documents are available on the internet...
I wonder how hard/impossible it would be to implement this entirely in an
FPGA of some sort. That would be a LOT of work, but extremely cool.
Start with the basic PDP-11/70 in that case. Once you have that down, extending it to an 11/74 should be less of a problem.
I know of several attempts in the past to do PDP-11s in FPGA. I don't know if any of them have reached a working stage, but they have also been aiming a bit lower. Going for 11/40 type machines.
But it should all be doable, I think. Just given enough time and energy. :-)
Johnny
From: "Bob Armstrong" <bob at jfcl.com>
So can E11 actually use multiple processors on the host (aka Intel) side
so that the emulated 11/74 CPUs can really run in parallel?
Exactly. It also commits some atrocities (making CPUs wait for each other
while sending/receiving inter-CPU interrupts) to ensure that it'll still
basically work even on Linux/Windows systems which don't have enough
(available) 80x86 CPUs/cores to cover all the PDP-11/74 CPUs (and more
importantly, doesn't crash just because of occasional latency problems on a
heavily loaded host PC). The DOS and stand-alone versions DO need enough
80x86 CPUs though, since there's no time-slicing there (there are different
atrocities there -- all I/O is done on the boot processor since DOS and the
BIOS aren't mP-safe).
The bugginess is annoying (occasional hangs) but part of the problem is
that there are no real manuals for the IIST (the inter-processor interrupt
device) and obviously I don't have access to a real mP system to test on.
So I just did the best I could. RSX comes with sources of course, and the
IIST diag listings are in the PDP-11 fiche kit, but as always the diags
themselves mostly focus on little details (evidently the IIST used some kind
of serial bus so there's parity and other weirdness) which are hard/pointless
to emulate, and doesn't point towards whatever I'm getting wrong, so it's
not as if it's just a simple matter of ironing things out until the diag
makes it all the way through.
Anyway I would love it if more people tried out the mP feature. There's a
chapter in the Ersatz-11 manual which tells how to turn it on, and how
to configure RSX to use it. The more users, the more bug reports, and the
sooner the mP parts of E11 get all the kinks worked out. It's a lot of fun to
play with! DEC sort of pretended mP PDP-11s never happened (there was never
any official support) but only after they'd already done *all* of the work.
The mP stuff is in the real printed RSX manuals, and the diags are on the
regular XXDP packs, it's great! And lots of fun to play with...
John Wilson
D Bit
On Mon, Oct 19, 2009 at 05:37:39PM +0200, Johnny Billquist wrote:
But all the pieces are documented, and the documents are available on
the internet...
I wonder how hard/impossible it would be to implement this entirely in an
FPGA of some sort. That would be a LOT of work, but extremely cool.
-brian
--
"Coding in C is like sending a 3 year old to do groceries. You gotta
tell them exactly what you want or you'll end up with a cupboard full of
pop tarts and pancake mix." -- IRC User (http://www.bash.org/?841435)
Bob Armstrong wrote:
Why am I starting to think something like X.500 makes more sense at this
point?
There's also the format used once up on a time by the UUCP mapping project
- we have basically the same problem that they did. http://www.uucp.org/uumap/README
They're long gone now, but there are probably still lots of tools around for
processing data in this format.
Come to think of it, didn't they already have something to produce a
geographic map?
That format works, but it seems so cryptic.
What's wrong with plain text tags, followed by information
Such as (just as an example):
======
HOST: MIM
HARDWARE: E11 (PDP-11/74)
OS: RSX-11M-PLUS V4.6
LOCATION: UPPSALA, SWEDEN
MANAGER: Johnny Billquist
EMAIL: bqt at update.uu.se
EMAIL: MIM::BILLQUIST
======
Keep the format simple, and very relaxed. Let software figure out if they can do anything with it or not.
Uppercase, lowercase, free flowing text. Just keep the tags standard to start with. Maybe we can have some tags with a more formalized value, if needed, such as a POS: value with LAT/LONG if people want to add that?
I've seldom understood why people are striving for more and more complex solutions to a simple information problem. :-)
Johnny
Bob Armstrong wrote:
It also forks of separate processes
Yeah, but John Wilson is famous for writing E11 all in assembly language
and for DOS. It runs right on the bare metal, or silicon in this case. If
there's any multi-processing going on, he must have implemented his own.
Yup. Didn't say he was using the C library. However, MIM is running on a Linux box. And yes, he is rolling his own code to make the system calls to Linux from assembler.
Actually, I believe the different hardware instances are threads, and not forks.
Johnny
Pontus Pihlgren wrote:
Makes you wish you had a real PDP-11/74 around... :-)
Hmm, we have several 11/70 you know. Could we build one? Or would we have to rebuild the whole cache/memory tingies?
Hehe. Yes, we have three PDP-11/70 machines.
But sadly, no. It is not an easy task. The MMU needs modifications to implement the cache bypass bit in the PDR, which a normal PDP-11/70 don't have. Then we need a modification to the core instruction set of the machine, as the ASRB instruction in an 11/74 always bypass the cache unconditionally.
And then we need a different type of memory boxes, that accept cables from up to four CPUs into the memory box, do the arbitration between requests from several CPUs, and also support a read-modify-write cycle interlocked.
And then we need a new piece of hardware called the IIST (Interprocessor Interrupt and Sanity Timer), which is what the CPUs use to interrupt each other, boot each other, and also make sure that a CPU isn't hung.
So, while possible in theory, it would require quite a lot of engineering to actually produce an 11/74 from a few 11/70 machines.
But all the pieces are documented, and the documents are available on the internet...
Johnny
It also forks of separate processes
Yeah, but John Wilson is famous for writing E11 all in assembly language
and for DOS. It runs right on the bare metal, or silicon in this case. If
there's any multi-processing going on, he must have implemented his own.
Bob