06 июня 1998

from: KVAZAR/RUSH,GOMEL     (0232) 498-371
то:     ZX-LEGION,MINSK                   
-----------------------                   
                                          
    Данная статья была написана Павлом Гу-
левичем, на основе своего личного опыта, и
изначально предназначалась  для  брестской
газеты "ЕСНО".  Поскольку издатели послед-
ней не проявляют  никаких признаков жизни,
было решено опубликовать ее в новом  бело-
русском журнале "ZX-ELEMENT".             
                                          
                                          
                                          
        О ПРОПОРЦИОНАЛЬНОЙ ПЕЧАТИ         
           ГРАФИКИ НА ПРИНТЕРЕ            
                                          
 (размышления на тему 5-го режима графики 
       в СМ-6337 и возможно других)       
 ---------------------------------------- 
                                          
 © П.Гулевич                              
    При  печати  графических  картинок,  в
большинстве программ  я сталкивался с тем,
что получаемая на бумаге копия вытянута по
вертикали,  и  отношение сторон составляло
явно не 1.33, как на экране Спектрума, хо-
тя, естественно, количество точек на бума-
ге было  как  и на экране.  Такие картинки
мне настолько не нравились, что  некоторое
время  я печатал только тексты, решив, что
все дело в моем старом принтере. Но теперь
я  решил эту  проблему и  в любой момент с
помощью Magic-а своего Скорпиона  могу по-
лучить на  бумаге  копию  любого фрагмента
программы, причем без искажений.          
                                          
    Сначала я подозревал свой уже не новый
принтер, думая что у него что-то с шагови-
ками, или  неправильно  отрабатываются ко-
манды в перепаянной схеме.  Но после того,
как ко мне в руки попали некоторые картин-
ки, с такими же дефектами, напечатанные на
других принтерах  я, полазив по справочни-
кам,  понял  что почти  во всех программах
(ArtStudio,  Screen Print, The Artist...),
что-то неладно с процедурой печати.       
                                          
    Просматривая  драйвера принтера разных
программ стало ясно,  что все попавшие мне
под руку утилиты  с драйверами печати гра-
фики используют ESC-ы: K,L,У, которые дают
соответственно 480, 960, 990 точек на 8-ми
дюймовую  строку, что несоответствует вер-
тикальной плотности иголок на голове прин-
тера. И только в одном из Спектрофонов мне
попалась информация, где упоминался другой
способ вывода графики:                    
                                          
    ESC * m c1 c2 ...                     
                                          
где:  m - код режима;  с1,с2 - число байт 
графики.  Всего описано 8 режимов графики,
обеспечивающих вывод точек  с горизонталь-
ной плотностью от 480 до 1152 (dp8i).     
Кстати последний режим 7 для 1152, на 6337
не работает. Два байта с1 и с2 задают чис-
ло байт, подаваемых на принтер до перевода
строки, что соответствует количеству точек
по горизонтали (если печатать битовой мат-
рицей то это  256 байт, т.е. ESC * m 0,1).
Непосредственно  после этой команды  на ПУ
нужно  послать  последовательность  байтов
графики.                                  
                                          
    Причем, если  при  этом поставить m=5,
то  используется  горизонтальная плотность
576 точек на  8-дюймов, что в точности со-
ответствует вертикальной. Однако меня уди-
вило то, что почти все программисты писав-
шие  процедуры побитового вывода экрана на
принтер, использовали команду:  ESC  K c1,
которая  производит  печать  с  плотностью
480,  что  соответствует  0-му режиму  при
универсальном способе задания режима печа-
ти через  ESC * и,  поэтому картинка полу-
чалась вытянутой.                         
                                          
    Складывалось  такое  впечатление,  что
люди писавшие эти драйвера не имели доста-
точной информации по  системе команд прин-
тера. Тем более, что описания метода выво-
да  графики  с  непосредственным указанием
режима  я так и не  нашел  в IBM-ском Tech
help-e ни по XT ни по AT, объемом 2,5 Мбт,
где дано описание всей аппаратной поддерж-
ки  и описание портов IBM РС/AT.  И даже в
"Библии  по  техническому обеспечению IBM"
Уинна Роша, где  приведен самый  полный по
моему мнению  список команд принтеров всех
систем,  в том числе описан и метод печати
графики  с  использованием  команды ESC *,
указали все почти все режимы,  в том числе
и для 24-игольчатых принтеров, но ни слова
не сказано ни про 5-й режим, наиболее под-
ходящий  для печати картинок,  ни про 7-й,
который ровно  в два раза плотнее пятого и
мог бы позволить печатать на той же площа-
ди бумаги, но с градациями яркости. (Одна-
ко градации яркости ArtStudio,  переделан-
ный мною получает в том же  5-ом  режиме с
увеличением  площади  картинки  в 4 раза и
делая  ее такого же размера, как и изобра-
жение на стандартном мониторе).           
                                          
    И хотя команда печати с непосредствен-
ным  указанием  режима на 1 байт  длиннее,
чем команда задающая конкретно  режим 480,
замена  вполне  возможна.  Так  без особых
проблем я  произвел замену в процедуре пе-
чати редактора ArtStudio-256 (для ZS Scor-
pion).  Для  этого нужно заменить коды уп-
равления  печатью,  расположенные в  файле
'studiomc',  в области  адреса #7С40 (ниже
его).  Изменение других редакторов и может
быть других   версий  ArtStudio  потребует
произвести поиск  в коде программ последо-
вательностей: #1В,#4В; #1В,#4С; #1В,#59; и
замены их на код: #1В,#2A,#05. Таким обра-
зом  мне  даже  удалось изменить процедуру
печати теневика Скорпа:                   
                                          
                          ___             
      8-банка:           /               
 EOOD 06 20 1В 2A 05 00 03 00_| не пытайся
 Е015 03 1В 41 08 00 00 00 00_|  изменять 
                      ____/             
                                          
    Введя от руки это, включи принтер и из
любого  BASICa  (128/48)  пошли  на  него:
LPRINT CHR$ ... 27,65,8 (межстрочное).    
    После этого до выключения принтера или
компа (reset-можно),  печать графики будет
производиться как надо.  Только тексты пе-
чатаемые  из монитора сожмутся по вертика-
ли,  так как между строками почти не будет
промежутка, но это даже экономит бумагу.  
    После  всех  проделанных изменений пе-
чать  в  измененном редакторе производится
без искажений, с соотношением сторон полу-
ченной картинки:  87/65=1.33, что соответ-
ствует  256х192. А при  печати окружности,
она теперь не выглядит овалом.            
                                          
дифицировать под этот режим. Постарайтесь,
однако, при внесении изменений в код прог-
раммы не  повредить  что-нибудь, что может
повредить  работе  утилиты,  т.к. дополни-
тельный байт в новой команде, иногда может
оказаться  недопустимым,  и изменять такие
подозрительные байты нежелательно. Тем же,
кто сам  пишет процедуры  печати графики -
советую использовать только 5-ый режим.   
                                          
    Я не очень разбираюсь в других принте-
рах,  и поэтому допускаю, что отказ от ис-
пользования 5-го режима вызван тем, что он
не отрабатывается некоторыми другими моде-
лями  печатающих  устройств.  Но это мало-
вероятно, и даже если это и так, ничего не
стоит внести меню настройки программы  вы-
бор режима печати графики, так как выбира-
ются типы шрифтов в текстовых редакторах. 
                                          
    -------------                         
                                          
                                          
    Спасибо,  Павел  за  такую подробную и
обстоятельную рекомендацию.  Я  думаю, что
для  многих пользователей, столкнувшихся с
подобной проблемой твоя статья будет очень
актуальна.                                
    Уважаемые читатели, сообщайте в редак-
цию о Ваших открытиях и наблюдениях,  при-
сылайте письма, звоните,  вместе мы всегда
сможем решить любую проблему, какой-бы она
трудной не казалась.                      
                                          
    До встречи в следующих выпусках.      
                                          
------------------------------------------



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Visitors - the guest list first Izhevsk demopati ASCII 2001.
Announcement - New ROM - Technology Rom v1.0.

В этот день...   21 November