bash.im ithappens.me zadolba.li
11355

Ер вам!

2 сентября 2013, 07:15

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

Принтер вскрыли и исследовали. Таблица знакогенератора, как и было предположено, находилась в ППЗУ, установленном в «кроватке». Этим мы воспользовались. ППЗУ извлекли, cчитали на программаторе «Крот» в файл. Затем написали программу, которая читала файл побайтно и выводила на экран изображение в виде последовательности точек, расположенных по восемь в колонку, как дырочки в перфоленте, имитируя работу знакогенератора. Ведь размер матрицы тех принтеров был 8×4 иголки — на эту особенность мы и положились. И вот в потоке этой абракадабры, двигаясь по шагам-байтам, нам удалось визуально обнаружить области памяти с закодированными таблицами знакогенератора и нужными нам символами. Дальше было всё просто — изменить в файле область некоего символа на код изображения «Ъ» и записать его в другую ППЗУ. Было опасение, что память проверялась контрольным кодом, но оно оказалось напрасным. Принтер прекрасно стал выдавать твёрдый знак там, где он и должен был быть. Высокие технологии!