some pdp11 floppies to try...

From: Graham Toal <gtoal_at_gtoal.com>
Date: Thu Feb 10 21:47:09 2005

Some of you guys mentioned having pdp11's with floppies that still
work. I have some disk images of an operating system written at
Edinburgh around '75 by Brian Gilmore (now head of the computing center)

   http://history.dcs.ed.ac.uk/archive/os/deimos/disk-images/

There's documentation for the OS online at
http://history.dcs.ed.ac.uk/archive/os/deimos/ercm09/emas-2900/docum_dmanual3.html

and the original source code at http://history.dcs.ed.ac.uk/archive/os/deimos/
and subdirectories.

Below are several emails from Brian stitched together which ought to be
enough to work out the boot sequence. (I'd hoped to emulate it under
simh but I'm struggling to know where to start with simh)

It would be great to know if these images can still be run; either on
a real system or an emulator. I don't know enough about pdp11's or
simh to work out how to load the binary at the right place and boot
the system. (a simh script would be great; I'ld like to set this
up under simh on my unix so that Brian can telnet in and be greeted
with Deimos running. It'll be a neat surprise for him!)


Graham

========================================================================
What I can remember from the past is booting from a rk02 (hard disc). What
you did if nothing else was available was to put an instruction into its dma
registers to boot down from its block 0 into address 0 in memory (this being
quite easy). I would have thought you would have wanted about 128 to come
down.

Now from memory, I don't think on executed from location zero as that is
made to be zero to stop any program dead that jumped to location 0 by
accident. The number 0400 (octal) comes to mind as to where one started
executing.

The lower addresses (up to 0200 ?) are used for device interrupt vectors.
So try checking contents of memory looking for sensible instructions on the
100 (octal) boundaries up to & including 01000.

Even with an incorrect disc type, you ought to get it to do something -
rather than just crash straight out.

I fear I may not have kept the disc boot images.

This file:
http://history.dcs.ed.ac.uk/archive/os/deimos/ercm09/emas-2900/supb1145.txt

is one of the ones which drove the process to make an operating system.
But I suspect I didn't keep any of the binaries that are listed, so
everything would need to be recompiled (!)

And this is the prog that builds systems (or have you already worked all
this out?):
http://history.dcs.ed.ac.uk/archive/os/deimos/ercm09/emas-2900/sbldrl3s.txt

It does seem to start executing at location 0400.

If you look at the prog I just gave you the link to, then the array 'dkf'.
Dkf is a set of machine instructions that are temporarily planted at 0400 to
start the supervisor executing. The area that the linker has placed at 0400
is carefully moved out of the way so it can be put back when the supervisor
starts executing.

My pdpd11 assembler in my head is not good enough to remember it but it
starts with a reset (0005) then a no-op then some funny stuff!

Looking again at the first hex dump, it does look like a bootable image -
and I did use to boot of floppies!

But its location doesn't start at the beginning.

What you could do is to search for that DKF array inside that dump - this is
where I just can't handle hex when I am trying to find octal.

Also, as a thought, what is the byte order for octal '000005' ? (is it 00
05 or 05 00 ??)

I am now sure.
1c20 is location zero. The bottom end of the interrupt area got filled with

<address n> contained <address n+2>
<address n+2> contained zero

Then if an unexpected interrupt occurred at 'n' it would halt with n+2 in
the PC so you could see what happened, there is lots of those numbers just
where they should be.

The area at 1d20 on rx02b contains 05 00 a0 00, which looks like o'0005'
o'0240'

If so, then this is what is planted at o'0400', so start executing there!

===================================================================
Received on Thu Feb 10 2005 - 21:47:09 GMT

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:37:37 BST