Системные порты ПК AT-класса

Анотация

.

Описание аппаратуры взято из книги «Руководство по архитектуре IBM PС AT» / Ж.К. Голенкова, А.В. Заболоцкий, М.Л. Мархасин и др.; Под общ. ред. М.Л. Мархасина. — Минск: ООО «Консул», 1992. — 949 c.: ил. Исключение составляет порт 0E1h для задержки вывода, сведения об использовании которого получены из исходников ДОС-расширителя Колесницкого.

Оглавление

Описание порта 61h и макросы

Описание порта 70h и макросы

Порт 0E1h

Описание порта 61h и макросы

Порт 61h содержит биты для управления различными устройствами, связанными с системным таймером и клавиатурой. Назначение битов порта приведено на рисунке ниже.

В файле sysport.def определены следующие константы (маски):


CmSPStrobT2 00000001b строб счётчика
CmSPSpeaker 00000010b доступ к динамику
CmSPTOUT2 00100000b выход счётчика, подключённого к динамику
MSPPCSpeakerCountGate 00000001b
MSPPCSpeakerDataGate 00000010b
MKBDEnableBit 10000000b

Макрос PCSpkCount разрешает работу счётчика динамика (подробнее о счётчиках см. Таймеры ПК). Использование макроса

     PCSpkCount    Enable     ; разрешить работать счётчика
     PCSpkCount    Desable    ; запретить работу счётчика

Макрос PCSpeaker Разрешает вывод данных из счётчика 2 в динамик.

     PCSpeaker    Enable     ; разрешить вывод данных из счётчика в динамик
     PCSpeaker    Desable    ; запретить вывод данных из счётчика в динамик

Макрос OutDataToSpeaker выводит данные в динамик

     OutDataToSpeaker    1    ; подаёт напряжение на динамик (вместо 1 можно использовать Hi)
     OutDataToSpeaker    0    ; снимает напряжение с динамика (вместо 1 можно использовать Lo)

В различного рода драйверах клавиатуры использовался выполняемый макросом SPKBDReaded стандартрный код, по-видимому сообщающий клавиатуре о том, что байт данных из порта прочитан и принят, и теперь можно перердаватрь следрующий байт.

Описание порта 70h и макросы

CmSPNMIEna 10000000b

Макрос SetIndexRTCRAM устанавливает адрес читаемого/записываемого байта RTC/CMOS. Адрес интересующего байта RTC может задаваться числом или байтовым регистром, кроме al. Если адрес задан регистром, то его корректность не проверяется. Адрес должен быть меньше 64 (40h). Макрос портит регистр al. Использование:

   SetIndexRTCRAM  20h ;  устанавливает адрес 20h.

Макрос SPNMIEnable разрешает прерывания NMI, а SPNMIDesable — запрещает.

Порт 0E1h

На первых ПК процессоры работали существенно быстрее, чем контрллеры других устройств, установленные на материнской плате, и процессор мог выводить данные в порт устройства быстрее, чем оно могло их обработать. Чтобы согласовать работу использовались программные задержки. Один из способов создания задержки — очистить очередь команд, при этом пока процессор тратит время на выборку команд и их дешифрацию, внешнее устройство успевает обработать данные. Очистка состояла в том, что делался переход на следующий адрес (инструкция jmp short $+2). Это прекрасно работало на 286 и 386 процессорах, однако на более новых подобная команда уже не вызывала желаемого действия. Поэтому стал использоваться вывод данных в порт 0E1h. (Сведения об этом порте получены из переделанных Колесницким исходников ДОС-расширителя, написанного Tran'ом).

Макрос SPDelay обеспечивает задержку при работе с портами ввода/вывода. Перед его использованием может быть определена переменная .DelayType, указывающая тип процессора (286, 386, ...). Если константа .DelayType не задана, то используется стандартная задержка командой перехода. Пример использования

    .DelayType=486
    SPDelay



©   Жуков И. Б.

e-mail:

При использовании материалов, пожалуйста,

ставьте индексируемую ссылку на сайт http://ibzh.eko3.ru/





Число посетителей


Яндекс.Метрика

Число посетителей