Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Руководство по Soft-ICE (DOS) - 20
Программистское народное ругательство: motherhacker!

8.2.2 Настройка Карты Страниц EMM

Для конфигурирования карты EMM вы должны использовать утилиту EMMSETUP.EXE. EMMSETUP.EXE позволяет изменять карту страниц, а затем модифицирует S-ICE.EXE с учетом изменений. EMMSETUP работает наиболее эффективно при автоматической настройке карты EMM. EMMSETUP, при работе с видеокартами и ПЗУ, попробует заполнить отображаемыми страницами столько адресного пространства, сколько возможно. Если результат недостаточно хорош или не по вашему вкусу, вы можете его изменить. Изменение может быть необходимо, если у вас есть сеть, специальный видеоадаптер или адаптер операций с отображаемой памятью. Для конфигурирования карты EMM введите:


EMMSETUP

EMMSETUP показывает матрицу страниц памяти по 16КБ, доступных в нижней области в 1 мегабайт. Матрица разделена на 16 колонок, представляющих каждая 64КБ (от 0 до 10000H). 4 строки представляют четыре страницы по 16КБ в каждой 64-килобайтовой области.

Каждая ячейка матрицы может содержать E, X, R или V. Ячейки, содержащие E, доступны как страницы EMM; блоки, содержащие X - нет. Ячейки, содержащие R - области памяти, которые были идентифицированы EMMSETUP как области ПЗУ. Вы, при необходимости, можете изменить эти области на E, но это допустимо, только если к ПЗУ нет обращений. Ячейки, содержащие V идентифицированы как видеопамять. Мы сделали наихудшее предположение о видеопамяти. Ваша конкретная видеокарта может не использовать столько, сколько мы "предположили". При необходимости вы можете изменить блоки памяти, которые содержат ненужные V.

Если вы удовлетворены предположениями EMMSETUP'а, нажмите клавишу F10 и S-ICE.EXE будет изменен с этими параметрами. Чтобы сделанные в S-ICE.EXE изменения вступили в силу, вы должны перезагрузиться. Если вы хотите изменить предположения EMMSETUP'а, сделайте это в то же самое время.

8.2.2.1 Включение и Исключение Областей из EMM

Чтобы включить область в память EMM 4.0 просто поместите курсор на желаемую ячейку, затем введите E. Наоборот, чтобы исключить область из памяти EMM 4.0, поместите курсор на ячейку и введите X. Когда вы будете удовлетворены вашими изменениями, нажмите F10 для выхода из программы. Все изменения автоматически сохраняются в файле S-ICE.EXE. Если вы хотите выйти без изменения S-ICE.EXE, нажмите ESC. Чтобы сделанные в S-ICE.EXE изменения вступили в силу, вы должны перезагрузиться.

Включая верхние блоки памяти, имейте в виду следующее:

* CGA занимает от B800H до C000H.
* MDA занимает от B000H до B100H.
* Большинство карт Hercules занимает от B000 до C000H.
* EGA занимает от A000H до C000H и от C000H до C400H.
* VGA (на материнской плате) занимает от A000H до C000H.
* VGA (съемная карта) занимает от A000H до C000H и от C000H до C800H.
* Системное ПЗУ PS/2 занимает от E000H до 10000H.
* ПЗУ PS/2 ESDI занимает от CC00H до D000H
* Большинство AT-совместимых ПЗУ занимают от F000H до 10000H.
* Compaq-системы, системы с системными платами Micronix и большинство систем с платами Chips and Technologies перемещают ПЗУ EGA/VGA в E000H Однако они все равно так же занимают и область C000H.
* Сети Token Ring обычно занимают от CC00H до E000H.
* Многие сети занимают области памяти в области D000H. Вышеупомянутые руководящие принципы - для "фирменных" устройств. Многие исполнения от различных продавцов компьютеров и продавцов карт адаптеров будут варьировать.

8.3 Другие Возможности EMM

У S-ICE.EXE с переключателем /EMM есть две возможности, которые автоматически активизируются в зависимости от конфигурации вашей системы. Эти возможности - наращивание и перемещение страниц.

8.3.1 Увеличение Обычной Памяти

Память системы будет автоматически наращена до первой неотображаемой страницы. Это означает, что начинается поиск цепочки 'E' с ячейки 1000 и продолжается, пока не будет найден первый несмежный 'E'. Если цепочка смежных 'E' выйдет за границы основной памяти вашей системы, память будет наращена до первого R, V или X, который будет найден.

Выгода наращивания - в том, что вы можете увеличивать объем используемой памяти системы до большего, чем 640КБ. Наращенная память доступна из DOS. Если вам не нужна наращенная память, используйте EMMSETUP, чтобы сделать страницу неотображаемой (X) в точке, где вы хотите, чтобы память системы заканчивалась.

Заметьте:

Монохромные системы (MDA) можно наращивать вплоть до B000H, чтобы добавить дополнительные 64КБ к обычной памяти. CGA-системы могут быть наращены вплоть до B800, добавляя дополнительные 96КБ к обычной памяти. EGA и VGA-системы могут быть наращены, только если не будут запускаться графические программы. Вы можете наращивать EGA или VGA-системы вплоть до B800:0, если не будут запускаться никакие графические программы.

Предупреждение:

Если память - наращена, НЕ ВЫГРУЖАЙТЕ Soft-ICE. Это вызовет разрушение системы.

8.3.2 Автоматическое Определение Страниц

Большинство знакомых с EMM программ требуют 64КБ-страницу, не используемую как нормальная память DOS. Она обычно расположена выше области видео- устройства. Однако в некоторых системах нет непрерывной области в 64K для размещения страницы. В этих случаях S-ICE.EXE "крадет" 4 верхние отображаемые страницы нижней памяти. Как результат - нижняя память DOS урезается на 64КБ.

8.4 EMM-Отладка

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

При отладке EMM-программы также может быть очень полезна команда EMMMAP. См. часть 5.6 для большей информации.

Для просмотра или изменения любой зарезервированной страницы EMM могут использоваться команды D, E, S, F и C. Страница не обязательно в этот момент должна отображаться. Синтаксис этих команд подобен командам, используемым для не-EMM страниц, кроме следующего:

* В командах D, E, S и F адресная часть команды должна быть указана следующим образом: Hуказатель# Pстраница# смещение где указатель - число, определяющее, какой указатель EMM использовать, страница - число, определяющее, какую страницу EMM использовать, и смещение - число от 0 до 4000H, определяющее смещение от начала страницы. Пример:


DB H1 P3 0

Эта команда выведет дамп байтов со страницы 3 указателя 1, начиная со смещения 0.

* Команда C должна быть указана следующим образом:

C Hуказатель# Pстраница# смещение1 Lдлина смещение2 где указатель и страница - то же самое, что и выше. смещение1 - число от 0 до 4000H, определяющее смещение от начала страницы, где расположен первый блок данных для сравнения. смещение2 - число от 0 до 4000H, определяющее смещение от начала страницы, где расположен второй блок данных для сравнения. Пример:


C H2 P4 00 L10 1000

Эта команда будет сравнивать первые 10 байтов памяти, расположенных по смещению 0 на странице 4 указателя 2 с первыми 10 байтами памяти, расположенными по смещению 1000 на странице 4 указателя 2.

Заметьте:

Последующие использования команд D, E, S, F и C будут продолжать использовать последние введенные указатель и страницу. Чтобы вернуться к обычной памяти, используйте одну из вышеупомянутых команд с сегментом, указанным в области адреса, например:


D 0:0

ГЛАВА 9

9.1 Введение

Soft-ICE может собирать информацию об инструкциях в буфер истории обратной трассировки во время выполнения вашей программы. Затем, после возникновения ошибки, эти инструкции можно просмотреть. Это позволяет вам вернуться назад и повторно пройти программу, чтобы определить фактический поток инструкций, предшествующих точке останова.

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

1. Буфер истории обратной трассировки не забивается посторонней информацией, которая вас не интересует. Например, вам может быть неинтересна обработка прерываний и выполнение в пределах MS DOS.
2. Диапазоны обратной трассировки снижают производительность системы, когда они активны. Ограничивая диапазон до интересующей вас области, вы можете намного увеличить производительность системы.

У Soft-ICE есть два метода использования инструкций в буфере истории обратной трассировки:

1. Команда SHOW позволяет вам просматривать инструкции из буфера истории обратной трассировки. Вы должны указать, на сколько инструкций в буфере вы хотите вернуться.
2. Команда TRACE позволяет вам вернуться и заново проиграть инструкции из буфера истории обратной трассировки. Таким образом вы может видеть исполнение инструкций в контексте окружения программного кода или исходного текста.

9.2 Использование Диапазонов Обратной Трассировки

Чтобы использовать диапазоны обратной трассировки, вы должны сделать следующее:

1. Зарезервировать буфер истории обратной трассировки желаемого размера, добавив переключатель /TRA в строку S-ICE.EXE в CONFIG.SYS. Например, чтобы создать буфер истории обратной трассировки в 100КБ, вы могли бы иметь следующую строку в вашем файле CONFIG.SYS: DEVICE = S-ICE.EXE /TRA 100 Буфер истории обратной трассировки в 10КБ зарезервирован по умолчанию. Если это подходит для ваших потребностей, вы можете не резервировать больший буфер. Размер буфера истории ограничен только количеством доступной расширенной памяти.
2. Активизировать диапазоны обратной трассировки, создав точку останова на диапазон памяти опцией T или TW. Например: BPR 1000:0 2000:0 T Опции T и TW не вызывают остановов, вместо этого они собирают информацию об инструкциях, которая затем может выводиться командами SHOW или TRACE.
3. Установить любые другие точки останова, если это желательно.
4. Выйти из Soft-ICE командой X.
5. После выполнения останова или если вы вызвали Soft-ICE горячей клавишей, вы можете просмотреть инструкции из буфера командой SHOW. Например, чтобы вернуться назад на 50 инструкций в буфере и вывести на экран инструкций, введите: SHOW 50
6. Чтобы повторно проиграть ряд инструкций, вы должны сначала войти в режим эмуляции трассировки командой TRACE. Чтобы начать повторно проигрывать последовательность инструкций, начиная за 50 команд в буфере, введите:


TRACE 50

7. После того, как вы вошли в режим эмуляции трассировки, вы может проходить через последовательность инструкций, используя команды XT, XP или XG. Это позволяет вам повторно активизировать ход программы. Например, вы можете пошагово пройти последовательность инструкций в буфере, начинающейся с инструкции, указанной в командой TRACE, вводя:

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay