26

Odp: mydos i obsluga katalogow

no dobrze, czyli jesli mydos - to se moge sprawdzic w ktorej stacji dysk siedzi i ustawic stosownie katalog bierzacy
nie mam wplywu na to czy ktos sobie tego nie przerzuci do innego katalogu niweczac caly moj trud

sparta:
ma mozliwosc sprawdzenia aktualnego katalogu, wiec moge sobie dopisac do nazwy pliku zawierajacej relatywna sciezke do pliku czesc stala, ale czy jest to konieczne, czy sparta ma mozliwosc zaladowania pliku z relatywnej sciezki (czyli katalog domyslny)

przechodze na tumiwisizm

27

Odp: mydos i obsluga katalogow

Ma. MyDOS też.

Ścieżka relatywna: D:FOO>PLIK.DAT (nie interesuje cię, gdzie jest katalog FOO)

Ścieżka absolutna: D:>FOO>PLIK.DAT (katalog FOO musi być w głównym katalogu dysku, ale nie interesuje cię, którego)

Ścieżka absolutna: D1:>FOO>PLIK.DAT (katalog FOO musi być w głównym katalogu dysku D1)

Co do sprawdzania (w której stacji dysk siedzi) i ustawiania stosownie katalogu, to raczej nie zapobiegniesz temu, żeby user wrzucił całość twojego programu (razem z katalogiem) do jakiegoś podkatalogu odległego o parę zagnieżdżeń od katalogu głównego. Bo wydaje mi się, że łatwość "stosownego ustawienia katalogu" wynika z założenia, że będzie on podkatalogiem katalogu głównego, mylę się?

KMK
? HEX$(6670358)

28

Odp: mydos i obsluga katalogow

Z tego co ja rozumiem, ale być może źle pojmuję to chodzi Ci o to aby program uruchomiony z dowolnego katalogu, z dowolnego napędu pod MyDOS. Mógł sobie doczytać różne pliki które znajdują się w tym katalogu. Tak? Czy ja coś źle rozumiem?

Jeżeli o to Ci dokładnie chodzi to wystarczy tak jak pisałem wcześniej aby odwoływać się do "D:", a przed uruchomieniem programu z menu MyDos, wybrać opcję "R", pick directory. Lub jako opcję w programie zrobić coś w rodzaju opcji "SET PATH", gdzie user podawałby katalog i napęd w którym umieszczony jest uruchamiany program. Jest to oczywiście rozwiązanie pośrednie, taka proteza związana z ograniczeniami MyDOS-a.

Jeszcze jeden pomysł który mi przychodzi do głowy to coś w rodzaju MENU do uruchamiania programów z dyskietki. Takie menu miałoby za zadanie przed uruchomieniem programu ustalenie "set working dir", i załadowanie wskazanej binarki.

Tak jak sugerował Draco, sprawdzę jeszcze czy DUP.SYS pozostawia jakiś ślad na podstawie którego można by określić skąd był wywołany program.

Jeszcze jeden pomysł to sprawdzenie czy jakaś nakładka na DOS.SYS (np. TOMS navigator) nie zmienia "working dir" przed uruchomieniem programu.

Seban

29

Odp: mydos i obsluga katalogow

PS.

Candle napisał/a:

(sparta) ma mozliwosc sprawdzenia aktualnego katalogu

Tobie nie chodzi o katalog "aktualny", tylko ten, z którego została uruchomiona binarka, dobrze rozumiem? Bo to są dwie różne rzeczy.

KMK
? HEX$(6670358)

30

Odp: mydos i obsluga katalogow

pod dosem aktualny i ten z ktorego zostala uruchomiona binarka to to samo
tj jesli masz binarke w foo/bar/ a jestes w / i wpiszesz /foo/bar/bin to okej, uruchomi sie, ale katalog aktualny to / wiec pojdzie w krzaczory i to jest ok
nie wymagam od programu aby uruchomil sie z dowolnego miejsca na dysku
wymagam jedynie aby uruchomil sie z dowolnego katalogu na dysku w ktorym bedzie sie znajdowal
sytuacja opisana powyzej mnie nie interesi, interesi mnie tylko prosty przypadek

candle

przechodze na tumiwisizm

31

Odp: mydos i obsluga katalogow

No to nie widzę problemu, nie jest ci potrzebne ani CD ani PWD to tego. Podajesz po prostu ścieżki relatywne do katalogu, w którym siedzi binarka (_dokładnie_ tak samo jak pod MS-DOS-em) i to wsjo.

KMK
? HEX$(6670358)

32

Odp: mydos i obsluga katalogow

czyli jak zwykle mydos daje ciala
pod mydosem wlasnie jesli podam relatywne - nie wczyta w ogole
musze to robic przez d: lub przez pelna sciezke

candle

przechodze na tumiwisizm

33

Odp: mydos i obsluga katalogow

No, "D:" na początku musisz dodać (w tym punkcie to się różni od MS-DOS-a), niestety.

KMK
? HEX$(6670358)

34

Odp: mydos i obsluga katalogow

tj jesli masz binarke w foo/bar/ a jestes w / i wpiszesz /foo/bar/bin to okej, uruchomi sie, ale katalog aktualny to / wiec pojdzie w krzaczory i to jest ok

zgadza się taka uroda MyDOS-a. Rozwiązania takie jak pisałem:

1)  przed załadowaniem binarki, wciskasz "R" (set working directory), w programie masz odwołania do tylko do napędu "D:", czyli np. "D:DUMMY.DAT"
2) po załadowaniu binarki, dodajesz w programie opcję set path, i gdy user poda w jakim katalogu zainstalował program zmieniasz set working directory za pomocą CIO/XIO 41. Tutaj pewnie dało by się odczytać z bufora MyDOS skąd binarka została uruchomiona (pełną ścieżkę). Tu może się okazać iż różne wersje MyDos, a konkretnie DUP.SYS mają w innym miejscu pamięci tą informację.
3) napisać Menu/Loader takie które przed uruchomieniem binarki automatyczne wywoła CIO/XIO 41. ew. sprawdzić czy Toms Navigator tego przez przypadek nie czyni
4) napisać własny command.com dla MyDos-owego DOS.SYS :)

wszystkie 4 opcje wymagają aby twój program wykonywał wszelakie operacje dla "D:". W przypadku "set working dir" możesz oczywiście ustawić set worlking dir łącznie z napędem, np. "D4:FOO>BAR". Wtedy odwołanie do "D:DUMMY.DAT", spowoduje odczytanie pliku z "D4:FOO>BAR>DUMMY.DAT"

Seban

35

Odp: mydos i obsluga katalogow

seban napisał/a:

Tutaj pewnie dało by się odczytać z bufora MyDOS skąd binarka została uruchomiona (pełną ścieżkę). Tu może się okazać iż różne wersje MyDos, a konkretnie DUP.SYS mają w innym miejscu pamięci tą informację.

To obojętne, gdzie DUP.SYS ma ten bufor, bo ten adres jest wskazywany przez wskaźnik bufora w IOCB #0 ($0344/5 oidp, czyli ICBUFA). Oczywiście użycie tego to hack, który nie musi zadziałać (bo np. program nadpisał ten bufor podczas wczytywania się albo coś tam). Pod SDX na pewno nie będzie to działało.

KMK
? HEX$(6670358)

36

Odp: mydos i obsluga katalogow

Dla zainteresowanych: SDX w zmiennych DEVICE i PATH na stronie 7 przechowuje ścieżkę do programu, jeżeli jest on uruchamiany spoza katalogu bieżącego (z podaniem ścieżki).
W przeciwnym przypadku PATH jest puste i katalog bieżący można ustalić za pomocą XIO 48.