-
Notifications
You must be signed in to change notification settings - Fork 32
Spectranet
By Brendan Alford (brendan.alford@gmail.com)
Important note: The Spectranet diagnostics have been deprecated as of v0.35. The last release to include support is v0.33, release package here.
These tests are based on the ROM based diagnostics and have been specially built to work as loadable ROM modules on a Spectranet device. The test output can either be viewed locally on the host computer's video output (as with the ROM based tests), or a connection can be made to the host computer via Telnet session, where the test output can be viewed remotely.
They are provided in .TAP file format to be loaded directly via an app like TapDancer, Speccy Tape, Tapir etc., or to be loaded via a mounted filesystem using the Spectranet itself. The TAP image can be found within the release package here, in the Spectranet folder.
There are two ways to install ZX Diagnostics to the Spectranet, using the provided 'installer.tap' file or by loading the modules directly using the NMI Manager and ethup.exe tool (which is available here)
For the first, either load the tape image directly into the machine as you would with a normal tape file, or copy it to a mounted TNFS share and load it by typing:
%tapein "installer.tap": LOAD ""
The installer will confirm whether it is being installed into new available slots or overwriting an existing version of ZX Diagnostics. It will then prompt the user to press P to confirm the installation, any other key will abort.
Having confirmed the installation, after a couple of seconds the installer will then confirm that the modules were installed successfully. You may then restart in order to use ZX Diagnostics from the Spectranet.
The other means of installing is to use the Spectranet's ROM manager to install the two ROM modules. This is a slightly more involved process so should be considered for expert users only.
Download the ethup.exe tool and prepare a directory containing the tool and the two installable modules - testmodule1.module and testmodule2.module. These are contained within the 'Spectranet' folder in the release package.
For each module, follow these steps:
-
Invoke the Spectranet NMI menu by closing jumper S1 on the Spectranet momentarily
-
Select option B (Add and remove ROM modules)
-
If adding a module, select option A (Add a ROM module), else select option B (Replace an existing module)
-
Enter the module's location number (e.g. 09, 0A)
-
When the 'Listening on x.x.x.x port 2000' message appears, enter either of the following on your PC:
ethup x.x.x.x testmodule1.module (for module 1)
or -
ethup x.x.x.x testmodule2.module (module 2)
where x.x.x.x is the IP address displayed by the Spectrum when listening.
- Exit and restart your Spectrum.
When powering on a Spectrum with a Spectranet attached, it will go through its usual start up routine of establishing a network link, setting up network settings via DHCP if configured and loading other ROM modules.
When the Spectranet ROM module is initialised, it prompts the user to either press T to start a normal (single-pass) test, or to press S to start soak testing. If the user doesn't press either key within a second or so, the module will assume no testing is required and continue initializing the Spectranet to BASIC.
Once a single-pass or soak test option is chosen, the computer will emit a single beep to confirm, and then will await a Telnet connection. You may use the Telnet client of your choice to connect to the host machine using the IP address it is configured with, or optionally you may press L to run the tests locally, where all output will appear on screen.
Once either a local or remote connection has been made, the diagnostics commence with a separate beep to confirm and will start with lower RAM tests.
As the lower RAM of a Spectrum (or page 5 on 128 machines) is used for display, we cannot assume that the machine can produce a correct display nor rely on it for output. Therefore lower RAM testing will produce some test patterns on the display that exercise the RAM in various ways, and if a failure is found, will report the result by way of a series of stripes in the border.
There will be eight of these stripes, representing bits 0 to 7 in downward order. These correspond to memory IC's IC6 to IC13 (which are 4116 IC's) in that order. A green stripe indicates a healthy IC, and a red one that a fault was encountered. The computer will then halt.
The tests will additionally attempt to inform the user in the main display area via contrasting attributes of what bit positions in the lower RAM/Page 5 area were found faulty.
NOTE 1: If testing a 128K machine, these tests will by default exercise page 5 of RAM. In this case, the memory IC's corresponding to bits 0-7 are as follows:
Bit | IC (128K) | IC (+2) | IC (+2A/+3) |
---|---|---|---|
0 | IC6 | IC32 | IC3 |
1 | IC7 | IC31 | IC3 |
2 | IC8 | IC30 | IC3 |
3 | IC9 | IC29 | IC3 |
4 | IC10 | IC28 | IC4 |
5 | IC11 | IC27 | IC4 |
6 | IC12 | IC26 | IC4 |
7 | IC13 | IC25 | IC4 |
NOTE 2: If testing an Issue 1 Spectrum, the lower RAM IC's do not have IC designations on the PCB, nor are they in the same layout as in later issues. The layout is as follows:
If the lower RAM tests pass, then we have usable RAM in which to produce a display and store some workspace. The machine will then clear to a blue screen where results of further tests will be displayed if running locally, or will display some colour bars if running remotely.
The ROM is then checksummed to determine the extent of the remaining memory tests that need to be performed. If the ROM is corrupt in some way, then this test will fail with the message 'Unknown or corrupt ROM' and the user will be prompted to select the type of machine being tested (if in normal mode). If soak testing is enabled, the tests assume a 48K machine.
The upper 32K of memory is then tested using the same test routines that were used for the lower 16K. Any failures for a particular test are noted, and the IC's responsible for the failure are displayed.
If the machine has been identified via the ROM check as a clone, then the failing bit positions are displayed instead.
If all 8 upper RAM IC's are found to be faulty, the machine is either a 16K model or has a problem with the upper RAM multiplexer IC's. Information to this effect will be displayed if this occurs.
Note: If testing an Issue 1 with Sinclair 32K daughterboard, this board again has no IC designations. The diagnostics will identify IC15-IC22 as being faulty, representing bits 0-7 in the same order. These bits map to the physical IC's on the daughterboard as marked below:
All memory banks are tested in turn by paging them in to the C000-FFFF address range, except bank 5 which represents the lower 16K of memory on 128K machines. Failures are noted against each bank, and again the IC's responsible for failure are displayed when testing is concluded.
Memory paging is also tested and is flagged if a failure is detected. This is almost always due to a misdetection of a 48K machine as a 128K, or an issue with the PAL/HAL/ULA IC's, depending on model.
When testing is complete, the program will then display the results of the tests, will prompt the user to press a key, and then will continue Spectranet initialization from where it left off prior to the tests being run.
Soak test mode is chosen as specified earlier by holding the S key down when prompted, and is indicated during the tests by a message 'Soak test running, iteration xxxxx'. This may be used as a guide to how long soak testing has been running for.
All tests are executed identically and in the same order as in normal test mode.
Following each successful test iteration, the test program commences the next test iteration after a short delay.
A failure detected during soak testing will halt testing (except where no upper memory is found working; this will be the case if testing a 16K Spectrum).
If the ROM checksum test fails (and therefore the machine type cannot be determined), the firmware assumes 48K hardware and continues testing as such.
The memory tests are identical to those executed by the ROM based tests, and are more thoroughly described in the appropriate section here.
Firmware | Tape Tests | Spectranet | Flash Utility | ROM Check | How to Build | Hardware | FAQ | Home