Altair DOS, новая дисковая ОС для "ОРИОНА-128" с платкой Z80CARD-II , Орион-128, CP/M-80

Altair DOS - Чистякова SP-Computer club

Продаю платы и наборы микросхем, куплю микросхемы Купить программы, микросхемы, готовые блоки запчастей ПК Орион-128

Все версии CP/M-80

Все версии ORDOS

 Авторский контроллер НГМД. Мы собираем именно такой и на нем работаем.  Читайте про пакет Атлас.

Организация файловой структуры CP/M и проблемы развития CP/M ОРИОНА, от Чистякова

Altair DOS, новая дисковая ОС для "ОРИОНА-128" с платкой Z80CARD-II.

Ниже приведен минимальный обьем информации для системного программиста. Это описание не является полноценным руководством, а лишь дает программисту обзор некоторых элементов DOS. Полное описание системы составляет 100 Кбайт текста и поставляется при покупке системы Altair DOS в виде дискового файла. Система постоянно улучшается, но даже первая версия Alt-DOS и драйверов впечатляет. Почти MS-DOS.

1. Все версии Alt-DOS (текущая версия 1.05) работают на процессоре Z80 (не работает с платкой Z80 card II Орион Сервиса)  и требуют наличия в системе диспетчера ОЗУ с окном 0-3FFF, управляемым портом FB.

Обязательно также наличие узла прерываний с частотой 50 Герц (с привязкой) и режима "полного ОЗУ", т.е выключение ПЗУ и ВУ битом D5 порта FB. При программировании портов ВВ55, портится буфер диска DOS (под ПЗУ), поэтому желательна доработка, запрещающая запись в ОЗУ при обращении по адресам F400-FFFF.

 2. Сама система Alt-DOS размещается при работе в дополнительной банке ОЗУ и имеет такое же строение как CP/M, т.е CCP, BDOS и BIOS. При работе система, как и CP/M использует 100H байт с 0 адреса (ZERO PAGE CP/M). Для обеспечения максимальной совместимости со старыми версиями CP/M ОРИОНА (ACP/M 1992 и др) система имеет область TPA в 1-й банке ОЗУ и CCP с C400H. Однако, в отличие от ACP/M для подключения к системе внешних драйверов используются не система стандартизованных векторов, а т.называемая "система шлюзов". Это позволило обеспечить максимальную гибкость системы по использованию имеющегося в ОРИОНЕ-128 ОЗУ. Система не критична к ROM-BIOS, т.е ПЗУ F800, хотя наличие МОНИТОРА-3 позволяет подключать драйвера "нестандартных" клавиатур, без смены этого ПЗУ (т.к в М-3 векторизованы F812/1B). Однако, так как система использует п/п-му F81B ROM-BIOS, то при использовании МОНИТОРА-2, из-за большей "тормознутости" этой п/п-мы в нем, работа многих программ замедляется. Сама система Alt-DOS взаимодействует с КОНСОЛЬЮ ввода/вывода с помощью внешних для Alt-DOS загружаемых драйверов, поэтому для системы не важно ни какой экран "ОРИОНА" используется для вывода ни сколько банок ОЗУ используется для вывода цвета (1,2,3,4). Однако, чтобы заранее избежать "конфликтов" с прикладными программами предполагается использование в Alt-DOS только драйверов использующих для вывода символов экран с 0 адреса, размером в 15К, т.е "расширенный" экран, имеющий размер 480*256 пикселов. Для Alt-DOS, в отличие от ACP/M не сделаны версии драйверов с "микротекстом" (т.е с символами 5*10), а используются только шрифты с размерами 6*10 и 8*10, что значительно повышает качество отображаемого текста. Кроме того, чтобы "развязать программистам руки" при создании графических программ, предполагается, что программы могут сами осуществлять доступ к экранному ОЗУ, для которого стандартизуется использование только ОЗУ 0-3BFF,во всех 3 банках. То есть (также, как на IBM PC) в системе Alt-DOS допускается работа с экраном "напрямую", без использования функций КОНСОЛИ, как в CP/M. Разумеется такой "некорректный" с точки зрения DOS вывод на экран исключает использование программ на других ЭВМ и лишает возможности в дальнейшем улучшать "видео-адаптер" ОРИОНА. Однако очевидно, что дальнейшее усовершенствование графических возможностей "ОРИОНА" уже не имеет смысла. "ОРИОН-ПРО" - совместим с таким режимом экрана (480*256, CGA).

3. Alt-DOS полностью совместима с CP/M и все ее функции работают, но теперь работа файловых функций осуществляется только в пределах текущего каталога. Дискеты CP/M ОРИОНА читаются без проблем, а при чтении дискет Alt-DOS в среде CP/M возможно считывать файлы лишь первых 16 каталогов. Alt-DOS в отличие от всех старых версий CP/M предполагает наличие любых форматов диска, и формат определяется системой автоматически. При этом даже на обычном НГМД удается получить емкость диска в 900К (83 трэка, 6 секторов по 1К). Для повышения скорости работы рекомендуется использовать наш FORMAT с интерливингом. В отличие от всех старых версий CP/M, дискеты теперь могут использоваться на весь возможный обьем (т.е как DR-DOS позволяет иметь 82-83 трэка на диске). Alt-DOS впервые на ОРИОНЕ позволяет иметь подкаталоги (до 64-х) с любой степенью вложенности. Для их поддержки введено 6 дополнительных системных функций Впервые еа ОРИОНЕ (кроме наших "сырых" версий ACP/M-1.57H) поддерживается работа High-Density НГМД. На дисководе 3,5" - 1.6 Мб, на 5,25" - 1.44 Мб. Но при этом требуется немного доработать стандартный КНГМД и иметь такт - 5 МГЦ

4. Командный процессор Altair DOS (CCP) полностью переработан (по отношению к CCP CP/M). Исключены все упр.коды CP/M для редактирования командной строки. Редактирование командной строки теперь осуществляется также, как в MS-DOS -с помощью курсорных клавиш и <Del>. Введен тимплет символов (запоминаются 2 последние команды длиной до 128 символов). Так, как опрос клавиатуры организован на прерываниях, то появилась возможность рeализовать буфер клавиатуры (как на IBM-клавиатуре) длиной в 20 символов. Внутренние команды CP/M полностью сохранены (мнемоника и работа, сами п/п-мы все переработаны) и добавлены новые команды: CD (CHDIR), MD (MKDIR), RD (RMDIR) и PATH (аналог: MS-DOS)

5. Существенно изменена процедура "горячего старта" CP/M. При холодной загрузке Alt-DOS, CCP и BDOS сохраняются в спец.буфере и восстанавливаются по Ctrl/C из буфера, а не считываются с дискеты. Это во-первых существенно ускоряет работу, а во-вторых позволяет использовать и не системные диски. Кроме того сама процедура горячего старта существенно изменена (например теперь, можно менять диски в разной плотности в POWER-e, - ранее в старых версиях CP/M для ОРИОНА, для этого приходилось выходить в систему CP/M и давать Ctrl/C там).

6. Улучшена работа подпрограмм BDOS/BIOS. Работа с диском ускорилась на 25%, а при HD - на 50%. Устранены ошибки CP/M. Теперь при замене диска всегда выдается каталог установленного диска (а не того, который стоял ранее), т.е не требуется обязательного Ctrl/C. При формате 800К размер группы оставлен в 2К а для формата в 1.44/1.6 Мб размер увеличен (Это определяет программма FORMAT)

7. Впервые в DOS ОРИОНА профессионально поддерживается мышь. Для работы с мышью введено более 20 системных функций (полные аналоги MS-DOS V5). При этом мышь может быть любой (Если у Вас нестандартная мышь достаточно самому написать десяток команд и встроить в драйвер). Обработка мыши осуществляется по прерываниям. Курсор мыши не затирается программами. Имеются версии БК, КОРВЕТА.

8. В отличие от CP/M, ОЗУ доступное для программ может значительно превышать 48 килобайт. ОЗУ в 48 Кб (TPA CP/M) считается основным TPA. Однако прикладные программы теперь имеют возможность использовать ОЗУ в банках 0, 2, 3. Это ОЗУ может использоваться резидентными программами (доступными в любой момент) и драйверами (консоли и внешних устр-в). Для исключения конфликтов программимеются системные функции по управлению памятью этого "дополнительного TPA". Такой подход (наряду с использованием системы шлюзов и постоянного контроля конфигурации аппаратуры) позволяет загружать драйвера и программы в любые области ОЗУ ОРИОНА и реализовать "режим коммутируемой многозадачности".

9. Система Alt-DOS занимает в памяти 31 килобайт адресного пространства. BDOS и BIOS, аналогичные CP/M, а также CCP занимают 15К ОЗУ с адреса C400 в банке 1 (используется и "под-ПЗУ-шечное" ОЗУ). ОЗУ выше C000 в банке 0, также недоступно для прикладных программ и используется под буфера, служебной области и загрузки стандартных драйверов консоли, мыши, принтера и электронных дисков. Однако пользователь имеет возможность загрузить и свой собственный "нестандартный" драйвер, но не в эту системную область, а ниже - ниже адреса C000 в основной банке ОЗУ. Для подключения внешних драйверов используется система шлюзов. Имеется единая входная точка, используемая для интерфейса с аппаратнозависимыми драйверами системы. Эта точка может быть использована прикладными программами для управления и работы с внешними драйверами системы. Эта единая входная точка имеет адрес F201H. Это - oсновной вход системы "шлюзов". Использование такой системы "шлюзов" для работы с драйверами, позволяет обеспечить максимальную гибкость и удобство расширения. Ниже описано лишь несколько "шлюзов" позволяющие "управлять консолью". Кроме этих "шлюзов" имеются еще около 20 других, дающие возможности, сравнимые по сервису с MS-DOS. Ниже описаны лишь традиционые для CP/M способы интерфейса. Итак, для вызова "шлюза" программа должна выполнить команду "CALL F201", предварительно занеся в регистровую пару HL адрес размещения векторов вызывамого шлюза. Однако в служебных ячейках "конфигурации" - т.е в ячейках F3F9 и F3FB должны быть занесена верная информация о программировании портов F9 и FB (иначе драйвер не вернет управление в Вашу программу). Под векторами "шлюза" понимается - 4 байта, а именно - адрес п/п-мы к которой Вы осуществляете доступ через данный "шлюз" и 2 байта конфигурации, т.е - программирование портов F9 и FB. Всю работу по переключению конфигурации, передаче управления вашей п/п-ме и восстановление конфигурации и возврату в Alt-DOS, сделает сама программа F201. Единственным условием является лишь установка стека на адрес выше F000 (при работе DOS стек устанавливается на F380/B0). Таким образом драйвера системы могут располагаться вообще в любом месте ОЗУ ОРИОНА. Программа "вызова шлюза" F201 не портит регистров процессора (кроме AF и HL) и стек, так что можно передавать параметры функциям в регистрах. Итак, для того, чтобы вызвать из Alt-DOS любой внешний драйвер или п/п напрямую Вы можете это сделать 2-мя командами:

LD HL, ADDR и CALL F201, где ADDR - адрес размещения векторов шлюза. Для хранения адресов векторов шлюзов система использует область F200. Вы можете заменять вектора стандартных шлюзов,размещая Ваши вектора в области F000-F200.

Вот перечень адресов основных векторов, необходимых для использования напрямую традиционных для CP/M системных функций (или их замены на Ваши п/п-ммы):

CONOUT: вектор шлюза - F210 (вывод символа на консоль, аналог CP/M функции)
STATUS: вектор шлюза - F208 (все как в CP/M, проверяет буфер консоли)
INKEY: вектор шлюза - F20C (это п/п-мма F803 ОРИОНА, ждет символа с кл-ры)
RDKEY: вектор шлюза - F228 (это п/п-мма F81B ОРИОНА, чтение клавиатуры на лету)
INT-50: вектор шлюза - F224. Это не функция, а обработчик прерывания, но обрабатывается также. Т.е это обычный "шлюз". Если Вам надо загрузить свой дополнительный обработчик прерывания, то возьмите адрес вектора стандартного прерывания отсюда и занесите сюда адрес вектора Вашей п/п-мы. Но после обработки Вашей задачи "прерывания", обязательно должна отработать и стандартная п/программа, иначе не будут "реагировать" клавиши (т.е ф-и работы с клавиатурой) или надо включить режим обычной программной клавиатуры - не использующий прерываний).

10.Прерывания пока, решают лишь 3 задачи - стандартное обслуживание клавиатуры (ввод в буфер, до 20 символов и писк по переполнению буфера), опрос и реинициализация часов на 580ВИ53 (F740, 50 Гц, канал 2 - надо опрашивать не реже, чем 1 раз в 5 минут, иначе переполняются и сбивается время) и опрос, ввод и обработка данных мыши. Адрес буфера мыши (3 ячейки) определяется драйвером. Наш драйвер мыши - по нашей схеме, на порту F600, обслуживает мышь КОРВЕТА. Каждый может делать свой драйвер, вернее его аппаратно-зависимую часть. Задача вашей п/п-мы записать 3 ячейки (см.X, см.Y, кнопки). Это программа доступная даже начинающим. Остальное, - перемещение курсора по экрану, корректную работу более 20 удобных для программиста функций (MS-DOS V5) обеспечивает система. Поэтому все программы в Alt-DOS поддерживают мышь. Для подключения Microsoft-мыши используйте стандартизованные нами адреса 580ВВ51 (COM) Полное описание интерфейса мыши, полный исходный ассемблерный текст драйвера (60 Кб), инструкции по созданию драйверов поставляются вместе с системой.

11.Программирование для Alt-DOS ничем не отличается от CP/M. Рекомендуется пользоваться выводом на экран через функции консоли, используя упр.коды стандартного драйвера. Первая версия стандартного драйвера поддерживает все упр. коды стандартного CP/M-терминала (DEC VT52), цвет, и некоторые оконные функции (совпадающие с кодами драйвера в АТМ-ТУРБО). Если программе требуются графические возможности, то она может осуществить непосредственный доступ к экранному ОЗУ. Если программа использует не только ОЗУ в основном TPA, но и использует ОЗУ в банках 0,2,3, то необходимо (с пом.ф-ций) убедиться, что это ОЗУ не использовано драйверами, резидентными программами (или остальными задачами, при коммутируемой многозадачности).

12.Все системные программы после выхода должны возвращаться в DOS. При этом желательно восстанавливать "среду" на момент старта программы. То есть, по возможности восстановить или очистить после себя экран. Если программа загружает свой драйвер консоли, то после выхода она должна восстановить стандартный драйвер. Для выхода в DOS, как и в CP/M достаточно сделать JMP 0, причем восстанавливать режимы системных портов не обязательно (по горячему старту стандартный драйвер восстановит все сам). Однако, если Вашей программе понадобится "грохнуть" ОЗУ в области связи CP/M (100H байт с адреса 0), то надо поступить следующим образом. При старте Вашей программы, Вы должны считать 2 адреса - в ячейках 01/02 и в ячейках 06/07. После этого Вы должны использовать функции, делая вызов стандартных ф-й, не командой "CALL 5", а использовать адрес из ячеек 06/07. А для возврата в DOS - просто сделайте JMP по адресу из ячеек 01/02, не заботясь больше ни о чем. При этом произойдет горячий старт системы. При этих условиях, Ваша программа может использовать область связи CP/M в 100H байт, т.е использовать ОЗУ размером в 96К, и вертеть им с помощью диспетчера ОЗУ, как заблагорассудится. Единственное условие - не портить системных ячеек в области F200-F3FF и не портить ОЗУ в обоих банках выше C000. Имея приведенную информацию Вы легко сможете разобраться в том, как загрузить в Alt-DOS свой драйвер - например Ваш красивый драйвер вывода символов (хотя Alt-DOS сразу допускает и работу программ с экраном "напрямую"). Для загрузки драйвера вывода символов Вам нужно лишь разместить в любом понравившемся Вам месте ОЗУ (рекомендуется грузить пользовательские драйвера ниже области стандартных драйверов - т.е ниже C000) и разместить в ячейке F210 адрес Вашей п/п-мы, и 2 байта конфигурации памяти  содержимое портов F9 и FB (эти байты выводятся в порты F9 и FB при вызове Вашей п/п-мы) В принципе Ваш драйвер можно загрузить и в область стандартных драйверов и для этого в системе имеются дополнительные возможности по управлению памятью в области C000-FFFF основной банки и это используют стандартные драйвера.

Ваш драйвер проще грузить не в системное ОЗУ. При выходе из Вашей программы или выгрузке Вашего драйвера Вы должны восстановить эти 4 байта вектора шлюза. При создании системных программ необходимо также учитывать, что если Ваша программа будет непосредственно работать с FDC - 1818ВГ93 (напрямую, не через BIOS, а это делают дисковые защиты и читалки MS-DOS), то прерывания перед каждой дисковой операцией должны быть запрещены (иначе приход 50-ти герцового прерывания для обслуживания клавиатуры вызовет дисковую ошибку).

 Alt-DOS и стандартные драйвера КОНСОЛИ не портят векторов п/п-мм МОНИТОРА, т.е векторов ПЗУ F800 и при работе Alt-DOS это ПЗУ "включено". Поэтому при желании Вы можете даже использовать какие-либо особенно полюбившиеся Вам подпрограммы ПЗУ F800 (разумеется помня, что перед вызовом некоторых п/п-мм надо отключить диспетчер ОЗУ и включить портом F9 основную банку). Однако мы не советуем этого делать, т.к появляются все более новые версии ПЗУ F800, и некоторые функцииции могут изменяться. Например в новых версиях М-3, вместо никому не нужных п/п-мм запроса и установки RAMTOP (пережиток от РК86) введены входы п/п-мм чтения и записи сектора (в 256 байт) на электронный диск. Конструкцию диска и его схему при этом каждый может иметь свою, не боясь потерять совместимость с любой системой (можно иметь ORDOS на 512К) - достаточно лишь загрузить драйвер электронного диска, в соответствии с конкретной схемой Вашего электронного диска.

13.Alt-DOS благодаря грамотному и целесообразному использованию ОЗУ позволяет использовать все программы, сделанные для CP/M ОРИОНА-128, причем обеспечивается возврат в DOS при выходе из них. Это возможно за счет того, что не цветные программы работают через КОНСОЛХ,а цветные программы сами переключают экраны. Все фирменные программы CP/M работают без ограничений. Некорректные авторские программы, т.е нагло лезущие прямо внутрь BDOS не будут работать (пока известна лишь 1 такая программа). Полностью использовать все возможности Alt-DOS могут только новые специально созданные для нее программы.

Чистяков Владимир, Санкт-Петербург, август 1994

    

Купить платы, готовые блоки, наборы микросхем, прошитые ПЗУ, микропроцессоры на Орион-128, КР565РУ5В, КР565ру7В, к565ру5г AU, к565ру7г Au в позолоте, куплю микросхемы

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу