Computers Overview
Commodore PET
Sinclair ZX80
Sinclair ZX81
BBC Micro
Sinclair Spectrum
Memotech MTX
              80 Column
              Video Modes
          File Transfer
          Special Fit
      Hardware Hacks
      Legacy (1980s)
      PAL Reader
      PC Keyboard I/F
    User Groups
    Video Wall
Memotech CP/M
Atari ST
DEC 3000 AXP
Raspberry Pi



The Memotech MTX Series

Memotech Compact Flash System


MTX CFX Boot Screen

CF Card Directory

         I/O Port Range 
          Design Constraints
         Compatibility Matrix  
         Compact Flash format 
         Design & Build 
         SDX ROM 
         CP/M ROM 
         ROM Selection 
         Source Code 
Operator's Manual - Version 1.4 (Firmware Build 147)
Operator's Manual - Version 1.3 (Firmware Build 144)
Operator's Manual - Version 1.0 (Firmware Build 103)
 one ?)


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.

To provide Memotech MTX owners with reliable and convenient way of loading games programs into the MTX, Martin Allcorn designed MAGROM, 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. For full details of MAGROM, including how to buy one should you be interested, check out the MAGROM pages.

Although MAGROM is a great way of loading games, being ROM based, it is read-only. Martin has now gone a step further and designed a Compact Flash based "floppy disk" system to provide low cost read/write storage for the MTX computer, called the Compact Flash System, CFX.

CFX is a spin off of the Compact Flash storage system developed for MTXPlus+, our modern day, fully compatible, MTX "super computer". It uses a modified Memotech SDX ROM to give an MTX computer the ability to load and save data from a CF card using MTX BASIC "USER" extensions. Both CFX and MTXPlus+ make extensive use of the code developed by Andy Key for his MEMU, REMEMOrizer and REMEMOTECH projects described on the Memotech pages on his website.

CFX is self contained - it does not require any modifications to the MTX motherboard ROMs.



CFX comprises of an 82C55, CMOS Peripheral Interface Adapter (PIA), an SSTSF010 128 kB x 8 CMOS Flash and few 74HCT chips performing simple logic functions (NOT, AND, NAND, NOR). The PIA is used to communicate with a Compact Flash card reader in IDE mode.

I/O Port Range

In Memotech's original design, I/O ports below 20h can be provided by the motherboard and internal/external add-ons. Ports 20 and above were to be provided from within the FDX, the SDX ROM used ports 10h to 14h.

As with MAGROM, I wanted the flexibility to be able to mount CFX internally, thus board space is at a premium. With the small number of logic gates in the footprint available for 74 series logic, the range of I/O decode lines is very limited, so CFX uses Z80 I/O ports 6C to 6F. This port range was not used by Memotech and is shown as available on Andy Key's list of I/O ports used by Memotech and for modern day add-ons1.

Design Constraints

As with MAGROM, to provide maximum flexibility, I wanted the option of being able to fit the CFX board to either the internal or external MTX bus connectors, in a similar way that Andy has done with his MTX Memory Card. Again, like MAGROM, Martin is developing an option to allow CFX to be enabled (or not) when resetting the MTX. This will allow the board to be left connected when not being used, even when mounted externally, this feature will save wear & tear on the edge connector - they are not meant for frequent connect/disconnect operations.

As Andy points out, there is very little clearance between the bottom of the MTX keyboard PCB and the surface of the computer board and any expansion cards. Therefore, for the board to be suitable for internal installation, the components need to be placed as far up the board, towards the rear of the case, as possible. This was not a problem for MAGROM as it only used 1 x DIP600 and 5 x DIP300 packages, but the required board space for CFX is significantly greater, with 2 x DIP600, 4 x DIP300 packages as well as a 40-pin IDE header.

As well as the depth constraint, there is also a limit to the width of an internal board if it is to be compatible with the existing range of MTX expansion boards, RAM or ROM, and the RS-232/FDX interface board.

This sketch, reproduced from the FDX manual, although not dimensioned, is pretty much to scale; the dotted outline shows the size of the MTX case in relation to the motherboard.  

The area to the right of the motherboard was intended for Memotech's expansion cards - initially, RAM, ROM and the RS-232/FDX Interface boards.
Each of these boards was half the width of the expansion card area, i.e., up to two expansion cards could be installed internally. (A combined 80-column/RS-232 board, taking up the full width of the expansion card area was released later but is not relevant to this discussion, since it was meant to support Memotech's own disk based CP/M add-on using a disk interface connected the the cartridge port on the left hand side of the case. If you have one of those, you probably don't need CFX.
The most common expansion card seen is the RAM extension card, due, in no small part, to Memotech's common practice of selling an "MTX512" that was made up of an MTX500 motherboard with an additional RAM board fitted with the extra 32kB of memory.

I expect that this was due to Memotech having a surplus of MTX500 boards when the MTX512 was released. 

This wasn't normally a problem unless the user wanted to install more than 1 additional board - at least until the 80 column board was released when MTX owners could get a nasty shock when opening up the case to try and fit it!

It may not be clear from the sketch, but the RAM (and ROM) boards had an edge connector plug on the left and the right hand side had a pass through board edge connector to allow a second card to be plugged into it.

To allow one of my expansion cards (CFX or MAGROM) to be installed internally by as many MTX owners are possible, the cards need to be no wider than one of Memotech's expansion boards, i.e., ~80mm.
However, the situation is complicated by the RS232/FDX Interface board shown fitted in this sketch. For clarity, the SM1  bus interface cable is shown going off to the right but in practice, it was folded back on itself and exited the case at the rear.

This board does not have the MTX bus pass through connector and must be installed to the right hand side of the motherboard or other board.
This creates a potential issue for prospective CFX users who's MTXs already have an internal expansion card fitted, either by accident (Memotech installed), or design (user installed). Obviously, if two boards are already fitted, then CFX can only be fitted externally, and if no boards are fitted internally, then CFX can be used either internally or externally.

Where a single board is already fitted internally, the type of board dictates whether CFX can also installed internally. If the existing expansion board is a ROM or RAM board, then CFX can be installed alongside it, however, if the board is an RS232/FDX Interface board, then, CFX must be installed externally as neither board has a pass-through connector. I did consider trying to include a composite connector at the right hand side of the CFX board that could accept an edge connector plug for external use and also have a pass through board edge connector for internal use but decided that the effort involved was not warranted given the very small number of people who would need it.

The table below shows the compatibility matrix for CFX, MAGROM and REMEMOrizer with MTX computers :-

Compatibility Matrix Internal (1) External (2)
Internal Devices
Motherboard only            
MTX Memory (ROM/RAM) 3 3      
MTX RS232 (RS232)     4   4
CFX (CFX)          
MAGROM (MAG)         5
External Devices
CFX (CFX)          
MAGROM (MAG)          
REMEMOrizer (REM)   5      
Notes :  
1    Limited to a maximum of 2 internal boards (only 1 non-Memotech board)
2    Limited to a maximum of 1 external board
3    The additional board must be installed in "Slot" 2
4    The RS-232 board requires a replacement PAL
   (Replacement GALs are available for use with REMEMOrizer & CFX)
5    MAGROM requires some patch wiring

Compact Flash Interface Connector 

The standard parallel ATA (IDE) connector used a 40-pin header type connector with position 20 used as a key, the pin was removed from the male header and the position blocked on the mating female connector.  
Some Compact Flash cards, such as this one available on eBay, repurpose pin 20 and use it to supply the power to the CF card.

To avoid the need for a power connector on the already congested CFX board, pin 20 is used to supply 5VDC from the MTX system bus to the CF adapter.

Note: I have found that the adapter works even without power on pin 20, I guess that it is harvesting power from the data lines, but this is probably not a reliable solution. If using an extension cable, ensure that all pins are connected.


CF Card Format

Memotech's disk systems supported a number of different disk geometries, but all used a CP/M filing system, making them incompatible with PC (DOS) formatted media.

CF Cards formatted for use in CFX will not be directly accessible by, for example, PCs running Microsoft Windows in the same way that SD Cards formatted for Andy Key's REMEMOrizer and REMEMOTECH aren't.

The easiest way of transferring files between CFX and a PC is to use Andy's CP/M file system support tools for Linux (cpmfuse) and Windows (cpmcbfs). These allow a CP/M image to be mounted by the Operating System and makes it easy to transfer files between the OS and MTX "disks". Full details of cpmcbfs are on Andy's site but you can also see my brief usage notes on my File Transfer page.



The CFX ROM provides versions of both the MTX SDX BASIC ROM and a CP/M ROM based on Andy's SCPM ROM.


The Memotech SDX BASIC ROM added disk functions to MTX BASIC through USER commands, such as USER LOAD, USER SAVE, etc. These commands loaded and saved files in Memotech's .BAS format. Andy describes the structure of .BAS files on the formats page in the MEMU section of his Memotech site.

The same page also describes the structure of .RUN files, Memotech supplied some games in this format for systems with the SDX ROM. They were executed by the USER RUN command from BASIC.

These days, the majority of Memotech software is available in .mtx files, described by Andy as "disk files containing the same bytes, in the same order, as would be found on an MTX cassette tape." These files are used by most emulators, including MEMU and hardware enhancements such as REMEMOrizer but were not supported by the original SDX. Given the prevalence of .mtx files in the Memotech software library, Martin has added a USER MTX command to the SDX ROM in CFX to support loading of .mtx files from SDX BASIC.



Andy's SCPM ROM was written to enable CP/M to run on a Memotech computer without the need for an 80-Column card, the MTX VDP was used to generate a low quality 56 column text mode. Andy also patched NewWord to run in this 56 column mode. The SCPM ROM was eventually used in Memotech's Video Wall product.

I was keen on having a CP/M mode in CFX, but wasn't actually clear on when I would use it. As it turns out, CFX CP/M mode does have a significant advantage over SDX mode in certain cases. Due to the way that the CFX "disk" code works, program loading from SDX BASIC takes considerably longer than loading a comparable program from CP/M, for example, TURBO.RUN takes 4.6 seconds to load in CFX SDX mode, while TURBO.COM is near instantaneous from CFX CP/M mode.

Similar to Andy's SCPM text mode, Martin created a 62 column text mode for CFX. The screenshot shows the CFX CP/M boot screen with the CF card configured to have four 8MB partitions, assigned to drives B:, C:, D: and E:

A 320Kb RAM disk has also been configured, obviously, this is only a valid configuration if the host computer has sufficient RAM available, i.e., more than the standard 64kB available to an MTX512.
Similarly, Martin patched NewWord to use the 62 column mode as shown here. The 80 column version of NewWord can be patched from SDX BASIC as follows :-
10 USER READ "N.COM",20000
20 POKE 20487,62
30 POKE 21300,54
40 POKE 21301,50
50 USER WRITE "N62.COM",20000,5376
Whilst it would not be fun to use for extended periods, the 62 column format is perfectly useable.   
As described earlier though, CP/M mode allows .COM games to load much faster than from SDX BASIC.    


CFX ROM Selection

Since CFX can co-exist with MAGROM and also has two different ROM images available, there has to be a mechanism for selecting the appropriate ROM to call when the MTX is powered on or reset. The MTX OS ROM checks for the presence of option ROMs in sequence, e.g., ROM 4, ROM 5, ROM 7, the CFX CP/M ROM is implemented as ROM 4.

After power on or reset, the MTX will boot from the CFX ROM, display the CFX splash screen and check for the presence of a "disk" (CF Card) in the card slot.

If a card can be read, the other boot time options are displayed for information and the user prompted to "Press <RET> to enter SDX BASIC".
If the "drive" cannot be read within the configured time-out period (currently ~15 seconds), a warning message is displayed and the remainder of the splash screen is displayed.

Pressing the <RET> key will enter SDX BASIC, albeit that there will be no "disk" available unless the CF card hardware is present and a card is inserted.
Selecting "I" from the boot screen brings up a helpful crib sheet showing the additional commands available from SDX BASIC.

Pressing <RET> continues to SDX BASIC
The boot time options are :-
Key combination (Reset + < key >) Mode
<M> MTX - no CFX or MAGROM support
<space> MAGROM
(none) CFX Boot ROM - displays Splash screen
  [   <RET> enters CFX - SDX BASIC   ]
  [   < I >   Displays SDX USER crib sheet ]
As a result of the ROM processing order noted earlier, there are a couple of incidental effects that can be used when hitting <RET> to exit the boot screen :-
<space> + <RET> boots MAGROM
<space> + <alpha key> boots MAGROM and loads the game found in the slot matching the key pressed, e.g., "0" would load Agrovator

Martin's CFX prototype board, configured for connection to the MTX cartridge port.

The prototype board uses a ZIF socket for the ROM for ease of changing the chip as new versions of the firmware are developed.
Solder side of Martin's prototype board - another example of Martin's excellent soldering and layout skills.
I took Martin's design and made a couple of small modifications, mainly to incorporate the second edge connector to allow the board to be fitted to both the J0 (internal) and J10 (external) bus expansion connectors.

Note: only the subset of the MTX bus signals used by CFX are passed through the board, CFX must be the rightmost PCB if installed internally.
As with MAGROM, to enable the board to be fitted inside the MTX case, the components had to be pushed as far up the board as possible, constrained by the maximum PCB size of 100mm set by the price point of the PCB fabricator.

After a few iterations, the final component placement and routing of the PCB resulted in the design shown.
The KiCad 3D view of the PCB, the yellow components are decoupling capacitors fitted inside the IC sockets to save space on the board.

Once the layout was finalised, I sent the design off for manufacturing and waited nervously for their arrival!
The first run of PCBs, the good news is that it works! There are a couple of cosmetic changes that I am going to make if I get any more produced :

  - the chip names are obscured by the sockets
  - the IDE "Pin 1" label is obscured by the connector
  - the "CFXSystem" logo could be bigger 
The size of the Memotech option ROMs was 8kBytes, for CFX we need space for the SDX and CP/M ROMs, i.e., 16kBytes in two 8kByte "pages". Address lines A0 to A12 can address 0 to 8191d locations, and A13 allows a second block of 8kB to be addressed. In CFX, the Page Port R0 line is used to select the appropriate ROM page.

CFX was designed to use Flash storage, although only 16kB is used, larger devices can be used if available.
CFX can also use EPROMs provided that it is acceptable for the programming voltage on Pin 1 to be 0v in normal operation.

A selection of compatible Flash and EPROM devices are shown in the table - the component datasheets are available by clicking on the hyperlinks.
Device Type
SST39SF0?0 ???k x 8 Flash
W29C020C 256k x 8 Flash
W27C010 128k x 8 EPROM
W27E010 128k x 8 EPROM
The first PCB after assembly, ready for testing ! 

I have used a right angled IDE header so that the CF reader will lie flat when CFX is connected externally or a 40-pin IDC cable can be easily taken out of the back of the case if CFX is installed internally.

I did not want to go to the expense of using a ZIF socket, but as the ROM code was likely to change, I did use a turned pin socket for the ROM as they are more robust than the cheapo spring type sockets used for the other ICs.
CF Adapter plugged into the IDE header.

You can see that the CF adapter power connector is not being used, power is being taken from the MTX system bus and fed to the CF adapter via pin 20.
CFX Being demonstrated at Memofest 2015

CFX is now available for purchase - drop me an e-mail if you are interested.
A close up if Paul's externally mounted CFX

(Photo courtesy of Paul Daniels)
If the MTX does not have any internal expansion boards already installed, both the CFX PCB and the Compact Flash reader can be fitted inside the MTX case.

As you can see, the PCB fits close to the AV port connections and the large capacitor that overhangs the MTX computer board, so the fit is very tight, but workable.  

Source Code
The source code.

The Z80 assembly is for Martin's home-brew assembler that uses BBC style labeling. The Assembler is in the form of a zipped ARCFS archive. Read the "instructions" file for more details and restrictions on its use.

17/10/2015 : CFX Duo 144

The code
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
NB: For CFX Version 1.0 Only !

For upgrades to CFX Version 2, see this page
binary source  
  CFX Duo 17 (Build 16 January 2024)
Updated to include Bill Brendling's Extended Storage ABI developed for MFX.
The archive includes copies of :-, run HEXTRAIN (CF card must have the HEXTRAIN data partition), provides support for CF cards with a FAT partition
  CFX Duo 15 (Build 153, 02 April 2018)
Minor patch to Build 151
Adds support for additional PS/2 key codes available for MTX PS/2 keyboard
(Does not affect use of CFX with standard MTX keyboard, but has no advantages over Build 151 in that scenario)
  Replacement GAL16V8 logic for RS-232 Interface board configuration PAL
Disables the FDX Interface while preserving RS232 functionality
Only required when a Memotech RS232/FDX Interface is installed with CFX
  CFX Duo 15 (Build 151, 03 December 2017)
Bug Fix : Corrects corruption to A register from the video driver when using some CP/M software
  CFX Duo 14 (Build 147, 28 December 2016)
Enhancement : Added additional commands from MTXPlus+
    USER RESET, reload CP/M and log on to Drive B
    USER DRIVE "X", change logged drive (B to E)
    USER VREAD "filename",0    load up to 16k of the named file into VRAM
    USER VWRITE "filename",0    save all 16k of VRAM to the file
CFX Duo 14 (Build 144, 17 October 2015)
Enhancement : Added USER HELP to display USER Command Help
Bug fix : Corrected duplicate "CF Initialised" message under SDX BASIC
Bug fix : Better handling of entering "ROM 5" with no CF attached
CFX Duo 13 (Build 132, 11 October 2015) - Cosmetic changes to boot screen
CFX Duo 12 (Build 103, 21 August 2015) - First public release
If the firmware in your CFX is not at the latest version shown above and you have an EPROM programmer, you can download the latest firmware and upgrade CFX yourself. If you would like an upgrade to the latest firmware but do not have the means to do the upgrade yourself, I will do it for you for no charge, other than the cost of postage. Drop me an e-mail if you need this done.



Change Log - Hardware


First production board, committed to manufacturing, 16/08/2015


The IDE Connector "Pin-1" identifier should be repositioned

The IC identification labels are obscured by the sockets





I am now taking orders for CFX, please send me an e-mail if you are interested in buying one. The price is 47.50 + postage, plus any applicable payment fees, e.g., Paypal (unless you pay the fee).


The standard build of CFX is for external mounting, if you want to mount CFX internally, please check that you have adequate space inside the MTX, please contact me for advice if you are unsure. The internal option requires an additional edge connector and an IDE extension cable, there will be an extra charge of 5.00 for an internally mountable CFX, depending on the configuration of your MTX, the CF card reader may be installed inside or outside of the MTX case.




Note : For your convenience, I will include a selection of MTX software on the CF card, for the avoidance of doubt - you are not paying for this software. Although the majority of the included software is still under copyright, it is freely available in various places on the Web, including my software download pages.


Although it is extremely unlikely that the copyright holders, even if they are still around, would want to assert their rights to the software, it should not be distributed for profit. The price of CFX covers the cost of design, manufacturing and assembly of the hardware only.


Please also note that, although the CF card contains a large number of programs, although the majority will, not all programs will run on the system, there are no guarantees with the software ! (The files that won't run are predominantly "tape" format files (.mtx) that use multi-part loaders.) Although I have tried much of the software, there are many items that have not been tested, I have put together a "rough 'n' ready" list of what is on the first partition, if you can share your experiences, I will update the spreadsheet.


Updated 11/05/2020
Total Files 204
Useable from CFX 127
Unusable from CFX 53
Not Tested 24



Although CF Cards are relatively cheap, they are not as common as SD cards and usually require an external reader to be used with a PC. Many PCs have built-in SD card readers, so for more convenient file transfer, I can supply a CF to SD card adapter and an SD card instead of a CF Flash card for an additional 10.00.


First Production Run (Available September 2015)
Board Rev Firmware+ Serial Connector Configuration, Feedback


1.0 Build 153 1 Both - Tested, Working DS
1.0 Build 153 2 External - Tested, Working MA
1.0 Build 103 3 External - Received, Tested, Working AK
1.0 Build 103 4 External - Received, Tested, Working PD
1.0 Build 144 5 External - Received, no feedback JW
1.0 Build 103 6 External (kit) - Received, Assembled, Working MK
1.0 Build 144 7 Both (Internal) - Received, Tested, Working CM
1.0 Build 144 8 External - Received, Tested, Working TS (fi)
1.0 Build 144 9 External - Received, not tested RCM
1.0 Build 144 10 External - Received, Tested, Working TB
Shipping address UK unless otherwise noted (by Country Code)
For firmware upgrades, see here


Second Production Run (Available November 2015)
Board Rev Firmware+ Serial Connector Configuration, Feedback


1.0 Build 144 11 External - Received, Tested, Working MC
1.0 Build 144 12 Both (kit) - Received, not tested PA (dk)
1.0 Build 144 13 External - Received, Tested, Working (SD option) FZ (it)
1.0 Build 144 14 Both (kit) -Received, Assembled, Working BG
1.0 Build 144 15 External - Received, no feedback JV (fr)
1.0 Build 144 16 Both - Received, Tested, Working RB (mt)
1.0 Build 144 17 Both - Received, Tested, Working (SD Option) VP (it)
1.0 Build 144 18 External - Received, Tested, Working JS (de)
1.0 Build 144 19 External - Received, no feedback AC
1.0 Build 144 20 External - Received, no feedback MG
1.0 Build 144 21 External - Received, Tested, Working NB
1.0 Build 144 22 External - Received, not tested RC
1.0 Build 144 23 External - Received, no feedback MS (de)
1.0 Build 144 24 External - Received, no feedback NK
1.0 Build 147 25 Both (Internal) - Received, Tested, Working SU
1.0 Build 147 26 Special - Received, Tested, Working SU
1.0 Build 147 27 Internal - Received, no feedback YP (at)
1.0 Build 147 28 Special - Received, Tested, Working IU (fi)
1.0 Build 151 29 Both - Received, no feedback GM
1.0 Build 153 30 External -  Received, no feedback CD (us)
Shipping address UK unless otherwise noted (by Country Code)


Third Production Run (Available July 2020)
Having held the original price since 2015, I'm afraid there now needs to be a small increase to the base price.
Effective from 1st July 2020, the price has increased 50 + postage
Effective from 15th March 2022, the price has increased 55.00 + postage
Effective from 1sth March 2024, the price has increased 60.00 + postage
Board Rev Firmware+ Serial Connector Configuration, Feedback


1.0 Build 153 31 Both (Internal) - Received, no feedback SS
1.0 Build 153 32 Both (Internal) - Received, Tested, Working RS
1.0 Build 153 33 Both (Internal) - Received, Tested, Working PS
1.0 Build 153 34 Both (Internal) - Received, no feedback JJ
1.0 Build 153 35 Special - Received, no feedback NB (jo)
1.0 Build 153 36 Both (Internal) - Received, Tested, Working NB (jo)
1.0 Build 153 37 External - Received, Tested, Working PH (fi)
1.0 Build 153 38 External - Received, no feedback PV (gr)
1.0 Build --- 39 Available to order  
1.0 Build --- 40 Available to order  
1.0 Build --- 41 Available to order  
1.0 Build --- 42 + PCBs in stock - parts required  
Shipping address UK unless otherwise noted (by Country Code)
For firmware upgrades, see here




1 Andy Key's Memotech Hardware page

2 Que Publishing, Upgrading and Repairing PCs, 21st Edition, ISBN-13: 978-0-7897-5000-6. Sample Chapter : The ATA/IDE Interface



mailto: Webmaster

 Terms & Conditions