Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 105 106 107 108 109 110 111  112 113 114 115 116 117 118 ... 198
         циал расширенной памяти в Вашем собственном программном обеспече-
         нии  путем  снабжения  исчерпывающим набором листингов на языке С
         фирмы Microsoft версия 5.0. Мы также представим пример приложения
         спецификации расширенной памяти, в котором используются некоторые
         из более сложных функций расширенной памяти. В таблице 7-4 кратко
         перечислены листинги, которые Вы найдете в конце данной главы.

                                                         Таблица 7-4
                       Программы сопряжения на низком уровне
         ДДДВДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
        Лис-¦Имя файла ¦                      Содержание
        тинг¦          ¦
         ДДД†ДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         7-2¦EMMCONST.H¦Обеспечивает #defines для общих  констант менед-
            ¦          ¦жера расширенной памяти
         7-3¦EMMTYPES.H¦Содержит typdefs (определения типов)  для структур
            ¦          ¦данных, передаваемых между функциями сопряжения
            ¦          ¦спецификации расширенной памяти  и  прикладными
            ¦          ¦программами спецификации расширенной памяти
         7-4¦EMMERMSG.C¦Дает массив символьных строк,обеспечивающих  крат-
            ¦          ¦кое  текстовое  описание для каждого ненулевого
            ¦          ¦кода состояния функции спецификации расширенной
            ¦          ¦памяти
         7-5¦EMMFUNC.C ¦Исчерпывающая библиотека функций спецификации  рас-
            ¦          ¦ширенной памяти. Если не определено иное, любая
            ¦          ¦функция спецификации расширенной памяти возвра-
            ¦          ¦щает  код состояния функции спецификации расши-
            ¦          ¦ренной памяти как целое
         7-6¦EMMFUNC.H ¦Содержит  прототипы  функций  для каждой функции в
            ¦          ¦EMMFUNC.С.  Если  Ваш  компилятор  поддерживает
            ¦          ¦прототипы функций,  определенные в спецификации
            ¦          ¦языка С ANSI (как версия  5  фирмы  Microsoft),
            ¦          ¦включение данного файла в Ваши приложения будет
            ¦          ¦гарантировать, что типы аргументов, указанные в
            ¦          ¦Ваших  программах  согласуются с типом парамет-
            ¦          ¦ров, ожидаемым вызванными функциями.
         7-7¦EMMEXIST.H¦Содержит программы тестирования наличия расширен-
            ¦          ¦ной памяти.  Метод "открытого обработчика"  вы-
            ¦          ¦полняется функцией emm_exists (строка 25).  Ме-
            ¦          ¦тод "получения вектора прерывания" тестирования
            ¦          ¦наличия расширенной памяти выполняется функцией
            ¦          ¦emm_exists2 (строка 113).
         7-8¦SNAPSHOT.C¦Обеспечивает  программу,  остающуюся  резидентной
            ¦          ¦после завершения, которая сохраняет текущее со-
            ¦          ¦держимое  экрана  дисплея в буфер в расширенной
            ¦          ¦памяти каждый  раз,  когда  нажимается  клавиша
            ¦          ¦PrtScr. Данная программа может сохранять столь-
            ¦          ¦ко образов экрана, сколько расширенной памяти в
            ¦          ¦Вашей системе.
         7-9¦PLAYBACK.C¦Обеспечивает программу для копирования образов эк-
            ¦          ¦ранов, сохраненных программой SNAPSHOT в расши-
            ¦          ¦ренной памяти, в стандартный выходной файл DOS.
            ¦          ¦Экранные изображения программы мо

                                      - 7-50 -
            ¦          ¦гут захватываться  постоянно,  например,  путем
            ¦          ¦перенаправления  стандартного  выходного  файла
            ¦          ¦PLAYBACK в дисковый файл.
        7-10¦BEEP.ASM  ¦Утилита для издания звука слышимого тона на встро-
            ¦          ¦енном динамике PC.
         ДДДБДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

                               О примере приложения

              Пример приложения  состоит  из  двух программ:  SNAPSHOT.C и
         PLAYBACK.C. SNAPSHOT.C - программа, остающаяся в памяти резидент-
         но после завершения, которая сохраняет образы текстовых экранов в
         расширенной  памяти  путем  перехвата  прерывания  печати  экрана
         (int 5).  Данное прерывание выдается всякий раз, когда нажимается
         клавиша PrtScr или Print Screen.  SNAPSHOT также строит индексную
         структуру данных в расширенной памяти, которая содержит номер ло-
         гической страницы и смещение в байтах для каждого  образа экрана,
         сохраненного в расширенной памяти.  PLAYBACK просто считывает ин-
         дексную структуру данных,  копируя каждый из текстовых экранов из
         расширенной памяти в стандартный выходной файл DOS.  На рис.  7-4
         показано использование расширенной памяти для  установления связи
         между двумя независимыми программами.
              Для того чтобы продемонстрировать некоторые из более сложных
         идей расширенной памяти,  которые были представлены в данной гла-
         ве,  данное приложение с необходимостью является  более  сложным,
         чем мог бы ожидать программист среднего уровня от первого проекта
         приложения расширенной памяти.  Разработчики, которые незнакомы с
         программами, остающимися резидентными по завершении, и программи-
         рованием драйверов прерываний в среде DOS, могут ощущать особенно
         значительные    трудности,   воспринимая   большую   часть   кода
         SNAPSHOT.C, которая требуется для установки, управления и заверше-
         ния самой программы.
              В то же время в программе SNAPSHOT - не только доля усложне-
         ний,  связанных с DOS, использование переключения контекста и но-
         вых функций спецификации расширенной памяти  LIM  4.0  предлагает
         ценный  пример для изучения идей спецификации расширенной памяти,
         которые не всегда демонстрируются в руководствах по  программиро-
         ванию спецификации расширенной памяти. Ключевые средства специфи-
         кации расширенной памяти,  использованные в SNAPSHOT,  включают в
         себя:
              * Разделение расширенной памяти между программами  с помощью
         средства "Именования обработчика" (функция 20 спецификации расши-
         ренной памяти).
              * Переключение   контекста  с  помощью  "Получить/установить
         отображение страниц" (функция 15 спецификации  расширенной  памя-
         ти).
              * Перемещения блоков данных между обычной и расширенной  па-
         мятью  с  помощью  функции  "Передвинуть/обменять область памяти"
         (функция 18 спецификации расширенной памяти).
              * Динамическое  добавление  логических страниц к ранее разме-
         щенным для  обработчика спецификации расширенной памяти с помощью
         функции переразмещения страниц (функция 18 спецификации расширен-
         ной памяти).
              Примечание: Для выполнения этих программ Ваш менеджер расши-
         ренной памяти должен поддерживать спецификацию расширенной памяти
         LIM 4.0.


                                      - 7-51 -
                       Несколько соображений по кодированию

              Фактические действия  по сохранению экранов видеоотображения
         в расширенной памяти  тривиальны.  Единственного  вызова  функции
         спецификации расширенной памяти "Передвинуть/обменять область па-
         мяти" на строке 175 SNAPSHOT.C достаточно для  копирования  всего
         образа  экрана  из видеобуфера в расширенную память.  Так как это
         происходит внутри обработчика прерывания, функция "Получить отоб-
         ражение страниц" на строке 110 требуется для сохранения контекста
          SNAPSHOT.EXE ("после завершения остаться в памяти")
          ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
          ¦ ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬ ¦
          ¦ ¦inst_isr(вход при нажатии PrtScr)¦ ¦
          ¦ ¦ 1.Сохраняет состояние emm       ¦ ¦
          ¦ ¦ 2.Копирует образ экрана         ¦ ¦
          ¦ ¦   в расширенную память          ¦ ¦
          ¦ ¦ 3.Обновляет индекс образа эк-   ¦ ¦
          ¦ ¦   рана в расширенной памяти     ¦ ГДДД¬
          ¦ ¦ 4.Восстанавливает состояние emm ¦ ¦   ¦
          ¦ АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ ¦   ¦
          ¦ ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬ ¦   ¦
          ¦ ¦main                             ¦ ¦   ¦
          ¦ ¦ 1.Начинает,завершает и сооб-    ¦ ¦   ¦
          ¦ ¦   щает состояние программы      ¦ ¦   ¦
          ¦ АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ ¦   ¦
          АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ   ¦
                                                    ¦  Расширенная память
                               SNAPSHOT             ¦
                               ЪДДДДДДДДДДДДДДВДДДДДБДДДДДДВДДДДДДДДДДДД¬
                               ¦ Заголовок и  ¦Образ экрана¦Образ экрана¦
                             0 ¦ индекс экрана¦     1      ¦     2      ¦
                               ГДДВДДДДДДДДДДДБВДДДДДДДДДДДБДВДДДДДДДДДДґ
                               ¦  ¦Образ экрана¦   . . .     ¦  . . .   ¦
                             1 ¦  ¦     3      ¦             ¦          ¦
                               ГДДБДВДДДДДДДДДДБДДДДДДДДДДДДДБДДДДДДДДДДґ
                               ¦    ¦                                   ¦
                             2 ¦    ¦                                   ¦
                               ГДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
                               ¦                                        ¦
                             3 ¦                                        ¦
                               ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
                               ¦                                        ¦
                             4 ¦                                        ¦
                               ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
                               ¦                                        ¦
                             5 ¦                                        ¦
                               АДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДЩ
                                                    ¦
          PLAYBACK.EXE                              ¦
          ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬       ¦
          ¦1.Обнаруживает расширенную память¦       ¦
          ¦2.Ищет идентификатор обработчика ¦       ¦
          ¦3.Отображает в индекс экрана     ¦       ¦
          ¦4.Отображает в каждый образ эк-  ГДДДДДДДЩ
          ¦  рана и копирует в стандартный  ¦
          ¦  выходной файл                  ¦
          АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
              Рис. 7-4. Пример приложения  - SNAPSHOT/PLAYBACK

                                      - 7-52 -
         отображения спецификации расширенной памяти.  Функция "Установить
         отображение  страниц"  на  строке 120 восстанавливает отображение
         страниц спецификации расширенной памяти,  которое имело место пе-
         ред входом в драйвер прерывания.
              Функция "Установить имя обработчика" на строке 372 SNAPSHOT.
         C  связывает имя в кодах ASCII "SNAPSHOT" с обработчиком специфи-
         кации расширенной памяти,  который данной программой размещен для
         сохранения  экрана.  Путем  задания  обработчику  имени программа
         PLAYBACK может определить положение и обратиться к данной области
         расширенной  памяти,  не зная действительного номера обработчика,
         значение которого может изменяться  каждый  раз,  когда  стартует
         SNAPSHOT.



                             Листинг 7-2. EMMCONST.H
        ------------------------------------------------------------------
Предыдущая страница Следующая страница
1 ... 105 106 107 108 109 110 111  112 113 114 115 116 117 118 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама