Цитата Сообщение от Mick Посмотреть сообщение
надо отслеживать M1, а это значит что байт данных параметра для DJNZ будет из другой области памяти, а точнее из 408h => EFh.
Правильное замечание. Но прежде всего надо осознать несколько ключевых подходов к программированию в такой системе:
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. Надо уточнить (уже не помню) изначальные значения регистров, включая флаговый.