Смекни!
smekni.com

Завантажувач шрифтів (стр. 2 из 2)

Деякі команди принтера:

Таблиці символів

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