Радио-86РК/Радио 03-93/ДОС

Материал из Emuverse
Перейти к: навигация, поиск
Red copyright.png Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: Е. СЕДОВ, А. МАТВЕЕВ

Источник: http://retro.h1.ru/RK86/DOS_RK/DOS_RK.php

Дисковая операционная система (ДОС) ПЭВМ «Радио-86РК» совместно с контроллером [Л] обеспечивают запись, считывание и обработку информации, хранящейся в виде файлов на гибких магнитных дисках (ГМД) диаметром 5,25 дюйма (130 мм).

ДОС может работать с одним или двумя накопителями с логическими именами А: и В: и номерами 0 и 1. Если имеется один накопитель, ему присваивается номер 0 и имя А:. Буквы латинские (нижний регистр клавиатуры), двоеточие после букв являются признаком накопителя и при диалоге с операционной системой обязательны.

ДИАЛОГ С ДОС

Диалог с ДОС заключается в вводе команд набором на клавиатуре и выводе ответных системных сообщений на экран дисплея.

Адрес запуска ДОС Е000Н. По команде МОНИТОРа GE000 активизируется накопитель с логическим номером 0 и, если это первый запуск ДОС после включения ПЭВМ, начинается поиск на диске файла автозапуска системы AUTOEXEC.BAT (см. раздел статьи «Исполняемые файлы»). Если на диске его нет, на экран дисплея будет выведено сообщение FILE NOT FOUND и приглашение ДОС к вводу команд:

А>

Это означает, что система готова к выполнению операций с накопителем А:. Для смены текущего накопителя при работе с двумя НГМД достаточно набрать имя второго накопителя, двоеточие и нажать клавишу «ВК». Переходе накопителя А: на В: на экране дисплея отобразится так:

А>В: 

Если второй накопитель существует и в нем установлен ГМД он станет активным и появится приглашение к работе с накопителем В:

В> 

В противном случае последует сообщение:

NO DISK

а текущим останется накопитель А:.

Если за именем накопителя указать одну из команд ДОС, то после смены накопителя она будет выполнена, например:

А>В: DIR 

Произойдет смена текущего накопителя с А: на В: и на экране появится каталог ГМД, установленного в накопитель В:. Смена текущего накопителя не произойдет, если имя накопителя указать после команды:

А> DIR В:

Отметим, что пробел между командой и именем накопителя обязателен. ДОС игнорирует пробелы, но в этом и других подобных случаях без пробела она не сумеет правильно идентифицировать команду, так как слитное написание DIRB: будет воспринято ДОС как неизвестная команда.

ФАЙЛЫ

Файл — это любая поименованная информация на физическом носителе (в данном случае ГМД): тексты, коды или данные. В зависимости от характера информации файлы классифицируются по типу (расширению имени). Расширение имени дается файлу программой, его создавшей, или же оператором. В имени допускается использовать от 1 до 10 алфавитно-цифровых символов, в обозначении типа 1—3 символа. Тип может отсутствовать. Имя и тип образуют полное имя файла. Идентификация файлов производится ДОС по имени и типу.

ШАБЛОНЫ ИМЕН ФАЙЛОВ

Очень часто при работе с ГМД возникает необходимость обработки группы файлов, имеющих сходные имена или типы. В этих случаях удобно пользоваться шаблонами. В шаблонах применяются символы «*» (звездочка), заменяющие любое количество любых, в том числе и отсутствующих символов, и «?» (знак вопроса), заменяющий любой один символ. Поясним роль этих символов на примере использования шаблонов в команде DIR :

А> DIR А*.*  — вывод всех файлов, имена которых начинаются с буквы «А», независимо от расширения; 
A> DIR *ON.* — вывод всех файлов, имена которых оканчиваются на «ON», независимо 

от типа файла;

А> DIR ?.TXT — на экран выведутся все файлы с расширением ТХТ, имена которых 

состоят из любого одного символа;

А> DIR L?L.* — все файлы, имена которых состоят из трех символов, начинающиеся 

и оканчивающиеся буквой «L», независимо от типа.

КОМАНДЫ ДОС

Общий формат команд ДОС следующий:

КОМАНДА (ИМЯ НАКОПИТЕЛЯ:)

Параметр (ИМЯ НАКОПИТЕЛЯ:) является необязательным, при его отсутствии подразумевается текущий (активный) накопитель. Здесь и далее необязательные параметры команд ДОС заключены в фигурные скобки.

Команды ДОС подразделяются на встроенные и внешние. Подпрограммы выполнения встроенных команд хранятся в ПЗУ ДОС, в то время как подпрограммы внешних команд — на гибком диске.

ВСТРОЕННЫЕ КОМАНДЫ

DIR {диск:} (имя.тип) — вывести на экран каталог диска, где {диск:} —накопитель А: или B :, логическое имя диска и имя файла могут отсутствовать. При исполнении команды DIR выводится список имен файлов с указанием типа. Справа от имени — размер файла в секторах, а в конце списка — количество файлов и количество свободных секторов на диске. Нажатие клавиши «ПРОБЕЛ» приостанавливает вывод на экран, любой другой после этого — продолжает его, нажатие «F4» приводит к досрочному завершению исполнения команды. Вывод по этой команде «каталога» одного файла производят дня получения информации о его размере.

TYPE {диск:} имя [.тип) — распечатать содержимое файла на экране. Действие клавиш «ПРОБЕЛ» и «F4» аналогично их действию в команде DIR . Если тип файла не указан, то будет распечатан первый встреченный на диске файл с указанным именем. Использование шаблонов здесь не допускается.

Пример:

А> TYPE ОПИСАНИЕ1.ТХТ  

LOAD {диск:} имя(.тип) —загрузить файл в память компьютера. Если тип файла не указан, будет загружен первый встреченный на диске файл с указанным именем. Использование шаблонов не допускается.

Пример:

А> LOAD BASIC  

SAVE {диск:} имя(.тип), адрес начала, адрес конца — запись содержимого области памяти на диск. Адреса начала и конца программы задаются так же, как и в команде O системного МОНИТОРа компьютера. Допускается работа с интервалами ОЗУ 0000-71FFH и 76D0H −7FFFH . Следует помнить, что верхняя граница 71FFH может быть значительно меньшей во всех случаях, когда команда выполняется из пакетного файла (а не после ввода с клавиатуры ПЭВМ) либо когда открыт файл для чтения или записи.

Примеры:

А> SAVE В:BASIC.COM,0,22FF 
А> SAVE PACMAN.COM,6000,71FF  

При попытке указать недопустимые значения параметров команды на экран будет выведено сообщение о синтаксической ошибке: SYNT ERR

ВНЕШНИЕ КОМАНДЫ

При выполнении внешней команды операционная система загружает необходимый файл с диска в ОЗУ компьютера и запускает его на исполнение. Очевидно, что предварительно необходимо установить в накопитель диск, на котором находятся файлы с внешними командами.

RENAME {диск:} имя1.тип1, имя2(.тип2) — переименовать файл. Здесь имя1.тип1 — старое полное имя файла, а имя2(.тип2) — новое. Если файл с присваиваемым именем на диске уже имеется, то последует сообщение об ошибке. Шаблоны использовать нельзя.

Пример:

А> RENAME START.TXT. AUTOEXEC.BAT 
В> RENAME A:START.TXT START.DOC  

Во втором случае файл с подпрограммой внешней команды RENAME будет загружен с накопителя В: и переименует файл START.TXT на накопителе А:.


ERASE {диск:} имя.тип — удалить файл. Команда допускает использование шаблонов, в этом случае будут удалены все файлы, имена которых соответствуют указанному шаблону. При использовании шаблона «*.*» удаляются все незащищенные от записи файлы (см. описание команды ATTRIB).

Пример:

А> ERASE START.TXT 
А> ERASE В:*.BIN 

FORMAT диск:(/SN) — форматирование (разметка) диска. Диск подготавливается для работы с ДОС ПЭВМ «РАДИО-86РК», ранее записанная на нем информация теряется. Операция сравнительно продолжительная и зависит по времени от качества дискеты. Параметр /SN задает длину каталога, где N — длина в секторах от 1 до 99. По умолчанию длина каталога при форматировании 4 сектора. По завершении операции выводится сообщение о количестве годных свободных секторов. Если дискета хорошего качества и ДОС при форматировании не забракует ни один сектор, а под каталог отведено 4 сектора, то количество свободных секторов будет равно 795.

ATTRIB {диск:} имя(.тип), W/N или

ATTRIB {диск:} имя(.тип}, R/N — запись атрибутов файла. Возможно применение шаблонов.

W — установить (N=1) или снять (N=0) защиту от удаления файла или от записи новой информации под тем же именем. Защищенные файлы в каталоге помечаются звездочкой слева от имени.

R — установить (N=1) или снять (N=0) защиту от вывода имени файла на экран командой DIR . В случае длинного каталога удобно часть файлов, например системных, для более компактного вывода «скрыть».

Примеры:

А> ATTRIB ASM.COM,W/1
А> ATTRIB *.SYS,R/1
A> ATTRIB В:*.COM,W/0
А> ATTRIB *.*,R/0  

FCOPY имя.тип — копирование файлов на одном дисководе. После чтения файла с эталонного диска-образца произойдет остановка для установки диска-копии. На запросы ДОС отвечают после установки соответствующего диска нажатием любой клавиши. На диске-оригинале должен быть файл с подпрограммой команды копирования FCOPY.SYS.

Пример:

А> FCOPY ASM.COM  

FCOPY2 имя.тип — копирование файле с текущего накопителя на второй. Копирование происходит без остановки, в накопителях заранее должны быть установлены диски (оригинал — в текущем). На диске-оригинале должен быть файл FCOPY2.SYS.

Пример:

А> FCOPY2 FORT.COM >  

TCOPY2 {диск:} имя.тип — копирование файла с диска на магнитофон в формате директивы О МОНИТОРа компьютера. Файл TCOPY2.SYS должен находиться на диске оригинале. После загрузки копируемого файла сразу же начнется его вывод для записи на магнитофон.

Пример:

А> TCOPY2 BASIC.COM  

LOADA {диск:} имя(.тип) —то же, что LOAD, но с выдачей адресов начала и конца загруженного файла. На диске-оригинале должен быть файл LOADA.SYS.

SE — запуск операционной оболочки ДОС, состоящей из двух файлов:

  • SE.COM — стартовый файл;
  • SE.EXE — операционный файл.

Эти файлы должны находиться на одном диске. После запуска оболочки на экране появляется таблица из трех колонок, в которых перечислены имена всех файлов диска, выше таблицы расположена строка подсказок, ниже — имя текущего накопителя.

Управление оболочкой с клавиатуры осуществляется клавишами алфавитно-цифровых символов (ими вводятся команды обычным способом) и клавишами управления курсором (ими можно выбрать в таблице требуемый исполняемый файл и нажатием «ВК» запустить его). Программы, требующие для нормальной работы указания после имени дополнительной информации, например подпрограммы некоторых внешних команд ДОС, вызывать установкой курсора нельзя. Операционная оболочка SE использует и функциональные клавиши:

  • «F2» — очищает экран и переводит ДОС в режим ожидания ввода команды;
  • «F3» — копирует выбранный файл с запросом имени накопителя-приемника. На запрос следует отвечать нажатием клавиш «А» или «В». Если указано имя текущего накопителя, производится копирование с остановкой для смены диска-оригинала на диск-копию (аналогично FCOPY), иначе копирование с текущего дисковода на второй без остановки (аналогично FCOPY2);
  • «F4» — распечатывает выбранный файл на экране (аналогично команде TYPE);
  • «ПС» — удаляет выбранный файл после утвердительного ответа на запрос DEL (Y / N)— Y, после отрицательного ответа N удаление отменяется;
  • «СТР» — выбор текущего накопителя. Используется для смены накопителя или чтения каталога нового диска, для чего достаточно нажать клавишу с именем выбираемого накопителя или (если накопитель не меняется) клавишу «ВК»;
  • «УС» — при нажатии и удержании происходит переход к групповым операциям. Верхняя строка (подсказка) изменяется соответствующим образом;
  • «УC+F2» (одновременное нажатие клавиш «УС» и « F2»)—удаляет все файлы, выведенные в таблице оболочки;
  • «УС+FЗ» — копирует все файлы, выведенные в таблице, с запросом имени накопителя-приемника (выбор накопителя аналогично — «F3»);
  • «УС+F4» — включает фильтр таблицы. Требуется ввод шаблона полных имен файлов, затем, после нажатия клавиши «ВК», в таблице остаются только имена файлов, удовлетворяющие шаблону. При старте пакета SE автоматически устанавливается фильтр *.* (вывод всех файлов);
  • «УС+ПС» — выход из оболочки в ДОС;
  • «УС+СТР» — удаляет из таблицы отмеченное курсором имя файла. Как и фильтр, используется для операций группового копирования или группового удаления файлов;
  • «АР2» — отмена выбранной, но еще не исполненной команды.

Если при запуске программы из оболочки SE будет выведено сообщение об ошибке из-за нехватки места в ОЗУ, то следует выйти в ДОС и повторить запуск программы непосредственно из ДОС.

ПОСЛЕДОВАТЕЛЬНЫЕ КАНАЛЫ ВВОДА-ВЫВОДА

Важнейшее свойство любой ДОС — способность управлять потоками информации. Источниками или приемниками потоков могут быть файлы, клавиатура, экран, принтер, а при наличии драйверов и другие абоненты. ДОС «РАДИО-86РК», кроме файлов, использует два стандартных устройства:

CON — (консоль) клавиатура для источника и экран монитора для приемника информации;

PRN — принтер.

Имена этих устройств можно использовать в командах ДОС.

Заметим, что ДОС «РАДИО-86РК» снабжена простейшей программой вывода информации на принтер. Для ее использования достаточно приемником информации назначить принтер, например указав его в командной строке, как показано ниже в первом примере. Вывод происходит через порт D14 компьютера, через линии канала А передаются данные, через линию РСЗ — сигнал готовности (READY) и через РС7 — строб (STROBE). При необходимости пользователь ДОС может воспользоваться и более совершенными драйверами.

Примеры:

А> DIR,  PRN — распечатать на принтере каталог диска; 
А> TYPE имя{.тип}, PRN — вывести на принтер текст файла; 
А> TYPE CON.PRN — включить вывод с клавиатуры на принтер (эхо-печать), 
                  выход из режима — клавиша «F4»;
А> TYPE ТЕКСТ.ТХТ,В:КОПИЯ.ТХТ - вывести файл TEKCT.TXT с накопителя А: 
                                в файл КОПИЯ.ТХТ на накопителе В:
А> DIR *.TXT, CATALOG.DIR — сформировать на диске файл CATALOG.DIR из имен 
                            всех текстовых файлов;
А> TYPE CON, CONSOL.TXT — создать файл CONSOL.TXT набором с клавиатуры.

ИСПОЛНЯЕМЫЕ ФАЙЛЫ

Расширение имени исполняемого файла может, как отмечалось ранее, состоять из любых 1-3 символов или отсутствовать. Три типа файлов ДОС поддерживает непосредственно: COM, SYS, ВАТ.

Файлы этих типов загружаются и запускаются автоматически, достаточно набрать имя файла без расширения и нажать клавишу «ВК». Если на диске имеются файлы с одинаковым именем, будет запущен первый встретившийся. Для вызова конкретного файла нужно указать полное имя, с указанием типа.

Файлы типа СОМ — это обычные исполняемые файлы: интерпретаторы и компиляторы языков программирования, прикладные и игровые программы в машинных кодах. Обычно такие файлы создаются записью на диск по команде SAVE . При запуске коды загружаются с адреса, указанного в SAVE, и управление передается на первый адрес загруженных кодов.

Файлы типа SYS — перемещаемые, могут работать в любом месте памяти и загружаются в верхнюю область ОЗУ, не занятую системой в данный момент.

Файлы типа ВАТ — пакетные (командные), состоящие из списка команд ДОС или имени файла, который допускает обработку ДОС. Это обычные текстовые файлы, созданные, например, редактором «МИКРОН», которым оснащены ассемблер, макроассемблер, СИ и другие программы. Создав такой файл, не забудьте записать его на диске типом (расширением) ВАТ.

Для исполнения файла типа ВАТ на том же диске должен находиться и файл интерпретатора команд COMMAND.COM.

Если в пакетном файле вызываются другие файлы типа ВАТ, то при исполнении каждого загружается еще одна копия COMMAND.COM и верхняя граница ОЗУ понижается с каждым разом на 500Н байт.

Пакетные файлы могут содержать комментарии, выводимые на экран по мере поступления. Каждая строка комментариев должна начинаться со слова REM, на диске должен быть файл REM.SYS .

Примером пакетного файла является файл автозагрузки AUTOEXEC.BAT, который автоматически исполняется при первом запуске ДОС. Один из его вариантов:

DIR *.TXT 
REM ЗАГРУЗКА ФАЙЛА TEXT  
LOAD TEXT.TXT 
ASM 

При автозапуске AUTOEXEC.BAT при первом включении ДОС или запуске с клавиатуры произойдет следующее:

  • будет распечатан список всех файлов типа ТХТ;
  • загрузится файл ТЕХТ.ТХТ;
  • загрузится и запустится ассемблер.

СООБЩЕНИЯ ОБ ОШИБКАХ

При общении пользователя с ДОС иногда возникают ошибочные ситуации, распознать которые можно по выдаваемым ДОС сообщениям:

  1. I/O ERR — ошибка ввода/вывода;
  2. DISK LOCKED — диск закрыт на запись;
  3. NO DISK — нет готовности дисковода (не установлена дискета, не закрыт замок дисковода или нет накопителя с текущим именем);
  4. FILE NOT FOUND — файла с указанным именем нет на диске;
  5. SYNT ERR — ошибка в синтаксисе команды;
  6. DISK FULL — диск заполнен полностью;
  7. NO EXT — не указан тип файла, где он обязателен;
  8. RLE LOCKED — файл защищен от записи или удаления;
  9. END DATA — конец файла, открытого на чтение (попытка получить информацию за пределами открытого файла);
  10. HAVE OPEN — файл уже открыт;
  11. NO OPEN FILE — файл закрыт, сообщение выдается при попытке записи или чтения из неоткрытого файла.
  12. NO MEM — мало памяти для работы с ДОС, возникает, например, при многократном вложении файлов типа ВАТ.

Порядковый номер сообщения равен коду ошибки (см. описание переменной ERRORS), обрабатываемому подпрограммой ER_MAN .

ПОДПРОГРАММЫ ДОС

Дисковая операционная система, подобно системному МОНИТОРу ПЭВМ, имеет целый ряд подпрограмм, которые могут быть задействованы пользователем в оригинальных программах. В отличие от подпрограмм МОНИТОРа, вызов подпрограмм ДОС осуществляется по одному адресу — Е001Н, а выбор подпрограммы определяется числом, записанным в аккумулятор микропроцессора компьютера. Наименование подпрограмм ДОС и их краткие описания приведены в табл. 1. Следует заметить, что во всех случаях, когда в табл. 1 упоминается буфер с текстом командной строки, в ее конце должен присутствовать код 00Н. Перед обращением к подпрограммам WRSKT и RDSKT необходимо исполнить подпрограмму ПУСК.

Cодержимое регистра А Подпрограмма ДОС Выполняемая операция
00 START Вход в ДОС с начальной установкой параметров системы
01 START2 Вход в ДОС без начальной установки. Номер дисковода и все каналы ввода/вывода принимают текущие значения, закрываются незакрытые файлы, освобождается

память, занятая ранее для работы ДОС. Позиционирование головки на нулевой трек не производится

02 ВХОД2 лог с ДОС. ДОС переходит в режим анализа командной строки, вводимой

с клавиатуры. После нажатия клавиши «ВК» команда выполняется, затем происходит возврат в исходное состояние, при возникновении ошибки — возврат по адресу системной переменной BREAK (см. табл. 2)

03 DIR Вывод каталога диска. В регистре DE должен быть адрес буфера командной

строки, содержащей текст (диск): {имя} {.тип} (канал вывода). Вместо имени можно использовать шаблоны

04 TYPE Распечатать (вывести) файл. В регистре DE должен быть адрес буфера командной

строки с именем файла и, если необходимо, каналы ввода/ вывода (аналогично п/п DIR )

05 SAVE охранить содержимое части ОЗУ как файл на диске. В регистре DE должен

быть адрес буфера с именем файла и адресами начала и конца интервала памяти

06 LOAD Загрузить файл с диска в память по адресу, заданному п/п SAVE . В регистре

DE должен быть адрес буфера, содержащего имя файла

07 OPFREE Освобождение памяти, занятой ДОС при выполнении подпрограмм OPWR, OPRD,

RDCAT, КОММ, которые во время исполнения запрашивают у диспетчера памяти ДОС З00Н ячеек, устанавливают все оперативные переменные (см. табл. 2) для обрабатываемого файла (кроме п/п RDCAT ). Поэтому после того, как необходимость в оперативных переменных файла отпадает, необходимо выполнить эту п/п

08 WRSKT Записать сектор на диск. Перед обращением должны быть установлены значения

переменных TTRK, TSKT, BEGS, LENGTS, OPDRV. Результат операции возвращается в аккумуляторе:
А=0 — сектор записан без ошибок;
А=1 — ошибка ввода/вывода;
А=2 — диск защищен от записи

09 RDSKT считать сектор диска, начиная с адреса BEGS. Подпрограмма устанавливает

системную переменную LENGTS. Сектор, трек и диск должны быть указаны переменными TSKT, TTRK и OPDRV соответственно. Результат операции в аккумуляторе:
А=0 — сектор прочитан без ошибок;
А<>0 — ошибка ввода/вывода

OPWR одготовка файла к записи на диск. В регистре HL должен быть указан адрес

буфера строки: {диск:} имя {.тип} Подпрограмма запрашивает З00Н байт. Имя записывается в каталог, один свободный сектор отводится под T/SLIST. Подпрограмма возвращает в регистре ВС номера сектора и трека первого сектора T/SUST

OPRD Подготовка файла к чтению. HL указывает на буфер строки: {диск:} имя (.тип)

Подпрограмма загружает в память T/SLIST, возвращает в DE адрес, который указывает на первый трек и сектор файла, в HL — адрес загрузки файла

KANR Анализ и инициализация канала ввода данных. Регистр HL должен указывать

на буфер с логическим именем канала ( CON, PRN ) или файла, если это файл — открывает его для чтения. Устанавливает переменную OPKANR

0D KANW Инициализация канала вывода. В HL должен быть указан адрес буфера с логическим

именем канала или файла. Если это файл, то он будет открыт для записи. Устанавливает переменную OPKANW

SAVE2 Вместе с OPWR образует подпрограмму SAVE . После выполнения OPWR обращение

к п/п SAVE2 сохраняет содержимое области памяти.
орядок обращения:
МVI А,0АН; код OPWR
CALL 0E001H
LXI D,адрес выхода из SAVE2
PUSH D
PUSH В
PUSH Н
LXI H,начало интервала
LXI D,конец интервала
MVI A,0EH ; код SAVE2
JMP 0E001H
По завершении записи область памяти, используемая п/п OPWR (З00Н), автоматически освобождается

0F LOCVT Найти и занять на диске свободный сектор. Поиск производится с использованием

оперативных переменных, устанавливаемых п/п RDCAT, DIR и т. п. Возвращает номера сектора и трека в регистрах В и С соответственно. При изменениях сектор VTOC должен быть записан на диске параметрами:
BEGS BOOTV (см. табл. 2)
LENGTS=0A0H
TTRK=20H
TSKT=0

10 VSYMB Сравнить три символа, адресуемых регистровой парой HL, с тремя символами,

адресуемыми парой DE, результат сравнения возвращается в регистре признаков F:
Z=1 — одинаковые символы,
Z=0 — разные

11 FRSVT Освободить сектор. В регистрах В и С нужно указать номер сектора и трека

соответственно. Использование FRSVT аналогично использованию n/n LOCVT

12 DELF Удалить файл по оперативным переменным файла, установленным одной из подпрограмм,

например КОММ

13 RDCAT Считать карту диска VTOC и первый сектор каталога с дисковода, указанного

переменной OPDRV. Устанавливает переменные: ВООТА, BOOTV, ТСАТ, SCAT. Данные помещаются в верхнюю свободную область ОЗУ и занимают объем З00Н байт

14 RCAT Чтение очередного сектора каталога. Если конец каталога, А=04, иначе А=00
15 ANSTR Поиск в таблице (или в секторе каталога), адресуемой регистровой парой

DE, записи, идентичной записи в буфере. Адрес буфера указан регистровой парой HL. В регистр ВС записывается значение шага между двумя записями в таблице. Признак конца таблицы — 00. Подпрограмма возвращает:
— если запись найдена — Z=1, HL — код символа, следующего за последним в записи в буфере (знак препинания, 00Н, 00 и т. д. ) DE указывает на начало соответствующей записи в таблице,
— запись не найдена — Z=0, HL . DE сохраняются. В зависимости от значения переменной FLAG (равна 0 или не равна 0) соответственно разрешаются или запрещаются шаблоны '*' и '?'. Максимальная глубина сравнения — 10 символов

16 ANEXT Элемент подпрограммы ANSTR . Производит сравнение двух записей, адресуемых

HL и DE. Глубина анализа задается в регистре С

17 CONTLD Вместе с OPRD образует п/п LOAD. После обращения к OPRD содержимое HL

(адрес начала загрузки) может быть изменено и затем использовано CONTLD. Системная область ОЗУ освобождается автоматически

18 КОММ оиск файла на диске. Устанавливаются оперативные системные переменные.

При обращении регистр HL должен указывать адрес буфера с именем. Переменная FLAG определяет возможность использования шаблонов имен аналогично п/п ANSTR . Возвращает в аккумуляторе:
А=0 — файл найден,
А=4 — файл не найден.
Занимает З00Н байт ОЗУ

19 КОМ2 оиск очередного имени, удовлетворяющего шаблону
SELBUF Запрос одного или нескольких блоков памяти no 100H байт в верхней части

ОЗУ. В регистре В— количество блоков. Возвращаете регистровой паре HL адрес начала первого блока, имеющего минимальный адрес

FREBUF Освободить несколько блоков памяти, занятых ранее (количество блоков

— в регистре В, адрес первого — в HL )

1C RAMTOP Возвращает в регистре увеличенное на 1 значение верхней границы свободной

памяти

1D OPENR Открыть файл для чтения. HL указывает адрес буфера с именем файла
OPENW Открыть файл для записи аналогично п/п OPENR
1F APPEND Открыть файл для записи дополнительной информации, аналогично п/п OPENR

и OPENW

20 READ очитать 1 байт из файла, открытого п/п OPENR, байт возвращается в аккумуляторе.

Регистр: В=0 — байт достоверный,
В<>0 —конец данных

21 WRITE Записать байт из регистра С в последовательный файл, открытый ранее п/п

OPENW или APPEND

22 CLOSER Закрыть файл, открытый ранее п/п OPENR, освободить память, использовавшуюся

в системной области

23 CLOSEW Аналогично CLOSER, но для п/п OPENW или APPEND
24 INKAN Обращение к подпрограмме ввода байта. При старте ДОС канал ввода — клавиатура.

Он может быть изменен (временно) подпрограммой KANR или изменением системной переменной OPKANR. указывающей адрес программы ввода байта. П/п OPFREE устанавливает значение OPKANR таким же, как KANALR

25 OUTKAN Передача байта из регистра и в канал вывода, при старте ДОС вывод устанавливается

на дисплей с опросом клавиатуры при печати символа 00Н. Если при этом была нажата клавиша «F4», происходит выход по адресу BREAK. Если нажата клавиша пробела, происходит остановка до нажатия любой другой клавиши

26 К Выбор дисковода, указанного оперативной переменной OPDRV
27 STOP нять выбор диска
28 COPYNG Используется в системных программах. Копирование имени из буфера, адресуемого

регистром HL например, в прочитанном секторе каталога), в память, начиная с адреса, указанного в DE по установленным системным переменным (ВООТА)

29 ER_МАN Обработка ошибок, вывод на экран дисплея сообщения об ошибке. Код ошибки

должен быть записан в регистр В. Освобождает всю занятую ДОС память, закрывает открытые файлы. Выход из подпрограммы по адресу переменной BREAK . Переменная RIPERR запрещает (при равенстве 0) или разрешает печать сообщения. Устанавливает переменную ERRORS

ADRESS обращении к ДОС по команде CALL (в аккумуляторе 2АН) возвращает в регистре

HL адрес ячейки, следующей за командой CALL. Используется для построения программ, способных работать независимо от адреса загрузки. Значения регистров DE и ВС сохраняются

LD1 Подпрограмма загрузки (вместе с п/п КОММ составляет п/п OPRD):

MVI A,18H ; КОММ
CALL 0E001H
ORA A
JNZ ERROR ; п/п обраб. ошибок
MVI A,2BH ; LD1
CALL 0E001H
Освобождает память, занятую п/п КОММ

ВХЗ Анализ и выполнение командной строки, адресуемой регистровой парой HL

(см. п/п ВХОД2)

СИСТЕМНЫЕ ПЕРЕМЕННЫЕ

При работе дисковой операционной системы область ОЗУ с адресами в интервале от 7540Н до 75BFH отводится под размещение системных переменных. По ним пользователь, при необходимости, может определить параметры ДОС, необходимые ему при разработке собственных программ. В табл. 2 перечислены системные переменные ДОС и их характеристики. Следует заметить, что переменные по адресам 754С и 754D устанавливаются и используются ДОС и изменять их бесполезно.

Адрес (HEX) Имя переменной Кол-во байт Значение системной переменной
7540 DRIVE 1 Номер дисковода (0 или 1)
7541 OPDRV 1 Оперативный номер дисковода (0, 1). Используется

подпрограммами чтения и записи сектора. При выполнении подпрограммы OPFREE или при входе в ДОС по п/п START2 принимает значение DRIVE

7542 TTRK 1 Текущий номер трека, должен быть установлен

перед записью или чтением сектора

7543 TSKT 1 Текущий номер сектора, как и TTRK устанавливается

перед чтением или записью

7544 BEGS 2 Адрес начала сектора в ОЗУ. Должен быть установлен

перед чтением и записью сектора при выполнении п/п WRSKT и RDSKT

7546 LENGTS 2 Длина сектора (1 — 200Н байт), должна быть

установлена перед записью сектора. При чтении устанавливается ДОС

7548 KS 2 Контрольная сумма сектора, прочитанная с диска
754В ERRORS 1 Результат обмена с диском. ERRORS — 0 — ошибок

обмена нет, иначе — код ошибки

754С NWR 1 Количество попыток записи сектора
754D NRD 1 Количество попыток чтения сектора
754Е TCAT 1 Номер трека каталога с найденным именем (например,

п/п КОММ или КОМ2)

754F SCAT 1 Номер сектора каталога с найденным именем
7550 FLAG 1 Флаг шаблона имени. (FLAG — 0 — запрет использования

шаблонов при поиске в каталоге)

7551 BREAK 2 Адрес выхода по ошибке. При выходе вне ДОС

должен быть восстановлен указатель стека SP

7553 ADRNM 2 Адрес начала найденного имени в прочитанном

секторе каталога. Устанавливается п/п КОММ, КОМ2

7555 ADBUF 2 Адрес имени во входном буфере, по которому

производится поиск файла

7557 ENDNAM 2 Адрес байта, следующего после имени во входном

буфере, по которому производится поиск в каталоге (см. п/п OPRD, OPWR, LOAD, SAVE, OPENR, OPENW, APPEND, DIR)

7559 FLEXT 1 Флаг расширения. Если при поиске файла во

входном буфере в имени был указан тип, принимает значение 2ЕН

755А SPCDIR 2 Адрес свободного места в секторе каталога,

возникшего в результате удаления файла. Устанавливается при поиске любого имени (если в каталоге нет удаленных файлов, то принимает значение 0000)

755С SPCTRK 1 Номер трека с удаленным именем (см. переменную

SPCDIR)

755D SPCSKT 1 Номер сектора с удаленным именем (см. переменную

SPCDIR )

755Е ВООТА 2 Адрес начала буфера, выделенного ДОС для чтения

и записи сектора каталога и T/SLIST. Устанавливается при операциях обращения к диску по имени файла

7560 BOOTV 2 Адрес начала буфера, выделенного ДОС для чтения

и записи карты диска VTOC

7562 RIPERR 1 Вывод сообщения об ошибке, если переменная

равна 0 — вывод запрещен, не равна 0 — разрешен

7564 KANALW 2 Адрес канала вывода байта
7566 OPKANW 2 Адрес временно установленного канала вывода
7568 KANALR 2 Адрес канала ввода байта
756А OPKANR 2 Адрес временно установленного канала ввода
758С KSTRT 1 Если при запуске ДОС переменная KSTRT не равна

DDH, то произойдет холодный старт с позиционированием головки на нулевой трек и выполнением AUTOEXEC.BAT

758D ВАТF 2 Используется для передачи адреса имени файла

типа ВАТ командному процессору

7590 BEGFL 2 Адрес начала файла, загруженного в память
7592 ENDFL 2 Адрес конца файла, загруженного в память

РАСПРЕДЕЛЕНИЕ ПАМЯТИ ДОС

Системная область ДОС занимает область ОЗУ 7500H — 75FFH и распределяется так:

буфер клавиатуры ДОС             7500H—753FH;  
системные переменные             7540Н—75BFH;  
служебные ячейки диспетчера ОЗУ  75С0Н—75FFH. 

В процессе работы ДОС по мере необходимости занимаются и освобождаются блоки по 100Н байт в верхней части свободной памяти. При выполнении команд DIR, SAVE, LOAD занимается З00Н ячеек памяти в области ОЗУ 7200Н—74FFH, TYPE — 400H байт (7100Н—74FFH). Открытый файл для чтения занимает 400Н байт, для записи — 500Н байт.

В процессе работы пакетного файла занимается 500Н байт. Если в пакете выполняется операция DIR, то занято З00Н+500Н=800Н байт (6000Н—74FFH), а в случае вызова еще одного исполняемого файла — А00Н байт.

Е. СЕДОВ, Д. МАТВЕЕВ, г. Москва

ЛИТЕРАТУРА

  • Е. Седов, А. Матвеев. Контроллер накопителя на гибких магнитных дисках для «РАДИО-86РК». — Радио, 1993, № 1, 2.