Resurrecting the MIT Weather Radar PDP-8/IX

Much of the MIT Weather Radar PDP-8/IX system described in this long personal history has been resurrected and is now running on a new PDP-8 simulator. Simulator C# source code and standalone executable for Windows 10/11 are available on GitHub. Here’s the story.

While posting my long history, Lars Brinkhoff (known for resurrecting ITS on the PDP-10) suggested that we “get your timesharing system up and running.” At the time I thought he was crazy—all I had was a paper listing printed in 1977, no machine-readable source. Furthermore the Weather Radar PDP-8 had so many non-standard hardware modifications that major upgrades to a simulator would be needed. And also—who would care?

But Lars was not crazy, and with his help and encouragement I have now got the basics running, although there is much more to do as will be told in future posts.

The first step was extracting machine-readable source from the listing. Contemporary OCR was tried and the results were useless. So I wrote an OCR app from scratch targeted at this specific problem—single fixed spacing dot matrix font, scanned at very high resolution. The OCR project is described here. About 250 listing pages were scanned, about 150K characters with a couple hundred that needed manual review. The listing has the original binary object code, and by comparing it to a new assembly of the source we could confirm that the final OCR is right. OCR errors could still occur in comments, but they would be very rare and easy to identify.

I had a very nice PDP-8/I simulator that I wrote decades ago in Visual Basic 6.0. But VB6 has been a dead end for quite a while, so I rewrote it in contemporary C#. It’s a cycle-accurate PDP-8/I with eight fields, EAE, two terminals, RK05, PDP-8/I front panel with fully functioning lights and switches, hardware breakpoints, and fancy code analysis. The RK05 the uses the same file format as the PiDP-8 project uses, and the simulator can run the copy of OS/8 that the PiDP-8 project recovered. The terminals can simulate an ASR-38 teletype or a VT100 to run E8, the OS/8 emacs-like editor I wrote for the PiDP-8.

The act of getting RADAR to run required finding and implementing all of the IOT instructions that Weather Radar used. Most of those implementations are currently dummy devices that don’t do much besides responding to the IOT. Useful simulations (e.g. radar interfaces) will be added later.

The code currently on GitHub needs Visual Studio 2022 to build, but the standalone Windows desktop app can run as is—nothing to install. Just unzip and run PDP-8.exe. But this may be of limited use so far because there is no documentation. That’s coming soon.

Here’s a picture of RADAR running:

TTY1 for radar control commands is top center, TTY2 for display commands is bottom right. I have no memory of the commands that could be issued, that will have to be puzzled out from the code. Bottom left is the PDP-8/I front panel with fully functional switches and properly simulated lights. Top left is a GUI version of the front panel with more information displayed. The two panels mirror each other, either can be used. The light pattern you can see is indeed what the 8 looked like back in the day—I haven’t seen that light pattern in nearly 50 years. What a thrill!

Top right is some of the simulated Air Force Hurricane Research Project (HRP) hardware that needs at least to respond to IOT instructions for RADAR to start. It includes a dummy integrator that raises interrupts when done, and various displays and controls. There were nine different IOT groups that needed to be implemented just for HRP. I tried to match the blue background to the photo I have of the Air Force cabinets from 1975.

More posts coming as the project progresses. Posts will probably be infrequent though. Questions and comments welcome.

2 Likes

Added lots of documentation to the repository, including simulator User’s Guide.

Thanks! Very interesting!
I tried it on Windows.

Writing binary or split listing works, but the .BN file is always empty, unlike the other 2.
I can load the .LS file. Emulator is running (not sure if starting at right address).
No lights blinking on the panel but running. I think there is an IOT 3.01 but seems to run.
But I don’t have any output on either TTY. (Only when starting OS8).
Do I need OS8 anyway?

Thanks for trying it out! You don’t need OS/8 to run RADAR. The starting address for RADAR is 02000. It will ask for date and time on TTY1, ask you to position the “paper”, and then enter a command loop. For the date you can enter any year you want, but it only correctly interprets years in the range 75-85. I’m going to change that to 26-36.

I’ll be pushing a major new release in the next few days. Many general improvements, including the ability to acquire and display simulated radar data. I’ve done significant reverse engineering of the code, and now know all of the commands that can be issued on TTY1 for radar control, many of which will be working. Still lots more to do.

Just published the aforementioned new release, both source code and standalone executable. See updated simulator user’s guide and new RADAR user’s guide. You can now acquire and display synthetic radar data, moving the antenna around to see profiles of the storm. Still no DECtape, no reverse engineering of the TTY2 display commands.

It’s not clear how many people are actually trying to run the code, and I know that Windows-only may be a limitation for the retro community. Since the simulator is all very new code, bug reports with as much detail as you can provide would be most helpful. Also have been a very infrequent user of GitHub so notes on the publishing would also help.

Still no output on ver 1.0 (WIN10) when running at 2000. No blinkenlights. PC running (only in regions 20xxx). I tried it running for 5 minutes (10x speed).

On ver 2.0 the panel window doesn’t work properly. Very long, vertical window, can’t be expanded. So I can’t load the address. Writing as .BN still doesn’t work.

I’ve tested versions 1 and 2 on two Win10 machines, and the Win11 that I use for development. Everything works as expected, except I do get that long vertical window on one of the Win10 machines. That’s a known Win10 issue that I fixed for v1 but somehow got lost in v2. However, you do not need that window to run the code. Here is the complete procedure for running RADAR v1 or v2.

First, just to be you’re starting clean, delete the files PDP-8.txt and PDP-8v2.txt from your Documents folder. You only need to do this once, not each time. The first time you run, all of the windows will open in the upper left corner of your desktop. Move and size as you like and those settings will be remembered.

  1. Run PDP-8.exe from the downloaded and unzipped Release folder.

  2. File->Load Listing. Select RADARX.LS downloaded from Docs. You should see the message “7275 Locations loaded”. If you see no message, something’s wrong.

  3. Enter 2000 in the SR box on the main window. Click Load Address, then Start.
    sr2000

  4. You should immediately see DATE? in TTY1 and OK, in TTY2.

If this doesn’t work there may be some localization setting that’s interfering, but that’s just a guess.

I’m now able to record synthetic radar data on simulated DECtape, and generate what we called a B-scan display, a cartesian picture of what is really polar data. RADAR used the two-color capability of the ASR38 to make simple iso-dbZ contours. Here is a display on the simulated ASR38 of a recorded scan. Note that the synthetic rain is off to the west (due west is azimuth 270), so the picture is upside down. It’s fun to watch the simulated DECtape drives spin.

I’ve got some more cleanup work to do before pushing the latest to GitHub.

1 Like

Still not working. On either version.
By default the PC is at 20. When entering 2000 at SR, the PC is at 200. I’ve tested PC at 20, 200, 2000 and 20000.
PC is running. I got some errors like
Illegal instr 6751 at 20002, and illegal instr 6771 at 44. I think latter one when starting OS8.
But no output at all, except when fresh loading OS8 from disk.
I have deleted the txt files.

The listing is loaded, but I think not displaying “7275” locations loaded. I think the bin conversion not working correctly. And no blinkenlights. Displaying the LS file using large amounts of memory (system unresponsive) but shows up after some seconds.

In getting RADAR to run, I had to figure out all of the IOT addresses that are executed. Between the Air Force and MIT, hardware interfaces using 19 IOT addresses were added to those that came from DEC. Each IOT address interprets the three control bits in the IOT instruction.

RADAR was the ultimate in non-portable software. There was exactly one physical machine in the world that would execute the code. There would never be another. There is enormous freedom in that–I could reach for the wire-wrap gun as easily as the keyboard. Enormous temptation to develop bad habits as well.

1 Like

Really unless you have family of similar computers I don’t think you can have portable.
Writing software to be easy to port is whole different concept .Back then IO was simple ( often with source) with tricky timing unlike today where secret binary DLL’s handle IO are the norm.

It now works. Thanks!
Somehow I have the LS file not as RAW but obviously downloaded as HTML.
I wasn’t sure about the format, it could be possible that this is eg a machine state file.
I wondered about the size.
Splitting and writing as BN now works.

I first had issues with ver 2.
By default PC is at 20 and SR at 20000.
When changing SR to 2000 and starting there’s an error illegal instr.

So It needs indeed clicking on load address. The PC then changes to 200 and runs.
I haven’t tried it out much yet.