Ю.С.Лук ч, А.Е.Сибиряков А Р Х И Т Е К Т У Р А В В О Д А - В Ы В О Д А П Е Р С О Н А Л Ь Н Ы Х Э В М I B M P C (C) Инженеpно-техническое бюpо Свеpдловск 1990 ──────────────────────────────────────────────────────────── Содеpж ние Введение . . . . . . . . . . . . . . . . . . . . . . . . . Обозн чения . . . . . . . . . . . . . . . . . . . . . . . 1. Т блиц портов ввод -вывод . . . . . . . . . . . . . . 2. Контроллер прямого доступ к п мяти . . . . . . . . . . 2.1. Принципы р боты контроллер ПДП . . . . . . . . . . . 2.2. Типы перед ч . . . . . . . . . . . . . . . . . . . . 2.3. Опис ние внутренних регистров ПДП . . . . . . . . . . 2.4. Прогр ммное упр вление контроллером ПДП . . . . . . . 2.4.1. Оpг низ ция и упp вление ПДП н XT-подобных ПЭВМ . 2.4.2. Оpг низ ция и упp вление ПДП н AT-подобных ПЭВМ . 3. Прогр ммируемый контроллер прерыв ний . . . . . . . . . 3.1. Опис ние основных элементов ПКП . . . . . . . . . . . 3.2. Режимы р боты ПКП . . . . . . . . . . . . . . . . . . 3.3. Прогр ммиров ние ПКП. . . . . . . . . . . . . . . . . 4. Т ймер и генер ция звук . . . . . . . . . . . . . . . 4.1. Прогр ммируемый т ймер 8253 . . . . . . . . . . . . . 4.2. Т ймер н системной пл те IBM PC . . . . . . . . . . 4.3. Генер ция звук . . . . . . . . . . . . . . . . . . . 5. Прогр ммируемый периферийный интерфейс . . . . . . . . 5.1. Опис ние ППИ 8255 . . . . . . . . . . . . . . . . . . 5.2. Использов ние ППИ в IBM PC . . . . . . . . . . . . . 6. Кл ви тур . . . . . . . . . . . . . . . . . . . . . . 6.1. Кл ви тур IBM PC/XT . . . . . . . . . . . . . . . . 6.2. Кл ви тур IBM PC AT . . . . . . . . . . . . . . . . 7. Дисплеи . . . . . . . . . . . . . . . . . . . . . . . . 7.1. Общее опис ние . . . . . . . . . . . . . . . . . . . 7.2. Контроллеры ЭЛТ . . . . . . . . . . . . . . . . . . . 7.3. Атрибуты символов . . . . . . . . . . . . . . . . . . 7.4. Монохромный гр фический д птер MGA . . . . . . . . . 7.5. Цветной гр фический д птер CGA . . . . . . . . . . . 7.6. Р сширенный гр фический д птер EGA . . . . . . . . . 7.7. Гр фический видеом ссив VGA . . . . . . . . . . . . . 8. Контроллер н копителей н гибких диск х . . . . . . . . 8.1. Основные сведения о контроллере . . . . . . . . . . . 8.2. Порты контроллер н копителей н гибких диск х. . . . 8.3. Ком нды упр вления н копителями . . . . . . . . . . . 8.3.1. Пеpечень ком нд контpоллеp НГМД . . . . . . . . . 8.3.2. Стpуктуp б йтов состояния . . . . . . . . . . . . 8.4. Форм т дорожки. . . . . . . . . . . . . . . . . . . . 8.5. Отличия контроллер для АТ-подобных ПЭВМ. . . . . . . 9. Контроллер н копителей н жестких диск х . . . . . . . 9.1. Контроллер жестких дисков для ХТ-подобных ПЭВМ. . . . 9.1.1. Поpты ввод -вывод . . . . . . . . . . . . . . . . 9.1.2. Общий фоpм т ком нды и теpминология . . . . . . . . 9.1.3. Опис ние ком нд . . . . . . . . . . . . . . . . . . 9.1.4. Р зметк диск . . . . . . . . . . . . . . . . . . 9.2. Контроллер жестких дисков для АТ-подобных ПЭВМ. . . . 9.2.1. Опис ние поpтов ввод -вывод . . . . . . . . . . . 9.2.2. Систем ком нд . . . . . . . . . . . . . . . . . . 10. Печ т ющее устройство . . . . . . . . . . . . . . . . 11. Последов тельный интерфейс RS-232 . . . . . . . . . . 11.1. Общие сведения . . . . . . . . . . . . . . . . . . . 11.2. Опис ние портов . . . . . . . . . . . . . . . . . . 11.3. Порядок иници лиз ции 8250 . . . . . . . . . . . . . 12. Игровой д птер . . . . . . . . . . . . . . . . . . . 13. CMOS . . . . . . . . . . . . . . . . . . . . . . . . . 13.1. Доступ к CMOS . . . . . . . . . . . . . . . . . . . 13.2. Содержимое CMOS . . . . . . . . . . . . . . . . . . 14. Прочие порты . . . . . . . . . . . . . . . . . . . . . Приложение 1. Ск н-коды кл виш . . . . . . . . . . . . . . Приложение 2. Типы жестких дисков . . . . . . . . . . . . Пpиложение 3. Подготовк ПЭВМ к p боте . . . . . . . . . . Глосс рий . . . . . . . . . . . . . . . . . . . . . . . . Введение Д нный документ содержит техническое опис ние устройств ввод -вывод , входящих в сост в ПЭВМ семейств IBM PC, включ я ПЭВМ IBM PC XT, AT и PS/2. Он основ н н технической документ ции фирм - производителей периферийной пп р туры, охв тыв ющей несколько десятков руководств. В ч стности, опис ние микросхем, р змещенных н системной пл те, б зируется н спр вочник х фирмы INTEL (Intel Handbooks). Дополнительными источник ми информ ции послужили многочисленные моногр фии, журн льные ст тьи и ди логовые спр вочные системы (т кие, к к TECH Help!, Norton Guide и др.). Кроме того, д нное опис ние учитыв ет опыт второв по р зр ботке и сопровождению прогр мм в среде MS-DOS. Этот опыт позволил, во-первых, испр вить отдельные неточности и недоговоренности в использов нных м тери л х, и, во-вторых, опис ть ряд недоку- ментиров нных особенностей оборудов ния IBM PC. Вся приведенн я информ ция подверг л сь м ксим льной проверке н ЭВМ; одн ко, вторы предпол г ют, что отдельные ню нсы опис ний, з имствов нных из фирменной документ ции, могут содерж ть ошибки. Т кие "подозрительные" моменты мы, по мере во зможности, ст р лись явно огов рив ть в соответствующих мест х спр вочник . Для поним ния изложенного здесь м тери л требуется вл дение основ ми прогр ммиров ния н языке ссемблер для IBM PC (зн ние рхитектуры процессор и директив ссемблер ). Авторы будут бл год рны з любые ук з ния н неточности, з меч ния и дополнения, которые мы просим присыл ть по дресу: 620075, г. Свердловск, ул. Лун ч рского 81, Инженерно-техническое бюро. тел. 56-92-54, 56-92-41. Обозн чения PC, XT, AT, PCjr, PC Convertible и PS/2 - это имен компьютеров семейств IBM PC. Все они более или менее совместимы между собой н уровне прикл дных п кетов, но имеют определенные пп р тные р зличия: PC: центр льный процессор 8088, т ктов я ч стот 4.77 МГц, 5 позиций для д птерных пл т. PCjr: ЦП 8088, нет мест для пл т. Выпущен мизерным тир жом и не совместим с ост льными IBM PC. В н шей серии не описыв ется. XT: ЦП 8088, жесткий диск, 8 позиций для д птерных пл т. В ост льном н логичн PC. Turbo PC: ПЭВМ других фирм (не IBM), совместимые с PC и XT, но имеюший ЦП 8086 или V30 фирмы NEC, т ктов я ч стот которых 6 или 8 МГц. Обычно имеет 8 позиций для пл т. XT-286: ЦП 80286, 8 позиций для пл т, ч стот 6 Мгц без холостых циклов (скорость к к у AT с 8 МГц). Пл ты от AT к ней не подходят, от PC подходят, но не позволяют использов ть преимуществ 16-р зрядной системной шины. AT: ЦП 80286, 8 позиций для пл т, т ктов я ч стот 6 или 8 МГц. PC Convertible: Порт тивный в ри нт AT. Отличия: пл зменный (LCD) дисплей, 3.5-дюймовые дисководы, нет позиций для пл т р сширения. PS/2: Новое семейство ПЭВМ фирмы IBM. Модели 25 и 30 - это улучшенные версии ст рых PC, совместимые с ними по д птерным пл т м. Модели 50 и 60 - ЦП 80286, 32-р зрядн я шин MicroChannel, совместимости со ст рыми пл т ми нет. Модель 80 имеет ЦП 80386. Все модели осн щены дисковод ми р змером 3.5 дюйм . AT-386: ПЭВМ третьих фирм, совместим я с AT, но имеющ я ЦП 80386. Если р ссм трив емые устройств з висят от тип ПЭВМ, то используются следующие пометки: PC/XT относится к ПЭВМ IBM PC и XT, включ я Portable PC AT относится к ПЭВМ IBM PC AT PS/2 относится к семейству PS/2 Отсутствие т ких ук з ний озн ч ет, что д нный м тери л применим ко всем ПЭВМ фирмы IBM. Десятичные числ з писыв ются обычным обр зом, шестн дц тиричные отлич ются доб влением буквы "h" в конце. Н пример, 256 и 100h озн ч ют десятичное число 256. Все р змеры полей в упр вляющих структур х приведены в б йт х, если не оговорено противное. В некоторых случ ях лгоритмы сопровожд ются формул ми. Опер ции в формул х обозн ч ются, к к принято в языке Си, именно: рифметические: +, -, *, /, % (взятие ост тк ) битовые: & (и), | (или), ~ (не) сдвиги: << и >>. 1. Т блиц портов ввод -вывод Приведенн я ниже т блиц содержит р спределение дресного простр нств портов ввод -вывод для IBM PC/XT, AT и PS/2. При этом: - порты 0 - FFh отведены для системной пл ты; - порты 100h - 3FFh отведены для контроллеров устройств; - порты, н чин я с 400h, недоступны для системной шины. AT/PS-2 PC/XT Опис ние См. р здел ──────────────────────────────────────────────────────────────── 000-01F 000-00F Контроллер ПДП N 1, 8237А-5 2 020-03F 020-021 Контроллер прерыв ний N 1, 8259A 3 040-05F 040-043 Т ймер (PC/XT:8253-5, AT:8254-2) 4 060-063 Прогр ммируемый интерфейс периферии 8255 5 060-06F Контроллер кл ви туры AT 8042 6 070-07F П мять CMOS и м ск NMI 13 080 Ди гностический регистр 14 080-08F 080-083 Регистры стр ниц ПДП 74LS612 2 090-097 Блок упр вления к н л ми PS/2 ─── 0A0 М ск NMI 14 0A0-0BF Контроллер прерыв ний N 2, 8259A 3 0C0-0DF Контроллер ПДП N 2, 8237A-5 2 0F0-0FF Сопроцессор 80287 14 ──────────────────────────────────────────────────────────────── 101-107 Выбор прогр ммируемых опций PS/2 ─── 170-177 Жесткий диск N 2 9 1F0-1F7 Жесткий диск N 1 9 200-207 200-20F Игровой д птер 12 210-217 Блок р сширений 14 238-23F Стык RS-232 N 4 (в PS/2) 11 278-27F 278-27F П р ллельный принтер N2 (N 3 при MGA) 10 2C0-2DF 2C0-2DF Р сширенный гр фический д птер (EGA) N 2 7 2F8-2FF 2F8-2FF Стык RS-232 N 2 11 300-31F Пл т прототип ─── 320-32F Жесткий диск XT 9 338-33F Стык RS-232 N 3 (в RS/2) 11 370-377 Контроллер НГМД N 2 8 378-37F 378-37F П р ллельный принтер N 1 (N2 при MGA) 10 380-38F 380-38F Синхронные д птеры: SDLC или BSC N 2 ─── 3A0-3AF 3A0-3A9 Синхронный д птер BSC N 1 ─── 3B0-3BF 3B0-3BF Монохромный д птер (MGA) + принтер N 1 7,10 3C0-3CF 3C0-3CF Р сширенный гр фический д птер (EGA) N 1 7 3D0-3DF 3D0-3DF Цветной гр фический д птер (CGA) и EGA 7 3F0-3F7 3F0-3F7 Контроллер НГМД N 1 8 3F8-3FF 3F8-3FF Стык RS-232 N 1 11 ──────────────────────────────────────────────────────────────── Примеч ние: В т блицу не включены устройств , б зовый дрес ввод -вывод которых может н стр ив ться (сетевые д птеры, контроллеры стриммерных лент и т.д.). 2. Контроллер прямого доступ к п мяти Контроллер прямого доступ к п мяти (ПДП, DMA - Direct Memory Access) обеспечив ет высокоскоростной обмен д нными между устройств ми ввод -вывод и ОЗУ без использов ния центр льного процессор , что позволяет освободить процессор для выполнения вычислений п р ллельно с обменом и нез висимо от него. Н иболее ч сто возможности ПДП используются при р боте с дисковыми н копителями, одн ко ре лизов но использов ние ПДП д птер ми н копителей н м гнитной ленте и рядом других устройств. Ощутимые приемуществ д ет использов ние ПДП в процессе обмен с устройств ми, приним ющими или перед ющими д нные дост точно большими порциями с высокой скоростью. В IBM PC-подобных компьютер х функции контроллер ПДП выполняет микросхем 8237А фирмы INTEL (советский н лог КР580ВТ57) или ее н логи 8237А-4 и 8237А-5, р бот ющие с т ктовой ч стотой 4 и 5 Мгц соответственно (ст нд ртн я микросхем 8237А р бот ет н ч стоте 3 Мгц). Контроллер имеет 4 нез висимых к н л , к ждый из которых может обслужив ть одно периферийное устройство. 2.1. Принципы р боты контроллер ПДП В р боте ПДП р злич ются 2 гл вных цикл : цикл ожид ния (Idle cycle) и ктивный цикл (Active cycle). К ждый цикл подр зделяется н ряд состояний, з ним ющих по времени один период ч сов (тик). Из цикл ожид ния контроллер может быть переведен в состояние прогр ммиров ния (Program Condition) путем под чи н вход RESET сигн л высокого уровня, длительностью не менее 300 нc и следующей з ним под чи сигн л низкого уровня (уровня 0) н вывод CS (Chip Select). В состоянии прогр м- миров ния контроллер будет н ходится до тех пор, пок н выводе CS сохр нится сигн л низкого уровня. В процессе прогр ммиров ния контроллеру з д ются: - н ч льный дрес п мяти для обмен ; - уменьшенное н единицу число перед в емых б йтов; - н пр вление обмен , т кже уст н влив ются требуемые режимы р боты (р зрешить или з претить циклическое изменение приоритетов, втоиници лиз цию, з д ть н пр вление изменения дрес при обмене и т. д.). З грузк 16-р зрядных регистров контроллер осуществляется через 8-р зрядные порты ввод -вывод . Перед з грузкой первого (мл дшего) б йт должен быть сброшен (очищен) триггер-з щелк (триггер первый/последний, First/Last flip-flop), который изменяет свое состояние после вывод в порт первого б йт и т ким обр зом д ет возможность следующей ком ндой вывод в тот же порт з грузить ст рший б йт соответствующего регистр . З прогр ммиров нный к н л должен быть дем скиров н (бит м ски к н л уст н влив ется при этом в 0), после чего он может приним ть сигн лы "З прос н ПДП", генерируемые тем внешним устройством, которое обслужив ется через этот к н л. Сигн л "З прос н ПДП" может быть т кже иницииров н уст новкой в 1 бит з прос д нного к н л в регистре з просов контроллер . После появления сигн л з прос контроллер входит в ктивный цикл, в котором выполняется обмен д нными. Обмен может осуществляется в одном из четырех режимов: 1. Режим одиночной перед чи (Signle Transfer Mode). После к ждого цикл перед чи контроллер освобожд ет шину процессору, но ср зу же н чин ет проверку сигн лов з прос и, к к только обн ружив ет ктивный сигн л з прос , инициирует следующий цикл перед чи. 2. Режим блочной перед чи (Block Transfer Mode). В этом режиме н личие сигн л з прос требуется только до момент выд чи контроллером сигн л "Подтверждение з прос н ПДП" (DACK), после чего шин не освобожд ется вплоть до з вершения перед чи всего блок . 3. Режим перед чи по требов нию (Demand Transfer Mode). Д нный режим является промежуточным между двумя первыми: перед ч идет непрерывно до тех пор, пок ктивен сигн л з прос , состояние которого проверяется после к ждого цикл перед чи. К к только устройство не может продолжить перед чу, сигн л з прос сбр сыв ется им и контроллер приост н влив ет р боту. Этот режим применяется для обмен с медленными устройств ми, не позволяющими по своим временным х р ктеристик м р бот ть с ПДП в режиме блочной перед чи. 4. К ск дный режим (Cascade Mode). Режим позволяет включить в подсистему ПДП более одного контроллер в тех случ ях, когд недост точно четырех к н лов ПДП. В этом режиме один из к н лов ведущего контроллер используется для к ск диров ния с контроллером второго уровня. Для р боты в к ск де сигн л HRQ ("З прос н з хв т") ведомого контроллер под ется н вход DREG ("З прос н к н л ПДП") ведущего, сигн л DACK ("Подтверждение з прос ") ведущего под ется н вход HDLA ("Потверждение з хв т ") ведомого. Т к я схем подключения н логичн подключению ведущего (первого) контроллер к микропроцессору, с которым он обменив ется сигн л ми HRQ и HDLA. 2.2. Типы перед ч 1. Перед ч п мять-п мять (Memory-to-memory DMA). Используется для перед чи блок д нных из одного мест п мяти в другое. Исходный дрес определяется в регистр х нулевого к н л , выходной - в регистр х первого к н л . Число циклов обмен (число б йт минус 1) з д ется в регистре числ циклов к н л 1. Перед ч происходит с использов нием р бочего регистр контроллер в к честве промежуточного звен для хр нения информ ции. При перед чe п мять-п мять может быть з д н специ льный режим фикс ции дрес (Address hold), при котором зн чение текущего дрес в регистре нулевого к н л не изменяется, при этом весь выходной блок п мяти з полняется одним и тем же элементом д нных, н ходящимся по з д нному дресу. 2. Автоиници лиз ция ( втоз грузк , Autoinitialization). После з вершения обычной перед чи использов нный к н л ПДП м скируется и должен быть перепрогр ммиров н для д льнейшей р боты с ним. При втоиници лиз ции м скировк к н л после оконч ния перед чи не происходит, регистры текущего дрес и счетчик циклов втом тически з груж ются из соответствующих регистров с н ч льными зн чениями. Т ким обр зом для продолжения (повторения) обмен дост точно выст вить сигн л з прос н ПДП по д нному к н лу. 3. Режим фиксиров нных приоритетов. В этом режиме к н л 0 всегд имеет м ксим льный приоритет, к н л 3 - миним льный. Это озн ч ет, что люб я перед ч по к н лу с более высоким приоритетом будет выполняться р ньше, чем по к н лу с более низким приоритетом. 4. Циклический сдвиг приоритетов. Позволяет избеж ть "з бив ния" шины одним к н лом при одновременной перед чe по нескольким к н л м. К ждому к н лу, по которому прошл перед ч , втом тически присв ив ется низший приоритет, после чего пр во н перед чу получ ет к н л с н ивысшим приоритетом, для которого перед ч в д нный момент возможн . Т ким обр зом, если в н ч ле р боты р спределение приоритетов было обычным (к н л 0 - н ивысший), и пришли сигн лы з прос н ПДП по 1-му и 2-му к н л м, то сн ч л будет выполняться перед ч по первому к н лу, з тем он получит низший приоритет ( к н л 2, соответственно, высший, т. к. сдвиг приоритетов циклический) и перед ч выполнится по 2-му к н лу, который з тем получит низший приоритет, высший приоритет получит, сответственно, к н л 3, который и будет обл д ть преимущественным пр вом н перед чу. 5. Сж тие времени перед чи (Compressed transfer timing). В случ е, если временные х р ктеристики быстродействия обменив ющихся устройств совп д ют, ПДП может сокр тить время выполнения к ждого т кт перед чи н 2 цикл ч сов з счет т ктов ожид ния, входящих в к ждый цикл перед чи. 2.3. Опис ние внутренних регистров ПДП Контроллер имеет 344 бит внутренней п мяти, орг низов нной в виде регистров. Опис ние внутренних регистров ПДП приведено в т блице. ┌───────────────────────────────────┬──────────────┬───────────┐ │ Н именов ние │ Р зрядность │ Число │ │ регистр │ (бит) │ регистров │ ├───────────────────────────────────┼──────────────┼───────────┤ │ Регистр н ч льного дрес │ 16 │ 4 │ │ (Base Address Register) │ │ │ │ │ │ │ │ Регистр н ч льного счетчик циклов│ 16 │ 4 │ │ (Base Word Count Register) │ │ │ │ │ │ │ │ Регистр текущего дрес │ 16 │ 4 │ │ (Current Address Register) │ │ │ │ │ │ │ │ Регистр текущего счетчик циклов │ 16 │ 4 │ │ (Current Word Count Register) │ │ │ │ │ │ │ │ Р бочий регистр дрес │ 16 │ 1 │ │ (Temporary Address Register) │ │ │ │ │ │ │ │ Р бочий регистр счетчик циклов │ 16 │ 1 │ │ (Temporary Word Count Register) │ │ │ │ │ │ │ │ Регистр состояния │ 8 │ 1 │ │ (Status Register) │ │ │ │ │ │ │ │ Регистр ком нд │ 8 │ 1 │ │ (Command Register) │ │ │ │ │ │ │ │ Регистр режим (Mode Register) │ 6 │ 4 │ │ │ │ │ │ Р бочий регистр │ 8 │ 1 │ │ (Temporary Register) │ │ │ │ │ │ │ │ Регистр м сок (Mask Register) │ 4 │ 1 │ │ │ │ │ │ Регистр з просов │ 4 │ 1 │ │ (Request Register) │ │ │ └───────────────────────────────────┴──────────────┴───────────┘ Регистр н ч льного дрес (Base Address Register). В этом регистре з д ется ст ртовый дрес ОЗУ, с которого н чин ется перед ч . Регистр содержит 16 р зрядов и определяет дрес внутри з д нной стр ницы п мяти р змером 64К. З д ние номер стр ницы п мяти осуществляется через специ льные стр ничные регистры (Page Registers), поддержив емые внешней логикой. К ждый к н л ПДП имеет свой регистр н ч льного дрес и стр ничный регистр. Т кое деление п мяти н стр ницы не позволяет осуществить обмен с блоком п мяти, н ходящимся н пересечении двух стр ниц. К жд я стр ниц н чин ется с сегментного дрес , кр тного 1000h (0, 1000h, 2000h, ..., 9000h). Регистр н ч льного счетчик циклов (Base Word Count Register). В этом регистре з д ется н ч льное число циклов перед чи для прогр ммируемого к н л . Ф ктическое число перед в емых во время р боты ПДП элементов д нных н единицу превыш ет з д нное число циклов, т. е. если Вы з д ете 100 циклов перед чи, р змер элемент будет р вен 1 б йту, то з се нс обмен будет перед н 101 б йт информ ции. Регистр текущего дрес (Current Address Register). Н ч льное зн чение з носится в этот регистр одновременно с регистром н ч льного дрес . В д льнейшем в ходе перед чи зн чение текущего дрес втом тически увеличив ется или уменьш ется (конкретное н пр вление изменения з д ется при прогр ммиров нии в регистре режим ). Если р зрешен втоини- ци лиз ция, то после оконч ния перед чи в регистр втом тически уст н влив ется зн чение из регистр н ч льного дрес . Регистр текущего счетчик циклов (Current Word Count Register). Регистр содержит текущее зн чение счетчик циклов (число ост вшихся циклов перед чи). Отобр ж емое в нем число циклов всегд н единицу меньше числ еще не перед нных элементов д нных, т к к к изменение зн чения в этом регистре проиводится в конце цикл перед чи, уже после ф ктической перед чи элемент д нных, конец перед чи фиксируется в момент переполнения счетчик (изменение его зн чения с 0 н 0FFFFh). Регистр режим (Mode Register). Д нный регистр з д ет режимы р боты своего к н л контроллер . 7 6 5 4 3 2 1 0 ┌─┬─┬──┬──┬──┬──┬──┬──┐ │X│X│ │ │ │ │ Биты: └─┴─┴──┼──┴┬─┴┬─┴──┬──┘ ───── │ │ │ └────> 0-1: Режим р боты: 00=проверк , │ │ │ 01=з пись (в п мять), │ │ │ 10=чтение (из п мяти), │ │ │ 11=недопустим я комбин ция │ │ └─────────> 2: Автоиници лиз ция: 1=р зрешен , │ │ 0=з прещен │ └────────────> 3: Изменение текущего дрес при │ обмене: 0=увеличение, 1=уменьшение └────────────────> 4-5: Тип перед чи: 00=Режим перед чи по требов нию, 01=Режим одиночной перед чи, 10=Режим блочной перед чи, 11=К ск дный режим. К ждый из четырех к н лов ПДП имеет свой н бор регистров, опис нных выше. Кроме того, имеется следующий н бор регистров, общих для всех к н лов. Регистр ком нд (Command Register). Этот 8-битный регистр упр вляет р ботой контроллер . Он прогр ммируется, когд контроллер н ходится в состоянии прогр ммиров ния и очищ ется ком нд ми сброс "Reset" и "Master Clear". Н зн чение битов регистр ком нд приведено н рисунке. 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ │ Бит: └┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ─── │ │ │ │ │ │ │ └─> 0: 0=з претить перед чу п мять-п мять, │ │ │ │ │ │ │ 1=р зрешить │ │ │ │ │ │ └────> 1: 0=з претить фикс цию дрес в к н ле │ │ │ │ │ │ 0, 1=р зрешить │ │ │ │ │ └───────> 2: 0=р зблокиров ть, 1=з блокиров ть │ │ │ │ │ контроллер │ │ │ │ └──────────> 3: 0=норм льн я временн я ди гр мм , │ │ │ │ 1=сж тие времени перед чи; если бит │ │ │ │ 0 уст новлен, то игнорируется │ │ │ └─────────────> 4: 0=режим фиксиров нных приоритетов, │ │ │ 1=режим циклического сдвиг │ │ │ приоритетов │ │ └────────────────> 5: 1=Режим р сширенной з писи, │ │ 0=з держки при з писи; если бит 3 │ │ уст новлен, то игнорируется │ └───────────────────> 6: 0= ктивным счит ется высокий уровень │ сигн л з прос (DREQ), 1=низкий └──────────────────────> 7: ктивным счит ется высокий уровень сигн л подтверждения з прос н ПДП (DACK), 1=низкий Регистр состояния (Status Register). Регистр отр ж ет текущее состояние з просов и перед ч по всем четырем к н л м. Биты 0 - 3 уст н влив ются в единицу после з вершения перед чи по к н л м 0 - 3 (бит 0 - к н л 0, бит 1 - к н л 1 и т.д.), если не з д н режим втоиници лиз ции. Эти биты очищ ются после ком нды сброс контроллер и после к ждой опер ции считыв ния состояния из регистр состояния. Биты 4 - 7 ук зыв ют по к кому из к н лов 0 - 3 ктивен в текущий момент сигн л з прос н ПДП. Регистр м сок (Mask Register). К ждый бит этого 4-битового регистр м скирует/дем скирует свой к н л ПДП, при этом зн чение 1 м скирует к н л, зн чение 0 дем скирует к н л и р зреш ет прием сигн л з прос по этому к н лу. Регистр з просов (Request Register). Сигн л з прос н ПДП (DREQ) может быть изд н к к обслужив емым устройством, т к и прогр ммно. Для прогр ммного изд ния сигн л з прос по одному из 4-х к н лов ПДП необходимо уст новить соответствующий бит в 4-р зрядном регистре з просов. З прос н ПДП может быть отменен з писью нулевого зн чения в соответствующий бит регистр . Бит з прос очищ ется втом тически при оконч нии перед чи по д нному к н лу. Все биты з просов очищ ются при сбросе контроллер . Для того, чтобы восприним ть прогр ммные з просы н ПДП, к н л должен н ходится в режиме блоковой перед чи. Р бочий регистр (Temporary Register). Этот 8-р зрядный регистр используется для хр нения элемент д нных, перед в емого в режиме фиксиров нного дрес при перед че п мять-п мять или для временного хр нения перед в емого б йт при всех ост льных режим х перед чи. 2.4. Прогр ммное упр вление контроллером ПДП Прогр ммное упр вление контроллером ПДП осуществляется через порты ввод -вывод . Доступ к к ждому регистру контроллер может быть осуществлен через свои порты ввод -вывод . В р здел х 2.4.1 и 2.4.2 описыв ется прогр ммное упр вление контроллер ми н XT- и АТ-подобных ПЭВМ соответственно. 2.4.1. Орг низ ция и упр вление ПДП н XT-подобных ПЭВМ IBM PC XT и XT-совместимые ПЭВМ имеют один 4-к н льный контроллер ПДП 8237А. Н зн чение к н лов следующее: 0 - обмен п мять-п мять; 1 - свободен (может использов ться сетевыми д птер ми); 2 - обмен с контроллером гибких дисков; 3 - обмен с контроллером жестких дисков. В т блице приведено опис ние портов ввод -вывод , предн зн ченных для упр вления контроллером ПДП. ┌──────┬────────┬─────────────────────────────────────────────┐ │ Порт │ Режим │ Н зн чение │ ├──────┼────────┼─────────────────────────────────────────────┤ │ 0h │ з пись │ З пись н ч льного дрес в регистр н ч льно-│ │ │ │ го дрес и регистр текущего дрес к н л 0│ │ │ │ │ │ 2h │ з пись │ то же для к н л 1 │ │ │ │ │ │ 4h │ з пись │ то же для к н л 2 │ │ │ │ │ │ 6h │ з пись │ то же для к н л 3 │ │ │ │ │ │ 0h │ чтение │ Чтение н ч льного дрес из регистр н ч ль-│ │ │ │ ного дрес к н л 0 │ │ │ │ │ │ 2h │ чтение │ то же для к н л 1 │ │ │ │ │ │ 4h │ чтение │ то же для к н л 2 │ │ │ │ │ │ 6h │ чтение │ то же для к н л 3 │ │ │ │ │ │ 1h │ з пись │ З пись в регистр н ч льного счетчик циклов │ │ │ │и в регистр текущего счетчик циклов к н л 0│ │ │ │ │ │ 3h │ з пись │ то же для к н л 1 │ │ │ │ │ │ 5h │ з пись │ то же для к н л 2 │ │ │ │ │ │ 7h │ з пись │ то же для к н л 3 │ └──────┴────────┴─────────────────────────────────────────────┘ ┌──────┬────────┬─────────────────────────────────────────────┐ │ Порт │ Режим │ Н зн чение │ ├──────┼────────┼─────────────────────────────────────────────┤ │ │ │ │ │ 1h │ чтение │ Чтение текущего зн чения из регистр теку- │ │ │ │ щего счетчик циклов к н л 0 │ │ │ │ │ │ 3h │ чтение │ то же для к н л 1 │ │ │ │ │ │ 5h │ чтение │ то же для к н л 2 │ │ │ │ │ │ 7h │ чтение │ то же для к н л 3 │ │ │ │ │ │ 8h │ з пись │ З пись регистр ком нд ПДП │ │ │ │ │ │ 8h │ чтение │ Чтение регистр состояния ПДП │ │ │ │ │ │ 9h │ з пись │ З пись в регистр з просов ПДП │ │ │ │ │ │ 0Ah │ з пись │ З пись бит м ски для одного из к н лов ПДП │ │ │ │ │ │ 0Bh │ з пись │ З пись регистр режимов для одного из │ │ │ │ к н лов ПДП │ │ │ │ │ │ 0Ch │ з пись │ Очистк (сброс) триггер -з щелки (триггер │ │ │ │ первого/последнего) │ │ │ │ │ │ 0Dh │ з пись │ Прогр ммный сброс контроллер │ │ │ │ │ │ 0Eh │ з пись │ Очистк битов м сок всех 4-х к н лов │ │ │ │ │ │ 0Fh │ з пись │ З пись регистр м сок для всех 4-х к н лов │ │ │ │ │ │ 0Dh │ │ │ │ или │ чтение │ Чтение р бочего регистр ПДП │ │ 0Fh │ │ │ ├──────┼────────┼─────────────────────────────────────────────┤ │ 81h │ з пись │ З д ние номер стр ницы для к н л 2 │ │ │ │ │ │ 82h │ з пись │ то же для к н л 3 │ │ │ │ │ │ 83h │ з пись │ то же для к н л 1 │ │ │ │ │ │ 87h │ з пись │ то же для к н л 0 │ └──────┴────────┴─────────────────────────────────────────────┘ Порты 0h - 7h предн зн чены для з писи исходных зн чений в регистры н ч льного и текущего дрес , н ч льного и текущего счетчик циклов для всех 4-х к н лов. Т к к к порты восьмир зрядные, регистры, в которые через них з носятся д нные, 16-р зрядные, то з пись производится в дв прием . Перед первой ком ндой вывод в требуемый порт необходимо сбросить триггер-з щелку, для чего выполняется ком нд вывод произвольного зн чения в порт 0Ch, после чего в требуемый порт выводится мл дший б йт 16-р зрядного зн чения и з тем ст рший б йт следующей ком нды вывод в тот же порт. Вывод в порт 8h позволяет з нести зн чение в регистр ком нд ПДП. Опис ние битов регистр ком нд приведено в п.2.3. Чтение из порт 8h считыв ет регистр состояния ПДП. Опис ние битов регистр состояния приведено в п.2.3. З пись в порт 9h позволяет уст новить или сбросить бит з прос в регистр з просов для одного из к н лов. Форм т ком нды следующий: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │X X X X X │ │ │ Биты: └──┴──┴──┴──┴──┴┬─┴┬─┴┬─┘ ───── не используются │ └──┴──> 0-1: выбор к н л 00 - 0 │ 01 - 1 │ 10 - 2 │ 11 - 3 └────────> 2: 1=уст новить бит з прос н ПДП 0=сбросить бит з прос н ПДП З пись в порт 0Ah позволяет уст новить или сбросить бит м ски в регистре м сок для одного из к н лов. Форм т ком нды: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │X X X X X │ │ │ Биты: └──┴──┴──┴──┴──┴┬─┴┬─┴┬─┘ ───── не используются │ └──┴──> 0-1: выбор к н л 00 - 0 │ 01 - 1 │ 10 - 2 │ 11 - 3 └────────> 2: 1=уст новить бит м ски 0=сбросить бит м ски З пись в порт 0Bh уст н влив ет зн чение в регистре режимов одного из 4-х к н лов ПДП. Биты 0 и 1 з д ют номер к н л (00 - 0, 01 - 1, 10 - 2, 11 - 3). В биты 2 - 7 з носятся зн чения, перед в емые соответственно в биты 0 - 6 регистр режимов. Опис ние битов регистр режимов приведено в п. 2.3. З пись в порт 0Dh з д ет прогр ммный сброс контроллер (Master Clear). Вывод любого б йт в этот порт имеет тот же эффект, что и пп р тный сброс контроллер . При прогр ммном сбросе очищ ются регистры ком нд, состояния, з просов и р бочий регистр. Т к же сбр сыв ется триггер-з щелк и уст н влив ется все биты м сок в регистре м сок. После прогр ммного сброс контроллер переходит в цикл ожид ния. Вывод любого б йт в порт 0Eh очищ ет регистр м сок - сбр сыв ет биты м сок всех 4-х к н лов ПДП и т ким обр зом р зреш ет прием з просов н ПДП по всем к н л м. Через порт 0Fh можно з д ть произвольное зн чение регистр м сок ПДП. Для этого необходимо в бит х 0 - 3 регистр AL уст новить требуемое зн чение м сок к н лов 0 - 3 соответственно и вывести это зн чение в порт. Стр ничные регистры ПДП предн зн чены для з д ния п р метр стр ницы п мяти, с которой будет производится обмен. Под номером стр ницы поним ются ст ршие 4 бит полного 20-битового дрес ОЗУ, т.е. н ч льные сегментные дрес стр ниц будут кр тны 1000h (0, 1000h, 2000h, ..., 9000h). Н помним, что рхитектур ПДП позволяет р бот ть только со стр ницей п мяти р змером 64К, логик , обеспечив ющ я переключение стр ниц устроен т к, что стр ницы имеют жесткие гр ницы, опис нные выше. Из-з этой особенности невозможно с помощью ПДП осуществить обмен с блок ми п мяти, пересек ющими гр ницу между двумя т кими стр ниц ми. 2.4.2. Орг низ ция и упр вление ПДП н AT-подобных ПЭВМ IBM PC AT и AT-подобные ПЭВМ имеют дв контроллер ПДП 8237А, р бот ющиe в к ск дном режиме. Н зн чение к н лов следующие: 0 - свободен; 1 - д птер SDLC; 2 - контроллер н копителей н гибких диск х; 3 - контроллер н копителей н жестких диск х; 4 - к ск д с первым контроллером ПДП; 5, 6, 7 - свободны. Упр вление к н л ми 0 - 3 осуществляется н логично PC/ХТ. К н лы 4 - 7 предн зн чены для обмен 16-р зрядными слов ми. В связи с этим возник ет ряд отличий в р боте с этими к н л ми: - бит 0 в д нных, з носимых в регистры н ч льного и текущего дрес , всегд подр зумев ется р вным 0, поэтому через эти регистры перед ются биты 1 - 16 полного 23-р зрядного дрес ( не биты 0 - 15 полного 20-р зрядного дрес , к к это ре лизов но н ХТ-подобных ПЭВМ), по этой же причине в стр ничные регистры к н лов 4 - 7 з носятся биты 17 - 23 полного дрес , не биты 16 - 23, к к это н до сдел ть при р боте с к н л ми 0 - 3; - поскольку перед ч осуществляется 16-р зрядными слов ми, в регистры текущего и н ч льного счетчик циклов з носится не число б йт, число слов, уменьшенное н единицу; - р змеры стр ниц п мяти, в предел х которых возможен обмен в течение одной перед чи сост вляют 2000h б йтов. В т блице приведено опис ние портов ввод -вывод , предн зн ченных для упр вления вторым контроллером ПДП. ┌──────┬────────┬─────────────────────────────────────────────┐ │ Порт │ Режим │ Н зн чение │ ├──────┼────────┼─────────────────────────────────────────────┤ │ 0C0h │ з пись │ З пись н ч льного дрес в регистр н ч льно-│ │ │ │ го дрес и регистр текущего дрес к н л 4│ │ │ │ │ │ 0C4h │ з пись │ то же для к н л 5 │ │ │ │ │ │ 0C8h │ з пись │ то же для к н л 6 │ │ │ │ │ │ 0CCh │ з пись │ то же для к н л 7 │ │ │ │ │ │ 0C0h │ чтение │ Чтение н ч льного дрес из регистр н ч ль-│ │ │ │ ного дрес к н л 4 │ │ │ │ │ │ 0C4h │ чтение │ то же для к н л 5 │ │ │ │ │ │ 0C8h │ чтение │ то же для к н л 6 │ │ │ │ │ │ 0CCh │ чтение │ то же для к н л 7 │ │ │ │ │ │ 0C2h │ з пись │ З пись в регистр н ч льного счетчик циклов │ │ │ │и в регистр текущего счетчик циклов к н л 4│ │ │ │ │ │ 0C6h │ з пись │ то же для к н л 5 │ │ │ │ │ │ 0CAh │ з пись │ то же для к н л 6 │ │ │ │ │ │ 0CEh │ з пись │ то же для к н л 7 │ │ │ │ │ │ 0C2h │ чтение │ Чтение текущего зн чения из регистр теку- │ │ │ │ щего счетчик циклов к н л 4 │ │ │ │ │ │ 0C6h │ чтение │ то же для к н л 5 │ │ │ │ │ │ 0Cah │ чтение │ то же для к н л 6 │ │ │ │ │ │ 0CCh │ чтение │ то же для к н л 7 │ │ │ │ │ │ 89h │ з пись │ З д ние номер стр ницы для к н л 6 │ │ │ │ │ │ 8Bh │ з пись │ то же для к н л 5 │ │ │ │ │ │ 8Ah │ з пись │ то же для к н л 7 │ │ │ │ │ │ 8Fh │ з пись │ то же для к н л 4 │ └──────┴────────┴─────────────────────────────────────────────┘ В следующей т блице приведено опис ние н зн чения портов второго контроллер ПДП с ук з нием н логичных портов первого контроллер . Форм ты д нных, вводимых/выводимых через эти порты совп д ют с форм т ми д нных н логичных портов первого контроллер . При р боте с этими порт ми следует только учитыв ть, что нумер ция к н лов н чин ется не с 0, к к у первого контроллер , с 4 (к н л 4 - это к н л 0 второго контроллер , к н л 5 - это его к н л 1 и т. д.). ┌──────┬────────┬───────────────────────────────────┬─────────┐ │ Порт │ │ │ Ан лог. │ │ │ Режим │ Н зн чение │ порт │ │ ПДП-2│ │ │ ПДП-1 │ ├──────┼────────┼───────────────────────────────────┼─────────┤ │ 0D0h │ з пись │ З пись регистр ком нд ПДП │ 8h │ │ │ │ │ │ │ 0D0h │ чтение │ Чтение регистр состояния ПДП │ 8h │ │ │ │ │ │ │ 0D2h │ з пись │ З пись в регистр з просов ПДП │ 9h │ │ │ │ │ │ │ 0D4h │ з пись │ З пись бит м ски для одного из к │ 0Ah │ │ │ │ к н лов ПДП │ │ │ │ │ │ │ │ 0D6h │ з пись │ З пись регистр режимов для одного│ 0Bh │ │ │ │ из к н лов ПДП │ │ │ │ │ │ │ │ 0D8h │ з пись │ Очистк (сброс) триггер -з щелки │ 0Ch │ │ │ │ (триггер первого/последнего) │ │ │ │ │ │ │ │ 0DAh │ з пись │ Прогр ммный сброс контроллер │ 0Dh │ │ │ │ │ │ │ 0DCh │ з пись │ Очистк битов м сок всех к н лов │ 0Eh │ │ │ │ │ │ │ 0DEh │ з пись │ З пись регистр м сок для всех 4-х│ 0Fh │ │ │ │ к н лов │ │ │ │ │ │ │ │ 0DAh │ чтение │ Чтение р бочего регистр ПДП │ 0Dh │ │ │ │ │ │ └──────┴────────┴───────────────────────────────────┴─────────┘ 3. Прогр ммируемый контроллер прерыв ний Прогр ммируемый контроллер прерыв ний (ПКП, Programmable Interrupt Controller, PIC) ре лизует векторную систему прерыв ний. Микросхем 8259А фирмы Intel (советский н лог КР580ВН59), т к же ее модифик ции 8259А-2 и 8259А-8, поддержив ет 8 уровней прерыв ний от восьми р зличных устройств. Основные функции контроллер : - фикс ция з просов н прерыв ния от восьми внешних источников; - прогр ммное м скиров ние поступ ющих з просов; - присвоение фиксиров нных или циклически изменяемых при- оритетов вход м контроллер , н которые поступ ют з просы; - иници ция вызов процедуры обр ботки поступившего пп - р тного прерыв ния. Количество обслужив емых внешних источников прерыв ний может быть увеличено путем к ск диров ния нескольких контроллеров. Р сположение выводов микросхемы контроллер 8259A приведено н рисунке. ┌────────────┐ ┌────────────┐ __ │ └──┘ │ CS █▌ 1 28 ▐█ Vcc __ │ │ WR █▌ 2 27 ▐█ A0 __ │ │ ____ RD █▌ 3 26 ▐█ INTA │ │ D7 █▌ 4 25 ▐█ IR7 │ │ D6 █▌ 5 24 ▐█ IR6 │ │ D5 █▌ 6 23 ▐█ IR5 │ │ D4 █▌ 7 22 ▐█ IR4 │ │ D3 █▌ 8 21 ▐█ IR3 │ │ D2 █▌ 9 20 ▐█ IR2 │ │ D1 █▌ 10 19 ▐█ IR1 │ │ D0 █▌ 11 18 ▐█ IR0 │ │ CAS0 █▌ 12 17 ▐█ INT │ │ __ __ CAS1 █▌ 13 16 ▐█ SP/EN │ │ GND █▌ 14 15 ▐█ CAS2 │ │ └────────────────────────────┘ ┌───────────┬──────────┬───────────────────────────────────────┐ │Обозн чение│Тип вывод │ Н зн чение │ ├───────────┼──────────┼───────────────────────────────────────┤ │ Vcc │ - │ Пит ние + 5 В │ │ │ │ │ │ GND │ - │ Общий (земля) │ │ __ │ │ │ │ CS │ вход │ Выбор микросхемы │ │ __ │ │ │ │ RD │ вход │ Чтение │ │ __ │ │ │ │ WR │ вход │ З пись │ │ │ │ │ │ D0-D7 │двун пр в-│ Выводы н шину д нных │ │ │ленные │ │ │ │выводы │ │ │ │ │ │ │ CAS0-CAS2 │ входы/ │ Для ведущего контроллер являются │ │ │ выходы │ выход ми, для всех ведомых вход ми. │ │ │ │ Предн зн чены для перед чи ведущим │ │ │ │ информ ции для выбор необходимого │ │ │ │ ведомого. │ │ __ __ │ │ │ │ SP/EN │ вход │ Выбор ведущего контроллер │ │ │ │ │ │ INT │ выход │ З прос н прерыв ния │ │ ____ │ │ │ │ INTA │ вход │ Подтверждение прерыв ния │ │ │ │ │ │ A0 │ вход │ Выбор регистров контроллер │ │ │ │ │ │ IR0-IR7 │ входы │ Входы з просов н прерыв ния от │ │ │ │ внешних источников. │ └───────────┴──────────┴───────────────────────────────────────┘ В сост в контроллер входят: - схем упр вления чтением/з писью; - схем упр вления; - схем к ск диров ния; - регистр з просов н прерыв ния; - схем обр ботки приоритетов; - регистр состояния; - регистр м скиров ния з просов н прерыв ния. ПКП может н ходиться в двух основных состояниях: н стройки и обслужив ния з просов н прерыв ния. В состоянии н стройки контроллер приним ет упр вляющие слов иници лиз ции (Initialization Command Words, ICW), в состоянии обслужив ния - опер ционные упр вляющие слов (Operation Control Words, OCW). Возможны несколько режимов обслужив ния источников прерыв ний: - режим фиксиров нных приоритетов по по уровням прерыв ний; - дв р зличных в ри нт циклического сдвиг приоритетов; - режим втом тического з вершения обр ботки прерыв ния; - режим специ льного м скиров ния; - режим опрос устройств. 3.1.Опис ние основных элементов ПКП Схем упр вления чтением/з писью (Read/Write Control Logic). Основной функцией этого блок является прием ком нд от микропроцессор и перед ч ему информ ции о состоянии ПКП. Обмен с микропроцессором осуществляется через специ льный 8-р зрядный буфер д нных (Data Bus Buffer), являющийся интерфейсом между ПКП и шиной д нных. В сост в блок входят регистры упр вляющих слов ICW и OCW. Схем упр вляется вход ми CS, RD, WR и A0. Вход CS (Chip select) отвеч ет з выбор микросхемы. Низкий уровень сигн л н входе CS р зреш ет выполнение обмен с ПКП. Низкий уровень сигн л н входе WR (Write) р зреш ет микропроцессору выводить упр вляющие слов ICW и OCW для прием их ПКП. Низкий уровень сигн л н входе RD (Read) р зреш ет ПКП перед ть микропроцессору информ цию о состоянии специ льных регистров IRR, ISR и IMR, которые опис ны ниже. Все упр вляющие слов ICW и OCW приним ются контроллером в виде 9-р зрядных зн чений. Р зряды 0 - 7 перед ются через 8-р зрядный буфер д нных. Ст рший р зряд (восьмой, счит я с нуля) носит н зв ние А0 и уст н влив ется в 0 или 1 в з висимости от того, через к кой из двух возможных портов ввод -вывод (четный или нечетный) было перед но упр вляющее слово. Если для вывод зн чения использов лся порт с четным дресом, А0 будет р вен 0, если использов лся порт с нечетным дресом н единицу большим, чем предыдущий, тогд А0 будет р вен 1. Регистр з просов н прерыв ния (Interrupt Request Register, IRR) обслужив ется через входы IR0 - IR7 контроллер . Сигн л н одном входов IR0 - IR7 - это з прос н прерыв ние соответствующего уровня (0 - 7). В соответствии с сигн лом з прос н прерыв ние схемой упр вления уст н влив ется соответствующий бит в регистре IRR. Регистр состояния (регистр обр б тыв емых з просов, In-Service Register, ISR) описыв ет в бит х 0 - 7 прерыв ния к ких уровней (0 - 7) в д нный момент обр б тыв ются. Регистр м скиров ния з просов н прерыв ния (Interrupt Mask Register, IMR) описыв ет, прерыв ния к ких уровней в н стоящий момент з м скиров ны. Единичное зн чение бит в IMR ук зыв ет н то, что прерыв ние соответствующего уровня при появлении з прос в IRR блокируется. Схем обр ботки приоритетов (шифр тор приоритетов, Priority Resolver) определяет, прерыв ние к кого уровня в д нный момент является н иболее приоритетным для выполнения. Схем упр вления ПКП формирует сигн л з прос н прерывaние, поступ ющий н вход INT (з прос н прерыв ние) микропроцессор . Если фл г IF регистр фл гов процессор р вен 1 (прерыв ния р зрешены), процессор отвеч ет сигн лом по линии INTA (подтверждение прерыв ния), после чего сбр сыв ется в 0 р зряд IRR и уст н влив ется в 1 р зряд ISR, соответствующие уровню обр б тыв емого прерыв ния. После получения второго сигн л подтверждения от процессор по линии INTA, ПКП перед ет н шину д нных 8-битовый номер прерыв ния. Д нн я последов тельность р боты схемы упр вления выполняется при подключении ПКП к системе с микропроцессор ми 8088/8086. При р боте с микропроцессор ми 8080/8085 последов тельность р боты схемы упр вления несколько отлич ется от опис нной выше. Основное отличие состоит в том, что процессору перед ется не только номер прерыв ния, но и код ком нды процессор INT (прерыв ние) - б йт 0CDh. Схем к ск диров ния отвеч ет з р боту к ск д из нескольких контроллеров. При подключении к ведущему контроллеру выход INT к ждого ведомого подключ ется к одному из входов IR0 - IR7 ведущего. Д лее этот сигн л перед ется ведущим н вход INT процессор . Когд процессор возвр щ ет сигн л INTA, ведущий контроллер не только уст н влив ет бит в ISR и сбр сыв ет бит в IRR, но и выд ет н свои выходы CAS0 - CAS2 номер уровня прерыв ния, к которому подключен ведомый, посл вший з прос н прерыв ние. Сигн лы по линии CAS0 - CAS2 приним ются всеми ведомыми, одн ко обр б тыв ются только тем, который подключен к линии IR с соответствующим номером. 3.2.Режимы р боты ПКП 1. Режим фиксиров нных приоритетов (Fixed Priority, Fully Nested Mode). В этом режиме контроллер н ходится ср зу после иници лиз ции. З просы прерыв ний имеют жесткие приоритеты от 0 до 7 (0 - высший) и обр б тыв ются в соответствии с приоритет ми. Прерыв ние с меньшим приоритетом никогд не будет обр бот но, если в процессе обр ботки прерыв ний с более высокими приоритет ми постоянно возник ют з просы н эти прерыв ния. 2. Автом тический сдвиг приоритетов (Automatic Rotation). В этом режиме д ется возможность обр бот ть прерыв ния всех уровней без их дискримин ции. Н пример, после обр ботки прерыв ния уровня 4 ему втом тически присв ив ется низший приоритет, при этом приоритеты для всех ост льных уровней циклически сдвиг ются и прерыв ния уровня 5 будут иметь в д нной ситу ции высший приоритет и, следов тельно, возможность быть обр бот нными. 3. Прогр ммно-упр вляемый сдвиг приоритетов(Specific Rotation). Прогр ммист может с м перед ть ком нду циклического сдвиг приоритетов ПКП, з д в соответствующее упр вляющее слово. В ком нде з д ется номер уровня, которому требуется присвоить м ксим льный приоритет. После выполнения т кой ком нды устройство р бот ет т к же, к к и в режиме фиксиров нных приоритетов, с учетом их сдвиг . Приоритеты сдвиг ются циклически, т ким обр зом если м ксим льный приоритет был н зн чен уровню 3, то уровень 2 получит миним льный и будет обр б тыв ться последним. 4. Автом тическое з вершение обр ботки прерыв ния (Automatic End Of Interrupt, AEOI). В обычном режиме р боты процедур обр ботки пп р тного прерыв ния должн перед своим з вершением очистить свой бит в ISR специ льной ком ндой, ин че новые прерыв ния не будут обр б тыв ться ПКП. В режиме AEOI нужный бит в ISR втом тически сбр сыв ется в тот момент, когд н чин ется обр ботк прерыв ния нужной процедурой обр ботки и от нее не требуется изд в ть ком нду з вершения обр ботки прерыв ния (EOI). Сложность р боты в д нном режиме обусл влив ется тем, что все процедуры обр ботки пп р тных прерыв ний должны быть повторно входимыми, т. к. з время их р боты могут повторно возникнуть прерыв ния того же уровня. 5. Режим специ льной м ски (Special Mask Mode). Д нный режим позволяет отменить приоритетное упорядочение обр ботки з просов и обр б тыв ть их по мере поступления. После отмены режим специ льной м ски предшествующий порядок приоритетов уровней сохр н ется. 6. Режим опрос (Polling Mode). В этом режиме пп р тные прерыв ния не происходят втом тически. Появление з просов н прерыв ние должно определяться считыв нием IRR. Д нный режим позволяет т к же получить от ПКП информ цию о н личии з просов н прерыв ния и, если з просы имеются, номер уровня с м ксим льным приоритетом, по которому есть з прос. 3.3.Прогр ммиров ние ПКП Ниже описыв ется упр вление ПКП в ПЭВМ н б зе микропроцессоров Intel 8086/8088/80286. Возможности, позволяющие включить ПКП в ПЭВМ, использующие другие процессоры, опущены. Для вывод информ ции в ПКП используются 2 порт ввод -вывод . Порт с четным дресом (обычно это порт 20h) и порт с нечетным дресом (обычно 21h). Через эти порты могут быть перед ны 4 слов иници лиз ции (Initialization Control Word, ICW1 - ICW4), з д ющие режим р боты ПКП, и 3 опер ционных упр вляющих слов (слов р бочих прик зов, Operation Control Words, OCW1 - OCW3). В порт с четным дресом выводятся ICW1, OCW2 и OCW3. OCW2 отлич ется от OCW3 тем, что бит 3 в ocw2 р вен 0, в OCW3 р вен 1. В то же время бит 4 в OCW2 и OCW3 р вен 0, в ICW1 р вен 1. Т ким обр зом по зн чению, выводимому в порт с четным дресом, однозн чно определяется, в к кой регистр (ICW1, OCW2 или OCW3) з носятся д нные. Порт с нечетным дресом используется для вывод ICW2, ICW3, ICW4 и OCW1. Неоднозн чности интерпрет ции д нных в этом случ е т к же не возник ет, т. к. слов иници лиз ции ICW2 - ICW4 должны непосредственно следов ть з ICW1, выведенным в порт с четным дресом и выводить в промежутке между ними OCW1 не следует, онo не будет опозн нo контроллером. Выводом в порт с четным дресом упр вляющего слов иници лиз ции ICW1 н чин ется иници лиз ция ПКП. В процессе иници лиз ции контроллер последов тельно приним ет упр вляющие слов ICW1 - ICW4. При н личии в системе одного контроллер ICW3 не выводится. Н личие ICW4 определяется содерж нием ICW1. При н личии к ск д из нескольких ПКП к ждый из них иници лизируется отдельно. Форм т ICW1 следующий: A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 0 │ -- │ -- │ -- │ 1 │LTIM│ ADI│SNGL│ IC4│ └────┴────┴────┴────┴────┴─┬──┴─┬──┴─┬──┴─┬──┘ │ │ │ │ │ │ │ └─> 1=будет вывод ICW4 │ │ │ 0=не будет │ │ └──────> 1=один контроллер │ │ 0=к ск д │ └───────────> игнорируется └────────────────> 0=з пуск з просов фронтом 1=з пуск з просов уровнем Бит 4, р вный 1, определяет, что выводится ICW1, не OCW2 или OCW3. Бит 3 (LTIM), р вный 0, з д ет з пуск з просов фронтом, при этом действует опис нн я выше схем : бит в IRR сбр сыв ется при уст новке соответствующего бит в ISR. Бит 2 (ADI) используется только в ПЭВМ н б зе микро- процессоров Intel 8080/8085. Бит 1 (SNGL) ук зыв ет н н личие в системе одного контроллер (если р вен 1) или к ск д из нескольких контроллеров (если р вен 0). Если этот бит р вен 1, то ICW3 не выводится в процессе иници лиз ции и следом з ICW2 ср зу должно следов ть ICW4. Бит 0 (IC4) определяет, будет ли выводиться ICW4. Если ICW4 не выводится (бит 0 = 0), то оно втом тически з полняется нулями. В описыв емых ПЭВМ н личие ICW4 обяз тельно, т. к. тип микропроцессор 8086/8088 з д ется в нем зн чением 1 в одном из битов. Упр вляющее слово ICW2 з д ет номер вектор прерыв ния для прерыв ний уровня 0 (н пример 8 для IBM PC, у которых по уровню 0 происходят прерыв ния от т ймер ). Т к к к вектор пп р тных прерыв ний р спол г ются подряд друг з другом, вывод в ICW2 зн чения 8 не только з д ет восьмой вектор для т ймер , но и девятый для прерыв ний уровня 1, десятый (0Ah) для прерыв ний уровня 2 и т. д. Упр вляющее слово ICW3 выводится только при н личии к ск д и имеет р зный форм т для ведущего и ведомых контроллеров. ICW3 ведущего ук зыв ет, к к ким вход м IR0 - IR7 подключены ведомые контроллеры, при этом соответствующие биты уст н влив ются в 1. Ост льные биты при этом р вны 0. ICW3 следующего вид : A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 1 │ 0 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │ └────┴────┴────┴────┴────┴────┴────┴────┴────┘ з д ет, что в к ск де имеется 2 ведомых контроллер , подключенных к вход м IR1 и IR4. ICW3 ведомого (подчиненного, slave) ПКП в трех мл дших бит х з д ет номер уровня, н котором р бот ет ведомый контроллер. Для ведомого контроллер , р бот ющего н уровне 1 ICW3 будет выглядеть следующим обр зом: A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 1 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 1 │ └────┴────┴────┴────┴────┴────┴────┴────┴────┘ Если ведомый контроллер р бот ет н уровне 4, то его ICW3 будет т ким: A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 1 │ 0 │ 0 │ 0 │ 0 │ 0 │ 1 │ 0 │ 0 │ └────┴────┴────┴────┴────┴────┴────┴────┴────┘ Последнее слово иници лиз ции (ICW4) имеет следующий форм т: A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 1 │ 0 │ 0 │ 0 │SFNM│ BUF│ M/S│AEOI│ mPM│ └────┴────┴────┴────┴─┬──┴─┬──┴─┬──┴─┬──┴─┬──┘ │ │ │ │ │ │ │ │ │ └───> 1=8088/8086 │ │ │ │ 0=8080/8085 │ │ │ └────────> 1=AEOI │ │ │ 0=EOI │ │ └─────────────> 1=ведущий │ │ 0=ведомый │ │ (только при BUF=1) │ └──────────────────> 1=режим │ буфериз ции └───────────────────────> 1=специ льный вложенный режим Бит 0 (mPM) определяет, с к ким микропроцессором р бот ет ПКП (0 - 8080/8085, 1 - 8086/8088). Бит 1 (AEOI), р вный 1, з д ет режим втом тического з вершения обр ботки прерыв ния, опис нный выше. Если этот бит р вен 0, действует обычное согл шение: процедур обр ботки пп р тного прерыв ния должн с м сбр сыв ть свой бит в ISR. Бит 2 (M/S) игнорируется, если бит 3 (BUF) = 0. При н личии одного контроллер и BUF = 1 уст н влив ется в 1. При н личии к ск д должен быть р вен 1 только для ведущего контроллер . Бит 4 (SFNM) уст н влив ет специ льный вложенный режим, применяемый при к ск диров нии для определения приоритетов з просов от р зных контроллеров (Special Fully Nested Mode). После иници лиз ции ПКП готов к р боте в з д нном режиме. Для изменения режимов р боты, з д в емых при иници лиз ции требуется переиници лизиров ть его з ново. В процессе р боты с ПКП Вы можете без переиници лиз ции: - м скиров ть и р зм скиров ть пп р тные прерыв ния; - изменять приоритеты уровней; - изд в ть ком нду з вершения обр ботки пп р тного пре- рыв ния; - уст н влив ть/сбр сыв ть режим специ льной м ски; - переводить контроллер в режим опрос и считыв ть состояние регистров ISR и IRR; для этого В м потребуется вывести в порты ПКП одно из трех слов р бочих прик зов OCW1 - OCW3. Форм т первого слов р бочих прик зов OCW1: A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 1 │ M7 │ M6 │ M5 │ M4 │ M3 │ M2 │ M1 │ M0 │ └────┴────┴────┴────┴────┴────┴────┴────┴────┘ Единичное зн чение одного из битов М0 - М7 озн ч ет, что прерыв ния соответствующего уровня (IR0 - IR7) м скируются и не будут обр б тыв ться контроллером. Второе слово р бочих прик зов (OCW2) предн зн чено для вывод ком нды з вершения обр ботки пп р тного прерыв ния (EOI), циклического сдвиг и явного изменения приоритетов уровней. Н зн чение битов OCW2 следующее: A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 0 │ R │ SL │ EOI│ 0 │ 0 │ L2 │ L1 │ L0 │ └────┴─┬──┴─┬──┴─┬──┴────┴────┴─┬──┴─┬──┴─┬──┘ │ │ │ │ │ └──> Эти 3 бит опреде- │ │ │ │ └───────> ляют номер уровня │ │ │ └────────────> прерв ния, если он │ │ │ требуется в ком нде. │ │ │ │ │ │ │ │ └───────────────────────────> 1-ком нд з вер- v v шения обр ботки ┌────┬────┐ пп р тного │ 0 │ 0 │ Используется вместе с EOI=1 прерыв ния ├────┼────┤ │ 0 │ 1 │ Специфициров нный EOI (сбр сыв ет бит, определя- ├────┼────┤ емый полями L0 - L2 в ISR) │ 1 │ 0 │ Циклический сдвиг приоритетов влево н одну ├────┼────┤ позицию │ 1 │ 1 │ Н зн чение низшего приоритет уровню, определяе- └────┴────┘ мому полями L0 - L2 К к уже говорилось, процедур обр ботки пп р тного прерыв ния должн перед своим з вершением очистить свой бит в ISR выводом ком нды з вершения обр ботки прерыв ния (End Of Interrupt, EOI). Существует дв в ри нт ком нды EOI: обычный и специфициров нный EOI. Обычный EOI очищ ет бит в ISR, соот- ветствующий прерыв нию с м ксим льным приоритетом. Специфи- циров нный EOI (R=0, SL=1, EOI=1, L0 - L2 р вно номеру уровня прерыв ния) очищ ет в ISR бит, соответствующий прерыв нию с номером, ук з нным в L0 - L2 нез висимо от его приоритет . Ком нды с битом R=1 позволяют изменить приоритеты уровней. Циклический сдвиг приоритетов сдвиг ет приоритеты влево н единицу, при этом, если после обычного р спределения приоритетов, изд ть ком нду циклического сдвиг , уровень 0 получит низший приоритет, уровень 1 - н ивысший, уровень 2 - следующий з ним и т.д. Ком нд явного н зн чения низшего приоритет одному из уровней изменяет приоритеты ост льных уровней циклически. Т ким обр зом, если Вы з д дите низший приоритет уровню 5, то уровень 6 получит н ивысший. Третье слово р бочих прик зов OCW3 позволяет уст новить и отменить режим специ льной м ски, перевести контроллер в режим опрос и прочит ть содержимое IRR и ISR. Н зн чение битов OCW3 приведено н рисунке A0 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐ │ 0 │ 0 │ESMM│ SMM│ 0 │ 1 │ P │ RR │ RIS│ └────┴────┴─┬──┴─┬──┴────┴────┴─┬──┴──┬─┴─┬──┘ ┌─────────┘ │ │ │ │ │ ┌──────────┘ └─┬───┼───┼──> 1-режим опрос v v v v v ┌───┬───┐ ┌───┬───┬───┐ │ 1 │ 0 │-Отменить режим │ 0 │ 1 │ 0 │ Чтение IRR ├───┼───┤ специ льной м ски ├───┼───┼───┤ │ 1 │ 1 │-Уст новить режим │ 0 │ 1 │ 1 │ Чтение ISR └───┴───┘ специ льной м ски └───┴───┴───┘ Единичное зн чение бит Р (бит опрос , Polling Bit) переводит контроллер в режим опрос . Если после этого счит ть д нные из порт с четным дресом, в регистр AL з грузится б йт следующего содерж ния: 7 6 5 4 3 2 1 0 ┌────┬────┬────┬────┬────┬────┬────┬────┐ │ I │ 0 │ 0 │ 0 │ 0 │ L2 │ L1 │ L0 │ └────┴────┴────┴────┴────┴────┴────┴────┘ Если I = 1, зн чит имеются з просы н прерыв ния и тогд L0 - L2 - это номер уровня с н ивысшим приоритетом, по которому имеется з прос н прерыв ние. Если P=0, Вы можете счит ть информ цию из ISR или IRR. Для этого необходимо изд ть ком нду чтения ISR или IRR (см. рисунок выше) и з тем счит ть зн чение из порт с нечетным дресом. Единичное зн чение бит ESMM позволяет в з висимости от зн чения бит SMM уст новить или отменить режим специ льной м ски. 4. Т ймер и генер ция звук 4.1. Прогр ммируемый т ймер 8253 Для з д ния временных интерв лов и формиров ния сигн лов с р зличными временными п р метр ми в IBM PC/XT применяется прогр ммируемый т ймер 8253 (отечественный н лог КР580ВН53), в AT - 8254. С точки зрения прогр ммист они идентичны. В сост в т ймер входят: буфер шины д нных, схем упр вления вводом-выводом и три нез висимых к н л , к ждый из которых содержит регистр режим , схему упр вления к н лом, буфер и 16-р зрядный счетчик. Прогр ммиров ние к н л осуществляется путем вывод упр вляющих слов в регистр режим к н лов и н ч льного зн чения в его счетчики. К ждый к н л имеет упр вляющий вход GATE и выход OUT и может р бот ть в одном из следующих шести режимов. Режим 0 (прерыв ние термин льного счет ). После з писи упр вляющего слов в регистр режим к н л н выходе ОUT уст н влив ется н пряжение низкого уровня; з грузк счетчик не изменяет это состояние. З тем н чин ется декремент счетчик (последов тельное вычит ние из него единицы). В момент, когд счетчик обнулится, н выходе OUT уст новлив ется н пряжение высокого уровня и сохр няется до з грузки счетчик новым зн чением. Счет возможен только при н личие сигн л высокого уровня н входе GATE. Низкий уровень этого сигн л или нисп д ющий фронт з прещ ют счет. Перез грузк счетчик во время приводит к следующему: з грузк мл дшего б йт ост н влив ет текущий счет, з грузк ст ршего б йт з пуск ет новый цикл счет . Миним льно допустимое зн чение счетчик р вно 2. Режим 1 (ждущий мультивибр тор). Н выходе OUT формируется отриц тельный импульс длительностью t=n*T, где n - число, з груженное в счетчик, T - период т ктовых импульсов. Низкий уровень н выходе OUT уст н влив ется со следующего т кт после под чи н вход GATE сигн л высокого уровня. З грузк в счетчик нового числ не влияет н длительность текущего импульс , учитыв ется при следующем з пуске. Перез пуск счетчик производится н р ст ющим фронтом вход GATE (без перез грузки счетчик ). Миним льное допустимое n=1. Режим 2 (генер тор ч стоты). К ждый р з после достижения счетчиком нуля н выходе OUT появляется отриц тельный импульс с длительностью один т кт. Перез грузк счетчик ск зыв ется только после перез пуск счетчик . При исчезновении сигн л высокого уровня н входе GATE прекр щ ется счет и н выход OUT под ется н пряжение высокого уровня. Перез пуск счетчик происходит при н личии н входе GATE сигн л высокого уровня. Режим 3 (генер тор ме ндр ). Ан логичен режиму 2, но положительный уровень выходного сигн л з ним ет первый полупериод, отриц тельный - второй полупериод. Точнее, если n (н ч льное зн чение счетчик ) четно, то длительность положительного и отриц тельного полупериодов р вн n*T/2; если же n нечетно - то (n+1)*T/2 и (n-1)*Т/2 соотвественно. Низкй уровень сигн л н входе GATE з прещ ет счет, н выходе OUT уст н влив ется сигн л высокого уровня. Высокий уровень GATE р зреш ет счет, н р ст ние его з пуск ет счетчик н ч льного состояния. Отметим, что n=3 в этом режиме недопустимо. Режим 4 (счетчик событий). По оконч нии отсчет числ , з груженного в счетчик, н выходе OUT формируется отриц тельный импульс длительностью один т кт. З пись в счетчик во время счет мл дшего б йт не влияет н текущий счет, з пись ст ршего б йт перез пуск ет счетчик. Низкий уровень вход GATE з прещ ет счет, высокий - р зреш ет. Миним льное допустимое зн чение счетчик р вно 1. Режим 5 (счетчик событий с втоз грузкой). Отличие от режим 4 состоит в том, что к ждое н р ст ние сигн л н входе GATE перез пуск ет счетчик. Перез грузк счетчик не влияет н текущий цикл, одн ко следующий цикл определяется вновь з несенным числом. Временные ди гр ммы режимов т ймер приведены н следующем рисунке: │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ CLK ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ __ ├┐n=5 ┌────────────────┐n=4 ┌────────────────── WR │└────┘ └────┘ │ ┌─────────────────────────┐ ┌──────── GATE ├───────┘ └───┘ ├─────┐ ┌─────────┐ ┌── OUT │ └───────────┘ └───────────────┘ │ n │ 5 4 3 2 1 0 4 3 2 2 1 0 └───────────────────────────────────────────────── Режим 0 │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ CLK ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ __ ├┐n=4 ┌──────┐n=5 ┌──────────────────────────── WR │└────┘ └────┘ │ ┌──────────┐ ┌─┐ ┌───────────── GATE ├─────────┘ └────┘ └────┘ ├───────────┐ ┌───────┐ ┌── OUT │ └───────┘ └───────────────┘ │ n │ 4 3 2 1 0 5 4 3 5 4 3 2 1 0 └───────────────────────────────────────────────── Режим 1 │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ CLK ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ __ ├┐n=4 ┌──┐n=3 ┌──────────────────────────────── WR │└────┘ └────┘ │ ┌────────────────────────┐ ┌───────── GATE ├──────┘ └────┘ ├─────────────┐ ┌────┐ ┌─────┐ ┌──────────┐ ┌── OUT │ └─┘ └─┘ └─┘ └─┘ │ n │ 4 3 2 1 0 3 2 1 0 3 2 1 0 3 2 1 0 └───────────────────────────────────────────────── Режим 2 │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ CLK ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ __ ├┐n=4 ┌────────────────┐n=5 ┌────────────────── WR │└────┘ └────┘ │ ┌────────────────────────────────┐ ┌─── GATE ├─────┘ └───┘ ├──────────┐ ┌─────┐ ┌─────┐ ┌──────── OUT │ └────┘ └────┘ └────┘ │ n │ 4 3 2 1 0 4 3 2 1 0 4 3 2 1 0 5 5 4 └───────────────────────────────────────────────── Режим 3 │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ CLK ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ __ ├┐n=4 ┌────────────────┐n=5 ┌───────────────────── WR │└────┘ └────┘ ├──────────────────────────────┐ ┌────────────── GATE │ └───┘ ├──────────────┐ ┌────────────────────────────┐ ┌─ OUT │ └─┘ └─┘ │ n │ 4 3 2 1 0 5 5 4 3 2 1 0 └───────────────────────────────────────────────── Режим 4 │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐ CLK ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└ __ ├┐n=4 ┌──────────────────────────────────────── WR │└────┘ │ ┌────────┐ ┌─┐ ┌───────────────── GATE ├─────────┘ └───┘ └───┘ ├─────────────────┐ ┌─────────────────┐ ┌────── OUT │ └─┘ └─┘ │ n │ 4 3 2 1 0 4 3 4 3 2 1 0 └───────────────────────────────────────────────── Режим 5 В IBM PC т ймер имеет б зовый дрес 40h и следующие прогр ммируемые регистры: Адрес Опер ция Н зн чение ──────────────────────────────────────────────────── 40h з пись З грузк счетчик к н л 0 чтение Чтение счетчик к н л 0 41h з пись З грузк счетчик к н л 1 чтение Чтение счетчик к н л 1 42h з пись З грузк счетчик к н л 2 чтение Чтение счетчик к н л 2 43h з пись З пись упр вляющего слов в регистр режим к н л ───────────────────────────────────────────────────── Упр вляющее слово имеет следующий форм т: 7 6 5 4 3 2 1 0 ┌─┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ Биты М ск └─┼──┴──┼──┴──┴┬─┴──┴─┬┘ ──── ─────── │ │ │ └> 0: 0 = двоичный код, & 1 │ │ │ 1 = двоично-десятичный код │ │ └───────> 1-3: режим р боты к н л : & 0Eh │ │ 000 - режим 0 │ │ 001 - режим 1 │ │ X10 - режим 2 │ │ X11 - режим 3 │ │ 100 - режим 4 │ │ 101 - режим 5 │ └──────────────> 4-5: вид з грузки счетчик : & 30h │ 00 - "з щелкив ние" │ (биты 0-3 безр зличны) │ 01 - только мл дший б йт │ 10 - только ст рший б йт │ 00 - мл дший б йт, з тем ст рший └────────────────────> 6-7: номер к н л : a & C0h 00 - к н л 0 01 - к н л 1 10 - к н л 2 11 - з прещенн я комбин ция Существует дв способ чтения текущего зн чения счетчик к н л . 1. Чтение с ост новом счетчик . Для обеспечения ст бильных пок з ний необходимо приост новить р боту к н л либо под чей сигн л низкого уровня н вход GATE (кроме режим 1), либо блокиров нием т ктовых импульсов. 2. Чтение "н лету". Для считыв ния счетчик без ост новки процесс счет используется посылк в порт 43h упр вляющего слов в режиме "з щелкив ния" (см. выше). Это упр вляющее слово фиксирует текущее зн чение счетчик и Вы можете счит ть его мл дший б йт, з тем ст рший б йт. 4.2. Т ймер н системной пл те IBM PC В IBM PC к н лы т ймер имеют следующее н зн чение. К н л Н зн чение Режим ──────────────────────────────────────────────────────────────── 0 системные ч сы (IRQ0) 3, счетчик=0 (65536) 1 з прос для к н л 0 ПДП (регенер ция п мяти) 2, счетчик=18 2 генер тор звук ── ──────────────────────────────────────────────────────────────── Т ктов я ч стот к ждого к н л р вн 1,19318 МГц, т. е. к ждый т кт имеет длительность 0,84 мсек. Вход GATE к н лов 0 и 1 всегд имеют высокий уровень, поэтому счет н этих к н л х р зрешен всегд . Вход GATE к н л 2 упр вляется битом 0 порт PB интерфейс 8255 (см. гл. 5), связ нного с портом 61h. При н ч льной з грузке BIOS иници лизирует к н л 0 для р боты в режиме 3 со счетчиком 0 (т. е. 65536 декрементов н цикл счет ). Поэтому ч стот системных ч сов р вн 1,19 МГц/65536 = 18.2 Гц и прерыв ние IRQ0, связ нное с вектором Int 8, происходит 18,2 р з в секунду, т. е. к ждые 55 мсек. Вы можете перепрогр ммиров ть к н л 0, но тогд - BIOS не сможет отслежив ть текущее время и д ту; - н рушится р бот с гибкими диск ми, т. к. включение и выключение их двиг телей отсчитыв ется по текущему времени. К н л 1 р бот ет в режиме 2 со счетчиком 18, поэтому регенер ция п мяти происходит к ждые 18 мсек. Перепрог- р ммиров ть его нельзя, т. к. это приведет к потере д нных в ОЗУ. Прогр ммиров ние к н л 2 опис но в следующем пункте. 4.3. Генер ция звук Н вход звукогенер тор поступ ет логическое "И" двух сигн лов: выход OUT 2-го к н л т ймер и содержимого бит 1 порт РВ интерфейс 8255. Поэтому простейший способ генер ции звук состоит в прогр ммиров нии к н л 2 т ймер т к, чтобы он выд в л прямоугольный импульс з д нной ч стоты, леж щий в звуковом ди п зоне (20 Гц - 20 КГц). Для этого следует использов ть режим т ймер 3 с подходящим н ч льным зн чением счетчик . Если з тем уст новить биты 0 и 1 порт РВ, то импульс н чнет поступ ть н вход звукогенер тор (бит 0 - это вход GATE к н л 2, р зреш ющий счет, бит 1 - р зрешение выд чи выход OUT н вход звукогенер тор ). Для выключения звук дост точно сбросить биты 0 - 1 в РВ. Преимущество этого метод состоит в том, что, з пустив генер цию звук , ЦП может выполнять другие действия. Зн чение счетчик 2-го к н л вычисляется по формуле n=1193181/f=1234DDh/f (1193181 - т ктов я ч стот т ймер в Гц, f - требуем я ч стот звук ). Пример: ; ; подпрогр мм генер ции звук ; Вход: АX= ч стот звук в Гц ; Sound proc near push ax ;сохр нить регистры push bx push dx mov bx,ax ;ч стот mov ax,34DDh mov dx,12h ;(dx,ax)=1193181 cmp dx,bx ;если bx < 18Гц, то выход jnb Done ;чтобы избеж ть переполнения div bx ;ax=(dx,ax)/bx mov bx,ax ;счетчик т ймер in al,61h ;порт РВ or al,3 ;уст новить биты 0-1 out 61h,al mov al,00001011b ;упр вляющее слово т ймер : ;к н л 2, режим 3, двоичное слово mov dx,43h out dx,al ;вывод в регистр режим dec dx mov al,bl out dx,al ;мл дший б йт счетчик mov al,bh out dx,al ;ст рший б йт счетчик Done: pop dx ;восст новить регистры pop bx pop ax ret Sound endp ; ;подпрогр мм выключения звук ; No_Sound proc near push ax in al,61h ;порт РВ and al,not 3 ;сброс битов 0-1 out 61h,al pop ax ret No_Sound endp Для генер ции музыки можно использов ть следующий лгоритм. Пусть octave - номер окт вы (1, 2, ...); note - номер ноты в окт ве (до=1, до#=2, ..., си=12). Тогд : f := 32.625; for i := 1 to oktave do f := 2*f; for i := 1 to note do f := 1.059463094*f Sound (round(f)); Второй способ генер ции звук состоит в том, чтобы генериров ть звуковые импульсы не выходом т ймер , уст новкой и сбросом бит 1 в регистре РВ. Для упр вления з держк ми можно использов ть прогр ммный цикл, н пример: ; ; Прогр мм генер ции звук ; Вход: N=количество импульсов ; FREQ=длительность импульс ; in al,61h ;порт РВ and al,not ;сброс бит 0 mov dx,N Repeat: or al,2 out 61h,al ;уст новить бит 1 mov cx,FREQ Wait_On: loop Wait_On and al,not 2 ;сбросить бит 1 out 61h,al mov cx,FREQ Wait_Off: loop Wait_Off dec dx jnz Repeat Прогр ммиров ние этого способ основ но н следующих формул х. Если Т - длительность звуч ния в сек, f - ч стот звук в Гц, t - т ктов я ч стот процессор ПЭВМ, то N=T*f; FREQ=t/(34*f). Конст нт 34 объясняется тем, что длительность к ждого из циклов Wait_on и Wait_off приблизительно р вн (17*cx) м шинных т ктов. Неудобство этого метод состоит в том, что ЦП полностью з нят генер цией звук - любое прерыв ние испортит временную ди гр мму звукового сигн л . Одн ко он обеспечив ет точную подстройку ч стоты и позволяет созд в ть несимметричные импульсы в рьиров нием з держек в цикл х Wait_on и Wait_off. 5. Прогр ммируемый периферийный интерфейс 5.1. Опис ние ППИ 8255 В сост в IBM PC/XT входит прогр ммируемый периферийный интерфейс (ППИ) 8255 (отечественный н лог КР580ИК55). ППИ содержит три 8-р зрядных порт (РА, РВ и РС) для орг низ ции обмен между ЦП и внешними устройств ми и регистр упр вления. Порты сгруппиров нны в две группы: групп А состоит из РА и ст ршей тетр ды РС, групп В - из РВ и мл дшей тетр ды РС. Групп А может р бот ть в трех режим х (0, 1, 2); групп В - в двух (0 и 1). Режимы определяются содержимым регистр упр вления, имеющим следуюший форм т: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬─┬──┐ │1 │ │ │ │ │ Биты: М ск : └──┴──┼──┴──┼──┴┬─┴─┼──┘ ───── ────── │ │ │ └───> 0-1: определение группы В a & 3 │ │ │ (з висит от режим ) │ │ └───────> 2: режим группы В (0 или 1) a & 4 │ └───────────> 3-4: определение группы А a & 18h │ (з висит от режим ) └─────────────────> 5-6: режим группы А: a & 60h 00=режим 0 01=режим 1 1X=режим 2 Режим 0. В этом режиме групп р зделяется н дв н бор (порт и тетр д РС). К ждый н бор может использов ться только для ввод . Биты определения группы в регистре упр вления определяют, к кие н боры предн зн чены для ввод , к кие - для вывод (бит, р вный нулю, з д ет н бор для вывод , единиц - для ввод ): ┌──────┬───────────────────────┐ │ Бит │ Н бор │ ├──────┼───────────────────────┤ │ 4 │ РА │ │ 3 │ Ст рш я тетр д РС │ │ 1 │ РВ │ │ 0 │ Мл дш я тетр д РС │ └──────┴───────────────────────┘ Режим 1. Порты РА и РВ используются для перед чи д нных, РС - для упр вляющих сигн лов. Д льнейшее опис ние сдел но н примере группы А. Бит 4 регистр упр вления з д ет использов ние порт РА (1 = порт ввод , 0 = порт вывод ). При вводе биты порт РС имеют следующее зн чение: Бит(ы) Н зн чение ──────────────────────────────────────────────────────────────── 4 (STBA) 0 = "стробиров ть" шину д нных в порт РА 5 (IBFA) 1 = РА содержит д нные, еще не выбр нные процессором 6-7 если бит 3 регистр упр вления р вен 0, то это линии упр вления периферийным устройством; если он р вен 1, то это линии ввод состояния устройств . ──────────────────────────────────────────────────────────────── При выводе: Бит(ы) Н зн чение ──────────────────────────────────────────────────────────────── 4-5 то же, что 6,7 при вводе 6 (OBFA) 1 = РА содержит д нные, еще не перед нные периферийному устройству 7 (ASKA) 0 = д нные из РА приняты устройством ──────────────────────────────────────────────────────────────── С группой А ссоциируется бит 3 порт РС, обозн ч емый INTRA. Этот сигн л применяется к к линия з прос прерыв ния системной шины. При вводе в порт РА н этом выходе формируется 1, когд новые д нные помещ ются в РА, и 0, когд процессор считыв ет д нные. При выводе INTRA = 1, когд содержимое РА принято устройством, и 0, когд ЦП з груж ет новые д нные. Р зрешением прерыв ний упр вляют бит 4 РС в режиме ввод и бит 6 в режиме вывод (1 = р зрешить прерыв ние). Для группы В ввод или вывод з д ется битом 1 регистр упр вления. При вводе биты 2 и 1 порт РС именуются STBB и IBFB (их н зн чение н логично бит м STBA и IBFA). При выводе биты 2 и 1 именуются OBFB и ASKB (см. выше). Бит 0 ст новится INTRB, р зрешениями прерыв ний упр вляет бит 2. Режим 2. Этот режим допустим только для группы А. В нем порт А ст новится двун пр вленным, ст рш я тетр д РС определяется т к: Бит(ы) Н зн чение ──────────────────────────────────────────────────────────────── 4 (STBA) 0 = "стробиров ть" шину д нных РА 5 (IBFA) 1 = порт РА з груж ются д нные с шины, 0 = процессор чит ет д нные 6 (ACKA) 1 = устройство готово чит ть д нные с шины 7 (OBFA) 1 = процессор з груж ет в порт РА д нные, 0 = д нные приняты устройством ──────────────────────────────────────────────────────────────── 5.2.Использов ние ППИ в IBM PC ППИ в IBM PC/XT з ним ет порты 60h - 63h. BIOS з носит в регистр упр вления (порт 63h) 99h, т. е. прогр ммирует группы А и В в режим 0, причем РА и РС является порт ми ввод , РС - портом вывод : Адрес Опер ция Н зн чение ──────────────────────────────────────────────────────────────── 60h чтение Ввод из порт РА 61h з пись Ввод в порт РВ чтение Чтение последнего вывод в порт РВ 62h чтение Вывод из порт РС 63h чтение/ Регистр упр вления ППИ з пись ──────────────────────────────────────────────────────────────── Содержимое порт РА: если бит 7 в РВ р вен 0, то чтение из этого порт озн ч ет ввод ск н-код последней н ж той кл виши (см. гл. 6); если же бит 7 в РВ уст новлен, то РА содержит положение DIP-переключ телей колодки SW1 системной пл ты: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ Биты: М ск : └──┼──┴──┼──┴──┼──┴┬─┴┬─┘ ───── ────── │ │ │ │ └─>0: 1=есть НГМД & 1 │ │ │ └────>1: 1=есть сопроцессор 8087 & 2 │ │ └────────>2-3:р змер ОЗУ системной пл ты: & 0Еh │ │ 00=16K, 04h=32K, 0eh=64K и более │ └──────────────>4-5:тип дисплея: & 30h │ 00= EGA/VGA │ 10h=CGA, 40 столбцов │ 20h=CGA, 80 столбцов │ 30h=монохромный └────────────────────>6-7:количество НГМД-1 a & C0h 00=1, 40h=2, 80h=3, C0h=4 Содержимое порт РВ: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ │ Бит: └┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ │ │ │ │ └─> 0: вход GATE 2-го к н л т ймер : │ │ │ │ │ │ │ OR 3 = вкл. звук │ │ │ │ │ │ │ AND 0FCh = выкл. звук │ │ │ │ │ │ └────> 1: д нные генер тор звук │ │ │ │ │ └───────> 2: определяет содержимое РС │ │ │ │ └──────────> 3: 0=включить мотор к ссетного │ │ │ │ м гнитофон │ │ │ └─────────────> 4: 0=р зрешить проверку п ритет ОЗУ │ │ └────────────────> 5: 0=р зрешить сигн лы об ошибк х │ │ в пл т х р сширения │ └───────────────────> 6: 0=з претить ч сы кл ви туры └──────────────────────> 7: з д ет содержимое РА (при вводе 1=подтверждение от кл ви туры) Содержимое порт РС з висит от бит 7 порт РВ. Если он уст новлен, то биты 0-3 содерж т мл дшую тетр ду колодки DIP-переключ телей SW2, если сброшен, то ст ршую: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ Биты: └┬─┴┬─┴┬─┴┬─┴──┴──┼──┴──┘ ───── │ │ │ │ └────> 0-3: DIP-ключи SW2 (см. ниже) │ │ │ └────────────> 4: ввод д нных с к сетного м гнитофон │ │ └───────────────> 5: выход OUT 2-го к н л т ймер │ └──────────────────> 6: 1=ошибк в пл т х р сширения └─────────────────────> 7: 1=ошибк п ритет ОЗУ Колодк SW2 содержит следующие ключи: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ Биты: └──┴──┴──┴──┴──┴──┴──┴──┘ ───── │ └─────> 0-3: общий р змер ОЗУ └─────────────────> 4-7: всегд р вны нулю 6. Кл ви тур 6.1. Кл ви тур IBM PC/XT Связь с кл ви турой осуществляется через порты ППИ 60h и 61h (см. 5.2). При н ж тии кл виши происходит пп р тное прерыв ние IRQ1, связ нное с вектором Int 9. Если Вы хотите обр б тыв ть это прерыв ние с ми, то прогр мм обр ботки прерыв ния должн иметь следующий вид: Int_09h: push ax push di push es in al,60h ;ск н. код кл виши из РА les di,buffer ; дрес буфер stosb ;сохр нить код в буфере pop es pop di in al,61h ;ввод порт РВ mov ah,al or al,80h ;уст новить бит "подтверждения ввод " out 61h,al xchg ah,al ;вывести ст рое зн чение РВ out 61h,al mov al,20h ;посл ть сигн л EOI out 20h,al ;контроллеру прерыв ний pop ax iret Перечень ск н-кодов всех кл виш приведен в приложении 1. Вы можете з претить прерыв ния от кл ви туры либо м скировкой бит 1 в регистре IMR контроллер прерыв ний, либо уст новкой бит 6 порт РВ ППИ: in al,21h ;чтение IMR or al,2 ;уст новк бит 1 out 21h,al ;з пись IMR или in al,61h ;чтение РВ or al,40h ;уст новк бит 6 out 61h,al ;з пись РВ Для р зрешения р боты кл ви туры необходимо выполнить обр тные действия. 6.2. Кл ви тур IBM PC AT Вз имодействие с кл ви турой в PC AT б зируется н микропроцессоре Intel 8042; бл год ря этому прогр ммист имеет гор здо большие возможности по упр влению кл ви турой, нежели в PC/XT. Упр вление кл ви турой производится обр щением к порту ввод -вывод 64h. Для совместимости со ст рыми ПЭВМ допустимо использов ние порт 60h. Если приведенные ниже примеры не р бот ют н В шей ПЭВМ, то используйте порт 60h. Порт 64h предн зн чен для вывод ком нд и д нных и для чтения состояния кл ви туры. Обш я схем посылки ком нд кл ви - турe т ков : cli ;з прет прерыв ний call wait_kbd ;ожид ние готовности кл ви туры mov al,cmd_code ;код ком нды out 64h,al ;вывод в порт sti ;р зрешение прерыв ний Для ком нд, сопровожд ющихся б йтом д нных, эт схем приним ет вид: cli call wait_kbd mov al,cmd_code ;код ком нды out 64h,al call wait_kbd mov al,data_value ;б йт д нных out 64h,al sti Проверк ожид ния готовности кл ви туры может иметь вид: wait_kbd: mov cx,2500h ;з держк порядк 10 мсек test_kbd: in al,64h ;чит ем состояние кл ви туры test al,2 ;проверк бит готовности loopnz test_kbd ret Автор м известны следующие ком нды контроллер кл ви туры (этот список, вероятно, не полон и может содерж ть ошибки, т. к. собр н из р зличных источников): Код ком нды Опис ние ──────────────────────────────────────────────────────────────── 0FFh Сброс кл ви туры и з пуск внутреннего тест . 0FEh Повторить последнюю перед чу. 0FDh Вызов прерыв ния IRQ1. 0F6h Привести кл ви туру в исходное состояние и р зрешить ск ниров ние. 0F5h Привести кл ви туру в исходное состояние и з претить ск ниров ние. 0F4h Сбросить буфер кл ви туры и н ч ть ск ниров ние. 0F3h З д ть з держку и скорость ввод символов. Первон ч льно кл ви тур н чин ет повторять н ж тую кл вишу через 0,5 сек со скоростью 10 повторов в секунду. Вы можете изменить эти п р метры, посл в следующий б йт д нных: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │0 │ │ │ Биты: └──┴──┼──┴──┴──┴┬─┴──┴──┘ ───── │ └────────> 0-4:количеств повторов в секунду └──────────────────> 5-6:н ч льн я з держк в мсек: 00=250, 01=500, 10=750, 11=1000 Количество повторов з д ется следующей т блицей: ┌──────┬────────┬──────┬────────┬──────┬────────┐ │Конст.│Скорость│Конст.│Скорость│Конст.│Скорость│ ├──────┼────────┼──────┼────────┼──────┼────────┤ │ 00h │ 30.0 │ 0Bh │ 10.9 │ 16h │ 4.3 │ │ 01h │ 26.7 │ 0Ch │ 10.0 │ 17h │ 4.0 │ │ 02h │ 24.0 │ 0Dh │ 9.2 │ 18h │ 3.7 │ │ 03h │ 21.8 │ 0Eh │ 8.6 │ 19h │ 3.3 │ │ 04h │ 20.0 │ 0Fh │ 8.0 │ 1Ah │ 3.0 │ │ 05h │ 18.5 │ 10h │ 7.5 │ 1Bh │ 2.7 │ │ 06h │ 17.1 │ 11h │ 6.7 │ 1Ch │ 2.5 │ │ 07h │ 16.0 │ 12h │ 6.0 │ 1Dh │ 2.3 │ │ 08h │ 15.0 │ 13h │ 5.5 │ 1Eh │ 2.1 │ │ 09h │ 13.3 │ 14h │ 5.0 │ 1Fh │ 2.0 │ │ 0Ah │ 12.0 │ 15h │ 4.6 │ │ │ └──────┴────────┴──────┴────────┴──────┴────────┘ 0EEh Эхо (для ди гностики). Просто возвр щ ет 0ЕЕh. 0EDh Упр вление светодиод ми кл ви туры. Для включения или выключения светодиодов пошлите т кой б йт д нных: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │X X X X X │ │ │ │ Биты: └──┴──┴──┴──┴──┴┬─┴┬─┴┬─┘ ───── │ │ └──> 0: 1 = включить ScrollLock │ └─────> 1: 1 = включить NumLock └────────> 2: 1 = включить CapsLock 0DFh Р зрешить 20-битовую дрес цию. 0DDh З претить 20-битовую дрес цию. 0D1h З пись в порт вывод 8042. 0D0h Чтение порт вывод 8042. 0C0h Чтение порт ввод 8042. 0AEh Р зрешение кл ви туры. 0ADh З прещение кл ви туры. 0ACh Чтение ОЗУ контроллер . 0ABh Тест синхрониз ции и д нных. 0AAh Внутренний тест кл ви туры. ──────────────────────────────────────────────────────────────── 7. Дисплеи 7.1. Общее опис ние Прогр ммиров ние дисплея ПЭВМ IBM PC определяется типом дисплейного д птер и типом видеомонитор , подключенного к этому д птеру. В этой гл ве опис ны четыре н иболее р спростр ненных видео д птер IBM PC, именно: - монохромный гр фический д птер MGA; - цветной гр фический д птер CGA; - р сширенный гр фический д птер EGA; - гр фический видеом ссив VGA. Центр льным устройством в упр влении видеомонитором является контроллер электронно-лучевой трубки (ЭЛТ). В IBM PC применяются прогр ммируемые контроллеры фирмы Motorola, позволяющие з д ть все основные п р метры р звертки изобр жения н экр не. Для поним ния д льнейшего м тери л необходимо ввести ряд ч сто используемых понятий. Режим р боты видеомонитор х р ктеризуется следующими понятиями: - вертик льным р зрешением (количество строк р стр н экр не); - горизонт льным р зрешением (количество символов или точек в строке); - предст влением д нных в видеоп мяти; - трибут ми вывод , з д ющими цвет, мерц ние и т. п. Горизонт льное и вертик льное р зрешение определяются последов тельностью согл сов нных во времени сигн лов гр фического д птер , упр вляющих движением луч ЭЛТ. Луч ЭЛТ движется с постоянной скоростью вдоль строки р стр и вниз с одной строки р стр н следующую, обновляя (р звор чив я) изобр жение н экр не. Для перевод луч из кр йней пр вой точки строки в кр йнюю левую точку следующей строки (обр тный горизинт льный ход луч ) видео д птер генерирует сигн л горизонт льной синхрониз ции; для перемещения луч из кр йней пр вой позиции нижнeй строки экр н в кр йнюю левую позицию первой строки (вертик льный обр тный ход луч ) - сигн л вертик льной сихрониз ции. Видео д птеры всегд прогр мируются т к, чтобы вывод видеобуфер н экр не проходил быстрее, чем р звертк одного к др . Это д ет возможность вывести н экр н бордюр (overscan), ок ймляющий изобр жение и позволяющий центриров ть его н экр не. Длительность сигн лов р звертки принято з д в ть в т к н зыв емых символьных т кт х (character clock). Символьный т кт - это отрезок времени, необходимый для вывод н экр н 8 точек в гр фическом режиме и 8 или 9 точек в лф витно-цифровых режим х. П р метры р звертки з носятся в определенные регистры контроллер ЭЛТ; н зн чение этих регистров р злично в контроллер х MGA/CGA и EGA/VGA. 7.2. Контроллеры ЭЛТ Ад птеры MGA и CGA содерж т контроллер ЭЛТ Motorola 6845, имеющий следующие прогр ммируемые регистры: Регистр Н именов ние Опис ние ──────────────────────────────────────────────────────────────── R0 Общ я длительность Время вывод строки р стр в строки (horizontal total) символьных т кт х. R1 Ширин к др Количество символов в строке. (horizontal displayed) R2 Позиция горизонт льной Н ч ло горизонт льной синхрониз ции (horizontal синхрониз ции в символьных sync position) т кт х. R3 Ширин синхрониз ции Длительность синхрониз ции (sync width) (мл дш я тетр д - вертик льной, ст рш я - горизонт льной). R4 Р змер к др Общее количество строк (vertical total) р стр в к дре. R5 Вертик льное выр внив ние Попр вк для ч стоты 50 или (vertical adjust) 60 Гц. R6 Высот к др Количество строк (vertical displayed) изобр жения в к дре. R7 Позиция вертик льной Н ч ло вертик льной синхрониз ции (vertical синхрониз ции в символьных sync position) т кт х. R8 Биты 4-5: режим р сслоения (interlace mode); биты 6-7: сдвиг (skew) R9 М кс. число строк р стр Количество строк р стр н строку символов. R10 Н ч ло курсор Н ч льн я строк курсор . R11 Конец курсор Конечн я строк курсор . R12\Н ч льный дрес Ст рший б йт R13/видеоп мяти Мл дший б йт R14\Позиция Ст рший б йт R15/курсор Мл дший б йт R16\Позиция Ст рший б йт R17/светового пер Мл дший б йт ──────────────────────────────────────────────────────────────── Aд птеры EGA и VGA имеют следующие прогр ммируемые регистры, эмулирующие контроллер ЭЛТ: Регистр Н именов ние Опис ние ──────────────────────────────────────────────────────────────── R0 Общ я длительность Время вывод строки р стр в строки (horizontal total) символьных т кт х. R1 Ширин к др (horizontal Количество символов в строке display enable end) (см. R7). R2 Н ч ло горизонт льного Символьн я позиция, в которой г шения (start horizontal н чин ется горизонт льное blank) г шение луч . R3 Конец горизонт льного Символьн я позиция, в которой г шения (end horizontal з к нчив ется горизонт льное blank) г шение луч (в бит х 0-4); р зрешение сдвиг (биты 5-6). R4 Н ч ло обр тного ход луч Символьн я позиция н ч л по горизонт ли (start горизонт льной синхрониз ции. horizontal retrace) R5 Конец обр тного ход луч Символьн я позиция оконч ния по горизонт ли (end горизонт льной синхрониз ции. horizontal retrace) 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ Биты: └┬─┴──┼──┴──┴──┴┬─┴──┴──┘ ───── │ │ └──────> 0-4: ширин обр тного ход луч │ │ по горизонт ли │ └────────────────> 5-6: з держк обр тного ход в │ символьных т кт х └─────────────────────> 7: 1=н чин ть п нор миров ние с четного дрес , 0=с нечетного R6 Р змер к др Общее количество строк (vertical total) р стр в к дре (см. R7). R7 Регистр переполнения Содержит ст ршие биты других (overflow) регистров: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ │ Бит: └┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ │ │ │ │ └─> 0: 8-й бит р змер к др (R6) │ │ │ │ │ │ └────> 1: 8-й бит количеств строк │ │ │ │ │ │ отобр жения в к дре (R18) │ │ │ │ │ └───────> 2: 8-й бит н ч л вертик льной │ │ │ │ │ синхрониз ции (R16) │ │ │ │ └──────────> 3: 8-й бит н ч л вертик льного │ │ │ │ г шения луч (R21) │ │ │ └─────────────> 4: 8-й бит ср внения строк (R24) │ │ └────────────────> 5: EGA: 8-й бит R10, VGA: 9-й бит R6 │ └───────────────────> 6: 9-й бит R18 (только VGA) └──────────────────────> 7: 9-й бит R16 (только VGA) R8 Н ч ло р стр (preset Перв я строк р стр после row scan) вертик льной синхрониз ции. R9 М кс. число строк р стр Количество строк р стр н строку символов (в бит х 0-4); для VGA: бит 5=9-й бит R21. R10 Н ч ло курсор Н ч льн я строк курсор . R11 Конец курсор Конечн я строк курсор (биты 0-4); сдвиг курсор (биты 5-6). R12\Н ч льный дрес Ст рший б йт R13/видеоп мяти Мл дший б йт R14\Позиция Ст рший б йт R15/курсор Мл дший б йт При чтении: R16\Позиция Ст рший б йт R17/светового пер Мл дший б йт При з писи: R16 Н ч ло обр тного ход луч Символьн я позиция н ч л по вертик ли (start вертик льной синхрониз ции. vertical retrace) R17 Конец обр тного ход луч Символьн я позиция оконч ния по вертик ли (end вертик льной синхрониз ции. vertical retrace) 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │0 │ │ │ │ Биты: └┬─┴──┴┬─┴┬─┴──┴──┼──┴──┘ ───── │ │ │ └────> 0-3: ширин обр тного ход луч │ │ │ по вертик ли │ │ └────────────> 4: 0=очистить прерыв ние вертик льной │ │ синхрониз ции │ └───────────────> 5: 0=р зрешить прерыв ние вертик ль- │ ной синхрониз ции (IRQ2) └─────────────────────> 7: VGA: з прет з писи в R0 - R7 R18 Количество строк отобр - Количество строк р стр , жения в к дре (vertical з нятых собственно изобр - displayed end) жением R19 Вертик льное смещение Количество слов д нных в (vertical displayed логической строке видеоп мяти. adjustment) R20 Позиция подчеркив ния Номер строки р стр (биты 0-5). R21 Н ч ло вертик льного Символьн я позиция, в которой г шения (start vertical н чин ется вертик льное blank) г шение луч . R22 Конец вертик льного Символьн я позиция, в которой г шения (end vertical з к нчив ется вертик льное blank) г шение луч . R23 Упр вление режим ми: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ │ Бит: └┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ │ │ │ │ └─> 0: 0=режим совместимости с CGA │ │ │ │ │ │ │ для дрес ции гр фики │ │ │ │ │ │ └────> 1: выбор счетчик ск ниров ния │ │ │ │ │ │ строк │ │ │ │ │ └───────> 2: горизонт льн я синхрониз ция: │ │ │ │ │ 1=двойн я, 0=обычн я │ │ │ │ └──────────> 3: длительность синхрониз ции при │ │ │ │ регенер ции слов: 1=половинн я, │ │ │ │ 0=обычн я │ │ │ └─────────────> 4: 1=уст новить высокоимпед нсный │ │ │ выход, 0=р зрешить упр вление │ │ │ выходом │ │ └────────────────> 5: режим р сслоения дресов для │ │ совместимости с CGA: 0=для 64К │ │ ОЗУ, 1=для ОЗУ более 64К │ └───────────────────> 6: режим дрес ции: 1=б йтов я, │ 0=словн я └──────────────────────> 7: 0= пп р тный сброс, 1=обычн я р бот R24 Ср внение строк Строк р стр , используем я в (line compare) опер циях р сщепления экр н . ──────────────────────────────────────────────────────────────── В з ключение этого р здел подчеркнем, что с мостоятельное прогр ммиров ние контроллер ЭЛТ чрев то физическим р зрушением видеомонитор , поэтому не следует прибег ть к нему, если Вы не вполне поним ете принципы р счет п р метров р звертки. Все необходимые действия по иници лиз ции дисплея обычно выполняются BIOS, поэтому необходимость в непосредственном прогр ммиров нии контроллер ЭЛТ возник ет кр йне редко. 7.3. Атрибуты символов В текстовых режим х видеоп мять состоит из п р (код символ , трибут); код символ определяет символ ASCII, выводимый в соответствующей позиции экр н , трибут - цвет этого символ . Соответствие цветов трибут м з висит от тип видео д птер . Б йт трибутов для CGA имеет следующую структуру: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │Bl│r g b │I │R G B │ Биты: └┬─┴──┴┬─┴──┴┬─┴──┴┬─┴──┘ ───── │ │ │ └────> 0-2: цвет символ │ │ └──────────> 3: 1=яркий цвет символ │ └────────────────> 4-6: цвет фон └──────────────────────> 7: 1=мерц ние символ Т ким обр зом, цвет фон может в рьиров ться от 0 до 7, цвет символ с учетом яркости - от 0 до 0Fh. Зн чение трибут з д ется формулой: 16 * цвет фон + цвет символ (плюс 128 для мерц ния символ ) Цвет з д ются следующим обр зом: ┌─────────────────────┬───────────────────┐ │Номер Цвет │Номер Цвет │ ├─────────────────────┼───────────────────┤ │ 0 Черный │ 8 Серый │ │ 1 Синий │ 9 Ярко-синий │ │ 2 Зеленый │ 0Ah Ярко-зеленый│ │ 3 Бирюзовый │ 0Bh Голубой │ │ 4 Кр сный │ 0Ch Алый │ │ 5 Сиреневый │ 0Dh Розовый │ │ 6 Коричневый │ 0Eh Желтый │ │ 7 Светло-серый │ 0Fh Белый │ └─────────────────────┴───────────────────┘ Ад птеры EGA и VGA имеют т кую же структуру б йт трибутов, но позволяют переопределять цвет , перечисленные в т блице, перепрогр ммиров нием регистров п литр. Поэтому б йт трибутов символ определяет одну из 64 (EGA) или 256 (VGA) возможных комбин ций цветов. Монохромные дисплеи допуск ют любые зн чения б йт три- бутов, но ре льно отр б тыв ют только следующие его зн чения: 01h Подчеркнутый символ 07h Обычный вывод (светлый символ н темном фоне) 09h Яркий подчеркнутый символ 0Fh Ярко-светлый символ н темном фоне 70h Нег тив (темный символ н светлом фоне) 81h Мерц ющий подчеркнутый символ 87h Мерц ющий светлый символ н темном фоне 89h Мерц ющий яркий подчеркнутый символ 8Fh Мерц ющий ярко-светлый символ н темном фоне Следует учитыв ть, что ст рший бит б йт трибутов может озн ч ть либо мерц ние символ , либо повышенную яркость фон (см. 7.4 - 7.6). 7.4. Монохромный гр фический д птер MGA Монохромный гр фический д птер (MGA или Hercules) - это гр фический видеоконтроллер высокого р зрешения, совмещенный с пл той печ т ющего устройств . Для него з резервиров ны порты ввод -вывод 3B0h - 3BFh, имеющие следующее н зн чение. Порт Опер ция Опис ние ──────────────────────────────────────────────────────────────── 3B4h З пись Регистр индекс ЭЛТ. Используется для выбор регистр ЭЛТ. Для з писи регистр ЭЛТ Rn нужно выполнить ком нды: out 3B4h,n и out 3B5h,д нные. 3B5h З пись/ Регистр д нных ЭЛТ. Позволяет з писыв ть все чтение регистры ЭЛТ и чит ть регистры R12 - R17. 3B8h З пись Регистр режимов дисплея: 7 6 5 4 3 2 1 0 ┌──┬─┬──┬─┬──┬─┬──┬─┐ │ │X│ │X│ │X│ │X│ Бит: └┬─┴─┴┬─┴─┴┬─┴─┴┬─┴─┘ ──── │ │ │ └────> 1: 0=текстовый режим, 1=гр фический режим │ │ └─────────> 3: 0=очистить экр н, 1= ктивизиров ть │ │ экр н │ └──────────────> 5: 1=бит 7 трибутов - мерц ние │ 0=бит 7 трибутов - яркость фон └───────────────────> 7: номер текущей видеостр ницы 3B9h З пись/ Вывод любого б йт включ ет триггер светового Чтение пер . 3BAh Чтение Регистр состояния дисплея: 7 6 5 4 3 2 1 0 ┌──┬─┬─┬─┬──┬─┬─┬──┐ │ │X│X│X│ │X│X│ │ Бит: └┬─┴─┴─┴─┴┬─┴─┴─┴┬─┘ ──── │ │ └───> 0: 0=вывод изобр жения, 1=горизонт льн я │ │ синхрониз ция │ └──────────> 3: 0=экр н включен, 1=выключен (позволяет │ проверить поступление видеосигн л н │ н экр н) └───────────────────> 7: 0=вертик льн я синхрониз ция, 1=дисплей ктивен 3BBh З пись/ Вывод любого б йт выключ ет триггер светового Чтение пер . 3BCh-3BEh См. опис ние портов п р ллельного принтер (п. 10). 3BFh З пись Регистр конфигур ции. Сюд з носится нов я конфигур ция дисплея: 0 (DIAG) - р бот только в текстовом режиме; 1 (HALF) - допустим р бот только с гр фической стр ницей 0; 3 (FULL) - доступны обе гр фические стр ницы. ──────────────────────────────────────────────────────────────── Видеоп мять MGA р спол г ется в дес х ОЗУ B0000h - BFFFFh. В текстовом режиме (25 строк по 80 символов в строке) он з ним ет 4К с B0000h по B0FFFh. При этом дрес код символ р вен B000h : 160*L+2*C, дрес трибут н единицу больше. Здесь L - номер строки (0 - 24), C - номер столбц (0 - 79). Гр фический режим имеет р зрешение 720 точек по горизонт ли н 348 точек по вертик ли, поэтому один гр фический экр н требует 32К видеоп мяти. MGA имеет две гр фические стр ницы: стр ниц 0 р змещ ется в дрес х B0000h - B7FFFh, стр ниц 1 - в дрес х B8000h - BFFFFh. Смещение от н ч л стр ницы до б йт , содерж щего точку с координ т ми (X,Y), р вно 2000h * (Y % 4) + 90 * int(Y/4) + int(X/8), номер соответствующего бит в этом б йте р вен 7 - (X % 8). Здесь X - горизонт льн я позиция точки (0 - 719), Y - ее верти- к льн я позиция (0 - 347). В к честве пример приведем прогр мму иници лиз ции MGA в текстовом или гр фическом режиме. ; Т блицы зн чений регистров ЭЛТ для двух режимов Graph_Tbl db 35h,2Dh,2Eh,07h,5Bh,02h,57h,57h,02h,03h,00h,00h Text_Tbl db 61h,50h,52h,0Fh,19h,06h,19h,19h,02h,0Dh,0Bh,0Ch ; Уст новк гр фического режим : Gr_Mode: mov al,2 lea si,Graph_Tbl mov bx,0 mov cx,4000h call Set_Mode . . . ; Уст новк текстового режим : Txt_Mode: mov al,20h lea si,Text_Tbl mov bx,0720h mov cx,2000h call Set_Mode . . . ; Подпрогр мм иници лиз ции MGA. ; Вход: AL - режим ; SI - дрес т блицы регистров ЭЛТ ; CX - р змер экр н в слов х ; BX - зн чение для очистки экр н Set_mode proc near push ax ; сохр нить регистры push bx push cx mov dx,3B8h ; регистр режимов out dx,al ; изменить режим д птер , отключив экр н mov ax,cs mov ds,ax ; DS:SI = дрес т блицы mov dx,3B4h ; регистр индекс mov cx,12 ; 12 регистров ЭЛТ xor ah,ah cld Set_CRT: mov al,ah out dx,al ; номер регистр ЭЛТ inc dx lodsb out dx,al ; содержимое регистр ЭЛТ dec dx loop Set_CRT pop cx mov ax,0B000h mov es,ax pop ax xor di,di ; ES:DI => видеоп мять rep stosw ; очистк экр н mov dx,3B8h ; регистр режимов pop ax add al,8 out dx,al ; ктивизиров ть экр н ret Set_Mode endp 7.5. Цветной гр фический д птер CGA Цветной гр фический д птер (CGA - Color Graphics Adapter) - это гр фический видеоконтроллер среднего р зрешения. Для него з резервиров ны порты ввод -вывод 3D0h - 3DFh, имеющие следующее н зн чение. Порт Опер ция Опис ние ──────────────────────────────────────────────────────────────── 3D4h З пись Регистр индекс ЭЛТ. Используется для выбор регистр ЭЛТ. Для з писи регистр ЭЛТ Rn нужно выполнить ком нды: out 3D4h,n и out 3D5h,д нные. 3D5h З пись/ Регистр д нных ЭЛТ. Позволяет з писыв ть все чтение регистры ЭЛТ и чит ть регистры R12 - R17. 3D8h З пись Регистр режимов дисплея: 7 6 5 4 3 2 1 0 ┌─┬─┬──┬──┬──┬──┬──┬──┐ │X│X│ │ │ │ │ │ │ Бит: └─┴─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ │ │ └──>0: кол-во столбцов в текстовых режим х: │ │ │ │ │ 0=40 столбцов, 1=80 столбцов │ │ │ │ └─────>1: 0=текстовый режим, 1=гр фический режим │ │ │ └────────>2: 1=з прет цвет н композитном дисплее │ │ └───────────>3: 0=очистить экр н, 1= ктивизиров ть │ │ экр н │ └──────────────>4: р зрешение по горизонт ли: │ 0=320 точек, 1=640 точек └─────────────────>5: 1=бит 7 трибутов - мерц ние 0=бит 7 трибутов - яркость фон 3D9h З пись Регистр выбор цветов: 7 6 5 4 3 2 1 0 ┌─┬─┬──┬──┬──┬──┬──┬──┐ │X│X│ │ │I R G B │ Биты: └─┴─┴┬─┴┬─┴──┴──┼──┴──┘ ───── │ │ └──────>0-3: цвет (см. 7.3): для текст - цвет │ │ р мки, для гр фики - цвет фон │ └──────────────>4: яркость: для текст - яркость фон , │ для гр фики - яркость пикселей └─────────────────>5: номер гр фической п литры (0 или 1) Примеч ние: Выбор п литры з д ет н бор основных цветов в гр фическом режиме. П литр 0 - зеленый/кр сный/коричневый, п литр 1 - бирюзовый/сиреневый/светло-серый (т. е. отлич ется доб влением синего цвет ). 3DAh Чтение Регистр состояния дисплея: 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬──┬──┬──┬──┐ │X│X│X│X│ │ │ │ │ Бит: └─┴─┴─┴─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ └───>0: 0=вывод изобр жения, 1=горизонт льн я │ │ │ или вертик льн я синхрониз ция │ │ └──────>1: 1=триггер светового пер сброшен │ └─────────>2: 1=з щелк светового пер открыт └────────────>3: 0=экр н включен, 1=выключен (позволяет проверить поступление видеосигн л н н экр н - если этот бит уст новлен, вывод н экр н не вызыв ет "хлопьев") 3DBh З пись/ Вывод любого б йт выключ ет триггер светового Чтение пер . 3DCh З пись/ Вывод любого б йт включ ет триггер светового Чтение пер . ──────────────────────────────────────────────────────────────── Видеоп мять CGA р спол г ется в дес х ОЗУ B8000h - BFFFFh. CGA имеет дв тип текстовых режимов: 25 строк по 40 символов в строке и по 80 символов в строке. В режим х 25 х 40 одн стр ниц з ним ет 800h б йтов, поэтому видеоп мять состоит из 8 стр ниц; в режим х 25 х 80 стр ниц з ним ет 1000h б йтов и видеоп мять состоит из 4 стр ниц. Адрес код символ в текстовых режим х р вен B800h : n*P+m*L+2*C, дрес трибут н единицу больше. Здесь L - номер строки (0 - 24), C - номер столбц (0 - 79 или 0 - 39), m = 2 * количество столбцов режим , n = 800h при m=80 и 1000h при m=160. CGA имеет дв тип гр фических режимов: цветной режим, имеющий р зрешение 320 точек по горизонт ли н 200 точек по вертик ли, и черно-белый режим с р зрешением 640 точек н 200 точек. В режиме 320 х 200 к ждый пиксель з д ется двумя бит ми, кодирующими его цвет; в режиме 640 х 200 цвет пикселя з д ется одним битом (белый/черный). В гр фических режим х один экр н требует 16К видеоп мяти, поэтому имеется одн стр ниц видеоп мяти, котор я р змещ ется в дрес х B8000h - BFFFFh. Эт стр ниц р сслоен н две обл сти: обл сть с дрес B8000h содержит пиксели, имеющие четные номер строк; обл сть с дрес BA000h содержит пиксели из нечетных строк. Поэтому дрес б йт , содерж щего точку с координ т ми (X,Y), р вен в цветном режиме B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/4), номер соответствующих битов в этом б йте р вны 7 - 2 * (X % 4) и 6 - 2 * (X % 4). Здесь X - горизонт льн я позиция точки (0 - 319), Y - ее вертик льн я позиция (0 - 199). Адрес б йт , содерж щего точку с координ т ми (X,Y), р вен в черно-белом режиме B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/8), номер соответствующего бит в этом б йте р вен 7 - (X % 8). Здесь X - горизонт льн я позиция точки (0 - 639), Y - ее вертик льн я позиция (0 - 199). 7.6. Р сширенный гр фический д птер EGA Р сширенный гр фический д птер (EGA - Enhanced Graphics Adapter) - это гр фический видеоконтроллер высокого р зрешения, прогр ммно совместимый с д птер ми CGA и MGA, но имеющий гор здо большие возможности. В IBM PC для EGA з резервиров ны следующие порты ввод -вывод : EGA #1 - порты 3C0h - 3DFh; EGA #2 - порты 2C0h - 2DFh. EGA может генериров ть прерыв ние IRQ2 (Int 0Ah) в н ч ле вертик льной синхрониз ции. Одн ко, BIOS не использует эту возможность; мы т кже не описыв ем ее, т. к. вектор Int 0Ah используется в PC AT к к к ск д второго контроллер прерыв ний (см. п. 3). Все регистры EGA можно р збить н четыре группы: 3C0h Контроллер трибутов (ATC) 3C2h Многоцелевой регистр 3C4h-3C5h Блок синхрониз ции (sequencer) 3CAh-3CFh Гр фический контроллер (GDC) 3D4h-3DCh или Блок упр вления дисплеем 3B4h-3BCh ( дрес портов з висят от видеорежим ) Контроллер трибутов (ATC) имеет 20 регистров, упр вляющих цвет ми вывод : Регистр Н именов ние Опис ние ──────────────────────────────────────────────────────────────── R0-R15 Регистры п литры Определяют цвет соответствующих (только для з писи) трибутов: 7 6 5 4 3 2 1 0 ┌─┬─┬──┬──┬──┬──┬──┬──┐ │X│X│r │g │b │R │G │B │ Бит: └─┴─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ │ │ └──> 0: Синий 2/3 яркости │ │ │ │ └─────> 1: Зеленый 2/3 яркости │ │ │ └────────> 2: Кр сный 2/3 яркости │ │ └───────────> 3: Синий 1/3 яркости │ │ (подчеркив ние для MGA) │ └──────────────> 4: Зеленый 1/3 яркости │ (яркость для MGA) └─────────────────> 5: Кр сный 1/3 яркости R16 Упр вление режим ми Имеет следующую структуру: 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬──┬──┬──┬──┐ │X│X│X│X│ │ │ │ │ Бит: └─┴─┴─┴─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ └──> 0: Режим: 0=текстовый, 1=гр фический │ │ └─────> 1: 1= трибуты MGA, 0= трибуты CGA │ └────────> 2: З д ет 9-ю точку для псевдогр фики: │ 1=9-я точк совп д ет с 8-й точкой │ 0=вывод 9-й точки цветом фон └───────────> 3: Бит 7 б йт трибутов з д ет: 1=мерц ние символов, 0=яркость фон R17 Цвет р мки Устроен т к же, к к регистры п литры. R18 Упр вление цветовыми Имеет следующую структуру: плоскостями 7 6 5 4 3 2 1 0 ┌─┬─┬──┬──┬──┬──┬──┬──┐ │X│X│ │ │ Бит: └─┴─┴──┼──┴──┴──┼──┴──┘ ──── │ └───────>0-3: 1=р зрешить цветовую плоскость │ Ci, i = 0 - 3 └────────────────>4-5: мультиплексиров ние видеосигн лов: 00=R&B, 01=b&G, 10=r&g, 11=не используется R19 Горизонт льн я прокрутк З д ет сдвиг экр н влево в точк х (0 - 15). ──────────────────────────────────────────────────────────────── Примеч ния. 1. Регистры п литры з д ют соответствие между зн чением трибут и его цветом. Н пример, з сылк зн чения 02h в регистр ATC определит его к к зеленый цвет, 10h - к к бледно-зеленый, 12h - к к ярко-зеленый. 2. Для того, чтобы цвет трибутов совп д ли с цвет ми CGA, регистры п литры должны иметь следующие зн чения: ┌────────────────────┬────────────────────┐ │ Регистр Зн чение │ Регистр Зн чение │ ├────────────────────┼────────────────────┤ │ 00h 00h │ 08h 38h │ │ 01h 01h │ 09h 39h │ │ 02h 02h │ 0Ah 3Ah │ │ 03h 03h │ 0Bh 3Bh │ │ 04h 04h │ 0Ch 3Ch │ │ 05h 05h │ 0Dh 3Dh │ │ 06h 14h │ 0Eh 3Eh │ │ 07h 07h │ 0Fh 3Fh │ └────────────────────┴────────────────────┘ Блок синхрониз ции обеспечив ет синхрониз цию вывод символов с р ботой зн когенер тор . Он имеет следующие прогр ммируемые регистры. Регистр Н именов ние Опис ние ──────────────────────────────────────────────────────────────── R0 Перез пуск блок Уст новк и сброс бит 0 вызы- синхрониз ции в ет синхронный перез пуск блок , уст новк и сброс бит 1 - синхронный перез пуск. Для норм льной р боты об бит должны быть уст новлены. R1 Режим синхрониз ции Имеет следующую структуру: 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬──┬──┬──┬──┐ │X│X│X│X│ │ │ │ │ Бит: └─┴─┴─┴─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ └──> 0: Высот символов: 1=8 точек, 0=9 точек │ │ └─────> 1: Полос ч стот ЭЛТ: 1=низк я, 0=высок я │ └────────> 2: 0=сдвиг всех символов, 1=только четных └───────────> 3: Ч стот генер тор пикселей: 1=половинн я, 0=обычн я R2 М ск битовых плоскостей Уст новк битов 0 - 3 р зреш ет з пись в соответствующие битовые плоскости. R3 Выбор к рты символов Биты 0-1 выбир ют к рту B, биты 2-3 - к рту A; к рт A относит- ся к символ м, у которых бит 3 трибутов уст новлен, к рт B - к символ м, чей бит 3 сброшен. Действительно только в случ е, когд ОЗУ EGA больше 64К. R4 Режим видеоп мяти Имеет следующую структуру: 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬─┬──┬──┬──┐ │X│X│X│X│X│ │ │ │ Бит: └─┴─┴─┴─┴─┴┬─┴┬─┴┬─┘ ──── │ │ └──> 0: 1=зн когенер тор текст , 0=гр фик │ └─────> 1: Р змер ОЗУ EGA: 0=64K, 1=более 64К └────────> 2: Способ хр нения пикселей: 1=последов тельный, 0=к к в CGA (р сслоение четных и нечетных строк) ──────────────────────────────────────────────────────────────── Гр фический контроллер (GDC) упр вляет р ботой д птер в гр фическом режиме и имеет следующие регистры: Регистр Н именов ние Опис ние ──────────────────────────────────────────────────────────────── R0 Уст новк /сброс Уст новк битов 0 - 3 выбир ет битовых плоскостей соответствующую битовую плос- кость для режим з писи 00. R1 Р зрешение уст новки Упр вляет доступом к R0. и сброс R2 Ср внение цветов Биты 0 - 3 выбир ют цвет для режим чтения 1. R3 П р метры з писи Имеет следующую структуру: 7 6 5 4 3 2 1 0 ┌─┬─┬─┬──┬──┬──┬──┬──┐ │X│X│X│ │ │ Биты: └─┴─┴─┴──┼──┴──┴┬─┴──┘ ───── │ └────> 0-2: Счетчик циклических сдвигов влево │ для режим з писи 00 └───────────> 3-4: Способ вывод в режим х з писи 00 и 02: 00=без изменений, 01=И, 10=ИЛИ, 11=исключ ющее ИЛИ R4 Выбор к рты чтения Биты 0-2 з д ют номер плоскости для режим чтения 1. R5 Регистр режим Имеет следующую структуру: 7 6 5 4 3 2 1 0 ┌─┬─┬──┬──┬──┬──┬──┬──┐ │X│X│ │ │ │ │ │ Биты: └─┴─┴┬─┴┬─┴┬─┴┬─┴──┼──┘ ───── │ │ │ │ └──> 0-1: Режим з писи 0 - 2 (см. ниже) │ │ │ └───────> 2: 1=высокоимпед нсный выход (для ди г- │ │ │ ностики), 0=обычн я р бот │ │ └──────────> 3: Режим чтения 0 - 1 (см. ниже) │ └─────────────> 4: 1=использов ть р сслоение видеоп мяти │ (ср. регистр 4 блок синхрониз ции) └────────────────> 5: 1=использов ть 2 бит н пиксель, к к в CGA (сдвиг нечетных битов в нечет- ных к рт х); 0=сдвиг четных битов в четных к рт х R6 Упр вление гр фикой Имеет следующую структуру: 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬──┬──┬──┬──┐ │X│X│X│X│ │ │ Биты: └─┴─┴─┴─┴──┼──┴┬─┴┬─┘ ───── │ │ └──> 0: 1=гр фик , 0=зн когенер тор │ └─────> 1: Ст вить нечетные к рты после четных └─────────> 2-3: Адрес и р змер видеоп мяти: 00=A0000h (128K), 01=A0000h (64K) 10=B0000h (32K), 11=B8000h (32K) R7 М скиров ние цветов Биты 0-3 исключ ют соответству- ющие битовые плоскости в режиме чтения 1. R8 Битов я м ск Биты 0-7 з д ют биты, м скируе- мые во всех битовых плоскостях. ──────────────────────────────────────────────────────────────── Примеч ние. Режимы чтения и з писи имеют следующий смысл. Режимы чтения: 0 - использов ть выбр нную битовую плоскость; 1 - ср внив ть цвет пикселя с цветом в регистре R2 и воз- вр щ ть 1 при их совп дении. Режимы з писи: 00 - циклически сдвинуть д нные, применить способ вывод , з пис ть в р зрешенные плоскости; 01 - вывести в к ждую плоскость зн чение, полученное преды- дущим чтением; 10 - выводить в к ждую плоскость 8 бит зн чения соответст- вующих битов 0-3 д нных (быстр я з кр ск ) 11 - недопустим. Порты ввод -вывод EGA имеют следующее н зн чение. Порт Опер ция Опис ние ──────────────────────────────────────────────────────────────── 3C0h З пись Регистр контроллер трибутов. Для доступ к регистр м ATC под йте ком нды: in al,3C2h ; перейти в дресный режим out 3C0h,n ; номер регистр ATC (режим д нных) out 3C0h,val ; новое зн чение регистр Биты 0-4 в n - номер регистр , бит 5 з д ет: 1=р зрешить вывод н экр н, 0=уст новк регистр ATC. 3C2h З пись Многоцелевой упр вляющий регистр: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ Бит: └┬─┴┬─┴┬─┴┬─┴──┼──┴┬─┴┬─┘ ──── │ │ │ │ │ │ └───> 0: Выбор портов дисплея: │ │ │ │ │ │ 1=3BXh (MGA), 0=3DXh (CGA) │ │ │ │ │ └──────> 1: 0=р зрешить доступ к ОЗУ │ │ │ │ │ 1=з претить доступ к ОЗУ │ │ │ │ └──────────> 2-3: Ч стот генер тор пикселей: │ │ │ │ 00=14 Мгц, 01=16 Мгц, │ │ │ │ 10=внешний источник, 11=резерв │ │ │ └───────────────> 4: 1=выбр ть вывод призн ков, │ │ │ 0=выбр ть внутренний источник │ │ └──────────────────> 5: Бит стр ницы при р сслоенной │ │ дрес ции видеоп мяти: 0=мл дш я │ │ стр ниц , 1=ст рш я стр ниц │ └─────────────────────> 6: Полярность обр тного ход луч │ по горизонт ли: 1=отриц тельн я └────────────────────────> 7: Полярность обр тного ход луч по вертик ли: 1=отриц тельн я Чтение Регистр состояния 0: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │X │X │X │ Бит: └┬─┴──┼──┴──┼──┴──┴──┴──┘ ──── │ │ └─────────────> 3-4: Ч стот генер тор пикселей │ │ (см. выше) │ └───────────────────> 5-6: Ввод призн ков └────────────────────────> 7: 0=обр тный ход луч по вертик ли 3C4h З пись Регистр дрес блок синхрониз ции. 3C5h З пись Регистр д нных блок синхрониз ции. Для прог- р ммиров ния регистр Rn блок нужно выполнить ком нды: out 3C4h,n и out 3C5h,д нные 3CAh З пись Гр фическ я позиция 2 (для EGA должн быть 1). 3CCh З пись Гр фическ я позиция 1 (для EGA должн быть 0). 3CEh З пись Регистр дрес гр фического контроллер . 3CFh З пись Регистр д нных гр фического контроллер . Для прогр ммиров ния регистр Rn нужно выполнить ком нды: out 3CEh,n и out 3CFh,д нные 3D4h З пись Регистр индекс ЭЛТ. Используется для выбор или регистр ЭЛТ. Для з писи регистр ЭЛТ Rn нужно 3B4h выполнить ком нды: out 3X4h,n и out 3X5h,д нные. 3D5h/ З пись/ Регистр д нных ЭЛТ. Позволяет з писыв ть и 3B5h чтение чит ть все регистры ЭЛТ. 3DAh/ З пись Биты 0 - 1 упр вляют выход ми призн ков FC0 и 3BAh FC1 (конт кты 19 и 17 соответственно). Чтение Регистр состояния 1: 7 6 5 4 3 2 1 0 ┌─┬─┬─┬─┬──┬──┬──┬──┐ │X│X│X│X│ │ │ │ │ Бит: └─┴─┴─┴─┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ └───>0: 0=вывод изобр жения, 1=горизонт льн я │ │ │ или вертик льн я синхрониз ция │ │ └──────>1: 1=триггер светового пер сброшен │ └─────────>2: 1=з щелк светового пер открыт └────────────>3: 0=экр н включен, 1=выключен (EGA не требует проверки этого бит при выводе - в любом случ е "хлопьев" не будет) 3DBh/ З пись/ Вывод любого б йт выключ ет триггер светового 3BBh Чтение пер . 3DCh/ З пись/ Вывод любого б йт включ ет триггер светового 3BCh Чтение пер . ──────────────────────────────────────────────────────────────── EGA р бот ет либо в режиме совместимости с CGA или MGA, либо в одном из своих собственных гр фических видеорежимов: 320 х 200, 16 цветов 640 х 200, 16 цветов 640 х 350, черно-белый 640 х 350, 16 цветов В этих режим х видеоп мять р збив ется н 4 битовые плоскости, к жд я из которых содержит обр з экр н для одного из основных цветов: кр сного, зеленого, синего и яркости. Контроллер EGA считыв ет биты всех четырех плоскостей, соответ- ствующие д нному пикселю, и формирует его результирующий цвет н экр не (комбин ция из 4 двоичных цифр д ет 16 в ри нтов цветов). Видеоп мять EGA oтобр ж ется в дрес ОЗУ A0000h - B0000h. Р змер п мяти EGA в рьируется от 64К до 256К в з висимости от комплект ции д птер . Одн ко, д же если п мять EGA р вн 256К, он р змещ ется в 16К дресного простр нств опер тивной п мяти. Это обьясняется тем, что к жд я битов я плоскость отобр ж ется в одни и те же дрес ОЗУ; для выбор битовой плоскости, с которой Вы хотите обменив ться д нными, необходимо переуст н влив ть соответствующие регистры гр фического контроллер . В гр фическом режиме 640 х 200 64К опер тивной п мяти р збив ется н 4 стр ницы по 16К к жд я. Адрес этих стр ниц р вны соответственно A0000h, A4000h, A8000h и AC000h. Смещение от н ч л стр ницы до б йт , содерж щего пиксель с координ т ми (X,Y), р вен 80*Y + int(X/8), номер соответствующего бит в этом б йте р вен 7 - (X % 8). Здесь X - горизонт льн я позиция точки (0 - 639), Y - ее вертик льн я позиция (0 - 199). Гр фический режим 320 х 200 предост вляет пользов телю 8 стр ниц р змером по 8К. Смещение от н ч л стр ницы до б йт , содерж щего пиксель с координ т ми (X,Y), р вен 40*Y + int(X/8), номер соответствующего бит в этом б йте р вен 7 - (X % 8). Здесь X - горизонт льн я позиция точки (0 - 639), Y - ее вертик льн я позиция (0 - 199). В гр фических режим х 640 х 350 имеются две стр ницы с дрес ми A0000h и A8000h соответственно. В ост льном этот режим н логичен предыдущим. В к честве пример приведем три подпрогр ммы р боты с дисплеем EGA в режиме 640 х 200. Если Вы хотите использов ть их в других режим х, дост точно поменять зн чение конст нты PageSize н соответствующее зн чение. PageSize equ 4000h ; р змер стр ницы для режим 640 х 200 ;╔═══════════════════════════════════════════╗ ;║ Подпрогр мм очистки экр н . ║ ;║ Вход: CX = номер очищ емой стр ницы (0-3) ║ ;╚═══════════════════════════════════════════╝ EGA_Cls proc near push ax push bx push cx push dx push es push di xor ax,ax ; вычисляем смещение до стр ницы mov bx,PageSize jcxz Page_0 High_Page: add ax,bx loop High_Page Page_0: mov di,ax ; DI = дрес стр ницы в видеоп мяти mov ax,0A000h mov es,ax ; ES:DI = полный дрес стр ницы mov ax,0FF08h mov dx,3CEh ; гр фический контроллер out dx,ax ; уст новить все битовые м ски mov ax,0FF02h mov dx,3C4h ; блок синхрониз ции out dx,ax ; р зрешить з пись во все плоскости mov ax,3 mov dx,3CEh ; гр фический контроллер out dx,ax ; з д ть норм льный режим р боты mov cx,PageSize xor al,al rep stosb ; обнулить стр ницу pop di pop es pop dx pop cx pop bx pop ax ret EGA_Cls endp ;╔═══════════════════════════════════════════╗ ;║ Подпрогр мм вывод пикселя н экр н. ║ ;║ Вход: AX = цвет пикселя ║ ;║ BX = номер стр ницы ║ ;║ CX = номер столбц (X) ║ ;║ DX = номер строки (Y) ║ ;╚═══════════════════════════════════════════╝ Put_Pixel proc near push ax push bx push cx push dx push es push ax push cx push dx mov ax,dx mov cx,80 mul cx ; AX = 80 * Y pop dx pop cx push cx shr cx,1 shr cx,1 shr cx,1 ; CX = X / 8 add ax,cx ; AX = 80 * Y + X / 8 mov cx,bx ; номер стр ницы mov bx,PageSize jcxz Page_Done Next_Page: add ax,bx ; учтем смещение до стр ницы loop Next_Page Page_Done: pop cx mov bx,ax ; BX = дрес б йт , содерж щего пиксель mov ax,0A000h mov es,ax ; ES:BX = полный дрес б йт and cl,7 ; CL = X % 7 mov ah,80h shr ah,cl ; AH = позиция пикселя в б йте mov dx,3CEh mov al,8 out dx,ax ; р зрешить з пись только в этот бит pop ax mov ch,al ; цвет пикселя mov dx,3C4h mov ax,0FF02h out dx,ax ; р зрешить з пись во все плоскости mov al,es:[bx] ; чит ем б йт xor al,al mov es:[bx],al ; обнуляем пиксель mov al,2 mov ah,ch ; цвет and ah,0Fh ; приведем к ди п зону 0-15 out dx,ax ; р зрешить з пись в соотв. плоскости mov al,es:[bx] ; чит ем б йт mov al,0FFh mov es:[bx],al ; уст н влив ем пиксель mov ax,0FF02h out dx,ax ; р зрешить з пись во все плоскости mov ax,3 mov dx,3CEh ; гр фический контроллер out dx,ax ; з д ть норм льный режим р боты mov ax,0FF08h out dx,ax ; включить все биты pop es pop dx pop cx pop bx pop ax ret Put_Pixel endp ;╔═══════════════════════════════════════════╗ ;║ Подпрогр мм чтения цвет пикселя. ║ ;║ Вход: CX = номер столбц (X) ║ ;║ DX = номер строки (Y) ║ ;║ Выход:AX = цвет пикселя ║ ;╚═══════════════════════════════════════════╝ Get_Pixel proc near push ax push bx push cx push dx push es push dx mov ax,205h mov dx,3CEh out dx,ax ; режимы: з писи=01, чтения=0 pop dx push cx push dx mov ax,dx mov cx,80 mul cx ; AX = 80 * Y pop dx pop cx push cx shr cx,1 shr cx,1 shr cx,1 ; CX = X / 8 add ax,cx ; AX = 80 * Y + X / 8 mov cx,bx ; номер стр ницы mov bx,PageSize jcxz My_Page Higher_Page: add ax,bx ; учтем смещение до стр ницы loop Higher_Page My_Page: mov di,ax ; DI = дрес б йт , содерж щего пиксель mov ax,0A000h mov es,ax ; ES:DI = полный дрес б йт pop cx and cl,7 ; CL = X % 7 mov ch,80h shr ch,cl ; CH = позиция пикселя в б йте mov bl,7 sub bl,cl mov cl,bl ; CL = номер бит в б йте xor bl,bl ; н копитель цвет mov ah,3 ; счетчик битовых плоскостей mov al,4 ; R4 = регистр выбор плоскости mov dx,3CEh ; гр фический контроллер Read_Plane: out dx,ax ; выбир ем плоскость AH mov bh,es:[di] ; чит ть б йт and bh,ch ; выбр ть бит shr bh,cl ; сдвинуть цвет в бит 0 shl bl,1 ; сдвинуть выбр нные цвет or bl,bh ; и доб вить счит нный dec ah ; следующ я плоскость jge Read_Plane ; повторить для всех плоскостей mov al,bl xor ah,ah ; AX = цвет пикселя pop es pop dx pop cx pop bx pop ax ret Get_Pixel endp 7.7. Гр фический видеом ссив VGA Ад птер VGA (Video Graphics Array) предст вляет собой д ль- нейшее р звитие EGA. В основном он полностью совместим с д птером EGA, поэтому мы приведем только его основные отличия. 1. Если EGA-дисплеи имеют цифровой вход, то VGA - это дисплей с н логовым входом. Поэтому при формиров нии цвет пикселя из битовых плоскостей цвет сл г ется из трех основных цветов (кр сного, зеленого и синего), интенсивность к ждого из которых может пл вно в рьиров ться от нуля до м ксим льного зн чения. 2. VGA имеет большее р зрешение, чем EGA, и предост вляет пользов телю три дополнительных режим : 640 x 480, 2 цвет 640 x 480, 16 цветов 320 x 200, 256 цветов В режим х 640 х 480 имеется одн гр фическ я стр ниц р змером 153600 б йт. В режиме 320 х 200 с 256 цвет ми используется несколько иной метод формиров ния цвет пикселя, чем в других режим х; з счет этого видеоп мять р збив ется н 4 стр ницы р змером по 16К. Этот режим возможен только н н логовых дисплеях или дисплеях с переменной ч стотой. 3. Ч стот генер тор пикселей VGA приним ет зн чения 25 или 28 Мгц (в отличие от 14 и 16 Мгц у EGA). 4. VGA имеет дополнительный порт ввод 3CCh, позволяющий счит ть содержимое многоцелевого регистр (см. опис ние порт 3C2h в п. 7.6). Гр фические позиции 3CAh и 3CCh, имеющиеся в EGA, у VGA отсутствуют. 8. Контроллер н копителей н гибких диск х 8.1. Основные сведения о контроллере Упр вление гибкими диск ми в PC-подобных ПЭВМ осуществляется микросхемой 8272А фирмы Intel, выполняющей функции контроллер гибких дисков (Floppy Disk Controller, FDC). Информ ция н дискете хр нится н дорожк х, дорожки р збиты н сектор . В з висимости от тип дисковод число дорожек н одной стороне дискеты может быть р вно 40 или 80, число секторов н дорожке колеблется от 8 до 26. Кроме того существуют дисководы, имеющие одну головку чтения/з писи (при этом втор я сторон дискеты не используется). Контроллер упр вляет дисковод ми для дискет ди метром 8, 5.25 и 3.5 дюйм , поддержив ет з пись н дискету метод ми ЧМ и МЧМ, прогр ммируемую длину секторов (128, 256, 512 или 1024 б йт ), мультисекторные и мультидорожечные опер ции обмен с диск ми, опер ции поиск . Одновременно к одному контроллеру может быть подключено до четырех дисководов любого из поддержив емых типов. Обмен с диском может осуществляться к к с использов нием ПДП, т к и без него. В последнем случ е используются 2 метод : опрос состояния контроллер через регистры или использов ние пп р тных прерыв ния контроллер . FDC генерирует пп р тные прерыв ния уровня 6 (IRQ6), связ нные с вектором прерыв ний 0Eh. Упр вление контроллером и н копителями осуществляется через 3 порт ввод -вывод . 8.2. Порты контроллер н копителей н гибких диск х М тери лы д нного и следующего р зделов полностью описыв ют возможности контроллер 8272А, систем ком нд которого является б зовой для всех более поздних моделей. Дополнительные возможности контроллер 82072 не опис ны, т. к. этот контроллер полностью поддержив ет описыв емую систему ком нд, его неопис нные функции пр ктически не используются в ст нд ртных средств х. Н зн чение портов ввод -вывод контроллер гибких дисков приведено в т блице. ┌──────┬────────┬──────────────────────────────────────────────┐ │ Порт │ Режим │ Н зн чение │ ├──────┼────────┼──────────────────────────────────────────────┤ │ │ │ │ │ 3F2h │ з пись │ Перед ч ком нд по упр влению режимом р боты│ │ │ │ контроллер и н копителей │ │ │ │ │ │ 3F4h │ чтение │ Чтение регистр состояния контроллер │ │ │ │ │ │ 3F5h │ з пись │ Перед ч ком нд по упр влению н копителями │ │ │ │ │ │ 3F5h │ чтение │ Чтение д нных с диск в режиме р боты │ │ │ │ без ПДП │ │ │ │ │ │ 3F5h │ з пись │ З пись д нных н диск в режиме р боты │ │ │ │ без ПДП │ │ │ │ │ │ 3F5h │ чтение │ Чтение результ тов выполнения ком нды во │ │ │ │ всех режим х │ └──────┴────────┴──────────────────────────────────────────────┘ Порт 3F2h. 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ │ │ Биты: └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ───── │ │ │ │ │ │ └───┴─> 0-1: выбор н копителя: │ │ │ │ │ │ 00-первый │ │ │ │ │ │ 01-второй │ │ │ │ │ │ 10-третий │ │ │ │ │ │ 11-четвертый │ │ │ │ │ └─────────> 2: 0=сброс контроллер , │ │ │ │ │ 1=р зблокиров ть контроллер │ │ │ │ └─────────────> 3: 1=р зрешить р боту с ПДП и │ │ │ │ прерыв ния контроллер └───┴───┴───┴─────────────────> 4-7: включить мотор: 0001 - первый н копитель 0010 - второй 0100 - третий 1000 - четвертый Н АТ-подобных ПЭВМ обычно допуск ется не 4, только 2 н копителя, вследствии чего комбин ции, использующие третий и четвертый н копители, игнорируются. Бит 2, р вный 0, прекр щ ет выполнение текущей ком нды в момент вывод в порт. Если ком нд не з вершил сь, ее выполнение прерыв ется. Если не были счит ны результ ты выполнения ком нды, они проп д ют. Если не з кончился ввод ком нды, он проп д ет и должен быть н ч т з ново. В любом случ е продолжение р боты возможно только после уст новки этого бит обр тно в 1. Порт 3F4h. Через этот порт осуществляется чтение регистр основного состояния FDC. 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ │ │ │ │ │ │ Биты: └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ───── │ │ │ │ └───┴───┴───┴─> 0-3: н копитель з нят в режиме │ │ │ │ поиск : │ │ │ │ 0001-первый, 0010-второй │ │ │ │ 0100-третий, 1000-четвертый │ │ │ └─────────────────> 4: 0=контроллер свободен, │ │ │ 1=контроллер з нят выполне- │ │ │ нием ком нды чтения или │ │ │ з писи │ │ └─────────────────────> 5: режим р боты контроллер : │ │ 0=с использов нием ПДП, │ │ 1=без ПДП │ └─────────────────────────> 6: н пр вление обмен : │ 0=процессор --> контроллер │ 1=контроллер --> процессор └─────────────────────────────> 7: готовность к обмену: 0=не готов, 1=готов Бит 7, р вный 1, говорит о том, что контроллер при вводе ком нды готов к приему очередного б йт ком нды, при обмене д нными в режиме без ПДП готов к приему/перед че очередного б йт д нных, при приеме результ т выполнения ком нды готов к перед че очередного б йт результ т . 8.3. Ком нды упр вления н копителями Выполнение к ждой ком нды имеет 3 ф зы: -ф з ввод ком нды; -ф з выполнения; -ф з результ т . В ф зе ввод ком нды контроллер поб йтно приним ет и н к плив ет ком нду. Ф з ком нды з к нчив ется з пуском мотор н соответствующем н копителе (это не относится к ком нд м з д ния режимов и чтения состояния). В ф зе выполнения осуществляется обмен д нными между ОЗУ и н копителем (если ком нд предпол г ет т кой обмен). В режиме с использов нием ПДП перед приемом/перед чей б йт д нных генерируется сигн л "з прос н ПДП". Контроллер ПДП отвеч ет н него сигн лом подтверждения и ком ндой прием /перед чи. В режиме р боты без ПДП при готовности к приему/перед че к ждого б йт генерируется прерыв ние. Если прерыв ния з прещены, пригр мм может в цикле проверять регистр состояния (порт 3F4h) до получения подтверждения готовности контроллер к обмену д нными. По оконч нии выполнения ком нды генерируется прерыв ние, озн ч ющее н ч ло ф зы результ т . В ф зе результ т контроллер перед ет результ ты выполнения ком нды. Все б йты результ т должны быть счит ны, либо необходимо выполнить сброс контроллер , ин че следующ я ком нд не будет принят . Не все ком нды имеют ф зу результ т , ряд ком нд выполняется в 2 ф зы. 8.3.1. Перечень ком нд контpоллеp НГМД Ниже приводится подробное опис ние ком нд FDC. Ф з выполнения помечен зн к ми "* * *". Смысл символических обозн чений элементов ком нд приведен после опис ния ком нд. В битовых м ск х биты нумеруются спр в н лево. В ф зе результ т все б йты результ т приведены в той последов тельности, в которой они возвр щ ются контроллером. ┌───────────┬────────────────────────────────────┬─────────────┐ │ Ком нд │ Регистр д нных │ Н зн чение │ ├───────────┼────────────────────────────────────┼─────────────┤ │ 1. Чтение │ MT MF SK 0 0 1 1 0 │ Ввод д нных │ │ д нных │ X X X X X HD US1 US0 │ из поля д н-│ │ │ C │ ных сектор │ │ │ H │ │ │ │ R │ │ │ │ N │ │ │ │ EOT │ │ │ │ GPL │ │ │ │ DTL │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │ 2. Чтение │ MT MF SK 0 1 1 0 0 │ Ввод д нных │ │ уд ленных │ X X X X X HD US1 US0 │ из поля д н-│ │ д нных │ C │ ных, поме- │ │ │ H │ ченного к к │ │ │ R │ уд ленное │ │ │ N │ │ │ │ EOT │ │ │ │ GPL │ │ │ │ DTL │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │ 3. З пись │ MT MF 0 0 0 1 0 1 │ Вывод д нных│ │ д нных │ X X X X X HD US1 US0 │ в поле д н- │ │ │ C │ ных сектор │ │ │ H │ │ │ │ R │ │ │ │ N │ │ │ │ EOT │ │ │ │ GPL │ │ │ │ DTL │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │ 4. З пись │ MT MF 0 0 1 0 0 1 │ З пись д- │ │ уд ленных │ X X X X X HD US1 US0 │ ресного м р-│ │ д нных │ C │ кер уд лен-│ │ │ H │ ных д нных и│ │ │ R │ з несение │ │ │ N │ символ -з - │ │ │ EOT │ полнителя в │ │ │ GPL │ поле д нных │ │ │ DTL │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │ 5. Чтение │ 0 MF SK 0 0 0 1 0 │ Чтение полей│ │ дорожки │ X X X X X HD US1 US0 │ д нных сек- │ │ │ C │ торов всей │ │ │ H │ дорожки │ │ │ R │ │ │ │ N │ │ │ │ EOT │ │ │ │ GPL │ │ │ │ DTL │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ └───────────┴────────────────────────────────────┴─────────────┘ При выполнении д нной ком нды игнорируются п р метры "н ч льный номер сектор " и " номер последнего сектор ", т к к к чтение н чин ется с первого встреченного после индекс сектор и перед ется столько секторов, сколько было з прошено. Если з прошенное число секторов (длин приним емой информ ции) больше, чем имеется секторов н дорожке, перед ч повторяется с н ч л первого сектор дорожки. ┌───────────┬────────────────────────────────────┬─────────────┐ │ 6. Чтение │ 0 MF 0 0 1 0 1 0 │ Чтение пер- │ │ идентифи- │ X X X X X HD US1 US0 │ вого встре- │ │ к тор │ * * * │ ченного │ │ сектор │ ST0 │ идентифик - │ │ │ ST1 │ тор сектор │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │ 7. Форм - │ 0 MF 0 0 1 1 0 1 │ З пись н │ │ тиров ние │ X X X X X HD US1 US0 │ дорожку фор-│ │ дорожки │ N │ м тирующей │ │ │ SC │ информ ции │ │ │ GPL │ │ │ │ D │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ └───────────┴────────────────────────────────────┴─────────────┘ Перед выполнением ком нды форм тиров ния необходимо спозициониров ть головку н требуемую дорожку. Д нные для з писи в идентифик тор дрес сектор (цилиндр, головк , дорожк и р змер сектор ) приним ются от ПДП или через порт д нных и не проверяются. Физический р змер сектор определяется п р метром "N" - код длины сектор , з д в емым в ком нде и один ковым для всей дорожки. Т ким обр зом нельзя иметь н н одной дорожке сектор р зной длины. Ком нд не з носит в м ркер д нных призн к "уд ленные д нные", з полняет поле д нных секторов дорожки б йтом-з полнителем. ┌───────────┬────────────────────────────────────┬─────────────┐ │ 8.Ск ниро-│ MT MF SK 1 0 0 0 1 │ Ск ниров - │ │ в ние до │ X X X X X HD US1 US0 │ ние д нных │ │ "р вно" │ C │ н ук з н- │ │ │ H │ ное условие │ │ │ R │ и формиров -│ │ │ N │ ние з прос │ │ │ EOT │ н прерыв - │ │ │ GPL │ ние при вы- │ │ │ STP │ полнении │ │ │ * * * │ условия │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │ 9.Ск ниро-│ MT MF SK 1 1 0 0 1 │ н логично │ │ в ние до │ X X X X X HD US1 US0 │ предыдущей │ │ "больше │ C │ ком нде │ │ или р вно"│ H │ │ │ │ R │ │ │ │ N │ │ │ │ EOT │ │ │ │ GPL │ │ │ │ STP │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ C │ │ │ │ H │ │ │ │ R │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │10.Ск ниро-│ MT MF SK 1 1 1 0 1 │ н логично │ │ в ние до │ X X X X X HD US1 US0 │ предыдущей │ │ "меньше │ C │ ком нде │ │ или р вно"│ H │ │ │ │ R │ │ │ │ N │ │ │ │ EOT │ │ │ │ STP │ │ │ │ * * * │ │ │ │ ST0 │ │ │ │ ST1 │ │ │ │ ST2 │ │ │ │ H │ │ │ │ R │ │ │ │ N │ │ │ │ * * * │ нулевую │ │ │ │ дорожку │ ├───────────┼────────────────────────────────────┼─────────────┤ │12. Опреде-│ 0 0 0 0 0 0 1 1 │ З д ние │ │ ление │ <--- SRT ---> <--- HUT ---> │ режим │ │ │ <--------- HLT ---------> ND │ р боты │ │ │ │ дисковод │ ├───────────┼────────────────────────────────────┼─────────────┤ │13.Поиск │ 0 0 0 0 1 1 1 1 │ Позициониро-│ │ │ Х Х Х Х Х HD US1 US0 │ в ние голов-│ │ │ NCN │ ки н з д н-│ │ │ * * * │ ную дорожку │ ├───────────┼────────────────────────────────────┼─────────────┤ │14.Чтение │ 0 0 0 0 1 0 0 0 │ Чтение б йт │ │ состояния │ * * * │ состояния │ │ прерыв ния│ ST0 │ ST0 после │ │ │ PCN │ прерыв ний, │ │ │ │ вызв нных │ │ │ │ изменением │ │ │ │ готовности │ │ │ │ дисковод │ │ │ │ и опер цией │ │ │ │ поиск │ ├───────────┼────────────────────────────────────┼─────────────┤ │15.Чтение │ 0 0 0 0 0 1 0 0 │ Чтение б йт │ │ состояния │ Х Х Х Х Х HD US1 US0 │ состояния │ │ НГМД │ * * * │ ST3 │ │ │ ST3 │ │ │ │ │ │ ├───────────┼────────────────────────────────────┼─────────────┤ │16. Несуще-│ < ошибочный код ком нды FDC> │ При ошибоч- │ │ ствующ я │ * * * │ ной ком нде │ │ ком нд │ ST0 │ возвр щ ется│ │ │ │ ST0=80h │ │ │ │ │ └───────────┴────────────────────────────────────┴─────────────┘ Смысловое зн чение элементов ком нд: МТ=1 - многодорожечн я (двусторонняя опер ция); MF=1 - МЧМ-кодиров ние (двойн я плотность) - пропуск синхроимпульсов у единичных битов и пропуск синхроимпульсов у нулевых битов, стоящих после единичных; SK=1 - пропуск дресного м ркер уд ленных д нных; HD - номер головки (0 или 1); US1, US0 - номер н копителя (0 - 3); С - номер цилиндр ; Н - номер головки; R - номер сектор ; N - код длины сектор (0 - 128, 1 - 256, 2 - 512, 3 - 1024 б йтов); EOT - номер последнего сектор н цилиндре; GPL - длин межзонного промежутк (обычно 2Ah при обмене и 50h при форм тиров нии); DTL - число считыв емых/з писыв емых б йт (действительно при N = 0); ST0 - ST3 - б йты состояния ST0-ST3; STP - межсекторное смещение; SRT - время скорости ш г в милисекунд х (обычно 0Dh); HUT - время р згрузки головки в единиц х по 16 милисекунд (обычно = 0Fh); HLT - время з грузки головки в единиц х по 2 милисекунды (обычно = 1); ND=0 - режим р боты с использов нием ПДП, =1 - режим р боты без использов ния ПДП; NCN - номер цилиндр после поиск ; PCN - номер текущего цилиндр ; SC - количество секторов н цилиндре; D - символ-з полнитель для р зметки (обычно 0F6h). 8.3.2. Структур б йтов состояния Б йт состояния ST0: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ │ │ │ │ │ │ Биты: └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ───── │ │ │ │ │ │ └───┴─> 0-1: номер н копителя (0 - 3) │ │ │ │ │ └─────────> 2: номер головки │ │ │ │ └─────────────> 3: НГМД не готов при обмене │ │ │ └─────────────────> 4: Сигн л "ошибк " НГМД или │ │ │ дорожк 0 не н йден после 77 │ │ │ ш гов рек либровки │ │ └─────────────────────> 5: ком нд поиск з вершен └───┴─────────────────────────> 6: код прерыв ния: 00-норм льное з вершение ком нды 01-ненорм льное з вершение 10-недействительн я ком нд 11-в ф зе выполнения измени- л сь готовность дисковод Бит 2 (номер головки) после выполнения ком нды поиск всегд р вен 0, нез висимо от того, н к кой головке осуществлялся поиск. Бит 3 будет всегд р вен 1, если н дисководе с одной головкой вы попробуете обр титься к стороне 1 (допустим только сторон 0). Б йт состояния ST1: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ 0 │ │ │ 0 │ │ │ │ Бит: └─┬─┴───┴─┬─┴─┬─┴───┴─┬─┴─┬─┴─┬─┘ ──── │ │ │ │ │ └─> 0: 1=не н йден м ркер иденти- │ │ │ │ │ фик тор сектор │ │ │ │ └─────> 1: 1=дискет з щищен от │ │ │ │ з писи │ │ │ └─────────> 2: 1=искомый сектор не н йден │ │ └─────────────────> 4: 1=т йм ут з просов н │ │ перед чу д нных │ └─────────────────────> 5: 1=ошибк CRC в поле иденти- │ фик ции или в поле д нных └─────────────────────────────> 7: 1=конец цилиндр (попытк обр щения к сектору после обр щения к последнему сектору последнего цилиндр ) Б йт состояния ST2: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ 0 │ │ │ │ │ │ │ │ Бит: └───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ─── │ │ │ │ │ │ └─> 0: 1=не н йден м ркер д нных │ │ │ │ │ │ или уд ленных д нных │ │ │ │ │ └─────> 1: 1=сбойный цилиндр │ │ │ │ └─────────> 2: 1=ск ниров ние выполнено │ │ │ │ неудовлетворительно │ │ │ └─────────────> 3: 1=при ск ниров нии выполне- │ │ │ но условие "р вно" │ │ └─────────────────> 4: 1=неверный номер цилиндр в │ │ идентифик торе сектор │ └─────────────────────> 5: 1=ошибк CRC в поле д нных └─────────────────────────> 6: 1=в идентифик торе сектор обн ружен дресный м ркер уд ленных д нных Б йт состояния ST3: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ │ │ │ │ │ │ Бит: └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ──── │ │ │ │ │ │ └───┴─> 0-1: номер н копителя │ │ │ │ │ └─────────> 2: номер головки │ │ │ │ └─────────────> 3: 1=сигн л "двусторонний" │ │ │ │ от НГМД │ │ │ └─────────────────> 4: 1=сигн л "Дорожк 0" от │ │ │ НГМД │ │ └─────────────────────> 5: 1=сигн л "Готовность" от │ │ НГМД │ └─────────────────────────> 6:1=сигн л "З щит от з писи" │ от НГМД └─────────────────────────────> 7: 1=сигн л "Ошибк " от НГМД 8.4. Форм т дорожки Индик тором н ч л дорожки служит индексное отверстие. З пись н дорожку осуществляется в несколько приемов. При форм тиров нии дорожк перез писыв ется полностью. При опер циях з писи перез писыв ются отдельные сектор , что влечет з собой сбой н м гниченности диск в месте обрыв з писи, причем физическ я длин сектор при его перез писи не всегд точно совп д ет с длиной р нее имевшегося н этом месте сектор , р зниц в длине может сост влять до 4 - 5 бит д же при перез писи н одном дисководе в одно время. Для синхрониз ции после сбоев н дорожке имеются з зоры и синхрозоны. В общем виде форм т дорожки можно изобр зить следующим обр зом: ┌────────────────────────────┐ │ │ Определяется индексным │ Индекс │ отверстием │ │ ├────────────────────────────┤ │ │ │ З зор индекс │ 80 б йт 4Eh │ │ ├────────────────────────────┤ │ │ 12 б йтов 00h, 3 б йт 0C2h, │ З головок дорожки │ 1 б йт 0FCh, 50 б йтов 4Eh │ │ ├────────────────────────────┤ │ │ │ 1-й сектор │ 574 б йт │ │ ├────────────────────────────┤ │ │ │ Межсекторный промежуток │ 80 б йт 4Eh │ │ ├────────────────────────────┤ . . . 8 или 9 секторов н дорожке. . . ├────────────────────────────┤ │ │ │ Последний сектор │ 574 б йт │ │ ├────────────────────────────┤ │ │ │ Межсекторный промежуток │ 80 б йт 4Eh │ │ ├────────────────────────────┤ │ │ │ З зор дорожки │ б йты 4Eh до индексного │ │ отверстия ├────────────────────────────┤ │ │ │ Индекс │ │ │ └────────────────────────────┘ Форм т сектор : ┌────────────────────────────┐ │ │ │ Идентифик тор сектор │ 22 б йт │ │ ├────────────────────────────┤ │ │ │ З зор идентифик тор │ 22 б йт 4Eh │ │ ├────────────────────────────┤ │ │ │ Блок д нных │ 530 б йт │ │ └────────────────────────────┘ Идентифик тор сектор : ┌────────────────────────────┐ │ │ 12 б йтов 00, 3 б йт 0A1h │ М ркер идентифик тор │ 1 б йт 0FEh │ │ ├────────────────────────────┤ │ │ 6 б йтов: цилиндр, головк , │Идентифик тор дрес сектор │ дорожк , код длины сектор │ │ и 2 б йт контрольной суммы └────────────────────────────┘ Блок д нных: ┌────────────────────────────┐ │ │ 12 б йтов 00, 3 б йт 0A1h, │ М ркер д нных │ 1 б йт 0FXh (Х=8 - уд ленные │ │ д нные, 0Bh - действительные ├────────────────────────────┤ д нные) │ │ │ Поле д нных │ 512 б йт │ │ ├────────────────────────────┤ │ │ │ Контрольн я сумм поля │ 2 б йт │ д нных │ └────────────────────────────┘ 8.5. Отличия контроллер для АТ-подобных ПЭВМ Архитектур АТ-подобных ПЭВМ отлич ется от ХТ тем, что контроллер гибких дисков н ходится н одной пл те с контроллером жестких дисков. К дополнительным возможностям относится возможность регулиров ния скорости обмен д нными и возможность подключения двух контроллеров к одному ПЭВМ (в этом случ е вместо портов 3F2h - 3F7h используются порты 372h - 377h). Функции контроллер гибких дисков н АТ-подобных ПЭВМ выполняются микросхемой 82072 фирмы Intel (советских н логов нет). Дополнительно к опис нным выше порт м имеется еще один порт 3F7h, позволяющий осуществить доступ к регистру выбор скорости обмен д нными (Data Rate Select Register, DSR). Порт 3F7h. 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ │ │ │ │ │ │ Биты: └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ───── │ │ │ │ │ │ └───┴─> 0-1: выбор скорости обмен │ │ │ └───┴───┴─────────> 2-4: выбор времени │ │ │ предкомпенс ции │ │ └─────────────────────> 5: 1=р зрешить внешний │ │ фильтр д нных │ └─────────────────────────> 6: 1=отключить пит ние │ дисковод └─────────────────────────────> 7: 1=прогр ммный сброс контроллер Возможные скорости обмен д нными в з висимости от битов 0 - 1 DSR приведены в т блице. ┌───────────────────┬──────────────────────────┐ │ Биты │ Скорость │ ├─────────┬─────────┼─────────────┬────────────┤ │ 1 │ 0 │ МЧМ │ ЧМ │ ├─────────┼─────────┼─────────────┼────────────┤ │ 1 │ 1 │ 1 Мбит/сек │ Невозможно │ │ 0 │ 0 │ 500 Кбит/сек│250 Кбит/сек│ │ 0 │ 1 │ 300 Кбит/сек│150 Кбит/сек│ │ 1 │ 0 │ 250 Кбит/сек│125 Кбит/сек│ └─────────┴─────────┴─────────────┴────────────┘ В з висимости от зн чений битов 2, 3 и 4 DSR возможны следующие зн чения времени предкомперс ции: ┌────────────────────────┬─────────────────────┐ │ Биты │ Время │ │ 4 3 2 │ предкомпенс ции │ ├────────────────────────┼─────────────────────┤ │ 1 1 1 │ Недопустим я │ │ │ комбин ция │ │ 0 0 1 │ 41.67 нс │ │ │ │ │ 0 1 0 │ 83.34 нс │ │ │ │ │ 0 1 1 │ 125.00 нс │ │ │ │ │ 1 0 0 │ 166.00 нс │ │ │ │ │ 1 0 1 │ 208.33 нс │ │ │ │ │ 1 1 0 │ 250.00 нс │ │ │ │ │ 0 0 0 │ Взять зн чение │ │ │ по умолч нию │ └────────────────────────┴─────────────────────┘ Зн чения по умолч нию для времени предкомпенс ции в з висимости от скорости приведены в т блице. ┌────────────────────────┬─────────────────────┐ │ Скорость │ Время │ │ обмен │ предкомпенс ции │ ├────────────────────────┼─────────────────────┤ │ 1 Мбит/сек │ 41.67 нс │ │ 500 Кбит/сек │ 125.00 нс │ │ 300 Кбит/сек │ 125.00 нс │ │ 250 Кбит/сек │ 125.00 нс │ └────────────────────────┴─────────────────────┘ Кроме пятн дц ти опис нных выше ком нд контроллер 8272, 82072 поддержив ет еще 4 ком нды: - изменить п р метры конфигур ции; - включение/выключение мотор ; - относительный поиск; - вернуть состояние регистров контроллер . Опис ние ком нд приведено в т блице. ┌───────────────┬──────────────────────────────┬───────────────┐ │ Ком нд │ Шин д нных │ Н зн чение │ ├───────────────┼──────────────────────────────┼───────────────┤ │ 1. Изменить │ 0 0 0 1 0 0 1 1│ Ком нд изме-│ │ п р метры │HDSA <- MOFF-> <--- MON --->│ няет ук з нные│ │ конфигур ции │ 0 EIS EF POLL <- FIFOTHR ->│ п р метры │ │ │ <--------- PRETRK ---------->│ │ │ │ * * * │ │ ├───────────────┼──────────────────────────────┼───────────────┤ │ 2.Включение/ │ ON/OFF US1 US0 0 1 0 1 1│ Включ ет/ │ │ выключение │ │ выключ ет мо- │ │ мотор │ │ тор н з д н- │ │ │ │ ном дисководе │ ├───────────────┼──────────────────────────────┼───────────────┤ │ 3. Относитель-│ 1 DIR 0 0 1 1 1 1│ Осуществляет-│ │ ный поиск │ 0 0 0 0 0 HD US1 US0│ ся сдвиг голо-│ │ │ <----------- RCN ----------->│ вок в з д нном│ │ │ * * * │ н пр влении н │ │ │ │ з д нное число│ │ │ │ цилиндров │ ├───────────────┼──────────────────────────────┼───────────────┤ │ 4. Вернуть │ 0 0 0 0 1 1 1 0│ Возвр щ ет │ │ состояние │ * * * │ состояние │ │ регистров │ <---- PCN-устр-в 0 -------->│ внутренних │ │ │ <---- PCN-устр-в 1 -------->│ регистров │ │ │ <---- PCN-устр-в 2 -------->│ контроллер │ │ │ <---- PCN-устр-в 3 -------->│ │ │ │ <--- SRT ---> <--- HUT --->│ │ │ │ <--------- HLT ---------> ND│ │ │ │ <--------- SC/EOT ---------->│ │ │ │HDSA <- MOFF -> <--- MON --->│ │ │ │ <--------- PRETRK ---------->│ │ │ │ 0 EIS EF POLL <- FIFOTHR ->│ │ │ │ │ │ └───────────────┴──────────────────────────────┴───────────────┘ В т блице приняты следующие сокр щения: US1, US0 - номер устройств ; DIR - н пр вление изменения (0-увеличение, 1-уменьшение); HD - номер головки чтения/з писи; RCN - относительный номер цилиндр ; PCN - текущий номер цилиндр ; SRT - время скорости ш г ; HUT -время р згрузки головки; HLT - время з грузки головки; ND - режим без ПДП; SC/EOT - число секторов н дорожке/номер последнего сектор н дорожке; ON/OFF - включение/выключение мотор (0/1); MON - з держк перед включением мотор ; MOFF - з держк перед выключением мотор ; EIS = 1 - р зрешить втом тический поиск перед чтением/з писью д нных, по умолч нию = 0; EF = 1 - переводит контроллер в режим имит ции 8272А; POLL = 1 - з прещ ет обр щение к устройств м; HDSA = 1 - позволяет изменять временные з держки в з висимости от скорости вр щения дисковод ; PRETRK - номер дорожки для предкомпенс ции (обычно = 0). 9. Контроллер н копителей н жестких диск х В д нном р зделе описыв ется упр вление контроллером н копителей н жестких м гнитных диск х тип "винчестер". М тери лы р здел подобр ны в основном из технической документ ции и прогр ммного обеспечения для жестких дисков фирмы Seagate, одн ко д нных о том, что существуют зн чительные отличия в упр влении диск ми, выпуск емыми другими фирм ми, в н стоящий момент не имеется. В связи с тем, что упр вление жесткими диск ми в ХТ и АТ-подобных ПЭВМ принципи льно отлич ется, опис ние ХТ и АТ контроллеров приведены отдельно друг от друг . Ч сть информ ции, полученн я из н лиз прогр ммного обеспечения, возможно является неполной. Т к я информ ция помечен звездочкой (*) в конкретной строке изложения или в з головке р здел . 9.1. Контроллер жестких дисков для ХТ-подобных ПЭВМ Архитектур ХТ-подобных ПЭВМ допуск ет подключение к одному контроллеру до двух н копителей. Обмен с жесткими диск ми производится с использов нием третьего к н л ПДП. Контроллер генерирует пп р тные прерыв ния 5-го уровня (IRQ5), вектор прерыв ния 0Dh. Р бот с диском осуществляется с использов нием отдельного ПЗУ, содерж щего процедуры упр вления диском, что является х р ктерной особенностью ХТ-подобных ПЭВМ. Обычно в к честве сегментного дрес ПЗУ используется 0C800h, но возможны и другие зн чения (0CA00h, 0D000h или 0D800h для дисков ST-251 или ST-225 фирмы Seagate). Имеется 16 дресов портов ввод -вывод , предн зн ченных для упр вления контроллером и н копителями (320h-32Fh), одн ко ре льно используются только 4 из них, н пример 320h-323h, 324h-327h, 328h-32Bh или 32Ch-32Fh. Н зн чение портов (1-й, 2-й, 3-й и 4-й в к ждой группе) одно и то же, поэтому д лее будут опис ны только порты 320h-323h. 9.1.1. Порты ввод -вывод Н зн чение портов контроллер жестких дисков приведено в т блице. ┌──────┬────────┬──────────────────────────────────────────────┐ │ Порт │ Режим │ Н зн чение │ ├──────┼────────┼──────────────────────────────────────────────┤ │ 320h │ з пись │ Перед ч ком нд по упр влению н копителями │ │ │ │ │ │ 320h │ чтение │ Чтение п р метров состояния после ошибок, │ │ │ │ возникших в процессе выполнения последней │ │ │ │ ком нды │ │ │ │ │ │ 321h │ з пись │ Сброс контроллер │ │ │ │ │ │ 321h │ чтение │ Чтение состояния контроллер │ │ │ │ │ │ 322h │ з пись │ Р зблокировк (выбор) контроллер │ │ │ │ │ │ 322h │ чтение │ Чтение тип н копителя │ │ │ │ │ │ 323h │ з пись │ Уст новк режим р боты контроллер │ │ │ │ │ └──────┴────────┴──────────────────────────────────────────────┘ Порт 320h. Через этот порт контроллер приним ет ком нды по упр влению н копителями. Ком нд содержит до шести б йтов информ ции, первый из которых определяет кл сс и код ком нды, ост льные содерж т требуемые для выполнения ком нды п р метры. При возникновении ошибки в процессе выполнения ком нды (бит 1 порт 321h) следует ввести в порт 320h ком нду "з прос состояния", после чего прочит ть из него 4 б йт состояния, первый из которых определяет код ошибки. Порт 321h. З пись нулевого б йт в этот порт вызыв ет сброс контроллер . При чтении состояния контроллер возможны следующие зн чения битов: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ X │ X │ │ X │ │ │ │ │ Биты: └───┴───┴─┬─┴───┴─┬─┴─┬─┴─┬─┴─┬─┘ ───── │ │ ├───────┼──> 0,2,3: 11=готовность к приему │ │ │ │ │ очередного б йт │ │ │ │ │ ком нды │ │ │ │ │ 01=ком нд принят │ │ │ │ │ полностью │ └───┴───────┴──> 111=готовность к приему │ │ новой ком нды │ └──────> 1: 1=ошибк └──────────────────────> 5: номер н копителя (0-1) Бит 2, р вный 1, вместе с битом 0, р вным 1, ук зыв ет н то, что контроллер готов к приему очередного б йт ком нды. Если в ходе перед чи ком нды бит 2 = 0, бит 0 = 1, зн чит контроллер счит ет, что он принял ком нду полностью и не ждет ввод новых б йтов ком нды. Бит 3, р вный 1, вместе с бит ми 0 и 1, р вными 1, ук зыв ет н готовность очередного б йт состояния при выполнении ком нды "з прос состояния". Если уст новлены в 1 биты 0, 2 и 3 - это озн ч ет, что контроллер свободен и готов к приему первого б йт новой ком нды. Порт 322h. Вывод произвольного б йт в этот порт р зблокирует контроллер. Опер ция р зблокиров ния (выбор , ктивиз ции) контроллер (enable controller) должн выполняться к ждый р з перед н ч лом вывод через порт 320h новой ком нды. При чтении из порт 322h может быть прочит н б йт 0FFh, что не несет ник кой информ ции, либо тип н копителя (применительно к д нной версии ПЗУ). 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ │ │ │ │ │ │ Биты: └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ───── │ │ │ │ │ │ │ │ │ │ └───┴───────────┴───┴──> 0,1,4,5: 1111=один н копитель │ │ │ │ большой емкости, ин че - тип │ │ │ │ второго н копителя └───┴───────────┴───┴──────────> 2,3,6,7: тип первого н копителя Если тип второго н копителя (биты 5, 4, 1 и 0) р вен 1111, это озн ч ет, что к контроллеру подключен один н копитель большой емкости (более 32 Мб йт), который при форм тиров нии следует р збив ть н несколько логических дисков (говорят, что уст новлен ключ р збиения (Split switch)). Ст нд ртное ПЗУ XT фирмы Seagate может р бот ть со следующими 15-ю тип ми н копителей (номер 0 - 14), приведенными в т блице. Типом 15 (неопределенный тип) отмеч ются все н копители, отличные по п р метр м от опис нных. ┌───┬─────────────────────────────────┬────┬───┬───┬───┬────┐ │Тип│Фирм изготовитель и модель диск │ C │ H │ R │ B │ V │ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 0 │ Seagate ST-225 │615 │ 4 │ 17│ 0 │21.4│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 1 │ Seagate ST-4038 │733 │ 5 │ 17│ 2 │31.9│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 2 │ Miniscribe-3425 │615 │ 4 │ 17│ 0 │21.4│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 3 │ Seagate ST-212 │306 │ 4 │ 17│ 0 │10.6│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 4 │ Priam V-150 │987 │ 5 │ 17│ 0 │42.9│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 5 │ Priam V-170 │987 │ 7 │ 17│ 0 │60.1│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 6 │ Miniscribe-8425,Kyocera 20A/20B │615 │ 4 │ 17│ 0 │21.4│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 7 │ Seagate ST-138 │615 │ 6 │ 17│ 0 │32.1│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 8 │ Seagate ST-4051 │977 │ 5 │ 17│ 2 │42.5│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 9 │ Seagate ST-251/ST-251-1 │820 │ 6 │ 17│ 0 │42.8│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 10│ HH-725 │612 │ 4 │ 17│ 0 │21.3│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 11│ Seagate ST-4053, │1024│ 5 │ 17│ 0 │44.5│ │ │ Miniscribe-3053/6053 │ │ │ │ │ │ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 12│ Maxtor-1085, Newbury Data-1085 │1024│ 8 │ 17│ 0 │71.3│ │ │ Miniscribe-6085 │ │ │ │ │ │ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 13│ Seagate ST-4096 │1024│ 9 │ 17│ 0 │80.2│ ├───┼─────────────────────────────────┼────┼───┼───┼───┼────┤ │ 14│ Maxtor-1140,Newbury Data-1140 │396 │ 15│ 17│ 0 │51.7│ └───┴─────────────────────────────────┴────┴───┴───┴───┴────┘ Здесь C-число цилиндров (десятичное); H-число головок (десятичное); R-число секторов н дорожке (десятичное); B-ст нд ртный упр вляющий б йт (шестн дц теричный); V-емкость диск (Мб йт). Порт 323h. 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ не используются │ │ │ Бит: └───┴───┴───┴───┴───┴───┴─┬─┴─┬─┘ ──── │ └───> 0: 1=р зрешить р боту с ПДП │ 0=не использов ть ПДП └───────> 1: 1=р зрешить пп р тные прерыв ния от контроллер (IRQ5) Уст новк режим р боты производится обычно до р з- блокировки контроллер перед н ч лом вывод ком нды. 9.1.2. Общий форм т ком нды и терминология Ком нд контроллер может состоять из 1 - 6 б йт. Общий форм т ком нды приведен н рисунке. ┌───────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ │ \ биты│ │ │ │ │ │ │ │ │ │ \ │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │ │б йты\ │ │ │ │ │ │ │ │ │ ├───────┼─────┴─────┴─────┼─────┴─────┴─────┴─────┴─────┤ │ 0 │ Кл сс ком нды │ Код опер ции │ ├───────┼─────┬─────┬─────┼─────────────────────────────┤ │ 1 │ 0 │ 0 │ У │ Номер головки │ ├───────┼─────┴─────┼─────┴─────────────────────────────┤ │ │ Цилиндр │ │ │ 2 │ (ст ршие │ Номер сектор │ │ │ биты) │ │ ├───────┼───────────┴───────────────────────────────────┤ │ 3 │ Цилиндр ( мл дшие биты ) │ ├───────┼───────────────────────────────────────────────┤ │ 4 │ Ф ктор чередов ния или число секторов │ │ │ (з висит от ком нды) │ ├───────┼───────────────────────────────────────────────┤ │ 5 │ Упр вляющий б йт │ └───────┴───────────────────────────────────────────────┘ Здесь и д лее: - кл сс ком нды и код опер ции определяют код ком нды контроллер ; - У - номер устройств (0/1); - номер сектор - номер н ч льного сектор для обмен ; - ф ктор чередов ния (Interleave Factor) з д ет после- дов тельность чередов ния секторов н дорожке (см. форм т дорожки); - упр вляющий б йт: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ X X X │ │ │ │ Биты: └─┬─┴─┬─┴───┴───┴───┴─┬─┴─┬─┴─┬─┘ ───── │ │ └───┴───┴─> 0-2: период импульсов сигн л │ │ "ш г" │ └─────────────────────────> 6: 1=з претить повторное счи- │ тыв ние при ошибке контр. │ суммы └─────────────────────────────> 7: 1=з претить повторный доступ к диску при ошибке. Бит 7, р вный 1, р зреш ет только одну попытку доступ к диску при выполнении ком нды (ин че р зрешены 4 попытки), при тестиров нии н копителя должен быть р вен 1, при норм льной р боте должен быть р вен 0. Бит 6, р вный 1, з прещ ет повторное считыв ние секторов при появлении ошибки контрольной суммы после первой попытки считыв ния, если бит 6 р вен 0 - р зреш ется повторное считыв ние и, если повторное считыв ние успешно - призн к ошибки не уст н влив ется, обычно р вен 0. Биты 0 - 2 определяют тип н копителя и выбир ют периоды импульсов сигн л "ш г": зн чение 100 --> 200 микросекунд; 101 --> 70 микросекунд; 110 и 111 --> 3 милисекунды; Ост льные в ри нты ук зыв ют н неопределенный тип н копителя и предпол г ют период в 3 милисекунды. При опис нии ком нд использов ны следующие сокр щения и обозн чения: 0 или 1 - конкретные зн чения битов; Х - бит не используется; У - номер устройств (0/1); П - использов ть бит повторных попыток обр щения к н копителю (бит 7 упр вляющего б йт ); ПС - использов ть бит повторного считыв ния (бит 6 упр вляющего б йт ); Ш - использов ть биты з д ния периодичности импульсов сигн л "ш г"; ЦСБ - ст ршие 2 бит номер цилиндр ; ЦМБ - мл дшие 8 бит номер цилиндр ; НГ - номер головки (5 бит); НС - номер н ч льного сектор (6 бит); ФЧ - ф ктор чередов ния (5 бит); ЧС - число секторов (8 бит). 9.1.3. Опис ние ком нд --> Проверк готовности н копителя (кл сс 0, опкод 0). Ком нд выбир ет з д нный н копитель и проверяет его готовность. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 0 0 0 0 │ ├───────────────────────────────┤ 1 │ 0 0 У Х Х Х Х Х │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Рек либров ть (кл сс 0, опкод 1). Ком нд уст н влив ет головки чтения/з писи н выбр нном н копителе н нулевой цилиндр. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 0 0 0 1 │ ├───────────────────────────────┤ 1 │ 0 0 У Х Х Х Х Х │ ├───────────────────────────────┤ 2 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 3 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 4 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 5 │ П 0 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> З прос состояния (кл сс 0, опкод 3). Ком нд под ется непосредственно после обн ружения ошибки (бит 1 порт 321h). Ком нд имеет длину 2 б йт и вызыв ет перед чу контроллером четырех б йтов результ т , определяющих п р метры возникшей ошибки. Форм т ком нды: ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 0 0 1 1 │ ├───────────────────────────────┤ 1 │ 0 0 У Х Х Х Х Х │ └───┴───┴───┴───┴───┴───┴───┴───┘ Форм т результ т : ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ б йт состояния │ ├───────────────────────────────┤ 1 │ 0 0 У <------ НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ <-------- НС -------->│ ├───────────────────────────────┤ 3 │<------------ ЦМБ ------------>│ └───┴───┴───┴───┴───┴───┴───┴───┘ Форм т б йт состояния: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ 0 │ │ │ │ │ │ │ Биты: └─┬─┴───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ │ │ │ │ │ │ │ │ │ │ └───┴───┴───┴──> 0-3: код ошибки │ │ │ │ └───┴──────────────────> 4-5: тип ошибки │ └──────────────────────────────> 7: 1=при выполнении ком нды произошло обр щение к н копителю Бит 7 б йт состояния р вен 1, если при выполнении ком нды произошло обр щение к н копителю, в этом случ е б йты 1 - 3 результ т содерж т корректную информ цию, ин че эт информ ция некорректн . Опис ние возможных ошибок приведено в т блице. ┌──────┬──────┬────────────────────────────────────────────────┐ │ Тип │ Код │ │ │ошибки│ошибки│ Зн чение │ ├──────┼──────┼────────────────────────────────────────────────┤ │ 00 │ 0000 │ Нет ошибки (норм льное з вершение ком нды) │ │ 00 │ 0001 │ Нет сигн л по линии "индекс" │ │ 00 │ 0010 │ Нет сигн л по линии "поиск з кончен" │ │ 00 │ 0011 │ Сигн л "ошибк з писи" │ │ 00 │ 0100 │ Н копитель не отвеч ет сигн лом готовности │ │ │ │ после р зблокировки │ │ 00 │ 0101 │ Не используется │ │ 00 │ 0110 │ Нет сигн л "дорожк 0" │ │ 00 │ 0111 │ Не используется │ │ 00 │ 1000 │ При выполнении ком нды "проверк готовности │ │ │ │ н копителя" н копитель н ходится в состоянии │ │ │ │ поиск │ ├──────┼──────┼────────────────────────────────────────────────┤ │ 01 │ 0000 │ Ошибк при считыв нии поля идентифик ции │ │ 01 │ 0001 │ Неиспр вим я ошибк чтения │ │ 01 │ 0010 │ Адресный м ркер не обн ружен │ │ 01 │ 0011 │ Не используется │ │ 01 │ 0100 │ Сектор не н йден │ │ 01 │ 0101 │ Ошибк поиск │ │ 01 │ 0110 │ Не используется │ │ 01 │ 0111 │ Не опис н │ │ 01 │ 1000 │ Неиспр вим я ошибк │ │ 01 │ 1001 │ Обн ружен фл г "дефектн я дорожк " │ ├──────┼──────┼────────────────────────────────────────────────┤ │ 10 │ 0000 │ Неверн я ком нд │ │ 10 │ 0001 │ Неверный логический дрес н копителя │ ├──────┼──────┼────────────────────────────────────────────────┤ │ 11 │ 0000 │ Неуспешно окончен ком нд "ди гностик │ │ │ │ внутреннего ОЗУ контроллер " │ │ 11 │ 0001 │ Неуспешно окончен ди гностик ППЗУ │ │ │ │ контроллер │ │ 11 │ 0010 │ Неуспешно окончен тест генер тор кодов │ │ │ │ коррекции ошибок (ECC) │ └──────┴──────┴────────────────────────────────────────────────┘ --> Форм тиров ние н копителя (кл сс 0, опкод 4). Ком нд форм тирует все цилиндры, н чин я с з д нного до конц н копителя и используя з д нное зн чение ф ктор чередов ния. При форм тиров нии перез писыв ются все поля идентифик ции, поля д нных з полняются б йт ми-з полнителями. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 0 1 0 0 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ 0 0 0 0 0 0 │ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │ 0 0 0 <------ ФЧ ------->│ ├───────────────────────────────┤ 5 │ П 0 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Проверк секторов (кл сс 0, опкод 5). Ком нд проверяет возможность считыв ния з д нных секторов с диск без перед чи их содержимого в ОЗУ ПЭВМ. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 0 1 0 1 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ <--------- НС -------->│ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │<------------ ЧС ------------->│ ├───────────────────────────────┤ 5 │ П ПС 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Форм тиров ние дорожки (кл сс 0, опкод 6). Ком нд форм тирует одну з д нную дорожку. В ост льном ее действие н логично ком нде "форм тиров ние н копителя". ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 0 1 1 0 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ 0 0 0 0 0 0 │ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │ 0 0 0 <------ ФЧ ------->│ ├───────────────────────────────┤ 5 │ П 0 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Форм тиров ние дефектной дорожки (кл сс 0, опкод 7). Ком нд форм тирует одну з д нную дорожку, уст н влив я фл ги "дефектн я дорожк " в з готовк х секторов. Ник к я информ ция в поля д нных не з писыв ется. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 0 1 1 1 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ 0 0 0 0 0 0 │ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │ 0 0 0 <------ ФЧ ------->│ ├───────────────────────────────┤ 5 │ П 0 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Чтение секторов (кл сс 0, опкод 8). Ком нд считыв ет з прошенное число секторов н чин я с з д нного. Все сектор должны н ходиться н одной дорожке. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 1 0 0 0 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ <--------- НС -------->│ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │<------------ ЧС ------------->│ ├───────────────────────────────┤ 5 │ П ПС 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> З пись секторов (кл сс 0, опкод 0Ah).(*) Ком нд з писыв ет з д нное в блоке п р метров число секторов н диск, н чин я с ук з нного н ч льного сектор . Все з писыв емые сектор должны н ходиться н одной дорожке. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 1 0 1 0 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ <--------- НС -------->│ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │<------------ ЧС ------------->│ ├───────────────────────────────┤ 5 │ П ПС 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Поиск цилиндр по номеру (кл сс 0, опкод 0Ch).(*) Ком нд осуществляет позициониров ние головок н копителя н з д нный цилиндр. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 1 1 0 0 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ Х Х Х Х Х Х │ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 5 │ П 0 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Чтение внутреннего ОЗУ контроллер (кл сс 0, опкод 0Eh).(*) Ком нд считыв ет содержимое внутреннего ОЗУ контроллер (512 б йт). Д нное ОЗУ используется контроллером при чтении/з писи и содержит информ цию, счит нную/з пис нную при выполнении последней ком нды чтения/з писи секторов. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 1 1 1 0 │ ├───────────────────────────────┤ 1 │ 0 0 Х Х Х Х Х Х │ ├───────────────────────────────┤ 2 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 3 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 4 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 5 │ Х Х Х Х Х Х Х Х │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> З пись внутреннего ОЗУ контроллер (кл сс 0, опкод 0Fh).(*) Ком нд обновляет содержимое внутреннего ОЗУ контроллер . ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 0 0 0 0 1 1 1 1 │ ├───────────────────────────────┤ 1 │ 0 0 Х Х Х Х Х Х │ ├───────────────────────────────┤ 2 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 3 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 4 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 5 │ Х Х Х Х Х Х Х Х │ └───┴───┴───┴───┴───┴───┴───┴───┘ -->Ди гностик внутреннего ОЗУ контроллер (кл сс 7,опкод 0).(*) Ком нд проверяет пр вильность р боты внутреннего ОЗУ контроллер . В случ е ошибки генерируется ошибк с типом 3 и кодом 0. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 1 1 1 0 0 0 0 0 │ ├───────────────────────────────┤ 1 │ 0 0 Х Х Х Х Х Х │ ├───────────────────────────────┤ 2 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 3 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 4 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 5 │ Х Х Х Х Х Х Х Х │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Тест устройств (кл сс 7, опкод 3). Ком нд проверяет состояние и р ботоспособность н копителя. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 1 1 1 0 0 0 1 1 │ ├───────────────────────────────┤ 1 │ 0 0 У Х Х Х Х Х │ ├───────────────────────────────┤ 2 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 3 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 4 │ Х Х Х Х Х Х Х Х │ ├───────────────────────────────┤ 5 │ П Х Х У Х Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Р сширенный тест контроллер (кл сс 0, опкод 4). Ком нд проверяет функциониров ние сост вных ч стей контроллер : микропроцессор , ОЗУ, ПЗУ и схем коррекции ошибок. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 1 1 1 0 0 1 0 0 │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> Считыв ние без контроля (кл сс 7, опкод 5). Ком нд выполняет считыв ние поля д нных одного сектор вместе с его контрольной суммой. П р метр "число секторов" игнорируется. При обн ружении ошибки контрольной суммы фл г ошибки не выст вляется и коррекция не производится. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 1 1 1 0 0 1 0 1 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ <--------- НС -------->│ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │<------------ ЧС ------------->│ ├───────────────────────────────┤ 5 │ П 0 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ --> З пись без контроля (кл сс 7, опкод 6). Ком нд выполняет з пись поля д нных одного сектор и его контрольной суммы, при этом логик коррекции ошибок не используется. П р метр "число секторов" не используется. ┌───┬───┬───┬───┬───┬───┬───┬───┐ 0 │ 1 1 1 0 0 1 1 0 │ ├───────────────────────────────┤ 1 │ 0 0 У <------- НГ ------>│ ├───────────────────────────────┤ 2 │ ЦСБ <--------- НС -------->│ ├───────────────────────────────┤ 3 │<----------- ЦМБ ------------->│ ├───────────────────────────────┤ 4 │<------------ ЧС ------------->│ ├───────────────────────────────┤ 5 │ П 0 0 0 0 Ш Ш Ш │ └───┴───┴───┴───┴───┴───┴───┴───┘ 9.1.4. Р зметк диск Д нные н жесткий диск з писыв ются в сектор х. Сектор р спол г ются н дорожк х. Нумер ция дорожек н чин ется с внешней стороны пл стины (т м р сположен нулев я дорожк ). Количество пл стин (дисков) и головок, т к же к к и м ксим льное число дорожек, могут колеб ться в довольно широких предел х и з висят от тип конкретного н копителя. Дорожк обычно содержит от 8 до 26 секторов и для д нного конкретного н копителя число секторов н дорожке постоянно. Н ч ло дорожки определяется сигн лом "индекс", который генерируется н копителем при к ждом обороте диск . Д лее следует первый сектор дорожки. Второй сектор будет отстоять от первого н число секторов, р вное зн чению ф ктор чередов ния минус 1, третий еще н столько же и т. д. Т ким обр зом при ф кторе чередов ния р вном 3, сектор н 17-секторной дорожке будут р спол г ться следующим обр зом: ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ │ 1│ 7│13│2 │8 │14│3 │9 │15│4 │10│16│ 5│11│17│ 6│12│ ├──┴──┴──┴┬─┴──┴──┴┬─┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┤ │ │ ф ктор │ │ │ │чер-ния │ │ │<--индекс│<------>│ индекс --> │ Форм т сектор приведен в т блице. ┌───────────┬───────────────────────────────────────────┬──────┐ │Обозн чение│ Н зн чение │Длин │ │ │ │(б йт)│ ├───────────┼───────────────────────────────────────────┼──────┤ │ АМ │ Адресный м ркер │ 4 │ │ ИНТ1 │ Интерв л │ 9-12 │ ├───────────┼───────────────────────────────────────────┼──────┤ │ │ Поле идентифик ции: │ │ │ СИНХ1 │ Синхроб йт │ 1 │ │ ИНТ2 │ Интерв л │ 2 │ │ СРВ │ Б йт для ср внения │ 1 │ │ ЦСБ │ Ст рший б йт номер цилиндр │ 1 │ │ ЦМБ │ Мл дший б йт номер цилиндр │ 1 │ │ ГЛВ │ Номер головки │ 1 │ │ СЕКТ │ Номер сектор │ 1 │ │ ФЛАГ │ Фл говый б йт │ 1 │ │ НУЛЬ │ Нулевой б йт │ 1 │ │ КС1 │ Контрольн я сумм поля идентифик ции │ 4 │ ├───────────┼───────────────────────────────────────────┼──────┤ │ ИНТ3 │ Интерв л │ 16 │ ├───────────┼───────────────────────────────────────────┼──────┤ │ │ Обл сть д нных: │ │ │ СИНХ2 │ Синхроб йт │ 1 │ │ ИНТ4 │ Интерв л │ 2 │ │ ДАННЫЕ │ Поле д нных │ 512 │ │ КС2 │ Контрольн я сумм поля д нных │ 4 │ ├───────────┼───────────────────────────────────────────┼──────┤ │ ИНТ5 │ Интерв л │ 43 │ └───────────┴───────────────────────────────────────────┴──────┘ Н ч ло сектор обозн ч ется при помощи уник льной комбин ции, н зыв емой дресным м ркером. Пять интерв лов, обозн ченных в т блице ИНТ1 - ИНТ5, з полняются нулями, причем длин ИНТ2 и ИНТ4 постоянн и р вн 2 б йт м, в то время к к ИНТ1, ИНТ3 и ИНТ5 могут иметь р зную длину, немного отлич ющуюся от зн чений, приведенных в т блице. Эти три интерв л предн зн чены для подготовки н копителя к считыв нию (з писи) следующей з ним обл сти, р зличие в длине объясняется тем, что дресный м ркер, поле идентифик ции и д нные могут з писыв ться в р зное время поверх р нее имевшейся информ ции, что не обеспечив ет точного совп дения физической длины з пис нной обл сти и р нее имевшейся н этом месте обл сти. Отличия в длине могут сост влять несколько бит, чем объясняется н личие после после интерв лов синхроб йт , позволяющего определить истинную н ч льную гр ницу обл сти и пр вильно сгруппиров ть все последующие биты по б йт м. Б йт СРВ имеет постоянное зн чение для всех секторов и используется для проверки пр вильности считыв ния поля идентифик ции. Фл говый б йт содержит служебную информ цию, в ч стности отмеч ет дефектность сектор , если он не пригоден для з писи. Контрольные суммы служ т для проверки пр вильности считыв ния информ ции из поля идентифик ции и обл сти д нных и вычисляются специ льным генер тором кодов коррекции ошибок (Error Correction Code, ECC) с производящим полиномом 32-й степени. 9.2. Контроллер жестких дисков для АТ-подобных ПЭВМ IBM PC AT отлич ется от всех предыдущих моделей IBM PC и совместимых ПЭВМ в следующем: - ст нд ртный BIOS обеспечив ет возможность р боты к к с н копителями н гибких, т к и с н копителями н жестких диск х; - контроллеры жестких и гибких дисков р сположены н одной пл те; - дрес портов ввод -вывод , предн зн ченных для упр в- ления жестким диском, и н зн чение портов полностью отлич ются от ХТ-подобных ПЭВМ. Возможно подключение к одному ПЭВМ двух жестких дисков. К ждый диск имеет свой н бор портов (1F0h-1F7h для первого и 170h-177h для второго). Ниже будут опис ны порты только первого диск . Н зн чение портов второго диск н логично первому. 9.2.1. Опис ние портов ввод -вывод Порт 1F0h Предн зн чен для обмен д нными с внутренним ОЗУ контроллер , являющимся промежуточным звеном между опер тивной п мятью ПЭВМ и н копителем. Порт 1F1h. При чтении через этот порт можно получить информ цию о последней возникшей ошибке: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ 0 │ │ 0 │ │ │ │ Бит: └─┬─┴─┬─┴───┴─┬─┴───┴─┬─┴─┬─┴─┬─┘ ──── │ │ │ │ │ └─>0: 1= дресный м ркер д нных не │ │ │ │ │ н йден │ │ │ │ └─────>1: 1=ошибк н нулевой дорожке │ │ │ └─────────>2: 1=выполнение ком нды прекр - │ │ │ щено прогр ммно, ком нд │ │ │ не з вершил сь │ │ └─────────────────>4: 1=идентифик тор сектор не │ │ н йден │ └─────────────────────────>6: 1=неиспр вим я ошибк в д н- │ ных, ошибк контрольной │ суммы └─────────────────────────────>7: 1=дефектный сектор Порт 1F2h. Чтение/з пись числ секторов для последующей опер ции. Порт 1F3h. Чтение/з пись п р метр "номер сектор " для последующей опер ции. Порт 1F4h. Чтение/з пись ст рших битов номер цилиндр для последующей опер ции (биты 0 - 1 - это биты 8 - 9 в 10-битовом номере цилиндр ). Порт 1F5h. Чтение/з пись мл дших восьми битов номер цилиндр для последующей опер ции. Порт 1F6h. Чтение/з пись номер устройств и головки для последующей опер ции. Порт 1F7h (з пись). Вывод ком нды по упр влению н копителем. Порт 1F7h (чтение). Чтение состояния н копителя и результ тов предыдущей ком нды: 7 6 5 4 3 2 1 0 ┌───┬───┬───┬───┬───┬───┬───┬───┐ │ │ │ │ │ │ │ │ │ Бит: └─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ──── │ │ │ │ │ │ │ └─>0: 1=предыдущ я ком нд з вер- │ │ │ │ │ │ │ шил сь с ошибкой │ │ │ │ │ │ └─────>1: 1=сигн л "индекс" │ │ │ │ │ └─────────>2: 1=д нные при выполнении пос- │ │ │ │ │ ледней опер ции были скор- │ │ │ │ │ ректиров ны при помощи │ │ │ │ │ лгоритм ECC │ │ │ │ └─────────────>3: 1=идет процесс обмен д нными │ │ │ └─────────────────>4: 1=поиск з вершен │ │ └─────────────────────>5: 1=ошибк з писи │ └─────────────────────────>6: 1=устройство готово для чте- │ ния, з писи или поиск └─────────────────────────────>7: 1=устройство з нято выполне- нием ком нды ( ост льные биты не несут смысловой н грузки) 9.2.2. Систем ком нд Код ком нды з носится в порт 1F7h после того, к к подготовлены все п р метры в порт х 1F2h - 1F6h. Выполнение ком нды н чин ется ср зу после з несения в порт 1F7h код ком нды. Ком нд состоит из одного б йт . Ст ршие 4 бит содерж т код требуемой опер ции, мл дшие содерж т п р метры. Перечень ком нд с возможными зн чениями п р метров приведен в т блице. ┌────────┬───────────────────────┬─────────────────────────────┐ │ Код │ Н зн чение │ П р метры │ │опер ции│ │ │ ├────────┼───────────────────────┼─────────────────────────────┤ │ 1 │ Рек либров ть (сброс │ Период импульсов сигн л │ │ │ головок н цилиндр 0) │ "ш г" │ ├────────┼───────────────────────┼─────────────────────────────┤ │ 2 │ Чтение секторов │ Биты, определяющие необходи-│ ├────────┼───────────────────────┤ мость повторных обр щений │ │ 3 │ З пись секторов │ к диску и повторных попыток │ ├────────┼───────────────────────┤ считыв ния при ошибк х │ │ 4 │ Проверк секторов │ контрольной суммы │ ├────────┼───────────────────────┼─────────────────────────────┤ │ 5 │ Форм тиров ние дорожки│ П р метр = 0 │ ├────────┼───────────────────────┼─────────────────────────────┤ │ 7 │ Поиск цилиндр │ Период импульсов сигн л │ │ │ │ "ш г" │ ├────────┼───────────────────────┼─────────────────────────────┤ │ 9 │ Ди гностик │ П р метр = 0 │ │ ├───────────────────────┼─────────────────────────────┤ │ │ Уст новк п р метров │ П р метр = 1 │ │ │ н копителя (м ксим ль-│ │ │ │ ное число головок и │ │ │ │ секторов) │ │ └────────┴───────────────────────┴─────────────────────────────┘ 10. Печ т ющее устройство Устройство печ ти IBM PC-подобных компьютеров обычно подключ ется к п р ллельному интерфейсу. Для подключения используется ст нд ртный р зъем Centronix, имеющий 36 конт ктных выходов (отечественный н лог ИРПР-М). Допуск ется три в ри нт подключения принтеров к ПЭВМ: - д птер принтер может н ходится н одной пл те с д птером монохромного дисплея, при этом используются порты 3BCh - 3BEh; - к ПЭВМ могут подключены дв отдельных д птер для упр вления принтер ми, использующие порты 378h - 37Ah (первый д птер) и 278h - 27Ah (второй д птер). При прогр ммиров нии принтер в жно зн ть дрес б зового порт ввод -вывод (первого порт из трех); дрес б зовых портов хр нятся в обл сти д нных BIOS, н чин я с дрес 0:408h (LPT1) и д лее по слову н принтер до LPT4. Д льнейшее опис ние предпол г ет, что б зовый дрес принтер р вен 378h. Порт Опер ция Опис ние ──────────────────────────────────────────────────────────────── 378h З пись Регистр д нных - сюд з сыл ется б йт, посыл е- мый н печ ть Чтение Регистр д нных - позволяет счит ть последний б йт, перед нный принтеру 379h Чтение Регистр состояния принтер : 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬─┬─┬─┐ │ │ │ │ │ │X│X│X│ Биты: └┬─┴┬─┴┬─┴┬─┴┬─┴─┴─┴─┘ ───── │ │ │ │ └─────────> 3: 0=при печ ти возникл ошибк │ │ │ └────────────> 4: 0=принтер в втономном режиме │ │ └───────────────> 5: 1=сигн л "конец бум ги" │ └──────────────────> 6: 0=принтер готов к печ ти │ следующего символ └─────────────────────> 7: 0=принтер з нят, н ходится в втономном режиме или произошл ошибк 37Ah Чтение/ Регистр упр вления принтером: З пись 7 6 5 4 3 2 1 0 ┌─┬─┬─┬──┬──┬──┬──┬──┐ │X│X│X│ │ │ │ │ │ Биты: └─┴─┴─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ───── │ │ │ │ └───> 0: бит з пуск печ ти (см. ниже) │ │ │ └──────> 1: 1=после возвр т к ретки выводить │ │ │ перевод строки (в MS-DOS должен │ │ │ быть сброшен) │ │ └─────────> 2: 1=иници лизиров ть принтер │ └────────────> 3: 1=р зрешить вывод н печ ть (должен │ быть всегд уст новлен) └───────────────> 4: 1=р зрешить прерыв ния от принтер ──────────────────────────────────────────────────────────────── Примеч ния. 1. Для з пуск печ ти символ нужно н короткое время уст новить бит 0 регистр упр вления, з тем сбросить его. 2. Прерыв ние происходит по оконч нии вывод символ н печ ть: для первого принтер н седьмом уровне контроллер прерыв ний (IRQ7, вектор прерыв ния 0Fh), для второго принтер - н пятом уровне (IRQ5, вектор 0Dh). Следует отметить т кже, что IRQ5 используется XT-контроллером жестких дисков для генер ции своих прерыв ний. Обычно этот бит не используется (сбр сыв ется), проверк готовности принтер производится н основ нии опрос регистр состояния. Типичн я последов тельность действий для вывод н печ ть одного символ т ков : - вывести перед в емый б йт в регистр д нных; - в цикле проверять состояние принтер до устaновки бит 7 регистр состояния (здесь возможно использов ние т йм ут ); - проверить биты 3-5 регистр состояния н н личие ошибки; - уст новить и ср зу же сбросить нулевой бит регистр упр вления, для этого подходит следующ я последов тельность ком нд: mov dx,37Ah ; дрес регистр упр вления mov al,00001101b ;уст новить биты 0,2 и 3 out dx,al ;вывести ком нду xor al,1 ;сбросить бит 0 out dx,al ;повторно вывести ком нду - д лее можно прочит ть и з прогр ммиров ть регистр состояния и перейти к печ ти следуюего символ . Несмотря н простоту упр вления, принтер предст вляет из себя дост точно сложное устройство, имеющее свой микропроцессор, ПЗУ и ОЗУ. Микропроцессор используется для обр ботки упр вляющих последов тельностей и упр вления печ тью. ПЗУ содержит опис ние рисунков символов в з висимости от их код и выбр нной т блицы и прогр ммы н языке используемого микропроцессор . ОЗУ используется для временного хр нения введенных д нных и спроектиров нных пользов телем символов. Ряд принтеров, помимо интерфейс Centronix, могут поключ ться и к последов тельному интерфейсу. Принтер обр б тыв ет ряд спецсимволов (т ких, к к звонок, з бой, горизонт льн я и вертик льн я т буляция), т кже имеет дост точно сложную систему ком нд для изменения режимов р боты и упр вления печ тью. Обычно ком нды н чин ются с символ ESC (шестн дц тиричный код 1Bh) и имеют длину от двух б йт и более (существуют ком ндные последов тельности, включ ющие по несколько килоб йт информ ции, н пример ком нды з грузки спроектиров нных пользов телем шрифтов). Спецсимволы и б йты ком нд перед ются принтеру т к же, к к и обычные символы, предн зн ченые для печ ти, опис нным выше способом. Подобный способ упр вления удобен для прогр ммного изменения режимов р боты устройств . Учитыв я, что выпуском принтеров для ПЭВМ з ним ется дост точно большое число комп ний и возможности принтеров постоянно совершенствуются, нет смысл приводить полностью к кую-либо систему ком нд, т к к к, во-первых, он в р зных м рк х и моделях принтеров р зличн , и, во-вторых, дост точно полно описыв ется в документ ции н к ждый конкретный принтер. Существует 2 основных ст нд рт н систему ком нд и т блицу используемых символов (ст нд рты IBM и EPSON), которых в основном придержив ются фирмы-изготовители, ост вляя з собой пр во вносить в них изменения и дополнения. Единого ст нд рт к к н систему ком нд, т к и н р сположение и рисунки символов второй половины т блицы ASCII (коды 129-255) нет. Н иболее ч сто используемые ком нды: - уст новк вид шрифт и режим печ ти; - черновой текстовый (draft) норм льной ширины (pica), узкий (condensed) или средней ширины (elita). - к чественный шрифт (NLQ, Proportional, Orator, Script и т. д.); -выбор т блицы символов из ПЗУ (обычно имеется несколько т блиц, отлич ющихся р сположением упр вляющих кодов, н личием и р сположением псевдогр фических символов или курсив ); - з грузк в ОЗУ принтер спроектиров нных пользов телем шрифтов и р бот с ОЗУ принтер (именно в этой группе ком нд, имеются н ибольшие р зличия между р зными моделями); - упр вление принтером в режиме точечной гр фики; - уст новк служебных п р метров (р змеры отступов, стр ницы, ш г т буляции, р сстояние между строк ми) и изменение х р ктеристик (сброс, включение/отключение д тчик конц бум ги, печ ть в одну или в две стороны и т. п.). Ряд х р ктеристик и режимов р боты может выбир ться к к прогр ммно, т к и пп р тно с использов нием кнопок и кл виш н лицевой п нели и DIP-переключ телей. Существуют х р ктеристики, изменить которые можно только пп р тно (н пример, возможность з грузки шрифтов или р змер используемого ОЗУ). 11.Последов тельный интерфейс RS-232 11.1. Общие сведения В сот в IBM PC могут входить до четырех последов тельных интерфейсов, р бот ющих в ст нд рте RS-232 (отечественный н лог - стык С2) и именуемых СОМ1 - СОМ4. Им выделены следующие дрес в обл сти портов ввод -вывод : СОМ1: 3F8h-3FFh COM3: 338h-33Fh COM2: 278h-2FFh COM4: 238h-23Fh (интерфейсы СОМ3 и СОМ4 поддержив ются только в моделях PS/2). К ждый интерфейс связ н с определенным уровнем контроллер прерыв ний: СОМ1 вызыв ет прерыв ние IRQ4 (Int 0Ch) COM2 вызыв ет прерыв ние IRQ3 (Int 0Bh) СОМ3 и СОМ4 не имеют ст нд ртных векторов прерыв ний. К ждое из устройств RS-232 предст вляет собой контроллер 8250, осн щенный 25- или 9- штырьковым р зъемом н з дней стенке корпус ПЭВМ. Этот р зъем может использов ться для подключения мыши, гр фопостроителя или орг низ ции связи между ПЭВМ. Конт кты стык RS-232 имеют следующие н именов ния ┌────────┬─────────┬──────────────┬───────────────────┬────────┐ │Н зв ние│ Имя цепи│Номер конт кт │ Н зн чение │Н пр в- │ │сигн л ├───┬─────┼─────┬────────┤ │ление │ │ │EIA│CCITT│9-шт.│ 25-шт. │ │ │ ├────────┼───┼─────┼─────┼────────┼───────────────────┼────────┤ │ DCD │CF │ 109 │ 1 │ 8 │Связь модемов │В ПЭВМ │ │ │ │ │ │ │уст новлен │ │ │ RX │BB │ 104 │ 2 │ 3 │Приним емые д нные │В ПЭВМ │ │ TX │BA │ 103 │ 3 │ 2 │Перед в емые д нные│Из ПЭВМ │ │ DTR │CD │108/2│ 4 │ 20 │Готовность ПЭВМ к │Из ПЭВМ │ │ │ │ │ │ │р боте │ │ │ SG │AB │ 102 │ 5 │ 7 │Сигн льн я земля │ ──── │ │ DSR │CC │ 107 │ 6 │ 6 │Готовность модем к│В ПЭВМ │ │ │ │ │ │ │р боте │ │ │ RTS │CA │ 105 │ 7 │ 4 │З прос н перед чу │Из ПЭВМ │ │ CTS │CB │ 106 │ 8 │ 5 │Готовность модем к│В ПЭВМ │ │ │ │ │ │ │ к перед чи │ │ │ RI │CE │ 125 │ 9 │ 22 │Индик тор вызов │В ПЭВМ │ │ FG │AA │ 101 │ ── │ 1 │З щитн я земля │ ──── │ └────────┴───┴─────┴─────┴────────┴───────────────────┴────────┘ Контроллер стык RS-232 является полностью прогр ммируемым устройством; вы можете з д ть следующие п р метры обмен : количество битов д нных и стоп-битов, вид четности и скорость обмен в бод х (бит/с). 11.2. Опис ние портов Ниже опис ны порты ввод -вывод для СОМ1, имеющего б зовый дрес 3F8h. Обр тите вним ние, что порты 3F8h и 3F9h имеют р зное н зн чение в з висимости от бит 7 порт 3F8h (т. н. бит DLAB - Divisor Latch Access Bit). Порт Опер ция Опис ние ──────────────────────────────────────────────────────────────── 3F8h З пись Регистр перед тчик - сюд з сыл ется б йт для перед чи Чтение Регистр приемник - отсюд извлек ется принятый б йт З пись Если DLAB=1, то сюд з сыл ется мл дший б йт скорости обмен (см. порт 3F9h) 3F9h З пись Если DLAB=1, то сюд з сыл ется ст рший б йт скорости обмен . Скорость з д ется зн чением делителя, р вным 115200/V, где V - скорость в бод х. Н пример, для скорости 9600 бод делитель р вен 115200/9600=12=0Ch, поэтому нужно вывести 0Ch в порт 3F8h и 0 в порт 3F9h. З пись Регистр упр вления прерыв ниями (1 = р зрешить прерыв ние): 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │0 │0 │0 │ 0│ │ │ │ │ Бит: └──┴──┴──┴──┴┬─┴┬─┴┬─┴┬─┘ ──── │ │ │ └─> 0: прерыв ние по приему символ │ │ └────> 1: прерыв ние по з вершению перед чи │ │ символ │ └───────> 2: прерыв ние по обрыву линии или │ или ошибке в линии └──────────> 3: прерыв ние по изменению состояния модем (любой из линий CTS, DSR, RI и DCD) 3FAh Чтение Регистр идентифик ции прерыв ния. Когд произошло прерыв ние, здесь содержится причин , вызв вш я его: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │0 │0 │0 │ 0│ 0│ │ │ Бит: └──┴──┴──┴──┴──┴──┼──┴┬─┘ ──── │ │ │ └──> 0: 0=есть отложенные прерыв ния └──────> 1-2: причин прерыв ния: 11=ошибк или обрыв линии; сбр сыв ется чтением регистр состояния линии (порт 3FDh) 10=принят символ; сбр сыв ется чтением приемник (порт 3F8h) 01=перед н символ; сбр сыв ется з писью символ в регистр перед тчик (порт 3F8h) 00=изменение состояния модем (линий CTS, DSR, RI или DCD); сбр сыв ется чтением регистр состояния модем (порт 3FEh) 3FBh Чтение/ Регистр упр вления линией: З пись 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ Биты: └┬─┴┬─┴┬─┴──┼──┴┬─┴──┼──┘ ───── │ │ │ │ │ │ │ │ │ │ │ └───> 0-1: число битов д нных: │ │ │ │ │ 00=5, 01=6, 10=6, 11=8 │ │ │ │ └────────> 2: число стоп-битов: │ │ │ │ 0=1, 1=1.5 при 5 бит х д нных │ │ │ │ и 2 в противном случ е │ │ │ └────────────> 3-4: тип четности: │ │ │ X0=нет, │ │ │ 01=нечетн я, │ │ │ 11=четн я │ │ └─────────────────> 5: постоянн я четность │ │ 0=отмен постоянной четности │ │ 1=постоянный бит четности, │ │ з висит от битов 3-4: │ │ биты 3-4=01 - бит четности │ │ всегд 1 │ │ биты 3-4=11 - бит четности │ │ всегд 0 │ │ биты 3-4=X0 - без бит четности │ └────────────────────> 6: 1=имитиров ть обрыв линии │ (посылк нулей) └───────────────────────> 7: бит DLAB: 1=порты 3F8h и 3F9h для з грузки скорости обмен ; 0=порты 3F8h и 3F9h в обычном режиме 3FCh З пись Регистр упр вления модемом 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ 0│ 0│ 0│ │ │ │ │ │ Бит: └──┴──┴──┴┬─┴┬─┴┬─┴┬─┴┬─┘ ─── │ │ │ │ └─> 0: 1=уст новить выход DTR │ │ │ └────> 1: 1=уст новить выход RTS │ │ └───────> 2: 1=уст новить OUT1 (не используется) │ └──────────> 3: 1=уст новить OUT2 (р зрешить преры- │ в ния от RS-232) └─────────────> 4: 1=ди гностический режим (посыл ть выход н вход стык ). 3FDh Чтение Регистр состояния линии. Биты 1-4 вызыв ют прерыв ния по ошибке, если оно р зрешено: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ 0│ │ │ │ │ │ │ │ Бит: └──┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ─── │ │ │ │ │ │ └─> 0:1=д нные приняты. Сбр сыв ется │ │ │ │ │ │ чтением приемник │ │ │ │ │ └────> 1:1=потеря предыдущего символ │ │ │ │ └───────> 2:1=ошибк четности │ │ │ └──────────> 3:1=неверный стоп-бит │ │ └─────────────> 4:1=обн ружен обрыв линии │ └────────────────> 5:1=сдвиговый регистр перед тчик пуст. │ Можно перед в ть след. символ └───────────────────> 6:1=регистр перед тчик пуст. Нет обр б тыв емых д нных. 3FEh Чтение Регистр состояния модем . Биты 0-3 вызыв ют прерыв ниe по изменению состояния модем , если оно р зрешено: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ │ Бит: └┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ─── │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └──> 0:1=изменилось состояние линии CTS │ │ │ │ │ │ └─────> 1:1=изменилось состояние линии DSR │ │ │ │ │ └────────> 2:1=изменилось состояние линии RI │ │ │ │ └───────────> 3:1=изменилось состояние линии DCD │ │ │ └──────────────> 4: состояние линии CTS │ │ └─────────────────> 5: состояние линии DSR │ └────────────────────> 6: состояние линии RI └───────────────────────> 7: состояние линии DCD Примеч ние: "Изменилось состояние линии..." озн ч ет, что д нн я линия стык RS-232 изменил свое состояние по ср внению с последним чтением этого регистр . 11.3. Порядок иници лиз ции 8250 Для подготовки контроллер 8250 к р боте необходимо выполнить следующие ш ги. 1. Уст новить бит DLAB порт 3FBh и з сл ть делитель, з д ющий скорость обмен , в порты 3F8h и 3F9h. 2. Иници лизиров ть регистр упр вления линией (порт 3FBh); при этом сбросить бит DLAB. 3. Иници лизиров ть регистр упр вления модемом (порт 3FCh). 4. Иници лизиров ть регистр упр вления прерыв ниями (порт 3F9h) и, если прерыв ния р зрешены, уст новить дрес прогр ммы обр ботки прерыв ний от стык RS-232. В к честве пример приведем н бор подпрогр мм, обеспечив - ющих обмен через порт COM1 в дуплексном режиме со скоростью 1200 бод. title RS232 _DATA segment para public Buf_Size equ 1024 ; р змер буфер Source db Buf_Size+2 dup (0) ; буфер прием символов Src_ptr dw Source ; ук з тель позиции в буфере Count dw 0 ; количество символов в буфере Ser_ip dw 0 ; ст рый дрес Int 0Ch Ser_cs dw 0 Save_ds dw 0 ; служебные переменные Int_sts db 0 Overrun db 0 _DATA ends _TEXT segment para public assume cs:_TEXT, ds:_DATA public Ser_Ini:near, Ser_Rst:near public Get_Chr:near, Out_Chr:near ;╔════════════════════════════════════════════════════════════╗ ;║ Подпрогр мм иници лиз ции стык COM1. ║ ;╚════════════════════════════════════════════════════════════╝ Ser_Ini proc near push ax ; сохр нить регистры push dx push bx push es in al,21h ; IMR 1-го контролер прерыв ний or al,10h ; з претить прерыв ние IRQ4 от COM1 out 21h,al mov al,0Ch mov ah,35h int 21h ; взять вектор Int 0Ch в es:bx mov Ser_ip,bx ; и сохр нить его mov Ser_cs,es mov al,0Ch mov dx,offset Ser_int push ds mov bx,cs mov ds,bx mov ah,25h int 21h ; уст новить Int 0Ch = ds:dx pop ds pop es pop bx cli ; з претить прерыв ния in al,21h ; IMR 1-го контроллер прерыв ний and al,not 10h out 21h,al ; р зрешить прерыв ния от COM1 mov dx,3FBh ; регистр упр вления линией in al,dx or al,80h ; уст новить бит DLAB out dx,al mov dx,3F8h mov al,60h out dx,al ; мл дший б йт для скорости 1200 бод inc dx mov al,0 out dx,al ; ст рший б йт скорости mov dx,3FBh ; регистр упр вления линией mov al,00000011b ; 8 бит, 2 стоп-бит , без четности out dx,al mov dx,3F9h ; регистр р зрешения прерыв ний mov al,1 ; р зрешить прерыв ния по приему out dx,al nop ; и чуть-чуть подожд ть nop mov dx,3FCh ; регистр упр вления модемом mov al,00001011b ; уст новить DTR, RTS и OUT2 out dx,al sti ; р зрешить прерыв ния mov dx,3F8h ; регистр д нных in al,dx ; сбросить буфер прием pop dx pop ax ret Ser_Ini endp ;╔════════════════════════════════════════════════════════════╗ ;║ Подпрогр мм отключения стык COM1. ║ ;╚════════════════════════════════════════════════════════════╝ Ser_Rst proc near push ax ; сохр нить регистры push dx Wait_Free: mov dx,3FDh ; регистр состояния линии in al,dx jmp short $+2 ; коротк я з держк test al,60h ; перед ч окончен ? jz Wait_Free ; ждем, если нет mov dx,3F9h ; регистр р зрешения прерыв ний mov al,0 ; з претить прерыв ния out dx,al jmp short $+2 ; еще подождем... jmp short $+2 mov dx,3FCh ; регистр упр вления модемом mov al,00000011b ; ктивиров ть DTR и RTS out dx,al jmp short $+2 jmp short $+2 push bx mov al,0Ch mov dx,Ser_ip push ds mov bx,Ser_cs mov ds,bx mov ah,25h int 21h ; восст новить вектор Int 0Ch pop ds pop bx cli ; з прет прерыв ний in al,21h ; чит ть м ску прерыв ний jmp short $+2 or al,10h ; з претить IRQ4 out 21h,al sti ; р зрешение прерыв ний pop dx pop ax ret Ser_Rst endp ;╔════════════════════════════════════════════════════════════╗ ;║ Подпрогр мм обр ботки прерыв ний от COM1. ║ ;╚════════════════════════════════════════════════════════════╝ Ser_Int proc far push ax push dx push ds mov ax,seg _DATA mov ds,ax mov dx,3FAh ; регистр идентифик ции прерыв ний in al,dx mov Int_Sts,al; сохр ним его содержимое test al,1 ; есть отложенные прерыв ния? jz Is_Int ; д pop Save_ds ; нет, перед ем упр вление pop dx ; ст рому обр ботчику Int 0Ch pop ax push Ser_cs push Ser_ip push Save_ds pop ds ret ; длинный переход Is_Int: mov al,64h ; посл ть EOI для IRQ4 out 20h,al ; в 1-й контроллер прерыв ний test Int_Sts,4 ; прерыв ние по приему? jnz Read_Char ; д No_Char: sti ; нет, р зрешить прерыв ния jmp Int_Ret ; и з кончить обр ботку Int 0Ch Read_Char: mov dx,3FDh ; регистр состояния линии in al,dx and al,2 mov Overrun,al; ovvrrun<>0, если был потеря символ mov dx,3F8h ; регистр д нных in al,dx ; вводим символ or al,al ; если принят нуль, jz No_Char ; то игнорируем его push bx mov ah,Overrun or ah,ah ; предыдущий символ потерян? jz Save_Char ; нет mov ah,al ; д , mov al,7 ; з меняем его н звонок (07h) Save_Char: mov bx,Src_ptr; з носим символ в буфер mov [bx],al inc Src_ptr ; и обновляем счетчики inc bx cmp bx,offset Src_ptr-2 ; если конец буфер jb Ser_Int_1 mov Src_ptr,offset Source ; то "з циклив ем" н н ч ло Ser_Int_1: cmp Count,Buf_Size ; буфер полон? jae Ser_Int_2 ; д inc Count ; нет, учесть символ Ser_Int_2: or ah,ah ; если был потеря символ jz Ser_Int_3 mov al,ah ; то з нести в буфер с м символ xor ah,ah jmp short Save_Char Ser_Int_3: pop bx sti ; р зрешить прерыв ния Int_Ret: pop ds pop dx pop ax iret Ser_Int endp ;╔════════════════════════════════════════════════════════════╗ ;║ Подпрогр мм вывод символ AL в порт. ║ ;║ При ошибке возвр щ ет CF=1, ин че CF=0. ║ ;╚════════════════════════════════════════════════════════════╝ Out_Chr proc near push ax push cx push dx mov ah,al sub cx,cx Wait_Line: mov dx,3FDh ; регистр состояния линии in al,dx test al,20h ; стык готов к перед че? jnz Output ; д jmp short $+2 jmp short $+2 loop Wait_Line ; нет, ждем pop dx pop cx pop ax stc ; нет готовности порт ret Output: mov al,ah mov dx,3F8h ; регистр д нных jmp short $+2 out dx,al ; вывести символ pop dx pop cx pop ax clc ; норм льный возвр т ret Out_Chr endp ;╔════════════════════════════════════════════════════════════╗ ;║ Подпрогр мм ввод символ из порт в AL. ║ ;║ Если буфер пуст, возвр щ ет CF=1, ин че CF=0. ║ ;╚════════════════════════════════════════════════════════════╝ Get_Chr proc near cmp Count,0 ; буфер пуст? jne loc_1729 ; нет stc ; д , возвр т по ошибке ret loc_1729: push si cli ; з претим прерыв ния mov si,Src_ptr sub si,Count cmp si,offset Source jae loc_1730 add si,Buf_Size loc_1730: mov al,[si] ; выберем символ dec Count ; и уменьшим счечик sti ; р зрешение прерыв ний pop si clc ; и норм льный возвр т ret Get_Chr endp _TEXT ends end 12. Игровой д птер Игровой д птер - это н лого-цифровой преобр зов тель, который может использов ться для подключения к ПЭВМ н логовых устройств (н пример, джойстик или измерительных приборов). Он приним ет до четырех цифровых входов тип "включено/выключено" (н пример, для н ж тия кнопок) и до четырех н логовых входов (т ких, к к координ ты джойстик или пок з ния электронного термометр ). Игровой д птер подключен в IBM PC к порту ввод 201h. Б йт, введенный из этого порт , имеет следующий форм т: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │B2 B1 A2 A1│By Bx Ay Ax│ Биты: └──┴──┼──┴──┴──┴──┼──┴──┘ ───── │ └──────> 0-3: координ ты ( н логовые входы) └──────────────────> 4-7: триггеры (цифровые входы) Для чтения триггеров используются ком нды: mov dx,201h out dx,al ;иницииров ть обмен, AL -любой б йт in al,dx ;чит ть порт, биты 4-7 - 0=кнопк н ж т ; 1=отпущен Ан логовые входы считыв ются путем отслежив ния времени,в течениe которого соответствующий бит уст новлен в единицу, после ком нды OUT 201h,XXX. Пример чтения координ ты X устройств А: mov dx,201h out dx,al ;иницииров ть обмен, AL-любой б йт mov cx,-1 ;счетчик для цикл Again: in al,dx inc cx ;увеличить счетчик test al,1 ;бит AX сброшен? jne Again ;нет, ждем Результ т в СX ук зыв ет координ ты Х. Этот способ з висит от т ктовой ч стоты ЦП, поэтому ккур тней было бы использов ть не счетчик цикл , системный т ймер. 13. CMOS 13.1. Доступ к CMOS В сост в IBM PC AT входят ч сы ре льного времени (RTC) и 64 б йт нер зруш ющейся опер тивной п мяти (CMOS), пит ющиеся от втономного источник пит ния. При включении ПЭВМ содержимое CMOS н лизируется BIOS, который извлек ет из нее конфигур цию системы и текущие д ту и время. Для доступ к д нным CMOS используются порты 70h и 71h. Чтение б йт CMOS производится следующим обр зом: mov al,XXh out 70h,al ;выбр ть дрес CMOS XX jmp $+2 ;небольш я з держк in al,71h ;ввод б йт из CMOS З пись б йт в CMOS производится н логино: mov al,XXh out 70h,al jmp $+2 in al,71h Адрес CMOS с 10h по 20h з щищены контрольной суммой, хр нящейся по дресу 2Eh. Поэтому изменения содержимого этих дресов необходимо сопровожд ть пересчетом и изменением контрольной суммы. Порт 70h применяется не только для з д ния дрес CMOS, но и для р зрешения или з прещения NMI (нем скируемого прерыв ния). Если бит 7 р вен 0, то NMI р зреш ется, если 1 - з прещ ется, н пример: mov al,2Dh ;2Dh -резервный дрес CMOS out 70h,al ;р зрешить NMI mov al,0ADh out 70h,al ;з претить NMI 13.2. Содержимое CMOS Кр тк я схем содержимого CMOS т ков : Адрес Содержимое ──────────────────────────────────────────────────────────────── 00h-0Dh Д нные ч сов ре льного времени (RTC) 0Eh Б йт результ тов н ч льного тестиров ния 0Fh Состояние перез грузки 10h Тип НГМД 11h Резерв 12h Тип жесткого диск 13h Резерв 14h Б йт оборудов ния 15h-16h Р змер б зовой п мяти 17h-18h Р змер дополнительной п мяти 19h-1Ah Типы жестких дисков 1Bh-2Dh Резерв 2Eh-2Fh Контрольн я сумм CMOS 30h-31h Р змер дополнительной п мяти 32h Текущее столетие 33h Р зн я информ ция 34h-3Fh Резерв ─────────────────────────────────────────────────────────────── Приведем полное опис ние всех полей CMOS. Адрес Опис ние Примеч ние ──────────────────────────────────────────────────────────────── 0 Текущее время RTC, секунды Все д нные RTC 1 Время побудки, секунды хр нятся в двоично- 2 Текущее время, минуты десятичном форм те 3 Время побудки, минуты (BCD) 4 Текущее время, ч сы 5 Время побудки, ч сы 6 Текущий день недели 7 Текущий день месяц 8 Текущий месяц 9 Текущий год ──────────────────────────────────────────────────────────────── 0Ah Регистр A состояния RTC: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ Биты: └┬─┴──┴─┬┴──┴──┴──┼──┴──┘ ───── │ │ └───────> 0-3:скорость отсчет (р вн 0110) │ └─────────────────> 4-6: делитель (р вен 010) └────────────────────────> 7: фл г обновления (0=можно чит ть) 0Bh Регистр B состояния RTC: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │ │ │ Биты: └┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴┬─┘ ───── │ │ │ │ │ │ │ └───> 0: тип времени (р вен 0) │ │ │ │ │ │ └──────> 1: 12- или 24-ч совое время │ │ │ │ │ │ (р вен 1=24 ч с ) │ │ │ │ │ └─────────> 2: форм т д нных: 0=BCD, │ │ │ │ │ 1=двоичный (р вен 0) │ │ │ │ └────────────> 3: 1=р зрешить прямоугольный │ │ │ │ импульс (р вен 0) │ │ │ └───────────────> 4: 1=р зрешить прерыв ние по │ │ │ концу обновления (р вен 0) │ │ └──────────────────> 5: 1=р зрешить прерыв ние │ │ побудки (р вен 0) │ └─────────────────────> 6: 1=р зрешить периодические │ прерыв ния (р вен 0) └────────────────────────> 7: фл г обновления (0=можно чит ть) 0Ch Регистр С состояния RTC: биты состояния прерыв ний, только для чтения. 0Dh Регистр D состояния RTC. Бит 7=1, если CMOS получ ет пит ние; 0=нет пит ния от втономного источник . ──────────────────────────────────────────────────────────────── 0Eh Б йт результ тов н ч льного тестиров ния: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ │ │ │ │0 │0 │ Биты: └┬─┴┬─┴┬─┴┬─┴┬─┴┬─┴──┴──┘ ───── │ │ │ │ │ └─────────> 2: 1=форм т текущего времени │ │ │ │ │ и д ты верен │ │ │ │ └────────────> 3: 1=жесткий диск не является │ │ │ │ з груж емым │ │ │ └───────────────> 4: 1=р змер ОЗУ неверен │ │ └──────────────────> 5: 1=оборудов ние не соответствует │ │ конфигур ции CMOS │ └─────────────────────> 6: 1=неверн контрольн я сумм CMOS └────────────────────────> 7: 1=неиспр вен втономный источник пит ния CMOS ──────────────────────────────────────────────────────────────── 0Fh Б йт состояния перез грузки. Этот б йт считыв етс после сброс ЦП, чтобы определить не был ли сброс вызв н для вывод 80286 из з щенного режим . Он приним ет зн чения: 0 = теплый рест рт (по Ctrl-Alt-Del) или неожид нный ост нов 1 = ост нов после определения р змер ОЗУ 2 = ост нов после тестиров ния п мяти 3 = ост нов по ошибке п ритет п мяти 4 = рест рт по з просу н ч льного з грузчик 5 = рест рт по сбросу контроллер прерыв ний и JMP FAR PTR [0:467h] 6, 7, 8 = ост нов после тест з щищенного режим 9 = рест рт по JMP FAR PTR [0:467h] ──────────────────────────────────────────────────────────────── 10h Тип НГМД А и В: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ Биты: └──┴──┼──┴──┴──┴──┼──┴──┘ ───── │ └───────> 0-3: тип дисковод А └───────────────────> 4-7: тип дисковод В: 0 = нет дисковод или его тип неизвестен 1 = 360 К, 5 1/4 дюйм 2 = 1.2 M, 5 1/4 дюйм 3 = 720 К, 3 1/2 дюйм ──────────────────────────────────────────────────────────────── 12h Тип жестких дисков C и D: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │ Биты: └──┴──┼──┴──┴──┴──┼──┴──┘ ───── │ └───────> 0-3: тип дисковод C └───────────────────> 4-7: тип дисковод D: 0000 = диск нет 1111 = см. дрес 19h и 1Ah прочие=тип диск (см. приложение 2) ───────────────────────────────────────────────────────────────── 14h Б йт оборудов ния: 7 6 5 4 3 2 1 0 ┌──┬──┬──┬──┬──┬──┬──┬──┐ │ │ │X │X │ │ │ Биты: └──┼──┴──┼──┴──┴──┴┬─┴┬─┘ ──── │ │ │ └──> 0: 1=есть НГМД │ │ └─────> 1: 1=есть сопроцессор 80287 │ └───────────────> 4-5: тип дисплея: │ 00 - EGA или VGA │ 01 - CGA, 40 столбцов │ 10 - CGA, 80 столбцов │ 11 - монохромный └─────────────────────> 6-7: количество НГМД - 1 ──────────────────────────────────────────────────────────────── 15h-16h Р змер б зовой п мяти (0100h=256 K, 0200h=512 K, 0280h=640 K) 17h-18h Р змер дополнительной п мяти, Кб (от 0 до 3C00h) ──────────────────────────────────────────────────────────────── 19h Тип диск С, если его тип в 12h р вен 0Fh 1Ah Тип диск D, если его тип в 12h р вен 0Fh ──────────────────────────────────────────────────────────────── 2Eh-2Fh Контрольн я сумм дресов CMOS с 10h по 20h (обычн я 16-битов я сумм этих б йтов; 2Eh содержит ст рший б йт КС) ──────────────────────────────────────────────────────────────── 30h-31h Р змер дополнительной п мяти, Кб (0-3C00h), опреде- ленный при н ч льном тестиров нии ──────────────────────────────────────────────────────────────── 32h Двоично-десятичный номер столетия ──────────────────────────────────────────────────────────────── 33h Р зн я информ ция. Бит 7: 1=уст новлен опция 128К ОЗУ Бит 6 используется прогр ммой SETUP ──────────────────────────────────────────────────────────────── 14. Прочие порты В этом р зделе приведено опис ние портов, не относящихся к конретным устройств м. Адрес Опер ция Н зн чение ──────────────────────────────────────────────────────────────── 80h з пись Используется в AT н эт пе н ч льного тестиров ния для н копления информ ции об ошибк х. ──────────────────────────────────────────────────────────────── 90h з пись Упр вляющий порт центр льного рбитр PS/2 ──────────────────────────────────────────────────────────────── 91h чтение Обр тн я связь с выбр нной пл той PS/2 ──────────────────────────────────────────────────────────────── 92h з пись Упр вляющий порт A PS/2 ──────────────────────────────────────────────────────────────── 94h з пись Уст новк п р метров системной пл ты PS/2 ──────────────────────────────────────────────────────────────── 96h, 97h з пись Выбор коннектор к н клов в PS/2 ──────────────────────────────────────────────────────────────── 0A0h з пись Р зрешение или з прещение NMI в PC/XT: out 0A0h,80h - р зреш ет NMI; out 0A0h,0 - з прещ ет NMI. ──────────────────────────────────────────────────────────────── 0F0h з пись Вывод любого б йт сбр сыв ет з щелку сопроцессор 80287, котор я включ ется по нез м скиров нной ошибке сопроцессор . 0F1h з пись Вывод любого б йт сбр сыв ет сопроцессор 80287 из з щищенного режим в ре льный. 0F8h-0FCh ─── Эти порты используются процессором 80286 для обмен д нными с сопроцессором. ──────────────────────────────────────────────────────────────── 210h з пись Упр вляющий порт блок р сширения XT. 213h з пись Р зрешение блок р сширения XT. 215h з пись Регистр шины д нных блок р сширения XT. 215h з пись Регистр дрес блок р сширения XT (ст рший б йт). 216h з пись Регистр дрес блок р сширения XT (мл дший б йт). ──────────────────────────────────────────────────────────────── Приложение 1. Ск н-коды кл виш Всякий р з, когд кл ви тур вызыв ет прерыв ние по н ж тию или отпуск нию кл виши, он перед ет обр ботчику этого прерыв ния "ск н-код" д нной кл виши, т. е. ее порядковый номер н кл ви туре. При этом ск н-код кл виши является семибитовым, ст рший бит б йт , содерж щего ск н-код, сообщ ет причину прерыв ния: 0 - кл виш н ж т , 1 - кл виш отпущен . ┌────────┬─────────────┬────────┬─────────────┐ │Ск н-код│ Кл виш │Ск н-код│ Кл виш │ ├────┬───┼─────────────┼────┬───┼─────────────┤ │01h │ 1 │ Esc │2Bh │ 43│ \ | │ │02h │ 2 │ 1 ! │2Ch │ 44│ Z │ │03h │ 3 │ 2 @ │2Dh │ 45│ X │ │04h │ 4 │ 3 # │2Eh │ 46│ C │ │05h │ 5 │ 4 $ │2Fh │ 47│ V │ │06h │ 6 │ 5 % │30h │ 48│ B │ │07h │ 7 │ 6 ^ │31h │ 49│ N │ │08h │ 8 │ 7 & │32h │ 50│ M │ │09h │ 9 │ 8 * │33h │ 51│ , < │ │0Ah │ 10│ 9 ( │34h │ 52│ . > │ │0Bh │ 11│ 0 ) │35h │ 53│ / ? │ │0Ch │ 12│ - _ │36h │ 54│пр вый Shift │ │0Dh │ 13│ = + │37h │ 55│ PrtSc * │ │0Eh │ 14│ BackSpace │38h │ 56│ Alt │ │0Fh │ 15│ Tab │39h │ 57│ пробел │ │10h │ 16│ Q │3Ah │ 58│ CapsLock │ │11h │ 17│ W │3Bh │ 59│ F1 │ │12h │ 18│ E │3Ch │ 60│ F2 │ │13h │ 19│ R │3Dh │ 61│ F3 │ │14h │ 20│ T │3Eh │ 62│ F4 │ │15h │ 21│ Y │3Fh │ 63│ F5 │ │16h │ 22│ U │40h │ 64│ F6 │ │17h │ 23│ I │41h │ 65│ F7 │ │18h │ 24│ O │42h │ 66│ F8 │ │19h │ 25│ P │43h │ 67│ F9 │ │1Ah │ 26│ [ { │44h │ 68│ F10 │ │1Bh │ 27│ ] } │45h │ 69│ NumLock │ │1Ch │ 28│ Enter │46h │ 70│ ScrollLock │ │1Dh │ 29│ Ctrl │47h │ 71│ Home [7] │ │1Eh │ 30│ A │48h │ 72│стр. вверх[8]│ │1Fh │ 31│ S │49h │ 73│ PgUp [9] │ │20h │ 32│ D │4Ah │ 74│ - │ │21h │ 33│ F │4Bh │ 75│ <- [4] │ │22h │ 34│ G │4Ch │ 76│ [5] │ │23h │ 35│ H │4Dh │ 77│ -> [6] │ │24h │ 36│ J │4Eh │ 78│ + │ │25h │ 37│ K │4Fh │ 79│ End [1] │ │26h │ 38│ L │50h │ 80│стр. вниз [2]│ │27h │ 39│ ; : │51h │ 81│ PgDn [3] │ │28h │ 40│ ' " │52h │ 82│ Ins [0] │ │29h │ 41│ ` ~ │53h │ 83│ Del [.] │ │2Ah │ 42│ левый Shift │54h │ 84│ SysReq │ └────┴───┴─────────────┴────┴───┴─────────────┘ Приложение 2. Типы жестких дисков В этом приложении приведен информ ция о жестких диск х, поддержив емых BIOS IBM PC AT в порядке их номеров, присв и- в емых в CMOS. Для к ждого диск приводится количество цилиндров, количество головок, предкомпенс ция з писи, обл сть п рковки, количество секторов н цилиндре и объем диск в Мб. ────────────────────────────────────────────────────────────── Номер Кол-во Кол-во Предкомп. Обл сть Кол-во Объем тип цилиндров головок з писи п рковки секторов диск , Мб ─────────────────────────────────────────────────────────────── 1 306 4 128 305 17 10,1 2 615 4 300 615 17 20,4 3 615 6 300 615 17 30,6 4 940 8 512 940 17 62,4 5 940 6 512 940 17 46,8 6 615 4 нет 615 17 20,4 7 462 8 256 511 17 30,6 8 733 5 нет 733 17 30,4 9 900 15 нет 901 17 112,0 10 820 3 нет 820 17 20,4 11 855 5 нет 855 17 35,4 12 855 7 нет 855 17 49,6 13 306 8 128 319 17 20,3 14 733 7 нет 733 17 42,5 15 З pезеpвиpов н - см. 13.2 16 612 4 все 663 17 20,3 17 977 5 300 977 17 40,5 18 977 7 нет 977 17 56,7 19 1024 7 512 1023 17 59,5 20 733 5 300 732 17 30,4 21 733 7 300 732 17 42,5 22 733 5 300 733 17 30,4 23 306 4 все 336 17 10,1 24 615 4 300 615 26 31,2 25 615 4 все 615 17 20,4 26 1024 4 нет 1023 17 34,0 27 1024 5 нет 1023 17 42,5 28 1024 8 нет 1023 17 68,0 29 512 8 256 512 17 34,0 30 1024 5 512 1024 26 65,0 31 989 5 все 989 17 41,0 32 1020 15 нет 1024 17 127,0 33 ? ? ? ? ? ? 34 ? ? ? ? ? ? 35 1024 9 1024 1024 17 76,5 36 1024 5 512 1024 17 42,5 37 830 10 нет 830 17 68,8 38 823 10 256 824 17 68,3 39 615 4 128 664 17 20,4 40 615 8 128 664 17 40,8 41 917 15 нет 918 17 114,1 42 1023 15 нет 1024 17 127,3 43 823 10 512 823 17 68,3 44 820 6 нет 820 17 40,8 45 1024 8 нет 1024 17 68,0 46 925 9 нет 925 17 69,1 47 699 7 256 700 17 40,6 ─────────────────────────────────────────────────────────────── Примеч ния. 1. Тип 1 - это жесткий диск первых PC XT, тип 2 - ст нд ртный жесткий диск первых PC AT. 2. Типы 33 - 47 не являются ст нд ртными и не поддержив - ются ПЭВМ фирмы IBM. Приложение 3. Подготовк ПЭВМ к р боте В этом приложении опис н уст новк DIP-переключ телей н системной пл те ПЭВМ и д птере EGA-дисплеев. Обычно ЭВМ поступ ет з к зчику уже с уст новленной конфигур цией, но при изменении оборудов ния (н пример, при уст новке большей п мяти или дополнительных дисководов) может потребов ться изменение переключ телей. Приведенное здесь опис ние относится к ПЭВМ фирмы IBM; компьютеры других фирм могут иметь другие ст нд рты. Н пример, переключ тели Compaq Portable имеют другой смысл и нигде не опис ны. Переключ тели Deskpro подпис ны внутри корпус ЭВМ. Переключ тели IBM PC ──────────────────── Первон ч льн я модель IBM PC, имевш я 64К ОЗУ н системной пл те (д лее н зывем я PC-1), н стр ив ется двумя колодк ми переключ телей, помеченными SW1 и SW2. SW1 ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │ │ │ ║ ╙╥┴╥┴─┴─┴─┴─┴─┴─╜ ║ ║ ╚╦╝ ╚╦╝ ╚═╩═ 7-8: количество НГМД ║ ║ ║ ╚══════ 5-6: ктивный дисплей ║ ║ ╚══════════ 3-4: p змеp ОЗУ н системной пл те ║ ╚═════════════ 2: н личие сопpоцессоp 8087 ╚═══════════════ 1: н личие НГМД SW2 (PC-1) ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │▄│▄│▄│▄║ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╚══╦══╝ ╚═════╩═ 5-8: всегд OFF ╚════════════ 1-4: полный p змеp ОЗУ Более поздняя веpсия IBM PC (н зыв ем я здесь PC-2) интеpпpетиpует пеpеключ тели несколько ин че. Точнее говоpя, SW1 имеет то же н зн чение, SW2 пок з но ниже: SW 2 (PC-2) ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │▄│▄│▄║ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╚═══╦═══╝ ╚═══╩═ 6-8: всегд OFF ╚═══════════ 1-5: полный p змеp ОЗУ Опишем подpобно н зн чение пеpеключ телей. Количество н копителей н гибких диск х (НГМД): ─────────────────────────────────────────────── SW1 ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▄│ │ │ │ │ │▀│▀║ 1 НГМД ║▄│ │ │ │ │ │▀│▄║ 3 НГМД ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▄│ │ │ │ │ │▄│▀║ 2 НГМД ║▄│ │ │ │ │ │▄│▄║ 4 НГМД ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ Примеч ние. Ключ 1 в позиции ON озн ч ет отсутствие НГМД. Активный дисплей: ───────────────── SW1 ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │ │ │▀│▀│ │ ║ Нет или EGA ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │ │ │▄│▀│ │ ║ 40x25 CGA ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │ │ │▀│▄│ │ ║ 80x25 CGA ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │ │ │▄│▄│ │ ║ Монохромный д птер (MDA) либо и MDA, и CGA ╙─┴─┴─┴─┴─┴─┴─┴─╜ Н личие сопроцессор 8087: ───────────────────────── SW1 ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │▄│ │ │ │ │ │ ║ есть 8087 ║ │▀│ │ │ │ │ │ ║ нет 8087 ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ Р змер ОЗУ н системной пл те: ────────────────────────────── SW1 ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │▄│▄│ │ │ │ ║ 64K или больше ╙─┴─┴─┴─┴─┴─┴─┴─╜ Полный р змер ОЗУ (SW2 для PC-1): ───────────────────────────────── Для PC-1 ключи 5 - 8 всегд в положении OFF. М ксим льный р змер ОЗУ - 544К. SW2 (PC-1) ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▀│▀│▀│ │ │ │ ║ 64K ║▀│▄│▀│▄│ │ │ │ ║ 384K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▄│▀│▀│ │ │ │ ║ 128K ║▀│▀│▄│▄│ │ │ │ ║ 448K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▀│▄│▀│ │ │ │ ║ 192K ║▀│▄│▄│▄│ │ │ │ ║ 512K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▄│▄│▀│ │ │ │ ║ 256K ║▄│▄│▄│▄│ │ │ │ ║ 544K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▀│▀│▄│ │ │ │ ║ 320K ╙─┴─┴─┴─┴─┴─┴─┴─╜ Полный р змер ОЗУ (SW2 для PC-2): ───────────────────────────────── Для PC-2 ключи 6 - 8 всегд в положении OFF. М ксим льный р змер ОЗУ - 640К. Если В ш ПЭВМ имеет позиции для д птерных пл т или жесткий диск, то это PC-2. SW2 (PC-2) ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▀│▀│▀│▀│ │ │ ║ 64K ║▀│▄│▀│▄│▀│ │ │ ║ 384K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▄│▀│▀│▀│ │ │ ║ 128K ║▀│▀│▄│▄│▀│ │ │ ║ 448K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▀│▄│▀│▀│ │ │ ║ 192K ║▀│▄│▄│▄│▀│ │ │ ║ 512K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▄│▄│▀│▀│ │ │ ║ 256K ║▀│▀│▀│▀│▄│ │ │ ║ 576K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▀│▀│▀│▄│▀│ │ │ ║ 320K ║▀│▄│▀│▀│▄│ │ │ ║ 640K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ╙─┴─┴─┴─┴─┴─┴─┴─╜ Примеч ния: 1. З д ние р змер ОЗУ всегд было отдельным р звлечением для пользов телей IBM PC. Если Вы не зн ете точного р змер п мяти В шей ПЭВМ, то можете использов ть следующий прием. Уст новите миним льный р змер п мяти, з грузите ДОС и вызовите CHKDSK, чтобы проверить, что ДОС н ходит столько п мяти, сколько Вы уст новили. З тем увеличив йте р змер ОЗУ до тех пор, пок не произойдет ошибк . 2. Если Вы з д дите р змер ОЗУ более 640К, то BIOS будет прекр сно р бот ть, но ДОС потерпит кр х при з грузке, т. к. ч сть COMMAND.COM грузится в ст ршие дрес п мяти. Переключ тели IBM PC XT ─────────────────────── IBM PC XT имеет одну колодку переключ телей (SW1): SW1 (XT) ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║▄│ │ │ │ ║ ╙╥┴╥┴─┴─┴─┴─┴─┴─╜ ║ ║ ╚╦╝ ╚╦╝ ╚═╩═ 7-8: количество НГМД ║ ║ ║ ╚══════ 5-6: ктивный дисплей ║ ║ ╚══════════ 3-4: р змер ОЗУ н системной пл те ║ ╚═════════════ 2: н личие 8087 ╚═══════════════ 1: всегд OFF Ключи 2, 5-6 и 7-8 имеют тот же смысл, что н IBM PC. Ключи 3-4 з д ют р змер ОЗУ н системной пл те: SW1 (XT) ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │▄│▀│ │ │ │ ║ 128K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │▀│▄│ │ │ │ ║ 192K ╙─┴─┴─┴─┴─┴─┴─┴─╜ ON ╓1┬2┬3┬4┬5┬6┬7┬8╖ ║ │ │▄│▄│ │ │ │ ║ 256K ╙─┴─┴─┴─┴─┴─┴─┴─╜ Примеч ние. BIOS IBM PC XT ск нирует п мять в процессе н ч льного тестиров ния ПЭВМ. Поэтому при доб влении новых схем п мяти В м не нужно менять положение переключ телей. Переключ тели IBM PC AT ─────────────────────── IBM PC AT не имеет DIP-переключ телей. Конфигур ция оборудов ния хр нится в CMOS и может быть изменен с помощью прогр ммы SETUP. Опис ние CMOS см. в п. 13. В передней ч сти системной пл ты имеется перемычк J18, упр вляющ я использов нием ОЗУ н системной пл те: ╔J18╗ 1 ║┌o┐║ Р зрешить второй б нк емкостью 256K 2 ║└o┘║ (512К н системной пл те) 3 ║ o ║ ╚═══╝ ╔J18╗ 1 ║ o ║ З претить второй б нк емкостью 256K 2 ║┌o┐║ (256К н системной пл те) 3 ║└o┘║ ╚═══╝ Еще один переключ тель, помеченный SW1, н ходится в з дней ч сти системной пл ты и з д ет первичный дисплей ПЭВМ: ╔SW1╗ ║▐█▌║ ON ON (н з д) - CGA ║ ║ OFF ╚═══╝ ╔SW1╗ ║ ║ ON ║▐█▌║ OFF OFF (вперед) - монохромный д птер ╚═══╝ Примеч ние. Документ ция н EGA содержит ошибку, рекомендуя противоположное использов ние этого переключ теля! Переключ тели д птер EGA ────────────────────────── DIP-переключ тели н д птере EGA ук зыв ют тип дисплея, подключенного к д птеру, и н личие других дисплейных д птеров. Ниже "первичный" дисплей озн ч ет тот дисплей, с которым будет р бот ть ПЭВМ при включении; "вторичный" относится к дополнительному д птеру и дисплею, которые могут быть подключены к ЭВМ. С мое в жное: никогд не подключ йте к д птеру EGA монохромный дисплей (MDA), если ключи не выст влены должным обр зом. Вы можете физически р зрушить дисплей! ON ╓4┬3┬2┬1╖ Первичный EGA с цветным монитором 40x25 ║▀│▄│▄│▀║ Вторичный MDA ╙─┴─┴─┴─╜ ON ╓4┬3┬2┬1╖ Первичный EGA с цветным монитором 80x25 ║▀│▄│▄│▄║ Вторичный MDA ╙─┴─┴─┴─╜ ON ╓4┬3┬2┬1╖ Первичный EGA с р сширенным цветным монитором ║▄│▀│▀│▀║ (эмуляция CGA) ╙─┴─┴─┴─╜ Вторичный MDA ON ╓4┬3┬2┬1╖ Первичный EGA с р сширенным цветным монитором ║▄│▀│▀│▄║ (в режиме EGA) ╙─┴─┴─┴─╜ Вторичный MDA ON ╓4┬3┬2┬1╖ Первичный EGA с монохромным монитором ║▄│▀│▄│▀║ Вторичный CGA с цветным монитором 40х25 ╙─┴─┴─┴─╜ ON ╓4┬3┬2┬1╖ Первичный EGA с монохромным монитором ║▄│▀│▄│▄║ Вторичный CGA с цветным монитором 80х25 ╙─┴─┴─┴─╜ ON ╓4┬3┬2┬1╖ Первичный MDA ║▀│▀│▀│▀║ Вторичный EGA с цветным монитором 40х25 ╙─┴─┴─┴─╜ ON ╓4┬3┬2┬1╖ Первичный MDA ║▀│▀│▀│▄║ Вторичный EGA с цветным монитором 80х25 ╙─┴─┴─┴─╜ ON ╓4┬3┬2┬1╖ Первичный MDA ║▀│▀│▄│▀║ Вторичный EGA с р сширенным цветным монитором ╙─┴─┴─┴─╜ (эмуляция CGA) ON ╓4┬3┬2┬1╖ Первичный MDA ║▀│▀│▄│▄║ Вторичный EGA с р сширенным цветным монитором ╙─┴─┴─┴─╜ (в режиме EGA) ON ╓4┬3┬2┬1╖ Первичный CGA с цветным монитором 40х25 ║▀│▄│▀│▀║ Вторичный EGA с монохромным монитором ╙─┴─┴─┴─╜ ON ╓4┬3┬2┬1╖ Первичный CGA с цветным монитором 80х25 ║▀│▄│▀│▄║ Вторичный EGA с монохромным монитором ╙─┴─┴─┴─╜ EGA имеет три перемычки (P1 - P3): ╔P1═╗ 1 ║┌o┐║ Поддержк р сширенного цветного монитор 2 ║└o┘║ (640x350 и 64 цвет ) 3 ║ o ║ ╚═══╝ ╔P1═╗ 1 ║ o ║ 2 ║┌o┐║ Поддержк ст нд ртного цветного монитор 3 ║└o┘║ (640x200 и 16 цветов) ╚═══╝ P2 (не пок з нный здесь) - это коннектор светового пер . ╔P3═╗ 1 ║┌o┐║ З д ет порты в/в EGA в дрес х 3xxH 2 ║└o┘║ (ст нд ртн я уст новк ) 3 ║ o ║ ╚═══╝ ╔P3═╗ 1 ║ o ║ 2 ║┌o┐║ З д ет порты в/в EGA в дрес х 2xxH 3 ║└o┘║ (не поддержив ется BIOSом EGA) ╚═══╝ Глосс рий Ад птеp (adapter). См. контpоллеp. Ассемблеp (assembly language). Язык пpогp ммиpов ния н уpовне ком нд центp льного пpоцессоp . Б йт (byte). Миним льн я дpесуем я единиц п мяти ЭВМ p змеpом 8 бит. Бит (bit). Двоичный p зpяд, пpиним ющий зн чения 0 или 1. Блок (block). Совокупность д нных, котоpые вводятся или выводятся з одну опеp цию ввод -вывод . Дисплей (display). Устpойство отобp жения символьной и гp фической инфоpм ции. Интеpфейс (interface). Апп p тное сопpяжение двух устpойств, обеспечив ющее их электpическое и логическое согл сов ние. Интеpфейс п p ллельный (parallel interface). Сопpяжение ПЭВМ с внешним устpойством, пpи котоpом б йт инфоpм ции пеpед ется одновpеменно по восьми линиям. Обычно используется для подключения печ т ющих устpойств. Интеpфейс последов тельный (serial interface); Сопpяжение ПЭВМ с внешним устpойством, пpи котоpом инфоpм ция пеpед ется побитно. Используется для подключения мыши, гp фопостpоителя и для межм шинной связи. К н л (channel). Устpойство или нез висим я ч сть устpойств , используемое для пеpед чи д нных между ЭВМ и пеpифеpией. Контpоллеp (controller). Микpопpоцессоpное устpойство, обеспечив ющее связь ЭВМ с пеpифеpийным устpойством. Н копитель дисковый (disk drive). Устpойство внешней п мяти н м гнитных диск х, подключ ется к ЭВМ чеpез контpоллеp. Диски ПЭВМ делятся н гибкие (дискеты) и жесткие (винчестеpские). П мять опеp тивн я, ОЗУ (random access memory, RAM). Ч сть ЭВМ, используем я для хp нения д нных в пpоцессе p боты ЭВМ. Пpи выключении ЭВМ содеpжимое ОЗУ теpяется. П мять постоянн я, ПЗУ (read-only memory, ROM). Ч сть ЭВМ, используем я для хp нения неизменяемой инфоp- м ции и доступн я только для чтения. Поpт ввод -вывод (i/o port). Адpес в пpостp нстве ввод -вывод , обеспечив ющий доступ к связ нному с д нным поpтом pегистpом внешнего устpойств . Позиции д птеpных пл т (expansion slots). Свободные позиции в коpпусе ЭВМ, в котоpые могут быть вст влены пл ты контpоллеpов устpойств ввод -вывод . Пpеpыв ние (interrupt). Внешнее событие, вызыв ющее пpеpыв ние p боты ЦП и пеpед чу упp вления пpогp мме обp ботки д нного пpеpыв ния. Пpямой доступ в п мять, ПДП (direct memory access, DMA). Способ доступ к п мяти ЭВМ, пpи котоpом пеpифеpийный пpоцессоp p бот ет с п мятью, "воpуя" циклы шины у центp ль- ного пpоцессоp . Регистpы (registers). Апп p тные компоненты ЦП, пpедн зн ченные для обp ботки д нных с высокой скоpостью. Слово (word). Адpесуем я единиц м шинной п мяти, состоящ я из двух соседних б йтов. Центp льный пpоцессоp, ЦП (central processing unit, CPU). Основное устpойство ЭВМ, осуществляющее выбоpку, декодиpов ние и исполнение ком нд, т кже упp вление пеpифеpийными устpойств ми чеpез системную шину. DIP-пеpеключ тели (DIP-switchs). Пеpеключ тели н конт ктных колодк х пл т, позволяющие изменить конфигуp цию соответствующего устpойств .