Compatibility |
|
 |
 |
This cartridge works on the following PCBs and with the following models of Spectrum:
|
|
Latest Version: |
|
2.10 |
|
PROM Size: |
|
8K |
|
|
|
|
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:
- It only tests the first byte in each 16K RAM bank and so will not detect failures in other locations within the RAM bank.
- It only tests with the values FFh and 00h and so will not detect data lines that are shorted together.
- It will not detect RAM paging errors which cause the wrong bank to be switched in.
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:
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:
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.
|
|
|
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.
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.
|
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:
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:
0 |
IC6 |
1 |
IC7 |
2 |
IC8 |
3 |
IC9 |
4 |
IC10 |
5 |
IC11 |
6 |
IC12 |
7 |
IC13 |
|
|
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:
0 |
IC6 |
1 |
IC7 |
2 |
IC8 |
3 |
IC9 |
4 |
IC10 |
5 |
IC11 |
6 |
IC12 |
7 |
IC13 |
|
|
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 |
|
 |
 |