home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
05
/
ami018.txt
< prev
next >
Wrap
Text File
|
1997-04-07
|
17KB
|
498 lines
System na talerzu (cz. 17.)
---------------------------
AMIGA DOS
<a> Marek Pampuch
<sr>EXCHANGE (wymieï)
<l>skîadnia dla systemów 2.0, 2.1, 3.0 i 3.1: EXCHANGE [CX_POPKEY="xxx"]
[CX_POPUP=>yes | no<] [CX_PRIORITY=>n<]
<txt>gdzie: xxx to nazwa okreôlajâca kombinacjë klawiszy,
pozwalajâcâ na wywoîanie rozkazu, n to wartoôê priorytetu
nadanego rozkazowi.
W pozostaîych wersjach systemu rozkaz ten nie wystëpuje.
<l>wzorzec dla systemów 2.0, 2.1, 3.0 i 3.1:CX_POPKEY/K, CX_POPUP/K,
CX_PRIORITY/K
<txt>EXCHANGE jest programem zarzâdzajâcym Commodity. Po jego
wywoîaniu pojawi sië okno, w którym moûna bëdzie ustawiê te
Commodity, których chcesz uûywaê, zmieniê ich parametry dziaîania
oraz usunâê niepotrzebne juû Commodity z pamiëci komputera. Moûna
go wywoîaê za pomocâ DOS-u, jednak najczëôciej robi sië to z
poziomu Workbencha. Ten ostatni sposób zostaî opisany dokîadnie
w ksiâûce "Amiga" wydanej przez Wydawnictwo LUPUS.
Naleûy pamiëtaê o tym, ûe wszystkie programy typu Commodity (a
zatem i Exchange) nie generujâ kodu bîëdu przy niewîaôciwym
wprowadzeniu parametrów. Jedynym sposobem na sprawdzenie, czy
wszystko jest OK, moûe byê skorzystanie z rozkazu STATUS.
********* tu rysunek 42 **************
EXCHANGE moûemy (podobnie jak wszystkie inne Commodities)
uruchomiê przez wpisanie samej nazwy rozkazu, jednak takie
postëpowanie odetnie nam dostëp do Shella i aby wyjôê z programu,
trzeba bëdzie go przerywaê kombinacjâ klawiszy [Ctrl]+[C]. Lepiej
zatem uruchomiê EXCHANGE przez:
<l>RUN EXCHANGE
<txt>Parametrami opcji CX_POPKEY moûe byê dowolna kombinacja klawiszy
[Shift] [Ctrl] [Alt] lub klawiszy funkcyjnych, na przykîad:
<l>RUN >NIL: EXCHANGE "CX_POPKEY=Ctrl F3"
<txt>Opcja POPUP w zaleûnoôci od podanego parametru wyôwietla
(yes), lub nie wyôwietla (no), okno rozkazu Exchange.
Opcja PRIORITY zmienia priorytet Commodities. Domyôlnie wszystkie
programy z tej grupy majâ priorytet 0.
<sr>EXECUTE (wykonaj)
<l>skîadnia dla wszystkich systemów EXECUTE <n1> [<arg>]
<txt>gdzie n1 to rozkaz lub lista rozkazów. Rozkaz ten moûe byê
pobrany z innego dysku czy katalogu niû aktualny, w takim wypadku
jednak musimy nazwë tego rozkazu poprzedziê odpowiedniâ ôcieûkâ
dostëpu. Parametr arg, to jedno z poniûszych sîów kluczowych:
.KEY (.K) -- definiuje szablon dla argumentu,
.DOT z -- znak "z", uûyty zamiast kropki, bëdzie poprzedzaî sîowo
kluczowe,
.BRA z -- znak "z" zastâpi nawias klamrowy, otwierajâcy w
oznaczeniu poczâtku nazwy parametru,
.KET z -- zastëpuje zamkniëcie nawiasu klamrowego,
.DOLLAR z (lub .DOL z) -- znak "z" zastëpuje, jako znak
rozpoznawczy parametru, znak dolara ($),
.DEF n -- nadaje danemu parametrowi wartoôê n.
Znaczenie tych parametrów zostaîo omówione dokîadniej w artykule
"Suplement do Amiga DOS" w Magazynie AMIGA nr 4/95. Rozkaz
EXECUTE moûe w tym miejscu mieê jeszcze inne parametry. Sâ to:
.[klawisz spacji] (koniecznie poprzedzony kropkâ!) -- wstawi
pusty wiersz pomiëdzy wierszami z rozkazami.
.\ -- oznacza komentarz. Parametr taki poinformuje EXECUTE, ûe ma
opuôciê wiersz, na poczâtku którego wystëpuje taki znaczek, i
przejôê do nastëpnego wiersza.
nawiasy trójkâtne, czyli ">" i "<" -- mogâ one wystëpowaê od
systemu 2.0 w górë. Peîniâ takâ samâ funkcjë, jak .BRA i .KET
(nawiasy klamrowe) i sîuûâ do podawania wzorca dla argumentu.
Nie jest to jednak najlepszy pomysî, bo moûna takie nawiasy
pomyliê z identycznymi z nimi znaczkami okreôlajâcymi redyrekcjë.
Lepiej zatem pozostaê przy .BRA i .KET.
Rozkaz EXECUTE jest wykorzystywany do uruchamiania zbiorów
skryptowych DOS-u (na przykîad "startup-sequence"). Skrypt moûe
zawieraê dowolnâ, poprawnie napisanâ sekwencjë rozkazów Amiga
DOS. Oznacza to, ûe w ten sposób moûemy pisaê wîasne procedury
uîatwiajâce ûycie.
Przykîad:
<l>EXECUTE df0:scripts/mój_skrypt
<txt>Jeôli czësto uûywasz rozkazu EXECUTE, moûesz sobie dodatkowo
uîatwiê pracë wykonujâc kopië rozkazu i zmieniajâc jej nazwë na
przykîad na "e" (co oszczëdzi wpisywania za kaûdym razem czîonu
"xecute"). Moûna pójôê jeszcze dalej. Skrypt, któremu nadaliômy
bit protekcji S, na przykîad za pomocâ odpowiedniej opcji z
programu zarzâdzajâcego lub z poziomu CLI/Shella przez:
<l>PROTECT df0:scripts/mój_skrypt +S
<txt>moûe zostaê wykonany przez wpisanie samej nazwy skryptu (z
ewentualnâ ôcieûkâ dostëpu), bez koniecznoôci wpisywania rozkazu
EXECUTE.
Uruchamianie skryptów to gîówne, jednak nie jedyne, zastosowanie
rozkazu EXECUTE. Bardziej zaawansowani uûytkownicy (poczâtkujâcym
raczej nie zalecaîbym eksperymentów opisanych poniûej) mogâ
wykorzystaê ten rozkaz do operacji "niûszego poziomu". Zanim
jednak przejdë do przykîadu, muszë niestety nakarmiê Was nieco
teoriâ na temat sposobu dziaîania EXECUTE.
Po uruchomieniu rozkazu EXECUTE czyta pierwszy bajt zbioru z
rozkazem. Jeôli jest to kropka, wówczas tworzony jest zbiór
tymczasowy w katalogu T. Jeôli dysk, na którym ma powstaê taki
zbiór, jest zabezpieczony przed zapisem, zapeîniony albo
uszkodzony, wówczas generowany jest komunikat:
<l>Can't create T:Command-00-01
<txt>i wykonywanie rozkazu EXECUTE zostaje przerwane.
Jeôli jednak wszystko jest w porzâdku, zostaje utworzony taki
zbiór, w którym znajdzie sië caîy tekst rozkazu. Bëdzie sië on
jednak róûniî od oryginaîu tym, ûe w miejsce domyôlnego parametru
zostanie wpisany parametr podany wzorcem lub za pomocâ innych
"kropkowych" rozkazów funkcji EXECUTE.
Taki zbiór moûna przeglâdaê (choê nie zawsze jest to zbiór ASCII)
i sprawdzaê poprawnoôê jego dziaîania, na przykîad za pomocâ
debuggera dla jëzyka, w jakim zostaî napisany nasz rozkaz. Jest
to szczególnie wygodne w wypadku rozkazów zainstalowanych w
ROM-ie. Ten sposób zwalnia wprawdzie (niezauwaûalnie) szybkoôê
wykonania rozkazu, niemniej jest caîkowicie bezpieczny zarówno
dla uûytkownika, jak i dla systemu.
Na razie nie chcemy jednak debagowaê zbioru, ale tylko zobaczyê,
co ma to wspólnego z opisywanym rozkazem EXECUTE.
Po przekopiowaniu danych do tego zbioru jego nazwa zmienia sië (w
sposób niezauwaûalny dla uûytkownika, gdyû dzieje sië to w tle)
na
<l>Command-xx-yy
<txt>gdzie xx jest poziomem zapëtlenia, yy zaô numerem procesu.
Moûna to jednak zobaczyê, wpisujâc nastëpujâcy skrypt:
<l>.KEY NOARGS
LIST >RAM:Pokaz<$$> T:COM#? LFORMAT "RUN ED %s%s"
EXECUTE RAM:Pokaz<$$>
<txt>Zapiszmy go na dysku pod nazwâ "test". Aby go uruchomiê,
trzeba jednak wpisaê i uruchomiê kolejny skrypt:
<l>.KEY ARG1/A, ARG2/A, OPT1, OPT2
EXECUTE df0:test
<txt>UWAGA: Uûytkownicy systemów 3.0 i 3.1 powinni napisaê ten
skrypt nieco inaczej:
<l>.KEY NOARGS
TYPE >>RAM:test1 t:#?
ED RAM:TEST1
<sr>FAILAT ("padnij" na)
<l>skîadnia dla systemów 1.2 i 1.3 FAILAT >n<
skîadnia dla systemów 2.0, 2.1, 3.0 i 3.1: FAILAT [[RCLIM=] >n<
<txt>gdzie n to kod wartoôci bîëdu (domyôlnie ma on wartoôê 10).
<l>Wzorzec dla wszystkich systemów: RCLIM/N
<txt>Ustala dopuszczalne granice kodu zwrotnego przy wystâpieniu
bîëdu w skrypcie (R[eturn] C[ode] LIM[its]). Jeûeli kod taki
bëdzie mniejszy niû n, wykonywanie skryptu nie bëdzie przerwane.
PRZYKÎAD:
<l>failat 20
<txt>Jeôli kod bîëdu bëdzie tu wiëkszy niû 20, wykonywanie
skryptu bëdzie zatrzymane i Amiga wyôwietli komunikat o bîëdzie.
Pojawi sië prompt, a wartoôê kodu zwrotnego zostanie ponownie
ustawiona na domyôlne 10. W przeciwnym wypadku skrypt bëdzie
wykonywany dalej. Poniewaû maksymalnâ wartoôciâ, jakâ moûna tu
zastosowaê, jest n=20, wystarczy na poczâtku dowolnego skryptu
wpisaê:
<l>FAILAT 21
<txt>i nasz skrypt bëdzie wykonany do koïca bez wzglëdu na to, co
sië stanie. Mimo tego wszystkie komunikaty o ewentualnie
wystëpujâcych bîëdach zostanâ jednak wyôwietlone na ekranie. Jest
to szczególnie uûyteczne podczas tworzenia dîugich skryptów czy
przy eksperymentach z kopiami istniejâcych skryptów oraz przy
odpluskwianiu, zabezpiecza bowiem przed ulubionym przez
eksperymentatorów (i nie tylko) Guru Message.
Zazwyczaj stosuje sië tu wartoôci n równe 5,10 20 i 21.
UWAGA: Jeôli zwiëkszyîeô w jakiejô sekwencji rozkazów wartoôê n,
powinieneô na koïcu tej sekwencji uûyê rozkazu:
<l>FAILAT 10
<txt>aby przywróciê ôredniâ wartoôê domyôlnâ. Rozkaz FAILAT
zadziaîa takûe na rozkazy uruchamiane z poziomu Shella za pomocâ
RUN.
*********** tu rysunek 43 ***********
Rozkaz podany bez argumentów spowoduje wypisanie aktualnie
ustawionego limitu kodu bîëdów (domyôlnie 10).
<sr>FAULT (bîëdny)
<txt>skîadnia dla wszystkich systemów:
<l>FAULT <k1> [<k2> <k3> ... <k10>]
<txt>gdzie: k1-k10 -- trzycyfrowy numer bîëdu AmigaDOS.
W systemach 1.2 i 1.3 wyôwietla komunikat podajâcy numer bîëdu,
jaki ostatnio wystâpiî (przy uûyciu bez argumentów), lub numery
bîëdów odpowiadajâcych podanym argumentom.
W systemach od 2.0 w górë wyôwietla komunikat po angielsku
opisujâcy podany kod (lub podane kody) bîëdu. Moûna podaê do 10
kodów. PRZYKÎAD:
<l>fault 206; spowoduje komunikat "Invalid window" (niewîaôciwe okno)
<txt>Jeôli wystâpi bîâd, dla którego twórcy systemu nie
przewidzieli opisu (zdarza sië to bardzo rzadko, ale jednak),
wówczas komunikat przybierze postaê jak, na przykîad, poniûej:
<l>FAULT 106: ERROR 106
<txt>Takimi "beznazwowymi" bîëdami sâ w AmigaDOS bîëdy o
numerach: 1-101, 102, 104, 106-113, 123-201, 208, 227-231,
236-239, 244-302 i 306-2147483647 (twórcy systemu zapewnili sobie
w ten sposób doûywotni "bufor". Czyûby aû tyle bîëdów chcieli
popeîniê?)
Pozostaîe bîëdy majâ swoje nazwy i nastëpujâce znaczenie.
UWAGA: dokîadniejszy opis tylko przy najczëôciej wystëpujâcych
bîëdach. W starszych wersjach niektóre bîëdy mogâ byê
nierozpoznawalne).
103 -- brak pamiëci (insufficient free store).
Najczëôciej wystëpuje przy próbie wczytania lub uruchomienia
programów, które sâ wiëksze niû pamiëê RAM, jakâ dysponuje nasz
komputer. Czasem jednak (jeôli mamy na przykîad 6 MB pamiëci, a
wczytujemy niezbyt wielki program) przyczyny tego bîëdu mogâ
wydawaê sië metafizyczne. Tak dobrze jednak nie jest. Sprawdú,
czy:
^* nie otwarîeô przypadkiem nieresetowalnego RAM-dysku (RAD) lub
zostawiîeô w RAM-ie coô duûego (na przykîad przy próbie
kopiowania);
^* zamknâîeô wszystkie uûywane poprzednio, a juû niepotrzebne,
programy;
^* po uûywanym poprzednio programie nie zostaîy w pamiëci jakieô
ômieci lub nie zostaîa przywrócona domyôlna alokacja pamiëci i
twój RAM jest poszatkowany lepiej niû kapusta w beczce; brzmi to
groúnie i uczenie, ale w tym akurat przypadku wystarczy wykonaê
zwykîy reset z klawiatury;
^* uruchomiîeô zbyt wiele zadaï naraz;
^* nadaîeô programowi zbyt duûâ pamiëê stosu
105 -- zapeîniona tablica procesów (process table full).
114 -- zîy wzorzec (bad template).
115 -- zîy argument (bad number).
Rozkaz wymagaî argumentu cyfrowego, a Ty pomyîkowo wpisaîeô tam
literë lub inny znak.
116 -- brak wymaganego argumentu (required argument missing).
Zapomniaîeô jednego lub wiëcej z argumentów wymaganych przez dany
rozkaz; przeczytaj opis odpowiedniego rozkazu AmigaDOS, a jeôli
nie masz pod rëkâ ksiâûki, sprawdú, które argumenty sâ potrzebne,
wpisujâc ten rozkaz z pytajnikiem na koïcu i naciskajâc klawisz
[Return].
117 -- brak argumentu po znaku =.
118 -- za duûo argumentów (too many arguments).
Sytuacja odwrotna niû ta przy bîëdzie numer 116, lecz sposób
"leczenia" taki sam.
119 -- nie zamkniëty nawias.
120 -- nieprawidîowy lub za dîugi wiersz (argument line invalid
or too long).
Wiersz rozkazu AmigaDOS nie powinien byê dîuûszy niû 255 znaków,
zdarzajâ sië jednak wyjâtki (w obie strony). Skîadnië rozkazu i
jego dopuszczalnâ dîugoôê moûna sprawdziê w dowolnej ksiâûce o
AmigaDOS.
121 -- zbiór nie jest poprawnym zbiorem AmigaDOS typu "object"
(file is not an object module).
Spróbuj uruchomiê zbiór przez "execute >nazwa programu<. Jeôli
jest to zbiór skryptowy, ustaw mu (w opcji INFORMATION) status
SCRIPT.
122 -- niewîaôciwa biblioteka rezydentna.
202 -- zbiór w uûyciu (file in use).
Usiîowaîeô zmazaê zbiór, który jest aktualnie wykonywanym
programem (lub zostaî przypisany do takiego programu rozkazem
ASSIGN). Zakoïcz najpierw jego dziaîanie, a dopiero potem zmaû.
203 -- zbiór juû istnieje (object already exists).
Chciaîeô nadaê zbiorowi lub katalogowi nowâ nazwë, a taka nazwa
juû w danym katalogu jest. Zbiory o tych samych nazwach mogâ sië
znaleúê na tym samym dysku tylko wtedy, gdy sâ zapisane w róûnych
katalogach.
204 -- taki katalog nie istnieje (directory not found).
Najprawdopodobniej pomyliîeô sië przy wpisywaniu nazwy katalogu.
205 -- taki zbiór nie istnieje (object not found).
Tu teû przyczynâ jest bîâd w nazwie. Czasem nazwa zbioru moûe byê
poprawna, jednak (czego na pierwszy rzut oka nie da sië dostrzec)
podczas wykonywania program odwoîuje sië do innego programu lub
biblioteki, której na dysku nie ma. Tu moûe pomóc sprawdzenie za
pomocâ programu SnoopDOS.
206 -- bîëdny opis okna.
207 -- zbiór jest za duûy.
209 -- nie rozpoznany typ requestera.
210 -- niewîaôciwa nazwa obiektu (object name invalid).
W nazwie obiektu wystëpuje znak, który jest przeznaczony przez
AmigaDOS do "wyûszych" celów. Zmieï nazwë obiektu nie korzystajâc
z takich znaków.
Drugim wypadkiem, gdy moûe wystâpiê taki bîâd, jest zbyt dîuga
(przekraczajâca 30
znaków----------------------?------------------. W wypadku
zbiorów z ikonami nazwa moûe mieê maksimum 25 znaków, po to, aby
moûna byîo dodaê rozszerzenie
.info). Skróê nazwë---------------?---------------
211 -- uûycie znaku kontrolnego w linii rozkazowej.
212 -- zbiór nie jest wymaganego typu (object is not of required
type).
Usiîowaîeô (na przykîad) uruchomiê zbiór z obrazkiem wykonany
Deluxe Paintem za pomocâ rozkazu EXECUTE. (Nie ômiejcie sië,
takie bîëdy sië zdarzajâ, i to nie tylko nie wtajemniczonym --
zazwyczaj po kilkunastu godzinach spëdzonych przed monitorem).
213 -- dysk nie jest zwalidatowany (disk is not validated).
Tu przyczyna moûe byê róûna: uszkodzony zbiór Disk-validator z
katalogu L: (mechanicznie lub przez wirusa) lub jego brak, brak
miejsca na zapisanie zbioru tymczasowego, jaki chce sobie
stworzyê Amiga, i kilka innych. Jak sobie radziê?
Przede wszystkim wyciâgnâê dyskietkë, wyîâczyê komputer i
poczekaê okoîo 30 sekund. Po ponownym wîâczeniu Amigi naleûy:
* Sprawdziê dysk programem antywirusowym. Jeôli jest to wirus --
usunâê go. Jeôli antywirus nie "naprawia dysku po Saddamie" --
przegraê "zdrowy" zbiór Disk-validator.
* Sprawdziê (na przykîad za pomocâ programu FileMaster lub
podobnego), czy na dysku istnieje zbiór Disk-validator. Jeôli go
nie ma, przegraê go (na przykîad z dyskietki z Workbenchem).
Sprawa wyglâda nieco gorzej, jeôli dyskietka jest niedosowska lub
katalog nie chce sië wczytaê. W tym wypadku pozostaje nam tylko
program do "ratowania" dysków. Znawcy na pewno w tym momencie
skrzywiâ sië z niesmakiem, ale choê wiem, ûe DiskSalv czy
Quarterback Tools sâ wspaniaîe, to jednak (zwîaszcza
poczâtkujâcym) radziîbym w tym miejscu uûyê starego dobrego
Diskdoctora.
214 -- dysk zabezpieczony przed zapisem (disk is write protected).
Chcesz coô zapisaê, a zapomniaîeô przesunâê maîy kawaîeczek
plastiku.
215 -- próba zmiany nazwy na dwóch lub wiëcej urzâdzeniach naraz.
216 -- zamazywany katalog nie jest pusty.
217 -- za duûo zapëtleï.
218 -- urzâdzenie nie zamontowane (device not mounted).
Przyczynâ moûe byê literówka w nazwie urzâdzenia, do jakiego sië
odwoîujesz, lub niewîaôciwe "zamontowanie" tego urzâdzenia
(zarówno sprzëtowe -- wyîâcz komputer i sprawdú kable, jak i
programowe -- sprawdú zbiór Mountlist i sekwencjë startowâ).
219 -- bîâd przeszukiwania.
220 -- komentarz dîuûszy niû 79 znaków.
221 -- dysk jest peîny (disk full).
Cóû... dyskietki 3,5-calowe nie sâ z gumy.
222 -- zbiór zabezpieczony przed zamazaniem (file protected from
deletion).
Sprawdú (za pomocâ rozkazu PROTECT) ustawienie bitów protekcji i
ustaw mu bit D. Podobnie moûna usunâê przyczynë bîëdów o
numerach 223 (odczyt, R), 224 (zapis, W).
223 -- zbiór jest zabezpieczony przed odczytem.
224 -- zbiór jest zabezpieczony przed zapisem.
225 -- dysk niedosowy (not a DOS disk).
Usiîowaîeô przeczytaê dyskietkë nie sformatowanâ, pecetowâ lub
úle skopiowanâ. Tak zwane dyski niedosowe (gîównie gry) nie
wykaûâ tego bîëdu, sâ bowiem zapisane w sposób potrafiâcy oszukaê
ten komunikat.
226 -- dysk nie znajduje sië w stacji (no disk in drive).
Próbowaîeô wczytaê coô ze stacji, w której aktualnie nie ma dysku.
232 -- przekroczona liczba zbiorów w katalogu lub podkatalogu.
233 -- ten obiekt nie moûe byê linkowany.
234 -- ten obiekt jest juû zlinkowany.
235 -- bîâd przy îadowaniu zbioru (bad load file hunk).
Îadowany zbiór jest uszkodzony, spróbuj zaîadowaê innâ kopië tego
zbioru.
240 -- rekord nie jest zamkniëty.
241 -- kolizja zamkniëcia rekordów.
242 -- zamkniëcie rekordu jest "poza czasem" (lock timeout).
243 -- bîâd przy otwieraniu rekordu.
303 -- przepeînienie bufora.
304 -- przerwanie zbyt niskiego poziomu (pojawi sië komunikat na
ekranie, nie przerwie to jednak wykonywania programu).
305 -- zbiór nie jest wykonywalny (file not executable).