AmigaDOS

Innen: amigaspirit.hu - pegasos.hu Wiki
A lap korábbi változatát látod, amilyen Chain-Q (vitalap | szerkesztései) 2007. október 22., 21:42-kor történt szerkesztése után volt. (tovabbi assign infok)
Ugrás a navigációhozUgrás a kereséshez

Az AmigaDOS az AmigaOS lemez- és I/O kezelő alrendszerének a neve. Bár külön névvel illetjük, szerves részét képezi a rendszernek. Fizikailag az AmigaDOS a Kickstartban helyezkedik el, a dos.library nevű függvénykönyvtárban. Az AmigaDOS külső fejlesztés volt, a Commodore utólag vásárolta meg és integrálta a rendszerbe, miután az eredeti lemezes alrendszer fejlesztése jelentős késéseket szenvedett. Az AmigaDOS-t eredetileg BCPL nyelven írták, míg a rendszer többi része C és M68K assembly nyelven készült. Bár a jelenlegi változatot már újraimplementálták C nyelven, a BCPL hatásának nyomai ma is megtalálhatók az AmigaOS API-ban. A MorphOS és az AROS egy, az AmigaDOS-sal API kompatibilis lemezkezelő alrendszert tartalmaz.

Általános ismertető

Az AmigaDOS érdekes keveréke a CP/M és a Unix rendszereknek. Bár a rendszer a CP/M-hez hasonlóan meghajtókat kezel, ezeknek nem betűjelük, hanem több karakterből alló nevük van, amelyeket tetszés szerint változtathatunk. Például az első floppymeghajtó hagyományos elnevezése DF0:, míg az első CD-meghajtóé általában CD0:. A rendszer nem case-sensitive. Viszont igen erősen a Unixra hasonlít pl. a fájlattribútumok felépítése, vagy az, hogy a kiterjesztések csak jelképes szerepűek, nincs jelentőségük pl. annak megállapításában hogy egy állomány futtatható-e. Az AmigaDOS kezel soft- vagy másnéven symlinkeket és hardlinkeket is. Eszközöket a Unixhoz hasonlóan futási időben csatolhatunk le és fel, tetszőleges fájlrendszer használatával. Az RDB-nek köszönhetően a merevlemezeinken is rugalmasan variálhatjuk a fájlrendszereket. A Commodore eleinte OFS, később FFS filerendszerrel szállította az AmigaOS-t. Ezek a filerendszerek maximum 32 karakteres fájlneveket engedtek meg, bár az elméleti korlát 107 karakter. Az AmigaOS-en ma használt filerendszerek mint pl. az FFS2, a PFS3 és az SFS már képesek kezelni a 32 karakternél hosszabb neveket is. Az rendszer legnagyobb korlátja, hogy maximálisan 2GB-os fájlok kezelését engedi meg. Az ennél nagyobb fájlok kezeléséhez szükséges új API még nem készült el, bár valamennyi Amiga-eredetű rendszer készítői dolgoznak rajta.

A shell

A shellt legegyszerűbben úgy érhetjük el, ha a Workbench menü Execute command... almenüjében kiadjuk a newshell parancsot. Ekkor megjelenik egy shell ablak, amely használatra kész. A prompt alapértelmezésben az éppen használatban lévő meghajtó volume nevét, és az éppen használt könyvtár elérési útját jeleníti meg. Nagyjából igy fest:

Ram Disk:>
  • Tipp: MorphOS alatt használhatjuk a Right-Command - N billentyűkombinációt is a shell indításához.
  • Tipp: A newshell helyett a newcli parancsot is használhatjuk (CLI).

Alapvető műveletek

Meghajtót úgy válthatunk, ha kiadjuk a meghajtó nevét, mint parancsot. Használhatjuk a volume és a device nevét is mint parancsot. A különbség, hogy pl. floppylemez esetén a device neve mindíg állandó (DF0) míg a volume név az éppen a meghajtóban lévő lemez nevét jelenti. Tehát, ha berakjuk a floppyba mondjuk az Install nevű lemezt, kétféleképpen is átléphetünk rá. A prompt viszont mindig a volume nevet fogja megjeleníteni. Például:

Ram Disk:> Install:
Install:> Ram:
Ram Disk:> DF0:
Install:> System:
System:>

Zseniális. A könyvtárakba is hasonló módszerrel léphetünk be. Vagyis, bár létezik cd parancs, könyvtárváltáshoz, azt nem minden esetben szükséges kiadni. A parent directory jele a /, mig az adott meghajtó gyökérkönyvtárát : jelöli. Amennyiben van olyan parancsnév, amilyen könyvtárba be szeretnénk lépni, tegyünk a könyvtárnév végére egy / jelet, így a kiadott parancs biztosan a könyvtárra fog vonatkozni. Vagy ilyen esetben használhatjuk a cd parancsot. A könyvtárváltást összevonhatjuk a meghajtóváltással. Néhány példa:

System:> Devs
System:Devs> Monitors
System:Devs/Monitors> /
System:Devs> :Storage/DOSDrivers
System:Storage/DOSDrivers> :
System:> Work:Develop/Demo/Breakpoint2006
Work:Develop/Demo/BreakPoint2006> //
Work:Develop> System:
System:>
  • Tipp: A shell alapból tartalmaz history funkciót, azaz megjegyzi korábban kiadott parancsainkat. Ezek között a fel-le gombok lenyomásával "válogathatunk".

Hozzunk létre könyvtárat. Ezt a makedir paranccsal tehetjük meg. Az állományok és a könyvtárak, sőt, a meghajtók nevében is szerepelhet szóköz. Ekkor tegyük az adott nevet idézőjelbe, így a rendszer egy paraméterként fogja kezelni. Viszont könyvtárak esetében ekkor mindenképpen használni kell a cd parancsot. Például:

System:> makedir "Napos Csibe"
System:> "Napos Csibe"
object not found
System:> cd "Napos Csibe"
System:Napos Csibe> /
System:>

Könyvtárat és állományt egyaránt a delete paranccsal törölhetünk.

System:> delete "Napos Csibe"
Napos Csibe  Deleted
System:>

Fájlok kilistázására két parancs létezik, a dir valamint a list egyelőre elég annyit tudni róluk, hogy a dir parancs egy rövid, csak neveket felsoroló listát, míg a list parancs egy részletesebb listát ad.

System:> Ram:
Ram Disk:> dir
     T (dir)
     Clipboards (dir)
     ENV (dir)
  disk.info
Ram Disk:> list
T                            Dir ----rwed Tuesday   22:25:12
Clipboards                   Dir ----rwed Tuesday   22:25:07
ENV                          Dir ----rwed Tuesday   22:25:23
disk.info                   1648 ----rw-d 17-May-02 12:14:32  
1 file - 3 directories - 262 blocks used
Ram Disk:>

A shellben a joker karakter a ?. Ha elétesszük egy #-t az azt jelenti, hogy az adott karakter helyén ismeretlen számú karakter van. A joker karaktert többször is alkalmazhatjuk. Például:

Ram Disk:> dir disk#?
  disk.info
Ram Disk:> dir c?ipbo#?
     Ram Disk:Clipboards (dir)
Ram Disk:> 

És most néhány fejlettebb trükk. Adott mintát tartalmazó fájlok listázásának tiltása, a ~ (tilde) karakter használatával. A példa nem listázza az .info kiterjesztésű állományokat, egyébként mindent.

Ram Disk:> dir ~(#?.info)
     Ram Disk:T (dir)
     Ram Disk:Clipboards (dir)
     Ram Disk:ENV (dir)
Ram Disk:>

Minták kombinálása. Kilistázza a .pas és a .c végű fájlokat. Nem csak kettő, hanem több minta is kombinálható.

Ram Disk:> dir Work:Develop/HelloWorld/#?.(pas|c)
  example.c                          first.c
  first.pas                          hello.c
  hello.pas
Ram Disk:>

A dir és a list parancs további lehetőségeket is rejt, amelyről bővebben itt olvashatsz.

Az assignok

Az assign rendszer talán az AmigaDOS legjellegzetesebb, legegyedibb funkciója. Hasonló persze sok más rendszerben van - vagyis hogy virtuális hivatkozást készíthetünk egy fizikai kötet vagy meghajtó egy könyvtárára, külön "meghajtónevet" adva neki, de egyetlen más rendszerben sem annyira megkerülhetetlen ez, mint az AmigaDOS-ban. A rendszer ugyanis alapértelmezetten is létrehoz jónéhány assignt, például a SYS: nevű assign a mindenkori bootparticióra mutat. A C: assign minden esetben a SYS:C/ könyvtárra mutat, ahol a rendszer alapvető parancsai találhatók. A LIBS: assign, pedig a SYS:Libs/-re mutat alapértelmezetten - az AmigaOS itt fogja keresni a különböző külső függvénykönyvtárakat, library-kat. Ezen kívül van néhány további alapértelmezett assign is, például az L:, S:, ENVARC: vagy a DEVS:, ezekről később lesz szó.

Többszörös assignok

Az eddigiek persze bármely rendszerben megvannak - akár symlink, akár meghajtó-hozzárendelés formájában - az AmigaDOS-on az igazi csavart a történetben a többszörös assignok jelentik. Vagyis, egyetlen assign-névhez több könyvtárat is hozzárendelhetünk! Ha egy assign-hoz több könyvtárt rendeltünk hozzá, akkor arra a következő szabályok érvényesek:

  • minden fájl listázási, írási és törlési művelet a legelőször assignolt könyvtárban fog megtörténni
  • minden fájl megnyitási és olvasási művelet érinti a további könyvtárakat is

Hogy ez miért jó? Nos, tételezzük fel, hogy letöltöttünk például egy külső függvénykönyvtárat, amelyet ahhoz, hogy az azt használó programok is megtaláljanak, a LIBS:-be kellene bemásolnunk. Könnyen belátható, hogy aktívan használt rendszeren a LIBS: elég hamar megtellik különféle - ki tudja honnan származó - #?.library állományokkal. Ezt elkerülhetjük, ha létrehozunk egy további könyvtárat (például: SYS:MyLibs/), és ezt a könyvtárat hozzáadjuk a LIBS: assignhoz. Ezekután a rendszer az ebbe a könyvtárba másolt #?.library állományokat éppen úgy meg fogja találni, mintha az alapértelmezett SYS:Libs/ alatt lennének. Ez a módszer segít elkerülni a rendszer- és a saját beszerzésű függvénykönyvtárak keveredését, és emellett jó példa a többszörös assignokra is. Könnyen belátható, hogy a módszer sok más esetben is hasznos lehet (például egyes könyvtárak ideiglenes hozzáadása assignokhoz - elkerülendő a másolgatást), stb.

Műveletek assignokkal

Az assignok használata igen egyszerű, az assign parancs segítségével. A példában a KACSA: nevű assignt hozzuk létre, amely a Ram Disk:-re mutat:

Ram Disk:> SYS:
System:> assign KACSA: "Ram Disk:"
System:> dir KACSA:
     Ram Disk:T (dir)
     Ram Disk:Clipboards (dir)
     Ram Disk:ENV (dir)
System:>

TODO

Ötletek haladóknak

TODO


TODO: további parancskészlet, assignok, attribútumok, scriptek, stb. FIXME