Popolon-fr Musical Memory Mapper
This page was last modified 14:26, 10 June 2025 by Mars2000you. Based on work by Gdx and NYYRIKKI and others.

Contents

Description

The Musical Memory Mapper (MMM) cartridge is a standard 1024kB external memory extension for MSX1, MSX2, MSX2 + and MSX turbo R sold by Popolon and Repro Factory (2013~2016).

Additionally it has the following features:

  • A SN76489AN sound chip used in various game consoles of the 80s built-in.
  • A write protection function and the ability to manage its memory regardless of other memory mappers.
  • MMM initializes Memory Mapper pages on each memory bank of 0000h~3FFFh, 4000h~7FFFh, 8000h~BFFFh and C000h~FFFFh in the order 3, 2, 1, 0 at MSX startup to provide compatibility with MSX1.

Many memory mapper cartridges support reading the mapper registers to support some non-standard compliant software which attempts to do so. The first version of MMM is a memory mapper does not provide this ability. The second version of MMM (chrome case) does allow mapper read-back to be enabled. By default it is disabled.

The cartridge contacts are gold plated. The price is around €42.

Gallery

Popolon Musical Memory Mapper
MMM v1.2 PCB with bus connector
MMM v1.3 PCB

Specifications

  • RAM: 1024kB
    • Memory mapper with MSX1s support and configurable to specific 16K mapper with a write protect mode
  • SN76489AN inside (I/O ports: 3Fh)
    • Disabled by default, can be enabled it by software (See support routines)
NOTE!
Since the v1.2 it's possible to read the Memory Mapper registers when the resistor INT-2 (10KΩ) is soldered. On the v1.3, the resistor has been replaced by the jumper INT. It must be removed when another Memory Mapper larger than 1MB with its registers also readable is used in another slot to avoid a possible conflict with the two most significant bits of the two expansions. Be careful because this can even damage the EPM in some cases.


See the manual for more information.

Minimum System Requirements

  • MSX1 computer, one free slot cartridge

Support Routines

BASIC routine to enable SN76489AN to I/O port #3F

1 D$="013C1026FC0578E603C6C16F7EE680B0FE0C382521FD40C5CD2400C1F33E80ED797EE61F3CD3FDF6C0BE200D6936C006043E7FC620D33F10FAAFFBD33C0410C33E02D3FD3AC1FCC324003F" 2 FOR I=1TO74:A$=A$+CHR$(VAL("&H"+MID$(D$,I*2-1,2))):NEXTI 3 A=VARPTR(A$):POKE&HF39A,PEEK(A+1):POKE &HF39B,PEEK(A+2):A=USR(0)

Routine as BASIC BIN-file source to enable SN76489AN to I/O port #3F

         OUTPUT "SNINIT.BIN"            DB #FE          DW BEGIN,END,SNINIT            ORG #C000 BEGIN:   SNINIT:            LD BC,#103C   .SLOTLOOP 	 LD H,#FC          DEC B 	 LD A,B 	 AND 3 	 ADD A,#C1 	 LD L,A 	 LD A,(HL) 	 AND 128 	 OR B 	 CP 12 	 JR C,.NEXTSLOT            LD HL,#40FD          PUSH BC          CALL #24          POP BC            DI          LD A,#80          OUT (C),A          LD A,(HL)          AND 31          INC A          OUT (#FD),A          OR #C0          CP (HL)   	 JR NZ,.NEXTSLOT          LD L,C          LD (HL),#C0 ; Enable SN76489AN            ; Mute all channels            LD B,4          LD A,#7F .LOOP          ADD A,#20          OUT (#3F),A          DJNZ .LOOP   .NEXTSLOT          XOR A          EI          OUT (#3C),A          INC B          DJNZ .SLOTLOOP 	 LD A,2 	 OUT (#FD),A          LD A,(#FCC1)          JP #24   END:

Software

External Links