Программирование arrow Assembler arrow Справочник программиста на персональном компьютере фирмы IBM. Принтер

Справочник программиста на персональном компьютере фирмы IBM. Принтер

Оглавление

1. Справочник программиста на персональном компьютере фирмы IBM. Принтер

2. Инициализация  порта  принтера/повторная  инициализация принтера

3. Проверка того, что принтер связан с машиной

4. Интерпретация  ошибок принтера и  восстановление  после них

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

6. Установка спецификаций печати

7. Установка текстового и графического режимов

8. Управление расстоянием между строками

9. Управление движением бумаги

10. Управление положением печатающей головки

11. Установка позиций табуляции

12. Изменение шрифта печати

13. Сравнение возможностей принтеров IBM

14. Посылка данных на принтер

15. Вывод текстовых или графических данных на принтер

16. Вывод текстовых или графических данных на принтер. Часть 2

17. Выравнивание правого поля

18. Пропорциональная печать

19. Печать специальных символов

20. Копирование экрана на принтер (дамп экрана)


MS DOS может работать с тремя параллельными устройствами (LPT1 - LPT3) и в этой главе показано как управлять ими. Последователь- ные принтеры управляются в точности так же, как и параллельные, за исключением способа, которым данные посылаются на принтер; эта информация приведена в разделе 1 главы 7. Каждое параллельное устройство имеет свой адаптер. Адаптер управляется тремя регист- рами ввода/вывода и адреса портов этих регистров различны для каждого адаптера.       Раздел 1. Управление работой принтера.
        Инициализация  порта  принтера/повторная  инициализация
        принтера.
        Проверка того, что принтер связан с машиной.
        Интерпретация  ошибок принтера и  восстановление  после них.
        Переключение между двумя или несколькими принтерами.
      Раздел 2. Установка спецификаций печати.
        Установка текстового и графического режимов.
        Управление расстоянием между строками.
        Управление движением бумаги.
        Управление положением печатающей головки.
        Установка позиций табуляции.
        Изменение шрифта печати.
        Сравнение возможностей принтеров IBM.
      Раздел 3. Посылка данных на принтер.
        Вывод текстовых или графических данных на принтер.
        Выравнивание правого поля.
        Пропорциональная печать.
        Печать специальных символов.
        Копирование экрана на принтер (дамп экрана).

Глава 6. Принтер.


     Раздел 1. Управление работой принтера.


   Область данных BIOS содержит базовые адреса для
каждого  адаптера.  Базовый адрес соответствует  младшему  адресу
группы  из  трех  адресов  портов.   Базовый  адрес  для  LPT1  -
0040:0008,  для  LPT2 - 0040:000A и т.д.  Какой адаптер  назначен
какому номеру LPT - не определено , как видно из  нижеприведенной
таблицы. По этой  причине  программа,  котрая  прямо адресуется в
параллельный  порт, должна выискивать адреса, которые он  исполь-
зует. Отметим, что при инициализации базовому адресу присваивает-
ся значение 0, когда соответствующий адаптер не установлен.

   Адаптер                  Выходных данных  Статуса  Управления

Монохромная карта (PC/XT/AT)       3BCH        3BDH      3BEH

Адаптер принтера PC/XT
Адаптер принтера PCJr              378H        379H      37AH
Последовательная/параллельная
карта AT (установленная как LPT1)

Последовательная/параллельная      278H        279H      27AH
карта AT (установленная как LPT2)

   Регистр  выходных данных - это тот адрес порта, через  который
проходит каждый байт данных, посылаемый в принтер. Регистр стату-
са  сообщает  различную информацию о  принтере;  процессор  может
постоянно опрашивать его,  чтобы  распознать  момент, когда все в
порядке и можно посылать данные.  Регистр статуса сообщает также,
что произошла ошибка на принтере.  Регистр управления инициализи-
рует адаптер и управляет выводом данных. Он может также подготав-
ливать параллельный порт  для  операций  прерывания,  с тем чтобы
принтер  посылал прерывание к процессору, когда он готов к приему
очередного символа, оставляя процессор  свободным для других дел.
Вот значение битов регистров статуса и управления:

Регистр управления
   бит  0    0 = нормальная установка, 1 = вызывает  вывод  байта
                 данных
        1    0 = нормальная установка, 1 = автоматический перевод
                 строки после возврата каретки
        2    0 = инициализировать порт принтера, 1 = нормальная
                 установка
        3    0 = отмена выбора принтера, 1 = нормальная установка
        4    0 = прерывание принтера запрещено, 1 = разрешено
      5-7    не используются

Регистр статуса
   бит 0-2   не используются
         3   0 = ошибка принтера, 1 = нет ошибки
         4   0 = принтер off-line, 1 = принтер on-line
         5   0 = бумага вставлена, 1 = нет бумаги
         6   0 = принтер подтверждает прием символа, 1 = нормаль-
                 ная установка
         7   0 = принтер занят, 1 = принтер свободен

   Не имеется никаких оснований,  чтобы  любая программа не имела
процедуру  восстановления  при ошибках, возникающих при работе  с
принтером. Хорошо написанная программа должна начинать с проверки
того, что принтер связан с машиной (on line). Если присоединен не
один принтер, то программа должна  позволять пользователю выбрать
с каким из них он будет работать. Кроме того, эта процедура долж-
на восстанавливать ситуацию при любых  ошибках принтера, при этом
хотелось  бы,  чтобы не было необходимости  снова  печатать  весь
документ.


 
« Предыдущая статья   Следующая статья »


  • Assembler, COM в Ассемблере
    В этой статье будет расказано о том, как использовать COM-интерфейсы в ваших программах, написанных на ассемблере. Не будет обсуждаться, что такое COM и как он применяется, но как его можно использовать, программируя на ассемблере. Здесь будет затронуто только применение существующих интерфейсов, а не реализация своих собственных, это будет рассмотрено в другой статье....
  • Assembler, Пишем свой загрузочный сектор
    Мы будем писать загрузочный сектор для трехдюймовой дискеты с файловой системой FAT12. После окончания начальной загрузки программа POST находит активное устройство и загружает с него короткую программу загрузки ОС - загрузочный сектор. Загрузочный сектор это первый физический сектор устройства, в данном случае дискеты и его размет равен всего ничего 512 байт. С помощью этих 512 байт кода мы должны найти основную часть загрузчика операционной системы, загрузить его в память и передать ему управл...
  • Assembler, Программирование COM портов
    Порт 3F8h. Этот порт соответствует регистру передавемых данных. Для передачи в порт 3F8h необходимо записать байт передаваемых данных. После приема данных от внешнего устройства они могут быть прочитаны из этого порта. В зависимости от состояния бита управляющего слова, выводимого в управ- ляющий регистр с адресом 3F8h, назначение порта 3F8h изменяться. Если этот бит равен 0,порт используется для записи передаваемых данных.Если же этот бит равен 1, порт используется для вывода з...
  • Assembler, Переполнение буфера
    В данной статье рассматривается пример использования переполнения стека под Windows 9x на платформе Intel x86. Изложение рассчитано на читателя, понимающего принципы работы персонального компьютера и более чем поверхностно знакомого с программированием....
  • Assembler, Виртуальный драйвер для обслуживания аппаратных прерываний
    Как уже отмечалось ранее, виртуальные драйверы служат прежде всего для виртуализации аппаратуры, то есть для предоставления одновременно выполняемым задачам возможности совместного использования устройств компьютера. Измерительная или управляющая аппаратура, подключаемая к компьютеру с целью создания автоматизированной установки, вряд ли будет эксплуатироваться в многозадачном режиме, однако использование для ее управления виртуального драйвера может заметно сократить программные издержки и умен...
  • Assembler, Опыт дизассемблирования большой .com программы
    В данной статье мне хочется рассказать о дизассемблировании большой программы (графического редактора). Не будучи знатоком ассемблера, не зная до сих пор, как использовать большинство возможностей своего дизассемблера (DisDoc 2.3), я все же решился написать эту статью, так как прекрасно помню, в какой кромешной тьме начинал заниматься дизассемблированием....
  • Assembler, Оптимизация программ на Assembler
    Несмотря на все более широкое распространение языков программирования и интегрированных сред программирования, оптимизация программ на ассемблере остается актуальной темой дискуссий для программистов. Можно упомянуть, например, форум програамистов, проведенный сетью PC MagNet, который стал ареной многочисленых "дуэлей": то один, то другой участник предлагал всем желающим решить небольшую, но интересную задачу программирования - и рассматривал присылаемые решения, ожидая, кто жее и как ...
  • Assembler, Справочник программиста на персональном компьютере фирмы IBM. Приложения
    Основной единицей хранения данных в компьютере является бит. В большинстве микрокомпьютеров восемь битов объединены в байт, при этом каждый бит байта может быть установлен или "включен" (= 1) или сброшен или "выключен" (= 0), допуская 256 разных вариантов. Таким образом, в одном байте можно представить 256 разных симво- лов (расширенный набор кодов ASCII) или целое число в диапазоне от 0 до 255. Хотя мы привыкли записывать эти числа в десятичной форме, они могут зап...