Содержание

Nextor — расширения Disk BASIC

Расширения Nextor для MSX Disk BASIC

Дополнения/изменения описаны в следующих разделах:

Команды и функции

Свободное место на диске

Оригинальная функция DSKF(), указывающая свободное место на диске, возвращает число свободных кластеров в MSX-DOS. В Nextor поведение этой команды было изменено: теперь возвращает количество свободных Кбайт.

Это эти изменения кардинально отличают её поведение от MSX-DOS. Однако большинство существующих программ, использующих эту команду, на самом деле не рассчитывают количество свободного пространства в Кбайтах, вместо этого отображается необработанный счётчик кластеров для пользователя. Кроме того, в течение многих лет наиболее популярным носителем данных для компьютеров MSX была дискета 2DD, размер кластера которой составлял 1 Кбайт, поэтому многие пользователи ошибочно полагали, что команда DSKF все равно возвращает значение в Кбайт.

Но эти изменения не применяется к режиму MSX-DOS, в этом режиме счётчик свободных кластеров по–прежнему возвращается как счётчик кластеров.

Работа с секторами диска

Оригинальные функция DSKI$() и команда DSKO$, которые позволяют считывать и записывать один сектор диска соответственно, теперь принимают 32–битные номера секторов, что позволяет получить доступ к любому сектору диска, а не только к первым 65536 секторам.

Чтобы получить доступ к секторам с номерами свыше 32767, номер сектора должен быть указан как константа одинарной или двойной точности, выражение или переменная. Если указано значение с одинарной точностью, а число настолько велико, что одна или несколько младших цифр номера теряются из–за округления, эти команды завершатся с ошибкой «Overflow»(переполнение). Это разработано таким образом, чтобы предотвратить случайный доступ к неправильному сектору.

Смена текущего диска

CALL CHDRV

Эта команда изменяет текущий диск, и он уже существует.

Диск может быть указана в виде:

  1. числа 1–8
  2. буква диска от A до H (после буквы двоеточие)

Например,

_CHDRV (3)

то же самое, что

_CHDRV ("C:")

Команды CALL

CALL NEXTOR

Эта команда просто вывод на экран список новых команд для оператора CALL, которые Nextor предоставляет для среды MSX BASIC.

Список команд:

Отобразить текущий диск

CALL CURDRV

Эта команда просто отобразит текущий диск.

Доступные драйверы

CALL DRIVERS

Эта команда эквивалентна программе DRIVERS.COM, которая отображает информацию о доступных драйверах MSX-DOS и Nextor. Отображается имя и версия (только для драйверов Nextor), номер слота и смонтированные диски. Драйверы MSX-DOS будут определены как «Legacy driver» («устаревшие драйверы»).

Доступные диски

CALL DRVINFO

Эта команда эквивалентна программе DRVINFO.COM, которая отображает информацию обо всех доступных буквах дисков (которые не отображаются). Отображаемая информация включает в себя соответствующий слот драйвера и другую информацию, которая зависит от соответствующего типа драйвера (имя и версия драйвера для драйверов Nextor; номера устройств и логических блоков для драйверов на основе устройств Nextor; относительный блок для MSX-DOS и дисков на основе Nextor драйверы). Драйверы MSX-DOS будут определены как «Legacy driver» («устаревшие драйверы»).

Программа разметки блочных устройств

CALL FDISK

Это программа подробно описана здесь.

Блокировка

Эта команда позволяет заблокировать/разблокировать устройство аналогично команде LOCK.COM

Текущее состояние блокировки:

CALL LOCKDRV(<drive>)

Разблокировать:

CALL LOCKDRV(<drive>, 0)

Заблокировать:

CALL LOCKDRV(<drive>, <любое число ≠ 0>)

<drive> — буква диска может быть указана в виде:

  1. числа 1–8
  2. буква диска от A до H (после буквы двоеточие)

Например,

_LOCKDRV (3)

то же самое, что

_LOCKDRV ("C:")

Монтирование

В Nextor есть аналогичная команда: MAPDRV

Монтирование раздела устройства

CALL MAPDRV(<drive>, <partition>, <device>, <slot>|0)

где:

Пример:

CALL MAPDRV("C:", 2, 1, 6)

Монтирование раздела устройства c блокировкой

Команда CALL MAPDRVL идентична команде CALL MAPDRV, за исключением того, что она выполнит блокировку диска.

В Nextor есть аналогичная команда: LOCK.

Обратите внимание, что эта команда недоступна в режиме MSX-DOS, в котором отсутствует понятие «блокировка диска».

Монтирование образа диска

CALL MAPDRV(<drive>, <file> [,0|1])

где:

CALL USR

Команда CALL USR позволяет выполнять код на ассемблере из программы на MSX BASIC. Он эквивалентен стандартной команде DEF USR и функции USR, но с дополнительной функцией: он позволяет указывать входные значения регистров Z80 для кода, который нужно выполнить, и считывать выходные значения после выполнения.

Синтаксис команды CALL USR выглядит следующим образом:

CALL USR(<code address> [,<registers address>])

где:

Коды ошибок

Ссылки

Nextor 2.1 User Manual — 3.6. Extensions to Disk BASIC