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

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 33

Тема: Эмулятор ПК Специалист "SpeciARMlist"

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

    По умолчанию Эмулятор ПК Специалист "SpeciARMlist"

    Делюсь промежуточными результатами своей работы над эмулятором ПК Специалист.



    Пишу его на чистом ассемблере ARM под голое железо Raspberry Pi, то есть без использования какой-либо операционной системы, и даже без использования каких-либо библиотек или других наработок. Всё с нуля и всё сам.

    На текущий момент эмулятор имеет размер 26667 байт, из которых 4096 байт занимает ПЗУ Специалиста, а 7734 байта игра Зоопарк.

    kernel.img - файл для запуска на реальном железе Raspberry Pi 1 или Raspberry Pi Zero
    speciarmlist.img - файл для запуска под QEMU

    В итоге хотелось бы прикрутить реальную клавиатуру (это как сделать знаю), звук, поддержку магнитофона и загрузку игр с SD-карты. Не уверен, что сумею воплотить всё, что задумал, так как всю информацию о программировании голого железа приходится добывать буквально по крупицам и в одиночку, ибо единомышленников в этом направлении найти не удалось.



    P.S. В видео я оговорился, сказав, что игра занимает 12 Кб. Это я перепутал с размером экранной области Специалиста, то есть с размером скриншота из этой игры в формате ПК Специалист.
    Вложения Вложения
    Последний раз редактировалось CityAceE; 18.09.2023 в 13:49.
    С уважением, Станислав.

  2. Эти 17 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    Aleks1985 (19.09.2023), ALS (20.09.2023), axe_chita (18.09.2023), Beaver (18.09.2023), Cooper (08.10.2023), DDp (20.11.2023), Eltaron (09.11.2023), gdv2002 (18.09.2023), genka_z (24.10.2023), MaratBest (24.09.2023), Oleg N. Cher (22.09.2023), parallelno (07.10.2023), Pyk (19.09.2023), Radon17 (18.09.2023), svofski (19.09.2023), Titus (18.09.2023), USERHOME (27.09.2023)

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

  4. #2
    Member Аватар для HighLander
    Регистрация
    04.04.2017
    Адрес
    г. Москва
    Сообщений
    67
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проект закрытый? Исходников в общем доступе нет?
    Народ пилит под мурмулятор разные прошивки, может решите поучаствовать?
    ZX-Evo + Baseconf & TSconf + VDAC-2 + ZIFI

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

    По умолчанию

    Цитата Сообщение от HighLander Посмотреть сообщение
    Проект закрытый? Исходников в общем доступе нет?
    Пока просто публиковать нечего. То, что есть на текущий момент - это просто заготовка. Там даже в эмуляции i8080 ещё куча багов, а их поиск - та ещё головная боль. Но как только будет что-то более-менее внятное, то я обязательно исходники выложу к себе на GitHub.

    Цитата Сообщение от HighLander Посмотреть сообщение
    Народ пилит под мурмулятор разные прошивки, может решите поучаствовать?
    Да, знаю я этот проект. Весьма интересный. Но, во-первых, там всё пишется на С++, с которым я сильно на "вы". И мои ассемблерные наработки там вряд ли пригодятся. А, во-вторых, у меня элементарно нет готового устройства.
    С уважением, Станислав.

  6. Этот пользователь поблагодарил CityAceE за это полезное сообщение:

    MaratBest (24.09.2023)

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

    По умолчанию

    Удалось найти и поправить все грубые ошибки эмуляции i8080. Теперь полностью проходят все тесты 8080 INSTRUCTION EXERCISER. Очень полезная программа!



    Дольше всего намучился с командой DAA, и это несмотря на то, что уже успешно реализовывал её в другом своём эмуляторе.

    Ещё много крови попила моя глупая ошибка в команде JP P,nn (JP a16). Я ошибочно проверял флаг чётности - P, в качестве условия. Ну правильно же, в условии присутствует буква P А нужно было проверить совсем другой флаг - флаг знака S. И вот вроде почти все программы работали, но что-то было не так.
    Последний раз редактировалось CityAceE; 19.09.2023 в 16:21.
    С уважением, Станислав.

  8. Эти 2 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    MaratBest (24.09.2023), Oleg N. Cher (22.09.2023)

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

    По умолчанию

    Научился работать с таймером Raspberry Pi и замедлил эмулятор до реальной скорости. Сейчас эмулятор рисует 50 кадров в секунду, а виртуальный КР580ВМ80А работает на скорости 2 МГц.

    Первые опыты оказались неудачными, так как оказалось, что мой эмулятор работал медленнее нужного. Выяснилось, что скорости не хватало не только из-за включенной отладочной информации, но и из-за медленной отрисовки экрана Специалиста. Я использую 8-ми битный цвет, то есть 1 пиксель отрисовывается 1 байтом. Хотел для ускорения снизить битность, но выяснилось, что QEMU, на котором идёт большая часть отладки, не поддерживает эмуляцию ниже 8 бит. Да и сама Raspberry Pi минимально может только 4 бита на точку (16 цветов из палитры 32 бита). Пришлось как-то выкручиваться. И после того, как я сделал вывод графики по табличке вместо расчётов на лету, всё существенно ускорилось и появился серьёзный запас по скорости.

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

  10. Эти 5 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    MaratBest (24.09.2023), Oleg N. Cher (24.09.2023), parallelno (07.10.2023), svofski (23.09.2023), zxsacura (23.09.2023)

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

    По умолчанию

    После долгой и упорной борьбы сегодня пал последний (?) баг в эмуляции 8080. На текущий момент все игры, которые я запускал, запускаются и работают. Баг был в команде RAR (или RRA, если выражаться языком Z80). В процессе эмуляции этой команды я забыл обнулить верхнюю часть 32-х битного регистра. В результате при этой операции ошибочно устанавливался старший бит регистра А, когда не нужно, если в регистре С младший бит был установлен Я сильно ограничен в средствах отладки, так как всё ещё не могу вводить никакую информацию в эмулятор (нажимать кнопки), а только выводить что-то на экран. Но каким-то чудом изловил этот баг и уничтожил его. Просто гора с плеч! Причём, что интересно - Exerciser проходил все тесты без ошибок! Но при этом программы на Basic'е не работали - Basic выводил какие-то осознанные ошибки, была ошибка в игре Almaz, и начисто отказывались работать все рекомпиляции ivagor'а и Тимохи - там, как потом уже выяснилось, начальная распаковка не то распаковывала.

    Ну и со скоростью ещё поработал, применив знания, которые получил в соседней ветке. В итоге рассинхрон с Emu80 почти исчез, но всё равно остался. За час беготни по лабиринту в игре Зоопарт набегает отставание почти на целую вертикальную лестницу. Буду сверять с реальным компом, когда подключу его.
    Последний раз редактировалось CityAceE; 30.09.2023 в 08:10.
    С уважением, Станислав.

  12. Эти 2 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    ivagor (30.09.2023), Oleg N. Cher (30.09.2023)

  13. #7
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,806
    Спасибо Благодарностей отдано 
    642
    Спасибо Благодарностей получено 
    1,773
    Поблагодарили
    1,023 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Exerciser проходил все тесты без ошибок!
    При тесте этой команды С=0Eh. Вот недостаток экзорциста, по-хорошему надо менять значения регистров. Проблема во времени работы теста.

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

    По умолчанию

    Да не, вопросов к Exerciser'у вообще никаких! Невозможно же вообще все варианты предусмотреть. У меня вот так хранение регистров было организовано, у кого-то иначе. Всегда можно допустить ошибку, которую никто никогда не увидит. А Exerciser в очередной раз сильно помог в борьбе с другими багами.

    Но, кстати, в этот раз я допустил существенно меньше ошибок. Видимо, сказывается тот факт, что это уже мой 4-й раз, когда я с нуля пишу эмуляцию процессора До этого были Z80 на ассемблере MC68000, далее 4-х битный процессор Game&Watch на Python, далее был i8080 на Python, и вот теперь i8080 на ассемблере ARM.
    С уважением, Станислав.

  15. Эти 2 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    Oleg N. Cher (08.10.2023), parallelno (07.10.2023)

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

    По умолчанию

    Сделал эмуляцию клавиатуры. Помню, как намучился с этим вопросом, когда писал эмулятор на Python. Без помощи ivagor'а и других форумчан тогда, как обычно, не обошлось. Причём, когда процедура была готова, я написал в теме такую фразу:

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Честно говоря, после всех этих оптимизаций, объединений и переносов я практически перестал понимать логику работы процедуры
    И, естественно, через несколько лет, прошедших с момента написания той процедуры, понимания у меня не добавилось, а оно только окончательно улетучилось. Ну, а если добавить к этому слишком ограниченные возможности по отладке создаваемого эмулятора, то становится ясно, что эмуляция клавиатуры в конкретном случае - дело непростое. Поэтому я взял и особо не вникая в логику переложил текст, написанный на Python, на ассемблер. Несколько раз перепроверил и прогнал в голове код И далее начал прикручивать геймпад в надежде, что процедура работает правильно. И оказалось, что она действительно работает правильно! Я реально кайфанул, когда увидел результат.

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

  17. Эти 5 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    Oleg N. Cher (08.10.2023), parallelno (07.10.2023), svofski (07.10.2023), Titus (08.10.2023), valerium (07.10.2023)

  18. #10
    Activist
    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    368
    Спасибо Благодарностей отдано 
    420
    Спасибо Благодарностей получено 
    240
    Поблагодарили
    87 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Очень интересно читать про процесс разработки! Спасибо что делится этим! Не останавливайся!
    Желаю довести проект до финала!
    Прикольно что ты как бы пишешь проект с двумя уровнями эмуляции. Надеюсь что скоро у тебя получиться проверить работу на разбери!

  19. Эти 2 пользователя(ей) поблагодарили parallelno за это полезное сообщение:

    CityAceE (08.10.2023), Oleg N. Cher (08.10.2023)

Страница 1 из 4 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 33
    Последнее: 19.04.2023, 17:03
  2. Эмулятор "ZX Spectrum 48" на "Векторе-06Ц"
    от Tim0xA в разделе Вектор
    Ответов: 31
    Последнее: 27.12.2022, 21:40
  3. Эмулятор "Вектор-06Ц" на "Dingoo A-320"
    от Tim0xA в разделе Вектор
    Ответов: 44
    Последнее: 15.04.2013, 20:28
  4. Эмулятор "Львов ПК-01" на "Dingoo A-320"
    от Tim0xA в разделе Львов
    Ответов: 3
    Последнее: 03.07.2012, 10:51
  5. Эмулятор ПК "Специалист" для Mac OS X
    от hdc в разделе Эмуляторы отечественных компьютеров
    Ответов: 1
    Последнее: 21.10.2009, 11:28

Ваши права

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