LINUX.ORG.RU

PC-MOS/386

 , , ,


6

3

Привет! Это черновик заметки, которая должна была быть опубликована в моём блоге. Но так как блог сейчас сломан, я решил опубликовать её здесь. Кто-то недавно жаловался, что на ЛОРе недостаточно ХАБРа? Ну вот вам пост в стиле хабра. Поехали.

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

В командной оболочке работают стрелки влево-вправо, 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 — оправдалось. :)

Команда ACU открывает интерактивное меню с настройками системы и встроенной справкой по каждому пункту через F1. Справка пытается быть информативной, но без мануала я всё равно не разобрался во всех настройках полностью. Выбранные настройки записываются в CONFIG.SYS.

Команды MOS и MOSADM позволяют просматривать и изменять различные параметры системы. Синтаксис команд использует подкоманды аналогично как в современных программах git, docker и т.п. Помню, что MS использовала такой же подход уже в NT-based системах для команд настройки сети, а вот были ли подобные команды с подкомандами в MS-DOS, не припомню.

Проблемы

Почему-то не работают стрелки на основном блоке клавиатуры. Стрелки на блоке 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)

★★

Проверено: hobbit ()

многопользовательская и многозадачная операционная система

В общем, оно круче FreeDOS?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

очевидно да. Но только вот проблема в том, что в то время программисты очень сильно любили заюзать недокументированные возможности DOS, а из поста я понял, что эта ОС не сильно с ними совместима (и совместима ли вообще).

Extraterrestrial ★★★★★
()
Ответ на: комментарий от hobbit

Что касается API, FreeDOS писали по следам MS-DOS версии 6, плюс имели возможность хорошенько покопаться в деталях, так что возможно какие-то API, поддерживаемые FreeDOS, в PC-MOS просто отсутствуют. С другой стороны, как эту FreeDOS писали, насколько качественно, вопрос открытый.

Ну а что касается ядра, FreeDOS просто классический 16-битный DOS с подпорками в драйверах для работы с памятью за 1-м мегабайтом. А в сабже есть некий 32-битный супервизор. Интересно, как он реализован…

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 3)

Ни одно из приложений системы не уводит процессор в сон между прерываниями даже когда ничего делать не нужно. (Уж хотя бы COMMAND.COM мог бы это делать по умолчанию.)

Разрабатывалась компанией The Software Link до 1987-го года

Не мог бы. Не было сна в 1987 году. Управление питанием появилось в 2002 году (и всё равно сна не имело, только снижение частоты и вольтажа).

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

hlt-то был. Просто смысла беспокоиться о нём не было, процессоры потребляли считанные ватты.

wandrien ★★
() автор топика
Ответ на: комментарий от gremlin_the_red

Пишут. что 386 потреблял 2 ватта на частоте 33 МГц.

До появления понятий «тепловой бюджет» и «тёмный кремний» оставалось еще 20 с гаком лет развития микропроцессорной техники…

wandrien ★★
() автор топика

Отличная статья, спасибо, прочитал с удовольствием. Сам недвано ковырялся в Apple ProDOS и Apple DOS, планирую написать нечто подобное.

Команды в этих DOS не похожи ни на CP/M, ни на MS-DOS, ни на UNIX-like оболочки.

Например, местный аналог ls -l или dir в ProDOS, внезапно cat, видимо от слова «сatalog». Аналог cdprefix и т. д. После UNIX’овых привычек очень неудобно, но к счастью есть система alias’ов, которые можно накидать в «LOGIN»-файлик, аналог autoexec.bat или .bashrc.

А ещё там разделитель пути – :, а не \ или /, ну и в текстовых файлах для перевода строк используется чисто CR, а не CR LF или чисто LF. Всё это позже перетечёт и в классические Mac OS.

Ну и работает оно далеко не на i386, а на MOS Technology 6502, WDC 65C02, WDC 65C816 и пр.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 3)
Ответ на: комментарий от wandrien

hlt-то был

И она в 87 году не снижала потребления. Первый процессор, который стал экономить при hlt был intel DX4 в 1994 году.

gremlin_the_red ★★★★★
()

Почему-то не работают стрелки на основном блоке клавиатуры.

Память мне может изменять, но MS-DOS просто не в курсе про скан-коды этих клавиш.

vvn_black ★★★★★
()
Ответ на: комментарий от EXL

6502

Всегда поражал этот процессор. «Как из ничего сделать успешный продукт».

Кстати, ты знаешь что в Z80 используется 4-битное ALU? Сложения/вычитания и всё, что с ними связано, требуют минимум по 2 такта на саму операцию сложения.

Зато есть «бесплатный» битовый сдвиг, потому что он выполняется отдельным блоком мультиплексоров перед входной регистром-защёлкой АЛУ.

В отличие от i8086, где сдвиг влево выполнялся как сложение с самим собой, а сдвиг вправо работал через отдельный узел в составе АЛУ.

(Так если подумать, какой-то странный расход кремния. Место, которое занимают эти мультиплексоры, можно было использовать, чтобы сделать сумматор для 8-битных чисел. Впрочем, архитекторам Z80 виднее…)

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 2)

Под спойлер убрал бы, что ли. А то половину "глагне" занял, словно олигарх какой-то.

Korchevatel ★★★★★
()
Ответ на: комментарий от EXL

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

wandrien ★★
() автор топика

многопользовательская и многозадачная операционная система, совместимая с MS-DOS 5. Разрабатывалась компанией The Software Link до 1987-го года.

Годнота. Спасибо за статью.

cocucka ★★★★☆
()
Ответ на: комментарий от EXL

Про разделители путей вспомнил одну заметку. Не помню, где читал. Где-то на сайте, посвященном CP/M.

Ходит легенда такого плана:

  • В MS-DOS \ используется как разделитель в пути, потому что / уже использовался для ключей запуска.
  • / использовался для ключей запуска, чтобы сохранялась совместимость с CP/M.
  • А в CP/M соответственно системные утилиты использовали / для ключей запуска.

Так вот автор заметки тщательно исследовал CP/M и выяснил:

  • Командный процессор в CP/M довольно прохладно относился к тому, что считать корректным именем файла. В частности символ / вполне мог быть частью имени. (А каталоги CP/M не поддерживала.)
  • Все программы использовали разные символы для ключей, кто во что горазд. Но ни одна из системных утилит и распространённых сторонних программ не использовала /.
  • Единственные программы, которые использовали / для этого, были… программы Microsoft! (Которая в то время производила компиляторы для микрокомпьютеров.)
wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Кстати, ты знаешь что в Z80 используется 4-битное ALU?

Неа, я не спец по CPU. Но спасибо за инфу, интересно.

Вообще создание MOS Technology это как раз история жадности Motorola, когда из-за каких-то ограничений несколько разработчиков Motorola 6800 создали свою собственную компанию чтобы сделать свой же чип ещё лучше и дешевле. И несмотря на суды и прочие тяжбы по сути у них не только получилось создать процессор лучше, но и серьёзно потеснить Motorola на их собственном поприще.

EXL ★★★★★
()
Ответ на: комментарий от wandrien

Кстати современный cl.exe в Windows вроде как «прогнулся» под ключики вида -O2 вместо /O2, но это не точно.

EXL ★★★★★
()
Ответ на: комментарий от EXL

На https://godbolt.org/ работает. Если msvc это оно.

Забавно, там можно написать /? в опциях компиляции и получить справку в окне лога.

wandrien ★★
() автор топика
Ответ на: комментарий от t184256

Чего? Раздел статей на ЛОРе был бы топовым. Сейчас статьи подобные сабжевой и такие вот:

  1. Perl прямиком из 1987 года
  2. Есть ли жизнь на Haiku?

Приходится постить в Галерею, где существуют ограничения на количество тех же скриншотов, да и подобные посты явно не вписываются в рамки Галереи, теряются в ней..

В разделе статей на ЛОРе можно было бы обсудить интересные технические вещи с представителями местной IT-тусовки без всякого налёта элитизма, без всякой кармочки (как на Хабре) зато со свободным LOR-style типом общения.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 3)
Ответ на: комментарий от EXL

И теперь у нас на главной вырвиглазный скриншот, а по ссылке за ним вместо команды для запуска этого на поиграть и одного (1) абзаца, чем это интересно, скучное до зевоты сочинение «как я провел пожизненную ссылку у дедушки», из которого ценную информацию добывать день.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Ты всегда можешь найти, как продуктивно провести время на ЛОРе, например, запостить очередной тупорылый нацпол в толксы, а потом посраться с Альфой из-за удаления темы.

А другим людям интересны другие вещи.

wandrien ★★
() автор топика
Ответ на: комментарий от t184256

А был бы раздел для статей, это было бы там. Всё же верно.

А статья вполне себе интересная.

//Жду скрин с гуем.

fernandos ★★★
()
Ответ на: комментарий от wandrien

Ты всегда можешь найти, как продуктивно провести время на ЛОРе, например, запостить очередной тупорылый нацпол в толксы, а потом посраться с Альфой из-за удаления темы.

Это не просто выстрел в молоко, это прям очередь по несчастной бутылке. Я — самый громкий сторонник платной справочной с пятью темами за два года.

А другим людям интересны другие вещи.

Ну пусть и постят воду оставшуюся от дипломов воду на швабре, какая стрелочка где работает в 30 лет как мертвой ОС — на каком-нибудь r/retrocomputing и т.п. А тут пусть интересуются русскоязычной информацией о Linux/Unix.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

По умолчанию да, но никто не мешает дать свободу это отключить.

fernandos ★★★
()
Ответ на: комментарий от t184256

И теперь у нас на главной вырвиглазный скриншот,

Ну да, это же намного скучнее чем очередная «очень полезная» тема в Галерее вида «смотрите как я изнахратил стоковый KDE», «мой новый дефолтный GNOME 3, как вам ШГ?», «кухня с фарой», «я топлю за коммунистов и поэтому живу в юрте, к которой капиталисты постоянно перерезают свет», «лежу на полу, окутанный полотенцем и смотрю в потолок» и прочая дичь.

скучное до зевоты сочинение

За смищнявками и лулзами тебе надо в другое место.

EXL ★★★★★
()

«Ни одно из приложений системы не уводит процессор в сон между прерываниями» - очень удобно было бы туда майнер добавить.

xmikex ★★★★
()
Ответ на: комментарий от t184256

А тут пусть интересуются русскоязычной информацией о Linux/Unix.

Ага, ЛОР все 20+ лет своего существования самое то место, где «интересуются русскоязычной информацией о Linux/Unix». С русскими физиками на слаке, танцполом, радужными понями на аватарках, трололо-модераторами, срачами про швабодку или трендом прошлого года забаньсядебилом.

Как ты умудрился так ошибиться сайтом регистрации, но при этом нафлудить 5 звёзд?

какая стрелочка где работает в 30 лет как мертвой ОС

Уж это поинтереснее, чем в сотый раз обсуждать, сколько багов вейланда снова не успели починить в очередном релизе GNOME Shell или как там нынче работает pШШШipewire.

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от EXL

Жанр «фото дыры» любой обидеть может, очевидно, что ему тут тоже не место, ровно как и досу какому-то.

А за смишнявками и лулзами ходить некуда. Нецелевые помойки помоечны, а потом сверху еще и политизированы. ЛОР — лучший юмористический ресурс, к сожалению.

t184256 ★★★★★
()
Ответ на: комментарий от wandrien

Ага, ЛОР все 20+ лет своего существования самое то место, где «интересуются русскоязычной информацией о Linux/Unix». С русскими физиками на слаке, танцполом, радужными понями на автарках, трололо-модераторами, срачами про швабодку или трендом прошлого года забаньсядебилом.

И все 20 лет это надо было нещадно тереть. Чем расслабленнее модеры, тем тупее троллинг, все 20 лет это отлично видно. Как надо играть по правилам, там и best of the best.

Уж это поинтереснее, чем в сотый раз обсуждать, сколько багов вейланда снова не успели починить в очередном релизе GNOME Shell или как там нынче работает pШШШipewire.

Ну так и молчите благостно, это не оправдывает откладывание на главной жирной досятины.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Ну так и молчите благостно, это не оправдывает откладывание на главной жирной досятины.

Не советуйте мне, что мне делать, и в ответ не услышите того же =)

И все 20 лет это надо было нещадно тереть.

=> https://stackoverflow.com/

wandrien ★★
() автор топика
Ответ на: комментарий от EXL

Нет, но рад, что у хоть у тебя гармония с текущим уровнем окружающей помойки. А я вот, походу, пониже ростом буду.

t184256 ★★★★★
()
Ответ на: комментарий от wandrien

Что stackoverflow? Там по построению помойка такая, что даже тереть мало.

t184256 ★★★★★
()
Ответ на: комментарий от vvn_black

Память мне может изменять, но MS-DOS просто не в курсе про скан-коды этих клавиш.

В NC на 386-м все стрелки работали одинаково.

olegd ★★★
()

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

Вроде, в начале века видел в сети соответствующий резидент под ДОС. Вместе с «холодильником» для Windows 95.

olegd ★★★
()

По крайней мере это любопытно. Но кажется абсолютно 100% бесполезно на любом железе и виртуалках.

kirill_rrr ★★★★★
()
Ответ на: комментарий от wandrien

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

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

Ну, сейчас всё сложнее. Нет проблемы напихать стотыщмильёнов вентилей на кремний. Есть проблема, как это охлаждать, чтобы оно не сгорело при первой нагрузке. Поэтому современные процессоры искусственно ограничены тепловым бюджетом. Нет термодинамической возможности задействовать все вычислительные узлы процессора по максимуму, даже если технически такая возможность присутствует.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

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

kirill_rrr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.