Skip to the content
2 layers158.8 × 91.4 mmNabu MEGAMAPPER, the printed circuit board in 3D

Z80 interposer board providing extended memory and I/O instruction mapping

Size
158.8 × 91.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
42
Nets
107
Pads
528
Tracks, vias
3,149, 108
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
10 May 2024
Updated
29 Sep 2024

Overview

Nabu MEGAMAPPER is an open-source printed circuit board by tergav17, from the tergav17/Z80-MegaMapper repository on GitHub. It is a 2-layer board of 158.8 × 91.4 mm with 42 parts on 107 nets, routed with 3,149 tracks and 108 vias.

It is built around the 74LS245SC, AS6C4008-55PCN and 74LS157PC, with the 74LS374PC, 74LS670 and 74LS139PC among its other parts. Its parts include 20 capacitors, 19 ICs and 3 connectors. It belongs with the retro computing and games boards and the FPGA and CPLD boards of this library.

Main components

8

README

README.md

Z80 MegaMapper

Assembled ZMM

The Z80 MegaMapper (ZMM) is designed to enhance the ability of existing retro computers. This is done by interposing the Z80 CPU and intercepting certain signals. The current version of the MegaMapper provides the following enhancements:

  • An additional 512 KB of static RAM, expandable up to 2 MB.
  • Simple memory management, allowing the 4 independently selectable memory banks. Banks can also be write protected.
  • Virtual machine mode, supporting “transparent” traps that do not depend on a specific stack pointer location.
  • Fully programmable I/O space in virtual mode, allowing device addresses to be translated between the virtual and physical address space.
  • I/O trap vector allowing any I/O instruction to be emulated by software if needed.
  • Software controllable interrupts, allowing the maskable interrupt to be fully controlled by the real mode hypervisor.

The expanded memory is fairly self explanatory, but the other features may require a bit of explanation. The goal of the MegaMapper is to allow a Z80 machine to support “virtual machines”. These machines, with the help of a software hypervisor, can be made to seamlessly run software from other computer architectures. A single machine can act as an MSX, Colecovision, SG-1000, ZX81, Heathkit H8, TRS-80 Model II, TI-83, etc… simply by changing what hypervisor software is running. Additionally, virtual machines can be debugged in real time, to the point of being single-steppable.

This is different from emulation as fundamentally everything is still executing on bare hardware. It provides vast software compatibility while still scratching the “retro hardware” itch that makes emulators simply not as fun (personally). In theory, this same type of device could have been built in the 80s with off-the-shelf components. All of the heavy lifting is still done by the ~3.5 Mhz Z80 processor.

Admittedly, emulation can always provide better results than a janky virtualization set up like this. This is more of a “Because I Can” project than anything else.

Virtual Machine Status

SG-1000

The important parts of this seem to work. The PSG -> AY translation is passable, but it still needs some work in terms of tone and support for the noise channel. Pausing is also buggy due to lack of functional NMI.

MSX 1

Boots to MSX basic just fine. Can also run all of the 32K cartridge ROMs I threw at it. Keyboard matrix still needs to be updated to support all keys.

Current Issues

The Z80 data bus buffer currently doesn't work properly due to IM2-related shenanigans. The system works fine without it, so it may be omitted in a future revision.

At the moment, there is no way to maintain IFF2 contents during a trap. This is fine for systems that don't need an NMI, but can cause interrupt issues to those that do. It should be possible to add a status bit that keeps trick of if IFF1 and IFF2 are supposed to be equal, and work backwards from there.

The classic NMOS CPUs seem to have issues sometimes with detecting clock edges on the M1 cycle. Currently, this is circumvented by just getting a faster CMOS Z80.

Installation

The ZMM is designed to slot directly into where the Z80 plugs into the mainboard of the host computer. Everything runs on +5V, so no additional jumpers are needed.

ZMM Installed in a Nabu

Limitations

One of the major design limitations of the ZMM is the fact that no provisions have been made for memory mapped I/O. Video RAM can crudely be accomplished by periodically scanning parts of memory and updating the VDP accordingly. This is very inefficient, especially the bigger the VRAM section gets. The size of the bankable sections is also limited to 16 KB, anything smaller will have to be emulated by manually copying sections of memory.

BOM

QuantityReferencePartLink
1U274LS32
2U3, U474LS670
1U5HM6116
3U6..874LS157
1U974LS244
2U10, U1174LS374
1U1274LS85
1U13XC9536PC44
1U1474LS139
1-4U15..18AS6C4008
0U1974LS245
19C1..190.1 uF C
1C20100 uF

Parts

42
QtyValueFootprintReferences
190.1 uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C3, C4, C5, C6, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19 +3
4AS6C4008-55PCNPackage_DIP:DIP-32_W15.24mmU15, U16, U17, U18
374LS157Package_DIP:DIP-16_W7.62mmU6, U7, U8
274LS374Package_DIP:DIP-20_W7.62mmU10, U11
274LS670Package_DIP:DIP-16_W7.62mmU3, U4
2Z80 Socket HeaderConnector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ1, J2
1100 uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC20
174LS139Package_DIP:DIP-16_W7.62mmU14
174LS244Package_DIP:DIP-20_W7.62mmU9
174LS245Package_DIP:DIP-20_W7.62mmU19
174LS32Package_DIP:DIP-14_W7.62mmU2
174LS85Package_DIP:DIP-16_W7.62mmU12
1HM6116Package_DIP:DIP-24_W15.24mmU5
1JTAGConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ3
1XC9536PC44Package_LCC:PLCC-44_THT-SocketU13
1Z80CPUPackage_DIP:DIP-40_W15.24mmU1

Similar boards

  • 2 layers162.6 × 97.3 mmMemory subsystem, the printed circuit board in 3D

    Memory subsystem

    TSJR/logic-analyzer

    TTL logic analyzer built from 74xx logic and LED dot matrix display

    73 parts
  • 2 layers426 × 307 mmI7000, the printed circuit board in 3D

    I7000

    felipesanches/Itautec_I7000_KICAD

    Esquemáticos do computador Itautec I-7000 G desenhados a partir de inspeção do circuito das PCBs

    115 parts
  • 4 layers340 × 210 mmYddraig, the printed circuit board in 3D

    Yddraig

    ddraig68k/hardware

    Schematic and CAD files for my 68K based computer

    224 parts29MIT
  • 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 layers235 × 160 mmProcessor.6809, the printed circuit board in 3D

    Processor.6809

    lynchaj/duodyne

    Duodyne is a hobbyist retrocomputer system designed to run ROMWBW. It is comprised of modules on a system bus

    113 parts15
  • 2 layers104.1 × 102.9 mmISA EMS, the printed circuit board in 3D

    ISA EMS

    hightower70/ISA_EMS

    2MByte 8-bit ISA EMS Memory Card for IBM PC XT compatible computers

    32 parts2Apache-2.0
  • 6 layers244 × 244 mmRetroslop, the printed circuit board in 3D

    Retroslop

    CPTforever/8088-MicroATX-Computer

    A 8088 based, IBM 5150 like computer compatible with the MicroATX motherboard form factor.

    193 parts
  • 2 layers130.9 × 81.3 mmRambo, the printed circuit board in 3D

    Rambo

    palazzol/TRS80_3D

    43 parts1

Questions

How big is the Nabu MEGAMAPPER PCB?

It measures 158.8 × 91.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Nabu MEGAMAPPER use?

42 parts, built around the 74LS245SC, AS6C4008-55PCN, 74LS157PC and 74LS374PC. 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 Nabu MEGAMAPPER KiCad files?

From the tergav17/Z80-MegaMapper repository on GitHub, at the commit this page was made from: the board is KiCAD/Nabu_MEGAMAPPER/Nabu_MEGAMAPPER.kicad_pcb and its schematic KiCAD/Nabu_MEGAMAPPER/Nabu_MEGAMAPPER.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Nabu MEGAMAPPER design in my own project?

Its repository states no licence, so its author keeps all rights: ask tergav17 before reusing the design.