Memotech hardware components, and what they included :-
Download scans of the hardware related pages from the first and second revisions of the "Memotech MTX Series Basic Tutor, Reference & Operators Manual". Includes full circuit diagrams and PALASM.
Earlier MTX motherboards had 3 x 8KB ROMs. Later ones had a 16KB ROM and an 8KB ROM. Or possibly 2 16KB ROMs in which 8KB wasn't used in one of them (its hard to tell looking at it).
An MTX500 used 8 x 4132 DRAM chips (or similar, eg: my MTX500 uses M3732L-20RS). An MTX512 used 8 x 4164 DRAM chips (or similar). I believe an MTX500 could support certain "half-working" 4164 chips, so seeing these chips on a motherboard doesn't in itself imply 64KB RAM.
Therefore there are 4 permutations of ROM and RAM configuration, and as both ROM and RAM decode is handled by a single PAL14L4 PAL socketed at position A6 on the motherboard, there are 4 PALASM definition files. The PALASM for these are included in the second manual, and scans of these are included in the download earlier on this page. The PALASM snippets that are quoted below are the same logic, with white space added and terms reordered for readability.
There is a hardwired 6-pin link-block at position B7 on the motherboard. It controls the passthrough of NA15 and A14 into the RAS/CAS address multiplexing which feeds the DRAMs. On an MTX512, I believe C should be wired to 4 and R should be wired to 2, thus ensuring both NA15 and A15 are passed through. On my MTX500, C is wired to L, ensuring that NA15 is always 0. I think the link block is done this way so that the MTX500 could use half-working 4164s. This particular setup supports the case where the bottom 32k of the 4164s worked, but I'm sure different link-block configurations would allow the case where the top 32k worked, or the first and third quarters, or second and fourth quarters.
There is another hard-wired link just above the PAL at position A6, known as LK7, and this signal referred to in the PALASM as I2H4L. In the MTX512 I believe this would be wired to 4, ie: low. On my MTX500 it is wired to 2, ie: high. I think this link is a test feature.
The PALASM for a system with 3 x 8KB ROM includes this :-
/CEA = /RELCPMH * /A15 * /A14 * /A13 * /MREQL * /RDL
/CE64 = /RELCPMH * /R2 * /R1 * /A15 * /A14 * /A13 * /MREQL * /RDL
+ /RELCPMH * R2 * R1 * R0 * /A15 * /A14 * /A13 * /MREQL * /RDL
CEA recognises the fixed ROM.
CE64 recognises ROM pages 0, 1 or 7. CE64 is further decoded outside the PAL to distinguish between ROM pages 0 and 1, and ROM page 7, known as the "games ROM".
The PALASM for a system with 16KB + 8KB ROM includes this instead :-
/CEA = /RELCPMH * /A15 * /A14 * /A13 * /MREQL * /RDL
+ /RELCPMH * /R2 * /R1 * /R0 * /A15 * /A14 * A13 * /MREQL * /RDL
/CE64 = /RELCPMH * /R2 * /R1 * R0 * /A15 * /A14 * A13 * /MREQL * /RDL
+ /RELCPMH * R2 * R1 * R0 * /A15 * /A14 * A13 * /MREQL * /RDL
CEA recognises the fixed ROM and ROM page 0.
CE64 recognises ROM pages 1 and 7. CE64 is further decoded outside the PAL.
The PALASM for a system with 32KB RAM includes this :-
/NA15 = /A15
+ /RELCPMH * /P3 * /P2 * /P1 * P0 * A15 * /A14 * /MREQL
/RAM = A15 * A14 * /MREQL
+ /P3 * /P2 * /P1 * /P0 * A15 * /A14 * /MREQL
+ RELCPMH * /P3 * /P2 * /P1 * /P0 * /A14 * /MREQL * /I2H4L
+ /RELCPMH * /P3 * /P2 * /P1 * P0 * A15 * /A14 * /MREQL * /I2H4L
NA15 is used to map references to 0x8000-0xbfff in RAM page 1 to references to 0x0000-0x3fff in the DRAM. This only provides any value if I2H4L is set differently.
RAM is used to decide when RAM is visible. The first term covers the top 0xc000-0xfff, visible in both RELCPMH modes, visible in all RAM pages. The second term covers 0x8000-0xbfff in both RELCPMH modes, in RAM page 0. The last two terms make the lower 16KB of RAM visible in other places, but only if the I2H4L wires are set differently (for testing?).
The PALASM for a system with 64KB RAM includes this :-
/NA15 = /A15
+ /RELCPMH * /P3 * /P2 * /P1 * P0 * A15 * /A14 * /MREQL
/RAM = A15 * A14 * /MREQL
+ RELCPMH * /P3 * /P2 * /P1 * /P0 * /MREQL * /I2H4L
+ /RELCPMH * /P3 * /P2 * /P1 * /P0 * /A15 * A14 * /MREQL * /I2H4L
+ /RELCPMH * /P3 * /P2 * /P1 * A15 * /A14 * /MREQL * /I2H4L
NA15 is used to map references to 0x8000-0xbfff in RAM page 1 to references to 0x0000-0x3fff in the DRAM.
Looking at RAM: The first term covers the top 0xc000-0xfff, visible in both RELCPMH modes, visible in all RAM pages. The second term covers all the RAM in RELCPMH=1 mode, in RAM page 0. The third term covers 0x4000-0x7fff in RELCPMH=0 mode, in RAM page 0. The fourth term covers 0x8000-0xbfff in RELCPMH=0 mode, in RAM pages 0 and 1. Note that we need I2H4L to be low for the full MTX512 memory map to be implemented, therefore I believe this link is wired the opposite way on an MTX512 to how it is on a MTX500. Again, I think the I2H4L link is a test feature, which when invoked makes all but the top 16KB of RAM disappear.
Recommended procedure (untested as yet) :-
PRINT PEEK(64122) should now return 1, rather than 0.
Note, the above procedure does not suggest breaking and remaking the I2H4L link, close to the PAL chip at A6 on the motherboard. Instead, I suggest you use PALASM for 64KB RAM that simply does not reference the I2H4L input. One less thing to mess up soldering.
Futurlec might be a good place to pick up the parts, as they list the DRAMs, Sockets and PALs referred to above.
The SDX card seems to be using certain pins in the 34 pin floppy disk connector, the NEC FD1036A disk drive present in my SDX supports certain signals, and modern drives and cables seem to expect something slightly different :-
| Pin | I/O | SDX | FD1036A | Modern drives |
|---|---|---|---|---|
| 2 | I | /MotorOn | /MotorOnPlug3 | /HighDensity |
| 4 | I | /InUse | N/C | |
| 6 | I | /DriveSelect3 | N/C | |
| 8 | O | /Index | /Index | /Index |
| 10 | I | /DriveSelect | /DriveSelect0 | /MotorEnableDrive0 |
| 12 | I | /DriveSelect1 | /DriveSelect1 | |
| 14 | I | /DriveSelect2 or /MotorOnPlug1 | /DriveSelect0 | |
| 16 | I | /MotorOnPlug2 | /MotorEnableDrive1 | |
| 18 | I | /DirectionSelect | /DirectionSelect | /DirectionSelect |
| 20 | I | /Step | /Step | /Step |
| 22 | I | /WriteData | /WriteData | /WriteData |
| 24 | I | /WriteGate | /WriteGate | /WriteGate |
| 26 | O | /Track00 | /Track00 | /Track00 |
| 28 | O | /WriteProtect | /WriteProtect | /WriteProtect |
| 30 | O | /ReadData | /ReadData | /ReadData |
| 32 | I | /Side | /Side | /Side |
| 34 | O | /Ready | /Ready | /Ready |
All odd Pins are GND.
When booting from B: the SDX takes pin 10 low (implying the FD1036A is configured to be "drive 0"). When spinning its motor, pin 2 goes low (implying the FD1036A has its "motor plug" in position 3). When trying to boot from C:, I don't see any pin go low. I don't see how I can connect two drives at once.
To use a modern drive (which tend to be factory configured as "drive 1"), I would need to bodge the cable so that pin 10 from the SDX went to pin 12 on the drive, and pin 2 from the SDX went to pin 16 on the drive. I'd also want pins 2, 10 and 14 on the drive to be pulled high.
Modern floppy disk cables arrange for the drive at the far end of the cable to have pins 10-16 reversed. If both drives are configured as "drive 1", this makes the drive at the end of the cable behave as "drive 0". This becomes interesting if it is possible to connect two drives at once.
My type 07 SDX ROM doesn't allow me to save any files from MTX BASIC.
I get BDOS Err R/O.
Everything works fine from CP/M.
I don't yet know if anyone else has the same problem,
but I do know that Jims type 07 SDX ROM is exactly the same as mine.
I beleive the type 03 SDX ROM can support upto 2 drives. A:/B:03,C:03. However, I think that only earlier SDXs had 2 drives.
I beleive the type 07 SDX ROM is coded to support upto 2 drives, but I think there isn't the space in high memory for CP/M allocation and check vectors, so actually this can't work. In fact I think this might explain my problem above. I'm not aware of a type 07 SDX shipping with 2 drives.
There is 1KB of wasted/unused space in the original SDX ROMs. This is more than enough to add in the RAM Disc driver code. In other words it is possible to make ROMs that support A:/B:03,C:03,F:51 and A:/B:07,F:51.
REMEMOTECH includes reconstructed source to the SDX ROM which is parameterised to be able to build for various drive combinations. It can support a RAM Disc. It includes drive code for REMEMTOTECHs SD Card partitions and for REMEMOTECHs 320 type 32 RAM Disc.
The expectation is that is will be possible to use this same source and driver code if I actually build REMEMOrizer.
Here are the scans of the SDX ROM listing, scanned with what looks like black and white and grayscale settings. Most of the text can be deduced looking at (one or more of) these.