AmigaOS war ein Betriebssystem, das seiner Zeit weit voraus war. Es hatte Funktionen, die anderen Heim-Betriebssystemen (wie Windows oder MacOS) damals fehlten, wie präemptives Multitasking. Es gab auch eine Funktion namens Zuweisungen (Assignments). Das vermisse ich wirklich bei Linux!
Ein Amiga-“Assign” ist ein wenig wie der Laufwerksbuchstabe, den du vielleicht von Windows kennst. Zum Beispiel bezieht sich der Windows-Pfad C:\example.txt auf eine Datei namens example.txt im Hauptverzeichnis der Hauptpartition, während dieselbe Datei auf dem ersten Diskettenlaufwerk A:\example.txt heißt.
Auf dem Amiga heißt die Hauptpartition normalerweise DH0:, die zweite Partition DH1: und so weiter, während das erste Diskettenlaufwerk DF0: heißt. Ein ähnlicher Pfad auf dem Amiga wäre also DH0:example.txt oder DF0:example.txt.
Wie du sehen kannst, kann ein “Laufwerksbuchstabe” auf dem Amiga tatsächlich aus mehreren Zeichen und auch Zahlen bestehen. Dies wird als Zuweisung bezeichnet. Der Name DH0 ist der Hauptfestplattenpartition zugewiesen.
Aber warte, da ist noch mehr!
Du kannst mehrere Assigns haben, die auf dasselbe Ziel verweisen. Zum Beispiel enthält die Hauptpartition normalerweise die Amiga-Desktop-Umgebung namens Workbench. Aus diesem Grund hat die Hauptpartition auch ein Label wie Workbench, und auf die Datei könnte auch als Workbench:example.txt zugegriffen werden.
Das ist eigentlich ein ziemlich cleveres Konzept, besonders für austauschbare Medien. Stellen wir uns zum Beispiel vor, wir haben gerade ein Spiel namens shredzone gestartet, und es muss auf eine Datei Music/Opening.mod auf seiner Installationsdiskette zugreifen (AmigaOS verwendet einen Schrägstrich als Dateitrennzeichen, wie alle ordentlichen Betriebssysteme). Es würde eine Datei namens shredzone:Music/Opening.mod öffnen.
AmigaOS würde sehen, dass es keine Zuweisung namens shredzone gibt, und würde einen solchen Dialog öffnen:

Aus Benutzersicht wüsste ich nun, dass ich ein Medium namens shredzone finden und in den Computer einlegen muss. Es spielt keine Rolle, ob es sich um eine Diskette, eine CD oder sogar um einen Netzwerk-Mount handelt. AmigaOS befiehlt mir auch nicht, das Medium in ein bestimmtes Laufwerk einzulegen. Wenn es eine Diskette ist und ich mehrere Diskettenlaufwerke habe, kann ich einfach das auswählen, das ich möchte. AmigaOS erkennt dann, dass ein Medium mit diesem Namen eingelegt wurde, schließt den Dialog und gewährt dem Spiel Zugriff auf die Datei.
Unter Linux müsste ich auf dieses Medium unter einem Pfad wie /run/media/shred/shredzone zugreifen, was viel zum Tippen ist, meinen Benutzernamen enthält und schwerer zu merken ist als nur shredzone:.
Aber warte, da ist immer noch mehr! 😄
Es ist einfach, dem System über die Befehlszeile Zuweisungen hinzuzufügen. Es ist sogar möglich, Unterverzeichnisse als Zuweisungsziel zu verwenden. Bleiben wir bei unserem shredzone-Spielbeispiel. Ich war es leid, jedes Mal die Installationsdiskette einlegen zu müssen, wenn ich dieses Spiel spielen möchte. Also erstelle ich ein Verzeichnis namens DH2:Games/Shredzone/Files auf meiner Festplatte und kopiere alle Dateien von dieser Diskette in dieses Verzeichnis.
Danach gebe ich diesen Befehl in die Befehlszeile ein:
assign shredzone: DH2:Games/Shredzone/Files
Wenn ich das Spiel jetzt starte, sieht AmigaOS, dass bereits ein shredzone-Assign existiert, und greift dort auf die Dateien zu. Auf die Songdatei shredzone:Music/Opening.mod würde also unter DH2:Games/Shredzone/Files/Music/Opening.mod zugegriffen.
AmigaOS nutzt Zuweisungen auch selbst. Zum Beispiel gibt es eine Standardzuweisung namens C:. Sie zeigt normalerweise auf das Verzeichnis C des bootenden Geräts, wo alle Kommandozeilenbefehle (wie dir, copy, delete usw.) erwartet werden. Dieses Assign ähnelt dem, was $PATH für eine Linux-Shell ist.
Stell dir vor, ich habe eine Reihe von Entwicklungswerkzeugen installiert, wie einen Assembler und einen C-Compiler. Die Befehle dieses Toolsets befinden sich unter DH1:Development/DevTools/C. Auf einem Linux-System würde ich diesen Pfad zur Umgebungsvariablen $PATH hinzufügen, damit ich einfach den Befehlsnamen eingeben kann, um einen dieser Befehle auszuführen.
Auf AmigaOS füge ich diesen Pfad einfach zu einer bestehenden Zuweisung hinzu:
assign add C: DH1:Development/DevTools/C
Nun weiß AmigaOS, dass es, wenn ich einen Befehl in die Befehlszeile eingebe, in Workbench:C danach suchen muss, und wenn er dort nicht gefunden wird, wird es versuchen, ihn in DH1:Development/DevTools/C zu finden. Ich könnte sogar Befehle wie dir C: ausführen und alle Dateien in beiden Verzeichnissen sehen. Natürlich ist dies nicht auf zwei Ziele beschränkt.
Es gibt noch mehr, wie z.B. verzögerte Assigns (deferred assigns). Aber ich möchte dir nur einen allgemeinen Eindruck davon vermitteln, was Amiga-Assigns sind und warum ich sie bei Linux vermisse.