Справочник программиста на персональном компьютере фирмы IBM. Принтер - Установка текстового и графического режимов
ОГЛАВЛЕНИЕ
6.2.1 Установка текстового и графического режимов.
Принтер всегда находится в текстовом режиме, до тех пор пока
он специально не переведен в графический режим. Команда, устанав-
ливающая графический режим, должна сообщать какое число байтов
графических данных будет передано (но не больше одной строки) и
после того, как это число байтов будет интерпретировано как гра-
фическое изображение, принтер вернется в текстовый режим. По этой
причине нет команды, которая переводит принтер в текстовый режим.
Число графических режимов у разных принтеров разное. Во всех
случаях, за кодом устанавливающим графический режим следуют 2
байта, указывающие какое число графических байтов будет передано
(сначала младший байт). Чтобы вычислить значение этих двух бай-
тов, разделите число байтов данных на 256 и поместите результат
во второй байт, а остаток - в первый байт. За этими двумя байтами
должны сразу следовать байты данных.
Каждый байт определяет цепочку битов, соответствующих восьми
вертикальным точкам одной позиции в строке. Младший бит (1) соот-
ветствует низу колонки, а старший бит (128) - верху. Например,
чтобы напечатать пирамиду, пошлите сначала байт, у которого уста-
новлен только нижний бит, затем байт у которого установлены 2
нижних бита и т.д. После восьмого байта расположите те же байты в
обратном порядке. Значение первого байта будет 1, второго - 3
(1+2), затем 7 (1+2+4), затем 15 (1+2+4+8) и т.д. На рисунке 6-1
изображена вся картина.
Для печати пирамиды в Бейсике на графическом принтере IBM
напишите следующий код:
100 LPRINT CHR$(27);CHR$(75);CHR$(15);CHR$(0);CHR$(1);CHR$(3);
CHR$(7);CHR$(15);CHR$(31);CHR$(63);CHR$(127);CHR$(255);
CHR$(127);CHR$(63);CHR$(31);CHR$(15);CHR$(3);CHR$(1);
Первые два байта переводят принтер в графический режим с 480
точками, следующие два - сообщают, что будет передано 15 байтов
графических данных, а затем идет последовательность байтов дан-
ных. Конечно то же самое можно запрограммировать умнее, организо-
вав цикл, в котором будут передаваться байты данных. Отметим, что
все проблемы в этом случае возникают, если указанное число байтов
не соответствует числу посылаемых байтов. Чтобы создать пробел
между графическими фигурами выведите несколько байтов с нулевым
значением. В Бейсике, когда в одной строке выводится больше 80
байтов графических данных, не забудьте предварительно установить
"бесконечную" ширину принтера. Для этого надо ввести команду
WIDTH "LPT1:",255.
Графический принтер IBM имеет четырек графических режима,
которые более или менее "стандартны". Они такие:
27,75 480 точек в строке. Нормальный режим. Максимум 480 байтов
данных на оператор.
27,76 960 точек в строке. Удвоенное горизонтальное разрешение,
но печать вдвое медленнее (двойная плотность). Максимум
960 байтов данных на оператор.
27,89 960 точек в строке, печать с нормальной скоростью (двой-
ная плотность с высокой скоростью). Две точки, прилегаю-
щие по горизонтали, не могут быть напечатаны, поскольку
не будут успевать иголки печатающей головки. Если делается
попытка их напечатать, то вторая точка будет игнорировать-
ся. Максимум 960 байтов данных на оператор.
27,90 1920 точек в строке, печать вдвое медленнее (четверная
плотность). Соседние точки по горизонтали должны отстоять
по крайней мере на 3 точки (т.е. 1 печатаем, 2 пропуска-
ем). Максимум 1920 байтов данных на оператор.
В более плотных режимах две прилегающие по горизонтали точки не
могут быть напечатаны. Чтобы заполнить пропуски между точками,
верните каретку к левому полю, немного сдвиньте печатающую голов-
ку вправо и сделайте второй проход, используя те же данные. Вот
сравнение плотностей печати вызываемых одними и теми же управляю-
щими кодами на разных принтерах:
Коды Графический Цветной Компактный Пропринтер
27,75 480 точек 1108 560 480
27,76 960 точек 2216 - 960
27,89 960 точек 2216 - 960
27,90 1920 точек 4432 - 1920
Цветной принтер уникален из принтеров IBM тем, что он может
устанавливать масштабный коэффициент (aspect ratio) для графичес-
ких изображений. Этот коэффициент отражает разницу горизонтальных
и вертикальных расстояний между точками. Обычно желателен коэффи-
циент 1:1, поскольку в противном случае трудно проводить графи-
ческие вычисления. Но при копировании графического экрана надо
чтобы масштабный коэффициент был таким же, как у дисплея. В эк-
ранном режиме умеренного разрешения 5 точек по вертикали занимают
тот же размер, что 6 точек по горизонтали. Это соответствует
масштабному коэффициенту 5:6 и именно это значение используется
по умолчанию цветным принтером. Допускаются только коэффициенты
1:1 и 5:6.