Referat Unit-ul CRT

Mai jos puteti citi fragmente din Referat Unit-ul CRT si de asemenea puteti face Download Referat Unit-ul CRT

Citeste 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. 쥁@