Format CP/M 2.2
From Atariki
| Wersja z dnia 15:36, 24 gru 2007 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 15:49, 24 gru 2007 KMK (Dyskusja | wkład) (skończę później, teraz idę mówić ludzkim głosem) Next diff → |
||
| Linia 31: | Linia 31: | ||
| <tr><td>$02</td><td><p>Tzw. ''block shift'': $03 dla bloku 1k.</p></td></tr> | <tr><td>$02</td><td><p>Tzw. ''block shift'': $03 dla bloku 1k.</p></td></tr> | ||
| <tr><td>$03</td><td><p>Tzw. ''block mask'': $0F dla bloku 1k.</p></td></tr> | <tr><td>$03</td><td><p>Tzw. ''block mask'': $0F dla bloku 1k.</p></td></tr> | ||
| - | <tr><td>$04</td><td><p>Tzw. ''extent mask'' (patrz niżej).</p></td></tr> | + | <tr><td>$04</td><td><p>Tzw. ''extent mask'' (patrz niżej). W Indus CP/M 2.2 wynosi $00.</p></td></tr> |
| <tr><td>$05-$06</td><td><p>Liczba bloków na dysku, odjąć 1: 84 w [[SD]] i 170 w [[DD]].</p></td></tr> | <tr><td>$05-$06</td><td><p>Liczba bloków na dysku, odjąć 1: 84 w [[SD]] i 170 w [[DD]].</p></td></tr> | ||
| <tr><td>$07-$08</td><td><p>Liczba wpisów w katalogu, odjąć 1. W Indus CP/M: 63.</p></td></tr> | <tr><td>$07-$08</td><td><p>Liczba wpisów w katalogu, odjąć 1. W Indus CP/M: 63.</p></td></tr> | ||
| Linia 40: | Linia 40: | ||
| DPB nie jest zapisany nigdzie na dysku - BIOS tworzy go sobie w pamięci po zalogowaniu dyskietki. | DPB nie jest zapisany nigdzie na dysku - BIOS tworzy go sobie w pamięci po zalogowaniu dyskietki. | ||
| + | |||
| + | == Katalog == | ||
| + | |||
| + | Jeden wpis katalogowy liczy 32 bajty. Jego struktura jest następująca: | ||
| + | |||
| + | <table border = 1 cellpadding = 5> | ||
| + | <tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | ||
| + | <tr><td>$00</td><td> | ||
| + | <p>Liczba z zakresu 0-15: kod użytkownika (ang. ''user number''). Pozwala to na istnienie wielu plików o tej samej nazwie na jednej dyskietce. Poszczególni użytkownicy nie "widzą" plików tworzonych przez innych.</p> | ||
| + | <p>Gdy kod użytwkonika jest równy $E5, oznacza to plik skasowany.</p> | ||
| + | </td></tr> | ||
| + | <tr><td>$01-$08</td><td><p>Nazwa pliku.</p></td></tr> | ||
| + | <tr><td>$09-$0B</td><td><p>Rozszerzenie nazwy pliku. Musi się składać z 7-bitowych znaków ASCII. Gdy pierwszy bajt rozszerzenia ma ustawiony bit 7, oznacza to, że plik jest zabezpieczony przed zapisem. To samo w drugim bajcie oznacza "plik systemowy" (czyli ukryty).</p></td></tr> | ||
| + | <tr><td>$0C</td><td><p>Młodszy bajt tzw. ''extent counter'' (patrz niżej).</p></td></tr> | ||
| + | <tr><td>$0D</td><td><p>Bajt zarezerwowany, równy $00.</p></td></tr> | ||
| + | <tr><td>$0E</td><td><p>Starszy bajt ''extent counter''.</p></td></tr> | ||
| + | <tr><td>$0F</td><td><p>Liczba rekordów pliku obejmowana przez ten wpis katalogowy.</p></td></tr> | ||
| + | <tr><td>$10-$1F</td><td><p>Numery kolejnych bloków zajętych przez plik. Gdy całkowita liczba bloków na dysku jest mniejsza niż 256, numery bloków są jednobajtowe, w przeciwnym razie dwubajtowe (młodszy/starszy).</p></td></tr> | ||
| + | </table> | ||
| == Zobacz też == | == Zobacz też == | ||
| * [[Formaty systemów plików]] | * [[Formaty systemów plików]] | ||
| - | |||
| - | {{stub}} | ||
| [[Kategoria:Atari 8-bit]] | [[Kategoria:Atari 8-bit]] | ||
| + | |||
| + | {{stub}} | ||
Wersja z dnia 15:49, 24 gru 2007
Format dyskietki zastosowany w Indus CP/M 2.2 i przeznaczony do użycia ze stacjami Indus GT, LDW Super 2000 i CA-2001. Format dyskietki CP/M 2.2 ma to do siebie, że część parametrów dysku jest z góry narzucona przez BIOS właściwy dla danej implementacji systemu. W praktyce uniemożliwia to wymianę danych tą drogą pomiędzy poszczególnymi implementacjami CP/M.
Spis treści |
Cechy ogólne
- Dopuszczalne wielkości sektorów fizycznych: 128 i 256 bajtów
- Wielkość sektora logicznego (bloku): 1024 bajty
- Maksymalna pojemność filesystemu: 65536 bloków (64 MB)
- Maksymalna wielkość pliku: nieograniczona
- Maksymalna liczba plików na dysku: 63
- Struktura katalogowa: jednopoziomowa
- Maksymalna liczba plików w katalogu: 63
- Nazwa pliku: 8+3
- Metoda linkowania plików: indywidualne mapy plików
- Metoda alokacji sektorów: zależna od BIOS-u
Jednostka alokacji
Jednostkę alokacji stanowi blok liczący osiem sektorów w SD i cztery w DD (czyli 1k). Całkowita pojemność dyskietki w SD i DD wynosi odpowiednio 85 i 171 jednostek alokacji.
Jedną ze stosowanych jednostek miar jest "rekord". Jest to umowna wielkość wynosząca 128 bajtów (historycznie: wielkość sektora na dyskietce ośmiocalowej).
DPB
Parametry dysku przechowywane są w tzw. DPB (ang. disk parameter block). Jego struktura jest następująca:
| Offset | Opis |
| $00-$01 |
Liczba 128-bajtowych rekordów na ścieżkę: 128 w SD i 256 w DD. |
| $02 | Tzw. block shift: $03 dla bloku 1k. |
| $03 | Tzw. block mask: $0F dla bloku 1k. |
| $04 | Tzw. extent mask (patrz niżej). W Indus CP/M 2.2 wynosi $00. |
| $05-$06 | |
| $07-$08 | Liczba wpisów w katalogu, odjąć 1. W Indus CP/M: 63. |
| $09-$0A | Mapa alokacji katalogu. Interpretowana jest jako seria bitów (mł. bajt w kolejności 7-0, potem starszy bajt tak samo) reprezentująca 16 kolejnych sektorów na ścieżce znajdującej się za ścieżkami zarezerwowanymi (patrz niżej). Bit ustawiony oznacza, że odpowiadający mu sektor zajęty jest na katalog. |
| $0B-$0C | Liczba wpisów w katalogu, podzielona przez 4 i zaokrąglona w górę. W Indus CP/M 2.2: 16. |
| $0D-$0E | Liczba ścieżek zarezerwowanych. W Indus CP/M 2.2: 2. |
DPB nie jest zapisany nigdzie na dysku - BIOS tworzy go sobie w pamięci po zalogowaniu dyskietki.
Katalog
Jeden wpis katalogowy liczy 32 bajty. Jego struktura jest następująca:
| Offset | Opis |
| $00 |
Liczba z zakresu 0-15: kod użytkownika (ang. user number). Pozwala to na istnienie wielu plików o tej samej nazwie na jednej dyskietce. Poszczególni użytkownicy nie "widzą" plików tworzonych przez innych. Gdy kod użytwkonika jest równy $E5, oznacza to plik skasowany. |
| $01-$08 | Nazwa pliku. |
| $09-$0B | Rozszerzenie nazwy pliku. Musi się składać z 7-bitowych znaków ASCII. Gdy pierwszy bajt rozszerzenia ma ustawiony bit 7, oznacza to, że plik jest zabezpieczony przed zapisem. To samo w drugim bajcie oznacza "plik systemowy" (czyli ukryty). |
| $0C | Młodszy bajt tzw. extent counter (patrz niżej). |
| $0D | Bajt zarezerwowany, równy $00. |
| $0E | Starszy bajt extent counter. |
| $0F | Liczba rekordów pliku obejmowana przez ten wpis katalogowy. |
| $10-$1F | Numery kolejnych bloków zajętych przez plik. Gdy całkowita liczba bloków na dysku jest mniejsza niż 256, numery bloków są jednobajtowe, w przeciwnym razie dwubajtowe (młodszy/starszy). |
Zobacz też
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.
