Víceúlohový operační systém NedoOS

Эта ОС происходит из России и работает на компьютерах, совместимых с ZX Spectrum: ATM Turbo 2+, ATM Turbo 3, Pentagon 2.666LE и ZX Evolution, которые нашли путь и к пользователям в ЧР и Словакии.

Примечание: я сам систему использую на ZX EVO, так что следующая информация касается её использования с этим компьютером. Ещё нужно добавить, что во время игр с NedoOS у меня некорректно работала система монтирования TRD-образов и запуска TAP/SNA; у меня был «ZXEvoTS&BASE 16.06.2020 beta», однако после обновления FPGA новейшей версией Baseconf NedoOS заработал без проблем.

NedoOS разрабатывается с 2018 года (хотя первые идеи на него восходят ещё к 2007-му). Имеет открытый исходный код, определённой лицензии нет, но о вкладах или портировании следует договариваться с главным сопровождающим и программистом — Дмитрием Михайловичем Быстровым по прозвищу Alone Coder. A.C. известен и разработкой других программ, демо и игр для ZX Spectrum, которые умеют выжать из платформы Zilog Z80 максимум; наугад, например, 3d-движки: BORSCH Atomic Quake (2023), Wolfenstein 2004 и т. д. Другие соавторы — DimкаM, добавивший поддержку сетей, и Savelij13 — дисковый подсистему, и многие другие.

Система по-прежнему активно развивается, и в её SVN-репозитории почти каждую неделю прибывает новый код.

Свойства системы

  • Система позволяет одновременно обслуживать до 16 процессов, из которых один выполняется и имеет доступ к IO-устройствам и выводу на терминал.
  • Поддерживает дискеты TR-DOS, SD-карту, IDE HDD (FAT12/16 или FAT32 с поддержкой длинных имён).
  • Одновременно может быть открыто до 8 файлов на TR-DOS, 8 на FAT и до 8 коммуникационных труб (pipes) между процессами.
  • Сеть возможна с дополнительной картой ZXNETUSB.
  • Рекомендуется и звуковая карта General Sound, NeoGS или TurboSound FM.
  • Система поддерживает Kempston mouse с колёсиком.
  • Часы реального времени (RTC).
  • Поддерживаемые графические режимы: помимо стандартного 256×192 поддерживаются и расширенные режимы на ZX EVO, реализованные в Baseconf (совместимые с ATM): 640×200 hardware multicolor 8×1, 320×200 с 16 цветами и 80×25 текстовый режим.

Как работает многозадачность на одноядерном Z80? Система умеет вытесняющую многозадачность, но только для программ, нативно написанных для NedoOS: при запуске они создают видимость параллельного выполнения, и менеджер процессов переключает между ними каждые 20 ms. Программы для ZX Spectrum и TR-DOS запускаются в кооперативной многозадачности, когда переключение задач управляет пользователь: вызовом NMI (нажатием PrintScreen) программа приостанавливается, и сочетанием Правый Shift + Enter можно переключиться в другой процесс — как опишем далее.

Установка

Скачайте с http://nedoos.ru/ файл release.zip и распакуйте его в корень SD-карты. У системы нет традиционного версионирования; пакет содержит ежедневный build (на момент написания этой статьи — от 4 ноября 2025). Примечание: сайт и документация преимущественно на русском (кириллица в исходниках/текстах в кодировке CP866), но надеюсь, это вас не отпугнёт.

В корне SD-карты (M:) находятся каталоги M:/bin, M:/doc, M:/download, M:/ini, M:/nedodemo и M:/nedogame и файл sd_card.$C (загрузчик системы). Система затем запускается из EVO Reset menu выбором «5.SDCard Boot» либо выбором sd_card.$C в файловом браузере. Система загружается и выполняет команды в M:/bin/autoexec.bat, которые конфигурируют сеть через DHCP и запускают файловый менеджер nv.com (NedoVigator).

÷ö ö÷ ÷÷÷ö÷÷÷÷ö÷÷÷ ÷÷ö ř÷÷ř ö÷÷ řř÷÷÷÷÷÷÷÷řř řřřř ÷÷ ÷÷÷÷ ö÷÷÷÷ö ÷÷÷÷÷÷ öö÷÷÷÷öö řřřřřřřřřř

Пользовательская работа с системой

Базовые команды вводятся в promptе программы cmd и похожи на CP/M, DOS и Linux. Например: dir и ls вызывают одну и ту же операцию ядра для листинга файлов, однако благодаря этим алиасам правоверные досеры или линуксоиды будут меньше опечатываться.

Другие команды: del/rm, exit/quit, cd, copy/cp, rem, md/mkdir, ren/mv, mem/free, pros/ps, tee, drop, kill, date, start, copydir, type/cat, echo, pause, cls, uname.

Попробуйте в строке nv вызвать команду ps — и коротко увидите вывод процессов, только вывод появится лишь на мгновение и проскроллится прочь. Система об этом помнит, так что можно нажать Левый Shift — вывод на время удержания клавиши приостановится.

Это довольно неудобно, так что лучше вызвать команду term, которая запускает новый терминал. Между этими терминалами/процессами затем переключаетесь сочетанием Правый Shift + Enter. Я попробовал запустить term ещё трижды, но последний процесс лишь показал курсор и завис. Переключением Правый shift + Enter найдите другой терминал. Выведите процессы ps/proc: первый столбец — номер процесса, второй — активность +/- и «g» означает графический процесс, третий столбец — число страниц памяти, выделенных процессу, и последний — командная строка процесса. Терминал, который не запустился, однако фигурирует в списке процессов, и командой kill <номер процесса> его можно завершить. В выводе ps обратите внимание на процесс с PID 1 idle — это процесс ядра, который работает только когда никакой другой процесс не активен. Этот процесс лишь ждёт нажатия сочетания клавиш c+m+d и тем самым запускает новый cmd.com, откуда снова можете задать term или nv.

NedoOS поддерживает пакетные файлы с расширением .bat, и у программ в каталоге M:/bin не нужно указывать полный путь. Команды в bat-нике запускаются последовательно, перед запуском выводятся на экран, а префиксом start запускаются в фоне.

Из собственного опыта рекомендую иметь запущенными хотя бы два терминала, ибо некоторые операции могут вызвать зависание активного процесса, и переключением и kill из этого выйдете без необходимости rebootа.

NedoНавигация и запуск программ

NedoVigator (nv.com) — синий двухпанельный файловый менеджер, внешний вид и управление которого похожи на остальные Commanderы. Запускающие файлы .com и .c$ запускает сразу, а для остальных расширений имеет назначенные программы, которые их откроют. Они определены в M:/bin/nv.ext; найдёте здесь, среди прочего:

  • просмотрщик изображений для BMP (scratch.com); GIF, PNG, JPG, SVG (browser.com); 16c, SCR, FNT, IMG,... (player.com)
  • проигрыватель AY и модов (gp.com)
  • проигрыватель музыки для MP3, WAV, OGG (player.com) для карт, совместимых с General Sound
  • просмотрщик и редактор текстовых файлов (texted.com)
  • упаковщики (tar.com, untr.com, pkunzip.com, unrar.com)
  • запуск TAP, SNA, Z80 (nmisvc.com)
  • монтирование образов TRD, SCL (dmm.com)
  • эмуляторы платформ X86, VIC-20 и Электроника БК

Программа nmisvc.com без параметра переключает в режим BASIC ZX Spectrum 48k или 128k (с возможностью вызвать TR-DOS) и позволяет настроить такт CPU. Нажатием сброса F12 возвращаетесь обратно в систему. Запуском с параметром файла типа snapshot запускается он. Программу в любой момент можно прервать вызовом NMI (PrintScreen), откуда можно сохранить snapshot, screen, показать видеопамять, изменить такт CPU или задать POKE. Также из NMI-меню можно нажатием RShift+Enter переключиться в другие терминалы. Интересно, что в следующем терминале можно снова запустить nmisvc.com и тем самым пользовательски переключаться между несколькими программами ZX Spectrum.

С помощью dmm.com выполняются манипуляции с подключением TRD-файлов и изменением их отображения на дискеты (A:, B: и т. д.). NV затем выбором F1 позволяет выбрать диск и оттуда работать с его файлами.

Поскольку у NedoOS не реализована защита памяти и всё пространство всех 16kB-страниц из 4 MB RAM доступно всем процессам, иногда случается, что какая-то программа лезет куда не следует и вызывает падение системы. В таком случае перезапустите F12 и из EVO Reset menu снова загрузитесь.

Сеть

Поддержка сети и подключение к сети через Ethernet возможны с картой ZXNetUSB. NedoOS сеть поддерживает и содержит ряд утилит и, не в последнюю очередь, HTTP-браузер веба и Gopherа.

К обычным утилитам относятся: ping, time (для Network Time Protocol), dmirc (IRC-клиент), dmftp (FTP-клиент), telnet (term поддерживает VT-100), wizcfg (настройка сети или DHCP), wget, zxdb (для скачивания программ с https://zxinfo.dk/) и updater (для обновления NedoOS из сети; программа скачивает около 2MB ZIP и распаковывает его в M:/bin, при этом старый бэкапит в M:/bin.old).

Для любителей AY-музыки здесь и zxartrad.com, который проигрывает композиции по сети с https://zxart.ee).

К менее обычным относятся сетевые серверы: netterm — telnet на TCP-порту 2323, а 3ws — простой веб-сервер, который расшаривает содержимое каталога. Сервер 3ws запускается с параметром -p для порта (по умолчанию 80) и -w для шаринга каталога, например: 3ws -p 8080 -w M:/bin.

HTTP: NedoBrowser, wget

Веб-браузер NedoBrowser запускается командой browser.com URL. URL может быть адресом сайта с http:// (HTTPS поддерживается через proxy) или для локальных файлов, например file://M:/soubor.html (в обоих случаях спецификацию протокола указывать не обязательно). Текстовый browser — такой довольно урезанный lynx (известный из DOS или Linux), с поддержкой ASCII и 8-бит. кодировки кириллицы Windows-1251. В отличие от lynx, однако, умеет показывать и изображения (GIF, PNG, JPG, SVG).

Нижняя строка содержит строку состояния с URL и индикатором загрузки страницы. Для навигации по странице служат курсорные клавиши, постраничный сдвиг PgUp/PgDn и Home/End для прыжка в начало и конец страницы. Для возврата назад используется Backspace. Завершение браузера выполняет клавиша Esc.

Гипертекстовые ссылки отображаются синим в фигурных скобках и активируются клавишей Enter, скачиваются нажатием S. Изображения показываются как зелёный текст в квадратных скобках, и если создатель сайта правильно использовал атрибут alt text — отобразится и описание картинки. Картинка затем загружается и отображается по нажатию Enter в режиме 320×200×16 цветов, уменьшенная с цветовым дизерингом; её можно сдвигать курсором или изменить размер нажатием Z. Назад вернётесь через Backspace.

Пример пользовательской сессии может выглядеть так:

  1. Запускаю: browser restore.zxm.com

  2. Загружается страница этого журнала (к сожалению, с исковерканной диакритикой); нажатием S на ссылке скачивания TR-DOS-версии 4-го номера файл сохраняется в M:/download/restore04.trd.zip.

  3. После скачивания использую pkunzip для распаковки ZIP; это занимает чуть больше минуты, но не беда — потому что тем временем могу вернуться в browser и продолжить чтение веба.

  4. В NV затем нажатием Enter на *.trd система запускает меню nmisvc, и оттуда выбором A:/boot могу запустить журнал. Здесь в статье о зелёной тетрадке Logoutа найдём листинги BASIC-программ, которые бедный редактор журнала записал вручную чернильной ручкой и злорадно заставляет читателей переписывать их в компьютер.

  5. Вызываем, значит, PrintScreen/NMI, приостанавливаем чтение RESTORE № 4 и через nmisvc запускаем BASIC ZX Spectrum.

  6. Теперь остаётся лишь включить извилины и собственную память и ручным переключением процессов через NMI и RShift+Enter можем по блокам переписывать программы из журнала в BASIC и затем их запускать.

Как ни странно, в этом случае это работает превосходно. Переписанную программу затем можете сохранить: переключитесь в TR-DOS командой RANDOMIZE USR 15616, и SAVE "A:program" сохранит BASIC (*.$B) в ramdisk; прыжком через NMI в NV затем выберите клавишей F1 диск A: и оттуда можете скопировать его на SD-карту. Из TR-DOS командой RESTORE можете вернуться обратно в BASIC.

Gopher: NedoGopher, Moon Rabbit

Команда gopher.com или moon.com запускает клиента одноимённого протокола. К счастью, сразу загружается локальный *.gph-файл со ссылками, так что сразу можете начать искать, где отовсюду по ностальгическим или иным причинам всё ещё работают Gopher-серверы. Управляется курсором, но скролл идёт по страницам; ссылки предварены жёлтым параграфом и активируются Enterом. Назад вернётесь Backspaceом.

У Moon Rabbit по сравнению с NedoGopher дополнительно поддержка картинок SCR, и через gopher-шлюз на zxart.ee можете через Интернет насладиться и pixel artом.

Признаюсь, что Gopher в начале своего интернета использовал крайне мало, так что лишь благодаря ZX EVO смог уделить этому протоколу больше времени и исследовать серверы вроде i-logout.cz, vtrd.in (Virtual TR-DOS) или gotpherpedia.com (Proxy Wikipedia).

Простота Gopherа по сравнению с разросшимся WWW могла бы привести к его возрождению хотя бы в области ретро-компьютеров.

Эмуляция других платформ

NedoOS содержит несколько эмуляторов других платформ:

x86.com: IBM PC с CPU Intel 8086

Этот эмулятор создал Alone Coder, и в систему он добавился в апреле 2021. В каталоге M:\bin\x86 находятся файлы с расширением .x86 — это обыкновенные писишные .com. В NedoVigatorе затем нажатием Enter запускается запрограммированный на Z80-ассемблере эмулятор x86.com и в нём выбранная бинарка. Программы можно завершить нажатием сочетания клавиш 1+3+5.

На выбор несколько демо и игр из первой половины 80-х; все работают в CGA в стандартных режимах 320×200 в красно/зелёной или розово/синей палитре, но есть и демо, например cubicDoom (https://github.com/nanochess/cubicDoom), которое работает в VGA-режиме 13h. Эмулятор реализует некоторые службы BIOS и DOS.

Скорость программ, которые нормально работают на XT 8086 4.77 MHz, на Z80 даже на частоте 14 MHz жалобно медленная, так что о каком-то «серьёзном» использовании забудьте. Эмулятор скорее демонстрация возможностей NedoOS и мастерства автора.

bk.com: Электроника БК-0011

Электроника БК-0011 — советский клон 16-битного DEC PDP-11 с тоже советским процессором К1801ВМ1, совместимым с DEC LSI-11. Процессор К1801ВМ1 в оригинале работает на 3 MHz, память 32 KB RAM и поддерживает графику 512×256 точек монохромно, 256×256 точек в 4 цветах — с чем автор эмулятора справился так, что некоторые строки пропускает, а цветной режим не реализовал вовсе.

Эмулятор БК-0011 запускаете командой bk.com, и в M:/bin/bk находится несколько игр. Вызовом bk.com запускается Vilnius BASIC. Это, однако, не интерпретатор языка: команда RUN перед запуском компилирует исходник. Это, впрочем, не работает, и более сложные программы вставить нельзя, потому что мне не удалось найти клавишу для Backspace и даже дальнейшее отображение символов.

Эмулятор завершается переключением в другой терминал и kill процесса.

Twenty Commodes v1.90 (vic.com): Commodore VIC-20

James Smith запрограммировал эмулятор VIC-20 — компьютера с 3.5 kB доступной RAM на базе 1MHz процессора 6502 — как вклад в конкурс CSSCGC Crap Games Contest 2008. Эмулятор запускаете командой vic.com, причём в странно квадратном окне запускается интерпретатор CBM Basic 2.0. Графическая система VIC-20 ведь работает в разрешении 176×184, которое нормально растянулось бы по экрану телевизора, но здесь отображается в разрешении Spectrum.

К NedoOS приложена игра Blitzkreig M:/bin/vic20/blitzkrg.v20 — постепенно снижающийся самолёт, бомбящий город. Программу загружаете нажатием Левый Shift + Enter; она написана на BASIC, так что запускаете через RUN.

Сочетание 1 + LShift + Enter завершает эмуляцию VIC-20 и возвращает вас обратно в систему.

Заключение

В статье я попытался очертить базовые возможности NedoOS и её использование в сети и для эмуляции. Это, однако, далеко не всё, что входит в систему; другие интересные дополнения — средства разработки: basic (NedoBasic), tp (Turbo Pascal 3.0) и компилятор BDS C от Brain Damage Software.

Система содержит и пакет игр и демо в M:/nedogame, использующих графические режимы ATM. Pixel art редактор scratch.com, который поддерживает формат BMP и работает в 320×200×16. Для проигрывания музыки можно использовать gp.com, который помимо AY-музыки умеет проигрывать и форматы для NeoGS (MP3, OGG, AAC и MID).

Позволю себе скромно утверждать, что NedoOS — пока самая продвинутая операционная система, какая существует на платформе ZX Spectrum-совместимых микрокомпьютеров и которая сочетает в себе элементы современных ОС вроде вытесняющей многозадачности и сети — одновременно с упором на совместимость восьмибитной эры. Это живое доказательство того, что ретро не обязательно означает устарелость, а напротив — творческий вызов и продолжающееся развитие легендарной техники.

BruXy

Share your thoughts about the article