Test Manager
To enter the test manager, you can ground the VIA_TEST line located at pin 7 of the J22 edge connector. This must be done at boot before the cursor appears.
You also should be able to press the interrupt button to cause a "sad mac" to display and start the test manager, though it will go to sleep after some time unless you turn off sleep.
Connect a serial cable to the Modem port on the Portable.
Baud Rate: 9600
Parity: None
Data Bits: 8
Stop Bits: 2
Most examples here that involve additional input assume you are running in *A - ASCII Mode.
For example, before running a command like *T000100050000
make sure you've run *A
at least once, or the system will assume the input is hex rather than ASCII.
*S - Service Mode
Stops the startup message if entered using VIA_TEST or enabled using *5, and disables the sleep timer which will normally shut down the computer after some time.
*L - Load A4
Load a value into address register A4, for use in other commands.
Input: 4 Bytes
Example Usage:
*L00900000
*B - Set Byte Count
Load a value into data register D4, for use in other commands such as *D
or *M
.
Input: 2 Bytes
Example Usage:
*B101F
0x101F
bytes.
*D - Get Data
Load data from the serial input at location A4, for a length of D4 bytes.
A checksum is placed in result register D6.
Example Usage:
*L00104000
*B00FF
*D
[Input Data]
0xFF
bytes to memory starting at location 0x104000
.
*C - Checksum
Checksum data at location A4 for D4 bytes.
The checksum is returned in result register D6.
*G - Execute
Execute code from a provided memory address.
Input: 4 Bytes
Example Usage:
*G00900058
0x900058
.
*0 - Load A0
Load a value into address register A0, for use in other commands.
Input: 4 Bytes
Example Usage:
*000100000
*1 - Load A1
Load a value into address register A1, for use in other commands.
Input: 4 Bytes
Example Usage:
*100200000
*4 - Clear Result Registers D6/D7
Clears the error result registers in D6 and D7.
*5 - Display Boot Message
Start the repeating boot message normally shown when entering Test Manager with VIA_TEST.
*7 - Prevent Sleep
Prevents the computer from sleeping automatically (typically only for computers on battery).
*A - ASCII Mode
Switch to ASCII input mode for commands like *D
, *G
, *T
, etc.
*H - Hex Mode
Switch to Hexadecimal input mode for commands like *D
, *G
, *T
, etc.
*R - Send Test Results
Outputs the D6 and D7 result registers.
*M - Memory Dump
Dump memory starting at the address in A4, for D4 bytes.
A4: Start address
D4: Number of bytes to dump
Example Usage:
*L000FFFF0
*B000F
*M
*E - Echo On
Enables echoing of command input.
*I - Restart Test Manager
Restarts Test Manager. This will cause the system to boot if VIA_TEST is not asserted and the system does not encounter any test errors.
*P - Power Manager Command
Send commands to the Power Manager.
Input: 2 + ? Bytes
Example usage:
*P100104
*T - Run Critical Test
Run a test from the built in critical tests.
Input: 6 Bytes
Input structure:
- 2 bytes for the test number (Example:
0004
for the ROM Test) - 2 bytes for the number of passes (Example:
00FF
to run for 255 passes) - 2 bytes for test options
Example Usage:
*T000400FF0000
Test 0: Memory Sizing Test
Location in ROM: 0x903EA6
Test 1: Data Bus Test
Write a pattern to 8 bytes starting at the address in A0. The first pattern is 00000001 FFFFFFFE
which is rotated left 256 times (00000002 FFFFFFFD
, 00000004 FFFFFFFB
, etc.).
If a bit does not match at any point, it is reflected in the minor error register D6.
A0: Test address
Example Usage:
*000100000
*T000100010000
Location in ROM: 0x901CD6
Test 2: Modulo 3 RAM Test
A0: Start address
A1: End address
Example Usage:
*000000000
*100100000
*T000200010000
Location in ROM: 0x901D2A
Test 3: Address Line Test
Location in ROM: 0x901FEE
Test 4: ROM Test
This test calculates a checksum individually for the two ROM chips.
Location in ROM: 0x901F22
Test 5: Reverse Modulo 3 RAM Test
A0: Start address
A1: End address
Example Usage:
*000000000
*100100000
*T000500010000
Location in ROM: 0x901E2E
Test 6: March RAM Test
A0: Start address
A1: End address
Example Usage:
*000000000
*100100000
*T000600010000
Location in ROM: 0x901F90
*N - Run Non-critical Test
Input: 6 Bytes
Test 80: Mapper RAM Data Test
See also: CPU GLU RAM Mapping Registers
Location in ROM: 0x90210E
Test 81: Mapper RAM Uniqueness Test
See also: CPU GLU RAM Mapping Registers
Location in ROM: 0x90215A
Test 82: VRAM Data Test
Location in ROM: 0x9020E2
Test 83: VRAM Address Test
Location in ROM: 0x902068
Test 84: SCC Register Test
Location in ROM: 0x902322
Test 85: SCC Loop Test
Location in ROM: 0x90229A
Test 86: SCC Timer Test
Location in ROM: 0x90235A
Test 87: VIA Test
Location in ROM: 0x902444
Test 88: SCSI Test
Location in ROM: 0x9025C2
Test 89: ASC Test
Location in ROM: 0x9026A6
Test 8A: PRAM Test
This test does not do anything and always fails.
Location in ROM: 0x9027DE
Running from a Debugger
You can also run the tests from a debugger such as MacsBug or MicroBug.
As an example, here is running the March RAM Test on the 3rd megabyte of RAM:
Set the start memory address to test to the beginning of the 3rd megabyte of RAM:
A0 200000
Set the end address to the end of the 3rd megabyte:
A1 2FFFFF
Set the return address to the interrupt handler to return to the debugger:
A6 90380A
Set the Program Counter to the test location:
PC 901F90
Run the test:
G
Once the test is finished, you should be returned to the debugger.
You can now display the result from the appropriate register:
D6
Unimplemented Commands
Commands such as *U
, *W
, *Q
, *2
, *3
, and *6
are valid Test Manager options but they are not implemented in the Portable's Test Manager, so they do nothing.