Новая OS ──────── Долгое время в Фидо витали слухи о какой-то новой операционной системе, якобы готовящейся Павлом Фединым (API SOFT) из Москвы. Я решил все точно для себя прояснить. ─────═══════───── Сергей: Ты, вроде бы, занят созданием какой-то новой ОС? Hе мог бы ты рассказать об этом поподробнее (для Revival)? Про все особенности, возможности, а также примерный срок выхода. Павел: Да, есть такое дело. Сама идея появилась уже год назад, тогда я просто сел и начал кодировать. Hо тут обнаружилось, что я толком не знаю, что же я хочу получить в итоге. Я отложил ассемблер и занялся изучением того, что уже имелось на тот момент, дабы не повторить ошибок других. Постепенно картина прояснилась - ОС должна находиться в 16 кб ПЗУ на месте бейсика-128. Точнее, не вся ОС, а только ядро - самые основные подпрограммы. Это драйверы нижнего уровня, файловая система и стартер. Оболочка должна находиться в ОЗУ - так ее легче совершенствовать и менять. Hо с самого начала я понял, что не нужно вслепую передирать систему, скажем с PC. Ведь Speccy - это, все-таки, Speccy, а не PC. Hо конкретно я почти ничего так и не знал. Итак, сначала я решил, что ядро системы будет находиться в ПЗУ, но его можно будет совершенствовать благодаря тому, что в первых 512 байтах ОЗУ будет находиться таблица из переходов - керналь, - адреса которых будут стандартизированы. Таким образом, можно будет создавать версии ПЗУ для различных моделей: Profi, Scorpion, ATM... Я ни в коем случае не хотел повторять IS-DOS, поэтому был оговорен минимальный объем памяти - 128 кб. Файловая система - MS-DOS. Драйвера предполагалось тоже помещать в ПЗУ - так их легче привязать к конкретной модели машины. Если же устройство уникально, то его драйвер предполагалось загружать в ОЗУ в файле AUTOEXEC.BAT, как на PC. Вроде бы, все было решено, то времени на работу не было - то возникли проблемы с учебой, то у меня не работала машина. За это время у меня появилась Amiga-1200. Hа ней я и увидел то, что мне предстоит воплотить в жизнь на Speccy. Ее операционная система отличается крайней гибкостью, а программы под нее способны работать на самых различных конфигурациях при соблюдении некоторых простых правил. Правила были такие: не использовать абсолютных адресов и не лезть в порты напрямую. Система не имеет ядра как такового, она вся состоит из огромного, ничем не ограниченного количества библиотек. Каждая библиотека представляет из себя набор подпрограмм, сгруппированных по назначению. Hапример, intuition.library - это GUI, dos.library - вся работа с файлами и накопителями, exec.library - распределение памяти и ресурсов... Это было именно то, что нужно, ведь на Speccy есть несколько видео- и аудиосистем, которые абсолютно не похожи друг на дружку ни по портам, ни по адресации памяти. В старой концепции ОС эта проблема не решалась - эти дополнения не использовались, потому что невозможно сделать для них какой-либо универсальный драйвер, ведь на экране можно выводить графику тысячами способов. А тут - нет проблем. Hужна тебе работа со спрайтами - напиши несколько версий SPRITES.LIB; нужна оконная система - GUI.LIB... Система полностью расширяема, возможна поддержка даже тех устройств, которых еще нет. Со стандартными устройствами - мышой, принтером и т. д. AmigaOS тоже обходится несколько по своему. Там нет полностью резидентных драйверов. Если мне нужен какой-то девайс, я прошу у системы мне его предоставить, и она загружает в память его драйвер. Когда девайс становится не нужен, я его просто списываю, и драйвер стирается из памяти. Пример на ZX: все знают редактор ZX-Word с его оверлейными драйверами, шрифтами и keymap'ами (так на Амиге называется файл, описывающий раскладку клавиатуры). Отзывы об этом я слышал только положительные. И в новой концепции своей ОС я решил оставить в ПЗУ только драйверы дополнительной памяти и винчестера - без них нельзя будет осуществить старт и загрузку оболочки. Именно эти два компонента будут привязаны к типу машины. Таким образом не понадобится даже автоопределение, которое так плохо работает на Speccy по причине нестабильности портов. ПЗУ понадобится только в следующих вариантах: 1) Profi v5 - с его собственным контроллером HDD. 2) ATM Turbo 2+ - его собственный контроллер HDD. 3) ATM-1 - SMUC. 4) Scorpion и совместимые - самый стандартный и, по-моему, наилучший вариант. Profi ниже v5 попадают туда же - порт расширения памяти GMX совпадает с профишным. 5) 128 кб и выше с 512 кб от ВМГ - SMUC. Хотя, думается, что в одном ПЗУ можно будет сделать поддержку одновременно двух контроллеров HDD - Profi и SMUC. Они различаются только портами. Теперь вторая часть - об организации памяти. Программы будут работоспособны без какой-либо поддержки из ОЗУ - ядро системы находится в ПЗУ. Страничная память будет расходоваться в системных целях сверху вниз. В самый верх будет грузиться оболочка. При нехватке памяти ее можно будет выгрузить. Там же будут располагаться резиденты. Драйверы и библиотеки будут подгружаться по запросу программы либо в верх свободной памяти, либо туда, куда укажет сама программа. Системных переменных как таковых не будет - они будут строиться по принципу IS-DOS - я сам буду определять их местонахождение и задавать в IY базовый адрес (этот регистр будет освобожден от тяжкого бремени постоянно содержать #5C3A). Вот вкратце и все о новой системе. К сожалению, каких-либо сроков я назвать не могу, потому как за комп смогу сесть только после Enlight, а там основное время отберет учеба. Да и сам по себе человек я жутко ленивый. ;-) Сами понимаете - крайне тяжело вести такой проект одному. Hа данный момент у меня уже написаны драйверы нижнего уровня, которые будут находиться в ПЗУ, один товарищ из Фидо пишет файловую систему (потерял я его адрес :-() Только вот надо будет дописывать подпрограммы для организации работы с библиотеками - мои исходники достаточно старые. Да и драйвер винчестера доделать мешает то, что на Амиге у меня погиб HDD, и пришлось поставить туда сороковник с моего Profi. :-(( Честно говоря, я был бы очень рад любой поддержке. Связаться со мной можно по адресам: ┌─────────────────────┐ │ ∙ FidoNet: ∙ │ │ 2:5020/659.55 │ │ ZX-Net: │ │ ∙ 095/301.0 ∙ │ └─────────────────────┘