3.2 ОПЕРАЦИИ РАСШИРЕННОЙ БДОС
Операции расширенной БДОС вызываются через операцию 50 БДОС,
при этом блок параметров операции 50 содержит номер операции
расширенной БДОС от 80Н до OFFH (128...255) и необходимый параметр
или адрес дескриптора операции, в котором находятся необходимые
параметры.
Операция 50/129: Обмен с файлом
Входные параметры:
Дескриптор операции
Возвращаемые значения:
Регистр А: код возврата
Регистр Н: код ошибки
Операция обеспечивает обмен данными между памятью и файлом.
Дескриптор операции имеет следующий формат:
EXDSC:DB OPER .операция
DW AFCB ;адрес БУФ
DW EXSTART ;начальный адрес памяти
DW EXEND ;конечный адрес памяти
Поле OPER определяет операцию обмена. При значении этого поля
ООН исполняется чтение файла, при 0FFH - запись в файл.
Поле AFCB содержит адрес БУФ, с которым производится обмен.
Поля EXTART и EXEND определяет область памяти, с которой
производится обмен. При чтении данных обеспечивается открытие
файла и чтение из него данных до заполнения указанной области. При
записи обеспечиваются открытие файла (или создание, если указан
несуществующий файл), запись в него данных из указанной области и
закрытие файла. Для обмена с начала файла поля текущей записи и
номера экстента БУФ должны быть установлены в 0.
При обмене производится выравнивание границ области памяти. При
чтении следующий сектор считывается в том случае, если его
последний байт не выходит за границу памяти. При записи последний
сектор может содержать данные, выходящие за границу памяти.
После завершения операция 50/129 возвращает в поле EXTART
адрес последнего символа плюс 1, а в регистре А один из следующих
кодов возврата:
00: успешное завершение операции
01: файла нет (при чтении) или нет места в оглавлении (при записи)
02: длина файла меньше указанной области (при чтении) или нет
места на диске (при записи)
255: физическая ошибка (ссылка на регистр Н)
При обнаружении физической или логической ошибки в режиме
обработки ошибок по умолчанию на консоль выводится сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
09: неявное имя
Операция 50/130: Обмен с диском
Входные параметры:
Дескриптор операции
Возвращаемые значения:
Регистр А: код возврата
Операция обеспечивает исполнение дисковой операции.
Дескриптор операции имеет следующий формат:
DISKDSC:
DB |
DISK |
DB |
CHWORD |
DB |
FUNC |
DB |
NUMB |
DB |
TRACK |
DB |
SECTOR |
DW |
ABUFF |
DB |
HTRACK |
DB |
HSEKTOR |
Код возврата в регистре А возвращается БСВВ.
Операция 50/131: Назначение файла для CONIN:
Входные параметры:
адрес блока управления файлом
Возвращаемые значения:
Регистр А: код возврата
Регистр Н: код ошибки
При вызове операции вместо адреса дескриптора операции
передается адрес БУФ, который должен использоваться для ввода
вместо логического устройства CONIN:. Операция обеспечивает
открытие файлов и использование его вместо консоли ввода. Отмена
назначения происходит при достижении конца файла, при
обнаружении ошибки обмена с файлом или при исполнении операции
50/132.
При успешном завершении операция возвращает в регистре А код
оглавления от 0 до 3. Бели указанного файла нет, то в регистре А
возвращается 0FFH, при этом в регистре Н возвращается значение
ООН.
При обнаружении физической или логической ошибки в режиме
обработки ошибок по умолчанию на консоль выводится сообщение об
ошибке и производится "горячий старт". В режиме возврата в регистре
А возвращается значение 0FFH, при этом регистр Н содержит один из
следующих кодов ошибок:
01: ошибка обмена с диском
04: ошибка выбора диска
09: неявное имя
Операция 50/132: Отмена файла для CONIN:
Параметры не задаются
Операция обеспечивает отмену назначения файла для устройства
CONIN:, заданного операцией 50/131 или в командном предложении.
Операция 50/133: Назначение буфера для CONIN:
Входные параметры:
адрес буфера
Операция назначает буфер вместо консоли ввода, адрес которого
является входным параметром* Длина буфера не должна превышать
128 байт. Последовательность символов в буфере должна быть
ограничена нулевым байтом (ООН). После достижения конца
последовательности или буфера назначение буфера для консоли
отменяется. Использование буфера в качестве консоли ввода является
более приоритетным по сравнению с использованием файла. Таким
образом, если при назначенном вместо консоли ввода файле
назначается буфер, то используется буфер, а после его окончания
используется файл.
Операция 50/240: Получение подтверждения
Входные параметры:
адрес сообщения
Возвращаемые значения:
Регистр А: код возврата
Операция выводит на консоль сообщение, адрес которого передается
вместо адреса дескриптора операции и ожидает ввода с консоли
символа. Если с консоли вводится символ "D" или "Y" (в верхнем или
нижнем регистре), то в регистре А возвращается значение ООН, иначе
возвращается 0FFH.
Операция 50/242: Вывод имени файла
Входные параметры:
адрес блока управления файлом
Операция выводит на консоль имя файла указанного заданным
блоком управления. Имя выводится в виде
ИМЯ ФАЙЛА [.ТИП ФАЙЛА]
Операция 50/243: Вывод в десятичном формате
Входные параметры:
двоичное число
Операция выводит на консоль в десятичном формате число, заданное
вместо адреса дескриптора операции.
ПРИЛОЖЕНИЕ А
БУС ~ это структура данных, находящаяся в БДОС. МикроДОС
использует эту область для сохранения системных данных и связи
БДОС и БСВВ. Прикладные программы также могут использовать
некоторые параметры, находящиеся в этой области. Программы,
использующие БУС, могут работать только в МикроДОС или СР/М
версии 3.0.
Ниже приведено описание поле БУС, доступных прикладным
программам в режимах только для чтения (R) и для чтения и записи
(W). Позиция каждого поля указывается смещением относительно
начала БУС.
R и W - значения атрибута "только для чтения" (см. 2.3.4)
СМЕЩЕНИЕ НАЗНАЧЕНИЕ
00 - 04 R резервируются для системы
05 R номер версии
06 - 09 W флажки прикладных программ. Вы можете использовать
их для сохранения своих флажков или данных
OA - OF R Дата в символьном виде 2 цифры - число, 2 цифры -
месяц, 2 цифры - год
10-11 W код возврата. Это поле может быть использовано
программой для передачи кода ошибки заменяющей
программе (при использовании операции 47: Замена
программы или интерпретатора команд) для исполнения
следующей команды поусловию. Для установки или
получения значения этого поля может использоваться
операция 108: Получение/установка кода возврата
12-19 R резервируются для системы
1А W ширина консоли. Содержит количество символов в
строке консоли. Может использоваться прикладными
программами при выводе на консоль.
IB R текущая позиция маркера (указателя). Содержит номер
столбца консоли, в котором находится маркер 1С W
длина консоли. Содержит количество строк консоли.
Может использоваться прикладными программами при
выводе на консоль.
1D - 21 R резервируются для системы Флажки назначения для
логических устройств. Если БСВВ поддерживает
присвоение физических устройств логическим, Вы
можете присвоить каждому логическому устройству
одно из 12 физических устройств. Флажок для каждого
устройства представляет 2-байтовую величину, в
которой бит 15 (старший) соответствует физическому
устройству 0, бит 4 - устройству 15. Биты 0...3
резервируются для системы
22 - 23 W флажок присвоения CONIN:
24 - 25 W флажок присвоения CONOUT:
26-27 W флажок присвоения AUXIN:
28 - 29 W флажок присвоения AUXOUT:
2А - 2В W флажок присвоения LIST:
2С - 36 W резервируются для системы
37 W ограничитель выводимой строки. По умолчанию $.
Программа может изменить или получить текущее
значение ограничителя с помощью операции 110'
Получение/установка ограничителя последовательности
38 W признак параллельного вывода на печать. Если этот байт
установлен в 1, все символы, выводимые на консоль,
параллельно выводятся на печать
39 - ЗВ R резервируются для системы
ЗС - 3D R адрес текущего буфера прямого доступа. Может быть
установлен операцией 26: Установка адреса буфера
ПДП. "Горячий старт" и операция 13 Сброс дисковой
системы устанавливают адрес буфера в 0080Н.
ЗЕ R текущий диск. Значения 0...15 соответствуют дискам
А...Р. Для определения текущего диска может
использоваться операция 25. Получение текущего диска
3F - 43 R резервируются для системы
44 R текущий код пользователя в пределах 0...15. Может быть
установлен или получен операцией 32:
Получение/установка кода пользователя
45 - 49 R резервируются для системы
4А W мультиселекторный счетчик БДОС. Значение
устанавливается операцией 44 Установка
мультиселекторного счетчика. По умолчанию равно 1
4В W режим обработки ошибок. Режим может быть
установлен операцией 45: Установка режима обработки
ошибок. Если значение этого поля равно 0FEH,
сообщения об ошибках выводятся на консоль и
управление возвращается вызывающей программе.
Иначе, после вывода сообщения об ошибке производится
"горячий старт" (если ошибка не была игнорирована
оператором)
4С R код системного диска (1 соответствует А, 2 - В, и т.д.)
4D - 57 W резервируются для системы
58 - 5С W отметка даты. Байты 58 и 59 содержат двоичное число,
определяющее дату. Значение 0 представляет 1 янв 1978
г. Значение остальных байтов поля даты не определено
5D - 63 R резервируются для системы