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

User Tag List

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 46

Тема: Специалист: эмуляция

  1. #21
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,574
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    399
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    В бейсике проблема на z80 с флагом четности/переполнения. У 8080 это только четность, у z80 еще и переполнение в некоторых командах.
    Это я нашёл и везде поправил. Но, видимо, где-то ещё есть ошибки. JR и ещё 11 отличных от Z80 команд тоже поменял, но пока BASIC не стартует.
    С уважением, Станислав.

  2. #22
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

  3. #23
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    CityAceE, возможно текущая правильность эмуляции команд только кажущаяся, лучше проверить эксисайзером. Например вот вариант адаптированный для специалиста HardWareManом, только этот еще с патченым стеком, чтобы не вылетал при скролле.
    Вложения Вложения

  4. #24
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,574
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    399
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    8080ex1 - это прямо то, что нужно было! Спасибо HardWareMan'у за адаптацию под Специалист, а ivagor'у за то, что поделился!

    Запустил и тут же получил вот это:



    А после того, как профиксил логику флага полупереноса, которую я подглядел здесь, получил уже другой результат:

    С уважением, Станислав.

  5. #25
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,574
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    399
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Задолбался искать что не так. В итоге никак не получается победить ALUOP. В двух последних тестах ошибка. Вернее ошибка точно есть в тесте ALUOP NN, а результатов последнего теста я так и не смог дождаться. Часа 4 ждал и бросил. Начала теста ALUOP приходится ждать примерно 1,5 часа после запуска.



    Но зато сейчас работает всё то, что не работало до этого:



    Осталось чуть облагородить исходники и выложить всё это безобразие на GitHub.
    Последний раз редактировалось CityAceE; 25.12.2018 в 04:16.
    С уважением, Станислав.

  6. #26
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    никак не получается победить ALUOP
    Проверь флаги в командах ANI ORI XRI.

  7. #27
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,405
    Спасибо Благодарностей отдано 
    320
    Спасибо Благодарностей получено 
    598
    Поблагодарили
    444 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    b2m, если у него падает ALUOP NN и ALUOP (REGLIST), то флаги всех команд ALU надо смотреть. Напомню, что INR/DCR и DAD прогоняются через ALU (для INR загружается константа 0х01 а для DCR - 0xFF). Т.е., действительно следует проверить логику работы логических а не арифметических операций. Скорее всего опять же флаги AC/C в этих командах, т.к. остальные флаги слишком тупые.

  8. #28
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    HardWareMan, да кэп.

  9. #29
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,574
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    399
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сегодня произвёл серьёзный рефакторинг код, выделив все повторяющиеся части всех логических и арифметических операций в отдельные функции в ущерб и так никакой производительности скрипта. Несколько раз самым внимательным образом сравнил собственную эмуляцию с эталонным эмулятором. Но ALUOP NN, как и прежде, выдаёт ошибку. Даже не знаю в какую сторону копать. Наверное просто глаз замылился и я что-то упускаю.

    Ну вот, например, так сейчас у меня выглядит эмуляция команды ORI на Python:

    Код:
    def or_a(reg):
        global reg_a, flag_p, flag_h, flag_c, flag_z, flag_s
        reg_a |= reg
        flag_s = bool(reg_a & 0b10000000)
        flag_z = not reg_a
        flag_h = False
        flag_p = parity[reg_a]
        flag_c = False
        fflag_n(False)
        fflag_3(bool(reg_a & 0b00001000))
        fflag_5(bool(reg_a & 0b00100000))
        return
    
    def b11110110():  # OR A,d
    global pc, ticks
        or_a(read_mem(inc_pc()))
        pc = inc_pc2()
        ticks += 7
    return
    А вот для сравнения как эмуляция той же команды выглядит в эталонном эмуляторе на С:

    Код:
    #define ORA(val) \
    {                                               \
        A |= (val);                                 \
        S_FLAG = ((A & 0x80) != 0);                 \
        Z_FLAG = (A == 0);                          \
        CLR(H_FLAG);                                \
        P_FLAG = PARITY(A);                         \
        CLR(C_FLAG);                                \
    }
    
    
            case 0xF6:            /* ori data8 */
                cpu_cycles = 7;
                work8 = RD_BYTE(PC++);
                ORA(work8);
            break;
    Как видите, на выходе получилось практически идентично. И всё равно тест проваливается.
    Последний раз редактировалось CityAceE; 24.12.2018 в 14:24.
    С уважением, Станислав.

  10. #30
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,843
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,818
    Поблагодарили
    1,044 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    fflag_n(False) fflag_3(bool(reg_a & 0b00001000)) fflag_5(bool(reg_a & 0b00100000))
    Для 100% эмуляции 8080 это надо менять. Биты 5 и 3 всегда 0, бит 1 - всегда 1.

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Специалист: Варианты
    от Mick в разделе Специалист
    Ответов: 488
    Последнее: 26.02.2024, 13:07
  2. Специалист: Рекомпиляция.
    от Tim0xA в разделе Специалист
    Ответов: 38
    Последнее: 11.07.2022, 12:08
  3. Специалист-М
    от zx_ в разделе Специалист
    Ответов: 230
    Последнее: 18.12.2021, 14:41
  4. Специалист: Бейсик
    от Prusak в разделе Специалист
    Ответов: 28
    Последнее: 26.07.2019, 16:07
  5. Специалист: Разное
    от Splinter в разделе Специалист
    Ответов: 171
    Последнее: 09.05.2018, 07:50

Ваши права

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