Natural
#01
01 апреля 1998 |
|
Идеи - Как написать многозадачную операционную систему. Какой должна быть идеальная операционная система для Speccy ?
┌──────────────────────────────────────────────────────┐ ┌──┴──────────────────────────────────────────────────────┴──┐ │ ИДЕИ │ └──┬──────────────────────────────────────────────────────┬──┘ └──────────────────────────────────────────────────────┘ (С)Sir Ilias. Как написать многозадачную операционную систему. Статья была написана довольно давно - 2 месяца назад, и некоторые моменты уже успели устареть, но я не стал ее из- менять. Дополнкния Вы найдете в конце статьи. ( Заранее приношу свои извинения за свою "Скорпионоя- зычность", но у меня Scorpion и это не могло не отразится на статье.) Идея этой статьи вынашивалась довольно долго. А каса- ется она наболевшей темы - операционной системы ( ОС ) для нашего любимого Speccy (Scorpy, Profi, ATM, Pentagon и др.). Совершенно ясно, что существующие решения не удовлет- воряют и не могут удовлетворить большинсво пользователей и программистов ( а для нормального, перспективного развития системы нужен стандарт, который легче всего устанавливается если система удовлетворяет большинство ). А если и удовлетво- ряют то лишь малую часть. Так например TR-DOS давно уже мо- рально устарела и пользуются ей только по привычке и за неи- мением альтенативы. Правда известны как минимум две попытки вдохнуть в нее новую жизнь - введение поддержки HDD под TR-DOS. Это контроллер MFM винчестеров С.Веремеенко (ZX-Ревю 4-5 1996 ) и IDE контроллер на SMUC (Scorpion and MOA Univer- sial Controller ) разработанный для Scorpion ZS 256 (вла- дельцем коего я являюсь.) IS-DOS хороша по части текстового редактора и программ печати, а также поддержкой HDD, которая по имеющейся у меня на данный момент информации введена на Kay, ZX-Next и Scorpi- on ( я в данный момент работаю на HDD 40 Mb, 10 из которых под IS-DOS). Но она КРАЙНЕ неудобна при работе ТОЛЬКО с гиб- кими дисками, а также отсутсвием качественных инстументальных сиситем для разработки собственного програмного обеспечения. Система MagOs хороша реализацией псевдомногозадачнос- ти, но на этом все ее прелести заканчиваются, так как все время сказывается нехватка памяти ( две 128-ые программы заг- рузить невозможно, правда в каком-то номере ZX-NEWS, был анонс платы расширения Scorpion до 2-ух Mb, Сергея Зонова, но больше нигде я ничего об этой доработке не слышал. ), также MagOs 6.3 ЖУТКО тормозит при работе с HDD ( загрука/выгрузка замедляется раз в тридцать, просто кошмар! ) кроме того от- сутствуют системные рестарты и тому подобная атрибутика ОС, правда в новой версии все это обещано, но пока я таковую не видел. И самый главный недостаток этой ОС в том, что функцио- нировать она может только на Scorpion'ах, а следовательно не сможет стать стандартом ( врядли владельцы Profi, ATM, Penta- gon & etc побегут покупать себе еще один компьютер.) Радикально новой была операционная сиситема Pink Floid by Domen Int. Тут и многозадачность, и графический интерфейс стандарта SAA/CUA ( аля Windows ), и поддержка HTML ( стан- дарт мультимедийных документов на PC, Amiga, Mac & etc ) и многое другое. Но подкачала реализация многозадачности и не- которые другие идеологические ошибки/погрешности.В итоге сис- тема была расценена как неудачная ( ODISSEY#2 ). Справедливости ради хочу отметить, что лично на Pink Floid не работал и мнение свое сформировал основываясь на описании в ZX-FORMAT #5 и публикациях в ODISSEY #2 и ZX-NEWS'97 ( не помню номер ). Так какой должна быть идеальная операционная система для Speccy ? Рискну сформулировать некое Техническое Предло- жение. Общие положения: Операционная система - друг пользователя. Она должна быть максимально открыта. Ни какой защиты от встроенных тене- вых мониторов ( то есть на Scorpion'е не надо портить 8-ой банк RAM, но если пользователь пожелает - можно и запортить.) ни какой защиты от Magic. Мало-ли что нужно будет выполнить пользователю для своих нужд. Хотя, конечно, для коммерческих несистемных программ (например игр) нужно обеспечить возмож- ность блокирования выхода в теневой монитор на время ее вы- полнения, но также обеспечить деблокировку монитора после за- вершения выполнения. Но повторяю, это целесообразно только для игр. Максимальное использование индивидуальных особенностей компьютера пользователя.( Напимер в Scorpion'е есть встроен- ные часики, а так же BIOS, при желании user'а обеспечить ра- боту с диском и через него, кроме того, на многих машинах стоят прошивки TR-DOS, в которых есть подпрограммы чтения и записи в произвольные порты (in a,(bc):ret; out (bc),a:ret), не использовать эту возможность нельзя.) Минимальной конфигурацией признать Spectrum 128.( Да простят меня владельцы 48-ых Spectrum'ов, но 128-ые действи- тельно минимальная конфигурация для номальной работы.) Переключение страниц 128-ой памяти ТОЛЬКО по #7FFD. Любое приложение должно нормально работать на мини- мальной конфигурации компьютера. С точки зрения пользователя и программиста: 1. Многокаталоговая дисковая подсистема. 2. Графический многооконный интерфейс, желательно как в Windows 95 ( PC ), либо как в WorkBench X.XX ( Amiga ). 3. Поддержка мыши ( Kempston и AY ).А вот здесь остановочка. В различных изданиях по Speccy все больше публикаций пос- вященных стандартной Kempston Mouse - это хорошо, НО есть и такие, в которых содержится ЧУДОВИЩЬНАЯ дезинформация, в них пишется, что у KEMPSTON MOUSE три кнопки ( схема контроллера в SPECTROFON #20 ) - ЭТО НЕ ТАК !!! Пользователи, программисты, ЗАПОМНИТЕ и РАСКАЖИТЕ ВСЕМ : ╔═════════════════════════════════════════╗ ║ У KEMPSTON MOUSE - 2 ( ДВЕ ) кнопки !!! ║ ╚═════════════════════════════════════════╝ ( об этом можно прочитать в ZX-РЕВЮ '91 стр. 121, второй столбик, девятая строка с верху. А так же описание контроллера мыши фирмы Scorpion. Если все еще не убедил, обращайтесь в ZX-FORMAT - у них поддержка хвостатой с пер- вого номера. ) и опрашиваются они по порту #FADF, d0=0 при нажатой левой кнопке, d0=1 при отжатой левой кнопке. Для правой аналогично используется d1. Если в варианте Вашего контроллера мыши три кнопки, то не используйте третью, не обламывайте пользователей которые приобрели СТАНДАРТНЫЙ контроллер Kempston Mouse. 4. Прозрачная работа с MS-, TR- и IS- дискетами. В КРАЙНЕМ случае наличие конвертора.( Говорю это как достаточно на- маявшийся конвертацией в IS-DOS.) 5. Поддержка TR- ,IS- винчестеров (Scorpion, Kay,ZX-Next ). (Это чтоб не переписывать весь IS-винт на дискеты и не за- качивать его на винт новой системы.) 6. Поддержка RAM-диска. 7. Реализация многозадачности (подробнее ниже). 8. Поддержка буфера обмена данными между приложениями. 9. Желательна реализация аналога ARexx (на Amiga - межпрог- рамный язык, позволяющий обьединить несколько приложений в единую среду). 10. Желательна реализация аналога IFF - формата данных ( на Amiga - стандарт обмена данными единый для текста, музы- ки, графики и т.п.). Теперь в общих чертах о внутреннем устройстве. Реализации многозадачности. Мною давно вынашивалась идея реализации многозадачнос- ти на Speccy. Было проработано много вариантов и в ходе исследований мной был найден единственно возможный опти- мальный вариант реализации многозадачности на архитектуре ZX Spectrum. Он накладывает минимум ограничений на программу и не требует радикальной смены стиля программирования ( круто расхвалил ;-). Метод основывается на ВТОРОМ режиме прерываний. Теперь подробнее. Предположим у нас в памяти есть 2 (две) программы и нам нужно выполнять их парралельно. Первая находится по адре- су #C000, вторая по #E000. Часть системы ответственной за многозадачность, драйверы и т.п. висит на прерываниях. Мы со- общаем системе адреса программ посредством таблицы, находя- щейся в условленном месте. Таблица выглядит так: #C000 #E000. Система передает управление первой программе посредством за- несения нужного адреса на стек ( ld hl,#c000 : push hl ) и выходит из маскируемого прерывания выполняя RETI. Затем пер- вая программа преспокойно выполняется до тех пор, пока не приходит INT, процессор заносит текущий адрес программы 1 ( регистр PC, например #E32E ) на стек и переходит к обработке маскируемого прерывания, то есть запускает систему. Система сохраняет все регистры и забирает со стека ТЕКУЩИЙ АДРЕС программы 1 и помещяет его в нашу таблицу. Таблица становится такой: #C32E #E000. Затем система вызывает драйверы, резиденты, увеличивает сис- темные часы и т.п. Увеличивает указатель таблицы, заносит другое значение на стек ( в нашем случае #E000 ) и возвраща- ется из прерывания. Затем выполняется программа 2. Затем вновь приходит прерывание и система, предварительно восстано- вив значения регистров для программы 1, переключается на нее. Таким образом создается иллюзия парралельного выполне- ния программ. На самом же деле система просто раз в прерыва- ние переключается на другую задачу. Надеюсь теперь все пре- дельно ясно. Из вышесказанного понятны ограничения накладываемые на программу: 1. Не запрещать прерывания ( кроме особых случаев ). 2. Программа должна сама настраиваться на нужный адрес ( быть релоцируемой ). 3. Выводить информацию на экран только через драйверы системы ( исключение может быть сделано только для полноэкранного режима (см. ниже)). 4. Переключать страницы памяти только через драйвер системы. Понятно, что даже две серьезные программы не смогут нормально функционировать в 48-ом пространстве, по этому предлагаю следующее распределение памяти (примерное): #4000-#5b00 ... Экранная область #5b00-#8000 ... Ядро (рестарты),IM2-модуль (обеспечивает многозадачность), Буфер-описатель прог- рамм (регистры, текущий адрес ),место для резидентов, драйверов и т.п. #8000-#C000 ... Место для 48-модулей программ. (Программа должна состоять из двух (и более ) час- тей, одна управляющая в памяти #8000-#C000, а другая часть в страничках. #C000-#FFFF ... Место для самих программ. ┌──────────────────────────────────────────────┐ │Этот пример условный и ни к чему не обязывает.│ └──────────────────────────────────────────────┘ Программа должна уметь находиться в трех основных ре- жимах работы ( по аналогии с Windows 95 ): 1. Оконный. Осуществляется через драйверы системы. ( для некоторых программ не обязательно (для игр).) 2. Полноэкранный. Может осуществляться как через ОС, так и через собственные подпрограммы. ( для некото- рых программ также не обязателен ). 3. Так называемый "спящий" или "свернутый", когда программа находится в памяти, но не вызывается сис- темой ( текущий адрес программы пропускается в таб- лице адресов ). При необходимости можно вернуться в программу. Операционная система должна давать возможность одному приложению снимать другое, при необходимости обращаясь за разрешением к пользователю. Кстати, рестарты можно сделать как в IS-DOS через RST 16, но НИ В КОЕМ СЛУЧАЕ НЕ ЧЕРЕЗ RST 8, т.к. в этом случае нарушится совместимость со Scorpion'ами. Также можно сделать рестарты через CALL ADDR, но в этом случае придется не менять этот адрес в следующих версиях ОС. Хотя CALL ADDR и занимает на 2 байта больше, но действовать будет быстрее так как не выполняется программа из ПЗУ, также не нужно беспокоиться ка- кой банк ROM подключен. Приоритеты в разработке программного обеспечения для новой ОС. На первом месте должны стоять системы программирова- ния, то есть на базовой дискете с новой ОС должен быть свой ассемблер, разработанный СПЕЦИАЛЬНО для этой системы, а не жуткая адаптация . Это должна быть удобная СРЕДА для создания программ. Если среда будет удобной, то программисты будут создавать такие же удобные программы. Ассемблер должен обес- печить (как стандарт) генерацию релоцируемых программ, драй- веров, резидентов для новой ОС. Позже можно будет написать СИ - среду и т.п. Ну и наверное нужно обеспечить BASIC-под- держку. Затем идут утилиты, игровые и прикладные программы. ( Тут создатели Pink Floid пошли верной дорогой, анонсировав свою игру "ЭКСПАНСИЯ".) Также нужно обеспечить запуск TRDOS- овских программ из ОС. Очень мощьным подспорьем в деле распространения и по- пуляризации новой операционной системы может стать выпуск пе- риодического издания ( эл. журнала/газеты ) для нее, который бы максимально использовал ее возможности ( многозадачность, оконный интерфейс и т.п.). Это издание могло бы освещать проблемы/перспективы развития этой ОС, делиться новыми техно- логиями для нее, но не зацикливаться только на ней, а быть просто интересным изданием. Ну чтож, раз Вы дочитали до сюда, то Вы навеняка заин- тересовались этим проэктом как пользователь, программист или разработчик и у Вас наверняка возникли некоторые вопросы. Попробую ответить на некоторые. Почему ты это все тут написал ? - Я думаю, что моя идея по реализации многозадачности достаточно интересна и способ предложенный мной достаточно оптимален. Я надеюсь, что кто-нибудь прочитает сие творение и напишет-таки нормальную, дружественную, многозадачную опера- ционную систему для ZX Spectrum ( ну и может где-нибудь мое имечко упомянет... ;-). Вобщем все идеи изложенные в этой работе я дарю тому, кто возмется их реализовать. Да, если Вы возьметесь, не поле- нитесь, напишите мне - я порадуюсь. Почему ты сам не приступил к реализации этого проэкта ? - Кишка тонка. Я не имею опыта в разработке ОС. А "ра- довать" Вас появлением какого-нибудь мутанта... это не для меня. Вот вроде и все, если не угадал Ваш вопрос, не серчай- те - я все-таки не ясновидец, шлите его мне. Теперь обещанное дополнение. Из телефонного разговора с представителем фирмы Scorpion (осуществленного посредством ограбления своей бабушки ;-) я узнал, что плата расширения включает в себя "расширитель" памяти до 2 mb, расширение гра- фического экрана, разрешение которого составит по-моему (точ- но не помню) 512 на 384, цвет задается для каждого байта (для 8-ми точек), плюс аппаратный скроллинг. Также будут введены два новых режима работы, идентичные по показателям фирменному Speccy , и Pentagon'у. Также на плате будет стоять flash-ПЗУ, содержащее последнюю версию ПЗУ Scorpion'а, и каждый в буду- щем сможет обновить версию ПЗУ без всяких проблем - с дискеты! Осталось сказать, что плата стоит 10 у.е. ( 1 у.е. = 6.5 руб.) и напомнить телефоны фирмы Scorpion: (812) 298-06-53, 172-31-17 (отдел заказов), 251-12-62 (ремонтная служба), 130-19-95 (отдел программного обеспечения).
Другие статьи номера:
Вступление - Пермская компьютерная газета. |
Read Me - Старина Speccy переживает трудные времена в нашем городе. |
Идеи - Как написать многозадачную операционную систему. Какой должна быть идеальная операционная система для Speccy ? |
Фантазия - рассказ "Резервация". |
Юмор - Несколько самодельных приколов.Сначала о всеми любимой PC. |
Розыск - Разыскивается версия графического редактора Art Studio поддерживающая kempston mouse. |
Реклама - Реклама публикуется бесплатно (во всяком слючае пока). |
Похожие статьи:
В этот день... 2 декабря