Undocumented commands

ZXNet echo conference «code.zx»

From Orionsoft To All 8 March 2006

Hello, Vitamin The holes in the range ED40 to ED7F typically duplicate documented instructions: - NEG at ED4C, ED54, ED5C, ED64, ED6C, ED74, ED7C - NOP at ED77, ED7F - RETN at ED55, ED65, ED75 - RETI at ED5D, ED6D, ED7D - IM ? at ED4E, ED6E - IM 0 at ED66 - IM 1 at ED76 - IM 2 at ED7E - IN F,(C) at ED70 - OUT (C),0 at ED71 IM ? sets the interrupt mode flip-flops to an undefined state, which seems to act like IM 0 or IM 1. These states are indistinguishable on the CPC (!CPC chooses IM 0 to indicate an abnormal state). IN F,(C) performs the input operation, setting the flags as normal, but throws the input value away. OUT (C),0 outputs zero to the port. (Note it would output 255 if the Z80 used in the CPC were the CMOS variant rather than the NMOS variant.)

From Alexander Shushkov To All 9 March 2006

Hello, lvd lvd> Well, sorry, inf was never undocumented, at least lvd> least in branded/translated from branded docks! A command is undocumented if there is no established mnemonics for it. Yes Ivan Roshchin once said. I won’t say that this is a quote, because... I'm afraid of something make a mistake :) But it seems like a sober thought.

From Vladimir Kladov To All 10 March 2006

Hello axor not documented - only means that it is not documented in official document. That's all. Currently all undocumented commands well documented. Mnemonics are the tenth thing. I don't like mnemonics specific asma - you can use your own through macro commands and define.

From Alexander Shushkov To All 12 March 2006

Hello Max Wood Max> not documented - only means that it is not documented in Max> official document. That's why we call it that. Max> At the moment, all undocumented commands are good Max> are documented. How can this be? Some kind of contradiction.

From Vadim Osadchy To All 12 March 2006

Hello, Vladimir Kladov Vla> At the moment, all undocumented commands are good Vla> are documented. So help me find this documentation, please!!!!

From Vladimir Kladov To All 12 March 2006

Hello axor Sean Young. The Undocumented Z80 Documented. That's what it's called. z80-documented.pdf. It was on worldofspectr.org if you can’t find it by searching.

From goodboy To All 13 March 2006

Hello, Vladimir Kladov out (c),0 was used in the zxformat log, on some processors this the command was not executed

From Andrey Alexandrovich Titov To All 13 March 2006

Hello, goodboy goo> out (c),0 used in zxformat journal, on some processors goo> this command was not executed Which ones exactly?

From psb To All 13 March 2006

Hello Titus Tit> Which ones exactly? in the format itself (of some kind) it was written that on some processes that then they set it to KAY, this command output to port #FF.. personally I had one like this percent in the Pentagon, but I don’t remember how it was labeled.. and they had port #7FFD there (in 3rd format), so the intra did not work...

From Andrey Alexandrovich Titov To All 13 March 2006

Hello, Vladimir Kladov Vla> Accordingly, it’s easy to create a test and write it down according to some thread Vla> code address Vla> Vla> type Vla> ld c,#FE Vla> out (c),0 Vla> ret Vla> Vla> and call from Vasik. If the border is not made black, then these are the Vla> processors. Even 10 years ago MacBuster (according to him) on this test a bunch of percentages I tried it, the border was black everywhere :v2_rolley

From Vladimir Kladov To All 13 March 2006

Hello, psb Accordingly, it’s easy to create a test, write down the codes at some address type ld c,#FE out (c),0 ret and call from Vasik. If the border is not made black, then these are the processors.

From goodboy To All 14 March 2006

Hello Titus I remember exactly that Oldman had a pro who misunderstood out (c),0

From Vadim Osadchy To All 18 March 2006

Hello, Vladimir Kladov Vla> Sean Young. The Undocumented Z80 Documented. That's what it's called. Vla> z80-documented.pdf. It was on worldofspectr.org, if you didn’t search Vla> is found. Thank you very much. You helped me a lot!!!

From Vladimir Kladov To All 18 March 2006

Hello Max Wood It's nice to be thanked. But - pay attention: not everything needs to be believed, even in this document. For example, an obvious mistake with the duration of the DJNZ team suggests the possibility of some other typos. In general, I'm not very I love the pdf format because you can edit it if there are typos - at least for myself - seems to be a very difficult undertaking. I tried exporting it to some text format to make html, such miracles have begun... ALL the letters f in the text have disappeared somewhere, for example. I gave up on this matter. If it were in HTML format, everything would be simpler, and much.

From Vladimir Kladov To All 18 March 2006

Hello, Vladimir Kladov On www.Z80.info I found version 0.6, 2003. There it was fixed about DJNZ. (There were also other inaccuracies, but I remember this one). The question about 0.91 remains. The document itself does not say where his “home” is. Wrong approach: if only it indicated how to contact the author, or where the latest version is located document, everything would be simpler. Yeah, I'm downloading another one. It is reassuring that the source codes in latex. Maybe this is the last one. That's right, it's her. The question has been removed.

From Vladimir Kladov To All 18 March 2006

Hello, boo_boo Hmm, I have 10/13. Version 0.4 2001. Where did you get the new one? I like this document in I downloaded it from WoS last year.

From Stanislav Lomakin To All 18 March 2006

Hello, Vladimir Kladov Vla> Hmm, I have 10/13. Version 0.4 2001. Where did you get the new one? I like this Vla> I downloaded the document from WoS last year. http://myquest.nl/z80undocumented/

From Stanislav Lomakin To All 18 March 2006

Hello, Vladimir Kladov Vla> an obvious mistake with the duration of the DJNZ team suggests an o Vla> the possibility of any other typos. In general, I really don’t like the format Vla> pdf, due to the fact that you can edit it in case of typos what about DJNZ? 2 bytes, 8/13 clock cycles, everything seems to be in place (document version -- 0.91). As for editing, you can download the latex source instead of the PDF, but in an amicable way - write to the maintainer ;)

From Vlad Semchenko To All 14 September 2006

Hello MadCat! The question arose - are there any undocumented commands other than working with halves of index registers (in older processors Zilog recognized them documented), in the command tables DD, FD, DD CB, FD CB? And the second question is whether there are undocumented twins among the teams of the ED 80-ED section BF (LDI, CPI, INI, OUTI...)?

From Vlad Semchenko To All 14 September 2006

Hello spensor Third question. The hierarchy of command codes is constructed in the following order: - without prefix, one byte COP; - commands with the prefix CB, ED, DD, FD, two bytes COP; - commands with double prefixes DD CB, FD CB, three bytes COP; It turns out that the prefix hierarchy looks like: - without prefix; - with the prefix CB and ED - additions to the main command table; - with the prefix DD and FD - modification of commands by replacing the register pair HL with IX and IY. In this case, the modification is performed with a code page without prefixes (DD(FD) + KOP) and with code page CB (DD(FD) + CB + KOP). Logic dictates that there should be commands like DD(FD) + ED + KOP. Question - How are these combinations actually worked out? Or DD(FD) is executed as NOP, but is the ED + COP command actually executed?

From Gavrilov Vitaly To All 15 September 2006

Hello spensor spe> - how are these combinations actually worked out? Or DD(FD) spe> is executed as NOP, but the command ED + KOP is actually executed? Judging by the source code of the emulator, this is true. From the preceding prefix chain DD/FD is selected last. If the subsequent byte is equal to CB, then the operations CB,XX, but with index registers instead of HL. But if the next one byte is equal to ED, then everything is as you said - just the chain of prefixes is ignored

From Vlad Semchenko To All 15 September 2006

Hello Vitamin 2 Vitamin; Thank you; for the clarification! Vit> Judging by the emulator sources, this is so. This is a new approach in exploring the undocumented ;) Vit> The last one is selected from the previous chain of DD/FD prefixes. If Vit> the subsequent byte is equal to CB, then the operations CB,XX are performed, but with Vit> with index registers instead of HL. But if the next byte is equal Vit> ED, then everything is as you said - just the chain of prefixes is ignored Then an additional question - how are commands with DD (FD) prefixes processed? and DD (FD) CB if the command code does not work with the H and L registers - NOP is executed or we get the same command as without the DD (FD) prefix, but it is executed longer? This is essentially my first question, but in different words.

From Alexandr Sinyakov To All 15 September 2006

Hello spensor spe> Then an additional question - how are commands processed spe> prefixes DD (FD) and DD (FD) CB if the command code does not work with spe> registers H and L - NOP is executed or we receive the same command as spe> without the DD (FD) prefix, but does it take longer to execute? Essentially it's mine spe> first question, but in other words. DD,CB,n,00 = RLC B,(IX+n). and the same with all the first 64 teams of the CB group (RR C,(IX+n); SLA D,(IY+n)...). Know what they do (obtained experimentally) way), but how many clock cycles are eaten is another question... For the main commands groups (without CB or ED) in which there are neither H nor L index prefixes in theory should count as NOP. They do not affect the ED group (that is, again they are considered NOPs)

From Gavrilov Vitaly To All 16 September 2006

Hello spensor spe> This is a new approach in the study of undocumented;) spe> As they say, practice shows a lot. In particular, quite accurate Emulation of the processor is sufficient for programs to run. Research various "spherical horses in a vacuum" makes sense only to identify emulator. But this is unreliable, since even with real crystals the results work varies (see topic in this thread) spe> Then an additional question - how are commands processed spe> prefixes DD (FD) and DD (FD) CB if the command code does not work with spe> registers H and L - NOP is executed or we receive the same command as spe> without the DD (FD) prefix, but does it take longer to execute? Essentially it's mine spe> first question, but in other words. I look there and don’t find a single such team - all 32 different teams of this groups work with IX/IY, but in addition to their main operation (shift/work with bits) modify one of the 8 internal registers. Total 32*8=256 teams