MTX Memory Card

Design

I used to KiCad to prepare this circuit diagram. When placed and routed, and then the board manufactured and populated, you get :-

I've also added the all.tar.gz library of extra converted parts from http://library.oshec.org/ to my installation of KiCad.

The chips are placed as far up the card as possible, due to the low clearance inside the MTX case.

Connectors are present on both sides, to allow insertion within the MTX case, or outside on the left. Note however, that Kicad doesn't seem to have footprints for connectors allowing another adapter to be chained onto this one.

This card can use a 32KB, 64KB, 128KB, 256KB or 512KB SRAM. There is some variability in SRAM chip pinouts. Jumpers K5 and K6 are therefore set according to chip vendor and size :-

Vendor Chip Size Pin 1K5 Pin 30K6 Comments
Hitachi HM62832 32KBemptyeither5V high28 pin chip placed in sockets 3 to 30
Samsung K6T0808C1D 32KBemptyeither5V high28 pin chip placed in sockets 3 to 30
Hitachi HM62864 64KBNC eitherCS2 high 
AllianceAS6C1008 128KBNC eitherCS2 high 
Hitachi HM628128 128KBNC eitherCS2 high 
AllianceAS6C2008 256KBA17 low CS2 highlets use pin 1 as A17
AllianceAS6C4008 512KBA18 high A17 low new plan, lets sacrifice CS2 on pin 30 instead
Samsung K6T4008C1B512KBA18 high A17 low  
Hitachi HM628512 512KBA18 high A17 low  
Winbond W27C512 * 64KBemptyeither5V high28 pin EEPROM placed in sockets 3 to 30

A GAL16V8 decides when the SRAM is accessed, and which part of it. GALs support a limited amount of logic complexity. It is not always possible to make all of the SRAM available to the MTX. In addition to IOBYTE and address information from the MTX, this chip is also influenced by 4 jumpers (K1 to K4). So it is possible to have a memory card that offers different amounts of memory, depending on the jumpers.

RAM card

MTX memory map (establishing a standard name for each 16KB RAM page) :-

RELCPM=0RELCPMH=1Both
0x0000..0x3fff 0x4000..0x7fff0x8000..0xbfff
ROMsγ β
a δ
c b
e d
g f
i h
k j
m l
o n
q p
s r
u t
w v
y x
A z
C B
0x0000..0x3fff0x4000..0x7fff0x8000..0xbfff
δ γ β
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z A
B C D
E F G
H I J
K L M
N O P
Q R S
0xc000..0xffff P3,P2,P1,P0
α0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

What pages do you have :-

What can you do with the memory :-

This package includes PALASM source for various combinations of existing memory on the motherboard, and SRAM size on the memory card. Not all combinations are tested. Files available cover :-

You'll observe that I haven't written any PALASM that makes pages a onwards visible in RELCPMH=0 mode. I'm not aware of any MTX BASIC program, or any games, needing more than 64KB of memory to work. Pages a onwards are visible in RELCPMH=1 mode not because any CP/M program is known to directly use them, but rather because this memory can be configured as RAM Disc. Attempting to make pages a onwards in RELCPMH=0 mode would require many more terms in the PALASM expressions, and GAL16V8 expressions can only have 8 terms OR'ed together. This limit is much better than the 4 term limit that PAL14L4s had, but even this enlarged limit already prevents us making 100% effective use of the space in larger SRAMs. Trying to support pages a onwards in RELCPMH=0 would make this much worse. So, I'll need someone to provide a good justification before attempting to write PALASM for this.

ROM card

It should also be possible to make this memory card work with EEPROM, in a somewhat limited fashion, although not as a conventional ROM card.

A 64KB W27C512 EEPROM is almost pin compatible with a 32KB HM62832 SRAM. Here are the differences :-

Socket pinChip pinW27C512HM62832
3 1A15 A14
29 27A14 /WE

This means that 2 16KB address ranges (0x0000-0x3fff and 0x8000-0xbfff) of the EEPROM can be made visible to the system.

But note that A13 and ROM Page bits R2-R0 are not passed in to the GAL, which prevents us from putting the EEPROM content in the usual ROM slots. If A13 and R2-R0 were "yellow wired" to K3 and K2-K0, this could be fixed.

Cost

If you shop around :-

Item Cost
PCB £3
SRAM chip £3
GAL16V8 £1
MTX edge-connector £2
Passives, headers, sockets, etc...£1
Total £10

I sometimes have spares on my shelf, which I sell for £10. Email me if you're interested.

You'll need to let me know how much memory your MTX already has. This is so I can supply the correct GAL chip. The GAL chip has to know not to supply memory thats already there.

If your MTX already has 32KB, it could have a buggy address decoder PAL in position 6A on the motherboard, so if this is the case let me know how many ROMs you MTX has. I will then supply a replacement address decoder that includes a fix. It's safe to replace the address decoder, whether or not you add any other cards, such as this one. If this isn't done, the motherboard makes some of its memory appear in the wrong place, colliding with some of the memory upgrade provided by this card.

Download

Full package downloadable from here.


This page maintained by Andy Key
andy.z.key@googlemail.com