SerialDisk Operational Notes

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:

diagpack2.rk05: Side-A Side-B

diag-games-kermit.rk05: Side-A Side-B

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