ninacarrot
@ninacarrot

ZX Spectrum + *nix

Для тех, кто в танке, поясняю: nix-системы есть даже для кофеварок, а для обожаемого многими Спекки таковой всё еще нет.

В экспериментальных целях можно написать несложную unix-like систему для Спекки (минимум с 48 Кб ОЗУ — 16Кб на ОС и еще по 16Кб на запущенные процессы), но вот в чем вопрос: а нужно/интересно ли это еще кому-то, кроме меня?
  • Вопрос задан
  • 3461 просмотр
Пригласить эксперта
Ответы на вопрос 4
tzlom
@tzlom
нужно — нет, реалии таковы что и спеки есть у единиц (эмуляторы не в счёт)
интересно — весьма, процесс нетривиальный и там может быть много неожиданных решений и подходов
так что если хотите — дерзайте, но не надейтесь что это будут юзать, просто скажут «вау, круто»
Ответ написан
vinxru
@vinxru
Найдите какую нибудь старую версию UNIX написанную на C и использующую не более 48 Кб ОЗУ. Я думаю это реально. Останется только реализовать четыре драйвера (экран, клавиатура, звук) и скомпилировать.

Только у стандартного ZX-спектрум нет диска и локальной-сети. Чем будет заниматься этот UNIX я не представляю :)

Надо взять Спектрум по новее, например мой +3. В нем есть и RS-232 для локальной сети и дисковод.

Предвижу предложение взять последние творения NedoPC (процессор в десятки мегагерц, мегабайты ОЗУ, жесткий диск, высокое разрешение экрана). Лично я не считаю их Спектрумами.

А писать свой UNIX я не советую. Так как ничего похожего на современный Linux у нас не получится. В 16 Кб можно запрограммировать очень немногое. В 16 Кб даже не влезет справка выводимая по ключу --help.
Ответ написан
@Jazzist
Интересно, наверное в научных целях.

«Писать» особо много не придется, можно портировать готовые решения. Например DSL
Ответ написан
@Yoel
Тут возможно два варианта: воспроизвести или портировать LUnix для Commodore 64 или UZIX для MSX ("Ямахи"). Первый вариант соответствует ресурсам обычного синклера, причем синклер даже помощнее: в Commodore 64 процессор MOS 6510 работает со скоростью 1 мегабайт, хотя и с меньшим средним числом тактов на команду, ПЗУ там занимает 20к, хотя есть видеокарта с текстовым режимом, что позволяет в принципе сократить видеопамять до 1к, однако в нормальном графическом режиме доступно только 38к памяти. Второй вариант, наверное, имеет смысл переписывать для ZX Spectrum 48, а еще лучше на Scorpion ZS-256 Turbo+ или иной модели с памятью от 256к. Процессор на Ямахе - тот же Z80, и страницы памяти переключаются через порт, как в ZX Spectrum 48, поэтому должно быть относительно несложно такое перенести.

Сразу нужно оговориться, что на машинах такого уровня можно написать только минимальное подмножество Unix. Тем не менее, для LUnix есть даже относительно полноценный вебсервер. Для стандартного ZX Spectrum 48 можно в принципе создать свой интерфейс для подключения к интернету через звуковой порт, хотя работать такое чудо будет в лучшем случае со скоростью модема и постоянно будет визжать, когда обменивается информацией по TCP/IP. Хотя, возможно, можно довести скоростью обмена информацией с интерфейсом до ультразвука. Но раз интернет работает в Commodore, очевидно, что возможно это и на синклере. А если в модели со внешними устройствами, то тем более.

Есть еще проблема с защитой памяти. Обе вышеупомянутые системы не содержат никаких средств для этого, хотя страницы памяти в Ямахе или том же ZX Spectrum 128 как бы частично защищены тем, что случайный глюк вряд их переключит и что-то туда запишет. Без серьезной модификации обычного ZX Spectrum 48 это и не возможно. Разве только написать компилятор C, который уже на программном уровне хоть как-то запрещает писать куда не положено данному процессу.

Модифицировать модель типа ZX Spectrum 128 можно было бы так:

1. Добавить нехитрый контроллер немаскируемого прерывания, чтобы оно запускалось, скажем, 1000 раз в секунду.
2. Привязать отдельное системное ПЗУ и одну особую страницу ОЗУ к немаскируемому прерыванию, чтобы она была доступна только во время прерывания и никак иначе. Порт, через который контролируется частота немаскируемого прерывания, тоже должен быть доступен только во время него.
3. При включении машины должно автоматически запускаться системное ПЗУ со своей страницей ОЗУ, прерывания вначале вырублены, и ОС записывает все, что нужно, в свою страницу. После этого страницы переключаются на обычное ПЗУ/ОЗУ, а через порт включается контроллер немаскируемого прерывания. После этого система будет в защищенном режиме мониторить все происходящее в машине.

Все это в принципе не сложнее вариантов синклера с дисководом и т.п. Нужно только учесть устройства, которые независимо включают немаскируемое прерывание. Например, кнопка magic может не просто сбрасывать память на дисковод, но включать монитор суперюзера.

Мне давно уже интересно, когда же кто-нибудь сделает подобную штуку. ))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы