Skip to content

'Old School' CPC6128 512KB and 1MB RAM Expansion Cards

revaldinho edited this page Oct 11, 2022 · 13 revisions
74 Series Board Photograph 74 Series 1MByte Board Photograph

This project contains two RAM cards suitable for Amstrad CPC6128 and Plus computers:

  • a 512KByte card
  • a 1MByte card

Both boards use only standard 74 Series logic ICs and either one or two SRAM chips. There are no devices which need programming and all parts are in through-hole packages to make for a board which is easily assembled even by a beginner.

The cards are not suitable for older 464 and 664 computers - for those machines please see my Universal RAM Cards.

The cards support all 6128, and 464 Plus and 6128 Plus machines running standard CPC software. For software using the more advanced features of the CPC Plus, the cards are fully compatible provided that the software disables the expansion card before remapping the ASIC register block into the memory map.

The bare PCBs are available from SeeedStudio via their Seeed Gallery pages. Alternatively all Eagle .brd files and zipped archives of Gerbers are available in this repository's Eagle Releases Directory directory for you to have PCBs made wherever you choose.

The cards hava a Mother MX4 standard box connector rather than an edge connector. So to use the board you will need a Mother X4 or compatible expansion card. One possibility is to use my own CPC 3 slot expansion backplane: again it's easily assembled and the PCBs are available directly from SeeedStudio. Other options are CPCCONMX4 - a single slot card which plugs directly into the CPC edge connector - or LambdaMikel's Expansion - a 4 slot version which replicates the edge connector.

DK'Tronics Compatibility

The boards are fully compatible with the DK'Tronics/Amstrad bank switching schemes described in the DK'Tronics Peripheral Technical Manual.

In this scheme there are 8 possible 64K banks, and each bank is split into 4 16K blocks.

Selecting a 64K bank is done by writing to the Z80 IO address 0x7Fxx with an 8 bit dataword 0b11cccbbb, where

  • ccc - picks one of 8 possible 64K banks
  • bbb - selects a block switching scheme within the chosen bank

The bank switching schemes for the 6128 and Plus machines are illustrated in the table below, where

  • '-' indicates access to internal RAM
  • 0-3 indicate access to the relevant block in the selected external bank
Address\bbb 000 001 010 011 100 101 110 011
0xC000-0xFFFF - 3 3 3 - - - -
0x8000-0xBFFF - - 2 - - - - -
0x4000-0x7FFF - - 1 ** 0 1 2 3
0x0000-0x3FFF - - 0 - - - - -

Note that bank 0 would normally select the single 64K expansion bank already in a 6128, but when the card is attached this bank is disabled and the first bank in the external expansion is accessed instead. In any case the total memory available with the card fitted is 576KBytes: the 64K internal RAM and the 512K external.

In the special case '**' marked in column '011' internal memory at 0x4000-0x7FFF is remapped to 0xC000-0xFFFF. This is handled internally in the CPC6128 and plus machines. The 464 and 664 don't perform this remapping. Further, the 464 and 664 do not write protect internal RAM when external memory is accessed. On the original DK-Tronics expansions these two issues were handled by backdriving the A15 and MREQ* signals on the bus, overdriving the values from the Z80 CPU in an electrical conflict. The Old School card doesn't do this, in common with most of the modern RAM expansions. So the card is compatible only with 6128 and the later CPC Plus machines, with the note on Plus restrictions above. See later for a special 464 (CPLD based) expansion card.

Expanded Addressing

The 1MByte card uses the Yarek addressing scheme, and specifically uses address bit 8 as an additional bank address when writing to the RAM selection register. In this way writing the usual data to 0x7Fxx addresses one of the two SRAM ICs, and writing to 0x7Exx addresses the other.

Since cards larger than 512KBytes were not available back in the 80s, very little software makes use of the extra banks. However, FutureOS can use the whole 1MByte address space and although SymbOS 3.0 is currently limited to 512KBytes, a future version is promised to recognise and use a 1Mbyte card.

Testing on the 6128

The 512KByte 'Old School' card has been tested on several Amstrad 6128s using various programs, including

  • Amstrad bank manager
  • DK'Tronics Bank manager
  • DK'Tronics Sillicon Disk (in AMSDOS and CP/M)
  • CP/M+, CP/M 2.2
  • Batman Forever Demo
  • 128K games including Gryzor, Hard Drivin', ChaseHQ and Robocop, Prehistorik 2, Zapt'balls
  • FutureOS desktop runs and reports all memory correctly via OS-Infos utility.
  • Board test programs written in BASIC and BCPL included in the cpc/ subdirectory of this project
  • Duke's RAM Test program

For testing two 74 Series cards were assembled, one using all 74HCT family components and the other a mix of mainly AHCT and some HCT parts. These are low power CMOS parts but with input stages optimized to work with the TTL levels of the bipolar 74LS logic in the Amstrad. The AHCT parts are faster than HCT, but there's no noticeable benefit in this case.

The cards have been tested using both an original (ToTO) MX4 Mother expansion with power taken from the CPC and my own backplane expansion with power supplied from the CPC and from a variable external supply. Using the latter the 74 Series card was found to be significantly more tolerant of VDD variation than was the original CPLD based prototype. The prototype card passed all tests with an external power supply set between 4.35V and 5.5V. The 74 series based cards were both good down to around 3.5V. Some other expansions have reported problems on the original MX4 card, probably due to the small schottky diode drop in the VDD line, but all cards tested here had no problems at all given the wide tolerance to VDD.

Building the RAM Cards

To build the RAM cards you will need only the most basic of equipment

  • soldering iron
  • small wire cutters
  • small long nosed pliers

Old School 512KByte Card

Bill of Materials

PCBs are available from SeeedStudio pages.

The following is a complete bill of materials for all other components from the supplier DigiKey in the UK, all prices in GBP.

Index Quantity Part Number Description Customer Reference Unit Price Extended Price
1 1 1450-1027-ND IC SRAM 4M PARALLEL 32DIP 512K x 8 SRAM 3.6 3.6
2 1 P15803CT-ND CAP ALUM 22UF 20% 25V RADIAL Electolytic Cap 0.2 0.2
3 1 3M157291-ND CONN HEADER 50POS DL R/A GOLD Right Angle MX4 Conn. 0.82 0.82
4 1 296-2100-5-ND IC FF D-TYPE SNGL 6BIT 16DIP 74HCT174 0.45 0.45
5 1 296-2136-5-ND IC DUAL 2BIT BISTABLE LTCH 16DIP 74HCT75 0.76 0.76
6 3 296-1603-5-ND IC GATE NAND 4CH 2-INP 14DIP 74HCT00 0.35 1.05
7 1 296-2086-5-ND IC GATE NAND 3CH 3-INP 14DIP 74HCT10 0.43 0.43
8 1 296-8380-5-ND IC GATE NOR 4CH 2-INP 14DIP 74HCT02 0.35 0.35
9 1 296-1615-5-ND IC GATE OR 4CH 2-INP 14DIP 74HCT32 0.35 0.35
10 1 AE10354-ND CONN IC DIP SOCKET 32POS TIN SRAM Socket 0.35 0.35
11 6 609-4712-ND CONN IC DIP SOCKET 14POS TIN IC Sockets 0.2 1.2
12 2 609-4713-ND CONN IC DIP SOCKET 16POS TIN IC Sockets 0.22 0.44
13 7 BC1154CT-ND CAP CER 0.1UF 25V Y5V RADIAL Decoupling Caps 0.19 1.33
Total 11.33

This link will create a complete shopping basket including all of the above components on DigiKey UK.

Component Placement

Refer to the photograph above to see the the final board build. All components are fitted to the top side of the PCB as shown in the photograph and in the Eagle PCB image below. ICs should preferably be mounted in sockets. Take care to align all ICs in the correct orientation.

74 Series Board Component Placement

Note that the connector on the bottom edge should be a right-angled type (as listed in the BOM) to be able to plug into any of the backplane solutions.

The ICs assignments are listed below

IC identifier Component Function
U0 74HCT32 Quad 2 input OR
U1 74HCT02 Quad 2 input NOR
U2 74HCT10 Triple 3 input NAND
U3 74HCT00 Quad 2 input NAND
U4 74HCT00 Quad 2 input NAND
U5 74HCT00 Quad 2 input NAND
U6 74HCT75 Dual D-type Latch Pairs
U7 74HCT174 Hex D-type D-FF
SRAM AS6C4008-55PCN 512K x 8 SRAM

V2.10 Card

NB in the releases area there are PCB netlists and layouts for a v2.10 card version. This PCB was actually designed at the same time as the v2.01 and both were built up and tested. The key difference between them is that the v2.10 uses the internal Amstrad 6128 64K RAM expansion in preference to the first 64K of the 512K on the card. From a software point of view there is no difference between the cards, and in testing neither card showed any advantage over the other in terms of low voltage operation or reliability. The v2.01 card uses 1 fewer IC and so ultimately it is the v2.01 version which is recommended for all new builds. The v2.10 card data is just archived here.

If you do have a v2.10 PCB then you can still build it up and use it. There are differences in the ICs required as shown in the table below.

IC Number v2.01 v2.10
U0 HCT32 HCT10
U1 HCT02 HCT02
U2 HCT10 HCT27
U3 HCT00 HCT00
U4 HCT00 HCT00
U5 HCT00 HCT00
U6 HCT75 HCT75
U7 HCT174 HCT174
U8 - HCT04

Old School 1MByte Card

Bill of Materials

The following is a complete bill of materials for all other components from the supplier DigiKey in the UK, all prices in GBP.

Index Quantity Part Number Description Customer Reference Unit Price Extended Price
1 2 1450-1027-ND IC SRAM 4M PARALLEL 32DIP 512K x 8 SRAM 3.6 7.2
2 1 P15803CT-ND CAP ALUM 22UF 20% 25V RADIAL Electolytic Cap 0.2 0.2
3 1 3M157291-ND CONN HEADER 50POS DL R/A GOLD Right Angle MX4 Conn. 0.82 0.82
4 1 296-1623-5-ND IC FF D-TYPE SNGL 8BIT 16DIP 74HCT574 0.56 0.56
5 1 296-2136-5-ND IC DUAL 2BIT BISTABLE LTCH 16DIP 74HCT75 0.76 0.76
6 3 296-1603-5-ND IC GATE NAND 4CH 2-INP 14DIP 74HCT00 0.35 1.05
7 1 296-2086-5-ND IC GATE NAND 3CH 3-INP 14DIP 74HCT10 0.43 0.43
8 2 296-8380-5-ND IC GATE NOR 4CH 2-INP 14DIP 74HCT02 0.35 0.70
9 1 296-1615-5-ND IC GATE OR 4CH 2-INP 14DIP 74HCT32 0.35 0.35
10 2 AE10354-ND CONN IC DIP SOCKET 32POS TIN SRAM Socket 0.35 0.70
11 7 609-4712-ND CONN IC DIP SOCKET 14POS TIN IC Sockets 0.2 1.4
12 1 609-4713-ND CONN IC DIP SOCKET 16POS TIN IC Sockets 0.22 0.22
13 1 609-4714-ND CONN IC DIP SOCKET 20POS TIN IC Sockets 0.29 0.29
14 9 BC1154CT-ND CAP CER 0.1UF 25V Y5V RADIAL Decoupling Caps 0.19 1.71
Total 16.39

Component Placement

Refer to the photograph above to see the the final board build. All components are fitted to the top side of the PCB as shown in the photograph and in the Eagle PCB image below. ICs should preferably be mounted in sockets. Take care to align all ICs in the correct orientation.

1MByte 74 Series Board Component Placement

Note that the connector on the bottom edge should be a right-angled type (as listed in the BOM) to be able to plug into any of the backplane solutions.

The ICs assignments are listed below

IC identifier Component Function
U0 74HCT32 Quad 2 input OR
U1 74HCT02 Quad 2 input NOR
U2 74HCT10 Triple 3 input NAND
U3 74HCT00 Quad 2 input NAND
U4 74HCT00 Quad 2 input NAND
U5 74HCT00 Quad 2 input NAND
U6 74HCT75 Dual D-type Latch Pairs
U7 74HCT574 Octal D-type D-FF
U8 74HCT02 Quad 2 input NOR
SRAM0 AS6C4008-55PCN 512K x 8 SRAM
SRAM0 AS6C4008-55PCN 512K x 8 SRAM

Logic Families

I recommend HCT (or A(H)CT) logic for these cards, as shown in the tables and BOM above, since they are fast enough and draw less power compared with the older LS TTL series. Of course it's perfectly ok to build the entire board with LS chips instead.

It's possible to mix HCT and HC logic in the boards too. The HC parts do not have TTL compatible input stages, so generally shouldn't be used when driven by any LS TTL stages. The table below shows how HCT and HC can be mixed reliably for the 1MByte RAM board.

IC identifier Component HCT HC
U0 74HCT32 βœ… πŸŸ₯
U1 74HCT02 βœ… πŸŸ₯
U2 74HCT10 βœ… πŸŸ₯
U3 74HCT00 βœ… βœ…
U4 74HCT00 βœ… βœ…
U5 74HCT00 βœ… πŸŸ₯
U6 74HCT75 βœ… πŸŸ₯
U7 74HCT574 βœ… πŸŸ₯
U8 74HCT02 βœ… πŸŸ₯

LICENSE

All programs and data files in this project are made available under the terms of the GNU General Public License v3.

Images

V2.01 PCB Image from Eagle V2.01 PCB Image