[Open source, C, Старое железо, Процессоры, DIY или Сделай сам] Zx spectrum128, CP/M 2.2 и терминал на STM32F407
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Нарисовавши черно-белый Spectrum48 за $3 на телевизоре и получив вопросы как: «а почему не цветной», «а почему без музыки», «а где НЕИГРУШКИ» — решил поправить и опубликовать менее бюджетную версию, Spectrum128+СP/M, примерно на $25 железа.
Мне могут возразить — это уже дорого, можно купить Raspberry или другой Linux board на эти деньги, однако реализация на STM32 имеет несколько выигрышных черт, таких как:
- Время готовности при включении меньше пары секунд.
- Лаг на клавиатуру меньше одного фрейма (20 миллисекунд, примерно как на настоящем, железном спектруме).
- Эмулятор на STM мне нравится больше, так как у эмуляторов на Linux, а также и других эмуляторов есть фатальный недостаток — их писал не я.
- Можно питаться от батареек.
Подробнее о реализации.
Подсистема звука:
2 ШИМ канала 16 bit, на частоте 44100, работают постоянно и вытягивают из Fifo звук. С другой стороны в Fifo пишет текущий процесс. Это или ZX spectrum (Z80 эмулятор), или MP3 player decoder. Если нет места для звука, то процесс ждет сканируя клавиатуру. Z80, в свою очередь, отрабатывает один кадр и пишет эвенты связанные со звуком в очередь событий звука такие как speaker ON-OFF и AY 8910.С каждым эвентом идет и счетчик клоков Z80. По окончании кадра в 20 миллисекунд симуляции (4-8 миллисекунд stm32 ), рендерится кадр на экран(только изменения) и события звука из очереди рендерятся соотвественно в Fifo звука. Если он забит — значит мы торопимся, и нужно подождать. Таким образом осуществляется синхронизация времени между симулируемой и симулирующей системами. При чтении ТAP файлов (виртуального магнитофона ), звук рендерится плотнее, с более коротким шагом, в 3-5 раз, и виртуальное время течет быстрее, соотвественно загрузка скорее чем с физического магнитофона. Впрочем можно ускорение отключить, с клавиатуры (F11-F12).
ШИМ, а не DAC, для звука выбран специально. Он позволяет уменьшить помехи от питания и вынести усилитель класса D наружу и организовать регулировку громкости питающим ключи напряжением. Даже простейший, на паре транзисторов, дает более качественный звук, чем просто усиление сигнала с шумного DACa (плата STM покупная, китайская, готовая. С ошибками.)
Чип AY-3-8910 не то что бы сильно сложный, но документация на него скорее предназначена для пользователей и интеграторов, а не для эмуляции/симуляции. О многом приходилось скорее догадываться и смотреть по коду разных эмуляторов, чем просто сесть и написать по документации. Возможно, что где-то и не угадал… И фокус написать его нетребовательным к СPU ресурсам. Вроде получилось.
Подсистема видео.
Изменения цвета бордера (если они были) записывается в специальную очередь с клоками процессора. Это будет видно при загрузке с магн. Ну и некоторые игры обновляют его на ходу, для спецэффектов.
После этого, когда «z80» отработал свои такты на 20 миллисекунд кадр рендерится.
То есть трюки с изменением кадра на ходу в демках работать будут не все. Но с играми проблем не замечено.
Контроллер обычный, параллельный 16bit FSMC <-> ILI9341 c SPI тачем ( работает, но не нигде не используется).
z80: это эмуляция CMOS версии Z80. Салат из разных мест, но большей частью из FUSE и немного моего творчества тоже (в основном на обьем и скорость). Тест zexall проходит.
Клавиатура
USB host HID device контроллер от STM. C USB роутерами работать не будет. Все претензии к ST, они поленились и я тоже. Конкретно на том боарде, что я использую нужно удалить резистор R21 1.5K: 3.3v<->USB D+.
Disk
Примерно так отформатирован у меня, но думаю, что не все критично:
Partition 1 type Start 2048: W95 FAT32 (b)
Attributes: 80
Filesystem UUID: xxxx-xxxx
Filesystem: vfat
Корневые директории(для этого кода именно так):
ZX48
сюда класть программы для spectrum48.Форматы: .TAP,.Z80,.SNA
ZX128
сюда класть программы для spectrum128.Форматы: .TAP,.Z80,.SNA
MP3
попробуйте угадать? И форматы?
Видео тест Спектрума:
www.youtube.com/watch?v=WKQc5I55Ji8
— Бонус. Реализован слой согласования с CP/M 2.2 от Grant Searle's.
www.searle.wales
Мужик сделал отличную работу по реализации CP/M на Z80 (отдельно) и FPGA (другая система)
Там и BIOS и образ диска с дофига программ, утилит и компиляторов:
Си, Лисп, Ада, Паскаль,Cobol, Алгол,Forth,APL,Fortran,PL/I,Basic всякий, muMath & muSimp (CAS math package), игры, редакторы… всего 240 мега. Это сегодня пару страниц текста, а тогда, во времена CP/M столько не было ни у кого.
Подробнее здесь:
obsolescence.wixsite.com/obsolescence/multicomp-fpga-cpm-demo-disk
Ну и видео тест CP/M:
www.youtube.com/watch?v=-h3XCy79aJw
Я немного добавил к эмулятору z80 на STM32 слой обращения к диску и терминал экрана: клавиатуры, микс ANSI и VT100. Надо будет допроверить и доделать. В основном работает, CATCHUM и Turbo Pascal исправны. Запускается CP/M когда видит диск отсюда, по первым двум байтам образа:
obsolescence.wixsite.com/obsolescence/multicomp-fpga-cpm-demo-disk
Если диска вообще нет, то запускается в режиме Spectrum 128 в меню.
— Что не сделано:
1. Чтение и запись с физического магнитофона, магнитофон купил, жду пустые кассеты с Али.
2. Вообще любая запись в спектруме не написана.(В CP/M — есть запись)
2.".TGZ" формат?
Что еще:
Хм. Положил перед собой железо, выбираю:
Слева направо, сверху вниз:
Stm32h743, программер на stm32f103, Xilinx XC6SLX16, на ней программер для альтеры, Altera ep2c5 & PSRAM 8M, Zynq7010(на али распродажи по $15!!! ) ,W600-pico (60MHz m3+280 ram $2) ,ESP32-CAM with PSRAM 8M (очень дешевая но мало свободных ножек).
Нижний ряд: Еще Xilinx XC6SLX16,Xilinx XC6SLX9, ANLOGIC (22k lut+SDRAM), ALTERA EP4CE15F23C8, еще W600 за $1- но мало ножек.
Справа от клавиатуры белый магнитофон для демонстрации загрузок компьютеров внукам.
Нет ничего дороже $30… Особенно интересно для тех, кто хочет учить Zynq7010 — это FPGA 28 K LUT + 2 ARM cores ~600MHz + flash 128MB + ddr 256MB +ETH100. Видимо распродают контрольные платы от битмайнеров. Удивился и купил.
Эмулятор z80 прогонял на них на всех, кроме программера для альтеры и магнитофона. На некоторых и эмулятор 80286-го прогнал.
— для тех кто хочет повторить
Искать:
«STM32F407VET6 Development Board Cortex-M4 STM32 minimum system learning board ARM core board +3.2 inch LCD TFT With Touch Screen». Проверял только с 3.2 экраном, чип ILI9341.
source:
github.com/sdima1357/spectrum128_cpm
===========
Источник:
habr.com
===========
Похожие новости:
- [IT-инфраструктура, Сетевые технологии, Asterisk, Сетевое оборудование] Офисные гарнитуры Snom A100M и A100D
- Выпуск MirageOS 3.9, платформы для запуска приложений поверх гипервизора
- Chromium будет удалён из репозиториев openSUSE, если не найдётся новый сопровождающий
- [Браузеры, Финансы в IT, IT-компании] Opera станет китайской: компания из Поднебесной получит основной пакет акций
- [Python, Big Data, Машинное обучение] AutoVIML: Автоматизированное машинное обучение (перевод)
- [Информационная безопасность, Open source, Системное администрирование, IT-инфраструктура] Доступна версия Zabbix 5.2
- [Беспроводные технологии, Разработка систем связи, Будущее здесь, IT-компании] Бета-тест Starlink стоит $99 в месяц, подключение — $499. SpaceX просит умерить ожидания по качеcтву и скорости
- [Биотехнологии, 3D-принтеры] В Лейденском университете распечатали кораблик 30 микрон длиной — тоньше человеческого волоса
- [Системное администрирование, Go] Чекалка: ваш личный Hosttracker (и не только)
- [Информационная безопасность, Антивирусная защита, Резервное копирование, Конференции] Итоги крупнейшего ИТ-ивента Acronis по киберзащите — #AcronisCyberSummit 2020
Теги для поиска: #_open_source, #_c, #_staroe_zhelezo (Старое железо), #_protsessory (Процессоры), #_diy_ili_sdelaj_sam (DIY или Сделай сам), #_stm32, #_zx_spectrum, #_z80, #_cp/m, #_terminal (терминал), #_stm32f407, #_open_source, #_c, #_staroe_zhelezo (
Старое железо
), #_protsessory (
Процессоры
), #_diy_ili_sdelaj_sam (
DIY или Сделай сам
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 01:05
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Нарисовавши черно-белый Spectrum48 за $3 на телевизоре и получив вопросы как: «а почему не цветной», «а почему без музыки», «а где НЕИГРУШКИ» — решил поправить и опубликовать менее бюджетную версию, Spectrum128+СP/M, примерно на $25 железа. Мне могут возразить — это уже дорого, можно купить Raspberry или другой Linux board на эти деньги, однако реализация на STM32 имеет несколько выигрышных черт, таких как:
Подробнее о реализации. Подсистема звука: 2 ШИМ канала 16 bit, на частоте 44100, работают постоянно и вытягивают из Fifo звук. С другой стороны в Fifo пишет текущий процесс. Это или ZX spectrum (Z80 эмулятор), или MP3 player decoder. Если нет места для звука, то процесс ждет сканируя клавиатуру. Z80, в свою очередь, отрабатывает один кадр и пишет эвенты связанные со звуком в очередь событий звука такие как speaker ON-OFF и AY 8910.С каждым эвентом идет и счетчик клоков Z80. По окончании кадра в 20 миллисекунд симуляции (4-8 миллисекунд stm32 ), рендерится кадр на экран(только изменения) и события звука из очереди рендерятся соотвественно в Fifo звука. Если он забит — значит мы торопимся, и нужно подождать. Таким образом осуществляется синхронизация времени между симулируемой и симулирующей системами. При чтении ТAP файлов (виртуального магнитофона ), звук рендерится плотнее, с более коротким шагом, в 3-5 раз, и виртуальное время течет быстрее, соотвественно загрузка скорее чем с физического магнитофона. Впрочем можно ускорение отключить, с клавиатуры (F11-F12). ШИМ, а не DAC, для звука выбран специально. Он позволяет уменьшить помехи от питания и вынести усилитель класса D наружу и организовать регулировку громкости питающим ключи напряжением. Даже простейший, на паре транзисторов, дает более качественный звук, чем просто усиление сигнала с шумного DACa (плата STM покупная, китайская, готовая. С ошибками.) Чип AY-3-8910 не то что бы сильно сложный, но документация на него скорее предназначена для пользователей и интеграторов, а не для эмуляции/симуляции. О многом приходилось скорее догадываться и смотреть по коду разных эмуляторов, чем просто сесть и написать по документации. Возможно, что где-то и не угадал… И фокус написать его нетребовательным к СPU ресурсам. Вроде получилось. Подсистема видео. Изменения цвета бордера (если они были) записывается в специальную очередь с клоками процессора. Это будет видно при загрузке с магн. Ну и некоторые игры обновляют его на ходу, для спецэффектов. После этого, когда «z80» отработал свои такты на 20 миллисекунд кадр рендерится. То есть трюки с изменением кадра на ходу в демках работать будут не все. Но с играми проблем не замечено. Контроллер обычный, параллельный 16bit FSMC <-> ILI9341 c SPI тачем ( работает, но не нигде не используется). z80: это эмуляция CMOS версии Z80. Салат из разных мест, но большей частью из FUSE и немного моего творчества тоже (в основном на обьем и скорость). Тест zexall проходит. Клавиатура USB host HID device контроллер от STM. C USB роутерами работать не будет. Все претензии к ST, они поленились и я тоже. Конкретно на том боарде, что я использую нужно удалить резистор R21 1.5K: 3.3v<->USB D+. Disk Примерно так отформатирован у меня, но думаю, что не все критично: Partition 1 type Start 2048: W95 FAT32 (b) Attributes: 80 Filesystem UUID: xxxx-xxxx Filesystem: vfat Корневые директории(для этого кода именно так): ZX48 сюда класть программы для spectrum48.Форматы: .TAP,.Z80,.SNA ZX128 сюда класть программы для spectrum128.Форматы: .TAP,.Z80,.SNA MP3 попробуйте угадать? И форматы? Видео тест Спектрума: www.youtube.com/watch?v=WKQc5I55Ji8 — Бонус. Реализован слой согласования с CP/M 2.2 от Grant Searle's. www.searle.wales Мужик сделал отличную работу по реализации CP/M на Z80 (отдельно) и FPGA (другая система) Там и BIOS и образ диска с дофига программ, утилит и компиляторов: Си, Лисп, Ада, Паскаль,Cobol, Алгол,Forth,APL,Fortran,PL/I,Basic всякий, muMath & muSimp (CAS math package), игры, редакторы… всего 240 мега. Это сегодня пару страниц текста, а тогда, во времена CP/M столько не было ни у кого. Подробнее здесь: obsolescence.wixsite.com/obsolescence/multicomp-fpga-cpm-demo-disk Ну и видео тест CP/M: www.youtube.com/watch?v=-h3XCy79aJw Я немного добавил к эмулятору z80 на STM32 слой обращения к диску и терминал экрана: клавиатуры, микс ANSI и VT100. Надо будет допроверить и доделать. В основном работает, CATCHUM и Turbo Pascal исправны. Запускается CP/M когда видит диск отсюда, по первым двум байтам образа: obsolescence.wixsite.com/obsolescence/multicomp-fpga-cpm-demo-disk Если диска вообще нет, то запускается в режиме Spectrum 128 в меню. — Что не сделано: 1. Чтение и запись с физического магнитофона, магнитофон купил, жду пустые кассеты с Али. 2. Вообще любая запись в спектруме не написана.(В CP/M — есть запись) 2.".TGZ" формат? Что еще: Хм. Положил перед собой железо, выбираю: Слева направо, сверху вниз: Stm32h743, программер на stm32f103, Xilinx XC6SLX16, на ней программер для альтеры, Altera ep2c5 & PSRAM 8M, Zynq7010(на али распродажи по $15!!! ) ,W600-pico (60MHz m3+280 ram $2) ,ESP32-CAM with PSRAM 8M (очень дешевая но мало свободных ножек). Нижний ряд: Еще Xilinx XC6SLX16,Xilinx XC6SLX9, ANLOGIC (22k lut+SDRAM), ALTERA EP4CE15F23C8, еще W600 за $1- но мало ножек. Справа от клавиатуры белый магнитофон для демонстрации загрузок компьютеров внукам. Нет ничего дороже $30… Особенно интересно для тех, кто хочет учить Zynq7010 — это FPGA 28 K LUT + 2 ARM cores ~600MHz + flash 128MB + ddr 256MB +ETH100. Видимо распродают контрольные платы от битмайнеров. Удивился и купил. Эмулятор z80 прогонял на них на всех, кроме программера для альтеры и магнитофона. На некоторых и эмулятор 80286-го прогнал. — для тех кто хочет повторить Искать: «STM32F407VET6 Development Board Cortex-M4 STM32 minimum system learning board ARM core board +3.2 inch LCD TFT With Touch Screen». Проверял только с 3.2 экраном, чип ILI9341. source: github.com/sdima1357/spectrum128_cpm =========== Источник: habr.com =========== Похожие новости:
Старое железо ), #_protsessory ( Процессоры ), #_diy_ili_sdelaj_sam ( DIY или Сделай сам ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 23-Ноя 01:05
Часовой пояс: UTC + 5