Архитектура операционной системы для ZX Spectrum-совместимых компьютеров +104




NedoOS – многозадачная операционная система для «русского ZX Spectrum» со средами программирования на ассемблере, Basic, Pascal, C, NedoLang. Работает на TR-DOS, FAT16 и FAT32 с длинными именами, поддерживает tar, gz, zip, rar2 и практически все реально используемые форматы спектрумовских файлов, сетевые утилиты включают Web-браузер и Web-сервер, Telnet-клиент и Telnet-сервер, IRC-клиент и др. Под ОС пишутся игры, в том числе сетевые. Сейчас в репозитории 6 участников. Исходный код всей системы (58 программ) составляет 230 тысяч строк на ассемблере и 70 тысяч строк на Си.


Введение


Архитектура компьютера


ZX Spectrum – 8-битный компьютер на базе процессора Z80. От прочих подобных компьютеров отличается тем, что вместо специализированного видеоконтроллера у него – просто комбинация счётчиков и мультиплексоров (в оригинале собранная в БМК, но легко переводимая на «рассыпуху» – микросхемы мелкой логики). За счёт этого компьютер сначала победил в ценовой гонке и стал машиной по умолчанию для «bedroom programming», а потом легко убежал от оригинального производителя и завоевал важнейшее место в компьютеризации многих стран мира. В том числе – стран, бывших в составе СССР, где Spectrum-совместимые машины выпускались околомиллионными тиражами (во всяком случае, больше, чем БК, ДВК и УКНЦ, вместе взятые).

Потрясающий воображение список известных клонов – тут. «Открытость» архитектуры (с точки зрения паяльника – а без паяльника наши клоны даже к телевизору было подключить проблематично) превратила ZX Spectrum в весьма навороченную платформу, с нетипичными для других 8-битных платформ (которые уже мертвы или заспиртованы) мегабайтами, мегагерцами, винчестерами и сетевыми картами.

ZX Spectrum до сих пор работает как платформа для инди-игр (см. идущие сейчас конкурсы «Yandex Retro game battle» и «Твоя игра 6», дедлайн которого продлён до 1 декабря), но разработка уже редко происходит в первоначальном формате, т.е. на самом Спектруме. Это объясняется среди прочего тем, что нативные среды разработки, написанные под TR-DOS в 90-х и 2000-х, отстали от жизни, а на смену им не пришло ничего нового.

Необходимость операционной системы


Операционные системы для Спектрума пишутся с давних пор. Операционная система, которая сидит в ПЗУ, позволяет писать на языке Бейсик и возиться с магнитной лентой. Дисковые операционные системы TR-DOS, GDOS, +3DOS и т.п. добавляли в Бейсик команды работы с дискетой, однако серьёзными утилитами обросла только TR-DOS, причём не за счёт довольно неуклюжего бейсик-интерфейса, а за счёт документированных (и не очень) точек входа в ПЗУ TR-DOS.

Если не считать нескольких версий CP/M (которая изначально писалась не для Спектрума и не использует по достоинству его возможности), первой серьёзной спектрумовской ОС была однозадачная iS-DOS (раз, два, три, архив), разработанная в Санкт-Петербурге в самом начале 90-х. Она «из коробки» предоставляла командер и файловую систему с подкаталогами (ни с чем не совместимую), редактор текстов произвольного размера, много дисков утилит и возможность расширения своими резидентами. К сожалению – расширения только в пределах окна ОЗУ размером 48K. Первые версии iS-DOS довольствовались 41K под всю систему, резиденты и программу пользователя, остальное пространство ОЗУ занимал экран размером 6912 байт.


iS-DOS в естественной среде обитания

Последние версии, до сих пор выходящие под названием TASiS (раз, два) и заточенные под клон ATM-Turbo 2+, позволяют развернуться на все 64K адресного пространства, убрать экран из памяти и переключать странички ОЗУ, но ядро системы в адресном пространстве всё равно остаётся. (То же касается и CP/M – во всех известных версиях система занимает верхние адреса и неистребима.)

Предпринимались и другие попытки написания ОС. К сожалению, ни одна из таких ОС не получила заметного распространения, а многие и вовсе не были закончены.

Уже упомянутый iS-DOS получил распространение в Санкт-Петербурге и Москве. Примерный функциональный аналог iS-DOS на TR-DOS диске – X-DOS – остался в пределах Кирова.


X-DOS и её командная строка

Многооконная система ДОМЕН ОС/Pink Floyd, также из Санкт-Петербурга, – не дожила до юзабельного состояния. В частности, жёсткие диски она не поддерживала, и в ней не было никаких средств разработки.


ДОМЕН ОС и её документация в HTML

Харьковская система DNA OS, в основном заточенная на копирование файлов, принесла определённую пользу хозяевам «винтов», но «софт под винт» в ней так и не появился.


DNA OS и её файловый менеджер

Не дожили до жизнеспособных релизов московская NK-DOS, братская NeOS, гродненская DOORS\AQUA и саранская ZX-OS/ZXRTK. Из многозадачных ОС ближе всего к пользователю подошли многооконные MythOS (Днепропетровск) и ChaOS (Таганрог), но и они закончили свою жизнь в исходниках — тоже без поддержки жёстких дисков и без средств разработки.


MythOS и её консоль


ChaOS и её хаос

Почему же было так много неудач?

Аппаратные требования для многозадачной операционной системы


Проблема всех ранних ОС для Спектрума была в том, что разработчики пытались обеспечить своему творению максимальную совместимость. Например, на iS-DOS – с машинами начиная с ZX Spectrum 48K (с дисководом или HDD), а на большинстве последующих систем – с ZX Spectrum 128K. Это накладывало неизгладимый отпечаток на распределение памяти.

Дело в том, что на 48K-машинах полное адресное пространство Z80 размером 65536 байт разделялось на 2 части: 48K ОЗУ (из которых 6912 байт отъедал экран, что оставляло 41 килобайт под всё остальное) и 16K ПЗУ Бейсика, от которого реальной пользы для ОС нет. В 128K дела обстояли лучше, но ненамного. Экран из адресного пространства Z80 там можно убрать (выбрав второй видеобуфер), но переключать страницы ОЗУ можно только в верхней четвертинке (с адреса 0xc000) адресного пространства. Остальные 32K ОЗУ не переключаются. А нижние 16K так и продолжают содержать ненужное для операционной системы ПЗУ. Конечно, фирменный 128K позволяет внешним устройствам (таким как LEC Memory Extension, DISCiPLE/+D, MB-02) подменять нижние 16K, а его потомки, начиная с +3, обычно имеют тот или иной встроенный порт для этого (чаще всего там доступна только одна страница ОЗУ), но половина адресуемой памяти всё равно не может меняться с переключением задач.

Представьте, что вы пишете текстовый или графический редактор под операционную систему для ZX Spectrum 128K. Очевидно, верхние 16K – слишком маленький объём для текста или иллюстрации (речь не о стандартных «экранах» в 6912 байт), и надо либо постоянно подгружать файл с диска (что медленно и неудобно), либо раскидать документ по страницам. Где же в этом случае будет располагаться код самого редактора, его переменные и стек? Не в верхних 16K ОЗУ, потому что там документ. Не в нижних 16K, потому что там, скорее всего, ПЗУ. Выходит, всем задачам придётся делить между собой один общий блок в 32K ОЗУ. Релоцируемые резиденты, разбитые, допустим, по 256 байт, вызывают процедуры из верхнего ОЗУ, отдельные резиденты – буферы для работы с данными, стек тоже ограничен 256 байтами… Это очень неудобно для разработчиков. Результат: под такие системы писали только сами авторы, да и у них хватало запала только на год-два, чего недостаточно даже для создания среды разработки.

Таким образом, для удобной многозадачной системы на Спектруме жизненно необходимо иметь переключаемые страницы ОЗУ в каждой из четвертинок (выбор именно четвертинок по 16К традиционен для Speccy) адресного пространства Z80. Спектрумовских схем, которые умеют это делать, немного: это малоизвестная «ZX-MMU» от fk0 (2000) и более-менее распространённая ATM-Turbo 2(+) (1992, 1993):


Из документации. Установленный бит 6 включает управление через порт #7ffd (ПЗУ TR-DOS автоматически подменяет ПЗУ 48 Бейсика при исполнении кода в #3dxx), в противном случае бит 7 просто включает заданную страницу ПЗУ. «ROM2» — бит 4 порта #7ffd, он работает всегда.

Многие авторы операционных систем полагали, что такое требование к подсистеме памяти – уметь переключать всё – сильно ограничит число пользователей, и не принимали его. В результате пользователей у них получалось примерно 0 – из-за отсутствия софта.

Разработка


Предыстория; что такое NedoPC


В 2002-2003 годах на просторах трёх континентов родилось движение NedoPC, которое кратко можно описать как… эмм… разработку компьютеров из подручных средств. И начали NedoPC с того, что другие на тот момент закончили – производить Спектрумы и устройства для них. А в качестве Спектрума взяли тот самый Turbo 2+ (1993) – потомок ATM-Turbo 2 (1992), который потомок ATM-Turbo (1991), который потомок Pentagon 128 (1990), известного в узких кругах как АТМ 128 (историю борьбы фирм в лихие 90-е можно прочитать в описании к Honey Commander’у). В своё время Turbo 2+ (к которому уже автоматически приклеилось обозначение ATM, как в прошлых версиях) замахивался чуть ли не на замену IBM PC ранних комплектаций – с HDD (потом и CD-ROM), аналогом EGA, XT-клавиатурой (потом и AT), COM-портом, ЦАП, АЦП (также игравшими роль модема) и играми «Принц Персии» и «Gobliiins», передранными абсолютно точно с PC-версии (не упоминаю весь софт, его много). Но часть остроумной схемы была упрятана в ПЛМ, из-за чего скопировать её мог мало кто. На просторах Украины раздавались слухи о замене ПЛМ на ПЗУ и о копировании отдельно контроллера HDD, но в общем и целом компьютер в 90-е встречался куда реже «Пентагона». К счастью, потом разработчики Turbo 2+ – фирма МикроАРТ – передали всю документацию в свободное пользование.

Практически сразу в орбиту NedoPC втянулось несколько разработчиков софта, и пошла речь об операционных системах. Иначе ответ на вопрос «куда нам плыть» не получался. Первым плодом тяжких раздумий в 2005 году была уже упомянутая система TASiS, ради которой были приобретены исходники iS-DOS.

Параллельно, в 2007 году, один из авторов этой статьи создал виртуального персонажа SMAN, который как раз и разрабатывал многозадачную операционную систему. И да, она тоже прошла через этап «резидентов в нижнем ОЗУ». Этот этап затянулся на годы, в 2016-2017 был даже написан компилятор Си-подобного языка NedoLang, влезающий в 48K (также компилирует под ARM Thumb). Гордиев узел был разрублен только с появлением графического редактора Scratch (2018).


Scratch и его меню

Выбор в 2018 году было совершить уже легко: совместимость с ATM-Turbo 2+ была доступна всем пользователям – если не на оригинальной железке и не на NedoPC’шных ZX Evo и Pentagon 2.666LE, то на ATM3 от Zorel’а или хотя бы в эмуляторе (Unreal Speccy, Xpeccy, ZXMAK2, Es.pectrum и др.).


Turbo 2+ (1993, но плата явно новее)


Pentagon 2.666LE (2009), весьма редкая машина


ZX Evolution (2009), можно купить в любой булочной


ATM3 (2017), достать можно только по знакомству или изготовить самому

С этого момента система получила название NedoOS и стала развиваться взрывообразно.

Надо отметить, что для сдерживания фантазий на первоначальном этапе этого взрыва система была построена в основном на командах, совместимых с CP/M и MSX-DOS. До сих пор список команд разбит на три раздела: совместимые с CP/M (сейчас их 13, их использование не рекомендуется из-за неудобной системы FCB), совместимые с MSX-DOS (их 11, там имя файла уже идёт текстом, а вместо структур FCB используются числа — хэндлы) и несовместимые (в основном нефайловые, их сейчас 48, но некоторые планируется выбросить).

Система разработки на текущий момент


Исходные тексты NedoOS всё ещё не адаптированы под имеющиеся в системе компиляторы (NedoLang и его ассемблер NedoAsm, Turbo Pascal и BDS C). Пока только 5 утилит компилируются внутренними инструментами. А основная часть пакета собирается на PC с помощью SjASMPlus (основной код) и Z80 IAR C (файловая система FatFs и некоторые утилиты).

Файлы размещаются на выделенном SVN-сервере и состоят из исходников, бинарного релиза и коллекции тулзов для сборки на PC.

Система собирается одной кнопкой (батник или Makefile – две системы сборки). Можно также одной кнопкой отдельно собрать один из таргетов (под HDD, SD-карту и т.п.) и сразу запустить эмулятор. Можно отдельно собрать каждую утилиту батником нижнего уровня. Две системы сборки получилось потому, что некоторые разработчики NedoOS сидят в Windows, а некоторые – в Linux.

Кроме компиляторов имеются также командный процессор cmd.com (может исполнять *.bat) и написанный с нуля интерпретатор NedoBasic с графическими возможностями.


NedoLang компилирует себя

Архитектура системы


Устройство ядра


Часть NedoOS, видимая программе пользователя, – это ряд вызовов в области памяти 0x0000..0x0038, так называемый керналь. Последний из этих вызовов – обработчик прерывания 50 Гц, а далее с 0x0080 следует командная строка с параметрами для программы. Пока ещё устройство керналя совместимо с CP/M (вызов через 0x0005), но мы потихоньку от этого отходим (CP/M-вызовы используются только в 4 программах из 58). Все системные вызовы организованы как макросы (программы используют модуль /src/_sdk/sys_h.asm с этими макросами и константами) и могут быть существенно изменены по мере развития ОС. Следствием этого является необходимость пересборки всей системы и прикладного софта при каких-либо изменениях в этих макросах – но, как мы видели, это делается одной кнопкой.

Внутренняя часть NedoOS спрятана в страницах ОЗУ и содержит:

  • обратные стороны вызовов керналя;
  • продолжение обработчика прерывания с планировщиком задач (шедулером);
  • системный обработчик прерывания, он без планировщика, зато вызывается всегда — читает клавиатуру, мышь и часы, по комбинации клавиш переключает «фокус» (см. ниже), выставляет палитру и видеорежим;
  • набор файловых и управляющих функций (BDOS), вызываемый через call 0x0005, как в CP/M и MSX-DOS;
  • драйверы блочных устройств (SD-карта на Z-Controller, SD-карта на NeoGS, IDE HDD, дискета, USB flash на плате ZXNetUSB);
  • драйвер клавиатуры (обычная 40-клавишная или PS/2-клавиатура ZX Evo);
  • драйвер мыши (Kempston mouse с колёсиком);
  • драйвер часов реального времени (по схеме Mr. Gluk), также система предоставляет время от начала работы в 50-герцовых квантах;
  • драйвер сетевой карты (Wiznet W5300 на ZXNetUSB);
  • файловую систему FatFs для FAT-16 и FAT-32;
  • файловую систему TRDOSFS для TR-DOS дискет и RAM-диска;
  • описатели смонтированных файловых систем;
  • описатели открытых файлов FatFs, открытых файлов TR-DOS и открытых очередей (пайпов);
  • описатели запущенных задач.

Все драйверы вкомпилированы в ядро, поэтому есть несколько разных «таргетов» сборки системы (ATM2, ATM2+HDD, ATM3, ZX Evo, Pentagon 2.666LE).

Обработчик прерываний, который располагается в пространстве пользователя, выглядит так:

        push af
        push bc
        push de
user_fdvalue6=$+1
        ld a,fd_system ;зависит от текущей страницы экрана
        out (0xfd),a ;уходим в контекст ядра (короткая адресация порта допустима на этом железе), там сохраняются прочие регистры и происходит переключение задач
;---------
;после выхода из контекста ядра:
;bc=memport0000
;d=pgmain
        out (c),d ;may switch this code page
curpg16k=$+1
        ld a,0
        ld b,memport4000/256
        out (c),a
curpg32klow=$+1
        ld a,0
        ld b,memport8000/256
        out (c),a
curpg32khigh=$+1
        ld a,0
        ld b,memportc000/256
        out (c),a
        pop de
        pop bc
        pop af
        ei
        ret

Переключение задач происходит по кругу (пропускаются замороженные задачи), приоритетов пока нет. Но задача idle выполняется только тогда, когда все остальные либо заморожены, либо в текущем кадре сами вызвали YIELD (системный макрос YIELD – отдать время системе до следующего прерывания, системный макрос YIELDKEEP – отдать время системе с возможностью возврата управления когда угодно).

Задача может сменить обработчик прерываний, можно с возвратом в него и произвольным кодом после него. Для этого есть определённые рекомендации и примеры.

Система терминалов


Задачи делятся на три типа:

  1. те, которым экран вообще не нужен,
  2. те, которым достаточно текстового терминала,
  3. графические – с собственным экраном требуемого разрешения и собственной палитрой.

В NedoOS, помимо понятия текущей задачи, имеется понятие «фокус» (доступ к клавиатуре, мыши и экрану). Фокус между задачами переключается вручную (по комбинации Symbol Shift+Enter) или автоматически (при включении графики, выключении графики или закрытии задачи).

Задачи типа (1) никогда не получают фокус. Более того, задачи типа (2) тоже не получают фокус, вместо них фокус имеет текстовый терминал, к которому они привязаны. А привязаны они через потоки stdin и stdout, по которым гуляют буквы, цифры, закорючки и коды терминала VT-100 с некоторыми дополнениями. Stdin и stdout реализованы через библиотеку stdio.asm как очереди (пайпы). В ядре очередь имеет буфер в 255 байт. Функции записи и чтения из очереди возвращают, сколько реально прочитано или записано (как и для файлов) и не закрыта ли очередь с другого конца. Эти потоки наследуются от отца к сыну. Но в конечном итоге отображается всё терминалом term.com, который можно скроллить и даже копипастить. Есть также сетевой Telnet-сервер netterm.com. Этот netterm.com можно и не запускать, а вот term.com запускается автоматически при старте системы.


Nedovigator в терминале, а терминал прокручивается колесом мыши

Для задач типа (3) речи о рисовании пикселей через систему, конечно, не идёт – для этого не хватает мегагерцев Z80 (у большинства пользователей их всего 14). Поэтому рисовать надо через память. А поскольку экранных областей на ATM всего две (как и на 128K), только одна задача может иметь собственные страницы экрана. Страницы экрана перехватываются при смене фокуса, а вместо них задаче-лузеру отдаётся фальшивый номер страницы – страница, которую можно просто портить. Когда задача получает фокус, ей приходит об этом отдельное сообщение как бы от клавиатуры, но не соответствующее ни одной реальной кнопке. Это позволяет задаче вовремя восстановить экран. Ещё задача может включить режим, когда система сама хранит за неё экран и восстанавливает его.

Командная строка


Функции командной строки реализует утилита cmd, которая автоматически запускается при запуске системы. Точнее, первая задача idle запускает term с параметрами cmd.com autoexec.bat. Это значит, что cmd выполнит указанный батник. Команды, прописанные там, выполняются по порядку. По умолчанию команды выполняются с ожиданием окончания, но если команда – это запуск программы, то перед ним можно поставить start – программа будет работать в фоновом режиме (только это не совместимо с концепцией наследования stdin и stdout – данные в очередях могут быть перемешаны).

После окончания операции, указанной в параметре (если параметр вообще был), cmd обычно завершается. Исключение оставлено только для autoexec.bat, чтобы после его окончания не остаться с разбитым корытом. Правда, в случае чего idle ожидает одновременного нажатия C+M+D и может перезапустить term с cmd.

Работа в командной строке напоминает MS-DOS. Можно перенаправить вывод запущенной операции в файл (например, dir > filename) или в другую программу (например, dir | more.com), можно перенаправить ввод (например, more.com < filename). Но передача по цепочке пока не поддержана.

Для более удобной работы с файлами используется командер Nedovigator (nv.com).


Котик, потому что Nedovigator вы уже видели

Размещение системы


Надо уточнить, что каждая файловая система у нас примонтирована к определённой букве, так что пути выглядят как m:/bin/filename.txt. Очереди имеют букву монтирования z:, но пока открываются без имени — связь между задачами идёт путём передачи номера (хэндла) очереди.

Чтобы избежать специализированных загрузчиков типа GRUB, NedoOS надеется на то, что в ПЗУ компьютера имеется возможность запуска хобетного файла (*.$C) с нужного устройства — например, в ZX Evo файловым браузером или по кнопке 5 в главном меню, а на Pentagon 2.666LE – через встроенный копировщик Fatall. В противном случае придётся грузить ОС с TR-DOS дискеты. Системные файлы располагаются в каталоге /bin системного диска, игры лежат в /nedogame. Дополнительные файлы игр обычно размещаются в подкаталоге, одноимённом игре: например, раскрашенная под NedoOS игра /nedogame/br.com (Чёрный Ворон) имеет также каталог /nedogame/br с графикой, музыкой и уровнями.


Цветной Ворон

Текущие возможности


Память: поддерживается до 4M ОЗУ (настраивается в системе сборки), память выдаётся задачам по запросу страницами по 16K, задачи могут и сами их возвращать в систему. Из-за отсутствия защиты памяти в железе всю память можно считать разделяемой. По умолчанию страницы выделяются с начала памяти, не считая нескольких системных страниц. Своп не поддерживается (он рассматривался на ранних этапах, но требует перенумерации страниц, что сильно снизит производительность обычных задач).

Многозадачность: вытесняющая (по прерыванию 50 Гц) и кооперативная; одновременно может быть запущено до 16 задач (одна из них – idle, её можно снять, но тогда YIELD не даёт гарантий); можно подставить свой плейер музыки в системный обработчик прерываний – будет выполняться в контексте ядра с тремя страницами пользователя (переключать их на лету пока нельзя). Задачи могут быть в замороженном состоянии (если они только что созданы, удаляются или ожидают потомка). Можно в cmd смотреть список задач, их активность и наличие графического режима, снимать с исполнения (при этом освобождаются их страницы, файловые записи FatFs и сетевые сокеты).

Файлы: можно одновременно открыть до 16 файлов FAT, 8 файлов TR-DOS и 8 очередей. Можно одновременно читать и писать несколько файлов (важно для компилятора) – даже на дискете! Можно считывать параметры файла, указатель на текущую позицию, менять эту позицию, создавать и переименовывать директории. Очереди предполагают две задачи-пользователя, их требуется открывать один раз (при создании), но закрывать дважды. Файловые операции выполняются в контексте ядра, в это время не работает планировщик задач, но работает системный обработчик музыки.

Работа с сетью: протоколы ICMP, TCP, UDP, одновременно до 8 сокетов. Имеются утилиты ping, time, telnet, netterm (Telnet-сервер), dmirc (IRC-клиент), dmftp (FTP-клиент) 3ws (Web-сервер для копирования и удалённого запуска файлов), NedoBrowser (текстовый браузер с возможностью отдельно смотреть картинки jpg, gif, png, bmp и svg — последние два формата с ограничениями; поддерживает протоколы http и gopher, https через прокси), wget (фоновая скачка файлов, запускается из браузера, умеет автоматически запускать просмотр графики и плейер музыки).


NedoBrowser что-то ищет в Интернете

Работа с архивами: .tar и .rar доступны на чтение и запись (ZXRar – урезанный аналог Rar 2.x под DOS — без ряда кодов, solid архивов, мультимедийного формата и шифрования, ZXUnRar поддерживает все коды и solid архивы, но тоже не поддерживает мультимедию и шифрование), .gz и .zip только на чтение. Пока всё только через утилиты командной строки.

Типы документов: файловые ассоциации прописаны для встроенного командера Nedovigator в файле nv.ext. Сейчас этот файл выглядит так:

bmp:scratch.com
bat:cmd.com
txt,new,ext,ini,nfo,diz:texted.com
gif,jpg,png,htm,svg:browser.com
tfc,pt2,pt3,mt3,m  :player.com (pt3 можно редактировать специальной версией Pro Tracker под NedoOS)
bas:basic.com
zip,gz :pkunzip.com
trd,scl,fdi,tap:dmm.com (программы TR-DOS и ленточные — они запускаются на ZX Evo путём монтирования образа, их можно переключать, сохранять и выключать по кнопке Magic; то есть можно, например, играть в игру и периодически переключаться и писать описание)
16c,scr,fnt,img,3  ,888,y  ,+  ,-  ,plc,mc ,mcx,grf,ch$,mg1,mg2,mg4,mg8,rm ,mlt:view.com
mod:modplay.com
tar:tar.com
sna,b  ,z80:nmisvc.com
rar:unrar.com

Имеется также с десяток игр, в том числе эмулятор «Супер Марио» (для работы требуется дамп картриджа), раскрашенный «Eric and the Floaters», частичный порт «Бесконечного лета» и сетевой Snake.

Планы


  • Расширение функционала батников (уже передаются параметры)
  • IDE и self-hosting
  • Слои в графическом редакторе
  • ...

Заключение


На текущий момент в NedoOS реализован весь нужный костяк функций, так что при наличии нужного железа системой удобнее пользоваться, чем не пользоваться.

Но впереди ещё много работы. Идеал тем ближе, чем больше разработчиков подключится к проекту.


В основном разработчики NedoOS обитают в IRC-канале #mhm на irc.forestnet.org (также доступно через http://chat.forestnet.org/). Существует вечерний Twitch-каналзеркалом на YouTube). С сайта NedoOS можно скачать стабильную версию и свежие исходники.

Теги:




Комментарии (56):

  1. AADogov
    /#22117852 / +3

    Очень круто работа колоссальная!

    Испытываю какой-то трепет перед этим компьютером…
    Меня всегда интересовало может ли такой слабый ПК как ZXS выйти в интернет.
    Вопрос не по теме статьи, но хочется узнать, как в ZXS реализована работа с сетевой картой, какой сетевой контролер используется, как подключается как взаимодействует с процессором.

    • Sdima1357
      /#22117930 / +1

      Вроде wiznet w5100 в таких везде. Там socket-ы внутри карты. Я через него подключаю. SPI или TTY или параллельный вот спек www.sparkfun.com/datasheets/DevTools/Arduino/W5100_Datasheet_v1_1_6.pdf
      Можно w5500. Они копеечные. Посмотрите на али «W5500 Ethernet Network Modules For Arduino» ~2$

      • AADogov
        /#22120400 / +1

        w5100 это не спортивно, она на прядок мощнее Z80 и всей электроники в этом компьютере.
        Я в свою молодость думал в сторону переделанного и перепрошитого модема, подключённого магнитофонному входу.

        • mpa4b
          /#22120850

          Можно подумать, что модем со всеми своими DSP не мощнее Z80 на 3.5 МГц...

        • corvair
          /#22124708

          Зато не будет "бутылочным горлышком" для и без того маломощной системы).

    • mpa4b
      /#22118456 / +1

      Там Wiznet W5300, который работает, в отличие от W5100, сразу на параллельной 8-битной шине процессора Z80.

      • Sdima1357
        /#22118548

        W5300 если покупать готовый модуль, будет сильно дороже. Мне весь Спектрум за эти деньги вышел. А если взять только чип, то обвязка выйдет непростая. А w5100 и w5500 в готовых модулях со всей обвязкой на Али сильно дешевле отдельного чипа на digikey

        • mpa4b
          /#22118586

          Ну всей специфичной обвязки у W5300 — это RJ45 разъём с трансформатором внутри да кварц. В карточке ZXNetUSB стоит еще USB-контролер SL811 и адаптер шины на EPM3128, так что проблем с шиной конкретно W5300 нет.

          • Sdima1357
            /#22118624

            Не очень понятно почему, все равно стоит FPGA, а w5300 это $8 плюс кварц, трансформатор и разъем. А модуль w5500 со всем барахлом $2.5.
            Видимо причины исторические

            • mpa4b
              /#22118700

              1. Это не FPGA, а CPLD. Среди полезных характеристик — 5v tolerant IO (можно вешать прям на 5-вольтовую шину ZX), конфигурация в flash на кристалле, дешевизна (на Али).


              2. W5500 имеет SPI-интерфейс, как его подключать к шине ZX? Всё равно была бы CPLD, как минимум для реализации контроллера SPI. Кроме того, работа через единственный байтовый стрим (будь это serial как в ESP8266 или SPI как в W5500) не способствует упрощению драйвера — в противоположность работе с множеством регистров и буферов W5300.


              3. суммарная себестоимость собранной платы ZXNetUSB — около 1000 рублей, по крайней мере такую цифру озвучивали разработчики.


              • Sdima1357
                /#22118736

                Я не об этом FPGA. Я о том что на основной плате, альтера, которое изображает периферию и контроллер дисплея для z80. Обслуживание SPI и эмуляция любого удобного для z80 параллельного интерфейса это пара десятков строк.
                PS вопрос снимаю, сам понял. совместимость с разными платами.

                • mpa4b
                  /#22118770

                  Не всё так просто. Плату ZX Evo с FPGA и сетевушку ZXNetUSB разделяет ~10 лет, кроме того, на слоты не выведено ничего, кроме ZX-Bus. Выводить что-то ещё значило бы рисковать совместимостью с уже существующими картами расширения ZX-Bus. Кроме того, ног FPGA на материнской плате и так сильно не хватает. Ну и наконец, 'эмуляция любого удобного параллельного интерфейса' либо так и сохранит единый байтовый стрим, либо окажется сильно сложнее 'пары десятков строк'.

                  • Sdima1357
                    /#22118854

                    Я так и не понял, это open source под какой либо лицензией или закрытый проект? Хотел попробовать садаптировать к своему эмулятору на stm32f407-411 (в моем профиле линк на гитхаб), но так и не понял как скачать исходники. Ну если закрытый, то вопрос снимается. Ага нашел, перелез на комп с телефона. Спасибо.

                    • mpa4b
                      /#22118934 / +1

                      По-видимому автор не очень заморачивался с лицензиями :) Но исходный код да, весь открыт.
                      Вот тут вроде можно архив скачать: http://nedoos.ru/svn/listing.php?repname=NedoOS


                      Интересно, есть ли ссылка для скачки напрямую клиентом svn ?

    • Dimkama
      /#22118676

      W5300 можно "юзать" двумя способами. Либо через порты, в этом случае регистры поделены на группы по 64 регистра(сделано для удобства, т.к. реги сокетов тоже группами по 64), одним портом выбираем группу, вторым портом собственно читаем пишем реги(старшие биты адреса выбирают регистр).
      Второй вариант так называемый меморимаппинг. Регистры проецируются в адресное пространство z80, т.е. подменяют пзу. В этом случае работа с регами едёт как с озу.
      В недоос используется первый вариант. Но он несколько"тормозной", поэтому в планах перейти на второй вариант.

    • ALexhha
      /#22120692

      Меня всегда интересовало может ли такой слабый ПК как ZXS выйти в интернет.
      у этих ребят вроде точно есть — www.kickstarter.com/projects/spectrumnext/zx-spectrum-next-issue-2/description

      • NedoPC
        /#22141812

        У них скорее «псевдоретро» с виртуальными девайсами на VHDL, которые ни к одной модели Спектрума подключить нельзя. Там даже в процессоре дополнительные команды. Таких проектов много, у каждого свой несовместимый софт, но только один такой проект вышел на кикстартер. Разработчиков такие проекты обычно переманивают со Спектрума, где их и так мало.

    • Alexey_Volchanskiy
      /#22141806

      Комп времен моей молодости, вот только к чему он сейчас? Энтузиастам ура, но какая выгода? Все дурачки обучаются на Питоньчике, а на 48К даже компилятор Си запускался в урезанной версии и с минимумом памяти. Это реклама проекта, который видел на стартапе, вроде за немыслимые $500? Умер Спектрум 25 лет назад,… попытки оживить труп.

      • NedoPC
        /#22141852

        25 лет назад был 1995 год, только-только появились винчестеры, сети, демокомпо и нормальные среды разработки. Может быть, вы имеете в виду, что Спектрум умер как коммерческая машина? Но он всё-таки больше машина для инди-творчества, чем для заработка. К людям, которые требуют $500, NedoPC не имеет отношения. Когда мы производили ZX Evolution, цена была 3850 рублей. Это было много лет назад, сейчас производит другой человек, по другим ценам, но всё равно это не сотни долларов.

  2. axe_chita
    /#22118572

    Спасибо, очень интересно. Спектруму конечно сильно не повезло, что изначально в его архитектуру не была включена возможность полностью заполнить адресное пространство процессора ОЗУ, ну и конечно отсутствие простейшего memory mapper-а. Но читать о разработке ОС на Zilog Z80 очень увлекательно. Спасибо ещё раз

    • balamutang
      /#22118878

      Спектрум машина 80х, там с портами вообще катастрофа, адресовалось всего 8портов, по числу битов в нижнем регистре адреса порта. С памятью ещё повезло что не намудрили и осталось все 64к доступно. Все проблемы начались ещё у спектрум128, когда начали тащить туда совместимость с 48к

      • axe_chita
        /#22119368

        Спектрум машина 80х, там с портами вообще катастрофа, адресовалось всего 8портов, по числу битов в нижнем регистре адреса порта.
        Извиняюсь конечно, но разве восьми бит не хватит на 256 портов ввода вывода? Или в спектруме, запамятовал за давностью лет, совсем неполное декодирование портов? И опять же в Zilog Z80 были команды in/out (bc),a с 16битным портом В/В?
        С памятью ещё повезло что не намудрили и осталось все 64к доступно.
        Именно с ней и не повезло, ПЗУшка в нижних 16кб не отключается, еслибы она отключалась, на спектрум со свистом (почти со свистом) залетел CP/M. Там бы была только одна проблема — 32 символа в строке, что для софта CP|/M было очень мало.
        Все проблемы начались ещё у спектрум128, когда начали тащить туда совместимость с 48к
        все проблемы Спектрума начались с того что Клайв Синклер хотел на нем по быстрому срубить денег, и соответственно не сильно заморачивался с архитектурой спектрума (и так сойдет для сельской местности)

        • balamutang
          /#22119958 / +1

          все проблемы Спектрума начались с того что Клайв Синклер хотел на нем по быстрому срубить денег, и соответственно не сильно заморачивался с архитектурой спектрума (и так сойдет для сельской местности)

          Ну можно и так конечно сказать, но основная идея была сделать доступный массам комп по цене 200 фунтов (и получить на этом прибыль конечно). Отсюда и растут все ограничения: Как внешние (телек вместо монитора и магнитофон вместо дисковода), так и архитектурные (выброшено все что можно было выбросить).
          В некотором роде он как раз заморочился с архитектурой и спектрум 48к это уже набор аппаратных хаков, с помощью которых он сэкономил на запчастях.
          Именно с ней и не повезло, ПЗУшка в нижних 16кб не отключается, еслибы она отключалась, на спектрум со свистом (почти со свистом) залетел CP/M. Там бы была только одна проблема — 32 символа в строке, что для софта CP|/M было очень мало.
          Дык та же проблема: не было видеоконтроллера с знакогенератором, вместо него на экран просто отображался кусок ОЗУ, которым нельзя было раскидываться, поэтому экран стал очень куцым. Да и качество телека тоже не фонтан, все равно это не монитор чтоб делать от края до края рамки, тк от изменения яркости уползают размеры на кинескопе и тд.
          Наверно про нижнюю память он не подумал, но там в 48К вообще проблем хватало, начиная с ошибки в вызове немаскируемого прерывания. Да и первые спектрумы были вообще с 16К ОЗУ, память была дорогая, кто мог подумать что у нее еще и какие-то страницы будут потому что в 64к всё не помещается.
          Извиняюсь конечно, но разве восьми бит не хватит на 256 портов ввода вывода? Или в спектруме, запамятовал за давностью лет, совсем неполное декодирование портов? И опять же в Zilog Z80 были команды in/out (bc),a с 16битным портом В/В?
          Это опять же следствие экономии, не было дешифратора адреса порта в спектруме, просто каждая линия адреса была напрямую соединена с CS микросхемы соотв порта, соответственно получалось всего 8 портов, причем на некоторых портах уже что-то висело (магнитофон, джойстики) Бонусом можно было писать одновременно в несколько портов, но врядли это кому нибудь было нужно.
          Порт В насколько помню вообще использовался для матрицы клавиатуры и дергался по прерыванию 50 раз в секунду (5 линий порта х 8 линий шины данных — матрица клавиатуры), врядли им возможно было пользоваться, не меняя ROM.

          В общем благодаря экономии на всем получился дешевый комп, который пошел в массы. А когда он стал массовым, под него написали кучу софта и начали упираться в ограничения железа — все стали ломать голову над апгрейдом «как нам взлететь с этой фигней» и не поломать совместимость со старым софтом.
          128К был работой над ошибками и стал уже частично несовместимым.
          И в итоге стали появляться монстры вроде ATM Turbo, которые при перезагрузке аппаратно переконфигурировались либо в спектрумы либо в нормальные CP/M машины без всей этой экономии.

          • mpa4b
            /#22121068

            Спектрум не только оказался дешёвым (ещё более дешёвыми были например ZX80 и ZX81) но и ещё практически случайно оказался хорошо подходящим для динамических игр. Этому поспособствовали довольно быстрый процессор вместе с довольно небольшой видеопамятью. Стало получаться чисто процессором, без аппаратных погремушек вроде скроллов и спрайтов (которых в Спектруме нет), достаточно быстро ворочать большим кол-вом графики в играх.

            • balamutang
              /#22121598

              ZX80 и ZX81 c 1К оперативки и отключающимся экраном на время выполнения программы это скорее программируемые калькуляторы с бейсиком чем компьютеры.

          • axe_chita
            /#22123254

            Ну можно и так конечно сказать, но основная идея была сделать доступный массам комп по цене 200 фунтов (и получить на этом прибыль конечно). Отсюда и растут все ограничения: Как внешние (телек вместо монитора и магнитофон вместо дисковода), так и архитектурные (выброшено все что можно было выбросить).
            Нет, первая и единственная цель Клайва была заработать денег. А что это усилитель хифи, калькулятор или ПМК ZX80|81 было без разницы.
            А архитектуру Синклер в спектрум потащил из ZX80/81, и всячески препятствовал её улучшению, т.к. это требовало дополнительных средств. И телевизор и магнитофон в начале 80-х вообще де факто были стандартом периферии домашнего компьютера, а вот отдельный монитор и дисковод скажем были роскошью не доступной многим.
            Проблема качественного изображения в ZX Spectrum
            Проблема качественного изображения в ZX Spectrum до конца решена не была. Пользователи жаловались на проблемы с цветом и качеством картинки. Многое зависело и от модели телевизора. В итоге это вылилось в появление RGB-выхода у модели ZX Spectrum 128. Стоит сказать, что видеовыход «без потери качества» был предусмотрен еще в самой первой модели ZX Spectrum, однако из-за экономии он был реализован нестандартно. Вместо сигнала RGB на выводы краевого разъема (Edge connector) были разведены цветоразностные и яркостный сигналы. Это делало невозможным подключение к RGB-входу телевизора посредством стандартного шнура-переходника.

            Потеря качества изображения из-за кодирования в PAL затрудняла работу с графикой и цветным текстом. Однако у «медали» была и оборотная сторона — размытость картинки часто скрывала недостатки слабой графики.

    • troosh
      /#22121306

      Рисунок 3 про управление памятью это наверняка шок для несведущих (плюс там какие-то «теневые порты», а-а-а!..). Тем кто прошел этот уровень, контрольный выстрел: обработчик прерываний с модификацией кода (это ещё хорошо пока нет кешей).

      А так статья годная, спасибо! Может быть вступление про историю клонов вообще стоило бы выделить в отдельную статью.

      • axe_chita
        /#22123268

        Я думаю, «спектрумы» появившиеся на просторах пост-советского пространства надо называть не «клонами», а «ремейками» поскольку они были изготовлены методом реверс-инжиниринга, а не повторяют оригинал тютелька в тютельку.

  3. vazhnov
    /#22118948 / +1

    Жаль что лицензия несвободная (точнее, не нашёл упоминания, что она свободная, в исходниках тоже тишина).

  4. spanasik
    /#22119082

    За статью спасибо!

    Вопрос, ZX по железу (количество микросхем) уже получается сложнее, чем habr.com/ru/company/selectel/blog/519374?

    • axe_chita
      /#22123378

      Насколько я помню в схеме «Специалиста» микросхем меньше (38) чем в схемах советских «римейков» спектрума.

  5. InterceptorTSK
    /#22119402

    Синклер, приди! Взываю!

  6. johndow
    /#22119548

    Наверное, почти каждый, кто всерьёз упарывался по программированию для Спектрума пробовал писать свою ОС с блэкджеком и шлюхами многозадачность, поддержкой жёсткого диска и графического интерфейса.
    Мы тоже с друзьями в старших классах не стали исключением. Товарищ писал ядро многозадачности и графический интерфейс, а я дисковую подсистему, свою ни с чем несовместимую уникальную ФС (потом мне говорили, что я изобрёл примитивную NTFS), драйвер жёсткого диска.
    Эх, где мои семнадцать лет :)

  7. elmal
    /#22119612

    Выглядит конечно круто, но тут больше идет про АТМ совместимые компьютеры, чем Spectrum совместимые. В свое время конечно ATM Turbo для меня была мечта и машинка выглядела супер круто. А сейчас я понимаю что настоящая Spectrum OS должна иметь возможность как то запуститься на оригинальном 128 килобайтной машине, а то и 48. Возможно с дополнительной периферией, подключаемой через порт расширения, туда можно как раз и дополнительную память впихнуть, и контроллеры SSD, а то и видеокарту с поддержкой расширенных режимов, цветов, аппаратным скроллингом, а то и вообще поддержкой 3D. А для NedoOS ИМХО имеет смысл еще сделать чтобы она и на Amstrad CPC могла запуститься, было бы круто если бы была возможность за счет OS объединить 2 платформы.

    • mpa4b
      /#22120882

      Ну так вроде в статье и говорится, какие нерешаемые проблемы и серьёзные ограничения возникают, если писать ось под голый ZX 48k или 128k.


      NedoOS ИМХО имеет смысл еще сделать чтобы она и на Amstrad CPC могла запуститься

      Там тоже во все 4 промежутка адресов Z80 можно любые странички ОЗУ включать?
      Ну и ещё, как я понял, графические приложения в NedoOS работают напрямую с видеопамятью, и как следствие, их придётся переделывать под Амстрад.

  8. CoolCmd
    /#22119798

    ха, вчера смотрел трансляцию на твиче, и тут эта статья… :) как тебе удается разобраться в этой ассемблерной лапше? как я понял, часть исходников — дизассемблированные чужие проги.

  9. foxweb
    /#22119944 / +1

    Проект интересный и увлекательный. Особенно удивила многозадачность и многопоточность — без чего нормальная ОС невозможна. Пока разработка не переедет на GitHub, приглашать сторонних разработчиков и мечтать о развитии проекта по крайней мере странно. Всякий раз, когда теме перехода с SVN поднимается в коментах, следует ответ «идите нах, нам и так нормально».

  10. vvbob
    /#22119952 / +1

    Скорее всего сейчас огребу кучу минусов, но все-же напишу.
    В свое время тоже тащился от Спектрума, развлекался с программированием на него, немного играл, комп оставил очень приятные и ностальгические воспоминания. Но вот как-то вся эта движуха с написанием операционок под него, сегодня почему-то первую аналогию вызывает с анекдотом о том что «пора уже закопать стюардессу». Как-то это уже очень странное развлечение, пытаться сделать из древнего восьмибитного компьютера что-то современное, это все равно что на детский трехколесный велосипед прикручивать пятилитровый V8, хотя второе даже забавнее :)

    • balamutang
      /#22120014

      Ну это такое хобби, кто-то на гитаре играет, кто-то теплые лампы слушает, кто-то демки в 64к втискивает, кто-то с 8-битным процессором возится.
      Тут главное удовольствие от процесса, а не быстрого получения результата.
      Нирвану можно на телефоне включить, а можно самому сыграть — примерно такая же разница.
      А нынешним временам недописи это уже 775 сокет и старше получаются: ставишь XP и тоже прикручиваешь костыли чтоб в интернет попасть и чтоб SSD подключить

      • vvbob
        /#22120150

        Да я то не против, вполне понимаю этих энтузиастов, бывает что хочется сделать что-то совершенно нерациональное и бесполезное, просто «потому что могу». Ну и незакрытые гештальты тоже играют роль, помню как местал в свое время о том что-бы купить для своего Спекки нормальный отдельный монитор вместо телевизора и припаять дисковод. Не сложилось — ушел в армию, а после нее уже стало не до игр с устаревшим уже на тот момент компьютером.

        • Photocor
          /#22120604

          Тут еще элемент реконструкторства. Да, люди вокруг уже не греются у костра, не машут мечами и почти не скачут на лошадях. Но некоторым все это а) в кайф б) позволяет прочувствовать, как оно было во времена без электричества и ДВС.

          • NedoPC
            /#22120648

            Тут ещё элемент достижения полного контроля над компьютером. И в очередной раз доказательство, что независимую ОС (не только ядро, а именно полноценную ОС со средами разработки) написать можно, причём без миллиардного финансирования.

            • Photocor
              /#22120724

              Скажем шире: осознанно или нет, но главная мечта каждого человека — делать то, что ему больше всего по душе. У меня нет компьютерных познаний уровня разработчика, поэтому я могу как максимум коллекционировать готовое и на нем «спектрумировать»/«IBM XT'ровать» и т.д. (скачивая нужное из сети). Всегда завидую людям, которые в силу глубины познаний и опыта умеют ставить и решать «задачи 80го уровня». Их положительное подкрепление от достигнутых успехов сильнее и приятнее моего, это даже нейробиология доказала.

          • balamutang
            /#22120682

            Ну я не зря упомянул демосцену, здесь как раз примерно тот же азарт «впихнуть невпихуемое» в 8бит/64к.

        • engine9
          /#22121408

          Интересно, какой процент людей (из молодых) пришли в эти проекты не благодаря ностальгии, а из за любви к истории ИТ?

    • Sdima1357
      /#22120060

      Стюардесса была такая красотка, а мы были такие молодые.

  11. Mordov
    /#22120738

    NedoOS — какое циничное название!

  12. /#22124146

    Когда вы допишите поддержку многопроцессорности? Мне уже надело ждать, когда в моем АТМ5++ все 4 Z80 будут задействованы!!!)))
    А вообще да, начать нужно с хорошо масштабируемой, открытой и универсальной архитектуры железа (дада, и N Z80 можно было доставить в систему). Иначе опять упретесь в убогость железа и все остановиться ввиду отсутствия невозможности прогресса. Хотя простота, имхо, должно быть на первом месте для низкого порога вхождения.

  13. volchenkodmitriy
    /#22126114

    Здравствуйте! Вот не понимаю я идеи прокачки железа спектрума. Сам недавно восстановил Ленинград и кайфую от новых игр, таких как Тьма, согласен что и под версию 128 к много хорошего написано и спектрум жив. А вот зачем делать новое железо — ведь его софт не запустят обладатели старых спеков, а в актуальном мире они все равно безнадежно устарели. Может делать платы расширения еще имеет смысл, но не более того.

    • NedoPC
      /#22126158 / +1

      128K (1985) — это промежуточная модель. В России она была популярна в 1994-1999 годах (причём только в связке с Beta 128 Disk Interface), а потом эти компьютеры массово переделывались на РУ7 и SIMM или заменялись на другие модели. В прессе можно проследить статистику реально используемых машин за разные годы:

      Москва (ZX-Net), апрель 1996 — 79 шт. (61%) 128K, 39 шт. (30%) 256K и более www.zxpress.ru/article.php?id=2073
      в основном Москва (ZX-Net), май 1997 — 49 шт. (74%) 128K, 17 шт. (26%) 256K и более www.zxpress.ru/article.php?id=1322
      Санкт-Петербург (покупатели ZX-Format), июль 1997 — 31% 128K, 49% 256K и более www.zxpress.ru/article.php?id=9885
      ZX.SPECTRUM, июль 1997 — 9 шт. (25%) 128K, 24 шт. (67%) 256K и более www.zxpress.ru/article.php?id=4745
      Гомель, декабрь 1997 — 21 шт. (70%) 128K, 6 шт. (20%) 256K и более www.zxpress.ru/article.php?id=3258
      Краснодар, июнь 1998 — 9 шт. (64%) 128K, 2 шт. (14%) 256K и более www.zxpress.ru/article.php?id=9119
      ZXNet, январь 1999 — 42% 128K, 48% 256K и более www.zxpress.ru/article.php?id=7181
      Омск, январь 1999 — 3 шт. (25%) 128K, 6 шт. (50%) 512K и более www.zxpress.ru/article.php?id=11366
      СНГ, июль 2000 — 9 шт. (15%) 128K, 52 шт. (85%) 256K и более www.zxpress.ru/article.php?id=4417
      Ростов-на-Дону, июль 2001 — 50% 128K, остальные 256K и более (сумма не сходится) www.zxpress.ru/article.php?id=7322
      Ижевск, июль 2001 — 100% 512K и более www.zxpress.ru/article.php?id=9429

      Другой показатель — демопати:

      На Demobit'1996 две демы поддерживают DAC 8bit (Covox).
      На Doxycon 1998 показывалась дема First Association с мультилоадером под MB02.
      На CC'999 из 4 дем 2 были с General Sound (одна даже требовала 512K).
      На СС'999 был конкурс музыки под General Sound (совмещённый с Covox/SounDrive).
      На CC'999 демы должны были работать на Scorpion, показывали на GMX.
      На CC 2000 дема от Brainwave поддерживает Covox.
      На CC 2001 дему от Placebo крутили в турбо-режиме.
      На «Твоей игре 1» (2002) одна из работ поддерживала турбо-режим для дополнительных эффектов.
      На Paradox 2002 был конкурс Covox/SounDrive музыки.
      На Assembly 2003 показывалась дема Alienate с музыкой под General Sound.
      На Cafe 2003 показывали видео с CD-ROM на SMUC.
      На CC 2004 при показе игр использовался турбо-режим.
      На «Твоей игре 2» (2004-2005) одна из работ требовала 256К.
      На DiHalt 2006 появился конкурс музыки под TurboSound (впоследствии объединён с AY).
      На CC 2006 показывали видео с CD-ROM на ATM2. А ещё там участвовала игра под ATM2/Pentagon 1024.
      На DiHalt 2007 появился конкурс музыки под TurboSound FM.
      ASCiI'2008 Demoparty Invitation требовала Pentagon 1024SL v2.x + General Sound.
      На DiHalt 2008 оба первых места — под Pentagon 1024.
      На CC 2008 второе место — под ATM.
      На CC 2009 первое место — под Pentagon 1024.
      На Hackers Top 2010AE проводился конкурс «ZX графика (16c)» (цвет на точку).
      Как минимум с 2010 года на Forever все работы показываются с DivIDE. Именно это позволило HOOY-PROGRAM выпустить серию 48K трекмо с подгрузкой.
      На DiHalt 2011 второе место — под ATM2.
      На ZX AAA'2013 первое место использовало TurboSound, а второе — ATM2 + General Sound.
      На DiHalt'2013 было две работы под ATM2.
      На CC'2013 и 3BM OpenAir'2013 были работы под General Sound.
      На «Твоей игре 5» (2013-2014) было четыре работы под ATM2 и три работы под ATM3.
      На DiHalt'2014 Lite было три работы под ATM2, две под General Sound, ещё одна использовала TurboSound.
      На CC'2014 и DiHalt'2014 были работы под ATM2.
      На IVP 2014 проводился конкурс ATM2/ZX Evo gfx compo (цвет на точку).
      На Riverwash'2014 и JHCon 2014 были работы под Timex.
      На Zapilyator Compo'2014 одна из работ требовала 1024K, другая — General Sound + TurboSound FM.
      На DiHalt Lite'2015 второе место — под ATM2.
      На DiHalt'2016 демонстрировалась игра Nomad под ATM2.
      На Multimatograf'2017 первое место поддерживает Covox и General Sound.

      Нет никакого смысла закапывать ZX Spectrum в 1985 год, кроме уничтожения его как самобытной платформы.

      • volchenkodmitriy
        /#22127036

        У меня нет конечно такой статистики. Да я и уверен что и нет суммарно выпущенного количества спектрумов разных моделей из-за того что это были клоны часто выпускаемые кустарно. Но я живу в глубоком убеждении что наибольшее их количество было выпущено в конце 80х — первой половине 90х и речь идет о миллионах экземпляров только на просторах бывшего СССР. Это значит что ПО написанное под них сейчас имеет потенциально миллионную аудиторию потребителей.

        • NedoPC
          /#22127884

          Я писал и поддерживал много системного ПО под 128K (ACEdit, ZXRar, ZXUnRar, Chip Tracker, MCX Viewer, Pro Tracker и др.). Отзывы пользователей прекратились примерно в 2006 году.
          128K машины не выпускались миллионными тиражами. Тут может идти речь о недоразумении, основанном на воспоминаниях людей, которые ушли со Спектрума ещё в 90-е. Библиотека ПО для «расширенных Спектрумов» включает более 1000 наименований, в том числе, по последним подсчётам, 152 игры (речь не о джойстиках и принтерах, а о расширенной памяти, графике и звуке). Поскольку это зоопарк, уточню, что софт под ATM-Turbo составляет примерно половину, т.е. около 500 программ (часть из них также поддерживает Pentagon 512/1024 с дополнительными девайсами, также под эти Пентагоны есть и свой софт). Кстати, в 2000-е практически единственными моделями Speccy, которые выпускались не единичными тиражами, были ATM-Turbo 2+ и Pentagon 1024SL 2.x. Упомянутые в статье ZX Evo и Pentagon 2.666LE объединяют обе программные модели одновременно, поэтому там работает примерно 800 программ из 1000.

          • volchenkodmitriy
            /#22129376

            Про версию 128 к мне сложно спорить т.к. она ни у кого из знакомых не была, хотя в живую я ее в свое время видел, и видел не в Москве. А вот 48к это действительно платформа была сверхпопулярная, только у нас было 2 таких, были и у знакомых. Опять же это не про Москву или Питер. Другое дело — какую ОС или периферию можно к ним прикрутить? Однако игры пишут и пример тому Valley of Rain. Было очень приятно запустить игру 2019 года на стареньком Ленинграде, посмотреть ее шикарные заставки, прекрасную графику, удивиться тому — на что еще способен этот старичок, в общем поиграл с удовольствием.

  14. axe_chita
    /#22131958

    Давайте к списку операционных систем на ZX Spectrum добавим и FUZIX который пилит Алан Кокс (форк UZIX)
    Готовые образы лежат тут.