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

User Tag List

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

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

  1. #1
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    68
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    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. Эти 2 пользователя(ей) поблагодарили konst_st за это полезное сообщение:

    Platonoff (01.03.2021), SoftLight (16.03.2024)

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

  4. #2
    Guru Аватар для SoftLight
    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    2,123
    Спасибо Благодарностей отдано 
    803
    Спасибо Благодарностей получено 
    513
    Поблагодарили
    281 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #3
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    68
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    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
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #5
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    68
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  8. #6
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 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.pdp-11.ru

  9. #7
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    68
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  10. #8
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от konst_st Посмотреть сообщение
    Да, как я уже писал, это я подгоню.
    Привет, как проект? Что не допилено?
    К нему бы корпус напечатать на 3D-принтере, стилизованный под БКшку
    manwe.pdp-11.ru

  11. #9
    Member
    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    68
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пока забросил.
    Эмуляция БК11 работает нормально. Остановился на эмуляции дисковода.
    В принципе самое простое - перехват точек входа в подпраграммы чтения / записи ПЗУ контроллера. Но возможно это не со всем ПО будет работать.
    Плюс какую то другую файловую систему надо во флэш делать, что бы образы дисков можно было заливать и что бы на них можно было писать.
    Ну и проблема что только ЧБ режим.

  12. #10
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,722
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    403
    Поблагодарили
    256 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от konst_st Посмотреть сообщение
    Пока забросил.
    Эмуляция БК11 работает нормально. Остановился на эмуляции дисковода.
    В принципе самое простое - перехват точек входа в подпраграммы чтения / записи ПЗУ контроллера. Но возможно это не со всем ПО будет работать.
    Плюс какую то другую файловую систему надо во флэш делать, что бы образы дисков можно было заливать и что бы на них можно было писать.
    Ну и проблема что только ЧБ режим.
    Можно пока просто перехватывать EMT 36 (а на БК 0011М EMT 115) и читать файл с FAT
    manwe.pdp-11.ru

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

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

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

Похожие темы

  1. Эмулятор БК-0010-01, БК-0011 и БК-0011М
    от Doronetty в разделе Эмуляторы отечественных компьютеров
    Ответов: 195
    Последнее: 23.10.2024, 10:45
  2. Аппаратный эмулятор Радио-86РК на ESP8266
    от heavy в разделе Радио-86РК
    Ответов: 376
    Последнее: 31.05.2024, 21:15
  3. Эмулятор "Специалиста" на ESP8266
    от heavy в разделе Эмуляторы отечественных компьютеров
    Ответов: 82
    Последнее: 11.01.2024, 23:49
  4. Эмулятор БК-0010 на ESP8266
    от konst_st в разделе БК-0010/0011
    Ответов: 94
    Последнее: 08.02.2019, 18:12
  5. ESP8266 + УКНЦ
    от S_V_B в разделе ДВК, УКНЦ
    Ответов: 20
    Последнее: 11.01.2019, 06:21

Ваши права

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