home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1997 #3
/
amigamamagazinepolishissue03-1
/
ma_1995
/
08
/
ami014.txt
< prev
next >
Wrap
Text File
|
1997-04-07
|
16KB
|
471 lines
System na talerzu (cz. 20.)
---------------------------
AMIGA DOS
<a>Marek Pampuch
<txt>Aby zrozumieê zasady dziaîania kilku nastëpnych rozkazów,
niezbëdna jest teoria. Wiem, ûe to wyjâtkowo lubicie, ale przez
samo automatyczne wklepanie podanych rozkazów na pewno nie
nauczycie sië ich. Aby zapoznaê sië z tâ teoriâ, naleûy sië
cofnâê o parë numerów i przeczytaê opis zmiennych ôrodowiskowych,
zamieszczony przy rozkazie EVAL (jeôli tego jeszcze nie
zrobiliôcie).
Uûytkownicy Amig z systemem 1.2 mogâ natomiast spokojnie sobie to
darowaê. Zmienne ôrodowiskowe bowiem, o których bëdzie mowa, nie
sâ zainstalowane w tej wersji systemu operacyjnego.
<sr>GET (pobierz [zmiennâ ôrodowiskowâ lokalnâ])
<l>skîadnia dla systemów 2.0, 2.1, 3.0 i 3.1 :
GET [NAME=] >n<
<txt>gdzie n jest nazwâ zmiennej.
W systemach 1.2 i 1.3 rozkaz ten nie wystëpuje.
<l>wzorzec dla systemów 2.0, 2.1, 3.0 i 3.1:
NAME/A
<txt>Pozwala na pobranie wartoôci zmiennej ôrodowiskowej
lokalnej. Zmienna ôrodowiskowa lokalna to zmienna, która jest
tworzona podczas pojedynczego zadania i nie jest przechowywana w
katalogu ENV jak zmienne globalne. Poniewaû zmienne lokalne
zostaîy wprowadzone dopiero od systemu 2.0, we wczeôniejszych
wersjach systemu nie ma obsîugujâcych je rozkazów GET i SET.
Naleûy jeszcze zwróciê uwagë na to, ûe w systemie 2.0 GET byî
rozkazem niezbyt dobrze dopracowanym i dopiero od wersji 2.04
zaczâî dziaîaê jak naleûy.
Zmienna lokalna moûe mieê takâ samâ nazwë jak zmienna globalna.
Podczas przeszukiwania listy zmiennych o dwóch takich samych
nazwach moûemy jednak zmieniê priorytet zmiennych. Jeôli
dopiszemy na poczâtku operator $, spowoduje to, ûe najpierw bëdâ
znalezione zmienne lokalne, a dopiero wtedy, gdy ich nie bëdzie
-- zmienne globalne. Przykîad:
<l> SET zmienna lokalna
SETENV zmienna globalna
ECHO "zmienna jest $zmienna"
<txt>Zmiennâ (parametr name) moûemy wpisaê dowolnymi literami.
Jeôli ustawimy zmienne jak poniûej:
<l>SET zmienna lokalna
SETENV zmienna globalna
<txt>to
<l>GET zmienna
<txt>wypisze nam na ekranie
<l>lokalna
<txt>a
<l>GETENV zmienna
<txt>da w efekcie
<l>globalna
<txt>Wynik dziaîania rozkazu GET jest domyôlnie skierowany na
konsolë (ekran). Nic nie stoi jednak na przeszkodzie, aby dokonaê
redyrekcji.
<sr>GETENV (pobierz [zmiennâ ôrodowiskowâ globalnâ])
<l>skîadnia dla systemów 1.3, 2.0, 2.1, 3.0 i 3.1 :
GETENV [NAME=] >n<
<txt>gdzie n jest nazwâ zmiennej
W systemie 1.2 rozkaz ten nie wystëpuje
<l>wzorzec dla systemów 1.3, 2.0, 2.1, 3.0 i 3.1:
NAME/A
<txt>Pozwala na pobranie zmiennej ôrodowiskowej globalnej (czyli
zmiennej ustawionej przez SETENV). Dziaîa w sposób taki sam jak
opisane wyûej GET. Czësto jest uûywana takûe do niebezpoôredniego
okreôlania danych, na przykîad, jeôli po wpisaniu:
<l>SETENV zmienna 5
SETENV licz zmienna
<txt>zechcemy mieê zmiennâ bezpoôredniâ, wpisujemy:
<l>getenv zmienna
<txt>lub
<l>getenv licz
<txt>a dla zmiennej poôredniej wpiszemy
<l>getenv $licz
<txt>UWAGA: Nieumiejëtne stosowanie parametru $ w rozkazie GETENV
moûe spowodowaê zmiany w wartoôciach domyôlnych zmiennych
systemowych (pamiëtajmy o tym, ûe na przykîad DELETE dElEtE czy
delete -- dla rozkazu oznacza to samo), a to spowoduje wîâczenie
sië dodatkowego, nie uwzglëdnionego w instrukcjach, trybu grafiki
ekranowej. Nie bëdzie to jednak efekt poûâdany przez uûytkownika.
<sr>GRAPHICDUMP ("zrzut" grafiki)
<l>skîadnia dla systemu 1.2: GRAPHICDUMP
skîadnia dla systemów 1.3, 2.0, 2.1, 3.0 i 3.1:
GRAPHICDUMP [par]
<txt>gdzie w miejsce par wpisujemy jeden z poniûszych parametrów:
tiny, small, medium, large, x:y.
Uûycie tego rozkazu spowoduje "zrzucenie" aktualnej zawartoôci
ekranu na drukarkë po 10 sekundach od wprowadzenia rozkazu (na
przykîad przez dwukrotne klikniëcie na ikonie rozkazu,
znajdujâcego sië w katalogu SYSTEM: TOOLS).
Po co taka zwîoka? Przypuôêmy, ûe nasza drukarka jest wspaniaîa,
niestety, ks. Pikul nie napisaî do niej jeszcze sterownika. A
tymczasem potrzebujemy pilnie wydrukowaê tekst, napisany na
przykîad Final Writerem. A zatem najpierw uruchamiamy z
Workbencha Final Writer i piszemy, co nam ôlina na klawisze
przyniesie. Nastëpnie naciskajâc jednoczeônie klawisze [Amiga] i
[M] wracamy na ekran Workbencha, z którego uruchamiamy
GRAPHICDUMP (klikniëciem na ikonie lub wpisujâc rozkaz z poziomu
Shella). Teraz mamy 10 sekund na to, aby (za pomocâ klawiszy
[Amiga] i [M]) wróciê do ekranu Final Writera. W tym czasie zdâûy
nawet "siîa spokoju".
Uruchamiajâc rozkaz z CLI/SHELLA moûemy skorzystaê z dodatkowych
parametrów. Oznaczajâ one:
TINY -- szerokoôê wydruku wyniesie 1/4 szerokoôci dopuszczanej
przez drukarkë. Wysokoôê bëdzie obliczona tak, aby zachowaê
stosunek szerokoôci i wysokoôci obrazka (aspect ratio). Oznacza
to, ûe wydruk bëdzie wielkoôci êwiartki oryginaîu.
SMALL -- jak wyûej, tyle ûe szerokoôê bëdzie równa poîowie
szerokoôci oryginaîu.
MEDIUM -- podobnie, z tym ûe szerokoôê bëdzie ustawiona na 3/4
szerokoôci oryginaîu.
LARGE -- oryginaî bëdzie wydrukowany z maksymalnâ szerokoôciâ, na
jakâ pozwala drukarka. Ten parametr jest ustawiony domyôlnie.
xx:yy -- jeôli w miejsce xx podasz szerokoôê, a w miejsce yy --
wysokoôê w pikselach, bëdziesz mógî otrzymaê dowolne wymiary
wydruku (oczywiôcie w granicach dopuszczanych przez drukarkë).
Obie liczby muszâ byê oddzielone dwukropkiem, na przykîad:
<l>GRAPHICDUMP 600:300
<txt>Pamiëtaj przy tym, ûe piksel ekranowy i piksel drukarki to
zupeînie nie to samo.
UWAGA: jeôli chcemy, aby GRAPHIC DUMP zastosowaîo jakikolwiek z
powyûszych parametrów, musimy wczeôniej, w preferencjach, ustawiê
opcjë LIMITS wydruku na parametr IGNORE. W przeciwnym bowiem
razie bez wzglëdu na to, co wpiszemy przy GRAPHICDUMP, powstanie
wydruk z parametrami ustawionymi w preferencjach.
Wyjâtkowo zabawny rezultat daje teoretycznie moûliwa próba
wykorzystania rozkazu do zrzucania ekranów. Jeôli bowiem
wpiszemy:
<l>CMD >RAM:OBRAZEK
GRAPHICDUMP
<txt>to po kilkudziesiëciu sekundach pojawi sië komunikat, ûe sâ
problemy z drukarkâ. Jeôli jednak zignorujemy go i zajrzymy do
RAM-u, to bëdzie tam zbiór "obrazek", tyle ûe bëdzie on zawieraî
instrukcjë posîugiwania sië rozkazem CMD! (Wszystkim ewentualnym
krytykom zwracam uwagë, ûe mogîem opuôciê nazwë urzâdzenia w
rozkazie, bo domyôlnie jest przyjëta nazwa urzâdzenia parallel, a
taka jest moja drukarka.) Jeôli natomiast wprowadzimy redyrekcjë
jako tool type w ikonie, obrazek zostanie zapisany na RAM-dysku,
ale w formacie uniemoûliwiajâcym odtworzenie go na czymkolwiek
(chyba ûe za pomocâ rozkazu COPY TO PRT:).
<sr>ICONEDIT (Edytor ikon)
<l>skîadnia dla systemów 2.1, 3.0 i 3.1: ICONEDIT
Rozkaz nie ma parametrów
<txt>Wywoîuje edytor ikon. Nie ma ûadnych parametrów. Të samâ
czynnoôê moûna wykonaê z poziomu Workbencha, klikajâc na ikonie
IconEdit w szufladzie preferencji. Na ekranie pojawi sië menu
edytora ikon. Sposób obsîugi takiego edytora opisany jest w
Magazynie AMIGA nr 12/93 i w ksiâûce "Amiga", wydanej przez
Wydawnictwo LUPUS.
<sr>ICONTROL (I[ntuition] Control -- preferencje Intuition)
<l>skîadnia dla systemu 2.0: ICONTROL [[FROM=] >n1< [EDIT] [USE] [SAVE]
skîadnia dla systemów 2.1, 3.0 i 3.1: ICONTROL [[FROM=] >n1< [EDIT]
[USE] [SAVE] [PUBSCREEN= >s<]
<txt>gdzie n1 to nazwa zbioru, w jakim zapisane sâ preferencje, s
zaô to nazwa ekranu publicznego, na jakim majâ zostaê otwarte.
<l>wzorzec dla systemu 2.0: FILE/A, EDIT/S, USE/S, SAVE/S
wzorzec dla systemów 2.1, 3.0 i 3.1: FILE/A, EDIT/S, USE/S, SAVE/S,
PUBSCREEN/K
<txt>w systemach 1.2 i 1.3 rozkaz ten nie wystëpuje.
Pozwala na ustawienie preferencji dla Intuition. Obejmujâ one
niektóre opcje klawiatury przy obsîudze komunikatów systemowych
(requesterów), niektóre parametry dla wyôwietlania i dla menu
itp.
Rozkaz znajduje sië w katalogu SYS: Prefs. Uruchomienie IControl
powoduje, ûe pojawa sië okno edytora. Ustawione nim preferencje
mogâ byê uûywane (USE) do momentu zresetowania lub wyîâczenia
komputera lub zapisane na dysku w formacie IFF. Domyôlne nazwy
zbiorów to prefs/ENV-archive/Sys/icontrol.prefs oraz
prefs/presets/icontrol.pre.
Zbiory te moûna oglâdaê w sposób identyczny z podanym w opisie
rozkazu FONT. Wystarczy zmieniê nazwë zbioru i ôcieûkë. Zbiór
ICTL moûe byê takûe wczytany za pomocâ rozkazu ICONTROL i
poprawiony. Wartoôci znajdujâce sië w tym zbiorze to:
<l>Verify timeout (sprawdzanie czasu odîâczania urzâdzeï),
Mouse screen drag bits (bity do zapamiëtania przesuwania ekranów za
pomocâ myszki),
Coercion lower nybble, (niûszy bit koercji),
Workbench to front qualifier (okreôlenie klawisza, który wysuwa
naprzód ekran Workbencha),
Front screen to back qualifier (okreôlenie klawisza, który bëdzie
chowaî aktywny ekran),
Requester OK qualifier (okreôlenie klawisza, który przy
komunikacie systemowym bëdzie dziaîaî jak klikniëcie na OK),
Requester cancel qualifier (okreôlenie klawisza, który przy
komunikacie systemowym bëdzie dziaîaî jak klikniëcie na gadûet
wycofania sië),
Screen scroller (okreôlenie klawisza przesuwajâcego ekran),
Force no lace (programowe wyîâczenie interlejsu) -- dziaîa tylko
na monitorach, które majâ takâ moûliwoôê,
Preserve color (wymuszenie zachowania kolorów),
Force screen mode (wymuszenie zachowania trybu graficznego),
Menu memory (pamiëê dla menu ekranu).
UWAGA: Funkcje te sâ przeznaczone dla zaawansowanych programistów
i nie radziîbym z nimi eksperymentowaê
Parametrami rozkazu sâ:
FROM -- okreôla ôcieûkë dostëpu i nazwë zbioru z preferencjami
ICONTROL;
EDIT -- otwiera okno umoûliwiajâce wprowadzenie zmian;
USE -- pozwala na korzystanie z ustawieï wczytanych rozkazem
ICONTROL do momentu wyîâczenia komputera lub zresetowania go;
SAVE -- pozwala na zapisanie preferencji w katalogu
prefs/ENV-archive/Sys.
<sr>ICONX (ICON [e]X[ecute] -- uruchamianie zbioru za pomocâ ikony
<l>Skîadnia dla systemów 1.3, 2.0, 2.1, 3.0 i 3.1: ICONX
<txt>w systemie 1.2 rozkaz ten nie wystëpuje.
Jest to jedyny rozkaz AmigaDOS, który da sië uruchomiê...
wyîâcznie z poziomu Workbencha. Moûna powiedzieê, ûe jest on
"pomostem" pomiëdzy Workbenchem a AmigaDOS, poniewaû pozwala na
uruchomienie, napisanej w AmigaDOS, sekwencji rozkazów za pomocâ
ikony typu Project. Kiedy, po co i jak przygotowaê takâ sekwencjë
(skrypt) do uruchamiania za pomocâ ikony?
Najprostszym i najczëôciej uûywanym zastosowaniem jest sytuacja,
gdy mamy jakiô zbiór, napisany w postaci "wykonywalnej" (na
przykîad "moondemo.exe". Moûna oczywiôcie wówczas wpisaê w Shellu
nazwë tego zbioru i nacisnâê [Return], moûna tez uruchomiê go w
inny sposób (na przykîad opcjâ EXECUTE z Directory Opusa). Jednak
najbardziej eleganckim rozwiâzaniem bëdzie stworzenie piëknej
ikonki (powiedzmy, z ksiëûycem) i napisanie wyjâtkowo
skomplikowanego skryptu, skîadajâcego sië z jednego wiersza, a
nastëpnie poîâczenie tego wszystkiego w caîoôê za pomocâ IconX.
Bierzmy sië zatem do roboty.
Tworzymy (dowolnym edytorem ikon albo programem majâcym takie
moûliwoôci, jak ImageFX czy Personal Paint) ikonë i zapisujemy jâ
na dysku pod dowolnâ nazwâ z rozszerzeniem .info. Ikona musi byê
typu Project. Jeôli nie wiecie, jak sië tworzy tego typu ikony,
najlepiej najpierw skopiowaê dowolnâ ikonë takiego typu (od
jakiegokolwiek programu) i pozmieniaê jâ wspomnianymi programami
wedle gustu.
Teraz dowolnym edytorem piszemy skrypt majâcy uruchamiaê nasz
zbiór, na przykîad:
<l>moondemo.exe
<txt>i zapisujemy go na dysku pod takâ samâ nazwâ, jakâ ma ikona
(juû bez rozszerzenia).
Nastëpnie przechodzimy do Workbencha, znajdujemy naszâ ikonë,
klikamy na niej raz, a nastëpnie z menu Workbencha wybieramy
opcjë INFO (dla systemu 1.3) lub Information (dla pozostaîych
systemów). Pojawi sië okno. Znajdujemy w nim pole, podpisane
DEFAULT TOOL, i wpisujemy w nim:
<l>C:ICONX
<txt>a nastëpnie zapisujemy opcjâ SAVE tak poprawionâ ikonë.
Oczywiôcie sposób taki moûna zastosowaê do dowolnego skryptu
AmigaDOS. Nie zawsze uda sië natomiast bezpoôrednie uruchomienie
w taki sposób zbioru binarnego. Wystarczy bowiem, ûe bëdzie on
otwieraî wîasny (niepubliczny) ekran i juû IconX nie zadziaîa.
Moûemy natomiast wzbogaciê nasz skrypt. Przykîadowo, jeôli
najpierw przygotujemy "preset", zmieniajâcy paskudny systemowy
topaz na jakâô îadniejszâ czcionkë, moûemy dopisaê (przed
rozkazem uruchamiajâcym ikonë):
<l>SYS:Prefs/Font FROM SYS:Prefs/presets/font.pre USE
<txt>Jeôli natomiast chcemy nadaê naszej aplikacji wysoki
priorytet, moûna uzupeîniê skrypt o:
<l>CHANGETASKPRI 5
<txt>IconX pozwala na stosowanie w skryptach dowolnego rozkazu
AmigaDOS, a zatem to, w jaki sposób zgîosi sië nasz program,
bëdzie zaleûaîo tylko od Was.
Moûna dodatkowo zmieniê parametry okna, jakie otworzy sië po
wywoîaniu skryptu rozkazem ICONX. Nie jest to jednak moûliwe z
poziomu AmigaDOS, a tylko spod Workbencha. W tym celu trzeba
kliknâê raz na ikonë, którâ chce sië przypisaê do swojego
skryptu, i uûyê opcji INFO (dla systemu 1.2 i 1.3) lub
INFORMATION (dla pozostaîych systemów) z menu na poprzeczce
tytuîowej. Do rubryki TOOL TYPES moûna wpisaê w kolejnych
wierszach:
<l>WINDOW=>opis okna<
<txt>gdzie w miejsce opisu okna moûesz podaê dowolny prawidîowy
opis okna AmigaDOS, na przykîad:
<l>WINDOW=CON:0/0/100/200/Instalacja
<txt>czy
<l>WINDOW=AUX:
<txt>UWAGA: Poniewaû wpisywanie odbywa sië tu nie z poziomu
AmigaDOS, a z poziomu Workbencha, naleûy zwróciê uwagë, ûe w tym
miejscu komputer zareaguje na "niewîaôciwâ" wielkoôê czcionki (to
znaczy, gdy coô, co ma byê duûâ literâ, napiszemy maîâ czy
odwrotnie).
Czasem chcemy, aby nasze okno pozostaîo jakiô czas na ekranie. W
tym celu w opisie skorzystamy z parametru.
<l>DELAY=>pp<
<txt>gdzie w miejsce "pp" wpiszemy czas, okreôlony liczbâ ramek
obrazu (1/50 sekundy), jaki ma upîynâê przed zamkniëciem tak
zdefiniowanego okna. Jeôli podamy jako "ss" wartoôê 0, okno
zniknie dopiero wówczas, gdy zostanie naciôniëta kombinacja
klawiszy [Ctrl][C].
Przykîadowo -- jeôli chcemy, aby nasze okno zniknëîo po 5
sekundach, wpisujemy DELAY=250.
Od systemu w wersji 2.1 wîâcznie moûna korzystaê z dodatkowych
parametrów, okreôlajâcych otwierane przez ICONX okno. Sâ to:
STACK=>nnnn< -- pozwala na zdefiniowanie wielkoôci stosu dla
uruchamianego z ikony programu. Jeôli opuôcimy ten parametr,
wówczas domyôlnie zostanie przyjëta wartoôê 4096 (a dla wielu
programów to zbyt maîo).
USERSHELL -- pozwala na uruchomienie programu, korzystajâcego z
innego Shella niû firmowy. Przykîad:
<l>USERSHELL=YES
<txt>WAIT=>ss< róûni sië od opisanego wczeôniej parametru DELAY
tym, ûe tu czas podajemy w caîych sekundach, a zatem zamiast
DELAY=250 moûemy uûyê WAIT=5, co da taki sam efekt.
Ponadto w systemach 2.1, 3.0 i 3.1 definicja Tool Type,
opisujâcego okno, jest nieco rozbudowana. Dodatkowe parametry w
opisie okna to:
AUTO -- jeôli zastosujemy ten parametr, wówczas okno zostanie
otwarte tylko wówczas, gdy nasz skrypt wypuszcza cokolwiek na
ekran. Jeôli natomiast wykonuje on jakieô rozkazy "niewidoczne"
(na przykîad FIXFONS), wówczas okno nie zostanie otwarte.
Przykîad:
<l>WINDOW CON:0/0/100/100/Moje_okno/AUTO
<txt>CLOSE -- okno otwarte przez ICONX z tym parametrem bëdzie
miaîo gadûet zamykajâcy to okno. Parametr ten jest przyjëty
domyôlnie w opisie okna, moûna go zatem opuôciê.
WAIT -- parametr ustawiony domyôlnie. Okno otwarte przez IconX
bëdzie na ekranie tak dîugo, dopóki bëdzie wykonywany skrypt.
Oczywiôcie pod warunkiem, ûe nie ustalimy innego czasu za pomocâ
Tool Type DELAY lub WAIT (swojâ drogâ, jestem ciekaw, co to za
geniusz nazwaî tak samo dwie róûne opcje tego samego rozkazu).
IconX ma jeszcze jedno, doôê szokujâce, zastosowanie. Jeôli
rozpoczniemy nasz skrypt wierszem, w którym bëdzie sië znajdowaî
tylko symbol:
<l>.KEY
<txt>wówczas ze skryptu dla IconX bëdziemy mogli uruchamiaê takûe
i te programy, które juû majâ swoje ikony! Nazwy takich programów
bëdâ wówczas traktowane jako zmienne. Po co to komu? --
pomyôlicie. Wbrew pozorom jest to wyjâtkowo poûyteczne, jeôli na
przykîad ikona jakiegoô programu ma juû caîkowicie wypeînione
pole dla Tool Types (spotkaîem sië juû z takimi programami), a
koniecznie trzeba dopisaê mu jeszcze jakiô inny.