Согласование режимов IEEE 1284

   ПУ в стандарте IEEE 1284 обычно не требуют от контроллера реализации всех режимов, предусмотренных стандартом. Для определения режимов и методов управления конкретным устройством стандарт предусматривает последовательность
согласования (negotiation sequence). Последовательность построена так, что старые устройства, не рассчитанные на применение IEEE 1284, на нее не ответят, и контроллер останется в стандартном режиме. Периферия IEEE 1284 может
сообщить о своих возможностях, и контроллер установит режим, удовлетворяющий и хост, и ПУ.

   Во время фазы согласования контроллер выставляет на линии данных байт расширяемости (extensibility byte), запрашивая подтверждение на перевод интерфейса в требуемый режим или прием идентификатора ПУ (табл. 11). Идентификатор передается контроллеру в запрошенном режиме (любой режим обратного канала, кроме ЕРР). ПУ использует сигнал Xflag (Select в терминах SPP) для подтверждения запрошенного режима обратного канала, кроме полубайтного. Полубайтный режим поддерживается всеми устройствами IEEE 1284. Бит Extensibility Link request послужит для определения дополнительных режимов в будущих расширениях стандарта.

Таб. 11. Идентификатор ПУ
Бит
Описание
Допустимые
комбинации
   
бит [7:0]
7
Request Extensibility Link - зарезервирован
10000000
6
Запрос режима ЕРР
01000000
5
Запрос режима ЕСР с RLE
00110000
4
Запрос режима ЕСР без RLE
00010000
3
Зарезервировано
00001000
2
Запрос идентификатора устройства с ответом в режиме:  
  полубайтный
00000100
  байтный
00000101
  ЕСР без RLE
00010100
  ЕСР с RLE
00110100
1
Зарезервировано
00000010
0
Запрос полубайтного режима
00000001
none
Запрос байтного режима
00000000

   Последовательность согласования (рис. 8) состоит из следующих шагов:

    1. Хост выводит байт расширяемости на линии данных.
    2. Хост устанавливает высокий уровень сигнала Selecting и низкий - AutoFeed#, что означает начало последовательности согласования.
    3. ПУ отвечает установкой низкого уровня сигнала Ack# и высокого - Errorft, PaperEnd и Select. Устройство, "не понимающее" стандарта 1284, ответа не даст, и дальнейшие шаги не выполнятся.
    4. Хост устанавливает низкий уровень сигнала Strobe# для записи байта расширяемости в ПУ.
    5. Хост устанавливает высокий уровень сигналов Strobeft и AutoLF#.
    6. ПУ отвечает установкой в низкий уровень сигналов PaperEnd и Еггог, если ПУ имеет обратный канал передачи данных. Если запрошенный режим поддерживается устройством, на линии Select устанавливается высокий уровень, если не поддерживается - низкий.
    7. ПУ устанавливает высокий уровень на линии Ack# для указания на завершение последовательности согласования, после чего контроллер устанавливает требуемый режим работы.

Рис. 8. Последовательность согласования режимов IEEE 1284

Развитие стандарта IEEE 1284

   Кроме основного стандарта IEEE 1284, который уже принят, в настоящее время в стадии проработки находятся новые стандарты, дополняющие его. К ним относятся:

  • IEEE Р1284.1 "Standard for Information Technology for Transport Independent Printer/Scanner Interface (TIP/SI)". Этот стандарт разрабатывается для управления и обслуживания сканеров и принтеров на основе протокола NPAP (Network Printing Alliance Protocol).
  • IEEE P1284.2 "Standard for Test, Measurement and Conformance to IEEE Std. 1284" - стандарт для тестирования портов, кабелей и устройств на совместимость с IEEE 1284.
  • IEEE P12843 "Standaixl for Interface and Protocol Extensions to IEEE Std. 1284 Compliant Peripheral and Host Adapter Ports" - стандарт на драйверы и использование устройств прикладным программным обеспечением (ПО). Уже приняты пецификации BIOS для использования ЕРР драйверами DOS. Прорабатывается стандарт на разделяемое использование одного порта цепочкой устройств или группой устройств, подключаемых через мультиплексор.
  • IEEE P1284.4 "Standard for Data Delivery and Logical Channels for IEEE Std. 1284 Interfaces" направлен на реализацию пакетного протокола достоверной передачи данных через параллельный порт. Основой служит протокол MLC (Multiple Logical Channels) фирмы Hewlett-Packard, однако совместимость с ним в окончательной версии стандарта не гарантируется.

Применение параллельных интерфейсов и LPT-портов

   Параллельные интерфейсы применяются в компьютерах разных семейств и классов, здесь мы ограничимся рассмотрением IBM PC-совместимых компьютеров.

Использование параллельных интерфейсов

   Распространенным применением LPT-порта является подключение принтера и плоттера. Остановимся на аппаратных
аспектах - режиме порта и кабеле подключения. Практически все принтеры могут работать с портом в режиме SPP, но при-
менение расширенных режимов дает свои преимущества:

   Двунаправленный режим (Bi-Di) не повышает производительность, но служит для сообщения о состоянии и параметрах принтера.

   Скоростные режимы (Fast Centronics) повышают производительность принтера, но могут потребовать качественного
кабеля (см. далее). От принтера не требуется каких-либо дополнительных "интеллектуальных" способностей.

   Режим ЕСР - потенциально самый эффективный, имеет системную поддержку во всех версиях Windows. На некоторых принтерах реализован не полностью (может отсутствовать аппаратная компрессия). ЕСР поддерживают принтеры HP DeskJet моделей бхх, LaserJet 4 и далее, современные модели фирмы Lexmark. Требует применения кабеля, по частотным свойствам соответствующего IEEE 1284.

   Простейший вариант кабеля подключения принтера - 18-проводный кабель с неперевитыми проводами. Он используется
для работы в режиме SPP. При длине более 2 м желательно, чтобы хотя бы линии Strobe# и Busy были перевиты с отдельными общими проводами. Для скоростных режимов может оказаться непригодным, причем сбои могут происходить
нерегулярно и лишь при определенных последовательностях передаваемых кодов. Встречаются кабели Centronics, у кото-
рых отсутствует связь контакта 17 разъема PC с контактом 36 разъема принтера. При попытке подключения таким кабелем
принтера, работающего в стандарте 1284, появится сообщение о необходимости применения "двунаправленного кабеля". Принтер не может сообщить системе о поддержке расширенных режимов, на что рассчитывают драйверы принтера.

   Неплохие электрические свойства имеют ленточные кабели, у которых сигнальные цепи (управляющих сигналов) чере-
дуются с общими проводами. Но их применение в качестве внешнего интерфейса непрактично (нет второго защитного
слоя изоляции, высокая уязвимость) и неэстетично (круглые кабели смотрятся лучше).

   Идеальным вариантом являются кабели, в которых все сигнальные линии перевиты с общими проводами и заключены
в общий экран - то, что требует IEEE 1248. Такие кабели гарантированно работают на скоростях до 2 Мбайт/с, их длина может достигать 10 м.

   В табл. 12 приводится распайка кабеля подключения принтера с разъемом XI типа A (DB25-P) со стороны PC и Х2 типа В (Centronics-36) или типа С (миниатюрный) со стороны принтера. Использование общих проводов (GND) зависит от качества кабеля (см. выше). В простейшем случае (18-проводный кабель) все сигналы GND объединяются в один провод. Качественные кабели требуют отдельного обратного провода для каждой сигнальной линии, однако в разъемах типа А и В для этого недостаточно контактов (см. табл. 12, где в скобках указаны номера контактов разъема PC типа А, которым соответствуют обратные провода). В разъеме типа С обратный провод (GND) имеется для каждой сигнальной цепи; сигнальным контактам 1-17 этого разъема соответствуют контакты GND 19-35.

Таб. 12. Распайка кабеля подключения принтера
XI,разъем PC типа А
Сигнал
Х2, разъем PRN типа В
Х2, разъем PRN типа С
1
Strobe#
1
15
2
DataO
2
6
3
Data1
3
7
4
Data2
4
8
5
Data3
5
9
6
Data4
6
10
7
Data5
7
11
8
Data6
8
12
9
Data7
9
13
10
Ack#
10
3
11
Busy
11
1
12
PaperEnd
12
5
13
Select
13
2
14
AutoLF#
14
17
15
Error*
32
4
16
lnit#
31
14
17
Selecting
36
16
18
GND(1)
19
33
19
GND (2 3)
2021
2425
20
GND (4 5)
2223
2627
21
GND (6 7)
2425
2829
22
GND (8 9)
2627
3031
23
GND (11 15)
29
1922
24
GND (10 12 13)
28
20 21 23
25
GND (14 16 17)
30
32 34 35

      Ряд отечественных (и стран бывшего СЭВ) принтеров имеет интерфейс ИРПР (IFSP в документации на принтеры ROBOTRON). Он является близким родственником интер- фейса Centronics, но со следующими отличиями:

  • Линии данных инвертированы.
  • Протокол квитирования несколько иной.
  • Ко всем входным линиям (на принтере) подключены пары согласующих резисторов: 220 Ом к питанию +5 В и 330 Ом к общему проводу. Это позволяет использовать длинные кабели, но перегружает большинство интерфейсных адаптеров PC.
  • Сигналы ошибки и конца бумаги отсутствуют.

   Интерфейс ИРПР может быть программно реализован через обычный LPT-порт, но для устранения перегрузки выходных линий согласующие резисторы из принтера желательно удалить. Порт, перегруженный по выходу, может преподносить всякого рода сюрпризы (естественно, неприятные и трудно диагностируемые).

   Для связи двух компьютеров по параллельному интерфейсу применяются различные кабели в зависимости от режимов используемых портов. Самый простой и медленный - полубайтный режим, работающий на всех портах. Для этого режима в кабеле достаточно иметь 10 сигнальных и один общий провод. Распайка разъемов кабеля приведена в табл. 13. Связь двух PC данным кабелем поддерживается стандартным ПО типа Interink из MS-DOS или Norton Commander.

   Для машин PS/2 с двунаправленным портом фирма IBM выпускала переходное устройство в комплекте с программой Data Migration Facility. Переходник устанавливался на разъем LPT порта PS/2, а к его разъему Х2 типа Centronics присоединялся обычный принтерный кабель, подключаемый к LPT-порту любого PC. Так предлагалось решить проблему переноса файлов со старых компьютеров, оснащенных 5" дисководами, на компьютеры PS/2 с дисководами 3,5". Распайка такого переходника приведена в табл. 14. Как видно, данный переходник нельзя использовать при связи через Interink или Norton Commander. Если обе соединяемые машины имеют двунаправленные порты, переходник обеспечивает симметричную двунаправленную связь. По скорости обмена превосходит вышеописанное полубайтное соединение в 2 раза. Это соединение не соответствует двунаправленному режиму IEEE 1284.

Таб. 13. Распайка разъемов кабеля
XI, разъем РС#1
Х2, разъем РС#2
Бит
Контакт
Контакт
Бит
DR.O
2
15
SR.3
DR.1
3
13
SR.4
DR.2
4
12
SR.5
DR.3
5
10
SR.6
DR.4
6
11
SR.7
SR.6
10
5
DR.3
SR.7
11
6
DR.4
SR.5
12
4
DR.2
SR.4
13
3
DR.1
SR.3
15
2
DR.O
GND
18-25
18-25
GND

   Разъемы XI и Х2 - DB25-P (вилки).

Таб. 14. Распайка переходника PS/2 -> LPT
XI
Х2
Контакт
Бит
Бит
Контакт
1
CR.O
SR.6
10
2
DR.O
DR.O
2
3
DR.1
DR.1
3
4
DR.2
DR.2
4
5
DR.3
DR.3
5
6
DR.4
DR.4
6
7
DR.5
DR.5
7
8
DR.6
DR.6
8
9
DR.7
DR.7
9
10
SR.6
CR.O
1
12
SR.5
CR.3
36
17
CR.3
SR.5
12
18-25
GND
GND
19-30, 33

   Разъемы XI - DB25-P (вилка), Х2 - Centmnics-36 (розетка).

   Высокоскоростная связь двух компьютеров может выполняться и в режиме ЕСР (режим ЕРР неудобен, поскольку требует синхронизации шинных циклов ввода/вывода двух компьютеров). В табл. 15 приведена распайка кабеля. В отличие от предыдущих таблиц, описывающих кабели для программно-управляемых режимов, в ней приведены имена сигналов, которые аппаратно генерируются адаптерами портов. Этот же кабель может использоваться и для связи в байтном режиме. Такая связь поддерживается Windows 95.

Таб. 15. Распайка разъемов кабеля для высокоскоростной связи
Разъем XI
Разъем Х2
Контакт
Имя в ЕСР
Имя в ЕСР
Контакт
1
HostClk
PeriphClk
10
14
HostAck
PeriphAck
11
17
1284Active
PeriphRequest#
15
16
ReverseRequest*
AckReverse*
12
10
PeriphClk
HostClk
1
11
PeriphAck
^MostAck
14
12
AckReverse*
ReverseRequest#
16
13
Xflag
/-
-
15
PeriphRequest#
1284Active
17
2-9
Data [0:7]
Data [0:7]
2-9

   Подключение сканера к LPT-порту эффективно, только если порт обеспечивает хотя бы двунаправленный режим (Bi-Di),
поскольку основной поток - ввод. Лучше использовать порт ЕСР, если этот режим поддерживается сканером (или ЕРР, что маловероятно).

   Подключение внешних накопителей (lomega Zip Drive, CD-ROM и др.), адаптеров ЛВС и других симметричных устройств ввода/вывода имеет свою специфику. В режиме SPP наряду с замедлением работы устройства заметна принципиальная асимметрия этого режима: чтение данных происходит в два раза медленнее, чем (весьма небыстрая) запись. Применение двунаправленного режима (Bi-Di или PS/2 Type 1) устранит эту асимметрию - скорости сравняются.
Только перейдя на ЕРР, можно получить нормальную скорость работы. В режиме ЕРР подключение к LPT-порту почти не уступает по скорости подключению через ISA-контроллер. Это справедливо и при подключении устройств со стандартным интерфейсом шин к LPT-портам через преобразователи интерфейсов (например, LPT - IDE, LPT - SCSI, LPT - PCMCIA).

   В табл. 16 описано назначение выводов разъема LPT-порта в различных режимах и их соответствие битам регистров стандартного порта.

Таб. 16. Назначение выводов разъема LPT-порта в различных режимах
Контакт
I/O
Бит*
SPP
ECP
ЕРР
1
0/1
CR.O
Strobe#
Hostdk
Write#
2
0/1
DR.0
DataO
DataO
DataO
3
0/1
DR.1
Data-l
Data1
Data1
4
0/1
DR.2
Data 2
Data 2
Data 2
5
0/1
DR.3
Data3
Data3
Data3
6
0/1
DR.4
Data 4
Data 4
Data 4
7
0/1
DR.5
Data 5
Data 5
Data 5
8
0/1
DR.6
Data 6
Data 6
Data 6
9
0/1
DR.7
Data 7
Data 7
Data 7
10
I
SR.6
Ack#
PeriphClk
INTR#
11
I
SR.7
Busy
PeriphAck
Wait"
12
I
SR.5
PaperEnd
AckReveree*
**
13
I
SR.4
Select
Xflag
**
14
0/1
CR.1
AutoLF#
HostAck
DataStb#
15
I
SR.3
Error"
PeriphRequest#
**
16
0/1
CR2
hit"
ReverseRequest*
Reset*
17
0/1
CR.3
Selecting
1284Active
AddrStb#


   * Символом "\" отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии).
   ** - означает "определяется пользователем".

Конфигурирование LPT-портов

   Управление параллельным портом разделяется на два этапа - предварительное конфшурирование (Setup) аппаратных средств порта и текущее (оперативное) переключение режимов работы прикладным или системным ПО. Оперативное переключение возможно только в пределах режимов, разрешенных при конфигурировании. Этим обеспечивается возможность согласования аппаратуры с ПО и блокирования ложных переключении, вызванных некорректными действиями программы.

   Конфигурирование LPT-порта зависит от его исполнения. Порт, расположенный на плате расширения (мультикарте), устанавливаемой в слот ISA или ISA+VLB, конфигурируется джамперами на самой плате. Порт на системной плате конфигурируется через BIOS Setup.

   Конфигурированию подлежат следующие параметры:

  • Базовый адрес - 3BCh, 378h или 278h. При инициализации BIOS проверяет наличие портов по адресам именно в этом порядке и, соответственно, присваивает обнаруженным портам логические имена LPT1, LPT2, LPT3. Адрес 3BCh имеет адаптер порта, расположенный на плате MDA или HGC. Большинство портов по умолчанию конфигурируются на адрес 378h и могут переключаться на 278h.
  • Используемая линия запроса прерывания: для LPT - IRQ7, для LPT2 - IRQ5. Традиционно прерывания от принтера не используются, и этот дефицитный ресурс можно сэкономить. Однако при использовании скоростных режимов ЕСР (или Fast Centronics) работа через прерывания может заметно повысить производительность и снизить загрузку процессора.
  • Использование канала DMA для режимов ЕСР и Fast Centronics - разрешение и номер канала DMA (по умолчанию - 3).

   Режимы работы порта:

  • SPP - порт работает только в стандартном однонаправленном программно-управляемом режиме.
  • PS/2, он же Bi-Directional - отличается от SPP возможностью реверса канала (установкой СR.5=7).
  • Fast Centronics - аппаратное формирование протокола Centronics с использованием FIFO-буфера и, возможно, DMA.
  • ЕРР - в зависимости от использования регистров порт работает в режиме SPP или ЕРР.
  • ЕСР - по умолчанию включается в режим SPP или PS/2, записью в ECR может переводиться в любой режим ЕСР, но перевод в ЕРР записью в ECR кода 100 не гарантируется.
  • ЕСР+ЕРР - то же, что и ЕСР, но запись в ECR кода режима 100 переводит порт в ЕРР.

   Выбор режима ЕРР, ЕСР или Fast Centronics сам по себе не приводит к повышению быстродействия обмена с подключенными ПУ, а только дает возможность драйверу и ПУ установить оптимальный режим в пределах их "разумения". Большинство современных драйверов и приложений пытаются использовать эффективные режимы, так что "подрезать им крылья" установкой простых режимов без веских оснований не стоит.

   Принтеры и сканеры могут пожелать режима ЕСР. Windows (3-х, 95 и NT) имеет системные драйверы для этого режима. В среде DOS печать через ЕСР поддерживается только специальным загружаемым драйвером.

   Сетевые адаптеры, внешние диски и CD-ROM, подключаемые к параллельному порту, могут использовать режим ЕРР. Для этого режима специальный драйвер пока еще не применяется; использование ЕРР включается в драйвер самого подключаемого устройства. Большинство современных ПУ, подключаемых к LPT-порту, поддерживает стандарт 1284 и РпР. Для поддержки этих
функций компьютером с аппаратной точки зрения достаточно иметь контроллер интерфейса, поддерживающий стандарт 1284. Если подключаемое устройство поддерживает РпР, оно по протоколу согласования режимов 1284 способно "договориться" с портом о возможных режимах обмена. Подключенное устройство должно сообщить операционной системе (ОС) все необходимые сведения о себе - идентификатор производителя, модель и набор поддерживаемых команд. Более подробная информация может содержать идентификатор класса, подробное описание и идентификатор устройства, с которым обеспечивается совместимость. В соответ-
ствии с принятой информацией ОС может предпринять действия по установке требуемого ПО для поддержки данного устройства.

Неисправности и тестирование параллельных портов

   Тестирование параллельных портов разумно начинать с проверки их наличия в системе. Список адресов установленных
портов появляется в таблице, выводимой BIOS на экран перед загрузкой ОС. Список можно посмотреть и с помощью тестовых программ или прямо в B/OS Data Area с помощью отладчика.

   Если BIOS обнаруживает меньше портов, чем установлено физически, скорее всего, двум портам присвоен один адрес. При этом работоспособность ни одного из конфликтующих портов не гарантируется: они будут одновременно выводить сигналы, но при чтении состояния конфликт на шине скорее всего приведет к искажению данных. Программное тестирование порта без диагностической заглушки (Loop Back) не покажет ошибок, поскольку при этом читаются данные выходных регистров, а они у всех конфликтующих (по отдельности исправных) портов совпадут. Именно такое тестирование производит BIOS при проверке на наличие портов. Разбираться с такой ситуацией следует, последовательно устанавливая порты и наблюдая за адресами, появляющимися в списке.

   Если физически установлен только один порт, a BIOS его не обнаруживает, то либо порт отключен при конфигурировании, либо он вышел из строя (скорее всего из-за нарушений правил подключения). Иногда вам везет, и неисправность устраняется при "передергивании" платы в слоте - там возникают проблемы с контактами.

   Наблюдаются и такие "чудеса" - при "теплой" перезагрузке DOS после Windows 95 порт не виден (и приложения не могут печатать из MS-DOS). Однако после повторной перезагрузки ПО^Гпорт оказывается на месте. С этим явлением легче смириться, чем бороться.

   Тестирование портов с помощью диагностических программ позволяет проверить выходные регистры, а при использовании специальных заглушек - и входные линии. Поскольку количество выходных линий порта (12) и входных (5) различно, то полная проверка порта с помощью пассивной заглушки принципиально невозможна. Разные программы тестирования требуют применения разных заглушек (рис. 9).

Рис. 9. Схема заглушки для тестирования LPT-порта программой Checkit

   Большинство неприятностей при работе с LPT-портами доставляют разъемы и кабели. Для проверки порта, кабеля и принтера можно воспользоваться специальными тестами из популярных диагностических программ (Checkit, PCCheck и т. п.), а можно и попытаться вывести на принтер какой-либо символьный файл.

    Если вывод файла с точки зрения DOS проходит (копирование файла на устройство с именем LPTn или PRN совершается быстро и успешно), а принтер (исправный) не напечатал ни одного символа - скорее всего, это обрыв (неконтакт в разъеме) цепи Strobed.

    Если принтер находится в состоянии On Line, но появляется сообщение о его неготовности, причину следует искать в линии Busy.

   Если принтер, подключенный к порту, в стандартном режиме (SPP) печатает нормально, а при переходе в ЕСР начинаются сбои, следует проверить кабель - соответствует ли он требованиям IEEE 1284 (см. выше). Дешевые кабели с неперевитыми проводами нормально работают на скоростях 50-100 Кбайт/с, но при скорости 1-2 Мбайт/с, обеспечиваемой ЕСР, имеют полное право не
работать, особенно при длине более 2 м.

    Если при установке драйвера РпР-принтера появилось сообщение о необходимости применения "двунаправленного кабеля", проверьте наличие связи контакта 17 разъема DB-25 с контактом 36 разъема Centronics. Хотя эта связь изначально редусматривалась, в ряде кабелей она отсутствует.

   Если принтер искажает информацию при печати, возможен обрыв (или замыкание) линий данных. В этом случае удобно воспользоваться файлом, содержащим последовательность кодов всех печатных символов. Если файл печатается с повтором некоторых символов или их групп, по периодичности повтора можно легко вычислить обирванный провод данных интерфейса. Этот же файл удобно использовать для проверки аппаратной русификации принтера.

   Аппаратные прерывания от LPT-порта используются не всегда. Даже DOS-программа фоновой печати PRINT работает с портом по опросу состояния, а ее обслуживающий процесс запускается по прерыванию от таймера. Поэтому неисправности, связанные с цепью прерывания от порта, проявляются не часто. Однако по-настоящему многозадачные ОС (например, NetWare) стараются работать с портом по прерываниям. Протестировать линию прерывания можно, только подключив к порту ПУ или заглушку. Если к порту с неисправным каналом прерывания подключить адаптер локальной сети, то он, возможно, будет работать, но с очень низкой скоростью: на любой запрос ответ будет приходить с задержкой в десятки секунд - принятый из адаптера пакет будет приниматься не по прерыванию (сразу по приходу), а по внешнему тайм-ауту.

Функции BIOS для LPT-порта

   BIOS обеспечивает поддержку LPT-порта, необходимую для организации вывода по интерфейсу Centronics.

   В процессе начального тестирования POST BIOS проверяет наличие параллельных портов по адресам 3BCh, 378h и 278h и помещает базовые адреса обнаруженных портов в ячейки BIOS Data Area 0:0408h, 040Ah, 040Ch, 040Eh. Эти ячейки хранят адреса портов LPT1-LPT4, нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки 0:0478, 0479, 047А, 047В заносятся константы, задающие тайм-аут для этих портов. Поиск портов обычно ведется достаточно примитивно - по
базовому адресу (в регистр данных предполагаемого порта) выводится тестовый байт (ААЬ или 55h), затем производится ввод по тому же адресу. Если считанный байт совпал с записанным, предполагается, что найден LPT-порт; его адрес помещается в ячейку BIOS Data Area. Базовые адреса портов могут быть впоследствии изменены программно. Адрес порта LPT4 BIOS самостоятельно установить не может, поскольку в списке стандартных адресов поиска имеются только три указанных.

   Обнаруженные порты инициализируются - записью в регистр управления формируется и снимается сигнал lnit#, после чего записывается значение OCh, соответствующее исходному состоянию сигналов интерфейса. В некоторых случаях сигнал lnit# активен с момента аппаратного сброса до инициализации порта во время загрузки ОС. Это можно заметить по поведению включенного принтера во время перезагрузки компьютера - у принтера надолго гаснет индикатор On-Line. Следствие этого явления - невозможность распечатки экранов (например, параметров BIOS Setup) no клавише Print Screen до загрузки ОС.

   Программное прерывание BIOS INT 17h обеспечивает следующие функции поддержки LPT-порта:

  • 00h - вывод символа из регистра AL по протоколу Centronics (без аппаратных прерываний). Данные помещаются в выходной регистр, и, дождавшись готовности принтера (снятия сигнала Busy), формируется строб.
  • 01h - инициализация интерфейса и принтера (установка исходных уровней управляющих сигналов, формирование импульса lnit#, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса).
  • 02h - опрос состояния принтера (чтение регистра состояния порта). При вызове INT 17h номер функции задается в регистре АН,
    номер порта - в регистре DX(Q - LPT1, 1 - LPT2...). При возврате регистр АН содержит код состояния - биты регистра состояния SR[7:3] (биты 6 и 3 инвертированы) и флаг тайм-аута в бите 0. Флаг тайм-аута устанавливается при неудачной попытке вывода символа, если сигнал Busy не снимается в течение времени, определенного для данного порта в ячейках тайм-аута. В этом случае, согласно протоколу Centronics, строб данных не вырабатывается.

   Перехват прерывания INT 17h является удобным способом внедрения собственных драйверов принтера. Потребность в них может возникать при подключении к порту принтера с интерфейсов ИРПР или необходимости перекодировки символов.


На главную Назад