Welcome to Byte Hamr Labs.
This is where I keep notes on the stuff I build. Mostly things no one asked for. There’s a CPU made out of TTL chips, an FPGA card for the Apple IIe, a few old machines I’ve brought back to life, and a fair amount of software to go with it.

It’s not just hardware. One week I’m working on an instruction set or microcode. The next it’s a VHDL core rebuilt from the original datasheet, or Docker and CDK and whatever I’ve decided AWS should be doing for me this month. Sometimes it’s something dumb, like packaging an Intel 8008 with FuseSoC so you can talk to it over the network. I’m not sure why either, but it works.
Every project has a page that says what it is and where it’s at. Under that are dated build logs. The dead ends are in there too, since that’s usually where I learned something.
Right now I’m on: the UniDisk 3.5 controller, a replacement board for Apple’s 800K drive built around an RP2350. The hand-wired prototype boots ProDOS off a real floppy and daisy-chains with a stock UniDisk. The PCB, Disk Hamr, is laid out, a print of it fits in the case, and boards and parts are on order. DINO is off the breadboard and waiting on a PCB, power first. The IBM 5271 moves files to the Mac over Kermit at 115200, its Inboard 386, RAM and 387 all pass their tests, and it has Turbo C and MASM 6.00 on it for writing C and 386 assembly. The 5160 next to it just got an 8087.
Pick a project below, or follow the log stream and RSS if you want to watch it happen.
Hardware
- IBM 5160 and 3270 PC bring-up
Two Tektronix-surplus IBM XTs, a 5160 and a 5271, brought from untested to booting DOS 5 off their ST-251s.
- DINO
8-bit CPU from discrete 74-series logic on breadboards. 174-instruction microcoded ISA with add-with-carry, stack, CALL/RET and interrupts; executes from RAM, has a serial card and a ROM monitor, and runs SCELBAL BASIC.
- Tandy CoCo 3
Three Tandy Color Computer 3s, one with a Hitachi 6309, running NitrOS-9 off a CoCo SDC through a Multi-Pak, with a Speech/Sound Cartridge that talks only at slow speed.
- UniDisk 3.5 controller
A replacement controller board for the Apple UniDisk 3.5 (A2M2053): an RP2350 that talks SmartPort to the Apple IIe and drives the stock Sony 800K mechanism directly, skipping the undocumented Sony gate array.
- LiteX 8008 Node
The b8008 core inside a LiteX SoC on the ECP5-5G Versa, with its monitor console carried over UDP. make login from anywhere on the LAN lands you at the 8008 monitor prompt.
- Intel 8008 VHDL
Intel 8008 in VHDL, one module per box on Intel’s 1972 block diagram. Cycle-exact, runs on a Lattice ECP5-5G Versa, boots into SCELBI BASIC. Every module has a machine-checked proof or sweep in CI.
- Byte Hamr
Open-source ECP5-85F FPGA card for the Apple IIe: 64 MB SDRAM, SPI flash, USB and JTAG, 20-pin GPIO. Rev 2 runs a ProDOS block device, a Liron SmartPort controller, a soft 6502 coprocessor, and an Intel 8008 coprocessor with its own toolchain on the Apple.
- IBM PCjr
A $5 garage sale IBM PCjr, bare unit, being sized up for what it takes to get power, a keyboard and a monitor on it.
Software
- SigScope
SigScope: a native Mac front panel for the Siglent SDS1204X-E over USB, written in C++ and Qt 6. Knobs and lit buttons like the scope’s own panel, live traces, persistence, cursors and measurements.
- Apple IIe
A 128K Apple IIe with A2DVI video and ADTPro over serial, used mostly as a place to write 6502 in Merlin and try old toolchains on the real machine.
- Vim 5.8 for the IBM XT
Vim 5.8’s 16-bit DOS build revived with Open Watcom 2 for an 8088 at 4.77 MHz and 640K, with :make and swap-to-disk for :!.
Recent logs
- An 8087 in the 5160 The 5160 has an 8087 now, and two hand-assembled DEBUG tests show it initializes and puts pi in memory correctly.
- Kermit, the 387 and 256 KB of Inboard RAM The 5271 moves files to the Mac over Kermit at 115200, its A80387DX-25 passes Intel’s diagnostic, and a driver-free RAM test and Intel’s iNBRDPC.SYS both find 256 KB of extended memory with nothing bad. It has Turbo C 2.0, Turbo Debugger and MASM 6.00 on it now.
- Disk Hamr: printed, fitted, ordered A flat-bottomed print of the second layout goes into the case with the mechanism and the DB-19, the Gerbers go to PCBWay, the parts list goes to DigiKey with one substitution and the LED resistor read off the original board, and the assembly plan settles on a hot plate for everything but the Pico.
- Disk Hamr: laid out again, by hand this time Writing the bill of materials and checking the board against it, then a 3D print that put the mechanism header 11 mm off, sent the layout back for a second pass: placed by hand, re-routed with Freerouting, +5 as 1 mm traces instead of a pour, +12 on the back, the tab headers matching the original, and the original’s LED circuit traced.
- Disk Hamr: the PCB is routed The controller board is placed, routed and DRC clean: hand-routed once through an MCP bridge, then redone by Freerouting from a clean field and fixed up by hand, with +5 and ground pours, a +12 band, a name and a hammer on the silk, and a STEP out for the case fit.
- M8-M9: the daisy chain, once 5V reached the second drive My board and the working UniDisk share the Liron card in either order, a full 800K disk copied from my drive to the UniDisk boots, the whole rig runs off the IIe after a thin jumper had starved the UniDisk to 4.3 V, and disk swaps, write-protect, ejects and resets all behave like the original.
- M7.2: The rear DB-19, fitted with a 3D print The rear daisy-chain DB-19 is placed on the PCB, and a print holding the real connector fits the chassis and the case opening first time.
- M7.1: The PCB outline, fitted with a 3D print A 3D-printed copy of the new board outline lines up with both IF-83 mounting holes, so the PCB has a fixed shape to fit inside.