Popolon-fr Musical Memory Mapper
This page was last modified 10:43, 8 October 2023 by Gdx. Based on work by Mars2000you 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