| Справочник программиста на персональном компьютере фирмы IBM | 28 |
чтобы сделать программу подходящей для многопользовательсой сис-
темы, необходимо урезать программу до требуемого размера. В пунк-
те [1.3.1] описано как это сделать с помощью функции 4AH прерыва-
ния 21H.
Эта же функция может быть использована для расширения отведен-
ной памяти. Поскольку программе отводится вся доступная память
при загрузке, то такое расширение невозможно при старте. Если Вы
попробуете сделать это, то будет установлен флаг переноса, в
регистре AX появится код ошибки 8, а в регистре BX будет возвра-
щено максимальное число доступных 16-байтных параграфов. Эта
информация как раз и нужна. Значит надо выдать запрос со слишком
большим значением в регистре BX ( скажем, F000H параграфов), а
затем выполните прерывание. Позаботьтесь о том, чтобы выполнить
эту функцию в самом начале программы, пока регистр ES еще имеет
начальное значение.
Высокий уровень.
Интерпретатор Бейсика использует только 64K (хотя операторы
PEEK и POKE позволяют доступ к памяти за пределами 64K). Доля
памяти доступная в настоящий момент возвращается функцией FRE.
Эта функция имеет фиктивный аргумент, который может быть числовым
или символьной строкой. BYTES = FRE(x) передает в BYTES число
свободных байтов. BYTES = FRE(x$) делает то же самое. Но строко-
вый аргумент вынуждает очистку области данных перед тем как возв-
ратить число байтов. Заметим, что если размер рабочей области
устанавливается с помощью оператора CLEAR, то количество памяти,
сообщаемое функцией FRE будет на от 2.5 до 4 килобайт меньше
из-за потребностей рабочей области интерпретатора.
Предыдущая страница 28 Следующая страница
225172019
|