Как установить himem sys

Как установить himem sys

Установить HIMEM вы можете с помощью команды DEVICE для HIMEM.SYS в файле CONFIG.SYS. Команды для HIMEM.SYS должны следовать перед другими командами, запускающими прикладные программы или драйверы устройств, использующие дополнительную память (например, EMM386.EXE).

В большинстве случаев параметры командной строки задавать не требуется. Значения по умолчанию обеспечивают работу HIMEM.SYS на большинстве аппаратных средств.

Параметр [диск:][маршрут] задает расположение файла HIMEM.SYS. Его всегда следует размещать на том же диске, где содержатся файлы MS-DOS. Если файл HIMEM.SYS находится в корневом каталоге на системном диске, маршрут задавать не надо. Однако всегда нужно указывать полное имя файла (HIMEM.SYS).

Параметр /A20CONTROL:ON OFF определяет, должен ли HIMEM выполнять управляющие функции обработчика A20 (даже при включенном A20 при загрузке HIMEM. Обработчик A20 дает вашему компьютеру доступ к HMA. Если вы зададите /A20CONTROL:OFF, HIMEM берет на себя управления A20 только при выключенном обработчике A20. По умолчанию устанавливается /A20CONTROL:ON.

/CPUCLOCK:ON OFF определяет, должен ли HIMEM влиять на скорость часов вашего компьютера. Если после загрузки HIMEM скорость хода часов вашего компьютера изменяется, то /CPUCLOCK:ON поможет исправить проблему, однако данный параметр замедляет работу HIMEM. По умолчанию устанавливается /CPUCLOCK:OFF.

/EISA задает, что HIMEM должен распределять всю доступную память. Этот параметр необходим только для компьютеров с расширенной архитектуройEISA (Extended Industry Standard Architecture) и более 16 мегабайтами памяти. На других компьютерах HIMEM автоматически распределяет всю доступную дополнительную память.

/INT15=xxxx резервирует заданный (в килобайтах) объем дополнительный памяти для интерфейса прерывания 15h. Некоторые старые прикладные программы вместо XMS (eXtended-Memory Specification), как это делает HIMEM, используют интерфейс для выделения дополнительной памяти прерывания 15h. Если вы используете эти программы, то можете с помощью установки xxxx на 64К больше объема, требуемого программе, обеспечить остаточно памяти.

Можно задавать значение от 64 до 65535, однако нельзя задать больше памяти, чем имеет система. Если вы зададите значение, меньшее 64, то оно становится нулевым.

/NUMHANDLES=n задает максимальное число блоков дополнительной памяти (EMB), которые могут использовать одновременно. Вы можете задавать значение от 1 до 128 (по умолчанию 32). Каждый дополнительный описатель требует 6 байт памяти.

При работе Windows в улучшенном режиме 386 параметр /NUMHANDLES не действует.

/MACHINE:xxxx задает тип используемого компьютера. Обычно HIMEM может распознавать тип компьютера, однако на некоторых типах компьютеров (например, Acer 1100, Wyse и IBM 7552) это сделать не удается. В таких системах HIMEM использует тип компьютера по умолчанию (IBM AT-совместимый). Если ваш компьютер имеет тип, не распознаваемый HIMEM, может потребоваться данный параметр. Значения xxxx приведены в следующей таблице:

Код

Число

Тип компьютера

at

1

IBM AT-совместимый

ps2

2

IBM PS/2

ptlcascade

3

Phoenix Cascade BIOS

hpvectra

4

HP Vectra (A и A+)

att6300plus

5

AT&T 6300 Plus

acer1100

6

Acer 1100

toshiba

7

Toshiba 1600 и 1200XE

wyse

8

Wyse 12.5 Mhz 286

tulip

9

Tulip SX

zenith

10

Zenith ZBIOS

at1

11

IBM PC/AT (альтерн.)

at2

12

IBM PC/AT (альтерн.)

css

12

CSS Labs

at3

13

IBM PC/AT (альтерн.)

philips

13

Philips

fasthp

14

HP Vectra

ibm7552

15

IBM 7552

bullmicral

16 Bull Micral 60

dell

17

Dell XBIOS

/SHADOWRAM:ON OFF определяет, следует ли запретить теневую оперативную память RAM (SHADOWRAM:OFF) или оставить выполняемый из RAM код ROM (SHADOWRAM:ON). На некоторых компьютерах с помощью «теневого» отображения кода ROM (ПЗУ) в RAM (ОЗУ) обеспечивается его более быстрое выполнение. При этом используется некоторый объем дополнительной памяти. На отдельных компьютерах с теневой памятью и менее 2 мегабайт оперативной памяти HIMEM обычно пытается запретить теневую память RAM, чтобы получить дополнительную память для использования ее Windows. (HIMEM может запретить RAM только на определенных типах систем.) При запрете HIMEM теневой RAM код ROM выполняется в более медленной памяти ROM, что несколько замедляет работу компьютера.

/VERBOSE задает вывод в HIMEM при загрузке сообщений о состоянии и ошибках. По умолчанию HIMEM не выводит сообщений, пока не обнаружит ошибку. /VERBOSE можно сократить до /V.

В версии 6.2 MS-DOS HIMEM.SYS включает в себя новое средство защиты. HIMEM при каждом запуске компьютера тестирует память, записывая в нее и считывая данные. Если считанные HIMEM данные отличаются от записанных, то память по данному адресу считается ненадежной. При этом выводится следующее сообщение:

Если получите такое сообщение, то память вашей машины должен проверить квалифицированный электронщик. Запрещать проверку памяти и работать дальше не рекомендуется.

В каждый момент времени старшую память (HMA) может использовать только одна программа. Если вы опустите параметр /HMAMIN=m или установите его в 0, HIMEM резервирует HMA для первой программы с соответствующим запросом. Чтобы обеспечить более эффективную работу с памятью, установите в /HMAMIN=m наибольший объем памяти, используемый такими программами.

Источник

Как установить himem sys

Как установить himem sys. Смотреть фото Как установить himem sys. Смотреть картинку Как установить himem sys. Картинка про Как установить himem sys. Фото Как установить himem sys

Как установить himem sys. Смотреть фото Как установить himem sys. Смотреть картинку Как установить himem sys. Картинка про Как установить himem sys. Фото Как установить himem sys

Every people has right on left
Chia ulo havas rajton sur levo

Каждый человек имеет право на лево
(Н. Фоменко)

CopyLeft (L) Юрий А. Денисов
(yudenisov)
Все права защищены

G.2.1.a Перевод онлайнового руководства пользователя MS-DOS версии 6.22

Драйвер HIMEM.SYS.

Перевел Ю.А. Денисов

Copyright Microsoft Inc.

_ Замечания _ _ Примеры _

HIMEM – менеджер расширенной памяти (XMS) – программа, которая координирует использование расширенной памяти (XMS) вашего компьютера, включая область верхней памяти (HMA) так, чтобы никакие две прикладных программы или драйверы устройства не могли бы использовать одну и ту же область памяти в одновременно.

Вы устанавливаете HIMEM, добавляя команду для HIMEM.SYS в Вашем CONFIG.SYS файле. Командная строка с HIMEM.SYS должна присутствовать перед любыми командами, которые запускают прикладные программы или драйверы устройства, использующие расширенную память (XMS); например, HIMEM.SYS командная строка должна предшествовать командной строке EMM386. EXE.

DEVICE=[drive:][path]HIMEM.SYS [/A20CONTROL:ON|OFF] [/CPUCLOCK:ON|OFF] [/EISA] [/HMAMIN=m] [/INT15=xxxx] [/NUMHANDLES=n] [/MACHINE:xxxx] [/SHADOWRAM:ON|OFF] [/TESTMEM:ON|OFF] [/VERBOSE]

В большинстве случаев, Вам не нужно определить параметры командной строки. Значения по умолчанию для HIMEM.SYS разработаны так, чтобы работать с большинством аппаратных средств.

Определяет расположение HIMEM.SYS файла. HIMEM.SYS должен всегда размещаться на том же диске, который содержит файлы операционной системы MS-DOS. Если HIMEM.SYS файл находится в корневой директории Вашего загрузочного диска, Вы не должны добавлять путь. Однако, Вы должны всегда указывать полное имя файла (HIMEM.SYS).

Определяет, что HIMEM должен распределить всю доступную (XMS) расширенную память. Этот переключатель необходим только на EISA (Расширенная Архитектура Промышленного стандарта) компьютер с памятью больше, чем 16 МБ; на других компьютерах, HIMEM автоматически распределяет всю доступную (XMS) расширенную память.

Определяет, сколько килобайтов памяти HMA может затребовать прикладная программа от HIMEM для своего использования. Одновременно только одна прикладная программа может использовать HMA; HIMEM выдает HMA первой прикладной программе, которая отвечает набору требований использования памяти, задаваемой этой опцией. Вы можете определять это значение от 0 до 63.

Установите для /HMAMIN объем памяти, требуемой той прикладной программе, которая использует больший объем HMA памяти.

/HMAMIN опция не требуется; значение по умолчанию – нуль. Если опустить эту опцию (или установить ее в ноль), то HIMEM выдает HMA первой прикладной программе, которая запрашивает ее, независимо от того, сколько памяти из HMA собирается использовать прикладная программа.

/HMAMIN опция не имеет никакого эффекта, когда Windows выполняется в 386 расширенном режиме.

Распределяет количество (XMS) расширенной памяти (в килобайтах), которая должна быть зарезервирована для интерфейса прерывания 15. Некоторые старые прикладные программы использовали интерфейс прерывания 15, чтобы выделить расширенную память (XMS), еще до того, как была разработана XMS (Спецификация расширенной памяти), на основе которой работает HIMEM. Если Вы используете эти прикладные программы, Вы можете гарантировать, что им будет доступно достаточно памяти, установив xxxx на 64 КБ памяти больше, чем количество, требуемое прикладной программой.

Вы можете определять значение от 64 до 65535; однако, Вы не можете определять большее количество памяти, чем имеет Ваша система. Если Вы определяете значение меньше чем 64, значение становится 0. Значение по умолчанию – 0.

Опция /NUMHANDLES не дает никакого эффекта, когда Windows выполняется в 386 расширенном режиме.

Определяет, какой компьютер Вы используете. Обычно, HIMEM может успешно обнаружить тип вашего компьютера автоматически; однако, имеются несколько компьютеров, которые HIMEM не может обнаружить. На таких системах, HIMEM использует заданный по умолчанию тип системы (IBM AT или совместимый). Вы должны будете включить эту машинную опцию, если тип вашего компьютера тот, который HIMEM не может обнаружить, и если HIMEM работает неправильно на Вашем компьютере, используя заданный по умолчанию тип системы.

В настоящее время, системы, которые требуют этой опции, включают Acer 1100, Wyse, и IBM 7552.

Значение для xxxx может быть любой из кодов или их эквивалентных чисел, перечисленных в следующей таблице.

Code Number Computer type
at1 IBM AT or 100% compatible
ps22 IBM PS/2
ptlcascade 3 Phoenix Cascade BIOS
hpvectra 4 HP Vectra (A & A+)
att6300plus 5 AT&T 6300 Plus
acer1100 6 Acer 1100
toshiba 7 Toshiba 1600 & 1200XE
wyse 8 Wyse 12.5 Mhz 286
tulip 9 Tulip SX
zenith 10 Zenith ZBIOS
at1 11 IBM PC/AT (alternative delay)
at2 12 IBM PC/AT (alternative delay)
css 12 CSS Labs
at3 13 IBM PC/AT (alternative delay)
philips 13 Philips
fasthp 14 HP Vectra
ibm7552 15 IBM 7552 Industrial Computer
bullmicral 16 Bull Micral 60
dell 17 Dell XBIOS

Определяет, отключить ли теневую оперативную память ( SHADOWRAM:OFF ) или оставить загрузку кода из ROM в оперативную память ( SHADOWRAM:ON ).

Некоторые компьютеры ускоряют код ROM, «пересылкой» его в RAM то есть, копируя код ROM в более быструю память RAM при запуске, используя (XMS) расширенную память. На компьютерах, которые используют теневую RAM и имеют меньше чем 2 МБ ОЗУ, HIMEM обычно делает попытку отключать теневое ОЗУ, чтобы использовать дополнительно (XMS) расширенную память для Windows. (HIMEM может отключать теневое ОЗУ только для некоторых типов систем.) Когда HIMEM отключает теневое ОЗУ, код ROM выполняется на более медленном ROM, чем используемое в ОЗУ; следовательно, Ваш компьютер будет работать немного медленнее чем прежде.

Указывает HIMEM, чтобы он отобразил состояние и показал сообщения об ошибках при загрузке. По умолчанию, HIMEM не отображает никакие сообщения, если он не сталкивается с ошибкой. Вы можете сократить аббревиатуру до /V. (Чтобы отобразить сообщения состояния памяти без установки переключателя /VERBOSE, нажмите и удерживайте клавишу ALT, во время загрузки HIMEM.)

_ _ Примеры _ _ Синтаксис _

HIMEM проверяет надежность вашей (XMS) расширенной памяти MS-DOS 6.22 версия HIMEM.SYS включает специальное свойство безопасности: Оно проверяет (XMS) расширенную память вашего компьютера каждый раз, когда Ваш компьютер стартует. HIMEM проверяет память, записывая и читая данные в каждой ячейке адреса памяти и проверяя различия в данных. Если данные при чтении HIMEM отличается от данных, которые оно только что записало по тому же адресу, то память по этому адресу ненадежна. Ненадежная память может вызывать неустойчивость системы или потерю данных. Тест памяти HIMEM’S более полон, чем стандартный тест памяти включения питания, выполняемый большинством компьютеров.

Если HIMEM обнаруживает ненадежную память, оно отображает следующее сообщение и далее не загружается:

ERROR: HIMEM.SYS has detected unreliable extended memory at address XXXXXXXXh.

ОШИБКА: HIMEM.SYS обнаружил ненадежную расширенную память по адресу XXXXXXXXH.

Если Вы получили это сообщение, Вы должны проверить память Вашего компьютера с помощью квалифицированного электронщика. Хотя Вы можете отключить тест памяти и загрузить HIMEM, используя переключатель /TESTMEM:OFF, этого делать не желательно, пока Вы не проверили память с помощью квалифицированного электронщика.

Заданное по умолчанию распределение памяти

Только одна программа одновременно может использовать область верхней памяти (HMA). Если Вы опускаете переключатель /HMAMIN = м. (или устанавливаете его в 0), HIMEM резервирует HMA для первой же программы, которая ее запрашивает, и это устанавливаете переключатель запроса расширенной памяти /HMAMIN = м. Чтобы гарантировать наиболее эффективное использование области верхней памяти для Вашей системы, установите /HMAMIN = м. для такого объема памяти, которое запросит программа с наибольшими требованиями к HMA памяти.

Загрузка MS-DOS в область области верхней памяти

HIMEM или другой XMS драйвер должен быть обязательно загружен, чтобы МС-ДОС загрузилась в область верхней памяти (HMA). Вы загружаете МС-ДОС в HMA, используя команду DOS = HIGH в вашем CONFIG.SYS файле. (Команда DOS = HIGH может появляться в любом месте CONFIG.SYS файла.)

_ Синтаксис _ _ Замечания _

Чтобы запустить HIMEM, используя значения по умолчанию, добавьте следующую командную строку к вашему CONFIG.SYS файлу:

Командная строка, показанная выше, не определяет путь для HIMEM.SYS файла; следовательно, МС-ДОС ищет HIMEM.SYS файл только в корневой директории вашего загрузочного диска. Поскольку эта командная строка не включает дополнительные параметры, HIMEM использует значения по умолчанию для своих параметров. HIMEM распределяет HMA для первой программы, которая запрашивает ее, и позволяет одновременное использование до 32 дескрипторов расширенной памяти.

Увеличение числа дескрипторов памяти, чем HIMEM обеспечивает по умолчанию

Чтобы определить максимум 128 дескрипторов расширенной памяти, к которым можно обратиться одновременно, добавьте следующую командную строку к вашему CONFIG.SYS файлу:

Как установить himem sys. Смотреть фото Как установить himem sys. Смотреть картинку Как установить himem sys. Картинка про Как установить himem sys. Фото Как установить himem sys

Copyright (C) Юрий А. Денисов. 2000-2002 г.

В настоящее время проект закрыт (в версии 1.3.0 beta). Автор приносит извинения за прекрашение разработки.

Источник

HIMEM.SYS

Установить HIMEM вы можете с помощью команды DEVICE для HIMEM.SYS в файле CONFIG.SYS. Команды для HIMEM.SYS должны следовать перед другими командами, запускающими прикладные программы или драйверы устройств, использующие дополнительную память (например, EMM386.EXE).

В большинстве случаев параметры командной строки задавать не требуется. Значения по умолчанию обеспечивают работу HIMEM.SYS на большинстве аппаратных средств.

Параметр [диск:][маршрут] задает расположение файла HIMEM.SYS. Его всегда следует размещать на том же диске, где содержатся файлы MS-DOS. Если файл HIMEM.SYS находится в корневом каталоге на системном диске, маршрут задавать не надо. Однако всегда нужно указывать полное имя файла (HIMEM.SYS).

Параметр /A20CONTROL:ON OFF определяет, должен ли HIMEM выполнять управляющие функции обработчика A20 (даже при включенном A20 при загрузке HIMEM. Обработчик A20 дает вашему компьютеру доступ к HMA. Если вы зададите /A20CONTROL:OFF, HIMEM берет на себя управления A20 только при выключенном обработчике A20. По умолчанию устанавливается /A20CONTROL:ON.

/CPUCLOCK:ON OFF определяет, должен ли HIMEM влиять на скорость часов вашего компьютера. Если после загрузки HIMEM скорость хода часов вашего компьютера изменяется, то /CPUCLOCK:ON поможет исправить проблему, однако данный параметр замедляет работу HIMEM. По умолчанию устанавливается /CPUCLOCK:OFF.

/EISA задает, что HIMEM должен распределять всю доступную память. Этот параметр необходим только для компьютеров с расширенной архитектуройEISA (Extended Industry Standard Architecture) и более 16 мегабайтами памяти. На других компьютерах HIMEM автоматически распределяет всю доступную дополнительную память.

/INT15=xxxx резервирует заданный (в килобайтах) объем дополнительный памяти для интерфейса прерывания 15h. Некоторые старые прикладные программы вместо XMS (eXtended-Memory Specification), как это делает HIMEM, используют интерфейс для выделения дополнительной памяти прерывания 15h. Если вы используете эти программы, то можете с помощью установки xxxx на 64К больше объема, требуемого программе, обеспечить остаточно памяти.

Можно задавать значение от 64 до 65535, однако нельзя задать больше памяти, чем имеет система. Если вы зададите значение, меньшее 64, то оно становится нулевым.

/NUMHANDLES=n задает максимальное число блоков дополнительной памяти (EMB), которые могут использовать одновременно. Вы можете задавать значение от 1 до 128 (по умолчанию 32). Каждый дополнительный описатель требует 6 байт памяти.

При работе Windows в улучшенном режиме 386 параметр /NUMHANDLES не действует.

/MACHINE:xxxx задает тип используемого компьютера. Обычно HIMEM может распознавать тип компьютера, однако на некоторых типах компьютеров (например, Acer 1100, Wyse и IBM 7552) это сделать не удается. В таких системах HIMEM использует тип компьютера по умолчанию (IBM AT-совместимый). Если ваш компьютер имеет тип, не распознаваемый HIMEM, может потребоваться данный параметр. Значения xxxx приведены в следующей таблице:

/SHADOWRAM:ON OFF определяет, следует ли запретить теневую оперативную память RAM (SHADOWRAM:OFF) или оставить выполняемый из RAM код ROM (SHADOWRAM:ON). На некоторых компьютерах с помощью «теневого» отображения кода ROM (ПЗУ) в RAM (ОЗУ) обеспечивается его более быстрое выполнение. При этом используется некоторый объем дополнительной памяти. На отдельных компьютерах с теневой памятью и менее 2 мегабайт оперативной памяти HIMEM обычно пытается запретить теневую память RAM, чтобы получить дополнительную память для использования ее Windows. (HIMEM может запретить RAM только на определенных типах систем.) При запрете HIMEM теневой RAM код ROM выполняется в более медленной памяти ROM, что несколько замедляет работу компьютера.

/VERBOSE задает вывод в HIMEM при загрузке сообщений о состоянии и ошибках. По умолчанию HIMEM не выводит сообщений, пока не обнаружит ошибку. /VERBOSE можно сократить до /V.

В версии 6.2 MS-DOS HIMEM.SYS включает в себя новое средство защиты. HIMEM при каждом запуске компьютера тестирует память, записывая в нее и считывая данные. Если считанные HIMEM данные отличаются от записанных, то память по данному адресу считается ненадежной. При этом выводится следующее сообщение:

Если получите такое сообщение, то память вашей машины должен проверить квалифицированный электронщик. Запрещать проверку памяти и работать дальше не рекомендуется.

В каждый момент времени старшую память (HMA) может использовать только одна программа. Если вы опустите параметр /HMAMIN=m или установите его в 0, HIMEM резервирует HMA для первой программы с соответствующим запросом. Чтобы обеспечить более эффективную работу с памятью, установите в /HMAMIN=m наибольший объем памяти, используемый такими программами.

Источник

11 расширенная память

Однако в составе MS-DOS версии 4.0 и более поздних версий появился драйвер расширенной памяти HIMEM.SYS, который в некоторой степени облегчает жизнь программистам, составляющим программы для MS-DOS. Этот драйвер расширяет основное адресное пространство 640 Kбайт еще примерно на 64 Кбайт и предоставляет относительно удобное средство для хранения в расширенной памяти массивов данных.

Будучи установлен в операционной системе, драйвер HIMEM.SYS обеспечивает программный интерфейс в соответствии со спецификацией XMS (eXtended Memory Specification), разработанный корпорациями Lotus, Intel, Microsoft и AST Research.

Основные понятия

При обсуждении спецификации XMS мы будем использовать следующие понятия и термины:

На рис. 11.1 схематично показано расположение различных перечисленных выше блоков памяти в адресном пространстве.

Рис. 11.1. Расположение различных блоков памяти в адресном пространстве

Установка драйвера HIMEM.SYS

Для установки драйвера файл CONFIG.SYS должен содержать строку:

Параметр /HMAMIN = (необязательный) задает минимальный размер памяти, который могут использовать программы в области HMA. Размер задается в килобайтах. Смысл использования этого параметра заключается в том, чтобы позволять использовать область HMA только тем программам, которые затребуют из этой области не меньше h Кбайт. Это нужно для того чтобы более эффективно использовать область HMA.

Если параметр не задан, используется по умолчанию значение 0. Это означает, что первая же программа, запросившая область HMA, получит к ней доступ. Программа, запущенная следом и, возможно, использующая эту память эффективнее, уже не сможет воспользоваться областью HMA.

Максимальное значение параметра h равно 63.

При установке драйвер HIMEM.SYS XE «HIMEM.SYS» может выдавать сообщения об ошибках в следующих случаях:

· используется MS-DOS более старой версии, чем 3.00;

· в компьютере установлен процессор 8086 или 8088;

· при использовании компьютеров с нестандартными схемами управления расширенной памятью и линией A20

Спецификация XMS

Спецификация XMS содержит описание программного интерфейса драйвера HIMEM.SYS и рекомендации по использованию области памяти HMA.

Проверка подключения драйвера

Приведем фрагмент программы, проверяющей подключение драйвера:

Получение адреса управляющей программы

Для вызова драйвера программа должна получить адрес специальной управляющей программы, которая выполняет все функции по обслуживанию расширенной памяти и области HMA.

В дальнейшем полученный адрес используется для выполнения функций по обслуживанию расширенной памяти. Перед вызовом управляющей программы код требуемой функции должен быть загружен в регистр AH:

Программы, которые обращаются к управляющей функции, должны перед вызовом функции иметь размер стека не менее 256 байт.

Описание функций драйвера HIMEM.SYS

Все функции драйвера HIMEM.SYS могут быть разделены на следующие пять групп:

· функции получения информации о драйвере (0h);

· функции управления областью HMA (1h. 2h);

· функции управления линией A20 (3h. 7h);

· функции управления расширенной памятью (8h. Fh);

· функции управления блоками UMB (10h. 11h).

Приведем подробное описание этих функций в соответствии со спецификацией XMS версии 2.0.

Получить версию XMS

Регистры на выходе:

BX = номер внутренней модификации драйвера;

Функция возвращает номера версии и модификации XMS в двоично-десятичном (BCD) формате. Например, если AX=0250h, это означает, что драйвер соответствует спецификации XMS версии 2.50. Дополнительно функция позволяет проверить наличие в системе области HMA.

Запросить область HMA

DX = размер памяти в байтах в области HMA, которая будет использоваться резидентными программами или драйверами. Обычная программа должна указывать значение DX, равное 0FFFFh

Регистры на выходе:

BL = 80h, 81h, 90h, 91h, 92h (описание кодов ошибок будет приведено после описания всех функций)

С помощью этой функции программа может зарезервировать для себя область HMA. Задаваемый в регистре DX размер памяти сравнивается с указанным в параметре драйвера /HMAMIN=. Область HMA распределяется запросившей программе только в том случае, если запрошенный в регистре DX размер больше или равен указанному в параметре /HMAMIN. Такой механизм позволяет ограничить использование области HMA только теми программами, которые используют ее наилучшим образом.

Поясним это на примере. Пусть при инициализации операционной системы из файла AUTOEXEC.BAT запускаются две программы. Одна из них использует 10 Кбайт из области HMA и запускается первой (в регистре DX функции 01h эта программа указывает значение 10240). Вторая запускаемая программа использует 40 Кбайт и запускается после первой. Очевидно, что вторая программа использует область HMA более эффективно. Но так как область HMA уже распределена первой программе, вторая программа не сможет получить ее для себя.

Задавая параметр /HMAMIN =40, мы запретим распределение области HMA тем программам, которые используют в ней меньше 40 Кбайт. Теперь первая программа не получит доступ к области HMA, даже если она будет запускаться до второй, использующей 40 Кбайт памяти из области HMA.

Освободить область HMA

Регистры на выходе:

BL = 80h, 81h, 90h, 93h

Программы, которые запрашивали область HMA, должны освобождать ее после использования при помощи этой функции. При этом данные, которые находились в этой области, будут потеряны.

После того, как программа освободила область HMA, эта область становится доступной другим программам.

Глобальное открывание линии A20

Регистры на выходе:

Эта функция предназначена для тех программ, которые будут использовать область HMA. Она разрешает работу заблокированной по умолчанию 21 адресной линии процессора. Перед возвратом управления системе программа должна закрыть линию A20 с помощью функции 04h.

Глобальное закрывание линии A20

Регистры на выходе:

BL = 80h, 81h, 82h, 94h

Функция предназначена для тех программ, которые используют область HMA. Она должна выполняться перед завершением работы такой программы.

Локальное открывание линии A20

Регистры на выходе:

Эта функция предназначена только для тех программ, которые непосредственно управляют расширенной памятью. Перед завершением работы программа должна закрыть линию A20 при помощи функции 06h.

Локальное закрывание линии A20

Регистры на выходе:

BL = 80h, 81h, 82h, 94h

Функция отменяет разрешение линии A20, запрошенное предыдущей функцией. Она предназначена только для тех программ, которые непосредственно управляют расширенной памятью.

Определение состояния линии A20

Регистры на выходе:

Функция выполняет попытку адресоваться за границу 1 Мбайт памяти и проверяет, не происходит ли при этом обращение в начало памяти (то есть «свертка памяти»).

Определение размера свободной расширенной памяти

Регистры на выходе:

AX = размер наибольшего свободного блока расширенной памяти, Кбайт;

DX = общий размер свободной расширенной памяти, Кбайт

При определении размера свободной расширенной памяти в возвращаемое значение не включается 64 Кбайт области HMA, даже если эта область не используется программами.

Получить блок EMB

DX = размер требуемого блока, Кбайт

Регистры на выходе:

DX = 16-разрядный идентификатор (handle) полученного блока EMB

BL = 80h, 81h, A0h, A1h

Функция заказывает блок EMB из пула свободной расширенной памяти. При успешном выполнении запроса функция возвращает идентификатор полученного блока, который должен использоваться программой для выполнения всех операций с блоком EMB. Если блок EMB программе больше не нужен, она должна освободить его с помощью функции 0Ah.

Освободить блок EMB

DX = идентификатор освобождаемого блока EMB

Регистры на выходе:

BL = 80h, 81h, A2h, B2h

Функция освобождает блок EMB, заказанный предыдущей функцией. При этом все данные, находившиеся в блоке, будут потеряны.

Копирование блоков EMB

DS:SI = указатель на управляющую структуру, определяющую откуда, куда и как будет выполняться копирование

Регистры на выходе:

BL = 80h, 81h, 82h, A3h, A4h, A5h, A6h, A7h, A8h, A9h

Формат управляющей структуры представлен ниже:

Поле Length управляющей структуры указывает количество пересылаемых байт данных. Это количество должно быть четным.

Поля SourceHandle и DestHandle указывают, соответственно, идентификаторы исходного блока EMB и блока, в который выполняется копирование. Если в качестве идентификатора задано значение 0000h, это означает, что в качестве источника или приемника данных используется обычная память.

Поля SourceOffset и DestOffset указывают 32-разрядное смещение в блоке EMB или адрес в обычной памяти. В последнем случае этот адрес имеет стандартный формат [сегмент:смещение].

Функция копирования сама управляет линией A20, восстанавливая ее состояние после выполнения копирования. Поэтому программе не требуется управлять линией A20.

Во время выполнения копирования разрешены прерывания.

Блокирование EMB

DX = идентификатор блока EMB

Регистры на выходе:

DX:BX = 32-разрядный линейный адрес заблокированного EMB

BL = 80h, 81h, A2h, ACh, ADh

Функция блокирует EMB и возвращает его базовый адрес как линейный 32-разрядный адрес. Для заблокированного EMB невозможно выполнить операцию копирования. Полученный линейный адрес действителен только для заблокированного EMB.

Разблокирование EMB

DX = идентификатор блока EMB

Регистры на выходе:

BL = 80h, 81h, A2h, AAh

Функция разблокирует EMB, заблокированный при вызове предыдущей функции. Полученный от нее линейный адрес становится недействительным.

Получить информацию об идентификаторе блока EMB

DX = идентификатор блока EMB

Регистры на выходе:

BH = содержимое счетчика блокировок EMB;

BL = количество свободных идентификаторов блоков EMB в системе;

DX = размер блока, Кбайт

Эта функция используется для получения различной информации об используемых блоках EMB. Линейный адрес блока может быть получен с помощью фунции 0Ch.

Изменить размер EMB

DX = идентификатор блока EMB;

BX = новый размер EMB, Кбайт

Регистры на выходе:

BL = 80h, 81h, A0h, A1h, A2h, ABh

Функция изменяет размер незаблокированного EMB. Если размер блока уменьшается, данные в старших адресах блока будут потеряны.

Запросить область UMB

DX = размер запрашиваемого блока UMB в параграфах

Регистры на выходе:

BX = сегмент полученного UMB;

DX = размер полученного блока или размер максимального свободного блока UMB (если невозможно выделить блок требуемого размера)

Эта функция позволяет программе получить дступ к блокам UMB, лежащих в пределах первого мегабайта адресного пространства. Для использования этих блоков не требуется управлять линией A20.

Если вам надо определить размер доступной области UMB, задайте при вызове этой функции DX=0FFFFh.

Освободить область UMB

DX = сегмент освобождаемого UMB

Регистры на выходе:

После освобождения блока EMB данные, которые там находились, будут потеряны.

Коды ошибок

Приведем таблицу кодов ошибок, возвращаемых функциями в регистре BL:

Нет ошибки, нормальное завершение

Функция не реализована в текущей версии драйвера

Обнаружен драйвер VDISK.SYS, с этим драйвером драйвер HIMEM.SYS несовместим

Ошибка при работе с линией A20

Общая ошибка драйвера

Катастрофическая ошибка драйвера

Область HMA не существует

Область HMA уже используется

Содержимое регитра DX меньше парметра /HMAMIN=

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *