А. Дмитриев

Что может принтер "Корвета"

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

Рассмотрим возможности принтеров на примере индийского CPF-H80, которым преимущественно комплектуются "Корветы" (многие другие модели управляются так-же). В распоряжении его владельца имеются большой выбор шрифтов, подстрочные и надстрочные символы, возможности управления режимами печати и использования самостоятельно созданных символов, отсутствующих в стандартном наборе 64 символов ASCII.

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

В качестве примера использования принтера приведем фрагмент текста и Бейсик-программу печати этого текста.

Распечатанная страницы (отрывок)
Рисунок 1. Распечатанная страницы (отрывок). TODO: Нужен доброволец с принтером для распечатывания и сканирования данной страницы

    10 DEFSNG R,S
    20 REM ************* ОПРЕДЕЛЕНИЕ УПРАВЛЯЮЩИХ КОДОВ **
    30 SN=CHR$(27)+"@") :REM Начальная инициализация ПУ *
    40 SU=CHR$(27)+"!") :REM Универсальный переключатель*
    50 SR=SU+CHR$(32)   :REM Печать расширенных символов*
    60 SB=SU+CHR$(8)    :REM "Жирный шрифт"             *
    70 SI=SU+CHR$(64)   :REM Курсив (режим ITALIC)      *
    80 SP=SU+CHR$(128)  :REM Печать с подчеркиванием    *
    90 RU=SU+CHR$(0)    :REM Восстановление нормального *
    100 REM                               режима        *
    110 SH=CHR$(27)+"S"+CHR$(0) :REM Надстрочн.символы  *
    120 SL=CHR$(27)+"S"+CHR$(1) :REM Подстрочн.символы  *
    130 RT=CHR$(27)+"T"         :REM Выключение         *
    140 REM        надстрочных и подстрочных символов   *
    150 REM *********************************************
    160 LPRINT SN;CHR(27);1;CHR$(10):REM Начальная
    170 REM инициализация принтера и смещение текста
    180 REM                     вправо на 10 позиций
    190 LPRINT SR;"   2.4. АЛГЕБРАИЧЕСКИЕ"
    195 LPRINT "          УРАВНЕНИя"
    200 LPRINT
    210 LPRINT SB;"2.4.2. Общие теоремы."
    220 LPRINT:LPRINT SI;"Основная теорема алгебры:"
    230 LPRINT RU;"Каждое алгебраическое уравнение n";SH;"-й";RT;" степени"
    240 LPRINT " X";SH;"n";RT;"+a";SL;"1";RT;"X";SH;"n-1";RT;"+...+a";
    250 LPRINT SL;"n-1";RT;"X+a";SL;"n";RT;"=0."
    260 LPRINT "коэффициенты которого a";SL;"i;RT;"
    270 LPRINT " (i=1,2...n)-действительные"
    280 LPRINT "или комплексные числа, имеет ";BP;"ровно n корней";
    290 LPRINT RU;", если"
    300 LPRINT "k-кратный корень считать за k корней."
    310 LPRINT
    320 LLIST

Команда переключения шрифтов ESC ! n в зависимости от значения n устанавливает следующие шрифты:

    n=0   (&B00000000) нормальная печать (шрифт "PICA" )
    n=1   (&B00000001) шрифт "ELITE"
    n=4   (&B00000100) сжатый шрифт
    n=8   (&B00001000) "ирный" шрифт
    n=16  (&B00010000) режим печати "двойной удар"
    n=32  (&B00100000) расширенные символы
    n=64  (&B01000000) курсив (шрифт "ITALIC")
    n=128 (&B10000000) печать с подчеркиванием.

В ряде случаев возможно использование комбинации режимов. Так, ESC-последовательность ESC ! 224 (224=&В11100000) задает печать широких наклонных символов с подчеркиванием. Из Бейсика этот режим можно включить командой

    LPRINT CHR$(27);"!";CHR$(224)

Перечислим еще ряд важных команд управления печатью.

ESC А n задает интервал между строками (в точках, или пунктах; один пункт равен 1 /72 дюйма);

    LPRINT CHR$(27);"A";CHR$(n)

ESC 1 n задает номер позиции левой границы печати;

    LPRINT CHR$(27);"1";CHR$(n)

ESC Q n задает номер позиции правой границы печати;

    LPRINT CHR$(27);"Q";CHR$(n)

BS - возврат на один символ (позволяет печатать два символа в одной позиции).

    LPRINT CHR$(8)

В связи с возрастанием роли национальных языков обострилась проблема отсутствия на пишущих машинках национальных литер. Возможность кодировки символов на матричных принтерах позволяет обойти эту проблему.

Каждый символ, выводимый на печать, задается матрицей 8*11. Например, украинская буква формируется матрицей, представленной на рисунке 2.

Матрица формирования символа
Рисунок 2. Матрица формирования символа

Обратите внимание, что сетка литеры на рисунке имеет 9 строк, а матрица - только 8. Дело в том, что для задания символа могут использоваться только 8 верхних или 8 нижних (для букв с "хвостиком") строк сетки. Выбор верхних или нижних строк осуществляется специальным кодом. Следует также иметь в виду, что в каждой строке матрицы единицы должны обязательно чередоваться с нулями, а два правых столбца резервируются для обеспечения интервала между символами.

Полученная матрица показана на рисунке 3.

Сформированная матрица
Рисунок 3. Сформированная матрица

вводится в принтер по столбцам. Так, код столбца 1 матрицы равен 124 (&В01111100), столбца 2 - 130 (&В100000010), столбца 3 - 16 (&В00010000) и т. д.

Строка с приказом о вводе в принтер нового рисунка символа выглядит так:

    LPRINT CHR$(27);"&";CHR$(0);CHR$(69);CHR$(69);CHR$(139);CHR$(124);CHR$(130);CHR$(16); ...

Здесь первые три символа - признак начала команды, определяющей новый символ (ESC & 0); следующие два - начальный и конечный коды перепрограммируемых символов (если задается изображение для одного символа, то начальный и конечный коды совпадают); CHR$(139) - тот самый код выбора верхних 3 строк матрицы, о котором мы уже говорили (нижние строки задает код CHR$(11)). Остальные элементы строки - коды столбцов рассмотренной выше матрицы.

Заметим, что новый символ можно создать только вместо уже имеющихся символов в диапазоне кодов 33-126, т. е. вместо цифр, знаков и букв латинского алфавита.


    TODO: Здесь должен быть листинг программы на Бейсике по перекодировке шрифта

В приведенной программе три новых литеры загружаются вместо латинских букв Е (код 69), е (код 101 ) и / (код 106) соответственно. Разумеется, при наборе текста на мониторе будут отображаться именно "законные" латинские буквы, а новые символы будут печататься вместо них на принтере.

Программа перекодировки символов должна выполняться перед выводом текста на печать. Новые символы сохраняются в памяти принтера до его выключения. Начальную настройку принтера для печати кириллицей выполняют с помощью стандартной утилиты SETPRT (не следует в этом случае использовать программу EPSON).

Комментарий специалиста

Появление таких публикаций можно только приветствовать. Ясное изложение принципов управления принтером CPF-H80 будет полезно многим читателям, желающим пойти по стопам автора статьи и разработать программы печати.

Действительно, возможности принтеров используются далеко не полностью. На них можно не только печатать школьные документы и материалы для учебных занятий, но и, к примеру, издавать вполне профессионально оформленную школьную газету Однако так ли необходимо для этого изучать документацию к принтеру, писать, затрачивая недели и месяцы, собственные сервисные программы? Нет. Программы FX, TYPEDOC и PRINT, подготовленные в МП "Микс", позволяют использовать принтер на 100%. Они имеют удобный интерфейс, работают под управлением ОС СР/М-80.

FX предназначена для распечатки текстовых файлов на принтерах RAVI-8010M, FX-80, FX-850, ComputeMate. Она позволяет задать ширину левого поля, расстояние между строками, тип бумаги (рулон, листовая) и длину листа, нумерацию страниц и т. п., а также любой из допустимых для каждого принтера шрифтов. Выбор файла для печати из каталога диска производится курсором. Если вам нужно изменить в отпечатанном документе одну страницу, вы можете распечатать только ее; можно также распечатывать со сквозной нумерацией документ, записанный в нескольких файлах. Можно, наконец, запомнить заданные параметры, и при следующем вызове FX принтер будет настроен так же, как в прошлый раз.

TYPEDOC позволяет печатать в графическом режиме. Об этой возможности матричных принтеров в статье не упомянуто, а ведь если принтер может печатать изображения, то его можно заставить выводить и буквы больших размеров или необычных начертаний! TYPEDOC (она работает с теми же принтерами, что и FX) предлагает на выбор несколько шрифтов: стандартный (имитация шрифта пишущей машинки), выделенный, курсив, средний. К сожалению, менять шрифты внутри текста нельзя.

За качество, как всегда, приходится платить - TYPEDOC печатает вчетверо медленнее, чем FX.

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

PRINT - программа универсальная. К возможностям TYPEDOC и FX она добавляет следующие:

В PRINT имеется также редактор шрифтов, позволяющий создавать собственные наборы символов (в частности, использовать национальные алфавиты).

После того как создан новый шрифт, встает проблема текстового редактора. Не очень-то удобно работать по принципу "j пишем, знак интеграла в уме". Снимает проблему редактор ChiWorker, экранные и принтерные шрифты которого (одновременно может использоваться 16 их наборов) совпадают. Плата за это - большой размер командного файла, из-за чего с ним неудобно работать на РМУ. Для работы в локальной сети с загружаемыми экранными шрифтами нужен компактный "графотекстовый" редактор. Стоимость его создания, по нашим оценкам, около 50 000 рублей. МП "Микс" готово взяться за эту работу, если на редактор будет сделано не менее 100 заявок.

Последняя проблема при использовании национальных алфавитов - обозначения на клавишах. Ее тоже можно решить - при наличии более 100 заказов будет организован выпуск клавиатуры с любой символикой.

А. Нечаев