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

User Tag List

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

Тема: PyZX - эмулятор ZX Spectrum, полностью написанный на Python

  1. #21
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Стало любопытно в каких местах PyZX это можно было бы применить?
    Так все байтодрочерство однозначно надо в pack/unpack зафигачивать и в memoryview(bytearray). По большому счету, timeit.timeit много интересных моментов расскажет про скорости выполнения того или иного куска кода.

    Цитата Сообщение от CityAceE Посмотреть сообщение
    А у меня после копания в коде PyZX возникло желание написать что-то своё, хотя это будет существенно дольше.
    Писать долго. А тут возможно еще привести в порядок, но скорости конечно не будет. Ускорить можно если написать на Cython основные моменты, но это уже будет не так интересно.

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

    По умолчанию

    @Q-Master, как успехи? Или не стал связываться с PyZX?

    А я всё-таки взялся за свой эмулятор с нуля. Не уверен, что доведу его до конца - уж больно муторно сидеть и все команды эмулировать. Хотя когда-то я уже это проходил.
    С уважением, Станислав.

  3. #23
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    @Q-Master, как успехи? Или не стал связываться с PyZX?

    А я всё-таки взялся за свой эмулятор с нуля. Не уверен, что доведу его до конца - уж больно муторно сидеть и все команды эмулировать. Хотя когда-то я уже это проходил.
    Ну как успехи:
    1. Там есть ошибки в коде, которые вообще не понятно как позволяли ему работать. Реально используются переменные, которые нигде не объявлены.
    2. Сейчас переписываю эмуль проца с if/if/if/if на dict (аналог switch/case получится).
    3. Переписал часть медленных битовых операций на куда более быстрое деление с остатком.
    4. Поковырялся с регистрами, но пока ничего там еще не сделал толком. Надо подключать битфилды для флагов и memoryview для остальных регистров.
    п.2 пипец долгий и нудный. Я максимум еще только треть сделал...

  4. #24
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Q-Master Посмотреть сообщение
    Я максимум еще только треть сделал...
    Дело хорошее!

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

    По умолчанию

    Q-Master, отличные новости! Только, судя по всему, от PyZX там уже мало что останется Но это, наверное, даже хорошо!
    Ну, а треть п.2 так это, как мне кажется, очень даже неплохой результат! Ждём дальнейших новостей!
    С уважением, Станислав.

  6. #26
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока ситуация такова:
    1. Я осилил переписать код Z80 и пока не особо заморачивался с оптимизацией.
    2. Я напрочь забыл какой ужос эти ваши флаги. Подозреваю что у меня сейчас там все плохо касательно 16-битных операций.
    3. Я дописал огромный кусок, который автор исходного варианта вообще не делал (ddcb/fdcb).
    4. Вычистил кучу помоев относительно ругани линтера.
    5. Убрал из файлов виндовый перенос строк.
    Самая вишенка: я не проверял работает это вообще или нет

    PS: Да почините уже форум, чтобы он принимал файлы *.tar.*. Я уже задолбался пережимать архивы.
    Вложения Вложения
    • Тип файла: 7z pyzx.7z (70.8 Кб, Просмотров: 96)

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

    По умолчанию

    Q-Master, пока не получилось запустить - ты, видимо, не все файлы из своего проекта в архиве освежил. Хотя первая же ошибка -это внутренняя ошибка в z80.py из-за того, что переменные задаются уже после их первого использования. Запускаю - получаю ошибку, правлю - получаю следующую и т.д.
    Последний раз редактировалось CityAceE; 05.01.2019 в 04:26.
    С уважением, Станислав.

  8. #28
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    "Я починиль" (С)
    Вобщем граблей было очень много и до сих пор я не все выловил, НО
    1. В исходном эмуляторе неверно отрабатывл обсчет тактов для команд типа *IR. Я исправил и теперь прерывание может придти даже поперек LDIR(к примеру) и такты вычисляются для всех *IR верно.
    2. Исправил неверное расположение регистров в памяти.
    3. Исправил неприятный косячек с относительными переходами. PC вычислялось неверно.
    4. Исправил загрузку sna (z80 вероятно пока не работает) и более верно поддерживается заголовок.
    5. Переделал загрузку z80, но пока не отлаживал и не проверял.
    6. Добавил включение отладки через прописывание Z80.show_debug_info = True

    Из проблем:
    1. Видимо, что-то не так с флагами и эксолон не работает как надо.
    2. Не работает загрузка z80
    3. 100% упадет на HALT

    ИМХО работает пошустрее оригинала, но надо оптимизировать видеовывод.
    Вложения Вложения
    • Тип файла: 7z pyzx.7z (71.3 Кб, Просмотров: 98)

  9. #29
    Veteran Аватар для Bedazzle
    Регистрация
    02.05.2015
    Адрес
    г. Таллин, Эстония
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    221
    Спасибо Благодарностей получено 
    149
    Поблагодарили
    115 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Q-Master Посмотреть сообщение
    1. Видимо, что-то не так с флагами и эксолон не работает как надо.
    Для теста пересохранил эксолон в Z80 через спекулятор, на старой версии pyzx.0.2 работает.

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

    По умолчанию

    Цитата Сообщение от Q-Master Посмотреть сообщение
    4. Исправил загрузку sna (z80 вероятно пока не работает) и более верно поддерживается заголовок.
    Загрузку SNA делал я на скорую руку, так как мой набор "идеальных" снепшотов был в формате SNA. Я когда-то делал эти снепшоты из TZX-файлов: после загрузки последнего байта с "магнитофона", я передавал управление в крохотную подпрограмму опроса клавиатуры, расположенную в стеке. После того, как нажимается любая клавиша, программа переходит на адрес запуска игры. Таким образом пользователь имеет возможность посмотреть заставку и при этом не портится сама игра. Я проверил несколько таких своих снепшотов и у меня всё грузилось в PyZX.

    Заметил, что в эмуляторе нет защиты записи в область ПЗУ. Вообще, чтобы всё корректно работало, и чтобы потом можно было безболезненно расширить эмулятор до 128 Кб и выше нужно, чтобы все команды чтения или записи в память использовали соответствующую процедуру, а не просто напрямую записывали или читали память. Это же потом поможет ускорить вывод графики - не придётся обновлять целиком экран. Q-Master, сделаешь?

    Вон, например, как я сделал у себя в эмуляторе Intel 8080 (write_mem и read_mem):

    Код:
    def b00110010():  # LD (nn),A / STA nn
    global pc, ticks
        write_mem(read_mem(inc_pc(2)) * 256 + read_mem(inc_pc()), reg_a[0])
        pc = inc_pc(3)
        ticks += 13
    return
    
    
    def b00111010():  # LD A,(nn) / LDA nn
    global pc, ticks
        reg_a[0] = read_mem(read_mem(inc_pc(2)) * 256 + read_mem(inc_pc()))
        pc = inc_pc(3)
        ticks += 13
    return
    С уважением, Станислав.

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

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

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

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

Похожие темы

  1. Тулзы для работы с образами на Python
    от Q-Master в разделе Утилиты
    Ответов: 4
    Последнее: 25.11.2014, 22:44
  2. Собрал комп полностью своими руками
    от scooby-do в разделе Зарубежные компьютеры
    Ответов: 14
    Последнее: 27.06.2009, 11:25
  3. эмулятор ZX Spectrum на Atari XL?
    от [bETA]mEN в разделе Atari
    Ответов: 1
    Последнее: 09.12.2007, 22:51
  4. Python
    от Black1980 в разделе Программирование
    Ответов: 12
    Последнее: 26.12.2006, 10:30

Ваши права

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