home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
09
/
ami927.txt
< prev
next >
Wrap
Text File
|
1997-04-07
|
15KB
|
437 lines
^-
System na talerzu (cz. 21.)
---------------------------
AMIGA DOS
<a>Marek Pampuch
<sr>IF (jeûeli)
<l>skîadnia dla systemu 1.2: IF [NOT] [WARN] [ERROR] [FAIL] [<tekst1>
EQ <tekst2>] [EXISTS <n1>]
skîadnia dla systemów 1.3, 2.0, 2.1, 3.0 i 3.1: IF [NOT] [WARN] [ERROR] [FAIL]
[<tekst1> EQ|GT|GE <tekst2>] [VAL] [EXISTS <n1>]
<txt>gdzie: tekst1, tekst2 -- îaïcuchy do porównywania, n1 -- nazwa zbioru.
<l>wzorzec dla systemu 1.2: STRING, NOT/S, WARN/S, ERROR/S, FAIL/S,
EQ/K, EXISTS/K
wzorzec dla systemów 1.3, 2.0, 2.1, 3.0 i 3.1: STRING, NOT/S, WARN/S,
ERROR/S, FAIL/S,EQ/K, GT/K, GE/K, VAL/S, EXISTS/K
<txt>Umoûliwia rozgaîëzienie instrukcji w zaleûnoôci od warunków podczas
wykonywania sekwencji rozkazów.
UWAGA: rozkazu IF nie moûna wprowadzaê "z rëki" (w trybie z
natychmiastowym wykonaniem). Sekwencja IF musi byê najpierw
zapisana na dysku w postaci skryptu AmigaDOS, a potem wykonana.
Jednak, nawet jeôli umieôcimy go w skrypcie, sam rozkaz IF nie
bëdzie miaî ûadnego znaczenia. Musi byê "obudowany" innymi
rozkazami, które bëdâ wykonane w zaleûnoôci od tego, czy warunek
podany w instrukcji IF jest speîniony, czy teû nie. Potocznie
mówi sië, ûe IF jest rozkazem rozpoczynajâcym tak zwanâ pëtlë:
<l>IF >warunek< ... ELSE...ENDIF
<txt>Rozkaz IF moûna zagnieûdûaê (to znaczy, ûe wewnâtrz jednej
pëtli moûe wystëpowaê inna). Jeôli jednak po IF nastëpuje nie
jeden rozkaz, ale caîa ich sekwencja, wówczas trzeba uûyê rozkazu
ENDIF. Przykîad ("pëtla wewnëtrzna" jest wyróûniona przez
wciëcie):
<l>if 2 GT 3 VAL skip end ; jeôli 2 > 3 (ha,ha) to koïcz
else
if FAIL type "Coô nie tak"; jeôli kod bîëdu >= 20 to wypisz
komentarz
endif
end
<txt> Parametrami rozkazu sâ:
* EQ -- porównuje îaïcuchy logicznie (czy sâ takie same). Przykîad:
<l>IF <rozkaz> EQ ""
ECHO " Miaîeô podaê rozkaz"
<txt>
* ERROR -- jeôli wygenerowany kod bîëdu jest równy 10, warunek
jest speîniony.
* EXISTS -- pozwala sprawdziê, czy katalog lub zbiór dyskowy
istniejâ. Jeôli tak, wówczas warunek jest speîniony. Jeôli nie
istnieje zbiór lub katalog, warunek nie jest speîniony. Rozkaz
bada takûe zamontowanie urzâdzeï fizycznych. Jeôli takie
urzâdzenie nie istnieje, wówczas w wyniku badania pojawi sië na
ekranie odpowiedni komunikat systemowy. Przykîady:
IF EXISTS DF0: -- bada, czy do stacji df0: wîoûony jest dysk.
IF NOT EXIST RAM:test: -- warunek jest speîniony, gdy w katalogu
gîównym RAM dysku nie ma zbioru test.
Nie powinno sië jednak badaê bezpoôrednio poprzez IF wystëpowania
urzâdzeï logicznych. W takim wypadku naleûy to zrobiê nastëpujâco
(przykîadowo):
<l>ASSIGN >NIL: DEVS: EXISTS
IF WARN
<txt>
* FAIL -- jeôli wygenerowany kod bîëdu jest równy 20, warunek
jest speîniony.
* GT -- porównuje îaïcuchy logicznie (czy wartoôê parametru
tekst1 jest wiëksza niû wartoôê parametru tekst2).
* GE -- porównuje îaïcuchy logicznie (czy wartoôê parametru
tekst1 jest wiëksza lub równa wartoôci parametru tekst2).
UWAGA: Rozkaz nie ma parametrów typu LT (mniejszy niû) czy LE
(mniejszy lub równy). Jeôli jest nam potrzebne takie badanie, naleûy
zanegowaê odpowiednio jeden z powyûszych parametrów, jak poniûej:
<l>IF 2 NOT GE 3; oznacza: jeôli 2 jest mniejsze od 3
IF 2 NOT GT 3; oznacza jeôli 2 jest mniejsze lub równe 3
<txt>
* NOT -- operator logiczny (negacja) brany pod uwagë przy porównywaniu
îaïcuchów.
* STRING -- jest to argument w postaci îaïcucha tekstowego. Moûemy
tutaj podaê jako îaïcuch zarówno warunek, na przykîad:
<l> IF n=1 skip end
<txt>jak i nazwë urzâdzenia fizycznego lub logicznego. UWAGA:
Jeôli të nazwë podamy jako zmiennâ doczytywanâ z dysku, a nie
wpisywanâ z klawiatury, wówczas musi byê ona w cudzysîowie.
Porównaj poniûsze przykîady:
************ DO SKÎADU -- PROSZË UWAÛAÊ NA TAGI !!!!!
<l>
;przykîad pierwszy
.key nazwa
IF <nazwa> EQ "Magazyn Amiga"
echo "Masz racjë. Magazyn AMIGA jest wspaniaîy"
else
echo "Dlaczego uwaûasz, ûe najlepszy jest <nazwa>"
endif
<txt> A teraz dla porównania:
<l>
;przykîad drugi
.key úródîo, cel
if "<úródîo>" exists
echo "zastâpiê zbiór <úródîo> zbiorem <cel>"
ask "Tak (Y)/Nie (N)
if warn
copy from <úródîo> to <cel>
endif
else
end
<txt>
* VAL -- z tego parametru korzystamy, gdy w naszym skrypcie majâ
byê badane zmienne ôrodowiskowe. W takim wypadku parametr VAL
wraz z nazwâ zmiennej ôrodowiskowej wystëpuje w miejscu tekstu 1.,
jak na przykîad:
<l> IF VAL $liczba GT 10
* WARN -- jeôli wygenerowany kod bîëdu jest równy 5, warunek jest
speîniony.
UWAGA: Jeôli za pomocâ rozkazu FAILAT ustawimy wczeôniej limit
dla dopuszczalnego kodu bîëdów wyûszy niû 5, 10 lub 20, to
parametry (odpowiednio) WARN, ERROR i FAIL nie zadziaîajâ
wîaôciwie.
<sr>IHELP (I[ntuition] HELP -- "ôciâga" dla Intuition)
<l>skîadnia dla systemu 2.0: IHELP [PRIORITY=>n1<] [CYCLEWINDOW=>n2<]
[MAKEBIG=>n3<] [MAKESMALL=>n4<] [CYCLESCREEN=>n5<] [ZIPWINDOW=>n6<]
<txt>gdzie: n1 oznacza priorytet. Moûna w ten sposób zmieniê
domyôlny priorytet, ustawiony rozkazem Exchange, n2 do n6 zaô to
odpowiednie kombinacje klawiszy (hotkeys), powodujâce dziaîania
okreôlone opcjâ. Domyôlnie odpowiadajâ im kolejne klawisze
funkcyjne od [F1] (CYCLE WINDOW) do [F5] (ZIPWINDOW).
W pozostaîych systemach rozkaz ten nie wystëpuje.
Jest to rozkaz z gatunku Commodity i dlatego nie znajduje sië w
katalogu rozkazowym C. Zasady uruchamiania i dziaîania rozkazów
typu Commodity byîy juû w kilku miejscach opisywane (poczâwszy od
rozkazu Blanker). IHelp powoduje pojawienie sië okna, za pomocâ
którego moûna zmieniê ustawione wczeôniej priorytety i niektóre
ustawienia dotyczâce okien. Szczególnie sâ to:
Cycle window -- kolejne uaktywnianie wszystkich okien.
Makebig -- powiëksza aktywne okno do rozmiarów caîego ekranu.
MakeSmall -- zmniejsza aktywne okno do minimalnej moûliwej wielkoôci.
Cycle screen -- kolejne uaktywnianie ekranów.
Zip window -- pozwala na powiëkszanie aktywnego okna na takiej samej
zasadzie jak w funkcji ZOOM z programów rysunkowych.
<sr>INFO (informacja)
<l>
skîadnia dla systemu 1.2: INFO
skîadnia dla systemu 1.3: INFO [<n1>]
skîadnia dla systemu 2.0, 2.1, 3.0 i 3.1: INFO [[DEVICE]=<n1>]
<txt>gdzie: n1 -- nazwa stacji dysków (np. df0:) lub nazwa zbioru,
o którym chcemy uzyskaê informacjë.
Pozwala na uzyskanie informacji (z poziomu WB) o dyskietce
wîoûonej do stacji df0: lub o programie o podanej nazwie.
W wypadku zastosowania rozkazu bez parametrów uzyskamy pewne
informacje (w zaleûnoôci od konfiguracji Twojego systemu).
Przykîadowo dla A1200 z twardym dyskiem o 4 partycjach i
zamontowanymi stacjami PC0: i DS0: po wîoûeniu dyskietki nagranej
w systemie OFS uzyskamy:
************** tu rysunek dos_1.pcx ***********
wkîadajâc zaô të samâ dyskietkë do stacji nie rozbudowanej Amigi
500 otrzymamy:
************* tu rysunek dos_2.pcx *************
gdzie: UNIT -- oznacza nazwë dysku, SIZE -- wielkoôê
sformatowanego dysku lub partycji w kilobajtach lub megabajtach,
USED -- wielkoôê zajëtego miejsca, mierzonâ w blokach (1 blok to
512 bajtów), FREE -- pozostaîa iloôê wolnego miejsca, takûe w
blokach, FULL -- procent zapeînienia dysku lub partycji, ERRS --
liczba bîëdów na dysku, STATUS -- aktualny stan dysku (moûe tu
byê Read/Write, czyli zapis i odczyt, lub read only -- tylko
odczyt, NAME -- nazwa dysku, VOLUMES AVAILABLE -- dostëpne
urzâdzenia. Jeôli po nazwie wystëpuje sîowo [Mounted], oznacza
to, ûe dane urzâdzenie jest zamontowane.
UWAGA: Urzâdzenie nie zamontowane zjawia sië na takiej liôcie
zazwyczaj wtedy, gdy uruchomimy jakiô program, który uûywa
rozkazu Assign.
Jeôli zaô skorzystamy z parametru, to jeûeli dany dysk jest
zamontowany (lub dostëpny), otrzymamy tylko informacje, odnoszâce
sië do tego dysku,
****************** tu rys dos_3.pcx **************
jeôli natomiast dysk nie jest zamontowany, na przykîad po wpisaniu
<l>INFO DF1:
<txt>a nasza Amiga ma tylko jednâ, wbudowanâ, stacjë dyskietek,
wówczas nie otrzymamy ûadnych informacji.
Przy zastosowaniu jako parametru nazwy dysku zamontowanego, ale
aktualnie "nieobecnego" przez, powiedzmy,
<l>INFO PC0:
<txt>uzyskamy informacjë, ûe dysk chwilowo jest "nieczytelny",
czyli nie jest wîoûony.
***** tu rysunek dos_4.pcx *******
Opcjami rozkazu sâ:
DEVICE -- czyli waûna z punktu widzenia AmigaDOS definicja
urzâdzenia (zostaîo to opisane dokîadnie przy rozkazie ASSIGN).
<sr>INITPRINTER (zainicjalizuj drukarkë)
<l>Skîadnia dla wszystkich systemów: INITPRINTER
<txt>Rozkaz ten nie ma parametrów i znajduje sië w katalogu
systemowym (SYS:Utilities). Moûna go uruchamiaê zatem takûe przez
klikniëcie na jego ikonie spod Workbencha.
Wîaôciwie nie jest on uûywany, bo powoduje inicjalizacjë drukarki
ustawionej w preferencjach (przez reset drukarki i wyczyszczenie
jej bufora). Dotyczy to przewaûnie najstarszych typów drukarek.
Star LC-10 i wszystkie popularne drukarki wyprodukowane póúniej
inicjalizujâ sië automatycznie, jeôli wersja systemu operacyjnego
Amigi jest wyûsza niû 1.2. Przewaûnie operacjë të moûna
przeprowadziê takûe z panelu drukarki.
Ponadto znacznie prostsza jest inicjalizacja drukarki za pomocâ
rozkazu:
<l>COPY coôtam TO PRT:
<txt>Uruchomienie rozkazu nie spowoduje ûadnej akcji na ekranie.
Jeôli drukarka nie jest podîâczona do Amigi lub jest wyîâczona z
sieci, pojawi sië komunikat o bîëdzie, jeôli jest "on-line", po
chwili piônie i bëdzie juû moûna na niej drukowaê.
<sr>INPUT (wprowadú)
<l>skîadnia dla systemów 2.0, 2.1 i 3.0:INPUT [FROM >n1<]
[EDIT|USE|SAVE]
skîadnia dla systemu 3.1:INPUT [FROM >n1<] [EDIT|USE|SAVE] [PUBSCREEN
>n2<]
<txt>gdzie: n1 -- to nazwa zbioru, w którym zapisane sâ
ustawienia wstëpne, (presets), n2 -- nazwa, jakâ chcemy nadaê
ekranowi publicznemu.
W systemach 1.2 i 1.3 rozkaz ten nie wystëpuje.
<l>Wzorzec dla systemów 2.0, 2.1 i 3.0: FROM, EDIT/S, USE/S, SAVE/S
Wzorzec dla systemu 3.1: FROM, EDIT/S, USE/S, SAVE/S, PUBSCREEN/K
<txt>Jest to kolejny rozkaz, znajdujâcy sië w katalogu
preferencji. Pozwala na zdefiniowanie dziaîania urzâdzeï
wprowadzania danych, takich jak klawiatura czy mysz. Po
uruchomieniu rozkazu pojawia sië na ekranie okno jak poniûej:
****** tu rysunek dos_5 ****
Zbiór z danymi zostanie stworzony, jeôli klikniesz na gadûet
SAVE, i domyôlnie bëdzie zapisany w katalogu ENV/Sys pod nazwâ
INPUT.PREFS. Drugi ze zwiâzanych z tym rozkazem zbiorów, podobnie
jak w wypadku wszystkich rozkazów "preferencyjnych", znajduje sië
w katalogu SYS:Prefs/presets i musi tam zostaê zapisany rozkazem
SAVE AS z rozwijanego menu okna INPUT. Menu to ma jeszcze kilka
innych rozkazów, opisanych dokîadnie w ksiâûce "Amiga", wydanej
przez Wydawnictwo LUPUS. Wyûej wymieniony zbiór zawiera
nastëpujâce informacje: prëdkoôê dziaîania myszy, odstëp pomiëdzy
klikniëciami, opóúnienie powtarzania klawiszy, czëstotliwoôê
powtarzania i flagë przyspieszenia myszki.
Parametrami rozkazu sâ:
FROM -- nazwa zbioru (wraz ze ôcieûkâ dostëpu), w którym zapisane
sâ preferencje dla funkcji INPUT.
EDIT -- jeôli zastosujesz ten parametr w skrypcie, wówczas rozkaz
otworzy okno podczas wykonywania takiego skryptu.
USE -- ustawione preferencje bëdâ obowiâzywaîy od momentu uûycia w
skrypcie tego parametru lub (jeôli otworzyîeô okno) od momentu
klikniëcia na gadûet USE.
SAVE -- preferencje ustawione lub wczytane ze zbioru, znajdujâcego sië
w katalogu SYS:Prefs/presets, zostanâ zapisane w zbiorze do katalogu
ENV/Sys. Przykîad:
<l>INPUT FROM SYS/PREFS/PRESETS/INPUT.PREF SAVE
<sr>INSTALL (zainstaluj)
<l>skîadnia dla systemu 1.2: INSTALL [DRIVE] <n1>
skîadnia dla systemu 1.3: INSTALL [DRIVE] <n1> [NOBOOT] [CHECK]
skîadnia dla systemów 2.0, 2.1, 3.0 i 3.1: INSTALL [DRIVE] <n1>
[NOBOOT] [CHECK] [FFS]
<txt>gdzie: n1 -- nazwa stacji dysków, do której wkîadasz
dyskietkë (df0: do df3:) w systemach 3.0 i 3.1 dla Amig
wyposaûonych w gniazdo PCMCIA moûe wystëpowaê tu takûe nazwa
urzâdzenia CC0:
<l>wzorzec dla systemu 1.2: DRIVE/A
wzorzec dla systemu 1.3: DRIVE/A, NOBOOT/S, CHECK/S
wzorzec dla systemów 2.0, 2.1, 3.0 i 3.1: DRIVE/A, NOBOOT/S,
CHECK/S, FFS/S
<txt>Zapisuje w tzw. bootblocku (blok uruchamiajâcy komputer) dane
systemowe, umoûliwiajâce samodzielny start programów po wîoûeniu
dyskietki do dostëpnej stacji dysków (lub z zainstalowanej karty
PCMCIA). Nie moûna zainstalowaê dyskietki nie sformatowanej, nie
powinno sië takûe instalowaê dyskietki zapisanej w standardzie
innym niû AmigaDOS (na przykîad pecetowa czy "nieDOSowska").
Parametrami rozkazu sâ:
DRIVE -- nazwa dysku do instalacji.
NOBOOT -- jeôli uûyjesz tego parametru, a na dyskietce znajduje sië
bootblock, zostanie on usuniëty. UWAGA: Jeôli spróbujesz w ten
sposób zainstalowaê dysk nieDOSowski, wówczas na takim dysku bëdzie
zapisany czysty bootblock, co skutecznie unieszkodliwi znajdujâcy sië
tam program.
CHECK -- sprawdza zgodnoôê danych, zapisanych w bootblocku, ze
standardowym bootblockiem AmigaDOS. Poniewaû bootblock jest
ulubionym miejscem na umieszczanie w nim wirusów przez lamerów
nie potrafiâcych napisaê groúniejszego wirusa, moûna wykorzystaê
të opcjë do wykrycia takiego typu wirusa. Naleûy jednak wykonywaê
to ZAWSZE na kopii podejrzanego dysku. Wiele programów (a
zwîaszcza ich spiracone wersje) ma tak zwany niestandardowy
bootblock. Oznacza to, ûe oprócz potrzebnych danych znajdujâ sië
tam inne informacje, wykorzystywane przez program. Rozkaz INSTALL
z parametrem CHECK potraktuje taki dysk jako niestandardowy. Od
systemu 2.0 w górë rozkaz generuje komunikaty systemowe w oknie
Shella. W omawianym wypadku rozkaz wypisze komunikat:
<l>May not be a standard bootblock
<txt>Nie naleûy jednak od razu byê pewnym, ûe na dysku usadowiî
sië nie zidentyfikowany wirus, i usuwaê go. Przy takiej operacji
mogâ bowiem zostaê wyrzucone z bootblocku wspomniane informacje,
które niejednokrotnie sterujâ pracâ programu, i nasza wspaniaîa
gra bëdzie do zmazania. Przykîad:
<l>install df0: CHECK
<txt>instaluje sformatowany i zainstalowany wczeôniej (rozkazem
INSTALL bez parametrów) dysk, znajdujâcy sië w stacji df0:, i
sprawdza poprawnoôê bootblocku.
Rozkaz INSTALL moûna takûe zastosowaê w skryptach. W takim
wypadku przy napotkaniu niestandardowego bootblocku dla systemów
od 2.1 w gorë zostanie wygenerowany kod WARN. W systemach
starszych naleûy bezwzglëdnie zastosowaê w skryptach
zawierajâcych INSTALL rozkaz FAILAT z parametrem co najmniej 11.
FFS -- parametr ten dziaîa TYLKO w systemach od 2.0 do 2.04 i
powoduje zainstalowanie bootblocku dla Fast File System. W
starszych wersjach systemu nie wystëpuje, w nowszych zostaî
zachowany, ale nie dziaîa.