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

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


    Прохождения игр    
Stoneshard |#11| Battle at the castle
Stoneshard |#10| A busy reaper
The Elder Scrolls IV: Oblivion Remastered - Trash review
Stoneshard |#9| A Million Liches

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


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

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

Предыдущая страница Следующая страница
1 ... 20 21 22 23 24 25 26  27 28 29 30 31 32 33 ... 47
     F600:7EA9 BBF2               MOV       SI,DX
     F600:7EAB 2E                 SEG       CG
     F600:7EAC AC                 LODSB
     F600:7EAD 8807               MOV       [BX],AL
     F600:7EAF 43                 INC       BX
     F600:7EBO 42                 INC       DX
     F600:7EB1 FECD               DEC       CH


          Рис. 6.4. Второй фрагмент реконструированного Бейсика

     Мы в какой-то мере достигли относительной  цели:  поиск  и  выявление
некоторого программного кода, а также некоторое его  осмысление.  Это  нам
вполне удалось. Можно было бы выполнить декодирование всего Бейсика,  либо
наиболее существенных его участков. Однако мы уже получили представление о
том, как это удается и убедились, что это вполне возможно.


      6.5. Две версии BIOS'а

     То, что для IBM/PC используется по крайней мере две различные  версии
BIOS не является широко известным фактом. В настоящем параграфе мы  кратко
рассмотрим имеющиеся между нами различия и оценим их применительно к своим
нуждам.
     В состав пакета программ, записанного на  дискету  и  прилагаемого  к
настоящей книге, входят две программы копирующие и анализирующие программы
BIOS.
     Именно с  помощью  этих  программ  впервые  было  обнаружено  наличие
модифицированных  версий  ПЗУ  компьютеров,  факт,который    открыто    не
признавался фирмой IBM. С  помощью  этих  программ  можно  проверить  свою
систему и сопоставить свою версию с другими.
     Из всех программ, используемых для Вашего компьютера IBM/PC, наиболее
совершенными  (не   содержащими    ошибок)    должны    быть    программы,
предназначенные для размещения  в  ПЗУ.  Если,  например,  будет  выявлена
ошибка в какой-либо версии DOS или VisiCalc, то ее можно  устранить  путем
простой перезаписи дискеты. С программами, записанными в ПЗУ, дело обстоит
гораздо  сложнее.  Их  можно  записывать  только  путем  замены   корпусов
микросхем памяти, расположенных на главной плате  компьютера  IBM/PC;  эта
операция не может быть произведена силами обычного  пользователя.  Наличие
ошибок в программах ПЗУ представляет собой серьезную  проблему  для  фирмы
IBM.
     Сама мысль о том, что можно сделать что-либо стоящее, не совершив при
этом ни единой ошибки, представляется фантастической  и  программы  ПЗУ  в
этом смысле не исключение. С момента появления компьютеров  IBM/PC,  фирма
IBM сочла необходимым внести ряд изменений в программы ПЗУ  (речь  идет  о
серьезных  ошибках),  что  обусловило  появление  двух  версий   ПЗУ.    У
пользователя может возникнуть вопрос, какой версией оснащен его  компьютер
и чем эта версия отличается от другой версии.
     В самом конце программы BIOS фирма IBM поместила  временную  отметку,
так называемый маркер версии. Этот маркер практически  соответствует  дате
официального завершения разработки программ ПЗУ. Для  его  отображения  на
экране можно воспользоваться программой DEBUG.  После  загрузки  программы
DEBUG введите команду D F000:FFF5 L 8.
     На  экране  вашего  компьютера  будет  отображена  последовательность
символов, обозначающая маркер версии: 04/24/81. Маркер второй версии имеет
вид 10/19/81. Если будет обнаружен маркер версии, отличной от  этих  двух,
это будет означать, что Вы  располагаете  версией  BIOS-ПЗУ,  отличной  от
указанных выше.
     В приложении 6.1 приведен текст программы, проверяющей маркер  версии
BIOS-ПЗУ, и, в зависимости  от  его  значения,  выполняющей  те  или  иные
действия. Аналогичные действия  на  Бейсике  можно  представить  следующим
образом:

     10 REM  вывод на дисплей маркера версии ПЗУ
     20 REM  программа отображает маркер, не анализируя его
     30 REM  и не настраивается на версию ПЗУ
     40 PRINT
     50 DEF SEG=&HFFFF
     60 PRINT "Маркер версии ПЗУ;
     70 FOR OFFSET=5 то 12
     80 PRINT CHR$(PEEK(OFFSET));
     90 NEXT OFFSET

     Если Ваш компьютер приобретен позже  октября  1981,  то  это  еще  не
означает, что он снабжен последней версией BIOS-ПЗУ. Проверка компьютеров,
выпущенных через год после выпуска второй  версии  BIOS,  показывает,  что
новый, только что собранный компьютер, может иметь первую версию BIOS-ПЗУ.
     Вы, вероятно, помните, что  ПЗУ  IBM/PC  содержит  две  составляющие:
Бейсик-ПЗУ и BIOS-ПЗУ. Первое, что было обнаружено с помощью разработанной
автором программы, анализа содержимого ПЗУ, это отсутствие различий  между
первой и второй версиями Бейсик-ПЗУ.
     Все ошибки, обнаруженные в Бейсике, были  устранены  только  за  счет
дисковых версий Бейсика. Важно,  чтобы  Бейсик-ПЗУ  оставался  неизменным,
поскольку  это  может  отразиться  на  особенностях   выполнения    широко
распространенных  программ,  написанных  на   Бейсике,    и    никем    не
поддерживаемых. Возможна ситуация, когда одни  и  те  же  Бейсик-программы
будут по разному работать на различных машинах  только  из-за  различия  в
версиях ПЗУ.
     Придерживаясь мнения  на  корректировку  исправления  Бейсик-программ
дискетной  версии,   фирма   IBM   обеспечила   пользователю   возможность
отслеживать  все изменения,  вносимые в язык.  Если какая-нибуть программа
написана в расчете на оригинальный  Бейсик,  то  следует  лишь  установить
дискету  с этой версией Бейсика.  Для новых версий Бейсика программа может
имитировать модификацию содержимого ПЗУ с помощью  методики,  описанной  в
главе 3 при осуждении прерываний.
     Все изменения, внесенные в ПЗУ, касались BIOS; ниже мы перечислим  их
и Вы сможете оценить степень их  важности.  Если  вы  располагаете  первой
редакцией "Руководства по техническому  обслуживанию  IBM/PC",  то  можете
убедиться  в  том,  что  текст  BIOS-ПЗУ,  приведенный  в  приложении   А,
соответствует первой версии ПЗУ, о чем свидетельствует также маркер версии
на последней странице:  04/24/81.  Вслед  за  текстом  BIOS-ПЗУ  приведены
некоторые замечания. Первое, третье и пятое замечания  касаются  некоторых
ошибок, найденных в BIOS и исправленных во второй его версии.
     Первые  три  изменения,  внесенные  в  BIOS-ПЗУ,  касаются   программ
самотестирования, автоматически запускающихся после включения  питания  на
IBM/PC. Эти программы выполняют четырнадцать различных  тестовых  проверок
правильности работы оборудования, прежде чем пользователь  натворит  "дел"
на неисправном компьютере.
     Тест номер три  (  входящий  в  состав  этих  программ)  осуществляет
проверку  правильности  работы  функции  таймера  контроллера  памяти. Два
исправления  из  трех,  внесенных  в  тестовые  программы,  касаются  этой
процедуры.  (Здесь  представляется  уместным  показать,  что    программы,
подобные BIOS, работающие непосредственно  с  аппаратурой,  отличаются  от
обычных  программ.  Корректность  функционирования  программ  тестирования
устройств,  а  также  программы  BIOS  часто    зависит    от    тонкостей
функционирования  контролируемых  устройств.   Временные    характеристики
управляющих сигналов, а также их взаимная согласованность могут  оказывать
решающее воздействие на факт успешного завершения этих программ.  В  целом
ряде случаев отладка таких программ производится опытным  путем  -  одного
логического анализа бывает недостаточно. Вот почему, говоря об изменениях,
внесенных в тестовые программы, я не смог сказать ничего  определенного  о
смысле этих изменений).
     Одно из изменений, внесенных в  программы  тестирования,  затрагивает
сразу три программы. Цель изменения: обеспечение  безусловного  обновления
операций  таймера  до   момента    обработки    управляющего    прерывания
видеомонитора. В первой версии этого не делалось.
     Не  следует  огорчаться,  если  Вам  непонятно  значение    введенных
изменений - они практически  никак  не  сказываются  на  работоспособности
правильно функционирующей системы. Остальные изменения (описываются  ниже)
представляют для Вас большой интерес.
     Одно из внесенных изменений представляет  интерес  прежде  всего  для
тех,  кто  использует  коммуникационный  адаптер.  На    программы    ПЗУ,
обслуживающие коммуникационный адаптер, среди  прочих,  возлагаются  также
функции оповещения в случае отсутствия на  линии  связи  сигнала  отклика.
Если  по  истечении  определенного  промежутка  времени  такой  сигнал  не
появился,  то  коммуникационные  программы  ПЗУ    вырабатывают    признак
"тайм-аут". /Тайм-аут - интервал времени,  когда  одна  сторона  принимает
определенные меры, если в течение заданного времени она не получит  ответа
от другой  стороны  (Прим.перев.)/.  К  сожалению,  в  результате  обычной
опечатки программы ПЗУ не вырабатывают признак "тайм-аут". Ошибка возникла
из-за различий в представлении десятичных и  шестнадцатеричных  чисел  при
записи шестнадцатеричного  числа  80Н  символ  "Н"  был  потерян  и  число
воспринялось как десятичное (т.е. шестнадцатеричное 50). В  программе  это
число  (константа)  используется  для  установки  в  единичное   состояние
конкретных битов; таким образом, вместо установки  в  единичное  состояние
одного бита-признака состояние  "тайм-аут"  были  установлены  два  других
бита-признака "готовности данных" (условие обратное "тайм-аут") и  "ошибка
четности" (свидетельствует о возможной ошибке в данных).
     Следствием  этой  ошибки  является  возможность  неправильной  работы
коммуникационной программы. Если она запрограммирована  без  учета  ошибки
BIOS-ПЗУ, то отсутствие ответа в телефонной линии будет восприниматься как
ошибка  четности  данных  (таким    образом    нарушается    объективность
диагностики).
     Следующая ошибка, обнаруженная во второй версии BIOS-ПЗУ,  относилась
к программам управления принтером. Проблема, как и прежде,  заключалась  в
тестировании состояния "тайм-аут". При выполнении  какой-либо  работы  для
компьютера принтер  может  находиться  в  состоянии  "устройство  занято";
возможен  также  такой  режим  работы,  когда  принтер  сигнал  ответа  не
вырабатывает. Управляющая программа BIOS-ПЗУ тестирует эти режимы,  ожидая
некоторое время поступления сигнала ответа. К сожалению,  это  время  было
выбрано без учета наиболее длительной операции,  выполняемой  принтером  -
протяжки бумаги  на  интервал,  равный  одной  одной  странице.  В  первой
редакции BIOS-ПЗУ это время было явно меньше требуемого, поэтому  в  новой
версии до момента появления признака  "тайм-аут"  проходит  вдвое  большее
время.
     Вслед  за  принтером  изменения  затронули  и  программы    поддержки
накопителя  на  магнитной  ленте  кассетного  типа.  Здесь  была  изменена
последовательность выполнения нескольких команд, что привело к  небольшому
изменению временных характеристик процесса считывания данных. Поскольку  в
составе IBM/PC накопитель кассетного типа используется весьма редко  (т.е.
последствия ошибки незначительны), то это изменение  относится  к  разряду
несущественных.
     Последнее  изменение  представляет  интерес  для  тех   пользователей
IBM/PC, которые используют цветной графический адаптер. Не всем  известно,
что при работе с цветным графическим адаптером  в  графическом  режиме  (в
отличие от работы в текстовом режиме) символы выводятся на экран в  режиме
рисования, подобно тому как выводится изображение любого  другого  объекта
графической природы. (Эти вопросы  подробно  рассматриваются  в  главе  9,
посвященной  отображению  графических  объектов).  В  ПЗУ    предусмотрена
специальная таблица, содержащая графические образы символов ASCII  с  тем,
чтобы их можно было вывести как элементы алфавита.
     При  работе  цветного  графического  монитора  в  текстовом    режиме
отображаемые символы генерируются цветным графическим адаптером схемно;  в
графическом же режиме символы рисуются на  экране  управляющей  программой
ПЗУ, использующей табличные образы. Один из этих образов в  первой  версии
BIOS был закодирован с ошибкой, а  именно:  символ  СНR$(4),  обозначающий
сокровища на колодах для игральных карт, имел одну лишнюю точку снизу.  Во
Предыдущая страница Следующая страница
1 ... 20 21 22 23 24 25 26  27 28 29 30 31 32 33 ... 47
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (1)

Реклама