X-MEM/80
A Minimally Invasive Memory Extension for the TRS-80 Model 1 and III
Authors: Michael Wessel and Mark Pruden
License: GPL 3
News
October 1st, 2025
- Official release of the Github and X-MEM/80 for the Model III.
September 20th, 2025
- Official release of the Github and X-MEM/80 for the Model 1.
About
X-MEM/80 is a 512 KB paged memory expansion for the TRS-80 Model 1 and Model III. No permanent modifications are required for installation. The Model 1 version is entirely external (via expansion port edge connector), and the Model III version simply plugs into the existing Z80 socket on the Model III motherboard - the CPU needs to be relocated from the Model III motherboard onto the X-MEM/80 board, but it is already socketed. No motherboard modifications are required, but the RF shielding in the Model III needs to be removed.
Unlike previous memory expansions for the Model I (i.e., SuperMem), this is a minimally invasive memory expansion that does not require any soldering for installlation.
X-MEM/80 is partially SuperMem compatible, as it allows to "bank" the
upper 32 KBs (address range from 0x8000 to 0xFFFF) with the memory
on the card.
A jumper allows configuration in two different modes - SuperMem and X-MEM/80 modes:
-
in SuperMem mode, it offers 16 pages of 32 KBs, which are mapped into the
0x8000to0xFFFF(= upper 32 KB) range. To select the page number,out 67,<page number>is used. The page number can also be read back viainp 67. Unlike SuperMem, X-MEM/80 does not allow to bank the lower 32 KBs of the Model 1 memory. However, the existing SuperMem software (see below) doesn't seem to use this mode anyway, and works fine with X-MEM/80's SuperMem mode. -
in X-MEM/80 mode, it offers 32 pages of 16 KBs, which can be mapped to the lower and higher 16 KB page of the upper 32 KB range, i.e., the lower 16 KB page from
0x8000to0xBFFFand the higher 16 KB page from0xC000to0xFFFF. To select the lower 16 KB page,out 65, <lower page number>is used, andout 66, <higher page number>for the higher 16 KB page. Note that it is possible to map the same pysical 16 KB page into both the lower and higher address range (but this is usually not desirable).
The config jumper is shown in the top left corner here:
For the Model III version, a 3-pin 2-position switch can be used:
Model 1 Version
It plugs onto the Model 1 expansion port, either directly using the edge connector:
or via a short cable:
It can be used with or without the Expansion Interface (EI).
If used without EI, then you will have 48 KBs of RAM available to ROM BASIC (as well as the extra memory banks, of course):
If used with the EI, then it "shadows" (i.e., disables reads from) the DRAM memory installed in the EI. No modifications to either the Model 1 or EI are necessary:
Model III Version
The Model III version plugs into the CPU socket on the motherboard and works with any Model III regardless of internal memory configuration (no matter whether it has 16, 32, or 48 KBs installed):
Then, a cable with a 3-pin 2-position selector switch can be routed to the outside of the Model III case for mode selection:
The internal RF shielding needs to be removed - this won't affect Model III operation. Otherwise, you won't be able to close the case again. Careful with the monitor neck!! More than one person destroyed the CRT by breaking off the tube neck during re-assembly.
In addition, an extra 40 pin DIP precision socket is required and simply plugged into the existing Model III CPU socket. This provides a more stable connection, and, more importantly, adds some extra spacing between X-MEM/80 and the Model III motherboard. Note that there are electrolytic capacitors C217, C129, and C211 on the Model III motherboard (see the following picture) which will prevent X-MEM/80 installation without the extra spacing created by the precision socket otherwise:
Technical Details and Theory of Operation
Model 1 Version
-
Requires standard 5V "wall wart" power supply; 1 to 2 Amps, center positive.
-
TRS-80 expansion port pass-through - however, note that X-MEM/80 acts like a "man in the middle" and that it only lets through (memory)
RDandWRrequests over the passthrough connector that go to the lower 32 KB address range; i.e., all (memory)RDandWRrequests to the upper 32 KBs are handled by X-MEM/80 and hence not relayed over the passthrough connector (which goes to the EI, usually). Hence, you won't be able to use other external devices that also add memory to the Model 1 (e.g., the Quinterface) in combination with X-MEM/80. -
GAL22V10implements the address decoding andRD,WRsignal forwarding to the EI. Two74LS374latches are used as 4 resp. 5 bit registers for the low and high page number. -
Upon powerup, the two (lower and higher) page registers in X-MEM/80 are in an undefined state. Before loading and executing a program that relies on upper memory and bank switching, the
MEMRES/CMD(see below) should be executed to initialize the page registers to 0. Note that in X-MEM/80 mode (16 KB pages), both the lower and the higher page register are set to0, so the same 16 KB memory page appears both under0x8000and0xC000.
Model III Version
-
Plugs directly into the CPU socket of the Model-III.
-
Internal RF shielding needs to be removed.
-
No further power supply required.
-
Acts like a "man in the middle" between Z80 CPU and Model III CPU socket and only lets pass Z80 memory (MREQ) and IO (IOREQ)
RDandWRrequests from the Z80 CPU into the Model III CPU socket that address the lower 32 KB address range, as well as IO requests that are not for X-MEM/80. -
Jumper for model selection can be fitted with a three-wire cable that connects to a three-position switch to select 32 KB vs. 16 KB page size mode.
Demo Videos
You can get a better understanding of X-MEM/80's capabilities and features by watching these YouTube demo videos:
- Septandy 2025 X-MEM/80 Model 1 Demo Video
- Septandy 2025 X-MEM/80 Model III Demo Video
- Playback of larger than main memory MIDI files via X-MEM/80 Model 1 and MIDI/80
X-MEM/80 Diagnostics
You should run a memory test with your new X-MEM/80. I had (partially) defect Alliance SRAMs in the past. There is no X-MEM/80 memory test yet, but you can use Anitek's MEMTEST/CMD in 32 KB / SuperMem mode. You can also run a standard Model 1 memory test; in particular, some are even executing a "Worm Test" and run code from the upper 32 KBs, and not only writes and reads back random bist test patterns.
For the Model III, the software is identical, but I have included Model III LDOS 5.4.1 images with the memory test (BASIC and Anitek) programs for convenience.
With the Anitek's MEMTEST/CMD, you should see the following (note that it doesn't quite report the right amount of memory for X-MEM/80 in SuperMem mode), but it will still check the memory:
If you are getting errors here, then:
- check your connection / cables - maybe they are too long? Shielding them with aluminum foil might also help!
- clean your expansion port connector - make sure you are getting good contact!
- try running it again without extra peripherals. In my case, I got a memory error once and only when MIDI/80 was connected behind X-MEM/80. The timing on the bus is tight - if your cables are too long, you will run into problems for sure.
- try running it again without EI.
- try a different 5V power supply (noise in the PSU may also be a problem).
That being said, for me, X-MEM/80 is running stable, with both my Model 1's and my Model III. And my 2nd Model 1 even has a CP/M Mapper CPU card installed.
Software for X-MEM/80
Model 1 Software
You can find .HFE and .JV3 disk images
in the trs80/m1/ directory.
X-MEM/80 Diagnostics Programs and Utilities
This is the most important X-MEM/80 utility:
- X-MEM/80 reset software:
memres/cmd; can be found on most of the above disk images. In general, before loading and executing any program that makes use of X-MEM/80 oder SuperMem extended memory, you should reset the page registers to0with that utility. Else, if the program you are about to start is loading into and executing from the upper 32 KBs, then the first thing it might do is change the page number(s) (i.e., by initializing the page registers to0) and the program would "automagically" make itself disappear if it wasn't loaded into page 0 in the first place (i.e.,memres/cmdhadn't been executed prior to loading and executing the program).
To check proper operation of X-MEM/80 and its two modes, use the following two BASIC diagnostic programs:
- X-MEM/80 BASIC test software for 32 KB / SuperMem mode:
memtest/bas. Make sure to start LDOS BASIC as follows:BASIC(mem=32768)(else, BASIC will claim the upper 32 KBs). Use this program to test proper operation of X-MEM/80; you should see the following output with the X-MEM/80 jumper in the left = 32 KB pages / SuperMem position:![Memtest result]()
- X-MEM/80 BASIC test software for 16 KB / X-MEM/80 mode:
memtest2/bas. You should see the following output with the X-MEM/80 jumper in the right = 16 KB pages / X-MEM/80 position:
![Memtest 2 result]()
As already mentioned, you should also run a memory test with X-MEM/80. I had (partially) defect Alliance SRAMs in the past. There is no X-MEM/80 memory test yet, but you can use Anitek's MEMTEST/CMD in 32 KB / SuperMem mode.
SuperMem Software Compatible with X-MEM/80 in 32 KB / SuperMem Mode
Currently, the following SuperMem software has been shown to work; disk images have been kindly supplied by Jens Günther:
- LeScript 2.02.
Disclaimer: note that LeScript appears to be working, but that
the memory it reports doesn't seem to make sense. And I haven't
tested it thoroughly; it should be tested for text memory
"corruption" or text duplication on very long texts
at some point (probably requires a harddisk or FreHD in the
equation). The background here is that LeScript seems to always
assume that a "real" SuperMem is installed. Both
LeScript as well as the
MEMTEST/CMDprogram (below) incorrectly display an additional 64 KBs of memory. These programs are also displaying an additional 64 KBs with a plain (unextended) Model 1... so without any SuperMem or X-MEM/80 installed! Hence, I believe that the memory detection routines in these program are either buggy or simply assume another 64 KBs from an installed SuperMem, without actually checking for its presence. Both programs seem to be working fine, but I cannot gurantee that LeScript will not corrupt your very large text files as the exceed a critical page number / text length, as I don't know the details of the memory organization. However, it seems to assume that the 32 KB memory pages0x00and0x10, as well as0x01and0x11are independent pages, but they are actually identical physical pages with X-MEM/80. You have been warned! - MemTest. Like LeScript, the program will report and extra 64 KBs, even with a plain (unextended) Model 1... however, it is still successfully testing the SRAM it seems.
- Hyperdrive for LDOS.
- Sidekick for NEWDOS/80 by Jens Günther.
MIDI/80 + X-MEM/80 Software
MIDI/80 works with X-MEM/80 to enable playback of very large MIDI files. Check out the demo.
There are currently two MIDI playback programs:
loader/cmduses the 32 KB / SuperMem mode. Here is the demo disk from the above video. In this mode, the playback program resides in the Model 1 memory starting from address0x5400, and the MIDI data is paged by switching the upper 32 KBs (from address0x8000to0xFFFF; although only the lower 16 KBs are used for the MIDI data).loader2/cmduses the 16 KB / X-MEM/80 mode. Here is the demo disk from the above video. In this mode, the playback program resides in lower 16 KB page in X-MEM/80 starting from address0x8000; make sure to usememres/cmdto initialize the page registers to page 0 before startingloader2/cmd. The MIDI data is paged by switching the upper 16 KBs (from address0xC000to0xFFFF). Note that a very short expansion port cable connecting MIDI/80 to the X-MEM/80 expansion port passthrough connector is recommended, and an even shorted cable from MIDI/80 to the EI.
Model III Software
You can find .HFE and .JV3 disk images
in the trs80/m3/ directory.
The software is the same as for the Model 1 version and is described above.
The MEMRES/CMD, and memory tests (Anitek MEMTEST/CMD, as well as the X-MEM/80 BASIC Memory Tests for both 32 KB and 16 mode) are here.
MIDI/80 + X-MEM/80 Software
See here. As described for for the Model 1
version - loader/cmd for the 32 KB mode, and loader2/cmd for the
16 KB mode. Note that the switch / jumper config must match.
X-MEM/80 Hardware
This section provides all necessary files and information for a DIY build of X-MEM/80. Costs are in the ~35 USD range.
Schematics
Model 1 Version
Model III Version
Bill of Material (BOM)
Model 1 Version
- Alliance AS6C4008-55PCN 512Kx8 SRAM + 32 pin DIP socket
- 40 pin IDC box header
- 40 pin female card edge connector, angled
- GAL20V10(B,D) + 24 pin DIP socket (and ability to program it, e.g., using a TL-866 MiniPro Programmer)
- 1x 74LS244 + 20 pin DIP socket
- 2x 74LS374 + 20 pin DIP socket
- 1 5mm LED of your liking and a matching current limiting resitor (usually, 1 or 2 kOhm these days for the ultra-effecient and super bright LEDs - 330 Ohms are a thing of the past for LEDs!)
- 6x 103 (10 nF cereamic) capacitors, 16 V, 5mm pin distance
- Standard 5V DV power plug jack (5.5x2.1mm socket)
- Standard 5V "wall wart" external power supply (center positive)
- Single row pin header (3) and a jumper
Model III Version
- Alliance AS6C4008-55PCN 512Kx8 SRAM + 32 pin DIP socket
- 1x 40 pin DIP socket for Z80 CPU in U6
- 1x 40 pin DIP precision socket to be plugged into the Z80 CPU socket on the Model III motherboard to provide extra spacing and more stability
- 2x 20 pin 2.54mm single row precision headers for U7
- GAL20V10(B,D) + 24 pin DIP socket (and ability to program it, e.g., using a TL-866 MiniPro Programmer)
- 1x 74LS244 + 20 pin DIP socket
- 2x 74LS374 + 20 pin DIP socket
- 1x 74LS02 + 14 pin DIP socket
- 7x 103 (10 nF cereamic) capacitors, 16 V, 5mm pin distance
- about 14" 3-wire cable and a 3-pin 2-position switch ON/ON for configuration
PCB Gerbers
The PCB Gerbers are contained in Zip archives and can directly be send-off to major PCB manufacturers (PCBWay, Seeed, OshPark, JLCPCB):
Model 1 Version
The gerbers are here
Model III Version
The gerbers are here
Note: the schematics and Gerbers are incorrectly labeled with an "m1", but they are really for the Model III.
Michael Wessel

















