Системное программное обеспечение персональных ЭВМ


Пример 1



Пример 1

/*== ПРИМЕР 8.1 ==*/ /*============== Получение статуса принтера ==============*/ #include <dos.h> main() { union REGS rr; int dataport,statusport,ctrlport; /* Номера портов */ unsigned char stat; /* Байт статуса */ int i; /* Определение адресов портов принтера */ dataport=peek(0x40,8); statusport=dataport+1; ctrlport=statusport+1; printf("Порты LPT1 = %03X, %03X, %03X\n", dataport,statusport,ctrlport); /* Проверка состояний */ printf("\nУстановите: принтер выключен. "); printf("Нажмите любую клавишу\n"); getch(); stat=inportb(statusport); printf("Состояние принтера - "); for (i=7; i>=0; i--) if ((stat>>i)&1) printf("1"); else printf("0"); printf("\nEpson состояние - 11110111\n"); printf("\nУстановите: принтер offline. "); printf("Нажмите любую клавишу\n"); getch(); stat=inportb(statusport); printf("Состояние принтера - "); for (i=7; i>=0; i--) if ((stat>>i)&1) printf("1"); else printf("0"); printf("\nEpson состояние - 01010111\n"); printf("\nУстановите: нет бумаги. "); printf("Нажмите любую клавишу\n"); getch(); stat=inportb(statusport); printf("Состояние принтера - "); for (i=7; i>=0; i--) if ((stat>>i)&1) printf("1"); else printf("0"); printf("\nEpson состояние - 01110111\n"); printf("\nУстановите: принтер готов. "); printf("Нажмите любую клавишу\n"); getch(); stat=inportb(statusport); printf("Состояние принтера - "); for (i=7; i>=0; i--) if ((stat>>i)&1) printf("1"); else printf("0"); printf("\nEpson состояние - 11011111\n"); }

Разряды байта, передаваемого в порт управления, интерпретируются следующим образом:

0- устанавливается в 1 при передаче байта данных (строб вывода);
1- установка его в 1 вызывает автоматический перевод строки после возврата каретки;
2- нормально установлен в 0, устанавливается в 1 при инициализации порта принтера;
3- устанавливается в 1 при выборе принтера;
4- разрешает (1) прерывание принтера, используется только в программе спуллинга печати;
5 - 6- не используются устанавливаются в 0.
<


- Начало -  - Назад -  - Вперед -