CPU - Rozkaz ten pozwala sterować "zachowaniem się" procesora 68020 lub "wyższego". Można też za pomocą CPU sprawdzić, czy mamy zainstalowany koprocesor, układ MMU lub otrzymać wiele mniej lub bardziej potrzebnych informacji o posiadanym systemie.
CPU (Central Processing Unit - procesor główny)
W systemie 1.2 i 1.3 rozkaz ten nie występuje. Można go jednak przegrać z wyższych wersji systemu i będzie działał (co jest wygodne zwłaszcza wtedy, gdy uzupełnimy naszą A500 lub A2000 o kartę turbo). Kilka opcji jednak (między innymi wypisywanie informacji) ze wzglądu na system nie będzie działało.
Składnia :
- Dla systemu 2.0 : CPU [CACHE] [BURST] [NOCACHE] [NOBURST] [NODATACACHE] [NODATABURST] [INSTCHACHE] [INSTBURST] [NOINSTCACHE] [NOINSTBURST] [EXTCACHE] [NOEXTCACHE] [FASTROM] [NOFASTROM] [TRAP] [NOTRAP] [NOMMUTEST] [CHECK= fpu | mmu | 68010 | 68020 | 68030 | 68040 | 68881 | 68882]
- Dla systemów 2.1, 3.0, 3.1 : CPU [CACHE] [BURST] [NOCACHE] [NOBURST] [NODATACACHE] [NODATABURST] [INSTCHACHE] [INSTBURST] [NOINSTCACHE] [NOINSTBURST] [COPYBACK] [NOCOPYBACK] [EXTCACHE] [NOEXTCACHE] [FASTROM] [NOFASTROM] [TRAP] [NOTRAP] [MMUTEST]&nspb; [NOMMUTEST] [CHECK= fpu | mmu | 68010 | 68020 | 68020 | 68030 | 68040 | 68881 | 68882]
Gdzie : parametru fpu używamy wówczas, gdy nie jesteśmy pewni jaki tym koprocesora jest zainstalowany na naszej karcie (identycznie mmu - w tedy, gdy nie jesteśmy, czy procesor ma jednostkę zarządzającą pamięcią) Lepiej jednak w tym rozkazie wyraźnie określić typ procesora lub koprocesora.
Wzorzec :
- Dla systemu 2.0 : CPU CACHE/S, BURST/S, NOCACHE/S, NOBURST/S, NODATACACHE/S,&nsp; NODATABURST/S, INSTCACHE/S, INSTBURST/S, NOINSTCACHE/S, NOINSTBURST/S, EXTCACHE/S, NOEXTCACHE/S, FASTROM/S, NOFASTROM/S, TRAP/S, NOTRAP/S, NOMMUTEST/S, CHECK/K.
- Dla systemów 2.1, 3.0, 3.1 : CPU CACHE/S, BURST/S, NOCACHE/S, NOBURST/S, NODATACACHE/S,&nsp; NODATABURST/S, INSTCACHE/S, INSTBURST/S, NOINSTCACHE/S, NOINSTBURST/S, COPYBACK/S, NOCOPYBACK/S, EXTCACHE/S, NOEXTCACHE/S, FASTROM/S, NOFASTROM/S, TRAP/S, NOTRAP/S, MMUTEST/S, NOMMUTEST/S, CHECK/K.
Próba użycia rozkazu na Amigach wyposażonych w "zwykły" procesor MS680000 (lub MC68010) nie spowoduje wprawdzie błędu czy Guru, ale, oprócz wyswietlania informacji, nic nam nie da, a bynajmniej nie zmieni zachowania procesora. Poszczególne parametry oznaczają :
- CACHE - włącza pamięć podręczną (w MC68(EC)030 - zarówno pamięć podręczną instrukcji, jak i danych.)
- NOCACHE - włącza pamięć podręczną.
- BURST - włącza tryb burst dla instrukcji i danych. UWAGA: parametru tego można użyć wyłącznie wówczas, gdy procesor dopuszcza taki tryb (od MC68(EC)030).
- NOBURST - włącza tryb burst dla instrukcji i danych.
- DATACACHE - włącza pamięć podręczną dla danych, nie zmieniając stanu pamięci podręcznej instrukcji. (tylko MC68(EC)030 i nowsze.)
- DATABURST - włącza tryb burst dla danych nie zmieniając stanu trybu burst dla instrukcji. (tylko MC68(EC)030 i nowsze.)
- NODATACACHE - wyłącza pamięć podręczną dla instrukcji nie zmieniając stanu pamięci podręcznej danych. (tylko MC68(EC)030 i nowsze.)
- NODATABURST - wyłącza tryb burst dla danych nie zmieniając stanu tego trybu dla instrukcji. (tylko MC68(EC)030 i nowsze.)
- INSTCACHE - włącza pamięć podręczną dla instrukcji nie zmieniając stanu pamięci podręcznej dla danych. (tylko MC68(EC)030 i nowsze).
- INSTBURST - włącza tryb burst dla instrukcji nie zmieniając stanu tego trybu dla danych. (tylko MC68(EC)030 i nowsze.)
- noinstcache - wyłącza pamięć podręczną dla instrukcji nie zmieniając stanu pamięci podręcznej dla danych. (tylko MC68(EC)030 i nowsze).
- NOINSTBURST - wyłącza tryb burst dla instrukcji nie zmieniając stanu tego trybu dla danych. (tylko MC68(EC)030 i nowsze).
- COPYBACK - włącza tryb copyback. (tylko MC68(LC)040).
- NOCOYBACK - wyłącza tryb copyback. (tylko MC68(LC)040).
- EXTCACHE - włącza zewnętrzną pamięć podręczną. (tylko MC68(LC)040).
- NOEXTCACHE - wyłącza zewnętrzną pamięć podręczną. (tylko MC68(LC)040).
- FASTROM - kopiuje KickStart do RAM-u, co przyśpiesza nieco działanie komputera, zwłaszcza na maszynach wyposażonych w 32-bitowy Fast-RAM. UWAGA: Parametr ten nie zadziała na Amigach, które mają KickStart na dysku (A1000 i pierwsze egzęplarze A3000), a także w wypadku, gdy procesor, w jaki wyposażona jest nasza karta, nie ma, albo ma wyłączony, układ MMU (a więc FASTROM nie zadziała na MC68(EC)020 i MC68(EC)030). Niektóre karty turbo, na przykład GVP A1230 Performance Series II lub Mega Midget Racer, dostarczone są z oprogramowaniem, które także potrafi przekopiować ROM do RAM-u. Parametr FASTROM z takimi kartami nie będzie działał - należy skorzystać z oprogramowania dostarczonego przez producenta.
- NOFASTROM - likwiduje skutki działania parametru FASTROM (patrz wyżej).
- TRAP - ten parametr przeznaczony jest wyłącznie dla developerów (obsługa wewnętrznego debuggera ROMWack; w systemach 3.0 i 3.1 nosi on nazwę SAD). Na tym zakończę opis parametru, poto, aby przypadkiem nie zachciało Wam się z nim eksperymentować - przy nieumiejętnej obsłudze bowiem, w najlepszym wypadku, efektem będzie Guru.
- NOTRAP - jak łatwo się domyślić, wyłącza dostęp do debuggera ROMWack.
- CHECK - pozwala na uzyskanie informacji o procesorze i koprocesorach. Parametru tego nie powinno się używać w rozkazie wprowadzanym "z ręki", a jedynie w skryptach AmigaDOS (zobacz przykład niżej).
- MMUTEST - użyty łącznie z opcją CHECK włącza badanie MMU.
- NOMMUTEST - użyty łącznie z opcją CHECK wyłącza badanie MMU.
Zanim przejdziemy do przykładów : Także i w tym wypadku nie zalecam początkującym użytkownikom Amigi jakichkolwiek (poza "bezparametrowym") eksperymentów z tym rozkazem. Po co psuć sobie nerwy? Przykłady :
CPU
Rozkaz użyty bez parametrów wyświetli nam aktualne ustawienia systemu. I tak dla Amigi 600 w wyniku otrzymamy :
System: 6800 (INST: NoCache)
dla Amigi 1200 wyposażonej w kartę turbo GVP A1230+ zaś :
System: 68030 (INST: CacheBurst) (DATA: Cache NoBurst)
A teraz zapowiadany wcześniej przykład użycia opcji CHECK. Proszę za pomocą dowolnego edytora utworzyć poniższy skrypt i zapisać go na dysku (na przykład pod nazwą "test") :
CPU CHECK FPU
If WARN
Echo "Nie ma koprocesora"
EndIf
Po zapisaniu przechodzimy do CLI/Shella i uruchamiamy skrypt przez :
Execute df0:test
W wyniku otrzymamy :
System: 68030 (INST: CacheBurst) (DATA: CacheNoBurst)
Nie ma koprocesora
CrossDOS ("w poprzek" DOS-u)
W systemach 1.2, 1.3 i 2.0 rozkaz ten nie występuje - można jednak nabyć komercyjną wersję programu CrossDOS (najlepiej 4.0) i zainstalować ją. Wersja ta ma o wiele więcej możliwości niż opisywany rozkaz AmigaDOS. Być może kiedyś opiszę go dokładniej. Tu jednak zajmę się wyłącznie tym fragmentem CrossDOS, który został zaimplementowany w systemie operacyjnym Amigi.
Składnia dla systemów 2.1, 3.0 i 3.1 : CrossDOS [CX_PRIORITY= >pr<] [CX_POPKEY= >klaw<] [CX_POPUP= >yes | no<]
Gdzie:
Wzorzec dla systemów 2.1, 3.0 i 3.1 : CX_PRIORITY/K/N, CX_POPKEY/K, CX_POPUP/K
Jest to jedno z Commodities ("udogodnień", jak mawiają niektórzy). Rzeczywiście, w tym wypadku można mówić o udogodnieniu, i to bardzo dużym. Zainstalowany w systemie operacyjnym Amigi fragment programu komercyjnego o nazwie CrossDOS 4.0 pozwala bowiem Amidze na bezproblemową wymianę danych ze światem peceta. W połączneiu ze sterownikami o nazwie PC0: i PC1: umożliwia on formatowanie dyskietek MS-DOS, a także wczytanie do pamięci Amigi zbiorów nagranych na pececie. Wprawdzie zbiorów takich nie da się na Amidze bezpośrednio uruchomić, niemniej to, co jest, zupełnie wystarcza.
CrossDOS ułatwia życie i to bardzo. Na przykład prawie wszystkie teksty i wszystkie ilustracje do Magazynu AMIGA powstają na Amisi. Niestety, nasz kochany Dział Składu żąda, abyśmy przekazali im materiały w "smutnym" formacie. Dzięki CrossDOS-owi wystarczy przekształcić tekst na Latin-2 (procedurą ks. Pikula), a obrazki zamienić na format PCX za pomocą ADPro, sformatować dyskietkę i przegrać na nią tak spreparowane dane, aby zaspokoić wymagania składu bez potrzeby dotykania (brrr!!!) peceta.
Można by się obejść bez wspomnianej procedury ks. Pikula, gdyby wśród typów konwersji (gadżet Translation Types w oknie CrossDOS-a znajdowała się Mazovia lub Latin-2. Niestety, w oryginalnym systemie znajdziemy tu wyłącznie :
- ASCII-7 - ustawiany jest przy konwersji tekstów w tym formacie (opcja ta działa na teksty odczytywane z dyskietki MS-DOS) i usuwa ósmy bit każdego bajtu danych;
- DANSK - włączany podczas konwersji tekstów duńskich;
- INTL - ustawione domyślnie (konwersja "międzynarodowa").
Mam nadzieję, że autorzy polskich locali, które, jak wieść gminna niesie, już wkrótce oficjalnie mają się pojawić w naszym kraju, naprawią to niedopatrzenie firmy Commodore.
Aby CrossDOS zadziałał, należy skopiować sterownik PC0: (lub PC1: jeśli zamierzamy korzystać ze stacji zewnętrznej) do szuflady DEVS/DOSDrivers oraz zadbać, aby w katalogach DEVS i L znajdowały się odpowiednie pliki CrossDOS-a. Ci z Was, którzy nie lubią myszy, mogą wpisać w sekwencji startowej wiersz :
Mount PC0:
Parametry ze wzorca oznaczają :
CX_PRIORITY - określa priorytet CorssDOS-a wśród Commodities (ustawiony on może być także rozkazem Exchange). Nie należy tego mylić z priorytetem dla sterownika stacji PC0: (lub PC1:). Ten ostatni priorytet bowiem może być ustawiony wyłącznie w mountliście. Domyślnie wśród sterowników dla stacji dyskietek najwyższy priorytet ma stacja DF0:, potem DF1: (i ewentualnie następne amigowskie), a dopiero potem są stacje PC0: (i PC1:). Jeśli zamontujemy sobie jakieś inne sterowniki stacji dyskietek amigowskich, na przykład DS0: czy DS1:, to będą one miały priorytet niższy niż stacje "normalne" (DFn:), a wyższy niż stacje pecetowskie. I słusznie. Można to wprawdzie zmienić przez odpowiednie "machlojki" w mountliście, ale po co? Niech pecet leży na swoim miejscu. Wartością domyślną dla tego parametru jest 0.
CX_POPKEY - określa kombinację klawiszy, która w dowolnym momencie wywoła nam okno CrossDOS-a. Domyślnie jest tu ustawiona kombinacja [Ctrl][Alt] i [C]. Można to jednak zmienić. I tak :
CROSSDOS CX_POPKEY = DISKINSERTED
spowoduje, że CrossDOS zostanie wywołany zawsze po włożeniu dysku do dowolnej stacji podłączonej do Amigi.
CX_POPUP - określa, czy ekran CrossDOS-a ma się pojawić przy każdym użyciu tego rozkazu (CX_POPUP = YES), czy też nie (CX_POPUP = NO). Domyślnie wartością tego parametru jest YES.
Posiadaczy dwóch lub trzech stacji zewnętrznych nurtuje zapewne pytanie, czy można skorzystać ze stacji PC2: i PC3: Oczywiście można. W tym celu należy :
- skopiować ikonę PC0.info i zbiór sterownika o tej samej nazwie do RAM-u,
- opcją INFORMATION z grupy ICONS menu Workbencha należy w takiej ikonie zmienić ToolType UNIT na 2 i zapisać zmianę w RAM-e,
- dowolnym edytorem należy w zbiorze PC0, znajdującym się w RAM-ie, także zmienić (w wierszu 12) numer stacji na 2 i również zapisać zmianę,
UWAGA : Jeśli po takiej operacji odłączymy od Amigi drugą stację zewnętrzną i będziemy próbowali uruchomić komputer, mogą wystąpić drobne problemy z tym uruchomieniem (wszelkie sterowniki dla stacji dysków, znajdujące się w szufladzie DEVS/DOSDrivers, poza dostarczanymi fabrycznie - wymagają fizycznej obecności odpowiedniej stacji).
Jeśli chcemy zmienić parametry działania CrossDOS-a, musimy wywołać ten rozkaz (klikając na jego ikone lub wpisując z poziomu CLI/Shell) :
CROSSDOS CrossDos
W oknie, które pojawi się po wywołaniu rozkazu, znajdują się :
- po lewej stronie - requester z wypisanymi zainstalowanymi stacjami pecetowymi; jeśli chcemy ustawić parametry dla innej stacji niż ta, która jest wyróżniona, należy kliknąć na nazwę tej stacji;
- po prawej stronie - trzy gadżety, które oznaczają
- TEXT FILTERING - włącza filtrowanie tekstu;
- TEXT TRANSLATION - włącza konwersję tekstu;
- TRANSLATION TYPES - rodzaj konwersji tekstu (opisany wyżej).
Opcje te powinny być włączone podczas przekształcania zbiorów binarnych lub graficznych.
Date (data)
- składnia dla systemu 1.2 : DATE [>dd-mm-rr<]
- składnia dla systemu 1.3 : DATE [>dd-mm-rr<] [>gg-mm-ss<] [TO=VER >n1<]
- składnia dla systemu 2.0, 2.1, 3.0, 3.1 : DATE [[DATE=] >dd<] [[DATE=] >data<] [[TIME=] >czas<] [TO=VER >n1<]
Gdzie : dd - określa dzień miesiąca (można go podać cyframi, za pomocą angielskich nazw tygodnia lub słowem yesterday (wczoraj), mmm - nazwę miesiąca (podana trzema literami tworzącymi skrót angielskiej nazwy miesiąca, na przykład Aug (August - sierpień), rr - dwie ostatnie cyfry roku, gg - godzinę (w formacie 24-godzinnym), mm - minutę. Data - oznacza datę podaną w formacie dd-mmm, czas - godzinę (w formacie gg:mm:ss lub gg:mm), n1 - zaś nazwę zbioru, do którego zostanie zapisany aktualny status rozkazu DATE. Nazwa ta jest bez znaczenia, bo i tak dane zostaną zapisane w zbiorze VER w katalogu rozkazowym C: niemniej musi wystąpić
- wzorzec dla systemu 1.2 : DATE/
- wzorzec dla systemu 1.3 : TIME, DATE, TO=VER/K
- wzorzec dla systemu 2.0, 2.1, 3.0, 3.1 : DAY/K,A , DATE/K,A , TIME/K,A , TO=VER/K,A
Rozkaz służy do ustawiania daty i czasu. Stosowany jest przeważnie w Amigach, które fabrycznie nie są wyposażone w zegar (niektóre rozszerzenia pamięci taki zegar jednak mają). Rozkaz ten ustawia czas i datę na zegarze "programowym", który będzie działał do momentu wyłączenia komputera z sieci (i w tym momencie zostanie zresetowany).
Rozkaz użyty bez parametrów wyświetli aktualny stan zegara, na przykład :
Date
da w wyniku (w momencie, gdy to piszę) :
Wednesday 31-Aug-94 02:24:17
Jak zapewne zauważyliście, fragmenty daty są rozdzielone znakiem "-", natomiast składowe czasu znakiem ":". Jeśli zastąpimy datę słowem yesterday, to w listingu katalogu zbiory o dacie wcześniejszej niż ustawiona będą uzupełnione o słowo yesterday, o dacie późniejszej zaś - o słowo future.
Za pomocą rozkazu DATE można także wpisać na początek zbioru komentarz, zawierający aktualny czas (na przykład dzień i godzinę zakończenia naszego programu). Przypuśćmy, że program ten nazywa się Rambo. Skopiujmy go do RAM-u (lepiej zawsze eksperymentować na kopii w pamieci niż na dysku).
Teraz dowolnym edytorem skrypt :
Echo >RAM:1 "Ten wspaniały program w Amiga DOS napisałem Ja !!! w dniu :" NOLINE DATE TO TAM:2 JOIN RAM:1 RAM:2 RAM:Rambo AS RAM:RamboOK DELETE RAM:1 RAM:2
Zapiszmy go (można też w RAM) pod nazwą, powiedzmy, "abba" i uruchommy przez :
Execute RAM:Abba
Teraz możemy obejrzeć, jak wygląda nasz program, a nawet skopiować go na dysk. Jeśli chcemy taki komentarz z datą dopisać na końcu, wówczas zmieniamy nieco skrypt na :
Echo >RAM:1 "Ten wspaniały program w Amiga DOS napisałem Ja !!! w dniu :" NOLINE DATE TO TAM:2 ECHO TO RAM:3 " " JOIN RAM:Rambo RAM:3 RAM:1 RAM:2 AS RAM:RamboOK DELETE RAM:1 RAM:2 RAM:3
Oczywiście, eksperymenty tego rodzaju można przeprowadzać na zbiorach tekstowych, na przykład skryptach AmigaDOS. Nasz programik dopisze date także i do zbiorów binarnych, tyle że... po takiej operacji nie będą one działać właściwie.
Marek Pampuch
Amiga Magazyn, 10/1994r.