Правильное замечание. Но прежде всего надо осознать несколько ключевых подходов к программированию в такой системе:
1. Всегда следим за шиной адреса. Ибо все, что на нее попадает, может либо вызвать NMI, либо отразиться на экране. То есть надо представлять временные диаграммы (с точки зрения тактов и ША) для КАЖДОЙ КОММАНДЫ.
2. Ключевым элементом является переключение ША из «0» в «1» и наоборот. С первого взгляда вроде бы все просто: любой JP или JR. По факту сразу же вылезает IR. Поэтому единственной парой команд (из всех, что есть у Z80) которые могут использоваться для этого будет:
LD I,A
JP (HL)
Других однозначных последовательностей не существует. Разумеется, перед подобным переходом надо подготовить значения в регистрах.
3. В видеопроцессоре нет ОЗУ. Это значит, что все динамические данные передаются только через регистры Z80. Насколько я помню, задействованы практически полностью оба набора (основной и альтернативный).
4. По поводу возникновения NMI подробно расспросил JTN, ответы есть в теме «Расскажите про ZX Next».
5. Видеопроцессор регенерирует ОЗУ. Это значит, что даже вне экранных адресов он перебирает адреса в ОЗУ. Перед тем, как будет сгенерирован Reset для основного Z80, видеопроцессор уже проводит несколько (не помню уже сколько) циклов регенерации.
6. Надо уточнить (уже не помню) изначальные значения регистров, включая флаговый.





Ответить с цитированием