From what
I've seen in the spec sheets, one would just use
 a slightly modified 2716 socket of any machine. A few lines
 of code should be enough. No special voltages, just special
 sequences. All easily handled in software. 
 My recollection is that the 2716 needs something like 21V or 26V on
 the programming pin.  As for a modified socket, I have an old "Z-80
 Starter Kit" SBC that happens to have a built-in EPROM programmer on
 one of the three ROM sockets.  There's a toggle switch to disconnect
 the programming voltage, but once enabled, you simply write to the
 address range of that EPROM socket, and after the data are presented
 to the ROM, the circuit wiggles the programming pin to write the
 EPROM.
 It would not be difficult, in principle, to add this feature to, say,
 one of the empty ROM sockets on a PET, especially if you had an
 external benchtop power supply injecting the programming voltage
 (rather than generating it inside the PET housing). 
 
It's not *quite* that simple - for the standard (slow) algorithm, you
need to hold the data/select for an extended period of time - IIRC
something line 50us. Normal selects won't last long enough, although
one could construct a wait generator that would do it. If you can hang
a socket off parallel I/O ports, you can do it no problem.
For faster algorithms, you typically run the VCC rail at a higher than
normal voltage to raise the threshold of the internal comparitors, then
hit it with shorter (but still long in terms of a normal access) pulses,
checking in between each one to see if it's progammed.
--
dave06a (at)    Dave Dunfield
dunfield (dot)  Firmware development services & tools: 
www.dunfield.com
com             Collector of vintage computing equipment:
                
http://www.classiccmp.org/dunfield/index.html