Завантажувач шрифтiв
Мiнiстерство освiти та науки України
Кафедра програмного забезпечення
Курсова робота
з дисциплiни “Програмування на мовi ASM-86” на тему:
Завн
а
тажувач шрифтiв
З
мiст
Вступ
1. Призначення та область застосування програми
2. Огляд iснуючих систем, обгрунтування вибору, принципу розробки i методики побудови програм. Постановка задачi по реалiзацiї технiчного завдання
3. Опис i обгрунтування проектних рiшень по проектуванню системи
4. Розрахунки та експериментальнi матерiали, якi пiдтверджують правильнiсть конструкторських, програмних рiшень. Реалiзацiя проекту
5. Інструкцiя користувача.
6. Основнi висновки
Список лiтератури
Текст програми
Графiчнi матерiали
Вступ
На початку розвитку комп’ютерної технiки пристрої введення та виведення були досить невибагливi та забезпечували мiнiмум можливостей. До цих пристроїв належали перш за все монiтор та клавiатура. Клавiатура використовувалась для введення iнформацiї шляхом натискання деяких клавiш, якi оброблялися вiдповiдним програмним забезпечення, результат цiєї обробки можна було побачити на монiторi. Спочатку цього було досить.
З розвитком iнформацiйних технологiй та технiчним прогресом, процесори почали ставати бiльш швидшими, монiтори та вiдеоадаптери почали збiльшувати роздiльну здатнiсть, все бiльш програм почали використовувати графiчний iнтерфейс користувача. Комп’ютер став не просто електронно-обчислювальною машиною, а багатогранним iнструментом для вирiшення багатьох проблем рiзного характеру, для розваг, для друкарських потреб. Був створений принтер.
простим, щоб його можна було редагувати. Тому була створена ця програма. Вона має невеликi системнi вимоги i є простою у використаннi.
2. Огляд iснуючих пристроїв, систем, програмного забезпечення, обґрунтування вибору принципа розробки та методики побудови пристрою, систем, програмного забезпечення
Є дуже багато програм, якi дозволяють друкувати текст чи файл, та бiльшiсть з них мають внутрiшнi шрифти, якi не можна редагувати. Тож, коли виникає потреба надрукувати текст таким шрифтом, якого не має програма, то приходиться шукати другу програму, яка б дозволила завантажити потрiбний шрифт.
Будь-який МП-системi необхiднi засоби обмiну даними iз зовнiшнiми периферiйними пристроями. В залежностi вiд умов конкретного застосування та характеристик периферiйного обладнання передача даних виконується в паралельному або послiдовному форматi. Спiльнiсть функцiй введення-виведення стимулювала розробку ВІС периферiйних адаптерiв, що являють собою гнучкi програмованi прилади, зорiєнтованi виключно на введення-виведення. Зараз такi адаптери стали неодмiнними компонентами практично всiх мiкропроцесорних сiмейств.
Пiдключення периферiйного обладнання виконується через три двонаправлених 8-бiтних порти (або канали) A, B i C. Інтерфейс iз системною шиною здiйснюється за допомогою лiнiй:
D(0-7) - двонаправлена шина даних з трихстабiльними каскадами.
A1, A0 - лiнiї адреси, котрi вибирають внутрiшнiй регiстр адаптера, комутований на шину даних:
00 - порт A,
01 - порт B,
10 - порт C,
CS - активний вхiд вибiрки кристала; високий рiвень забороняє, а низький дозволяє зв'язок приладу iз системною шиною даних.
RD - активний вхiд зчитування iнформацiї iз адресованого по лiнiям A0, A1 регiстру на шину даних.
WR - активний вхiд запису iнформацiї з шини даних в адресований по A0 i A1 внутрiшнiй регiстр адаптера.
RESET - активний сигнал для приведення приладу у вихiдний стан; при дiї сигналу регiстр управлiння обнуляється, а всi три порта налаштовуються в режим введення.
Вiдмiтимо, що зчитування з регiстру управлiння (RD=0,A1=1,A0=1) не допускається, а одночасний запис та зчитування (RD=0,WR=0) призводять до непередбачуваних наслiдкiв.
Програмування адаптера полягає в завантаженнi управляючого слова в регiстр управлiння. Наприклад, управляюче слово конфiгурацiї порту A на введення в режимi 0, порта B на виведення в режимi 1, бiта 3 порту C на введення та бiта 7 порту C на виведення матиме код 11010101b.
Управляюче слово з нульовим старшим бiтом D7=0 використовується для встановлення i зкидання будь-якого бiту порта C. Бiти D(6-4) в цьому випадку не використовуються i мiстять нулi, бiти D(3-1) мiстять двiйковий номер (адресу) модифiкованого бiта порту С, а бiт D0 задає встановлення (D0=1) або обнулення (D0=0) адресованого бiту.
Адаптер має 3 режима роботи - 0,1,2. Розглянемо кожний з них.
введення або виведення, що забезпечує 16 можливих конфiгурацiй адаптера в режимi 0. Данi, що виводяться, фiксуються в регiстрах-фiксаторах, що входять до складу всiх портiв, а введенi данi не запам'ятовуються, тобто в операцiях зчитування вхiдного порту на шину даних передається поточний стан вхiдних лiнiй.
Режим 0 застосовується при програмно-управляємому введеннi-виведеннi з повiльнодiючими периферiйними пристроями.
стану пристрою, перевiрку готовностi, виведення або введення даних i формування супровджуючого стробу. Якщо пристрiй не готовий до обмiну, мiкропроцесор входить в цикл очiкування.
Режим 1 (стробоване введення-виведення) призначений для однонаправленої передачi даних, iнiцiйованих перериваннями. Власне передача слiв даних здiйснюється через порти B i A, а шiсть лiнiй порту C використовуються для управлiння обмiном. Даний режим надає користу-вачевi такi можливостi: запрограмувати один або два паралельних порти з лiнiями квiтування i переривання, кожний з яких може працювати на введення або виведення; при використаннi тiльки одного порту решту 13 лiнiй запрограмувати в режим 0; при встановленнi двох портiв в режим 1 iншi 2 лiнiї використати для введення або виведення.
квiтування i переривань. Загальна дисциплiна квiтування аналогiчна режиму, але i окремi тригери дозволу переривань по виводу INTE1 (управляється встановленням та зкиданням бiту PC6) та по вводу INTE2 (управляється через бiт PC4). Данi, що вводяться та виводяться, фiксуються в регiстрах-фiксаторах порту.
Принтер є одним iз периферiйних пристроїв, що приймають данi вiд комп'ютера у паралельному кодi, оскiльки це найбiльш швидкий спосiб обмiну. Iншими прикладами пристоїв, що використовують паралельний адаптер, є аналого-цифровi перетворювачi(АЦП), фотоcчитувачi.
Алгоритм обмiну iнформацiї в кожному конкретному випадку залежить вiд напрямку потокiв iнформацiї. Наприклад, АЦП є джерелом iнформацiї, i тому адаптер необхiдно налаштувати на введення iнформацiї. Для цього можна використати рiзнi режими роботи:0,1,2, проте найбiльш простим з них, очевидно, був би режим 0, а надлишково ускладненим - режим 2. Аналогiчна ситуацiя i з принтером, тiльки iнформацiя в цьому випадку передається у зворотньму напрямку - вiд комп'ютера до периферiйного пристрою.
Однак принтер, у свою чергу, виставляє власнi сигнали, iнформуючи комп'ютер про власний стан. Тож доходимо висновку, що для нормальної роботи принтера паралельний адаптер необхiдно налаштувати на виведення iнформацiї, видiливши при тому окремi виводи для введення сигналiв з принтера.
/ASC (acknolege) - пiдтвердження прийому (вiд принтера);
PE (paperempty) - папiр вiдсутнiй (вiд принтера);
/ERROR - збiй у роботi(вiд принтера);
Вибiр режиму роботи:
- якщо обираємо режим 0, то обмiн буде можливий лише за умови програмної емуляцiї системних сигналiв обмiну(тобто посилаємо данi на порт, виставляємо сигнал сигнал /STROBEi чекаємо на сигнал /ASC). Слiд зауважити, що тривалiсть сигналу /ASC вiд принтера має тривалiсть 7. 5 мкс, i тому при органiзацiї циклу опитування слiд полiчити кiлькiсть тактiв у циклii загальну тривалiсть циклу опитування. Якщо вона буде бiльшою вiд тривалостi сигналу, то можливе пропущення сигналу i, як наслiдок, збiй обмiну.
- в режимi роботи 1 операцiї обмiну (handshaking) виконуються автоматично i є можливiсть органiзацiї обмiну даними по перериванню. Робота програми зводиться до програмування адаптера та встановлення у вихiдне (початкове) становище лiнiй, на якi заведено сигнали квiтирування (STROBE-ASC). Слiд додати, що у режимi 1 є двi лiнiї, що можуть бути запрограмованi як на введення, так i на виведення, що дозволяє органiзувати додатково введення iнших сигналiв (у даному випадку - сигналiв BUSY (принтер зайнятий) та РЕ (вiдсутнiсть паперу).
- в режимi 2 можливо органiзувати двонаправлений обмiн iнформацiєю з апаратною пiдтримкою квiтирування, проте при цьому втрачається можливiсть опитування додаткових лiнiй статусу принтера.
Деякi команди принтера:
Таблицi символiв
ESCtn 1b 74 n ;Выбор таблицы символов(0,1,48,49)
LQ-100: 0-3,48-51(2-downloadfont)
ESCRn 1b 52 n ;Выбор медународного набора знаков
(0-13,64)
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
Графiка
ESC. nn 1b 2ecvhmn1 n2Печать растровой графики:
d1... c=0 обычный режим, 1-со сжатием
v(h)=10,20 3600/v(h) dpi верт(гор)
m=1-24 число верт. точек
n=n2*256+n1 число гор. точек
4. Розрахунки та експерементальнi матерiали, якi пiдтверджують правильнiсть конструкторських, програмних рiшень. Реалiзацiя проекту
Fontload спочатку вiдкриває принтер, а потiм читає файл шрифта в память. Коли вiн не знаходить файл шрифта, вiн повiдомляє про це та закiнчує свою роботу.
В залежностi вiд типу принтера загружає шрифт в принтер, якщо вiн пiддержує, чи друкує рядок в графицi.
5. Інструкцiя користувача
Для запуску програми потрiбно запустити файл fontload. exe. Потiм вказати принтер, у який слiд завантажити шрифт i шлях до файлу зi шрифтом.
Основнi висновки
Коли творилася ця програма, був вивчений паралельний iнтерфейс, його робота, та робота принтера. Програма для завантаження шрифтiв у принтер є структурованою i легко читаємою. Кожен програмiст може вдосконалити її, чи зробити бiльш зручною для себе. Вона не має великих системних запросiв i дуже проста у використаннi.
Використана лiтература
2. ПРОГРАММНО-АППАРАТНАЯ ОРГАНИЗАЦИЯ КОМПЬЮТЕРА IBM PC. Prentice-Hall Publishing Comp.,1984
3. Фролов А. В., Фролов Г. В., Операционная система MS-DOS. – М.: “ДИАЛОГ-МИФИ”, 1991. – (Библиотека системного программиста)
“Руководство по программированию” П. Нортон, Р. Уилтон 1994
Додатки
Лiстинг програми
. model tiny
. stack 200h
. data
Msg1 db 'Выберите пинтер $'
Msg2 db 'Все нормально $'
Msg3 db 'Ошибка откр файла $'
Msg4 db 'выберите шрифтовый файл $'
Msg5 db 'ошибка закр. файла $'
Msg6 db 'Шрифт установлен $'
Handle dw 0
Stroka db 30 DUP(?)
. code
ProgramStart PROC NEAR
mov ax,@data
mov ds,ax
Call Vibor
call clear
Call Init
Call inputer
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:
Call outputer
mov ah,07h
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
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 dx,offset fname+2
mov ah,09h
lea dx,Msg3
int 21h
jmp Quit
ret
fopen endp
escape PROC NEAR
fclose proc
mov ah,3eh
mov bx,[handle]
int 21h
jnc itsok2
mov dx,offset Msg5
ret
fclose endp
esca proc
met1: mov ah,3fh
mov bx,[handle]
mov cx,1
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
eof proc
mov al,06h
mov bx,[handle]
int 21h
ret
eof endp
CLEAR PROC
MOV AX,0600h
MOV CX,0000
MOV DX,184Fh
INT 10h
mov ah,02
mov bh,0
mov dh,1
mov dl,1
int 10h
RET
end
|