Arduino Mega Based In-Circuit Tester Operation

On first power on the tester should show a brief sign-on message: "In Circuit Test". After this the tester enters the setup menu. In general:

Arduino Mega Based In-Circuit Tester - Setup Menu

The setup menu is the first menu after power on and remains until a game is selected from it (i.e. once a game to test is selected the tester enters the test menu).

- Set Repeat Jackrabbit (1) Jackrabbit (2) ...

- Set Repeat

This option causes all the test operations to run in a repeat loop for the number of seconds indicated. The option is useful for debugging issues using an oscilloscope by providing a continuous loop.

Jackrabbit (1)

The game to select, in this case an example from the Z80 build. The number in brackets after the game name selects an alternative ROM set for the game for the ROM test.

Arduino Mega Based In-Circuit Tester - Test Menu

When a game is selected the test menu for that game is entered.


Bus Idle Bus Check ROM Check All RAM Check All RAM Check All CS Interrupt Check ...

... Input Read Output Write ROM Check ROM Read RAM Check RAM Write-Read ROM Read All RAM Write All AD RAM Write All Lo RAM Write All Hi RAM Read All Custom

Bus Idle

Sets the CPU bus to idle (inactive) state. The CPU bus is idle on start. This function is provided as a means to get back to CPU bus idle after a bus hang occurs.

Bus Check

Performs a basic check of the CPU bus state, validating that Vcc is high (that detects no power on the target), GND is low, reset is inactive, the clock input is pulsing, address & data are able to be floating etc.

Errors are reported in the example form of "E: Vcc 11 Lo" where "E:" indicates an error, "Vcc" the CPU pin function, "11" the device pin number and "Lo" the value read from that pin. A CPU pin function name with a leading underscore, e.g. _RESET, indicates that the pin is active low.

ROM Check All

Performs a check of all the ROMS defined for the game. The ROM check is done in two parts, the first part is simple read validation of all bytes on single power of 2 address bits (addresses 0x0001, 0x0002, 0x0004, 0x0008 etc). The second part is a CRC-32 check of each ROM contents. The reference checksums can be obtained from the MAME source code or calculated from ROM images using a utility such as HexEdit.

Errors reported in part 1 are in the example form of E: 8H 0004 31 92 where "E:" indicates an error, "8H" the device location on the board, "0004" the CPU address that was read, "31" the data that was expected and "92" the actual data read.

Errors reported in part 2 are in the example form of E: 9H 29A4D790 where "E:" indicates an error, "9H" the device location on the board and "29A4D790" the actual CRC for the device.

RAM Check All

Performs a check of all the RAMS defined for the game. The check writes a known random pattern to the RAM and then validates the contents. The check is done twice with the second pass using the inverted data from the first pass to ensure every bit is tested.

RAM Check All CS

This is the same as the above RAM check but instead of being executed per device all the RAMS in the system are written and then all are read-verified. This is used to detect chip select problems between RAMs.

Interrupt Check

Verifies that the video blanking interrupt is pulsing, that it's mask is working and any vector is correct (if applicable).

Input Read

Scrollable list of inputs in the system that reads the selected inputs when executed and displays the result.

Output Write

Scrollable list of outputs in the system that writes the selected outputs high or low when executed.

ROM Check

Scrollable list of ROMs in the system that performs a ROM check for the selected ROM when executed. This is the individual ROM check version used in the system-wide "ROM Check All" function.

ROM Read

Scrollable list of ROMs in the system that performs a ROM read of the first four bytes from the selected the ROM and displays them.

RAM Check

Scrollable list of RAMs in the system that performs a RAM check for the selected RAM when executed. This is the individual RAM check version used in the system-wide "RAM Check All" function.

RAM Write-Read

Scrollable list of RAMs in the system that performs a RAM write followed by a RAM read of the first four bytes from the selected the RAM and displays them. The write pattern is 0x11, 0x22, 0x33, 0x44.

ROM Read All

Performs a read of all the ROMs in the system. No checking of the contents is done - this is a fault finding aid to excercise the ROM read circuitry.

RAM Write All AD

Performs a write of all the RAMS in the system with the pattern data=address. This is a fault findind aid for RAM and graphics issues.

RAM Write All Lo

Performs a write of all the RAMs in the system with the pattern 0x00. This is a fault findind aid for RAM and graphics issues.

RAM Write All Hi

Performs a write of all the RAMs in the system with the pattern 0xFF. This is a fault findind aid for RAM and graphics issues.

RAM Read All

Performs a read of all the RAMs in the system. No checking of the contents is done - this is a fault finding aid to excercise the RAM read circuitry.