Here we describe the software in REMEMOrizer :-
The OS ROM sits in the fixed ROM page.
If the ROMs jumper is set "high", then REMEMorizer supplies a patched version of the OS ROM which does not corrupt the RAM Disc and which has its cassette load/save routine patched to jump to the REMEMOrizer tape support.
If the ROMs jumper is set "low", then the motherboard ROM is used.
BASIC ROM
The BASIC ROM sits in ROM page 0.
If the ROMs jumper is set "high", then REMEMorizer supplies a copy of the BASIC ROM. The only reason it is included as in most MTXs, both the OS ROM and BASIC ROM are provided from a single 16KB ROM chip. So if you've removed this chip from the motherboard, and set the ROMs jumper "high", REMEMOrizer had better supply both the OS and BASIC ROMs.
If the ROMs jumper is set "low", then the motherboard ROM is used.
The CP/M boot ROM sits in ROM page 4.
REMEMOrizer provides this ROM unless you press SW1.
So to bypass booting to CP/M, press this switch whilst resetting the MTX.
The REMEMOrizer r2 ROM also bypasses booting to CP/M if both
Shift keys are pressed.
It is different to the version found in an FDX or found in an SDX with
CP/M support, and is pretty much the same as the REMEMOTECH version.
It is broken into a number of modules.
The AZMON module is the initial monitor.
It is modified to boot F:52, B:18, B:19, ..., B:1F.
It always loads the RAM Disc support, whether you boot from it or not.
If both Shift keys are pressed during resetting,
it doesn't boot CP/M and returns to BASIC instead.
The ASDXKBD module is the keyboard driver.
This is the same driver code used in REMEMOTECH, which queries the
CPU clock divider by reading a port.
On REMEMOrizer, that port always returns the value for 4MHz.
ACRT is the 80 column card driver.
This has been modified so that it knows that the REMEMOrizer screen buffer
has 4096 character cells (rather than the 2048 in a normal card).
It also supports a new 80x48 mode as well as the 80x24 mode.
It provides new escape codes ASDCARD is the replacement for the usual floppy disc driver code
found in normal Memotech FDX and SDX systems.
It supports a single 8MB size of disk, but through the use of 8 drive
type codes (18..1F) allows you to access 8 8MB partitions of the SD Card.
The SD Card hardware turns on a green LED when the SD Card is accessed and
flashes it for a couple of seconds afterwards, and the user should not
remove or change the SD Card until it goes off.
The driver reads a port which tells it that the card was accessed in the
last second, and if so, it can assume that whatever sector it read last
is still what it would get if it read that sector again.
In this way, sequential reads of N 128 byte sectors only result in
N/4 512 byte block reads (instead of N 512 byte block reads).
Also, sequential writes of N 128 byte sectors only result in
N/4 512 byte block reads and N block writes
(instead of N 512 byte block reads and N 512 byte writes).
This feature produces a measurable speed increase, perhaps as much as 2x.
The ARAM module provides RAM Disc support.
It is a subset of the SIDISC module in the original Memotech computers,
which supported Silicon Disc and RAM Disc.
256KB type 50 RAM Discs are supported.
512KB type 51 RAM Discs are not supported - there isn't enough memory.
A special 320KB type 52 has been defined so as to make full use of the
memory available on REMEMOrizer.
Conveniently this exactly matches the type 03 floppy in size and geometry.
ARAM is present in memory, whether you boot from RAM Disc or not.
There is no need for a The SDX BASIC ROM sits in ROM page 5.
The SDX ROM in a real SDX provides USER commands to MTX BASIC,
allowing the user to read and write files on a floppy disk.
The SDX ROM in REMEMOrizer is pretty much the same as the REMEMOTECH version.
Instead of floppy disc, it supports SD Card partition 0.
Unlike the original SDX ROM, this version also supports 320KB RAM Disc.
In other words, the drive configuration supported is
To support these disk types, it was necessary to steal areas of high memory
that would otherwise be used by the NODE RING ROM.
This support is therefore incompatible with the NODE RING ROM.
Remember, to use the SDX support, you must first use If you try to use The tape support is physically present in the SDX ROM, and the
OS ROM is patched to jump there.
By default, REMEMOrizer loads and saves to virtual cassette,
as administered using the
REZTAPE.COM command.
However, if you press SW2, marked as "Tape" on the picture on the
Setup page, then a little red LED lights up
to indicate that virtual tape support is disabled.
In this mode, when MTX BASIC loads and saves, real cassette load and
saving occurs.
This can happen because the code at the end of SDX ROM 5 also includes
a copy of the code normally present in the OS ROM
(which unfortunately had REMEMOrizers "jump to REMEMOrizers tape support"
patch splatted over the top of it).
This tape support has a feature called tape-breaker.
During LOADing, hold down SW1.
After each block is loaded, the border will go yellow.
Press INS to proceed as normal, in which case the border flashes green.
Press ENT CLS to break in at that point, in which case the border flashes red,
and the break entrypoint in the BASIC ROM is entered.
One way to use this feature is to LOAD the program twice.
The first time, simply press INS each time and count how many blocks are
loaded before the program starts.
The second time, press INS one fewer time, and then ENT CLS for the last time.
Hopefully there is enough of the BASIC program there to inspect.
If you are loading from Because of these features, it may now be easy to LOAD from tape and then
SAVE to virtual tape, and vice-versa.
Of course, games that employ auto-run and other copy-protection schemes
may still prove difficult.
It gives give better error messages.
It has been enhanced to support extra drive types.
It supports type 18..1F drives, which are 8MB SD Card partitions.
Do not configure two drives with the same 1x type code,
as this can cause data corruption.
It also supports type 52 drives, which are 320KB RAM Discs.
Every time you configure or change a drive type,
high memory is allocated for the allocation and check vectors.
High memory is in short supply, and after configuring and reconfiguring
lots of drives, you can run out.
This issue can eased by using a 54K system disk, rather than 59K.
This is made worse in REMEMOTECH and REMEMOrizer, as in order to access more
of the SD Card, you may find yourself configuring and reconfiguring a drive
to access different partitions on it.
The included The new Back in the day, there were 3 different formatting programs :-
REMEMOrizer includes There is one read/write 64KB SRAM slot (slot number 0)
and a read-only 64KB SRAM slot (slot number 1).
The following commands can be used :-
If you use The INOUT routine in the MTX BASIC ROM has been patched so that :-
The recommended approach to use is to use Its usage is like this :-
The change lasts until power-off, or next change.
As an example, to make MTX BASIC say "Randy", rather than "Ready", use :-
Use with care.
When run with no arguments, REZROM2 shows you the first few bytes of
the top 8KB of each physical SRAM page.
There are 32 physical pages, referred to as 00 to 1F.
Only pages that are available to use for ROM content are listed :-
If you try to read, write or erase an SRAM page that is not available,
or you try to make such a page visible in ROM slot 2, you will get an error.
You can upload a non-subpaged ROM image to a SRAM page,
and then set the subpage register so that this SRAM page appears in ROM 2.
This example uploads to SRAM page 0, and enables ROM 2 support using it :-
The register value written with the ! command is the SRAM page with the
following extra bits added in :-
Given that the ROMs can be written (if you configure it that way),
you may wish to read an SRAM page to a file :-
You can erase an SRAM page :-
Upto 16 subpages can be supported using SRAM pages 10 to 1F.
You can upload a set of subpaged ROM images and enable them like so :-
The B0 subpage register value includes the 20 weighted bit,
which enables subpage support, and as a result any of the SRAM pages 10 to 1F
can end up being selected (depending upon what stores to 0000-1FFF
subsequently occur).
For this mode to be allowed, you can't have a RAM Disc configured,
as even the smallest RAM Disc overlaps this range.
If subpage support is enabled, the bottom 4 bits are zeroed when the
system is reset, as would happen with the subpage register on a real ROM card.
Do not configure a RAM Disc whilst you have ROM 2 support enabled.
Although REZROM2 does check for a RAM Disc being configured,
RECONFIG does not check for ROM 2 support being configured.
Disable ROM 2 support first, using :-
CP/M boot ROM
^[Y
and ^[Z
to switch into 80x24 or 80x48 mode.
SIDISC.COM
program.
SDX BASIC ROM
B:18,F:52
.
ROM 5
.
The first drive (SD Card partition 0) must contain a 59K CP/M system.
If this is not the case, you'll get a DISC ERROR
.
USER FORMAT
, you will get a
Mistake
error.
Track and sector based formatting doesn't make sense for SD Card or
RAM Disc media.
Instead use the REFORMAT.COM
CP/M executable.
Tape support
.mtx
file, you can also use
MEMU with its
-diag-console
and -diag-tape
options to
discover how many blocks there are in your program.
CP/M utilities
RECONFIG.COM
RECONFIG.COM
is a version of CONFIG.COM
,
but enhanced for REMEMOTECH and REMEMOrizer.
RECONFIG.COM
is enhanced to spot reconfiguring
a drive to a new type code with the same DPB (which implies the same geometry),
and if so, it reuses the existing allocations and check vectors.
RECONFIG.COM
is a superset of the original shipped
by Memotech, and can actually be used on earlier Memotech systems.
REFORMAT.COM
FORMAT.COM
- for FDX floppy disks, hard disks and Silicon Discs
FRMSDX.COM
- for SDX floppy disks
SIDFMT.COM
(ie: FORMAT.COM
renamed) - for Silicon Disc or RAM Disc on either FDX or SDX
REFORMAT.COM
which doesn't issue hardware
level formatting commands, and instead it overwrites the reserved tracks and
directory area with sectors containing 0xe5
bytes.
This can therefore be used to "format" the RAM Disc and SD Card
found on REMEMOrizer.
None of the original formatting programs are therefore needed,
none of them work, and so none of them are included.
REFORMAT.COM
can be used on an original Memotech system to
wipe a disk, providing the disk is already formatted to the right type code.
REZTAPE.COM
REZTAPE.COM
is a program for managing the virtual cassette
tapes feature in REMEMOrizer.
Its much like the RETAPE.COM
program used to do the same
thing on REMEMOTECH.
REZTAPE
REZTAPE slot
REZTAPE INPUT.MTX slot
REZTAPE slot OUTPUT.MTX
REZTAPE ?
REZTAPE
to read a slot and write to a
.SNA
file, REZTAPE only writes 49280 bytes, because this is
enough to hold a 49179 byte ZX Spectrum snapshot.
LOAD ""
LOAD "NAME"
VERIFY ""
VERIFY "NAME"
SAVE "NAME"
REZTAPE.COM
to write
the game you wish to load to a tape slot, switch to MTX BASIC, and then LOAD it.
If you save anything from MTX BASIC, boot to CP/M afterwards and use
REZTAPE.COM
to read slot 0 and write to a .MTX
file.
REZPATCH.COM
REZPATCH.COM
is a program which can patch the ROM images
that REMEMOrizer provides.
ie: The fixed OS ROM, BASIC ROM 0, CP/M boot ROM 4 and SDX ROM 5.
A>REZPATCH iobyte address {byte}
A>REZPATH 00 026D 52 61 6E 64 79
REZROM2.COM
REZROM2.COM
is a program for administering the ROM 2
feature in REMEMOrizers with bitstream r3 or later.
A>REZROM2 NEMO.ROM 00
A>REZROM2 ! 80
A>REZROM2 00 FILE.ROM
A>REZROM2 00
A>REZROM2 PASCAL0.ROM 10
A>REZROM2 PASCAL1.ROM 11
A>REZROM2 ! B0
A>MTXL
ROM 2
A>REZROM2 ! 00
REZSPEC.COM
REZSPEC.COM
is the REMEMOrizer ZX Spectrum Emulator,
written using ideas and code from Z2 in the
Z
ZX Spectrum Emulator, but written to exploit REMEMOrizer with
bitstream r3 or later.
This later REMEMOrizer variant can provide ROM 2 support
(thus providing a space for the REZSPEC code to sit) and includes
Speculator hardware support.
This contrasts the original Speculator software in a number of ways :-
LOAD ""
the game,
in Speculator you select from a menu of 20 games
REZSPEC includes Gosh Wonderful ROM embedded within itself. It copies the ROM image into place, then patches it. REZSPEC locates itself in ROM 2, usually using the memory intended for RAM page α (SRAM page 00). However, if you're running on an MTX000, that page is in active use, so REMEMOrizer checks to see a RAM Disc isn't using RAM page t (SRAM page 1F), and uses that instead.
REZSPEC patches NMI, load and save so that it switches to code in ROM 2. The actual patch/switch code overwrites the extended REM STREAMS command in the Gosh Wonderful ROM. It also patches the initial RAM test to prevent any NMI occuring during the test appearing as a memory error, and printer routines not to do anything.
The REZSPEC NMI routine handles screen, border, and keyboard and joystick.
The fast mode screen update uses a technique from Speculator whereby it only outputs attributes which have changed, and only outputs VDP addresses when it needs to.
The hardware accelerated screen update exploits REMEMOrizer Speculator hardware. This tracks which character cells have been written to, which attributes have been changed, and where the flashing attributes are. Only these areas are copied. This helps games such as Blobbo, Gridrunner and Galaxians which animate the player and bad guys against a largely static screen. It only helps avoid copying unchanged attributes for Manic Miner as it actually copies the entire active screen from an offscreen bitmap every time.
The NMI routine reads sound port transition ports and if within a valid range, maps to sound chip frequency divider and programs the sound chip. Some basic sound effects work fine - others, such as the music to Manic Miner, come out very badly. This is the main reason there are hot keys to adjust the sound volume.
The load and save routines access virtual tape (by default) :-
A>RECONFIG C:19 A>REZTAPE C:BLOBBO.TAP 0 A>REZSPEC LOAD ""
Virtual tapes are limited to 64KB in size, which is a problem for a couple of games. In such a case, load into another emulator and make a snapshot. Snapshots are around 48KB and can often be restored into REZSPEC instead :-
A>REZTAPE C:GALAXIAN.SNA 0 A>REZSPEC F8
Whilst running, the following hot keys exist :-
.SNA
format to virtual tape slot =F4
.SNA
format snapshot from virtual tape slot =F8
When a hot key is pressed, a badge appears briefly on the screen as visual feedback. If you try to snapshot and this fails (eg: can't snapshot if registers have certain values) or if you try to restore and this fails (data on the virtual tape is obviously not a snapshot) then the badge is displayed with a red background.
The real cassette support isn't perfect.
Whilst loading or saving, screen refresh is disabled, so you
won't see loading screens gradually appear.
However, on the plus side, because real cassette tapes are supported, you can
load from tape and then snapshot to virtual tape.
Real cassettes and cassette players are hard to find, as are good
.wav
files, so to test, I used tape2wav
from the
fuse
emulator to make some from .TAP
files, and then
played these out of my PC and into the MTX.
The Spectrum .TAP
support isn't perfect either,
and it isn't interruptable.
Sometimes, if the virtual tape contains data different to what the loader
expects, REZSPEC will reboot the system.
Verification of data on virtual tape is also not supported.
Although load and save can be directed to real tape or virtual tape using F2, snapshot and restore always uses the virtual tape.
This list describes how well REZSPEC copes with various
Spectrum Software.
REZNUMT.COM
This is a program designed to test the
numeric accelerator
built in to REMEMOrizer r3 or later.
Its only likely to be interest to the author.
REZNUM.COM
This program will enable the numeric accelerator built in to REMEMOrizer r3 or later, and then patch the MTX OS ROM and BASIC ROM 0 to use it. This change lasts until power off.
At this time, REZNUM patches the calculator routines in the ROM which do addition, subtraction, multiplication and division.
It is interesting to note that although the hardware detects underflow conditions, the MTX ROM treats these as a zero result.
As a speed trial, various Memotech Mandlebrot set generators were developed and compared.
Summary: if you are serious about doing floating-point on a Memotech MTX, you'll only get a little speed-up using REZNUM. You'll need to code in assembler, and ideally bypass the MTX BASIC ROM calculator routines and directly interact with the numeric accelerator to get the best performance.
There is scope to do more.
I can probably significantly accelerate functions such as
exp, ln, sin, cos and tan, by exploiting the fact the hardware has
a built-in hardware stack, and many built-in constants.
The tricky bit is patching the ROM and keeping it working.
MTX.COM, MTXL.COM and RUN.COM
It also has the MTX.COM
and MTXL.COM
programs,
which can be used to switch into MTX BASIC.
MTXL.COM
is preferred, as it does not corrupt RAM Disc in the
transition.
RUN.COM
is a CP/M program which can be used to run some
.RUN
files, without having to switch into MTX BASIC, and use
the SDX ROM to USER RUN "FILE.RUN"
them.
This program puts the file content directly into memory, switches into
the right memory mode, and jumps to the start of the program.
This means that MTX BASIC has never been running, and has not set up any
of its system variables.
As a result, some .RUN
files may not run properly this way.
Sample SD Card
The package includes a couple of sample SD Card images,
in the file sddisc.bin
and sddisc2.bin
.
They are 8MB SD Card partitions with CP/M 2.2 filesystems.
The first has a 59K CP/M system on it, the second has 54K.
If you copy them to the first and second 8MB of a SD Card,
you can access them by configuring type 18 and type 19 drives.
These images have some handy utility files.
The first image has various games in .COM
format.
There are also a few games in .RUN
file format,
most of which can be run using the RUN.COM
program.
There are also some SDX BASIC .BAS
files.
It also has lots of .MTX
files.
The second image has Icicle Works, which needs a 54K CP/M system to work.
I've never got to the bottom of why this is, and its tricky to debug.
Interrupt the CP/M bootstrap by holding down Enter, then type BC19 to
boot from the second partition, then run DT.COM
followed by
TLOAD.COM
followed by TV.COM
.
Or type SUB ICICLE
.
It also has a selection of ZX Spectrum .TAP
and
.SNA
files, for use with
REZSPEC.