• ZX Spectrum + *nix

    @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 может не просто сбрасывать память на дисковод, но включать монитор суперюзера.

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