Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:nextor:disk_basic [2020-04-15 15:45] GreyWolf [Свободное место на диске] |
msx:nextor:disk_basic [2022-09-09 22:25] (текущий) GreyWolf |
||
---|---|---|---|
Строка 6: | Строка 6: | ||
* [[#Команды и функции]] | * [[#Команды и функции]] | ||
* [[#Команды CALL]] | * [[#Команды CALL]] | ||
- | * [[#Коды ошибок]] | + | * [[#errors|Коды ошибок]] |
====== Команды и функции ====== | ====== Команды и функции ====== | ||
Строка 17: | Строка 17: | ||
===== Свободное место на диске ===== | ===== Свободное место на диске ===== | ||
- | Оригинальная функция ''[[msx:basic_programming_guide:09#dskf|DSKF()]]'', указывающая свободное место на диске, возвращает число свободных кластеров в [[msx:dos|]]. В [[msx:nextor:nextor|Nextor]] поведение этой команды было изменено: теперь возвращает количество свободных Кб. | + | Оригинальная функция ''[[msx:basic_dialogue_programming_language:009#dskf|DSKF()]]'', указывающая свободное место на диске, возвращает число свободных кластеров в [[msx:dos:|]]. В [[msx:nextor:nextor|Nextor]] поведение этой команды было изменено: теперь возвращает количество свободных Кбайт. |
- | Это эти изменения кардинально отличают её поведение от [[msx:dos|]]. Однако большинство существующих программ, использующих эту команду, на самом деле не рассчитывают количество свободного пространства в Кб, вместо этого отображается необработанный счётчик кластеров для пользователя. Кроме того, в течение многих лет наиболее популярным носителем данных для компьютеров MSX была дискета 2DD, размер кластера которой составлял 1 КБ, поэтому многие пользователи ошибочно полагали, что команда ''DSKF'' все равно возвращает значение в Кб. | + | Это эти изменения кардинально отличают её поведение от [[msx:dos:|]]. Однако большинство существующих программ, использующих эту команду, на самом деле не рассчитывают количество свободного пространства в Кбайтах, вместо этого отображается необработанный счётчик кластеров для пользователя. Кроме того, в течение многих лет наиболее популярным носителем данных для компьютеров MSX была дискета 2DD, размер кластера которой составлял 1 Кбайт, поэтому многие пользователи ошибочно полагали, что команда ''DSKF'' все равно возвращает значение в Кбайт. |
- | Но эти изменения не применяется к режиму [[msx:dos#v1x|MSX-DOS 1]], в этом режиме счётчик свободных кластеров по–прежнему возвращается как счётчик кластеров. | + | Но эти изменения не применяется к режиму [[msx:dos:|]], в этом режиме счётчик свободных кластеров по–прежнему возвращается как счётчик кластеров. |
{{anchor:dski}} {{anchor:dsko}} | {{anchor:dski}} {{anchor:dsko}} | ||
===== Работа с секторами диска ===== | ===== Работа с секторами диска ===== | ||
- | Оригинальные функция [[msx:basic_programming_guide:09#09#dski|DSKI$()]] и команда [[msx:basic_programming_guide:09#09#dsko|DSKO$]], которые позволяют считывать и записывать один сектор диска соответственно, теперь принимают 32–битные номера секторов, что позволяет получить доступ к любому сектору диска, а не только к первым 65536 секторам. | + | Оригинальные функция ''[[msx:basic_dialogue_programming_language:009#dski|DSKI$()]]'' и команда ''[[msx:basic_dialogue_programming_language:009#dsko|DSKO$]]'', которые позволяют считывать и записывать один сектор диска соответственно, теперь принимают 32–битные номера секторов, что позволяет получить доступ к любому сектору диска, а не только к первым 65536 секторам. |
Чтобы получить доступ к секторам с номерами свыше 32767, номер сектора должен быть указан как константа одинарной или двойной точности, выражение или переменная. Если указано значение с одинарной точностью, а число настолько велико, что одна или несколько младших цифр номера теряются из–за округления, эти команды завершатся с ошибкой «Overflow»(переполнение). Это разработано таким образом, чтобы предотвратить случайный доступ к неправильному сектору. | Чтобы получить доступ к секторам с номерами свыше 32767, номер сектора должен быть указан как константа одинарной или двойной точности, выражение или переменная. Если указано значение с одинарной точностью, а число настолько велико, что одна или несколько младших цифр номера теряются из–за округления, эти команды завершатся с ошибкой «Overflow»(переполнение). Это разработано таким образом, чтобы предотвратить случайный доступ к неправильному сектору. | ||
Строка 50: | Строка 50: | ||
</code> | </code> | ||
- | Эта команда просто вывод на экран список новых команд для оператора [[msx:basic_programming_guide:07#call|CALL]], которые [[msx:nextor:nextor|Nextor]] предоставляет для среды [[msx:basic:start|]]. | + | Эта команда просто вывод на экран список новых команд для оператора [[msx:basic_dialogue_programming_language:007#call|CALL]], которые [[msx:nextor:nextor|Nextor]] предоставляет для среды [[msx:basic:|]]. |
Список команд: | Список команд: | ||
Строка 78: | Строка 78: | ||
</code> | </code> | ||
- | Эта команда эквивалентна программе ''[[msx:nextor:nextor#drivers|DRIVERS.COM]]'', которая отображает информацию о доступных драйверах [[msx:dos|]] и [[msx:nextor:nextor|Nextor]]. Отображается имя и версия (только для драйверов [[msx:nextor:nextor|Nextor]]), номер слота и смонтированные диски. Драйверы [[msx:dos|]] будут определены как "Legacy driver" («устаревшие драйверы»). | + | Эта команда эквивалентна программе ''[[msx:nextor:nextor#drivers|DRIVERS.COM]]'', которая отображает информацию о доступных драйверах [[msx:dos:|]] и [[msx:nextor:nextor|Nextor]]. Отображается имя и версия (только для драйверов [[msx:nextor:nextor|Nextor]]), номер слота и смонтированные диски. Драйверы [[msx:dos:|]] будут определены как "Legacy driver" («устаревшие драйверы»). |
{{anchor:call_drvinfo}} | {{anchor:call_drvinfo}} | ||
Строка 85: | Строка 85: | ||
CALL DRVINFO | CALL DRVINFO | ||
</code> | </code> | ||
- | Эта команда эквивалентна программе ''[[msx:nextor:nextor#drvinfo|DRVINFO.COM]]'', которая отображает информацию обо всех доступных буквах дисков (которые не отображаются). Отображаемая информация включает в себя соответствующий слот драйвера и другую информацию, которая зависит от соответствующего типа драйвера (имя и версия драйвера для драйверов [[msx:nextor:nextor|Nextor]]; номера устройств и логических блоков для драйверов на основе устройств [[msx:nextor:nextor|Nextor]]; относительный блок для [[msx:dos|]] и дисков на основе [[msx:nextor:nextor|Nextor]] драйверы). Драйверы [[msx:dos|]] будут определены как "Legacy driver" («устаревшие драйверы»). | + | Эта команда эквивалентна программе ''[[msx:nextor:nextor#drvinfo|DRVINFO.COM]]'', которая отображает информацию обо всех доступных буквах дисков (которые не отображаются). Отображаемая информация включает в себя соответствующий слот драйвера и другую информацию, которая зависит от соответствующего типа драйвера (имя и версия драйвера для драйверов [[msx:nextor:|]]; номера устройств и логических блоков для драйверов на основе устройств [[msx:nextor:|]]; относительный блок для [[msx:dos:|]] и дисков на основе [[msx:nextor:|]] драйверы). Драйверы [[msx:dos:|]] будут определены как "Legacy driver" («устаревшие драйверы»). |
{{anchor:call_fdisk}} | {{anchor:call_fdisk}} | ||
Строка 157: | Строка 157: | ||
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
- | Обратите внимание, что эта команда недоступна в режиме [[msx:dos#v1x|MSX-DOS 1]], в котором отсутствует понятие «блокировка диска». | + | Обратите внимание, что эта команда недоступна в режиме [[msx:dos:|]], в котором отсутствует понятие «блокировка диска». |
</WRAP> | </WRAP> | ||
Строка 176: | Строка 176: | ||
{{anchor:call_usr}} | {{anchor:call_usr}} | ||
===== CALL USR ===== | ===== CALL USR ===== | ||
- | FIXME | ||
- | Команда ''CALL USR'' позволяет выполнять код на ассемблере из программы на [[msx:basic:start|]]. Он эквивалентен стандартной команде ''DEF USR'' и функции ''USR'', но с дополнительной функцией: он позволяет указывать входные значения регистров Z80 для кода, который нужно выполнить, и считывать выходные значения после выполнения. | + | Команда ''CALL USR'' позволяет выполнять код на ассемблере из программы на [[msx:basic:|]]. Он эквивалентен стандартной команде ''[[msx:basic_dialogue_programming_language:101#def_usr|DEF USR]]'' и функции ''[[msx:basic_dialogue_programming_language:101#usr|USR]]'', но с дополнительной функцией: он позволяет указывать входные значения регистров [[zilog_z80:zilog_z80|Z80]] для кода, который нужно выполнить, и считывать выходные значения после выполнения. |
- | Синтаксис команды CALL USR выглядит следующим образом: | + | Синтаксис команды ''CALL USR'' выглядит следующим образом: |
<code> | <code> | ||
CALL USR(<code address> [,<registers address>]) | CALL USR(<code address> [,<registers address>]) | ||
</code> | </code> | ||
где: | где: | ||
- | * ''<code address>'' — адрес кода ассемблера, который будет выполнен. \\ Значение -1 рассматривается как особый случай: ''_USR (-1)'' ничего не сделает, но не выдаст ошибку. Вы можете использовать эту функцию вместе с командой ''[[msx:basic_programming_guide:08#onerorrgoto|ON ERROR GOTO]]'', чтобы обнаружить присутствие [[msx:nextor:nextor|Nextor]] в программе на [[msx:basic:start|]]. | + | * ''<code address>'' — адрес кода ассемблера, который будет выполнен. \\ Значение -1 рассматривается как особый случай: ''_USR (-1)'' ничего не сделает, но не выдаст ошибку. Вы можете использовать эту функцию вместе с командой ''[[msx:basic_dialogue_programming_language:008#onerorrgoto|ON ERROR GOTO]]'', чтобы обнаружить присутствие [[msx:nextor:nextor|Nextor]] в программе на [[msx:basic:|]]. |
* ''[,<registers address>]'' — адрес 12–байтового буфера для значений регистров Z80. Если этот параметр указан, регистры будут загружены с содержимым этой области перед вызовом кода; после выполнения кода выполняется обратный процесс: буфер обновляется значениями, хранящимися в регистрах. Порядок регистров в буфере: F, A, C, B, E, D, L, H, IXl, IXh, IYl, IYh. | * ''[,<registers address>]'' — адрес 12–байтового буфера для значений регистров Z80. Если этот параметр указан, регистры будут загружены с содержимым этой области перед вызовом кода; после выполнения кода выполняется обратный процесс: буфер обновляется значениями, хранящимися в регистрах. Порядок регистров в буфере: F, A, C, B, E, D, L, H, IXl, IXh, IYl, IYh. | ||
+ | {{anchor:errors}} | ||
====== Коды ошибок ====== | ====== Коды ошибок ====== | ||
Строка 200: | Строка 200: | ||
* <fs large>(79)</fs> Раздел уже используется. Эта ошибка выдаётся командой ''[[#CALL MAPDRV]]'', если вы попытаетесь сопоставить комбинацию раздела, устройства и драйвера, которые уже сопоставлены на другом диске. Однако вы можете снова сопоставить ту же комбинацию с тем же диском. | * <fs large>(79)</fs> Раздел уже используется. Эта ошибка выдаётся командой ''[[#CALL MAPDRV]]'', если вы попытаетесь сопоставить комбинацию раздела, устройства и драйвера, которые уже сопоставлены на другом диске. Однако вы можете снова сопоставить ту же комбинацию с тем же диском. | ||
* <fs large>(80)</fs> Файл смонтирован. Предпринята попытка открыть или изменить смонтированный файл или выполнить любую другую запрещённую операцию, связанную с монтированным файлом. | * <fs large>(80)</fs> Файл смонтирован. Предпринята попытка открыть или изменить смонтированный файл или выполнить любую другую запрещённую операцию, связанную с монтированным файлом. | ||
- | * <fs large>(81)</fs> Неверный размер файла. Выдаётся командой ''[[#CALL MAPDRV]]'' при попытке смонтировать файл размером менее 512 байт или более 32 Мб. | + | * <fs large>(81)</fs> Неверный размер файла. Выдаётся командой ''[[#CALL MAPDRV]]'' при попытке смонтировать файл размером менее 512 байт или более 32 Мбайт. |
====== Ссылки ====== | ====== Ссылки ====== | ||
- | [[github>Konamiman/Nextor/blob/v2.1/docs/Nextor%202.1%20User%20Manual.md#36-extensions-to-disk-basic|Nextor 2.1 User Manual — 3.6. Extensions to Disk BASIC]] | + | [[github>Konamiman/Nextor/blob/v2.1/docs/Nextor 2.1 User Manual.md#36-extensions-to-disk-basic|Nextor 2.1 User Manual — 3.6. Extensions to Disk BASIC]] |
{{tag>MSX BASIC}} | {{tag>MSX BASIC}} |