vrijdag 25 oktober 2019

PiDP8 - A replica of the PDP-8/i



Actually, this is neither 8 nor 16 bits. It's the 12 bits PDP-8. Or even more specific: the PiDP-8 replica of the PDP-8, created by Oscar Vermeulen of Obsolescence Guaranteed.

It's sold as a kit, but they are only produced in batches when there is enough interest. I waited a few months after entering my name on the e-mail list. It comes as a bag of components and switches, a huge PCB, a front panel and some wooden parts. The computer core is a Raspberry Pi (not included).
One of the first problems I was faced with was how to check if everything actually works. When you just start the unit, and  the Raspberry Pi runs the SIMH software there will be some blinking LEDs, and it will probably react to switches but it's very hard to find out if all switches are really working, or if all LEDs will light up if required. So I Googled and found a pidp_test program by Paul R. Bernhard: http://downspout.ca/pidp-test.zip.
After downloading and Unzipping you can build the actual program using the 'sudo make' command:

pdp@pidp8:~/usbdrv$ sudo make

After a successful build it can be started with 

pdp@pidp8:~/usbdrv$ sudo ./pidp-test

 

pdp@pidp8:~$ cd usbdrv
pdp@pidp8:~/usbdrv$ ls
main.c  Makefile 



Power on the unit with the ' STOP'  button pressed. This will boot the Pi, but not start the PDP simulator. 

Some quick tips to get started.

The manual for OS8 V3D (the version used in the simulator) can be found on the DEC section of the 'bitsavers.org'site

Setting the date.
The date can be set using the 'DATE' or 'DA' command. It requires the date in the format dd-mon-yy. So the month should be spelled in it's three letter abbreviated form, and the field must be separated by dashes.  Oh, and the year must be between 1970 and 1999...No year 2000 problem for the PDP-8.

.DA 21-NOV-16
BAD DATE
.DA 21-NOV-78
.DA
TUESDAY NOVEMBER 21, 1978



Some good instructions on how to toggle a program are available on the RETROCMP site.

The site of Big Dan the Blogging Man has an excellent series of examples and step by step instructions on writing, assembling and running software on the PDP-8. Not everything seems to work as described though. Probably there are some differences in running the pure SIMH simulator and how it is implemented on the PiDP-8.
He describes how to enter, compile and start a simple program under OS/8. All steps as described work fine on the PiDP-8, except the running itself.

I've tried this program (from the DustyOldComputers site):
 
loop, 
isz   delay  / create a delay
jmp   loop
cla          / clear AC so we can load it
tad   value  / get value
mql          / stash AC into MQ
tad   value  / fetch value again
cma          / complement AC
isz   value  / get to next value
nop          / ignore possible "skip" from ISZ
jmp   loop   / and do it all again
delay, 0020
value, 0021

I saved it as 'BLINKR', and then compiled it using the following command:

.PAL BLINKR-LS

Which is a shortcut for  'PAL BLINKR,BLINKR<BLINKR/H', and way easier to type...
This creates the BLINKR.LS file which can be viewed by typing: TYPE BLINKR.LS

loop,  0000 2020 isz   delay  / create a delay
       0001 5000 jmp   loop
       0002 7200 cla          / clear AC so we can load it
       0003 1021 tad   value  / get value
       0004 7421 mql          / stash AC into MQ
       0005 1021 tad   value  / fetch value again
       0006 7040 cma          / complement AC
       0007 2021 isz   value  / get to next value
       0010 7000 nop          / ignore possible "skip" from ISZ
       0011 5000 jmp   loop   / and do it all again
delay, 0020
value, 0021


When you type 'LOAD PROG', followed by 'START' it will not work. Somehow the program gets loaded but is immediately overwritten by OS/8. Something you can see by exiting the emulator (Ctrl-E) and type 'ex 000-010'to examine the contents of the memory. None of the just loaded instructions are there. It will only work if you use the  'LOAD PROG/G' which starts the program immediately after loading.
The reason for this is explained by Rick Murphy on the forum:

If you return to OS/8 using a JMP to 7600, your program contents from location 0 to 1777 are saved to dedicated blocks on the system disk, then overwritten by the keyboard monitor. Those will be restored if you run certain commands.
If you halt and examine that memory space while OS/8 is at the "." prompt you're actually viewing the KBM.