Home History & ToDo-Liste ToDo-Liste Änderungen Version V2.3.3 auf V2.3.4
   ACSpro
 History & ToDo-Liste

Änderungen Version V2.32 auf V3.0.0

Hier sind die Änderungen und Erweiterungen von V2.32 zur — noch nicht veröffentlichten — V3.0.0 in umgekehrter chronologischer Reihenfolge aufgelistet.

Hinweis: Änderungen an den C-Bibliotheken betreffen stets auch die Pascal-Bibliothek. Von Bugfixes und Erweiterungen in den Bibliotheken hat stets auch der GUI-Editor profitiert, da dieser ja mittels ACSpro entwickelt wurde.

Stand der Liste ist der 25. März 2008. Eine i.a. aktuellere Liste kann über den Hilfe-Dämon der Maus LL abgerufen werden.

10.02.2008 ACS.LIB
  • 16-Bit-Grenze bei Ast_ncmp und Ast_incmp aufgehoben. Der Parameter 'len' wird nun als 32-Bit-Wert übergeben und verwendet. Alle Module, die bereits für ACS 3.0.0 compiliert wurden, müssen neu compiliert und gelinkt werden - aber das das sollten eigentlich die wenigsten sein.
29.01.2008 ACS.LIB
    Die Nachrichten AS_EXPORTFILE und AS_IMPORTFILE sind nun analog AS_SAVEFILE als Standard-Nachricht für das Auslösen eines Exportes in bzw. eines Importes aus einer Datei definiert worden. Eine Unterstützung seitens der Funktion Awi_service ist nicht vorgesehen. Die Nachricht muss also wie AS_SAVEFILE auch in eigenen Service-Funktionen implementiert werden.
24.12.2007 ACS.LIB, GUI-Editor
  • Anpassung der Jahreszahl-Daten im Copyright auf 2008.
29.11.2007 GUI-Editor
  • Durch einen kleinen Bug konnte der GUI-Editor keine neue ACS-Datei mehr anlegen. Dies ist nun behoben.
03.09.2007 ACS.LIB
  • Korrektur innerhalb Acfg_load beim Laden von Konfigurations-Dateien größer als 64 kByte.
08.03.2007 ACSMOD.LIB, ACSMOD01.LIB, ACS_LOAD.O
  • Die neuen Funktionen Abp_createFromIconData und Abp_createFromIconMask stehen auch in der Mpdul-Schnittstelle zur Verfügung.
07.03.2007 ACS.LIB
  • Die Funktion Abp_create wurde um einen weiteren Parameter erweitert, in dem die Anzahl der Planes angegeben wird - der Wert -1 signalisiert die aktuelle Auflösung. Sorry, es müssen alle Module, die für ACS 3.0.0 erstellt wurden, neu compiliert werden. Für die Module, die mit früheren ACS-Versionen erstellt wurden, wird eine entsprechende Kompatibilitätsfunktion verwendet.
  • Korrektur eines Absturzes in der ACS.LIB bei der ACS-Initialisierung der Check-/Radiobuttons. Es handelte sich um einen Fehler bei Speicherzugriffen, wenn ACS bei mehr als 256 Farben läuft. Der Crash trat bei mir allerdings nur unter MacARAnyM, MiNT und XaAES bei mehr als 256 Farben auf, unter MagiCMacX lief alles einwandfrei.
  • Die neuen Funktionen Abp_createFromIconData erzeugt analog Abp_create eine Backplane in Icon-Größe in der aktuellen Auflösung, die die am besten passenden Bild-Daten des Icons enthält.
  • Die neuen Funktionen Abp_createFromIconMask erzeugt analog Abp_create eine Monochrom-Backplane in Icon-Größe, die die Maske des icons enthält. Bei den Nicht-Register Auflösungen (mehr als 256 Farben) wird die Maske invertiert, da hier die Farbwerte (0) codiert werden müssen anstelle des Farbregisters für Schwarz (1).
26.12.2006 ACS.LIB, GUI-Editor
  • Die Copyright-Informationen wurden angepaßt.
14.09.2006 ACS.LIB
  • Korrektur der Standard-Funktion für ULinList.deleteFor, falls keine Lösch-Funktion ULinList.freeElem eingetragen wurde. Bislang gab es hier einen NULL-Pointer-Zugriff!
18.10.2005 ACS.LIB
  • ACSpro unterstützt nun auch das XMessage-Protokoll, bei dem keine Zeiger auf globale daten wie Strings ausgetauscht werden, sondern die Daten in einer überlangen Message verpackt werden. Bei Antwort-Nachrichten, die nur durch einen Zeiger eindeutig der Ursprungsnachricht zugeordnet werden können, werden keine Rückmeldungen zurückgeschickt — es gibt ja keinen Zeiger auf Daten, der sowohl für den Empfänger als auch den Sender gültig wäre, da die Daten zusammen mit der XMessage-Nachricht gesendet wurden.
11.07.2005 ACSMOD.LIB, ACSMOD01.LIB, ACS_LOAD.O
  • Die neue Funktion Awi_reposed steht über die Modulschnittstelle zur Verfügung. Ferner werden Aufrufe von Awi_sized und Awi_moved von Modulen auf Awi_reposed sowohl umgesetzt.
11.07.2005 ACS.LIB
  • Die neue Funktion Awi_reposed wurde als Kombination von Awi_moved und Awi_sized implementiert. Die Funktionen Awi_sized und Awi_moved sind nur noch zu Kompatibilitätszwecken vorhanden. Sie sollten nicht mehr direkt verwendet werden. Sie rufen sofort die neue Funktion Awi_reposed auf. Die Zeiger Awindow.sized und Awindow.moved wurden aus Kompatibilitätsgründen beibehalten. Ein weiterer Zeiger Awindow.reposed ist bei der nächsten größeren Änderung, bei der Struktur-Änderungen auftreten werden, geplant.
  • Die Nachricht WM_REPOSED, die XaAES als Kombination von WM_MOVED und WM_SIZED verschicken kann, wird nun voll unterstützt. Es wird die Funktion aus Awindow.sized aufgerufen.
13.03.2005 GUI-Editor
  • Der GUI-Editor exportiert nun die Texte aller Sprachen in die Dateien mit der Endung ".ST0" bis ".ST3". Damit kann schnell heraus gefunden werden, welche Übersetzungen noch notwendig sind.
02.02.2005 GUI-Editor
  • Der GUI-Editor exportiert beim Generieren der Sourcen nun alle vier enthaltenen Sprachen. Über die Macros ACS_LANG1 bis ACS_LANG4 wird beim Compilieren entschieden, welche Sprachvariante eingebunden werden soll. Falls keiner der Macros definiert ist, wird das der im GUI-Editor eingetragenen Sprache der ACS-Datei verwendet.

    Es ist damit sehr leicht, ein ACS-Programm für andere Sprachen zu compilieren. Die zu verwendende Sprache kann entweder in der Projektdatei (Pure-)C, in einer Include-Datei oder global z.B. in der Pure-C-IDE eingestellt werden. Für ACSpro selbst — sowohl für den GUI-Editor als auch für die Bibliotheken — wird die Sprach-Variante in Pure-C unter Options\Compiler eingestellt.
31.01.2005 ACS.LIB, GUI-Editor
  • Die Copyright-Informationen wurden angepaßt.
  • Integration der KEYTAB-Bibliothek zu KEYTAB 12.
04.10.2004 ACSMOD.LIB, ACSMOD01.LIB, ACS_LOAD.O
  • Wegen eines Fehlers in der Modul-Schnittstelle konnten Module, die mit der vorherigen Beta-Version von ACSpro erstellt wurden, nicht mehr geladen werden. Das Problem wurde behoben.
02.06.2004 ACS.LIB
  • Wenn in den Cfg-Strings mind. eine Parametergruppe mit Namen, jedoch keine namenlose Default-Gruppe vorhanden war, so wurden danach angelegte Parameter der Default-Gruppe mitten in den anderen Gruppen gesichert und beim Laden natürlich einer anderen Gruppe zugeordnet. Nun wird die namenlose Default-Gruppe stets zuerst gesichert.
06.04.2004 ACS.LIB, ACSPLUS.LIB, GUI-Editor
  • Bei den Konstanten der NKCC-Routinen wurden für bisher reservierte Werte Konstanten vergeben. Es sind dies
    NK_M_PGUP ($05) Auf dem Apple Macintosh unter MagiCMac: eine Seite nach oben (Page Up)
    NK_M_PGDN ($06) Auf dem Apple Macintosh unter MagiCMac: eine Seite nach unten (Page Down)
    NK_M_END ($07) Auf dem Apple Macintosh unter MagiCMac: zum Ende springen (End)
    NK_M_F11 ($1A) Auf dem Apple Macintosh unter MagiCMac: Funktionstaste F11
    NK_M_F12 ($1C) Auf dem Apple Macintosh unter MagiCMac: Funktionstaste F12
    NK_M_F14 ($1D) Auf dem Apple Macintosh unter MagiCMac: Funktionstaste F14
  • Die Reaktion unter ACSpro ist standardmäßig die folgende:
    NK_M_PGUP ($05) Wenn keine Shift-Taste gedrückt wird, wird eine Seite nach oben gescrollt. So war es bisher bei Shift-Cursor-Up.

    Wenn Shift gedrückt wird, wird anstelle einer Seite eine Zeile nach oben gescrollt, wie es bisher bei Cursor-Up der Fall war.
    NK_M_PGDN ($06) Wenn keine Shift-Taste gedrückt wird, wird eine Seite nach unten gescrollt. So war es bisher bei Shift-Cursor-Down.

    Wenn Shift gedrückt wird, wird anstelle einer Seite eine Zeile nach unten gescrollt, wie es bisher bei Cursor-Down der Fall war.
    NK_M_END ($07) Wenn keine Shift-Taste gedrückt ist, wird an das Ende gesprungen, wie es bisher auch bei Shift-Clr/Home der Fall war.

    Wenn Shift gedrückt wird, wird an den Anfang wie bei Clr/Home gesprungen.

    Das bisherige Verhalten der Tasten Shift-Cursor-Up/Down bzw. Shift-Clr/Home bleibt auf jeden Fall bestehen.
06.04.2004 ACSMOD.LIB, ACSMOD01.LIB, ACS_START.O
  • Im Startup-Code des Moduls ist nun auch das Symbol _globl enthalten. Module, die GEM-Funktionen verwenden und z.B. eigene Bindings implementieren und daher nicht auf die über die Modul-Schnittstelle zur Verfügung gestellten Funktionen zugreifen, können mit der Bibliothek PCGEM.LIB gelinkt werden. Diese sieht im Kompatibilitätsmodus eine globale Variable _globl vor, die das global-Array enthält. Im Startup-Code ist nun diese Variable enthalten, sie wird von ACSpro aus initialisiert.

    Leider müssen damit alle Module, die mit einer der bisherigen Beta-Versionen 3.0.0ß erstellt wurden, erneut gelinkt werden. Ich denke jedoch, das sollte machbar sein.
29.03.2004 ACS.LIB, ACSTOOLS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die neuen Funktionen von KEYTAB und der KEYTAB-Bibliothek wurden in ACSpro integriert. Die Funktionen stehen auch über die Modul-Schnittstelle für Module zur Verfügung.
01.02.2004 ACS.LIB
  • Neue Cookies aus der MiNT-Mailingliste in ACSCOOK.H eingefügt.
19.01.2004 ACS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die unsortierte lineare Liste ULinListe wurde in ULinList umbenannt. Der bisherige Name ULinListe wird per Makro in den neuen Namen gewandelt.
  • Zur unsortierten linearen Liste sind die "verwandten" Objekte Stack (Stapel) und Queue (Warteschlange) hinzu gekommen.
  • Die create- und delete-Funktionen der beiden neuen Objekte Queue und Stack steht auch über die Modul-Schnittstelle zur Verfügung
01.01.2004 ACS.LIB, GUI-Editor
  • Die Copyright-Informationen wurden angepaßt.
10.11.2003 GUI-Editor
  • Die Texte des GUI-Editors wurden ins Englische übersetzt, so daß nun auch eine Beta-Version der englischen Version bereitsteht.
30.07.2003 ACS.LIB
  • Die Bibliotheken PCGEM.LIB (GEM-Binding) und ACSTOS.LIB (TOS-Binding) sind nicht mehr in ACS.LIB enthalten. Damit können die Bindings jederzeit gegen aktuellere Versionen ausgetausht werden. Alle Anwendungen müssen daher die PCTOS.LIB und die PCGEM.LIB linken, die ab jetzt ACSpro beiliegen.
  • ACSpro wurde nun komplett auf die TOS-Bibliothek PCTOS.LIB umgestellt. Bei den TOS-Bindings bringt die optimierte Version nicht wirklich viel, dafür wird die Kompatibilität mit div. Dokumentationen aufgegeben. Nachdem es nur um ein paar wenige Funktionen geht, sollte diese Umstellung kein Problem bereiten.
29.12.2002 ACS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die neue Funktion Avdi_getRGB liefert für die 256 Farben der NVDI-Palette die passenden RGB-Werte zurück. Damit stehen die Farb-Informationen für Objekte, die "nur" 256 Farben kennen, auch unter Hi- oder Truecolor-Auflösungen zur Verfügung für ein korrektes Zeichnen. Die Funktion steht auch über die Modul-Schnittstelle zur Verfügung.
  • Die Funktion Af_2path liefert anstelle des Root-Pfades "\" den Defaultpfad des Defaultlaufwerkes — also Dgetpath(dest, 0) —, falls kein Pfad im Parameter erkannt wird. Erstens entspricht dieses Verhalten dem der Funktion Af_2drv. Und zweitens ist dieses Verhalten bei relativen Pfadangaben auch gewünscht.
22.11.2002 ACS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die neue Funktion Aob_count zählt die Anzahl der OBJECT-Strukturen eines Objektbaumes. Das Ende wird — wie bei GEM üblich — durch das Flag LASTOB in ob_flags signalisiert. Die AOBJECT-Strukturen werden beim Zählen je nach übergebenem Flag übersprungen oder mitgezählt. Die Funktion steht auch über die Modul-Schnittstelle zur Verfügung.
13.11.2002 ACS.LIB
  • Beim Versand von Daten per D&D an andere Anwendungen war noch ein dicker Bug: die Länge der verschickten Daten wurde bei Strings (ACS-DD-Type AT_STRING, AT_TEXT und AT_FILE) falsch verschickt, so daß der Empfänger nur einen Teil der Daten verwendet hat.
  • Das Auswahl-Popup, in dem die Ziel-Anwendung ausgesucht werden muß, erscheint nun nur noch, wenn der Eigentümer des Ziel-Fensters nicht per WF_OWNER ermittelt werden kann (WF_OWNER gibt es nicht bzw. liefert Fehler).
  • Von anderen Anwendungen empfangene Strings, die über die Drag-Routine eingespielt werden, werden nun korrekt als AT_STRING oder AT_TEXT deklariert, jenachdem ob eines der Zeichen '\n' (CR) oder '\r' (LF) enthalten ist oder nicht.
  • Per XAcc-Protokoll empfangene Strings werden nun nicht nur als AT_STRING, sondern auch als AT_FILE deklariert, falls es sich bei dem String gem. Af_length() um den Namen einer existierenden Datei bzw. eines existierenden Ordners handelt. Die Unterscheidung in AT_TEXT oder nicht hat allerdings Vorrang.
  • Korrektur beim Verarbeiten einer D&D-Message: das D&D-Protokoll sieht einen Header vor, der mind. die folgenden Angaben enthält: Header-Länge (2 Byte), Datentyp (4 Byte), Datenlänge (4 Byte). ACSpro meldete bei einer Headerlänge von weniger als 10 Byte dem Absender der Daten einen Fehler. Bei Tests hat sich herausgestellt, daß MagicDesk eine Länge von 9 einträgt. Die Prüfung wurde daher auf mind 8 Zeichen geändert. Anscheinend sind sich die "Gelehrten" nicht einig, ob die Längenangabe zum Header gehört oder nicht! ACSpro geht nun davon aus, daß die zwei Byte Headerlänge nicht zum Header gehören, sondern die Headerlänge angibt, wie viele Byte danach kommen.
21.09.2002 ACS.LIB
  • Die Bearbeitung der GEMScript-Meldung GS_ACK wurde korrigiert.
  • Durch interne Optimierungen bei den diversen unterstützten Protokollen konnte etwas benötigter Speicher eingespart werden.
13.09.2002 ACS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die aktuelle PCGEM.LIB wurde eingebunden. Die neuen Funktionen (bis NVDI 5) stehen auch in der Modul-Schnittstelle zur Verfügung.
  • Die Modul-Schnittstelle für vsf_updat war nicht in Ordnung, dadurch gab es einige Verschiebungen, so daß im Zweifelsfall falsche VDI-Funktionen aufgerufen wurden. Dies wurde nun behoben!
  • Die aktuelle KEYTAB-Bibliothek wurde integriert, die neuen Funktionen stehen auch in der Modulschnittstelle für Module bereit.
31.08.2002 ACS.LIB
  • Die Funktion appl_xgetinfo prüft nun auch, ob WINX vorhanden ist, da auch dann appl_getinfo aufgerufen werden kann.
06.08.2002 ACS.LIB
  • Die Nachricht COLORS_CHANGED (s. Dokumentation zu NVDI 5) wird verarbeitet und ein komplettes Neuzeichnen des Bildschirms ausgelöst.
22.07.2002 ACS.LIB, ACSTOOLS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die neuen Funktionen von KEYTAB und der KEYTAB-Bibliothek wurden in ACSpro integriert. Die Funktionen stehen auch über die Modul-Schnittstelle für Module zur Verfügung.
  • Die neue Funktionen Ax_recycle, Ax_setRecycleSize und Ax_getRecycleStat stehen auch über die Modul-Schnittstelle für Module zur Verfügung.
04.07.2002 ACS.LIB
  • Die neue Funktion Ax_getRecycleStat() liefert die aktuelle Statistik der Speicher-Verwaltung der freien Listen. Mit den hier gelieferten Daten kann die Konfiguration der Speicher-Verwaltung in der ACSinit0-Routine optimiert werden.
  • Die neue Funktion Ax_setRecycleSize() verwaltet die Listen der freien Speicherblöcke:
    • Wenn eine unbekannte Größe übergeben wird, wird eine neue Liste angelegt.
    • Eine ACSpro bekannte Größe wird auf den neuen Maximalwert gesetzt (falls die Liste verkleinert wird, werden alle Blöcke, die nun zu viel gepuffert werden, frei gegeben).
    • Falls für eine bekannte Blockgröße die Anzahl der zu puffernden Blöcke auf 0 gesetzt wird, so werden Speicherblöcke dieser Größe nicht mehr gepuffert und die Liste dazu gelöscht.
  • Die neue Funktion Ax_recycle() fügt einen Speicherblock einer Liste freier Blöcke an, sofern die übergebene Größe des Blockes von ACSpro in einer Liste verwaltet wird. Falls die für die Blockgröße eingestellte Maximalzahl von aufzubewahrenden Blöcken erreicht ist, wird der Block ebenso wie bei einer nicht verwaltete Blockgröße direkt per Ax_free frei gegeben.
  • Das Speicher-Management um die Funktionen Ax_malloc() und Ax_free() wurde um Verwaltung von leeren Listen erweitert.

    Wie funktioniert das?
    Nun, es gibt eine interne Funktion, die ACSpro zur Freigabe der eigenen Strukturen wie z.B. Awindow, TEDINFO, BITBLK, AUSERBLK, ULinListe oder intern gekapselter Strukturen verwendet. Diese Funktion prüft, ob es für die entsprechende Blockgröße eine Liste für freie Blöcke gibt. Falls dies der Fall ist, wird der Block nicht freigegeben, sondern in dieser Liste aufbewahrt - allerdings wird für jede dieser Listen eine Obergrenze beachtet, ab der der Speicher — wie bisher auch — per Ax_free freigegeben wird. Falls danach ein Block dieser Größe angefordert wird, wird er direkt aus dieser Liste genommen und braucht nicht erneut alloziert werden.

    Da die Speicherverwaltung der Pure-C-Bibliothek die Blöcke nicht sofoert an das Betriebssystem zurückgibt, sondern größere Blöcke anfordert, diese verwaltet und auf Anforderung an die Anwendung gibt, ergibt sich eigentlich kein nennenswerter Mehrverbrauch an Speicher. Da ACSpro jedoch die Größe der eigenen Strukturen kennt, kann ACSpro hier viel effizienter die Verwaltung übernehmen. Besonders bei den Strukturen AUSERBLK macht sich dies positiv bemerkbar, da diese bei allen ACS-eigenen Objekten verwendet werden.
03.07.2002 GUI-Editor
  • Der GUI-Editor verwendet nun Version 1.4 des Startup-Codes von Stefan Kuhr @ OS. Im ReadMe dazu steht:
    • Die Zeiger auf die Environmentvariablen und Kommandozeilenargumente verringern die Stack-Größe nun nur noch bei Accessories oder zu kleiner TPA. Ein minimaler Stack bleibt immer frei.
    • Wenn der Heap zu klein ist - TPA ist schon geschrumpft und der Stack ist kleiner als ein Mindestwert -, beendet der Startup-Code das Programm mit dem Exit-Code 0x4150.
    • Auch bei viel zu vielen Environmentvariablen oder Argumenten wird niemals über das TPA-Ende hinausgeschrieben. Gleich zu Beginn wird der maximale Heap berechnet: MaxHeapSize = TPA - BSSEnde - MinimalStack. Mit dem Schreiben der argv- und envp-Zeiger wird der Heap gefüllt und bei Erreichen der maximalen Heap-Größe wird die Auswertung abgebrochen. Auf das reele Heap-Ende wird die Stack-Größe addiert und so das gewünschte Ende der TPA bestimmt. Falls möglich wird dann noch die TPA geschrumpft.
    • Die Basepagekommandozeile wird nun ins BSS kopiert und nicht mehr direkt in der Basepage geparst, da ein Fsfirst() ohne vorheriges Fsetdta() die Kommandozeile zerstört.
    • Bei einem zu hohen Wert für die Basepagekommadozeilenlänge wurde an eine falsche Position gesprungen und dadurch ein RTS ausgeführt, ohne das eine gültige Rücksprungadresse auf dem Stack war.
    • Durch einen falschen Vergleichen mit '0' wurden leere ARGV-Argumente ab dem zehnten nicht mehr geleert.
    • Den kleinen Startup-Code habe ich nochmal überarbeitet und ein wenig optimiert. Unter anderem habe ich argv[0], argv[1] und envp bereits initialisiert ins Datensegment gelegt.

    Ein dickes Danke an Stefan Kuhr @ OS für seinen Startup-Code und dessen Pflege. Besonders natürlich ein dickes Danke, daß ich ihn ACSpro beilegen darf!
24.06.2002 ACS.LIB
  • Die Funktion Af_fileselect() hat einen weiteren Parameter bekommen. Nach dem Extensions-Pattern wird nun die Sortierung des File-Selectors angegeben. Diese Sortierung wird nur für die FSLX-Funktionen verwendet. Falls die FSLX-Funktionen nicht verfügbar sind und daher auf Af_select() bzw. Af_first_fsel() und Af_next_fsel() zurückgegriffen werden muß, so wird diese Sortierung nicht berücksichtigt.
23.06.2002 ACS.LIB
  • Die Funktion Ash_font liefert nun bei Verwendung des modalen Font-Selektors in der übergebenen Struktur A_FontSel die Ergebnisse zurück.
  • In der Funktion Af_fileselect wurde die Verwendung der Extensions-Patterns nochmals überarbeitet und korrigiert. Nun sollte alles korrekt laufen.
05.06.2002 GUI-Editor
  • Der GUI-Editor verwendet nun Version 1.3 des Startup-Codes von Stefan Kuhr @ OS. Im ReadMe dazu steht:
    • Der Parser hat nun eine C-Schnittstelle, so daß er nun auch für z.B. AV_START genutzt werden kann. Die Schnittstelle ist wie folgt definiert:

      unsinged long parse_cmdline( char *cmdline,
                       char *cmdarg, char **argv,
                       unsigned long max_argc );
      cmdline ist ein Zeiger auf eine Kommandozeile, die durch ein Nullbyte abgeschlossen ist, und kein Längenbyte besitzt.
      cmdarg verweist auf einen Speicher, in dem die geparsten Argumente abgelegt werden sollen. Ist dieser Zeiger NULL, wird cmdline als Zielspeicher verwendet.
      argv bestimmt die Adresse, an der bis zu max_argc Zeiger auf die einzelnen Argumente der Kommandozeile hintereinander abgelegt werden. Sofern das Feld groß genug ist, ist argv[Ergebnis]==NULL. Es ist aber auch möglich, einen Nullpointer an argv zu übergeben.
      max_argc beschreibt die Größe des Feldes argv.

      Ergebnis ist die Anzahl der Argumente in der Kommandozeile.

      Die Parameterübergabe erfolgt in Pure-C-Manier, es werden dazu die Register D0, A0, A1 und ein Argument auf dem Stack genutzt. Alle anderen Register bleiben unverändert.
    • Bei einer defekten, erweiterten ARGV-Übergabe, konnte es zu Speicherschreibern kommen. Ich habe nun alle unsicheren Stellen abgedichtet.
    • Ein ARGV=NULL:0 wurde nicht ausgewertet. (Naja, macht eh keinen großen Sinn den Programmnamen zu löschen; aber nun geht auch das.)
    • Die Register werden nun als unsigned betrachtet, dass heißt es können theoretisch über vier Milliarden Argumente und Environmentvariablen gehandhabt werden. Auch argc wird als unsigned long an main() übergeben.
    • Die Baspagekommandozeile wird nun nicht mehr auf den Heap kopiert (was dem Stack 128 Byte kostete), sondern direkt in der Basepage geparst.
    • Nach wie vor wird der Speicher für die Felder envp und argv vom Stack abgeknappst. Das sollte bei der Wahl der Stackgröße bedacht werden. Vorsichtige Naturen können die unterste Stackadresse _StkLim entnehmen.
    • Selbst bei korrupter Argumentübergabe sind die Parameter an main() konsistent.
    • Der kleine Startup-Code ist noch um eine Kleinigkeit geschrumpft.

    Ein dickes Danke an Stefan Kuhr @ OS für seinen Startup-Code und dessen Pflege. Besonders natürlich ein dickes Danke, daß ich ihn ACSpro beilegen darf!
30.05.2002 ACS.LIB
  • Die Funktion Awi_obfind() stürzte mit einem Bus-Error ab, wenn als **tree der Zeiger NULL bzw. NIL übergeben wurde.
  • Die Funktion nkc_kstate() brachte ebenfalls hin und wieder einen Bus-Error zustande.
26.05.2002 ACS.LIB
  • Bei den Funktionen A_dialog und A_dialog2 wird nun wie bei Awi_dialog das Hauptmenü deaktiviert.
  • Falls bei A_dialog oder A_dialog2 ein Dialog ohne Edit-Felder verwendet wurde, gab es einen üblen Absturz, der nun behoben sein sollte.
  • Aktuelle PCGEM.LIB mit Fehlerkorrektur für fsel_exinput sowie Unterstützung der Mausräder gemäß TORG 105 (siehe http://www.tosgroup.org — wie z.B. von MWheel von Armin Diedering verwendet — wird verwendet.
23.05.2002 ACS.LIB
  • Die HOT-Close-Box wird ggf. abgeschaltet, wenn das System sie gemäß appl_getinfo nicht kennt.
22.05.2002 ACS.LIB
  • Probleme bei Parameterübergabe via VA_START und D&D korrigiert.
06.05.2002 ACSPLUS.LIB
  • Der DESKTOP hatte noch einen kleinen Bug: beim Doppelklick auf das NEU-Icon wurde ein nicht initialisierter String anstelle des Wertes NULL übergeben.
04.04.2002 ACS.LIB
  • Bei Verwendung des "alten Menü-Layoutes" gab es einen Absturz, der nun behoben sein sollte.
01.04.2002 ACSMOD.LIB, ACSMOD01.LIB
  • Die neue Funktion Ash_getOSHeader steht auch über die Modul-Schnittstelle für Module zur Verfügung.
  • Die Kompatibilitäts-Funktionen Aob_create und Aus_create für Module der ACS-Versionen 2.30 bis 2.3.4 waren fehlerhaft in die Schnittstelle eingebunden. Module, die nur Awi_create verwendet haben, haben funktioniert. Sobald allerdings Aob_create oder Aus_create verwendet wurde — z.B. beim Austausch des Work-Objektes —, gab es Probleme.
26.03.2002 ACS.LIB, ACSPLUS.LIB,
  • Die von der Funktion Af_fileselect intern benutzten Wrapper-Funktionen für die Funktionen Af_fileselect, Af_select, Af_first_fsel und Af_next_fsel wurden komplett überarbeitet. Dadurch wurde der Parameter patterns geändert!

    In dem Parameter patterns werden jetzt Endungs-Muster übergeben. Mehrere Endungen in einem Muster werden durch ',' getrennt, mehrere Muster durch ein Null-Byte. Abgeschlossen werden die Muster durch zwei aufeinanderfolgende Null-Bytes. Der GUI-Editor verwendet z.B. beim Öffnen die Patterns (als C-String) "ACS,acs\0RSC,rsc\0\0".

    Falls die FSLX-Funktionen verfügbar sind, werden die Extensionen direkt verwendet (incl. Groß-/Kleinschreibungsvarianten), falls auf Af_select bzw. Af_first_fsel und Af_next_fsel zurückgegriffen wird, wird nur die erste Extension (unverändert) verwendet.
  • Die neue Funktion Ash_getOSHeader liefert einen Zeiger auf die Struktur SYSHDR (manchmal auch OSHEADER genannt) zurück.
20.03.2002 ACS.LIB, ACSTOOLS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die neue Funktion Ast_istr sucht analog zur C-Funktion strstr einen Substring in einem String — allerdings im Gegensatz zu strstr ohne Unterscheidung zwischen Groß- und Kleinschreibung. Die Funktion ist auch in der Modul-Schnittstelle enthalten.
16.03.2002 ACS.LIB, ACSTOOLS.LIB
  • Wenn im Dateinamen das Quote-Zeichen selbst vorkam und daher verdoppelt wurde, so funktionierte nichts mehr. Die Funktionen Af_quote und Af_unquote arbeiten nun korrekt. Als Quote-Zeichen erkennt Af_unquote sowohl die einfachen als auch die doppelten Anführungszeichen, während Af_quote selbst nur die einfachen Anführungszeichen verwendet.
  • Die neue Funktion Af_parseCmdLine zerlegt eine Kommandozeile und liefert eine lineare Liste ULinListe mit den Dateinamen zurück. Hierbei wird das Quoting korrekt behandelt, d.h. aus den String
    "'Param Leer.txt' Param_no_Leer.txt 'Param Leer und `` darin.txt`"

    wird eine lineare Liste mit den Einträgen
    Param Leer.txt
    Param_no_Leer.txt
    Param Leer und ` darin.txt

    gebildet. Die Namen liegen also nicht gequoted vor!
  • Die Dateinamen, die von außerhalb der Anwendung über die Drag-Routinen als AT_FILE geliefert werden, liegen nun gequoted vor. Ggf. können mehrere Dateinamen geliefert worden sein, die über getrennte Aufrufe der Drag-Routine übergeben werden. Intern wird der gelieferte String über Af_parseCmdLine in ie Dateinamen zerlegt, die dann per Af_quote gequoted und an an die Drag-Routine bzw. dem Fenster mittels der Nachricht AS_DRAGGED weiter gegeben werden.

    Damit sollten nun lange Dateinamen — besonders mit Leerzeichen oder einfachen Anführungszeichen — wesentlich komfortabler möglich sein, als es bisher der Fall war.

    Zur Erinnerung: Wenn keines der im C-String " \t\n\r'" enthaltenen Zeichen im übergebenen Dateinamen vorkommt, so macht Af_quote nichts!
14.03.2002 ACS.LIB, ACSPLUS.LIB
  • Bei meinen Tests habe ich leider feststellen müssen, daß das Öffnen von Dateien im PUR_DESK nun nicht mehr reibungslos klappte. Jetzt geht (endlich) sowohl das Öffnen im PUR_DESK, als auch die Übergabe von Dateien per AV-Protokoll oder Drag&Drop-Protokoll
03.03.2002 ACS.LIB, ACSPLUS.LIB
  • Der PUR_DESK und der DESKTOP unterstützen nun Quoting von Dateinamen auch bei übergebenen Namen beim AV-Protokoll oder Atari-Drag&Drop-Protokoll.
  • Beim Drag&Drop-Protokoll war noch ein Fehler enthalten, so daß eine Parameter-Übergabe von z.B. jinnee an ACS-Anwendungen nicht richtig funktionierte.
  • Bei meinen Tests der Parameter-Übergabe stellte ich erstaunt fest, daß jinnee beim Öffnen von mehreren ACS-Dateien (im jinnee-Fenster z.B. zwei Dateien selektiert und "Datei\Objekte öffnen" auswählen) den ersten Parameter an den GUI-Editor übergeben hat und den zweiten je nach Anmeldung des GUI-Editor per VA-START oder Drag&Drop übergab. In der frühen Initialisierungsphase von ACSpro ging das schief und wurde mit einem Crash quittiert, der nun ausgeräumt ist.
01.03.2002 ACSPLUS.LIB
  • Sowohl der PUR_DESK als auch der DESKTOP verwenden nun Af_unquote vor Aufruf der der hinterlegten Neu-Routine.
28.02.2002 ACS.LIB, ACSTOOLS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die neue Funktion Af_quote prüft, ob ein Dateiname mit Quote-Zeichen versehen muß, bevor er an andere Anwendungen gesandt werden kann (z.B. für AV-Protokoll). Umgekehrt entfernt ggf. die Funktion Af_unquote vorhandene Quote-Zeichen.
24.02.2002 ACSMOD.LIB, ACSMOD01.LIB
  • Die neuen Funktionen für die KEYTAB-Ansteuerung sowie das Setzen der Icons sind in die Modul-Schnittstelle aufgenommen worden.
24.02.2002 ACS.LIB, ACSTOOLS.LIB
  • Der Druck-Dialog sowie der File- und der Font-Selector verwenden nun kein Icon mehr. Über die Funktionen Ash_printSetIcon, Ash_fileSetIcon und Ash_fontSetIcon kann das zu verwendende Icon gesetzt oder durch NULL bzw. NIL gelöscht werden. Der Parameter ghost setzt oder löscht bei vorhandenem Icon das "Ghost-Flag" AW_GHOSTICON.
  • Die Bibliothek KEYTAB.LIB wurde in ACSpro integriert. Mittels dieser Bibliothek wird KEYTAB zur Zeichensatz-Konversion angesteuert. Die dazu notwendigen Funktionen sind
    Akt_getKeyTab, Akt_getRelease, Akt_getEuro, Akt_getExpMaxNr, Akt_getImpMaxNr, Akt_getExpNameFromNr, Akt_getImpNameFromNr, Akt_getExpShortNameFromNr, Akt_getImpShortNameFromNr, Akt_getExpNrFromId, Akt_getImpNrFromId, Akt_getExpIdFromNr, Akt_getImpIdFromNr, Akt_getExpNrFromName, Akt_getImpNrFromName, Akt_CharAtari2X, Akt_CharX2Atari, Akt_BlockAtari2X, Akt_BlockX2Atari, Akt_StringAtari2X und Akt_StringX2Atari.

    In der Bibliothek ACS.LIB sind zusätzlich die Funktionen
    Akt_popExpName, Akt_popImpName, Akt_chooseExpNr und Akt_chooseImpNr

    enthalten, die eine komfortable Auswahl des Ziel- bzw. Quell-Zeichensatzes über Popups ermöglichen.

    Die Einbindung der Bibliothek KEYTAB.LIB oder der Header-Datei KEYTAB.H ist damit überflüssig geworden.

    Genauere Informationen über KEYTAB und die KEYTAB.LIB liegen zusammen mit allen(!) Sourcen KEYTAB bei. KEYTAB kann aus der Maus LL (Telefonnummer 0 81 92 / 99 6 99 99, V.34 und X.75) oder vom Internet unter http://acspro.atari.org/ geladen werden.
15.12.2001 ACSTOOLS.LIB
  • Es gibt nun eine weitere Bibliothek: ACSTOOLS.LIB. Sie ist für TOS/TTP-Programme und stellt einige Utility-Funktionen aus ACSpro zur Verfügung.

    Auch hier erfolgt die Initialisierung über die bekannten Funktionen ACSinit0 und ACSinit. Die wichtigsten Initialisierungs-Daten müssen über eine Variable ACSconfig vom Typ Aconfig zur Verfügung gestellt werden. Die Dokumentation dieser Bibliothek wird in die ACSpro-Dokumentation eingearbeitet werden.

    Hinweis: Die Struktur von Aconfig, Ablk etc. ist für die TOS-/TTP-Programme entsprechend angepaßt worden, d.h. GEM-Anwendungen benötigen ACS.LIB, TOS/TTP-Programme ACSTOOLS.LIB. Beide Bibliotheken schließen sich aus.
28.11.2001 ACS.LIB
  • Beim Erstellen der Cfg-Struktur UConfig wurde die Komponente env_praefix der Info-Struktur UCfgInfo nicht korrekt ausgewertet: wenn env_praefix gleich NULL bzw. NIL ist, so wurde ein leerer String erzeugt. Durch env_praefix gleich NULL bzw. NIL wird signalisiert, daß nicht im Environment nach einer Cfg-Variablen gesucht werden soll, wenn sie in den Cfg-Strings nicht gefunden wird.
27.11.2001 ACS.LIB
  • Nach einigen Tests hat sich ein übler Absturz in den Cfg-Strings gezeigt, der nun korrigiert ist. Er trat auf, wenn ein gesuchter String nicht gefunden wurde und versucht wurde, im Environment den gewünschten Wert zu finden.
26.10.2001 ACSPLUS.LIB
  • Der PUR_DESK wurde um ein paar interne Überprüfungen ergänzt, die den Betrieb gegenüber Programmier-Fehlern stabiler machen dürften.
17.10.2001 ACS.LIB, ACSMOD.LIB, ACSMOD01.LIB
  • Die neue Funktion Ash_gettimer liefert den Wert des 200Hz-Timers zurück. Bevorzugt wird der Wert über Ssystem ermittelt, falls dies nicht geht, wird der Timer direkt ausgelesen. Die Funktion steht auch über die Modul-Schnittstelle zur Verfügung.
25.09.2001 ACS.LIB
  • In ACSpro wurden die Änderungen aus PCGEM.LIB übernommen (Binding v_opnwk erweitert, Binding für v_copies nachgerüstet).
18.09.2001 ACS.LIB
  • Kleinere Umstellungen und Optimierungen bei der Initialisierung des ACS-Systems - z.B. sollte jetzt nach der Initialisierung der normale Mauszeiger erscheinen.
  • Kleinere Optimierungen in Amo_busy() und Amo_unbusy() sowie Amo_hide() und Amo_show().
06.09.2001 ACS.LIB
  • Der Font-Selektor hatte keinen Fenster-Titel. Dieser wird jetzt an die Funktion Ash_font übergeben. Daher erhält die Funktion Ash_font als neuen ersten Parameter den Fenster-Titel, die restlichen Parameter sind wie gewohnt.
  • Beim Aufruf der Druck-Dialog im nicht-modalen Fenster erfuhr man in der Nachricht AS_PRINT, welche Daten eingestellt wurden. Allerdings fehlte hier die Information, ob "OK", "Drucken" oder "Abbrechen" gewählt worden war. Daher wurde die Struktur A_PrintSel um die Angabe des Buttons erweitert. Wenn der Button nicht PDLG_OK ist, so wurde Abbrechen gewählt, bei PDLG-OK entweder OK oder Drucken, was durch options (der Wert, der Ash_print mitgegeben wurde) bestimmt wird.
21.08.2001 ACS.LIB
  • Wenn in Fenster-Dialogen ein Tastendruck nicht verarbeitet werden kann — z.B. weil kein Eingabefeld existiert und es kein passendes Tastenkürzel gibt —, so passierte gar nichts.

    Jetzt kann bei Tastendrücken ohne Ctrl oder Alt versucht werden, ein Tastenkürzel mit Ctrl oder Alt zu verwenden. Über die Variable ACSblk->keyAltCtrlSwitch wird global für die Anwendung das Verhalten definiert. Folgende Varianten sind möglich:
    • Suche im Work-Objekt getrennt einschaltbar
    • Suche in der Toolbar getrennt einschaltbar
    • Suche nach Alt+Key getrennt einschaltbar
    • Suche nach Ctrl+Key getrennt einschaltbar
    • Suche nach Ctrl+Alt+Key getrennt einschaltbar
    • Zuerst im Work-Objekt suchen, dann in der Toolbar
    • Zuerst in der Toolbar suchen, dann im Work-Objekt

    Hierfür sind einige Konstanten definiert:
    KEY_AC_NONE bisheriges Verhalten (keine Variante probieren)
    KEY_AC_ALT_WORK Alt+Key im Work-Objekt versuchen (defaultmäßig aktiviert)
    KEY_AC_CTRL_WORK Ctrl+Key im Work-Objekt versuchen (defaultmäßig nicht aktiviert)
    KEY_AC_CTRL_FIRST_WORK Für das Work-Objekt erst Ctrl+Key, dann Alt+Key versuchen (Standard: erst Alt, dann Ctrl)
    KEY_AC_ALT_CTRL_WORK Ctrl+Alt+Key im Work-Objekt versuchen (defaultmäßig nicht aktiviert)
    KEY_AC_ALT_TOOL Alt+Key in der Toolbar versuchen (defaultmäßig nicht aktiviert)
    KEY_AC_CTRL_TOOL Ctrl+Key in der Toolbar versuchen (defaultmäßig nicht aktiviert)
    KEY_AC_CTRL_FIRST_TOOL Für die Toolbar erst Ctrl+Key, dann Alt+Key versuchen (Standard: erst Alt, dann Ctrl)
    KEY_AC_ALT_CTRL_TOOL Ctrl+Alt+Key in der Toolbar versuchen (defaultmäßig nicht aktiviert)
    KEY_AC_TOOL_FIRST Zuerst in der Toolbar, dann im Work-Objekt nachsehen (Standard: erst Work-Objekt, dann Toolbar)
08.08.2001 GUI-Editor
  • Das Generieren der Sourcen wurde korrigiert. Wenn in Strings Sonderzeichen wie z.B. Linefeed oder Formfeed enthalten waren, so sind diese direkt so ausgegeben worden.
    • In C-Strings werden diese Zeichen korrekt als Escape-Sequenz ausgegeben. Beispielsweise wird der String "Zeilen-umbruch" mit dem Zeichen '\n' nach dem Trennstrich (läßt sich hier nicht passend wiedergeben) dann korrekt als "Zeilen-\numbruch" geschrieben.
    • Für Pascal werden diese Zeichen bis auf das Pascal-Zeichen "'" über ihren ASCII-Code in den String geschrieben.
25.06.2001 ACSPLUS.LIB
  • Die Funktionen wputs, wprintf und wvprintf prüfen nun, ob das übergebene Fenster ungleich NULL bzw. NIL ist.

    Tip: Damit lassen sich Debug-Ausgaben in ein Protokoll-Fenster umleiten. Für die Release-Version wird das globale Debug-Fenster nicht mehr angelegt, sondern die globale Debug-Fenster-Variable auf NULL bzw. NIL gesetzt — und schon sind alle Debug-Ausgaben quasi wirkungslos.
14.06.2001 GUI-Editor
  • Beim Zeichnen von Icons im Icon-Editor nimmt der Maus-Pfeil die gewählte Farbe an. Bei hellen Farben — speziell Hellgrau — war der Maus-Zeiger auf dem hellen Untergrund nicht mehr erkennbar. Jetzt wird anhand einer empirischen "Helligkeits-Bestimmung" (Der Name klingt nach wesentlich mehr, als es ist) die Umrahmung des Maus-Zeigers bei dunklen Farben auf weiß, bei hellen Farben auf schwarz gestellt.
05.06.2001 ACSPLUS.LIB
  • Der Slider-Balken wird nun auch wie die Pfeile deaktiv dargestellt, wenn der Slider den gesamten Bereich bereits anzeigt, d.h. wenn der Balken bisher nicht zu verschieben war.
01.06.2001 ACSMOD.LIB, ACSMOD01.LIB
  • Die Funktionen Acfg_getChar, Acfg_setChar, Acfg_getLong, Acfg_setLong, Acfg_getBool, Acfg_setBool und Acfg_getString sind auch in der Modul-Schnittstelle enthalten.
01.06.2001 ACS.LIB
  • Die Cfg-Strings haben die neuen Funktionen Acfg_setChar, Acfg_getChar, Acfg_getLong, Acfg_setLong, Acfg_getBool und Acfg_getBool erhalten. Diese nehmen ggf. die Umwandlung der Werte von char, INT32 bzw. Logischen Werten in Strings und umgekehrt vor.
  • Die neue Funktion Acfg_getString stellt eine Abkürzung zu Acfg_getValue dar, der Wert wird in einem statischen String zurückgegeben.

    Hinweis: Die Funktion Acfg_getString ist nicht multi-threading-fest!
  • Die neue Funktion Acfg_clearGroup löscht eine einzige Gruppe.
  • Die Funktion Acfg_clearGroup wurde in Acfg_clearAllGroups umbenannt.
27.05.2001 ACS.LIB
  • Es gibt zwei neue Funktionen, um zu überprüfen, ob es eine Parameter-Gruppe bzw. einen Cfg-String gibt. Acfg_isGroupPresent liefert TRUE, wenn die genannte Gruppe existiert, anderfalls wird FALSE geliefert. Ebenso liefert Acfg_isStringPresent bei existierendem Parameter TRUE, andernfalls FALSE.

    Hinweis: Die beiden Funktionen betrachten nur die übergebene UConfig-Struktur, nicht evtl. von Acfg_getValue untersuchte Environment-Strings!
  • Die Funktionen Acfg_getBool und Acfg_setBool verwenden nun andere Werte. Acfg_setBool gibt dem übergebenen Parameter je nach Flag die Werte "True" oder "False". Acfg_getBool konvertiert den Wert "True" nach TRUE, alles andere wird FALSE.
25.05.2001 ACSMOD.LIB, ACSMOD01.LIB, ACS_LOAD.O
  • Die Modul-Schnittstelle ist nun um die kompletten Bindings der VDI- und AES-Funktionen erweitert worden. Damit wird das applikations-globale AES-Array ACSblk->AESglobal bei AES-Aufrufen der Module benutzt, was bislang bei Modulen zu Problemen geführt hat (Module hatten bislang die GEM-Bibliothek ebenfals gelinkt und damit ein eigenes und damit uninitialisiertes global-Array benutzt).
06.05.2001 GUI-Editor
  • Der GUI-Editor hat bislang in die exportierte UConfig-Struktur, die in der exportierten Variable ACSconfig des Hauptmoduls enthalten ist, als Dateiname der Cfg-Strings "PUR_DESK" geschrieben. Nun wird dieser Text leer gelassen.

    Damit wird für das Laden der in ACSblk->basename stehende Name verwendet. In späteren Versionn ist geplant, die in ACSconfig enthaltene Struktur CfgInfo auch im GUI-Editor bereits bearbeiten zu können.
06.05.2001 ACS.LIB
  • Die Cfg-Strings werden nun beim Anwendungs-Start automatisch geladen. Die Cfg-Strings stehen danach in ACSblk->cfg zur Verfügung und können mit den zugehörigen Funktionen bearbeitet und ausgewertet werden.

    Der Dateiname für das Laden wird aus ACSconfig genommen. Falls der dort notierte Name leer sein sollte, wird der Dateiname anhand ACSblk->basename gebildet: Af_cfgfile(&ACSblk->basename[2]) (die 2 wegen der zwei führenden Leerzeichen in ACSblk->basename).

    Das Laden der Cfg-Strings geschieht unmittelbar nach Aufruf der ACSinit0-Funktion, so daß der dort ggf. manipulierte Name in ACSblk->basename verwendet wird.
28.04.2001 ACS.LIB
  • Das Thermometer kann nun auch nicht-modal aufgerufen werden, indem der Funktion Ash_thermometer im Parameter kind das neue Flag THERMO_NONMODAL übergeben wird.

    Hinweis:Das modale Thermometer setzt allerdings den Wert für ACSblk->ev_mtcount auf 1, damit die Schleife schnellstmöglich durchläuft. Dies passiert beim nicht-modalen Thermometer natürlich nicht. Damit läuft das Thermometer nicht mehr gleichmäßig, wenn z.B. die Maus bewegt wird. Normalerweise wird wohl außerdem das modale Thermometer zum Einsatz kommen... ;-)
27.04.2001 ACSPLUS.LIB
  • Der Slider-Balken wird nun wie die Pfeile deaktiv dargestellt, wenn das Objekt im Status DISABLED ist.
22.04.2001 ACS.LIB
  • Die Funktion Aev_WmRedraw verschickt eine Redraw-Nachricht. ACSpro verwendet diese Funktion, um in einigen Fällen ein Neuzeichnen von Fenstern oder sogar des gesamten Bildschirmes zu veranlassen (z.B. in Awi_layout).
  • Die Funktion Awi_alert hat den Alert-String direkt an form_alert weitergegeben, wenn der ACSpro-eigene modale Alert-Fenster-Dialog nicht verwendet werden konnte. Nun wird das Icon '4' auf das Icon '1' für form_alert umgesetzt.
19.04.2001 ACS.LIB
  • Die Funktionen Awi_redraw zeichnet den Fenster-Inhalt nur noch, wenn das Fenster nicht im Zustand AWS_SHADED ist. Da hin und wieder die Redraw-Message vor dem "Unshaden" eintrifft, wird bei Erhalt der Nachricht WM_UNSHADED das Fenster davon informiert, das Flag AWS_SHADED gelöscht und dann ein Neuzeichnen angestoßen.
  • Die Funktionen Awi_obchange und Awi_obredraw rufen bei gesetztem Flag AWS_SHADED direkt die normale Redraw-Routine des Fensters auf. Diese ist in den meisten Fällen Awi_redraw, welche in diesem Zustand die Arbeit verweigert — das Fenster ist ja eingeklappt und nichts außer der Titelzeile zu sehen.
17.04.2001 GUI-Editor
  • Der GUI-Editor öffnet nun Module nicht mehr als Text im Editor, sondern startet sie per Ash_module nach.
  • Im Eigenschaften-Dialog jeder ACS-Datei wurden bereits die Optionen für das Exportieren und Importieren der Texte vorgesehen. Das Importieren der Texte sowie das Zusammenbinden und Verwenden der generierten Texte wird noch nicht in Version 3.0.0 enthalten sein.
17.04.2001 ACSPLUS.LIB
  • Der pure Desktop verwendet nun zum Nachladen von Modulen die Funktion Af_fileselect, d.h. die Auswahlbox wird, sofern möglich, in ein modales Fenster gelegt, Multi-Selektion wird ebenfalls unterstützt.
14.04.2001 ACS.LIB
  • Die neue Funktion Ast_reverse dreht einen String zeichenweise um, d.h. im übergebenen Puffer ist das letzte Zeichen das erste und das erste das letzte.
  • Die Funktion Aob_visible prüft, ob ein Objekt im Objektbaum sichtbar ist, oder ob eines der Eltern-Objekte unsichtbar ist.
  • Ebenso prüft die Funktion Awi_obvisible, ob das angegebene Objekt im Fenster sichtbar sein könnte, d.h. ob das Fester geöffnet, nicht ikonifiziert und nicht "shaded" ist und keines der Eltern-Objekte des Objektes unsichtbar ist. Es wird nicht geprüft, ob der passende Ausschnitt im Fenster sichtbar ist.
14.04.2001 GUI-Editor
  • Der GUI-Editor generiert beim Erzeugen der Dateien für den Compiler nun auch eine neue Datei für die Strings. Diese Datei ist im Format der Cfg-Strings aufgebaut. Pro ACS-Datei wird eine ASCII-Datei generiert, wobei der Dateiname aus dem Namen der ACS-Datei durch Ersetzen von ".acs" durch ".st<n>" hervorgeht - <n> ist hierbei eine Zahl von 0 bis 3 je nach aktueller Sprach-Einstellung. Dies vereinfacht das Übersetzen von Anwendungen erheblich, da beim Editieren der Texte nur die aktuelle Sprache verwendet wird und nun die generierte ASCII-Datei der Original-Sprache parallel in den Editor geladen werden kann.

    Diese ASCII-Dateien werden bislang nur erzeugt und noch nicht verwendet. Es ist geplant, diese ASCII-Dateien zu einer einzigen Datei pro Anwendung zusammenzusetzen (entweder durch ein extra Merge-Programm oder durch den GUI-Editor. Diese eine große Datei soll dann die Endung ".str" haben, im Verzeichnis der compilierten Anwendung stehen, alle Strings der Anwendung enthalten und über die Mechanismen der Cfg-Strings ACS-intern verwendet werden. Ein Umschalten der Sprache soll dann durch Austausch dieser Datei gegen eine Datei mit übersetzten Texten möglich sein. Auch das bisherige Verfahren, die Strings in die Anwendung zu compilieren (quasi als Default-Strings), soll möglich sein. Aber das ist noch Zukunftsmusik (siehe ToDo-Liste).
07.04.2001 ACS.LIB
  • Die Nachricht WM_MOUSEWHEEL wird nun ausgewertet. Allerdings wird "nur" das Fenster gescrollt. Da es nur eine Scroll-Information gibt, wird zuerst versucht, vertikal zu scrollen. Wenn es die Scroll-Elemente bei dem Fenster nicht gibt oder bereits alles dargestellt werden sollte, wird versucht, horizontal zu scrollen, sofern dies möglich ist. Wenn die Control-Taste gedrückt ist, wird das Verhalten umgedreht, d.h. erst wird versucht, horizontal zu scrollen, dann ggf. vertikal.
03.04.2001 ACSMOD.LIB
  • Die Modul-Schnittstelle hat eine abwärtskompatible Schnittstellenfunktion bekommen, die die Schrittweite 1 für die Funktion Awi_arrowed bei Modulen von ACS 2.3x einsetzt. Module, die bereits mittels Version 3.0.0 geschrieben wurden, müssen allerdings angepaßt werden.
03.04.2001 ACS.LIB
  • ACSpro unterstützt nun das erweiterte Scrollen gemäß WINX. Dazu ist einiges passiert...
  • Die Routine Awi_arrowed hat als dritten Parameter die Scroll-Schrittweite bekommen und berücksichtigt diesen auch.
  • Die Fenster-Routine Awindow.arrowed hat ebenfalls diesen Parameter bekommen.
29.03.2001 ACS.LIB
  • ACSpro beherrscht nun auch die von NKCC gewohnten sog. Dead-Keys. Wie funktionieren diese? Ganz einfach: nach Eingabe eines Dead-Keys geschieht gar nichts, der Tastendruck wird zunächst gepuffert und scheinbar ignoriert. Beim nächsten Zeichen wird dann versucht, das erste und das zweite Zeichen zu einem einzigen Zeichen zu kombinieren. Genauer läuft hier folgendes ab:
    1. Wenn kein Dead-Key gepuffert ist, wird geprüft, ob ein Dead-Key eingegeben wurde. Ein Dead-Key stammt aus der Menge ^ '`¨"°,/ und muß freigeschaltet sein (s.u.).
    2. Falls kein Dead-Key eingegeben wurde oder dieser gesperrt sein sollte, so wird das Zeichen normal weitergereicht.
    3. Handelt es sich jedoch bei dem Zeichen um einen freigegebenen Dead-Key, so wird das Zeichen gepuffert und die Verarbeitung des Tastendruckes abgebrochen. ACSpro wartet nun auf den nächsten Tastendruck.
    4. Wenn ein Dead-Key gepuffert ist, so wird nachgeschlage, ob für die vorliegende Kombination Dead-Key plus das neu eingegebene Zeichen eine Ersetzung hinterlegt ist. Wenn dies der Fall ist, wird das zuletzt eingegebene Zeichen durch das Ersatz-Zeichen ersetzt. Andernfalls wird zuerst der gepufferte Dead-Key und danach das zweite Zeichen in die normale Tastatur-Verarbeitung gespielt — wie wenn es keine Dead-Keys gäbe. Der Dead-Key-Puffer ist nach dieser Verarbeitung wieder leer.

    Die Dead-Keys müssen natürlich individuell freigeschaltet werden. Hierzu wird in der neuen Variable ACSblk->ev_mkdead die Zeichen eingetragen, die die Anwendung als Dead-Keys betrachtet haben möchte. Wie in der ToDo-Liste vermerkt, wird dies als Erweiterung des GUI-Editor vorgesehen.

    Folgende Ersetzungs-Varianten werden unterstützt:
    Akzent Dead-Key Zweite Zeichen Ersetzung
    Circumflex ^ + aeiou = âêîôû
    Tilde ~ + nNaoAo = ñÑãõÃÕ
    Akut ' + eEaiou = éÉáíóú
    Gravis ` + aeiouA = àèìòùÀ
    Umlaut ¨ + aeiouyAOU = äëïöüÿÄÖÜ
    Umlaut " + aeiouyAOU = äëïöüÿÄÖÜ
    Angström ° + aA = åÅ
    Cedille , + cC = çÇ
    kein Akzent / + oO24 = øؽ¼

    Die für eine Anwendung zu verwendenden Dead-Keys müssen per Programm z.B. in ACSinit0 oder ACSinit in ACSblk->ev_mkdead eingetragen werden. In späteren ACS-Versionen wird dies bereits im GUI-Editor möglich sein.
17.03.2001 ACSPLUS.LIB
  • Auch die Toolbars der anderen Fensters wurden etwas zu klein, wenn der Systemzeichensatz zu klein eingestellt war. Jetzt ist die Größe aller Toolbars von der Größe des Systemzeichensatzes unabhängig.
16.02.2001 ACSPLUS.LIB
  • Die neue Funktion Awi_layout schaltet ggf. die Flags AB_NO3D und AB_OLDMENU um. Beim Umschalten des Flags AB_OLDMENU werden — nach Rückfrage beim jeweiligen Fenster über die Nachricht AS_CHANGE_LAYOUT — alle Menüs auf das jeweils gewünschte Layout umgestellt.
16.02.2001 ACSPLUS.LIB
  • Das Editor-Fenster EDITOR hat beim Kopieren auf das Klemmbrett den gesamten und nicht nur den markierten Text geschrieben. Das sollte nun abgestellt sein...
12.02.2001 ACSMOD.LIB, ACSMOD01.LIB
  • Die Funktionen Aev_DhstAdd und Aev_DhstSaved stehen nun auch in der Modul-Schnittstelle zur Verfügung.
10.02.2001 GUI-Editor
  • Auch der GUI-Editor verschickt mittels Aev_DhstAdd die Namen der gespeicherten ACS-Dateien an den DHST-Server.
10.02.2001 ACSPLUS.LIB
  • Der Editor informiert nun beim Speichern nicht nur den OLGA-Manager, sondern auch den DHST-Server über die gespeicherte Datei.
10.02.2001 ACS.LIB
  • Die Funktion Aev_DhstSaved ermittelt aus dem übergebenen Dateinamen incl. Pfad den reinen namen incl. Endung — z.B. "Doku.TXT" — und verwendet diesen bei einem Aufruf von Aev_DhstAdd als Dokumentennamen.
  • ACSpro beherrscht nun das DHST-Protokoll, bei dem ein Document-History-Server (z.B. SMU) über die letzten gesicherten Dateien informiert wird.

    Die neue Funktion Aev_DhstAdd sendet Dokument-Name und -Pfad an den DHST-Server. Der Anwendungsname wird aus ACSblk->AppLongName, der Anwendungspfad aus ACSblk->appname verwendet. Die komplette Kommunikation mit dem DHST-Server übernimmt ACSpro.
05.02.2001 ACS.LIB
  • Der Bug beim nicht-modalen WDIALOG-Druckdialog ist nun behoben. Der Druckdialog steht also "in voller Schönheit" zur Verfügung.
03.02.2001 ACSMOD.LIB, ACSMOD01.LIB
  • Die Funktionen Ash_font und Ash_print stehen nun auch über die Modul-Schnittstelle allen Modulen zur Verfügung.
  • Die Funktion A_fileselect wurde auch in der Modul- Schnittstelle in Ash_fileselect umbenannt.
03.02.2001 ACS.LIB
  • Die neue Funktion Ash_font öffnet den (MagiC-)Font-Selector. Je nach Parametern kann der Font-Selector als modales oder auch nicht-modales Fenster geöffnet werden. Wenn der Font-Selector als nicht-modales Fenster läuft, wird beim Schließen des Selektors dem beim Aufruf mitgegebenen Fenster die Nachricht AS_FONT zusammen mit den gewählten Daten über die Struktur A_FontSel mitgegeben.

    Auch hier ist es nicht unbedingt der MagiC-Font-Selector, es ist der Font-Selector, der über die FNTS-Funktionen bedient wird... ;-) Daraus folgt aber auch: ohne FNTS-Funktionen (Abfrage erfolgt per appl_xgetinfo) gibt es hier nichts!
  • Die Funktion A_print wurde konsequenterweise in Ash_print umbenannt.
  • Ebenso wurde die Funktion A_fileselect in Ash_fileselect umbenannt.
  • Der Parameter flag3D in der Funktion Ash_print ist entfallen. Die 3D-Einstellung wird nun aus ACSblk->description->flags&AB_NO3D gewonnen - eine konsistentere Umsetzung...
01.02.2001 ACS.LIB
  • Neue Klick-Routine Aob_help für beliebige Objekte, die einfach die ST-Guide-Hilfe-Seite des Fensters anzeigen läßt. Damit lassen sich "Hilfe-Buttons" blitzschnell realisieren.
  • Bei der Umwandlung der Menüs in das "moderne Layout" wird vor der Umwandlung des Hintergrundes auf den 3D-Effekt per appl_xgetinfo(13,...) geprüft, ob das System die AES-4-Hintergrund-Flags kennt. Dies ist nun nicht mehr von der Anzahl der Farben abhängig. Falls das System die AES-4-Hintergrund-Flags nicht kennt, wird das Flag FL3DBAK nicht gesetzt, die Umwandlung der Menü-Trenner "—-" in Linien wird denoch durchgeführt.
19.01.2001 ACSPLUS.LIB
  • Schreibfehler in der englischen Version im PUR_DESK korrigiert, es heißt nun einmal "module"... ;-)
19.01.2001 ACS.LIB
  • Der PUR_DESK leitet nun komplett alle Nachrichten außer AS_TERM an das Module-Fenster zur Bearbeitung weiter.
  • Das Module-Fenster versteht nun die vom DESKTOP her bekannte Nachricht AS_BACKOBJECT. Damit kann der Hintergrund im Module-Fenster wie vom DESKTOP hr gewohnt verändert werden. Das Module-Fenster übernimmt die Werte ob_type und ob_spec des übergebenen Objektes für den Hintergrund.

    Hinweis: Als Objekt sollte bei der Nachricht AS_BACKOBJECT im Moment nur eines verwendet werden, das keine Substrukturen (Strings, etc.) hat, da keine Unterstrukturen dynamisch neu angelegt werden. Es würde sonst zu Problemen beim Terminieren des Module-Fensters (am Programm-Ende) führen, da Daten, die nicht alloziert wurden, per Ax_free freigegeben werden müßten!
19.01.2001 ACS.LIB
  • ACSpro hatte bislang die Nachricht WM_UNTOPPED nicht verarbeitet. Jetzt wird sie "gezielt" ignoriert... ;-)
  • Die Nachricht WM_TOOLBAR wird nun von ACSpro ebenfalls "gezielt" ignoriert. Später, wenn ich herausgefunden habe, wann diese Nachricht wozu verschickt wird, soll sie jedoch passend ausgewertet werden.
18.01.2001 ACSPLUS.LIB
  • Die Titelzeile des Module-Fensters kann nun geändert werden. Dazu muß in ACSinit0 — oder der entsprechenden Routine — der Name des Desktops geändert werden, in C z.B. durch PUR_DESK.name = " <Neuer Name> ". Das Module-Fenster übernimmt diesen Namen, sobald dieser vom Standard-Namen abweicht.
  • Die Toolbar des Module-Fensters wurde etwas zu klein, wenn der Systemzeichensatz zu klein eingestellt war. Jetzt ist die Größe der Toolbar von der Größe des Systemzeichensatzes unabhängig.
08.01.2001 ACS.LIB
  • Das Thermometer Ash_thermometer ist überarbeitet worden
    1. Die Optik ist überarbeitet worden — der Laufbalken ist nicht mehr so "dick", was sich nicht nur bei der besseren proportionerten Optik, sondern auch beim Neuzeichnen bemerkbar macht.
    2. Das von Ash_thermometer zur Verfügung gestellt Schleifen-Konstrukt wurde ausgebaut. Die Schleife heißt jetzt prinzipiell:
      init(data);
      if( start(data) )
      {
         while( cont(data) )
            fkt(data);
         stop(data);
      }
      quit(data);
      

      Über den neu zu übergebenden Funktionszeiger cont wird die Abbruchbedingung — bzw. korrekter die "Weiterlauf-Bedingung" realisiert. Dies hat zwei Auswirkungen. Die hier übergebene Funktion kann ebenso in stop genutzt werden, um die Unterscheidung "vorzeitiger Abbruch" oder "Ende" zu unterscheiden (siehe Ash_thermometer). Ferner wird der evtl. anzuzeigende Text durch die in cont übergebene Funktion definiert, er wird also bei der eigentlichn Aktion (in fkt übergeben) bereits angezeigt!

      Hinweis: Falls in cont der Wert NULL bzw. NIL übergeben wird, wird die Schleife nicht ausgeführt.
    3. Die Struktur ThermoData wurde in A_ThermoData umbenannt. Ferner wurde sie um die an Ash_thermometer übergebenen Funktionszeiger erweitert — hiermit sind also z.B. generische "Stop-Nachfrage-Routinen" möglich, die anhand des dort übergebenen Zeigers die oben erwähnte Unterscheidung treffen.
08.01.2001 ACS.LIB
  • Die Nachricht FNT_CHANGED wird unterstützt. Alle Zeichensätze werden mittels vst_unload_fonts "weggeworfen" und mittels vst_load_fonts neu geladen. Dann wird allen Fenstern die Nachricht AS_FONT_UPDATE gesendet.
  • Die Nachricht PRN_CHANGED wird unterstützt. Allen Fenstern wird die Nachricht AS_PRN_UPDATE gesendet. In der über in_out mitgegebenen Struktur A_PrnUpd stehen die Informationen über den treiber und die Art der Änderung.
01.01.2001 ACS.LIB, GUI-Editor
  • Anpassung der Jahreszahl-Daten im Copyright.
30.12.2000 ACS.LIB
  • ACSpro unterstützt nun die WDialog-Druckdialoge. Die Funktion A_print stellt die Schnittstelle dazu dar. Übergeben werden die Drucker-Einstellungen (siehe WDialog-Dokumentation), die Position des Fensters, die zwei Flags flag3D (siehe pdlg_create) und option (siehe pdlg_open), der Titel des Fensters sowie ganz analog zu Af_fileselect das Fenster, dem bei Erfolg die Nachricht AS_PRINT gesendet werden soll. Der Dialog erscheint als nicht modaler-Dialog, wenn das Fenster angegeben wird, und als modaler Fenster-Dialog (sofern möglich ;-), wenn als Fenster NULL bzw. NIL übergeben wird.

    Hinweis: Allerdings ist hier noch ein Bug für den nicht-modalen Betrieb, aber zunächst kann einmal damit experimentiert werden. Der Bug ist etwas merkwürdig, die Anwendung stürzt gnadenlos ab, da der AES-Aufruf Käse macht. Warum das aber nur im nicht-modalen Betrieb passiert und mit modalen Fenster-Dialogen klappt, muß ich noch herausbekommen...

    Hinweis: Eine Erweiterung des Druck-Dialoges durch eigene Objektbäume ist in der Planung und wird nach der Version 3.0.0 realisiert. Wichtig war erst einmal, daß der Druckdialog überhaupt unterstützt wird... ;-)
22.12.2000 ACS.LIB
  • Erste Vorbereitungen, um auch das im Entstehen begriffene SSP (System Service Protocol) transparent in ACSpro einzubinden.
12.12.2000 ACSMOD.LIB, ACSMOD01.LIB
  • Die neuen Funktionen Ast_ncmp und Ast_incmp stehen nun auch in der Modulschnittstelle zur Verfügung.
12.12.2000 ACS.LIB
  • Es gibt zwei neue Funktionen für String-Vergleiche. Die Funktion Ast_ncmp vergleicht zwei Strings, jedoch maximal n Zeichen, bei Ast_incmp spielt dabei die Groß-/Kleinschreibung keine Rolle.
  • Im Standard-AboutMe-Dialog von ACSpro wird nun das Datum der Version "ordentlich" als "tt.mm.jjjj" (deutsch) bzw. "mm-tt-jjjj"(englisch) dargestellt. Die "elende Krücke" mit der Abkürzung des Monatsnamens als "Oct" oder "Dec" hat also ein Ende... ;-)
11.12.2000 ACSMOD.LIB, ACSMOD01.LIB
  • Die Funktion appl_xgetinfo steht nun auch über die Modul-Schnittstelle allen Modulen zur Verfügung.
  • Die Funktion Awi_ontop fehlte in der Modul-Schnittstelle und ist nachgerüstet worden.
03.12.2000 ACS.LIB
  • Der letzte Parameter von Af_fileselect wurde geändert: es wird nun nicht mehr TRUE oder FALSE als Kennung modal/nicht-modal übergeben, sondern das Fenster, daß die Antwort AS_FILESELECT im nicht-modalen Fall erhalten soll, bzw. NULL/NIL für den modalen File-Selector.
02.11.2000 GUI-Editor
  • Bei der direkten Positionseingabe für ein Objekt im Objekt-Editor konnten zu große oder zu kleine Werte für die Zeichen- und Pixel-Komponenten eingegeben werden. Die Zeichenkoordinaten sind auf 0..255, die Pixel-Korrekturen auf -128..127 festgelegt. Größere oder kleinere Werte werden passend auf den Rand des Intervalls gesetzt.
30.10.2000 PCGEM.LIB, ACSGEM.LIB
  • Die GEM-Bibliotheken sind nun aus ACSpro ausgegliedert worden und laufen ab jetzt als eigenständige Projekte. Sie erhalten eine eigene History und entfallen ab jetzt in dieser Liste komplett.

    Die GEM-Bibliotheken sind Freeware und wie ACSpro auch in der Maus LL und auf dem Internet verfügbar.

    Alle "Bestandteile" von ACSpro ab Version 3.0.0 sind ab jetzt immer mit der jeweils neuesten Bibliothek PCGEM.LIB compiliert bzw. gelinkt.
26.10.2000 ACS.LIB
  • Die Nachricht WM_MOUSEWHEEL wird von ACSpro nun empfangen, allerdings noch nicht großartig ausgewertet. Dies ist ein einer späteren Version allerdings geplant (siehe ToDo-Liste).
26.10.2000 PCGEM.LIB, ACSGEM.LIB
  • Die Nachricht WM_MOUSEWHEEL ist nun in die Liste der Nachrichten mit aufgenommen worden.
25.10.2000 PCTOS.LIB, ACSTOS.LIB
  • Die TOS-Bibliotheken sind nun aus ACSpro ausgegliedert worden und laufen ab jetzt als eigenständige Projekte. Sie erhalten eine eigene History und entfallen ab jetzt in dieser Liste komplett.

    Die TOS-Bibliotheken sind Freeware und wie ACSpro auch in der Maus LL und auf dem Internet verfügbar.

    Alle "Bestandteile" von ACSpro ab Version 3.0.0 sind ab jetzt immer mit der jeweils neuesten Bibliothek ACSTOS.LIB compiliert bzw. gelinkt.
19.10.2000 PCGEM.LIB, ACSGEM.LIB
  • Aus der N.AES-Entwickler-Dokumentation sind einige N.AES-spezifische Funktionen in die Bibliotheken eingeflossen, wie z.B. appl_control, wind_draw, shel_help, objc_xfind etc.
18.10.2000 ACSPLUS.LIB
  • Der "pure" Desktop reagiert nun auf die Nachricht AS_DRAGGED, indem die Auswahlliste nach Objekten vom Typ AT_FILE durchsucht wird. Wenn diese gefunden werden und eine Neu-Routine hinterlegt wurde, wird für jedes AT_FILE-Objekt die Neu-Routine aufgerufen.

    Hinweis: Damit kann z.B. jede ACSpro-Anwendung, die den PUR_DESK verwendet, — wie z.B. der GUI-Editor — per Drag&Drop von jinnee Dateien empfangen und öffnen (sofern dies in jinnee entsprechend eingestellt ist natürlich ;-)
18.10.2000 ACS.LIB
  • Die Behandlung des Drag&Drop-Protokolles für Text-Daten wurde verbessert. Wenn eine laufende ACSpro-Anwendung Daten per Drag&Drop gesendet bekommt (z.B. von jinnee bei einem Mehrfachstart — muß in jinnee eingestellt werden), so werden der Reihe nach die einzelnen Text-Daten in Objekte vom Typ AT_FILE (D&D-Typ ARGS) oder AT_STRING (sonst) "gesteckt" und an eine Drag-Routine gesendet.

    Bislang wurden empfangene Text-Daten über die Awindow.keys-Routine eingespielt, wenn das Empfangsobjekt nicht identifiziert werden konnte. Dies ist nicht immer das Gewünschte, denn da in dieser Situation auch kein Empfangsfenster bekannt ist, verwendet ACSpro automagisch das Root-Fenster und überträgt die Dateinamen per Awindow.keys-Routine... ;-/

    Wenn jetzt das Objekt nicht bestimmt werden kann, wird dem Empfangsfenster — nach erfolgreicher Prüfung durch die Nachricht AS_CHECKDRAGGED — die Nachricht AS_DRAGGED gesendet, als wenn das D&D-Objekt aus der Auswahlliste auf das Fenster-Icon gezogen worden wären. Das Fenster kann nun geeignet darauf reagieren.

    Hinweis: Falls das Empfangsobjekt lokalisiert werden kann, aber kein erweitertes AOBJECT ist oder keine Drag-Routine besitzt, bleibt alles so wie bisher: die "Text-Daten" werden per Awindow.keys-Routine eingespielt.
16.10.2000 ACS.LIB
  • Nachdem ich selbst beim Entwickeln von und mit ACSpro immer wieder in die Situation komme, wo es heißt "jetzt muß ich nur noch schnell eine Nachricht an das Objekt xyz schicken" und dann der Zirkus mit dem Bestimmen der AUSERBLK-Struktur und dem Versand der Nachricht losgeht, gibt es jetzt (endlich ;-) zwei neue Funktionen:
    1. Die Funktion Aob_service leitet eine Nachricht an ein Objekt eines Objektbaumes weiter. Wenn das (globale) Flag AB_LAZYEVAL gesetzt ist, werden keine Überprüfungen mehr vorgenommen. Andernfalls wird geprüft, daß der Objektbaum vorhanden ist, daß es ein UserDef ist und eine Service-Routine vorhanden ist...
    2. Die Funktion Awi_observice leitet eine Nachricht an ein Fenster-Objekt weiter. Auch hier wird nur bei gelöschtem Flag AB_LAZYEVAL geprüft, daß das Fenster existiert. Die Funktion selbst ist recht billig, denn sie läßt — mit dem passenden Objektbaum — die Arbeit von Aob_service erledigen... ;-)
15.10.2000 ACS.LIB
  • Wenn der Dateiname bei der Funktion Af_fileselect nur aus dem String "*" besteht, so wird der Dateiname für den FSLX-File-Selector A_fileselect geleert — sieht einfach besser aus als ein Dateiname "*"... ;-)
  • Die Funktion Aob_state wurde etwas überarbeitet, sie hat nicht immer das getan, was sie sollte. Das Ergebnis war von der Uhrzeit, der Wetterlage und der Luftfeuchtigkeit abhängig — na ja, sooo schlimm war es nicht, aber je nachdem, ob das Fenster geöffnet war oder nicht, ob der Zustand gesetzt werden sollte oder gelöscht, gab es hin und wieder unterschiedliche Ergebnisse... Jetzt sollte es funktionieren...
  • Die Nachricht AS_FILESELECT war leider falsch definiert und hat sich mit AS_ALLOWBUBBLE überschnitten. Damit funktionierte BubbleGEM nicht mehr, wenn die Nachricht AS_FILESELECT von der Service-Routine bearbeitet wurde... AS_FILESELECT hat nun eine neue Nummer bekommen... Sorry!
15.10.2000 ACS_LOAD.O
  • Die Funktion Af_fileselect war im Modul-Startup-Code fehlerhaft implementiert und hat im ACSpro-Hauptprogramm die falsche Funktion aufgerufen – - Folge: Crash... ;-/
13.10.2000 ACSPLUS.LIB, ACS.LIB
  • Die Funktion Ash_thermometer ist nun aus der Bibliothek ACSPLUS.LIB in die Bibliothek ACS.LIB gewandert, da sie dort eher paßt als in die "Ergänzungsbibliothek".
12.10.2000 ACS_LOAD.O
  • Der Startup-Code für ACSpro-Module wurde um die neuen Funktionen Af_fileselect, A_fileselect und Ash_thermometer erweitert, so daß auch Module diese Funktionen nutzen können, ohne daß ACS.LIB gelinkt werden muß.
08.10.2000 GUI-Editor
  • Nachdem ich in Kürze umziehen werde, ist nun im GUI-Editor beim Info-Dialog, der auf die Shareware-Einschänkung hinweist, bereits meine neue Adresse enthalten — so wie auf den Internetseiten und in der ST-Guide-Hilfe auch... ;-)
06.10.2000 ACS.LIB
  • Der nicht-modale File-Selector hatte noch einen Bug, durch den u.U. auf bereits freigegebenen Speicher zugegriffen wurde.
25.09.2000 ACS.LIB
  • Bei der Umwandlung der Menüs in das "moderne Layout" war noch ein kleiner Fehler enthalten, so daß unter Umständen nicht angeforderte Strings freigegeben wurden.
25.09.2000 ACSPLUS.LIB
  • Die neue Funktion Ash_thermometer stellt ein sog. Thermometer (Woher der Name dafür stammt, weiß ich gar nicht mehr — ich nenne es schon "ewig" so...) zur Verfügung. Ich habe diese Funktion nach etwas Zögern aus meiner langjährigen "ACSpro-Bibliothek-Sammlung" geholt, sie etwas verallgemeinert und überarbeitet, damit sie in der Bibliothek ACSPLUS.LIB nun allen zur Verfügung steht.

    Die Funktion Ash_thermometer stellt prinzipiell ein Programm der Form
    init(data);
    if( start(data) )
    {
       while( fkt(data) );
       stop(data);
    }
    quit(data);
    

    dar. Der Arbeitsfortschritt der Schleifen-Funktion fkt wird durch einen Laufbalken mit zugehöriger Prozentzahl in einem modalen Fenster-Dialog darstellt. Falls das Fenster für den Fenster-Dialog nicht erstellt werden kann, läuft fast die dargestellte Schleifenkonstruktion ohne optische Rückmeldung durch.

    Die in dieser Schleifenkonstruktrion dargestellten Funktionen werden als Funktionszeiger, die übrigens auch NULL sein dürfen, an Ash_thermometer übergeben:
    Ash_thermometer(
       THERMO_CANCEL|THERMO_TEXT|THERMO_PERCENT,
       " Ein kleines Beispiel... ", color, data, init,
       start, zaehlfkt, stop, quit);
    

    Das Thermometer gibt es in insgesamt 4 Varianten. Das Fenster kann einen Info-Text anzeigen, oder der Platz dafür wird eingespart. Ferner kann die Aktion abgebrochen werden, oder es ist kein Abbrechen-Button vorhanden. Die in der Mitte des Laufbalkens plazierte Prozentzahl kann bei jeder der Varianten ausgeblendet werden.
22.09.2000 ACS.LIB
  • Die bisher intern genutzte Funktion appl_xgetinfo wurde überarbeitet und steht nun "offiziell" zur Verfügung. Die Funktion prüft, ob appl_getinfo verfügbar ist und ruft diese ggf. auf.
22.09.2000 GUI-Editor
  • Der GUI-Editor verwendet nun die neue Funktion zur Dateiauswahl. Die Routine zum Öffnen der ACS-Dateien wurde überarbeitet und auf die neue Dateiauswahl angepaßt. Zum Öffnen von ACS-Dateien wurde der modale Fileselector mit Multi-Select-Fähigkeiten gewählt.

    Für Interessierte:
    Das Code-Fragment im GUI-Editor lautet
    liste=Af_fileselect(ttl_open, last_path, "acs",
       TRUE, FALSE);
    if( liste!=NULL )
    {
       (liste->doFor)(liste, &window, NO_FOR,
          (A_ListWork)openFile);
       Alu_delete(liste);
    }
    

    Der letzte Parameter von Af_fileselect gibt an, ob der Dialog modal sein soll, der vorletzte steuert die Multi-Selektion.
22.09.2000 ACSPLUS.LIB
  • Der Desktop PUR_DESK versteht nun die neue Nachricht AS_FILESELECT, die von dem nicht-modalen Fileselector verschickt wird. Wenn eine Neu-Routine angemeldet wurde, so werden dieser der Reihe nach die Dateinamen zum Öffnen übergeben.
21.09.2000 ACS.LIB
  • Die neue Funktion Ash_fileselect öffnet den (MagiC-)Fileselector. Je nach Parametern kann der Fileselector als modales oder auch nicht-modales Fenster geöffnet werden. Wenn der Fileselector als nicht-modales Fenster läuft, wird beim Schließen des Selektors dem beim Aufruf mitgegebenen Fenster die Nachricht AS_FILESELECT zusammen mit einer linearen Liste ULinListe an Pfadnamen geschickt (das Freigeben der Liste übernimmt hier ACSpro).

    Na ja, es ist nicht unbedingt der MagiC-Fileselector, es ist der Fileselector, der über die FSLX-Funktionen bedient wird... ;-) Daraus folgt aber auch: ohne FSLX-Funktionen (Abfrage erfolgt per appl_xgetinfo) gibt es hier nichts!
  • Um bei allen Varianten der Dateiauswahl immer ein Optimum zu erzielen, gibt es nun die Funktion Af_fileselect, die direkt eine lineare Liste ULinListe von Dateinamen zurückliefert — wie daher zu erwarten ist, wird eine Mehrfach-Selektion unterstützt. Die Funktion greift auf die Funktion Ash_fileselect zurück, sofern die FSLX-Funktionen vorhanden sind. Andernfalls wird Die Kombination Af_first_fsel/Af_next_fsel (Multi-Selektion) bzw. Af_select (Single-Selektion) verwendet. Af_fileselect erlaubt auch den Aufruf des nicht-modalen Fileselectors. In diesem Falle wird die Nachricht AS_FILESELECT an das Root-Fenster gesendet.

    Hinweis: Die Verwendung der Funktionen Af_select, Af_first_fsel und Af_next_fsel sollte möglichst zugunsten der neuen Funktion Af_fileselect aufgegeben werden.
17.09.2000 GUI-Editor
  • Der GUI-Editor kam nicht so recht mit langen Dateinamen klar. Besonders problematisch waren Dateinamen mit Leerzeichen darin. Der GUI-Editor versteht nun korrekt gequote Dateinamen, sowohl beim Start in der Kommandozeile als auch beim AV-Protokoll per VA_START.
  • Die Dateinamen wurden stets in Großbuchstaben umgewandelt. Das ist etwas lästig, besonders bei casesensitiven Filesystemen. Die Dateinamen werden nun nicht mehr umgewandelt, sondern bleiben so, wie sie sind — sowohl beim Öffnen von Dateien als auch beim Neuanlegen von Dateien.
  • Beim Start werden übergebene Optionen der Form "-..." bzw. "/.." erkannt, wobei nach den Zeichen '-' bzw. '/' beliebig viele Zeichen folgen können. Bisher wurde versucht, diesen Parameter als Datei zu öffnen. Nachdem der GUI-Editor (noch;-) keine Optionen kennt, werden diese Argumente schlichtweg ignoriert.
15.09.2000 ACS.LIB
  • Die Bibliothek ACS.LIB enthält nun auch die beiden Bibliotheken ACSTOS.LIB und PCGEM.LIB. Das Einbinden der Bibliotheken PCTOS.LIB, PCTOSLIB.LIB, PCGEM.LIB oder PCGEMLIB.LIB entfällt somit völlig und ist nicht mehr notwendig.

    Bisher mußte die Bibliothek ACSTOS.LIB im Projekt enthalten sein. Falls dies vergessen wurde und eine der Bibliotheken PCTOS.LIB oder PCTOSLIB.LIB (Pure-C-Biblitohek) verwendet wurde, kam es zu Abstürzen, da ACSpro ab Version 3.0.0 bereits die optimierten Aufrufe aus ACSTOS.LIB verwendet.
05.09.2000 ACS.LIB
  • Die Flags in der Struktur Adescr wurde um AB_OLDMENU erweitert.
  • Die Menüs können — falls das Flag AB_OLDMENU nicht gesetzt ist — in das "moderne Layout" umgewandelt werden, so daß die Menüs dreidimensional erscheinen. Folgende Umwandlungen werden vorgenommen:
    1. Alle G_BOX-Objekte werden bei mindestens 16 Farben mit Hintergrund LWHITE und Füllmuster IP_SOLID versehen. Der 3D-Effekt wird durch das Flag FL3DBAK in ob_flags bewirkt.

      Diese Effekte wirken also nur auf Systemen, die die AES-4-Objekt-Flags kennen...
    2. Alle Strings G_STRING, die disabled sind und nur das Zeichen '-' enthalten, werden in das Userdef-Arrows umgewandelt. Bei mindestens 16 Farben wird die Linie in der Farbe LBLACK mit der Stärke 1, andernfalls in der Farbe BLACK mit Stärke 3 gezeichnet.
    3. Alle Arrow-Userdefs, die disabled sind und in den AUSERBLK-Strukturen die Default-Werte des Userdef-Arrows in Menüs enthalten, werden bei mindestens 16 Farben umgesetzt auf Linienfarbe LBLACK und Stärke 1.
  • Das Userdef-Arrows verhält sich nun beim Status DISABLED etwas anders. Wenn die Stärke 3 verwendet wird, wird das Userdef wie bisher gezeichnet (die Zeichenroutine bearbeitet nur den Status SELECTED). Falls jedoch die Stärke 1 verwendet wird, wird zusätzlich der Status DISABLED durch die Zeichen-Routine bearbeitet. Damit sieht das Userdef als Trennlinie bei Menüs besser aus... ;-)

    Hinweis: Der Status SELECTED bzw. DISABLED hat jedoch keine Auswirkung auf das Aussehen des Userdefs!
03.09.2000 ACSGEM.LIB, PCGEM.LIB
  • Das VDI-Binding wurde überarbeitet. Die auf dem Stack angelegten Übergabe-Arrays sind nun etwas größer dimensioniert — evtl. waren sie einfach zu klein, so daß es beim Aufruf "krachte".
03.09.2000 ACS.PAS, ACS.PPU
  • Bei der Pure-Pascal-Unit wurde kein Environment an ACSpro übergeben. Damit lieferte die Funktion Ash_getenv natürlich nur "Käse" ;-) Dies ist jetzt korrigiert, so daß nun alle Environment-Variablen unter Pure-Pascal zur Verfügung stehen...
29.07.2000 ACS.LIB
  • Die Überprüfungen des Speichers beim Anfordern und freigeben per Ax_malloc, Ax_free bzw. Ax_ifree wurden komplett überarbeitet. Wenn das Flag AB_NOMEMCHECK gesetzt ist, findet jetzt keinerlei Prüfung mehr statt. Das Beschreiben des Speichers vor dem von Ax_malloc gelieferten Blockes mit einer ACSpro-eigenen Kennung ist nun zusammen mit der zugehörigen Überprüfung der Kennung in Ax_free bzw. Ax_ifree auch weggefallen — bei mir hat dies nicht korrekt funktioniert, nach mehreren Crashes von MagiC habe ich es herausgeworfen, denn MagiC macht intern genau so etwas auch... ;-)

    Wenn diese Art der Speicher-Überprüfung denoch benötigt wird, dann werde ich eben wieder so eine nette Sache einbauen... ;-)
  • Die Funktion nkc_gconv wurde in nkc_gem2n, die Funktion nkc_tconv in nkc_tos2n umbenannt. Damit alte Sourcen nicht angefaßt werden müssen, werden über Makros die alten in die neuen Namen übersetzt.
  • ACSpro verwendet nun nicht mehr direkt die NKCC-Routinen, sondern die von Christian Felsch überarbeitete Version aus der CF-Lib.

    Da dort die Funktionen nkc_n2gem, nkc_gem2n, nkc_cmp und nkc_kstate nicht enthalten sind, wurden diese in C entsprechend nachprogrammiert.
  • Neu dazu gekommen sind die Funktionen nkc_gemks2n, nkc_n2gemks und nkc_n2kstate.
12.07.2000 ACS.LIB
  • Die Modul-Schnittstelle wurde nun komplett überarbeitet. In Zukunft sollten also abwärtskompatible Erweiterungen wesentlich leichter zu realisieren sein.

    Da es bestimmt einige Module gibt, die nicht mehr weitergepflegt werden, habe ich mich entschlossen, hier zu tricksen und etwas mehr Aufwand zu treiben: wird eine alte Modul-Schnittstelle erkannt (also von ACSpro 2.3x bzw. 2.3.x), so werden die Daten vor dem Weiterreichen an die Anwendung konvertiert. Damit können auch Module von ACSpro 2.3x/2.3.x geladen werden und scheinen zu funktionieren — jedenfalls soweit ich sie habe und testen kann...

    Da das nicht jeder benötigt, gibt es nun drei Bibliotheken, von denen genau eine zusätzlich zur Bibliothek ACS.LIB in Projekte eingebunden werden muß:
    ACSMODNO.LIB Die Funktion Ash_module existiert nur als Dummy-Funktion. Module werden nicht geladen, eine Schnittstelle wird nicht zur Verfügung gestellt. Durch Verwendung dieser Bibliothek werden nun von der Anwendung nicht benötigte Routinen vom Linker nicht mehr eingebunden, die andernfalls nur wegen der Modul-Schnittstelle denoch hinzugelinkt würden..
    ACSMOD01.LIB Die Modul-Schnittstelle Version 1 (neue Versionierung der Schnittstelle unabhängig von der ACSpro-Version) wird zur Verfügung gestellt. Die Funktion Ash_module lädt nur die neuen Module nach, die mit dieser Schnittstellen-Version erstellt wurden.
    ACSMOD.LIB Die Modul-Schnittstelle steht in abwärtskompatibler Form zur Verfügung. Es werden auch die Module der ACSpro-Versionen 2.30, 2.31, 2.32, 2.3.3 und 2.3.4 geladen und gestartet. In der Schnittstelle stehen für die Erweiterungen der Strukturen Awindows und AUSERBLK entsprechende Konvertierungsroutinen bereit, die völlig unbemerkt für die Kompatibilität sorgen.
09.07.2000 ACS.LIB
  • Die Modul-Schnittstelle ist nun in eine eigenständige Bibliothek ausgelagert worden. Die neue Bibliothek ACSMOD01.LIB muß zusätzlich zur Bibliothek ACS.LIB in Projekte eingebunden werden.

    Für Anwendungen, die keine Modulschnittstelle benötigen, existiert die Bibliothek ACSMODNO.LIB, die eine leere Schnittstelle enthält. Damit bindet der Linker auch nur die wirklich benötigten ACSpro-Funktionen ein.

    Dank an Rainer Mannigel für diese Anregung!
08.07.2000 ACS.LIB
  • Anwendungen, die mit ACSpro entwickelt werden, brauchen nun nicht mehr die Line-A-Bibliothek von Pure-C — außer wenn der Entwickler selbst irgendetwas davon benötigt, wovon allerdings dringendst abgeraten wird. ACSpro verwendet hier nur die sog. "Initialisierung" ($A000) zur Ermittelung der Line-A-Variablen. Diese werden nun über eine eigene "Mini-Funktion" beschafft.

    Benötigt werden die Line-A-Variablen nur in Abp_start und Abp_end. Diese beiden Routinen sollten sowie so nur verwendet werden, wenn alle anderen Stricke reißen... (siehe auch die Dokumentation der beiden Funktionen ;-)
06.07.2000 ACS.LIB
  • Interne Aufräumarbeiten in Af_select und Af_first_fsel...
02.07.2000 GUI-Editor
  • Der GUI-Editor verwendet nun den Startup-Code von Stefan Kuhr @ OS. Vielen Dank, Stefan! Bisher wurde der Startup-Code von Behne&Behne verwendet.

    Beide Startup-Codes sind an PowerMacs unter MagiCMac angepaßt und liegen ACSpro bei. Die Original-Archive der Startup-Codes sind u.a. in der Maus LL im Gruppenprogrammteil Maus.Computer.Atari.Programmieren zu finden.

    Hier ein kleiner Vergleich (unvollständig und natürlich subjektiv!) der beiden Startup-Codes:

    Der Startup-Code von Stefan Kuhr unterstützt:
    • Quoting (Komandozeilenparameter mit Leerzeichen)
    • ARGV (Komandozeilenparameter mit mehr als 125 Zeichen werden im Environment übergeben)
    • erweitertes ARGV (Übergabe von leeren Parametern)
    • Workaround für PATH
    • Shared Text (Programm mehrfach starten, dessen Text-Segment aber nur einmal im Speicher liegt)
    • keine FPU-Initialisierung

    Der Startup-Code von Behne&Behne unterstützt:
    • Quoting (Komandozeilenparameter mit Leerzeichen)
    • ARGV (Komandozeilenparameter mit mehr als 125 Zeichen werden im Environment übergeben)
    • keine FPU-Initialisierung
26.06.2000 ACS.LIB
  • Die Funktion Ax_memCheck prüft, ob ein Speicherbereich les- und/oder beschreibbar ist. Da bei den diversen Protokollen diese Funktion verwendet wird, sollten ACSpro und alle mittels ACSpro entwickelten Anwendungen nicht mehr abstürzen, wenn der Kommunikationspartner bei eingeschaltetem Speicherschutz den "Transfer-Speicher" nicht global alloziert hat.

    Dank an Thomas Binder für die geniale Routine im MausNet in der Gruppe Maus.Computer.Atari.Programmieren!
26.06.2000 ACSGEM.LIB, PCGEM.LIB
  • Fehler bei appl_search korrigiert, die Rückgabewerte wurden nicht ordentlich gesetzt. Damit klappte die Kommunikation per XAcc-Protokoll etc. nicht mehr... ;-/
  • Die PDLG-Routinen von WDialog wurden nun ebenfalls implementiert.
25.06.2000 ACSGEM.LIB, PCGEM.LIB
  • In die Bibliothek wurden die LBOX-Funktionen für WDialog aufgenommen.
23.06.2000 ACS.LIB
  • Neue Funktionen, die für den Umgang mit NVDI nützlich sind, wurden implementiert. Es handelt sich um Ash_NVDICookie, Ash_CallEdDI, Ash_NVDIVersion und Ash_NVDIDatum.
23.06.2000 ACSGEM.LIB, PCGEM.LIB
  • Die Bibliothek wurde noch etwas überarbeitet. Die EdDI-Funktionen v_opnbm, v_clsbm und vq_scrninfo wurden in die Bibliothek aufgenommen.
  • In die Bibliothek wurden die FNTS-Funktionen für WDialog aufgenommen.
  • In die Bibliothek wurden die FSLX-Funktionen für WDialog aufgenommen.
22.06.2000 ACS.LIB
  • Der Fenster-Editor erlaubt nun auch das Setzen des Fenster-Elementes HOTCLOSEBOX, das in MagiC ab Version 1.0 und in KAOS 1.4.2 (außerdem ab PC-GEM 2) vorhanden ist. Damit wird das Schließen des Fensters bereits beim Anklicken der Schließbox und nicht erst beim Loslassen ausgelöst.
18.06.2000 ACS.LIB, GUI-Editor
  • Ash_getcookie verwendet nun Ssystem zum Lesen der Cookies — falls die Funktion verfügbar ist.
  • Der Editor des Cycle-Button hatte einen kleinen Bug, der nun behoben ist. Wenn als "Cycle-Zeichen" ein Zeichen größer 127 gewählt wurde, wurde der Parameter-Wert des Userdef falsch gesetzt - d.h. das Vorzeichen des char wurde auf den long übertragen... ;-)
13.06.2000 PCTOS.LIB
  • In der Bibliothek PCTOS.LIB hatte sich für Mshrink ein Fehler eingeschlichen, der Parameter zero war nicht vorhanden. Auswirkungen hatte dies natürlich bei allen Anwendungen, die diese Bibliothek verwenden, u.a. im GUI-Editor beim Laden von Modulen.
02.06.2000 GUI-Editor
  • Der GUI-Editor hat für Pure-Pascal die Texte des Hauptmoduls nicht exportiert (Der Bug war eigentlich immer schon so drin, das hat noch nie richtig funktioniert... ;-/). Damit stürzten Programme ab, wenn per Ash_error oder Awi_alert eine Meldung ausgegeben werden sollte, ohne daß alert_name gesetzt war.
19.05.2000 Bibliothek ACS.LIB
  • Die Konstanten-Definitionen der MiNTLib für Cookies wurden in ACSpro übernommen. Damit stehen die sprechenderen "Namen" der Cookies auch unter GNU-C und Pure-Pascal zur Verfügung.
  • Kleineren Bug behoben: Die Funktion Awi_ontop() lieferte nach der Nachricht WM_ONTOP fälschlicherweise das Root-Fenster zurück... ;-/
18.05.2000 Bibliothek ACS.LIB, GUI-Editor
  • Die Versionsnummern wurden nun umbenannt. Aus V3.00 ist V3.0.0 geworden. Damit kann ich auch nun auch mehr als 9 BugFixes durchführen... ;-)
11.05.2000 Bibliothek ACS.LIB
  • Die unterstützten GEMScript-Kommandos wurden um die Kommandos 'KeyPress' und 'GetAllCommands' erweitert. Hier wird ein Tastendruck simuliert bzw. eine alphabetisch sortierte Liste aller unterstützten GEMScript-Kommandos ausgegeben.

    Genaueres ist in der Dokumentation der GEMScript-Funktionen Aev_GEMScript und Awi_gemscript zu finden.
11.05.2000 Bibliothek ACSTOS.LIB, PCTOS.LIB
  • Weitere Fehlerkorrekturen in der TOS-Bibliothek
  • Die Bibliothek ACSTOS.LIB gibt es nun auch als kompatiblen Ersatz der Pure-C Bibliothek. Die neue Bibliothek PCTOS.LIB sollte zur bisherigen Pure-C Bibliothek kompatibel sein, aber alle mir bekannten BIOS-, XBIOS- und GEMDOS-Funktionen enthalten.
  • Die ACSTOS.LIB gibt es ferner als kompatible Bibliothek, die zu 100% kompatibel zur von CAT verwendeten Bibliothek ist — eine kleinere "Spielerei", diese Variante, ich gebe es zu... ;-)
04.04.2000 Bibliothek ACS.LIB
  • Die Routine Awi_doform warf Bömbchen, wenn das Erzeugen des Fensters nicht funktioniert hat und auf A_dialog ausgewichen werden mußte.
12.03.2000 GUI-Editor
  • Im allgemeinen USERDEF-Editor (also Klick mit Ctrl auf "Objekt-Editor) gab es einen Absturz, wenn die Strings für BubbleGEM und das Context-Popup nicht leer waren.
12.03.2000 Bibliothek ACS.LIB
  • In Ast_ltrim — und damit auch in Ast_alltrim — war noch ein Bug, der das Ende des korrigierten Strings falsch setzte.
05.03.2000 Bibliothek ACS.LIB
  • Die Funktion Awi_obchange funktionierte bei einem Wechsel des Objekt-Status von DISABLED auf ENABLED nicht richtig. Das Objekt war zwar enabled, wurde aber z.T disabled gezeichnet. Meine Untersuchungen haben ein etwas merkwürdiges Verhalten von objc_change ergeben. Das Problem wurde durch einen Workaround umschifft.
13.02.2000 Bibliothek ACS.LIB
  • Im Dialog "Allgemein" des Module-Fensters funktionierte die Einstellung "Kopiere Bildteil" nicht richtig. Wenn die Option umgestellt wurde, wurde stets das Gegenteil durchgeführt. Wenn die Option in der Default-Einstellung belassen wurde, klappte alles wie es sollte. Dies ist nun korrigiert! Die Einstellungen in diesem Dialog sollten daher nochmals kontrolliert werden.
31.01.2000 GUI-Editor
  • Bei Hauptmodulen wurde für Pure-Pascal in der Komponente acc_reg ein Char zuviel ausgegeben. Dies ist nun korrigiert!
25.01.2000 Bibliothek ACS.LIB
  • Die Funktion Af_readdir — und damit auch Af_first und Af_next — funktionierte nicht korrekt, wenn Dxreaddir und Dreaddir (MagiC bzw. MiNT) nicht vorhanden sind und intern Fsfirst/Fsnext verwendet wurde. Die Dateinamen wurden mit "*.*" aufgebläht:
    Laufwerk:\ORDNER1\...\*.*\DATEI.XYZ

    Das Problem ist nun behoben!
05.01.2000 Bibliothek ACSTOS.LIB, PCGEM.LIB, ACSGEM.LIB
  • Diverse Optimierungen in den Bibliotheken für BIOS, XBIOS, GEMDOS, VDI & AES.
23.12.1999 Bibliothek ACS.LIB
  • Das Backdropping wird nun in der Version 3.0.0 noch nicht über einen Zeiger in der Struktur Awindow aufgerufen, sondern noch automatisch und nicht beeinflußbar. Dies wird sich nach der Version 3.0.0 allerdings ändern (steht schon auf der ToDo-Liste).
16.12.1999 GUI-Editor
  • Die Objekt-Editoren (3D-Button-Dialog, Checkbox-/Radiobutton-Dialog, etc.) rufen nun die ST-Guide-Hilfe ebenfalls über die neue Schnittstelle auf.
  • Der Objektbaum-Editor hat nun ebenso wie der Popup-Editor und der Menü-Editor eine Hilfe-Seite erhalten.
14.12.1999 GUI-Editor
  • Der Fenster-Editor ist nun komplett mit BubbleGEM-Informationen ausgerüstet worden.
10.12.1999 Neue Bibliotheken ACSGEM.LIB und PCGEM.LIB
  • ACSpro ist nun auch um eine eigene GEM-Bibliothek ergänzt worden. Diese deckt zunächst alle VDI- und AES-Funktionen bis zum TT-TOS ab. Weitere werden allerdings noch "nachgerüstet". Diese Bibliothek ersetzt die Pure-C-Bibliothek PCGEMLIB.LIB vollständig und sollte völlig kompatibel (aber bei wind_get/wind_set sauberer ;-) sein.

    Diese Bibliothek gibt es demnächst auch in einer für ACSpro optimierten und multithreading-festen Form.
  • Damit wird es auch demnächst (also dann, wenn ich einmal dazu komme ;-)) zwei Versionen der ACS-Bibliothek geben. Die eine baut wie bisher auf der Pure-C-Bibliothek PCGEMLIB.LIB (bzw. wahlweise auf der Ersatzbibliothek PCGEM.LIB) auf, die andere ist für die Bibliothek ACSGEM.LIB optimiert, enthält also zum Teil wesentlich weniger Overhead.
08.09.1999 Bibliothek ACS.LIB
  • Bei mehr als 256 Farben sollte zumindest kein Pixelmüll kommen. Bei Checkboxen oder Radiobuttons wird allerdings die Schwarz-Weiß-Darstellung verwendet — ein kleiner Kompromis, bis ich eine vernünftige Lösung gefunden habe ...
30.08.1999 GUI-Editor
  • Der GUI-Editor fügt nun selbsttätig zwei führende Leerzeichen beim Accessory-Menüeintrag ein, damit dieser im Menü richtig positioniert wird. Bei der Anzeige werden diese führenden Leerzeichen wieder entfernt. Man muß also nicht mehr selbst darauf aufpassen, daß dieser Menüeintrag richtig dargestellt wird.
19.08.1999 Bibliothek ACS.LIB
  • Die Konfigurationsdatei für den GUI-Editor wurde erweitert, die Seriennummer und der Schlüssel sind nun auf 10 Zeichen erweitert worden. Ebenso ist der (Fenster-)Dialog entsprechend erweitert worden.
08.08.1999 Bibliothek ACS.LIB
  • Die ACSpro-eigenen Checkbox- und Radio-Button-Userdefs waren im Zustand disabled noch nicht an die Checkbox- und Radio-Button-Objekte von MagiC 6 angepaßt. Die Darstellung wurde korrigiert und weiter angeglichen. Ferner wird nun im Zustand disabled auch der Beschriftungstext hell gezeichnet, wie es bei MagiC 6 der Fall ist. Die Checkbox kann nun nicht mehr für ein Tri-State-Objekt verwendet werden, dafür ist die völlige MagiC-Anpassung erreicht.

    Bei mehr als 256 Farben sowie bei proportionalen Systemzeichensätzen gibt es jedoch leider immer noch Probleme mit den Chechbox- und Radio-Buttons.
01.08.1999 Bibliothek ACS.LIB
  • Das GEMScript-Protokoll wurde nun passiv in der ersten Stufe implementiert. Damit funktioniert nun die Fernsteuerung von ACS-Applikationen! Die Aufnahmefähigkeit sowie die aktive Ansteuerung anderer Applikationen ist noch nicht implementiert, beides wird jedoch noch "nachgerüstet".

    Bislang werden nur ein paar Standard-GS-Kommandos unterstützt, die Liste wird aber noch wachsen.

    Die Standard-Funktion für allgemeine GEMScript-Kommandos heißt Aev_GEMScript, für GEMScript-Kommandos mit Bezug auf Fenster wird die in Awindow.gemscript eingetragene Funktion aufgerufen — Default-Funktion ist hier Awi_gemscript.
24.07.1999 Bibliothek ACS.LIB, GUI-Editor
  • Für jedes Fenster kann nun der Hilfe-Titel für die ST-Guide-Hilfe direkt im GUI-Editor eingetragen werden. Dem Fenster wird durch die Nachricht AS_ASK_STGUIDE Gelegenheit gegeben, das Hilfethema zu verändern.

    Falls noch nichts selekiert wurde, so selektiert zum Beispiel das Editor-Fenster das Wort unter dem Cursor. Als Hilfe-Thema wird der selektierten Bereich verwendet.
22.07.1999 Bibliothek ACS.LIB, GUI-Editor
  • Völlig analog zur BubbleGEM-Hilfe kann nun bereits im GUI-Editor für jedes ACSpro-Userdef, das eine Service-Routine besitzt, das Kontext-Menü angegeben werden.
  • Alle Daten, die das Hauptmodul betreffen, sind nun ein einem neuen Fensterdialog zusammengefaßt. Der bisherige Verhalten-Dialog wurde damit wesentlich übersichtlicher gestaltet.

    In diesen neuen Fensterdialog gelangt man, indem man das neue Icon HAUPTMODUL links neben dem bisherigen Icon VERHALTEN auswählt.
  • Der Verhalten-Dialog wurde zusammen mit seinem Icon in "Eigenschaft" umbenannt und ist nun für die Eigenschaften wie z.B. die Programmiersprache jeder ACSpro-Datei zuständig, während die Daten des Hauptmoduls getrennt davon im Hauptmodul-Dialog zusammengefaßt sind.
  • Neu ist die Struktur Aconfig. In ihr werden vom GUI-Editor wichtige Konfigurationsdaten des Hauptmoduls exportiert und in der globalen Variable ACSconfig dem Compiler bzw. Linker zur Verfügung gestellt. Dies sind z.B. die verschiedenen Funktionszeiger, die von ACSpro in die Struktur Ablk, auf die ACSblk verweist, eingetragen werden.
  • Die wichtigen Funktionszeiger in der Struktur Ablk können nun bereits im GUI-Editor belegt werden.
  • Ferner kann nun auch die Funktion ACSinit einen anderen Namen tragen. Der Default-Name ist ACSinit, ein abweichender Name kann im Hauptmodul-Dialog vorgegeben werden.
22.07.1999 Bibliothek ACS.LIB
  • Analog zur BubbleGEM-Hilfe wurde ein Kontext-Menü realisiert. ACSpro unterscheidet zwischen langen und kurzen Klicks mit der rechten Maustaste. Bei kurzen Klicks erscheint die BubbleGEM-Hilfe, bei langen Klicks das Kontext-Menü. Das Kontext-Menü kann vom Userdef und vom Fenster kontrolliert werden.
  • Die Strategie zur Behandlung von Klicks mit der rechten Maustaste ist nun wie folgt:
    1. Falls nach einer Zeit von im Moment festen 250 msec. die rechte Maustaste noch gedrückt ist, handelt es sich um einen langen Klick, andernfalls um einen kurzen Klick.
    2. Bei einem kurzen Klick wird die BubbleGEM-Hilfe aufgerufen, andernfalls das Kontext-Menü.
    3. Falls keine BubbleGEM-Hilfe verfügbar war, wird das Kontext-Menü verwendet.
    4. Falls kein Kontext-Menü verfügbar war, wird nach der Wartezeit zur Ermittlung eines langen Klicks (s.o.) die BubbleGEM-Hilfe angezeigt.
  • Es wurden zwei neue Funktionen implementiert, Aob_state und Aob_flags. Sie dienen zur einfachen Manipulation der Komponenten ob_state bzw. ob_flags der Struktur OBJECT in einem Objektbaum (Workobjekt oder Toolbar) eines Fensters.
20.07.1999 GUI-Editor
  • Die Texte für BubbleGEM können nun für jedes ACS-Userdef, das eine Service-Routine besitzt, komfortabel bereits im GUI-Editor angegeben werden. Als besonderes Feature können die BubbleGEM-Strings am Beispiel-Objekt in der linken oberen Ecke direkt beim Editieren ausprobiert werden, es wird sofort der eingegebene Text verwendet.
27.06.1999 Bibliotheken ACS.LIB & ACSPLUS.LIB, GUI-Editor
  • Die Struktur Awindow wurde erweitert:
    1. Es sind zwei Funktionszeiger hinzugekommen, die für Iconify benötigt werden. Die Default-Routinen sind Awi_iconify und Awi_uniconify.
    2. Für die ST-Guide-Unterstützung sind ferner zwei neue Strings vorhanden. Hier kann das Hilfe-Thema für dieses Fenster sowie ggf. der Dateiname des Hypertextes angegeben werden.
    3. Zur Unterstützung des GEMScript-Protokolles ist ein Funktionszeiger definiert, der auf die GEMScript-Routine des Fensters zeigt. Default-Funktion ist hier Awi_gemscript. Im Moment macht diese Routine noch nichts, aber das ändert sich bald... ;-)
  • Die Struktur AUSERBLK der Userdefs wurde um folgende Komponenten erweitert:
    1. Ein neuer String enthält den ggf. zu verwendenden Text für eine BubbleGEM-Hilfe.
    2. Ein weiterer String steht für ein kontextsensitives Popup zur Verfügung.
  • Ebenso hat die Struktur AUSER_DEF ebenfalls zwei neue Zeiger bekommen, einen für die BubbleGEM-Hilfe, einen für das Kontext-Popup. Damit müssen alle vorhandenen Editoren an diese Änderung angepaßt werden - sorry!
27.06.1999 GUI-Editor
  • Das Dateiformat ist nun umgestellt worden. Der GUI-Editor liest weiterhin alle alten Formate und konvertiert sie in das neue Format, allerdings werden diese nach der Umwandlung als verändert gekennzeichnet. Daraufhin wird beim Beenden des GUI-Editor gefragt, ob die ACSpro-Datei gesichert werden soll.

    Alle ACSpro-Dateien im alten Format müssen aufgrund der neuen Komponenten in den Strukturen Awindow und AUSERBLK umgestellt werden. Andernfalls drohen Abstürze (zwei oder drei Bömbchen) unter anderem bei der ST-Guide-Hilfe, Iconify und GEMScript.
17.06.1999 Bibliothek ACSPLUS.LIB & GUI-Editor
  • Das Editor-Fenster und der GUI-Editor senden nun nach dem Speichern per Aev_OlgaUpdate eine entsprechende Message an den OLGA-Manager.

    Damit kann z.B. der GUI-Editor mit Hilfe des integrierten Editor-Fensters als OLGA-fähiger Texteditor eingesetzt werden - das habe ich natürlich gleich ausprobieren müssen... ;-)
17.06.1999 Bibliothek ACS.LIB
  • Das OLGA-Protokoll wird nun als OLGA-Server unterstützt. Das Nachstarten des OLGA-Managers sowie das An- und Abmelden am OLGA-Manager funktionieren vollautomatisch. Die Funktionen Aev_OlgaUpdate, Aev_OlgaRename und Aev_OlgaBreaklink stehen bereits zur Verfügung und arbeiten korrekt.

    Eine komfortablere Variante ist in Grundzügen bereits implementiert und wird gerade ausgebaut. Wesentliche Teile der OLGA-Client-Seite sind ebenfalls fertig, allerdings wird hier noch gefeilt... ;-)

    Die volle OLGA-Unterstützung auch als Client wird in der Version 3.0.0 noch nicht zur Verfügung stehen. Sie ist jedoch in Arbeit und steht auch weiterhin auf der ToDo-Liste.
30.05.1999 Bibliothek ACS.LIB
  • Das komplette PureC-Hilfe-Protokoll steht nun zur Verfügung.

    Allerdings habe ich bei den diversen Tests festgestellt, daß PC_HELP.ACC die Rückmeldung stets an die Applikation 0 meldet. In Multitasking-Systemen geht dies dann "daneben".

    Dies ist ein Bug in PC_HELP.ACC und kann von ACSpro nicht umgangen werden. Wenn der ST-Guide über dieses Protokoll angesteuert wird, funktioniert alles reibungslos!
  • Der ST-Guide von Holger Weets kann nicht nur über das PureC-Hilfe-Protokoll angesteuert werden, sondern versteht auch das AV-Protokoll. Die Funktion Aev_STGuideHelp stellt das komfortable Inferface für die Ansteuerung des ST-Guide dar.

    Der ST-Guide scheint nach der Nachricht VA_START die Antwort VA_STARTED an den AV-Server zu senden und nicht an die absendende Anwendung. Damit ist keine Möglichkeit gegeben, komfortable Rückmeldungen zu bekommen. Zum Glück klappt mit dem PureC-Hilfe-Protokoll alles bestens... ;-)

    Dies ist ein Bug im ST-Guide und kann von ACSpro nicht umgangen werden. Für beide Varianten, die Online-Hilfe anzusprechen, habe ich entsprechende Workarounds implementiert. ACSpro ist also auf dieses "besondere Verhalten" beider Hilfe-Accessories vorbereitet und sollte richtig darauf reagieren... ;-)
  • Die Strategie, um den AV-Server zu finden, wurde etwas geändert. Zuerst wird die Environment-Variable AVSERVER ausgewertet. Falls diese nicht existiert oder der dort angegebene AV-Server nicht gefunden werden kann, werden (in dieser Reihenfolge) jinnee, Gemini, AVServer und MagxDesk als AV-Server versucht.
18.05.1999 Bibliothek ACS.LIB
  • Neue Funktion Awi_ontop liefert das oberste Fenster. Dies wird auch behalten, wenn ACSpro-Anwendungen in den Hintergrund treten.
  • Wenn ACSpro in Multitasking-Systemen wieder nach vorne kam, wurde direkt ein Maus-Klick ausgelöst. Dies ist nun abgestellt!
08.05.1999 Bibliothek ACS.LIB
  • Iconify in allen Varianten wird nun direkt vom ACSpro-System erledigt. Die Realisierung über die Service-Routine ist somit hinfällig. Demnächst werden bei der sowieso anstehenden Änderung der Awindow-Struktur entsprechende Funktionszeiger für die Nachrichten WM_ICONIFY, WM_ALLICONIFY und WM_UNICONIFY aufgenommen werden.
04.05.1999 Bibliothek ACS.LIB
  • Die XAcc-Empfangsroutinen wurden komplett überarbeitet und diverse kleinere Bugs ausgebaut.
04.05.1999 Bibliothek ACS.LIB
  • Durch die Nachricht AS_ACC_ACK wird mitgeteilt, daß ein von ACSpro ausgelöster XAcc-Transfer abgeschlossen wurde. Zugleich wird der Status des Transfers mitgeteilt (Erfolg/Mißerfolg). Das Fenster kann dann geeignet darauf reagieren (etwa nach einiger Zeit einen neuen Transfer versuchen o.ä.).

    Die auslösenden Routinen werden demnächst (Allerdings noch nicht in Version 3.0.0) in ACSpro zur Verfügung stehen, so daß dann auch der "aktive Datentransfer" per XAcc-Protokoll direkt unterstützt wird.
02.05.1999 Bibliothek ACS.LIB
  • Beim Löschen einer linearen Liste gab es einen Crash. Die Routine stürzte ab, wenn ACSpro beendet wird und dabei Alu_delete aufgerufen wurde. Der Bug ist behoben.
  • Optimierung: Umstellen der ACS-internen Message-Verarbeitung auf Binärsuche. Damit ist die Erweiterungsfähigkeit für GEMScript, OLGA, BubbleGEM o.ä. (siehe ToDo-Liste) gegeben, da sich bei diesen vielen Nachrichten, auf die es zu reagieren gilt, die Vergleiche bis zur Identifikation der Nachricht drastisch reduzieren. Bei 61 Nachrichten (Stand 17.04.2001) wären es nach dem bis einschl. Version 2.3.x verwendeten Verfahren im Mittel 30 Vergleiche, jetzt sind es maximal nur 7 Vergleiche, bis die Nachricht einwandfrei identifiziert ist.

    Die Funktionen für die Drag&Drop-Protokolle werden allerdings noch komplett überarbeitet, damit ACSpro nicht nur den eher "passiven Empfang", sondern auch das "aktive Senden" in gewohntem Komfort beherrscht.
14.04.1999 Bibliothek ACS.LIB
  • Die Routine ACSinit0 wird nun vor der Initialisierung der XAcc-Daten und dem Anmelden bei den diversen Protokollen (XAcc, VA, etc.) aufgerufen.

Copyright © Martin Elsässer (E-Mailadressen)
Letzte Aktualisierung am 25. März 2008
Home History & ToDo-Liste ToDo-Liste Änderungen Version V2.3.3 auf V2.3.4