|
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 |
|
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. |
|