PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:andere:bob

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

software:diy:andere:bob [08/07/2010 19:07] – Ergänzung Kommandozeilen-Optionen ebertsoftware:diy:andere:bob [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
 {{  :software:diy:andere:kiezsoftlogo.png?200|:kiezsoft.png}} {{  :software:diy:andere:kiezsoftlogo.png?200|:kiezsoft.png}}
 +
 +
 +
  
  
Zeile 10: Zeile 13:
 Eines der wichtigsten Kriterien bei der Entwicklung von BOB+ war sparsamster Umgang mit Ressourcen. BOB+ kommt mit knapp 50 KB Platz auf einer Speicherkarte und weniger als 128 KB Arbeitsspeicher aus. Somit ist es möglich, auf einem Atari-Portfolio in Normalausstattung BOB+-Programme nicht nur auszuführen, sondern auch zu entwickeln.\\ Eines der wichtigsten Kriterien bei der Entwicklung von BOB+ war sparsamster Umgang mit Ressourcen. BOB+ kommt mit knapp 50 KB Platz auf einer Speicherkarte und weniger als 128 KB Arbeitsspeicher aus. Somit ist es möglich, auf einem Atari-Portfolio in Normalausstattung BOB+-Programme nicht nur auszuführen, sondern auch zu entwickeln.\\
 BOB+ hält noch zwei Finessen parat; es ist möglich BOB+ Quellcode unter DOS in Batch-Dateien auszuführen (siehe GRAPH.BAT) und BOB+ unterstützt die Einbindung von DOS-DLLs (siehe AESTEST.BP).\\ BOB+ hält noch zwei Finessen parat; es ist möglich BOB+ Quellcode unter DOS in Batch-Dateien auszuführen (siehe GRAPH.BAT) und BOB+ unterstützt die Einbindung von DOS-DLLs (siehe AESTEST.BP).\\
-Ab der Version 1.1d gibt es außerdem die Möglichkeit, ein in Bytecode übersetztes BOB+-Programm mit der Laufzeitumgebung zu einer eigenständig ausführbaren EXE-Datei zu binden, was besonders dann interessant ist, wenn man das Programm an Nutzer weitergeben will, die keine BOB+-Umgebung eingerichtet haben.\\+Ab der Version 1.1d gibt es außerdem die Möglichkeit, ein in Bytecode übersetztes BOB+-Programm mit der Laufzeitumgebung zu einer eigenständig ausführbaren (EXE-Datei zu binden, was besonders dann interessant ist, wenn man das Programm an Nutzer weitergeben will, die keine BOB+-Umgebung eingerichtet haben.\\ 
 +Version 1.1e ist ein "kleines" Update, das die Implementierung tieferer Klassenhierarchien in BOB+ vereinfacht.\\ 
 +**Achtung:** Für die Version 1.1e gibt es nochmals eine Bugfix-Release, die einen Fehler bei der Konvertierung von float-Werten in Zeichenketten behebt. Sie ersetzt ab sofort (25.12.2013) die bisherige Version. Weitere Änderungen gibt es nicht, daher auch keine Änderungen an der Dokumentation.
 \\ \\
 Bezugsquelle: http://www.kiezsoft.de/  Bezugsquelle: http://www.kiezsoft.de/ 
 \\ \\
 \\ \\
 +
  
  
Zeile 22: Zeile 28:
 ===== Lieferumfang ===== ===== Lieferumfang =====
  
-Im Downloadbereich von [[http://www.kiezsoft.de/|KiezSoft]] sind immer die neusten Versionen vom BOB+, samt Dokumentation und Quell-Codes erhältlich. Hier werden die Portfolio-relevanten Dateien der Version 1.1.d aufgelistet.\\ +Im Downloadbereich von [[http://www.kiezsoft.de/|KiezSoft]] sind immer die neusten Versionen vom BOB+, samt Dokumentation und Quell-Codes erhältlich. Hier werden die Portfolio-relevanten Dateien der Version 1.1e aufgelistet.\\ 
-Diese Version ist [[http://www.kiezsoft.de/download/bobplus/bob_plus_1_1d.zip|hier]] zum direkten Download verfügbar.\\+Diese Version ist [[http://www.kiezsoft.de/download/bobplus/bob_plus_1_1e.zip|hier]] zum direkten Download verfügbar.\\ 
  
  
Zeile 37: Zeile 44:
 ==== Programme ==== ==== Programme ====
 ^Name ^Beschreibung ^Größe ^Datum^ ^Name ^Beschreibung ^Größe ^Datum^
-|BP.EXE |Source-Code Interpreter/Compiler |  49259 Bytes|  06.07.10+|BP.EXE |Source-Code Interpreter/Compiler |  49371 Bytes|  24.12.13
-|BPR.EXE  |Byte-Code Interpreter  |   40195 Bytes|   06.07.10+|BPR.EXE  |Byte-Code Interpreter  |   40240 Bytes|   24.12.13
-|BPI.EXE  |kleinere Nur-Integer-Version von BP.EXE  |   35466 Bytes|  06.07.10+|BPI.EXE  |kleinere Nur-Integer-Version von BP.EXE  |   35497 Bytes|  24.12.13
-|BPRI.EXE  |kleinere Nur-Integer-Version von BPR.EXE  |   26492 Bytes|   06.07.10+|BPRI.EXE  |kleinere Nur-Integer-Version von BPR.EXE  |   26582 Bytes|   24.12.13
-|BPC.EXE  |seperater Byte-Code Compiler  |   33068 Bytes|   06.07.10|+|BPC.EXE  |seperater Byte-Code Compiler  |   33077 Bytes|   24.12.13|
  
 BP.EXE und BPR.EXE sind die "eigentlichen" Programme, BP zum Ausführen und Kompilieren von Quelldateien (*.BP) und BPR zum Ausführen von kompiliertem Byte-Code. BPI und BPRI sind kleinere Varianten für Systeme mit wenig Ressourcen. Sie Verzichten auf die Unterstützung von Fließkomma-Zahlen und benötigen entsprechend weniger Speicherplatz.\\ BP.EXE und BPR.EXE sind die "eigentlichen" Programme, BP zum Ausführen und Kompilieren von Quelldateien (*.BP) und BPR zum Ausführen von kompiliertem Byte-Code. BPI und BPRI sind kleinere Varianten für Systeme mit wenig Ressourcen. Sie Verzichten auf die Unterstützung von Fließkomma-Zahlen und benötigen entsprechend weniger Speicherplatz.\\
Zeile 119: Zeile 126:
 ==== Speichermedien ==== ==== Speichermedien ====
  
-Eine minimale Programmierumgebung mit BP.EXE und BPR.EXE benötigt 88024 Bytes, es ist also mindestens eine 128KB-Speicherkarte nötig. Mit ein paar DOS-Utilities und zusätzlichen Byte-Code-Dateien ist diese dann auch schon bald voll. Hat man kein größeres Speichermedium, muss Laufwerk C: oder gar ein zusätzliches Laufwerk B: zur Hilfe genommen werden.\\+Eine minimale Programmierumgebung (nur mit BP.EXEbenötigt etwa 50 KBytes, es ist also mindestens eine 64KB-Speicherkarte notwendig, 128KB zweckmäßig. Mit ein paar DOS-Utilities und zusätzlichen Byte-Code-Dateien ist diese dann auch schon bald voll. Hat man kein größeres Speichermedium, muss Laufwerk C: oder u.U. ein zusätzliches Laufwerk B: zur Hilfe genommen werden.\\
  
-Für fertige Programmpakete (anwenderspeziefische Software), bestehend aus nur BPR.EXE (41230 Bytes) und Byte-Code-Dateien, reicht schon eine 64KB-Karte.\\+Für fertige Programmpakete (anwenderspeziefische Software), bestehend aus nur BPR.EXE (ca. 40 KB) und Byte-Code-Dateien, reicht schon eine 64KB-Karte, ein mit BPRI zur EXE gebundenes Programm passt mit etwas Glück auch auf eine mit 32KB.\\
  
  
Zeile 138: Zeile 145:
  
 ===== BOB+ Handbuch  ===== ===== BOB+ Handbuch  =====
-© 2010 Ralf-Erik Ebert, Berlin\\+© 2011 Ralf-Erik Ebert, Berlin\\
  
 Die in diesem Text verwendeten Bezeichnungen von Hard- und Software-Produkten sowie Firmennamen sind in der Die in diesem Text verwendeten Bezeichnungen von Hard- und Software-Produkten sowie Firmennamen sind in der
Zeile 154: Zeile 161:
 BOB+ ist FREEWARE und wird als Open Source zur Verfügung gestellt.\\  BOB+ ist FREEWARE und wird als Open Source zur Verfügung gestellt.\\ 
 Die Software darf frei kopiert und weitergegeben sowie – direkt oder in modifizierter Form – in beliebigen kommerziellen oder nicht-kommerziellen Umgebungen eingesetzt werden, sofern die Urheberschaft an geeigneter Stelle erwähnt wird.  Die Software darf frei kopiert und weitergegeben sowie – direkt oder in modifizierter Form – in beliebigen kommerziellen oder nicht-kommerziellen Umgebungen eingesetzt werden, sofern die Urheberschaft an geeigneter Stelle erwähnt wird. 
 +
 +
 +
  
  
Zeile 183: Zeile 193:
 Version 1.1c fügt Funktionen zum direkten Lesen bzw. Schreiben des Arbeitsspeichers bzw. zum Kopieren von Speicherbereichen hinzu (vgl. [[software:diy:andere:bob#systemfunktionen|Abschnitt 12.7]]), wodurch die Möglichkeiten systemnaher Programmierung verbessert werden sollen. Version 1.1c fügt Funktionen zum direkten Lesen bzw. Schreiben des Arbeitsspeichers bzw. zum Kopieren von Speicherbereichen hinzu (vgl. [[software:diy:andere:bob#systemfunktionen|Abschnitt 12.7]]), wodurch die Möglichkeiten systemnaher Programmierung verbessert werden sollen.
 Durch einige Code-Optimierungen wurden außerdem die Größen der ausführbaren Dateien und der benötigte Speicherplatz weiter reduziert. Durch einige Code-Optimierungen wurden außerdem die Größen der ausführbaren Dateien und der benötigte Speicherplatz weiter reduziert.
 +
 +Mit Version 1.1d besteht die Möglichkeit, übersetzte Bytecode-Module an die Laufzeitumgebung zu binden und so eigenständig lauffähige Programme zu erzeugen – siehe Abschnitte [[software:diy:andere:bob#laufzeitumgebung_und_compiler|3.3]] und [[software:diy:andere:bob#erzeugen_ausführbarer_dateien|3.4]].
 +
 +Version 1.1e behebt ein Problem beim Aufruf geerbter virtueller Methoden in tiefen 
 +Klassenhierarchien (siehe Abschnitt [[software:diy:andere:bob#virtuelle_methoden|11.4]]).
  
 ===== 2. Vorwort zur Version 1.0 ===== ===== 2. Vorwort zur Version 1.0 =====
Zeile 279: Zeile 294:
  
 Für den Aufruf von Funktionen und die Zwischenspeicherung von Argumenten bzw. temporären Werten verwendet BOB/BOB+ einen Stack mit einer Kapazität von 500 Einträgen. BOB+ erlaubt die Modifikation dieses Wertes mit Hilfe der Umgebungsvariablen BPSTACK. So kann z.B. mit dem Eintrag ''SET BPSTACK=1000'' die Stack-Größe verdoppelt werden.\\ Für den Aufruf von Funktionen und die Zwischenspeicherung von Argumenten bzw. temporären Werten verwendet BOB/BOB+ einen Stack mit einer Kapazität von 500 Einträgen. BOB+ erlaubt die Modifikation dieses Wertes mit Hilfe der Umgebungsvariablen BPSTACK. So kann z.B. mit dem Eintrag ''SET BPSTACK=1000'' die Stack-Größe verdoppelt werden.\\
 +
  
  
Zeile 290: Zeile 306:
 Dabei gibt die Option –i einen Copyright-Hinweis und die Aufrufsyntax aus. Für die zu ladenden vorkompilierten Module und die Benutzerargumente gelten sinngemäß die Aussagen aus [[software:diy:andere:bob#benutzung_von_bob+|Abschnitt 3.2]]. Mindestens ein Modul muss eine main-Funktion als Einsprungpunkt besitzen. Wie in der Vollversion besteht die Möglichkeit, die verfügbare Stack-Größe mit der Umgebungsvariablen BPSTACK einzustellen.\\ Dabei gibt die Option –i einen Copyright-Hinweis und die Aufrufsyntax aus. Für die zu ladenden vorkompilierten Module und die Benutzerargumente gelten sinngemäß die Aussagen aus [[software:diy:andere:bob#benutzung_von_bob+|Abschnitt 3.2]]. Mindestens ein Modul muss eine main-Funktion als Einsprungpunkt besitzen. Wie in der Vollversion besteht die Möglichkeit, die verfügbare Stack-Größe mit der Umgebungsvariablen BPSTACK einzustellen.\\
 In Version 1.1 von BOB+ existiert außerdem ein separater Bytecode-Compiler. Er kommt ohne den den Bytecode-Interpreter und die interne Funktionsbibliothek aus und benötigt dadurch gegenüber der Vollversion wesentlich weniger Platz im Arbeitsspeicher und auf dem Datenträger.Der Bytecode-Compiler wird nach der Syntax\\ In Version 1.1 von BOB+ existiert außerdem ein separater Bytecode-Compiler. Er kommt ohne den den Bytecode-Interpreter und die interne Funktionsbibliothek aus und benötigt dadurch gegenüber der Vollversion wesentlich weniger Platz im Arbeitsspeicher und auf dem Datenträger.Der Bytecode-Compiler wird nach der Syntax\\
-  bpc [-i] [-d] [sourcefile [..]] [-r objfile [..]][-o outfile]+  bpc [-i] [-d][-e][-I] [sourcefile [..]] [-r objfile [..]][-o outfile]
 aufgerufen. Dabei entspricht die Bedeutung der einzelnen Optionen mit folgenden Ausnahmen denen der Vollversion:\\ aufgerufen. Dabei entspricht die Bedeutung der einzelnen Optionen mit folgenden Ausnahmen denen der Vollversion:\\
   * Die Option –c wird nicht unterstützt. Sie ist implizit immer gesetzt.   * Die Option –c wird nicht unterstützt. Sie ist implizit immer gesetzt.
Zeile 1115: Zeile 1131:
 |  14  |  ''%%() [] x++ x-- ->%%''  | |  14  |  ''%%() [] x++ x-- ->%%''  |
 Tabelle 9 Operatorhierarchie in BOB+ Tabelle 9 Operatorhierarchie in BOB+
 +
 +
 +
 +
 +
 +
 +
  
  
Zeile 1123: Zeile 1146:
 Innerhalb eines Programms ist den Schlüsselwörtern eine feste (zentrale) Bedeutung zugeordnet. Deshalb können keine benutzerdefinierten Bezeichner definiert werden die den Schlüsselwörtern entsprechen. Innerhalb eines Programms ist den Schlüsselwörtern eine feste (zentrale) Bedeutung zugeordnet. Deshalb können keine benutzerdefinierten Bezeichner definiert werden die den Schlüsselwörtern entsprechen.
  
-Die Schlüsselwörter in BOB/BOB+ sind im wesentlichen eine Teilmenge der aus C/C++ bekannten. Nachfolgende Tabelle gibt eine Übersicht. Die darin mit (*) gekennzeichneten Schlüsselwörter sind nur in BOB+ definiert, die mit (<sup>a</sup>) gekennzeichneten wurden mit BOB+ 1.1a eingeführt.+Die Schlüsselwörter in BOB/BOB+ sind im wesentlichen eine Teilmenge der aus C/C++ bekannten. Nachfolgende Tabelle gibt eine Übersicht. Die darin mit (*) gekennzeichneten Schlüsselwörter sind nur in BOB+ definiert, die mit (a) gekennzeichneten wurden mit BOB+ 1.1a eingeführt.
  
 ^Schlüsselwort ^Kategorie ^Bedeutung^ ^Schlüsselwort ^Kategorie ^Bedeutung^
Zeile 1140: Zeile 1163:
 |  new  |  OOP  |  Erzeugen einer Objektinstanz  | |  new  |  OOP  |  Erzeugen einer Objektinstanz  |
 |  delete (*)  |  OOP  |  Zerstören einer Objektinstanz  | |  delete (*)  |  OOP  |  Zerstören einer Objektinstanz  |
-|  TRON (<sup>a</sup>)  |  Debugging  |  Trace-Modus einschalten +|  TRON (a)  |  Debugging  |  Trace-Modus einschalten 
-|  TROFF (<sup>a</sup>)  |  Debugging  |  Trace-Modus ausschalten +|  TROFF (a)  |  Debugging  |  Trace-Modus ausschalten 
-|  TRSTEP (<sup>a</sup>)  |  Debugging  |  Trace-Einzelschritt-Modus einschalten  |+|  TRSTEP (a)  |  Debugging  |  Trace-Einzelschritt-Modus einschalten  |
 Tabelle 10 Schlüsselwörter in BOB+\\ Tabelle 10 Schlüsselwörter in BOB+\\
  
Zeile 1717: Zeile 1740:
  
 </code> </code>
 +
 +
  
  
Zeile 1760: Zeile 1785:
  
    print(“MyDerivedClass::writeInfo() called\n“);    print(“MyDerivedClass::writeInfo() called\n“);
-   BC_writeInfo();    // call inherited writeInfo method+   this->BC_writeInfo();    // call inherited writeInfo method
 } }
  
Zeile 1773: Zeile 1798:
 </code> </code>
  
 +__Hinweise:__\\
 +Der Aufruf der geerbten Vorfahrmethode muss über den //this//-Zeiger erfolgen (siehe obiges Beispiel). Andernfalls würde der Compiler einen „gewöhnlichen“ Funktionsaufruf generieren.\\
 +Der Aufruf mit dem //BC_-//Präfix bezieht sich auf die Basisklasse derjenigen Klasse, von deren Typ das aktuelle Objekt (repräsentiert durch den //this//-Zeiger) ist. Dies kann bis zur Version 1.1d von BOB+ zu unerwünschten Rekursionen führen, falls das Konstrukt in einer mehrstufigen Klassenhierarchie benutzt wird.\\
 +Ab Version 1.1e erkennt der Bytecode-Interpreter solche Situationen, so dass dieses Problem nicht mehr auftritt. Darüber hinaus wurde zusätzlich das Präfix //**DC_**// (für //defining class//) eingeführt, welches erzwingt, dass die entsprechende Methode genau auf der Klasse aufgerufen wird, in der sie definiert wurde. Es wird analog zum //BC_-//Präfix gebraucht.
  
 ==== 11.5 Partielle Klassen ==== ==== 11.5 Partielle Klassen ====
software/diy/andere/bob.1278611236.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)