Compatibility

This cartridge works on the following PCBs and with the following models of Spectrum:

PCB16K48K/+128/+2
Latest Version: 2.10
PROM Size: 8K
Click here to jump to the downloads section.


Description

This 8K ROM cartridge is designed for use with the Spectrum 128 and the grey Spectrum +2, but can also be used on a 16K/48K Spectrum. It improves upon the crude memory test performed at start up by the Spectrum 128's Editor ROM which cannot detect the following categories of error:

Should the Editor ROM detect a memory error then it sets the border colour to indicate which 16K bank was found faulty. The meaning of the colours is as follows:

Border ColourFaulty RAM Bank
Black 7
White 6
Yellow 5
Cyan 4
Green 3
Magenta 2
Red 1
Blue 0

The Spectrum 128 RAM Tester ROM cartridge performs a more thorough test of the 128K of RAM and the paging mechanism that switches between the different banks of 16K. If a memory error is detected then the cartridge attempts to identify which address line or data line is causing the fault. The cartridge starts by testing the lower 16K of RAM located at addresses 4000h - 7FFFh since this holds the display memory and allows the cartridge to determine whether messages can be displayed on screen. The cartridge initially sets the border to white and should it find an error within the lower 16K RAM then it sets the border colour to indicate the nature of the fault, and no further testing occurs. The border colours have the following meaning:

Border ColourFault
Black No RAM present
Red Bad address line
Blue Bad data line

If an address or data line error is identified then the faulty line is indicated by displaying a number of white strips in the border area. For address or data line 0 there will be one stripe, for address or data line 1 there will be two stripes, for address or data line 2 there will be three stripes, etc. If the faulty line could not be identified then the border will have no white stripes on it.

Spectrum 128 RAM Tester Lower 16K Address Line Error Screenshot Spectrum 128 RAM Tester Lower 16K Data Line Error Screenshot

If a data line error is detected than the pattern in the main screen area may yield more information on the nature of the fault. The RAM Tester determines the lowest data line in error by filling the lower 16K bank with $01 to check bit 0. If all bytes read back correctly then it fills the bank with $02 to check bit 1. If all bytes still read back correctly then it fills the bank with $04 to check bit 2, etc. A consequence of this is that the display file and attributes file will be set with a value corresponding to the bit being tested, and hence specifies the pattern visible on the screen. The pattern expected as each bit is tested is shown below. Note that for bit 6 and bit 7, the attribute file bytes are set to $38 (white paper, black ink) so that the pattern in the display file may be seen.

BitExpected Display Pattern
0 Black paper, blue vertical lines.
1 Black paper, red vertical lines.
2 Black paper, green vertical lines.
3 Blue paper, black vertical lines.
4 Red paper, black vertical lines.
5 Green paper, black vertical lines.
6 White paper, black vertical lines (bit position 6).
7 White paper, black vertical lines (bit position 7).

If the bit specified by the stripes in the border could not be written then a completely black or completely white screen is expected. If the expected pattern for the bit is visible then it means the data bit could be written but could not be read back. Note that if multiple data line faults exist then other display patterns may be visible, making deciphering the meaning of the pattern more convoluted.

If the lower 16K has been found to be working then the display can be used and so a list of the 16K RAM banks to be tested is displayed. As each bank is tested, its success status is displayed. The eight banks of 16K RAM are also represented by the numbers 0 to 7 and these indicate the operations being performed and the success status on each bank. A green background around a number shows that the paging to that bank worked ok, a red background indicates a failure. If a bank can be paged in successfully but the bank itself is found to be faulty, the number is displayed in red on a green background.


Spectrum 128 RAM Tester ROM Cartridge Screenshot

The upper 32K of RAM in the memory map is then tested and the results displayed on screen. This is followed by tests on the paging mechanism found in the Spectrum 128 by attempting to page in each of 16K banks into the memory map. If all of these paging tests fail then the cartridge puts forward the suggestion that only a 16K or 48K Spectrum is being tested. If any of the banks were successfully paged in then the cartridge proceeds to test the memory locations within those banks. For any faults found, the cartridge attempts to identify whether the cause was due to missing memory, a bad address line or bad data line. Although a memory error could in theory be caused by multiple failures, the cartridge only reports the first fault it discovers.

Some example error screenshots are shown below:

Spectrum 128 RAM Tester Data Line Error Screenshot Spectrum 128 RAM Tester Not Present Error Screenshot Spectrum 128 RAM Tester Page Error Screenshot

The RAM within the Spectrum 128 is composed of sixteen 4164 RAM ICs. These are 1 x 64Kb dynamic RAM chips, and have IC designators IC6 - IC13 and IC15 - IC22. The RAM banks 1, 3, 5 and 7 (the contended RAM) are formed from IC6 - IC13, whereas the RAM banks 0, 2, 4 and 6 (the uncontended RAM) are formed from IC15 - IC22 [Note that the Spectrum 128 Service Manual incorrectly states that the contended RAM forms banks 4 - 7 and the uncontended RAM forms banks 0 - 3]. Each RAM IC stores a particular data line bit for its associated RAM banks. So for example, IC6 stores the data line D0 for all addresses within RAM banks 1, 3, 5 and 7. Therefore, if the RAM Tester cartridge identifies a data line error then it is easy to map this directly to a RAM chip within the Spectrum 128, as the following table shows:

Data LineRAM Chip
0 IC6
1 IC7
2 IC8
3 IC9
4 IC10
5 IC11
6 IC12
7 IC13
Data LineRAM Chip
0 IC15
1 IC16
2 IC17
3 IC18
4 IC19
5 IC20
6 IC21
7 IC22
Spectrum 128/+2
Contended RAM
(Banks 1, 3, 5, 7)
Spectrum 128/+2
Uncontended RAM
(Banks 0, 2, 4, 6)

The RAM within the 48K Spectrum is composed of eight 4116 RAM ICs for the lower 16K (contended RAM) and eight 4532 RAM ICs for the upper 32K (uncontended RAM). The 4116 RAM are 8 x 16Kb dynamic RAM chips and have IC designators IC6 - IC13. The 4532 RAM are 8 x 32Kb dynamic RAM chips and have IC designators IC15 - IC22. Each RAM IC stores a particular data line bit for its associated RAM. So for example, IC6 stores the data line D0 for all addresses within the lower 16K RAM. Therefore, if the RAM Tester cartridge identifies a 16K or 48K Spectrum with a data line error then it is easy to map this directly to a RAM chip within the Spectrum, as the following table shows:

Data LineRAM Chip
0 IC6
1 IC7
2 IC8
3 IC9
4 IC10
5 IC11
6 IC12
7 IC13
Data LineRAM Chip
0 IC15
1 IC16
2 IC17
3 IC18
4 IC19
5 IC20
6 IC21
7 IC22
16K/48K Spectrum
Contended RAM
(Lower 16K)
16K/48K Spectrum
Uncontended RAM
(Upper 32K)

Downloads

Click here to download the Spectrum 128 RAM Tester ROM cartridge. 8K