неправильно для чего? Для Z80 это правильно и возможно.
Я рассматриваю ситуацию, когда я хочу сохранить снэпшот из отладчика, когда процессор выполнил скажем #DD, но саму инструкцию еще не выполнил. Выполнять инструкцию при сохранении - это неправильно, т.к. мне нужно сохранить процессор в том состоянии в каком он находится, без изменений. Чтобы при загрузке снэпшота продолжить отладку именно с такого префиксного состояния.
Я кстати так вначале и сделал - прикрутил чтобы процессор при остановке завершал инструкцию если взведен префикс, но потом столкнулся с проблемой что при срабатывании точки останова внутри префиксной инструкции процессор останавливается на следующей инструкции вводя пользоваля в замешательство, т.к. на этой интсрукции нет точки останова. Ну и как уже упоминалось выше, если вся память забита префиксом такое завершение инструкции приведет к зависанию эмулятора.
Пока добавил при загрузке SZX проверку ячейки *(PC-1) если взведен флаг ZXSTZF_EILAST. Это хорошо работает. Но в теории возможна ситуации когда может привести к неправильной интерпретации состояния, как в рассмотреном выше случае с возвратом из NMI по RETI/RETN, в этом случае будет взведен флаг ZXSTZF_EILAST, что приведет к взведению флага IX/IY в загрузчике SZX, если *(PC-1) окажется равным #DD/#FD. Других случаев кроме возврата из NMI когда это может дать ошибочное состояние не вижу.
Если предыдущая инструкция была LD A,#DD, это не приведет к взведению флага IX/IY, т.к. флаг ZXSTZF_EILAST будет сброшен. Он взводится только после выполнения #DD/FD префикса или EI.
Написал Jonathan Needle с просьбой зарезервировать флаги ZXSTZF_IXLAST и ZXSTZF_IYLAST. Если зарезервирует, можно будет их использовать вместо анализа предыдущего байта по ZXSTZF_EILAST.




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

