1. Wstęp i Przegląd Aplikacji
ATRaction to zaawansowana aplikacja internetowa (Single Page Application) przeznaczona do tworzenia, odczytu, modyfikacji oraz analizy obrazów dyskietek elastycznych (formaty .ATR i .XFD) dla 8-bitowych komputerów Atari (seria 400/800, XL, XE). Całe przetwarzanie odbywa się lokalnie w przeglądarce za pomocą buforów binarnych Uint8Array, gwarantując prywatność i natychmiastowe działanie.
- Obsługiwane systemy plików: Atari DOS 2.0S/2.0D, DOS 2.5, DOS II+/D, MyDOS 4.5x, SpartaDOS (SDFS), LiteDOS-SE oraz CP/M 2.2 (Indus GT).
- Gęstości i formaty: SD (90 KB), MD/ED (130 KB), DD (180 KB), QD (368 KB), DS/QD (720 KB), geometria niestandardowa (dowolna liczba sektorów, sektory 128/256/512 B) oraz surowe obrazy XFD.
- Zarządzanie plikami: Dodawanie, usuwanie, zmiana nazwy (ATASCII 8.3 / CP/M), blokowanie (Lock/Unlock), atrybuty SDFS (A/H/P) oraz eksport na PC. Drag & Drop plików
.ATR oraz .XFD.
- Podkatalogi: Tworzenie i szybka nawigacja po drzewie podkatalogów (MyDOS, SpartaDOS).
- Tryb Read-Only: Automatyczna walidacja alokacji chroniąca uszkodzone obrazy przed nadpisaniem.
2. Obsługiwane Systemy Plików
| System |
Dopuszczalna geometria |
Podkatalogi |
Nowy dysk |
| Atari DOS 2.0S |
wyłącznie 720×128 (SD) |
nie |
tak |
| Atari DOS 2.5 |
wyłącznie 720×128 (SD) lub 1040×128 (MD) |
nie |
tak |
| DOS II+/D |
720×128, 720×256, 1040×128 |
nie |
tak |
| MyDOS 4.5x |
od 720 sektorów, 128 lub 256 B |
tak (64 pozycje / katalog) |
tak |
| SpartaDOS (SDFS) |
od 16 sektorów, 128 / 256 / 512 B |
tak (bez limitu pozycji) |
tak |
| LiteDOS-SE |
dyski z klastrami 1–64 sektorów |
nie |
nie – tylko odczyt, zapis i formatowanie istniejących |
| CP/M 2.2 (Indus GT) |
64–1068 sektorów, wyłącznie 256 B |
nie |
tak |
Atari DOS 2.0S był dystrybuowany wyłącznie na dyskietkach SD, a DOS 2.5 dodatkowo na MD (1040 sektorów, 130 KB) – nigdy na DD, QD ani 720K. Okno tworzenia dysku wymusza te ograniczenia, ukrywając niedostępne gęstości w rozwijanej liście. Sektory startowe oraz pliki DOS.SYS/DUP.SYS instalowane przy tworzeniu nowego dysku są bajt w bajt identyczne z oryginalnymi obrazami Atari DOS – dla DOS 2.5 wariant MD ma inny plik DOS.SYS niż wariant SD (różnica w osadzonej tabeli geometrii dysku), dlatego aplikacja instaluje odpowiedni zestaw zależnie od wybranej gęstości.
LiteDOS-SE rozpoznawany jest w dwóch odmianach: klasycznej (bity 7–6 bajtu ID sektora 360 równe 01, bitmapa od offsetu $0A) oraz nowszej 2.x (bity 10, sygnatura tekstowa LiteDOS(c)MrA, bitmapa 512-bitowa od $20). Miejsce zajmowane przez samo jądro DOS-u – w LiteDOS nie ma pliku DOS.SYS – jest rozpoznawane jako obszar systemowy i nie jest zgłaszane jako zagubione sektory.
CP/M 2.2 dla stacji Indus GT przechowuje wszystkie bajty w postaci zanegowanej (XOR $FF). Katalog (64 pozycje) zajmuje sektory 37–44, dane są przydzielane blokami po 1 KB. Format zapisuje jedynie liczbę 128-bajtowych rekordów, więc odczytany rozmiar pliku jest zaokrąglany w górę do wielokrotności 128 bajtów.
3. Geometrie Dysków
| Symbol |
Nazwa Gęstości |
Sektory |
Rozmiar Sektora |
Pojemność |
| SD |
Single Density |
720 |
128 B |
90 KB |
| MD / ED |
Medium / Enhanced Density |
1040 |
128 B |
130 KB |
| DD |
Double Density (Atari DOS / CP/M) |
720 |
256 B |
180 KB |
| QD |
Quad Density |
1440 |
256 B |
368 KB |
| 720K |
Double Sided / Quad Density |
2880 |
256 B |
720 KB |
| Niestandardowy |
Własna geometria |
1–65535 |
128 / 256 / 512 B |
do 32 MB |
Format Surowy XFD: Obrazy .XFD to surowe zrzuty sektorów bez 16-bajtowego nagłówka ATR, w których wszystkie sektory mają jednakowy rozmiar. W kontenerze .ATR obowiązuje odwrotna konwencja: przy sektorach większych niż 128 B kilka pierwszych (startowych) zapisywanych jest jako 128-bajtowe.
Sektory startowe: Nagłówek ATR nie ma pola na ich liczbę – przyjmuje się, że obrazy o sektorach do 256 B mają trzy 128-bajtowe sektory startowe. Ustawienie innej wartości w geometrii niestandardowej wpływa na tworzony plik, ale przy ponownym wczytaniu obrazu o sektorach 256 B zostaną odczytane 3. Przy sektorach 128 B pole nie zmienia układu pliku w ogóle, przy 512 B krótkich sektorów startowych nie ma wcale.
4. Instrukcje Krok po Kroku (Tutoriale)
Tworzenie Nowego Obrazu ATR / XFD
- Kliknij przycisk Nowy Dysk na górnym pasku nawigacyjnym.
- Wybierz system plików (Atari DOS 2.0S, Atari DOS 2.5, DOS II+/D, MyDOS 4.5x, SpartaDOS, CP/M 2.2 lub Brak – dysk niesformatowany).
- Wskaż gęstość dysku. Lista dostosowuje się do wybranego systemu – np. Atari DOS 2.0S oferuje wyłącznie SD, Atari DOS 2.5 wyłącznie SD i MD, a DOS II+/D nie oferuje QD ani 720 KB.
- Zaznacz opcję instalacji plików systemowych DOS (dostępna dla obu wersji Atari DOS i dla MyDOS) i zatwierdź przyciskiem Utwórz Dysk.
Geometria Niestandardowa
Wybranie gęstości Niestandardowy odsłania trzy pola:
- Liczba sektorów – od liczby sektorów startowych do 65535.
- Sektory startowe – 0–255. Pole jest wyłączane po wybraniu sektorów 512-bajtowych, które krótkich sektorów startowych nie mają.
- Rozmiar sektora – 128, 256 lub 512 bajtów. Sektory 512 B obsługuje wyłącznie SpartaDOS.
Pod polami wyświetlany jest wynikowy rozmiar obrazu. Jeśli wybrany system plików nie obsługuje podanej geometrii, pojawia się czerwony komunikat z przyczyną, a przycisk Utwórz Dysk zostaje zablokowany – dopuszczalne kombinacje zebrano w tabeli w punkcie 2.
Uwaga: dla geometrii niestandardowej instalacja plików systemowych jest zawsze wyłączona. Gotowe pliki DOS.SYS i DUP.SYS istnieją wyłącznie w wariantach dla gęstości standardowych i na dysku o innej geometrii nie byłyby poprawnie ładowane.
Wgrywanie, Modyfikacja i Usuwanie Plików
- Dodawanie pliku z PC: Kliknij Dodaj Plik i wybierz plik z dysku komputera (np.
.XEX, .COM, .TXT). Nazwa zostanie automatycznie przekonwertowana do standardu 8.3 ATASCII.
- Zablokowanie pliku: Zaznacz plik na liście i kliknij Zablokuj/Odblokuj. Plik zyska status zablokowanego przed skasowaniem.
- Atrybuty SpartaDOS: Dla dysków SDFS przycisk Edytuj Atrybuty pozwala ustawić znaczniki P (Protected), H (Hidden) i A (Archive). Aktywne atrybuty widoczne są jako plakietki na liście plików.
- Zmiana nazwy: Wybierz plik, kliknij Zmień Nazwę i podaj nową nazwę zgodną z formatem 8.3.
- Usuwanie: Zaznacz plik lub pusty podkatalog i kliknij Usuń.
- Eksport: Przycisk Wypakuj zapisuje zaznaczony plik na dysk komputera, a Zapisz Dysk pobiera cały zmodyfikowany obraz.
Praca z Podkatalogami (MyDOS / SpartaDOS)
- Na dyskach sformatowanych w MyDOS lub SpartaDOS kliknij Nowy Katalog i podaj nazwę.
- Aby wejść do katalogu, kliknij dwukrotnie na wiersz w tabeli lub skorzystaj z Drzewa Katalogów w panelu bocznym.
- Powrót do katalogu głównego następuje po kliknięciu
[ROOT] w drzewie katalogów.
Podgląd Tekstowy, Hex Viewer oraz ATASCII
- Wybranie pliku i kliknięcie Podgląd / Hex otwiera okno podglądu z zakładkami Tekst oraz Hex.
- Przycisk fontu pozwala na przełączenie widoku między domyślnym krojem PC a oryginalnym fontem Atari 8-Bit (glify ATASCII, symbole graficzne i znaki ramek).
- Przycisk Katalog ATASCII prezentuje całą zawartość katalogu w 40-kolumnowym formacie ekranu Atari.
5. Walidacja Alokacji i Tryb Read-Only
Po wczytaniu obrazu aplikacja przechodzi całe drzewo katalogów i porównuje sektory zajmowane przez pliki z mapą alokacji dysku. Reakcja zależy od rodzaju niezgodności –:
- Tryb tylko do odczytu – gdy sektor używany przez plik jest w mapie oznaczony jako wolny, gdy licznik wolnych sektorów nie zgadza się z mapą, gdy ten sam sektor należy do dwóch plików albo gdy wpis katalogu wskazuje poza obszar dysku. Pliki można przeglądać i pobierać, ale wszystkie operacje zapisu są zablokowane, żeby nie pogłębić uszkodzenia.
- Ostrzeżenie – gdy w mapie są tylko zagubione sektory, czyli oznaczone jako zajęte, choć żaden plik ich nie używa. Taki obraz pozostaje zapisywalny; marnuje jedynie miejsce.
Każdy system plików sprawdzany jest według własnych reguł: MyDOS i Atari DOS przez bitmapę VTOC w sektorze 360 (z rozszerzeniami dla dysków powyżej 943 sektorów i drugą mapą DOS 2.5 w sektorze 1024), SpartaDOS przez mapę bitową i licznik w bloku startowym, LiteDOS przez mapę klastrów, a CP/M przez kontrolę bloków przydzielonych w katalogu. Komunikat z przyczyną pojawia się na pasku statusu i w panelu informacji o dysku.
6. Kodowanie Znaków ATASCII vs PC (UTF-8)
Komputery Atari 8-bit stosują własny standard kodowania ATASCII. Znak końca linii (EOL) to kod 0x9B (155), który ATRaction automatycznie konwertuje na znak \n. Bajty o wartościach 0x80–0xFF odpowiadają znakom inwertowanym (Inverse Video), natomiast kody 0x00–0x1F oraz 0x60–0x7F reprezentują specjalne glify graficzne Atari.
7. Podziękowania (Credits)
Aplikacja ATRaction powstała przy wsparciu wiedzy i zasobów udostępnionych przez:
-
Mono – projekt atari8fs
(http://mono.i-demo.pl/)
Implementacje systemów plików Atari DOS 2, DOS 2.5, DOS II+/D i MyDOS 4.5x czerpią z analizy formatów ATR i VTOC udokumentowanej w projekcie atari8fs.
-
Avery Lee – emulator Altirra
(https://www.virtualdub.org/altirra.html)
Kod źródłowy biblioteki ATIO posłużył jako wzorzec przy odtworzeniu rozszerzonego VTOC MyDOS, mapy bitowej SDFS, systemu CP/M 2.2 dla Indus GT, drugiej mapy alokacji DOS 2.5, zasad rozpoznawania formatów oraz mechanizmu walidacji z trybem Read-Only. Okno tworzenia dysku o geometrii niestandardowej odwzorowuje opcję Custom z altirrowego Create New Disk.
-
Mr Atari – system LiteDOS-SE
(http://www.mr-atari.com/)
Obsługa LiteDOS – klastrowa mapa alokacji, geometria obszaru VTOC i katalogu oraz format wpisów – opiera się na sekcji technicznej instrukcji użytkownika LiteDOS-SE.