ACNews #63
26 декабря 2016

Описание - Операционная система PQ-DOS

                  Операционная система PQ-DOS
                  by Vadim from Star Software

1) PQ-DOS - что это вообще такое? 
2) Зачем было сделано? 
3) Какие новшества по сравнению с тем, что было? 
4) Как это использовать? И что это всё даёт? 
5) Совместимость? Какой софт работает, какой нет? 


               1) PQ-DOS - что это вообще такое?

Итак, что из себя представляет PQ-DOS? Если сказать вкратце, то
это ОС для компьютера Профи, которая совместима, хоть и не на
100%, со старыми системами для этой ПЭВМ (варианты МикроДОС ),
с канонической системой CP/M, а также с системами
MSXDOS-1/MSXDOS-2 * и может исполнять программы для них. ОС 
сочетает в себе черты как систем CP/M, так и более продвинутых
ОС типа MS-DOS. С точки зрения программиста ОС представляет
собой некую прослойку кода и данных, которые представляют собой
окружение программы, позволяя ей взаимодействовать с файлами,
внешними устройствами такими как дисплей, клавиатура,
последовательный интерфейс, часы реального времени и пр.

Система может загружаться как с дискеты, так и с жёсткого диска
и состоит из следующих основных частей:

1) BIOS - размещается в ПЗУ; **
2) программы загрузки в MBR/boot секторе;
3) главный загрузчик системы и интерпретатор config.sys;
4) модуль BDOS;
5) модуль Concurrent BIOS;
6) драйверы устройств;
7) командный процессор.

* часть функций MSXDOS-2 не реализована, кроме того нет процедур 
маппера, так что софт MSXDOS-2, использующий эти возможности, 
работать не будет. 

** Собственно говоря, BIOS - это самостоятельная система, 
которая содержится в ПЗУ компьютера в той его части, где ранее 
размещались тесты. Вызовы BIOS можно использовать для любой 
системы или программы. Более того, если пользователь не желает 
прошивать себе BIOS, то система PQ-DOS может работать и без 
него, используя эмулятор оного, загружаемый с дискеты во время 
загрузки системы. С жесткого диска такая система загружаться не 
будет, но загрузившись с дискеты будет "видеть" логические диски 
на HDD. 

                     2) Зачем было сделано?

Теперь расскажу о причинах побудивших меня начать писать новую
ОС для Профика. Когда я впервые прочитал в рекламном объявлении,
что представляет из себя компьютер Профи (было это примерно в
1993 г.), то заинтересовался его возможностями именно в
расширенном режиме с загружаемой ОС. А увидев систему у себя
дома, на собственноручно спаянном Профике 3-й версии, был просто
поражён:

1) Файлы имеют имена и расширения, могут быть фрагментированы; 
2) Объём файла не ограничен 64К; 
3) Мы можем перенаправлять вывод программы в файл; 
4) файловый коммандер CopyK может читать и писать дискеты 
MS-DOS; 
5) система загружается с диска, а не намертво прошита в ПЗУ как 
TR-DOS и можно её улучшать; 
6) Запущенная программа не затирает всё доступное ОЗУ, а при 
завершении работы происходит возврат в систему; 
7) В системе имеются текстовые редакторы, языки программирования 
и пр. и пр. и пр. 

На несильно модифицированной схеме Спектрума мы получаем такие
возможности, почти что ПЦ дома в начале 90х! Это была
фантастика, прорыв. Плюсы этого подхода были очевидны, но и
минусы бросались в глаза. Главный минус "Профинской CP/M" - это
была скорость, всё работало очень и очень медленно, многие люди
ругали комп и систему за это, плевались и уходили с платформы. А
зря. Ни комп ни система тут не виноваты. Виноваты в тормозах
были те, кто делал первые адаптации системы, но они проделали
немалую работу достойную уважения, заставив работать, по сути на
ZX платформе, настоящую ОС - МикроДОС. К сожалению, прогресс в
портировании ОС закончился быстро, насколько известно мне,
основные работы были сделаны менее чем за год и потом система
кардинально не менялась. У тех, кто портировал МикроДОС на
Профик не было исходников БДОС и они даже не попытались их
воссоздать, чтобы исправить ошибки в модуле БДОС и хоть как-то
ускорить дисковые операции. ***

Кроме того, фирмой Condor в 1995 г. был сделан вариант системы с
драйвером жёсткого диска, это т.н. CBIOS5. В силу вышеуказанных
причин (отсутствие исходников), автор сего варианта (Письменный
Д.Г.) объединил драйверы флоппи и жёсткого диска в один драйвер,
сделал обработчик дисковых ошибок в виде резидента, который
вызывался при возникновении ошибки чтения/записи и отменить это
было совершенно невозможно. Система могла работать только с
двумя логическими разделами HDD и если у вас их было больше, то
нужно было делать монтирование и размонтирование логических
дисков, что было очень неудобно. Никаких подкаталогов конечно же
не было. Разделение HDD на разделы было несовместимо с ПЦ. В
общем система стала ещё хуже чем была, хотя для обывателя она
выглядела симпатичнее (например загрузочное меню конфигураций, с
весёлой озвучкой), но на меня система произвела удручающее
впечатление.

Примерно в 1997 г. ко мне попали файлы документации и фрагменты
исходников MSXDOS-1 (нерабочие, чья-то декомпиляция). Читая всё
это, я пришёл к выводу, что можно сделать систему, похожую на
MSXDOS, но совместимую с софтом для Профи МикроДОС. Кроме
того, было очевидно, что нужна ОС, с файловой системой FAT,
с поддержкой подкаталогов для хранения файлов на жёстком
диске. ****

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

**** стадии написания системы пока тоже опустим, если будет 
интересно, то напишу об этом позднее. 

        3) Какие новшества по сравнению с тем, что было?

Если PQ-DOS сравнивать с МикроДОС + CBIOS, то новшеств очень
много:

3.1) Модуль BDOS сейчас занимает 2 страницы кода, в оригинальной
МикроДОС этот блок располагался с адреса D400 по F800. Содержав
код, данные и буферы. В PQ-DOS основной код содержится в первой
странице (примерно 12К), часть кода из-за нехватки места
вынесена во вторую страницу, в ней же располагаются таблицы для
выделения хандлов и переменные окружения. В основном ОЗУ сейчас
располагается резидентная часть модуля BDOS, которая занимает
менее 4К, объём ОЗУ для загрузки программ равен 58K.

3.2) Подсистема драйверов PQ-DOS сделана схоже с реализацией в
MS-DOS, драйверы загружаются в страницы ОЗУ формируя связный
список. Первым драйвером в котором идёт устройство NUL. Код
драйвера является релоцируемым, загрузчик драйверов перед
размещением драйвера в ОЗУ производит перенастройку адресов,
требующих смещения. Драйвер же более не имеет процедуры
инсталляции, как это было в CBIOS. Для того, что бы драйвер был
релоцируемым, ничего особо специального и сложного, делать не
нужно. (фантастика :-) )

3.3) Система BDOS имеет как бы 2 набора функций.
FCB-ориентированные функции, для запуска софта CP/M или старого
софта Профи для МикроДОС и новый набор функций -
хандл-ориентированных, работающих с ASCIIZ строками. Модуль
полностью переписан в 2014 г.

3.4) Формат файловой системы, с которой работает PQ-DOS -
FAT12/16. Поддерживаются флоппи диски 40 и 80 дорожек, одно- и
двусторонние. IDE винты в режиме CHS и LBA. Подкаталоги.
Ограничение на вложенность - длина пути не должна превышать 64
символа. Файловая система CP/M не поддерживается, но у меня в
планах написать драйвер, который будет делать
кодирование/раскодирование ФС CP/M для ядра PQ-DOS так, что
система будет видеть диск, как будто с ФС FAT12, но естественно
без поддержки на нём подкаталогов.

3.5) Командный процессор cmd.com полностью написан с нуля и
имеет большее количество команд, чем в ранних версиях Q-DOS, где
он был заимствован из MSXDOS-1.

3.6) Драйверы разделены на два уровня: логический уровень
(высокоуровневые драйверы) и физический уровень (низкоуровневые
драйверы). Низкоуровневые вкупе с процедурой POST и начальным
загрузчиком составляют BIOS компьютера. Высокоуровневые - это
загружаемые драйверы устройств. Кроме того, часть загружаемых
драйверов загружается всегда. Это те драйверы, без которых
работа системы невозможна. Но пользователь может подменить любой
из этих драйверов на свой, через файл config.sys.

3.7) Система имеет загрузчик, который производит обработку
команд файла config.sys, выполняет загрузку стандартных
драйверов и обработку загрузочного меню.

3.8) Имеется подсистема управления расширенной памятью, правда
появилась она одной из первых, в самой первой модификации тогда
ещё МикроДОС, но с тех пор функционал изменился. Программы могут
запрашивать страницы ОЗУ у системы и возвращать назад,
кроме того, можно резервировать кусочки ОЗУ от вершины BDOS.

3.9) В PQ-DOS для запуска программ и контролирования занятой
программами памяти введено понятие "процесс". Программа может
запустить другую программу, как подпрограмму, в рамках текущего
процесса или инициировать дочерний процесс. Появилось в системе
и понятие "резидент".

3.10) Система Concurrent BIOS (CBIOS) в настоящее время нужна
только для совместимости со старым софтом, в будущем планируется
от неё избавиться, заменив на более универсальное решение,
которое позволит и портировать PQ-DOS на другие клоны. Основные
идеи я описал в документе ещё в 2011 г., но далее продумывания
идей дело пока не пошло из-за нехватки времени и лени)

3.11) В системе появился ряд новых утилит, форматтер,
единственный в рамках всех наших клонов ZX, который корректно
производит форматирование дискет под ФС FAT, с пометкой
bad-блоков в таблице FAT, позволяет гибко задавать параметры
операции. Для жестких дисков есть режим полного форматирования,
с записью константы во все секторы, быстрого форматирования, с
очисткой оглавления и подрежимом быстрого форматирования, когда
проверка поверхности производится более быстро. Опять таки, при
наличии сбойных секторов, соотвествующие кластеры помечаются в
FAT как сбойные.

3.12) Драйверы дисков читают/пишут физические секторы диска и
столько секторов, сколько запросит вызывающая программа.
Файловые функции ДОС чтения/записи имеют оптимизатор, который
выбирает максимально возможный блок секторов для чтения или
записи, ускоряя обмен данными. Системы же МикроДОС при обращению
к драйверу диска запрашивали логическую запись размером 128 байт
за одно обращение.

3.13) В системе имеется встроенный обработчик дисковых ошибок,
который вызывается модулем БДОС при возникновении ошибки.
Программа пользователя может установить свой собственный
обработчик, что немаловажно.

3.14) Имеется возможность подменить и командный процессор,
используя соответствующие команды в config.sys.

3.15) Система загружается очень быстро: с дискеты без старта
файловой оболочки примерно за 5-7 с. С жесткого диска за 1 с,
с файловой оболочкой за 2 с.

3.16) В системе появилось понятие "переменные окружения" - это
текстовые переменные, которые хранят текстовые значения (или
числа, но в формате текста). Есть несколько системных
переменных, например, переменная comspec содержит путь к
cmd.com, переменная path содержит список путей на дисках, где
следует искать исполняемую программу, если она не была найдена в
текущем подкаталоге.

          4) Как это использовать? И что это всё даёт?

Система снабжена подробной документацией, которая часто
дополняется и исправляется. Писать программы для системы очень
просто. Работа с файлами стала в разы проще, чем была в
предыдущих системах и в МикроДОС. Можно писать утилиты
проигрывания музыкальных файлов разных форматов, загрузки в
режим ZX снимков памяти .z80, .sna и прочих, для запуска старого
софта Спектрума. Монтирования образов дискет trdos для нового
варианта TR-DOS для Profi. Также можно (и нужно) создать утилиты
снятия образа с дискеты и записи образа обратно на дискету.

При этом используя винт с ФАТ16, используя подкаталоги. Можно
удалять, создавать, переименовывать файлы и подкаталоги не
используя для этого ПЦ. Либо наоборот, снять образ дискеты,
записать файл на карту памяти и считать на ПЦ. Драйвер для SD
карты будет написан в ближайшее время)

       5) Совместимость? Какой софт работает, какой нет?

Пока нет данных. 



Другие статьи номера:

Содержание - содержание газеты

Новости - написал 3D-движок типа Total Eclipse, Продолжаю собирать материалы по истории Спектрума, плотно занялся компилятором собственного Си-подобного языка.

News - I wrote a 3D engine like Total Eclipse, occupied myself with my own compiler of C-like language, still collect information about the history of ZX Spectrum.

Описание - Описание языка программирования NedoLang

Review - NedoLang programming language

Описание - Операционная система PQ-DOS

Review - PQ-DOS operating system


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Местные новости - Рассказ о командах города.
Сказочки! - "Что это ты, Иван, хватаешься за штаны, все чешешь чего-то?"
Amiga Sensor - Вирусы на AMIG'е.

В этот день...   23 июля