------------------------------------------------------------------------------
       TEXT ADVENTURE SYSTEM                                R1  
               0.98B3
        by Viktor-Technology                                [C] 1995 - 2000
------------------------------------------------------------------------------

--- Einleitung ---

Dieses System vereinfacht das Schreiben von Textadventures, indem es eine
eigens dafuer optimierte Programmiersprache bietet, mit der jeder, der
zumindestens einmal ein Batch-Skript (Shell-Skript) oder dgl. erstellt hat,
keine Probleme haben sollte, selber seine Adventures zu schreiben.
Diese Datei gibt Dir Informationen ueber die verfuegbaren Befehle und einen
Einblick in die Gestaltungsmoeglichkeiten des Systems.
Sollten trotzdem noch Fragen offen bleiben, so kannst Du mich unter der
E-Mail Adresse viktor@via.at erreichen. Deine fertigen Adventures koennen
auch an mich geschickt werden, die dann auf meiner Homepage veroeffentlicht
werden. link: http://www.viaweb.at/viktor

Viel Spass und Kreativitaet wuenscht Dir,
-Viktor-


--- Files ---

TXACOMP.ERR     Errorcodebeschreibung von txacomp
TXACOMP.EXE     Text Adventure Compiler
TXAEXEC.ERR     Errorcodebeschreibung von txaexec
TXAEXEC.EXE     Text Adventure Interpreter
DEMO1.TXA       erstes Demoadventure
DEMO1.TXT       Source
HELLO.TXA       hello world
HELLO.TXT       Source
README.TXT      diese Dokumentation

Dieses Programmpaket darf frei kopiert und vertrieben werden, solange keine
Aenderungen an den oben angefuehrten Dateien gemacht werden und alle Dateien
gemeinsam (in einem Archiv) verteilt werden.
Falls das Archiv im Internet zum Download angeboten wird, muss ein Link zu
http://www.viaweb.at/viktor auf die Originalseite hinweisen.
Jegliche kommerzielle Nutzung ist nur mit Einwilligung des Autors moeglich.
Die Benutzung der Porgramme erfolgt auf eigenes Risiko.


--- 1. Aufbau ---

Die Adventures (ADV) werden in einem ASCII Editor, der den MS-DOS Zeichensatz
untersttzen mu, geschrieben. Ich empfehle WordPad, das in der Lage ist,
Text-Dateien im MS-DOS Format abzuspeichern. Gross/Kleinschreibung wird bei
den Befehlen nicht beruecksichtigt. Weiters koennen in Textausgaben nicht
alle Zeichen des Zeichensatzes verwendet werden (deutsche Umlaute und
scharfes S sind aber moeglich).
Jedes ADV beginnt mit folgender Headerzeile:
[TXTADV "Spielname" PART 1 OF 1]
wobei Spielname frei waehlbar ist

Das restliche Programm besteht im wesentlichen aus Sektionen fuer
* Einstellungen (Farben, etc.), bezeichnet als [INIT]

* die einzelnen Raeume [ROOM Raumname]
  jede "Lokalitaet" entspricht in diesem System einem Raum

* Befehle, die im Zusammenhang mit dem Inventar des Spielers stehen
  bezeichnet als [INVENTORY]

im weiteren werden fuer jede Sektion die verfuegbaren Befehle erlaeutert:

--- 2. [INIT] ---

Dieser Teil wird beim Starten des ADVs als erstes durchgearbeitet und
beinhaltet Variablen, globale Texte und verschiedene Einstellungen.
Da das System sequentiell arbeitet, steht die Sektion [INIT] am Bestem am
Anfang der Datei.
  
TITLE = " *** hier steht der Titel meines Adventures *** "
initialisiert die Titelleiste (immer sichtbar am oberen Bildschirmrand)

Leerzeilen zwischen geschriebenen Zeilen werden mit der Hintergrundfarbe aus-
gefuellt. Soll eine Zeile zwischen Titel und Eingabefenster frei bleiben,
muessen zwei Newlines (CR) an den String angehaengt werden:

TITLE="Spiel 1"
      ""  / REM das ist ein Newline (Leerzeile)
      " " / REM Leerzeichen, damit Zeile mit Hintergrundfarbe ausgefuellt wird

Eine neue Zeile beginnt man, indem man in der naechsten Zeile nach dem
eigentlichen Befehl (in diesem Fall TITLE) mit Anfuehrungszeichen den Text,
der spaeter in der naechsten Zeile erschienen soll, schreibt.


START = [ROOM Raumname]
gibt den Raum an, mit dem das ADV beginnen soll


ITEXT = " *** was nun ? "
initialisiert den Eingabeaufforderungsstring (INPUT).
jede Zeile, in der der Spieler seine Befehlseingabe machen kann, beginnt mit
dieser Meldung


INTEXT = "*** eine Zahl bitte: "
initialisiert die Eingabeaufforderung fuer eine Zahl (INPUT ...)


CTEXT = "*** bitte waehle aus der Liste einen Eintrag aus"
initialisiert die Eingabeaufforderung fuer den Befehl CHOOSE.


IMSG?? = "*** individuelle Meldung ***"
veraendert eine interne Meldung. ?? steht fuer:
 1 interne Hilfe
 2 interner Befehl fuer Bildschirm loeschen
 3 interner Befehl fuer Beenden
 4 interner Befehl fuer Rauminformation anzeigen
 5 interner Befehl fuer Spielstand speichern
 6 interner Befehl fuer Spielstand laden
 7 Aufforderung zur Bestaetigung (Sind Sie sicher (J/N) ?)
 8 Meldung - Spielstand gesichert
 9 Meldung - Spielstand geladen
10 Aufforderung ueberschreibung bestaetigen (ueberschreiben (J/N) ?)
11 Meldung - INVENTORY:
12 Meldung - Du hast nichts bei Dir !
13 Meldung - nichts
14 Meldung - Ungueltige Zahl !
15 Zeichen fuer Ja ("J")
16 Zeichen fuer Nein ("N")
17 interner Befehl fuer Spiel nocheinmal starten
18 Meldung - Taste druecken (wenn "" wird Meldung unterdrueckt)
19 interne Hilfe bei choose


VAR varname = zahl | (TRUE | FALSE)
initialisiert eine Variable. Diese kann entweder numerisch (speichert eine
Zahl) oder eine boolesche Variable (speichert nur Ja/Nein) sein.

Variablen werden verwendet, um bestimmte Sachverhalte im Spielverlauf darzu-
stellen. Beispielsweise wird fuer jeden Gegenstand eine boolesche Variable
(entweder true oder false) initialisiert, die speichert, ob der Spieler
diesen Gegenstand besitzt oder nicht. Ob eine Tuer im Spiel geoeffnet oder
geschlossen ist, wird ebenfalls ueber solche Variablen gespeichert.
Variablen koennen mit dem Befehl IF auf ihren Inhalt abgefragt werden.


textname = "*** ich bin ein globaler Text, der in allen Raeumen bekannt ist"
Hauptbestandteil eines Adventures ist der Text, der am Bildschirm ausgegeben,
werden soll.
in der Sektion [INIT] werden Textvariablen initialisiert, die in allen Raeumen
ausgegeben werden koennen.
Beispiel:
janein = "Bitte waehle Ja oder Nein!"
So ein Text kann oefters im Adventure gebraucht werden, und kann daher in
einer globalen Textvariable abgespeichert werden.


--- 3. Farbeinstellungen ---

Die Farben koennen in jeder beliebigen Sektion veraendert werden, doch gelten
die Aenderungen erst ab der naechsten Textausgabe.
(Ausnahme: Titelleiste, Statusleiste)

Gueltige Vordergrund- und Hintergrundfarben:
BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHT-
BLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW und WHITE

TITLECOLOR = farbe
TITLEBACKGROUND = farbe
definiert die Vordergrund- und Hintergrundfarbe der Titelleiste

TEXTCOLOR = farbe
TEXTBACKGROUND = farbe
definiert die Vordergrund- und Hintergrundfarbe des auszugebenden Textes

INPUTCOLOR = farbe
INPUTBACKGROUND = farbe
definiert die Vordergrund- und Hintergrundfarbe von Zeilen, in denen
der Spieler eine Eingabe machen kann.

SCREENCOLOR = farbe
SCREENBACKGROUND = farbe
definiert die Vordergrund- und Hintergrundfarbe des restlichen Bildschirms


--- 4. [ROOM Raumname] ---

Diese Sektionen beinhalten alle Befehle, die in Zusammenhang mit einer
bestimmten "Lokalitaet" im Spiel stehen.
Hinweis: Bei der 16bit Version dieses Systems (TxA16), sind fuer die Raumnamen
nur Zahlen zwischen 1 und 65535 gueltig (Bsp.: [ROOM1] oder [ROOM 1]).

RINFO = "*** Du bist in einem Zimmer mit einem schwarzen Plakat an der Wand."
initialisiert einen Informationstext ueber den aktuellen Raum.


textname = "*** hier steht ein Text, der anschliessend"
           "mit PRINT ausgegeben wird"
           "dieser Text kann ueber mehrere Bildschirmseiten gehen ***"
Initialisiert eine Textvariable, die nur lokal (in der aktuellen Raumsektion)
verwendet werden kann.
Hauptsaechlich werden solche Textvariablen fuer mehrzeilige Ausgaben
verwendet.


PRINT Variablenbezeichnung
PRINTNL Variablenbezeichnung
PRINTDNL Variablenbezeichnung
PRINTINP Variablenbezeichnung
oder auch PRINT "*** dieser Text wird sofort ausgegeben"

gibt einen Text oder den Inhalt einer Variable aus.
PRINTNL laesst vor der Ausgabe ein Zeile frei,
PRINTDNL laesst _auch_ nach der Ausgabe eine Zeile frei und
PRINTINP gibt vor der Ausgabe zwei und nachher eine Leerzeile aus.


PRINT[NL|DNL|INP] RINFO
gibt die Rauminformation aus (siehe Befehl RINFO oben).
NL,DNL,INP Endungen wie bei PRINT


PRINT[NL|DNL|INP] INVENTORY
gibt Inventory-Liste aus.
NL,DNL,INP Endungen wie bei PRINT


NL
gibt eine Leerzeile aus.


CLS
loescht den Bildschirm. (greets to MS-DOS)


WAIT "*** bitte Taste druecken ***"
WAIT Textvariable
wartet auf eine beliebige Taste.


Variblenname = Wert bzw. "*** Text ***"
Der Wert kann z.B. TRUE oder FALSE bei booleschen Variablen sein.


Variablenname = RANDOM ( n )
weist einer Variable einen zufaelligen Wert im Bereich von 0 bis n (1 bis
32767) zu.


Variablenname += Zahl
Variablenname -= Zahl
erhoeht (erniedrigt) eine Variable um den Wert.


IF [NOT] Variablename = TRUE oder FALSE THEN
vergleicht die Variable auf den Wert TRUE oder FALSE. NOT ist optional.

IF [NOT] Variablename = Zahl THEN
vergleicht die Variable mit der Zahl. Statt = (gleich) kann auch auf
< (kleiner) oder > (groesser) abgefragt werden.

ELSE
wenn die Bedingung der IF-Anweisung falsch ist, werden die Anweisung nach ELSE
bis END IF ausgefuehrt.

END IF
jeder IF Befehl muss mit einem END IF enden, um erkennbar zu machen welche
Befehlssequenz zur IF Anweisung gehoehrt.
Es ist besonders auf die korrekte Schachtelung der IF, ELSE und END IF-
Anweisungen zu achten.
Kein END IF wird benoetigt, falls nach THEN in der selben Zeile ein Befehl an-
gegeben wird. Bsp.: IF ende=true THEN GO [ROOM 1]


CHOOSE [RANDOM]
  {Befehle, die vor der Abfrage ausgefuehrt werden. Hier darf kein zweites
   choose stehen!}
* Textvariable1
  {Befehle, die ausgefuehrt werden, falls der Spieler Textvariable1
   gewaehlt hat}
  ...
* Textvariable2
  {Befehle, die ausgefuehrt werden, falls der Spieler Textvariable2
   gewaehlt hat}
  ...
...
END CHOOSE

Zeigt dem Spieler eine Liste mit Optionen an und laesst ihn zwischen den
mit * angegebenen Textvariablen waehlen. Es koennen maximal 16 Auswahl-
moeglichkeiten angegeben werden, die falls die Option RANDOM angegeben ist, in
zufaelliger Reihenfolge ausgegeben werden.


--- INPUT ---

INPUT ["*** optionale Eingabeaufforderung"] [Variablename]
laesst dem Spieler ein Kommando eingeben. Danach wird bei der entsprechenden
Zeile die Ausfuehrung fortgesetzt.
Nach dem INPUT-Befehl kann entweder eine Zahlenvariable oder eine Text-
variable stehen. Der vom Spieler eingebene Wert (Zahl oder Text) wird
in die angegebene Variable gespeichert. In diesem Fall gibt es keine
Analyse auf Kommandouebereinstimmung und die Ausfuehrung setzt mit dem
naechsten Befehl nach INPUT fort.

Der INPUT Befehl ist also der zentrale Befehl der die Interaktion zum Spieler
herstellt. Die Kommandos, die vom Spieler eingegeben werden koennen, bestehen
prinzipiell aus zwei Teilen: dem Kommando selbst (z.B.: nehmen) und dem
Objekt (z.B.: Schluessel).
Die Abfrage des eingegeben Kommandos erfolgt ueber Klammerung des Kommandos
und anschliessender Befehlssequenz, die nur dann ausgefuehrt wird, falls
der Spieler dieses Kommando eingegeben hat.
Die Abfrage der Objekte erfolgt ueber das Objekt mit Doppelpunkt dahinter.
Beispiel:
    (nimm)
    PRINTINP "Was soll ich denn nehmen, es wurde kein Objekt angegeben."
        Schluessel:
            PRINTINP "Okay."
            schluessel=true
        OTHERWISE:
            PRINTINP "Das kann ich nicht nehmen."

    (OTHERWISE)
    PRINTINP "Ich kenne diesen Befehl nicht!"
        OTHERWISE:
            PRINTINP "Auch diesen Befehl kenne ich nicht!"


(Kommando)
definiert ein Kommando

Objekt:
stimmt die Eingabe des Spielers nicht komplett mit dem uebergeordneten
Kommandotext ueberein, wird bei seinen Objekten weitergesucht.
Werden lokale Textvariablen veraendert, werden diese beim Ruecksprung zu
INPUT (Befehl RESUME) wiederhergestellt.

Hat ein Kommando/Objekt den Namen OTHERWISE, wird dieses ausgefuehrt, falls
keine Zeile mit der Eingabe uebereinstimmt.
!!! OTHERWISE sollte man immer in beiden Kommandoteilen einsetzen !!!
Dadurch werden Eingabefehler erfolgreich abgefangen. (siehe Beispiel)

Es ist auch moeglich bestimmte Woerter (z.B.: der,die,das,...) als unwichtig
zu markieren. Diese Woerter werden bei der Eingabe ignoriert. Schachtelungen
sind auch moeglich.
Beispiel:
(UNTERSUCHE{DEN}{486{DX4}}COMPUTER)
reagiert auf folgende Eingaben: untersuche den 486 dx4 computer,
untersuche 486 dx4 computer, untersuche den computer,
untersuche den 486 computer, untersuche 486 computer, untersuche computer


Mit dem Zeichen '|', kann entweder der linke ODER der rechte markierte Text-
teil in der Eingabe verwendet werden. '{' und '}' gelten in diesem Fall als
Markierung.
Beispiel:
(UNTERSUCHE{DEN}{COMPUTER}|{RECHNER})
reagiert auf folgende Eingabe: untersuche den computer, untersuche computer,
untersuche den rechner, untersuche rechner


RESUME
wiederholt INPUT (muss nicht unbedingt explizit angegeben werden)


GO [TO] [ROOM Raumname]
setzt die Ausfuehrung bei dem angegebenen Raum fort. TO ist optional.


GO (OTHERWISE)
setzt die Ausfuehrung beim Input-Kommando '(OTHERWISE)' fort.
Nur innerhalb von anderen Input-Befehlssequenzen verwendbar!


GO OTHERWISE
setzt die Ausfuehrung beim Input-Objekt 'OTHERWISE:' fort.
Nur innerhalb von anderen Input-Befehlssequenzen verwendbar!


CONTINUE [WITH] [PART?]
setzt die Ausfuehrung bei dem angegebenem Teil fort.
Die erste Zeile eines Adventures gibt an, um welchen Teil es sich handelt
und wieviele insgesamt existieren. Zwischen den einzelnen Parts gibt es
keine Moeglichkeit Informationen auszutauschen, d.h. diese muessen
unabhaengig voneinander sein.


RESTART
startet das Adventure neu.


QUIT
beendet das ADV.


REM
leitet ein Kommentar ein (gilt nur fue eine Zeile), d.h. diese Zeile wird
von TXACOMP ignoriert.


--- 5. [INVENTORY] ---

In dieser Sektion stehen moegliche Kommandos und deren Objekte (vgl. INPUT),
die waehrend des gesamten Adventures verwendet werden koennen. Speziell
ist die Handhabung der Kommandos im Zusammenhang mit dem Inventar sinnvoll,
da z.B. der Befehl untersuche Schluessel in allen Raeumen, die gleiche
Meldung liefern soll.
Bei einer Kommandoeingabe wird dann in dieser Sektion gesucht, falls in der
jeweiligen Raumsektion keine Uebereinstimmung gefunden wurde.
GO [ROOM Raumname]-Befehle sind hier nicht ausfuehrbar.

Am Anfang dieser Sektion werden mit dem Befehl ITEM Gegenstaende im Spiel mit
Variablen verknuepft. Laesst sich der Spieler sein Inventar ausgeben, werden
diese Gegenstandsbezeichnung (bei Besitz) ausgegeben.

ITEM Varibalename = "*** Schluessel ***"
weist einer bestimmten booleschen Variable einen Namen zu. Hat diese den Wert
TRUE, dann wird der Name beim Inventar ausgegeben.



--- 6. TXACOMP ---

Dieses Programm kodiert die Adventuredatei (ASCII-Text) und erzeugt eine Datei
mit der Dateiendung .TXA
Nachher laesst sich mit TXAEXEC das ADV starten.
Einige Fehler koennen mit diesem Programm nicht erkannt werden (z.B.: falsche
IF-Schachtelung, falsche INPUT-Kommando-Schachtelung, Fehlen eines Raumes, ...).
Solche Fehler werden dann erst unmittelbar bei der Ausfuehrung sichtbar!


--- 7. TXAEXEC ---

Dieses Programm startet ein zuvor mit TXACOMP bearbeitetes ADV.
Bei der Eingabe wird zwischen Gross- und Kleinschreibung nicht unterschieden.
Treten physikalische Fehler (Lesefehler,...) auf, wird das ADV sofort beendet.
Bei allen anderen Fehlern gibt es folgende Moeglichkeiten:
Leave Object: wenn der Fehler in einem Input-Teil auftritt, kann durch diese
Option das Objekt verlassen werden (entspricht RESUME).
Ignore Error: ignoriert den Fehler (nicht empfehlenswert!)
Resume: probiert den fehlerhaften Befehl noch einmal.
Exit: beendet das ADV.

Interne Befehle (DEFAULT):
sind nur waehrend der Kommandoeingabe verfuegbar und koennen mit IMSG??
veraendert werden. Bei Leerstring ("") ist der Befehl deaktiviert.

?
listet alle internen Befehle auf.

CLS
loescht den Bildschirm.

INFO
zeigt aktuelle Rauminformation und Inventory-Liste an.

SAVE
speichert den aktuellen Spielstand. Der Name der Datei lautet genauso wie die
TxA-Datei, jedoch mit der Erweiterung SA?. Es koennen max. 10 Spielstaende zu
einem Adventure gespeichert werden. Zu jedem Spielstand kann zusaetzlich eine
Beschreibung mitgespeichert werden.
Existiert die Datei schon, wird gefragt, ob diese Datei ueberschrieben werden
soll. Tritt ein Fehler auf, wird die Programmausfuehrung fortgesetzt.

LOAD
laedt einen zuvor gesicherten Spielstand. Achtung: Diese Option ueberschreibt
interne Variablen - Tritt ein Fehler auf, wird das Programm meistens beendet!

QUIT
beendet das Programm.

--- 8. History ---

- 1995 -
     Vorgabe von ca. 20 Befehlen, rein auswahlgesteuertes Konzept (CHOOSE)
0.3  erste TXACOMP Version (mit beinahe allen 20 Befehlen)
0.5  oder 0.6 erste sinnvoll lauffaehige Versionen
0.7  Grosse Erweiterung auf Kommandozeilenbefehle (INPUT, INVENTORY, ...)
     Implementierung des Parsers
0.8  Einbeziehung von ITEMs
0.9  Hinzufuegung von Farben, ITEMLISTs, GO OTHERWISE-Befehle, PRINTINP,
     mehrere Befehl in einer Zeile durch das Trennzeichen "/",
- 1996 -
0.91 (keine offizielle Version) bis zu 10 Spielstaenden speicherbar
0.92 (keine offizielle Version) Implementierung von RESSOURCES vorbereitet
- 1997 -
0.93 (Versionsnummer ausgelassen)
0.94 (keine offizielle Version) Erweiterung auf Multipart Adventures, dadurch
     sind bis zu 11-fach groessere Adventures moeglich
0.95 (keine offizielle Version) Globale und lokale Texte muessen nicht mehr
     text??? bzw. gtext??? heissen, sondern koennen beliebig gewaehlt werden.
0.96 (keine off. Version) Konvertierung des ganzen Projektes in C++ als
     Windows Console Application (VC++5).
     Abstimmung zw. Win95 und WinNT (verhalten sich in einigen Punkten extrem
     unterschiedlich, Win95 hat teilw. Bugs)
     Unter Win95 txaexec32 um vieles langsamer als MS-DOS Version!
     Vorteile von TxA32:
     o Unterstuetzung von langen Dateinamen
     o Interner Lesepuffer von 2x4kb auf 2x8kb vergroessert
     o ganzer Hauptspeicher steht zur Verfuegung
     o die letzten 20 eingegebenen Kommandos werden gespeichert
- 1998 -
0.95/0.96 Build 2 (keine off. Version)
     o Ausstiegsmoeglichkeit bei CHOOSE-Abfragen durch Druecken von ESC
     o Automatische More-Funktion bei der Anzeige von Texten, die laenger als
       eine Seite sind (IMSG18 neu)
     o Bug in compare behoben (Indexueberschreitung)
     o Farbfehler in printc/str ausgebessert (SCRC vs SYSC)
  Build 3 (27.1):
     o alle 16 Farben als Hintergrundfarben nutzbar
     o Meldung fuer Tastendruck bei der More-Funktion, wird nach Druecken der
       Taste vom Bildschirm entfernt
     o Aenderung der Interpretation des TITLE-Strings, siehe Befehl TITLE
     o Bei CHOOSE wird die gewaehlte Option in Klammern angezeigt
  Build 4 (22.2): betrifft txacomp32, txaexec32 u. txaexec
     o Implementierung der Destruktoren der 32 Bit Versionen
     o Optimierung des GO TO Befehls, absolute Adressierung
       optimierte TXA-Datei sowohl mit txaexec32 als auch mit txaexec
       ausfuehrbar
     o Fehlende Raeume werden ab nun schon bei der Kompilierung erkannt(txa32)
     o (23.2) Bugs ausgebessert in error/list, testtxa
0.97 Build 1 (30.5.1998) keine offizielle Version:
     o dynamische Statuszeile in TxA32 implementiert
       in TxA16 werden Anweisungen ignoriert
     o txaio auf Version 2.0 erweitert, damit Statuszeile angezeigt werden
       kann (statusheight, scrollup, lasttattr)
     o einheitliche Versionsnummern fr TxA16 und TxA32: 0.97
     o Unterscheidung zw. Null-String und Zero-String ("") in TxA32/16
       -> weniger Abstuerze
     o Bug in cmd_var ausgebessert (var a=zahl)
     o txaexec32: Bug in opentxa ausgebessert (eingabe+=)
- 1999 -
  Bulid 2 (27.1.1999): betrifft txacomp32
     o ROOM-Objekte koennen ab nun frei benannt werden (max. 50 Zeichen)
       Abwaertskompatiblitaet nur dann gegeben, wenn die Raeume konstant mit
       demselben Zahlenformat angesprochen werden
       (Bsp.: [ROOM01] / ... / GO [ROOM01] und nicht [ROOM1] !)
     o verbesserte Fehlerausgabe bei der GO Optimierung:
       die nicht gefundenen Raeume werden namentlich aufgezaehlt
     o optgo prueft auch, ob der bei start angegebene Raum definiert wurde
  Build 3 (31.1.1999):
     o IF ... THEN ... ueberarbeitet
       IF ... THEN END IF nicht mehr moeglich
       IF ... THEN IF ... THEN PRINT "Test" wird richtig kodiert (2x END IF)
       bei IF ... THEN IF ... THEN (naechster Befehl in einer neuen Zeile)
       muessen die beiden abschliessenden END IFs explizit angegeben werden
     o ELSE Zweige implementiert
       Bsp.:
       IF 1 THEN
         ...
       ELSE
         ...
       END IF
     o Bug in Win98/95?: Cursor-Tasten liefern beim zweiten Aufruf von
       getch nicht mehr den Scancode!
0.98 Build 1 (21/22.12.1999) keine offizielle Version:
     o CHOOSE Befehl redesigned
       CHOOSE
       * text1
         ...
       * text2
         ...
       END CHOOSE
       es koennen sowohl lokale als auch globale Textvariablen eingesetzt
       werden, jedoch insgesamt maximal 16 statt bisher 9
       intern wird dieser neue CHOOSE Befehl in if select THEN ELSE
       Abfolgen umgewandelt
     o CHOOSE Eingabe verbessert
       die Auswahl erfolgt ab nun durch die Cursor-Tasten und Bestaetigung
       mit Enter
       es steht nun auch beim Choose Befehl eine Interne Hilfe zur Verfuegung
       man kann nun von der Chooseeingabe aus, das ADV neu starten (Taste R)
     o More-Funktion bei CHOOSE und INPUT verbessert
       bisher wurde, falls die Inputzeile die letzte war, eine Aufforderung
       zum Tastendruck angezeigt
     o Ausstiegsmoeglichkeit beim Laden und Speichern mit Escape
     o Bug in der Funktion code ausgebessert (Initialisierung von i)
     o Aussehen von TxA und TxA32 vereinheitlicht
       fast gleiche Texte, TxA32-Prog. verwendet nicht mehr die Endung 32
  Build 2 (31.12.1999):
     o mit INPUT koennen jetzt auch Strings eingelesen werden
     o Globale Strings koennen jetzt auch ausserhalb des INIT-Objektes ver-
       aendert werden
  (5.1.2000) txacomp:
     o Bugs in cmd_zuw und procline (end if) ausgebessert
  Build 3 (1-3.9.2000)
     o CHOOSE mit der Option RANDOM ergaenzt
       bei Angabe von RANDOM werden die Auswahlmoeglichkeiten in einer
       zufaelligen Reihenfolge ausgegeben
     o saemtliche internen Meldungen und Befehle koennen ab nun ueberall
       initialisiert und geaendert werden
     o Bug in cmd_choose (txacomp Parse-Fehler bei *) ausgebessert
     o Bug in txacomp16 ausgebessert, check_else_if war nicht initialisiert
     o Bug ausgebessert: lokale Textbezeichnungen (txacomp) wurden bei neuen
       Raeumen nicht geloescht
     o Bug ausgebessert: beim Anlegen einer Textbezeichnung wurde nicht
       ueberprueft, ob eine Variable gleichen Namens schon existiert



--- 9. Credits ---

Autor: Viktor Krammer
E-Mail: viktor@via.at
(C) 2000  by Viktor-Technology
aktuelle Version: V0.98B3 (TxA32)
es existiert auch eine 32-bit console Version
