Jeden z najważniejszych, o ile nie najważniejszy, z rozkazów ADOS (zwłaszcza dla posiadaczy twardego dysku). Przez zmianę przypisania pozwala zainstalować program w miejscu, w którym MY chcemy, aby się znajdował. ASSIGN potrafi jednak o wiele więcej. W zależności od użytych parametrów możemy sterować działaniem rozkazu.
ASSIGN ( przypisz )
Składnia dla systemu 1.2 - ASSIGN [[ NAME= ] >nu< ] [[ TARGET= ] >nz< ] [ LIST ]
Składnia dla systemu 1.3 - ASSIGN [[ NAME= ] >nu< ] [[ TARGET= ] >nz< ] [ LIST ] [ EXISTS ] [ REMOVE ]
Składnia dla systemów 2.0, 2.1, 3.0, 3.1 :
ASSIGN [[ NAME= ] >nu< ] [[ TARGET= ] >nz< ] [ LIST ] [ EXISTS ] [ REMOVE ] [ DISMOUNT ]
[ DEFER ] [ PATH ] [ ADD ] [ VOLS ] [ DIRS ] [ DEVICES ]
Gdzie : nu - nazwa dysku lub urządzenia, które chcemy przypisać, nz - nazwa katalogu, do którego przypisujemy. Wzorce dla parametrów :
Wzorzec dla systemu 1.2 - ASSIGN NAME, TARGET/M, LIST/S
Wzorzec dla systemu 1.3 - ASSIGN NAME, TARGET/M, LIST/S, EXISTS/S, REMOVE/S
Wzorzec dla systemów 2.0, 2.1, 3.0, 3.1 :
ASSIGN NAME, TARGET/M, LIST/S, EXISTS/S, REMOVE/S,
DISMOUNT/S, DEFER/S, PATH/S, ADD/S, VOLS/S, DIRS/S, DEVICES/S
ASSIGN - użyty bez parametrów, wypisze nam listę wszystkich przypisań dla aktualnego dysku,
ASSIGN - użyty tylko z nazwą urządzenia, np. ASSIGN RAM: - wypisze komunikat o błędzie (w tym przypadku: Can't cancel RAM:) i wróci, bez żadnych konsekwencji, do znaku zachęty (Prompt).
Podstawowe działanie ASSIGN - przypisywanie - uzyskamy wówczas, gdy użyjemy go zarówno z nazwą przypisywanego urządzenia, jak i z nazwą katalogu, do którego chcemy go przypisać. Przypuśćmy, że nasza ulubiona gra "SkinPower" mieści się na dwóch dyskietkach. Ponieważ właśnie staliśmy się szczęśliwymi posiadaczami twardego dysku, chcemy ten fakt wykorzystać, aby uwolnić się od ciągłej "dyskoteki". Zakładamy zatem na dysku katalog SKIN i przegrywamy do niego zawartość obu dyskietek (oczywiście możliwe jest to wówczas, gdy gra jest "dosowska", to znaczy da się przeczytać rozkazem DIR DF0: katalog obu dyskietek).
Tuż po rozpoczęciu gry uruchomionej z twardego dysku czeka nas niemiła niespodzianka w postaci napisu "Please insert Game Disk 2...". Co gorsza, po chwili komputer może także zażądać ponownego włażenia dysku numer 1. Czyżby zatem nasza praca poszła na marne ? Nie! Wystarczy tylko w sekwencji startowej dla twardego dysku dopisać na końcu dwa wiersze :
ASSIGN GameDisk1: DH0:SKIN
ASSIGN GameDisk2: DH0:SKIN
aby wszystko było w porządku. UWAGA: W miejsce GameDisk1 i GameDisk2 należy wpisać etykiety odpowiednich dyskietek.
Podobny "trik" można także zastosować przy upychaniu zawartości dwóch dyskietek na jednej (na przykład dopisując instrumenty z dysku ST-01 na dysk główny z trackerem - ST-00). Użytkownicy systemów 2.1 i wyższych mają możliwość uniknięcia "zaśmiecania" sobie sekwencji startowej dodatkowymi rozkazami. Powinni oni powyższe wiersze dopisać do zbioru "User-Startup", który także znajduje się w katalogu S.
W ten sam sposób można przypisać określony katalog do urządzenia logicznego. W tym wypadku przypisanie musi jednak spełniać pewne warunki, tzn.
- w nazwie ścieżki nie wolno używać wzorca;
- ścieżka urządzenia które przypisujemy, musi być pełna. Jeśli przypisujemy podkatalog, znajdujący się bezpośrednio w katalogu głównym aktualnie używanego dysku, wówczas jego nazwa powinna zaczynać się dwukropkiem, na przykład :
ASSIGN FONTS: :FONTS
Jeśli chcemy przypisać urządzeniu katalog aktualny, to można się posłużyć opisanym wcześniej "pustym" cudzysłowem, na przykład :
ASSIGN WORK: ""
Działanie pozostałych parametrów poznamy na podstawie kolejnych przykładów :
ASSIGN LIST
Ten parametr ustawiony jest domyślnie. Wypisuje listę wszystkich przypisań. Czym zatem różni się od "pustego" ASSIGN ? Tym, że jesli użyjemy go z nazwą istniejącego już przypisania, przypisanie to zostanie usunięte. Na przykład jeśli podamy rozkaz :
ASSIGN T: LIST
to przy kolejnym użyciu rozkazu ASSIGN katalog T: nie będzie już do niczego przypisany.
Jeśli chcemy się zabezpieczyć przed takimi konsekwencjami, wówczas musimy użyć tego rozkazu ASSIGN razem z parametrem EXISTS i wówczas zadziała on tak, jak opisano przy EXISTS.
UWAGA : Rozkaz w systemie 1.2 potrafi wyświetlać tylko trzyliterowe nazwy urządzeń. Dłuższe nazwy będą obcinane. W pozostałych systemach mozna wyświetlać nazwy urządzeń o długości do 31 znaków.
ASSIGN TEXT: EXISTS
sprawdza, czy urządzenie logiczne o nazwie TEXT: zostało przypisane do jakiegoś katalogu na dysku. Jeśli tak, to w wyniku otrzymamy jego lokalizację, na przykład :
WorkBench 3.0:ROBOCZY/TEXT
jeśli zaś nie jest przypisane, to dla systemu 1.3 i 2.0 pojawi się znak zachęty (Prompt), natomiast w systemach 2.1, 3.0 i 3.1 otrzymamy dodatkowo komunikat, w tym przypadku :
TEXT: not assigned
Kolejnym parametrem jest REMOVE. Rozkaz ASSIGN z tym parametrem pozwala na usunięcie wszystkich przypisań, które wykonane są wielokrotnie. Przypisania "zdublowane" zaznaczone są w spicie katalogów znaczkiem "+" przy nazwie katalogu. Na przykład jeśli :
ASSIGN TEXT:
wyświetli nam na ekranie :
Workbench 3.0:ROBOCZY/TEXT:
+ RAM:NOWYTEXT
będziemy mogli usunąć nadmiarowe przypisane przez :
ASSIGN TEXT: RAM:NOWYTEXT REMOVE
Korzystanie z rozkazu ASSIGN z parametrem DISMOUNT może być niebezpieczne, zalecałbym zatem dużą ostrożność przy jego stosowaniu. Najlepiej jednak nie stosować go w ogóle. Parametr ten spowoduje bowiem "odmontowanie" danego dysku. Wprawdzie nastąpi to tylko "logicznie", a nie fizycznie, czyli dyski nadal będą czytane i zapisywane. Dzieje się tak dlatego, że każde urządzenie ma właściwie dwie nazwy, na przykład do dysku systemowego włożonego do stacji df0: można się odwoływać zarówno "fizycznie", przez nazwę stacji (DF0:), jak i "logicznie", przez nazwę dysku, na przykład Workbench 1.3D. Nie wiadomo jednak, czy nie spowoduje to jakichś komplikacji w wypadku programów komercyjnych (wolałem tego nie sprawdzać, sorry). Przykładowo :
ASSIGN DF2: DISMOUNT
spowoduje wyrzucenie z listy zamontowanych urządzeń stacji dysków DF2: "Odmontowane" dyskietki można ponownie zamontować rozkazem DISKCHANGE (będzie opisany dalej) lub przez reset z klawiatury. W przypadku twardego dysku, lub jego partycji, pozostaje tylko ten drugi sposób.
Następny parametr DEFER spełnia bardzo pożyteczną funkcję, którą najwygodniej będzie omówić od razu na przykładzie. Przypuśćmy, że chcemy dysk o nazwie FishDisk111 przypisać do urządzenia logicznego o nazwie PublicDomain. Oczywiście wiemy już, jak to zrobić. Wpisujemy :
ASSIGN PublicDomain: FishDisk111
Wszystko będzie pięknie, jeśli powyższy wiersz umieścimy w sekwencji startowej twardego dysku (lub w zbiorze User-Startup na takim dysku), a zawartość dysku zapiszemy w odpowiednim miejscu na "twardzielu". Jeśli jednak pracujemy wyłącznie na dyskietkach, przy każdym uruchomieniu komputera pojawia się napis:
Please inster volume Public Domain in any drive
Mało to przyjemne, prawda? Możemy temu zapobiec dopisując jedno słówko na końcu, Nasz rozkaz będzie teraz wyglądał tak :
ASSIGN PublicDomain: FishDisk111: DEFER
W takim wypadku prośba o włożenie dyskietki pojawi się dopiero wówczas, gdy wyraźnie zażyczymy sobie urzą "PublicDomain". Na liście przypisań przypisania dokonane z parametrem DEFER będą znajdować się w nawiasach trójkątnych. W nawiasach kwadratowych natomiast znajdą się przypisania dokonane z kolejnym parametrem [ PATH ]. Parametr ten działa bardzo podobnie do DEFAR, z tą różnicą, że przypisanie zostaje zlikwidowane w momencie, gdy użyjemy nazwy ścieżki takiej samej, jak w przypisaniu, podczas gdy odwołanie do urządzenia zdefiniowanego przez DEFER nie likwiduje przypisania. Przykładowo : jeśli przypiszemy stacji "pseudopecetowej" nazwę "niepseudopecetową" przez :
ASSIGN A: PC0: PATH
to dopóki nie wpiszemy, choćby przez zapomnienie, rozkazu typu "dir pc0:", stacja ta będzie jak stacja A:
Kolejny parametr - ADD - pozwala na dodanie nowych przypisań. Może to być przydatne choćby wówczas, gdy użyliśmy niechcący opcji LISTS (patrz opis wyżej) i usunęliśmy jakieś ważne przypisanie. Ratunkiem na :
ASSIGN C: LIST
może być właśnie przykładowo :
ASSIGN C: DF1:C ADD
Pozostały nam jeszcze trzy, dość często stosowane (zwłaszcza przy twardych dyskach, gdy nie wszystko chce się mieścić na ekranie) parametry, te to :
ASSIGN VOLS
W wyniku otrzymamy listę zamontowanych urządzeń (na przykład twardych dysków czy partycji na tych dyskach).
ASSIGN DEVICES
spowoduje wypisanie listy wszystkich zamontowanych urządzeń (jest to część pełnej listy przypisań wyświetlanej po użyciu ASSIGN bez parametrów, co opisano wyżej).
ASSIGN DIRS
Na ekranie zostanie wyświetlona lista wszystkich "przypisanych" katalogów.
AUTOPOINT
Jest to jeden z programów typu Commodity (pozostanę przy tym terminie, ponieważ lansowane szeroko spolszczenie "udogodnienia" nie odpowiada mi. Być może dla forsujących tę nazwę commodities są udogodnieniami, dla mnie jednak wprost przeciwnie, nazywanie ich jednak "utrudnieniami" byłoby równie śmieszne).
Jak już niektórzy z Czytelników, (a zwłaszcza ci, którzy czytali słynny numer "wrześniowy z października" Magazynu Amiga) Wiedzą, każde commodity (w tym i AutoPoint) można uruchomić z poziomu Workbencha, czyli za pomocą ikony. Można także uruchomić mikrorozkaziki z poziomu AmigaDOS, co jest niejednokrotnie wygodniejsze.
Składnia dla systemów 2.0, 2.1, 3.0, i 3.1 jest identyczna : AUTOPOINT [CX_Priority = >n<]
Gdzie : n - określa priorytet rozkazu AutoPoint w stosunku do priorytetu pozostałych commodities. Nie należy tego mylić z ogólnym priorytetem systemowym. Wartość n dla tego rozkazu można teoretycznie zmieniać w zakresie od -255 do 255, jednak już przy wartościach z pobliża 20 procedura ta bardzo obciąża procesor, zatem nie zalecam stosowania wartości większej niż 6 (domyślnie jest tu ustawione 0).
Ta commodity spowoduje automatyczne uaktywnianie się każdego okna, na które najedzie wskaźnik myszki bez potrzeby klikania na to okno). Należy jej jednak używać rozważnie. Można ją wprawdzie uruchomić wpisując samą nazwę rozkazu (i naciskając klawisz [RETURN], ale w ten sposób zostaniemy odcięci od dostępu do Shella). Lepiej zatem uruchamiać ten rozkaz w innym tasku (na przykład przez RUN). Jeśli jednak zapomnimy o tym, zawsze możemy przerwać działanie AutoPoint naciskając jednocześnie klawisze [CTRL] i [E]. Najlepiej jednak skorzystać z poznanych już rozkazów redyrekcji i ALIAS i dopisać do sekwencji startowej (lub zbioru user-starup) wiersz :
ALIAS AUTO RUN >NIL: AutoPoint
AVAIL (dostępny)
W systemie 1.2 rozkaz nie występuje. Składnia dla systemu 1.3 - AVAIL [CHIP] [FAST] [TOTAL]
Składnia dla systemu 2.0, 2.1, 3.0, 3.1 - AVAIL [CHIP] [FAST] [TOTAL] [FLUSH]
Wzorzec parametrów dla systemu 1.3 - AVAIL CHIP/S FAST/S TOTAL/S
Wzorzec parametrów dla systemu 2.0, 2.1, 3.0 i 3.1 - AVAIL CHIP/S FAST/S TOTAL/S FLUSH/S
Użyty bez parametrów wyświetla na ekranie informację dotyczącą orientacyjnej ilości aktualnie dostępnej pamięci komputera. Kolejne kolumny oznaczają : ( type ) typ pamięci, całkowitą ilość dostępnej pamięci dla amigi w danej konfiguracji - ( available ), ilość pamięci aktualnie używanej przez uruchomione programy i procedury, na przykład Workbench - ( inuse ), ilość pamięci, jaka pozostała do dyspozycji w całości - ( maksimum ) lub w największym bloku tzw. pamięci ciągłej ( largest ). Ta ostatnia wartość jest najważniejsza. Całkowita ilość wolnej pamięci składa się bowiem z tego bloku oraz z "okruchów" pamięci leżących na jego peryferiach. Większość programów nie lubi się "rozdrabniać" i musi być w całości "wpakowana" właśnie do tego bloku.
A zatem może się zdarzyć, że program wymaga 2 MB pamięci, a Ty masz jej dostępnej 2,3 MB, niestety - ponieważ "ciągła pamięć" ma 1998 KB - rozrzucone zaś resztki 302 KB program nie zadziała. Jedynym sposobem na "scalenie" tak poszatkowanej pamięci bywa, niestety, reset z klawiatury.
Poszczególne parametry rozkazu spowodują :
AVAIL CHIP
wypisana zostanie jedynie wielkość aktualnie dostępnej pamięci Chip (na przykład 1972912). Jeśli w naszej Amidze jest zainstalowana pamięć typu Slow, to jej wielkość zostanie tutaj doliczona
AVAIL FAST
wypisana zostanie jedynie wielkość aktualnie dostępnej pamięci Fast (na przykład 0).
AVAIL TOTAL
wypisana zostanie jedynie maksymalna całkowita wielkość dostępnej pamięci (na przykład 835272)
AVAIL FLUSZ
wielkość pamięci zostanie podana w podobny sposób, jak przy AVAIL użytym bez parametów, jednak wartości podane w ten sposób różnią się nieco od wartości wyświetlanych rozkazem bez parametrów. Sś nieco większe. Dlaczego? W pamięci "równolegle" zajmują nieco miejsca także biblioteki i urządzenia (devices). Nie zewszystkich aktualnie korzystamy, jednak nie wszystkie zdążyły się jeszcze odłączyć. Podanie FLUSH doliczy do ilości wolnej pamięci ilość zajętą przez te biblioteki i urządzenia, które są już niepotrzebne. W wypadku pracy "na granicy pamięci" należy jednak kierować się wskazaniami "gołego" AVAIL.
A2024 ( przyłącz monitor 2024 )
Składnia dla systemu 2.0, 2.1, 3.0
A2024 [HBSTRT= >n<] [HBSTOP= >n1<] [HSSTRT= >n2<] [HSSTOP= >n3<] [VBSTRT= >n4<] [VBSTOP= >n5<]
[VSSTRT= >n6<] [VSSTOP= >n7<] [MINROW= >n8<] [MINCOL= >n9<] [TOTROWS= >n0<] [TOTCLKS= >m<] [BEAMCON0= >m1<]
Wzorzec parametrów :
HBSTRT/K, HBSTOP/K, HSSTRT/K, VBSTOP/K, VSSTRT/K,
VSSTOP/K, MINROW/K, MINCOL/K, TOTROWS/K, TOTCLKS/K, BEAMCON0/K
W pozostałych systemach nie występuje, a w 2.0, 2.1, 3.0, rozkaz ten pozwala na podłączenie monochromatycznego monitora A2024 umożliwiającego uzyskanie rozdzielczości 1024-1024 w 4 kolorach. Dostarczany jest wraz z monitorem, jednak uruchomić go w opisanych dwóch systemach można tylko z poziomu AmigaDOS (w systemie 2.0 urochamia się go z poziomu Workbencha). Mimo że nie wystepuje w pozostałych systemach, będzie z nimi działał po przegraniu do katalogu C: i uruchomieniu z odpowiednimi parametrami. Monitor A2024 nie jest już produkowany, a na wyprzedaży można go nabyć za kwotę niższą niż 200 DM. Wszystkie parametry są takie same, jak opisane przy rozkazie AddMonitor w poprzednim odcinku cyklu.
Marek Pampuch Maj 1994r.