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


Aus: ST-Computer 07 / 1986, Seite 85

Links

Copyright-Bestimmungen: siehe Über diese Seite