Amiga DOS cz.9

Check - służy jako nakładka, dopasowująca działanie starej karty A2090 do wymagań stawianych przez system 3.1. Rozkaz ten nie spowoduje żadnego widocznego na ekranie działania niemniej dokona odpowiednich zmian w odwołaniach do bibliotek DOS.library i Expansion.library

Check  (sprawdź)


Składnia dla systemu 3.1 :CHECK2090,  W pozostałych systemach operacyjnych rozkaz ten nie występuje

--- * --- * ---

ClickToFront  (wysuń naprzód po kliknięciu)


Składnia dla systemów 2.0, 2.1, 3.0 i 3.1 :


CLICKTOFRONT [CX_PRIORITY= >n1<] [QUALIFIER= >n2<]

Wzorzec :


CLICKTOFRONT CX_PRIORITY/K/N, QUALIFIER/K

Gdzie: n1 jest to priorytet dla programów typu commodity. Domyślnie jest tu 0, n2 - zaś to nazwa klawisza (lub kombinacji klawiszy), który zastosujemy jako klawisz "wywołujący" procedurę. W pozostałych systemach rozkaz ten nie występuje.

Rozkaz ten umożliwia wyciągnięcie dowolnego okna na wierzch. Po uruchomieniu go należy przytrzymać klawisz określony jako "wywołujący" i kliknąć dwa razy na dowolne miejsce okna. Jest to szczególnie wygodne wówczas, gdy gadżet wysuwający potrzebne nam okno jest schowany za innym oknem - uwalnia nas bowiem od przesuwania czy zamykania okien zasłaniających, Rozkaz ten występuje również jako procedura typu commodity, ale czasem wygodniej dostać się do niego z poziomu DOS-u (odpada wtedy konieczność zaśmiecania ekranu dodatkowymi oknami otwieranymi przy poszukiwaniu okna commodities). Podobnie jak inne rozkazy DOS-u, odpowiadające commodities, rozkaz CliskToFront można uruchomić jedynie za pomocą RUN, przerwać zaś kombinacją klawiszy [Ctrl][E] Przykład :


RUN >NIL: CLICKTOFRONT QUALIFIER="Alt"

Taki rozkaz uruchomi program, zamknie okno shell-a, a każde naciśnięcie klawisza [Alt] i dwukrotne kliknięcie na dowolne miejsce potrzebnego nam okna wysunie je naprzód.

Clock  (zegar)


Składnia :

  • Dla systemu 1.2 : CLOCK  [=>x<,  >y<  [,>sz<,  >wys<]]
  • Dla systemu 1.3 : CLOCK  [ANALOG | DIGITAL1 | DIGITAL2]  [=>x<,  >y<  [,>sz<,  >wys<]]  [12HOUR | 24HOUR]  [SECONDS]  [DATE]
  • Dla systemu 2.0 : CLOCK  [DIGITAL]  [LEFT= >x<]  [TOP= >y<]  [WIDTH= >sz<]  [HEIGHT= >wys<]  [24HOUR]  [SECONDS]  [DATE]
  • Dla systemu 2.1, 3.0, 3.1 : CLOCK  [DIGITAL]  [LEFT= >x<]  [TOP= >y<]  [WIDTH= >sz<]  [HEIGHT= >wys<]  [24HOUR]  [SECONDS]  [DATE]  [FORMAT= >n<]  [PUBSCREEN= >ekr<]

Wzorzec :

  • Dla systemu 1.3 : CLOCK  ANALOG/S,  DIGITAL/S,  12HOUR/S,  24HOUR/S,  SECOND/S,  DATE/S
  • Dla systemu 2.0 : CLOCK  DIGITAL/S,  LEFT/N,  TOP/N,  WIDTH/N,  HEIGHT/N,  24HOUR/S,  SECOND/S,  DATE/S
  • Dla systemów 2.1, 3.0 i 3.1 : CLOCK  DIGITAL/S,  LEFT/N,  TOP/N,  WIDTH/N,  HEIGHT/N,  24HOUR/S,  SECOND/S,  DATE/S,  FORMAT/N,  PUBSCREEN/K

Gdzie: X - współrzędna X lewego górnego rogu, Y - współrzędna y tego rogu, sz - szerokość okna z zegarem (w pikselach), wys - wysokość tego okna (w pikselach), n - wartość określająca sposób wyświetlania zegara. Jeśli jest zastosowana, wówczas likwiduje ustalenia podane przez opcje DIGITAL i SECONDS. Jest to wartość z zakresu od 0 do 5 i oznacza: 0 - format 24-godzinny (na przykład 14:15), 1 - format 12-godzinny (na przykład 7:23 PM), 2 - format 24-godzinny z sekundami (na przykład 18:12:34), 3 - format 12-godzinny z sekundami (na przykład 6:32:45 AM). Wartości 4 i 5 mają takie samo znaczenie jak (odpowiednio) 2 i 3, ekr - jeśli podamy tu nazwę ekranu (domyślnie jest to ekran Workbencha), wówczas zegar zostanie otwarty na tym ekranie

Rozkaz ten spowoduje otwarcie na ekranie (domyślnie Workbencha) okna z zegarem, który będzie działał zgodnie z podanymi parametrami. Może to być zegar analogowy (ze wskazówkami - domyślnie lub przy podaniu parametru ANALOG), dziesiętny (przy parametrze DIGITAL1 otworzy się on w oknie, DIGITAL2 - na listwie tytułowej), DIGITAL (dla systemów od 2.0 w górę) - jako zikonizowany. Pozostałe parametry są opisane powyżej.

Rozkaz ten nie znajduje się w katalogu rozkazowym C: ale w katalogu UTILITIES. UWAGA: Jeśli chcecie otworzyć zegar na ekranie "publicznym", należy pamiętać o tym, że po otwarciu takiego zegara nie będzie można zamknąć uruchomionego na tym ekranie programu przed uprzednim zamknięciem okna z zegarem.

Na przykład :


RUN CLOCK

otworzy okno ze zwykłym (w postaci tarczy) zegarem na ekranie Workbencha;


RUN CLOCK LEFT=0 TOP=0 WIDTH=640 HEIGHT=256 SECONDS

otworzy taki sam zegar, jednak będzie on miał sekundnik, okno zegara zaś zajmie cały ekran

--- * --- * ---

ClockPTR  (clock pointer - wskaźnik w kształcie zegara)



  • Składnia dla systemu 1.3 :  clockptr  [12nndd | 12ddmm | 24mmdd | 24ddnn]
  • Wzorzec : CLOCKPTR  12MDDD/K, 12DDMM/K 24MDDD/K, 24DDMM/K

W pozostałych systemach rozkaz ten nie występuje. Rozkaz ten zamienia wskaźnik w trybie "zajętości" na kwadracik podający aktualny czas (na dodatek brzydką i mało czytelną czcionką). Domyślnie jest to czas w trybie 24-godzinnym. Podane parametry teoretycznie powinny zmieniać format wyświetlania daty (tak w każdym razie zgłaszają się parametry po użyciu rozkazu):


clockprt ?

- niestety, ani na Amidze z systemem 1.3 (płyta rev 6), ani na Amidze 1200 parametry te nie zadziałały.

ClockPTR znajduje się w katalogu UTILITIES i możemy go uruchomić tylko "w tle" (przez run). Mimo że nie ma go w systemach wyższych niż 1.3, po przegraniu do katalogu rozkazowego C: będzie działał i z systemami od 2.0 w górę. Nie będzie natomiast działał na Amigach nie wyposażonych w zegar. Przykład :


run clockptr

spowoduje, że przy ładowaniu programu zamiast "dymku" z literami "zz" pojawi się prostokąt a aktualną godziną.

CMD  (Command Master Device - re-dyrekcja rozkazu na inne urządzenie niż konsola)


Składnia :

  • Dla systemów 1.3 i 2.0 : CMD  >n1<  >n2<  [OPT I | S | M | N]  [HELP]
  • Dla systemów 2.1, 3.0 i 3.1 : CMD  >n1<  >n2<  [OPT S | M | N]  [HELP]

Gdzie >n1< to nazwa gniazda, do którego podłączone jest urządzenie, podana słownie (serial[szeregowe] lub parallel [równoległe]. To ostatnie jest domyślne),  >n2< - nazwa zbioru (razem ze ścieżką), do którego będą przesłane wyniki z podanego, nazwa >n1<, urządzenia. Jeśli opuścimy ten parametr, zostanie tu wówczas domyślnie przyjęte RAM:CMD_File, opcje: I - jeśli użyjemy tej opcji, wówczas wszystkie zbiory zaczynające się od "0000" zostaną zignorowane, S - po użyciu tej opcji wszystkie krótkie kody początkowe (na przykład reset drukarki) nie zostaną przesłane do zbioru określonego nazwą >n2<, M - przy zastosowaniu tej opcji rozkaz CMD będzie działał aż do wyłączenia go klawiszami [CTRL][C]. Jeśli ją opuścimy, wówczas rozkaz ten będzie działał do momentu wyłączenia urządzenia, określonego nazwą >n1<, N - opcja ta włącza re-dyrekcję komunikatów postępu. Są one dość pomocne w wypadku poszukiwania ewentualnego błędu. W systemie 1.2 rozkaz ten nie występuje.

Wzorzec :

  • Dla systemów 1.3 i 2.0 : CMD  DEVICE/A,  FILE/A,  IGNORE/S,  SKIP/S,  MULTIPLE/S,  NOTIFY/S,  HELP/,
  • Dla systemów 2.1, 3.0 i 3.1 : CMD  DEVICE/A,  FILE/A,  SKIP/S,  MULTIPLE/S,  NOTIFY/S,  HELP/,

Rozkaz ten pozwala na zmianę sposobu sterowania urządzeniami i przesłanie danych z wyjścia urządzenia podłączonego do gniazda określonego nazwą >n1< do zbioru o nazwie >n2<. Jest to wykorzystywane najczęściej w wypadku drukarki, na przykład jeśli chcemy "wydrukować" coś do zbioru, a nie na papierze. Rozkaz znajduje się w katalogu Utilities i uruchamiamy go "w tle". Na przykład chcemy w ten sposób potraktować zbiór z dyskietki o nazwie "Nasz_Zin". W tym celu piszemy :


RUN CMD Parallel RAM:Disk_Zin

i naciskamy klawisz [Return]. Jeśli teraz napiszemy :


COPY FROM df0:Nasz_Zin TO PRT:

wówczas zawartość zbioru znajdzie się w RAM-Dysku w zbiorze o nazwie "Disk_Zin". Nie będzie to jednak "zwykły" tekst w kodach ASCII, ale będzie zawierał wszystkie kody sterujące dla drukarki.

Innym zastosowaniem może być próba wykrycia, dlaczego nie można się domodemować do BBS-u "Home Of AMiga". Jeśli do swojej Amisi masz podłączony modem i jesteś pewien, że Twoje oprogramowanie komunikacyjne działa bez zarzutu, możesz spróbować poszukać błędu następująco :


RUN CMD Serial RAM:To_HoA OPT N COPY FROM df0:To_Nie_Idzie TO SER:

A po zakończeniu pracy i pojawieniu się podobnego, jak opisany powyżej, komunikatu przeczytaj zbiór "To_HoA" z RAM-u. Może doszukasz się błędu.

ConClip  (Con[catenate] Clip[board] - dołącz bufor "clipboard")


W systemach 1.2 i 1.3 rozkaz nie występuje.

Składnia dla systemów 2.0, 2.1, 3.0 i 3.1 : CONCLIP  [UNIT=  >n<]  [OFF]

Gdzie : n to numer nadany konsoli

Wzorzec dla systemów 2.0, 2.1, 3,0, 3.1 : CONCLIP  UNIT/K/N,  OFF/S

Rozkaz ten pozwala na przyłączenie do konsoli (CON:) bufora systemowego o nazwie ConClip, co umożliwia wykonywanie na tej konsoli wszystkich operacji wycinania i doklejania tekstu. Jest to ważne zwłaszcza podczas pracy z edytorami. ConClip jest jednym z rozkazów występujących w sekwencji startowej, a zatem jeśli nic z tej sekwencji nie usunąłeś, opisane wyżej manipulacje na tekstach będą dla Ciebie automatycznie dostępne. Rozkaz ten uruchamia swoje własne zadanie. Tekst wycięty z konsoli przenoszony jest do urządzenia CLIPS: i może być oglądany na przykład za pomocą programu MultiView (z wyjątkiem systemu 2.0). Jeśli z jakichś powodów chcesz przerwać działanie tego rozkazu i zamknąć otworzone przez niego zadanie, wpisz :


CONCLIP OFF

Przeczytaj także opis rozkazu BREAK, gdzie znajdziesz inny przykład wykorzystania rozkazu CONCLIP.

UWAGA: W systemie 3.1 ConCLip został zastąpiony przez nowszą wersję (40.1 z 9.02.1993). Wersja ta zadziała ze wszystkimi Amigami, które w systemie 3.0 mają bibliotekę "iffparse.library" o wersji nie niższej niż v39. Ta nowsza wersja jest nieco szybsza w działaniu od wersji 37.7 z 18.01.91, która była dołączana do początkowych egzemplarzy A1200.

Copy  (kopiuj)


Składnia :

  • Dla Systemu 1.2 :  COPY  [FROM]  >n1<  [TO]  >n2<  [ALL]  [QUIET]
  • Dla Systemu 1.3, 2.0, 2.1, 3.0 :  COPY  [FROM]  >n1<  [TO]  >n2<  [ALL]  [QUIET]  [BUF | BUFFER=  >n3<]  [CLONE]  [DATE]  [COM]  [NOPRO]
  • Dla Systemu 3.1 :  COPY  [FROM]  >n1<  [TO]  >n2<  [ALL]  [QUIET]  [BUF | BUFFER=  >n3<]  [CLONE]  [DATE]  [COM]  [NOPRO]  [NOREQ]

Gdzie : >n1< - nazwa zbioru, który chcemy kopiować. Nazwa powinna mieć ścieżkę i może być podana za pomocą szablonu. Ponieważ rozkaz COPY może powielać do 10 zbiorów naraz, zamiast jednej nazwy można tu użyć kilku (patrz przykład poniżej),  >n2< - nazwa zbioru, do którego chcemy kopiować. Nazwa n2 odpowiada takim samym warunkom jak nazwa n1, >n3< - liczba buforów (bufory opisane są przy rozkazie AddBuffers; tu mają tę samą wielkość i działanie. Opcje rozkazu opisane są nieco dalej

Wzorzec :

  • Dla systemu 1.2 : COPY  FROM/A/M,  TO/A,  ALL/S,  QUIET/S
  • Dla systemu 1.3, 2.0, 2.1, 3.0 : COPY  FROM/A/M,  TO/A,  ALL/S,  QUIET/S,  BUF-BUFFERS/K/N,  CLONE/S,  DATE/S,  COM/S,  NOPRO/S
  • Dla systemu 3.1 : COPY  FROM/A/M,  TO/A,  ALL/S,  QUIET/S,  BUF-BUFFERS/K/N,  CLONE/S,  DATE/S,  COM/S,  NOPRO/S,  NOREQ/S

Nie muszę chyba nikomu tłumaczyć, co ma robić tek rozkaz. Zresztą i tak 99% użytkowników Amigi używa raczej XCopy lub jakiegoś innego SuperDuper-a (dla całych dysków), albo Directory Opusa, względnie Disk Mastera (dla pojedynczych zbiorów) jako znacznie wygodniejszych narzędzi do powielania zawartości dysków. Niemniej zdarzają się osoby, które z rozmaitych powodów są wierne systemowemu COPY. Dla nich i dla tych, którzy są spragnieni wiedzy, garść danych na temat tego rozkazu.

Przede wszystkim należy omówić niewiele niekiedy mówiące nazwy opcji :

FROM - określa dysk źródłowy, to znaczy ten, z którego będziemy kopiować. Przyjęło się tu mówić "dysk", choć równie dobrze nazwą >n1<  można określić zbiór, kilka zbiorów (których nazwa podana jest za pomocą szablonu), katalog lub urządzenie logiczne, z którego możemy otrzymać dane (takie jak nazwa partycji, urządzenia typu CON: lub PIPE: Parametry FROM i TO są opcjonalne. Można je opuścić. Takie samo działanie będzie miał rozkaz :


COPY FROM DF0:S/STARTUP-SEQUENCE TO RAM:

Jak i :


COPY DF0:S/STARTUP-SEQUENCE RAM:

niemniej "dla porządku" we wszystkich przykładach będę ich jednak używał.

TO  - określa "dysk" docelowy. Tu (podobnie jak przy FROM) także możemy użyć jako "dysku" wszystkich wymienionych powyżej, przy czym możemy tu korzystać ze znacznie szerszego zakresu urządzeń logicznych, bo "dyskiem" docelowym może być każde urządzenie, do którego możemy przesłać dane (na przykład AUX: CON: PAR: PIPE: PRT: SER: i inne).

ALL  - jeśli użyjemy w rozkazie tego parametru, wówczas zostaną przekopiowane wszystkie zbiory z zachowaniem układu katalogów.

QUIET  - podczas kopiowania pojawiają się na ekranie komunikaty o aktualnie wykonywanych przez rozkaz COPY działaniach. Jeśli nie chcemy, aby te komunikaty się pokazywały, możemy wykonać re dyrekcję do urządzenia NIL: wygodniej jednak będzie, jeśli użyjemy parametru QUIET. Re dyrekcja do NIL: "usunie" bowiem z ekranu wszystkie komunikaty, parametr zaś QUIET pozostawi komunikaty o ewentualnych błędach, jakie wystąpiły podczas kopiowania, w szczególności parametr ten nie wyłącza pojawiania się komunikatów systemowych (na przykład "Volume AAAAA has a read/write error" czy "Volume BBBB is full"

BUF  (zamiennie można użyć pełnej nazwy parametru BUFFER  - użycie tego parametru doda nam na czas kopiowania bufory (patrz opis rozkazu ADDBUFFERS), co nieco przyśpieszy tę operację. Jeśli pominiemy ten parametr, zostanie przyjęta domyślna wielkość 200 buforów. Użytkownikom Amigi z 1 MB lub mniej raziłbym zatem zmniejszyć tę ilość, na przykład przez podanie rozkazu : COPY FROM df0:obrazek#? TO RAM: BUF 30

DATE  - domyślnie rozkaz COPY nadaje kopii zbioru datę i czas aktualnie pamiętane przez komputer. Jeśli chcemy, aby na kopii została zachowana data i czas oryginału, należy użyć tej opcji.

COM  - jeśli chcemy, aby do kopii została dołączona "notatka o zbiorze", jaka jest przy oryginale, wówczas należy użyć tego parametru.

CLONE  - ten parametr ma działanie takie, jak dwa opisane wyżej parametry (DATE i COM), a zatem jeśli chcemy w kopii zachować zarówno datę, czas, jak i notatkę związaną z oryginałem, to jeśli użyjemy CLONE, będziemy mieli mniej pisania.

NOPRO  - bity protekcji, ustawione dla oryginału domyślnie podczas kopiowania, są zachowywane w kopii. Jeśli jednak użyjemy parametru NOPRO, wówczas wszystkie skopiowane zbiory otrzymają jednakowe bity protekcji, a mianowicie RWED.

NOREQ  - ten parametr wyłącza pojawienie się podczas kopiowania komunikatów systemowych (requesterów). Ciekawostka: mimo że został oficjalnie wprowadzony dopiero dla systemu w wersji 3.1, działa także z niektórymi Amigami, wyposażonymi w starsze systemy operacyjne.

Po tej dawce teorii przejdźmy do praktyki. Do czego można wykorzystać rozkaz COPY? Pomijam tu jego funkcję główną (kopiowanie), bo - jak już wspomniałem - w tym celu wymyślono kilka lepszych narzędzi. Mimo wszystko tym, którzy chcą spróbować, czy rzeczywiście SuperDuper jest lepszy od rozkazu COPY, polecam skopiowanie (przy korzystaniu tylko z jednej stacji) całej dyskietki. Mogłoby to mieć z poziomu DOS-u postać następującą :


COPY FROM df0:#? TO RAM: BUF 30

Po zakończeniu tej operacji należy zmienić dyskietkę, a następnie napisać :


COPY FROM RAM: #? TO DF0:

Jeśli ktoś jednak zdecyduje się na kopiowanie w ten sposób, musi bardzo uważać na to, aby nie pomylić się przy wpisywaniu parametrów. Dlaczego ?

Załóżmy, że chcemy przekopiować z dyskietki wszystkie zbiory o nazwach zaczynających się od "test" do RAM-Dysku, a dodatkowo chcemy, aby na ekranie nie pojawiały się informacje. Proste zadanie, prawda? Wystarczy jednak, że zamiast poprawnego :


COPY DF0:Test#? TO RAM: QUIET

Wpiszemy :


COPY DF0:Test#? TO RAM: QIET

to po chwili możemy się lekko zdziwić. System Amigi jest tak pomyślany, że jeśli na dysku docelowym nie ma katalogu o podanej nazwie, to zostanie on tam utworzony. W naszym wypadku nie dość, że nie "usuniemy" z ekranu komunikatów, to dodatkowo w RAM:Dysku zostanie utworzony nowy katalog o nazwie QIET i do niego zostaną przeniesione wszystkie kopiowane zbiory.

Należy także zwrócić uwagę, że jeśli pominiemy parametr ALL, to przy kopiowaniu katalogów z podkatalogami może nas czekać niemiła niespodzianka. Przykładowo, jeśli wpiszemy :


COPY DF0:LOCALE TO RAM:

to... nic się nie skopiuje. W opisanym wypadku należy wpisać :


COPY DF0:LOCALE TO RAM:LOCALE ALL

A teraz obiecany przykład na kopiowanie jednym rozkazem kilku zbiorów o zupełnie różnych nazwach :


COPY FROM DF0: rambo alexis blake cobra TO RAM:

przekopiuje nam z dyskietki do RAM-Dysku wszystkie zbiory o podanych nazwach (maksymalnie może ich być 10 w jednym rozkazie).

Znacznie ciekawszym zastosowaniem rozkazu jest drukowanie. Na przykład chcemy wydrukować na drukarce wyposażonej w polski sterownik ks. Pikula tekst o nazwie "proba" nagrany na dyskietce. Nie każdy program do redagowania tekstu po wybraniu opcji PRINT uwzględni nam nasze ogoniaste literki. Najprościej będzie tu wpisać:


COPY DF0:Proba TO PRT:

Jeśli nasza drukarka jest podłączona przez gniazdo szeregowe, wówczas musimy dokonać niewielkiej zmiany, a mianowicie :


COPY DF0:Proba TO SER:

UWAGA: Jeśli nasz tekst napisany jest w standardzie innym niż standard drukarki - opisane wyżej operacje zdadzą się psu na budę. Jeśli, na przykład, mamy nasz tekst napisany w miłościwie nam panującym standardzie AmigaPl, jedyna zaś drukarka, do jakiej mamy dostęp, ma w prawdzie polskie znaki, ale w standardzie Mazovia, wówczas musimy skorzystać bezpośrednio z procedur ks. Pikula. W opisywanym wypadku będzie to :


PLTOMZV df0:proba to PAR:

Marek Pampuch,
Magazyn Amiga, 09-1994r.