==> Version 1.20 05.04.2020; Mia Jaap (mj@jaapan.de)
* neuer Befehl
   lower$: Kleinschreibung des Strings
   upper$: Groschreibung des Strings
   round: Zahl runden (5.6 => 6)
==> Version 1.11 19.12.2001; Mia Jaap (mj@jaapan.de)
* neuer Befehl
   mirror$: dreht einen String um
==> Version 1.10 13.08.2001; Mia Jaap (mj@jaapan.de)
* neue Aliase:
	home: entspricht CLS (wird in AppleSoft Basic verwendet)
	locate: entspricht gotoxy
	position: entspricht gotoxy (aus Atari XL-Basic)
	dimension: entspricht dim (aus Fortran)
	': entspricht rem
==> Version 1.08 13.08.2001; Mia Jaap (mj@jaapan.de)
* neue Befehle:
	celsius(x): rechnet Fahrenheit in Celsius um
	fahrenheit(x): rechnet Celsius in Fahrenheit um
	ceil(x): entspricht der C-Funktion und rundet auf - aus ceil(4.4) wird
				z.B. 5.
	floor(x): floor rundet ab - aus floor(4.4) wird 4.
==> Version 1.07; Jan Starzynski (p67@hp1.uni-rostock.de)
* im VT-52 Emulator fehlt nur noch das Setzen von Farben (ESC b & c)
* CHR$ 0 erzeugt eine String, der ein Null-Zeichen enthlt, auerdem
  eine 4 Byte lange Kennung hierfr. (bedingt durch C, wo die Null als
  Ende-Symbol einer Zeichenkette steht). Der Ausdruck LEN CHR$ 0
  liefert folglich 5.
* erweiterte Funktionen:
	- bak=GEMDOS(x)
    + Dateifunktionen
        . FOPEN name$[,opt$], schliee bereits geffnete Datei,
                ffne neue Datei, opt$ darf folgende Optionen
                beinhalten:
                b Binrmodus, alle ausgegebenen Zeichen werden
                 unverndert bernommen (z.B. keine lf->cr/lf Wandlung)
                n schaffe neue Datei: eine bereits bestehende Datei
                  wird zuerst gelscht
        . FCLOSE, Datei schlieen
        . FINPUT "prompt";what... ,Lies aus geffneter Datei bzw.
                 wenn keine geffnet von der Tastatur
                 ( wenn aus Datei gelesen wird, wird der Prompt unterdrckt)
        . FPRINT what, schreibe ans Ende der geffneten Datei bzw.
                 Bildschirm
        . FSEL$ [ext$], bringt eine Dateiselektbox auf den Schirm und gibt die
                 eingegebene Datei als String zurck. Wenn Abbruch gedrckt
                 wurde, ist das ein leerer String. ext$ wird als
                 Dateimaske verwendet (z.B. *.BAS), Standard ist '*.*'
        . ERRNO, sollte nach FPRINT oder FINPUT gelesen werden.
          Enthlt 0, wenn alles in Ordnung gegangen ist, sonst einen Wert<>0
          Nach jedem lesen wird ERRNO wieder automatisch auf 0 gesetzt.
        . Die Dateifunktionen sind nicht besonders schnell, sondern
          besonders sicher gehalten. Sie sollen vor allem dem bequemen
          Austausch von Daten dienen und nicht umfangreichen
          Dateimanipulationen.
    + Spezielle Befehle, um auf Schnittstellen zugreifen zu knnen
      Erlaubte Gerte sind dabei
        . "PRN", Drucker
        . "AUX", serielle Standard-Schnittstelle
        . "CON", die Konsole
        . "MIDI", Midiport
        . "IKBD", Tastaturprozessor
        . "RCON", Konsole ohne Emulation
        . "MOD1", Modem 1
        . "MOD2", Modem 2
        . "SER1", Seriell 1
        . "SER2", Seriell 2
        . nicht alle Gerte sind fr alle Rechner oder alle Zwecke
          sinvoll, da liegt die Verantwortung beim Programmierer
          * a=INBYTE dev$, liest ein Byte von einer Schnittstelle
            Der Wertebereich der Rckgabewerte liegt zwischen 0 und 255.
            Ist der Rckgabewerte <0, war kein Zeichen verfgbar
          * a=OUTBYTE dev$,byte, bergibt ein Byte. Ist der Rckgabewert>=0
            konnte das Zeichen ausgegeben werden.

---------------------------------------------------------------------
==> Version 1.04; nderungen von Torsten Dix, Stand: 20.08.1993
* erweiterte Funktionen:
	+ FILES "x:\path\*.*"
		Dateien und Directory anzeigen
	+ MKDIR "x:\path" 
		Erzeuge Directory
	+ CHDIR "x:\path"
		Wechsle Directory und/oder Laufwerk
	+ RMDIR "x:\path"
		Loesche Directory
	+ a$=PATH$
		Liefert aktuelles Laufwerk und Path
	+ a$=TIME$
		Liefert Zeit und Datum als ASCII-String
	+ t=TIMER
		Liefert Zeit seit Einschalten/Reset in 1/200sec
* Lokaler Path wird verwaltet 

==> Version 1.04; nderungen von Oliver Teuber, Stand: 20.08.1993
* erweiterte Funktionen:
	+ bak=ALERT(1,"[1][Hallo][OK]")
		Anzeigen einer form_alert-Box.
	. bak=GEMDOS(x)
		Gemdos-Call ohne Parameter ...
* Bugfix: Es gab einen Fehler beim Laden von Quelltexten.
  (setvbuf auch bei "NULL"-Filepointer!)

---------------------------------------------------------------------
==> Version 1.03; nderungen von Jan Starzynski, Stand: 11.8.1993
* jede Menge Optimierungen
  Ergebnis: mehr Funktion bei gleicher Lnge
* Bugfix: Es gab einen harten Fehler beim Anlegen von Feldern.
  (ein double-Werte wurde mit 8 Byte angesetzt, hat in PURE-C aber 16?!)
* Es gibt jetzt vier verschiedene CPX
    + BASIC000.CPX, die Variante, die berall laufen sollte
    + BASICA00.CPX, nutzt statt eines eigenen den Systemzeichensatz,
                    mu dazu aber LINEA-INIT nutzen. Knnte bei den
                    Nicht-Standard-Auflsungen (z.B. mit
                    Grafikkarten) Probleme geben (probieren).
    + BASIC030.CPX, luft nur auf Systemem mit (mind.)
                    68020-Prozessor und 68881-FPU.
    + BASICA30.CPX, wie 030, nutzt aber auch den Systemzeichensatz
                    (wie A00)
    + wozu das ganze Kuddelmuddel? Nun ja. Wer einen TT oder Falcon
      hat, wird sich freuen, ber 10 KByte in der Lnge zu sparen und
      auerdem ein schnelleres Programm zu haben. Den
      Systemzeichensatz habe ich implementiert, um
        a. Platz zu sparen
        b. im Basic die gleichen Ausgaben zu erhalten wie in
           anderen Programmen
* Zeitverhalten verbessert (Umschalten von Basic zu GEM nach 50 msec statt
 100 msec und 20 msec Zeit fr GEM statt 50 msec)
 Das macht die Ausgaben etwas flieender und die Arbeit mit dem Hauptprogramm
 auch. Wenn ntig, holt sich GEM die Zeit, die es braucht, von allein.
* verschiedene Zahlenbasen erlaubt fr Eingabe
    + $Zahl, Hexadezimalzahl (Ziffern: 0-9,a-f,A-F)
    + &Zahl, Oktalzahl       (Ziffern: 0-7)
    + %Zahl, Binrzahl       (Ziffern: 0-1)
    +  Zahl, Dezimalzahl     (Ziffern: 0-9)
* Break durch CTRL-C
* Abbruch einer Eingabe durch CTRL-C
* Anhalten/Fortsetzen der Bildschirmausgabe mit CTRL-S/CTRL-Q
* alle Tastenkombinationen mit CTRL werden abgefangen und teilweise als
  Funktionstasten fr die wichtigsten BASIC-Befehle benutzt
    + B GOSUB
    + C BREAK, mit SHIFT: CONTINUE
    + D DATA
    + E RUN, mit SHIFT: RUN FSEL$ '*.BAS'
    + F FOR, mit SHIFT: FOPEN FSEL$ '*.TXT'
    + G GOTO
    + I IF
    + L LIST
    + M MERGE, mit SHIFT: MERGE FSEL$ '*.BAS'
    + N NEXT
    + O LOAD, mit SHIFT: LOAD FSEL$ '*.BAS'
    + Q BYE
    + R RETURN
    + S SAVE, mit SHIFT: SAVE FSEL$ '*.BAS'
    + T THEN
* INPUT kann durch '#' abgekrzt werden (wie PRINT durch '?')
* alle BASIC-Schlsselwrter knnen durch einen '.' abgekrzt werden
  z.B. 'PRINT x' durch 'pr. x'. Es wird dabei aber nicht berprft,
  ob die Abkrzung mehrere Bedeutungen hat, sondern die erste gefundene
  genommen. Nach dem Punkt knnen noch weitere Buchstaben folgen,
  z.B.: 'u.' fr 'USING' und 'u.$' fr 'USING$'.
* Wird ein Buchstabe mir der linken Maustaste angeklickt oder ein
  Bereich mit gedrckter linker Maustaste berfahren, werden die
  Buchstaben in die Eingabe bernommen.
  Doppelklick erzeugt zustzlich ein Return.
* Bei INPUT knnen die Variablen wie bei PRINT durch ',' oder ';'
  oder auch nur durch Leerzeichen voneinander getrennt werden.
  Auerdem knnen fr alle Variablen einzelne Promptstrings angegeben
  werden.
* (kleine) Hilfe ber HELP-Taste
* der VT-52 Emulator kann jetzt auch REV_ON und REV_OFF (esc-p und esc-q)
	+	Enter reverse video mode
	+	Exit reverse video mode
* Sichern der Quelltexte bei SAVE mit Endung '.BAS' (statt '.TEXT')
* Wenn das BOOTINIT-Flag des CPX gesetzt ist, werden das beim Booten aktuelle
  Laufwerk und der Pfad bei jeder Dateioperation als Standardwerte gesetzt.
  Dadurch gammeln die .BAS-Dateien nicht berall auf der Platte rum.
  Ist BOOTINIT nicht gesetzt, wird als Standard 'C:\' genutzt. Falls es dieses
  Laufwerk nicht gibt: 'A:\'.
* erweiterte Funktionen:
    + SQU x == SQR x
    + RCP x fr 1/x
    + alle trigonometrischen Funktionen und ihre inversen
        . SIN x,COS x,TAN x
        . ASIN x,ACOS x,ATAN x == ARCTAN x
    + alle Hyperbelfunktionen und ihre inversen
        . SINH x,COSH x,TANH x
        . ASINH x,ACOSH x,ATANH x
    + erweiterte logarithmische Funktionen
        . LN x == LOG x fr den natrlichen Logarithmus log_{e}
        . LG x fr log_{10}
        . LD x fr log_{2}
    + erweiterte Exponentiationsfunktionen
        . EXP x, Standard e^x
        . TEN x, 10^x
        . TWO x, 2^x
    + Konvertierungen zwischen Zahlenbasen
        . HEX$ x, Zahlausgabe als hexadizmaler String
        . OCT$ x, Zahlausgabe als oktaler String
        . BIN$ x, Zahlausgabe als binrer String
    + FACT x, Fakulttsfunktion
    + RAND, Zufallszahlen zwischen 0 und 1, werden mit Hilfe der
            XBIOS-Funktion Random() erzeugt.
        . RAND x, Zufallszahlen im Bereich 0 bis x-1
    + Dateifunktionen
        . FOPEN name$, schliee bereits geffnete Datei, ffne neue Datei
        . FCLOSE, Datei schlieen
        . FINPUT "prompt";what... ,Lies aus geffneter Datei bzw.
                 wenn keine geffnet von der Tastatur
                 ( wenn aus Datei gelesen wird, wird der Prompt unterdrckt)
        . FPRINT what, schreibe ans Ende der geffneten Datei bzw.
                 Bildschirm
        . FSEL$ ext$, bringt eine Dateiselektbox auf den Schirm und gibt die
                 eingegebene Datei als String zurck. Wenn Abbruch gedrckt
                 wurde, ist das ein leerer String. ext$ wird als
                 Dateimaske verwendet (z.B. *.BAS)
        . ERRNO, sollte nach FPRINT oder FINPUT gelesen werden.
          Enthlt 0, wenn alles in Ordnung gegangen ist, sonst einen Wert<>0
          Nach jedem lesen wird ERRNO wieder automatisch auf 0 gesetzt.
        . Die Dateifunktionen sind nicht besonders schnell, sondern
          besonders sicher gehalten. Sie sollen vor allem dem bequemen
          Austausch von Daten dienen und nicht umfangreichen
          Dateimanipulationen.
    + Winkelsysteme, Standard ist RAD
        . DEGREE, alle Winkel werden als Altgrad betrachtet
                 (Vollkreis hat 360 Grad)
        . GRAD,  Neugrad (Vollkreis hat 400 Grad)
        . RAD,   Radiant (Vollkreis hat 2*Pi)
    + Umrechnen von Dezimalgrad in Grad,Min,Sec und umgekehrt
        . DMS$ x, umrechnen in einen String GG:MM:SS,rest
        . DEG x$, Umrechen eines Strings der obigen Form in Dezimalgrad
    + CLS, Lschen des Bildschirmes und Setzen des Cursor in die linke
           obere Ecke
    + CLEAR lscht alle Variablen, Schleifen und setzt die Datas zurck
            (nicht in Unterprogrammen einsetzen!)
    + PEEK und POKE liefern laufen im Supervisor-Modus, die Interrupts
          werden ausgeschaltet
        . auerdem gibt es jetzt auch PEEKW, PEEKL, POKEW, POKEL
          um words (2 Byte) und longs (4 Byte) auf einmal lesen
          und setzen zu knnen
    + INKEY$, liefert einen leeren String (""), wenn keine Taste 
             gedrckt wurde, sonst die zuletzt gedrckte Taste
             Ausserdem bewirkt ein Aufruf dieser 'Funktion' mit Zwang
             ein Umschalten zu GEM, kann also genutzt werden, etwas
             mehr Rechenzeit freizugeben.
    + USING,USING$ przisieren der Ausgabegenauigkeit, -breite und
                   -ausrichtung
        . wird eine Breite<0 angegeben, erfolgt die Ausgabe linksbndig,
          sonst rechtsbndig
        . USING, setzt die Zahl der ausgegebenen Nachkommastelle auf 10
        . USING x, setzt die Zahl der Nachkommastellen auf x
        . USING x,y, wie oben, es werden Leerzeichen ausgegeben, bis
            Breite y erreicht ist.
        . mit USING gesetzte Werte gelten fr alle folgenden Ausgaben
        . USING$ ist USING fr die Ausgabe von Strings: die Nachkommastellen
          sind hier die Anzahl der maximal auszugebenden Buchstaben
        . Die Angabe der Przision kann unterbleiben. Es mu dann nach USING
          gleich das Komma folgen.
        . WARNUNG: wird die Breite ungleich 0 oder 1 gesetzt, werden
          Escape-Sequenzen oft nicht mehr gehen, da mit Leerzeichen
          aufgefllt wird.
          Bsp.:  
                USING$ 0,4:PRINT chr$(27),'E'
          bewirkt die Ausgabe des Escape-Zeichens mit 3 Leerzeichen
          dahinter. Das 'E' wird dann als normaler Buchstabe 
          interpretiert.
          Mit 
                USING$:PRINT chr$(27),'E'
          funktioniert alles wie gedacht.
          Aber auch
                USING$ 0,4:PRINT chr$(27)+'E'
          funktioniert (+ statt , )!
    + LABEL line, kann zur Zuweisung einer Zeilennummer zu einer
            Variablen verwendet werden. Bei einem RENUM-Befehl wird
            die Zahl hinter LABEL richtig umgerechnet. Dadurch
            geht z.B.:
            LIST
            -->    1 h=LABEL 1:goto h
            RENUM
            LIST
            -->    10 h=LABEL 10:goto h
    + Grafikfunktionen, der Punkt (0,0) ist links unten, die
      x-Koordinaten laufen von 0 bis 255 und die y-Koordinaten
      von 0 bis 175
        . PLOT x,y setzt einen Punkt an der Stelle (x,y)
        . LINE x1,y1,x2,y2, zieht eine Linie von (x1,y1) zu (x2,y2)
        . CIRCLE x1,y1,r, zieht eine Kreis um (x1,y) mit Radius r
    + CONTINUE, mit STOP oder Ctrl-C abgebrochen Programme knnen
                mit diesem Befehl weitergefhrt werden.
                Ohne STOP oder Ctrl-C bewirkt CONTINUE gar nichts,
                kann also als Dummy-Anweisung benutzt werden.
    + TRON, schaltet den Trace-Modus ein: nach jeder abgearbeiteten
            Zeile wird diese gelistet und auf ein Return gewartet.
            Mit Ctrl-C kann unterbrochen und mit CONTINUE fortgesetzt
            werden. Das gibt die Mglichkeit, Variablen zu betrachten
            e.t.c.
            Hier gibt es einen Fehler: die erste abgearbeitete Programm-
            zeile wird zweimal angezeigt. 
    + TROFF, schaltet den Trace-Modus wieder aus.

---------------------------------------------------------------------
==> Version 0.01; nderungen von Oliver Teuber, Stand: 24.04.1993
* Erste CPX-BASIC-Version (just for fun), mit ein paar Fehlern :-)
* Es gibt zwei verschiedene CPX-Versionen
    + BASIC000.CPX, die Variante, die berall laufen sollte
    + BASIC030.CPX, luft nur auf Systemem mit (mind.)
                    68020-Prozessor und 68881-FPU.
* vt52-Terminal
	+	Cursor up
	+	Cursor down
	+	Cursor forward
	+	Cursor backward
	+	Clear screen
	+	Home cursor
	+	Reverse index
	-	Erase to end of page
	-	Clear to end of line
	-	Insert Line
	-	Delete Line
	+	Position cursor
	+	Set foreground color
	+	Set background color
	-	Erase beginning of display
	+	Enable cursor
	+	Disable cursor
	+	Save cursor position
	+	Restore cursor position
	-	Erase entire line
	-	Erase beginning of line
	-	Enter reverse video mode
	-	Exit reverse video mode
	-	Wrap at end of line
	-	Discard at end of line
* erweiterte Funktionen:
	+	GOTOXY x,y
			Cursor nach Spalte x und Zeile y
