BASIC-Plus decompiler

Paul Koning Paul_Koning at Dell.com
Wed Aug 6 14:01:39 CDT 2008


>>>>> "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/11s042.html

 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




More information about the cctech mailing list