1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Не ходите, дети, в писидос гулять! Часть 2.

Автор: Goblinit · 15 фев 2012 · ·
  1. Итак, для тех, кто не бывает в твёрдо-мягком:
    http://www.old-games.ru/forum/showthread.php?p=844106#post844106

    Собственно, там располагается сага о том, как двое героических личностей помогли мне высяснить как переключать язык ввода в pc dos 7.0 и как заставить в нём же печатать lpt-принтер без встроенного кириллического шрифта кириллические символы.
    Исчерпывающего ответа на последний вопрос там, само собой, нету. Вероятно потому, что 7-летние дети уже не те, что прежде. !НО! Я-таки доказал себе, что я тоже кое-на-что годен. Даже бэйсик пришлось вспомнить, потому что в руководстве все примеры программ загрузки user-defined чарактеров в принтер написаны на нём (на бэйсике). Итого, как всё прошло:

    Первые два дня я жёстко курил мануал по матричному гробу epson lq-580 в надежде что-то понять. И понял, но упустил главное (об этом позже). Суть заключалась в том, что, чтобы заставить печатать принтер русские буковки в текстовом режиме (то есть, не в графическом), необходимо ему эти буковки загрузить в его память, специально для этого предназначенную. Сначала я пробовал написать текстовый файлик с управляющими последовательностями (командами для принтера) в редакторе E. Ага, как же. При вводе ALT+01 вместо того, чтобы ввести в файлик символ с кодом 01, E переключался в режим мультиэкрана - то есть, он реагировал на управляющий код вместо того, чтобы его напечатать. Урок усвоен, мне нужен hex-редактор.

    Что есть на старом компе из hex-подобных? Ага, Norton DiskEditor. Да, если бы... чтобы только разобраться, как в нём вообще что-то делать мне потребовалось без малого полдня вкуривания справки. Затем я повозился с ним немного и понял, что каждый раз вот так вот изменять файл я умру (Открыть диск в режиме редактирования, перейти к списку файлов и директорий на нём (где-то в райное 0 - 500 кластеров), выставить вид "директории", перейти по команде link к нужному файлу, открыть хекс-вид... брррр!!!) В общем, на следующий день я скачал hiew 6.50, кстати с удивлением обнаружив, что есть и версии под винду, да причём они платные :unknw:
    В общем, скачал, записал на болванку, перекачал на старый комп. Открыл. О чудо! Ничего удобнее в жизни не видел. Всё минимально и просто. Совершенно не понял, почему хиев называли "одной большой ошибкой" - возможно, дело в версии под винду, там, говорят, появился кривой дизассэмблер...
    Стоп... не уходите, я ещё не дорассказал. Значит, открыл я в хиеве нужный файл, быстренько забил в него нужные команды для принтера, а именно:
    ESC : (копируем текущую таблицу в память)
    ESC x 1 (тут и далее выбираем атрибуты чаров)
    ESC p 0
    ESC T
    ESC 5
    ESC & 0 43 43 0 34 0 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16, 31, 255, 224,
    32, 0, 16, 31, 255, 244, 32, 0, 16, 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16,
    0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16, 31, 255, 224, 32, 0, 16, 31, 255,
    224, 32, 0, 16, 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16, 0, 0, 0, 32, 0, 16 (рисуем в RAM-памяти буковку "Н" заместо "+"; ввод без запятых)

    Нажал печать, принтер не выдал ни одного символа. Значит, принял последовательности. Ага, как же ;) На самом деле он просто сбился с толку, потому что они неправильные.
    Тогда я стал пробовать найти нормальное руководство для нужного принтера Epson lq-510 (именно его эмулирует мой Canon BJ-200). И нашёл. И вот тогда-то я и узнал, что, во-первых, нужно повернуть на моём принтере один DIP-switch в нужное положение, чтобы, ***, буфер печати поделился памятью для возможности "рисования" этих самых новых букав. Далее, я узнал, что, оказывается,
    ESC p 0
    должно писаться как
    ALT+27p0
    , но при этом
    ESC % 1
    должно писаться как
    ALT+27%ALT+01

    То есть, не всегда циферки нужны десятичные. А в предыдущем руководстве об этом упомянуть забыли.... Ну, и, само собой, в ESC & 0 43 43 0 34 0 .... тоже все циферки шестнадцатеричные. Так, я навсегда запомнил, что, например, символ с управляющим кодом 27 (ESC) - это 1B, а первый символ в таблице - это бледный смайлик ;)

    Ну, и, в итоге, вышло вот такое воть.

    ESC x 0 (выбираем черновой вариант печати)
    ESC & 0 43 43 1 9 1 1 0 0 2 0 0 4 0 0 8 0 0 23 255 240 8 0 0 4 0 0 2 0 0 1 0 0 (Так мы рисуем в RAM-памяти новый символ "стрелочка вверх" заместо "+")
    ESC % 1 (переключаем печать на RAM-память, вместо ROM)

    Далее это всё отправляется на печать в принтер. Теперь, принтер не напечатает ничего, кроме стрелочки вместо знака плюс, потому что в памяти ничего больше не нарисовано. Так и случилось. Я печатаю в чёрной бездне два знака "+", нажимаю PrtScrn и наслаждаюсь белым листом бумаги, в центре которого одиноко стоят две стрелочки вверх.

    На большее меня не хватило. Поднимите руку, кто ещё так делал?!? И не надо мне про 7-летних детей рассказывать - я вон тут с 13-ти летними выпиваю иногда, ни про какой хекс они точно не знают, зато в вине теперь разбираются :D :D :D

    Чувствую себя разработчиком драйвера :ninja:

Комментарии

  1. Ulysses
    Ну я в школе делал что-то подобное на tasm, только не для замены шрифта, а для включения различных дополнительных режимов Epson LX-1050.

    Для создания шрифта наверное лучше отдельную простенькую графическую программу написать, чтобы автоматически генерировать ESC-последовательности из битмапа. На любом высокоуровневом языке.
  2. Grue13
    Я вспомнил, у меня под DOS давным-давно была программа-визуальный редактор этих самых шрифтов для принтера, можно было загружать шрифты, и поточечно редактировать. Только сейчас я её уже не найду.
  3. Goblinit
    Да не, народ, я один символ перекрасил, принип понял. На этом интерес закончился, ибо не стоит результат усилий в моём случае.
Чтобы оставить комментарий просто зарегистрируйтесь и станьте участником!
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление