Cykl ten miał być kontynuacją cyklu "Nie miała baba kłopotu". W międzyczasie otrzymaliśmy jednak mnóstwo listów od czytelników zarzucających nam, że faworyzujemy nowsze komputery kosztem starszych Amig, których jest (i będzie) w Polsce najwięcej. Postanowiłem zatem cykl opisujący system operacyjny Amigi rozszerzyć tak, aby mogli z niego skorzystać wszyscy.
Baba, jak każda kobieta była dość kapryśna i kończąc jeden odcinek nie wiedziałem, co będzie w następnym. Tym razem jednak postanowiłem nieco usystematyzować podane wiadomości. Ten artykuł będzie wstępem. W kolejnych poznamy składnię wszystkich rozkazów AmigaDOS, a trzeba Wam wiedzieć, że trochę tego jest. Wbrew powszechnemu mniemaniu oprócz zbiorów znajdujących się w katalogu rozkazowym C: jest jeszcze kilkanaście rozkazów. Każdy rozkaż będzie poparty przykładem gdyż nic tak nie nauczy, jak własnoręczne wstukanie kilku linijek do komputera.
Po omówieniu wszystkich rozkazów wspomnę jeszcze krótko o kilku powszechnie używanych jako rozkazy dodatkowe AmigaDOS, (takie jak: ShowPic czy Play), mimo że nie wchodzą one "oficjalnie" w skład systemu.
Następnie zabierzemy się za pozostałe "składniki" systemu, czyli urządzenia (DEVS:), handlery (L:), moje ulubione czcionki (FONTS:), no i oczywiście za dokładny opis bibliotek (czego się domagacie), a na deser zostawimy sobie niespodziankę. Jak z tego widać, zapowiada się na olbrzymią kobyłę. Ponieważ jednak jestem człowiekiem układnym, mogę cykl przerwać w momencie, gdy liczba listów z protestami osiągnie pewne niezbędne minimum. Jeśli nie podoba się Wam proponowany przeze mnie układ - napiszcie również, a wtedy pomyślę, czy czegoś nie da się zmienić. Szkoda miejsca na lanie wody. Bierzmy się zatem do rzeczy.
Na początek jednak kilka słów na temat historii AmigaDOS. Ci z Was, których to nie interesuje, mogą przejść od razu do kolejnych akapitów. Być może ktoś z Was uzna, że ta teoria stoi w sprzeczności z zakończeniem poprzedniego akapitu, że te kilka słów może przyczynić się do nieco lepszego poznania systemu przez większość z Was.
Pierwsza Amiga jaka ujrzała światło dzienne, nie miała swojego systemu operacyjnego! Niewiarygodne, ale prawdziwe. W jaki sposób układy połączone drucikami były w stanie pokazać to, co pokazały - pozostanie tajemnicą Jaya Minera i jego kolegów. Oczywiście taki stan rzeczy mógł być dobry tylko dla pojedynczego egzemplarza, a nie dla komputera, który miał w niedalekiej przyszłości zawojować świat. Rozpoczęły się zatem prace nad stworzeniem systemu dla Amigi. Niestety życie jest brutalne. Odszczepieniec Tramiel wystartował ze swoim Atari ST nieco wcześniej. Podczas gdy prace nad stworzeniem systemu trwały dalej, zlecono firmie Metacomco, aby dostosowała do Amigi swój napisany w BCPL-u system o nazwie TripOs. I tak się, niestety stało. Posiadacze najstarszych Amig 1000 zapewne dalej błogosławią ten pomysł. Nieszczęsny BCPL ciągnie się za Amigą dość długo. Poszczególne partie KickStart-u były sukcesywnie podmieniane, jednak dopiero system 3.0 (v39) jest w pełni napisany w języku C. Jakie to ma konsekwencje? Po pierwsze: BCPL jest znacznie wolniejszy od C, po drugie: wbrew pozorom różni się od swojego następcy. Różnią się zwłaszcza dwa podstawowe typy danych AmigaDOS (wskaźnik - BPTR i łańcuchy - BSTR). Powodowało to znaczne komplikacje. Z drugiej strony "urodą" systemu Amigi była jego elastyczność. Jeśli coś programistom nie pasowało, mogli stworzyć własny rozkaz i zapisać go w katalogu C: Podobnie było z handlerami, urządzeniami czy sterownikami. Zaowocowało to dużą liczbą programów.
Próbą poprawienia sytuacji był rozpowszechniany w amerykańskich BBS-ach Amiga Replacement Project (ARP).Był to odpowiednik komend z katalogu C: Workbencha 1.2 całkowicie napisany w języku C. Nie przyjął się on jednak z zasadniczego powodu - lenistwa użytkowników, którym nie chciało się skopiować komend ARP-owskich oraz zainstalować biblioteki arp.library.
W systemie 1.3 (v34) doszły napisane już w języku C handlery: Shell-Seg, NewCon i FastFileSystem. Doszło też kilka nowych rozkazów. Kickstart został jednak zmieniony w niewielkim stopniu, z punktu widzenia przeciętnego użytkownika. Natomiast z punktu widzenia programistów było to korzystne: stare programy w większości działały z nowym systemem.
Nieco inaczej wyglądała z systemem nazwanym 2.0, zastosowanym po raz pierwszy w Amidze 3000. Tu początkowo wzorowano się na systemie 1.1 (v31 dla NTSC lub v32 dla PAL), przy czym wszystkie rozkazy zostały napisane już w C, jednak BCPL znowu odcisnął swoje piętno i, dla zachowania częściowej zgodności z programami pisanymi na poprzednie wersje Kickstart-u, w dos.library dalej królowały BPTR-y i BSTR-y. Prowadziło to do bezsensownej konieczności przekształcania adresów do postaci BCPL, które to potem Kickstart zmieniał z powrotem na ich postać normalną, używaną w C i Asemblerze. Poza tym pierwsza wersja kickstartu, v36, nie była wolna od błędów i niedociągnięć, co spowodowało wypuszczenie już w pełni sprawnej i funkcjonalnej wersji v37 wraz z pojawieniem się Amigi 500+ Niestety, coś za coś. Okazało się, że nie wszystkie programy napisane w starszych wersjach programu chcą działać z wersją v37. Stało się to regułą. Kolejne systemy: 2.1, 3.0, 3.1 niby były lepsze, lecz zwiększały procent starszych programów, które nie działają. Odbiło się to na zachowaniu producentów oprogramowania. Część z nich przeszła na bardziej konserwatywnego peceta, w którym każda nowa wersja systemu dodawała niewiele, ale była zgodna "w dół". Inni zastosowali strajk włoski, polegający na tym, że nadal produkowano programy, ale dla tej wersji systemu, którą programiści mieli opanowaną najlepiej. Zmartwienia firm programowych nie są jednakże naszymi problemami. Przeciętnemu użytkownikowi chodzi o to, aby w miarę sprawnie poruszać się po systemie. Mam nadzieję, że nowy cykl Magazynu AMIGA pomoże im w tym.
Skoro znamy już korzenie - zobaczmy teraz to, o czym zamierzamy się uczyć. W poniższej tabelce znajdziecie zestawienie wszystkich rozkazów AmigaDOS dla wszystkich poza wersją 1.1) aktualnie dostępnych jego wersji. Przyjąłem następujące oznaczenia: (-) - rozkaz nie występuje, (0) - rozkaz nie występuje, ale można go przegrać z poprzednich wersji i będzie działał, (+) - rozkaż nie został zmieniony w porównaniu z systemem o niższym numerze, (*) - rozkaż jest zmieniony w porównaniu z tak samo nazwanym rozkazem poprzedniej wersji.
| Wersja systemu Nazwa Rozkazu |
1.2 | 1.3 | 2.04 | 2.1 | 3.0 | 3.1 |
| ; (średnik) | + | + | + | + | + | + |
| * (gwiazdka) | - | - | + | + | + | + |
| ? (pytajnik) | + | + | + | + | + | + |
| >,>>,< (strumienie) | + | + | + | + | + | + |
| "" (pustycudzysłów) | - | - | + | + | + | + |
| ` (apostrof) | + | + | + | + | + | + |
| CTRL\ | + | + | * | + | + | + |
| ALT` | + | + | + | + | + | + |
| #? (joker) | + | + | + | + | + | + |
| AddBuffers | + | * | * | + | + | + |
| AddDataType | - | - | - | * | + | + |
| AddMonitor | - | - | - | - | ? | ? |
| Alias | - | - | + | + | * | + |
| ALink | + | + | + | + | + | + |
| Assem | + | + | + | + | + | + |
| Ask | + | + | + | + | + | + |
| Assign | + | * | + | + | + | + |
| AutoPoint | - | - | + | + | + | + |
| Avail | - | + | + | + | + | + |
| A2024 | - | - | - | + | + | + |
| BindDrivers | + | * | + | + | + | + |
| BindMonitor | - | - | + | + | + | + |
| Blanker | - | - | + | * | + | + |
| Break | + | + | + | + | + | + |
| Bru | - | - | + | + | + | + |
| Calculator | + | + | + | * | + | + |
| Cd | + | + | * | + | + | + |
| ChangeTaskPri | + | + | + | * | + | + |
| Check | - | - | - | - | - | + |
| ClickToFront | - | - | + | + | + | + |
| Clock | + | + | + | * | + | + |
| Colors | - | - | + | + | + | + |
| ConClip | - | - | + | + | + | + |
| Copy | + | + | * | + | + | + |
| Cpu | + | + | + | + | + | + |
| CrossDos | - | - | - | + | + | + |
| Date | + | * | + | + | + | + |
| DblNTSC | - | - | - | - | + | + |
| DblPAL | - | - | - | + | + | + |
| Delete | + | * | * | + | + | + |
| Dir | + | * | * | + | + | + |
| DiskChange | + | + | + | + | + | + |
| DiskCopy | + | - | + | + | + | + |
| DiskDoctor | + | + | + | 0 | 0 | 0 |
| Display | - | - | + | - | - | - |
| DjMount | + | + | 0 | 0 | + | + |
| Download | + | + | 0 | 0 | + | + |
| DPat | - | + | * | + | + | + |
| DpFormat | + | + | 0 | + | + | + |
| Echo | + | * | * | + | + | + |
| Ed | + | + | * | + | + | + |
| Edit | + | + | * | + | + | + |
| Else | + | + | * | + | + | + |
| EndCli | + | + | + | + | + | + |
| EndShell | - | - | * | + | + | + |
| EndIf | + | + | * | + | + | + |
| EndSkip | - | + | + | + | + | + |
| Euro36 | - | - | - | - | + | + |
| Euro72 | - | - | - | - | + | + |
| Eval | - | + | * | + | + | + |
| Exchange | - | - | + | * | + | + |
| Execute | + | * | * | + | + | + |
| Extract | - | - | - | - | - | + |
| FailAt | + | + | * | + | * | + |
| FastMemFirst | + | + | + | + | + | + |
| Fault | + | + | + | + | + | + |
| FileNote | + | + | * | + | + | + |
| FixFonts | - | - | + | + | + | + |
| FF | - | + | + | + | + | + |
| FKey | + | + | + | * | + | + |
| Font | - | - | + | + | + | + |
| Format | + | 0 | * | * | * | + |
| Get | - | - | + | + | + | + |
| GetEnv | - | + | * | + | + | + |
| GraphicDump | + | * | + | + | + | + |
| GuessBootDev | - | - | - | - | - | + |
| IconPos | - | - | - | - | - | + |
| IControl | - | - | + | * | + | + |
| IconX | - | + | + | + | + | + |
| If | + | * | * | + | + | + |
| IHelp | - | - | + | - | - | + |
| Info | + | * | + | + | + | + |
| InitPrinter | + | + | + | + | + | + |
| Input | - | - | + | + | + | + |
| Install | + | * | * | + | + | + |
| IPrefs | - | - | + | + | + | + |
| Join | + | + | * | + | + | + |
| Lab | + | + | * | + | + | + |
| List | + | * | * | + | + | + |
| LoadResource | - | - | - | - | - | + |
| LoadWb | + | + | + | * | + | + |
| Locale | - | - | - | + | + | + |
| Lock | - | + | * | + | + | + |
| MagTape | - | - | + | + | + | + |
| MakeDir | + | + | * | + | + | + |
| MakeLink | - | - | + | + | + | + |
| mEmacs | + | + | + | + | + | + |
| Mount | + | * | * | + | + | + |
| MouseBlankier | - | - | - | + | + | + |
| MultiScan | - | - | - | + | + | + |
| MultiView | - | - | - | - | + | * |
| NewCli | + | * | * | + | + | + |
| NewShell | - | + | * | + | + | + |
| NoCapsLock | - | - | + | + | + | + |
| NoFastMem | + | + | + | + | + | + |
| NTSC | - | - | - | + | + | + |
| Overscan | - | - | + | * | + | + |
| Pal | - | - | - | + | + | + |
| Palette | - | - | + | + | + | + |
| Park | + | + | + | + | + | + |
| Path | + | + | + | + | + | + |
| PCD | - | + | * | + | + | + |
| Pointer | - | + | + | * | + | + |
| Prefs | + | * | * | * | + | + |
| Prep | + | + | 0 | + | + | + |
| PrepCard | - | - | 0 | + | + | + |
| Printer | - | + | + | * | + | + |
| PrinterGfx | - | - | + | * | + | + |
| PrinterPs | - | - | + | * | + | + |
| PrintFiles | - | + | + | + | + | + |
| ProdPrep | - | - | - | - | - | + |
| Prompt | + | + | * | + | + | + |
| Protect | + | * | * | + | + | + |
| Quit | + | + | * | + | + | + |
| Reboot | - | - | - | - | - | + |
| Relabel | + | + | + | + | + | + |
| RemRAD | - | + | * | + | + | + |
| Rename | + | + | + | + | + | + |
| RequestChoice | - | - | - | - | + | + |
| RequestFile | - | - | - | - | + | + |
| Resident | - | + | * | + | + | + |
| RexxMast | - | 0 | + | + | + | + |
| Run | + | + | + | + | * | + |
| Say | + | + | 0 | + | + | + |
| ScreenMode | - | - | + | + | + | + |
| Search | + | * | * | + | + | + |
| Serial | + | * | * | + | + | + |
| Serial | - | + | + | * | + | + |
| Set | + | + | + | + | + | + |
| SetClock | + | + | + | + | + | + |
| SetDate | - | + | * | * | + | + |
| SetEnv | - | + | * | + | + | + |
| SetFont | - | - | + | + | * | + |
| SetKeyboard | - | - | + | + | + | + |
| SetMap | + | + | + | 0 | + | + |
| SetPrefs | - | - | + | + | + | + |
| ShowConfig | - | - | - | + | + | + |
| Skip | + | * | + | + | + | + |
| Sort | - | + | * | + | + | + |
| Sound | - | - | - | + | + | + |
| SPat | - | + | * | + | + | + |
| Stack | + | - | + | + | + | + |
| Status | + | * | + | + | + | + |
| Super72 | - | - | - | + | + | + |
| Time | - | - | + | * | + | + |
| Type | + | * | * | + | + | + |
| UnAlias | - | - | + | + | + | + |
| UnSet | - | - | + | + | + | + |
| UnSetEnv | - | - | + | + | + | + |
| UpDateWb | - | - | - | - | - | + |
| Version | + | * | * | * | + | + |
| Wait | + | * | + | + | * | + |
| WbPattern | - | - | + | * | + | + |
| Which | - | + | * | + | + | + |
| Why | - | + | + | + | + | + |
Marek Pampuch, Magazyn Amiga, Styczeń 1994r.