Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GatoROM Z8 Format #76

Closed
travisgoodspeed opened this issue Dec 5, 2023 · 6 comments
Closed

GatoROM Z8 Format #76

travisgoodspeed opened this issue Dec 5, 2023 · 6 comments

Comments

@travisgoodspeed
Copy link
Owner

Close this issue when we have support for decoding ROMs from Z8 chips of multiple ROM sizes.

@Lord-Nightmare
Copy link
Contributor

Lord-Nightmare commented Dec 6, 2023

I figured this out using a number of guesses, some hints from the micrograph in the July 1981 issue of BYTE magazine, and a Log table at the end of the rom as a rosetta stone for the rather weird column order.

The Z8611 rom, if arranged so that the rom is at the bottom of the die (which is technically upside-down compared to the image in the july 1981 BYTE article), is arranged as such:

ROM OVERVIEW:

1 vs 0 bits: an open link (blue dot in maskromtool) is a 0 bit, a closed link (red dot in maskromtool) is a 1 bit

| D0   D1   D2   D3 || D4   D5   D6   D7 |
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|
|.... .... .... ....||.... .... .... ....|

Column order:

Detail of the D0-D3 columns:
|                                                D0                                              ||    D1   ...
#  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
c 0f 1f 07 17 0b 1b 03 13 0d 1d 05 15 09 19 01 11 0e 1e 06 16 0a 1a 02 12 0c 1c 04 14 08 18 00 10 


Detail of the D4-D7 columns: (same as D0-D3 but mirrored left to right)
...  D6    ||                                             D7                                                |
           #  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
           c 10 00 18 08 14 04 1c 0c 12 02 1a 0a 16 06 1e 0e 11 01 19 09 15 05 1d 0d 13 03 1b 0b 17 07 1f 0f|


ROM address is column 'number' plus 32 * row number

Row order from top: (T0 and T1 are the two rows of the 64-byte test rom)
T1
T0
00
01
03
02
04
05
07
06
08
09
0b
0a
...
7b
7d
7c
7e
7f

@Lord-Nightmare
Copy link
Contributor

Lord-Nightmare commented Dec 6, 2023

Effectively this means, to find a specific bit in the array given its rom address, you'd do something like:
D0-D3: final_column = BITSWAP8((column^0x1E), 7, 6, 5, 0, 1, 2, 3, 4);
D4-D7: final_column = BITSWAP8((column^0x01), 7, 6, 5, 0, 1, 2, 3, 4);

The BITSWAP8 function is:

#define BITSWAP8(val,B7,B6,B5,B4,B3,B2,B1,B0) \
		((BIT(val, B7) <<  7) | \
		 (BIT(val, B6) <<  6) | \
		 (BIT(val, B5) <<  5) | \
		 (BIT(val, B4) <<  4) | \
		 (BIT(val, B3) <<  3) | \
		 (BIT(val, B2) <<  2) | \
		 (BIT(val, B1) <<  1) | \
		 (BIT(val, B0) <<  0))

@Lord-Nightmare
Copy link
Contributor

I think it is likely that the Z8601 ROM on the die is in the same order as the Z8611, with the sole difference that the "bottom-most" row is 3f instead of 7f, no other significant difference.

@travisgoodspeed
Copy link
Owner Author

Sean Riddle just published his notes on the Z8.

@travisgoodspeed
Copy link
Owner Author

#77 tracks a patch that adds support.

travisgoodspeed added a commit that referenced this issue Dec 6, 2023
@travisgoodspeed
Copy link
Owner Author

We still lack support for exporting the test ROM, but this seems to work for everything else.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants