bprom

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
MODES u-PROM
MODES u-PROM 2001
EXAMPLES FOR u-PROM
EXAMPLES FOR u-PROM 2001
RETURN CODES
BUGS
SEE ALSO
LICENSE
AUTHORS

NAME

bprom v0.3.2 − Read and write (E)EPROMs with Boehm u−prom and u−prom 2001

SYNOPSIS

bprom [options] ...

DESCRIPTION

bprom is used to read or write EPROMs or EEPROMs with the u−prom and u−prom 2001 programmers by the German brand Dr. Rainer Boehm GmbH & Co. KG.
Make sure, the dip−switches inside the programmer are set up for the correct baud rate and connect it with a null modem cable with the PC. Set the RTS/CTS−jumper if you really don’t want to use hardware handshake, this is not recommended. I testet it with the maximum speed at 38400 baud and it worked fine.

OPTIONS

The following options are provided by bprom using the standard GNU command line syntax:

−h, −−help

Print a summary of command line options and exit.

−V, −−version

Print the current version and exit.

−v, −−verbose

Be verbose, show progress bar.

Interface:

−p, −−programmer=model

possible values are uprom and uprom2001

−s, −−serial−port=dev

The first serial port on linux systems is /dev/ttyS0, when using an USB-serial-adapter it might be /dev/ttyUSB0 or /dev/tty.usbserial

−B, −−baud−rate=bps

possible values are 38400 (default for u−PROM 2001), 19200, 9600 (default for u−PROM), 2400, 1200 and 300

−−no−handshake

No hardware handshake with RTS/CTS, not recommended

Actions:

−r filename, −−read

Read chip and write data to file

−w filename, −−write

Write chip with data from file

−b, −−blank

Perform blank test

−c, −−compare

Compare data from master socket with copy socket

−e, −−erase

Erase EEPROM

Arguments and options:

−M, −−master−socket

Use master socket instead of copy socket

−a, −−auto

Try to autodetect chip (MAY DESTROY CHIP!!!)

−t, −−type=STRING

Type of the EPROM, e.g. 2732A. This option is only available for the uprom so far with the following types: 2716, 2816, 2732, 2732A, 2764, 27128, 27256 and 2532. If your programmer is a uprom2001, use the −m option.

−m, −−mode=STRING

with uprom: FAST (default) or STD programming mode
with uprom2001: chip type and programming mode defining byte (refer to table)

−−size=LONG

Number of bytes to be written or read

MODES u-PROM

The only modes the u-PROM knows are FAST (which is used as default) and STD. When using the standard mode, each byte gets programmed with a 50 ms programming pulse, except the 27256 who uses a 1 ms pulse. Please notice that you mustn’t apply a pulse of 50 ms to a 2816, use the fast mode instead.
CAUTION:
The u-PROM can only program with 21V and 25V but not with approximately 12V, what most modern chips need. Applying a higher voltage to the chip will DESTROY it.
2716 and 2532 will always be programmed with 25V, that’s allright.
CAUTION:
2732 and 2732A gets 21V or 25V, depending on a bridge/switch inside the programmer. You cannot select the voltage by software, no matter if you give −t 2732 or −t 2732A !
CAUTION:
2764, 27128 and 27256 are programmed at 21V (!) Only very old chips require and will survive this high voltage.

MODES u-PROM 2001

In order to enable the programmer to do something useful with the chip, he must know it’s size, type, programming mode, programming voltage and so on. All these values are encoded in one single byte, the mode byte that is defined with the −m option.

Best thing is to autodetect the mode with the −a option, since the programmer uses the best settings advised by the chip’s manufaturer, if he know’s the chip.

BE CAREFUL WITH AUTODETECT!!! Since autodetect works with a voltage of 12V at A9, a chip may be DESTROYED if he doesn’t support it. Most chips <8K don’t, some 8K do, and most >8 do.

If the chip doesn’t support autodetect, or if the chip supports autodetect but the programmer doesn’r know it, you’re on your own: you have to manually select the mode byte from the following table:

The following abbreviations are used:

STD Standard programming algorhythm
HS
High speed programming
HP
High performance programming
IP
Intelligent programming
QP
Quick pulse programming

2K chips −m 0: STD, 50 ms, Vpp=25V, e.g. 2716

−m 1: IP, 1 ms, Vpp=25V
−m 2: STD, 10 ms, Vpp=21V, 24 pin EEPROM (e.g. 52B13 / 38C16)
−m 3: STD, 10 ms, 28 pin EEPROM (e.g. 2817A)
−m 4: HP, 24 pin EEPROM
−m 5: IP, 1 ms, Vpp=12.5V
−m 6: STD, 50 ms, Vpp=21V
−m 84: HS, 0.1 ms, Vpp=12.5V
−m 85: QP, 0.1 ms, Vpp=12.75V
−m 86: HP, EEPROM

4K chips

−m 7: STD, 50 ms, Vpp=25V, e.g. 2732
−m 8: IP, 1 ms, Vpp=25V
−m 9: STD, 50 ms, Vpp=21V, e.g. 2732A
−m 10: IP, 1 ms, Vpp=21V, e.g. 52B13 / 38C16
−m 11: STD, 50 ms, Vpp=25V, 2532
−m 12: IP, 1 ms, Vpp=12.5V
−m 13: STD, 50 ms, Vpp=21V
−m 89: HS, 0.1 ms, Vpp=12.5V
−m 90: QP, 0.1 ms, Vpp=12.75V
−m 91: HP, e.g. 38C32

8K chips

−m 14: STD, 50 ms, Vpp=21V, e.g. old 2764
−m 15: IP, 1 ms, Vpp=21V
−m 16: HP, e.g. 28C64
−m 17: HP, e.g. 28C64
−m 18: STD, Vpp=10V, e.g. 52B33
−m 19: STD, 10 ms, Vpp=25V, e.g. 2564
−m 20: IP, 1 ms, Vpp=12.5, e.g. 27C64
−m 94: HS, 0.1 ms, Vpp=12.5V
−m 95: QP, 0.1 ms, Vpp=12.75V
−m 98: BEE Card

16K chips

−m 21: IP, 1 ms, Vpp=21V
−m 22: IP, 1 ms, Vpp=12.5V, e.g. 27C128
−m 23: HS, 0.1 ms, Vpp=12.5V
−m 24: QP, 0.1 ms, Vpp=12.75V
−m 25: HS, 0.1 ms, Vpp=12.75V, e.g. 27CP128Q
−m 21: BEE Card

32K chips

−m 28: IP, 1 ms, Vpp=21V
−m 29: IP, 1 ms, Vpp=12.5V, e.g. 27C256
−m 30: HS, 0.1 ms, Vpp=12.5V
−m 31: QP, 0.1 ms, Vpp=12.75V
−m 32: e.g. 28C64
−m 108: BEE Card

64K chips

−m 35: IP, 1 ms, Vpp=12.5V, e.g. 27C512
−m 36: QP, 0.1 ms, Vpp=12.75V
−m 37: IP, 1 ms, Vpp=12.5V, different pinout, e.g. 27513
−m 38: QP, 0.1 ms, Vpp=12.75V, different pinout, e.g. 27513
−m 39: HS, 0.1 ms, Vpp=12.5V
−m 113: BEE Card

128K chips

−m 42: IP, 1 ms, Vpp=12.5V, e.g. 27C1001
−m 43: IP, 1 ms, Vpp=12.5V, different pinout, e.g. 27C301
−m 44: HS, 0.1 ms, Vpp=12.5V
−m 45: HS, 0.1 ms, Vpp=12.5V, different pinout, e.g. 27C301
−m 46: QP, 0.1 ms, Vpp=12.75V
−m 47: IP, 1 ms, Vpp=12.5V, different pinout, e.g. 27011
−m 48: QP, 0.1 ms, Vpp=12.75V, different pinout, e.g. 27011
−m 114: QP, 0.1 ms, Vpp=12.75V
−m 115: QP, 0.1 ms, Vpp=12.75V, different pinout, e.g. 27C301
−m 116: Page, Vpp=12.5V
−m 118: BEE Card

256K chips

−m 49: HS, 0.1 ms, Vpp=12.5V, e.g. 27C2001
−m 50: QP, 0.1 ms, Vpp=12.75V
−m 51: Page, Vpp=12.5V
−m 123: BEE Card

512K chips

−m 56: HS, 0.1 ms, Vpp=12.5V, e.g. 27C4001
−m 57: QP, 0.1 ms, Vpp=12.75V

EXAMPLES FOR u-PROM

bprom -p uprom -v -t 2716 -r backup.rom
Save the contents of a 2716 EPROM at copy socket to the file backup.rom

bprom -p uprom -s /dev/ttyS0 -B 2400 -v -t 2732 -M -r paranoid.rom
Communicate via first serial port at 2400 baud; save the contents of a 2732 EPROM at master socket to the file paranoid.rom

bprom -p uprom -v -t 2716 -m STD -w chargen.rom
Program a 2716 EPROM at 25V programming voltage, 50 ms each programming pulse with binary data from chargen.rom

bprom -p uprom -v -t 2716 -m FAST -w chargen.rom
Program a 2716 EPROM at 25V programming voltage, use fast programming mode, data from chargen.rom

bprom -p uprom -v -t 27256 -bw myprog.rom
Perform blank test, if it is blank, program the 27256 with with myprog.rom

bprom -p uprom -b -t 2764
Is the 2764 blank? If you see nothing, it is. If you get an error message, it is not.

bprom -p uprom -v -t 2816 -e -b
Erase a 2816 EEPROM, then perform blank test.

EXAMPLES FOR u-PROM 2001

bprom -v -r backup.rom -m 0
Save the contents of a 2716 EPROM at copy socket to the file backup.rom

bprom -s /dev/ttyS1 -B 9600 -v -m 9 -M -r paranoid.rom
Communicate via second serial port at 9600 baud; save the contents of a 2732 EPROM at master socket to the file paranoid.rom

bprom -m 0 -vw chargen.rom
Program a 2716 EPROM at 25V programming voltage, 50 ms each programming pulse with binary data from chargen.rom

bprom -abw myprog.rom
Autodetect the chip (27256), then perform blank test, if it is blank, program it with myprog.rom

bprom -b -m 20
Is the 27C64 blank? If you see nothing, it is. If you get an error message, it is not.

bprom -b -d -m20
Perform blanktest on 2764, show a lot of debug messages

bprom -cv -m0
Does the 2716 inserted in copy socket contain the same data as the one in master socket? The chips must be of the same type, comparing an 8K 2764 (-m 20) with an 8K 2864 (-m 16) won’t work.

bprom -ev -m16
Erase a 2864 EEPROM. Yes, there is no space between m and 16.

RETURN CODES

bprom can also be used in batch files. It provides the following return codes:

0 no errors
1
operation completed, but EPROM not blank or compare found differences
2
failed, normal exit
3
fatal error, aborted

BUGS

If you find a bug, fix a bug or enhance bprom, please let me know and write to: nils.eilers@gmx.de

If you use a USB-serial-adapter and bprom hangs, abort bprom with Ctrl-C, pull the adapter out of the USB-port, plug it again and restart bprom. This error occurs after reading EPROMs, but you can write EPROMs without having to plug the adapter.

SEE ALSO

http://home.germany.net/nils.eilers/bprom

srecord <http://srecord.sourceforge.net> is a bunch of tools for work with EPROMs, very useful for converting formats like intel hex to binary, splitting EPROMs etc.

LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA

AUTHORS

Nils Eilers <nils.eilers@gmx.de>