Tajemnice ATARI

ODCZYT DYSKIETEK ATARI XL/XE PRZEZ KOMPUTERY KLASY PC


   w jednym z artykułów, zamieszczonych w czasopiśmie "ENTER" nr 10'91 natknąłem się na zdanie:

   "Jeżeli zapis dyskietek małego Atari, o których wspomina Czytelnik jest standardowy, dyskietki te nie mogą być przeczytane w IBM PC ze względu na różnice zapisu fizycznego na nośniku. Pozostaje transmisja łączem RS-232."

   Zdanie to stanowi odpowiedź na pytanie czytelnika o możliwość wykorzystania danych, zgromadzonych na dyskietkach "małego" ATARI, na komputerze IBM AT, wyposażonym w stację dysków elastycznych 5,25 cala o pojemności 1,2 MB.

   Nie chcę polemizować z autorem artykułu, natomiast chciałbym podzielić się tutaj moimi doświadczeniami na ten temat. Już jakiś czas temu zastanowiło mnie bowiem pytanie, czy można zmusić kontroler dysków używany w PC-tach do pracy w nietypowych dla niego warunkach? Po kilku chwilach zastanowienia doszedłem do wniosku, że odczyt dyskietek ATARI nie musi wcale być sprawą tak trudną, jak mogłoby się to wydawać. Przejdźmy jednak do konkretów.

   W jednej ze standardowych gęstości (tzw. podwójnej) stacje dysków ATARI XL/XE zapisują na dyskietce 40 ścieżek po 18 sektorów na każdej; każdy sektor zaś składa się z 256 bajtów. Jak łatwo policzyć, pojemność takiej dyskietki to 40*18*256=184320 bajtów. Owe 180 kilobajtów (184320/1024=180) było także gęstością, używaną we wczesnych wersjach systemu MS-DOS dla komputerów klasy PC. Ze względu na kompatybilność (w górę!) aktualne wersje tego systemu muszą posiadać mechanizmy, umożliwiające obsługę tak zapisanych dyskietek. Tutaj jednak zaczął się problem! Format dyskietek, zakodowany jako $FC jest nieco inny niż opisany powyżej. Wygląda tak: 40 ścieżek, 9 sektorów na ścieżce, 512 bajtów w sektorze.

   Zachęcony pierwszym małym sukcesem rozpocząłem poszukiwania. I oto w jednym z programów, opisujących działanie PCtów (tzw. "help-ów") znalazłem opis nieudokumentowanego przerwania MS-DOS. Przerwanie nr $1E wskazuje adres tzw. Disk Base Table, czyli znajdującej się w pamięci RAM tablicy, 0pisującej parametry używanych dyskietek. Kolejne jej bajty mają następujące znaczenie:

0 Bity 0-3 skok głowicy
   Bity 4-7 czas podnoszenia qłowicy
1 Bit 0 użycie DMA
   Bity 2-7 czas opuszczania głowicy
2 Czas zatrzymywania silnika
3 Rozmiar sektora:
   0-128, 1-256
   2-512, 3-1024
4 Liczba sektorów na ścieżce
5 Przerwa dla odczytu/zapisu
6 Rozmiar bufora transmisji
7 Przerwa dla formatowania
8 Wypełniacz dla formatowania
9 Czas osiadania głowicy
10 Czas rozruchu silnika

   Zaryzykowałem i udało się! Sektor został odczytany, choć w buforze znalazło się nie całkiem to, co powinno było się tam znaleźć. Dziwne "krzaczki" zamieniły się w zrozumiałe znaki po zamianie bitów (0 na 1 i 1 na 0) w każdym z odczytanych bajtów. To proste: ATARI widzi inaczej (odwrotnie) niż IBM.

   Jak widać można, zmieniając niektóre zwartości zawartych w DBT, uzyskać nieco inne od standardowych parametry dyskietek. Jak tego dokonać w praktyce? Należy przy pomocy jednej z funkcji usługowych MS-DOS pobrać adres Disk Base Table, zmienić odpowiednie wartości (ale najpierw je zapamiętać!), wywołać funkcję BIOS-u 0 nazwie Reset Drive, odczytać plik z dyskietki ATARI, "oddać" dawne wartości (i oczywiście wykonać Reset Drive), by wreszcie zapisać odczytany plik w norma1nym formacie IBM ...

   Celowo dość skrótowo opisałem całą procedurę. Nie chcę odbierać nikomu z Czytelników przyjemności dokonywania ewentualnych odkryć. Gorąco zachęcam do prób, bo przecież łatwo wyobrazić sobie sytuację kiedy można używać naszego ulubionego domowego, "małego" ATARI jako swoistego terminala do wprowadzania danych, których potem (za pośrednictwem dyskietki) użyjemy na jakimś "poważnym" IBM-ie.

   Na koniec jeszcze kilka uwag:

   1. Należy używać dobrych dyskietek do opisanych wyżej operacji. Często używanie złej jakości dyskietek powoduje powstawanie błędów odczytu. Wynika to, moim zdaniem, z różnicy w kalibracji głowicy w różnych typach napędów dyskowych.
< br>    2. Trzeba pamiętać o tym, że istnieją poważne różnice w zestawach znaków kontrolnych w obu typach komputerów. Przecież inaczej wygląda znak końca wiersza w ATARI ($9B), a inaczej w PC-tach ($OA i $OD).

   Program, napisany w oparciu o powyższe rozważania jest dość często używany w redakcji "Tajemnic ATARI" i mimo występujących błędów transmisji (patrz uwaga 1) bywa pomocny w pracy.


Jarosław Syrylak



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001