User Tag List

Страница 22 из 81 ПерваяПервая ... 181920212223242526 ... ПоследняяПоследняя
Показано с 211 по 220 из 810

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

  1. #211

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

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    А все команды CP, CPI копируют биты 3, 5 из операнда в F?
    CP n и CP r работают так. CPI, CPD, CPIR и CPDR выставляют эти флаги по-другому:

    Код:
    case 0201:  /* CPI, CPD, CPIR, CPDR: f(4) f(4) r(3) e(5) + e(5) */
            if(y < 4) return Z80_PC;
            s = Z80_AF, w = Z80_HL, do_alu(7, r = READ(w)), CONT5(w);
            r = LIB_UZX_DATA_HIGH(Z80_AF) - r - !!(Z80_AF & Z80_HF);
            Z80_BC = DEC16(Z80_BC);
            Z80_AF = (Z80_AF & (LIB_UZX_DATA_HIGH_MASK | Z80_SF | Z80_ZF | Z80_HF)) |
                ((r << 4) & Z80_YF) | (r & Z80_XF) | ((Z80_BC != 0) << PF_BIT) | Z80_NF | (s & Z80_CF);
            if(y & 1) Z80_HL = DEC16(Z80_HL), z80_MEMPTR = DEC16(z80_MEMPTR);
            else Z80_HL = INC16(Z80_HL), z80_MEMPTR = INC16(z80_MEMPTR);
            if((y & 2) && !(Z80_AF & Z80_ZF) && Z80_BC != 0)
                return (CONT5(w),  Z80_PC = SUB16(Z80_PC, 2), z80_MEMPTR = INC16(Z80_PC));
            return Z80_PC;
    Последний раз редактировалось Higgins; 26.02.2011 в 13:02.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

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

  3. #212

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

    По умолчанию

    Тут ещё такая тема: в мануале написано, что CPD, CPDR, CPI, CPIR - все флаг N взводят. А мне что-то кажется, что CPI, CPIR флаг сей должны сбрасывать.

  4. #213

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

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    Тут ещё такая тема: в мануале написано, что CPD, CPDR, CPI, CPIR - все флаг N взводят. А мне что-то кажется, что CPI, CPIR флаг сей должны сбрасывать.
    Все эти инструкции взводят NF, см. Z80_NF в коде выше.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  5. #214

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

    По умолчанию

    Исправил CP, CPI, CPIR, CPD, CPDR в части флагов 3, 5:
    Последний раз редактировалось Lisitsin; 28.05.2014 в 08:11.

  6. #215

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

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    Исправил CP, CPI, CPIR, CPD, CPDR в части флагов 3, 5:
    Хорошая новость: к #8085 приходим с правильным значением F.

    Теперь по адресу #0B03 инструкция "BIT 1, (IY + 1)" все те же флаги 3 и 5. Там должны быть соответственно биты 3 и 5 старшей половины регистра MEMPTR. Он, в свою очередь, получает значение адреса читаемой ячейки, в данном случае IY + 1.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

  7. #216

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

    По умолчанию

    Цитата Сообщение от Higgins Посмотреть сообщение
    Хорошая новость: к #8085 приходим с правильным значением F.

    Теперь по адресу #0B03 инструкция "BIT 1, (IY + 1)" все те же флаги 3 и 5. Там должны быть соответственно биты 3 и 5 старшей половины регистра MEMPTR. Он, в свою очередь, получает значение адреса читаемой ячейки, в данном случае IY + 1.
    То есть я просто копирую их опять же из операнда? Работаю.

  8. #217

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

    По умолчанию

    BIT исправил:
    Или я что-то не так понимаю: биты 3 и 5 копируются из самого операнда или из старшего байта его адреса?
    Последний раз редактировалось Lisitsin; 28.05.2014 в 08:11.

  9. #218

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

    По умолчанию

    Если биты 3 и 5 копируются из старшего байта адреса операнда, вот что получается:
    Последний раз редактировалось Lisitsin; 28.05.2014 в 08:11.

  10. #219

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

    По умолчанию

    Каюсь. SCF и CCF исправил неправильно. Сейчас сделал правильно. SCF и CCF Passed. DAA failed, но я там ничего не делал с флагом H - не нашёл в документации. Трейсинг последует.
    Последний раз редактировалось Lisitsin; 28.05.2014 в 08:11.

  11. #220

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

    По умолчанию

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    То есть я просто копирую их опять же из операнда?
    Цитата Сообщение от Lisitsin Посмотреть сообщение
    Или я что-то не так понимаю: биты 3 и 5 копируются из самого операнда или из старшего байта его адреса?
    Задача в три действия действия:
    1) Заносим *адрес* индексированной ячейки в MEMPTR.
    2) Берем старшую половину регистра MEMPTR.
    3) Копируем биты 3 и 5 из этой старшей половины MEMPTR в регистр F.

    Цитата Сообщение от Lisitsin Посмотреть сообщение
    Каюсь. SCF и CCF исправил неправильно. Сейчас сделал правильно. SCF и CCF Passed. DAA failed, но я там ничего не делал с флагом H - не нашёл в документации. Трейсинг последует.
    Отлично.
    Higgins ZX Spectrum Emulator 8.10 alpha 3 available
    Please write us to report a bug or request a feature.

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

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

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

Эту тему просматривают: 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

Ваши права

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