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

User Tag List

Показано с 1 по 7 из 7

Тема: Эмулятор БК-0011М на ESP8266

  1. #1
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    57
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Эмулятор БК-0011М на ESP8266

    Всем доброго времени суток!

    Оптимизировал я свой эмулятор БК-0010 (https://zx-pk.ru/threads/29542-emuly...a-esp8266.html).
    Получилось таки впихнуть БК-0011М в ESP8266.

    Проект на github: https://github.com/konst-st/BK8266/tree/BK0011M

    Билд 55:
    https://github.com/konst-st/BK8266/b...55/0x00000.bin
    https://github.com/konst-st/BK8266/b...ds/55/fota.bin

    Эмулятор использует все 160 кБ ОЗУ ESP8266 (из которых 128 кБ выделено под ОЗУ БК0011М).
    ПЗУ БК11М подгружаются из флэш (используется программное кэширование).
    Код эмулятора частично разбит на оверлеи, подгружаемые из флэш по мере необходимости.

    Пока не реализовано:

    Прерывание по вектору 14 после выполнения каждой команды при установленном в PSW бите T (трассировка).
    Прерывание от таймера 50 Гц.
    Чтение и запись файлов (планирую эмулировать дисковод).
    Так же планирую реализовать эмуляцию звукового сопроцессора AY-3-8910.

    Кстати, судя по всему эмулятор ZX Spectrum 128 тоже вполне реально на ESP8266 реализовать.

  2. Эти 7 пользователя(ей) поблагодарили konst_st за это полезное сообщение:
    ALS (08.02.2019), Anubis_OD (08.02.2019), Bolt (08.02.2019), CodeMaster (08.02.2019), SoftLight (08.02.2019), svofski (17.02.2019), S_V_B (08.02.2019)

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

  4. #2
    Veteran Аватар для SoftLight
    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    1,239
    Благодарностей: 884
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от konst_st Посмотреть сообщение
    Кстати, судя по всему эмулятор ZX Spectrum 128 тоже вполне реально на ESP8266 реализовать.
    Да и ZX Spectrum 48 уже было бы круто!
    Спасибо за букашечку, буду пробовать.

  5. #3
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    57
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думаю как эмулировать дисковые операции.

    Если не реализовывать эмуляцию стандартного контроллера НГМД со всеми его регистрами и т.п., а сделать нестандартный контроллер, реализовав только стандартные вызовы:
    Код:
    160000	Автоматическая загрузка
    160002	Загрузка с выбранного привода
    160004	Чтение-запись по номеру блока
    160006	Чтение-запись по номеру сектора
    160010	Инициализация рабочей области драйвера
    160012	Форматирование дорожки
    Чем это грозит?
    Не будет работать софт, который лезет к регистрам контроллера напрямую. Но такого софта, по идее, очень мало.

    В модулях на ESP8266 устанавливают флэш от 1 до 4 МБайт. 512 кБайт отводится под прошивку. Итого остается от 0.5 до 3.5 МБайт под файлловую систему. Есть несколько вариантов эмуляции диска:

    1. Загружать образы дискет по WiFi в файловую систему с подключением этих образов в эмуляторе.
    2. Сразу сделать во флэш от одного 40-дорожечного до четырех (A B C D) 80-дорожечных дисков БК (в зависимости от размера флэш) с загрузкой в эти диски файлов по WiFi.
    3. Сразу сделать во флэш один диск БК нестандартного размера (от 0.5 до 3 МБайт, нестандартное число дорожек или секторов на дорожке) с загрузкой в этот диск файлов по WiFi.

    С третьим вариантом интересно как поведет себя софт БК в такой ситуации?

  6. #4
    Activist Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    255
    Благодарностей: 110
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Класс, желаю проекту успеха!
    Таймер на 50 Гц было бы круто, конечно.
    Кстати, мы тут подумали, что если частоту процессора чуть-чуть повысить - ровно настолько, чтобы кадровая частота 48,83125 Гц сравнялась с 50 Гц - всё станет намного проще, а разницы никто не заметит.
    Manwe/SandS

  7. #5
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    57
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Таймер сделаю.
    Сейчас думаю как файловую систему делать. Надо же равномерно распределять нагрузку на секторы флэш. Иначе тот же Andos будет убивать флэш записью FAT в одно и то же место.
    По поводу 50 Гц. На сколько я понимаю это прерывание формируется в момент кадрового синхроимпульса? Или я ошибаюсь?
    Если так, то я жестко привязан к строчной частоте. Если только менять число строк в кадре. Но, думаю, все равно будут получаться неточные значения. Сейчас у меня получается 49.689 Гц.
    Впрочем я тоже думал подгонять частоту процессора под ту кадровую частоту которая у меня получается.
    А в чем проблема что 50 Гц не совсем 50 Гц?

  8. Этот пользователь поблагодарил konst_st за это полезное сообщение:
    SoftLight (13.02.2019)

  9. #6
    Activist Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    255
    Благодарностей: 110
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от konst_st Посмотреть сообщение
    По поводу 50 Гц. На сколько я понимаю это прерывание формируется в момент кадрового синхроимпульса?
    Именно так. Оригинальная БК-0011 генерит кадровый импульс с частотой 48,83125 Гц (когда луч достигает низа экрана). Не очень хорошая частота.

    Цитата Сообщение от konst_st Посмотреть сообщение
    Впрочем я тоже думал подгонять частоту процессора под ту кадровую частоту которая у меня получается.
    А в чем проблема что 50 Гц не совсем 50 Гц?
    Если близко к 50 Гц, то проблем нет. А если меньше 49 Гц, то большинство телевизоров отказывается ловить такой импульс.
    На оригинальном железе отрисовка одной строки экрана происходит ровно за 256 тактов процессора. Соответственно, если мы хотим чуть ускорить эмулятор, чтобы кадровая частота составила ровно 50 Гц, нам придётся пропорционально ускорить и сам процессор. Иначе будет расхождение и некоторые графические программы станут некорректно работать.
    Последний раз редактировалось Manwe; 17.02.2019 в 18:19.
    Manwe/SandS

  10. #7
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    57
    Благодарностей: 51
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    если мы хотим чуть ускорить эмулятор, чтобы кадровая частота составила ровно 50 Гц, нам придётся пропорционально ускорить и сам процессор.
    Да, как я уже писал, это я подгоню.

  11. Этот пользователь поблагодарил konst_st за это полезное сообщение:
    Manwe (19.02.2019)

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

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

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

Похожие темы

  1. Эмулятор БК-0010 на ESP8266
    от konst_st в разделе БК-0010/0011
    Ответов: 94
    Последнее: 08.02.2019, 18:12
  2. Эмулятор "Специалиста" на ESP8266
    от heavy в разделе Специалист
    Ответов: 62
    Последнее: 03.02.2019, 04:58
  3. Аппаратный эмулятор Радио-86РК на ESP8266
    от heavy в разделе Радио-86РК
    Ответов: 337
    Последнее: 26.01.2019, 00:29
  4. ESP8266 + УКНЦ
    от S_V_B в разделе ДВК, УКНЦ
    Ответов: 20
    Последнее: 11.01.2019, 06:21
  5. Эмулятор БК-0010-01, БК-0011 и БК-0011М
    от Doronetty в разделе Эмуляторы отечественных компьютеров
    Ответов: 72
    Последнее: 22.10.2018, 00:20

Ваши права

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