З.ОПЕРАЦИИ МИКРОДОС
3.1 Стандартные операции
Для использования операций БДОС программист должен подробно
ознакомится с соглашениями по вызову операций и другими
системными концепциями, описанными в предидущих разделах
данного руководства.
С целью обеспечения совместимости с ОС СР/М все операции БДОС,
совпадающие по номерам с соответствующими операциям'г С^/М
версии 2.2 или 3.1, выполняют теже функции. Доступ к
дополнительным операциям МикроДОС, которые не реализованы в
СР/М, возможен через операцию 50:
Вызов операций БСВВ или операций расширенной БДОС.
Операция 0: Сброс системы
Входные параметры:
Регистр С: ООН
Операция прерывает выполнение прерывающей программы и
осущиствляет исполнение "горячего старта". Е(ызов этой операции
эквивалентен переходу в адрес 0000Н.
Операция 0: сброс системы не сбрасывает Дисковую подсистему.
Перед вызовом данной операции программа вызовом операции 108:
Получение/установка кода возврата может установить код возврата.
Операция 1: Ввод с консоли
Входные параметры:
Регистр С: ООН
Выходные параметры:
Регистр А: введенный символ
Операция обеспечивает ввод символа с логического устройства
CONIN: в регистр А. Графические символы, а также, возврат каретки,
перевод строки, возврат на шаг и CTL-H выводятся на консоль. Символ
табуляциирасширяется пробелами до столбца, номер которого кратен
8. СимволыСТЪ-S, CTL-O и CTL-P перехватываются операцией и
осуществляют соответственно приостановку ввода символа на консоль,
возобновление вывода на консоль и включение/выключение режима
параллельного вывода на печать. Символ CTL-D также
перехватывается операцией 1, При вводе этого символа операция
устанавливает признак фонового режима и передает управление
интерпретатору команд. Остальные управляющие символы
возвращаются в регистре А, но на консоль не выводятся.
Если включен режим параллельного вывода на печать, то все
символы, выводимые на консоль, одновременно выводятся и на
логическое устройство печати LIST:.
Операция не возвращает управление вызывающей программе до тех
пор, пока* не будет введен неперехватываемый символ,
приостанавливая таким образом исполнение программ до ввода
символа.
CTL-F отменяет переназначение консоли. Действует только после
ввода CTL-S. В режиме КОИ-8 (команда К) перехватываются символы
CTL-O и CTL-N. После символа CTL-N ко всем символам, вводимым с
консоли, добавляется 1 в старший бит. Символ CTL-O выключает
добавление: старший бит вводимых после него символов равен 0.
Операция 2: Вывод на консоль
Входные параметры:
Регистр С: 02Н
Регистр Е: выводимый символ
Операция осуществляет вывод символа из регистра Б на логическое
устройство CONOUT:. При выводе символы табуляции расширяются
пробелами до столбца, позиция которого кратна 8. Бели включен
режим параллельного вывода на печать, то все символы, выводимые на
консоль одновременно выводятся и на логическое устройство печати
LIST:. Операция 2 вовремя вывода проверяет ввод с консоли
управляющих символов CTL-O и CTL-S. При выводе в режиме КОИ-8
перед последовательностью символов, имеющих 1 в старшем бите,
вставляется управляющий символ CTL-N, а после этой
последовательности CTL-O.
Операция 3: Ввод с дополнительного устройства ввода
Входные параметры:
Регистр С: ОЗН
Выходные параметры:
Регистр А: введенный символ
Операция обеспечивает ввод символа с логического устройства
AUXIN: .Управление не возвращается управляющей программе до тех
пор, пока не будет введен символ.
Операция 4: Вывод на дополнительное устройство вывода
Входные параметры:
Регистр С: 04Н
Регистр Е: выводимый символ
Операция осуществляет вывод символа из регистра Б на логическое
устройство AUXOUT:.
Операция 5: Вывод на печать
Входные параметры:
Регистр С: 05Н
Регистр Е: выводимый символ
Операция осуществляет вывод символа из регистра Б на логическое
устройство печати LIST:.
Операция 6: Прямой обмен с консолью
Входные параметры:
Регистр С: 06Н
Регистр Е: 0FFH (ввод/состояние) или
0FEH (состояние) или
0FDH (ввод) или
символ (вывод)
Возвращаемые значения:
Регистр А: символ или состояние
МикроДОС обеспечивает прямой обмен с консолью для
использования в тех случаях, когда все символы, в том числе и все
управляющие, должны возвращатся вызывающей программе.
Вызывающая программа, в зависимости от необходимой функции,
посылает в регистре Б различные коды.
Ниже приведенны коды, передаваемые операции 6 в регистре Б и
соответствующие им функции.
Операция 7: Опрос состояния дополнительного устройства ввода
Входные параметры:
Регистр С: 07Н
Возвращаемые значения:
Регистр А: состояние устройства
Операция осуществляет опрос состояния логического устройства
AUXIN:. Если устройство готово, в регистре А возвращается значение
0FFH, если оно не готово значение - ООН.
Операция 8: Опрос состояния дополнительного устройства вывода
Входные параметры:
Регистр С: 08Н
Возвращаемые значения:
Регистр А: состояние устройства
Операция осуществляет опрос состояния логического устройства
AUXOUT:. Если устройство готово для вывода символа, в регистре А
возвращается значение 0FFH, если оно не готово значение - ООН.
Операция 9: вывод последовательности символов
Входные параметры:
Регистр С: 09Н
Регистры D&E: адрес начала последовательности
Операция осуществляет вывод последовательности символов,
начальный адрес которой задан в регистрах D&E, на логическое
устройство CONOUT:. Ограничителем последовательности по
умолчанию является Символ $ (код24), однако он может быть изменен
вызовом операции 110 БДОС (установка ограничителя
последовательности). Ограничитель установленный операцией 110,
действует до следующего вызова этой операции или до "горячего
старта" системы, вовремя которого устанавливается значение пб
умолчанию.
Данная операция расширяет символы табуляции пробелами до
столбца, позиция которого кратна 8. Если включен режим
параллельного вывода на печать, символы, выводимые на консоль,
одновременно выводятся на логическое устройстве печати LIST:.
Операция во время выполнения проверяет ввод с консоли
управляющих символов CTL-S и CTL-O.
Операция 10: вывод последовательности символов
Входные параметры:
Регистр С: ОАН
Регистры D&E: адрес буфера
Возвращаемые значения:
символы, введенные
с консоли в буфер
Операция осуществляет прием символов с логического устройства
CONIN: и запись их в буфер, адрес которого передается в регистрах
D&E. Буфер имеет следующий формат:
+0 +1+2 +3 _ +n
1 n 1 С 1CMB1CMB | ........................................ 1 ? I
где
n - размер буфера (максимальное количество символов, которое
может быть принято в буфер), должен иметь значения в прнделах
1...255.
Размер 0 эквивалентен 1.
С - количество символов, принятых в буфер при исполнения
операции.
Символы, вводимые с консоли, записываются в буфер, начиная с
позиции адрес+2. В приведенном формате позиции символов помечены
как "СМВ".
Операция возвращает управление вызывающей программе при вводе
символов "возврат каретки" или "перевод строки". При переполнении
буфера на консоль выводится звуковой сигнал. Перед возвратом
операция 10 устанавливает в позиции С буфера действительное
количество символов, введенных с консоли. Если С < п, то за
последним введенным символом находится неопределенная
информация. Завершающие символы CR и LF в буфер не заносятся и
не включаются в значение С.
Если в регистрах D&E передается 0, операция 10 подразумевает, что
в текущем буфере прямого доступа находится инициализированный
буфер консоли (см. операцию 50/133). Для инициализации буфера
необходимо поместить в него символьную последовательность,
ограниченную нулевым байтом. Когда операция 10 получает
инициализированный таким образом буфер, она вводит из него
символы, как если бы они вводились с консоли. При достижении
нулевого ограничителя, ввод снова производится с консоли, ис этого
момента оператор может отредактировать строку или просто ввести
CR. Это позволяет программе выводить на консоль строку для
редактирования. Однако, если в инициализированном буфере есть
символы CR или LF, управление возвращается программе без
вмешательства оператора.
Во время приема в буфер операция 10 может осуществлять
редактирование вводимого текста с помощью управляющих символов.
Забой удаляет последний введенный символ из буфера и с консоли.
CTL-E физический конец строки. На консоль выводятся символы
CR и LF, после чего продолжается прием в буфер.
CTL-H удоляет последний введенный символ из буфера и с
консоли (действие аналогичное "забою")
CTL-R выводит содержимое буфера на консоль с новой строки
CTL-U аннулирует все введенные символы в буфере. На консоль
выводятся символы CR и LF, после чего возобновляется
прием символов
CTL-X аннулирует все введенные символы в буфере и на консоли
CTL-W восстанавливает предидущее состояние буфера консоли и
выводит его на консоль. После этого, прием символов
возобновляется. Действует только в том случае, если введен
первым.
CTL-" удаляет из буфера и с консоли последнее введенное слово.
CTL-C осуществляет "горячий старт", если символ выведен
_ первым. _
Примечание: Восстановление содержимого буфера консоли символом
CTL-W осуществляется по счетчику буфера. Если прикладная
программа изменяет содержимое счетчика, восстановленное
содержание может быть неверным.
Операция 11: Получение состояния консоли
Входные параметры:
Регистр С: ОВН
Возврагцаемые значения:
Регистр А: состояние консоли
Операция позволяет определить готовность логического устройства
CONIN: для ввода символа. Если символ готов для ввода, в регистре А
возращается значение 01Н, в других случаях - ООН.
Операция 12: Возврат версии системы
Входные параметры:
Регистр С: ОСН
Возвращаемые значения:
Регистр H&L: версия системы
Операция возвращает в регистрах H&L 2-байтовое значение,
определяющее версию системы. При этом регистр Н содержит
значение ООН для однозадачных систем, а регистр L содержит номер
версии в двоично десятичном коде. Например, V2.0 возвращает
значение 20Н, a V3.1 - 31Н и т.д. Использование этой операции
допускает написание программ, не зависимых от версии системы.
Операция 13: Сброс дисковой системы
Входные параметры:
Регистр С: 0DH
Операция обеспечивает програмный сброс файловой системы, при
этом все диски устанавливаются в состояние чтения/записи (R/W).
Текущим диском устанавливается диск А и буфер ПДП по адресу 80Н.
Эта операция может использоваться, например, прикладными
программами, которые требуют во время своего исполнения замены
диска. Для этой же цели используется операция 37: Сброс диска.
Операция 14: Выбор диска
Входные параметры
Регистр С : ОЕН
Регистр Е: выбираемый диск
Возвращаемые значения:
Регистр А: флажок ошибки
Регистр Н: код ошибки
Операция устанавливает диск, заданный регистром Б, для
использования по умолчанию в последующих файловых операциях.
Регистр Б должен быть установлен в 0 для диска А, в 1 - для диска В
и так далее до 15 для диска Р в системе с 16 дисками. Кроме того,
операция устанавливает выбираемый диск в состояние "логически
включен", если он был сброшен. Логическое включение активизирует
оглавление диска до следующих операций сброса системы или диска.
Бели операция 14 завершилась успешно, то в регистре А
возвращается значение ООН. При неуспешном исполнении, если
установлен режим обработки ошибок по умолчанию, на консоль
выводится сообщение об ошибке и производится "горячий старт", т.е.
вызывающая программа прерывается. В режиме возврата в регистре А
возвращается значение 0FFH, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора
Операция 15: Открытие файла
Входные параметры:
Регистр С: 0FH
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Операция активизирует БУФ, адрес которого задан в регистрах D&E,
для файла, существующего на текущем диске в оглавлении с текущим
кодом пользователя или на текущем или на системном дисках с кодом
пользователя 0. В тех случаях, когда файл не содержится в текущей
области пользователя, а находится в области пользователя 0, для
успешного открытия он должен иметь атрибут SYS (системный).
Вызывающая программа посылает в регистрах D&E адрес БУФ, при
этом байт 0 определяет диск, байты 1...11 определяют имя и тип файла,
а байт 12 определяет экстент (обычно байт 12 при открытии файла
должен устанавливатся вызывающей программой в 0). Если доступ к
файлу будет осуществлятся в последовательном режиме, то поле
текущей записи БУФ (ТЗ) должно быть установлено в 0. Если при
вызове операции открытия файла поле текущей записи T3=0FFH, то
операция 15 возвращает в этом поле значение счетчика байтов.
Операция 15 осуществляет следующие шаги при поиске файла в
оглавлении:
- если текущий код пользователя не нулевой, а файл, который
должен быть открыт с данным кодом пользователя не существует,
осуществляется поиск файла на текущем диске с кодом пользователя
0;
- если такой файл с кодом пользователя 0 на текущем диске есть и у
него установлен системный атрибут, то этот файл открывается в
режиме только для чтения;
- если указанного файла на текущем диске с кодом пользователя 0
нет или у него не установлен системный атрибут, то осуществляется
поиск этого файла с установленным системным атриГ/гок на
системном диске (поумолчанию, А:) в области пользователя 0;
-если такой файл на системном диске найден, то он открывается в
режиме только для чтения.
Операция 15 при успешном завершении возвращает в регистре А код
оглавления от 0 до 3. Код оглавления умноженный на 32, дает
смещение БУФ, считанного с диска, в буфере ПДП для оглавления.
Если указанного файла нет, то в регистре А возвращается 0FFH, при
этом в регистре Н возвращается значение ООН. При обнаружении
физической или логической ошибки в режиме обработки ошибок по
умолчанию на консоль выводится сообщение об ошибке и производится
"горячий старт". В режиме возврата в регистре А возвращается
значение 0FF4EI, при этом регистр Н содержит один из следующих
кодов ошибок:
00: файла нет
01: ошибка обмена с диском
04: ошибка выбора диска
09: неявное имя
Операция 16: Закрытие файла
Входные параметры:
Регистр С: ЮН
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Операция исполняет функцию, обратную по отношению к операции
открытия файла. Вызывающая программа посылает в регистрах D&E
адрес БУФ, который был ранее активизирован операцией открытия
или создания файла. Операция закрытия файла обеспечивает запись
текущего состояния файла в оглавление. Бели БУФ не содержит новой
информации (т.е. записьв файл не производилась), то запись БУФ в
оглавление не производится.
Операция 16 при успешном завершении возвращает в регистре А код
оглавления от 0 до 3. Если указанного файла нет, то в регистре А
возвращается 0FFH, при эток в регистре Н возвращается значение
ООН. При обнаружении физической или логической ошибки в режиме
обработки ошибок по умолчанию на консоль выводится сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит один из
следующих кодов ошибок:
00: файла нет
01: ошибка обмена с диском
04: ошибка выбора диска
09: неявное имя
Операция 17: Поиск первого файла
Входные параметры:
Регистр С: ПН
Регистр D&E: адрес БУФ
Возврагцаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Вход оглавления в буфере ПДП
Операция обеспечивает просмотр оглавления с целью нахождения
файла, совпадающего с файлом, заданным в указанном регистрами
D&E БУФ. Операция осуществляет два типа поиска. В первом случае
вызывающая программа устанавливает байты 0...12 БУФ, при этом в
байте 0 указывается диск, в байтах 1...11 указывается имя и тип файла,
а в байте 12 указывается экстент (обычно этот файл устанавливается в
0). Имя и тип файла в позициях 1...11 могут быть неявными. Операция
17 в этом случае осуществляет поиск первого входа в оглавлении с
текущим кодом пользователя, информация в котором совпадает с
заданной в БУФ.
Во-втором случае вызывающая программа устанавливает в байте 0
БУФ символ ?. При этом данная операция игнорирует оставшуюся
часть БУФ и находит первый вход в оглавление на текущем диске. Все
оставшиеся входы могут быть найдены последующими вызовами
операции поиска следующего файла. Этот тип поиска обычно не
используется прикладными программами, однако обесйечивают более
гибкую возможность просмотра оглавления.
Операция 17 инициализирует операцию 18: поиск следуящего входа.
После того, как был найден первый вход в оглавление, совпадающий с
заданным БУФ, для нахождения остальных входов может
использоватся операция 18. Для правильного исполнения она должна
вызываться сразу вслед за операцией 17, между ними не должны
вызываться дисковые операции БДОС.
Операция 17 при успешном завершении осуществляет перезапись
информации из буфера ПДП для оглавления в текущий буфер прямого
доступа и возвращает в регистре А код оглавления от 0 до 3. Код
оглавления, умножение на 32, дает смещение БУФ, считанного с диска,
в буфере ПДП. Бели указанного нет, то в регистре А возвращается
0FFH, при этом в регистре Н возвращается значение ООН. При
обнаружении физической ошибки в режиме обработки ошибок по
умолчанию на консоль выводится сообщение об ошибке и производится
"горячий старт". В режиме возврата в регистре А возвращается
значение 0FFH, при этом регистр Н содержит один из следующих
кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
Операция 18: Поиск следующего входа
Входные параметры:
Регистр С: 12Н
Возвращаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Вход оглавления в буфере ПДП
Операция аналогична операции 17 с тем исключением, что просмотр
оглавления » осуществляется для БУФ, заданного операцией, с
последнего входа, найденого предидущими вызовами операций 17 или
18. Значения, возвращаемые операцией 18 аналогичны значениям,
возвращаемым операцией 17.
Примечание: для правильного исполнения операции 18 между
вызовами операций 17 и 18 и между последовательными вызовами
операций 18 недолжны вызываться дисковые операции БДОС.
Операция 19: Удаление файла
Входные параметры:
Регистр С: 13Н
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Операция осуществляет удаление файлов, указанных БУФ,
заданного реестрами D&E из оглавлеия и освобождает место, занятое
этими файлами в области данных диска. Имя и тип файла могут быть
неявными, однако диск в байте О БУФ должен быть определен. При
исполнении операция проверяет атрибуты файла.
Операция 19 при успешном завершении возвращает в регистре А код
оглавления от 0 до 3. Если указанного файла нет, то в регистре А
возвращается 0FFH, при этом в регистре Н возвращается значение
ООН. При обнаружении физической или логической ошибки в режиме
обработай ошибок по умолчанию на консоль выводится сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит одно из
следующих кодов ошибок:
01: ошибка обмена с диском
03: файл системный или только для чтения
04: ошибка выбора диска
Операция 20: Последовательное чтение
Входные параметры:
Регистр С: 14Н
Регистр D&E: адрес БУФ
Возвраъцаемые значения:
Регистр А: код возврата
Регистр Н: код ошибки
Операция осуществляет последовательное чтение одной или
нескольких записей из файла в память, начиная с адреса текущего
буфера ПДП. Количество считываемых записей определяется
значением мультиселекторного счетчика, который может быть
установлен операцией 44: установка мультиселекторного счетчика. По
умолчанию значение мультиселекторного счетчика равно 1. БУФ,
задаваемый регистрами D&E, должен быть предварительно
активизирован операцией открытия или создании файла.
Операция 20 осуществляет чтение записи, определяемой полем ТЗ
БУФ и затем увеличивает значение поля ТЗ для следующей записи.
Бели полеТЗ переполняется, операция открывает следующий экстент
и сбрасывает поле ТЗ. Для чтения с начала файла вызывающая
программа должна после операции 15: Открытие файла установить
поле ТЗ в 0.
После завершения операция 20 возвращает в регистре А один из
следующих кодов возврата:
00: успешное завершение операции-
01: тение незаписанных данных (конец файла)
255: изическая ошибка (ссылка на регистр Н)
Код 01 возвращается в том случае, если в следующей записи файла
нет данных. Обычно отсутствие данных означает конец файла. Однако
отсутствие данных в следующей записи может возникать и в том
случае, когда файл создавался или корректировался с использованием
операции произвольной записи.
Код 255 возвращается при обнаружении физической ошибки в
режиме возврата ошибки, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском:
04: ошибка выбора диска
При обнаружении ошибки в рёжиме обработки ошибок по умолчанию
на консоль выводится сообщение об ошибке и производится "горячий
старт".
Для всех ошибок, за исключением физических, при возврате
операция 20 устанавливает в регистре Н количество успешно
прочитанных секторов. Это значение может изменятся в пределах от 0
до 127 и всегда устанавливается в 0, если значение
мультиселекторного счетчика равно 1.
Операция 20: Последовательная запись
Входные параметры:
Регистр С: 15Н
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код возврата
Регистр Н: код ошибки
Операция осуществляет последовательную запись одной или
нескольких записей из памяти, начиная с адреса текущего буфера
ПДП в файл. Количество записей определяется значением
мультиселекторного счетчика, который может быть установлен
операцией 44. По умолчанию значение мультиселекторного счетчика
равно 1. БУФ, задаваемый регистрами D&ES, должен быть
предварительно активизирован операцией 15: открытия файла или
операцией 22: создание файла.
Операция 20 помещает запись в файл в позицию, определяемой
полем ТЗ БУФ, и затем увеличивает значение поля ТЗ для следующей
записи. Если поле ТЗ переполняется, операция открывает или создает
следующий экстент и сбрасывает поле ТЗ. Для записи с начала файла
вызывающая программа должна после операции 15 или 22 установить
поле ТЗ в 0.
После завершения операция 21 возвращает в регистре А один из
следующих кодов возврата:
00: успешное завершение операции
01: чтение незаписанных данных (конец файла)
02: нет места на диске
255: физическая ошибка (ссылка на регистр Н)
Код 01 возвращается в том случае, когда операция записи пытается
создать новый экстент, а свободного места на диске нет.
Код 02 возвращается в том случае, когда операция пытается
получить новый блок данных для файла, а свободных блоков на диске
нет.
Код 255 возвращается при обнаружении физической ошибки в
режиме возврата ошибки, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
03: установлен атрибут только для чтения (R) или системный (S)
04: ошибка выбора диска
При обнаружении ошибки в режиме обработки ошибок по умолчанию
на консоль выводится сообщение об ошибке и производится "горячий
старт". Для всех ошибок, за исключением физических, при возврате
операция 21 устанавливает в регистре Н количество успешно
записанных секторов. Это значение может изменятся в пределах от 0
до 127 и всегда устанавливается в 0, если значение
мультиселекторного счетчика равно 1.
Операция 22: Создание файла
Входные параметры:
Регистр С: 16Н
Регистр D&E: адрес БУФ
Возврагцаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Операция создает новый экстент в оглавлении для файла* в текущей
области пользователя. Вызывающая программа посылает в регистрах
D&E адрес БУФ с установленными байтами 0...12 (байт 0 - код диска,
байты 1...11 - имя и тип файла, байт 12 - экстент, обычно 0).
Операция 22 при успешном завершении возвращает в регистре А код
оглавления от 0 до 3. Если в оглавлении диска места нет, то в регистре
А возвращается 0FFH, при этом в регистре Н возвращается значение
ООН. При обнаружении физической или логической ошибки в режиме
обработки ошибок по умолчанию на консоль выводится сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит одно из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
08: файл уже есть
09: неявное имя
Операция 23: Переименование файла
Входные параметры:
Регистр С: 17Н
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Операция использует БУФ, заданный регистрами D&E, для поиска
файла имя которого установлено в первых 16 байт БУФ, и присвоения
ему имени, установленного в остальных 16 байт БУФ. Код в байте О
БУФ используется для выбора диска, код байта 16 БУФ игнорируется.
Операция 23 при успешном завершении возвращает в регистре А код
оглавления от 0 до 3. Если указанного в байтах 0...16 БУФ файла нет,то
в регистре А возвращается 0FFH, при этом в регистре Н возвращается
значение ООН. При обнаружении физической или логической ошибки в
режиме обработки ошибок по умолчанию на консоль выводится
сообщение об ошибке и производится "горячий старт". В режиме
возврата в регистре А возвращается значение 0FFH, при этом регистр
Н содержит одно из следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
03: установлен атрибут только для чтения (Н) или системный (S)
08: файл уже есть
09: неявное имя
Операция 24: Получение вектора состояния дисков
Входные параметры:
Регистр С: 18Н
Возвращаемые значения:
Регистр H&L: вектор состояния дисков
Операция возвращает в регистрах H&L вектор состояния дисков.
Этот вектор представляет собой 16-битовое слово, в котором младший
значащий бит регистра L соответствует диску А, а старший - регистра
Н соответствует диску Р. Состояние бита, равное 1, означает что
соответствующий этому биту диск был активизирован операцией 14:
Выбор диска или исполнением дисковой операции БДОС, при которой
байт 0 БУФ указывал на этот диск.
Операция 25: Получение текущего диска
Входные параметры:
Регистр С: 19Н
Возвращаемые значения:
Регистры H&L: текущий диск
Операция возвращает в регистре А номер текущего диска. Номера
0...15 соответствуют дискам А...Р.
Операция 26: Установка адреса буфера ПДП
Входные параметры:
Регистр С: 1АН
Регистры D&E: адрес буфера прямого доступа
Буфер ПДП используется при исполнении дисковых операций для
записи из него данных на диск или для чтения в него данных с диска.
При значении мультиселекторного счетчика, равном 1, размер буфера
128 байт, иначе размер буфера равен N*128, где N - значение
мультиселекторного счетчика. Некоторые операции БДОС используют
буфер ПДП для передачи или получения параметров. Например,
операция 46: Получение свободного места на диске в первых трех
байтах текущего ПДП.
После начальной загрузки и "горячего старта" адрес буфера ПДП
устанавливается равным 0080Н. Операция 26 позволяет изменить этот
адрес, который сохраняется до тех пор, пока не будет изменен
следующей операцией 26 или установлен в значение по умолчанию
(0080Н) операцией 13: Сброс дисковой системы или "горячий старт".
Операция 27: Получить адрес вектора распределения
Входные параметры:
РегистрС: 1ВН
Возвращаемые значения:
Регистры H&L: адрес вектора распределения
Для каждого активного диска в памяти содержится вектор
распределения, представляющий собой N-байтную величину
(^количество блоков/8+1), в которой каждый байт соответствует
блоку информации на диске. Если бит вектора распределения
установлен в 1, это означает, что соответствующий ему блок занят;
если он установлен в 0, то-блок свободен. Операция 27 возвращает в
регистрах H&L адрес векторов распределения текущего диска. При
обнаружении физической ошибки в режиме возврата обработки
ошибок в регистрах H&L возвращается значение 0FFFFH.
Для определения размера свободного места на диске может
использоваться также операция 46: Получение свободного места на
диске.
Операция 28: Установка защиты записи
Входные параметры:
Регистр С: 1СН
Операция обеспечивает установку текущего диска в состояние только
для чтения. МикроДОС автоматически сбрасывает диск в состояние
чтения/записи при исполнении записи на диск Операция введена для
совместимости с операционной системой СР/М.
Операция 29: Получение вектора защиты записи
Входные параметры:
Регистр С: 1DH
Возвращаемые значения:
Регистры H&L: вектор защиты записи
Операция возвращает в регистрах H&L вектор защиты записи,
указывающий диски, установленные в состояние только для чтения.
Формат вектора защиты записи аналогичен вектору состояния дисков
(операция 24).
Операция 30: Установка атрибутов файла
Входные параметры:
Регистр С: 1ЕН
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр 4: код оглавления или 0FFH
Регистр Н: код ошибки
Операция используется прикладными программами для изменения
атрибутов файла и установки счетчика байтов последней записи.
Операция 30 может сбрасывать и устанавливать следующие
атрибуты:
ИГ...И4' атрибуты пользователя
ФГ только для чтения (R)
Ф2' системный (S)
ФЗ' архивный
Регистры D&E указывают адрес БУФ, содержащего имя файла с
необходимыми сброшенными или устанавленными атрибутами.
Операция 30 обеспечивает поиск файла в оглавлении с текущим кодом
пользователя и корректировку атрибутов. Атрибуты ФГ...ФЗ'
используются МикроДОС, атрибуты ИГ...И4' системой не используются
и могут использоваться прикладными программами.
Значение интерфейсного атрибута И6', равное 1, указывает на
необходимость установки счетчика байтов последней записи. При этом
вызывающая программа должна установить в поле текущей записи
БУФ значение счетчика байтов.
Операция 30 при успешном завершении возвращает в регистре А код
оглавления от 0 до 3. Если указанного файла нет, то в регистре А
возвращается 0FFH, при этом в регистре Н возвращается значение
ООН. При обнаружении физической или логической ошибки в режиме
обработки ошибок по умолчанию на консоль выводится сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит одно из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
09: неявное имя
Операция 31: Получение адреса блока параметров диска
Входные параметры:
Регистр С: 1FH
Возвращаемые значения:
Регистры H&L: адрес блока параметров
Операция возвращает в регистрах H&L адрес блока параметров
текущего диска. Блок параметров диска находится в БСВВ и содержит
параметры диска.
Операция 32: Получение/установка кода пользователя
Входные параметры:
Регистр С: 20Н
Регистр Е: 0FFH (получение) или код (установка)
Возврагцаемые значения:
Регистры А: код пользователя или нет значения (установка)
Операция может использоваться программами для проверки или
установки текущего кода пользователя. Если при вызове операции
регистр E=0FFH, в регистре А возвращается текущий код
пользователя от 0 до 15. Если регистр Е не равен 0FFH, то текущий
код пользователя заменяется заданным в регистре Е по модулю 16.
Операция 33: Произвольное чтение
Входные параметры:
Регистр С: 21Н
Регистр D&E: адрес БУФ
Возврагцаемые значения:
Регистр А: код возврата
Регистр Н: код ошибки
Операция подобна операции 20 последовательное чтение с той
разницей, что из файла считывается запись, номер которой
определяется 24 - разрядным значением, установленным в байтах
33...35 БУФ (байты R0,R1 и R2). Байт R2 должен быть равен 0, так как
ненулевое значение означает выход за пределы файла. Таким образом,
байты R0 и R1 рассматриваются как слово, содержащее номер записи.
Номер записи может иметь значение в пределах 0.J55535, что
обеспечивает доступ к любой записи файле объемом до 8 Мбайт.
Для использования произвольного чтения необходимо открыть
базовый экстент (экстент 0), который может и не содержать записей.
Операция 33 считывает запись, определенную полями номера
произвольной записи БУФ в текущий буфер ПДП. Она автоматически
устанавливает в полях БУФ значения экстента и ТЗ для указанного
номера произвольной записи, но в отличии от операции
последовательного чтения после исполнения не увеличивает их
значение. Таким образом, последовательные вызовы операции 33
считывают одну и ту же запись. После операции 33 доступ к файлу
может осуществляться в последовательном режиме, начиная с
позиции, установленной в режиме произвольного доступа. Однако в
этом случае ТЗ будет прочитана или записана повторно.
Если значение мультиселекторного счетчика больше 1, операция
произвольного чтения считывает несколько последовательных записей
в память, начиная с адреса буфера ПДП. Значение номера
произвольной записи увеличивается при чтении каждой
последовательной записи, однако при возвращении управления
вызывающей программе восстанавливается исходное значение.
После завершения операция 33 возвращает в регистре А один из
следующих кодов возврата:
00: успешное завершение операции
01: чтение незаписанных данных (конец файла)
03: не закрыт текущий экстент
04: сдвиг на отсутствующий экстент
05: большой номер произвольной записи
255: физическая сшибка (ссылка на регистр Н>
Код 01 возвращается, если в следующей записи файла нет данных,
обычно отсутствие данных означает конец файла, однако эта ошибка
может возникнуть и при попытке чтения ^незаписанного ранее блока
данных.
Код 03 возвращается в том случае если операция 33 не может
закрыть текущий экстент перед сдвигом к следующему.
Код 04 возвращается, если номер произвольной записи указывает на
несуществующий экстент.
Код 06 возвращается, если номер произвольной записи превышает
значение 65535.
Код 255 возвращается при обнаружении физической ошибки в
режиме возврата ошибок, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
При обнаружении физической ошибки в режиме обработки ошибок
поумолчанию на консоль выводится сообщение об ошибке и
производится "горячии старт".
Для всех ошибок за исключением физических, при возврате
операция 33 устанавливает в регистре Н количество успешно
прочитанных секторов. Это значение может изменятся от 0 до 127 и
всегда устанавливается в 0 если значение мультиселекторного
счетчика равно 1.
Операция 34: Произвольная запись
Входные параметры:
Регистр С: 22Н
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код возврата
Регистр Н: код ошибки
Операция подобна операции произвольного чтения с той разницей,
что производится запись данных на диск из текущего буфера ПДП.
Если экстент или блок данных, куда производится запись данных, не
распределены, операция произвольной записи производит их'
распределение.
Для использования произвольной записи необходимо открыть или
создать базовый экстент (экстент 0), который может и не содержать
записей. Создание базового экстента обеспечиьает вызов имени файла
на консоль при просмотре оглавления. Операция 34 автоматически
устанавливает в полях БУФ значения экстента и ТЗ для указанного
номера произвольной записи, но в отличии от операции
последовательной записи после исполнения не увеличивает их
значение. Таким образом; последовательные вызовы операции 34
записывают одну и ту же запись. После этой операции доступ к файлу
может осуществляться в последовательном режиме, начиная с
позиции, установленной в режиме произвольного доступа. Однако в
этом случае ТЗ будет прочитана или записана повторно.
Если значение мультиселекторного счетчика больше 1, операция
произвольной записи записывает несколько последовательных записей
в память, начиная с адреса буфера ПДП. Значение номера
произвольной записи увеличивается для каждой последующей записи,
однако при возвращении управления вызывающей программе
восстанавливается исходное значение.
После завершения операция 34 возвращает в регистре Л один из
следующих кодов возврата:
00: успешное завершение операции
02: нет места на диске
04: нет места в оглавлении
06: большой номер произвольной записи
255: физическая-ошибка (ссылка на регистр Н)
Код 02 возвращается в том случае, если операция пытается получить
новый блок данных для файла, а свободных блоков на диске нет.
Код 05 возвращается в том случае, если операция пытается создать
новый экстент, а свободного места в оглавлении нет.
Код 06 возвращается, если номер произвольной записи превышает
значение 65535.
Код 255 возвращается при обнаружении физической ошибки в
режиме возврата ошибок, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
02: установлен атрибут только для чтения (R) или системный (S).
04: ошибка выбора диска
При обнаружении физической ошибки в режиме обработки ошибок
поумолчанию на консоль выводится сообщение об ошибке и
производится "горячий старт".
Для всех ошибок за исключением физических, при возврате
операция 34 устанавливает в регистре Н количество успешно
записанных секторов. Это значение может изменятся от 0 до 127 и
всегда устанавливается в 0 если значение мультиселекторного
счетчика равно 1.
Операция 35: Получение размера файла
Входные параметры:
Регистр С: 23Н
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код возврата
Регистр Н: код ошибки
установленные поля номера
произвольной записи
Операция определяет виртуальный размер файла, который
фактически является номером записи, следующей за последней
записью файла. Виртуальный размер файла совпадает с его
физическим размером в том случае, если запись в файл производится
в режиме последовательного доступа и может не совпадать при
использовании произвоьного доступа. Например, если в файл в режиме
произвольного доступа была сделана только одна запись с номером
65534, то виртуальный размер файла равен 65535, хотя в
действительности ему выделен только Ьдин блок данных.
Вызывающая программа посылает в регистрах D&E адрес БУФ,
указывающего файл, размер которого потребуется определить.
Операция 35 не требует, чтобы указываемый файл был открыт перед
ее вызовом. Однако если это было сделано и в файл производилась
запись, то перед вызовом этой операции необходимо закрыть файл,
иначе возвращаемый результат будет не верным. Операция
устанавливает размер файла в плях произвольной записи.
Вызывающая программа может добавлять записи в файл, начиная с
установленной позиции.
Операция 35 при успешном завершении возвращает в регистре А
значение ООН. Если указанного файла нет, то в регистре А
возвращается 0FFH, при этом в регистре Н возврашается значение
ООН. При обнаружении физической или логической ошибки в режиме
обработки ошибок поумолчанию выводится на конёоль сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
Операция 36: Установка номера произвольной записи
Входные параметры:
Регистр С; 24Н
Регистр D&E: адрес БУФ
Возвращаемые значения:
установленные поля номера
произвольной записи
Операция возвращает в полях R0...R2 заданного БУФ номер
произвольной записи, следующий за записью, доступ к которой
осуществляется в последний раз. Эта операция может использоваться
в двух случаях.
Во-первых, часто необходимо просмотреть файл в последовательном
режиме для поиска каких-либо "ключей". Когда "ключ" найден,
операция может использоваться для определения номера записи, в
которой он находится. В дальнейшем номера записей, возвращаемые
операцией 36, могут использовться для прямого доступа к "ключам"
без необходимости просмотра всего файла.
Во-вторых, эта операция может использоваться при переходе от
последовательного режима доступа к произвольному. Файл
обрабатывается ц, последовательном режиме до какогото определенного
места, затем вызывается данная операция, после чего доступ к файлу
может осуществляться в произвольном режиме.
Операция 37: Сброс диска
Входные параметры:
Регистр С: 25Н
Регистр D&E: вектор дисков
Возвращаемые значения:
Регистр А: ООН
Операция программным путем осуществляет сброс дисков, заданных
вектором, передаваемым в регистрах D&E. При сбросе диск логически
выключается и устанавливается в режим чтения/записи. Младший бит
вектора дисков соответствует регистру А, старший регистр Р.
Значение бита, равное 1, означает, что соответствующий бит должен
быть сброшен.
Операция 40: Произвольная запись с заполнением нулями
Входные параметры:
Регистр С: 28Н
Регистр D&E: адрес БУФ
Возвращаемые значения:
Регистр А: код оглавления или 0FFH
Регистр Н: код ошибки
Операция аналогична операции 34: Произвольная запись,
заисключением того, что вновь выделяемый блок перед записью
заполняется нулями. Бели при создании файла использовалась
операция 40, то свободные записи в блоках будут содержать нули.
Бели использовалась операция 34, то свободные записи содержат не
инициализированные данные.
Операция 44: Установка мультиселекторного счетчика
Входные параметры:
Регистр С: 2СН
Регистр D&E: количество секторов
Возвращаемые значения:
Регистр А: код возврата
Операция устанавливает в мультиселекторном счетчике значение,
заданное регистром Е, что позволяет программе производить чтение
или запись от 1 до 128 записей за одно обращение к операции БДОС.
Это значение сохраняется до следующего вызова операции или до
"горячего старта", во время которого оно устанавливается в 1.
При обнаружении логических ошибок во время операций чтения или
записи (если значение мультиселекторного счетчика больше 1) БДОС
возвращает в регистре Н количество секторов, успешно прочитанных
или записанных до возникновения ошибки.
При возврате регистр А содержит ООН, если указанное значение
мультиселекторного счетчика в пределах 1...128, иначе А содержит
0FFH.
Операция 45: Установка режима обработки ошибок
Входные параметры:
Регистр С: 2DH
Регистр D&E: режим обработки
Операция устанавливает режим обработки ошибок БДОС,
определяемый значением передаваемым в регистре Б. Бели в регистре
Е передается значение 0FFH (255 десятичное), то устанавливается
режим возврата. Если в регистре Е передается значение 0FEH (254
десятичное), то устанавливается режим отображения и возврата или
устанавливается режим по умолчанию.
В режиме по умолчанию сообщения о возникающих ошибках
выводятся на консоль и вызывающая программа прерывается выходом
на "горячий старт". В режиме возврата управление возвращается
вызывающей программе с признаком ошибки без вывода сообщения. В
режиме отображения и возврата сообщения об ошибках выводятся на
консоль, а управление возвращается вызывающей программе, при этом
регистр А содержит признак ошибки (0FFH), а регистр Н содержит
код ошибки.
Операция 46: Получение свободного места на диске
Входные параметры:
Регистр С: 2ЕН
Регистр Е: диск
Возвращаемые значения:
Регистр А: признак ошибки
Регистр Н: код ошибки
Операция определяет количество свободных секторов (128-байтных
записей) на диске, указанном регистром Е. Значение 0 соответствует
диску А, 1-диску В, и до 15 для диска Р.
Значение количества свободных секторов возвращается в двоичном
коде в первых трех байтах текущего буфера ПДП в следующем
формате:
байт 0 - младшие
байт 1 - средний
байт 2 - старший
Операция при успешном завершении возвращает в регистре А
значение ООН. При обнаружении физической ошибки в режиме
обработки ошибок по умолчанию на консоль выводится сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
Операция 47: Замена программы
Входные параметры:
Регистр С: 2FH
Операция обеспечивает вызов одной программы другой без
взаимодействия с оператором. Вызывающая программа должна
поместить в буфер ПДП по умолчанию (с адреса 0080Н) командное
продолжение, завершающееся нулевым байтом без символа CR.
Операция 47 не возвращает управления вызывающей программе.
Обнаруженные ошибки обрабатываются интерпретатором команд.
Операция 49: Получение/установка параметров БУС
Входные параметры:
Регистр С: 31Н
Регистр D&E: адрес блока параметров
Возвращаемые значения:
Регистр А: возвращаемый байт
Регистр H&L: возвращаемое слово
Операция позволяет осуществить доступ к БУС - 100-байтной
области данных, содержащей флажки и данные, использующиеся
системой. Для использования операции 49 вызывающая программа
посылает в регистрах D&E адрес блока параметров, определяющих
операцию. Структура блока параметров может быть определена
следующим образом:
SCBPB: DB OFFSET ;смещение в БУС
DB SET ;признак операции
;0FFH - установка байта
;0FEH - установка слова
;01...0FDH - резервные
;00 - получение параметров
DW VALUE ;параметр для установки
;(байт или слово)
OFFSET определяет смещение параметра, который должен быть
установлен или получен, внутри БУС.
SET определяет действие, исполняемое операцией 49, а также
параметр (байт или слово). VALUE содержит слово или байт для
установки и должен передаваться только при операции установки
параметров.
Использование данной операции должно производится с
осторожностью, так как БУС содержит системные переменные,
установка которых прикладными программами может привести к
ошибкам работы системы.
Операция для установки параметров используется только в том
случае, если аналогичный результат не может быть получен с
помощью другой операции.
Ниже приведено краткое описание полей БУС. Более подробное
описание содержится в приложении А.
СМЕЩЕНИЕ |
НАЗНАЧЕНИЕ |
00 - |
04 |
резервируются для системы |
05 |
|
номер версии |
06 - |
09 |
флажки прикладных программ |
OA - |
0F |
символьная дата ddmmyy |
10 - |
11 |
код возврата |
12 - |
19 |
резервируются для системы |
1А |
|
ширина консоли (количество столбцов) |
IB |
|
позиция маркера» (номер столбца) |
1С |
|
длина страницы консоли (количество строк) |
ID - |
■ 21 |
резервируются для системы |
22 - |
23 |
флажок присвоения CONIN: |
24 - |
25 |
флажок присвоения CONOUT: |
26 - |
27 |
флажок присвоения AUXIN: |
28 - |
29 |
флажок присвоения AUXOUT: |
2А - |
- 2В |
флажок присвоения LIST: |
2С - |
36 |
резервируются для системы |
37 |
|
ограничитель выводимой строки |
38 |
|
признак параллельного вывода на печать |
39 - |
ЗВ |
резервируются для системы |
ЗС - |
3D |
адрес текущего буфера прямого доступа |
ЗЕ |
|
текущий диск |
3F- |
43 |
резервируются для системы |
44 |
|
текущий код пользователя |
45 - |
49 |
резервируются для системы |
4А |
|
мультиселекторный счетчик |
4В |
|
режим обработки ошибок |
4С |
|
код системного диска |
4D - |
• 57 |
резервируются для системы |
58 - |
5С |
отметка даты |
5D - |
• 63 |
резервируются для системы |
Операция 50: Вызов операций БСВВ или операций расширенной
БДОС
Входные параметры:
Регистр С: 32Н
Регистр D&E: адрес блока параметров
Возвращаемые значения:
Значения возвращаются БСВВ гили
операциями расширенной БДОС
Хотя БСВВ МикроДОС отличается от БСВВ операционной системы
СР/М, БДОС содержит вектор переходов, аналогичный вектору
переходов БСВВ системы СР/М. Это обеспечивает совместимость с
программами, работающими в СР/М и использующими функции БСВВ
(совместимость обеспечивается для системы СР/М версии 2.2 и 3.1).
Операция 50 осуществляет вызов подпрограмм, исполняющих функции
БСВВ системы СР/М. Вызывающая программа передает в регистрах
D&E адрес блока параметров, определяющего номер функции БСВВ, и
необходимые для ее исполнения параметры.
Формат блока параметров приведен ниже.
BIOSBP: DB FUNC ;номер функции
DW REGA ;содержимое регистра А
DW REGB ;содержимое регистров В&С
DW REGD ;содержимое регистров D&E
DW REGH ;содержимое регистров H&L
Номер функции в поле FUNC для вызова операций БСВВ должен
находится в пределах 00Н...10Н (0...16).
Ниже приведены список номеров функций, необходимые входные
данные, возвращаемые значения и действия этих функций.
НОМЕР НАЗНАЧЕНИЕ
0 переход на "горячий старт"
1 переход на "горячий старт"
2 получение состояния логического устройства CONIN:. Если
устройство готово для ввода, в регистре А возвращается
значение 0FFH; если оно не готово, значение возвращается.
3 ввод символа с логического устройства CONIN:.У правление
не возвращается управляющей программе пока не будет
введен символ. Введенный символ возвращается в регистре
А.
4 вывод символа из регистра С на логическое устройство
CONOUT:.
5 вывод символа из регистра С на логическое устройство
LIST:.
6 вывод символа из регистра С на логическое устройство
AUXOUT:.
7 ввод символа с логического устройства AUXIN:.
Управление не возвращается управляющей программе пока
не будет введен символ. Введенный символ возвращается в
регистре А
8 установка головки текущего диска на нулевую дорожку.
9 выбор диска, заданного регистром С для последующих
дисковых операций. Регистр С содержит 0 для диска А, 1
для В и т.д. до 15 для диска Р . Операция возвращает в
регистрах H&L адрес главного блока параметров диска.
Если задан несуществующий диск, в регистрах H&L
возвращается 0000Н.
10 установка дорожки, заданной регистрами В&С, для
дальнейших'дисковых операций.
11 установка сектора, заданного регистрами В&С, для
дальнейших дисковых операций.
12 установка адрес буфера ПДП, заданного регистрами В&С,
для дальнейших дисковых операций.
13 чтение диска с параметрами, установленными вызовами
функций 9,10,11,12. При успешном исполнении операции в
регистре А возвращается значение ООН, иначе не нулевое
значение (байт состояния диска).
14 запись диска с параметрами, установленными вызовами
функций4 9,10,11,12. При успешном исполнении операции в
регистре А возвращается значение ООН, иначе не нулевое
значение (байт состояния диска).
15 получение состояния логического устройства LIST:. Если
устройство готово для вывода, в регистре А возвращается
значение 0FFH, иначе ООН.
16 преобразует логический номер сектора, передаваемый в
регистрах В&С, в физический номер в соответствии с
таблицей, адрес которой передается в регистрах D&E.
Кроме исполнения функций БСВВ операция 50 обеспечивает
исполнение операций расширенной БДОС. Для исполнения этих
операций вызывающая программа передает в регистрах D&E адрес
блока параметров, содержащего номер операции расширенной БДОС и
адрес дескриптора операции (области памяти, в которой находятся
необходимые для данной операции параметры).
Формат блока параметров приведен ниже:
XBDOSBP:
BP OPER ;номер операции
DW ADRESS ;адрес дескриптора операции
Номер операции в поле OPER для вызова операций расширенной
БДОС должен находится в пределах 80H...0PFH (128...255). Подробнее
каждая операция расширенной БДОС, а также входные параметры и
возвращаемые значения будут описаны ниже.
Операция 104: Установка даты
Входные параметры:
Регистр С: 68Н
Регистр D&E: адрес блока DAT
Операция обеспечивает установку даты в БУС. Вызывающая
программа передает в регистрах D&E адрес 4-байтной области DAT,
содержащей дату и время (МикроДОС не обеспечивает подсчет
реального времени, и поле времени в БУС введено для совместимости с
системой СР/М 3.1).
Формат области DAT:
байты 0-1 :поле даты
байт 2 :поле часов
байт 3 :поле минут
Поле даты представляет 16-битовую величину, при этом значение 0
соответствует 1 января 1978 г.
Операция 105: Получение даты
Входные параметры:
Регистр С: 69Н
Регистр D&E: адрес блока DAT
Операция обеспечивает получение даты из БУС. Вызывающая
программа передает в регистрах D&E адрес 4-байтной области DAT, в
которую заносятся дата и время (МикроДОС не обеспечивает подсчет
реального времени, и поле времени в БУС введено для совместимости с
системой СР/М 3.1).
Формат области DAT:
байты 0-1 :поле даты
байт 2 :поле часов
байт 3 :поле минут
Поле даты представляет 16-битовую величину, при этом значение 0
соответствует 1 января 1978 г. При возврате значение полей времени
неопределено.
Операция 108: Получение/установка кода возврата
Входные параметры:
Регистр С: 6СН
Регистр D&E: 0FFFFH (получение) или код возврата (установка)
Возвращаемые Значения:
Регистр H&L: код возврата (получение) или нет значения
(установка)
Операция позволяет программе перед завершением установить код
возврата. Код возврата проверяется при условном исполнении команды
(признак ":" в командном предложении), а также может проверятся
программой с использованием операции 47: Замена программы. Это
обеспечивает исполнение программы только в случае успешного
окончания предидущей программы.
Для получения кода возврата вызывающая программа передает в
регистрах D&E значение 0FFFFH, а для установки - собственно код
возврата.
Значения кодов возврата приведены ниже.
КОД ЗНАЧЕНИЕ
0000 - FEFF успешное завершение
FF00 - FFFE неуспешное завершение
FF80 - FFFC резервные коды
FFFD завершение по ошибке
FFFE БДОС
завершение по вводу CTL-C
Операция 110: Получение/установка ограничителя
последовательности
Входные параметры:
Регистр С: 6ЕН
Регистр D&E: 0FFFFH (получение) гили
Регистр Е: ограничитель (установка)
Возвращаемые значения:
Регистр А: ограничитель или нет значения (установка)
Операция обеспечивает получение или установку ограничителя
последовательности для операции 9. Если в регистрах D&E передается
значение 0FFFFH, то в регистре А возвращается текущее значение
огр -ничителя, во всех остальных случаях значение ограничителя
заменяется заданным в регистре Е. При "горячем старте"
устанавливается значение по умолчанию- $.
Операция 111: Вывод массива данных на консоль
Входные параметры:
Регистр С: 6FH
Регистр D&E: адрес блока управления данными
Операция выводит на логическое устройство CONOUT: массив
данных, определяемый блоком управления данными ССВ,
передаваемым в регистрах D&E. Формат блока управления данными
приведен ниже:
байты 0-1 :адрес начала массива
байты 2-3 :длина массива
Операция 112: Вывод массива данных на печать
Входные параметры:
Регистр С: 70Н
Регистр D&E; адрес блока управления данными
Операция выводит на логическое устройство LIST: массив данных,
определяемый блоком управления данными ССВ, передаваемым в
регистрах D&E. Формат блс :а управления данными приведен ниже:
байты 0-1 :адрес начала массива
байты 2-3 : длина «массива
Операция 152: Подготовка БУФ
Входные параметры:
Регистр С: 98Н
Регистр D&E: адрес блока PFCB
Возвращаемые значения:
Регистр H&L: код возврата
подготовленный БУФ
Операция обеспечивает подготовку БУФ из имени файла.
Вызывающая программа передает в регистрах D&E адрес блока
подготовки имени файла (PFCB), имеющего следующий формат:
PFCB: DW STRING ;адрес имени файла
DW AFCB ;адрес подготавливаемого БУФ
Имя файла должно задаваться в следующем виде:
[D:] Имя файла[.тип файла],
,где поля в квадратных скобках необязательны.
Длина последовательности, содержащей имя, не должна превышать
128 байт. Операция 152 просматривает заданное имя файла и
подготавливает БУФ. Символы пробелов и табуляции перед именем
пропускаются.
Ограничителем имени файла является один из следующих символов:
СИМВОЛ ШЕСТНАДЦАТЕРИЧНЫЙ КОД
нуль ООН
пробел 20Н
CR 0DH
табуляция 09Н
ЗАН
ЗВН
3DH
5ЕН
2ЕН
[ 5ВН
] 5DH
< ЗСН
> ЗЕН
2СН
При обнаружении в заданном имени управляющих сигналов с кодами
от 0 до 20Н, не указанных в данной таблице, операция 152 возвращает
в регистрах H&L код 0FFFFH. При успешной подготовке имени
операция проверяет следующий символ. Если следующий символ 0 или
(возврат каретки) (0DH), в регистрах H&L возвращается 0, если
следующий символ один из ограничителей, в регистрах H&L
возвращается адрес ограничителя, в остальных случаях - адрес
первого следующего символа пробела или табуляции.