ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Ну вот только он один и может))
Если вы хотите сохранять состояние процессора в середине выполнения команды, можно написать своё расширение формата, ни с чем не совместимое, например.Как быть если я хочу сохранить текущее состояние процессора, в том виде как есть, а не "после выполнения команд"?
PC устанавливается корректно, как был до сохранения. Проблема в том, что в SZX только один флаг для указания, что процессор находится в состоянии выполнения префикса из этого флага непонятно какой именно префикс выполняется. Но это можно узнать прочитав ячейку памяти PC-1 - если там #DD, значит взведен префикс IX, если #FD - IY, если чтото другое, значит просто блокировка прерывания инструкцией.
- - - Добавлено - - -
зачем, если текущий формат вполне позволяет это делать без расширений? Другое дело, что не каждый эмулятор сможет потом прочитать такой снэпшот, тем более не во всех вообще есть возможность остановить процессор во время выполнения префикса.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
В SZX нет флага, что процессор находится в состоянии выполнения префикса, есть флаг временного запрещения прерывания, актуальный после команды EI и некорректных префиксов #DD/#FD, как написано в описании формата. Т.е. для корректных префиксов #DD/#FD этот флаг неактуален.
- - - Добавлено - - -
Сам формат не предполагает прерывание команды после корректного префикса #DD/#FD.
- - - Добавлено - - -
Flag Meaning
ZXSTZF_EILAST The last instruction executed was an EI instruction or an invalid $DD or $FD prefix.
еще вспомнил, тема поднималась недавно - https://spectrumcomputing.co.uk/foru...pic.php?t=7086
выход retn/reti после корректного NMI (что возможно при модификации пзу) также может прерывание отложить
тогда сразу после будет невозможно понять, выполнялся ли предыдущий байт, если это код префикса или ei
Прихожу без разрешения, сею смерть и разрушение...
ZXMAK(12.11.2024)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
что значит "некорректный префикс"? У Z80 все префиксы корректные.
- - - Добавлено - - -
интересная информация, правда это актуально только при возвращении из NMI, а NMI не может сработать при выполнении префикса.
Таким образом проблема может возникнуть только если снэпшот сохранен сразу после возврата из NMI обработчика который модифицировал адрес возврата таким образом, чтобы в предыдущем байте был префикс.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)