 |
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
- 71 -
E7.7. Графический видеомассив VGAF
Адаптер 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 отсутствуют.
- 72 -
E8. Контроллер накопителей на гибких дискахF
E8.1. Основные сведения о контроллереF
Управление гибкими дисками в 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 порта
ввода-вывода.
- 73 -
E8.2. Порты контроллера накопителей на гибких дискахF
Материалы данного и следующего разделов полностью описывают
возможности контроллера 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 - четвертый
- 74 -
На АТ-подобных ПЭВМ обычно допускается не 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, говорит о том, что контроллер при вводе
|