SpartaDOS
From Atariki
Najbardziej zaawansowany DOS dla Atari XL/XE. Powstał w amerykańskiej firmie ICD, Inc. w połowie lat osiemdziesiątych. Znane wersje:
- SpartaDOS 1.1 - komercyjny DOS dla komputerów serii 400/800, posługujący się też nieco innym od reszty wersji formatem dyskietek; wydany przez ICD.
- SpartaDOS 2.3 - komercyjny DOS dla komputerów serii XL/XE, wydany przez ICD.
- SpartaDOS 3.2 - komercyjny DOS dla komputerów serii XL/XE, wydany przez ICD.
- SpartaDOS 3.3 - wydana przez FTe jako shareware nieco zmodyfikowana wersja SpartaDOS 3.2
- SpartaDOS X 4.17-4.21 - opracowana zupełnie od nowa wersja SpartaDOS, wydana przez ICD na module ROM.
- SpartaDOS X 4.22 - nieco zmodyfikowana - nie zawsze na korzyść - wersja SpartaDOS X wydana przez FTe
- SDX 4.3 - wersja wywodząca się z 4.22, z poprawkami błędów, nowymi programami użytkowymi, nowymi sterownikami itp., przygotowywana przez DLT [1].
SpartaDOS pracuje z dyskietkami w formacie niezgodnym z innymi DOSami (standardowo instalowany jest sterownik zapewniający obsługę formatów AtariDOS II, lecz może on nie być ładowany do pamięci). Obsługuje praktycznie wszystkie pojemności dyskietek (oraz oczywiście dyski twarde) aż do 16MB pojemności (65536 sektorów po 256b) na jedną partycję (może ich być osiem). Trzeba podkreślić, że format ten jako jedyny na ośmiobitowym Atari pozwala na swobodny dostęp do danych zgromadzonych wewnątrz pliku - a SpartaDOS jako jedyny DOS implementuje ekwiwalent znanej z innych systemów funkcji seek().
Istnieje także w wersji zawartej w module ROM pod nazwą SpartaDOS X, a Jiri Bernasek stworzył własną odmianę tego DOSa - BW-DOS.
Program ładujący SpartaDOS
Program ten znajduje się w pierwszych trzech sektorach dyskietki sformatowanej przez SpartaDOS. W odróżnieniu od loaderów innych DOSów, loader SpartaDOS jest w stanie wczytywać standardowe pliki binarne (z nagłówkiem $FFFF). Takim plikiem jest też plik *.DOS zawierający SpartaDOS.
Loader SpartaDOS, głównie z powodu konieczności zmieszczenia się w przestrzeni niewiele większej niż 256 bajtów, ma następujące ograniczenia:
- plik binarny może składać się z wielu segmentów, ale nie mogą się one zaczynać pełnym nagłówkiem ze znacznikiem $FFFF na początku; taki nagłówek może mieć tylko pierwszy segment pliku, dalsze muszą mieć nagłówki skrócone.
- plik binarny nie może naruszać pamięci w obszarach $90-$97 oraz $2E00-$3180.
- plik binarny musi zawierać segment RUN.
- po ostatnim segmencie muszą następować dwa bajty o wartości zero; to dziwaczne na pierwszy rzut oka ograniczenie spowodowane jest faktem, że loader nie czyta katalogu dysku, nie zna więc długości pliku, który ma załadować, a co za tym idzie - nie jest w stanie stwierdzić wystąpienia końca tego pliku, jeśli nie jest to jakoś zaznaczone w samych danych. Znacznikiem takim jest nagłówek segmentu zaczynający się od dwóch zer.
- długość żadnego z segmentów nie może być całkowitą wielokrotnością wielkości sektora; plik zawierający taki segment zostanie załadowany nieprawidłowo - jest to więc raczej błąd w programie loadera, niż ograniczenie.