>Ich benöte eine Library, die sich nicht in meiner deflibs Datei befindet. Wie kann ich diese integrieren? Kopieren Sie ihre gewünschte Lib nach blitz2:userlibs/beta Beenden und starten sie AB2. Die neuen Instruktionen sind nun Verfügbar. Wenn sie nicht verfügbar ist kollidiert Ihre Lib mit einer Ihrer anderen Libs. Sehen sie in die Datei sorted_libnums.bb2 um die nummer zu finden, die Ihre Lib hat. Sehen sie in davidsdeflibs.txt nach, wenn die Libnummer frei ist. Sie können diese temporär benutzen libnum 200- (6 freie Plätze) num 2 und 3 für Ihre Libs /fd's die selten benutzt werden. Benutzen Sie den Librarymaster und ändern Sie die Nummer Ihrer Lib auf eine freie Nummer um und kopieren sie nach blitz2:userlibs/beta Jetzt ist es eine gute Zeit, um an die blitzlist zu mailen. so können wir eine neue Nummer für diese Lib suchen um eine Chance zu haben, eine deflibsdatei zu erstellen, die alle nützlichen Libs enthält. Um Quellcodes mit unterschiedlichen Libnummern umzuwandeln, können sie Ihre Datei im .ab2 Format abspeichern (myfile.ab2) und mit dem neuen deflibs neu laden. Das ab2 Format speichert in asciii der Vorteil dabei ist, daß sie ihre compiler optionen nicht verlieren. Es hat die selben Features wie das BB2 Format einziges Problem sind sehr langsame Ladezeiten, bei großen Programmen. Wenn sie all diese Tipps nicht mögen, dann erstellen sie eine Kopie von der Datei Amiblitz2 benennen Sie sie in Amiblitz2_libold um und benutzen sie Ihre selbst erstellten deflibs mit dem Tooltype deflibs=mydeflibs Der Sinn liegt darin, da wenn Funktions Libs herausgelassen werden, welche mit den standard deflibs erstellt werden. Sie können diese einfach benutzen wie die neuen functionlibrarys(in macros in .res Dateien die so optimal sind) >Wie verhindere ich Libkollisionen (mehrere Libs auf 1 Nummer) ? AB2 öffnet zuerst die deflibs und dann die acidlibs. BB2 öffnet zuerst die acidlibs und dann die deflibs. Der Grund, weshalb AB2 dies tut ist, daß das patchlibs verzeichnis läuft. Nur die erste Lib mit der Nummer wird benutzt. Die andere wird nicht benutzt und macht nur Probleme. Diese sind: Wenn sie die maximale object Größe in den Compiler Einstellungen auf einen höheren Wert setzen und da sind zwei Object Einträge mit dem selben Namen, dann können sie nicht die maximale Object Größe einstellen, auch wenn sie beide Werte auf einen höheren Wert setzen. Wenn das Instruction help Fenster in AB2 eine Anweisung 2 mal anzeigt, sehen Sie auch, daß es kollidiert. >Wie manage ich meine lib Dateien am besten. Bis ein neuer Libmanager heraus kommt, finden sie nützliche Tools auf der Homepage http://www.blitz-2000.co.uk/ Deflibsman: (Ich habe es an die Liste geschickt) Es zeigt Ihnen eine Liste mit den Libs und Ihren Nummern an. Sie können sie nach Namen/Libnummer sortieren. So finden sie ganz einfach doppelte Libnummern. Auch um die patchlibs zu handeln ist es nützlich, weil sie können Libs einfach deaktivieren bevor sie die deflibs erstellen: Anmerkung: Sie sehen keine Libnummern von dem userlibs/beta Verzeichnis, diese müssen sie manuell überprüfen. Librarymaster: Wenn sie eine libnummer ändern wollen oder einfach acidlibs/deflibs teilen/erzeugen wollen und sie wissen, daß ihr Verzeichnis Kollisionsfrei ist, dann benutzen sie den Librarymaster. Er kann auch Kollisionen überprüfen aber er hat kein Feature um eine Lib temporär zu deaktivieren. Sie können ein Verzeichnis namens decompiled erstellen, wo sie die geteilten Acidlibs reintun können. Sie können dann Dateien darin ändern. Anmerkung: Das decompiled Verzeichnis muß leer sein, wenn sie eine Datei teilen. >Welchen Sinn hat das patchlibs Verzeichnis? Das patchlibs Verzeichnis dient dazu, um Libs zu entwickeln/verbessern. Der Benutzer kann so einfach überprüfen, ob die patchlibs besser laufen oder nicht, da hier einige inoffizielle fehlerbereinigungen in den acidlibs rauskommen. Dies hilft Probleme im offiziellen Quellcode am schnellsten zu finden. Wenn sie einen Fehler in einer Lib von patchlibs bemerken, können sie den Deflibman benutzen, alles selektieren und dann Schritt für Schritt alle Patchlibs entfernen. Mailen Sie dann dem Entwickler das genaue Problem. Später, wenn alle Leute glücklich mit den acidlibs sind, befindet sich keine Datei mehr in den patchlibs. Diese sind dann für User gedacht, die Features in die acidlibs einfügen wollen und Benutzer, denen es spaß macht in den Patchlibs zu instalieren und es zu testen. Wenn diese Probleme bemerken, dann können sie die Lib einfach entfernen und ohne sie testen. Der Entwickler von einer Patchdatei sollte große standart object Nummern hinzufügen zum testen, da sie nicht das Maximum an Objekten in den Compiler Einstellungen einstellen können. Das ist der Grund, weshalb ich das Patchlibs Verzeichnis hinzugefügt habe. >Wie geht das Verknüpfen von Libs? Blitz2 benutzt Zeichen von 1-127 für normalen Text. Sind es mehr als 127 Zeichen, dann ließt es das zweite byte (das ACID 3 Bytes benutzt hat war wundervoll). So bekommt es eine Nummer für ex. 0x9001 Blitz2 macht ein bclear #15 und die Nummer ist nun 0x1001.Jetzt nutzt es die Nummer in der Weise, daß bit 14-6 die Libnummer ist und bit 6-0 ist eine Instruktion. Also erhalten Sie 256 Libs mit 128 Instruktionen. An der Libnummer sieht Blitz2 welche Library es mit dem Code verknüpfen soll. Wenn sie z.B. eine Lib mit mehr als 128 Instruktionen haben und die Lib ist auf 200 als Basis gilt die 130. Befehl wird interpretiert als Befehl 2 auf Libnummer 201. Das Problem ist, daß der Linker die Library 201 hinzufügen möchte. In Wirklichkeit existiert diese Lib garnicht, also fügt er nichts hinzu. Wenn sie keinen Befehl unter 128 benutzen, ist Ihre Lib nicht verknüpft und Ihr Executabel stürtzt ab. >Gilt jeder Eintrag in einer Newtype Struktur auch als globale Variable? Nein Eine Newtype Variable benutzt nur einen Pointer für den Platz einer globalen- oder lokalen Variable. String Variablen benutzen auch einen pointer zum stringspace. dims nutzen auch nur 1 Pointer Ein Newtype ist begrenzt auf 32767 Bytes. Wenn es größer ist, dann zeigt der Compiler an, daß der Typ zu groß ist. Frage: Wenn sie die neuen Libs wie memlib.obj staticslib.obj oder varslib.obj installieren, sollen dann die alten gelöscht werden (in blitzlibs:system)?. Antwort: Neuere Blitzbasic Versionen benutzen die Dateien in blitzlibs/systems nicht mehr, dieses sollte nicht enthalten sein, wenn sie mit Libman deflibs erzeugen sollten. Um zu sehen, ob sie eine neuere blitzbasic version haben, sehen sie nach ob sie die Acidlibs Datei haben (Einführung im BUM8) Das System Verzeichnis wird nicht gebraucht, da alle Dateien schon in acidlibs sind Wenn sie ein neues deflibs mit Libman erstellen wollen, dann müssen sie alle Dateien in patchlibs auswählen. Frage: Ich sehe keinen Schieberegler im rechten Bookmarkfenster. Wieso? Antwort: Erhöhen sie in den Einstellungen die Label-Größe auf mind. 18 mit dem topaz 8 font. Frage: Auf WINUAEJIT, wenn runtimeerrorcheck eingeschaltet ist, laufen Programme extrem langsam. Was kann ich tun ? Antwort: Versuchen sie den JIT für jetzt zu deaktivieren (cpu nocache). Dies ist ein JIT Problem, weil er in jedem Fall den Cache leert. Ich versuche das zu beheben. Frage: Mein calculator sagt 11888.1 unter AB2 und BB2 sagt 11888.0939 wieso das? a.f=11.9 b.f=999 Print a.f*b.f Antwort: Dies ist deshalb, weil 32bit Flieskommas haben eine Genauigkeit von 6 Zahlen (0.001%) ffp. Aber mit FPU haben Sie intern eine genauigkeit von 64bit, also gibt es mit 32bit Variablen bessere Ergebnisse als mit ffp in komplexen Bezeichnungen. Sehen Sie weshalb: a=b*c+d a=a/4 64bit=32bit*32bit b*c 64bit=64bit+32bit res(b*c)+d Wenn in der nächsten Bezeichnung das Ergebnis des oben genannten (a) nach dem = kommt, dann ist 64bit unterhalb des 32bit Wertes. 64bit=64bit/4 Konstanten sind Doppelflieskommas in AB2 aber Doppelfliekommas werden in Variablen selten benutzt und sind hart in AB2 zu implementieren. (3D Graphikchips benutzen 32 bit Flieskommas.) also der Ersatz für das .f ist single FPU. Auch das Ergebnis der FPU wird umgewandelt, wenn es zu ffp ausgegeben wird (weil nur externe Libs das unterstützen). Also genau das selbe ist, wie ffp wenn sie die Zahl sehen. Aber wenn sie in AB2 Assembler programmieren wollen, dann können sie 64bit Fließkomma Variablen benutzen.