lenkki wrote:
1) Is there any difference in the operation between the following modes:
E=1, X=1, M=1 and E=0, X=1, M=1 ?
Unless the instructions fundamentally act differently between the 65C02 and 65C816 in native mode, no. The E bit will not affect cycle timing.
Quote:
2) I understand that I can move the "zero-page" to a arbitrary location even in Emulation mode.
Say that I have D = 0x1080 , I do an instruction with direct,indexed, x mode with the direct offset being 0xF0 and X = 0x0F
Will the addressed memory be:
0x117F ( D + offs + X)
or
0x107F (wraped inside the page)
0x117F; however, my reference manual says that the D register will be hardwired to zero in emulation mode, so if
my book is correct, you'll end up accessing 0x017F, which is correct from a 65C02's point of view.
This might be a bug in my documentation; Garth, can you clarify this based on your experiences with the chip?
Quote:
3) I have looked at the WDC documentation for 65816 (August 4th 2008) and I found gross errors in the opcode table and the logical explanation of some of the opcodes is just plain wrong. In addition some section of the text simply make no sense no matter how many times I read them. The errors I have found make me doubt the overall accuracy of the document. The documentation from GTE ( cmd_g65sc802_g65sc816.pdf) is as far as I can see free from obvious factual errors but doesn't go to deep into the specifics of the operation during emulation and or X/M flags set to 1. What other documents would you recommend? I have no problems with the techincal yargon aslong as it's written in clear english...
I've never found any issues with the opcode descriptions in any recent documents. Indeed, the D-register issue raised earlier would be the first I've discovered. However, since all of my work uses native-mode operation (I
never use emulation mode except for boot-strapping purposes), this doesn't affect me.
Quote:
8.2.3 When in the Emulation mode and DL in not equal to zero, the direct addressing range is
000000 to 00FFFF.
Oooooooookaaaaaayyyyy.....
That
IS quite strange.
I admit that my book doesn't say this. My book is much older than your copy though, and appears to go under a different title and author all-together.
Quote:
So what they're saying is that in native mode 00-0000 to 00-FFFF is addressable and in emulation mode 0000 to 00FF is addressable if the high byte is zero otherwise DH00 to DHFF is addressable if it's non-zero. How is that any different from 0000 to FFFF being addressable depending on how the D register is set?
It's not -- logically speaking, all such predicates, when OR-ed together, yield a range covering the entirety of bank 0.