Mattel Aquarius


ROM Recognization

How does the Mattel Aquarius recognizes a cartridge?
The Aquarius uses the bytes at locations $E005, $E007, $E009, $E00B, $E00D and $E00F to check for the presence of a cartridge. These bytes are constants and are always the same. The numbers are compared back to front to a table in the Aquarius 8K ROM. This table contains: 43,55,36,36,51,44. The constant numbers (112,168,100,108,176,156) are divided by 4 and subtracted from the table numbers. It results in 15,13,11,9,7,5; the place numbers minus 1. If this calculation is correct then the Aquarius assumes that there is a valid cartridge present.

Next, it will calculate the scramble code that has been used to encrypt the ROM. The 4th byte to the penultimate byte (locations $E003 - $E00E) are added together and added to the sum of the relative positions 3 to 15 (= 78). The result is divided by 256 and the remainder is XOR with the last number at location $E00F; 112. The result is the scramble code.

Finally the Aquarius will send the scramble code to I/O port $FF (software lock at PLA1) and jumps to ROM address $E010 for execution.

Create your own personalized ROM Recognization sequence.
Enter a string of 9 characters which you like to use to create your own personalized ROM Recognization bytes. If no "Extra byte" is entered then the value at location $E00E is used to calculate a scramble code of zero (no encryption used). If an "Extra byte" value is entered as a decimal, then the result for the scramble code will be visable in the field "Scramble code".
String
Extra byte
Scramble code

TextDecimalHexadecimalComments
$E000not used
$E001not used
$E002not used
$E003
$E004
$E005156$9CL
$E006
$E007176$B0E
$E008
$E009108$6CT
$E00A
$E00B100$64T
$E00C
$E00D168$A8A
$E00E
$E00F112$70M
  Cut and past the text below and use a z80 assembler to create your own personalized ROM recognization.