Привет! Это черновик заметки, которая должна была быть опубликована в моём блоге. Но так как блог сейчас сломан, я решил опубликовать её здесь. Кто-то недавно жаловался, что на ЛОРе недостаточно ХАБРа? Ну вот вам пост в стиле хабра. Поехали.
PC-MOS/386 — это многопользовательская и многозадачная операционная система, совместимая с MS-DOS 5. Разрабатывалась компанией The Software Link до 1987-го года.
Операционная система использует защищенный режим 386 для изоляции виртуальных машин с приложениями MS-DOS. Поэтому большинство программ, использующих только документированные API MS-DOS, должны работать без проблем.
В 2017-м году исходный код был перелицензирован под GPL3 и выложен на гитхаб. Кроме исходников, репозиторий содержит образы официальных установочных дисков и сканы оригинальной документации в PDF. Также там была исправлена проблема в обработке даты модификации файлов, которая не давала открыть файлы, созданные после 2012-09-01.
Так что теперь можно вполне законно и не нарушив ни одной EULA запустить эту самобытную ОС в виртуалке или даже на реальном железе.
Я немного погонял её в qemu, и пока вопросов у меня больше, чем ответов. Почитать официальный мануал (довольно длинный и в плохом качестве скана) пока времени не было, так всё методом тыка.
Многозадачность
Многозадачность реализована в виде отдельных контейнеров с приложениями. При запуске системы пользователь попадает в первый контейнер, в котором запущена оболочка COMMAND.COM
. Далее командой ADDTASK
можно добавить другие задачи, в которых по умолчанию также запускается оболочка COMMAND.COM
. Для каждой задачи обязательно указывать количество памяти, которое будет выделено под задачу.
Командой SWITCH
можно переключаться между задачами. В справке также были упомянуты хоткеи Alt + цифра
для этой же цели, но у меня они не заработали.
Можно активировать TSR-программу MONITOR
, после чего через Ctrl + Space
можно вызывать интерактивное меню для переключения задач и создания новых.
Правда в каждой новой задаче эту команду нужно повторять заново, чтобы в этой задаче работал хоткей Ctrl + Space
. Думаю, нужно команду MONITOR
прописать в AUTOEXEC.BAT
, чтобы она применялась автоматически.
Команды ОС
В этой ОС команды не отвечают на ключ /?
и любые другие варианты справочных ключей, которые я пробовал. Вместо этого есть интерактивная справка по команде HELP
. По виду и принципу работы напоминает справку из сред разработки QBasic и Turbo C. По команде HELP .КОМАНДА
(с точкой перед командой) можно попасть сразу в нужный раздел справки. (А при чём тут точка, вы можете узнать, набрав HELP .DOT
.)
Справочная информация довольно куцая, в основном перечисляет ключи команд. Например для команды ADDTASK
не написано, что объем выделяемой памяти нужно вводить в килобайтах. Возможно, для пользователей системы тех лет это было очевидно, но всё же. Описания каких-то общих принципов, важных для понимания работы конкретно этого клона DOS, отсутствуют. Возможно, они есть в бумажном руководстве, которое я не читал.
- Справка: https://ibb.co/PW79v1V
В командной оболочке работают стрелки влево-вправо, Backspace
и Delete
. Клавишей Insert
можно переключать режим ВСТАВКА
/ЗАМЕНА
, при этом меняется форма курсора. Режим ввода по умолчанию — ЗАМЕНА
, что неудобно. Чтобы ВСТАВКА
была по умолчанию, нужно в AUTOEXEC.BAT
вписать команду INSERT
.
Я также проверил все сочетания Ctrl + буква
. Ожидаемо работают Ctrl + H
как аналог Backspace
и Ctrl + M
как аналог Enter
. Ctrl + C
прерывает ввод текущей команды без выполнения. Остальные сочетания просто выводят на экран символы псевдографики.
Последовательное нажатие Esc + буква
в командной оболочке выполняет ту же роль, что и Ctrl + буква
, только еще и наводит беспорядок на экране при этом. Сочетания Alt + что угодно
или Esc + что угодно
, привычные миру Unix, тут , похоже, невозможны. (В других приложениях Esc
работает как самостоятельный хоткей. Например в интерактивной справке закрывает текущий раздел справки.)
История команд доступна через стрелку вверх и вниз. Между сеансами история не сохраняется.
ED
— простой редактор с двумя режимами: визуальным и командным. В визуальном режиме мало отличается от любого редактора любой ОС: стандартные клавиши навигации, режим вставки и замены, хоткеи на Ctrl + буква
.
Переход в командный режим по Esc
. Командный режим своей лаконичностью напомнил даже не редактор vi
, а редактор в составе Basic
из ZX Spectrum.
В справке отсутствует клавиша для перехода обратно из командного в визуальный. Разумное предположение, что это должна быть кнопка V
— оправдалось. :)
- Хоткеи командного режима: https://ibb.co/t85ZdN8
- Хоткеи визуального режима: https://ibb.co/pZT0y36
- Редактор в визуальном режиме: https://ibb.co/w6RKVFw
Команда ACU
открывает интерактивное меню с настройками системы и встроенной справкой по каждому пункту через F1
. Справка пытается быть информативной, но без мануала я всё равно не разобрался во всех настройках полностью. Выбранные настройки записываются в CONFIG.SYS
.
- Команда
acu
: https://ibb.co/VTTdTvS
Команды MOS
и MOSADM
позволяют просматривать и изменять различные параметры системы. Синтаксис команд использует подкоманды аналогично как в современных программах git
, docker
и т.п. Помню, что MS использовала такой же подход уже в NT-based системах для команд настройки сети, а вот были ли подобные команды с подкомандами в MS-DOS, не припомню.
- Команда
mos
: https://ibb.co/8zh6Y8J
Проблемы
Почему-то не работают стрелки на основном блоке клавиатуры. Стрелки на блоке NumLock работают, но пользоваться ими неудобно, так как в свою очередь на этом блоке не работает Enter. Возможно, это какая-то проблема совместимости с QEMU. Нужно будет попробовать в другой виртуалке.
Позже заметил, что кроме стрелок, такая же проблема с клавишами Insert
и Delete
. Они работают с Num-блока и неработают с основной части клавиатуры.
При переключении между задачами содержимое экрана не восстанавливается, остаётся от старой задачи. Может быть нужно что-то где-то довключить в настройках, я пока не разобрался.
Упомянутые ALT + цифра для переключения между задачами не работают. Или я делаю что-то не так, или опять проблема с обработкой ввода, и система не распознаёт ALT.
Впрочем, все перечисленные проблемы и сложности могут быть связаны с тем, что я использовал версию, скачанную с какого-то сайта с коллекцией старых программ, а не чистую установку из официального образа.
Еще одна проблема — не столько даже проблема системы, сколько особенность эпохи. Ни одно из приложений системы не уводит процессор в сон между прерываниями даже когда ничего делать не нужно. (Уж хотя бы COMMAND.COM мог бы это делать по умолчанию.) Из-за этого одно ядро постоянно нагружено на 100%, и мой ноутбук показывает температуру 82 градуса. И поэтому все эксперименты с PC-MOS сопровождаются отчётливым звуком П-Ш-Ш-Ш-Ш из вентиляционной решетки.
Что дальше
Было бы интересно поэкспериментировать с этой системой, разобраться в документации и в её устройстве и, возможно, найти все куски тулчейна для сборки и покопаться в исходниках.
Учитывая, что GEM 3.13 теперь тоже опенсорсный, можно попробовать запустить на ней GUI.
Где-то мне попадалась подборка утилит наподобие grep
для MS-DOS, которую было бы неплохо добавить.
Еще один интересный вопрос — установка на один раздел с FreeDOS в разные каталоги с возможностью выбора операционной системы при старте. (FreeDOS с большим уровнем совместимости с софтом или PS-MOS с меньшим уровнем совместимости, зато многозадачная.)
>>> Просмотр (724x453, 15 Kb)