Относительно популярные 16-разрядные миникомпьютеры Digital Equipment Corporation (DEC) PDP-11 начали продаваться в 70-х годах и были доступны в начале 90-х годов. Находясь в Европе из-за ограничений COVID-19, Йерун Домбург (также известный как Sprite_tm) решил создать крошечную копию терминала DEC VT102 PDP-11 на базе беспроводной платы ESP32 и запустить 2.11 BSD UNIX через эмулятор SimH PDP11.

Однако Йеруну пришлось проделать значительную работу, чтобы заставить SimH работать на ESP32, особенно с необходимостью оптимизации использования памяти:
Очевидно, что «просто перенести SIMH на ESP32» — это немного преуменьшить необходимые усилия. Несмотря на то, что SIMH — довольно хорошая программа, когда дело доходит до использования каких-либо уникальных API-интерфейсов, она по-прежнему является системой, разработанной для полнофункциональной рабочей станции, и предполагает, что ОЗУ очень много. Чтобы запустить его на ESP32 и при этом оставить немного памяти, которую мы можем использовать в качестве ОЗУ для эмулируемой машины, мне нужно сначала в ней разобраться.
Он должен значительно удалить сетевой стек и анализатор конфигурации, чтобы эмулятор поместился в память ESP32 и флеш-хранилище, а также удалил ненужные периферийные устройства, включая ленточные накопители, векторные мониторы, устройства чтения перфокарт и т. Д. Это позволило ESP32 эмулировать клон PDP11-23 (ЭЛЕКТРОНИКА 60М российского производства) и запускать Тетрис на ESP-WROVER32-Kit с дисплеем.
В Tetris использовалось всего несколько десятых КБ ОЗУ, в то время как ESP32 был также оснащен 4 МБ PSRAM, добавляемой во внутреннюю ОЗУ, поэтому Йерун решил перенести 2.11 BSD UNIX с полным сетевым стеком TCP / IP на чип. Последнее требовало использования ESP-NETIF от ESP-IDF, связывающего воедино сетевые интерфейсы и код более высокого уровня, такой как стеки TCP / IP.
Наконец, нужно было спроектировать корпус, и конечные результаты выглядели достаточно мило, и, что более важно, все работало нормально.
Вы найдете более подробную информацию о полном процессе разработки в блоге spritesmods, а также на Github.