[fpc-devel] [Slightly off-topic]Mark Morgan Lloyd: Burroughs emulator
Mark Morgan Lloyd
markMLl.fpc-devel at telemetry.co.uk
Fri Aug 8 12:45:47 CEST 2014
Reinier Olislagers wrote:
> Hi Mark (& all),
> Just wanted to know how you're doing with that conversion of the
> Wonder if you have interesting stories about performance to tell us ;)
Noting obviously that I'm not the prime mover of this, and that I'm
As background: the B5x00 was an early-60s design using transistors and
diodes rather than valves, assembled as modules and plugged into a
wire-wrapped backplane (which, incidentally, is why I was digging for
info on the Lawrence Livermore S-1 computer a couple of weeks ago, hence
the Stallman comment I posted elsewhere). The B5000 was drum based, the
B5500 used discs (/big/ discs), and the B5700 could cluster up to 4x
systems around shared disc. Later machines had 2x CPUs, with one mainly
handling the operating system and the other devoted to user code. These
three machines were not code-compatible with the later B6xxx or B7xxx
range, or with the B5900.
The operating system was written in an ALGOL derivative, with fairly
heavy use of embedded assembler. The frequently-repeated statement that
these machines were programmed entirely in ALGOL and that there was no
assembler is a simplification. Dijkstra liked them, Knuth and Wirth used
them on occasion; Gary Kildall was involved in writing an APL
interpreter at IIRC Washington.
I'm starting off with a command-line driven variant, i.e. there's no GUI
and controls are simulated by typed-in commands using a parser I wrote
for something else. I've transcribed the CPU, central control and IOPs,
and am currently working on I/O devices starting off with the SPO
(Supervisory Printer Output) and card readers/punch. Importantly, as I
go I'm adding a fairly extensive set of test/debug commands.
I'm hoping to later put together a GUI using Lazarus, and to allow
symbolic debugging of the operating system etc. by transferring compiler
output listings from the emulated environment to the host. But I'm a
long way from that stage.
I've got to the point where I can enter a 48-bit I/O descriptor at which
point the first free IOP's thread spins once to e.g. read a card into
memory. I'm currently tidying up the code but at this time of year I've
got a lot of other demands on my time which are causing problems.
I'm not sure whether to tackle more I/O devices next (tape or disc), or
to start debugging the CPUs mow that I can read a loader deck into memory.
I'm hoping to be able eventually to get a cluster running, i.e. 4x
twin-CPU systems sharing common disc. Good old mid-60s technology ;-)
I'm also hoping to be able to support e.g. non-standard tape formats by
loading shared libraries, rather than hardcoding them. There's a number
of projects that emulate mainframes from the 7-track tape era, but like
the original systems they're very poor at reading each others media.
In the longer term, it would be nice to get a Pascal compiler running
(there's a listing on Bitsavers). However that would probably need a lot
of typing, which takes me back to a large-scale collaborative project
that's something else I'm trying to work on. And which is, as they say,
yet another story.
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the fpc-devel