D-Filer


WPROWADZENIE

      Wychodząc z założenia iż nie warto niepotrzebnie komplikować sobie życia 99% programów przechwuje w standardowym formacie Atari tz. w gęstościach single, medium, double z możliwością zapisu 64 plików w katalogu. Dzięki tej metodzie nie zwracam zbytnio uwagi na to pod jakim DOS'em pracuję (ale kłamie - wszyscy wiedzą że używam tylko jedynie słusznego DOS'u :-) ). W większości przypadków jest to wygodne i oszczędne! Niestety sprawa się komplikuje gdy na jednym dysku trzeba zgromadzić dużą liczbę plików, które zajmują od 1 do 10 sektorów w DD. Takimi plikami są np. fonty (100%) lub moduły w CMC lub MPT (ok. 70-80%). Po umieszczeniu 64 plików z fontami na dysku DD pozostaje 387 wolnych sektorów, których nie można już wykorzystać (brak miejsca na nazwy plików w VTOC). Jedynym rozwiązaniem jest zastosowanie PODKATALOGÓW. Najbardziej popularne (i chyba jedyne) DOS'y, które umożliwiają stosowanie podkatalogów to:

  • MyDOS
  • SpartaDOS
  • BW-DOS
Wydaje się iż problem został rozwiązany! Niestety... co z tego że mogę umieścić pliki w podkatalogach jak w ok. 95% programów brak jest możliwości "dostania" się do tych plików! Około 4% umożliwia to, ale po pewnych kombinacjach lub po wpisaniu pełnej ścieżki dostępu, a tylko 1% umożliwia wygodne "wchodzenie" w dany podkatalog!

      Z pewnej strony wydaje się to trochę dziwne, gdyż MyDOS i Sparta to stosunkowo stare DOS'y, a więc programów obsługujących (wygodnie) podkatalogi powinno być sporo, dlaczego więc ich nie ma? Odpowiedź jest naprawdę bardzo prosta! To po prostu lenistwo! Przyznam się że ja też tak postępowałem i po pewnym czasie mściło się to! Z tego też powodu postanowiłem opracować sobie BIBLIOTECZKĘ, która umożliwiała by wygodną obsługę podkatalogów (i nie tylko). W ten sposób powstał D-FILER v1.0!

MOŻLIWOŚCI
  • obsługa podkatalogów dla MyDOS'a (100%), BW-DOS'a, SpartaDOS (70%)
  • wygodny sposób wskazywania pliku lub podkatalogu
  • zapis z uwzględnieniem ścieżki dostępu
  • podstawowe funkcje DOS'u w tym tworzenie, kasowanie podkatalogu
  • możliwość podania wzoru dla odczytu katalogu
  • możliwość ustawienia kolejności wyświetlania plików i podkatalogów
  • zainstalowana funkcja OVERWRITE
  • poprawna współpraca z większością DOS'ów
WYMAGANIA
  • Atari XL/XE
  • stacja dysków
  • nie zawysokie MemLo
OBSŁUGA

      Wszystkie dostępne opcje programu wybiera się przy pomocy klawiszy funkcyjnych. Zostaną one podane wraz z opisem danej opcji. Warto się ich nauczyć na pamięć :-), gdyż większość moich nowych programów będzie wykorzystywać tą bibliotekę!

Po wejściu do Filer'a ukazuje się nam jego ekran główny (i jedyny :-) ). Patrząc od góry widzimy: D-Filer v1.0

  1. Ścieżkę dostępu (SOURCE)

  2. Okno dla nazw plików i podkatalogów (to największe :-) ) w jego dolnej części znajdują się mniejsze:

                a) FREE SECTORS - pokazuje ilość wolnych sektorów
                b) S-DIR - ilość podkatalogów w danym katalogu/podkatalogu
                c) FILES - ilość plików w danym katalogu/podkatalogu
                d) ustawienie opcji dźwięku podczas transmisji

  3. Okno SOURCE pokazuje numer stacji źródłowej

  4. Okno TARGET pokazuje numer stacji docelowej

  5. Okno SUB-DIR pokazuje numer aktualnego podkatalogu

  6. Okno MEMLO pokazuje MemLo :-)

  7. Okno BUFFER pokazuje wielkość bufora, który wykorzystuje opcja COPY

  8. Okno DISPLAY pokazuje aktualne ustawienie tej opcji

  9. Okno (bez nazwy), w którym znajdziemy informacje o rozpoznanym przez D-Filer'a DOS'ie. Możliwe są cztery informacje: MyDOS, BW-DOS, SpartaDOS, Atari DOS - czyli każdy inny

  10. Na samym dole znajduje się linia komunikacji z użytkownikiem. W tej linii także pojawiać się będą wszystkie komunikaty, pytania i informacje
Aby nie powtarzać za każdym razem sposobu wprowadzania danych, potwierdzania operacji itp. spraw opiszę je teraz.

Wpis danych

czyli np. podawanie nazwy pliku/podkatalogu, ścieżki dostępu, podkatalogu do stworzenia itp. Aktywne klawisze to:

            DELETE - kasowanie ostatniego znaku
            SHIFT+DELETE, CONTROL+DELETE, CLEAR - kasowanie całej linii
            RETURN - akceptacja
            ESC - wyjście (rezygnacja)

Dostępne znaki: 0-9, A-Z, *_?.:>

Potwierdzenie operacji (OK)

            RETURN lub Y - wykonaj
            inny klawisz - przerwij

Przy komunikatach

            RETURN, ESC, Y - wyjście
            inne nie są aktywne

Przy odpowiedziach na pytania

            ESC - przerwij (wyjście)
            Y - tak
            inny - wybranie odpowiedzi NIE

Wybór nazwy

Operacje tą umożliwiają klawisze [-], [=].

Ścieżki dostępu

      Dla stacji źródłowej bufor wynosi 256 bajtów. Nie jest on ustawiony "na sztywno", a więc ilość możliwych do odczytania podkatalogów uzależniona jest od długości nazwy danego podkatalogu. W praktyce możliwe jest wejście do ok. 20-22 podkatalogów. Myślę że powinno wystarczyć? W przypadku gdy bufor zostanie zapełniony, wejście do kolejnego podkatalogu, lub (UWAGA) odczyt pliku nie zostanie wykonany! Odpowiedni komunikat ukaże się w linii komunikacyjnej.

      Ścieżka na ekranie pokazywana jest tak aby zawsze była widoczna jak największa ilość OSTATNICH podkatalogów. Tak więc na początku (po np. D1:) mogą wystąpić trzy kropki informujące o tym iż widoczna jest tylko część ścieżki.

      Ścieżka docelowa to tylko to co można będzie wpisać po np. D1:. Tak więc mamy jedynie możliwość wpisania 20 znaków. W większości wypadków zupełnie to wystarczy, choć w przyszłości być może ulegnie to zmianie (na gorsze :-) ). Jeżeli program uzna iż po dodaniu nazwy pliku ścieżka będzie dłuższa to odpowiednio zredukuje ją do postaci Dx:xxxxxxxx.xxx

OPCJE PROGRAMU

Odczyt katalogu głównego
Wywołanie: 1-9

      Opcja umożliwia odczyt (lub natychmiastowy powrót) głównego katalogu dysku, który znajduje się w stacji źródłowej (SOURCE).

Odświerzenie katalogu/podkatalogu
Wywołanie: SPACE

      Opcja podobna do poprzedniej z tą różnicą iż pod uwagę brana jest ścieżka dostępu.

Wzór dla odczytu katalogu/podkatalogu
Wywołanie: P lub *

      Opcja umożliwia podanie wzoru, który zostanie wzięty pod uwagę podczas odczytu katalogu/podkatalogu. Standardowy wpis to: *.*, który oznacza iż zostaną odczytane i wyświetlone wszystkie pliki znajdujące się w danym katalogu/podkatalogu. Należy zwracać na to uwagę aby uniknąć niepotrzebnego stresu - pliki były... i znikły :-).

Wejście do podkatalogu/Odczyt pliku
Wywołanie: RETURN

      Program automatycznie rozpozna co chcemy zrobić i jeżeli naciśniemy ten klawisz na podkatalogu to zostanie automatycznie wywołana opcja odczytu katalogu/podkatalogu. W przypadku pliku nastąpi jego odczyt.

Wyjście z danego podkatalogu
Wywołanie: ESC

      Opcja umożliwia powrót do poprzedniego podkatalogu lub powrót do katalogu głównego (w każdym przypadku zostanie on odczytany ponownie z dysku).

Szybka zamiana stacji źródłowej na docelową
Wywołanie: INVERSE

      Krótko mówiąc stacja SOURCE otrzyma numer stacji TARGET, ponowne naciśnięcie klawisza odwraca sytuację (chyba logiczne). Należy pamiętać o tym iż zamieniony zostaje tylko numer stacji, a więc ścieżka dostępu pozostaje bez zmian! Umożliwia to automatyczne wejście do tego samego podkatalogu (o ile istnieje) w stacji docelowej (jeżeli go tam nie będzie to ukaże się komunikat z błędem i należy wtedy przy pomocy klawiszy 1-9 "ręcznie" wywołać główny katalog).

Sposób wyświetlania nazw
Wywołanie: CLEAR, INSERT, DELETE

      Przy pomocy tych trzech klawiszy decydujemy o tym co chcemy aby pierwsze było pokazywane (bez względu na to jak jest zapisane w VTOC). Informacja o ustawieniu pokazana jest w oknie DISPLAY. Oto trzy możliwe kombinacje:

  1. SUB-DIRS - pierwsze w oknie nazw będą pokazane podkatalogi, a następnie pliki (klawisz CLEAR).
  2. FILES - pierwsze będą pokazane pliki, a po nich podkatalogi (klawisz INSERT).
  3. NO CHANGE - bez zmian, wszystko zostanie pokazane tak jak jest zapisane w VTOC (klawisz DELETE) - katalog/podkatalog zostanie ponownie odczytany.
Tworzenie nowego podkatalogu
Wywołanie: M

      Opcja "mówi" chyba wszystko. Po wywołaniu wpisujemy nazwę podkatalogu i potwierdzamy to RETURN'em. Klawisz ESC umożliwia przerwanie tej operacji.

Kasowanie pliku/podkatalogu
Wywołanie: D

      Przed wywołaniem opcji należy wskazać nazwę pliku/podkatalogu! Po wywołaniu opcji program poprosi o potwierdzenie naszej decyzji i o ile będzie to odpowiedź pozytywna nastąpi kasowanie.

UWAGA: Przed skasowaniem podkatalogu należy się upewnić czy jest on pusty, gdyż tylko taki może być skasowany! W innym przypadku ukaże się błąd!

Zmiana nazwy pliku/podkatalogu
Wywołanie: R

      Podobnie jak w poprzedniej opcji, przed wywołaniem należy wskazać nazwę, którą chcemy zmienić. Po wywołaniu podajemy nową nazwę (lub poprawiamy starą) i potwierdzamy to RETURN'em. Wyjście z opcji umożliwia ESC. Funkcja nie jest "idioto-odporna", a więc potwierdzenie STAREJ nazwy jako NOWĄ spowoduje... zamianę starej... na nową :-)

UWAGA: W przypadku podkatalogów opcja działa w 100% pod MyDOS'em! Niestety w przypadku BW-DOS'a i SpartaDOS są problemy (przeczytaj KŁOPOTY).

Zabezpiecz/Odbezpiecz plik/podkatalog
Wywołanie: L - zabezpieczenie, U - odbezpieczenie

      Opcja chyba nie wymaga żednego opisu!

Kopiowanie pliku
Wywołanie: C

      Przed wywołaniem należy wskazać plik i potwierdzić to klawiszem RETURN. Po tej operacji w dolnej części ekranu (linia komunikatów) ukaże się nam docelowa ścieżka dostępu. Jeżeli odpowiada nam ona to ponownie naciskamy RETURN, a jeżeli nie to możemy wpisać ją od nowa (lub poprawić tylko nazwę). Jeżeli chcemy zmienić stację docelową to można skorzystać z kombinacji SHIFT+1-9. ESC umożliwia wyjście.

      Jeżeli stacja źródłowa i docelowa mają ten sam numer to program wyświetli pytanie czy będzie to ten sam dysk (umożliwia to kopiowanie z jednego podkatalogu do drugiego). Ukaże się pytanie SAME DISK? Jeżeli tak jest to naciskamy Y jeżeli nie (chcemy skopiować plik na inny dysk) to naciskamy inny klawisz (najlepiej N). Następnie rozpocznie się odczyt pliku do bufora. Po odczytaniu całego pliku lub zapełnieniu bufora może pojawić się kolejny komunikat: INSERT TARGET DISK, o ile na pytenie SAME DISK odpowiedzieliśmy negatywnie. Po zmianie dysku naciskamy RETURN i rozpocznie się zapis. W pierwszej kolejności program sprawdzi czy aby plik o podanej nazwie już nie istnieje. Jeżeli tak będzie to ukaże się kolejny komunikat: FILE ALREADY EXISTS. RETURN spowoduje iż stary plik zostanie skasowany i w jego miejsce nagrany zostanie aktualnie kopiowany, natomiast ESC umożliwi przerwanie zapisu. Po nagraniu całego bufora (o ile cały plik nie został odczytany) ukaże się prośba o włożenie dysku źródłowego i po potwierdzeniu rozpocznie się ponownie odczyt. Oczywiście prośby o zmianę dysku nie będą występować gdy stacje będą miały inne numery.

W przypadku wystąpienia błędu odpowiedni komunikat ukaże się na ekranie.

Dźwięk podczas transmisji włącz/wyłącz
Wywołanie: S

      Literka S informuje że dźwięk będzie włączony, brak jej że wyłączony.

Informacja o wersji D-Filer'a
Wywołanie: I

      Warto w przyszłości zwrócić na to uwagę gdyż D-Filer napewno będzie jeszcze modyfikowany, a to może wprowadzić pewne zmiany w jego obsłudze i zasad pracy.

Powrót do programu głównego
Wywołanie: TAB, CONTROL+ESC

      Jak wspomniałem D-Filer to biblioteka, a więc będzie on wykorzystywany w różnych programach. Powrót (bez żadnej reakcji ze strony Filera) umożliwiają wymienione wyżej klawisze.

KŁOPOTY

      Występują one w momencie gdy pracujemy pod kontrolą BW-DOS'a oraz SpartaDOS i usiłujemy zmienić nazwę podkatalogu. Krótko mówiąc NIE możemy tego zrobić! Przy każdorazowej próbie wykonania tej operacji D-Filer wyświetli nam komunikat o błędzie 170 (plik nie istnieje). Prawdę mówiąc nie mam pojęcia dlaczego tak się dzieje. Być może używam złej komendy (innej niestety nie znam) lub procedurę RENAME należy wykonywać z nazwą poprzedzając ją znakiem ">"? Przyznam się że nie znam zbyt dobrze tych systemów, a w dokumentacji do BW-DOS'a Jiri nic nie wspomina na ten temat. Jeżeli ktoś wie jak sobie z tym poradzić to proszę o kontakt.

      Druga sprawa to sama obsługa podkatalogów. Jak wszyscy wiedzą DOS'y Sparto-podobne po wpisaniu komendy DIR wyświetlają znacznie więcej informacji o danym pliku niż standardowa komenda Atari DOS. Oczywiście w SpartaDOS można uzyskać TAKI SAM "wydruk" katalogu jak w Atari DOS używając komendy DIRS. Jak się okazuje nie jest to tak do końca prawdą. Wszystko jest w porządku do momentu gdy w danym katalogu/podkatalogu nie ma kolejnych podkatalogów, które oprócz nazwy posiadają także rozszerzenie. W takim wypadku wygląda to tak: odczytując katalog poleceniem DIR wszystko jest w porządku tz. pokazywana jest nazwa oraz rozszerzenie danego katalogu. Po użyciu komendy DIRS wyświetlana zostaje tylko nazwa, natomiast w miejsce rozszerzenia wpisywane jest DIR w inwersji.

D-Filer (i inne programy, które nie są pisane spacjalnie dla SpartaDOS) wykorzystują standardowe wywołanie procedury odczytu katalogu tz. do aux1=6, a do aux2=0. Otrzymany w ten sposób katalog NIE zawiera rozszerzeń dla podkatalogów. Aby uzyskać pełny katalog należy wpisać do aux2 wartość 128 lub większą. Niestety wiąże się to z tym iż trzeba zupełnie inaczej napisać procedurkę "obrabiającą" tak otrzymany katalog! Moim zdaniem sposób informowania o tym iż dana nazwa to nazwa katalogu nie został odpowiednio przemyślany. Wystarczyło przecież zastosować metodę podobną, a nawet taką samą jaką stosuje MyDOS (przecież w Sparcie ten bajt i tak pozostaje pusty). Być może w przyszłości ten "kłopocik" zostanie usunięty w D-Filer'ku.

Podsumowując. Poza ZMIANĄ NAZWY PODKATALOGU reszta operacji na podkatalogach jest możliwa pod warunkiem iż dany podkatalog nie zawiera rozszerzenia!

Żaden z opisanych problemów NIE dotyczy MyDOS'a!

Autor biblioteki
Jager/Dial