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

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


msx:nextor:disk_basic

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:nextor:disk_basic [2020-09-19 12:05]
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}}
 ====== Коды ошибок ====== ====== Коды ошибок ======
  
Строка 204: Строка 204:
 ====== Ссылки ====== ====== Ссылки ======
  
-[[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.1600506316.txt.gz · Последние изменения: 2020-09-19 12:05 — GreyWolf