Деякі команди принтера:
Таблиці символів
ESCtn 1b 74 n ;Выбор таблицы символов(0,1,48,49)
LQ-100: 0-3,48-51(2-downloadfont)
ESCRn 1b 52 n ;Выбор медународного набора знаков
(0-13,64)
ESC 6 1b 36 ;Коды 80-9f как печатаемые
ESC 7 1b 37 ;Коды 80-9f как управляющие
ESC & 0 nn 1b 26 0 n1 n2 a1 d1 ;Загружает знаки, n1-код первого,
d2 ... d11 a2 ... n2-код последнего, a-ширина знака,
старший бит=0-используется нижняя
игла,1-верхняя.Сетка 9х11
1b 26 0 n1 n2 abcДля загрузки (N)LQ сетка 18х12.
d00 d01 d02 d10 d11a-пробел слева от знака, с-справа,
... dc0 dc1 dc2 b-ширина
ESC : 0 n 0 1b 3a 30 n 30 Копирует ПЗУ в ОЗУ, n=0-Roman,1-SS
ESC % n 1b 25 n Выбор знаков: 0-ПЗУ, 1-ОЗУ
ESCI 0/1 1b 49 0/1 Выкл/вкл печати кодов 0-1f,80-9f
Графіка
ESC . nn 1b 2ecvhmn1 n2Печать растровой графики:
d1 ... c=0 обычный режим, 1-со сжатием
v(h)=10,20 3600/v(h) dpi верт(гор)
m=1-24 число верт. точек
n=n2*256+n1 число гор. точек
сочетание v=10,h=20 запрещено
4. Розрахунки та експерементальні матеріали, які підтверджують правильність конструкторських, програмних рішень. Реалізація проекту
Дана програма написана на мові програмування ASM-86. Цей вибір зумовлений тим, що на мові асемблера також можна отримати цілковитий контроль над комп’ютером.
Fontload спочатку відкриває принтер, а потім читає файл шрифта в память. Коли він не знаходить файл шрифта, він повідомляє про це та закінчує свою роботу.
В залежності від типу принтера загружає шрифт в принтер, якщо він піддержує, чи друкує рядок в графиці.
5. Інструкція користувача
Для запуску програми потрібно запустити файл fontload.exe. Потім вказати принтер, у який слід завантажити шрифт і шлях до файлу зі шрифтом.
Основні висновки
Коли творилася ця програма, був вивчений паралельний інтерфейс, його робота, та робота принтера. Програма для завантаження шрифтів у принтер є структурованою і легко читаємою. Кожен програміст може вдосконалити її, чи зробити більш зручною для себе. Вона не має великих системних запросів і дуже проста у використанні.
Використана література
1. The Microsoft(R) Guide for Assembly Language and C Programmers
2. ПРОГРАММНО-АППАРАТНАЯ ОРГАНИЗАЦИЯ КОМПЬЮТЕРА IBM PC. Prentice-Hall Publishing Comp.,1984
3. Фролов А.В., Фролов Г.В., Операционная система MS-DOS. – М.: “ДИАЛОГ-МИФИ”, 1991. – (Библиотека системного программиста)
“Руководство по программированию” П. Нортон, Р. Уилтон 1994
Додатки
Лістинг програми
.model tiny
.stack 200h
.data
Msg1 db 'Выберите пинтер $'
Msg2 db 'Все нормально $'
Msg3 db 'Ошибка откр файла $'
Msg4 db 'выберите шрифтовый файл $'
Msg5 db 'ошибка закр. файла $'
Msg6 db 'Шрифт установлен $'
escposl db 0
Fname db 255,?,255 dup(0)
Handle dw 0
Stroka db 30 DUP(?)
.code
ProgramStart PROC NEAR
mov ax,@data
mov ds,ax
call clear
Call Vibor
call clear
Call Init
mov dx,offset Msg4
Call outputer
mov dx,offset fname
Call inputer
mov bl,byte ptr [fname+1]
xor bh,bh
mov di,offset fname+2
mov [bx+di],byte ptr 0
call clear
Call fopen
call clear
Call esca
Call fclose
Quit:
mov dx,offset Msg6
Call outputer
mov ah,07h
int 21h
mov ah,4ch
int 21h
ProgramStart endp
outputer proc
mov ah,09h
int 21h
ret
outputer endp
inputer proc
mov ah,0ah
int 21h
ret
inputer endp
Vibor PROC NEAR
lea dx,Msg1
Call outputer
mov ah,01h
int 21h
ret
Vibor endp
Init PROC NEAR
mov ah,01h
mov dx,1h
int 17h
ret
Init endp
fopen PROC NEAR
mov ah,3dh
mov al,0h
mov dx,offset fname+2
int 21h
jnc itd
mov ah,09h
lea dx,Msg3
int 21h
jmp Quit
itd: mov [handle],ax
ret
fopen endp
escape PROC NEAR
fclose proc
mov ah,3eh
mov bx,[handle]
int 21h
jnc its_ok2
mov dx,offset Msg5
call outputer
its_ok2:
ret
fclose endp
esca proc
met1: mov ah,3fh
mov bx,[handle]
mov cx,1
mov dx,offset escposl
int 21h
call eof
cmp al,0
jz met2
mov ah,00
mov al,[escposl]
mov dx,1
int 17h
mov cx,5h
loop met1
met2: ret
esca endp
eof proc
mov ah,44h
mov al,06h
mov bx,[handle]
int 21h
ret
eof endp
CLEAR PROC
MOV AX,0600h
MOV BH,07h
MOV CX,0000
MOV DX,184Fh
INT 10h
mov ah,02
mov bh,0
mov dh,1
mov dl,1
int 10h
RET
CLEAR ENDP
end