Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
33_Metodicheskie_ukazania_po_laboratornym_rabot...doc
Скачиваний:
1
Добавлен:
07.01.2020
Размер:
706.56 Кб
Скачать

Программирование режимов принтера

Для изменения режимов работы принтера и выполнения загрузки шрифтов используются специальные командные последовательности символов. Командные последовательности посылаются в принтер как обычные символы. Вы можете использовать описанные ранее функции MS-DOS или BIOS для вывода этих последовательностей.

Признак начала командной последовательности символов - байт ESC с кодом 1Bh. Вслед за этим байтом программа посылает в принтер саму командную последовательность. Длина последовательности зависит от выполняемой команды.

Первый байт командной последовательности - код выполняемой команды. Далее следует один или несколько байтов параметра команды. Некоторым командам не предшествует байт ESC (это, например, команды перевода строки, страницы или команды табуляции).

ESC "@" Инициализация принтера

Для сброса принтера в исходное состояние программа должна послать на принтер два байта - байт ESC (1Bh) и байт, соответствующий ASCII-символу "@" (40h).

07h Генерация звукового сигнала

Если послать этот байт, принтер издаст звуковой сигнал. Сигнал удобно использовать для привлечения внимания оператора, например, когда кончилась бумага.

0Dh Возврат каретки

Распечатываются все символы из буфера принтера, затем каретка (печатающая головка) возвращается к началу строки. В зависимости от переключателя конфигурации SW 2-4 может дополнительно выполняться прогон бумаги на одну строку.

0Ah Перевод строки

Когда этот символ посылается на принтер, все символы, находящиеся во внутреннем буфере принтера, распечатываются, затем каретка возвращается к началу строки и происходит подача листа вперед на одну строку.

0Ch Перевод страницы

Принтер распечатывает все символы, находившиеся в буфере, затем выполняет прогон одного листа бумаги.

ESC "x" n Выбор качества печати:

0 - низкое качество;

1 - качественный шрифт NLQ.

Для задания типа шрифта надо вывести на принтер три байта: символ ESC (1Bh), символ "x" (78h), затем код шрифта (30h...31h).

Существуют различные команды, позволяющие определить размер межстрочного интервала, расположение левой и правой границ листа, используемый для печати шрифт.

Если вас не устраивает шрифт, который записан в ПЗУ принтера (например, в нем нет русских букв), вы можете использовать команды для загрузки собственного шрифта.

Приведем пример программы, которая посылает в принтер командные последовательности и обычные символы, пользуясь функцией 05h прерывания INT 21h:

#include <dos.h>

#include <stdio.h>

main() {

char buffer[] = {

0x1b, '@', // Сбрасываем принтер в исходное состояние.

7,7,7, // Выдаем 3 раза звуковой сигнал.

0x1b, 'x','0', // Устанавливаем низкое качество печати.

'S','t','r','i','n','g',' ','1', // Печатаем строку.

0x1b, 'x','1', // Устанавливаем высокое качество печати.

'S','t','r','i','n','g',' ','2', // Печатаем строку.

0x0a, // Переводим строку.

7,7,7, // Выдаем 3 раза звуковой сигнал.

0

};

char *p;

// Выводим строку символов на принтер

for(p = buffer; *p != 0; p++) bdos(0x05, *p, 0);

}

Варианты лабораторных работ:

Варианта

Задание

1

Печать текста средствами BIOS

2

Печать текста средствами DOS

3

ESC "@" Инициализация принтера

4

0Dh Возврат каретки

5

0Ah Перевод строки

6

0Ch Перевод страницы

7

ESC "x" n Выбор качества печати

8

Определение текущего шрифта

9

Задания типа шрифта

0

Определение расположения левой и правой границ листа

Лабораторная работа № 9.

Определение характеристик и параметров видеоадаптера.

Цель работы: изучение методов тестирования видеоадаптера.

Использование ассемблера.

Управление выводом на терминал.

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

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

Монохромный адаптер поддерживает один режим терминала, цветной графический - семь, а EGA - двенадцать. VGA еще более сложен, поддерживая палетту из 64 цветов, графику на монохромном дисплее и вывод в 43 строки.

Hиже приведен перечень различных режимов:

Hомер Режим Адапторы

0 40*25 (320*200) B&W алфавитноцифровой цветной, PCjr, EGA

1 40*25 (320*200) цветной алфавитноцифровой цветной, PCjr, EGA

2 80*25 (640*200) B&W алфавитноцифровой цветной, PCjr, EGA

3 80*25 (640*200) цветной алфавитноцифровой цветной, PCjr, EGA

4 320*200 4-цветная графика цветной, PCjr, EGA

5 320*200 B&W графика (4 тени на PCjr) цветной, PCjr, EGA

6 640*200 B&W графика цветной, PCjr, EGA

7 80*25 (720*350) B&W алфавитноцифровой монохромный, EGA

8 160*200 16-цветный графика PCjr

9 320*200 16-цветный графика PCjr

A 640*200 4-цветный графика PCjr

B зарезервирован для EGA

C зарезервирован для EGA

D 320*200 16-цветный графика EGA

E 640*200 16-цветный графика EGA

F 640*350 4-цветная графика на монохромном EGA

10 640*350 4- или 16-цветная графика EGA

EGA разрешает иметь 8 страниц в режиме 7 - стандартном монохромном текстовом режиме. Режимы 0-6 полностью совместимы, используя память одинаковым образом. При условии, что переключатели на VGA установлены для работы с улучшенным цветным дисплеем, традиционные текстовые режимы выводятся с высоким разрешением, используя рисунок символов, состоящий из 8*14 точек, а не обычные 8*8.

Функция 0 прерывания 10H устанавливает режим дисплея. В AL должен находиться номер режима от 0 до A. Чтобы установить цветной графический режим среднего разрешения надо:

MOV AH,0 ;номер функции

MOV AL,4 ;номер требуемого режима

INT 10H ;устанавливаем режим

Для определения текущего графического режима надо использовать функцию F прерывания 10H. Прерывание возвращает номер режима в AL. Оно также дает номер текущей страницы дисплея в BH и число символов в строке в AH.

MOV AH,0FH ;номер функции

INT 10H ;получение информации о режиме дисплея

MOV MODE_NUMBER,AL ;номер режима в AL

MOV NUMBER_COLS,AH ;число символов в строке в AH

MOV CURRENT_PAGE,BH ;номер текущей страницы в BH

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]