Posted on May 11, 2005
BBC ITX B running Linux and also Repton via an emulator
About a year ago I decided my aging Apricot P90 required an update but wanted something different from a bog standard desktop. A colleague at work mentioned the Mini-ITX web site where I came across Neil Jansen's project - "Commodore ITX-64". Of course, being an Acorn user in the past, I knew I had to retaliate. Ideally the project had to be based on the BBC model B, which every one remembers from school, and look as much like the original as possible. Could a Mini ITX board, hard drive and power supply fit into the case of a Beeb leaving all the external connectors? I was determined that the project should be stealth - just like the Commodore.
The basis for the project was an old model B that had been partially stripped for parts. I ordered the new internals from the Mini-ITX online store - a 120W power supply kit, ME6000 board and 40GB hard drive. This would give me a fan-less design with enough power to allow me to connect an external DVD drive and floppy in the future.
I started by taking everything out, leaving just the case which was then cleaned up ready to be refitted. It took forever to figure out where to put everything. In the end the only way of fitting everything in was to try and fit the power supply where the old one was, the DC-DC converter on the far left of the main case area and the motherboard on the right with the connectors pointing to the left. The hard drive I could then mount above the power converter leaving space underneath for the connectors. I then had space down the back and front of the case for the original, external connectors.
The original connectors at the back of the case were removed from the old motherboard and re-soldered onto strip board. PCB headers were then soldered in place so that the cabling from the motherboard connectors could be attached more easily. The finished sockets were then bolted onto the nylon spacers I'd glued to the bottom of the case. The old UHF output module (for connecting to the television) was also bolted in although it is not currently in use.
The original front sockets (located under the keyboard) are all IDE connectors. For the moment I decided not to use these so just cut the front off the old mother board and screwed it back into place. In the near future I plan to wire up the Tube port to an IDE DVD drive which I'll hide away inside an old 5.25" floppy drive.
The output sockets are connected more or less according to their original function. The video out socket is connected to the RCA Video socket, the RGB is the VGA output, the RS422 is connected to the serial link and the Econet output is connected up to Ethernet. The analogue input is now used for the line out connection but the UHF output socket is currently unconnected. I have still got to connect the USB ports to either the cassette port output or the spare pins on the analogue in socket.
The keyboard was the most time consuming part of the project. I decided against a custom decoder like on the commodore because it would require EPROMS, etc. In the end I just used an existing keyboard controller wired into the B's own keyboard matrix. Anyone who has looked at the Beeb keyboard will know that some of the decoding and scanning circuitry is on the keyboard itself. First thing I did was take this off and cut the top right of the keyboard circuit board away. This prevented a useless bit of board sticking out into the case leaving more room for the motherboard and hard drive. I had to leave the top left of the circuit board alone because this is where the speaker is mounted. At this stage I also wired the BREAK key into the keyboard matrix. On the Beeb it's actually a separate switch connected to the reset line on the 6502 processor.
I then took my donor PS2 Keyboard and mapped out which keys connected which pins together on the decoder chip. This gave me a map of rows and columns against keys. I then had to assign each full column to a column on the B's keyboard. Fortunately, the B has 8 rows, the same as the PS2 matrix although it only has 10 columns. Next I cut the PS2 circuit board down to make it small enough to fit where the expansion ROM would have gone on the left hand side of the keyboard. Wires were then soldered between the decoder and Beeb keyboard as per the mappings already made.
I then connected the keyboard to a normal PC and used showkeys to give me a keycode for each key pressed. A new keymap file was then created and hey-presto a fully functioning BBC keyboard driving a normal PC. The strange B keys, namely BREAK, Copy and shift lock were mapped to F11 (I'd assigned F0 to F10), Alt and Num lock respectively.
The keyboard on the Beeb also had the speaker and the cassette motor, caps lock and shift lock LEDs attached to it. I connected the caps lock and num lock LED outputs from the keyboard decoder to the caps lock and shift lock LEDs on the B keyboard. The cassette motor LED and speaker were wired with the appropriate sockets to match the HDD LED and PC speaker motherboard connector pins.