Referat Unit-ul CRT
Mai jos puteti citi fragmente din
Referat Unit-ul CRT si de asemenea puteti face
Download Referat Unit-ul CRTCiteste fragmente din Referat Unit-ul CRT
UNIT-UL CRT
O unitate de program se defineşte ca o colecţie de constante, tipuri
de date, variabile proceduri şi funcţii, în mod normal legate între
ele, plasate ţi compilate într-un alt fişier sursă al programului.
Folosirea unităţilor se realizează prin precizarea numelui unităţii
într-o declaraţie uses.
Avantajele folosirii unităţilor sunt următoarele:
se realizează o mai bună structurare a programului;
se economiseşte timp la compilare, deoarece unit-urile se compilează
separat (generând fişiere TPU);
- se facilitează colaborarea mai multor persoane la
realizarea programului.
Unit-ul Crt conţine o serie de subprograme (proceduri şi funcţii)
folosite în aplicaţii în care ecranul este utilizat în mod text.
Programele care utilizează acest unit trebuie să conţină directiva
uses crt.
Ecranul în mod text are 25 de linii şi 80 de coloane (ele pot fi
schimbate prin apelul procedurii TextMode ), având coordonatele
(valorile x cresc spre dreapta, iar a lui y în jos ): colţul stânga
sus (0,0), colţul stânga jos (0,24), colţul dreapta sus (79,0),
colţul dreapta jos (79,24).
Să considerăm “write(‘abc’);â€Â
În modul text, instrucţiunea va lăsa cursorul în coloana care va
urma după ultima literă (ex: C). Dacă ultima literă (ex: C) a fost
scrisă pe coloana 79, atunci cursorul va trece în coloana 0 a liniei
următoare. Dacă ultima literă (ex: C) a fost scrisă pe coloana 79 a
liniei 24, atunci întregul ecran va defila cu o linie în sus şi
cursorul va trece în coloana 0 a liniei 24.
Subporg. bibliotecii Crt pot fi clasificate astfel:
de interes general
supbrog. destinate gestiunii ferestrelor;
supbrog. orientate pt culori;
supbrog. destinate generări sunt şi intensităţii video;
1.Subprograme de interes general:
TextMode Procedura TextMode asigură selectarea unui mod text
specificat ea este definită prin: procedure TextMode(tm:integer);
Unde tm defineÅŸte tipul modului text, ÅŸi poate lua ca valori
următoarele constante predefinite :
Constantă Valoare Descriere mod Adaptor
BW40 0 40x25 Alb/Negru CGA
CO40 1 40x25 Color CGA
BW80 2 80x25 Alb/Negru CGA
CO80 3 80x25 Color CGA
MONO 7 80x25 Alb/Negru HGC
Font8x8 256 43 linii / 50 linii EGA/VGA
EXEMPLU:
program crttm;
uses crt;
var modoring:word;
begin
clrscr;{sterge ecranul}
modoring:=lastmod;{savare mod original}
{…}
Textmode(modoring);{reface tip original}
{…}
end.
ă modul video actual, ea este iniţializată cu modul video activ în
momentul respectiv.
Keypressed Funcţia ~ returnează valoarea true dacă pe tastatură s-a
apăsat o tastă, false în caz contrar. Funcţia se defineşte prin :
function keypressed:boolean;( funcţia ~ nu sesizează apăsarea
tastelor Shift, Alt, Numlock)
ReadKey Funcţia ~ returnează un caracter care sa tastat la
tastatură. Caracterul citit nu apare pe ecran. Dacă keypressed este
true înaintea apelului Readkey, funcţia returnează automat caracterul
tastat, în caz contrar Readkey aşteaptă tastarea unui caracter.
Funcţia se defineşte astfel:
function WhereX:byte – returnează abscisa cursorului curent
function ReadKey:char ;
Unul din avantajele utilizării unitu-lui Crt este creşterea
flexibilităţii şi vitezei operaţiilor de ieşire. Programele care nu
utilizează unit-ul Crt trimit datele de ieşire pe ecran prin
intermediul DOS-ului. Folosind unit-ul Crt, datele de ieÅŸire sunt
trimise direct la BIOS, s-au prin operaţii şi mai rapide direct la
memoria video.
AssignCrt Procedura ~ ataşează ecranului (CRT-ului) un fişier
text. procedure AssignCrt(var f: text); (unde f
este fişierul care se ataşează)
În secţiunea de interfaţă a unit-ului crt sunt definite variabilele
CheckBreak, CheckEof, DirectVideo care permit stabilirea unor
facilităţi suplimentare.
CheckBreak variabila predefinită ~ de tip boolean validează sau
invalidează utilizare întreruperii Crtl-Break. Dacă variabila este
iniţializată cu true, prin apăs. simultană a tastelor Crtl şi Break
programul- la prima tentativă de scriere pe ecran – va fi abortat.
Dacă variabila este iniţializată cu false apăs. tastelor nu are nici
un efect.
CheckEof Variabila ~ de tip boolean validează sau invalidează
caracterul de sfârşit de fişier. Dacă variabila este iniţializată
cu true, prin apăsarea simultană a tastelor Crt-Z se genereză un
caracter de sfârşit de fişier în timpul citirii dintr-un fişier
asignat ecranului. Dacă var. este iniţializată cu false, apăsarea
simultană a tastelor Crtl-Z nu are nici un efect.
DirectVideo Variabila ~ de tip boolean validează sau invalidează
accesul direct al memoriei pt. operaţiunile Write şi Writeln care
afişează pe ecran. Dacă variabila este init. cu true, operaţiunile
Write ÅŸi Writeln la fiÅŸiere asociate cu Crt vor memora caracterele
direct în memoria video (şi nu vor apela BIOS-ul pt. această
operaţiune de afişare). Dacă este init. cu false, toate caracterele
vor fi scrise prin apelul BIOS-ului ÅŸi va fi mai lent.
Toate variabilele au val. implicite true.
2.Subprograme destinate gestiuni ferestrelor
8
Q-o astfel de fereastră, fereastra se comportă exact ca şi cum s-ar
folosi întreg: în interiorul ferestrei se pot insera şi şterge
linii, iar când cursorul ajunge la marginea din dreapta, va trece
automat la liniei următoare. Dacă cursorul a ajuns la sfârşitul
ultimei linii, toate liniile din ecran se vor deplasa automat cu o linie
mai sus şi înscrierea se va face în linia de la bază (defilare
automată).
Window Procedura ~ este definită :
procedure window(x1,y1,x2,y2:bzte); unde (x1,y1) sunt
coordonatele coltului stânga sus ale ferestrei, iar (x2,y2) sânt
coordonatele coltului dreapta jos ale ferestrei. Fereastra implicita
depinde de modul text utilizare; de exemplu C080 (80x25 color pe
adaptor color) este Window (0,0,79,24), iar la BW40 (40x25 negru/alb pe
adaptor color) este Window (0,0,39,24).
Procedura Window încarcă automat variabilele
WindMin şi WindMax (definite în unit-ul CRT, de tip word) cu
coordonatele stânga sus al ferestrei, respectiv cu coordonatele
coltului
Dreapta jos ale ferestrei, respectiv cu
coordonatele colţului dreapta jos ale ferestrei.(De ex: Lo(WinMax)
produce abscisa a colţului stânga sus iar Hi(WindMin)Produce ordonata
a colţului dreapta jos. În interiorul ferestrei coordonatele colţului
stânga sus sunt(1,1).
GotoXY Poziţionează cursorul în interiorul ferestrei curente şi sr
defineÅŸte: procedure GoToXY(x,y:byte);
unde x,y reprezintă noile coordonate (relative la fereastra
actuală)ale ferestrei.
WhereX şi Determină poziţia curentă a cursorului şi sunt definite:
WhereY function WhereX:byte – returnează abscisa cursorului curent
function WhereY:byte – returnează ordonata cursorului curent
ClrScr Realizează ştergerea ferestrei active şi mută cursorul în
colţul stânga sus al ferestrei. procedure ClrScr;
ClrEol Şterge toate caracterele până la sfârşitul liniei pornind de
la poziţia actuală a cursorului procedure ClrEol;
InsLine Inserează o linie goală în poziţia cursorului .Liniile
situate dedesubtul cursorului vor defila în jos cu o linie şi ultima
linie iese de pe ecran. procedure InsLine;
DelLine Şterge linia în care se află cursorul. Liniile situate
dedesubtul cursorului vor defila în sus cu o linie.
procedure DelLine;
3.Proceduri orientate pe culori
TextBackGround StabileÅŸte culoarea de fond. procedure
TextBackGround(culf:byte); unde culf este codul culorii fondului.
Cele opt valori predefinite pentru culoarea fondului sunt următoarele:
Black=0;(negru)
Blue=1;(albastru)
Green=2;(verde)
Cyan=3;(turcoise)
Red=4;(roÅŸu)
Magenta=5;(violet)
Brown=6;(maro)
LigthGray=7;(gri deschis)
TextColor StabileÅŸte culoarea caracterelor. procedure
TextColor(cul:byte); unde culf este codul culorii caracterelor.
Cele 15 valori predefinite sunt următoarele:
DarkGray=8;(gri închis)
LigthBlue=9;(albastru deschis)
LigthGreen=10;(verde deschis)
LigthCyan=11;(turcoise deschis)
LigthRed=12;(roÅŸu deschis)
LigthMagenta=13;(violet deschis)
Yellow=14;(maro)
White=15;(alb)
Prin adunarea valorii Blink=128 la codul culorii, caracterele textului
vor clipi.
Variabila TextAttr de tip byte definită în secţiunea de interfaţă a
unit-ului Crt memorează atributele textului. Aceste Atribute pot fi
selectate prin apelul procedurilor TextColor ÅŸi TextBackGround, dar pot
fi selectate şi printr-o instrucţiune de atribuire directă în
variabila TextAttr. Informaţiile de culoare sunt codificate în felul
următor:
7 6 5 4 3 2 1 0
s f f f t t t t
Aici tttt reprezintă culoarea textului, fff reprezintă culoare de
fond, iar s este bitul de validare pentru clipire.(Un exemplu de
încărcare directă: TextAttr:=White+16*Red+Blink adică pe fond roşu
caracterele albe care clipesc.
4.Proceduri destinate gestiunii generatorului de sunet ÅŸi
intensităţii video
Sound Procedura ~ asigură pornirea generatorului de sunet cu o
frecvenţă dată. procedure sound(Hz:word); unde
parametrul Hz defineşte frecvenţa sunetului în Hz. Difuzorul va suna
până la apelul procedurii NoSound
NoSound Decuplează generatorul de sunet; ea se defineşte prin :
procedure NoSound;
Delay Intervalul de timp destinat funcţionării generatorului de sunet
poate fi fixat folosind procedura ~. procedure
Delay(ms:word); unde ms este timpul de întârziere (durata) în
milisecunde
LowVideo Selectarea intensităţii caracterelor pe ecran se poate
realiza cu procedurile fără parametru ~
NormVideo care selectează respectiv intensitate mică, normală şi
mare.
HighVideo
Exemplu: Se realizează un ciclu având loc atunci când se apasă o
tastă. Corpul ciclului cuprinde pornirea difuzorului la 450Hz timp de
250 de milisec. După care emite la 600Hz timp de 500 milisec.
ì¥Â@