I have been working on an emulator and have been using the previous version of these processor test files that were part of the earlier JSMoo repository. When I switched to this more recent version, I had over 50% of my opcodes fail the tests.
While performing an investigation I saw that the "q" register was different. In the previous versions of the JSON files,
and in the ares sources and in the jsmoo sources, the Q register is a flag, a single-bit value of either zero or one.
In the latest versions, the value appears to be a byte, not a bit. For example, from v1/04.json,
...
{
"name": "04 0001",
"initial": {
"pc": 59711,
"sp": 28986,
"a": 50,
"b": 242,
"c": 132,
"d": 238,
"e": 176,
"f": 142,
"h": 107,
"l": 248,
"i": 153,
"r": 59,
"ei": 0,
"wz": 14358,
"ix": 13969,
"iy": 48843,
"af_": 54814,
"bc_": 10826,
"de_": 57474,
"hl_": 23694,
"im": 1,
"p": 1,
"q": 142,
"iff1": 0,
"iff2": 1,
"ram": [
[
59711,
4
]
]
},
"final": {
"a": 50,
"b": 243,
"c": 132,
"d": 238,
"e": 176,
"f": 160,
"h": 107,
"l": 248,
"i": 153,
"r": 60,
"af_": 54814,
"bc_": 10826,
"de_": 57474,
"hl_": 23694,
"ix": 13969,
"iy": 48843,
"pc": 59712,
"sp": 28986,
"wz": 14358,
"iff1": 0,
"iff2": 1,
"im": 1,
"ei": 0,
"p": 0,
"q": 160,
"ram": [
[
59711,
4
]
]
},
"cycles": [
[
59711,
null,
"----"
],
[
59711,
null,
"r-m-"
],
[
39227,
4,
"----"
],
[
39227,
null,
"----"
]
]
},
...
Why did the definition change? Which of the 8 bits is the real Q? Is a Q of 142 set or clear? what about 160?
I have been working on an emulator and have been using the previous version of these processor test files that were part of the earlier JSMoo repository. When I switched to this more recent version, I had over 50% of my opcodes fail the tests.
While performing an investigation I saw that the "q" register was different. In the previous versions of the JSON files,
and in the
aressources and in thejsmoosources, theQregister is a flag, a single-bit value of either zero or one.In the latest versions, the value appears to be a byte, not a bit. For example, from
v1/04.json,...
{ "name": "04 0001", "initial": { "pc": 59711, "sp": 28986, "a": 50, "b": 242, "c": 132, "d": 238, "e": 176, "f": 142, "h": 107, "l": 248, "i": 153, "r": 59, "ei": 0, "wz": 14358, "ix": 13969, "iy": 48843, "af_": 54814, "bc_": 10826, "de_": 57474, "hl_": 23694, "im": 1, "p": 1, "q": 142, "iff1": 0, "iff2": 1, "ram": [ [ 59711, 4 ] ] }, "final": { "a": 50, "b": 243, "c": 132, "d": 238, "e": 176, "f": 160, "h": 107, "l": 248, "i": 153, "r": 60, "af_": 54814, "bc_": 10826, "de_": 57474, "hl_": 23694, "ix": 13969, "iy": 48843, "pc": 59712, "sp": 28986, "wz": 14358, "iff1": 0, "iff2": 1, "im": 1, "ei": 0, "p": 0, "q": 160, "ram": [ [ 59711, 4 ] ] }, "cycles": [ [ 59711, null, "----" ], [ 59711, null, "r-m-" ], [ 39227, 4, "----" ], [ 39227, null, "----" ] ] }, ...Why did the definition change? Which of the 8 bits is the real
Q? Is aQof142set or clear? what about160?