Инструменты пользователя

Инструменты сайта


msx:nextor:disk_basic

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:nextor:disk_basic [2020-04-15 15:24]
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}}
-===== Программа разметки блочном устройств ​(дисков) ​=====+===== Программа разметки блочных устройств =====
  
 <​code>​ <​code>​
Строка 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}}
msx/nextor/disk_basic.1586953477.txt.gz · Последние изменения: 2020-04-15 15:24 — GreyWolf