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

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


    Прохождения игр    
Stoneshard |#9| A Million Liches
Stoneshard |#8| Happy return
Stoneshard |#7| Oblivion
Stoneshard |#6| Rotten Willow Tavern

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


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

Программно-аппаратная организация компьютера IBM PC

Предыдущая страница Следующая страница
1 ... 21 22 23 24 25 26 27  28 29 30 31 32 33 34 ... 47
второй версии BIOS-ПЗУ эта ошибка устранена.
     Ни  одна  из  перечисленных  выше  ошибок  не  относится  к   разряду
катастрофических. Наиболее значимая из них влечет  за  собой  неправильное
формирование признака "тайм-аут" при работе с асинхронной линией связи, то
есть  ошибочное  описание  ситуации,  а  не  ошибочные  действия.   Редкий
пользователь IBM/PC cумеет ее распознать, даже, если знает в чем дело.
     Знать о всех изменениях имеет смысл постольку, поскольку нельзя  быть
уверенным в том, что изменения, затрагивающие особенности работы  машинных
программ  (даже  в  незначительной  степени)  всегда    должным    образом
документируются и  открыто  публикуются.  Здесь  важен  прецедент,  дающий
основание беспокоиться, что более важные и  существенные  изменения  могут
быть осуществлены без ведома пользователей.


     6.6. Механизм выборки информации из ПЗУ

     В данном параграфе мы обобщим все аспекты,  связанные с  активизацией
служебных  программ BIOS-ПЗУ.  Любой вид обслуживания обеспечивается через
механизм прерываний;  по причинам,  которые мы  подробно  рассматривали  в
главе   3,  прерывания  позволяют  запускать  (выполнять)  программы,  без
предварительных сведений о  их  местоположении(  при  необходимости  можно
осуществлять перемещение этих программ).
     Ниже  приведена  таблица  прерываний,  используемых  для  активизации
программ BIOS-ПЗУ,  а  также  программ,  имеющих  к  ним  непосредственное
отношение.

       ____________________________________________________________


          Номер    Шестнадцатиричный          Назначение
                          код
       ____________________________________________________________

            5              5         Операция  печати  содержимого
                                     экрана
           16             10         Операции   ввода/вывода    на
                                     экран дисплея
           17             11         Контроль        оборудования;
                                     используется для  определения
                                     подключенного оборудования
           18             12         Проверка памяти; используется
                                     для определения объема памяти
           19             13         Операции    ввода/вывода    с
                                     накопителей    на    дискете;
                                     различные     операции      с
                                     накопителем    на    дискете;
                                     различные операции с дискетой
           20             14         Ввод/вывод    для     RS-232;
                                     операции    с     асинхронным
                                     коммуникационным    адаптером
           21             15         Ввод/вывод для накопителя  на
                                     магнитной  ленте   кассетного
                                     типа
           22             16         Ввод/вывод с клавиатуры
           23             17         Ввод/вывод для принтера
           24             18         Загрузка кассетной версии
                                     Бейсика
           25             19         Перегрузка системы
           26             1А         Функции даты и времени
       ____________________________________________________________

     Полный список    программ    обслуживания   значительно   шире.   При
необходимости каждой отдельной функции обслуживания мог бы  быть  присвоен
свой собственный номер прерывания или наоборот - все функции могли бы быть
обозначены  одним  кодом  прерывания,  образуя  своего  рода   управляющее
прерывание.
     Более продуктивным, однако, представляется  подход,  когда  с  каждым
прерыванием  связывают  один  функциональный  разрез,  обеспечивая   таким
образом их логическую группировку. Такой путь ведет к  управляемому  числу
отдельных прерываний с обоснованным разделением функций обслуживания.
     Несмотря на то, что потребности в каждой функции различны, существуют
некоторые общие положения  относительно  особенностей  перемещения  данных
между  точкой  вызова  функции  и собственно функций.  Если Вы используете
интерфейсные программы,  поставляемые на дискете в качестве  дополнения  к
данной   книге,  у  Вас  не  будет  возможности  ознакомиться  с  деталями
реализации каждой  функции.  Знать  как  они  работают  между  тем  весьма
полезно.
     За  исключением  отдельных  случаев  в  рамках   одного    прерывания
реализуются  несколько  функций.  Для  передачи   номера,    обозначающего
субфункцию используется  регистр  AH.  Для  передачи  параметров  в  обоих
направлениях  используются  регистры,  причем  система  стремится  к    их
экономному использованию. Программы обслуживания  обеспечивают  сохранение
всех  регистров,  не  используемых  для  передачи  параметров;  вызывающая
программа  таким  образом  не  должна  заботиться  о  сохранении  величин,
находящихся в различных регистрах. Если требуется выделить область  памяти
для данных, например, для буфера данных считываемых с дискеты или кассеты,
то для представления сегментированных адресов используются регистры  ES  и
BX.
     Регистры AH, AX используются  для  передачи  программам  обслуживания
кода  возврата  или  результирующего  сигнала.  В  некоторых  случаях  для
индикации ошибки используется флаг переноса CF, однако как  правило  флаги
не используются. Регистры общего назначения AX ... DX следует использовать
экономно по мере необходимости, придерживаясь алфавитного порядка.
     В последующих пяти главах мы детально  рассмотрим  все  перечисленные
выше типы прерываний и особенности работы с регистрами.


     6.7. Описание специальных прерываний

     Как уже  упоминалось  в  главе  3,  три  строки  в  таблице  векторов
прерываний используются не по  прямому  назначению  для  хранения  адресов
программ обслуживания прерываний , а для хранения адресов  базовых  таблиц
системы (поскольку  эти  таблицы  размещаются  в  ПЗУ).  Ниже  мы  поясним
назначение этих таблиц.
     Первая таблица (с кодом  фиктивного  прерывания  29)  содержит  адрес
таблицы инициализации видеодисплея, используемой для контроля  управляющих
кодов для экранов дисплеев. Таблица размещается в ПЗУ по адресу F000: F0A4
и включает три подтаблицы  с  видеопараметрами.  Каждая  подтаблица  имеет
четыре строки по одной строке на каждый из  четырех  режимов  отображения:
монохромный,  40-столбцовый  цветной,  текстовой,  80-столбцовый  цветной,
текстовой и оба графических режима. Одна из подтаблиц фиксирует  размер  в
байтах буфера дисплея, соответствующего  текущему  режиму.  (Подробно  эти
вопросы рассматриваются в главе 8 и 9).
     Еще  одна  подтаблица  фиксирует  ширину  граф,    учитываемую    при
автоматическом переходе от одной строки в другую. Практическая  польза  от
модификации  этой  таблицы  близка  к  нулю,  поэтому  в  дальнейшем   она
рассматривается не будет.
     Адрес второй  таблицы  (соответствует  прерыванию  30)  указывает  на
таблицу параметров дискет. Эта таблица  содержит  данные,  предназначенные
для  контроля  временных  параметров  различных  операций,  выполняемых  с
дискетой. Таблица расположена в ПЗУ по адресу F000 : EFC7. Сразу же  после
выпуска  компьютера  IBM/PC  стало  ясно,    что    некоторые    временные
характеристики, внесенные в эту таблицу весьма приблизительны  и  являются
причиной  слишком  медленной   работы    дискового    накопителя.    Среди
многочисленных  изменений,  внесенных  в  DOS  версии  1.10  были  данные,
снижающие время обращения  к  дисковому  накопителю.  Здесь  использовался
классический  метод  -  в  процессе  самонастройки  дисковая  операционная
система создавала новую версию таблицы в  обычной  памяти  и  заменяла  ее
адрес  в  векторе, инициализируемой  по  прерыванию  30.  Поскольку   при
выполнении любой операции с диском производится обращение к этой  таблице,
то после замены адреса вектора,  активной  становилась  новая  таблица.  В
главе 7 (посвященной описанию дискового накопителя) мы рассмотрим  детали,
связанные с этой таблицей и укажем внесенные изменения.
     Адрес  третьей  таблицы,  получаемой  по  фиктивному  прерыванию  31,
указывает на область генератора  графических  символов,  используемых  при
формировании на дисплее символов CH$(128), ..., CHR$(255) в любом из  двух
графических  режимов.  Стандартной  таблицы  этого  типа    попросту    не
существует. Если две предыдущие таблицы всегда находятся в ПЗУ, то  данная
таблица в ПЗУ отсутствует. А коль скоро  это  так,  то  вектор  прерывания
будет содержать нулевое значение (является признаком  отсутствия  таблицы)
до тех пор,  пока  программа  не  построит  такую  таблицу  и  не  занесет
соответствующий адрес  в  вектор  прерывания.  При  изучении  графического
режима работы (глава 9) мы увидим, что существует много интересных  вещей,
связанных с таблицей генерации символов.
     Все эти общие положения, касающиеся ПЗУ, образуют ту основу, опираясь
на которую мы перейдем к рассмотрению широких возможностей отдельных узлов
IBM/PC.  Этому  посвящены  пять  следующих  глав.  Начнем    с    дисковых
накопителей, рассматривая их до того  как  программа  построит  таблицу  и
поместит адрес этой таблицы в соответствующий вектор прерываний.


     Приложение 6.1. Текст программы проверки метки версии ПЗУ (Паскаль).

     module Listing_6_1;

     type

       string8       = string(8);
       bios_ptr_type = ads of string8;

     var

     bios_date    : bios_ptr_type;

     procedure check_rom_bios_date;

       begin

         bios_date.s :=#F000;
         bios_date.r :=#FFF5;

         if bios_date^='04/24/81' then
           begin

           end
         else
           begin

           end;

       end;

     end.



                        ГЛАВА 7. ДОСТУП К ДИСКЕТАМ
                        __________________________

     С  этой  главы  начинается  подробное   по-элементное    рассмотрение
возможностей IBM/PC - начиная с дисководов для  гибких  магнитных  дисков.
Изложение материала  этой  и  четырех  последующих  глав  будет  следовать
организации служебных процедур системы BIOS в ПЗУ. Однако, наше  изложение
не ограничивается только описанием возможностей,  которые  предоставляются
системой BIOS.  Для  каждой  из  возможностей  будет  рассматриваться  вся
техническая информация, полезная или интересная любому, кто  хочет  понять
особенности реализации этой возможности и особенности ее использования.
     Если обратиться к  трем  уже  упоминавшимся  областям  интересов,  то
следует отметить, что вся информация полностью относится только к  IBM/PC.
Что касается совместимых с IBM/PC компьютеров, можно ожидать, что  большая
часть информации применима и к ним тоже,  но  степень  применимости  будет
зависеть от того, насколько точно конкретный  компьютер  копирует  IBM/PC;
для всех компьютеров, которые рекламируются  как  совместимые  по  системе
BIOS , данная информация полностью применима. Для  семейства  компьютеров,
работающих под управлением операционной системы MS-DOS, приведенная в этих
главах информация будет типичной  с  точки  зрения  возможностей,  которые
должен предоставлять любой компьютер,  но  нельзя  рассчитывать,  что  все
детали полностью совпадут.


     7.1. ТРИ УРОВНЯ ДОСТУПА К ДИСКЕТЕ

     Имеются  три  способа,  позволяющие  осуществлять  доступ  к  данным,
хранящимся на дискете, - из программы на языке  программирования  высокого
уровня (такого, как Паскаль или БЕЙСИК), посредством вызова функции ДОС  и
посредством обращения к служебной процедуре системы BIOS в  ПЗУ.  Все  эти
способы образуют трехуровневую иерархию,  в  которой  служебные  процедуры
системы  BIOS  образуют  нижний,  наиболее  примитивный  уровень.  Уровень
функций ДОС строится на основе служебных процедур  системы  BIOS.  Уровень
Предыдущая страница Следующая страница
1 ... 21 22 23 24 25 26 27  28 29 30 31 32 33 34 ... 47
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама