Tips und Tricks für GfA-Basic

In einer der letzten Ausgaben stellten wir Ihnen ein Verfahren zum Patchen beliebiger Programme vor. Nachfolgend haben wir noch einige Patches zusammengestellt, mit denen Sie ihr GFA-BASIC individuell konfigurieren, ohne die notwendigen Variablen erst nach Programmstart zu setzen. Wichtig: Diese Routinen arbeiten GFA-BASIC 3.0. Letzte getestete Version ist 3.6.

Mit dem folgenden Patch bestimmen Sie, ob GFA-BASIC bei Programmstart mittels < SHIFT+F10 > den Bildschirm löscht oder der Inhalt bestehen bleibt. Somit lassen sich Informationen des letzten Programmdurchlaufs bei erneutem Starten beibehalten. Grundeinstellung für »set%« ist der Wert 69. Um zu verhindern, daß der Editor bei Start den Bildschirm löscht, geben Sie für »set%« den Wert 72 an.

set% = 69      ! Bildschirm löschen
‚ set% = 72    ! Bildschirm nicht löschen
OPEN "U",#1,"GFABASIC.PRG" ! oder „GFABASRO.PRG“
SEEK # 1, 3
PRINT # 1, CHR$ (set%)
CLOSE

Der Befehl »DEFLIST« bestimmt, in welchem Format Ihre Variablen und Befehle im Quelltext angezeigt werden. Mit dem Wert Null, der auch in »GFABASIC.PRG« eingestellt ist, werden Befehle und Funktionen in Großbuchstaben, Variablen-, Prozedur- und Funktionsnamen in Kleinbuchstaben dargestellt. Steht hier der Wert 1, beginnen Befehle und Variablen mit Großbuchstaben. Der Wert 3 hängt zusätzlich eine Kennung an alle Variablen an. Analog verhalten sich die Werte 2 und 4. Die nachfolgende Routine trägt den gewünschten Wert in GFA-Basic ein. Setzen Sie bei »MKI$()« für x den gewünschten Wert ein.

OPEN "U",#1, "GFABASIC.PRG"
SEEK 1, &H60
PRINT 1, MKI$ (x)
CLOSE 1

Wie bereits oben erklärt, läßt sich mittels DEFLIST 3 bzw. 4 jeder Variablen automatisch ein Postfix hinzufügen. Normalerweise müssen Sie dieses mittels DEF.. bei Programmstart festlegen. Haben Sie eine feste Einstellung, so läßt sich diese mittels unten stehendem Listing im GFA-BASIC fest integrieren.

Setzen Sie unter jedem Buchstaben den entsprechenden Wert für den gewünschten Variablentyp. Hierbei steht 0 für Float (#1 für String ($), 2 für Integer (%) und 3 für Bit (!). Der Wert 8 kennzeichnet ein WORD (&), 9 steht für Byte.

OPEN "U",#1, "GFABASIC.PRG"
SEEK # 1, 32
FOR i%0 TO 25
	READ a%
	OUT # 1, a%
NEXT i%
CLOSE #1
' A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Um für die Drucker-Ausgabe Ihres Listings Seiten- und Zeilenlänge zu bestimmen, existieren die Punkt-Befehle (.pl, .ll). Da diese Aufgabe zumeist der gleiche Drucker erledigt, ist es sinnvoll, diese Einstellung im Programm mit unserem letzten Patch zu verewigen. Für »pl« setzen Sie die Seitenlänge ein, »ll« steht für die Zeilenlänge.

OPEN "U",#1, "GFABASIC.PRG"
SEEK# 1, &H62
PRINT #1,MKI$(pl);
PRINT # 1, MKI$ (pl-2)
PRINT #1,MKI$(11)
CLOSE # 1

Häufig wurden wir gefragt, wie sich ein Accessory für Signum 2 programmieren läßt, Das Listing auf der TOS-Diskette dient Ihnen jetzt als Beispiel. Wichtigste Grundvoraussetzung ist, das der Name Ihres Accessories »SIG_ACC1.ACC« lautet und Signum 2 mit mit »SIGNUM2.PRG« gestartet wird. Ich möchte für einen TOS-Editor die VT52-Sequenzen einsetzen und auch alle 256 Zeichen ausgeben. Wie ist das parallel zu lösen ?

Für diese Aufgabe verwenden wir die BIOS-Funktion »bconout()«. Mit GFA-BASIC erreichen Sie diesen Teil des Betriebssystems über den Befehl »BIOS(3,d%,b%)«. Möchten Sie eine VT-52-Konsole emulieren, übergeben Sie in »d%« den Wert 2, »b%« enthält je ein Steuerzeichen. Für reine ASCII-Ausgabe ab der aktuellen Cursor-Position gilt: b% = 2, d% ist dann der ASCII-Code des auszugebenden Zeichens.

BIOS (3, 2, 27)	! Nächste ein VT5Z-Steuerzeichen
BIOS (3, 2, ASC("E") )	! ESC+E >Bildschirm löschen (VT52)
FOR char% = 0 TO 255	! Schleife um alle Zeichen auszugeben
	IF char% MOD 16 = 0	! wenn 16 Zeichen, dann ...
		BIOS (3, 2, 13)	! ... Zeile runter (CR) und ...
		BIOS (3, 2, 10)	! ... Anfang neue Zeile (LF)
	ENDIF
	BIOS (3, 5, char%)	! Zeichen ausgeben
	BIOS (3, 5, 32)	! plus ein Leerzeichen
NEXT char%
PRINT AT (2, 20); "Der Zeichensatz des ATARI ST"
INP (2)
EDIT

VT52-Sequenzen

Escapesequenz Funktion
CHR$(27)+"A" Cursor rauf
CHR$(27)+"B" Cursor runter
CHR$(27)+"C" Cursor rechts
CHR$(27)+"D" Cursor links
CHR$(27)+"F" CLS
CHR$(27)+"H" Cursor nach links oben
CHR$(27)+"J" Löscht Bildschirm ab Cursor
CHR$(27)+"K" Zeile löschen ab Cursor
CHR$(27)+"L" Leerzeile einfügen
CHR$(27)+"M" Zeile löschen
CHR$(27)+"Y"+CHR$ (x+32)+CHR$(y+32) Positioniert Cursor x,y
CHR$(27)+"b"+CHR$(f) Cursorfarbe f
CHR$(27)+"c"+CHR$(f) Hintergrundfarbe f
CHR$(27)+"d" Löscht Bildschirm bis Cursor
CHR$(27)+"e" Cursor einschalten
CHR$(27)+"f" Cursor abschalten
CHR$(27)+"j" Cursor-Position speichern
CHR$(27)+"k" Cursor an gespeicherte Position setzen
CHR$(27)+"l" Zeile löschen, in der Cursor steht
CHR$(27)+"o" Zeile bis Cursor löschen
CHR$(27)+"p" Schrift inverse einschalten
CHR$(27)+"q" Schrift inverse ausschalten
CHR$(27)+"v" Autom. Zeilenüberlauf einschalten
CHR$(27)+"w" Autom. Zeilenüberlauf ausschalten

Tabelle. Cursor-Steuerung per Buchstabe



Aus: TOS 03 / 1993, Seite 56

Links

Copyright-Bestimmungen: siehe Über diese Seite