Z-80 code question about a loop that depends on the contents of the refresh register

Maciej W. Rozycki macro at linux-mips.org
Fri Dec 30 12:45:55 CST 2016


On Wed, 14 Dec 2016, Tony Duell wrote:

> What I need to do is find exactly how the flags are set by the
> LD A,R

 It's been long since I did anything with the Z80, but offhand all flags 
are set as with ALU operations according to the value loaded into the 
accumulator (same with LD A,I, but not the reverse loads IIRC).  These are 
the only Z80 LD instructions that set the flags.

 If help is still needed with interpreting this piece of code I can reach 
out for documentation and refresh old memory.

 BTW, as a side effect of incomplete instruction decoding and the lack of 
trapping on unimplemented operations the Z80 had a number of undocumented 
operations available, which however were reliable across different silicon 
manufactured and eventually got figured out and documented.  Some software 
relied on correct execution of these operations and may require an 
accurate emulator implementation to run correctly.

 XZX is one emulator I know of that has claimed support for all these 
operations in its core processor support (I and R registers should also be 
correctly handled); otherwise emulating Sinclair ZX Spectrum class systems 
and running as an X11 client on various *nix systems.  I haven't used it 
for years now though and have no idea whether it has been maintained 
beyond 1997 which is when the version I still have around has been 
released.

  Maciej


More information about the cctalk mailing list