I use Kyle Owen’s excellent SerialDisk software to run OS/8 on my PDP-8/e.
This page sets out my notes relating to the ongoing care and maintenance of my existing SerialDisk setup. It does not explain how to initially setup SerialDisk.
Note: I also have a separate webpage (not yet on WordPress) explaining how to initially setup SerialDisk on the Raspberry Pi. It’s on my laptop under Documents/Websites/SerialDisk.
Configuration information
I have 2 Raspberry Pi’s setup with Serial Disk.
RPi #4
- Raspberry Pi 2 Model B fitted with a WiFi dongle
- WLAN USB Dongle MAC ADDRESS is E8:4E:06:25:D5:DC
- ETH0 MAC address is B8:27:EB:AB:8B:13
- Hostname is rpi-sd
- WLAN USB Dongle IP address is 192.168.2.154 (assigned by DHCP)
- Login credentials for the RPi are: pi / raspberry.
RPi #5
- Raspberry Pi 2 Model B fitted with a WiFi dongle
- WLAN USB Dongle MAC ADDRESS is 00:1F:12:03:11:BD
- ETH0 MAC address is B8:27:EB:FF:4B:B1
- Hostname is rpi-sd-2
- WLAN USB Dongle IP address is 192.168.2.156 (assigned by DHCP)
- Login credentials for the RPi are: pi / raspberry.
For command-line access, connect to the RPi via SSH using PuTTY.
To copy files to/from the RPi, I use WinSCP.
Cautions and limitations – Please read !!
Although RK05 images are used by SerialDisk, OS/8 cannot “see” them as RK05 disks. SerialDisk relies on modifying the disk handlers so that it can read and write to these images.
The three disk images that I am using have been patched to use the “system handler” and “non-system handler” required for SerialDisk, using the instructions and handler code provided by Kyle Owen. Accordingly they will no longer work as RK05 images. These images however have not been “fully patched”, so commands like PIP and RESORC will apparently NOT work correctly. I hope to fix this in the near future.
OMNIBUS serial interface boards
A number of different serial boards can be used to connect the PDP-8/e to the SerialDisk Raspberry Pi. Keep in mind that you ideally want a fairly high baud rate (115,200 or higher) otherwise the delays waiting for sectors to be served up may become intolerable.
If you are having difficulty with any of these cards, it’s a good idea to use the well-known toggle-in programs to check ASCII output and echo test.
Here are my notes on the ones that I have used so far:
KL8-E (M8650)
This is a DEC RS232 and current loop interface board that contains only discrete ICs (no 40-pin UARTs etc).
Doug Jones has an excellent webpage explaining how to configure this board.
Depending on the crystal installed, the board is capable of the following baud rates. The first 2 crystals were fitted by DEC to different variants of the M8650. The third one was not:
- 14.418 MHz crystal: Useful for 110 baud only. Other baud rates are available with this crystal, but they are all non-standard
- 19.6608 MHz crystal: Supports all common/standard baud rates from 150 to 38,400, plus various non-standard baud rates including 76,800, 153,600 and 307,200. Doug Jones notes that at 307,200 the KL8E will be hitting the maximum speed (10 MHz) of the ICs
- 14.7456 MHz: By jumpering E22 pin 3 to jumper 9 of the baud-rate (“Group G”) jumper block, you can configure the KL8-E for 230,400 baud. This is what I use for SerialDisk
Things to check for on the M8650 when configuring it for SerialDisk:
- Doug Jones notes that the 0.47uF 35V electrolytic capacitor in the top left corner of the M8650 needs to be installed for 110 baud operation, but should be removed for higher baud rates
- 2 stop bits are needed for 110 baud on the Teletype, but 1 stop bit should be OK otherwise
- SerialDisk needs to be configured for device codes 40/41 (second TTY) rather than as 03/04 (console default)
When using a KL8-E configured for 38,400 or 230,400 baud and 1 stop bit, I do not recommend setting SerialDisk (on the RPi) for 1 stop bit (by putting 0 in the second line of the file disk.cfg). Twice this has resulted in my first disk image (SDA0) being corrupted on boot up. For some reason SerialDisk thinks that it is being asked to write to the disk image, rather than read from it. This is apparent from the SerialDisk status messages that appear on the RPi’s console display. By instead setting the number of stop bits to 2 on the RPi (by putting 1 in the second line of the file disk.cfg), I have had no further issues. I leave the KL8E set to 1 stop bit.
Philip’s USB interface (FPGA based)
– On Windows, need to click on advanced tab and enable VCP
– Don’t need to set a baud rate
– download his files
– include link to his site
– need to insulate 2 components on his PCB
Mal’s Omni-USB board
– Dipswitch settings
– Which version of software are we using
Toggle in tests
Here is a slightly modified version of well-know toggle-in tests, to check basic operation of the serial board at device code 40/41:
Console Print Test 0000 7001 0001 6416 (was 6046) 0002 6411 (was 6041) 0003 5002 0004 5000 Echo Test 0000 6402 (was 6032) 0001 6401 (was 6031) 0002 5001 0003 6406 (was 6036) 0004 6416 (was 6046) 0005 6411 (was 6041) 0006 5005 0007 5001
Disk images
SerialDisk can serve up 2 disk images, for a total of 4 devices. The first disk image is the “System Disk” and appears as devices SDA0 and SDB0. The second disk image is the “Second Disk” and appears as devices SDA1 and SDB1.
A collection of PDP-8 RK05 images is available here on David Gesswein’s website. I am making use of diagpack2.rk05 and disk-games-kermit.rk05. Click on the links shown here for a listing and description of the files on those images.
To use an RK05 image as the “System Disk” it must be modified (using the instructions provided by Kyle Owen) to install the “system handler” and the “non-system handler” necessary to make it work with SerialDisk. However, you can mount an un-modified RK05 image as the “Second Disk” in SerialDisk without needing to modify it.
I have fitted a 3-position switch to the RPi, wired to the GPIO pins, to select the disk images that are used by SerialDisk. The 3-way switch is read by the Python script /home/pi/startserialdisk.py. It is read only once (at startup), so changing the switch position once SerialDisk is running will have no effect.
The disk images served up by SerialDisk are as follows:
| Switch Position | System Disk (SDA0 & SDB0) |
Second Disk (SDA1 & SDB1) |
|---|---|---|
| 1 (top) | diagpack2.rk05 | scratch-pack.rk05 |
| 2 (centre) | diag-games-kermit.rk05 | scratch-pack.rk05 |
| 3 (bottom) | scratch-pack.rk05 | diag-games-kermit.rk05 |
The directory listing of the disk images is available below:
Useful commands
To view the name of the virtual disk file(s) served up by SerialDisk:
pi@rpi-sd:~ $ cat startserialdisk.py
To view the serial interface parameters used by SerialDisk:
pi@rpi-sd:~ $ cat os8diskserver/SerialDisk/server/disk.cfg
To view all USB devices that are connected to the RPi:
pi@rpi-sd:~ $ lsusb
To view available USB-to-RS232 interfaces:
pi@rpi-sd:~ $ ls -l /dev/*USB*
To view current USB-to-RS232 parameters:
pi@rpi-sd:~ $ stty -F /dev/ttyUSB0
To view the network settings and IP address of the WiFi adapter:
pi@rpi-sd:~ $ ifconfig wlan0
To view the wireless access points that are currently in range:
pi@rpi-sd:~ $ sudo iwlist wlan0 scan
To view the WiFi access points that the RPi will attempt to connect to:
pi@rpi-sd:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
To view the hostname currently in use by the RPi. This is useful if you want to access the RPi by hostname over SSH using PuTTY (but note that the RPi will need to have the samba package installed. See below for details about how to do this):
pi@rpi-sd:~ $ hostname
To change the hostname you need to edit two files. The first file should have just the hostname in it. The second file will have the hostname to the right of text that says “127.0.0.1” (the local loopback address). Here are the commands needed to edit the two files (use CTRL-X then Y to save and exit):
pi@rpi-sd:~ $ sudo nano /etc/hostname pi@rpi-sd:~ $ sudo nano /etc/hosts
To install samba, so that the RPi will be visible to a Windows machine using just the RPi’s hostname. Note that no configuration of samba is required for this to work:
pi@rpi-sd:~ $ sudo apt-get update pi@rpi-sd:~ $ sudo apt-get install samba