As an alternative to Willem programmers and the budget USB designs, I've put together a EPROM programmer that can be built on a breadboard using an Arduino and a few additional parts that you probably already have in your parts bin. It isn't meant for production use, but can be a handy way to go for one-off device programming for projects. It was originally created for a 28C256 EEPROM, but the design has since been adapted to also do Intel 8755A EPROMs. The software is modular and can be extended to other chip families as well. I've used it to read 2764, 27C040, and 27C2001 chips.

No programmer-specific client code is needed. Instead, it uses the Arduino USB to talk to a terminal program like TeraTerm or minicom to send ROM images using XMODEM. The interface resembles a ROM monitor, with display, checksum, and other commands.

The hardware and software can be found here:

I hope to extend the built-in code to support writing of 27 series EPROMs next.