Порт имеет поддержку на уровне BIOS — поиск установленных портов во время теста POST и сервисы печати Int 17h (см. п. 8.3.3) обеспечивают вывод символа (по опросу готовности, не используя аппаратных прерываний), инициализацию интерфейса и принтера, а также опрос состояния принтера. Практически все современные системные платы (еще начиная с PCI-плат для процессоров 486) имеют встроенный адаптер LPT-порта. Существуют карты ISA с LPT-портом, где он чаще всего соседствует с парой СОМ-портов, а также с контроллерами дисковых интерфейсов (FDC+IDE). LPT-порт обычно присутствует и на плате дисплейного адаптера MDA (монохромный текстовый) и HGC (монохромный графический «Геркулес»). Есть и карты PCI с дополнительными LPT-портами.
К LPT-портам подключают принтеры, плоттеры, сканеры, коммуникационные устройства и устройства хранения данных, а также электронные ключи, программаторы и прочие устройства. Иногда параллельный интерфейс используют для связи между двумя компьютерами — получается сеть, «сделанная на коленке» (LapLink).
1.1. Традиционный LPT-порт
Традиционный, он же стандартный, LPT-порт называется
Таблица 1.1. Разъем стандартного LPT-порта
| Контакт DB-25S | № провода в кабеле | Назначение I/O¹ | Бит² | Сигнал |
|---|---|---|---|---|
| 1 | 1 | O/I | CR.0\ | Strobe# |
| 2 | 3 | O(I) | DR.0 | Data 0 |
| 3 | 5 | O(I) | DR.1 | Data 1 |
| 4 | 7 | O(I) | DR.2 | Data 2 |
| 5 | 9 | O(I) | DR.3 | Data 3 |
| 6 | 11 | O(I) | DR.4 | Data 4 |
| 7 | 13 | O(I) | DR.5 | Data 5 |
| 8 | 15 | O(I) | DR.6 | Data 6 |
| 9 | 17 | O(I) | DR.7 | Data 7 |
| 10 | 19 | I³ | SR.6 | Ack# |
| 11 | 21 | I | SR.7\ | Busy |
| 12 | 23 | I | SR.5 | PaperEnd (PE) |
| 13 | 25 | I | SR.4 | Select |
| 14 | 2 | O/I | CR.1\ | Auto LF# (AutoFeed#) |
| 15 | 4 | I | SR.3 | Error# |
| 16 | 6 | O/I | CR.2 | Init# |
| 17 | 8 | O/I | CR.3\ | Select In# |
| 18-25 | 10, 12, 14, 16, 18, 20, 22, 24, 26 | - | - | - |
¹ I/O задает направление передачи (вход-выход) сигнала порта. O/I обозначает выходные линии, состояние которых считывается при чтении из портов вывода; O(I) — выходные линии, состояние которых может быть считано только при особых условиях (см. ниже).
² Символом «\» отмечены инвертированные сигналы (1 в регистре соответствует низкому уровню линии).
³ Вход Ack# соединен резистором (10 кОм) с питанием +5 В.
Адаптер SPP-порта содержит три 8-битных регистра, расположенных по соседним адресам в пространстве ввода-вывода, начиная с базового адреса порта BASE (3BCh, 378h или 278h).
DR) — BASE. Данные, записанные в этот регистр, выводятся на выходные линии Data[7:0]. Данные, считанные из этого регистра, в зависимости от схемотехники адаптера соответствуют либо ранее записанным данным, либо сигналам на тех же линиях, что не всегда одно и то же.
SR) — регистр состояния (только чтение), адрес=BASE+1. Регистр отображает SR.4-SR.7) и флаг прерывания. Бит SR.7 инвертируется — низкому уровню сигнала соответствует единичное значению бита в регистре, и наоборот.
Ниже описано назначение бит регистра состояния (в скобках даны номера контактов разъема порта).
♦ SR.7 — Busy — инверсное отображение состояния линии Busy (11): при низком уровне на линии устанавливается единичное значения бита — разрешение на вывод очередного байта.
♦ SR.6 — Ack (Acknowledge) — отображение состояния линии Ack# (10).
♦ SR.5 — РЕ (Paper End) — отображение состояния линии Paper End (12). Единичное значение соответствует высокому уровню линии — сигналу о конце бумаги в принтере.
♦ SR.4 — Select — отображение состояния линии Select (13). Единичное значение соответствует высокому уровню линии — сигналу о включении принтера.
♦ SR.3 — Error — отображение состояния линии Error# (15). Нулевое значение соответствует низкому уровню линии — сигналу о любой ошибке принтера.
♦ SR.2 — PIRQ — флаг прерывания по сигналу Ack# (только для порта PS/2). Бит обнуляется, если сигнал Ack# вызвал аппаратное прерывание. Единичное значение устанавливается по аппаратному сбросу и после чтения регистра состояния.
♦ SR[1:0] — зарезервированы.