DYSK, Laboratorium Aparatury Informatycznej


Laboratorium Aparatury Informatycznej

Centrum Obliczeniowe Politechniki Wrocławskiej

Ćwiczenie nr 1

DYSK TWARDY

&

DYSKIETKA

DYSK TWARDY

1. Wstęp

Dyski twarde są obecnie najatrakcyjniejszym, łatwo dostępnym rodzajem pamięci masowej. Umożliwiają one gromadzenie olbrzymiej ilości danych, oferując jednocześnie szybki do nich dostęp.

Twardy dysk jest jednym z głównych elementów całego systemu komputerowego, a jego najważniejszymi cechami powinny być niezawodność i szybkość pracy. Niezawodność zapewnia nabycie dysku dobrego producenta.

Pracę twardego dysku nadzoruje kontroler. Dysk wraz z kontrolerem charakteryzują trzy niezależne parametry jakości. Czas dostępu (access time) wskazuje średni czas potrzebny głowicy na przesunięcie się do wymaganej ścieżki (od 10 do 90 ms). Wskaźnik opóźnienia (latency) jest czasem wymaganym, aby żądana informacja znalazła się pod głowicą, w większości przypadków jest to 8,3 ms. Wskaźnik prędkości transmisji (transfer rate) informuje o prędkości przesyłania danych, gdy głowica już je odnalazła. Wskaźnik ten wynosi zazwyczaj 174000 do 525000 bitów/s.

Gdy głowica znajduje się już we właściwym miejscu za szybkość odczytu odpowiada kontroler. Gorsze kontrolery nie są w stanie jednocześnie odczytywać oraz przekazywać informacji. Odczytują one jeden sektor i opuszczają następny aby w tym czasie przekazać odczytaną informację. Aby odczytać dane w prawidłowym porządku, kontroler zapisuje sektory nie sekwencyjnie. Taki zapis nazywa się przeplotem (interleave). Obecnie najczęściej można spotkać kontrolery z przeplotem 1:1 lub 2:1. Od właściwie dobranego przeplotu zależy prędkość transmisji danych.

Obecnie najpopularniejsze są kontrolery: RLL (Run Length Limited), ESDI (Enhanced Small Devices Interface), SCSI (Small Computer Systems Interface), IDE (Integrated Drive Electronics).

2. Organizacja dysków twardych

Przyjętą w systemie DOS wielkością sektora dla wszystkich typów pamięci dyskowych jest 512 bajtów. Część sektorów każdego dysku zajmują informacje systemowe, konieczne do zarządzania systemem plików, pozostałe sektory są przeznaczone dla plików użytkowych.

Pierwszą operacją wykonywaną na nowym dysku twardym jest preformatowanie - jest to utworzenie właściwej struktury fizycznej na nośniku magnetycznym.

Dyski stałe przed formatowaniem dzieli się (poleceniem FDISK) na części (tzw.partycje).

W wersjach systemu poprzedzających 3.30 zakładano, że dysk stały można podzielić na 1 do 4 partycji, z których jedna może być przeznaczona dla systemu DOS, a pozostałe dla innych systemów operacyjnych.

W miarę pojawiania się dysków stałych o coraz większej pojemności, z uwagi na wbudowane w system (do wersji 3.30 włącznie) ograniczenie do 32MB rozmiaru pojedynczej partycji, zaistniała potrzeba organizowania więcej niż jednej partycji (kilka dysków logicznych) na jednym dysku fizycznym, przeznaczonych do użytku systemu DOS. W tym celu w wersji 3.30 systemu wprowadzono tzw. partycje rozszerzone systemu DOS.

Typ dysku Seagate ST225 Fuji FK309-39R Seagate ST251

Pojemność 20MB 30MB 32MB

Ilość głowic 4 4 6

Ilość sektorów

na ścieżce 17 17 17

Ilość cylindrów 615 940 642

Rekord ładujący 1 1 1

FAT-liczba sekt. 41*2 63*2 64*2

Katalog - ilość

sektorów 32 32 32

Suma sektorów

systemowych 115 159 161

Ilość sektorów

na blok 4 4 4

Ilość bloków 10354 15919 16326

Pojemność katal. 512 512 512

Tab. 2-1. Podstawowe parametry przykładowych dysków twardych

System odwołując się do sektorów na dyskach logicznych posługuje się numerami logicznymi sektorów. Pierwszy sektor na dysku logicznym ma numer 0. W ogólnym przypadku jest to sektor pierwszy na stronie o najmniejszym numerze na początkowym cylindrze dysku logicznego.

Dalsze numery nadaje się sektorom przebiegając kolejne strony (głowice) cylindra 0, następnie cylindra 1 itd.

Podczas formatowania w określonych sektorach partycji dysku stałego są umieszczane następujące informacje:

1. Rekord:

- ładujący (dla partycji aktywnej DOS).

- wprowadzający (dla partycji nieaktywnej DOS).

2. Tablica alokacji plików (FAT).

3. Kopia tablicy alokacji plików.

4. Katalogi plików.

2.1. Podział dysku stałego na partycje

Podstawową strukturą danych umieszczoną na dysku stałym jest tzw. główny rekord ładujący dysku stałego (Master Boot Record).

Główny rekord ładujący zajmuje pierwszy sektor dysku (głowica 0, cylinder 0, sektor 1).

Adres Zawartość

0H Program odszukujący i ładujący zawartość pierwszego sektora aktywnej partycji

1BEH Opis partycji nr 1 (początek tablicy partycji)

1CEH Opis partycji nr 2

1DEH Opis partycji nr 3

1EEH Opis partycji nr 4

1FEH Wartość 55AAH (znacznik końca tablicy partycji)

Tab. 2.1-1. Format MASTER BOOT RECORD

Końcową część Master Boot Record zajmuje czteroelementowa tablica partycji opisująca podział dysku. Każdy element tablicy jest rekordem opisu partycji i ma rozmiar 16 bajtów.

Bajty rekordu Zawartość

0H Znacznik aktywności partycji (0H-nieaktywna 80H-aktywna)

1H Początek partycji: numer głowicy

2H-3H Początek partycji: numer cylindra i sektora (patrz Rys 2.1-1)

4H Rodzaj partycji: 0-nie używana przez DOS; 1-DOS, 12 bitowy FAT;

4-DOS, 16 bitowy FAT; 5-DOS, partycja rozszerzona

5H Koniec partycji: numer głowicy

6H-7H Koniec partycji: numer cylindra i sektora (patrz Rys 2.1-1)

8H-0BH Początek partycji: względny numer pierwszego sektora

0CH-0FH Rozmiar partycji: liczba sektorów

Tab. 2.1-2. Format rekordu opisu partycji

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

c

c

c

c

c

c

c

c

C

c

s

s

s

s

s

s

Bajt bardziej znaczący Bajt mniej znaczący

Rys. 2.1-1. Format numeru cylindra i sektora zapisanego na 16 bitach

Numer początkowego i końcowego cylindra partycji jest zapisany na 10 bitach (bardziej znaczącymi bitami liczby określającej numer cylindra są bity 7 i 6 mniej znaczącego bajtu), zatem przedstawiona tablica partycji prawidłowo opisuje dyski stałe o nie więcej niż 1024 cylindrach. Położenie każdej partycji jest opisane za pomocą bezwzględnych wartości cylindra, głowicy i sektora oraz za pomocą czterobajtowego numeru sektora początkowego partycji w stosunku do sektora zawierającego tablicę partycji.

W czasie ładowania systemu z dysku twardego najpierw ładowany jest i wykonywany program zawarty w początkowej części głównego rekordu ładującego. Interpretuje on zawartość tablicy partycji w celu znalezienia partycji aktywnej, tzn. takiej, z której będzie ładowany system.

W przypadku systemu DOS pierwszy sektor tej partycji zawiera program ładujący.

2.1.1. Partycje rozszerzone

Partycja z oznaczeniem rodzaju równym 5 jest partycją rozszerzoną. Traktowana jest ona tak, jakby stanowiła odrębny dysk, tzn. zawiera w swoim pierwszym sektorze własną tablicę partycji zwaną tablicą partycji rozszerzenia.

Jeżeli pole (w tej tablicy) decydujące o rodzaju partycji jest równe zero, to oznacza to element pusty (nie dopuszcza się innych systemów operacyjnych w partycji rozszerzonej).

W tablicy partycji rozszerzenia mogą być zdefiniowane następujące elementy:

1. Partycja (nieaktywna) systemu DOS - rodzaj 1.

2. Partycja (nieaktywna) systemu DOS - rodzaj 2.

3. Partycja rozszerzenia - rodzaj 5.

2.2. Rekord ładujący

Rekord ładujący zajmuje pierwszy sektor części dysku stałego przeznaczonej dla systemu DOS. Oprócz programu ładującego system, rekord ten zawiera w pierwszych 30 bajtach informacje podane poniżej. Informacje zapisane w bajtach od 0BH do 17H stanowią jednocześnie tzw. blok parametrów BIOS-u (BPB).

Bajty Zawartość

0H-2H Instrukcja skoku do początku programu ładującego

3H-0AH Nazwa wersji systemu (w kodach ASCII)

0BH-0CH Wielkość sektorów w bajtach

0DH Wielkość bloku

0EH-0FH Ilość sektorów zarezerwowanych na początku dysku

10H Ilość kopii tablicy alokacji plików (FAT)

11H-12H Maksymalna ilość plików w katalogu głównym

13H-14H Całkowita ilość sektorów na dysku

15H Bajt identyfikacji nośnika (F8H-dla dysku twardego)

16H-17H Ilość sektorów zajętych przez tablicę FAT

18H-19H Ilość sektorów na ścieżce

1AH-1BH Ilość głowic

1CH-1DH Ilość sektorów ukrytych

Tab. 2.2-1. Format rekordu ładującego (do adresu 1DH)

W wersji 4.00 systemu DOS zwiększono ilość informacji zawartych w rekordzie ładującym, uwzględniając jednocześnie istnienie partycji o pojemności przekraczającej 32MB.

Jeżeli pojemność dysku przekracza 32MB, w pole 13H-14H wpisuje się 0, natomiast całkowita liczba sektorów jest umieszczona w dodatkowym 4-bajtowym polu 20H-23H.

W wersji 4.00 format rekordu ładującego od bajtu 0H do bajtu 1DH jest identyczny jak w wersjach wcześniejszych. Format od bajtu 20H do 3DH przedstawiono poniżej.

Bajty Zawartość

20H-23H Całkowita liczba sektorów na dysku (ponad 32MB)

24H Numer mechanizmu dyskowego

25H Zarezerwowane

26H Znacznik (bajt 29H)

27H-2AH Numer seryjny dysku

2BH-35H Etykieta

36H-3DH Zarezerwowane

Tab. 2.2-2. Format rekordu ładującego (od adresu 20H-3DH)

2.3. Tablica alokacji plików - FAT

Miejsce na dysku jest przydzielane plikom w jednostkach nazywanych jednostkami alokacji dyskowej.

W katalogu jest wpisany początkowy numer klastra, określający logiczny numer sektora, w którym znajduje się początek pliku i równocześnie miejsce w tablicy alokacji plików, w którym jest wpisany numer kolejnego klastra. Numer wpisany we wskazanym miejscu tablicy alokacji plików wskazuje pierwszy sektor następnej części pliku i równocześnie położenie w FAT numeru następnego klastra. W ten sposób tworzy się łańcuch, określający położenie całego pliku.

W wersjach 2.XX systemu DOS do opisu bloków w tablicy alokacji plików są stosowane liczby 12-bitowe.

W wersjach 3.XX systemu wprowadzono dla dysków stałych o pojemnościach większych niż 10MB tablice FAT z liczbami 16-bitowymi. Umożliwia to efektywną obsługę dysków stałych.

12-bitowy numer jednostki alokacji dyskowej zajmuje 1,5 bajta w tablicy, co powoduje, że określenie liczb jest nieco skomplikowane.

Można je otrzymać stosując poniższy algorytm:

1. Należy pomnożyć numer jednostki alokacji dyskowej przez 3/2;

2. Część całkowita otrzymanej liczby określa kolejny numer bajtu od początku tablicy alokacji plików, zawierającego następny numer jednostki alokacji dyskowej;

3. Odczytać wskazany i następny bajt z FAT;

4. Zamienić bajty miejscami;

5. Jeżeli ostatni numer jednostki alokacji dyskowej był parzysty, to wziąć 12 mniej znaczących bitów słowa, jeżeli nieparzysty to 12 bardziej znaczących bitów.

Otrzymana liczba wskazuje miejsce umieszczenia następnego numeru jednostki alokacji dyskowej.

Określenie numeru jednostki alokacji dyskowej przy formacie FAT 16-bitowym jest prostsze: należy ten numer pomnożyć przez 2, a otrzymana liczba wskaże pierwszy bajt słowa w tablicy FAT, w którym jest zapisany następny numer jednostki alokacji dyskowej.

Trzy pierwsze bajty tablicy FAT dla formatu 12-bitowego, a cztery dla formatu 16-bitowego zawierają następujące dane:

bajt nr 1 - bajt identyfikujący nośnik (F8H)

bajty nr 2, 3 (4) - zawierają wartość FFFF(FF)H

W polach tablicy FAT podane wartości mają następujące znaczenie:

(F)FF8H - (F)FFFH - ostatni blok w pliku

(0)000H - blok wolny

(F)FF7H - blok uszkodzony (o ile nie występuje w łańcuchu)

2.4. Katalogi plików

Rekord opisujący plik lub podkatalog zajmuje w katalogach 32 bajty.

Format rekordu podano poniżej.

Bajty Zawartość

0H-7H Nazwa pliku w kodach ASCII

8H-0AH Rozszerzenie nazwy pliku

0BH Atrybuty pliku

0CH-15H Zarezerwowane

16H-17H Czas utworzenia lub aktualizacji pliku

18H-19H Data utworzenia lub aktualizacji pliku

1AH-1BH Numer pierwszego bloku w tablicy FAT

1CH-1DH Mniej znaczące słowo rozmiaru pliku

1EH-1FH Bardziej znaczące słowo rozmiaru pliku

Tab. 2.4-1. Format rekordu opisującego plik

Na katalog główny dysku jest przeznaczona określona dla danego typu dysku liczba sektorów (bezpośrednio za kopią tablicy FAT), a zatem katalog główny ma określoną, ograniczoną pojemność.

Podkatalogi nie są ograniczone co do wielkości i są zapisywane na dysku w sposób identyczny jak pliki użytkowe.

Format bajtu określającego atrybut pliku przedstawiono poniżej.

Bit Znaczenie

0 Plik z protekcją zapisu

1 Plik ukryty

2 Plik systemowy

3 Etykieta dysku

4 Podkatalog

5 Atrybut archiwalności pliku

6,7 Niewykorzystane

Tab. 2.4-2. Opis bitów bajtu atrybutu pliku

3. Przykład: program szukający aktywnej partycji

PROGRAM Part;

TYPE tab = ARRAY [1..512] OF Byte;

VAR rejestry: Registers;

ref: Pointer;

i,j: Integer;

kon: Boolean;

BEGIN

GetMem(ref, 512); {rezerwacja pamięci}

{o wielkości jednego sektora}

WITH rejestry DO

BEGIN

AH:=2; {zainicjowanie rejestrów dla}

AL:=1; {przerwania $13}

CL:=1;

CH:=0;

DL:=$80;

DH:=0;

ES:=Seg(tab(ref^)[0]);

BX:=Ofs(tab(ref^)[0]);

END;

Intr($13, rejestry); {odczyt sektora z dysku)

kon := True;

i := $1BE; {$1BE-adres początku opisu}

{partycji nr1}

j := 0;

WHILE kon DO

BEGIN

IF tab(ref^)[i] = $80

THEN kon := False; {sprawdzenie czy}

{partycja jest aktywna}

i := i + $10; {poczatek opisu następnej} {partycji}

Inc(j);

END;

WriteLn('Aktywna jest partycja o numerze: ', j);

END;

4. Literatura

[1]. TECH HELP

[2]. Komputer #(49) 1990

[3]. L. Bułchak, R. Goczyński, M. Tuszyński: „DOS od środka”, Komputerowa Oficyna Wydawnicza „HELP” Warszawa 1990

DYSKIETKA

Opracowanie :

mgr inż. Arkadiusz Liber

- Wrocław 1990 -

Spis treści :

1.Wstęp.

2.Organizacja dyskietki w systemie PC-DOS.

2.1.Rekord wprowadzający.

2.2.Katalog.

2.3.Tablica rozmieszczenia zbiorów FAT.

3.Wybrane przerwania BIOS obsługi dyskietki.

4.Wybrane przerwania DOS obsługi dyskietki.

5.Przebieg ćwiczenia.

6.Przykładowe zadania do wykonania.

7.Literatura.

1.Wstęp.

Dyskietka jest podstawowym nośnikiem informacji w wielu systemach komputerowych. Zbudowana jest ona z pokrytego warstwą materiału magnetycznego (ok. 2.5mm) cienkiego (ok. 0.1mm) krążka z tworzywa sztucznego. Zasada zapisu informacji na dyskietce polega na magnesowaniu mikroskopijnych obszarów tlenków magnetycznych naniesionych na krążek. Ze względu na łatwość zabrudzenia i zniszczenia warstwy magnetycznej dyskietki zamykane są w kopertach ochronnych. W kopercie ochronnej znajdują się wycięcia na głowicę, mechanizm obrotowy oraz otwór indeksowy. Dodatkowo na krawędzi koperty ochronnej często znajdują się otwory pozwalające na zabezpieczenie dyskietki przed zapisem. Zapis na na dyskietce ma postać koncentrycznych śladów ( ścieżek ). W zależności od typu dyskietki i jej pojemności ilość ścieżek może być równa np.: 35, 40, 80. Każda ścieżka dzieli się na obszary zwane sektorami. W typowych dyskietkach lokalizacja każdej ścieżki i ilość używanych stron zależą od budowy napędu i sterownika dyskietki. Początek każdej ścieżki jest rozpoznawany fotoelektrycznie przez otwór indeksowy. Obecnie stosowane dyskietki mają średnice 3, 3.5, 5.25, 8 cali.

W ostatnich latach powszechnie stosuje się dwie metody zapisu danych na dyskietce : a) metoda częstotliwościowa FM, b) metoda częstotliwościowa MFM.

Metoda modulacji częstotliwości FM polega na zapisywaniu jednego impulsu w jednostce czasu dla bitu 0 i dwu impulsów w jednostce czasu dla bitu 1.

Zmodyfikowana metoda modulacji MFM polega na tym ,że bit o wartości 1 ustawia impuls w środku zegarowego interwału czasowego, natomiast bit o wartości 0 ustawia impuls na początku interwału lecz tylko wtedy gdy następny bit nie jest równy 1. W praktyce można również spotkać inne sposoby zapisu np.: M2FM czy GCR.

2.Organizacja dyskietki w systemie PC-DOS.

W systemie PC-DOS możliwych jest sześć typowych formatów dyskietek :

S8 - 1 strona , 8 sektorów , 40 ścieżek ( 160K ),

D8 - 2 strony , 8 sektorów , 40 ścieżek ( 320K ),

S9 - 1 strona , 9 sektorów , 40 ścieżek ( 180K ),

D9 - 2 strony , 9 sektorów , 40 ścieżek ( 360K ),

QD9 - 2 strony , 9 sektorów , 80 ścieżek ( 720K ),

QD15- 2 strony , 9 sektorów , 80 ścieżek ( 1.2M ).

Najpopularniejszym obecnie formatem dyskietki w systemie PC-DOS jest format D9. Podczas formatowania ( D9 ) DOS dzieli każdą z czterdziestu ścieżek na 9 sektorów 512 bajtowych co daje 368640 bajtów. Część tej pojemności wykorzystywana jest przez system do przechowywania informacji i indeksów sterujących.

Przestrzeń dyskietki podzielona jest na cztery części :

1).Rekord wprowadzający - pojedyńczy sektor znajdujący się w 1-wszym sektorze, ścieżki 0 na stronie 0, zawierający między innymi krótki program rozpoczynający ładowanie systemu operacyjnego z dyskietki. Znajduje się on na wszystkich sformatowanych dyskietkach.

2).Tablica rozmieszczenia zbiorów ( FAT ) - zawiera oficjalny zapis formatu dysku, plan rozmieszczenia zbiorów na dysku. Następuje on po rekordzie wprowadzającym i zwykle zaczyna się od 2-go sektora, 0-wej ścieżki, 0-wej strony. Na dyskietce znajdują się dwie identyczne kopie FAT-u.

3).Katalog - zawiera informacje o nazwach zbiorów, ich wielkości i położeniu pierwszej grupy sektorów używanych przez zbiór.

4).Przestrzeń danych - zajmuje pozostałą przestrzeń dysku i służy do przechowywania danych.

Przydział sektorów dla poszczególnych formatów :

S8 - 320 sektorów, 1 wprowadzający, 2 FAT, 4 katalog, 323 danych.

D8 - 640 sektorów, 1 wprowadzający, 2 FAT, 7 katalog, 630 danych.

S9 - 360 sektorów, 1 wprowadzający, 4 FAT, 4 katalog, 351 danych.

D9 - 720 sektorów, 1 wprowadzający, 4 FAT, 7 katalog, 708 danych.

QD9 - 1440 sektorów, 1 wprowadzający, 10 FAT, 7 katalog, 1422 danych.

QD15- 2400 sektorów, 1 wprowadzający, 14 FAT, 14 katalog, 2371 danych.

2.1.Rekord wprowadzający.

Rekord wprowadzający zawiera krótki program w języku maszynowym sprawdzający czy dysk zawiera zbiory IBMBIO.COM i IBMDOS.COM oraz rozpoczynający proces ładowania systemu DOS do pamięci.

Rekord wprowadzający ma następującą postać :

Adres względny Zawartość

0-1 Kod rozkazu skoku.

2 Adres początkowy programu ładującego ( dla typowego IBM PC pole ma wartość 2E ).

3-10 Systemowy ID np. IBM 2.1.

11-12 Liczba bajtów w sektorze ( np. 0200H ).

13 Liczba sektorów w wiązce ( np. 01 lub 02 ).

14-15 Liczba zastrzeżonych sektorów na początku ( 01 dla dyskietek ).

16 Liczba kopii FAT ( 02 dla dyskietek ).

17-18 Liczba pozycji katalogów źródłowych ( np. 64 lub 112).

19-20 Całkowita liczba sektorów na dysku ( np. 720 ).

21 ID ( FFH, FEH, FDH, FCH ).

22-23 Liczba sektorów na FAT ( np. 1 lub 2 ).

24-25 Liczba sektorów na ścieżkę.

26-27 Liczba stron ( np. 1 lub 2 ).

28-29 Liczba specjalnie zarezerwowanych sektorów.

2.2.Katalog.

W katalogach dysku znajduje się większość podstawowych informacji o zbiorach przechowywanych na dysku. Każdemu zbiorowi na dysku odpowiada tylko jedna pozycja katalogu, włącznie ze zbiorami należącymi do podkatalogów i pozycjami ID wolumenu dysku. Długość każdej pozycji katalogu wynosi 32 bajty a każda pozycja ma 8 pól.

Opis pozycji katalogu :

Pole Adres Opis

1 0-7 Nazwa zbioru ( ciąg znaków ASCII ).

2 8-10 Rozszerzenie ( 3 znaki ASCII ).

3 11 Atrybut : 1 - tylko do czytania

2 - ukryty

4 - systemowy

8 - etykieta wolumenu

16 - podkatalog

32 - archiwalny

64 - nie używany

128 - nie używany.

4 12-21 Obszar nie używany ( wypełniony zerami ).

5 22-23 Czas ( dane zakodowane ).

CZAS = GODZINA*2048 + MINUTY*32 + SEKUNDY/2

6 24-25 Data ( dane zakodowane ).

DATA = ( ROK - 1980 )*512 + MIESIĄC*64 + DZIEŃ

7 26-27 Początkowa pozycja zbioru w FAT.

8 28-31 Rozmiar zbioru.

2.3.Tablica rozmieszczenia zbiorów FAT.

Zawiera ona rekord opisujący użytkowanie dysku. Istnieją dwa formaty FAT-u : 12-bitowy i 16-bitowy. Dyskietki posiadają FAT 12-bitowy. FAT ma budowę tablicy z pozycjami dla każdej wiązki w przestrzeni danych. Numer na każdej pozycji FAT-u określa status i zastosowanie wiązki.

Pierwszym bajtem FAT-u jest bajt ID określający format dyskietki :

FFH - format D8,

FEH - format S8,

FDH - format D9,

FCH - format S9,

F9H - format QD9,

F9H - format QD15.

Pozostałe pozycje FAT-u tworzą łańcuchy przydziałów zbioru. Każda pozycja FAT-u odpowiada jednej wiązce. Jedną wiązkę tworzy jeden lub więcej sektorów.

Zależności pomiędzy poszczególnymi formatami, ilością sektorów na wiązkę i ilością wiązek :

S8 - 313 sektorów, 313 wiązek, 1 sektor na wiązkę, numeracja 2-314,

D8 - 630 sektorów, 315 wiązek, 2 sektory na wiązkę, numeracja 2-316,

S9 - 351 sektorów, 351 wiązek, 1 sektor na wiązkę, numeracja 2-352,

D9 - 708 sektorów, 354 wiązki, 2 sektory na wiązkę, numeracja 2-355,

QD9 - 1422 sektory, 711 wiązek, 2 sektory na wiązkę, numeracja 2-712,

QD15- 2371 sektorów, 2371 wiązek, 1 sektor na wiązkę, numeracja 2-2372.

Na każdej pozycji tablicy FAT mogą być umieszczone następujące wartości:

(0)000H - dla wiązki wolnej ( możliwy zapis ),

(F)FF8H-(F)FFFH - dla ostatniej wiązki zbioru ( sygnalizacja końca ),

(F)FF0H-(F)FF6H - dla wiązek zarezerwowanych,

(F)FF7 - dla wiązek uszkodzonych.

Jeśli chcemy wyznaczyć wartość FAT-u w formacie 12-bitowym dla zadanej wiązki należy pomnożyć numer wiązki przez 3 i podzielić przez 2. Jeśli numer wiązki jest parzysty odrzucamy cyfrę bardziej znaczącą, jeśli nieparzysty cyfrę mniej znaczącą. Odczytana z tej pozycji FAT-u liczba jeśli jest mniejsza od FF0H to jest ona adresem następnej wiązki.

3.Wybrane przerwania BIOS obsługi dyskietek.

Wszystkie programy obsługi dyskietek ROM BIOS-u wywoływane są przez przerwanie INT 13H. Rodzaj programu obsługi wybierany jest przez przekazywanie parametru w rejestrze AH procesora.

Programy obsługi dyskietek INT 13H.

Nr. Zawartość rejestrów Opis

0 AH=0 Zerowanie systemu dyskietek.

1 AH=1 Pobranie do rejestru AL statusu dyskietki.

80H - brak odpowiedzi napędu,

40H - złe przeszukiwanie,

20H - sterownik źle funkcjonuje,

10H - błąd kontroli parzystości danych,

08H - niepowodzenie transmisji DMA,

04H - brak szukanego sektora na dyskietce,

02H - nie znaleziony lub źle zaznaczony

sektor ID.

2 AH=2 Odczyt sektorów dyskietki.

DL=numer napędu Jeśli CF=0 to nie ma błędu,

dyskowego jeśli CF=1 wtedy w AH zawarty jest kod błędu

DH=numer strony ( patrz opis programu obsługi nr 1 ).

lub głowicy

CH=numer ścieżki

CL=numer sektora

AL=liczba czytanych

sektorów

ES:BX=adres bufora

3 AH=3 Zapis sektorów dyskietki.

DL=numer napędu Jeśli CF=0 to nie ma błędu,

dyskowego jeśli CF=1 wtedy w AH zawarty jest kod błędu

DH=numer strony ( patrz opis programu obsługi nr 1 ).

lub głowicy

CH=numer ścieżki

CL=numer sektora

AL=liczba czytanych

sektorów

ES:BX=adres bufora

4 AH=4 Weryfikacja sektorów dyskietki.

DL=numer napędu Jeśli CF=0 to nie ma błędu,

dyskowego jeśli CF=1 wtedy w AH zawarty jest kod błędu

DH=numer strony ( patrz opis programu obsługi nr 1 ).

lub głowicy

CH=numer ścieżki

CL=numer sektora

AL=liczba czytanych

sektorów

ES:BX=adres bufora

5 AH=5 Formatowanie ścieżki.

DL=numer napędu

dyskowego

DH=numer strony

lub głowicy

CH=numer ścieżki

AL=liczba czytanych

sektorów

ES:BX=adres

początku 4-bitowych

znaczników sektorów

4.Wybrane przerwania DOS-u obsługi dyskietek.

Programy obsługi dyskietek DOS-u wywoływane są przez przerwania INT 25H, INT 26H oraz INT 21H. Poniżej przedstawiony został skrócony opis tych przerwań.

Przerwanie INT 25H.

Funkcja : bezwzględny odczyt określonych sektorów na dysku.

Parametry wejściowe :

AL=numer napędu,

CX=ilość sektorów,

DX=numer początkowego sektora,

DS:BX=adres miejsca przeniesień danych w pamięci.

Parametry wyjściowe :

CF=0 - brak błędów.

CF=1 - wystąpił błąd.

AL=kod błędu

0CH - błąd nieokreślony,

0BH - błąd odczytu,

0AH - błąd zapisu,

08h - sektor nie został odnaleziony,

07H - nie rozpoznany format dysku,

06H - błąd szukania,

04H - błąd CRC,

02H - napęd nie jest gotowy do pracy,

01H - niewłaściwy numer napędu,

00H - próba zapisu na zabezpieczonej dyskietce.

AH=kod błędu

80H - przekroczenie czasu,

40H - błąd szukania,

20H - niesprawny kontroler,

10H - błąd CRC,

08H - błąd DMA,

04H - brak zadanego sektora na dyskietce,

03H - próba zapisu na zabezpieczonej dyskietce,

02H - błędne oznakowanie ID,

00H - pozostałe błędy.

Przerwanie INT 26H.

Funkcja : bezwzględny zapis określonych sektorów na dysku.

Parametry wejściowe :

AL=numer napędu,

CX=ilość sektorów,

DX=numer początkowego sektora,

DS:BX=adres miejsca przeniesień danych w pamięci.

Parametry wyjściowe :

CF=0 - brak błędów.

CF=1 - wystąpił błąd.

AL=kod błędu

0CH - błąd nieokreślony,

0BH - błąd odczytu,

0AH - błąd zapisu,

08h - sektor nie został odnaleziony,

07H - nie rozpoznany format dysku,

06H - błąd szukania,

04H - błąd CRC,

02H - napęd nie jest gotowy do pracy,

01H - niewłaściwy numer napędu,

00H - próba zapisu na zabezpieczonej dyskietce.

AH=kod błędu

80H - przekroczenie czasu,

40H - błąd szukania,

20H - niesprawny kontroler,

10H - błąd CRC,

08H - błąd DMA,

04H - brak zadanego sektora na dyskietce,

03H - próba zapisu na zabezpieczonej dyskietce,

02H - błędne oznakowanie ID,

00H - pozostałe błędy.

Ze względu na różny system numeracji przyjmowany przez BIOS i DOS poniżej podane zostały wzory umożliwiające wzajemne przeliczenia.

NUMER_SEKTORA.DOS=(SEKTOR.BIOS-1)+STRONA.BIOS*ILOŚĆ_SEKTOR'W_NA_STRONĘ

+ŚCIEŻKA.BIOS*ILOŚĆ_SEKTOR'W_NA_STRONĘ*ILOŚĆ_STRON_

NA_DYSKU

SEKTOR.BIOS=1+(SEKTOR.DOS)MOD(ILOŚĆ_SEKTOR'W_NA_STRONĘ)

STRONA.BIOS=((SEKTOR.DOS)/(ILOŚĆ_SEKTOR'W_NA_STRONĘ))MOD(ILOŚĆ_STRON_

NA-DYSKU)

ŚCIEŻKA.BIOS=SEKTOR.DOS/(ILOŚĆ_SEKTOR'W_NA_STRONĘ*ILOŚĆ_STRON_NA_

DYSKU)

Przerwanie INT 21H.

Przerwanie to zawiera wywołania wszystkich funkcji DOS-u. Wybraną funcję DOS-u wywołuje się przez przerwanie INT 21H z podaniem numeru funkcji w rejestrze procesora AH.

Programy obsługi dyskietek INT 21H.

Nr. Zawartość rejestrów Opis

0DH AH=0DH Reset dysku

0EH AH=0EH Wybór bieżącego napędu

DL=ID_napędu AL=ilość napędów 19H AH=19H Zgłaszanie bieżącego napędu

AL=kod domyślnego napędu

1AH AH=1AH Ustalenie obszaru przeniesień dyskowych

DS:DX=wskaźnik DTA

1BH AH=1BH Uzyskanie danych z tablicy rozmieszczenia

zbiorów ( bieżący napęd )

AL=ilość sektorów na jednostkę alokacji

CX=ilość bajtów w sektorze

DX=ilość jednostek alokacji

DS:DX=wskaźnik bajtu ID FAT

1CH AH=1CH Uzyskanie danych z tablicy rozmieszczenia DL=ID-napędu zbiorów ( dowolny napęd )

AL=ilość sektorów na jednostkę alokacji

CX=ilość bajtów w sektorze

DX=ilość jednostek alokacji

DS:DX=wskaźnik bajtu ID FAT

2EH AH=2EH Ustalenie weryfikacji zapisu na dysku

AL=00 tak

AL=01 nie

DL=00

2FH AH=2FH Uzyskanie adresu DTA

AX=kod powrotu

ES:BS=wskaźnik DTA

36H AH=36H Odczytanie ilości wolnego miejsca na dysku

DL=kod napędu AX=ilość sektorów w wiązce

BX=ilość dostępnych wiązek

CX=ilość bajtów w sektorze

DX=ogólna ilość wiązek

0FH AH=0FH Otwarcie zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

10H AH=10H Zamknięcie zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

11H AH=11H Poszukiwanie pierwszego zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

12H AH=12H Poszukiwanie następnego zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

13H AH=13H Usuwanie zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

14H AH=14H Odczyt rekordu zbioru sekwencyjnego

DS:DX=wskaźnik FCB AL=kod powrotu

15H AH=15H Zapis rekordu zbioru sekwencyjnego

DS:DX=wskaźnik FCB AL=kod powrotu

16H AH=16H Tworzenie zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

17H AH=17H Przemianowanie zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

21H AH=21H Odczyt rekordu zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

22H AH=22H Zapis rekordu zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

23H AH=23H Uzyskanie wymiaru zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

24H AH=24H Ustalanie miejsca rekordu

DS:DX=wskaźnik FCB AL=kod powrotu

27H AH=27H Odczyt rekordów zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

CX=liczba rekordów CX=aktualna liczba rekordów

28H AH=28H Zapis rekordów zbioru

DS:DX=wskaźnik FCB AL=kod powrotu

CX=liczba rekordów CX=aktualna liczba rekordów

29H AH=29H Analiza nazwy zbioru

DS:SI=wskaźnik ES:DI=wskaźnik FCB

linii rozkazu DS:SI=wskaźnik następnego miejsca w linii

ES:DI=wskaźnik FCB rozkazu

AL=bity sterujące

3CH AH=3CH Tworzenie zbioru

CX=atrybut zbioru AX=identyfikator lub kod powrotu

DS:DX=wskaźnik

łańcucha ASCIIZ

3DH AH=3DH Otwarcie zbioru

AL=kod dostępu AX=identyfikator lub kod powrotu

DS:DX=wskaźnik łańcucha ASCIIZ

3EH AH=3EH Obsługa zamknięcia zbioru

BX=identyfikator AX=kod powrotu

3FH AH=3FH Czytanie ze zbioru lub urządzenia

BX=identyfikator AX=ilość wczytanych bajtów lub kod powrotu

CX=ilość bajtów

do odczytania DS:DX=wskaźnik

bufora DTA 40H AH=40H Zapisnie do zbioru lub urządzenia

BX=identyfikator AX=ilość wczytanych bajtów lub kod powrotu

CX=ilość bajtów

do odczytania DS:DX=wskaźnik

bufora DTA

41H AH=41H Usunięcie zbioru

DS:DX=wskaźnik AX=kod powrotu

łańcucha ASCIIZ

42H AH=42H Przesunięcie wskaźnika zbioru

AL=kod AX=kod powrotu

CX:DX=adres DX:AX=nowy wskaźnik lokalizacji

względny

43H AH=43H Uzyskiwanie i ustalanie atrybutów zbioru

AL=kod AX=kod powrotu

00-uzyskiwanie CX=atrybut

01-ustalanie

DS:DX=wskaźnik

łańcucha ASCIIZ

4EH AH=4EH Rozpoczęcie poszukiwania zbioru

CX=atrybut poszuk. AX=kod powrotu

DS:DX=wskaźnik

łańcucha ASCIIZ

4FH AH=4FH Kontynuacja poszukiwania zbioru

DS:DX=informacja AX=kod powrotu

z wołania 4EH

56H AH=56H Zmiana nazwy zbioru

DS:DX=wskaźnik AX=kod powrotu

łańcucha ASCIIZ

ES:DI=wskaźnik

łańcucha ASCIIZ

( nowa nazwa )

5AH AH=5AH Tworzenie zbioru tymczasowego

DS:DX=adres opisu AX=kod błędu ( CF=1 )

ścieżki katalogu DS:DX=opis ścieżki ( CF=0 )

CX=atrybut zbioru

39H AH=39H Tworzenie katalogu

DS:DX=wskaźnik AX=kod powrotu

łańcucha ASCIIZ

3AH AH=3AH Usunięcie katalogu

DS:DX=wskaźnik AX=kod powrotu

łańcucha ASCIIZ

3BH AH=3BH Zmiana bieżącego katalogu

DS:DX=wskaźnik AX=kod powrotu

łańcucha ASCIIZ

47H AH=47H Uzyskanie bieżącego katalogu

DL=ID napędu AX=kod powrotu ( CF=1 )

DS:SI=wskaźnik DS:SI=opis ścieżki ( CF=0)

obszaru danych

5.Przebieg ćwiczenia.

1).Zapoznać się ze strukturą i organizacją dyskietki.

2).Wczytać rekord wprowadzający dyskietki.

3).Zapoznać się ze strukturą i zawartością wczytanego rekordu wprowadzającego.

4).Wczytać katalog dyskietki.

5).Zapoznać się ze strukturą i zawartością poszczególnych pozycji katalogu.

6).Wczytać FAT dyskietki.

7).Zapoznać się ze strukturą i zawartością wczytanej tablicy rozmieszczenia zbiorów.

8).Napisać prosty program wyświetlający na ekranie monitora zawartość poszczególnych pól rekordu wprowadzającego, katalogu oraz FAT-u.

9).Po uzgodnieniu z prowadzącym zrealizować wybrane zagadnienia z rozdziału 6.

UWAGA !

Jeżeli prowadzący nie wskaże innej metody wszelkie operacje na dyskietce należy przeprowadzać używając zintegrowanego systemu TURBO PASCAL z wykożystaniem przerwań DOS i BIOS.

6.Przykładowe zadania do wykonania.

1).Zaprojektować i wykonać program sprawdzający czy rekord wprowadzający nie uległ zmianie .

2).Zaprojektować i wykonać program prostego edytora pozwalającego na oglądanie i zmianę zawartości poszczególnych pozycji rekordu wprowadzającego.

3).Zaprojektować i wykonać program prostego edytora pozwalającego na oglądanie i zmianę zawartości poszczególnych pozycji katalogu.4).Zaprojektować i wykonać program prostego edytora pozwalającego na oglądanie i zmianę zawartości poszczególnych pozycji tablicy rozmieszczenia zbiorów.

7.Literatura.

[1].Peter Norton, Przewodnik programisty komputerów osobistych IBM PC.

[2].DOS Technical reference.

[3].TECH HELP.

[4].NORTON GUIDE.

[5].Jan Bielecki, Rozszerzony Turbo Pascal 4.0, WKiŁ Warszawa 1988.

[6].Jerzy Szczepkiewicz, Turbo Pascal 4.0 z dodatkiem do wersji 5.0, WNT Warszawa 1989.

[7].Andrzej Marciniak, Turbo Pascal 5.0 suplement do wersji 4.0, PWN Warszawa-Poznań 1989.

19



Wyszukiwarka

Podobne podstrony:
Jak podzielić dysk na partycje, Informatyka -all, INFORMATYKA-all
instrukcja 3 new, Ćwiczenia laboratoryjne z Podstaw Informatyki nr 3
instrukcja 3 new, Ćwiczenia laboratoryjne z Podstaw Informatyki nr 3
instrukcja 3, Ćwiczenia laboratoryjne z Podstaw Informatyki nr 3
Sprawozdanie z laboratorium, student - informatyka, wykłady, Architekt-komp-MarekM
Plan laboratorium-język C, Informatyka
MATLAB - Sprawozdanie z laboratorium Technologii Informacyjnych, Automatyka, Semestr 1, Technologie
PRÓBKOWANIE SYGNAŁU - Sprawozdanie z laboratorium Technologia Informacjna, Automatyka, Semestr 1, Te
Laboratorium dydaktyki informaki 05, Dokumenty(1)
Podstawowa aparatura pomiarowa [2], Informatyka, Podstawy miernictwa, Laboratorium
Podstawowa aparatura pomiarowa, Informatyka, Podstawy miernictwa, Laboratorium
Wyznaczanie stałej siatki dyfrakcyjnej, Prz inf 2013, I Semestr Informatyka, Fizyka, SPRAWOZDANIA DU
Laboratorium INFORMATYKA ET SEM Nieznany
Tabela pomiarowa, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA] Laborki, laboratorium stare
Ćwiczenia laboratoryjne PBiI (1) - konspekt, Studia INiB, Podstawy bibliotekoznawstwa i informacji n
tabele 1B+, Prz inf 2013, I Semestr Informatyka, Fizyka, [FIZYKA] Laborki, laboratorium stare, 1b

więcej podobnych podstron