Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Serviciile BIOS

c



+ Font mai mare | - Font mai mic



Serviciile BIOS

Prezentam in continuare o serie de servicii BIOS ce pot fi accesate utilizand functii de biblioteca ale limbajului C.

1) accesul la imprimanta



Inainte ca un program sa scrie iesirea la imprimanta utilizand indicatorul de fisier stdprn se poate face o verificare daca imprimanta este conectata si daca are hartie utilizand functia biosprint din fisierul antet bios.h:

int biosprint(int comanda,int octet,int nr_port)

unde comanda specifica una din urmatoarele operatii:

0 - tipareste octetul specificat;

1 - initializeaza portul imprimantei;

2 - citeste starea imprimantei.

Parametrul octet specifica valoarea ASCII a caracterului ce se doreste a fi scris la imprimanta iar nr_port specifica portul imprimantei care poate fi 0 pentru LPT1, 1 pentru LPT2, s.a.m.d.

Functia biosprint returneaza o valoarea inteaga pe un octet ai carui biti au urmatoarea semnificatie:

0 - dispozitiv in pauza;

3 - eroare I/O;

4 - imprimanta selectata;

5 - lipsa hartie;

6 - confirmare dispozitiv;

7 - dispozitivul nu este ocupat.

2) operatii intrare/iesire

Operatiile intrare/iesire de nivel jos pot fi realizate utilizand functia biodisk ce are urmatoarea sintaxa:

int biodisk(int operatie, int unitate, int head, int track, int sector, int nr_sector, void *buffer)

unde parametrul unitate precizeaza numarul unitatii, care este 0 pentru A, 1 pentru B, si asa mai departe. Parametrii head, track, sector si nr_sector precizeaza sectoarele fizice ale disculuice trebie scris sau citit. Parametru buffer este un pointer la bufferul din care sunt citite sau in care sunt scrise datele. Parametru operatie specifica functia dorita astfel:

0

Initializeaza sistemul de disc

1

Returneaza starea ultimei operatii pe disc

2

Citeste numarul precizat de sectoare

3

Scrie numarul precizat de sectoare

4

Verifica numarul precizat de sectoare

5

Formateaza pista specificata

6

Formateaza pista specificata si marcheaza sectoarele defecte

7

Formateaza unitatea incepand cu pista specificata

8

Returneaza parametrii unitatii de disc

9

Initializeaza unitatea de disc

10

Executa o citire lunga - 512 octeti de sector plus patru suplimentari

11

Executa o scriere lunga - 512 octeti de sector plus patru suplimentari

12

Executa o pozitionare pe disc

13

Initializarea alternativa a discului

14

Citeste bufferul sectorului

15

Scrie bufferul sectorului

16

Testeaza daca unitatea este pregatita

17

Recalibreaza unitatea

18

Executa diagnosticarea unitatii de RAM

19

Executa diagnosticarea unitatii

20

Executa diagnosticarea interna a controlerului

Daca se executa cu succes, functia returneaza valoarea 0. Daca apare o eroare, valoarea returnata precizeaza eroarea.

3) servicii de tastatura din BIOS

Pentru accesul la serviciile de tastatura din BIOS, C-ul pune la dispozitie functia _bios_keybrd ce are urmatoarea sintaxa:

unsigned _bios_keybrd(unsigned comanda)

unde parametrul comanda specifica operatia dorita si poate avea una din urmatoarele valori:

_KEYBRD_READ

Indica functiei sa citeasca un caracter de la tastatura

_KEYBRD_READY

Determina daca este prezent un caracter la bufferul tastaturii. Daca functia returneaza 0, inseamna ca nici o intrare de la tastatura nu este prezenta. Daca valoarea returnata este 0xFFFF, utilizatorul a apasat CTRL C

_KEYBRD_SHIFTSTATUS

Returneaza starea tastelor de control:

Bit 7 - INS este activat

Bit 6 - CAPSLOCK este activat

Bit 5 - NUMLOCK este activat

Bit 4 - SCRLLOCK este activat

Bit 3 - ALT este apasata

Bit 2 - CTRL este apasata

Bit 1 - SHIFT stanga este apasata

Bit 0 - SHIFT dreapta este apasata

_NKEYBRD_READ

Indica functiei sa citeasca un caracter de la tastatura, inclusiv tastele speciale, cum ar fi tastele cu sageti

_NKEYBRD_READY

Determina daca este prezent un caracter la bufferul tastaturii. Daca functia returneaza 0, inseamna ca nici o intrare de la tastatura nu este prezenta. Daca valoarea returnata este 0xFFFF, utilizatorul a apasat CTRL C Functia accepta inclusiv tastele speciale, cum ar fi tastele cu sageti

_NKEYBRD_SHIFTSTATUS

Returneaza starea tastelor de control, inclusiv a tastelor speciale:

Bit 15 - SYSREQ este activat

Bit 14 - CAPSLOCK este activat

Bit 13 - NUMLOCK este activat

Bit 12 - SCRLLOCK este activat

Bit 11 - ALT dreapta este apasata

Bit 10 - CTRL dreapta este apasata

Bit 9 - ALT stanga este apasata

Bit 8 - CTRL stanga este apasata

4) obtinerea listei cu echipamente din BIOS

Unele programe necesita determinarea caracteristicilor hardware ale calculatorului. Pentru aceasta se utilizeaza functia _bios_equiplist care are urmatoarea sintaxa:

unsigned _bios_equiplist(void);

Functia returneaza o valoare pe 16 biti a caror valoare are urmatoarea semnificatie:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

15:14 - numarul de imprimante paralele instalate (de la 0 la 3);

13 - imprimanta seriala;

12 - adaptorul de jocuri;

11:10:9 - numarul de porturi seriale COM (de la 0 la 7);

8 - prezenta DMA (Direct Memory Acces); bitul are valoarea 0 daca exista DMA si 1 daca nu exista;

7:6 - numarul drieverelor de disc;

5:4 - modul video: 00-neutilizat, 01-mod video 40x25 mono, 10-mod video 80x25 color, 11-mod video 80x25 mono;

3:2 - dimensiunea memorie RAM: 00-16Kb, 01-32Kb, 10-48Kb, 11-64Kb;

1 - prezenta coprocesorului matematic;

0 - prezenta unitatii de disc flexibile.

5) controlul intrarilor si iesirilor pentru portul serial

Pentru a executa operatii intrare/iesire utilizand portul serial se utilizeaza functia bioscom ce are urmatoarea sintaxa:

unsigned bioscom(int comanda,int port,char octet);

Parametrul comanda specifica operatia dorita si poate avea una din urmatoarele valori:

_COM_INIT

Stabileste valorile pentru comunicare ale portului

_COM_RECEIVE

Primeste un octet de la port

_COM_SEND

Trimite un octet la port

_COM_STATUS

Returneaza valorile portului

Parametrul port specifica portul serial ce se doreste a fi utilizat, unde 0 corespunde lui COM1, 1 lui COM2 si asa mai departe.

Parametrul octet specifica fie octetul pentru iesire, fie valorile de comunicare dorite.

6) determinarea volumului de memorie conventionala BIOS

Pentru a determina memoria conventionala ce poate fi utilizata de catre un proggram se utilizeaza functia biosmemory ce are urmatoarea sintaxa:

int biosmemory(void);

Valoarea returnata de aceasta functie nu cuprinde memoria extinsa, expandata sau superioara.

7) citirea cronometrului BIOS

BIOS are incorporat un ceas intern ce bate de 18.2 ori pe secunda. Acest cronometru este util pentru a genera punctul initial al unui generator de numere aleatoare. Multe compilatoare de C pun la dispozitie doua functii pentru accesul la cronometrul BIOS: biostime si _bios_timeofday. Sintaxa acestor functii este urmatoarea:

long biostime(int operatie,long timp_nou);

Parametrul operatie poate lua doua valori:

0 - daca se doreste ca functia sa citeasca valoarea curenta a cronometrului;

1 - pentru a fixa valoarea cronometrului la valoarea timp_nou.

long _bios_timeofday(int operatie,long *batai);

Aceasta functie poate fi, de asemenea, utilizata pentru a citi sau a fixa cronometrul BIOS.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1122
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved