Program is hand compiled as machine code hex listings and entered location by location into EPROM (erasable programmable read only memory) usually starting at address oooo hex.
If mistake is made; 10 minutes under a suitable UV lamp will erase the device and return it to an unprogrammed state.
I wrote and compiled many software listings and programmed using this device and had lots of success!
Unit was made mostly from re-cycled componentry, somewhat ugly but worked great.
Among many others, I programmed the RTTY decoder and POTS ring generator Mk2 shown elsewhere on this site.

Description of circuit

A 16 key keypad is scanned thus: IC2a is a free running oscillator of approx 300 Hz which feeds a 4060 ripple counter/divider.
The BCD coded output of the 4060 connects to IC1 (74150)- a 16 line multiplexer.
If a key is pressed the logic 0 'plexed' to the output; gates off the oscillator
The BCD weighted nybble on IC3's pins represents the 'key' depressed.
Additionally the changing of IC1's o/p transfers a clocking pulse delayed by IC2b and IC2c to a cascaded pair of 7475 4 bit latch's IC4a & IC4b.
The action of these latch's is to retain an 8 bit byte (2 of 4 bit nybbles) at the output pins - which represents the data to be programmed into the EPROM at a single unique address.
This 'byte' is then buffered through to IC7's output, (an 8 bit octal/tri-state buffer) which is connected to the EPROM data lines when in the "write" configuration.
The data byte also appears on the led display, which consists of two 4-led vertical columns:
(Its easy to read once you get used to it!)
Conversley when in the "read" mode, the LED's indicate the contents of the addressed memory location.
"Naked" unprogrammed (or erased) eprom's show their contents as FF or all bits "high"
IC7 (4040) is a ripple counter which increments its output with each press of the "ADD" key.
The keystroke is debounced by the RC combination and IC6a
IC6b and associated RC provide a key repeat if the ADD key is held down.
Programming usually commences sequentially from location address 0000 Depressing "RESET" returns the address counter to 0000
The "READ" key toggles IC8 a 'D' type flip-flop and alternates the circuitry between the 'program/burn' mode and the the 'read/verify' mode.
When in program mode an LED inside the keytop is illuminated.
When in this mode a press of the "BURN" key will program the addressed location in the EPROM.
The burn key triggers IC9; a 555 monstable-multivibrator. A 50 mS programming pulse "burns" the data into the eprom memory location. Only one key-press is permitted.
As a number of popular EPROM's are available; the ability of this circuit to handle several types was desirable.
This was acheived by use of a "personality" plug .
The idea of this is that the plug wiring is configured to route programming voltages/pulses etc to the correct eprom pins, in accordance with the device specification.
Consulting the manufacturers data sheet and specs allows you to configure a plug to suit each type of eprom device.
The table below illustrates

TYPE Pin Function Read Disable Powerdown Program Verify
2516 18 PD/PGM 0V - +5V pulse to +5v 0V
EPROM 19 A10 - - - - -
2K x 8 20 CS 0V +5V - +5V 0V
21 Vpp +5V +5V +5V +25V +5V or +25V
2716 18 CE 0V +5V N/A pulse to +5v 0V
EPROM 19 A10 - - N/A - -
2K x 8 20 OE 0V - N/A +5V 0V
21 Vpp +5V +5V N/A +25V +25V
2532 18 A11 - - - - -
EPROM 19 A10 - - - - -
4K x 8 20 PD/PGM 0V +5V +5V pulse to 0V 0V
Texas Instruments 21 Vpp +5V +5V +5V +25V +5V
2732 18 CE 0V +5V +5V 0V 0V
EPROM 19 A10 - - - - -
4K x 8 20 OE/Vpp 0V - - pulse to 25V 0V
21 A11 - - - - -
An 'A' subscript indicates +21V in lieu of +25V programming voltage.
The type 6116 is a static ram pin compatible with the 2716 EPROM except pin 21 is 'write'