Computers Overview
Commodore PET
Sinclair ZX80
Sinclair ZX81
BBC Micro
Sinclair Spectrum
Memotech MTX
    About
    Library
    Manuals
    Options
    Photos
    Projects
      CFX
      Hardware Hacks
      Legacy (1980s)
      MAGROM
          Availability
          Development
          Production
          REMemorizer
          Special Fit
          Version 1.1
      MTXPlus+
      PAL Reader
      PC Keyboard I/F
      Programmers
      ReMemotech
      ReMemorizer
      SDX
      SFX
    Repairs
    Software
    Tools
    User Groups
    Video Wall
Memotech CP/M
Atari ST
PDAs
DEC 3000 AXP
OpenVMS
Raspberry Pi

 

 
 
 

The Memotech MTX Series

Martin Allcorn's Games ROM

512KB, 38 Game ROM

128KB, 15 Game ROM

MAGROM

(Do you want one ?)

Introduction

Andy Key's REMEMOrizer is a fantastic add-on for the MTX, to quote from Andy's site, "REMEMOrizer is an add-on for a real Memotech MTX500, MTX512 or MTX512 S2 computer, . . . . "it's like an SDX, only smaller, faster, cheaper and better. This is the upgrade you wished you'd had in 1984." However, great as it is, and certainly value for your money considering all of its features, at around £100, it is not cheap and perhaps a little too expensive for some.

Up until now, if you didn't have a disk drive, the only alternative to REMEMOrizer for loading games into a real MTX was to use the cassette interface and load games either from a real cassette player, or using the sound card output from a PC to play audio files through the same interface. That's where Martin Allcorn comes in . . . . . . .

Martin has designed a ROM board that plugs into the MTX cartridge connector - just like the original Memotech games ROMs did, but with a difference. Martin's design features the ability to store many MTX games programs on the ROM card and uses an on screen menu to allow the user to select the game to run. Martin has kindly written a few notes on the design and provided the software hosted on this page. he has also put together a "bill of materials" which gives an indicative price of around £10.00, as Martin points out - you'd not have gotten two games for that price "back in the day" ! The original BoM was based on the first version of the design, built on prototyping board, Mark Kinsey updated the BoM to reflect the final design using a custom PCB.

I should mention that the name, MAGROM, wasn't some egotistical contribution from Martin - it came from the directory I created to put the files in when I created the web page and I quite liked the name! You can think of it as :-

 

Martin Allcorn's Games ROM

 and / or,

Memotech Advanced Games ROM

or,

Menu Accessible Games ROM

 

Jump to the Overview

Firmware Version 2.0 09/03/2017

The 512k version 1.x ROM included 38 MTX games that could be run on MTX500 machines and above. This meant that some of the best games and games that are only available in .mtx (tape image) file format could not be used. Martin has modified the MAGROM firmware to support .mtx files, including those that used multi-part loaders. The Version 2 ROM is compatible with all versions of MAGROM hardware and is available for download in the firmware section on this page.

Martin has written a description of the Version 2 ROM - see this page for details

 

MAGROM Version 1.1 31/01/2017

There has been some renewed interest in MAGROM, with a number of people asking to be added to the waiting list that I started in order to gauge when/if it was worth getting another set of PCBs fabricated. It has now gotten to the point where it is economically viable to do another run of PCBs. Version 1.1 of the PCB has been designed which will address the two incompatibilities noted below.

The functionality of the board is unchanged, but some notes on the Version 1.1 board changes can be found on this page.

The boards have now been committed to manufacturing, if you are interested in getting one, please drop me an e-mail.

 

Compatibility : 28/01/2017

An incompatibility was discovered with MAGROM in late 2015 when the owner of a French language model MTX reported that MAGROM would not run on his system. The problem is due to the fact that his machine has a "piggy back" language ROM installed which uses the ROM7 line that MAGROM needs to run. (The presence of this language ROM would also prevent original Memotech games ROMs from running.)

It appears that Memotech may have implemented foreign language support differently on some machines than on others. I have had good reports from users of German language model MTXs and no complaints from another user of a French language MTX, so it seems that not all foreign language machines have "piggy back" ROMs installed.

If you are interested in purchasing MAGROM, please check for the presence of an additional language ROM in your MTX before purchases - please contact me for details if you need assistance.

 

Compatibility : 29/04/2014

MAGROM has been tested with standard MTX500 and MTX512 computers and should work without modification on an RS128.

The current version is not compatible with Andy Key's REMEMOrizer due to the way that REMEMOrizer makes 384K of RAM available in ROM mode, more than a standard MTX was able to provide and more than the current MAGROM design can cope with. This is particularly problematic for users who have removed the original OS ROM to allow REMEMOrizer to provide Andy's enhanced OS ROM as the original ROM would need to be replaced to allow MAGROM to work.

Martin has worked out how the MAGROM PCB can be modified to allow MAGROM to coexist with REMEMOrizer, the details can be found on this page. It is highly likely that an upgraded version of the PCB will be created to better cater for REMEOrizer users.

 

Hardware

The board was designed to be as small as physically possible, originally it was intended to mount vertically on the left side of the keyboard like the original ROMPAKs, ideally it would have been no higher than the case edge, at the front of the keyboard the clearance is only just over an inch.

However due to extremely tight clearances, the prototype was built horizontally. The total size of the prototype including the edge connector is 2.5” by 4” (65mm x 100mm). A longer, thinner board of approx. 6” by 1.5” might be possible. The prototype is fitted with a 512k byte flash, and with a change of jumper settings could take a 1meg EPROM. A further jumper is there to select the computer type, the prototype has been tested on a MTX500 only, but the software in the ROM should be able to also identify the MTX512 or RS128, and in conjunction with the machine setting, work on those as well.

How it Works

The HC32 chip, U1 on the KiCad schematic, is used to combine the Z80’s active low write (WR) and I/O request (IORQ) signals into a combined (active low) IO write signal and also read (RD) and memory request (MREQ) into a single memory read. The other 2 gates are unused, and their inputs tied to 0v.

On start up, the MTX OS scans the paged ROM space at 02000h looking for the auto start signature, if it’s found, then the ROM is entered by a jump to 02010h. The controlling ROM therefore has to be paged in for the address block 02000h to 03fffh. This is done by one of the 3 HC138 chips, U5. The 3 address selectors, on pins 1-3, are fed with R0-R2 from the edge connector, and the chip enables are connected A13 to the active high pin 6, while A14 and A15 go to the active low enables. This ensures the output is low only in the correct memory region. I’ve chosen to use the ROM7 select, but any of ROM2-ROM7 could be used if the ROM code is adjusted accordingly.

In addition to providing the control software the ROM also has to hold the game images. This is to save board space, as otherwise space would have to be found for a 28pin 8k EPROM as well. The MTX’s memory map, changes between the various models, but if you believe Andy’s Memu pages and the original MTX manual, they all have one thing in common. The final page of RAM will have a half page that runs from 08000h to 0BFFFh. (If you have a look at both the old manual on page 246, and the new one on page 244 you’ll see they disagree about the half page’s position for the 128k expansion.)

For the MTX500 it’s page 0, for the MTX512 it’s page 1, and the RS128 it’s page 3. The data part of the ROM is paged in in the RAM memory map between 04000h and 7FFFh, so as not to cause a bus clash, the page used has to be adjusted manually depending on the model. The software expects there to be RAM above the ROM. The HC138 U6 has A14 connected to the active high enable, and A15 and P3 connected to the active low, P0-P2 are connected to the address selectors. The outputs will therefore be active for the correct region,

The T shape jumper on the prototype is use to select which one of the 3 outputs Y0, Y1, Y3 is treated as the second ROM select signal. If you’re building a board for a specific model you could leave that out, and connect the relevant output direct. I couldn’t find a T jumper setup on KiCad so there’s a 3 pin connector and a 1 pin connector for a wire link. Whichever ROM select is used, it’s connected to one of the AND gates on the HC08, U2, along with the ROM7 signal from U5, to form the combined ROM select signal.

In order to select which 16k page of the ROM appears, I’ve used a quad input NAND, U4 to detect 0FFh on the lower part of the address bus. The 2 outputs are fed into the active low select of the 3rd HC138, U3. The active high select is tied high. Feeding the I/O write signal to the A0 address selector on the chip means that the Y0 output will go low for port 0FFh, that signal is fed to the latch input on the HC273 octal flip flop, U7. The master clear input is attached to reset, so that it’s always page 0 selected on power up. It’s the same latching system that Memotech used for the paging bits on port 0.

Using one ROM for 2 jobs adds in a complication, which I hadn’t appreciated when laying out the prototype. When accessing the ROM7 all the paging bits need to be zero, as you want address 02000h, not 02000 offset in whichever page is active, the paging bits only need to be active when accessing the ROM as data. The prototype only has one HC08 on board, the schematic shows 2.

On the prototype the lowest 3 signals from the flip flop are AND'ed with A14. The result of this is that they are forced to 0 in the ROM area, but allowed to pass un-altered if the access is in 04000H – 07FFFh area. The schematic shows all 6 being dealt with. In practice this means that the ROM control software that appears at 02000h in the ROM, has to be duplicated on the prototype to appear at 022000h, 042000h and 062000h as well. This isn’t a major issue, as it just means that the game occupying the 1st 9th, 17th and 25th pages needs to be 8k or smaller. In looking for suitable games I found at least 8 that were small enough. That’s the hardware.

Software

This is an 8k ROM image though only takes up about 1/3 of that, and less than 1/3 of THAT is code, the rest is data. Because the MTX’s OS auto run’s the ROM very early in the start-up sequence. I [originally included] a character definition table, as the VDP isn’t setup at that point. [In the original version, for simplicity everything ran in text mode, however, the finished design uses a fixed bitmap display.] Similarly the sound chip needs to be dealt with, as it doesn’t default to silence on power-up.

All the games included are in the same format as the .RUN files used on the SDX and FDX. They are stored in the ROM as a single block occupying 1 or 2 pages, the first 2 bytes are the loading address, the next 2 the size. The rest is the data, they’re all started by a jump to the load address. Only games that load as a single block, and that are assembled to run on the MTX500 will work. Anything that relies on BASIC won’t work as BASIC isn’t active, so Snappo, the Sloopy games and a few others aren’t candidates for inclusion. Certain games attempt to exit to basic when you quit (Reversi and Alice are examples) that’s trapped and the menu re-loads. What I’ve not been able to test is whether any of the games I have on the prototype attempt to do any memory paging, they don’t need to, but it is possible that they may try to force page 0, which would crash anything other than a MTX500.

Copyright

Martin has placed the source code for the ROM builder into the public domain, you can download a copy from the link further down this page. The majority of the games themselves have not been formally released into the public domain and, although they are widely available for download from the internet, they remain copyrighted works of their original authors/publishers - the majority of the publishers and many of the authors appear to be lost to the annals of time, however, if the original author or publisher objects to distribution of this legacy software in this way, if they get it touch, the relevant program(s) can be removed from the ROM image.

 

Martin's Games ROM Menu running on an MTX500

Running the latest version of the software, version 1.04, which includes Martin's Text Mode Invaders, released at Memofest 2014.

Martin's Games ROM Menu running on an MTX500

Running the "finished" version of the software, version 1.00, with 38 games loaded, this requires a 512k ROM.

There is also a smaller version of the software available, this is suitable for loading into a 128k ROM and contains a subset of 15 of the best games.

Version 2 ROM (Released 2017)

Martin has released a ROM update which includes another 19 games. This ROM requires 64k of RAM, i.e., an MTX 512 or better.

The games are some of the most popular on the MTX but not suitable for MAGROM until Martin developed a multi-part loader.

This page was originally used to document the development of MAGROM as it progressed, much of that content is no longer relevant, now that MAGROM is finished. I think that the details are still interesting though, and they have been moved to the MAGROM development page.

Flash Image

Martin has imaged his ROM containing the program code and a number of MTX games that you can download from here. This is the "final" production release, version - 1.00 The ROM Software & Games

 

Flash Image - Custom / Development Versions

The ZIP files contain updated ROM images. If you have an EPROM programmer, you can download the appropriate file and re-program the Flash chip yourself.

Alternatively, if you return the board to me, I will reprogram it for the cost of return postage (£3.25)

A further option is that I can supply a replacement Flash chip for £5.50, including P&P within the UK

1.02

Adds REMEMOrizer compatibility. (requires a small amount of patch wiring)

(- remains compatible with unmodified MAGROM, without REMEMOrizer)

 

The MENU can be re-started from BASIC using the "ROM 7" command

1.03sp Swaps space bar function - hit <space> at boot time to bypass MAGROM start-up
1.04 Released at Memofest 2014 - contains a new game - Text Mode Invaders
1.05 Added support for ROM6 introduced in hardware Version 1.1
1.05a Patch to correct corruption in Rolla Bearing game (seen at game Level 13)
Version 2
2.0 Version 2 ROM with an alternative set of games, supports multi-part .mtx files
2.06 Version 2.0 Modified to support MFX and REMEMOrizer

 

 

Source Code
The source code. Showing his Acorn history, the ROM builder is written in BBC BASIC, on a RISC PC. The Z80 assembly is for a home-brew assembler that uses BBC style labeling. 

10/01/2014 : Updated for Software Version 1.0 (Current Versions)

ROM Builder
Z80 Assembly
09/03/2017 : Version 2 for "The MTX512 Collection"
Z80 Assembly
01/07/2019 - Alternative Assembler Available

Until recently, the source code for the firmware in our Memotech hardware projects could only be assembled without modification if Martin's assembler was used. The assembler was written under BBC BASIC for RISCOS which meant that very few people were in a position to assemble the code themselves. Bill Brendling has released a new Z80 assembler written in Python that supports a number of formats, including Martin's assembler format. Bill's program is available for download here.

 

Change Log - Firmware

1.0

Initial Release

1.01

(not released)

1.02

The MENU can be re-started from BASIC using the "ROM 7" command

Can work with REMEMOrizer with 384K of RAM (requires some patch wiring)

1.03

Changes the boot process. MAGROM starts by default, pressing the space bar when starting or resetting the MTX bypasses MAGROM start-up.

User (SP) requested, to have MAGROM automatically load without user input to make it easier for people unfamiliar with MAGROM when used at events

1.04

To be released at Memofest 2014 - contains a surprise new game !

1.05 Added support for ROM6 introduced in hardware Version 1.1
1.05a Patch to Rolla-Bearing (fixes corruption in original game file seen at Level 13)
Version 2
2.0 Alternative ROM with replacement games, supports multi-part .mtx files
2.06 Version 2.0 Modified to support MFX and REMEMOrizer

 

Change Log - Hardware

1.0

Initial Release

1.0a

Functionally as V1, cosmetic change only, added jumper ID labels to silk screen print

1.1 Added REMEMOrizer compatibility fix and jumper selectable ROM ID
Errata: The REMEMOrizer and RS128 jumper labels are reversed.

 

 

 

mailto: Webmaster

 Terms & Conditions