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

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


msx:nextor:disk_basic

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:nextor:disk_basic [2022-08-05 22:07]
GreyWolf
msx:nextor:disk_basic [2022-09-09 22:25] (текущий)
GreyWolf
Строка 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:​|]].+Эта команда просто вывод на экран список новых команд для оператора [[msx:basic_dialogue_programming_language:​007#​call|CALL]],​ которые [[msx:​nextor:​nextor|Nextor]] предоставляет для среды [[msx:​basic:​|]].
  
 Список команд:​ Список команд:​
Строка 157: Строка 157:
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-Обратите внимание,​ что эта команда недоступна в режиме [[msx:dos:#v1x|MSX-DOS 1]], в котором отсутствует понятие «блокировка диска».+Обратите внимание,​ что эта команда недоступна в режиме [[msx:​dos:​|]],​ в котором отсутствует понятие «блокировка диска».
 </​WRAP>​ </​WRAP>​
  
Строка 177: Строка 177:
 ===== CALL USR ===== ===== CALL USR =====
  
-Команда ''​CALL USR''​ позволяет выполнять код на ассемблере из программы на [[msx:​basic:​|]]. Он эквивалентен стандартной команде ''​[[msx:​basic_programming_guide:​101#​def_usr|DEF USR]]''​ и функции ''​[[msx:​basic_programming_guide:​101#​usr|USR]]'',​ но с дополнительной функцией:​ он позволяет указывать входные значения регистров [[zilog_z80:​zilog_z80|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''​ выглядит следующим образом:​
Строка 184: Строка 184:
 </​code>​ </​code>​
 где: где:
-  * ''<​code address>''​ — адрес кода ассемблера,​ который будет выполнен. \\ Значение -1 рассматривается как особый случай:​ ''​_USR (-1)''​ ничего не сделает,​ но не выдаст ошибку. Вы можете использовать эту функцию вместе с командой ''​[[msx:​basic_programming_guide:​08#​onerorrgoto|ON ERROR GOTO]]'',​ чтобы обнаружить присутствие [[msx:​nextor:​nextor|Nextor]] в программе на [[msx:​basic:​|]].+  * ''<​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.
  
msx/nextor/disk_basic.1659726474.txt.gz · Последние изменения: 2022-08-05 22:07 — GreyWolf