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

Сервис компьютерная помощь люберцы поможет обновить системный блок.

Пример 6



Пример 6

/*== ПРИМЕР 8.7 ==*/ /*=================== Загружаемый шрифт ==================*/ #include <dos.h> #include <stdio.h> void interrupt (* old17)(); void interrupt h17(); int p1,p2,p3; /* Номера портов принтера */ #define prt(x) putc(x,stdprn) #define byte unsigned char /*==== main ====*/ main() { char *st[]={ /* Текст для печати */ "He's a real Nowhere Man,", "Sitting in his Nowhere Land,", "Making all his nowhere plan for nobody." ; byte esct[]= { /* Esc-последовательность */ 27, 38, 0, /* Начало загрузки шрифта */ 40, 40, /* Номера начального и конечного кодов */ 0x8a, /* Ширина символа - 0a и сдвиг 80 */ /* Образ символа */ 32,28,34,42,42,42,42,42,16,0,0 }; int i; prt(27); prt(64); /* Инициализация принтера */ /* Выдача Esc-последовательности */ for (i=0; i<17; prt(esct[i++])); p1=peek(0x40,8); p2=p1+1; p3=p2+1; /* Опр.портов */ /* Подключение к вектору 17 */ *old17=getvect(0x17); setvect(0x17,h17); /* Печать текста */ for(i=0;i<3; fprintf(stdprn,"%s\n",st[i++])); setvect(0x17,old17); /* Восстановление вектора */ prt(27); prt(64); /* Инициализация принтера */ } /*==== Обработчик 17-го прерывания ====*/ void interrupt h17() { if (_AH==0) { /* Вывод символа */ if (_AL=='a') { /* Символ "a" - особая обработка */ /* Esc-послед. переключения на шрифт ОЗУ. */ ownchar(27); ownchar(0x25); ownchar(1); /* Печать символа ОЗУ с кодом 40 */ ownchar(40); /* Esc-послед. переключения на шрифт ПЗУ. */ ownchar(27); ownchar(0x25); ownchar(0); } else ownchar(_AL); /* Печать символа не "a". */ } else (*old17)(); /* Старый обработчик */ } /*==== Печать одного символа ====*/ ownchar(byte f) { byte stb; /* Байт состояния */ /* Ожидание готовности */ stb=0; while ((stb&0x80)==0) stb=inport(p2); outportb(p1,f); /* Вывод символа */ outportb(p3,0x0d); outportb(p3,0x0c); /* Строб */ }

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


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