# Exploring the PDP8

Oct. 11, 2018, 3:53 a.m.   wschaub   retrocomputing

I recently got pulled into a rabbit hole when I read an article about the PiDP8i project. I didn't have the money to get the real thing so this post will chronicle my experiences setting up a similar experience using the blinkenbone project instead.

Blinkenbone is a modified version of the SIMH project that provides a protocol to talk to either real or simulated front panels. it also includes java GUI front panels and ready to run software images for several different systems.

I was very surprised to see that my TOPS-10 image is included in the PDP-10 simulation.

However I was drawn to the PDP8i simulation instead. Blinkenbone is usable right out of the box but I wanted more software to play with so I found this projectto have a nice updated software environment for the PiDP8.

I downloaded and built it but did not install since I was only interested in the OS8 images and some of the other media contained within. (along with some of the cross build tools like palbart)

I copied what I was interested in into my pdp8i folder inside the extracted pre-built blinkenbone tarball.

you can find a copy of my stuff here

After about a week playing with the simulator like an obsessive compulsive madman I figured out that the step counter lights on the panel never lit up like I saw in videos of the real pidp8. I've submitted a pull request with a patch to the blinkenbone version of simh that fixes the problem for me.

The pull request includes a hastily hand assembled program to exercise the step counter. below is a more refined version assembled with palbart. Just load it into simh with load stepcounter.bin and then type run 100.

stepcounter.pal -- PAL compatible source code

stepcounter.bin -- BIN loader format paper tape image.

      / stepcounter.pal                                                   Page 1

1              / stepcounter.pal
2              / by William Schaub October 2018
3              / This program demonstrates incrementing the step counter
4              / on a properly equiped PDP8 with the
5              / KE8-E Extended arithmetic element.
6
7              / This is mainly a test case for blinkenbone's panel.
8              / If the SC lights do not light up then blinkenbone has not been patched.
9
10              //Tell PAL about some of the extended instructions.
11        7431  SWAB=   7431    /Switch to mode B
12        7747  SWBA=   7747    /Switch to mode A
13        7521  SWP=    7521    /Swap MQ and AC
14        7441  SCA=    7441    /STEP COUNTER TO AC
15        7403  ACS=    7403    /AC(7:11) TO SC; AC CLEARED
16
17
18        0100  *100                    / start addr
19 00100  7431  LOOP,  SWAB            / Set mode B this
20                                     /will cause AC to be deposited in MQ and AC to be cleard.
21 00101  7521         SWP             /Swap MQ back to accumulator
22 00102  7001         IAC             /Increment AC
23 00103  7403         ACS             /Save AC to SC
24 00104  7747         SWBA            /Switch back to mode A
25 00105  7641         SCA CLA         /Store contents of SC into AC
26 00106  4113         JMS DELAY
27 00107  4113         JMS DELAY
28 00110  4113         JMS DELAY
29 00111  4113         JMS DELAY
30 00112  5100         JMP LOOP        /continue
31              /delay loop routine.
32 00113  0000  DELAY, 0
33 00114  2123  D1,     ISZ V1
34 00115  5114          JMP D1
35 00116  2123  D2,     ISZ V1
36 00117  5116          JMP D2
37 00120  2123  D3,     ISZ V1
38 00121  5120          JMP D3
39 00122  5513          JMP I DELAY
40 00123  0001  V1, 1
41              $No detected errors No links generated  Until I wrote this I've only done a small amount of assembler for the 6809 cpu on the Tandy Color Computer. The PDP8 is radically different than the 6809 but I feel that learning 6809 assembly helped me out a lot while exploring the PDP8. So what is a step counter anyway? It appears to be part of an optional extension to the hardware that is described here and here. I also got a lot of help from this nice instruction set reference card here ## Using Pidp8 software with blinkenbone The stock blinkenbone already comes with a demo OS8 image. but I wanted more. The tangentsoft site already linked above has done a real labor of love and some exceptional engineering to produce a pristine OS8 image from original source tapes. They even went so far as to automate the build process with a special python class that can automate simh and interact with its console. In addition to OS8 there is a nice pre-built TSS8 image. this is all included in my google drive folder linked earlier in this document. In order to use their software I opted to download their source code and build it myself. Instead of installing it I just copied the OS images directly from the source tree into the blinkenbone pdp8i folder. from there I just needed to create some new simh configs and launch scripts that pointed to them. (If you're using windows the launch scripts will be batch files but the simh config will remain the same and you will edit the batch files in the same way to point to the new simh config file. all referenced files in the simh config should reside inside your existing pdp8i folder) ## pdp8i_empty.sh This file simply launches my "empty" simh config. it's a bit misleading because in reality it already has an OS8 rk05 image mounted on rk0 and includes commands to deposit the rim loader, bin loader and rk05 bootstrap into memory. It does not auto-boot however which allows me to do other things if I choose to. to boot you can either type boot rk0 at the simh prompt or load address 30 and press start on the console. The RIM loader and BIN loader works as you would expect it to in the DEC documentation (and other as a front panel toggling exercise probably not something you will be doing a lot. simh's load command supports both rim and bin formats and saves a lot of trouble in the long run. I also recommend looking into OS8's BOOT command as a nice time saver.) # Start a PDP-8/I executing OS/8 with ADVENTure game ./_launch.sh "blinkenbone.panelsim.panelsimPDP8I.PanelsimPDP8I_app" "--width 1580 --power 1" pdp8i pdp8_realcons empty.simh_pdp8 248-blinkenbone-simulated-pdp8i-panel  This is just a copy of the original launcher script that comes with blinkenbone. the empty.simh_pdp8 is the only part that has been changed. ## pdp8i/empty.simh_pdp8 This is the actual simh config described above it is meant to live inside the pdp8i folder inside your extracted blinkenbone release. You will want to copy v3d.rk05 from my google drive folder or from your own build (there's also a download available on the tangentsoft site, but the files are named somewhat differently, either way attach the rk05 image you choose in this file. One last note: reset all reset -p examine 0 dep pc 0  is just to blank the front panel after all those deposit commands so you start with a blank slate. echo on reset set cpu 32K set cpu noidle set throttle 1m set df disabled set tti 7b attach rk0 v3d.rk05 ;Add RIM loader to core dep 07755 7402 dep 07756 6014 dep 07757 6011 dep 07760 5357 dep 07761 6016 dep 07762 7106 dep 07763 7006 dep 07764 7510 dep 07765 5374 dep 07766 7006 dep 07767 6011 dep 07770 5367 dep 07771 6016 dep 07772 7420 dep 07773 3776 dep 07774 3376 dep 07775 5357 dep 07776 0000 ;Add disk bootstrap to core deposit 30 6743 deposit 31 5031 ;go ahead and load the binloader into core too load binloader.rim reset all reset -p examine 0 dep pc 0 set realcons host=localhost panel=PDP8I ; To operate the PiDP8 of Oscar Vermeulen on a RPi with hostname "raspberrypi": ; set realcons host=raspberrypi panel=PiDP8 ; We're running on a desktop PC with connection to localhost: max speed! set realcons interval=1 connect ; show realcons ; After booting OS/8, start ADVENTURE. ; See https://raymii.org/s/articles/Running_ADVENT-on-the-PDP-8-with-SIMH.html ; Wait 2M cycles after start, 100k between chars. ;send after=2000000,delay=100000,"VERSION\rDIR ADVENT.*\rR FRTS\rADVENT.LD\r\e" ;boot rk0 ; To start ADVENTURE: ; .R FRTS ;*ADVENT.LD ; <hit ESC> ; *$
; WELCOME TO ADVENTURE!!  WOULD YOU LIKE INSTRUCTIONS?


## TSS8

For TSS8 you want to copy the following files from the media folder from the extracted tangentsoft sources (this is also included in my google drive folder)

• media/tss8/tss8_init.bin
• media/tss8/tss8_rf.dsk

You will then want to have a new launcher script that points to a simh config that looks like this.

## pdp8i/tss8.simh_pdp8

echo on
reset
set cpu noidle
set throttle 1m
set rf enabled
set df disabled

attach rf tss8_rf.dsk
attach ttix 4000

set realcons host=localhost panel=PDP8I
; To operate the PiDP8 of Oscar Vermeulen on a RPi with hostname "raspberrypi":
; set realcons host=raspberrypi panel=PiDP8

; We're running on a desktop PC with connection to localhost: max speed!
set realcons interval=1 connect
; show realcons