Skip to the content
2 layers19.3 × 51.2 mm2332 2364-ROM Adapter, the printed circuit board in 3D

Compact and universal 2332 and 2364 ROM adapter

Size
19.3 × 51.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
14
Nets
37
Pads
108
Tracks, vias
227, 12
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
23 Aug 2024
Updated
3 Oct 2024

Overview

2332 2364-ROM Adapter is an open-source printed circuit board by RetroStack, from the RetroStack/2332_2364-ROM_Adapter repository on GitHub, published under the MIT licence. It is a 2-layer board of 19.3 × 51.2 mm with 14 parts on 37 nets, routed with 227 tracks and 12 vias.

It is built around the 74LS04PC. Its parts include 3 ICs and 2 connectors. It belongs with the interfaces and adapters boards of this library.

Main components

1

README

README.md

2332/2364 ROM Adapter

This repository provides an adapter for 2332 and 2364 ROMs for vintage computers. With an optional hidden inverter chip on the bottom, all versions of these boards can be emulated. The adapter was designed to have the smallest possible footprint while still using through-hole components for a vintage look. It includes an optional detachable selector board for DIP switches or jumpers. Without the detachable selector board, solder jumpers can be used instead. The provided pads on the bottom allow for synchronized address selection across multiple adapters. The entire project is available under the MIT license.

Adapter Variations Adapter Variations

Project Details

Latest Files

In the "Latest" folder, you'll find the most up-to-date design files, including:

  • Gerber files suitable for popular online PCB manufacturers like PCBWay and JLCPCB. Most manufacturers should be fine with either.
  • A Bill of Materials (BOM) in both CSV (with sources) and PDF formats.
  • The full schematics of the adapter.

Implementation

The adapter has been implemented using KiCAD 7. The KiCAD project files are included in this repository.

PCB Front PCB Back

Assembly Instructions

PCB

  1. Get a straight male pin header with pitch (2.54mm; standard) and break it to a 12-pin length. Do this twice. A machined header is recommended if the adapter will be inserted into a socket. Inserting a square pin in a socket might damage it.
  2. Solder the pins in place into the smaller 12-pin lengthwise holes. To align them correctly, you can use another socket or a breadboard. Stick the longer parts into the socket/breadboard and put the PCB on top. Solder first both edges on each. Recheck if they are flush to the header. If not, reheat the corner that needs correction and press down on PCB until flush. Then, solder all other pins.
  3. Install the resistor network. One edge has a square around one pin. This should be where pin 1 will be inserted. Pin 1 is identified on the resistor network usually with a dot.
  4. Write/burn one of the binaries onto a ROM.
  5. (Optional) Solder a socket in place. Similarly to the headers mentioned above, only solder one pin on each side before soldering all to be able to make adjustments as needed. Adding a socket is not recommended for machines which do not have enough clearance for it (e.g., TRS-80 Model 1). For these, you need to skip this step and solder the ROM directly to the board.
  6. Solder the ROM to the board or insert it into the socket. Since the pins are close, this might be tricky.

Partly Assembled

Bank Switching

The adapter allows for bank-switching of various ROMs. Depending on the size of the ROM used, only certain pins may be configurable. For example, a 27256 ROM has 15 address pins. The adapter exposes 13 of these pins to the bottom pins, leaving 2 additional address lines available for bank-switching. A 27512 would then have 3 additional address lines.

NOTE: Keep in mind that the bits are active-low. This means that if you want to set a 1 on a specific address, you leave it unbridged. If you want a 0, you should bridge it. See below for more details on why it was designed this way.

NOTE: The board exposes the bits from right to left. If you prefer left to right (e.g., for DIP switches to match labels), you can flip the address bits in the ROM or use the provided "f" versions in the systems ROM repository.

Here are some examples of available bank-switching configurations:

No Bank-Switching at all
  1. Clip off extension board on perforated line.
  2. Use solder bridges on the bottom to pre-select a specific ROM.

Assembled

Jumper Caps
  1. Add a 2-row pin straight header (2.54mm pitch) to the center two pins of the extension board. Make sure to leave one row of pins on each side—one row on the edge and one next to the ROM.
  2. Add jumpers.
Right Angle Jumpers
  1. Clip off extension board on perforated line.
  2. Add a 2 row pin right-angle header (2.54mm pitch) to the bottom of the PCB, extending one end out over the board where the extension was.
  3. Add jumpers.
DIP Switches

NOTE: For the TRS-80 Model 1, use low-profile DIP switches to ensure the adapter fits inside the case. 7) Add a DIP switch to the extension board. The DIP switch should cover all holes from front to back.

Assembled

DIP Switches on extension board
  1. Clip off the extension board along the perforated line.
  2. Solder up to 6 wires (e.g., ribbon cable) to the bottom of the PCB. Use up to 3 wires for each address line, which is the row close to the center of the board. To identify the address lines, refer to the label just below the ROM on the top of the adapter PCB. Solder at least one wire to any of the holes closer to the edge of the board—these are ground pins, so any of them can be used.
  3. Solder all wires to the extension board using the central two rows of holes. Solder from the bottom, as the DIP switches will be added to the top. Solder the address lines closest to the perforated line where the extension board was attached to the adapter PCB. Solder the ground wires to the other holes in the second row, further from the perforated edge.
  4. Add a DIP switch to the extension board. The DIP switch should cover all holes from front to back. You may need to trim the soldered pins of the cable to allow the DIP switches to sit as close to flush as possible.

Assembled

Jumper caps on extension board
  1. Clip off the extension board along the perforated line.
  2. Solder up to 6 wires (e.g., ribbon cable) to the bottom of the PCB. Use up to 3 wires for each address line, which is the row close to the center of the board. To identify which address line is which, refer to the label just below the ROM on the top of the adapter PCB. Solder at least one wire to any of the holes closer to the edge of the board—these are ground pins, so any of them can be used.
  3. Add a 2-row pin straight header (2.54mm pitch) to the center two pins of the extension board. Leave one row on each side—one on the edge and one next to the ROM.
  4. Solder all wires to the extension board. Solder the address lines to the row closer to the perforated edge, and solder the single ground wire to the hole at the bottom edge furthest from the perforated edge. You can solder this from either the top or bottom.
  5. Add jumpers.
Connect two or more adapters together

Assembled

Sometimes it is useful to be able to bank-switch multiple ROMs simultaneously.

  1. Clip off the extension boards on nearly all the boards at the perforated line—except one, which will be used for selection.
  2. Solder up to 6 wires (e.g., ribbon cable) to the bottom of one PCB. Use up to 3 wires for each address line, which is the row close to the center of the board. To identify which address line is which, refer to the label just below the ROM on the top of the adapter PCB. Solder at least one wire to any of the holes closer to the edge of the board—these are ground pins, so any of them can be used.
  3. Repeat the same process for the other board using the other end of the wires. Ensure that the wires from each pad on one adapter connect to the corresponding pad on the other adapter.

Assembled

Configuration

Depending on which ROM and even the specific version you want to emulate, you will need to configure the adapter accordingly. Below is a list of configurations:

Assembled

2332 (with pin 20 as "active low")
  • Switch jumper JP4: 1) Cut one side, 2) solder the other
  • Connect JP8 to either 5V or GND, depending on the value you want for address line A12 (starting from A0).
  • Cut jumper JP6
2332 (with pin 20 as "active high")
  • Install U3 (74LS04)
  • Switch jumper JP7: 1) Cut one side, 2) solder the other
2332 (with pin 21 as "active low")
  • This is the default. Nothing else to do.
2332 (with pin 21 as "active high")
  • Install U3 (74LS04)
  • Switch jumper JP5: 1) Cut one side, 2) solder the other
2364 (with pin 20 as "active low")

This is the default configuration. No additional steps are required.

2364 (with pin 20 as "active high")
  • Install U3 (74LS04)
  • Switch jumper JP7: 1) Cut one side, 2) solder the other

Q&A

Why is the configuration active low?

Some ROMs, especially EEPROMs, have an active-low WRITE pin that needs to be HIGH (or 1) during normal (read) use. To prevent accidentally putting ROMs into the incorrect mode (write mode instead of read mode), all additional pins are pulled high by default through pull-up resistors.

Why are address lines from right to left?

Having them in this orientation was the simplest solution without adding complexity to the design. Additionally, the addressing depends on the type of configuration you use. Binary numbers are typically written from right to left (as implemented), which works best for jumpers, for example. However, DIP switches use labels from left to right.

Overall, one direction had to be chosen, and I opted for the simplest. This can be adjusted by flipping the address bits. ROMs with this fix are already marked with an "f".

Bill of Materials (BOM)

Below is a list of materials needed to assemble a complete system. Please note that the links and prices (scroll to the right to see them; as of August 22nd, 2024) will not be updated in the future and should only be used as a reference for locating the correct items.

NOTE: Links and alternatives are provided to assist you in finding the necessary components. I cannot guarantee the complete accuracy or reliability of all these links and alternatives. Please verify the information for yourself.

PCB REFERENCEQTYVALUECOMMENTEACHTOTALSOURCE LINK
RN114.7k Ohm3 resistor network with 4-pins, bussed resistors0.350.35Mouser
U12Source Link is for a rather expensive version of a machined straight male pin header with 40-pins which can be broken into smaller pieces to server for both. There are cheaper ones, but the link is used for future reference.1.01.0Mouser
U212x64-2x512Examples are 23128, 23256, 2764, 27128, 27256, 27512, 2864, 28256 and all other variations such as 27C256 or AT28C64B5.55.5Mouser
U3174LS04Optional. Needed for inverting chip select pins.0.680.68Mouser
J11-Optional. Could be used for right-angle jumpers or attaching ribbon cable to move switch towards more accessible place.1.021.02Mouser
J21-Optional. Adding the ability to switch character sets.0.270.27Mouser
1Low-profileOptional. Adding the ability to switch character sets.0.670.67Mouser

ROM Binaries

This repository contains only the adapter boards. The ROM binaries themselves can be found in other repositories and sources. Below is a list of known binary sources:

More sources will be added over time. Let me know if you are aware of good sources.

RetroStack Libraries

To work with this KiCAD project, you'll need the RetroStack libraries for KiCAD. Please follow this link to access and install these libraries.

Support this Project

RetroStack is passionate about exploring and preserving the legacy of older computer systems. My work involves creating detailed documentation and videos to share the knowledge. I am also dedicated to reviving these classic systems by reimplementing them and offering replacement parts at no cost. If you're keen on supporting this unique project, I invite you to visit my Patreon page. Your support would be immensely valuable and greatly appreciated!

License

This project is licensed under the MIT License - see the LICENSE file for details.

Parts

14
QtyValueFootprintReferences
3SolderJumper_2_OpenRetroStackLibrary:SolderJumper_2_Open_RoundedPadJP1, JP2, JP3
3Switch for 2332!Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabelsJP4, JP5, JP7
127512Package_DIP:DIP-28_W15.24mmU2
174LS04Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU3
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ2
1Conn_02x03_Odd_EvenRetroStackLibrary:DIPJumper_3J1
1Conn_02x12_Counter_ClockwisePackage_DIP:DIP-24_W15.24mmU1
1R_Network03Resistor_THT:R_Array_SIP4RN1
1SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP6
1SolderJumper_3_OpenJumper:SolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mm_NumberLabelsJP8

Similar boards

  • 2 layers171.2 × 72.9 mmAmiga gfxcard old, the printed circuit board in 3D

    Amiga gfxcard old

    mntmn/amiga2000-gfxcard

    MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

    34 parts1k
  • 2 layers196.3 × 118.7 mmMotherboard, the printed circuit board in 3D

    Motherboard

    Redherring32/OpenTendo

    An Open-Source HardWare (OSHW) recreation of the original 1985 front-loading NES Motherboard

    100 parts860
  • 2 layers49.6 × 78.3 mmOdyssey, the printed circuit board in 3D

    Odyssey

    jotego/jtcores

    FPGA cores compatible with multiple arcade game machines and KiCAD schematics of arcade games. Working on MiSTer FPGA/Analogue Pocket

    24 parts346GPL-3.0
  • 2 layers237.5 × 102.9 mmInstruction, the printed circuit board in 3D

    Instruction

    jes/scamp-cpu

    A homebrew 16-bit CPU with a homebrew Unix-like-ish operating system.

    112 parts301Unlicense
  • 2 layers182.9 × 172.7 mmMulti, the printed circuit board in 3D

    Multi

    homebrew8088/8088-PC-Compatible

    8088 PC XT Compatible

    120 parts238GPL-3.0
  • 2 layers365.1 × 203.2 mmDIAG, the printed circuit board in 3D

    DIAG

    Nakazoto/CenturionComputer

    This is just a simple backup of all the files related to the Centurion that I have stored on my HD. The Wiki itself has far more in-depth information about the Centurion and it's individual cards.

    150 parts172
  • 2 layers135.3 × 106.7 mmAdlib, the printed circuit board in 3D

    Adlib

    schlae/adlib

    Reproduction AdLib Sound Card, OPL2, Circa 1990

    61 parts168
  • 2 layers370.8 × 298.5 mm8 Bit Computer, the printed circuit board in 3D

    8 Bit Computer

    The-Invent0r/8-bit-Computer-PCB

    These are the KiCAD files for my 8-Bit Computer.

    323 parts142

Questions

How big is the 2332 2364-ROM Adapter PCB?

It measures 19.3 × 51.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the 2332 2364-ROM Adapter use?

14 parts, built around the 74LS04PC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the 2332 2364-ROM Adapter KiCad files?

From the RetroStack/2332_2364-ROM_Adapter repository on GitHub, at the commit this page was made from: the board is KiCAD/2332_2364_ROM_Adapter.kicad_pcb and its schematic KiCAD/2332_2364_ROM_Adapter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the 2332 2364-ROM Adapter design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).