|
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. |
Реклама - Реклама публикуется бесплатно (во всяком слючае пока). |
Похожие статьи:
Избранное - История с фантазией, Парадокс двадцать первого века, Выдержка из обезличенной переписки.
В этот день... 1 декабря