wiki:BasicConverter

BASIC-Konverter EHBC

Das c't-BASIC legt - wie viele andere BASIC-Interpreter auch - Programme platzsparend in "tokenisierer" Form im Speicher ab, das heißt, BASIC-Schlüsselwörter sind durch je ein "Token" ersetzt. Wenn Sie beispielsweise GTEST.BAS mit einem Texteditor öffnen, erhalten Sie nur Zeichensalat.

Zum Konvertieren in ein les- und editierbares Textformat dient der Konverter EHBC.EXE, zu finden in c't-BASIC/basconvert. Das Programm wurde mit GCC kompiliert, die vorliegende Source-Datei ehbc.c kann leicht eigenen Bedürfnissen angepasst werden, etwa mit GCC aus der MinGW-Distribution).

Das Programm kann in der Windows-"Eingabeaufforderung" ausgeführt werden mit EHBC <progname>.BAS oder EHBC <progname>.TXT, es erkennt anhand der Dateiendung, ob es Textdateien ins BASIC-Format oder umgekehrt BASIC-Programme ins Textformat konvertieren soll. Ebenso ist in Windows ein Drag&Drop (auch mehrerer Dateien gleichzeitig) möglich. Bitte beachten: Die Zieldatei (Name gebildet aus <progname> und der "umgekehrten" Extension) wird hemmungslos überschrieben'''

Bitte keine Versionen mehr vor 2.1h benutzen, diese waren stark fehlerbehaftet.

Die ausgegebene Versionsnummer (nur in der "Eingabeaufforderung") ist jetzt immer gleich zur zugehörigen BASIC-Version - wichtig, da sich Token geändert haben können oder hinzugekommen sind. Bei Änderungen des Buchstabens (Revision/Bugfix/Update?) hinter der ct-BASIC-Version ändern sich keine Token.

EHBC.EXE versieht Zeilen einer Textdatei übrigens automatisch mit um jeweils 10 erhöhten Zeilennummern, wenn diese fehlen. Sie müssen Zeilennummern beim Erstellen eines BASIC-Programms am PC nur bei GOSUBs, GOTOs und deren Ziel-Zeilen (als eine Art Label) eingeben. Diese sollten allerdings zahlenmäßig so weit auseinanderliegen, dass die automatisch generierten Zeilennummern noch dazwischenpassen. Aus

    10 DIM JN$(10)
INPUT "STUNDE?";H
LABSET MCH,90,H
INPUT "MINUTE?";M
LABSET MCH,91,M
INPUT "SEKUNDE?";S
LABSET MCH,92,S
INPUT "TAG?";D
LABSET MCH,93,D
INPUT "MONAT?";N
LABSET MCH,94,N
INPUT "JAHR?";Y
 1000 IF Y>99 THEN Y=Y-2000
LABSET MCH,95,Y
 50000 REM SAVE BASIC LISTING AS TEST
 50010 LABBUS 0:LABOUT "TSF=CLOCK.TXT"
 50020 PRINT CHR$(2):LIST:PRINT CHR$(3)
 50030 END

generiert das Programm also

   10 DIM JN$(10)
   20 INPUT "STUNDE?";H
   30 LABSET MCH,90,H
   40 INPUT "MINUTE?";M
   50 LABSET MCH,91,M
   60 INPUT "SEKUNDE?";S
   70 LABSET MCH,92,S
   80 INPUT "TAG?";D
   90 LABSET MCH,93,D
  100 INPUT "MONAT?";N
  110 LABSET MCH,94,N
  120 INPUT "JAHR?";Y
 1000 IF Y>99 THEN Y=Y-2000
 1010 LABSET MCH,95,Y
 50000 REM SAVE BASIC LISTING AS TEST
 50010 LABBUS 0:LABOUT "TSF=CLOCK.TXT"
 50020 PRINT CHR$(2):LIST:PRINT CHR$(3)
 50030 END

Im BASIC-Speicher (ab $0800) sieht dieses Programm dann so aus (.BAS-Format):

browser:Bilder/basicdump.png

Man kann die Zeilen übrigens für ein strukturiertes Aussehen nach Belieben mit Leerzeichen einrücken, diese "optimiert" EHBC automatisch weg. Wer als Editor UltraEdit verwendet, kann zur Syntax-Hervorhebung von ct-BASIC-Texten sein wordfile.txt um meines (siehe Verzeichnis basconvert) ergänzen (nicht ersetzen!).

Last modified 8 years ago Last modified on Nov 2, 2009, 1:30:29 PM