- •Характеристик зп
- •Порти паралельного адаптера
- •Порт 378h
- •Порт 37Ah
- •Порт 379h
- •Функції bios для роботи з принтером
- •Друк символу
- •Функції bios для роботи з послідовним асинхронним адаптером
- •Ініціалізація портів асинхронного адаптера
- •Ініціалізація принтера
- •Визначення стану принтера
- •Передача байта
- •Прийом байта
- •Визначення стану асинхронного адаптера
Порти паралельного адаптера
Кожний паралельний адаптер обслуговується декількома портами вводу/виводу.
Зазвичай програма рідко працює з паралельним адаптером на рівні портів вводу/виводу, так як достатньо використовувати спеціальні призначені для цього функції BIOS чи MS-DOS. Однак відомості про порти можуть знадобитися нам для розробки власного драйверу принтер чи програми, що обслуговує будь-який інший пристрій, підключений до паралельного адаптеру
Порт 378h
Цей порт, доступний як для запису, так і для читання, призначений для виводу даних. Програма може прочитати байт, тільки що записаний в порт 378h.
Порт 37Ah
Порт зазвичай застосовується для управління принтером, що підключений до паралельного адаптеру. Від доступний для читання та запису. Нижче приведено опис окремих розрядів даного порту:
Поле |
Опис |
0 |
STROBE Cтроб даних, приймає значення 1 при виводі байта, підключений до 1 контакту роз’ємну паралельного адаптера |
1 |
AUTO LineFeed Автоматичний перевід стрічки після символу повернення каретки CR, контакт 14 |
2 |
INIT Скидання принтера, активний рівень - 0, контакт 16 |
3 |
SLCT IN Вибір принтера для роботи, контакт 17 |
4 |
IRQ Enable Дозвіл переривання від принтера. Якщо переривання від принтера дозволені, вони виробляються коли сигнал готовності принтера ACK (контакт 10) приймає рівень логічного 0 |
5-7 |
Рівно 0 |
Порт 379h
Порт стану принтера, доступний тільки для читання:
Поле |
Опис |
0-2 |
Рівно 0 |
3 |
ERROR Сигнал помилки, активний рівень - 0, контакт 15 |
4 |
SLCT Принтер вибраний, контакт 13 |
5 |
PE Кінець паперу, контакт 12 |
6 |
ACK Готовність принтера, активний рівень - 0, контакт 10 |
7 |
BUSY 0 - принтер зайнятий, знаходиться в стані offline чи виникла помилка, контакт 11 |
Функції bios для роботи з принтером
В BIOS є ряд функцій, призначених для роботи з принтером, підключеним через паралельний адаптер. Це функції 00h, 01h, 02h переривання INT 17h.
Друк символу
Функція 00h призначена для друку одного символу
Регістри на вході: |
AH = 00h; AL = код ASCII символу, який потрібно надрукувати; DX = номер паралельного адаптера: 0 – LPT1, 1 – LPT2, 2 – LPT3 |
Регістри на виході: |
AH = слово стану принтера |
Ця функція виводить на принтер один символ, заданий в регістрі AL. В регістрі DX необхідно записати номер використовуваного паралельного адаптера. Для адаптера LPT1 це 0, для LPT2 - 1 і так далі.
Після виконання переривання регістр AH буде містити слово стану, що має наступний формат:
Поле |
Опис |
0 |
Минув час очікування при виконанні операції друку, можливо, що принтер несправний |
1-2 |
Не використовуються |
3 |
Помилка вводу/виводу |
4 |
1 - принтер вибрано для роботи; 0 - принтер знаходить в стані offline |
5 |
Кінець паперу |
6 |
Підтвердження |
7 |
1 - принтер готовий до роботи; 0 - принтер зайнятий |
Викликавши функцію 00h переривання INT 17h, програма повинна провірити біти слова стану і переконатися в тому, що вивід байту пройшов без помилок. Користувач часто забуває перевести принтер в стан online, вставити папір, чи взагалі включити принтер. В цьому випадку доцільно нагадати користувачу про необхідність виконання цих дій і потім повторити спробу друку.
Якщо принтер несправний, програма повинна надати користувачу можливість відмінити друк.
Потрібно звернути увагу на біт 1 байту стану. Якщо принтер знаходиться в режимі offline, функція 00h переривання INT 17h очікує деякий час готовності принтера, після чого, якщо принтер так і не перейшов в стан готовності, встановлює біт 1 в байті стану. Область даних BIOS за адресою 0000h:0478h містить чотири байта, які використовуються в якості лічильника часу при очікуванні готовності принтера.
