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
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