>>>> "John" == John Foust
<jfoust at threedee.com> writes:
John> At 12:25 PM 8/6/2008, Paul Koning wrote:
> BP2 is a true compiler, not a P-code system.
John> As has happened many times before, the same topics get rehashed
John> on this list even by the same people. ...
John>
http://elvira.stacken.kth.se/rsts/rsts_80th_birthday.html
John> 1974 February-Clark Baker, George Robbins, Dan Grim and Ed
John> Baker write the PPCODE Basic Plus Decompiler.
John> 1978: October-Nick de Smith returns to Dulwich College, where
John> he had been a student between 1967 and 1976, to write the
John> DECOMP Basic Plus Decompiler.
John> 1990: July-SPL announces special anniversary ?offers? on
John> various software products including The Link, BAS24K, BP3, RPM,
John> DECOMP, SORT1 and REPGEN.
John> (The name George Robbins caught my eye, as I knew him from
John> Commodore and the Amiga. Other googling makes it apparent it's
John> the same guy who worked on the 1974 decompiler, and sadly, it
John> seems he passed away in 2002.)
John> Perhaps we're just arguing about semantics. If BP2 was a true
John> compiler, to me that means it was emitting native CPU code in
John> an executable format - no interpretation needed. So you're
John> saying this decompiler was reading CPU opcodes and mapping them
John> correctly back to BASIC code? That it wasn't just detokenizing
John> something that ran through an interpreter?
John> ...
http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/decus/1…
John> "[80,19] BASIC-PLUS-1 DECOMPILER: two programs, one data file
John> BASIC-PLUS-1 reverse compiler"
You may be missing the different product names.
"BASIC-PLUS" and "BASIC-PLUS-2" are very different beasts. (I
haven't
seen BASIC-PLUS-1 before, that wasn't a normal designation but the
meaning is obvious.)
BP was a P-code ("push-pop code") incremental compiler. It runs only
on RSTS.
BP2 was a regular compiler; it would produce object files which you'd
feed to TKB to get your RSX-format executables. It ran on RSTS, RSX,
and VMS.
From the point of view of language, BP2 was pretty much
a superset of
BP though not exactly. You could certainly write the intersection of
the two very easily. At DEC, that was the practice for RSTS tools
because, at least for a while, they needed to be useable for customers
who didn't have the BP2 optional (extra cost) product installed.
Later that was dropped due to the introduction of "CSPCOM", a limited
BP2 variant.
The decompilers you're describing are for BP, not BP2. PPcode was
just "high level" enough that you could get reasonably intellegible
decompile output. I don't think the decompile would actually produce
BASIC source; instead it was more like an annotated disassembly that
you could read with some effort. At least that's what I recall from
the one or two occasions where I tried one of those decompilers.
There are several other DEC BASICs as well. There was one for DOS; I
don't remember anymore what that one looked like. It may have been a
straight interpreter (stores text, interprets text). Some vague
memory says that it used an oddball 3 word (48 bit) float format,
quite unlike any of the ones supported by PDP-11 hardware FPUs. Or
that may have been the BP in RSTS V3. Or both...
Then there was BASIC-11 for RT-11. That was a much more limited
BASIC, nowhere near as powerful as BP or BP2. It was a tokenizing
system: the interpreter would execute from the tokens but that wasn't
a P-code, it really was only a different way of representing the
source text. When you said "LIST" it would reconstitute the source
code from the token stream, so the layout would be altered a bit. It
used PDP-11 standard floating point format.
By contrast, BP did support "LIST" but it would do that by saving the
source text (in a temporary file) as well as the P-code
representation; LIST would give you the saved source text.
paul