Глава 1. Системные ресурсы.

Раздел 1. Ревизия системных ресурсов.

1.1.1 Доступ к микросхеме интерфейса с периферией 8255.

Микросхема интерфейса с периферией Intel 8255 - лучшее место, с которого надо начинать, чтобы получить информацию об имеющемся оборудовании. Эта микросхема предназначена для многих целей. Она сообщает об установке переключателей на системной плате. Она принимает для компьютера ввод с клавиатуры. Она управляет рядом периферийных устройств, включая микросхему таймера 8253. Из машин семейства IBM PC только AT не использует микросхему 8255; он хранит информацию об оборудовании вместе с часами реального времени в специальной микросхеме с независимым питанием. Однако AT использует те же адреса портов, что и 8255, для работы с клавиатурой и управления микросхемой таймера.

Микросхема 8255 имеет три однобайтных регистра, называемых от порта A до порта C. Адреса этих портов от 60H до 62H сответственно. Все три порта можно читать, но писать можно только в порт B. Для PC, установка бита 7 порта B в 1 изменяет информацию, содержащуюся в порте A. Аналогично для PC установка бита 2 определяет содержимое четырех младших битов порта C, а установка бита 3 делает то же самое для XT. Содержимое этих регистров следующее:

 
   Порт A (60H) 
      когда в порте B бит 7=0 
         биты 0-7 PC,XT,PCjr,AT: 8-битные скан-коды с клавиатуры 
      когда в порте B бит 7=1 для PC 
         бит 0    PC: 0 = нет накопителей на дискетах 
             1    PC: не используется 
           2-3    PC: число банков памяти на системной плате 
           4-5    PC: тип дисплея (11 = монохромный, 
                      10 = цветной 80*25, 01 = цветной 40*25) 
           6-7    PC: число накопителей на дискетах 
   Порт B (61H) 
         бит 0    PC,XT,PCjr: управляет каналом 2 таймера 8253 
             1    PC,XT,PCjr: вывод на динамик 
             2    PC: выбор содержимого порта C 
                  PCjr: 1 = символьный режим, 0 = графический 
             3    PC,PCjr: 1 = кассетный мотор выключен 
                  XT: выбор содержимого порта C 
             4    PC,XT: 0 = разрешение ОЗУ 
                  PCjr: 1 = запрет динамика и мотора кассеты 
             5    PC,XT: 0 = разрешение ошибок щелей расширения 
             6    PC,XT: 1 = разрешение часов клавиатуры 
           5-6    PCjr: выбор динамика (00 = 8253, 01 = кассета, 
                  10 = ввод/вывод, 11 = микросхема 76496) 
             7    PC: выбор содержимого порта A 
                  PC,XT: подтверждение клавиатуры 
   Порт C (62H) 
      когда в порте B бит 2=1 для PC или бит 3=1 для XT 
      биты 0-3    PC: нижняя половина переключателя 2 конфи
                  гурации (ОЗУ на плате расширения) 
             0    PCjr: 1 = введенный символ потерян 
             1    XT: 1 = есть мат. сопроцессор 
                  PCjr: есть карта модема 
             2    PCjr: есть карта HГМД 
           2-3    XT: число банков памяти на системной плате 
             3    PCjr: 0 = 128K памяти 
             4    PC,PCjr: ввод с кассеты 
                  XT: не используется 
             5    PC,XT,PCjr: выход канала 2 8253 
             6    PC,XT: 1 = проверка ошибок щелей расширения 
                  PCjr: 1 = данные с клавиатуры 
             7    PC,XT: 1 = контроль ошибок четности 
                  PCjr: 0 = кабель клавиатуры подсоединен 
      когда в порте B бит 2=0 для PC или бит 3=0 для XT 
      биты 0-3    PC: верхняя половина переключателя 2 конфи
                  гурации (не используется) 
           0-1    XT: тип дисплея (11 = монохромный, 
                  10 = цветной 80*25, 01 = цветной 40*25) 
           2-3    XT: число накопителей HГМД (00 = 1 и т.д.) 
           4-7    PC,XT: то же, что и с установленными битами 

Отметим, что 0 в одном из битов регистра соответствует установке переключателя "off".

AT хранит информацию о конфигурации в микросхеме MC146818 фирмы Motorola, вместе с часами реального времени. Он вовсе не имеет микросхемы 8255, хотя для управления микросхемой таймера и приема данных с клавиатуры используются те же самые адреса портов. Микросхема имеет 64 регистра, пронумерованных от 00 до 3FH. Для чтения регистра нужно сначала послать его номер в порт с адресом 70H, а затем прочитать его через порт 71H. Различные параметры конфигурации обсуждаются на последующих страницах. Приведем здесь только краткую сводку:

 
  Hомер регистра               Использование 
       10H             тип накопителя HГМД 
       12H             тип накопителя фиксированного диска 
       14H             периферия 
       15H             память на системной плате (младший байт) 
       16H             память на системной плате (старший байт) 
       17H             общая память (младший байт) 
       18H             общая память (старший байт) 
       30H             память сверх 1 мегабайта (младший байт) 
       31H             память сверх 1 мегабайта (старший байт) 

Hизкий уровень.

Ассемблерная программа получает число имеющихся дисковых накопителей тем же способом, что и в вышеприведенном примере, но более просто. Hапоминаем, что нельзя забывать о восстановлении первоначального значения в порте B.
IN AL,61H ;получаем значение из порта B
OR AL,10000000B ;устанавливаем бит 7 в 1
OUT 61H,AL ;заменяем байт
IN AL,60H ;получаем значение из порта A
MOV CL,6 ;подготовка для сдвига AL
SHR AL,CL ;сдвигаем 2 старших бита на 6 позиций
INC AL ;начинаем счет с 1, а не с 0
MOV NUM_DRIVES,AL ;получаем число накопителей
IN AL,61H ;подготовка к восстановлению порта B
AND AL,01111111B ;сбрасываем бит 7
OUT 61H,AL ;восстанавливаем байт


<~-Глава 1. Системные ресурсы.
Содержание
1.1.2 Определение типа IBM PC.-~>

Сайт управляется системой uCoz