• Please review our updated Terms and Rules here

PDP-8 Ramblings

Slowly making progress on the SIMH stuff. Got CJL's "whatami.pa" returning reasonable answers now. Still have some 70+ unresolved issues to work on, though. Here are a couple of the harder ones:

What should be done to implement the enormous switch panel? The LINC-8 emulation, in particular, seems to want to provide the PDP-8 CPU with access to practically every switch on the panel.

What should I do with the emulation for relay outputs, digital input/outputs, and the A-D stuff?

Too much "fun".

Vince
----
PDP-8 simulator V4.0-0 Current git commit id: b8015349+uncommitted-changes
CPU idle disabled
32KW, EAE, pdp12

THIS PROGRAM IS RUNNING ON A PDP-12.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp5


THIS PROGRAM IS RUNNING ON A PDP-5.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp8s


THIS PROGRAM IS RUNNING ON A PDP-8/S.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp8


THIS PROGRAM IS RUNNING ON A PDP-8.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, linc8


THIS PROGRAM IS RUNNING ON A LINC-8.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp8l


THIS PROGRAM IS RUNNING ON A PDP-8/L.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp8i


THIS PROGRAM IS RUNNING ON A PDP-8/I.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp12


THIS PROGRAM IS RUNNING ON A PDP-12.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp8e


THIS PROGRAM IS RUNNING ON A PDP-8/E OR SIMILAR MODEL.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp8a


THIS PROGRAM IS RUNNING ON A PDP-8/A.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, vt78


THIS PROGRAM IS RUNNING ON A 6100 CHIP-BASED MACHINE.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, decmate1


THIS PROGRAM IS RUNNING ON A DECMATE.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, decmate2


THIS PROGRAM IS RUNNING ON A DECMATE.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, decmate3


THIS PROGRAM IS RUNNING ON A DECMATE.
Breakpoint, PC: 07600 (AND 0)
CPU idle disabled
32KW, EAE, pdp12


THIS PROGRAM IS RUNNING ON A PDP-12.
Breakpoint, PC: 07600 (AND 0)
sim>
 
It's less impressive than it looks. Mostly the PDP-8 quirks are done, except for the bit about references to non-existent memory. The LINC emulation isn't really even limping yet. COM works, but anything with an effective address doesn't. I set up maindec-12-d0ab, and it switches to LINC mode, tries to do "LDA I; 7777", and crashes the simulation. So, more work ahead :-/.

Vince
 
The LINC emulation isn't really even limping yet.
Well, I guess it's officially limping now. Passes 12-D0AB, which checks a variety of LINC instructions in the first 4K. The code as written will almost surely not run LINC code residing above 4K yet, and there are still a couple more diagnostics to pass. In there somewhere I expect to get all bogged down trying to emulate I/O devices.

The PDP-12 has the VR14 display, so I may end up adding the infrastructure to do something similar to Ian's VC8E emulation too.

My plan is to not sweat the LINC-8, the VT78, or the DECmates at this time. (I can instead edit the table to prevent setting those modes.)

I figure if it can do the "family of 8" and the PDP-12, it should still be a useful thing. Plenty (too much, really) left to do, even then.

Vince
 
How have you characterized the differences between the Family of 8 minicomputers? Mostly from CJL's notes from his whatami.pa program? Excellent work. I remain impressed. You are no doubt the first person with a LINC simulator!
 
Well, some of it is from memory, but really a lot of it is from the web version of Doug Jones' "Models and Options" paper:
which has excellent "Compatibility" sections about the various models.

The LINC simulator is currently failing the 12-D0BA indexing tests for the halfword loads and stores.

12-D0BA is interesting because it's the first diagnostic I've worked with that doesn't have a PDP-8 program that invokes the LINC code -- it starts in LINC mode, and stays there, only switching to PDP8 mode long enough to do an occasional PDP-8 IOT.

Vince
 
Build an RX01 interface for Posibus! :)
Ah. I've made a couple efforts in that direction, though I can't say that any of are working yet. (Still need to test the later ones.)

There was a nice where someone did it in a TC08 backplane and with the help of an RX8E:
He doesn't seem to have a link to the old project page, but the PDF gives the idea.

ISTR that when I looked into it, I decided he'd cheated a bit and brought out a timing signal from the CPU. I also have an untested notion for a work-around for that, somewhere.

Vince
 
Hm. This shattered backplane I have has a total of six 4*2 sockets on it. That might be enough to make one of these. Granted I'll probably have to use the M111 and other logic I have on hand to build those gates and use the 3d printer to make a new frame for it, but shouldn't be totally impossible.

Hm. Wonder where I can get an RX8 board....
 
Well, I'll keep this in the back of my head until I find a BA08. It would probably require more boards to implement CIF/CDF for a MOS memory board. Maybe
 
Passes 12-D0AB, which checks a variety of LINC instructions in the first 4K.
I (finally) got the SIMH PDP-12 emulation to pass 12-D0BA. I got stuck for quite a while there trying to understand why the MUL simulation (written in LINC code as part of the diagnostic and used to check the MUL results) didn't work. Turns out the LINC "ADD" instruction doesn't involve the LINK bit like TAD does. LINK is undisturbed, even when end-around carry occurs.

There were a number of other bugs, too, but that one was the worst.

Next up is to have a look at running 12-D0CB.

Vince
 
There was a nice where someone did it in a TC08 backplane and with the help of an RX8E:
https://www.hb9aik.ch/computer/RX8_8I.pdf He doesn't seem to have a link to the old project page, but the PDF gives the idea.
This installation is now located at "Computermuseum Stuttgart" in Germany. The PDP8/I is not in working condition at the moment. Maybe later this year I will visit it and will be able to take some fotos of this.

Volker
 
Secretly Vince is flirting with the LINC instead of the PDP8 :)
It does feel like that recently. The third diagnostic is all about traps, interrupts, memory management, etc. So I'm sure I've got my work cut out for me, trying to understand it all.

It is helping me understand how the PDP-8 ended up as it is, though. Some of the PDP-8 software, like P?S8, COS, etc. seems to flow from the LINC tradition. I've come to realize that a pile of work was done that wasn't OS/8, and is relatively unknown.

The LINC the LINC-8 were, for a time, amazingly affordable "personal use" machines. The PDP-12 perhaps less so, as the PDP-8 began to routinely have more I/O. The PDP-12 was/is still a nice standardized package for a very capable system, though.

Vince
 
I (finally) got the SIMH PDP-12 emulation to pass 12-D0BA.
And now 12-D0CB. So the emulation traps, interrupts, memory management, etc. are all there now.

There's some weird kludge in the LINC CP that makes far calls work by delaying interrupts until after the *second* branch after a LIF instruction (like CIF, sort of), not the first. I had to learn a little more than I wanted about CIF interrupt inhibit to get that working.

The SF register is also quite different in LINC mode, and for a bit there I was saving SF in LINC format, but restoring it in PDP-8 format. Which (coincidentally) mostly worked, but when I got back I was in user mode. The code was then later spinning forever in a "TSF; JMP .-1" (because the TSF is a NOP in user mode unless interrrupts are enabled).

The main remaining issues have to do with the fact that the I/O devices normally present on a -12 are quite different than on an 8/E (or even an 8/I).

Vince
 
Woo hoo! Excellent work, Vince. You're putting me to shame, as I've done nothing to further my dream of a Verilog implementation of the PDP-12!
 
Technically, it is passing the D0CB tests for a PDP-12B or PDP-12C. The PDP-12A is expected to pass additional tests about character size, fast sample mode and stuff, which presumably the lesser models can't do.

Vince
 
OK, I think I've got the PDP-12 SIMH passing the VC12/VR14 test. Which also means it draws the primitive graphics. There seems to be some misleading documentation in the PDP-12 manual, but when I made DSC work like the LINC display the diagnostic displays the right stuff. One limitation is that I don't have the "channel" stuff working -- it always displays as if the knob is set for both channels. Color (VR20) is also not supported.

Character size also works now, but fast sample still doesn't do anything. LINCtape is the next major hurdle.

Vince
 
Back
Top