Содержание статьи
В 1985 году на уникальных компьютерах Commodore Amiga впервые загрузилась уникальная операционная система AmigaOS. Спустя десятилетия она продолжает свою жизнь в эмуляторах для современных персоналок, проектах компаний и независимых разработчиков. И главное, в сердцах армии ее поклонников.
Amiga Corporation. Стартап имени женщины
Сегодня у стартапов есть возможность собирать деньги через краудфандинговые сайты, и талантливые инженеры могут реализовать самые смелые задумки. В восьмидесятые годы все было по-другому: когда развитие технологий и окрепший рынок первых домашних игровых консолей стали рождать в умах инженеров мысль о домашнем компьютере, пройти тернистый путь от задумки до серийного образца удавалось не многим. Одним новичкам помогала удача, другим же пришлось лавировать между бизнес-интересами корпораций и инвесторов.
Amiga Corporation относится к последним. Основал ее Джей Майнер (Jay Miner), на тот момент уже имевший славу «железных дел мастера» благодаря своей работе в компании Atari. Там под его руководством были разработаны такие легенды 8-битной эпохи, как Atari 2600 и Atari 400/800. Фирма Atari тогда была гигантом рынка игровых консолей, но большой бизнес интересовал Майнера не так сильно, как мечта о разработке персонального компьютера — устройстве, которое годилось бы и для игр, и для работы.
Вот только мечту эту Майнеру и его сподвижникам до поры пришлось камуфлировать для инвесторов под видом очередной игровой приставки. По-другому получить деньги на разработку своей задумки — чипсета, работающего в паре с процессором Motorola 68000, — от Atari и стоматологов-инвесторов, считавших игровую индустрию курицей, несущей золотые яйца, было невозможно.
Майнер нанял команду разработчиков и подыскал главного инженера — Дэвида Морса (David Shannon Morse) из корпорации Tonka Toys, выпускавшей игрушки. Задуманный ими проект назывался Lorraine (Морс окрестил его в честь обожаемой супруги) и должен был в корне изменить архитектуру и идеологию использования «персоналок».
В качестве «пламенного мотора» Майнер с коллегами выбрали 32-разрядный процессор Motorola 68000. Они отлично понимали, какой у него потенциал, и осознавали необходимость баланса между высокой производительностью компьютера и его стоимостью — в этом кроется залог народного успеха. На основе Motorola 68k в те времена выпускались и недосягаемые для обывателя сетевые двухпроцессорные рабочие станции Apollo и Apple Macintosh с его волшебным дружественным интерфейсом. Правда, черно-белым и с невысоким разрешением. В Lorraine Майнер постарался вложить те возможности, которых недоставало решениям типа Apple Macintosh, при этом не задирая ценовую планку до небес (то есть до стоимости профессиональных рабочих станций).
Xakep #197. Социальная инженерия
Компоненты Lorraine отвечали за формирование видеоизображения и звука — это позволяло разгрузить центральный процессор. При этом, в отличие от традиционной ПК-архитектуры, звуковая и видеосистема не были чем-то вроде периферийного оборудования, «подвешенного» к общей шине. Для доступа к оперативной памяти они использовали каналы прямого доступа (DMA), которые управлялись координирующим алгоритмом, основанным на разветвленной системе приоритетов. Что давал такой нестандартный подход? Например, возможность реализовать вывод цветного изображения в высоком разрешении (до 640 на 256 пикселей и до 4096 цветов) с аппаратной реализацией спрайтов (результат — плавная попиксельная прокрутка экранов) и режима Dual Playfield (в будущем — альфа-канал), создающего эффект полупрозрачноcти изображения. Звуковой чип формировал четыре микшируемых 8-битных канала стереозвука и был способен генерировать 14-битный стереозвук студийного качества.
Прототип Lorraine был готов в сентябре 1983 года и выглядел как ящик с четырьмя макетными платами общим размером с корпус тогдашних бытовых телевизоров. В январе следующего года на выставке CES в Чикаго программисты из команды Майнера показали публике его возможности. Прыгающий красно-белый шар Boing Ball произвел на посетителей такое впечатление, что в дальнейшем прочно стал ассоциироваться с брендом Amiga, став со временем логотипом AmigaOS.
Позже громоздкий прототип Lorraine превратится в набор из трех микросхем, их назовут OCS — Original Chip Set. В него входят: Agnus — контроллер DMA, попутно выполняющий функции блиттера (видеосопроцессора 2D-сцен), Denise — основной видеопроцессор, попутно поддерживающий ввод данных от мыши и джойстика, и Paula — звуковой процессор. Однако история эта была сопряжена со множеством сложностей, ее можно считать квинтэссенцией упорства создателей Lorraine. Они несколько раз перезакладывали свое имущество, чтобы поддержать компанию, выдерживали агрессивные нападки инвестора — компании Atari, мечтавшей увидеть Lorraine в своем проекте 16-битной персоналки Atari ST, и пережили столкновение с ловкими юристами фирмы Commodore, которая рискнула взять под крыло команду Майнера. Так Commodore создала до сих пор известную классику — компьютер Commodore Amiga 1000 с центральным процессором Motorola 68000 и тем самым OCS.
INFO
Автор «Космической одиссеи 2001» сэр Артур Кларк был преданным поклонником компьютеров Amiga. Роман «Снега Олимпа: сад на Марсе», посвященный идее терраформирования, он писал на Amiga 3000. Используя генератор 3D-ландшафтов Vista Pro, Кларк самостоятельно создал несколько иллюстраций с изображением поверхности Марса.
Архитектура AmigaOS. Абонемент в библиотеку
Уникальный чипсет OCS и слот расширения, который позволял наращивать оперативную память, подключать жесткие диски, оптические приводы и даже платы с дополнительным процессором, сделали Amiga 1000 белой вороной в стае микрокомпьютеров с весьма посредственными возможностями, годными лишь для унылой офисной работы. Отличный звук «Амиги», а также вывод видеосигнала в форматах NTSC и PAL дали право поклонникам окрестить ее «первым мультимедийным персональным компьютером».
Важная была не только железная составляющая. Операционная система AmigaOS, программный разум Amiga 1000, по уникальности могла поспорить с троицей чипов Agnus, Denise и Paula. А все потому, что ее архитекторы были людьми увлекающимися, прозорливыми и жутко талантливыми. Ядром команды software engineers были Ар Джей Микэл (R. J. Mical), Дэйл Лак (Dale Luck) и Карл Сассенрот (Carl Sassenrath).
Первые двое замечательно разбирались в графической и аудиосоставляющей чипсета OCS. Продемонстрированный на чикагской CES прыгающий по экрану Boing Ball был их рук делом и фактически стал первой «демкой», коих в последующие годы энтузиасты «Амиги» написали великое множество. Демо с красно-белым мячом было написано на ассемблере Motorola 68000 и работало напрямую с сопроцессорными модулями Blitter и Copper чипа Agnus. Никакая операционка демонстрационной программе была не нужна.
Тем не менее в операционной системе нуждались сами пользователи Amiga 1000. Идея будущей ОС родилась в голове Карла Сассенрота. Он досконально разбирался в структуре монолитного ядра UNIX-систем и при этом осознавал недостатки подобной архитектуры в применении к персональным компьютерам. Сассенрот пристально следил за развитием проектов, проповедующих концепцию микроядра — минималистичного диспетчера многочисленной свиты сервисов. Микроядерная архитектура обеспечивала не только простоту реализации (долой гигантские, сложные исходники монолитных ядер!), но и модульность системы, которая дает потрясающую гибкость.
Решение оказалось изящным: в его основе лежала концепция библиотек, каждая из которых отвечала за ту или иную пользовательскую функцию или за задачу высокого уровня. Код таких библиотек (runtime libraries) был реентерабельным, что означает одновременное использование его функций множеством пользовательских программ. Корнем ветвистого библиотечного дерева новой операционной системы стала библиотека Exec — то самое микроядро, топ-менеджер AmigaOS, отвечающий за распределение оперативной памяти, управление системой прерываний, ведение списка доступных библиотек, их запуск по требованию программ пользователя и... планирование для них процессорного времени. Позже в своем блоге SassenRanch Карл Сассенрот нескромно напишет: «С библиотекой Exec в AmigaOS я предоставил миру персональных компьютеров многозадачность».
Первые системные runtime-библиотеки были призваны продемонстрировать уникальность железа Amiga 1000 и многозадачность, поддерживаемую библиотекой Exec. Конечно же, они были связаны с потрясающими графическими возможностями новой персоналки Commodore. Библиотеки graphics.library и intuition.library создал Ар Джей Микэл, без устали работая по сто часов в неделю в течение семи месяцев.
По задумке команды операционная система «Амиги» должна была предоставлять пользователю исключительно графический интерфейс. Доступом к мощным графическим возможностям чипов Agnus и Denise занималась библиотека graphics. Ее основными функциями были низкоуровневые операции с видеоподсистемой чипсета OCS, то есть, в терминах современных персоналок, graphics.library была драйвером «видеокарты» Амиги. Основным потребителем ее возможностей была библиотека intuition.library — менеджер оконной среды, ответственный за формирование на экране окон и элементов управления приложениями, а также заведующий курсором мыши и вводом данных с клавиатуры. Мультимедийные возможности графической среды Intuition во всей красе раскрывались в первых прикладных программах для Amiga — графическом редакторе Graphicraft, медиаредакторе Musicraft и текстовом редакторе Textcraft.
Однако к концу июля 1985 года — моменту публичного представления Commodore Amiga 1000 (с приглашенными звездами Энди Уорхолом и Дебби Харри — см. статью «Цифровая археология: в поисках пыльных дискет» в февральском номере) — руководство Commodore не рискнуло представить исключительно мультимедийный компьютер, без привычной офисной составляющей. Именно поэтому, чтобы успеть превратить AmigaOS в «полноценную» (для того времени) операционную систему, Commodore привлекла к работе британскую компанию MetaComCo, которая владела правами на университетскую разработку TRIPOS — многозадачный вариант дисковой операционной системы (DOS), портированной на множество процессорных архитектур, в том числе на Motorola 68000. Так в архитектуре AmigaOS появился интерфейс командной строки для запуска программ и работы с файлами. Ассимиляция TRIPOS в существующее решение произошла в «библиотечном» стиле. Функционал TRIPOS был помещен в библиотеку dos.library. При этом программистам AmigaOS пришлось изрядно попотеть с портированием: TRIPOS была написана на языке BCPL (Basic Combined Programming Language) — идеологическом предке языка С, отличающемся от потомка кучей ограничений (кстати, первая в истории программа «Hello, World» была написана на BCPL).
Наличие в составе AmigaOS библиотеки dos.library внесло некоторую сумятицу в управление процессами. С точки зрения библиотеки Exec dos.library была всего лишь одной из runtime- библиотек, для которых выделялись системные ресурсы. Но вот с точки зрения программ, запускаемых из командной строки dos.library, последняя была полноценной операционной системой со своим методом планирования задач. В дальнейшем dos.library, переписанная на языке С, трансформировалась в AmigaDOS – библиотеку, ответственную исключительно за файловые операции AmigaOS.
К слову, многозадачность AmigaOS была довольно зыбкой. Процессор Motorolla 68000, как известно, славился отсутствием модуля MMU (Memory Management Unit), который реализует аппаратную защиту памяти. Это означало, что создатели программ для «Амиги» должны были предельно внимательно относиться к реализации переходов в доступном им адресном пространстве. В большинстве случаев это правило соблюдалось, но были и досадные исключения. Энтузиастам AmigaOS хорошо знакомы красные баннеры с кодами ошибок, убрать которые можно было только перезагрузкой. Они красноречиво именовались Guru meditation — намек на то, что разработчики AmigaOS раздумывают над имеющейся проблемой.
Чтобы AmigaDOS и остальные runtime-библиотеки могли общаться с периферией, Exec «рулила» набором специальных библиотек, связанных с вводом-выводом и работой с такими устройствами, как, например, системный таймер. Эти библиотеки (аналог современных драйверов мини-порта) носили название devices.
Так, AmigaDOS была тесно связана с библиотекой trackdisk.device, управляющей floppy-приводом (позже, для работы с жесткими дисками, к ней присоединилась библиотека scsi.device). Библиотека intuition для управления оконной средой связывалась с библиотекой input.device, которая, в свою очередь, опиралась на функции библиотек keyboard.device, serial.device и gameport.device. Вывод консоли AmigaDOS в окне intuition происходил с использованием библиотеки console.device.
Kickstart и Workbench. «Пожалуйста, вставьте диск №2»
Очевидно, что компоненты рассмотренной выше базовой архитектуры AmigaOS должны загружаться в память в первую очередь. За начальную загрузку и инициализацию системы в операционке «Амиги» несла ответственность программа-загрузчик Kickstart. В терминах архитектуры PC это что-то вроде смеси BIOS и загрузчика IPL. Включение питания инициировало невероятную для тех времен фичу — протокол Autoconfig. Он последовательно опрашивал состояние подключенных к компьютеру устройств и выделял для каждого из них диапазон адресов оперативной памяти. Влияние, которое этот протокол оказал на будущие компьютеры, трудно переоценить. Шина PCI и plag and play, реализованный на уровне ОС, обязаны своим появлением в персоналках именно амиговскому Autoconfig.
INFO
Для ускорения работы AmigaOS использовала технологию RAM drive. Ее очевидным недостатком была потеря данных в случае вынужденной перезагрузки системы. Но благодаря Перри Киволовицу (Perry Kivolowitz), владельцу небольшой компании по производству плат расширения памяти для Amiga, этот недостаток был преодолен. Его RRD (Recoverable RAM Disk) стал первым в истории операционных систем решением RAM drive, помогающим пережить внезапный reboot.
Успешный опрос устройств завершался загрузкой в память библиотеки Exec. Она, будучи корнем библиотечного древа AmigaOS, имела привилегию — фиксированный адрес в памяти (0000$ 0004), именуемый SysBase, в котором размещался указатель на текущее расположение Exec. Загрузившись, Exec последовательно «втягивала» в память библиотеки devices, библиотеки runtime и структуры данных, необходимые для их работы. В первую очередь к таким структурам стоит отнести карту динамической памяти — набор таблиц переходов на базовые адреса для всей иерархии запущенных библиотек, которые, в свою очередь, имели возможность вызывать другие библиотеки и использовать собственные структуры данных. Библиотека Exec строго следила за этим иерархическим кавардаком, используя связанные списки, содержащие цепочки указателей на все элементы. Благодаря такому суровому контролю код программ, библиотек и любые типы данных могли находиться в произвольных областях памяти.
В первых моделях компьютеров Amiga, оборудованных только 3,5-дюймовым дисководом, Kickstart и базовые системные компоненты AmigaOS грузились с дискеты. Позже для ускорения загрузки они перебрались в специальные чипы ROM, которые в среде амиговодов и стали называться Kickstart. Улучшения в системе AmigaOS влекли за собой обновление версии Kickstart.
В большинстве случаев в каждом новом «стартере» обеспечивалась функциональная совместимость сверху вниз, но у энтузиастов Amiga в ходу были специальные программы softkickers, которые давали возможность поочередной загрузки нескольких версий Kickstart. Это нужно, к примеру, для запуска софта (обычно игр), жестко привязанного к определенной версии системных библиотек.
После загрузки всех системных компонентов AmigaOS предоставляла пользователю графическую среду, созданную библиотекой intuition, и консольное окно AmigaDOS с приглашением командной строки. Не очень-то вдохновляющая концепция пользовательского рабочего пространства!
Именно поэтому следующим этапом загрузки было появление экрана со знаменитой ныне надписью Insert Amiga Workbench. Располагавшийся на второй загрузочной дискете, а позже на жестком диске «Амиги» Workbench, по сути, был графическим воплощением файлового менеджера и метафоры... нет, не привычного нам рабочего стола с его папками и файлами, а, скорее, верстака, с «ящиками» (папками), в которых располагались «проекты» (файлы с данными) и crafts — «инструменты» (программы). Корзина, больше напоминавшая железный мусорный бак, в мастерской тоже присутствовала. Workbench был призван конкурировать с менеджером Finder в Apple Macintosh и интерфейсом GEM, реализованным поверх операционной системы CP/M в компьютере Atari ST.
Стоит отметить, что конкурировал он вполне успешно. Так, уже в версии 1.0 Workbench была многоцветной и с плавным скроллингом. Пользователь управлял окнами, «ящиками», «проектами» и «крафтами» с помощью двухкнопочной мыши. Интерфейс Workbench стал визитной карточкой «Амиги», и первые версии AmigaOS именовались не иначе, как Amiga Workbench.
Со второй версии Workbench стал скевоморфно-объемным и получил модные тогда серые оттенки. Последующие версии Workbench слегка подрастеряли уникальность, слепо следуя за основными трендами GUI большинства тогдашних настольных систем.
В девяностые годы начался так называемый посткоммодоровский период развития компьютеров Amiga и AmigaOS. Немецкий программист Штефан Штунц (Stefan Stuntz) разработал объектно ориентированный интерфейс MUI (Magic User Interface), который со временем стал базовой графической средой для возрождаемых проектов AmigaOS и ее производных.
INFO
Разработчики Workbench 1.2 спрятали в него несколько «пасхальных яиц». Так, при одновременном удерживании обеих клавиш Alt и обеих клавиш Shift и нажатии на клавишу F1 появлялась надпись «System Software: Carl, Neil & Kodiak». Нажатие F2 показывало имена разработчиков графических библиотек: «Graphics Software: Dale, Bart, Jim & =RJ=».
Микрокосм AmigaOS. По ту сторону горизонта событий
Почему же, несмотря на уникальные возможности аппаратной платформы и передовые архитектурные решения, реализованные в AmigaOS, мир персональных компьютеров принадлежит сильно эволюционировавшим потомкам серых офисных коробок IBM PC? В целом проблема кроется в нерасторопности Commodore в плане бизнеса. Руководство компании посчитало, что уникальность Amiga, словно косичка Мюнхгаузена, поможет этому компьютеру самому себя вытягивать из все более усложняющихся проблем разраставшегося рынка персоналок. Просчитаться с правильным решением в таких условиях очень легко, и примеров таких провалов масса.
Commodore вовремя не поймала попутный ветер открытых решений — святой Грааль архитектуры PC. Конечно, чипсет OCS для середины восьмидесятых был уникальным по своим возможностям, но упорно продолжать совершенствовать его было ошибкой. Процессоры Motorola проигрывали конкуренцию с Intel, и выпуск ECS (Enhanced Chip Set) с Super Angus и Super Denise делу не помог.
Сторонние производители видеокарт для тех самых серых офисных коробок быстро уловили тенденции рынка и постепенно наводнили его самыми разнообразными графическими акселераторами — от бюджетных до профессиональных. В начале девяностых был выпущен «внук» OCS — чипсет AGA (Advanced Graphic Architecture) с поддержкой палитры на 262 тысячи оттенков, но и он не спас положение. Компьютеры Amiga 1200 и Amiga 4000 с AGA и поддержкой NTSC и PAL из коробки нашли более-менее широкое коммерческое распространение только на телестудиях. В частности, компьютерная графика в фантастическом сериале «Вавилон-5» обсчитывалась именно на «Амигах».
AmigaOS тоже добросовестно наращивала функции и в целом соответствовала запросам потребителя. Но если сверхбюджетная MS-DOS и близко не соответствовала уровню «Амиги», с Windows конкурировать уже было сложнее. Кстати, версия NT очень сильно напоминала библиотечный мир AmigaOS: исполнительная подсистема Executive с кучей сервисов в виде DLL-библиотек.
В бизнесе Commodore, а вместе с ним и AmigaOS потерпели поражение, но в умах и сердцах почитателей первой мультимедийной персоналки с уникальной микроядерной системой они одержали безоговорочную победу. Стоит хотя бы бегло просмотреть тематические сайты, чтобы понять: Amiga стала не брендом, а культом.
Невероятное количество сообществ не только не дают уйти в забвение классической линии Amiga и AmigaOS, но и небезуспешно пытаются реанимировать полюбившуюся систему. В 2005 году появился четвертый релиз AmigaOS, полностью переписанный на языке С для процессорной архитектуры PowerPC. Стоят за ним энтузиасты из компании Hyperion Entertament, они трудятся на компьютерах AmigaOne, созданных специально для них, и прочих решениях на PowerPC наподобие материнских плат Pegasos II.
Если разработчики AmigaOS 4.x приглашают пользователя в незабываемое аутентичное путешествие с классической операционной системой Amiga, то создатели проекта AROS (Amiga Research Operation System) реализовали вариант этой системы с открытыми исходниками. AROS — это не AmigaOS, но полностью совместима с классикой версии 3.1 на уровне API. Разработчики AROS считают причиной неудач, постигших великолепную AmigaOS, ее привязанность к аппаратной платформе Commodore Amiga. Чем шире система портирована на различные процессорные архитектуры, тем она жизнеспособнее. Выжила же Macintosh Operation System, «соскочив» с процессоров Motorola на PowerPC, а после на решения Intel и попутно вобрав в себя все лучшее от UNIX BSD. Небольшой коллектив разработчиков AROS перенес мир AmigaOS не только на процессорные архитектуры Intel x86-64, Motorola 68k и PowerPC, но и на операционные системы Linux, FreeBSD и даже Windows — в виде host-портов. В качестве графического интерфейса в AROS используется среда Zune — вариант интерфейса MUI с открытыми исходниками.
Дань памяти классической AmigaOS отдали и разработчики проприетарной операционки MorphOS. Ее задумка родилась в головах двух сотрудников немецкой компании Phase5 Digital Products, занимавшейся выпуском акселераторов (turbo-плат), расширяющих процессорные возможности и объем оперативной памяти классической линейки компьютеров Amiga.
По мнению Ральфа Шмидта (Ralph Schmidt) и Фрэнка Марьяка (Frank Mariak), положение этих замечательных машин спас бы переход на процессоры PowerPC. Да и сама операционная система должна была претерпеть существенные изменения. Так, микроядро современного варианта AmigaOS должно из менеджера ресурсов превратиться в супервайзера виртуальных сред, в которых могут выполняться не только программы классической AmigaOS, но и приложения для любых других операционных систем. Причем работать они смогут одновременно. Реализацией этой концепции в MorphOS стало микроядро Quark, управляющее изолированными виртуальными средами — «боксами» (boxes).
Первым «боксом», разработанным небольшим (двадцать человек) коллективом MorphOS, стал A-Box — среда, в которой (ну конечно же) выполняются приложения классической AmigaOS. В более продвинутой «коробчонке» Q-Box, работа над которой активно ведется в настоящее время, будет возможен запуск портов программ для Амиги, OS X и FreeBSD, разработанных для PowerPC.
Конечно, может возникнуть подозрение, что проекты, подобные AROS и MorphOS, — лишь ностальгические игры повзрослевших мальчишек, для которых Amiga в свое время была целым миром. Попытка удержать его путем реинкарнации — не более чем развлечение. Возможно, так и есть. Но стоит помнить о том, что, стараясь поддержать классику, эти энтузиасты находят и привносят в свои проекты интересные и нестандартные решения. Которые, возможно, перевернут однажды вроде бы незыблемый мир современных операционных систем. Как однажды перевернула их жизнь невероятная AmigaOS.
WWW
- Сайт нынешнего владельца AmigaOS — компании Hyperion Entertament
- Крупнейший исторический архив «Вселенной Amiga»
- Распределенное хранилище программ для AmigaOS и ее последователей
- Архив демок для Amiga
- Демонстрация чипсета Lorraine на выставке CES 1984
- Сайт Sareware проекта MUI
- Сайт Open source проекта AROS
- Сайт проприетарного проекта MorphOS