IDEDOS - dostęp do dysków twardych
Nazwa IDEDOS oznacza dodatkowe udogodnienia w systemie operacyjnym +3e, który opracował Garry Lancaster. Więcej informacji o +3 znajduje się na stronie autora pod adresem http://www.zxplus3e.plus.com/.
W ZXVGS oraz CPM22QED użyty został system partycjonowania IDEDOS (nazywany również partycją systemową IDEDOS).
Dlaczego partycje IDEDOS są najlepsze dla komputerów 8bit?
- Sposób partycjonowania jest prosty, ale nie tak prymitywny jak w MS-DOS i mniej skomplikowany niż w Amiga OS.
- Informacje o wszystkich partycjach są w jednym miejscu, a nie rozrzucone po całym dysku, jak w MS-DOS.
- Można przydzielić partycje obrazom dyskietek (TR-DOS, MB-02, +D, Sam), również określając ich (wirtualną) strukturę fizyczną.
- Każda partycja musi mieć swoją nazwę, do 16 znaków.
- Do partycji można dołączyć dodatkowe parametry. Na przykład, partycje CP/M (również obrazy dyskietek CP/M) mogą zawierać tabelę XDPB.
- Pliki startowe (boot) mogą być zapisane jako oddzielne partycje. Wiele różnych komputerów może być wystartowane z jednego dysku, ponieważ każdy sprzęt używa innej nazwy pliku startowego.
- Dla wielkich plików, np. filmów zrobionych z serii obrazków (patrz BMP2SCR), mogą być zarezerwowane niepofragmentowane obszary (partycje).
- Może być maksymalnie 65535 partycji.
- Inne typy partycji mogą być dodane w przyszłości.
- Adresowanie CHS jest odpowiednie dla starszych dysków.
Szczegóły techniczne
Każda definicja partycji zajmuje 64 bajty. Pierwszy wpis definiuje partycję systemową. Partycje są definiowane w pełnych ścieżkach - od cylinder/strona do cylinder/strona. LBA nie jest obsługiwane - zawsze jest używana domyślna geometria.
Dla partycji typu obraz dyskietki (typ #30..#3F), określona jest jej wirtualna geometria. Obszar zarezerwowany dla obrazu może być zaokrąglony w górę do całych ścieżek, albo ostatnia ścieżka może być dzielona z kolejnym obrazem. Jeśli partycje nakładają się na tej samej ścieżce, druga z nich musi mieć zdefiniowane przesunięcie w sektorach. Na przykład dla dysku 980/5/17, partycja 800kB zajmuje 1600 sektorów = 18 cylindrów + 4 ścieżki + 2 sektory, więc przesunięcie dla kolejnej partycji będzie 2, w przeciwnym razie ostatnie 15 sektorów będzie bezużyteczne.
Opis partycji - 64 bajty
Adres | Długość | Opis |
+0 | 16 | Nazwa partycji (wielkie litery, uzupełniona spacjami). |
+16 | 16 | Definicja partycji. |
| +16 | 1 | Typ partycji (0=wolna pozycja) |
+17 | 2 | Cylinder początkowy. |
+19 | 1 | Głowica początkowa. |
+20 | 2 | Cylinder końcowy. |
+22 | 1 | Głowica końcowa. |
+23 | 4 | Numer ostatniego sektora logicznego. |
+27 | 5 | Informacja zależna od typu.
|
| +27 | 1 | Przesunięcie początku partycji względem sektora 1 (0, jeśli nie ma). |
+28 | 1 | Wirtualny rozmiar sektora (0-128B, 1-256B, 2-512B, 3-1kB). |
+29 | 1 | Wirtualny numer pierwszego sektora (0..240). |
+30 | 1 | Wirtualne strony (1, 2, więcej?). |
+31 | 1 | Wirtualne sektory (zwykle 5, 8, 9, 16, 18). |
+32 | 32 | Informacja zależna od typu. Na przykład XDPB, format filmu. |
Typy partycji
Numer typu partycji | Opis |
#00 | Partycja nieużywana/wolna pozycja. |
#01 | Partycja systemowa. Pierwsza partycja na dysku, zaczynająca się od fizycznego sektora 1 (cylinder 0, głowica 0 albo 1), jest zawsze partycją systemową i zawiera listę partycji w postaci bloków po 64 bajty, które definiują wszystkie partycje dysku (włączając systemową). Dozwolona jest tylko jedna partycja tego typu na dysku, jest to zawsze pierwsza partycja. Jej nazwa jest zawsze "PLUSIDEDOS" (z 6 spacjami). |
#02 | Partycja swap (pamięć tymczasowa). |
#03 | Partycja +3DOS. Teoretycznie maksymalna wiekość partycji +3DOS jest nieco mniejsza niż 32MB. Tabela XDPB zawiera logiczną geometrię. |
#04 | Partycja CP/M z tabelą XDPB odpowiadającą fizycznej strukturze dysku. Jeśli dysk ma 17 sektorów na ścieżkę, to parametr LSPT jest 68. Partycja używa zawsze całkowitej liczby cylindrów i zajmuje całe cylindry (od głowicy 0). Jeśli nie (od głowicy 0), musi się to przekładać na ilość zarezerwowanych ścieżek (parametr OFF w XDPB). Jest to wymagane dla sterowników niskiego poziomu - DSKHNDLR. |
#05 | Partycja startowa (boot). Jest to tylko jeden plik, zapisany jako partycja. Używany do wystartowania sprzętu. Np. Timex FDD 3000, rozbudowane o YABUS.TF, będzie szukało w tabeli partycji IDEDOS partycji o nazwie "YABUS.TF". Jeśli znajdzie, zawartość partycji zostanie skopiowana do RAM i wykonana. Rozmiar partycji to zwykle 8k do 64kB, co się przekłada na 1..2 ścieżki (lub 1..8 ścieżek dla dysków z 17 sektorami). Ilość sektorów do wczytania jest w definicji partycji. |
#0F | Partycja z filmem. Sekwencja zrzutów ekranu z opcjonalną ścieżką dźwiękową. |
#10 | Partycja MS-DOS (FAT16). |
#20 | Partycja UZI(X). |
#3x | Obraz dyskietki nie-CP/M, ZX Spectrum. |
#30 | Obraz dyskietki TR-DOS. Zwykle o geometrii 80/2/16, 640kB. |
#31 | Obraz dyskietki +D/SAMDOS (rekord B-DOS)*. Geometria 80/2/10, 800kB. |
#32 | Obraz dyskietki MB-02. Zwykle geometria 82/2/11, 1804kB. |
#33 | Obraz dyskietki TOS A.2. Zwykle geometria 40/1/16, 160kB lub 80/2/16, 640kB. |
#4x | Obrazy dyskietek CP/M. Typ partycji określa komputer używający formatu CP/M do innych celów niż CP/M. |
#40 | ZX Spectrum +3. |
#41 | Elwro 800 Junior. |
#48 | Amstrad CPC. |
#49 | Amstrad PCW. |
#FE | Obszar błędnych sektorów. |
#FF | Wolny obszar dysku. |
*Uwaga! Obraz dyskietki SAMDOS może mieć zamienione bajty L/H z uwagi na zgodność z interfejsem Atom.
Wyszukiwanie struktur IDEDOS:
- Wczytaj sektor 1 na cylindrze 0 i głowicy 0.
- Jeśli rozmiar sektora to 512B (pełne IDE), przejdź do 5.
- (Uproszczone IDE - rozmiar sektora to 256B.) Jeśli sygnatura PLUSIDEDOS znaleziona, przejdź do 10.
- Nie instaluj dysku.
- Jeśli znaleziona sygnatura PLUSIDEDOS, przejdź do 10.
- Jeśli znaleziona sygnatura P?L?U?S?I?D?E?D?O?S, przełącz na dostęp 8-bit i przejdź do 10.
- Odczytaj sektor 1 na cylindrze 0 i stronie head 1.
- Jeśli znaleziona sygnatura PLUSIDEDOS, przejdź do 10.
- Nie instaluj dysku. (Lub próbuj analizować partycje MS-DOS.)
- Przeanalizuj tabelę partycji IDEDOS.
MBR - tabela partycji MS-DOS
Zalecane jest umieszczenie partycji IDEDOS jako pierwszej na dysku. Jeśli chcesz jednocześnie mieć partycję FAT (FAT-16), umieść ją jako drugą w kolejności. Aby zabezpieczyć przed uszkodzeniem, zdefiniuj partycję IDEDOS jako CP/M (typ #DB w tabeli partycji MS-DOS).
Przykładowe dane partycji
Dysk to Seagate ST351A/X, a jego struktura to 980/5/17 (a nie jak jest podawane w opisach - 820/6/17).
Pierwsza ścieżka jest zarezerwowana na MBR oraz tabelę partycji MS-DOS w sektorze 0/0/1. W przykładzie partycje MS-DOS (oraz inne) mogą rozpoczynać się od cylindra 198, ponieważ struktury IDEDOS kończą się na cylindrze 197 włącznie. Struktura IDEDOS może również objąć cały dysk i zawierać partycję MS-DOS wewnątrz.
Struktura IDEDOS rozpoczyna się w sektorze 0/1/1, tak więc 1 * 17 * 512 = 8704 = #2200 bajty dysku są pominięte.
02200 50 4C 55 53 49 44 45 44 4F 53 20 20 20 20 20 20 PLUSIDEDOS
02210 01 00 00 01 00 00 01 10 00 00 00 00 00 00 00 00 ................
02220 C6 00 05 11 55 00 87 00 02 00 00 00 00 00 00 00 O...U...........
02230 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Partycja systemowa IDEDOS (typ #01 - obszar opisujący inne partycje).
Rozpoczyna się od ścieżki w cylindrze 0, strona 1, i w tej samej ścieżce kończy. Partycja ma wielkość 17 sektorów (#00000010). Od #02220 zdefiniowane są parametry dysku: 198 cylinderów (#00C6, dwa bajty), 5 stron (jeden bajt), 17 sektorów na ścieżkę (#11, jeden bajt), ilość sektorów na cylinder jest wyliczona na 85 (#0055, dwa bajty). Maksymalnie może zostać założonych 136 partycji (#0087 jest ostatnim numerem = 1 * 17 * 512 / 64 - 1, dwa bajty). Obszar od cylindra 198 i dalej jest zarezerwowany dla innych systemów (np. MS-DOS) i nie jest dostępny dla partycji IDEDOS.
02240 5A 58 56 47 53 20 20 20 20 20 20 20 20 20 20 20 ZXVGS
02250 04 02 00 00 C5 00 04 13 41 00 00 00 00 00 00 00 ....L...A.......
02260 44 00 04 0F 00 44 10 FF 03 FF FF 00 00 00 00 02 D....D.˙.˙˙.....
02270 03 04 C4 11 01 00 02 00 00 A1 FF 00 00 00 00 00 ..A.......˙.....
Główna partycja CP/M (typ #04). Rozpoczyna się od ścieżki w cylindrze 2, strona 0 i kończy na ścieżce w cylindrze 197 (#00C5), strona 4 włącznie. Partycja ma 16660 sektorów (#00004113). Od #02260 jest tabela XDPB (#A1 w #02279 jest kodem urządzenia fizycznego dla tej partycji w CP/M).
02280 50 4C 33 4D 45 4D 2E 53 59 53 20 20 20 20 20 20 PL3MEM.SYS
02290 05 01 00 03 01 00 04 1F 00 00 00 00 00 00 00 00 ................
022A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Plik startowy (typ #05) przeznaczonego dla interfejsu PL3MEM. Rozpoczyna się od ścieżki w cylindrze 1, strona 3, a kończy w cylindrze 1, strona 4 włącznie. Rozmiar pliku to 32 sektory (#0000001F) - ostatnie 2 nie są używane.
022C0 46 52 45 45 20 20 20 20 20 20 20 20 20 20 20 20 FREE
022D0 FF 00 00 02 01 00 02 65 00 00 00 00 00 00 00 00 .......e........
022E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Nieco wolnego miejsca (typ #FF). Rozpoczyna się od ścieżki w cylindrze 0, strona 2 i kończy na ścieżce w cylindrze 1, strona 2 włącznie. Ma 102 sektory (#00000065). Miejsce może być zużyte na kolejne pliki startowe.
Linki do innych stron
| | CP/M
CPC
CPM22QED
Filesystem
MGT
Timex
ZX Spectrum
ZXVGS
|