FLASH 23C1000

From Tandy Tech
Jump to navigation Jump to search


Adapter board to use a flash chip for the system rom in a NEC PC-8300, PC-8401, PC-8500, or anything else that has a 23C1000 mask rom.


BOM: https://www.digikey.com/short/z8293n

Source: https://github.com/bkw777/aDIPters

ROM images

NEC PC-8300 system rom: File:831000-438.bin
NEC PC-8300 system rom, Y2K patched: File:831000-438-y2k.bin (See Model_T_Y2K)
NEC PC-8500 system rom: File:PC-8500 IC9.bin



See FlexROM_100 to see how to do the dip legs.
Search youtube for "drag solder" to see how to solder the TSOP legs with an ordinary soldering iron.

Suggest installing parts in this order:

  1. Legs - The holes for the the legs are intentionally small and a fairly close fit on the legs. The legs should be installed first to avoid the problem where if you accidentally get solder in some of the holes while soldering the other parts near by, it can be difficult to wick the holes clean enough to insert the legs after that without vacuum.
  2. R1, R2
  3. TSOP or PLCC chip
  4. Jumper pins - Flush-cut the posts on the bottom of the board after soldering.

You don't install R3 usually. It is for VPP on pin 1, to support EEPROM/EPROM devices that have a VPP pin. These are all old devices that aren't made any more, but you can still buy used and new-old-stock. Don't install R3 if you're using the SST39SF010A part in the BOM linked above, or any 29 or 39 series flash chip. But if you happen to already have a 28F010, 28SF010, 27SF010, 27C010 etc, you can use it instead of the 39SF010, and if so, you need to install R3. 47K the same as the others.



  • eprom programmer, such as TL-866

To program the chip,

  • Move the jumper to PRG
  • Put the board into a programmers' ZIF socket
 minipro -p "SST39SF010A" -w 831000-438-y2k.bin


Move the jumper to RUN

Put the board in the 23C1000 socket, with pins 3-30 in the socket, and pins 1,2,31,32 hanging off the end of the socket.

ROM0 in PC-8300, IC24 in PC-8401, IC9 in PC-8500
for PC-8401, cut pin 1 a little short so that it doesn't touch R65, or use the DIP-28 version of the board (see FLASH_23C1000_DIP28 from github.com/bkw777/aDIPters)

For PC-8300, press Shift-CTRL-Reset to hard-reset the PC-8300 to force it to load the new rom, including re-reading the one-time power-on defaults. If the date says 2000, then you got it. If the date says 1983 or 2083, then you didn't do a full reset (assuming the y2k-patched rom image).


Datasheet for the 23C1000 mask rom:


NEC PC-8300, PC-8401, and PC-8500 computers use a 23C1000 mask rom for the system rom.

23C1000 is an unusual 128K mask rom in a DIP-28 package. A 128K device usually requires 32 pins. 23C1000 fits into a 28 pin package by using the Vpp and /OE pins for A15 and A16 instead. A mask rom is not writable so the Vpp pin is usually NC on other mask roms, and this chip has a single /CE pin instead of both /CE and /OE.

NEC 27C1000 / Hitachi HN27C301 are writable 32-pin devices that are almost fully pin-compatible with 23C1000. Pins 3-30 are almost the the same as pins 1-28 on the 23C1000. To use NEC 27C1000 or HN27C301 in place of 23C1000: Plug in place of a 23C1000, leaving pins 1,2,31,32 hanging off the end of the DIP-28 socket. Bodge-wire pin 2 (/OE) to either GND or pin 22 (/CE). Bodge-wire pin 32 to pin 30 (Deliver VCC from socket pin 28 to chip pin 32. Chip pin 30 is NC inside the chip, so it's ok to be connected to VCC). But these parts are no longer made and not easy to find today.

This adapter board allows to use a wide range of more common and even still manufactured parts in place of the 23C1000.

Pinout comparison between 23C1000 and some other devices:

  +-----------------------------------------+------ MX27C1000 / 27C010 / 28F010 / *(29F010)
  |    +------------------------------+---- | ----- NEC 27C1000 / Hitachi HN27C301
  |    |        +------------+------- | --- | ----- 23C1000 (NEC uPD23C1000, NEC D23C1000C, Macronix MX23C1000)
  |    |        |            |        |     |
  |    |        |            |        |     |
                |            |   
*(NC) VPP  1    |            |   32  VCC
 A16  OE/  2                     31  PGM/
           3   A15  1   28  VCC  30        NC
           4   A12  2   27  A14  29
           5   A7   3   26  A13  28
           6   A6   4   25  A8   27
           7   A5   5   24  A9   26
           8   A4   6   23  A11  25
           9   A3   7   22  A16  24        OE/
           10  A2   8   21  A10  23
           11  A1   9   20  CE/  22
           12  A0  10   19  D7   21
           13  D0  11   18  D6   20
           14  D1  12   17  D5   19
           15  D2  13   16  D4   18
           16  GND 14   15  D3   17

  • MX27C1000, 27C010, 28F010, pin 1 is Vpp
29F010 (SST39SF010A, GLS29EE010, AM29F010, AM29EE010, ...) pin 1 is NC
Otherwise same pinout between all.

Macronix MX27C1000 is standard jedec 27C010 pinout, not like NEC 27C1000

Compatible flash/eeprom/eprom chips that can be used on this board:

Without R3 installed:

39SF010 https://www.digikey.com/short/z88hb8
29EE010 https://mou.sr/39tR5zu

With R3 installed (10k-47K):


Any speed and any temperature range is ok.

Any TSOP32 or PLCC32(7x9) package is ok.

TO READ A 23C1000 MASK ROM in a TL-866 programmer

Minipro does not recognize 23C100, nor either of the pin-compatible NEC 27C1000 or Hitachi HN27C301.
It does know about several 27C010 devices.
It's only a small change to convert the 23C1000 mask rom pinout to a generic 27C010 pinout.

Parts: 28 female-female dupont jumper wires. 2 single row male pin headers, 18 to 20 pins each.

1: Clamp the male pin headers in the programmer zif socket and connect all 28 chip pins to the zif socket 1-to-1 like normal, except shifted down 2 positions, so that chip pin 1 goes to to zif pin 3, chip pin 28 goes to zif pin 38, etc.

2: At the zif socket, move the wire for chip pin 28 (VCC) from zif pin 38 (DIP-32 pin 30) to zif pin 40 (DIP-32 pin 32)

3: At the zif socket, move the wire for chip pin 22 (A16) from zif pin 28 (DIP-32 pin 24) to zif pin 2 (DIP-32 pin 2)

4: Tell minipro to read a generic 27C010 eprom.

 minipro -y -p "27C010@DIP32" -r rom.bin