======
Thanks
======

.. only:: html

   .. |re| raw:: html

      <sup>

   .. |ren| raw:: html

      </sup>

.. only:: latex

   .. |fe| raw:: latex

      \textsuperscript{

   .. |ces| raw:: latex

      }


Many thanks to the following individuals (in alphabetical order):

* **Akimov, Vadim (lvd)**

  * For testing the library on many different platforms and CPU architectures.

* **azesmbog**

  1. For validating tests on real hardware. |re| |fe| :ref:`1<r1>` |ren| |ces|
  2. For his research on the unstable flag behavior of the ``ccf/scf`` instructions.
  3. For his invaluable help.

* **Banks, David (hoglet)**

  1. For cracking the flag behavior of the block instructions. |re| |fe| :ref:`2<r2>`, :ref:`3<r3>` |ren| |ces|
  2. For his research on the flag behavior of the ``ccf/scf`` instructions. |re| |fe| :ref:`3<r3>` |ren| |ces|

* **Beliansky, Anatoly (Tolik_Trek)**

  * For validating tests on real hardware. |re| |fe| :ref:`4<r4>` |ren| |ces|

* **Bobrowski, Jan**

  * For fixing the *"Z80 Full Instruction Set Exerciser for Spectrum"*. |re| |fe| :ref:`5<r5>` |ren| |ces|

* **boo_boo**

  * For cracking the behavior of the MEMPTR register. |re| |fe| :ref:`6<r6>`, :ref:`7<r7>`, :ref:`8<r8>`, :ref:`9<r9>` |ren| |ces|

* **Brady, Stuart**

  * For his research on the flag behavior of the ``ccf/scf`` instructions. |re| |fe| :ref:`10<r10>` |ren| |ces|

* **Brewer, Tony**

  1. For his research on the special RESET. |re| |fe| :ref:`11<r11>`, :ref:`12<r12>` |ren| |ces|
  2. For helping to crack the flag behavior of the block instructions. |re| |fe| :ref:`2<r2>` |ren| |ces|
  3. For conducting low-level tests on real hardware. |re| |fe| :ref:`2<r2>` |ren| |ces|
  4. For helping me to test different undocumented behaviors of the Zilog Z80.

* **Bystrov, Dmitry (Alone Coder)**

  * For validating tests on real hardware. |re| |fe| :ref:`4<r4>` |ren| |ces|

* **Chandler, Richard**

  * For his corrections to the documentation.

* **Chunin, Roman (CHRV)**

  * For testing the behavior of the MEMPTR register on real Z80 chips. |re| |fe| :ref:`6<r6>`, :ref:`7<r7>`, :ref:`8<r8>`, :ref:`9<r9>` |ren| |ces|

* **Conway, Simon (BadBeard)**

  * For validating the *"Z80 Test Suite"* on several Z80 clones. |re| |fe| :ref:`13<r13>` |ren| |ces|

* **Cooke, Simon**

  * For finding out how the ``out (c),0`` instruction behaves on the Zilog Z80 CMOS. |re| |fe| :ref:`14<r14>` |ren| |ces|

* **Cringle, Frank D.**

  * For writing the *"Z80 Instruction Set Exerciser"*. |re| |fe| :ref:`15<r15>` |ren| |ces|

* **Devic, Goran**

  * For his research on undocumented behaviors of the Z80 CPU. |re| |fe| :ref:`16<r16>` |ren| |ces|

* **Equinox**

  * For his corrections to the documentation.

* **Flammenkamp, Achim**

  * For his article on Z80 interrupts. |re| |fe| :ref:`17<r17>` |ren| |ces|

* **Gimeno Fortea, Pedro**

  1. For his research work. |re| |fe| :ref:`18<r18>` |ren| |ces|
  2. For writing the first-ever ZX Spectrum emulator. |re| |fe| :ref:`19<r19>`, :ref:`20<r20>` |ren| |ces|

* **goodboy**

  * For testing the behavior of the MEMPTR register on real Z80 chips. |re| |fe| :ref:`6<r6>`, :ref:`7<r7>`, :ref:`8<r8>`, :ref:`9<r9>` |ren| |ces|

* **Greenway, Ian**

  * For testing the flag behavior of the ``ccf/scf`` instructions on real hardware. |re| |fe| :ref:`10<r10>`, :ref:`21<r21>` |ren| |ces|

* **Harston, Jonathan Graham**

  1. For his research work.
  2. For his technical documents about the Zilog Z80. |re| |fe| :ref:`22<r22>`, :ref:`23<r23>`, :ref:`24<r24>` |ren| |ces|
  3. For porting the *"Z80 Instruction Set Exerciser"* to the ZX Spectrum. |re| |fe| :ref:`25<r25>` |ren| |ces|

* **Helcmanovsky, Peter (Ped7g)**

  1. For helping me to write the *"IN-MEMPTR"* test.
  2. For writing the *"Z80 Block Flags Test"*. |re| |fe| :ref:`26<r26>`, :ref:`27<r27>` |ren| |ces|
  3. For writing the *"Z80 CCF SCF Outcome Stability"* test. |re| |fe| :ref:`27<r27>` |ren| |ces|
  4. For writing the *"Z80 INT Skip"* test. |re| |fe| :ref:`27<r27>` |ren| |ces|
  5. For his research on the unstable flag behavior of the ``ccf/scf`` instructions.
  6. For his invaluable help.

* **icebear**

  * For testing the behavior of the MEMPTR register on real Z80 chips. |re| |fe| :ref:`6<r6>`, :ref:`7<r7>`, :ref:`8<r8>`, :ref:`9<r9>` |ren| |ces|

* **ICEknight**

  * For validating tests on real hardware.

* **Kladov, Vladimir**

  * For cracking the behavior of the MEMPTR register. |re| |fe| :ref:`6<r6>`, :ref:`7<r7>`, :ref:`8<r8>`, :ref:`9<r9>` |ren| |ces|

* **Krook, Magnus**

  * For validating tests on real hardware. |re| |fe| :ref:`28<r28>` |ren| |ces|

* **London, Matthew**

  * For validating tests on real hardware.

* **Martínez Cantero, Ricardo (Kyp)**

  * For validating tests on real hardware.

* **Molodtsov, Aleksandr**

  * For testing the behavior of the MEMPTR register on real Z80 chips. |re| |fe| :ref:`6<r6>`, :ref:`7<r7>`, :ref:`8<r8>`, :ref:`9<r9>` |ren| |ces|

* **Nair, Arjun**

  * For validating tests on real hardware. |re| |fe| :ref:`26<r26>` |ren| |ces|

* **Nicolás-González, César**

  * For helping me to research the unstable flag behavior of the ``ccf/scf`` instructions.

* **Ortega Sosa, Sofía**

  1. For optimizing the emulator.
  2. For her help and support.

* **Owen, Simon**

  * For the idea of the hooking method used in this emulator.

* **Ownby, Matthew P.**

  * For his reseach on the state of the registers after POWER-ON. |re| |fe| :ref:`29<r29>` |ren| |ces|

* **Rak, Patrik**

  1. For improving the *"Z80 Instruction Set Exerciser for Spectrum"*. |re| |fe| :ref:`30<r30>` |ren| |ces|
  2. For cracking the flag behavior of the ``ccf/scf`` instructions. |re| |fe| :ref:`13<r13>`, :ref:`30<r30>` |ren| |ces|
  3. For writing the *"Zilog Z80 CPU Test Suite"*. |re| |fe| :ref:`30<r30>`, :ref:`31<r31>` |ren| |ces|
  4. For his research on the unstable flag behavior of the ``ccf/scf`` instructions.

* **Rodríguez Jódar, Miguel Ángel (mcleod_ideafix)**

  * For his reseach on the state of the registers after POWER-ON/RESET. |re| |fe| :ref:`32<r32>` |ren| |ces|

* **Rodríguez Palomino, Mario (r-lyeh)**

  * For teaching me how emulators work.

* **Sainz de Baranda y Romero, Manuel**

  * For teaching me programming and giving me my first computer.

* **Sánchez Ordiñana, José Ismael (Vaporatorius)**

  * For validating tests on real hardware. |re| |fe| :ref:`33<r33>`, :ref:`34<r34>` |ren| |ces|

* **Stevenson, Dave**

  1. For testing the special RESET on real hardware. |re| |fe| :ref:`11<r11>` |ren| |ces|
  2. For conducting low-level tests on real hardware. |re| |fe| :ref:`35<r35>` |ren| |ces|

* **Vučenović, Zoran**

  * For writing the Pascal binding.

* **Weissflog, Andre (Floh)**

  1. For finding out that the ``reti/retn`` instructions defer the acceptance of the maskable interrupt. |re| |fe| :ref:`36<r36>` |ren| |ces|
  2. For writing the *"Visual Z80 Remix"* simulator. |re| |fe| :ref:`37<r37>` |ren| |ces|

* **Wilkinson, Oli (evolutional)**

  * For validating tests on real hardware. |re| |fe| :ref:`26<r26>` |ren| |ces|

* **Wlodek**

  * For testing the behavior of the MEMPTR register on real Z80 chips. |re| |fe| :ref:`6<r6>`, :ref:`7<r7>`, :ref:`8<r8>`, :ref:`9<r9>` |ren| |ces|

* **Woodmass, Mark (Woody)**

  1. For his invaluable contributions to the emuscene.
  2. For writing the *"Z80 Test Suite"*. |re| |fe| :ref:`13<r13>` |ren| |ces|
  3. For his research on the flag behavior of the ``ccf/scf`` instructions. |re| |fe| :ref:`38<r38>` |ren| |ces|
  4. For writing the *"HALT2INT"* test.
  5. For writing the *"EIHALT"* test.

* **Young, Sean**

  1. For his research work.
  2. For his technical documents about the Zilog Z80. |re| |fe| :ref:`18<r18>`, :ref:`29<r29>`, :ref:`39<r39>` |ren| |ces|

* **ZXGuesser**

  * For validating tests on real hardware.


References
==========

1.

   .. _r1:

   https://spectrumcomputing.co.uk/forums/viewtopic.php?p=83384#p83384

2.

   .. _r2:

   https://stardot.org.uk/forums/viewtopic.php?t=15464

   * https://stardot.org.uk/forums/viewtopic.php?p=211042#p211042
   * https://stardot.org.uk/forums/viewtopic.php?p=212021#p212021

3.

   .. _r3:
  
   Banks, David (2018-08-21). *"Undocumented Z80 Flags"* revision 1.0.

   * https://github.com/hoglet67/Z80Decoder/wiki/Undocumented-Flags
   * https://stardot.org.uk/forums/download/file.php?id=39831

4.

   .. _r4:

   https://spectrumcomputing.co.uk/forums/viewtopic.php?p=83041#p83041

5.

   .. _r5:

   http://wizard.ae.krakow.pl/~jb/qaop/tests.html

6.

   .. _r6:

   https://zxpress.ru/zxnet/zxnet.pc/5909

7.

   .. _r7:

   https://zx-pk.ru/threads/2506-komanda-bit-n-(hl).html

8.

   .. _r8:

   https://zx-pk.ru/threads/2586-prosba-realshchikam-ot-emulyatorshchikov.html

9.

   .. _r9:

   boo_boo; Kladov, Vladimir (2006-03-29). *"MEMPTR, Esoteric Register of the Zilog Z80 CPU"*.

   * http://zx.pk.ru/showpost.php?p=43688
   * http://zx.pk.ru/attachment.php?attachmentid=2984
   * http://zx.pk.ru/showpost.php?p=43800
   * http://zx.pk.ru/attachment.php?attachmentid=2989

10.

    .. _r10:

    https://sourceforge.net/p/fuse-emulator/mailman/message/6929573

11.

    .. _r11:

    Brewer, Tony (2014-12). *"Z80 Special Reset"*.

    * http://primrosebank.net/computers/z80/z80_special_reset.htm

12.

    .. _r12:

    https://stardot.org.uk/forums/viewtopic.php?p=357136#p357136

13.

    .. _r13:

    https://worldofspectrum.org/forums/discussion/20345

14.

    .. _r14:

    https://groups.google.com/g/comp.os.cpm/c/HfSTFpaIkuU/m/KotvMWu3bZoJ

15.

    .. _r15:

    Cringle, Frank D. (1998-01-28). *"Yaze - Yet Another Z80 Emulator"* v1.10.

    * ftp://ftp.ping.de/pub/misc/emulators/yaze-1.10.tar.gz

16.

    .. _r16:

    https://baltazarstudios.com/zilog-z80-undocumented-behavior

17.

    .. _r17:

    Flammenkamp, Achim. *"Interrupt Behaviour of the Z80 CPU"*.

    * http://z80.info/interrup.htm

18.

    .. _r18:

    Young, Sean (1998-10). *"Z80 Undocumented Features (in Software Behaviour)"* v0.3.

    * http://www.msxnet.org/tech/Z80/z80undoc.txt

19.

    .. _r19:

    https://elmundodelspectrum.com/desenterrando-el-primer-emulador-de-spectrum

20.

    .. _r20:

    https://elmundodelspectrum.com/con-vosotros-el-emulador-de-pedro-gimeno-1989

21.

    .. _r21:

    https://sourceforge.net/p/fuse-emulator/mailman/message/4502844

22.

    .. _r22:

    Harston, Jonathan Graham (2008). *"Full Z80 Opcode List Including Undocumented Opcodes"* v0.11 (revised).

    * https://mdfs.net/Docs/Comp/Z80/OpList

23.

    .. _r23:

    Harston, Jonathan Graham (2012). *"Z80 Microprocessor Undocumented Instructions"* v0.15.

    * https://mdfs.net/Docs/Comp/Z80/UnDocOps

24.

    .. _r24:

    Harston, Jonathan Graham (2014). *"Z80 Opcode Map"* v0.10 (revised).

    * https://mdfs.net/Docs/Comp/Z80/OpCodeMap

25.

    .. _r25:

    https://mdfs.net/Software/Z80/Exerciser/Spectrum

26.

    .. _r26:

    https://spectrumcomputing.co.uk/forums/viewtopic.php?t=6102

27.

    .. _r27:

    https://github.com/MrKWatkins/ZXSpectrumNextTests

28.

    .. _r28:

    https://spectrumcomputing.co.uk/forums/viewtopic.php?p=83157#p83157

29.

    .. _r29:

    Young, Sean (2005-09-18). *"Undocumented Z80 Documented, The"* v0.91.

    * http://www.myquest.nl/z80undocumented
    * http://www.myquest.nl/z80undocumented/z80-documented-v0.91.pdf

30.

    .. _r30:

    https://worldofspectrum.org/forums/discussion/41704

    * http://zxds.raxoft.cz/taps/misc/zexall2.zip

31.

    .. _r31:

    https://worldofspectrum.org/forums/discussion/41834

    * http://zxds.raxoft.cz/taps/misc/z80test-1.0.zip
    * https://github.com/raxoft/z80test

32.

    .. _r32:

    https://worldofspectrum.org/forums/discussion/34574

33.

    .. _r33:

    https://worldofspectrum.org/forums/discussion/comment/668760/#Comment_668760

34.

    .. _r34:

    https://jisanchez.com/test-a-dos-placas-de-zx-spectrum

35.

    .. _r35:

    https://stardot.org.uk/forums/viewtopic.php?p=212360#p212360

36.

    .. _r36:

    https://floooh.github.io/2021/12/17/cycle-stepped-z80.html

37.

    .. _r37:

    https://github.com/floooh/v6502r

38.

    .. _r38:

    http://groups.google.co.uk/group/comp.sys.sinclair/msg/56dd1fd4ccb5fb3b

39.

    .. _r39:

    Young, Sean (1997-09-21). *"Zilog Z80 CPU Specifications"*.

    * http://www.msxnet.org/tech/Z80/z80.zip
