Важная информация

User Tag List

Страница 3 из 14 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 131

Тема: Баг формата SZX

  1. #21

    Регистрация
    07.10.2006
    Сообщений
    1,731
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    что значит "некорректный префикс"? У Z80 все префиксы корректные.
    Некорректный - значит цепочечный, который не является корректной частью команды. В цепочке префиксов DD|FD все префиксы некорректные, кроме последнего.

    Ещё раз, выдержка из описания формата SZX:
    Flag Meaning
    ZXSTZF_EILAST The last instruction executed was an EI instruction or an invalid $DD or $FD prefix.

    Итого - вы, конечно, можете разрывать команду при записи SZX, записывая его после чтения корректного префикса #DD|#FD, но 1) это не корректно - не соответствует описанию формата, 2) ни один эмулятор, кроме вашего, не будет читать такой SZX, 3) и это не баг формата SZX.

    Этот пользователь поблагодарил Spectramine за это полезное сообщение:

    Dexus(12.11.2024)

  2. #22

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    да, лучше конечно добавить флаги для состояния префиксов в снэпшот. Без этого снэпшоты неполноценные получаются.

    А как с автором SZX связаться?
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  3. #23

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    А как с автором SZX связаться?
    Наверное, писать автору спектакулятора. Так понимаю, для телефонов приложуха развивается.
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  4. #24

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,295
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    203
    Спасибо Благодарностей получено 
    1,459
    Поблагодарили
    949 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    специально проверил в нескольких эмуляторах, например
    #8000 LD IX,#4000

    BreakPoint на #8001 не сработает, также не сработает и условие PC==#8001

    получается что в идеале выносить PC `наружу` (для префиксных команд) это неправильно.
    .......
    call #8001 ; сработает, эмуль понимает что начинает выполняться обычная команда.
    Последний раз редактировалось goodboy; 12.11.2024 в 11:34.

    Этот пользователь поблагодарил goodboy за это полезное сообщение:

    Bedazzle(12.11.2024)

  5. #25

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    специально проверил в нескольких эмуляторах, например
    #8000 LD IX,#4000

    BreakPoint на #8001 не сработает, также не сработает и условие PC==#8001
    в ZXMAK2 breakpoint сработает.

    - - - Добавлено - - -

    Цитата Сообщение от goodboy Посмотреть сообщение
    получается что в идеале выносить PC `наружу` (для префиксных команд) это неправильно.
    с чего вдруг неправильно? А если вся память забита скажем #DD, куда эмулятору деваться?
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  6. #26

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,966
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    314
    Поблагодарили
    237 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    с чего вдруг неправильно? А если вся память забита скажем #DD, куда эмулятору деваться?
    на колу мочало... сказано же -
    Цитата Сообщение от goodboy Посмотреть сообщение
    получается что в идеале выносить PC `наружу` (для префиксных КОМАНД) это неправильно.
    цепочка незначимых префиксов - НЕ команда (не одна команда, во всяком случае)
    Прихожу без разрешения, сею смерть и разрушение...

  7. #27

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    неправильно для чего? Для 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.
    Последний раз редактировалось ZXMAK; 12.11.2024 в 12:51.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  8. #28

    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,691
    Спасибо Благодарностей отдано 
    302
    Спасибо Благодарностей получено 
    223
    Поблагодарили
    159 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    при срабатывании точки останова внутри префиксной инструкции процессор останавливается на следующей инструкции вводя пользоваля в замешательство, т.к. на этой интсрукции нет точки останова. Ну и как уже упоминалось выше, если вся память забита префиксом такое завершение инструкции приведет к зависанию эмулятора.
    А как отрабатывают цепочку префиксов железные отладчики, например, в Скорпе?
    Heavy on the disasm
    Eric and the disasm
    Mask 3: Venom strikes disasm
    Bard's disasm

  9. #29

    Регистрация
    28.08.2023
    Адрес
    г. Брест, Беларусь
    Сообщений
    142
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    33 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bedazzle Посмотреть сообщение
    А как отрабатывают цепочку префиксов железные отладчики, например, в Скорпе?
    Я там выше уже писал, но, видимо, не совсем ясно выразился. Для случая конкретно SZX, а не поведения/эмуляции Z80 «вообще», какая разница? Вроде, конкретно для SZX есть две reference implementations. Ладно, одна без исходников (или нет?), но вторая-то с открытыми исходниками. Если снапшот ни в одной из них не работает, надо просто посмотреть, как сделано в reference implementation и повторить.

  10. #30

    Регистрация
    07.10.2006
    Сообщений
    1,731
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    Написал Jonathan Needle с просьбой зарезервировать флаги ZXSTZF_IXLAST и ZXSTZF_IYLAST. Если зарезервирует, можно будет их использовать вместо анализа предыдущего байта по ZXSTZF_EILAST.
    Это полумеры, для полноты картины ещё можно добавить флаги для информации о текущем машинном цикле, чтобы можно было разрывать команду даже внутри чтения кода операции. Ну и, само собой, после префиксов #CB, #ED, перед чтением операнда и в процессе его чтения.

    Этот пользователь поблагодарил Spectramine за это полезное сообщение:

    Reobne(13.11.2024)

Страница 3 из 14 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Баг в W1793 (1818ВГ93).
    от xolod в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 18
    Последнее: 19.03.2019, 14:18
  2. Баг в depacker от hrust1.3?
    от moroz1999 в разделе Программирование
    Ответов: 65
    Последнее: 17.04.2014, 10:39
  3. [Atari]баг игры NINJA?
    от denpopov в разделе Atari
    Ответов: 13
    Последнее: 16.03.2014, 07:20
  4. BUG in SZX snapshots ???
    от VELESOFT в разделе Эмуляторы
    Ответов: 1
    Последнее: 12.09.2009, 13:28

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •