[<>] ~~TOC wide~~ ====== Приложение IV. Некоторые входные точки системы BDOS, необходимые для работы с диском ====== 8-) [[msx:bdos|]] Форма описания: Адрес функции Имя функции Функция \\ Выполняемая функция |<100% 10% 90%>| ^Вход|Входные параметры| ^Выход|Возвращаемые значения| //Примечание.// \\ Пример вызова из: α) [[msx:dos:|]] LD C,∗∗h CALL 0005h β) [[msx:disk_basic|]] LD C,∗∗h CALL F37Dh где ''∗∗'' — адрес функции. ===== 0E SELECT DISK ===== Устанавливает имя дисковода по умолчанию (0 соответствует устройству А:). |<100% 10% 90%>| ^Вход|Регистр Е содержит номер драйвера диска.| ^Выход| — | ===== 0F OPEN FILE ===== Открывает файл, определяемый Блоком Управления Файлом ("File Control Block" — FCB), начальный адрес которого со держится в регистровой паре DE. После выполнения будут установлены: поле размера записи, поле текущего блока, поле текущей записи и поле записи прямого доступа. Поле размера файла, поля даты и времени создания, поле идентификатора устройства (ID), поле расположения каталога, поле первого кластера, поле последнего кластера и поле последнего доступного кластера копируются из каталога. Если функция выполнилась, \\ то она возвращает 0, \\ иначе она возвращает FFh. |<100% 10% 90%>| ^Вход|DE: указывает на первый байт FCB| ^Выход|A: 0, если файл открылся; \\ FFh, в противном случае.| ===== 10 CLOSE FILE ===== Закрывает файл, определяемый FCB("File Control Block"), начальный адрес которого содержится в регистре DE. Если функция выполнилась, \\ то она возвращает 0; \\ иначе она возвращает FFh. |<100% 10% 90%>| ^Вход|DE: указывает на первый байт FCB| ^Выход|A: 0, если файл открылся; \\ FFh, в противном случае.| ===== 13 DELETE FILE ===== Уничтожает файл, определяемый Блоком Управления Файлом FCB ("File Control Block"),начальный адрес которого содержится в регистровой паре DE. Если функция выполнилась, \\ то она возвращает 0; \\ иначе она возвращает FFh. |<100% 10% 90%>| ^Вход|DE: указывает на первый байт FCB| ^Выход|A: 0, если файл был удален; \\ FFh, если файл не был удален.| Примечание. В имени файла возможны специальные символы (''*'' и ''?''). ===== 16 CREATE FILE ===== Открывает файл, определяемый Блоком Управления Файлом FCB ("File Control Block"), начальный адрес которого содержится в регистровой паре DE. Если данный файл уже существует, то он уничтожается. После выполнения этой функции устанавливаются: поле размера записи, поле текущей записи, поле текущего блока и поле записи произвольного доступа. Если функция выполнилась, \\ то она возвращает 0; \\ иначе она возвращает FFh. |<100% 10% 90%>| ^Вход|DE: указывает на первый байт FCB| ^Выход|A: 0, если файл открылся;\\ FFh, если файл не открылся.| ===== 17 RENAME FILE ===== Меняет имя файла, определяемого Блоком Управления Файлом FSB ("File Control Block"), начальный адрес которого содержится в регистровой паре DE, на имя файла,определяемое FCB, начальный адрес которого содержится по адресу(DE+16). Если функция выполнилась, \\ то она возвращает 0 ; \\ иначе она возвращает FFh. //Примечание.// В имени файла возможны специальные символы (''*'' и ''?''). |<100% 10% 90%>| ^Вход|DE: указывает на первый байт FCB "старого" файла \\ (DE+16): указывает на первый байт FCB "нового" файла| ^Выход|A: 0, если файл переименовался; \\ FFh, если файл не переименовывался.| ===== 1А SET DMA ADDRESS ===== Устанавливает адрес передачи. |<100% 10% 90%>| ^Вход|DE: устанавливаемый (новый) адрес передачи| ^Выход| — | ===== 26 RANDOM BLOCK WRITE ===== Посылает запись (записи) в файл, определяемый Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в регистровой паре DE. Запись переносится, начиная с адреса передачи. Запись определяется полем блока произвольного доступа.Поле записи прямого доступа автоматически увеличивается при успешном исходе операции. Размер записи определяется полем размера записи. Количество записей определяет содержимое регистровой пары HL. Если функция выполнилась, то она возвращает 0; иначе — 1. |<100% 10% 90%>| ^Вход|DE: указывает на первый байт FCB \\ HL: указывает количество последовательных записей| ^Выход|A: 0, если запись осуществилась; \\ 1, в противном случае| ===== 27 RANDOM BLOCK READ ===== Читает запись (записи) из файла, определяемого Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в регистровой паре DE. Запись переносится, по адресу передачи. Запись определяется полем блока произвольного доступа. Поле записи прямого доступа автоматически увеличивается при успешном исходе операции. Размер записи определяется полем размера записи. Количество записей определяет содержимое регистровой пары HL. Количество прочитанных записей после завершения операции заносится в регистровую пару HL. Если функция выполнилась, \\ то она возвращает 0; \\ иначе она возвращает 1. |<100% 10% 90%>| ^Вход|DE: указывает на первый байт FCB \\ HL: указывает количество последовательных записей| ^Выход|A: 0, если запись осуществилась; \\ 1, в противном случае \\ HL: указывает количество прочитанных записей| ===== 2F ABSOLUTE DISK READ ===== Чтение Н секторов, начиная с сектора с логическим номером, содержащимся в регистровой паре DE, с драйвера, определяемого содержимым регистра L. Данные записываются в память, начиная с адреса передачи. |<100% 10% 90%>| ^Вход|DЕ: логический номер сектора \\ Н: количество секторов для чтения \\ L: спецификация драйвера| ^Выход| — | ===== 30 ABSOLUTE DISK WRITE ===== Запись Н секторов, начиная с сектора с логическим номером, содержащимся в регистровой паре DE, с драйвера, определяемого содержимым регистра L. Данные переписываются из памяти, начиная с адреса передачи. |<100% 10% 90%>| ^Вход|DЕ: логический номер сектора \\ Н: количество секторов для чтения \\ L: спецификация драйвера| ^Выход| — | ---- [<>] {{tag>msxfdfss}}