ATR: Różnice pomiędzy wersjami
→Narzędzia: linki do franny i xedisk |
|||
| (Nie pokazano 20 wersji utworzonych przez 5 użytkowników) | |||
| Linia 1: | Linia 1: | ||
Obraz dyskietki 8-bitowego Atari używany w emulatorach, [[APE]] itp. opracowany przez [[Nick Kennedy|Nicka Kennedy]]'ego. | Obraz dyskietki 8-bitowego Atari używany w emulatorach, [[APE]] itp. opracowany przez [[Nick Kennedy|Nicka Kennedy]]'ego. | ||
Istnieje też odmiana '''ATZ''', jest to obraz dyskietki w formacie ATR skompresowany przy pomocy programu gzip. Format ATZ (i ATR też) jest obsługiwany przez emulatory [[Atari800]] oraz [[Atari800Win PLus]]. | Istnieje też odmiana '''ATZ''', jest to obraz dyskietki w formacie ATR skompresowany przy pomocy programu gzip. Format ATZ (i ATR też) jest obsługiwany przez emulatory [[Atari800]], [[Altirra]] oraz [[Atari800Win PLus]]. | ||
== Nagłówek == | == Nagłówek == | ||
| Linia 7: | Linia 7: | ||
16 bajtów zgodnie z poniższą tabelką. Istnieją dwie wersje, pierwsze siedem bajtów ma takie samo znaczenie w obu: | 16 bajtów zgodnie z poniższą tabelką. Istnieją dwie wersje, pierwsze siedem bajtów ma takie samo znaczenie w obu: | ||
=== Nagłówek SIO2PC === | === Nagłówek [[SIO2PC]] === | ||
<table BORDER="1" cellpadding="5" WIDTH="100%" cellspacing="0"> | <table BORDER="1" cellpadding="5" WIDTH="100%" cellspacing="0"> | ||
| Linia 156: | Linia 156: | ||
</td> | </td> | ||
<td> | <td> | ||
Rozmiar obrazu (bez nagłówka), liczony w | Rozmiar obrazu (bez nagłówka), liczony w paragrafach: innymi słowy rozmiar w bajtach podzielić przez 16. | ||
</td> | </td> | ||
</tr> | </tr> | ||
| Linia 227: | Linia 227: | ||
</tr> | </tr> | ||
</table> | </table> | ||
Najczęściej się spotyka pliki z nagłówkiem podstawowym, w którym w bajtach 7-15 nagłówka są same zera. Pozostałe na ogół mają nagłówek w formacie APE z ustawionym znacznikiem zabezpieczenia przed zapisem. Plików w pierwszym z wymienionych formatów w zasadzie nie spotyka się. | |||
== Treść == | == Treść == | ||
Po nagłówku występują po kolei sektory danych. | Po nagłówku występują po kolei sektory danych. | ||
=== Sektor 128 bajtów === | |||
Obrazy dla rozmiaru sektora równego 128 bajtów ([[Formaty dyskietek#SD|SD]] i [[Formaty dyskietek#ED|ED]]) mają wszystkie sektory tej samej wielkości. Obliczenia rozmiaru pliku ATR dokonujemy wg następującego wzoru: | |||
rozmiar_pliku_atr = (liczba_sektorów * 128)+16 | |||
Dane konkretnego sektora będą się znajdować na pozycji obliczonej wg następującego wzoru: | |||
offset = ((nr_sektora - 1) * 128) + 16 | |||
=== Sektor 256 bajtów === | |||
W tym formacie panuje zamieszanie, którego praprzyczyną jest próba zaoszczędzenia 384 bajtów, jakie marnują się w obszarze odczytu wstępnego dyskietek [[DD]]. | |||
Dla wielkości sektora równej 256 bajtów występują dwa sposoby zapisania pierwszych trzech sektorów obrazu dysku: | Dla wielkości sektora równej 256 bajtów występują dwa sposoby zapisania pierwszych trzech sektorów obrazu dysku: | ||
# jako obszaru 768 bajtów, w którym "rzeczywiste" dane sektorów zajmują pierwsze 384 bajty, a druga jego połówka jest niewykorzystana (ale jest uwzględniona w wykazanej nagłówkiem wielkości obrazu liczonej w paragrafach - dla obrazu 180k będzie ta wielkość wynosiła $2D00). | |||
# jako trzech porcji danych po 128 bajtów (w tym wypadku wielkość obrazu zapisana w nagłówku będzie o 24 paragrafy mniejsza niż powyżej). | |||
Ten drugi format uchodzi za prawidłowy, w tej sytuacji sektor nr 4 (i każdy dalszy) zapisywany jest w pliku o 384 bajty wcześniej niż wynikałoby to z prostego obliczenia wzoru: | |||
((nr_sektora-1) * wielkość_sektora) + wielkość_nagłówka | |||
Obliczenia rozmiaru pliku ATR dokonujemy wg następującego wzoru: | |||
rozmiar_pliku_atr = ((liczba_sektorów - 3) * 256) + 384 + 16 | |||
Dane konkretnego sektora będą się znajdować na pozycji obliczonej wg następujących wzorów: | |||
** dla sektorów 1-3: | |||
offset = ((nr_sektora - 1) * 128) + 16 | |||
** dla pozostałych sektorów: | |||
offset = ((nr_sektora - 4) * 256) + 384 + 16 | |||
Program może łatwo rozróżnić te dwa typy po nagłówku: jeśli wielkość sektora wynosi $0100, trzeba sprawdzić, czy najmłodszy półbajt liczby paragrafów jest równy 0 (typ 1) czy 8 (typ 2). | |||
Istnieje jeszcze trzeci rodzaj plików ATR: mają one rozmiar pliku i wielkość obrazu jak w przypadku typu 1, lecz dane wewnątrz rozmieszczone są jak w typie 2. Ponieważ nie ma dobrej metody na wykrycie tej sytuacji, mając taki plik najlepiej jest go poprawić odejmując 24 od liczby paragrafów zapisanej w nagłówku. | |||
=== Sektor 512 bajtów === | |||
Obrazy dla rozmiaru sektora równego 512 bajtów ([[Formaty_dyskietek#DD_512|DD 512]]) mają, podobnie jak te z sektorami 128-bajtowymi, wszystkie sektory tej samej wielkości - nie ma wyróżnionego obszaru odczytu wstępnego (zajmuje on zresztą tylko jeden sektor, pierwszy). Obliczenia rozmiaru pliku ATR dokonujemy wg następującego wzoru: | |||
rozmiar_pliku_atr = (liczba_sektorów * 512) + 16 | |||
Dane konkretnego sektora będą się znajdować na pozycji obliczonej wg następującego wzoru: | |||
offset = ((nr_sektora - 1) * 512) + 16 | |||
== Weryfikacja poprawności == | == Weryfikacja poprawności == | ||
Od wersji 1.10 w APE wprowadzono mechanizm określania poprawności obrazu ATR (może on służyć np. do weryfikowania błędów powstałych przy ściąganiu obrazu z sieci). Mechanizm ten bazuje na algorytmie obliczania 32-bitowego [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC] stosowanego np. | Od wersji 1.10 w [[APE]] wprowadzono mechanizm określania poprawności obrazu ATR (może on służyć np. do weryfikowania błędów powstałych przy ściąganiu obrazu z sieci). Mechanizm ten bazuje na algorytmie obliczania 32-bitowego [http://en.wikipedia.org/wiki/Cyclic_redundancy_check CRC] stosowanego np. w [http://pl.wikipedia.org/wiki/PKZIP PKZIP]. | ||
Jeśli obraz jest "opieczętowany" (bit 1 btFlags jest ustawiony) wtedy dla określenia poprawności obrazu należy obliczyć 32-bitową wartość CRC z każdego jego bajtu łącznie z nagłówkiem (zakłada się, że bajty 7..14 są wyzerowane). Jeśli obliczony kod jest identyczny z wartością zapisaną w polu dwCRC można założyć, że obraz jest nieuszkodzony. | Jeśli obraz jest "opieczętowany" (bit 1 btFlags jest ustawiony) wtedy dla określenia poprawności obrazu należy obliczyć 32-bitową wartość CRC z każdego jego bajtu łącznie z nagłówkiem (zakłada się, że bajty o offsetach 7..14 są wyzerowane). Jeśli obliczony kod jest identyczny z wartością zapisaną w polu dwCRC można założyć, że obraz jest nieuszkodzony. | ||
CRC32 dany jest wielomianem: | CRC32 dany jest wielomianem: | ||
x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1 | |||
czyli $04C11DB7 w notacji "najpierw MSB". | czyli $04C11DB7 w notacji "najpierw MSB". | ||
== Zabezpieczenia == | |||
W wersji 4.05 [[SIO2PC]] wprowadzono możliwość symulowania zabezpieczeń dla sektorów na dysku. | |||
Jeśli bit 4 btFlags jest ustawiony, wtedy począwszy od sektora podanego w wBad występują sektory z zabezpieczeniami. | |||
Sektor zamiast danych zawiera wtedy informacje o użytych zabezpieczeniach: | |||
<table BORDER="1" cellpadding="5" WIDTH="100%" cellspacing="0"> | |||
<tr> | |||
<th>Offset</th> | |||
<TH>Typ</TH> | |||
<TH>Nazwa</TH> | |||
<TH>Opis</TH> | |||
</tr> | |||
<tr> | |||
<td>$00</td> | |||
<td width="10%" align="center"> | |||
DWORD | |||
</td> | |||
<td width="10%" align="center"> | |||
dwSign | |||
</td> | |||
<td> | |||
Kolejno wartości: $C2, $1C, $3D i $1E (sygnatura sektora z zabezpieczeniami). | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>$04</td> | |||
<td width="10%" align="center"> | |||
BYTE[4] | |||
</td> | |||
<td width="10%" align="center"> | |||
btaErrStatus | |||
</td> | |||
<td> | |||
4 bajty zwracane przez komendę STATUS ("S" = $53) [[SIO]] (podane w odwrotnej kolejności), po próbie odczytu <b>BŁĘDNEGO</b> sektora. | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>$08</td> | |||
<td width="10%" align="center"> | |||
BYTE | |||
</td> | |||
<td width="10%" align="center"> | |||
btCmdResp | |||
</td> | |||
<td> | |||
Status zwracany po otrzymaniu komendy ("A" lub "N").[1] | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>$09</td> | |||
<td width="10%" align="center"> | |||
BYTE | |||
</td> | |||
<td width="10%" align="center"> | |||
btDataResp | |||
</td> | |||
<td> | |||
Status zwracany po otrzymaniu bloku danych ("C" lub "A"/"E").[1] | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>$0A</td> | |||
<td width="10%" align="center"> | |||
BYTE | |||
</td> | |||
<td width="10%" align="center"> | |||
btChksumInfo | |||
</td> | |||
<td> | |||
Informacja o sumie kontrolnej ("G" - poprawna, lub "B" - błędna).[1] | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>$0B</td> | |||
<td width="10%" align="center"> | |||
BYTE | |||
</td> | |||
<td width="10%" align="center"> | |||
btResDelay | |||
</td> | |||
<td> | |||
Czas, po którym ma zostać wysłana odpowiedź na odczyt ("R") bądź zapis ("P"/"W") <b>POPRAWNEGO</b> sektora.[2] | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>$0C</td> | |||
<td width="10%" align="center"> | |||
BYTE | |||
</td> | |||
<td width="10%" align="center"> | |||
btErrResDelay | |||
</td> | |||
<td> | |||
Czas, po którym ma zostać wysłana odpowiedź na odczyt ("R") <b>BŁĘDNEGO</b> sektora.[2] | |||
</td> | |||
</tr> | |||
<tr> | |||
<td>$0D</td> | |||
<td width="10%" align="center"> | |||
BYTE[4] | |||
</td> | |||
<td width="10%" align="center"> | |||
btaStatus | |||
</td> | |||
<td> | |||
4 bajty zwracane przez komendę STATUS ("S" = $53) SIO (podane w odwrotnej kolejności), po próbie odczytu <b>POPRAWNEGO</b> sektora. | |||
</td> | |||
</tr> | |||
</table> | |||
# "_" oznacza, że zawartość bajtu nie ma znaczenia, "T" oznacza brak odpowiedzi (TIMEOUT u odbiorcy). | |||
# Czas mierzony jest w jednostkach po 55 ms (ang. "jiffy" - odwrotność 18,2 Hz). | |||
== Narzędzia == | == Narzędzia == | ||
* Do przygotowania pliku ATR na komputerze PC można użyć programu [http://serious-dial.atari.pl/makeATR/ makeATR] autorstwa [[Soudi]]ego. | * Do przygotowania pliku ATR na komputerze PC można użyć programu [http://serious-dial.atari.pl/makeATR/ makeATR] autorstwa [[Soudi]]ego. | ||
* Wtyczka dla programu Total Commander umożliwiająca operowanie na plikach ATR autorstwa [[Pajero]] [http://madteam.atari8.info/uzytki/atrwcx.7z Total Commander ATR Plugin] | * Wtyczka dla programu Total Commander umożliwiająca operowanie na plikach ATR autorstwa [[Pajero]] [http://madteam.atari8.info/uzytki/atrwcx.7z Total Commander ATR Plugin]. | ||
* [[SIO2BSD#Inne|SIO2BSD]] umożliwia tworzenie obrazów ATR. | |||
* [[IDE Plus]] pozwala na dostęp do zawartości pliku ATR z poziomu [[SpartaDOS X]]. | |||
* [[Franny]] z pakietu [https://sourceforge.net/projects/atari8/ Atari8 tools] autorstwa [[Bober]]a pozwala na manipulacje plikami ATR w obydwu wariantach. | |||
* [https://github.com/epi/xedisk xedisk] autorstwa [[Epi]]ego umożliwia manipulacje plikami ATR. | |||
== Zobacz też == | == Zobacz też == | ||
* [http://pages.suddenlink.net/wa5bdu/readme.txt Dokumentacja Nicka Kennedy'ego] | * [http://pages.suddenlink.net/wa5bdu/readme.txt Dokumentacja Nicka Kennedy'ego] | ||
* [http://www.atarimax.com/ape/docs/DiskImageFAQ/#Atr_Format Nagłówek ATR w APE] | * [http://www.atarimax.com/ape/docs/DiskImageFAQ/#Atr_Format Nagłówek ATR w APE] | ||
* [https://atarionline.pl/v01/index.php?subaction=showfull&id=1323287642&archive=&start_from=0&ucat=7&ct=poczatki Poradnik opisujący w jaki sposób przegrać obraz ATR na dyskietkę] | |||
{{stub}} | {{stub}} | ||
[[Kategoria:Emulacja]] | [[Kategoria:Emulacja]] | ||
[[Kategoria:Formaty plików]] | [[Kategoria:Formaty plików]] | ||
[[Kategoria:Obrazy dyskowe 8bit]] | |||
Aktualna wersja z 16 sty 2021, 12:25
Obraz dyskietki 8-bitowego Atari używany w emulatorach, APE itp. opracowany przez Nicka Kennedy'ego.
Istnieje też odmiana ATZ, jest to obraz dyskietki w formacie ATR skompresowany przy pomocy programu gzip. Format ATZ (i ATR też) jest obsługiwany przez emulatory Atari800, Altirra oraz Atari800Win PLus.
Nagłówek
16 bajtów zgodnie z poniższą tabelką. Istnieją dwie wersje, pierwsze siedem bajtów ma takie samo znaczenie w obu:
Nagłówek SIO2PC
| Offset | Typ | Nazwa | Opis |
|---|---|---|---|
| $00 |
WORD |
wMagic |
Kolejno wartości: $96 i $02 ($0296, suma 'NICKATARI') |
| $02 |
WORD |
wPars |
Rozmiar obrazu (bez nagłówka), liczony w paragrafach: innymi słowy rozmiar w bajtach podzielić przez 16. |
| $04 |
WORD |
wSecSize |
Rozmiar sektora w bajtach: $80, $0100 lub $0200. |
| $06 |
WORD |
wParsHigh |
Najstarsze słowo rozmiaru w paragrafach (wprowadzono w REV 3.00). |
| $08 |
BYTE |
btFlags |
|
| $09 |
WORD |
wBad |
Numer pierwszego sektora z zabezpieczeniami (jeśli bit 4 btFlags jest ustawiony). |
| $0B |
DWORD |
dwUnused |
Cztery bajty nieużywane, równe $00. |
| $0F |
BYTE |
btUnused |
Bajt nieużywany, równy $00. |
Nagłówek APE
| Offset | Typ | Nazwa | Opis |
|---|---|---|---|
| $00 |
WORD |
wMagic |
Kolejno wartości: $96 i $02 ($0296, suma 'NICKATARI') |
| $02 |
WORD |
wPars |
Rozmiar obrazu (bez nagłówka), liczony w paragrafach: innymi słowy rozmiar w bajtach podzielić przez 16. |
| $04 |
WORD |
wSecSize |
Rozmiar sektora w bajtach: $80, $0100 lub $0200. |
| $06 |
BYTE |
btParsHigh |
Najstarszy bajt rozmiaru w paragrafach. |
| $07 |
DWORD |
dwCRC |
32-bit CRC pliku. Wartość ta jest ważna jeśli bit 1 bajtu nr 15 (btFlags) jest ustawiony. Występuje od wersji APE 1.10. |
| $0B |
DWORD |
dwUnused |
Niewykorzystane. |
| $0F |
BYTE |
btFlags |
Pozostałe bity są niewykorzystane i powinny być równe zero. Występuje od wersji APE 1.10. |
Najczęściej się spotyka pliki z nagłówkiem podstawowym, w którym w bajtach 7-15 nagłówka są same zera. Pozostałe na ogół mają nagłówek w formacie APE z ustawionym znacznikiem zabezpieczenia przed zapisem. Plików w pierwszym z wymienionych formatów w zasadzie nie spotyka się.
Treść
Po nagłówku występują po kolei sektory danych.
Sektor 128 bajtów
Obrazy dla rozmiaru sektora równego 128 bajtów (SD i ED) mają wszystkie sektory tej samej wielkości. Obliczenia rozmiaru pliku ATR dokonujemy wg następującego wzoru:
rozmiar_pliku_atr = (liczba_sektorów * 128)+16
Dane konkretnego sektora będą się znajdować na pozycji obliczonej wg następującego wzoru:
offset = ((nr_sektora - 1) * 128) + 16
Sektor 256 bajtów
W tym formacie panuje zamieszanie, którego praprzyczyną jest próba zaoszczędzenia 384 bajtów, jakie marnują się w obszarze odczytu wstępnego dyskietek DD.
Dla wielkości sektora równej 256 bajtów występują dwa sposoby zapisania pierwszych trzech sektorów obrazu dysku:
- jako obszaru 768 bajtów, w którym "rzeczywiste" dane sektorów zajmują pierwsze 384 bajty, a druga jego połówka jest niewykorzystana (ale jest uwzględniona w wykazanej nagłówkiem wielkości obrazu liczonej w paragrafach - dla obrazu 180k będzie ta wielkość wynosiła $2D00).
- jako trzech porcji danych po 128 bajtów (w tym wypadku wielkość obrazu zapisana w nagłówku będzie o 24 paragrafy mniejsza niż powyżej).
Ten drugi format uchodzi za prawidłowy, w tej sytuacji sektor nr 4 (i każdy dalszy) zapisywany jest w pliku o 384 bajty wcześniej niż wynikałoby to z prostego obliczenia wzoru:
((nr_sektora-1) * wielkość_sektora) + wielkość_nagłówka
Obliczenia rozmiaru pliku ATR dokonujemy wg następującego wzoru:
rozmiar_pliku_atr = ((liczba_sektorów - 3) * 256) + 384 + 16
Dane konkretnego sektora będą się znajdować na pozycji obliczonej wg następujących wzorów:
- dla sektorów 1-3:
offset = ((nr_sektora - 1) * 128) + 16
- dla pozostałych sektorów:
offset = ((nr_sektora - 4) * 256) + 384 + 16
Program może łatwo rozróżnić te dwa typy po nagłówku: jeśli wielkość sektora wynosi $0100, trzeba sprawdzić, czy najmłodszy półbajt liczby paragrafów jest równy 0 (typ 1) czy 8 (typ 2).
Istnieje jeszcze trzeci rodzaj plików ATR: mają one rozmiar pliku i wielkość obrazu jak w przypadku typu 1, lecz dane wewnątrz rozmieszczone są jak w typie 2. Ponieważ nie ma dobrej metody na wykrycie tej sytuacji, mając taki plik najlepiej jest go poprawić odejmując 24 od liczby paragrafów zapisanej w nagłówku.
Sektor 512 bajtów
Obrazy dla rozmiaru sektora równego 512 bajtów (DD 512) mają, podobnie jak te z sektorami 128-bajtowymi, wszystkie sektory tej samej wielkości - nie ma wyróżnionego obszaru odczytu wstępnego (zajmuje on zresztą tylko jeden sektor, pierwszy). Obliczenia rozmiaru pliku ATR dokonujemy wg następującego wzoru:
rozmiar_pliku_atr = (liczba_sektorów * 512) + 16
Dane konkretnego sektora będą się znajdować na pozycji obliczonej wg następującego wzoru:
offset = ((nr_sektora - 1) * 512) + 16
Weryfikacja poprawności
Od wersji 1.10 w APE wprowadzono mechanizm określania poprawności obrazu ATR (może on służyć np. do weryfikowania błędów powstałych przy ściąganiu obrazu z sieci). Mechanizm ten bazuje na algorytmie obliczania 32-bitowego CRC stosowanego np. w PKZIP.
Jeśli obraz jest "opieczętowany" (bit 1 btFlags jest ustawiony) wtedy dla określenia poprawności obrazu należy obliczyć 32-bitową wartość CRC z każdego jego bajtu łącznie z nagłówkiem (zakłada się, że bajty o offsetach 7..14 są wyzerowane). Jeśli obliczony kod jest identyczny z wartością zapisaną w polu dwCRC można założyć, że obraz jest nieuszkodzony.
CRC32 dany jest wielomianem:
x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x1 + 1
czyli $04C11DB7 w notacji "najpierw MSB".
Zabezpieczenia
W wersji 4.05 SIO2PC wprowadzono możliwość symulowania zabezpieczeń dla sektorów na dysku.
Jeśli bit 4 btFlags jest ustawiony, wtedy począwszy od sektora podanego w wBad występują sektory z zabezpieczeniami.
Sektor zamiast danych zawiera wtedy informacje o użytych zabezpieczeniach:
| Offset | Typ | Nazwa | Opis |
|---|---|---|---|
| $00 |
DWORD |
dwSign |
Kolejno wartości: $C2, $1C, $3D i $1E (sygnatura sektora z zabezpieczeniami). |
| $04 |
BYTE[4] |
btaErrStatus |
4 bajty zwracane przez komendę STATUS ("S" = $53) SIO (podane w odwrotnej kolejności), po próbie odczytu BŁĘDNEGO sektora. |
| $08 |
BYTE |
btCmdResp |
Status zwracany po otrzymaniu komendy ("A" lub "N").[1] |
| $09 |
BYTE |
btDataResp |
Status zwracany po otrzymaniu bloku danych ("C" lub "A"/"E").[1] |
| $0A |
BYTE |
btChksumInfo |
Informacja o sumie kontrolnej ("G" - poprawna, lub "B" - błędna).[1] |
| $0B |
BYTE |
btResDelay |
Czas, po którym ma zostać wysłana odpowiedź na odczyt ("R") bądź zapis ("P"/"W") POPRAWNEGO sektora.[2] |
| $0C |
BYTE |
btErrResDelay |
Czas, po którym ma zostać wysłana odpowiedź na odczyt ("R") BŁĘDNEGO sektora.[2] |
| $0D |
BYTE[4] |
btaStatus |
4 bajty zwracane przez komendę STATUS ("S" = $53) SIO (podane w odwrotnej kolejności), po próbie odczytu POPRAWNEGO sektora. |
- "_" oznacza, że zawartość bajtu nie ma znaczenia, "T" oznacza brak odpowiedzi (TIMEOUT u odbiorcy).
- Czas mierzony jest w jednostkach po 55 ms (ang. "jiffy" - odwrotność 18,2 Hz).
Narzędzia
- Do przygotowania pliku ATR na komputerze PC można użyć programu makeATR autorstwa Soudiego.
- Wtyczka dla programu Total Commander umożliwiająca operowanie na plikach ATR autorstwa Pajero Total Commander ATR Plugin.
- SIO2BSD umożliwia tworzenie obrazów ATR.
- IDE Plus pozwala na dostęp do zawartości pliku ATR z poziomu SpartaDOS X.
- Franny z pakietu Atari8 tools autorstwa Bobera pozwala na manipulacje plikami ATR w obydwu wariantach.
- xedisk autorstwa Epiego umożliwia manipulacje plikami ATR.
Zobacz też
- Dokumentacja Nicka Kennedy'ego
- Nagłówek ATR w APE
- Poradnik opisujący w jaki sposób przegrać obraz ATR na dyskietkę
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.