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

User Tag List

Страница 20 из 81 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя
Показано с 191 по 200 из 810

Тема: ZX Spectrum: аппаратная реализация на восьми микросхемах

  1. #191

    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Начиная с 0X8085 но не до конца:
    Значения регистров в первой строке похожи на правду. Но:
    1) Нужны еще значения регистров IX и IY и
    2) Не понятно, почему после инструкции по адресу #8085, которая должна быть "LD HL, (nn)", исполняется инструкция по адресу #0038. До первого CALL/RST там еще далеко.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  2. #192

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Забыл отключить маскируемое прерывание.

  3. #193

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Там вначале есть RST10: он пишет SCF : . Вот что сейчас (пока не до конца. Процесс долгий.)
    Последний раз редактировалось Lisitsin; 28.05.2014 в 08:11.

  4. #194

    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Вот что сейчас
    Инструкция "OR L" по адресу #808E не взводит флаг PF при A=#80 и L=#C2.

    Посчитать значение флага можно так (n -- результат операции):
    #define PF_LOG(n) ((!PF_LOG4((n)) == !PF_LOG4((n) >> 4)) << PF_BIT)
    #define PF_LOG4(n) ((1u << ((n) & 0xf)) & 0x9669u)
    #define PF_BIT 2
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  5. #195

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Угу. Только мне от этой двоичной арифметики что-то нехорошо становится. Можно это как-то проще интерпретировать? Я так понимаю: если в результате операции произошло изменение (то что стало минус то что было), превышающее значение 0f, значит флаг V возводится?
    А в AVR бит V вообще как-то странно используется ... Операция OR, например, его просто сбрасывает.
    Есть вторая часть трейсинга:
    Последний раз редактировалось Lisitsin; 28.05.2014 в 08:11.

  6. #196

    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Угу. Только мне от этой двоичной арифметики что-то нехорошо становится. Можно это как-то проще интерпретировать? Я так понимаю: если в результате операции произошло изменение (то что стало минус то что было), превышающее значение 0f, значит флаг V возводится?
    PF для битовых операций (включая OR) считается не так, как для арифметических, не по переменам знаков.

    Интерпретировать эту арифметику очень просто: 0x9669 это просто битовый массив размером 16, т.е. числам 0...15 поставлено в соответствие значение 0 или 1. Макрос PF_LOG4(n) реализует это соответствие: для числа (n) в диапазоне 0..15 он возвращает поставленное ему в соответствие значение -- 0 или 1. Макрос PF_LOG(n) сравнивает значения, которые дает PF_LOG4() для четырех старших и четырех младших разрядов своего аргумента (n). Если эти значения совпадают, значит PF должен быть взведен, иначе PF должен быть сброшен.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

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

  8. #197

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, тяжело мне иметь дело с профкссиональным эмуляторщиком ...
    Для начала не могли бы вы мне, любителю - самоучке объяснить в этой ситуации сам смысл флага P в этой инструкции? Это влаг чётности, переполнения дополнения до 2 или что-то другое?
    Предыдущие объяснения я понимаю так:
    Флаг Р определяется только по значению результата после выполнения инструкции. Берутся две тетрады результата - старшая и младшая. Каждой ставится в соответствие по одному биту - 1 или 0 в соответствии со значением каждой тетрады (0-15). Если эти два бита равны - флаг возводится, не равны - сбрасывается. Если это так - мне останется только уяснить сам принцип этого соответствия - PF_LOG4(n) - имеется ли здесь в виду (прошу прощения за такую глупость) функция логарифма по основанию 4 ?

  9. #198

    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Это влаг чётности, переполнения дополнения до 2 или что-то другое?
    Для битовых операций это флаг четности. Его можно реализовать одной большой табличкой, а можно двумя маленькими, подсчитывая четность не для восьми разрядов, а для двух половинок из четырех разрядов.

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Флаг Р определяется только по значению результата после выполнения инструкции.
    Да, значение флага зависит только от результата операции.

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Берутся две тетрады результата - старшая и младшая. Каждой ставится в соответствие по одному биту - 1 или 0 в соответствии со значением каждой тетрады (0-15). Если эти два бита равны - флаг возводится, не равны - сбрасывается.
    Верно.

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Если это так - мне останется только уяснить сам принцип этого соответствия - PF_LOG4(n) - имеется ли здесь в виду (прошу прощения за такую глупость) функция логарифма по основанию 4 ?
    "PF" значит флаг PF. "LOG" означает реализацию флага для логических операций (еще есть PF_ARI() -- для арифметических операций). "4" значит, что четность вычсляется для четырехразрядного операнда.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  10. #199

    Регистрация
    05.09.2010
    Адрес
    г. Рязань
    Сообщений
    716
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    14 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А-а-а-а-а-а ...
    Так чётность у меня уже есть таблицей .....
    Просто читаю мануал на Z80, а там про OR написано: P/V is set if overflow; reset otherwise. Ну я его и оставляю таким, как у AVR. Что-ж это значит, ерроры в мануале? Да уж ....
    А у AND r, CP r, ADC A,r, ADD A,r, SUB r и SBC r там тоже overflow стоит ...
    И ещё: и ещё, и ещё .... Всю ночь кулером гудел. Жена уже ругается:
    Последний раз редактировалось Lisitsin; 28.05.2014 в 08:11.

  11. #200

    Регистрация
    03.05.2007
    Адрес
    St. Petersburg
    Сообщений
    297
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Лисицын Василий Николаеви Посмотреть сообщение
    Что-ж это значит, ерроры в мануале? Да уж ....
    А у AND r, CP r, ADC A,r, ADD A,r, SUB r и SBC r там тоже overflow стоит ...
    Да, описание инструкций там составлено по технологии copy-and-paste, поэтому такого рода ошибок там предостаточно. Хорошего документа с подробным описанием инструкций я не знаю.

    TRACE3 -- это после исправления PF для битовых инструкций?
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

Страница 20 из 81 ПерваяПервая ... 161718192021222324 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. реализация JavaScript-a на ZX-Spectrum-48k
    от bigral в разделе Программирование
    Ответов: 4
    Последнее: 10.01.2010, 12:02
  2. Аппаратная эмуляция GS/TFM/AY
    от Black_Cat в разделе Эмуляторы
    Ответов: 34
    Последнее: 03.05.2008, 23:34

Ваши права

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