Vývoj operačného systému/Bootloader po druhé - práca s diskovými jednotkami: Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
Riadok 63:
pre konkrétne <math>p</math>.
 
== Funkcie BIOSu ==
Na prácu s diskovými jednotkami sa používa prerušenie 19 (0x13) patriace BIOSu. Toto prerušenie poskytuje nízkoúrovňový prístup k disku využitím funkcií jednotných pre viacero druhov zariadení. Pôvodné verzie BIOSu podporovali len okolo 504MB pamäte (adresovanie v tejto veľkosti sa zvykne označovať aj ako fyzické CHS). Samotné pôvodné (štandardné) adresovanie CHS poskytuje má tieto obmedzenia:
{| class="wikitable"
Riadok 73:
| Cylindre || 10 || 1023 || 1024
|-
| Sektory || 6 || 63 || 63 <ref name="stupid-floppy-sectors" />Kým pri ostatných častiach adresy sa označujú prvky od 0 (ako je to zvykom), pri sektoroch začína 1. Preto je maximálne hodnota zároveň limitom počtu prvkov. Pri práci so zariadeniami ATA(IDE) je možné vybrať limity vo formáte CHS rovnako ako v LBA. Môže sa však stať, že zariadenie bude rátať s existenciou nultého sektoru. Preto sa viac oplatí používať adresovanie LBA, kde taktiež netreba zabudnúť na nultý sektor.</ref>
 
Pri práci so zariadeniami ATA(IDE) je možné vybrať limity vo formáte CHS rovnako ako v LBA. Môže sa však stať, že zariadenie bude rátať s existenciou nultého sektoru. Preto sa viac oplatí používať adresovanie LBA, kde taktiež netreba zabudnúť na nultý sektor.</ref>
|-
| Veľkosť jedného sektoru || - || - || 512
Řádek 144 ⟶ 142:
| 03 || Zápis sektorov na zariadenie || AL = počet sektorov na zápis, DL = zariadenie, DH = číslo "hlavy", ES:BX = adresa dát na zápis, CX[0:5] = sektor, CX[6:15] = stopa/cylinder || CF = v prípade chyby 1; inak 0, AH = kód stavu (ako pre funkciu 01), AL = počet zapísaných sektorov
|-
| 04 || Overenie sektorov na disku (hľadanie chýb). S dátami v pamäti sa nepracuje. Pri výskyte chyby by mal program niekoľkokrát overiť (a reštartovať), či sa disketa nachádza v zariadení. || AL = počet sektorov na overenie, DL = zariadenie, DH = číslo "hlavy", ES:BX, CX[0:5] = sektor, CX[6:15] = stopa/cylinder || CF = v prípade chyby 1; inak 0, AH = kód stavu (ako pre funkciu 01), AL = počet (úspešne{{CitationBez neededcitácie}}) overených sektorov
|-
| 08 || Získa parametre zariadenia || DL = zariadenie, [ES:DI = niekedy vyžadovaná hodnota 0 na niektorých BIOSoch] || CF = v prípade chyby 1; inak 0, AH = kód stavu (ako pre funkciu 01), DL = počet (pevných?<ref name="floppy_or_all">Rôzne zdroje uvádzajú rôzne informácie, nemusí sa jednať len o diskety.</ref>) diskov, DH = posledná (maximálna) "hlava" <ref name="last_head_lol">Z dôvodu číslovania "hláv" od 0 je nutné pripočítať 1 na zistenie počtu hláv</ref>, CX[0:5] = počet sektorov na stope, CX[6:15] = posledná maximálna) stopa/cylinder<ref name="last_head_lol">Z dôvodu číslovania cylindrov/stôp od 0 je nutné pripočítať 1 na zistenie celkového počtu</ref>, ES:DI = adresa tabuľky parametrov <ref name="floppy_or_all" />, BL = typ diskety podľa tabuľky
Řádek 164 ⟶ 162:
| 43 || Rozšírený zápis sektorov zo zariadenia, funguje na princípe paketov a používa adresovanie LBA || DL = zariadenie, DS:SI = adresa na DAP, AL = nastavenia zápisu || CF = v prípade chyby 1; inak 0, AH = kód stavu (ako pre funkciu 01)
|-
| 46 || Vysunúť konkrétne médium. || DL = zariadenie, AL = 00 (rezerovované{{CitationBez neededcitácie}}) || CF = v prípade chyby 1; inak 0, AH = kód stavu (ako pre funkciu 01)
|}
<references />
==Použitie funkcii==
=Podrobné zdroje=
Hoci je isté že sa oblasť kódov BIOSu výrazne zmenila, je nutné poznamenať že na rozdiel od iných oblastí ktorými sa BIOS zaoberá sa v tomto prípade v mnohom zmenili aj vlastnosti úložísk (pričom sa napríklad PS/2 a VGA až tak nezmenili). Nikdy nie je dobré spoliehať sa na BIOS v plnej miere, a pre zariadenia na ukladanie dát to platí dvojnásobne. Nižšie je uvedený zoznam celkom podrobných zdrojov na prácu s BIOSom s ohľadom na tento druh zariadení.
* [[w:en:INT 13H|Prerušenie 13h na anglickej Wikipédii]]
* [http://www.datadoctor.biz/author.htm Ukážkové kapitoly knihy "Data Recovery with & without Programming" (záchrana dát s a bez programovania)]
* [http://wiki.osdev.org/Category:ATA Programovanie zariadení ATA], [http://wiki.osdev.org/Floppy_Disk_Controller radič disketovej mechaniky] a [http://wiki.osdev.org/ATA_in_x86_RealMode_(BIOS) pevné disky ATA v reálnom móde] na [wiki.osdev.org OSDevWiki]
* [http://www.brokenthorn.com/Resources/OSDev5.html Úložné zariadenia v reálnom móde], podrobné [http://www.brokenthorn.com/Resources/OSDev20.html programovanie radiča disketovej mechaniky] a [http://www.brokenthorn.com/Resources/OSDev6.html základ súborových systémov] (FAT, hlavne pre diskety) na BrokenThorn.com
* [http://mikeos.berlios.de/ MikeOS] - 16-bitový operačný systém so zdrojovými kódmi
 
[[Kategória:Operačné systémy]]