bobeager.uk Projects

This page is intended to show projects that I have played with (and possibly completed). Currently, these are:

PiDP-8 (PDP-8/I replica)

The Digital Equipment Corporation (DEC) produced a series of computers (originally called Programmed Data Processors). The early ones were named as PDP- followed by various numbers.

To me, one of the most interesting was the PDP-8, a machine using a 12-bit word (no bytes). It had a mere 3 bits to specify an instruction, and a maximum of 32k words of memory. It was originally produced using discrete logic; this was superseded by an integrated circuit version using logic circuits with just a few gates per chip. The first IC model was the PDP-8/I.

A distinguishing feature of the PDP-8/I was the large number of indicator lights, that showed a great deal of what was going on - at quite a low level. The machine had only eight basic opcodes, and eight indicators were dedicated to showing the opcode of the current instruction! Others showed instruction phases, and of course some showed the contents of the accumulator, memory address register and so on (other models used fewer lights, and used a rotary switch to select what was displayed).

A kit (PCB, case, LEDs and other parts) was available to build a replica PDP-8/I. This was realised by using a Raspberry Pi running emulator software, with the GPIO interface being used to drive the lights, read keyswitches and so on. I built one of these; pictures below. The worst part was soldering 89 LEDs, and 26 switches! It includes a number of different boot options; console access can be via the Raspberry Pi's serial port, but I decided that it would be neater to access the PiDP-8 console using ssh over wi-fi.

The Raspberry Pi in the PiDP-8 runs a version of Linux, but I am looking into replacing that with FreeBSD, as that would be easier for me to maintain. To do this, some of the emulator code will need to be rewritten so that it uses the FreeBSD model for access to the GPIO bus. There is some clever multiplexing which is used to drive all of the LEDs from a limited number of GPIO pins (as well as sampling the switches), so I will need to replicate that.


Basic pidp-8 board, front
Front of the circuit board, with switches, LEDs, etc.
Basic pidp-8 board, rear
Rear of the circuit board, including the Raspberry Pi. The wood is used to mount the board into the case!
Completed pidp-8
The completed PiDP-8 on the bench.

SBC6120 (PDP-8 replica)

As noted above (but repeated here) the Digital Equipment Corporation (DEC) produced a series of computers (originally called Programmed Data Processors). The early ones were named as PDP- followed by various numbers.

As stated above, one of the most interesting was the PDP-8, a machine using a 12-bit word (no bytes). It had a mere 3 bits to specify an instruction, and a maximum of 32k words of memory. It was originally produced using discrete logic; this was superseded by an integrated circuit version using logic circuits with just a few gates per chip. Eventually, an entire PDP-8 CPU appeared in a single chip, the Intersil/Harris 6100, with a later version being the 6120.

A kit (PCB and difficult-to-obtain chips) was available to build a single board PDP-8 using the Harris 6120; this was called the SBC6120. I built one of these; pictures below. It includes a ROM monitor for booting, testing, etc. I later burned custom ROMs that worked better for me.


Basic SBC6120 interior
Interior of the basic SBC6120. The small board is for power isolation and testing.

Another view of the basic SBC6120
Another view of the basic SBC6120. This shows the power connector on the rear panel, and the DE9 connector for the serial (console) port.

I later built a second one, this time with a silk screened front panel, LEDs and switches. I put it in a basic wooden case. The DE9 console connector, and the power sockets, are mounted in a plate on the side. The rear panel is attached with magnets, to make it easy for enthusiasts to look inside! A picture follows.


The SBC6120 with front panel
A view of the enhanced SBC6120, including front panel, LEDs and switches.

Both of these machines use a Compact Flash card as multiple 2MB hard disks, and will run the disk operating system known as OS/8. They can compile and run programs in various languages, including BASIC, FOCAL and FORTRAN.

Voice over IP PBX

One of the most useful projects was the Voice over IP PBX (Private Branch Exchange). This is a mini telephone exchange, within the house. The house is large and slightly rambling, so an internal phone system is very useful. Of course, all phones also work externally as well, so phone calls can be made from almost any room.

The PBX is based on an HP microserver, an inexpensive, small, low power PC. The underlying software is the open source Asterisk system, running on the FreeBSD operating system (not Linux).


An HP microserver
An HP microserver

The system is connected to the normal POTS telephone system via a LinkSys/Cisco SPA3102 ATA, which provides the necessary FXO port, as well as an FXS port that is used for an external bell.


An SPA3102 An SPA3102
An SPA3102

All of the actual phones are of course IP phones. Most are LinkSys/Cisco SPA303 models, with two being the smaller SPA301. These all plug directly into the house gigabit network.


An SPA301 An SPA303
An SPA301 phone (left) and an SPA303 (right)

For the history of telephone systems in the house, see my presentation on the subject.

Doorbell

The house is big, and it has a strange layout. This means that it isn't possible reliably to hear a knock at the door everywhere in the house. It certainly can't be heard in the garden. One option that was considered was a pair of cord-operated butlers' bells, with the cords tied together - but that would only have been a partial solution.

It was decided to harness the house PBX. The solution adopted was as follows:

  • There is a conventional doorbell push button, that matches the door furniture. This just closes a single wire circuit. It is linked (via a flexible wire coupling since it is mounted on the door) to a wiring centre adjacent to the PBX machine.
  • The pair of wires is connected to a digital input on an Arduino microcontroller. When the bell is pushed, this causes the input to change, and this is detected by the program running in the Arduino. The program then sends a prearranged signal along a USB cable connected to the PBX.
  • There is a 'listener' process in the PBX, waiting for the signal from the Arduino. When it is detected, a call is immediately queued to a special extension number. This causes all of the phones in the house to ring. A special cadence is used, very different from that used by normal phone calls.
  • The calls can be 'hushed' in selected bedrooms for a selected time. This allows younger occupants of the house to do so when they have ordered a late night takeaway delivery.
  • Special 'star'codes can be used to enable and disable the (normally silent) conventional bell in the garden. This is automatically disabled in the evening for the sake of the neighbours.

The bell used in the garden
The bell used in the garden

Valid XHTML 1.0! Valid CSS!

This site is copyright © 2019 Bob Eager
Last updated: 06 Dec 2019