Unix запустили на оригинальной консоли NES

Игровые консоли обычно не ассоциируются с возможностью устанавливать на них полноценные операционные системы. Однако программист и техноэнтузиаст DeCrAzYo сумел вдохнуть новую жизнь в культовую 8-битную приставку Nintendo Entertainment System, продемонстрировав работу Unix-подобной ОС на оригинальном железе NES.

Вдохновением для этого необычного проекта послужили хаки, позволяющие запускать стороннее ПО на NES путем подключения вспомогательных устройств, таких как Raspberry Pi. По мнению DeCrAzYo, это сводит NES к обычному видеовыходу — по сути процессор и память самой консоли не используются. Поэтому разработчик поставил перед собой цель запустить Unix-систему непосредственно на железе NES, без дополнительной аппаратной модификации.

Очевидным препятствием при этом является крайне слабая по современным меркам производительность NES — объем оперативной памяти составляет лишь 2 КБ. Из-за этой проблемы DeCrAzYo решил не использовать полноценный дистрибутив Linux, а остановил выбор на более легковесной Unix-подобной системе. По сути — это не настоящий Linux, но это максимум возможного на аппаратной платформе NES.

Разумеется, ни одна существующая ОС не была адаптирована для запуска на NES. Поэтому разработчику пришлось не только искать подходящую базу, но и кодировать ряд элементов самостоятельно. В результате выбор пал на LUnix (Little Unix) — Unix-подобную ОС, последний релиз которой вышел ещё в 2004 году для 8-битного домашнего компьютера Commodore 64.

Адаптация стала возможной благодаря использованию на Commodore 64 и NES похожих 8-битных процессоров семейства 6502, а также богатой периферии "японского" варианта NES — приставки Famicom. В частности, для этой версии консоли официально выпускались клавиатура, принтер и накопители на дискетах, а также картридж-расширитель оперативной памяти. В совокупности это давало ресурсы для полноценной среды Unix.

В итоге модифицированная версия DeCrAzYo позволила запустить LUnix на Famicom и даже получить "довольно полнофункциональную" ОС с поддержкой нескольких терминалов, историей команд и т.д. А вот на обычной версии NES разработчик продемонстрировал успешную загрузку ядра LUnix с помощью специального картриджа EverDrive-N8.

По словам DeCrAzYo, возможности NES действительно можно расширить за счёт создания кастомного картриджа с дополнительной памятью, подключения USB-клавиатуры и накопителей на SD. Однако в своём эксперименте разработчик использовал уже готовую модель Famicom для упрощения задачи. Код модифицированной NES-версии LUnix доступен в его репозитории на GitHub — так что грамотные энтузиасты могут повторить этот проект на обычной приставке NES.

Больше статей на Shazoo
Тэги: