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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 174

Тема: команда BIT n,(HL)

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию команда BIT n,(HL)

    не знает ли кто, что оказывается в 3 и 5 битах флагового регистра после исполнения сабжа? Шон Янг в своем "z80 documented" ссылается на какой-то внутренний регистр Z80, связанный с 16-и битным сложением, откуда, дескать, эти биты и берутся, но -- никакой конкретики

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я реализовал именно так, как сказано у них. Этот внутренний регистр получает в качестве значения результат старшего байта любой внутренней двухбайтовой операции, в том числе операции по вычислению адреса перехода в JR/DJNZ, а не только ADD/SBC HL/IX/IY,rp.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  4. #3
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    я реализовал именно так, как сказано у них. Этот внутренний регистр получает в качестве значения результат старшего байта любой внутренней двухбайтовой операции, в том числе операции по вычислению адреса перехода в JR/DJNZ, а не только ADD/SBC HL/IX/IY,rp.
    хмм...
    нашел кое-чего поподробней: http://www.work.de/nocash/zxdocs.htm
    тут, к примеру, сказано, что любая инструкция с операндом (HL) MEMPTR не изменяет

  5. #4
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    я реализовал именно так
    кстати, а EmuzWin проходит ZEXALL?

  6. #5
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, не проходит, и слава всевышнему. Ни один эмулятор и ни одно реальное железо его не проходит. Хотите самый надежный тест? Включайте поддержку RZX-файлов, качайте готовые RZX-записи, делайте свои RZX-записи в других эмуляторах и гоняйте до опупения. Вот когда будут работать 99% таких записей (которые идут по крайней мере еще на 2х эмуляторах - есть записи "неправильные", которые идут только на том эмуляторе, на котором и были записаны), вот тогда можете смело считать, что у вас все в порядке и делается практически 100% точно для целей эмуляции.

    Полностью добиться 100%-ной точности реально, если есть под рукой железо, но неинтересно, кроме спортивных целей. Вот есть такая фишка, ULA называется. Чтобы учесть задержки и не сильно затормозить, большинство эмуляторов работают по таблицам, и берут во внимание только то, в каком банке начинается команда. А если 4-х байтная команда к примеру начинается в медленном банке, а продолжается в быстром банке ОЗУ, то такты посчитаются неправильно. Это касается и спектаклятора, и рил спека (у себя-то я правильно сделал, но чтобы это показать, надо специально демку городить мультиколорную, а мне влом).
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  7. #6
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну я не по буковкам ОК смотрю, а по результатам: сравниваю свои с теми, которые на реале выходят... все совпадает, а bit этот нет.. ладно, фиг бы с ним -- по ходу извращений "добился" один раз того, что ПЗУ глючило, а тест нормально все показывал.. хе-хе

  8. #7
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Отлично, 100%. Черт с ним с DAA, он все равно от XF, YF не зависит, да и не мог он не совпасть, если все прочее совпало до цифирки. А ведь тот человек (который адаптировал тест для спектрума) наверное гонял на фирменном спектруме, а не на пентагоне, так я понял?

    Самое замечательное, что тест этот пройден и дал абсолютно тот же результат на том же компе, на котором проделан не менее замечательный тест от боо-боо. Т.е. можно гарантированно насчет команды bit n,(hl) сказать, что тест этой команды в этом большом тесте сходится совсем не потому, что на ее флажки не влияет искомый memptr (потому что он не может не влиять, и это доказывает малый тест от боо боо). Вывод: либо CRC в большом тесте строится по дурацкому алгоритму, и разные результаты могут спокойно давать один и тот же CRC с большой вероятностью, либо в большом тесте каким-то макаром все время оказывалось в memptr такое значение, что XF и YF все время занулялись.

    Насчет первого (дурацкий CRC) - это надо проверить (сейчас буду смотреть, есть тест bit n,(ix+1), так вот он и вызывает у меня подозрение. Если ix бывает в этом тесте очень разный, тогда непонятно, почему элементарное зануление флажков XF, YF приводит к той же CRC. Если IX одинаковый, то автор теста (или тот кто его адпатировал) и вправду идиот (или просто не знал ничего про memptr).

    А вот насчет зануления (п.2 моего рассуждения абзацем выше) флажков перед выполнением bit n,(hl). Я выяснил, что ближайшая команда, которая могла (и должна была в любом случае) повлиять на изменение memptr перед вызовом теста, это call nz,9BEFh по адресу 99FEh. Если верить источнику *, то в memptr попадает 9Bh&28h = 08h, т.е. как минимум XF=1, YF=0. Все, что по дороге, вроде бы memptr трогать не должно, согласно *.

    А теперь очень интересная картина вырисовывается. Из всех эмуляторов выигрывает (тьфу, проходит) тест bit n,(hl) только спектакулятор, который начхал на мемптр по крайней мере для bit n,(hl) и всегда пишет в флажки YF и XF нули. И как же тогда быть прикажете?

    Боо-боо, я хочу услышать: ты придумал, как правильно bit n,(hl) эмулировать?
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  9. #8
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,555
    Спасибо Благодарностей отдано 
    1,219
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    Полностью добиться 100%-ной точности реально, если есть под рукой железо, но неинтересно, кроме спортивных целей.
    По мне - эмулятор не является полноценным эмулятором, если он не эмулит комп на 100%

  10. #9
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в таком случае полноценных эмуляторов - не существут. Достаточно на сайте http://www.mdfs.net/Software/Z80/Exerciser/Spectrum/ посмотреть и убедиться, что и на реальном железе этот тест дает неверные результаты, хе-хе.

    А есть ведь еще различия между чипами Z80 от разных производителей...
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  11. #10
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    это автор порта на спектрум гонял. это лежит там же, где boo_boo взял текст про memptr. и ссылка была где-то тут. так что пролистай тему вверх и всё увидишь

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Команда Outland corp
    от nyuk в разделе Люди
    Ответов: 12
    Последнее: 10.11.2006, 10:16

Ваши права

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