This page is under construction. Details are added as time and interest permits it.

Yet another computer museum
Making PX-8/PX-4 ROMs

For more info on the PROM structure see the PROM data page.

Making ROMs like the B: and C: disk isn't very difficult. For this you need:

The software to create the PROM contents is provided by EPSON. Two versions exist; PROMFORM 1.0, and PROMFORM 2.0.

PROMFORM 2.0 is usually called PROMFO2.COM or PXPROM2.COM. PROMFORM.COM, version 1.0 of the program, is 7 kByte and not completely bug free (see the doc that comes with it). PXPROM2.COM, version 2.0, is 28 kByte and supports extra PROM configurations for the PX-4.

Both can produce intel-hex files, to be send to an EPROM-programmer.

Version 1 writes the whole ROM image, including the empty parts. Version 2 just writes the used parts, and starts at 4000h, the start of the ROM. The file data will be written after that, until it wraps at 7FFFH to 0000h, and up to 3FFFH. The hex-intel records are produced in this order, and that can be a problem for some EPROM-programmers.

PROMFORM.COM is for creating PX-8 ROMs only, or format 'M' (from maple). PXPROM2.COM can create both formats supported by the PX-4, 'M' and 'P' (from pine). The 'M' format is strictly a disk image format, the 'P' allows execution of programs directly from the ROM without loading it in RAM. The PX-4 BASIC ROM is an example of the 'P' format. These programs have a special header and do not load and execute from 0x100.

The 'M' format allows double ROM images, spanning the disk image over two ROM capsules.

Both programs were found at Cereal Port BBS. For a local download, see below.

Configurations supported by PROMFORM (1.0, 11/29/83):

Original readme for PROMFORM (This is plain text, not a Word document)

Configurations supported by PXPROM2 (2.0, 07/31/84):

For unarchiving *.LBR or *.ARC see Archiver overview

Turbo Pascal PROM generator

At WEB G is a Turbo Pascal source claiming to create PROM images, but this doesn't work for the 32kByte images for the B: and C: drive. The program compiles clean, but the images generated are incompatible (No header, and the directory at 0000h instead of 4000h. This is OK for 8k Byte and 16 kByte ROMS but incorrect for 32 kByte ROMs). It is still available from usenet/Google newsgroups (or search for epson rom generator group:comp.os.cpm). Local copy: PXROM.PAS.

The problem with the PROM generator might be the same as that of PXPROM2, the order in which the Hex-intel records are generated; it starts halfway, as described above. This is in principle not a problem as the records contain the address of the data. I found however that my trusty DATA I/O 212 programmer doesn't work well with out of order records. At least when the records are in the correct order (from lowest to highest address) the programmed EPROM works ok.

Hex-intel files are text, so it is simple to move the block of lines starting with ":104000..." to ":107FF0..." the end of the file. Make sure the ":00000001FF" (end of data record) remains the last line of the file.


An alternative to programming (and erasing) EPROMs is using EEPROMs. Some recent developments made this somewhat easier. At tandy wiki an adapter board for cradles like those used in the Tandy 600 is shown. This is compatible with the cradles in the PX-4/PX-8.

The 28C256 (SMD version) has slightly different pinout than the 27(C)256, but this is partly changed on the PCB. There is a small problem programming the 28C256, but an extra wire on the board and a adapter can make the board look like a regular 28C256. This adapter just reverses the rerouting on the PCB.

Atmel 28C256 SMD EEPROM on a adapter PCB for PX-4/PX-8 type cradles.

3D printer files for the carrier, the part between the PCB and the cradle, are provided too. I found these, printed with PETG filament work ok. The standard nozzle width of 0.4mm suffices, but it would look better when printed with a smaller nozzle, like 0.25mm. Some supports are needed. A slightly modified version is here.

The PCB changes two pins of the 28C256 EEPROM: Pin 1 is routed to pin 27 of the cradle. This is address line A14. Pin 27 is pulled up with a resistor and not connected to a cradle pin. This is WE*, the pin to program the EEPROM. By omitting the resistor, and connecting the pin to pin 1 of the cradle, the chip can be (re-)programmed with a special adapter. The PX4/8 pulls pin 1 high, so the extra connection is not a problem.

Cradle on header pins, with rewiring pins 1 and 27.

This adapter allows programming the 28C256-on-PCB with carrier as a normal 28C256. The cradle is salvaged from a broken PX-8.

Back to main PX-8 page | Back to main PX-4 page

Latest update: 2022-06-10