PDP8 joy – the FORTRAN compiler is working!

I bought this PiDP8 kit, and it arrived two weeks ago. It’s a front panel and box that duplicates the PDP8 front panel complete with blinking lights and switches. It gets it’s OS via SIMH running on a Raspberry Pi.  I have not yet had time to build the kit.

However, an early step in the build instructions directs the user to obtain their Raspberry Pi, install Raspbian and the PIDP8 version of SIMH and then test everything to make sure it’s running properly before trying to plug it into the assembled front panel. There’s another option where you use a custom version of Raspbian that includes the PIDP8 pre-configured to run at boot, but I chose the Raspbian+SIMH route as it’s more flexible.

After getting it all set up, I’ve been having much fun playing with a simulated PDP8 via an SSH console on my PC. What wasn’t fun was the run-time errors I was getting in some simple FORTRAN programs I was testing.

After considerable reading on the internet and downloading and reading through numerous manuals, I found the problem was a missing library – forlib.rl. This is the FORTRAN library that, among other things, has the math subroutines for things like SIN, ALOG, etc. Without forlib.rl, programs simply failed with “USER ERROR LINE XX”.

After confirming the library was indeed absent from the PDP8/SIMH virtual disks loaded when the simulator ran, I went looking on the internet. I found two: ‘disk2.fortran.rk05’ and ‘os8-boot-fort.tu56’. The problem became “what to do with these”?

The PDP8 accepts disk packs, tapes, floppys and paper tape. Files representing these items have different suffixes, so a file RK05 is a disk pack (the RK0 pack, to be precise) and TU56 is a virtual tape.

After much reading, I managed to confirm that forlib.rl was available (on the TU56 file). I was also able to copy it to my default system drive on the PDP8 simulator.

For those interested, the steps are as follows:

ON the PDP8 simulation, <ctrl-e> stops the simulation and puts you into SIMH command mode. So, here is what I did:

Copying FORLIB.RL FROM TAPE TO DISK

<ctrl-e> (in simh)

show dt
set dt disabled
show dt

show td
set td enabled
show td
set td0 locked
att td0 os8-boot-fort.tu56
show td

boot td0

(now on PDP8 – OS on tape)

DIR (dir of tape)

DIR RKA0:

COPY RKA0:FORLIB.RL<FORLIB.RL (no room)

DIR RKA0: /E (this shows all the empty blocks)

SQUISH RKA0: (this consolidates empty blocks)

COPY RKA0:FORLIB.RL<FORLIB.RL (ok)

<ctrl-e> (in simh)

BOOT RK0

(now on PDP8 – OS on disk)

DIR (shows forlib.rl )

COMPILE BENCH1.FT

EXECUTE BENCH1 (works!)

 

This was a lot of fun to figure out, but even more satisfying to have operational. The nice thing about the EXECUTE command is that if forlib.rl is present, it automatically links it in before running the program.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.