First attempt with the EP-1 programmer

Finally got this thing working.
Funny story – I actually had one of these in storage, but it was cheaper just to buy a new one than to rent a zip-car and make a special trip just for this one piece.  So now I have two BP Microsystems EP-1 programmers…

Here’s the Manual
UPDATE: Thanks to John Spina on the Vintage Test Equipment group for pointing me to the original software and firmware updates.

UPDATE:  Thanks to Rodger Whitaker for pointing out this modern USB programmer from Batronix that supports older chips. ~200 euro.  Not cheap, but not as expensive as I expected.

I was able to use in OSX to connect to my old Radio Shack USB-serial adapter, which I couldn’t get to work on my Win10 box.  The programmer doesn’t need any additional software, it serves up it’s interface over the serial port.  It automatically detects the baud rate, up to 38,400.
To read a chip:

  1. ‘C’ brings up a menu to select the chip by make then model
  2. ‘PROTO’ lets you select the protocol – I had success using XMODEM.
  3. ‘RH’ reads a hex file – it will send the file once you initiate an XMODEM receive via the terminal emulator

Some other useful commands:

  • STAT – lists the current baud rate, firmware, selected chip type, and protocol.  It also has the phone number for BP Microsystems, which is still in business, and still has the same number (contrats guys!)
  • LIST – shows the contents of the chip, with a familiar hex viewer layout
  • BLANK – confirms that the ship is blank (all FFs)

There are also a number of commands for reading files in different formats (Intel, hex, Motorola, and Tektronix (?)), manually programming segments of a chip

Programming a chip:
This is where I’m getting stuck.  I’ve already incorrectly programmed one chip with a single character.  I have to find the correct combination of protocol and upload settings.
OK, I’ve got a bunch of EPROMs I can try programming once before my eraser shows up.

Attempt 1:
Set programmer for XMODEM,
Set transfer for XMODEM, no 1K block size
Appears to work correctly, but then I get the following:
Bytes received; 6 hex file errors;
1 bytes programmed correctly, no errors.
Only the first byte is programmed, and not even the correct one.

Attempt 2:
Same as above, but convert to HEX file first.
Appears to be working correctly, and takes a lot longer.
Appears to work correctly, reports:
00 Bytes received;
2000 bytes programmed correctly; No errors.
2000h = 8kB, so that’s promising.

I used this site to make the bin to hex conversion (would love to find an offline solution) What worked for me was no delimiters, but newlines every 16 bytes.

When we read it back and diff with the original, we get a file that’s 1kB larger, and seems to have carriage returns (0x0D) every 32 characters.  I can’t tell if this is a readback error, or a programming error.
It’s a read-back error.  Using ‘RB’ gets the file back in straight binary, and comparing it to the original file from the wiki I used to burn it from shows no errors.

SO: Even though the programmer can send us back binary files, we have to send it hex files.  Lesson learned!

Supported Chips

If anyone is interested, here’s a complete list that the programmer spits out with the ‘PARTS’ command:

8753H *1B,C 8751H *1B,C 87C51 *1C Am27128
Am27128A Am2716 Am27256 Am2732
Am2732A Am2732B Am27512 Am2764
Am2764A Am27C128D Am27C128P Am27C256
Am27C512 Am27C64D Am27C64P Am2817A
Am2864A Am2864AE Am2864B Am2864BE
Am28C256 Am9716 Am9761H *1B,C Am9864

AT27C128 AT27C256 AT27C256R AT27C512
AT27C512R AT27C513 AT27C515 AT27HC256
AT27HC256L AT27HC64 AT27HC641 AT27HC64L
AT28C04 AT28C04E AT28C04F AT28C16
AT28C16E AT28C16F AT28C17 AT28C17E
AT28C17F AT28C256 AT28C256E AT28C256F
AT28C256E AT28C64 AT28C64E AT28C64F
AT28C64X AT28HC16 AT28HC16L AT28HC16L
AT28HC191 AT28HC191L AT28HC256 AT28HC256E
AT28HC256F AT28HC256L AT28HC256LE AT28HC291
AT28HC291L AT28HC64 AT28HC64E AT28HC64L

8014 8020 8023

CAT27128A CAT27256 CAT27512 CAT2764A
CAT27HC256 CAT28C16A CAT28C17A CAT28C256

Dallas Semiconductor
DPV27C256 DPV27C512

Electronic Arrays

XLS2804A XLS2816A XLS2817A XLS2864A
XLS2865A XLM46C15 XLM46C16 XLM46P15
XLM46P16 XLS46C15 XLS46C16 XLS46P15

MBL8742H *1A MBL8749H *1A MBL8749N *1A MBM27128
MBM27128-X MBM2716 MBM2716H MBM27256
MBM27256-W MBM27256-X MBM2732 MBM2732A
MBM2764 MBM27C128 MBM27C128P MBM27C256
MBM27C256A MBM27C256A-W MBM27C256AP MBM27C256H
MBM27C512 MBM27C512P MBM27C64 MBM27C64-W
MBM27C64-X MBM28C64 MBM28C65 MBM83256

27011 (12.5V) 27128 (21V) 27128A (12.5V) 2716 (25V)
27256 (12.5V) 2732 (25V) 2732A (21V) 2732B (12.5V)
27512 (12.5V) 2764 (21V) 2764A (12.5V) 27C128 (21V)
27C16 (25V) 27C256 (12.5V) 27C32 (25V) 27C512 (12.5V)
27C64 (21V)

General Instrument
27256 27C128 27C256 27C512
27C513 27C64 27HC64 27HC64L
28C04 28C16 28C17 28C64
28CP256 28CP256A 28CP256B

GR27128 GR27256 GR27512 GR27513
GR2764 GR281 GR881 GR3281

HN27128A HN27128AG HN27128AP HN27256
HN27256G HN27256P HN27512 HN27512G
HN27512P HN27C256 HN27C256FP HN27C256G
HN27C256HG HN27C64 HN462532 HN462716
HN462732 HN4827128 HN482732A HN482764
HN58064 HN58C65 HN58C66P

HY2764 HY27C64

IDT78C16A IDT78C256A IDT78C64A IDT78M64

27011 27128 27128A 27128B
2716 27256 2732 2732A
27512 27513 2758 2764
2764A 27C128 27C256 27C512
27C64 2816A 2817A 2864
2864A 68C257 8041A *1A 8042 *1A
8048AH *1A 8049AH *1A 8050AH *1A 8741A *1A
8741AH *1A 8742 *1A 8742AH *1A 8744H *1B,C
8748 *1A 8748H *1A 8749H *1A 8751H *1B,C
8755A *1A 87C256 87C257 87C51 *1C
87C64 P27128A P27128B P27256
P27512 P27513 P2764A P27C128
P27C256 P27C64

Microchip Technology
27256 27C128 27C256 27C512
27C513 27C64 27HC256 27HC256L
27HC64 28C04 28C04F 28C16
28C17 28C64 28C64A 28C64AF
28C64AX 28C256 28CP256

MX27C256 MX27C64

M5L27128K M5L27128K-I M5L27256K M5L27256K-I
M5L2732 M5L27512K M5L2764K M5M27128P
M5M27256P M5M27512P M5M2764P M5M27C128K
M5M27C256K M5M27C256AK M5M27C256P M5M27C512AK
M5M27C512AP M5M28C64AP M5M28C64P

ET2716 ETC2716 ETC2732 MK2716
MK2764 MK38XXX

MCM2532 MCM2716 MCM68764 MCM68766

MM2716 MM2716E MM2758-A MM2758-B
NMC2732 NMC27C128B NMC27C128BQ NMC27C128BN
NMC27C128C NMC27C128CQ NMC27C16 NMC27C16H
NMC27C16HQ NMC27C16Q NMC27C256 NMC27C256Q
NMC27C256B NMC27C256BN NMC27C256BQ NMC27C32
NMC27C32H NMC27C512 NMC27C512A NMC27C512AN
NMC27C512AQ NMC27C64 NMC27C64N NMC27C64Q
NMC27CP128Q NMC9817 NMC98C64A

8748HD *1A uPD27128 uPD2716 uPD27256
uPD2732 uPD2732A uPD2764 uPD27C256
uPD27C256A uPD27C512 uPD27C64 uPD28C04
uPD28C05 uPD28C64

MSM27128A MSM27128AS MSM27128AZB-RS MSM2716
MSM27256 MSM27256AS MSM27256ZB-RS MSM2732
MSM2732A MSM27512 MSM27512AS MSM27512ZB-RS
MSM2764 MSM2764A MSM2764AS MSM2764AZB-RS

Quick Pulse
27011 27128A 27256 27512

RD27C256 RD27C64

R2764 R2764C R27C64 R2816
R5213 R52B13 R52B33 R87C32

KM2816A KM2816AI KM2817A KM2817AI
KM2864A KM2864AH KM2865A KM2865AH
KM28C64A KM28C65

27128 27256 2764 27C256
2804A 2816A 2816AH 2817A
2817AH 2864 2864H 28C256
28C64 28C64A 28C65 36C16
36C32 38C16 38C32 5133
5213 52B13 52B13H 52B33
52B33H 5516A 5516AH 5517A
5517AH 55B33 55B33H 82005
82025 86063 E52B33 E52B33H
M52B33 M52B33H

ET2716 ETC2716 ETC2732 M27128A
M2716 M2716P M27256 M27C256B
M27C512 M2732A M27512 M2764
M2764A ST27128A ST27256 ST2764A
ST27C256 TS27C256 TS27C256P TS27C256Q
TS27C64 TS27C64A TS27C64P TS27C64Q
TS28C16AC TS28C16AP TS28C64C TS28C64P

ET2716 ETC2716 ETC2732 M27128A
M2716 M2716P M27256 M27C256B
M27C512 M2732A M27512 M2764
M2764A ST27128A ST27256 ST2764A
ST27C256 TS27C256 TS27C256P TS27C256Q
TS27C64 TS27C64A TS27C64P TS27C64Q
TS28C16AC TS28C16AP TS28C64C TS28C64P

27C256 27C512 27C64A 87C256
87C64 SC87C51 *1C

SPM27128 SPM27128C SPM27128H SPM27C256
SPM27C256H SPM27C64 SPM27C64C SPM27C64H
SPM2864 SPM2864C


ET2716 ETC2716 ETC2732 MK2716
MK2764 MK38XXX TS27C17AC TS27C17AP
TS27C256 TS27C256P TS27C256Q TS27C64
TS27C64P TS27C64Q TS28C16AC TS28C16AP
TS28C64C TS28C64P

SMJ2516 SMJ2532 SMJ2564 SMJ27C128
SMJ27C512 TMS2516 TMS2532 TMS2564
TMS25L32 TMS27128 TMS2732A TMS2764
TMS27C128 TMS27C256 TMS27C512 TMS27C64
TMS27P32A TMS27P64 TMS27PC128 TMS27PC256
TMS27PC512 TMS27PC64 TMS28C64

TC54256AF TC54256AP TC54512AP TC57256
TC57256AD TC57256ADI TC57256D TC57512AD
TC57H256D TMM23128-H,H TMM23128-H,L TMM23128-L,H
TMM23128-L,L TMM2364-H,H TMM2364-H,L TMM2364-L,H
TMM2364-L,L TMM24128AF TMM24128AP TMM24256AF
TMM24256AP TMM24256BF TMM24256BP TMM24512AF
TMM24512AP TMM24512F TMM24512P TMM2464AF
TMM2464AP TMM27128 TMM27128A TMM27128AD
TMM27128ADI TMM27128D TMM27128DI TMM27256
TMM27256A TMM27256AD TMM27256ADI TMM27256BD
TMM27256BDI TMM27256D TMM27256DI TMM2732
TMM27512 TMM27512AD TMM27512ADI TMM27512D
TMM27512DI TMM2764 TMM2764A TMM2764AD

VLSI Technology
VT27C256 VT27C512 VT27C64 VTC27C256

WS27C128F WS27C256F WS27C256L WS27C512F
WS27C512L WS57C128F WS57C256F WS57C512F

White Technology
8014 8020 8023

X2804A X2816A X2816AI X2816AM
X2816B X2816H X28256 X2864A
X2864AI X2864AM X2864B X2864H
X28C256 X28C64