Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:bdos [2022-04-04 14:36] GreyWolf [MSX — BDOS] |
msx:bdos [2024-06-14 21:22] (текущий) GreyWolf [MSX BDOS] |
||
---|---|---|---|
Строка 4: | Строка 4: | ||
~~TOC 1-3 wide~~ | ~~TOC 1-3 wide~~ | ||
- | BDOS — Basic Disk Operating System (базовая дисковая операционная система) | + | %%BDOS%% — Basic Disk Operating System (Базовая Дисковая Операционная Система) |
- | ''MSXDOS.SYS'' — это интерфейс между программой пользователя и дисковыми функциями ROM. Кроме дисковых функций он включает в себя и некоторые базовые функции ввода/вывода для работы с другими устройствами, в частности, с консолью. Часть этих функций выполняется при помощи обращений к [[msx:bios|MSX BIOS]], а часть выполняется непосредственно программами ядром [[msx:dos|]], которое находится в памяти постоянно. Этими же функциями пользуется и ''COMMAND.COM''. | + | ''MSXDOS.SYS'' это интерфейс между программой пользователя и дисковыми функциями ROM. Кроме дисковых функций он включает в себя и некоторые базовые функции ввода/вывода для работы с другими устройствами, в частности, с консолью. Часть этих функций выполняется при помощи обращений к [[msx:bios|ROM MSX BIOS]], а часть выполняется непосредственно программами %%MSX-DOS Kernel%%, которые находятся в памяти постоянно. Этими же функциями пользуется и ''COMMAND.COM''. |
- | По большей части, вектор встроенных вызовов ''MSXDOS.SYS'' совместим с [[msx:cp_m:|]], что позволяет запускать в [[msx:dos|]] программы, написанные для [[msx:cp_m:|]] без изменений, но, кроме этого, ''MSXDOS.SYS'' включает в себя и некоторые дополнительные функции, которых в [[msx:cp_m:|]] нет. В частности, работу с датами и временем. | + | По большей части, вектор встроенных вызовов ''MSXDOS.SYS'' совместим с [[cp_m:|]], что позволяет запускать в [[msx:dos:|]] программы, написанные для [[cp_m:|]] без изменений, но, кроме этого, ''MSXDOS.SYS'' включает в себя и некоторые дополнительные функции, которых в [[cp_m:|]] нет. В частности, работу с датами и временем. |
- | Вектор обращений к функциям ''MSXDOS.SYS'' занимает в оперативной памяти адреса 0x0000–0x01000 и совпадает с [[msx:cp_m:|]], а сами исполняемые программы находятся в верхней области памяти. | + | Вектор обращений к функциям ''MSXDOS.SYS'' занимает в оперативной памяти адреса 0x0000–0x0100 и совпадает с [[cp_m:|]], а сами исполняемые программы находятся в верхней области памяти. |
- | Адреса ОЗУ между 0x0100 и верхней [[msx:bios#work_area|рабочей областью]] ''MSXDOS.SYS'' называются "транзитной областью" и предоставляются программам пользователя. | + | Адреса ОЗУ между 0x0100 и верхней [[msx:bios#work_area|рабочей областью]] ''MSXDOS.SYS'' называются "транзитной областью" (TPA — transient program area) и предоставляются программам пользователя. Подробнее от TPA написано [[msx:dos:#tpa|здесь]]. |
Вектор переходов в [[msx:bios#work_area|рабочую область]], находящуюся на 3–й странице оперативной памяти (0x0С00–0xFFFF), удобен также и тем, что эта страница остаётся в RAM при межслотовых обращениях к [[msx:bios|BIOS]], [[msx:bios#sub-rom|SUB-ROM]] и [[msx:bios#disk-rom|DISK-ROM]], которые обычно находятся в нулевых страницах памяти других слотов. | Вектор переходов в [[msx:bios#work_area|рабочую область]], находящуюся на 3–й странице оперативной памяти (0x0С00–0xFFFF), удобен также и тем, что эта страница остаётся в RAM при межслотовых обращениях к [[msx:bios|BIOS]], [[msx:bios#sub-rom|SUB-ROM]] и [[msx:bios#disk-rom|DISK-ROM]], которые обычно находятся в нулевых страницах памяти других слотов. | ||
+ | |||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | В [[msx:bios#disk-rom|DISK-ROM]] есть строка: | ||
+ | <code> | ||
+ | MSX-DOS ver. 2.2 Copyright 1984 by Microsoft | ||
+ | </code> | ||
+ | Это значит, что %%BDOS MSX%% совместим с версией CP/M 2.2 8-) | ||
+ | </WRAP> | ||
---- | ---- | ||
- | Выражаем огромную благодарность А.Б. Родионову на предоставленную информацию! | + | |
+ | Выражаем огромную благодарность [[rodionov_a_b:|А.Б. Родионову]] на предоставленную информацию! | ||
{{anchor:entry_points}} | {{anchor:entry_points}} | ||
Строка 28: | Строка 38: | ||
|Вход|Входные параметры| | |Вход|Входные параметры| | ||
|Выход|Возвращаемые значения| | |Выход|Возвращаемые значения| | ||
- | |Совместимость|Существует ли совместимость с [[msx::cp_m:|]]| | + | |Совместимость|Существует ли совместимость с [[cp_m:|]]| |
Пример вызова: | Пример вызова: | ||
- | |Из [[msx:dos|]]: <code> | + | |Из [[msx:dos:|]]: <code> |
LD C,#** | LD C,#** | ||
CALL #0005 | CALL #0005 | ||
Строка 45: | Строка 55: | ||
|<100% 5% 95%>| | |<100% 5% 95%>| | ||
^00|SYSTEM RESET| | ^00|SYSTEM RESET| | ||
- | |Если [[msx:dos|]], то переход по адресу 0000; иначе, осуществляется "тёплый" старт [[msx:disk_basic|]].|| | + | |Если [[msx:dos:|]], то переход по адресу 0000; иначе, осуществляется "тёплый" старт [[msx:disk_basic|]].|| |
|Вход |Нет| | |Вход |Нет| | ||
|Выход|Нет| | |Выход|Нет| | ||
Строка 145: | Строка 155: | ||
|Совместимость|Есть| | |Совместимость|Есть| | ||
^14|SEQUENTAL READ| | ^14|SEQUENTAL READ| | ||
- | |Функция|Читает запись файла, определяемого Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Передаёт прочитанную запись по адресу передачи. Запись определяется полем текущего блока и полем текущей записи. Поля текущего блока и текущей записи увеличиваются на 1 при выходе из функции. Размер записи всегда равен 128 байтам. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[msx:cp_m|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK READ]]''.| | + | |Функция|Читает запись файла, определяемого Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Передаёт прочитанную запись по адресу передачи. Запись определяется полем текущего блока и полем текущей записи. Поля текущего блока и текущей записи увеличиваются на 1 при выходе из функции. Размер записи всегда равен 128 байтам. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[cp_m:|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK READ]]''.| |
|Вход|DE: указывает на первый байт FCB| | |Вход|DE: указывает на первый байт FCB| | ||
|Выход|A: 0, если чтение выполнилось; 1, в противном случае| | |Выход|A: 0, если чтение выполнилось; 1, в противном случае| | ||
|Совместимость|Есть| | |Совместимость|Есть| | ||
^15|SEQUENTAL WRITE| | ^15|SEQUENTAL WRITE| | ||
- | |Функция|Посылает запись в файл, определяемый Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Запись определяется полем текущего блока и полем текущей записи. Поля текущего блока и текущей записи увеличиваются на 1 при выходе из функции. Размер записи всегда равен 128 байтам. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[msx::cp_m:|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK WRITE]]''.| | + | |Функция|Посылает запись в файл, определяемый Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Запись определяется полем текущего блока и полем текущей записи. Поля текущего блока и текущей записи увеличиваются на 1 при выходе из функции. Размер записи всегда равен 128 байтам. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[cp_m:|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK WRITE]]''.| |
|Вход|DE: указывает на первый байт FCB| | |Вход|DE: указывает на первый байт FCB| | ||
|Выход|A: 0, если запись выполнена; 1, в противном случае| | |Выход|A: 0, если запись выполнена; 1, в противном случае| | ||
Строка 165: | Строка 175: | ||
|Совместимость|Есть| | |Совместимость|Есть| | ||
^18|GET LOGIN VECTOR| | ^18|GET LOGIN VECTOR| | ||
- | |Функция|Возвращает таблицу битов для включённых устройств (вектор начального состояния системы). \\ В отличии от [[msx::cp_m:|]], все системные устройства включены.| | + | |Функция|Возвращает таблицу битов для включённых устройств (вектор начального состояния системы). \\ В отличии от [[cp_m:|]], все системные устройства включены.| |
|Вход|Нет| | |Вход|Нет| | ||
|Выход|HL: содержит вектор начального состояния системы| | |Выход|HL: содержит вектор начального состояния системы| | ||
Строка 198: | Строка 208: | ||
|Совместимость|Нет (установка/чтение кода пользователя)| | |Совместимость|Нет (установка/чтение кода пользователя)| | ||
^21|RANDOM READ| | ^21|RANDOM READ| | ||
- | |Функция|Чтение записи файла, определяемого Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Запись переносится по адресу передачи. Запись определяется полем блока произвольного доступа. Это поле не изменяется при выполнении данной функции. Размер записи всегда 128 байт. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[msx::cp_m:|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK READ]]''.| | + | |Функция|Чтение записи файла, определяемого Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Запись переносится по адресу передачи. Запись определяется полем блока произвольного доступа. Это поле не изменяется при выполнении данной функции. Размер записи всегда 128 байт. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[cp_m:|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK READ]]''.| |
|Вход|DE: указывает на первый байт FCB| | |Вход|DE: указывает на первый байт FCB| | ||
|Выход|A: 0, если запись прочиталась; 1, в противном случае| | |Выход|A: 0, если запись прочиталась; 1, в противном случае| | ||
|Совместимость|Есть| | |Совместимость|Есть| | ||
^22|RANDOM WRITE| | ^22|RANDOM WRITE| | ||
- | |Функция|Посылает запись в файл, определяемый Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Запись переносится, начиная с адреса передачи. Запись определяется полем блока произвольного доступа. Это поле не изменяется при выполнении данной функции. Размер записи всегда 128 байт. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[msx::cp_m:|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK WRITE]]''.| | + | |Функция|Посылает запись в файл, определяемый Блоком Управления Файлом (File Control Block — FCB), начальный адрес которого содержится в DE. Запись переносится, начиная с адреса передачи. Запись определяется полем блока произвольного доступа. Это поле не изменяется при выполнении данной функции. Размер записи всегда 128 байт. \\ Если функция выполнилась, то возвращает 0; иначе, — 1. \\ __//Примечание//__: Эта функция оставлена для совместимости с [[cp_m:|]]. Настоятельно рекомендуется использовать другую функцию: ''[[#RANDOM BLOCK WRITE]]''.| |
|Вход|DE: указывает на первый байт FCB| | |Вход|DE: указывает на первый байт FCB| | ||
|Выход|A: 0, если запись осуществилась; 1, в противном случае| | |Выход|A: 0, если запись осуществилась; 1, в противном случае| | ||
Строка 241: | Строка 251: | ||
===== Системные вызовы только для MSX DOS ===== | ===== Системные вызовы только для MSX DOS ===== | ||
- | Системные вызовы только для [[msx:dos|]] | + | Системные вызовы только для [[msx:dos:|]] |
|<100% 5% 95%>| | |<100% 5% 95%>| | ||
^29|NO FUNCTION| | ^29|NO FUNCTION| |