Der neue BASIC-Interpreter von GfA

Jedem Besitzer eines ST-Rechners, der in BASIC programmiert, sind die vielen Mankos, die die mitgelieferte ST BASIC-Version von Digital Research hat, bekannt. Nicht nur, daß diese Version arithmetisch ungenau ist oder daß die gesamte Grafik extrem langsam abläuft, der Interpreter selbst ist auch noch ungewöhnlich groß. Auch ATARI hat inzwischen eingesehen, daß dieses BASIC für einen solchen Rechner nicht gerade das Geeignetste ist. Konsequenterweise beauftragten sie die Firma Metacomco mit der Herstellung eines besseren und leistungsfähigeren BASIC-Interpreters. Das Produkt von Metacomco hat zur Zeit noch keine Serienreife erlangt, und es ist aus diesem Grund noch kein genauer Liefertermin nennbar. Aber ein anderer BASIC-Interpreter für die ATARI ST Serie ist schon fertig und dann ab Juni im Handel erhältlich. Dieses GfA-BASIC - so lauter der Name des neuen Interpreters - ist ein ausgereiftes Produkt, das die Merkmale eines Rechnertyps wie des ST voll ausnutzt. Wir hatten die Gelegenheit, es zu testen und wurden angenehm überrascht, was man alles in nur 35 KByte packen kann. Unsere Erfahrungen und Eindrücke mit dem GfA-BASIC möchten wir jetzt schildern.

Befehlsliste des GfA BASIC

ABS     FRE POKE
ACOS    FULLW   POLYFILL
ADD     GOSUB   POLYLINE
ALERT   GOTO    POLYMARK
AND     GRAPHMODE   PRBOX
ARRPTR  HARDCOPY    PRINT oder ?
AS      HEXS    PROCEDURE
ASC     IF  QUIT
AS  IN  IMP RANDOM
AT      INC RBOX
ATN     INFOW   READ
BOX     INKEYS  RELSEEK
BI N$   INP REM oder '
CHAIN   INPUT   REPEAT
CHDIR   INPUTS  RESTORE
CHDRIVE INSTR   RETURN
CHRS    INT RIGHTS
CIRCLE  KILL    RMDIR
CLEAR   LEFTS   RND
CLEARW  LEN RSET
CLOSE   LET SAVE
CLOSEW  LINE    SEEK
CLS     LIST    SETCOLOR
COLOR   LLIST   SGN
COPY    LOAD    SIN
COS     LOC SPACES
CVD     LOCAL   SQR
CVF     LOF STEP
CVI     LOG STRS
CVL     LOG 10  STRINGS
CVS     LOOP    SUB
DATA    LPEEK   SUM
DATES   LPOKE   SWAP
DEC     LPRINT  SYSTEM
DEFFILL LSET    TAN
DEFLINE MAX TEXT
DEFMARK MID$    THEN
DEFTEXT MIN TIME
DFREE   MKDIR   TIMES
DIR     MKD$    TITLEW
DIRS    MKFS    TO
DIM     MKI$    TRUNC
DIV     MKLS    UNTIL
DO      MKSS    UPPERS
DOWNTO  MOUSE   VARTPTR
DPEEK   MOUSEX  WEND
DPOKE   MOUSEY  WHILE
DRAW    MOUSEK  XOR
ENDIF   MOD 
ELLIPSE MUL 
ELSE    NAME    
EOF     NEW 
EQV     NEXT    
ERASE   NOT 
EXIST   OCTS    
EXIT    OFFSET  
EXP     OR  
FIELD   OUT 
FILES   PBOX    
FILESELECT  PCIRCLE 
FILL        PEEK    
FOR     PELLIPSE    
FRAC    PI  PLOT  POINT 

Ob BASIC ein brauchbares Werkzeug zum Programmieren oder ein Abfallprodukt im Dschungel der Programmiersprachen ist, ist ein Disput, der wahrscheinlich kein Ende nehmen wird. Eines ist aber in jedem Falle sicher: die Anzahl von BASIC-Programmierern im Home- und Personalcomputerbereich wächst von Tag zu Tag. Kaum ein Hersteller von Personalcomputern kann es sich heutzutage leisten, diese Sprache beim Lieferumfang seines Rechners auszuschließen. Auch für den immer größer werdenden Kreis von ST Besitzern ist BASIC eine der beliebtesten und verbreitetsten Sprachen. Drei Interpreter - und in der näheren Zukunft mit dem Metacomco BASIC und dem Omikron BASIC fünf - und ein Compiler sind ein Beweis dafür.

Der GfA BASIC-Interpreter hat allerdings wegen seinen Leistungsmerkmalen eine Sonderstellung. Eine genaue Gegenüberstellung mit dem BASIC von Digital Research ist deswegen nur bedingt möglich.

Der Editor

Der Editor des GfA-BASIC ist anders aufgebaut als bei dem ST BASIC. Obwohl auch hier die Maus benutzt wird, fehlen die Pulldown-Menüs und die beim ST BASIC verwendete Fenstertechnik vollständig. Stattdessen werden am oberen Bildschirmrand in zwei Reihen die Befehle des Editors angezeigt. Diese sind auch durch Anklicken mit der Maus aufrufbar. LOAD, SAVE, MERGE, usw. lassen sich problemlos damit aufrufen. Ebenfalls mit der Maus kann die aktuelle Cursorposition bestimmt werden. Bei Benutzung eines monochromen Monitors ist es möglich, auf einen anderen Schriftmodus (Textmatrix 8 ★ 8) umzuschalten, womit dann 48 Zeilen darstellbar sind. Somit lassen sich Programme übersichtlich auflsiten und editieren.

GfA-BASIC arbeitet mit einem zweiten Bildschirm für die Ausgabe eines Programms. Dieser läßt sich im Editor durch Anklicken der Funktion FLIP erreichen. Nicht nur die Maus hilft bei der Editierung eines Programms, auch die Funktionstasten sind mit wichtigen Eigenschaften belegt. Programmstrukturen, wie zum Beispiel Schleifen, werden durch automatisches Einrücken kenntlich gemacht und beim Auflisten als solche dargestellt. Während des Editierens werden die Syntaxfehler erkannt und es wird darauf aufmerksam gemacht.

Der Editor des GfA BASIC benutzt keine Zeilennummern, so daß bei Sprüngen auf Labels verwiesen werden muß. Es wird nur ein Befehl pro Zeile akzeptiert. Dies bietet zur Strukturierung große Vorteile. Was leider fehlt, ist die Möglichkeit, im Direktmodus zu arbeiten. Dies stört am meisten, wenn man beim Testen eines Programmes bestimmte Variablenwerte abfragen will.

Eine riesige Menge an Datentypen

Eines der größten Mankos des Digital BASICs sind die Ungenauigkeiten bei arithmetischen Operationen und die beschränkte Anzahl von verschiedenen Datentypen. Das GfA BASIC füllt auch in diesem Zusammenhang eine Lücke. Alle Integerzahlen sind 32 Bit lang und für Fließkommazahlen werden volle 48 Bit verwendet. Die Genauigkeit beträgt 11 Stellen. Stringvariablen können bis zu 32767 Zeichen enthalten. Eine Besonderheit sind die Variablen des Typs BOOLE-AN, die Werte von 0 oder -1 annehmen dürfen. Die Felddimensionierung ist im Falle der eindimensionalen Felder nur durch den Speicherplatz beschränkt; im Falle der mehrdimensionalen Felder allerdings auf 65 536 Elemente.

Genauso ist die Manipulation von Datentypen durch die Implementierung von zahlreichen Befehlen kinderleicht geworden. Umtausch der Werte zweier Variablen, Löschung von Variablenwerten, Füllung von bestimmten Feldern mit einer Konstante, etc. sind alle durch einzelne Befehle ausführbar.

Zahlreiche Funktionen

Außer den normalen Grundrechenarten verfügt das GfA BASIC über eine große Anzahl von Funktionen, die diese Sprache enorm bereichern. Umwandlung in mehrere Zahlensysteme, 32 Bit Peek durch den LPEEK-Befehl, Ermittlung der Zeit der internen Uhr durch TIME sind nur ein paar Stellvertreter dieser Funktionen.

Strukturbefehle

Daß man in BASIC nicht strukturiert programmieren kann, stimmt nur bedingt. Besitzt man einen BASIC-Interpreter wie das GfA BASIC, ist die strukturierte Programmierung ein Genuß. Es sind verschiedene Struktur-Befehle vorhanden, die diesem Zweck dienen. Neben der bekannten FOR... NEXT-Schleife existieren beim GfA BASIC auch noch andere Schleifenstrukturen, die vor kurzem nur von PASCAL her bekannt waren. Dazu gehören z. B. DO...LOOP, REPEAT...-UNTIL, WHILE...WEND, etc.

Außer den bekannten Unterroutinenstrukturen gibt es beim GfA BSAIC auch echte Prozeduren, die mit Labelnamen versehen werden können. Natürlich kann man diesen Prozeduren Parameter übergeben. Die Marken oder Labeldefinitionen dürfen auch mit einer Ziffer beginnen.

  Zeit in Sek.  
Benchmark 1 0,12 FOR...NEXT Schleife (1000 mal)
Benchmark 2 0,37 Inkrementierung von K=0 bis K=1000
Benchmark 3 1,02 Alle Grundrechenarten (0 bis 1000)
Benchmark 4 1,01 Alle Grundrechenarten (A = K/2A3 + 4-5)
Benchmark 5 1,08 Wie Benchmark 4 mit GOSUB...RETURN
Benchmark 6 1,83 B 5 mit geschachtelter Schleife
Benchmark 7 2,89 B 6 mit Zuweisung eines Feldes (DIM)
Benchmark 8 2,99 Addition, Potenzierung, Logarithmus, Sinus von K

Verkehr mit der Außenwelt

Auch beim Datenaustausch zeigt das GfA BASIC seine Stärken. Nicht nur die Diskettenstationen oder der Drucker werden angesteuert. Ein Bestandteil der Ein-/Ausgabe-Schnittstelle des ATARI ST ist die MIDI-Schnitt-stelle. Diese wird auch mit einer normalen Peripherieeinheit über BASIC ansprechbar. Die Handhabung von relativen Dateien ist bei dieser BASIC-Version unwahrscheinlich trickreich. Der Filepointer wird über verschiedene Befehle, wahlweise in negativem oder positivem Sinn (zum Fileende), soundsoviele Bytes bewegt. Auch die Handhabung von Unterverzeichnissen der Directory (Ordner) ist über Befehle leicht zu bewältigen. Ein Ordner wird zum Beispiel mittels des CFLDIR zum aktuellen Inhaltsverzeichnis gemacht. Die Beschreibung aller Diskettenbefehle oder zur Benutzung von peripheren Geräten sprengen allerdings den Rahmen dieses Berichtes, so daß wir darauf nicht weiter eingehen wollen.

In Sachen Grafik

Daß die ST Rechner ein Grafikwunder sind und sich nicht hinter anderen Computern verstecken müssen, ist schon lange bewiesen. Zahlreiche Mal- und Zeichenprogramme sowie CAD-Applikationen sorgen für den guten Ruf, den der ST besitzt. Doch beim ST BASIC von Digital Research ist davon nicht viel zu merken. Nicht nur, daß die Flandhabung von Grafiken umständlich ist, sie ist auch unheimlich langsam. Das GfA BASIC dagegen triumphiert in diesem Bereich. Die Befehle sind nicht nur leicht zu gebrauchen, sondern die Erstellung einer Grafik wird auch prompt ausgeführt. Die Befehle reichen vom Setzen einzelner Punkte bis zu komplexen mehrseitigen Polygonen. Texte werden auch im Grafikmodus erzeugt, wobei Aussehen und Größe variabel sind. Fenster und Boxen, Elemente der schon bekannten GEM-Umgebung sind auch über BASIC-Befehle zu realisieren.

Zuletzt wurden die unvermeidlichen Benchmark-Tests durchgeführt. Die Werte wurden mittels der internen Uhr ermittelt, wie man leicht an dem Listing der Benchmarks sehen kann.

Mitgeliefert wird neben dem eigentlichen Programm noch ein deutschsprachiges Handbuch, in dem jeder Befehl detailliert erklärt wird. Dieses Handbuch lag uns zur Zeit des Tests allerdings noch nicht vollständig vor, machte aber einen guten Eindruck.

Der BASIC-Interpreter von GfA benötigt eine Umstellung, da es sich von anderen BASIC Dialekten stark unterscheidet. Die Syntax ist aber leicht zu erlernen und bietet mit ihrer Befehlsvielfalt und ihrer Schnelligkeit eine gute Alternative zu anderen Programmiersprachen, die es bis jetzt für den ST gibt.

    Alert 1,"Ki1obaud Benchmarks",1,"Return",A 
    Dim M (5)

    Print "Benchmark 1  :   “
    T=Timer
    For I=1 To 1000
    Next I
    Print (Timer—T)/200
    Print "Benchmark 2 :"
    T=Timer 
    K=0 
    Repeat 
        K=K+1
    Until K>999
    Print (Timer—T)/200
    Print "Benchmark 3 :"
    T=Timer
    K=0
    Repeat
        K=K+1
        A=K/K*K+K-K
    Until K>=1000
    Print (Timer—T)/200
    Print "Benchmark 4 :"
    T=Timer
    K=0
    Repeat
        K=K+1
        A=K/2*3+4-5
    Until K>=1000
    Print (Timer—T)/200
    Print "Benchmark 5 :"
    T=Timer
    K=0
    Repeat
        K=K+1
        A=K/2*3+4-5
        Gosub Dummy
    Until K>=1OOO
    Print (Timer—T)/200
    Print "Benchmark 6 :"
    T=Timer
    K=0
    Repeat
        K=K+1
        A=K/2*3+4—5
        Gosub Dummy
        For L=1 To 5
        Next L
    Until K>=1000
    Print (Timer—T)/200
    Print "Benchmark 7 : "
    T=Timer
    K=0
    Repeat
        K=K+1
        A=K/2*3+4-5
        Gosub Dummy
        For L=1 To 5
            M(L)=A
        Next L
    Until K>=1000
    Print (Timer—T)/200
    Print "Benchmark 8 : "
    T=Timer
    K=0
    Repeat


Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]