Format OS/A Plus 4

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 19:48, 6 paź 2006
KMK (Dyskusja | wkład)
(Katalog)
← Previous diff
Wersja z dnia 19:56, 6 paź 2006
KMK (Dyskusja | wkład)
(Mapy plików)
Next diff →
Linia 74: Linia 74:
== Mapy plików == == Mapy plików ==
-Podobnie jak w [[format SpartaDOS|systemie plików SpartaDOS]] i [[format AtariDOS XE|DOS XE]] ciągłość plików zapewniają mapy sektorów. Pierwszy sektor mapy wskazywany jest przez wpis katalogowy pliku. W tym sektorze pierwsze 12 bajtów jest zajęte przez DOS, z czego dwa bajty o numerach 1 i 2 zawierają numer następnego sektora mapy zapisany w konwencji starszy/młodszy, przy czym ostatni sektor mapy ma tu zero. Pozostałe 10 bajtów jest zawsze wyzerowane i nie wiadomo do czego służy.+Podobnie jak w [[format SpartaDOS|systemie plików SpartaDOS]] i [[format AtariDOS XE|DOS XE]] ciągłość plików zapewniają mapy sektorów. Pierwszy sektor mapy wskazywany jest przez wpis katalogowy pliku. W tym sektorze pierwsze 12 bajtów jest zajęte przez DOS:
-Od bajtu o offsecie $0C idą kolejno dwubajtowe numery sektorów pliku zapisane w konwencji starszy/młodszy.+<table border = 1 cellpadding = 5>
 +<tr><td><b>Offset</b></td><td><b>Opis</b></td></tr>
 +<tr><td>$00</td><td><p>Bajt zarezerwowany o wartości $00.</p></td></tr>
 +<tr><td>$01-$02</td><td><p>Numer następnego sektora mapy (starszy/młodszy!).</p></td></tr>
 +<tr><td>$03-$04</td><td><p>Bajty zarezerwowane o wartości $00</p></td></tr>
 +<tr><td>$05-$06</td><td><p>Bajty zarezerwowane o wartości $00</p></td></tr>
 +<tr><td>$07-$0B</td><td><p>Bajty zarezerwowane o wartości $00</p></td></tr>
 +</table>
 + 
 +Od bajtu o offsecie $0C idą kolejno dwubajtowe numery ''bloków'' pliku zapisane w konwencji starszy/młodszy. O tym, czym jest blok, decyduje zapisany w katalogu (zob. wyżej) ''file blocking factor''. Jeśli jest on równy zero, wtedy blok jest równy sektorowi fizycznemu dysku. Jeśli jest równy jeden, blok stanowi osiem fizycznych sektorów dysku, a jeśli 2 - szesnaście takowych.
==Uwagi== ==Uwagi==

Wersja z dnia 19:56, 6 paź 2006

Format dyskietki zaimplementowany w OS/A+ v.4.1. Jako jedyny na ośmiobitowym Atari pozwala na nadawanie plikom długich nazw, ponad standardowe 8+3.

Spis treści

Cechy ogólne

  • Dopuszczalne wielkości sektorów: 128, 256 i 512 bajtów
  • Maksymalna pojemność filesystemu: 65535 sektorów (8, 16 i 32 MB)
  • Maksymalna wielkość pliku: 65536 sektorów (8, 16 i 32 MB)
  • Maksymalna liczba plików na dysku: nieograniczona
  • Struktura katalogowa: jednopoziomowa
  • Maksymalna liczba plików w katalogu: nieograniczona
  • Nazwa pliku: do 30 znaków
  • Metoda linkowania plików: indywidualne mapy plików
  • Metoda alokacji sektorów: mapa bitowa

Struktura ogólna

Obsługiwana jest gęstość pojedyńcza (SD) i podwójna (DD). Jednostką alokacji jest pojedyńczy sektor fizyczny o wielkości 256 lub 512 bajtów, albo (gdy sektor ma 128 bajtów) klaster o wielkości 256 bajtów. W dalszej części tekstu ta jednostka alokacji nazywana będzie "sektorem".

Sektor nr 360 ($168) jest zajęty na VTOC, w sektorach 361-375 ($0169-$0177) znajduje się normalnie katalog dyskietki. W sektorach 1-2 jest program ładujący DOS, a sektory 3-7 są zarezerwowane. Początkowa pojemność dyskietki DD to 697 wolnych sektorów z ogólnej liczby 720.

VTOC

OffsetOpis
$00

Bajt o wartości $02, zapewne numer wersji formatu.

$01-$02

Zapisany w konwencji starszy/młodszy (!) numer pierwszego sektora katalogu.

$03

Bajt zarezerwowany o wartości $00.

$04-$05

Słowo zarezerwowane o wartości $0000.

$06

Bajt zarezerwowany o wartości $00.

$07-$26

32 bajty zarezerwowane o wartości $00.

$27

Liczba wpisów w jednym sektorze mapy plików: 122 dla sektorów 256-bajtowych i 244 dla sektorów 512-bajtowych.

$28-$2F

8 bajtów zarezerwowanych o wartości $00.

$30-$33

4 bajty zarezerwowane o wartości $00.

$34

Bajt zarezerwowany o wartości $00.

$35

Bajt zarezerwowany o wartości $00.

$36-$37

Wielkość sektora w bajtach (młodszy/starszy).

$38-...

Mapa bitowa dyskietki. Każdy bajt opisuje stan ośmiu kolejnych sektorów, przy czym bit ustawiony oznacza sektor wolny, a bit skasowany - sektor zajęty. Bity przypisywane są od lewej do prawej sektorom o rosnących numerach, a więc jeśli bit 7 bajtu opisuje stan sektora numer 'n', to bit 6 odpowiada za sektor 'n+1', bit 5 za 'n+2' itd.

Pierwszy bajt mapy opisuje stan sektorów o numerach od 0 do 7 (pomimo że sektor 0 nie istnieje). Na pustej dyskietce jego wartość to $00, co oznacza, że z grupy sektorów 0-7 wszystkie są zajęte. Ostatni sektor dyskietki DD ma przypisany bit 7 bajtu nr 146 VTOC i jest oznaczony jako wolny.

Katalog

Katalog zajmuje piętnaście sektorów począwszy od sektora, którego numer zapisany jest w drugim i trzecim bajcie VTOC. Normalnie pierwszym sektorem katalogu jest sektor 361 ($0169). Pierwsze 11 bajtów każdego sektora katalogu rezerwuje DOS na swoje potrzeby:

OffsetOpis
$00

Bajt zarezerwowany o wartości $00.

$01-$02

Numer następnego sektora katalogu (starszy/młodszy!).

$03-$0A

Bajty zarezerwowane.

Za tym nagłówkiem sektora katalogu zaczynają się wpisy plików. Pojedyńczy wpis ma 35 bajtów długości, w jednym sektorze 256-bajtowym mieści się ich siedem, a w 512-bajtowym - czternaście. Strukturę wpisu przedstawia tabelka:

OffsetOpis
$00-$01

Numer pierwszego sektora mapy sektorów pliku (starszy/młodszy). Jeśli plik jest skasowany, oba bajty są wyzerowane (uniemożliwia to odzyskanie skasowanego zbioru).

$02

Status (typ) pliku:

  • bit 7 = 1 - plik zabezpieczony
  • bity 4-6 - file blocking factor, z zakresu od 0 do 7.
  • bity 0-3 - typ pliku: na Atari zawsze $00 (inne wartości miały być używane w wersji na Apple II).
$03-$20

Nazwa pliku dosunięta w lewo i dopełniona spacjami do 30 znaków. Wszystkie znaki nazwy (całe 30 bajtów) mają ustawiony bit 7 (inverse video). Spacje, przecinki, znaki EOL i zera nie mogą występować w nazwach plików.

$21-$22

Wielkość pliku w sektorach (młodszy/starszy). Dokładna wielkość pliku ani liczba bajtów w ostatnim sektorze danych pliku nie jest nigdzie zapisana (!).

Mapy plików

Podobnie jak w systemie plików SpartaDOS i DOS XE ciągłość plików zapewniają mapy sektorów. Pierwszy sektor mapy wskazywany jest przez wpis katalogowy pliku. W tym sektorze pierwsze 12 bajtów jest zajęte przez DOS:

OffsetOpis
$00

Bajt zarezerwowany o wartości $00.

$01-$02

Numer następnego sektora mapy (starszy/młodszy!).

$03-$04

Bajty zarezerwowane o wartości $00

$05-$06

Bajty zarezerwowane o wartości $00

$07-$0B

Bajty zarezerwowane o wartości $00

Od bajtu o offsecie $0C idą kolejno dwubajtowe numery bloków pliku zapisane w konwencji starszy/młodszy. O tym, czym jest blok, decyduje zapisany w katalogu (zob. wyżej) file blocking factor. Jeśli jest on równy zero, wtedy blok jest równy sektorowi fizycznemu dysku. Jeśli jest równy jeden, blok stanowi osiem fizycznych sektorów dysku, a jeśli 2 - szesnaście takowych.

Uwagi

Odrębność metod linkowania plików i katalogów może wskazywać na pokrewieństwo z późniejszym i doskonalszym filesystemem DOS-u XE.

Zobacz też

Personal tools