BOOPSI

BOOPSI (Basic Object Oriented Programming System for Intuition) ist ein objektorientiertes Framework innerhalb des AmigaOS-Betriebssystems. Es wurde 1990 mit AmigaOS 2.0 eingeführt und erweitert die Intuition.library um eine objektorientierte Architektur für grafische Benutzeroberflächen (GUI). BOOPSI bildet die technische Grundlage für spätere GUI-Toolkits wie MUI und ReAction.

Überblick

BOOPSI ermöglicht es, GUI-Elemente (z. B. Gadgets, Bilder, Listen) als Objekte zu behandeln, die über gemeinsame Methoden angesprochen und erweitert werden können. Obwohl AmigaOS in der Programmiersprache C implementiert ist, stellt BOOPSI eine Form von Objektorientierung durch C-Datenstrukturen, Funktionszeiger und polymorphe Tag-Listen bereit.

Dadurch können neue Klassen entwickelt werden, ohne bestehende Systemfunktionen zu verändern. Das System ist Bestandteil der Intuition.library und stellt folgende Kernfunktionen bereit:

  1. Klassendefinitionen (MakeClass(), AddClass())
  2. Objekterzeugung (NewObjectA())
  3. Nachrichtenverarbeitung (DoMethod(), SetAttrs(), GetAttr())

Geschichte

1990 – AmigaOS 2.0 (Kickstart 36)
Einführung von BOOPSI in der Intuition.library als klassenbasiertes GUI-Modell (Basis-Klassen wie rootclass, gadgetclass, imageclass).
1992 – AmigaOS 3.0 (Kickstart 39)
Erweiterung des BOOPSI-Modells um zusätzliche Standardklassen (u. a. Prop-, String- und Listbrowser-Klassen).
1994 – AmigaOS 3.1 (Kickstart 40)
Stabilisierung und Ausbau der Ereignisbehandlung und BOOPSI-Methoden (OM\_*, GM\_*, IM\_*).
1996 – ClassAct (Public Domain)
Veröffentlichung des BOOPSI-basierten GUI-Toolkits ClassAct (u. a. window.class, layout.gadget, button.gadget); diente später als Grundlage für ReAction.
1999 – AmigaOS 3.5
Übernahme/Weiterentwicklung von ClassAct unter dem Namen ReAction durch Haage und Partner; Integration als offizielles GUI-Toolkit des Systems.
2000 – AmigaOS 3.9
AmigaOS 3.9 erweitert das BOOPSI-basierte ReAction-System um zusätzliche Gadget- und Image-Klassen, darunter page.gadget, penmap.image und getfile.gadget. Diese Erweiterungen verbesserten die Gestaltungsmöglichkeiten und Integration von Benutzeroberflächen erheblich.
2004 – AmigaOS 4.0
Mit AmigaOS 4.0 wurde das BOOPSI-System auf die PowerPC-Plattform portiert. Dabei wurden die ReAction-Klassen an die neue Systemarchitektur angepasst und um zusätzliche GUI-Elemente ergänzt. Die grundlegende BOOPSI-Struktur blieb jedoch unverändert.
2019 – Vollständige Übernahme durch Hyperion
Hyperion Entertainment gibt die vollständige Übernahme von ReAction bekannt („has acquired full ownership of ReAction“); bestätigt ReAction als offizielles AmigaOS-GUI seit 3.5 und dessen Weiterentwicklung.
2025 – AmigaOS 3.2.3
ReAction-Klassen erhalten zahlreiche Aktualisierungen im Rahmen von AmigaOS 3.2 Update 3 (68k).

Technische Funktionsweise

BOOPSI definiert eine hierarchische Struktur von Klassen und Objekten, die über ein gemeinsames Nachrichtenmodell kommunizieren. Jede Klasse wird durch eine C-Struktur vom Typ struct IClass beschrieben, die einen Dispatcher-Funktionszeiger enthält:

struct IClass {
  struct MinNode cl_Node;
  UWORD cl_ID;
  UWORD cl_UserData;
  ULONG (*cl_Dispatcher)(struct IClass *cl, Object *obj, Msg message);
  struct IClass *cl_Super;
};

Objekte werden typischerweise über NewObjectA() erzeugt und mit DisposeObject() freigegeben. Methodenaufrufe erfolgen über DoMethod() oder DoSuperMethod(), Parameter werden in Tag-Listen (struct TagItem) übergeben.

BOOPSI stellt objektorientierte Konzepte in C bereit:

Bedeutung und Nachfolger

BOOPSI bildete die technische Grundlage für mehrere GUI-Frameworks unter AmigaOS:

Magic User Interface (MUI)
Entwickelt ab 1992 von Stefan Stuntz, erweitert BOOPSI um automatische Layoutsysteme, Stilverwaltung und komplexe Klassenhierarchien.
ReAction
Von ClassAct abgeleitetes GUI-System, zunächst von Haage & Partner (1999), seit 2019 im vollständigen Eigentum von Hyperion Entertainment.

ReAction bildet das standardisierte, BOOPSI-basierte GUI-Toolkit unter AmigaOS 3.x und 4.x; es wird aktiv weitergepflegt (z. B. durch Aktualisierungen der ReAction-Klassen in AmigaOS 3.2.3 im Jahr 2025).

Auch spätere Komponenten wie die DataTypes-Architektur profitierten von BOOPSI-Konzepten (Tag-Listen, objektähnliche Schnittstellen).

Merkmale und Vorteile

  1. Modularität: GUI-Elemente als wiederverwendbare Klassen.
  2. Erweiterbarkeit: Eigene Klassen können bestehende erweitern oder ersetzen.
  3. Konsistenz: Einheitliche Schnittstellen für alle GUI-Objekte.
  4. Effizienz: Geringer Speicherbedarf, geeignet für Systeme ohne Speicherverwaltung.
  5. Reentrancy: BOOPSI-Objekte sind task-sicher innerhalb der Intuition-Architektur.

Nutzung und Verbreitung

BOOPSI fand breite Anwendung in vielen AmigaOS-Anwendungen. Entwickler schätzten die Flexibilität und die Möglichkeit, komplexe Benutzeroberflächen mit minimalem Aufwand zu erstellen. Hier sind einige Beispiele für die Nutzung von BOOPSI:

Diese Beispiele zeigen, dass BOOPSI in einer Vielzahl von Anwendungen eingesetzt wurde, von Dateimanagern über Musik-Player bis hin zu Webbrowsern und E-Mail-Clients. Die breite Anwendung von BOOPSI unterstreicht seine Bedeutung und Flexibilität für die Entwicklung von grafischen Benutzeroberflächen im AmigaOS.

Literatur

Einzelnachweise

  1. 1 2 3 4 Commodore-Amiga Inc.: Amiga ROM Kernel Reference Manual: Libraries, 2. Auflage, 1991–1992, Kapitel 12 „BOOPSI – Object-Oriented Intuition“.
  2. ↑ BOOPSI – Object Oriented Intuition (Archiv). In: AmigaOS Documentation Wiki. Archiviert vom Original am 2. Juni 2021; abgerufen am 14. Oktober 2025 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
  3. ↑ BOOPSI – Object Oriented Intuition (Archiv). In: AmigaOS Documentation Wiki. Archiviert vom Original am 2. Juni 2021; abgerufen am 14. Oktober 2025 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
  4. ↑ BOOPSI – Object Oriented Intuition (Archiv). In: AmigaOS Documentation Wiki. Archiviert vom Original am 2. Juni 2021; abgerufen am 14. Oktober 2025 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
  5. ↑ ClassAct2Demo. In: Aminet. 1996, abgerufen am 14. Oktober 2025 (englisch).
  6. ↑ classact33.lha – The final public version of ClassAct. In: Aminet. 15. Dezember 2006, abgerufen am 14. Oktober 2025 (englisch).
  7. ↑ ReAction. In: AmigaOS Documentation Wiki. 26. Januar 2025, abgerufen am 14. Oktober 2025 (englisch).
  8. ↑ ReAction. In: AmigaOS Documentation Wiki. Abgerufen am 14. Oktober 2025 (englisch).
  9. ↑ ReAction Class Demo (AmigaOS 3.9). In: Aminet. 2000, abgerufen am 14. Oktober 2025 (englisch).
  10. ↑ ReAction. In: AmigaOS Documentation Wiki. Abgerufen am 14. Oktober 2025 (englisch).
  11. ↑ AmigaOS 4.0 SDK Documentation. In: Hyperion Entertainment. 2004, abgerufen am 14. Oktober 2025 (englisch).
  12. ↑ Full acquisition of ReAction GUI toolkit. In: Hyperion Entertainment. 14. Mai 2019, abgerufen am 14. Oktober 2025 (englisch).
  13. ↑ New Update 3 for AmigaOS 3.2 Available for Download. In: Hyperion Entertainment. 2. April 2025, abgerufen am 14. Oktober 2025 (englisch).
  14. ↑ Stuntz, Stefan u. a.: MUI Developer Documentation, 1992–2021, MUI Dev Team, https://github.com/amiga-mui/muidev/wiki.
  15. ↑ Haage & Partner: ReAction Toolkit Developer Reference, 1999.
  16. ↑ New Update 3 for AmigaOS 3.2 Available for Download. In: Hyperion Entertainment. 2. April 2025, abgerufen am 14. Oktober 2025 (englisch).
  17. ↑ Commodore-Amiga Inc.: Amiga ROM Kernel Reference Manual: Libraries, Kapitel 37 „Utility Library“, 1991.
  18. ↑ AmigaAMP3-68k readme. In: aminet.net. Abgerufen am 21. Dezember 2022 (englisch).
  19. ↑ BeeBase V1.2 readme. In: sourceforge.net. Abgerufen am 6. September 2025 (englisch).
  20. ↑ YAM29p1 readme. In: aminet.net. Abgerufen am 19. April 2014 (englisch).