Ассемблер - Z80 Flags: недокументированные комманды процессора Z80.

Virtual Worlds #01
 ┌────────────────────────────┐
░▒▒▓▒▓█ Z80-Flags. █▓▒▓▒▒░  └────────────────────────────┘

                   (C) Unknown
 (текст  взят из спектрумовской
 конференции fido7.zx.spectrum)


  Есть   еще  один  неосвещенный
участок  в процессоре Z80, кото-
рый  оказывает  свое  влияние на
некоторые   программы,  например
Sabre  Wulf,  Ghosts'n Goblins и
Speedlock. Это недокументирован-
ные флаги!

  Биты  3 и 5 флагового регистра
F  не используются. Hо они могут
содержать информацию и она может
быть использована, поскольку су-
ществуют  такие очевидные коман-
ды,  как  PUSH  AF и POP AF. Hо,
тем  не  менее,  иногда все-таки
содержимое этих флагов изменяет-
ся. Я нашел следующее эмпиричес-
кое правило:

  Значения битов 7,5,3 повторяют
значения  соответствующих  битов
последнего  8-битного результата
инструкции, которая меняла обыч-
ные флаги.

  Например,  после  команды  ADD
A,B эти биты будут идентичны би-
там в регистре A. Бит 7 регистра
F  -  это знаковый бит и он, ес-
тественно, по определению всегда
следует  этому правилу. исключе-
нием  является команда CP x (где
x  - регистр или (HL) или прямой
аргумент).  В  этом  случае биты
копируются  не с результата, а с
аргумента.

  Для инструкций, которые опери-
руют  с двухбайтными операндами,
8  битов,  подпадающие под выве-
денное  правило  - это старшие 8
битов  из 16-битного результата.
Этого  и следовало ожидать, пос-
кольку  здесь  знаковым является
старший 15-ый бит.

  Ghosts'n   Goblins  используют
недокументированные флаги вслед-
ствие   ошибки  программиста.  В
программе   Sabre   Wulf   неес-
тественно  ведет  себя  носорог,
который   иногда  бегает  малыми
кругами в  углах, если  знаковый
бит  по  команде BIT вычисляется
неправильно. Я процитирую:

#AD86  DD CB 06 7E  BIT 7,(IX+6)
#AD8A  F2 8F AD     JP P,#AD8F

  Удивительный  образец  кода! А
что  же  касается "Спидлока", то
он  выделывает  такое количество
непонятных  и  головоломных трю-
ков,  что для того, чтобы он ра-
ботал,  в  эмуляторе  все должно
точнехонько  соответствовать ре-
альному Спектруму.