# Dateiformate Terminal Basic liest und schreibt die Textformate des Vorbilds, durchgängig in UTF-8 (Abweichung: das Vorbild nutzte die DOS-Codepage). Binäre „Fast-Load"-Varianten des Vorbilds sind Nicht-Ziel — nur Textformate. ## Quelltext: `.BAS` Reiner Text, eine Anweisung(sfolge) pro Zeile. Optionale Kopfzeilen der IDE (`DECLARE`-Prototypen) werden beim Speichern erzeugt/aktualisiert. Metabefehle in Kommentaren: `'$INCLUDE: 'datei.bi'`, `'$STATIC`, `'$DYNAMIC`. ## Formular: `.FRM` Das Vorbild kannte zwei Speicherformate: **binär** („Fast load and save", Standard) und **Text** („Readable by other programs"). Terminal Basic implementiert nur das Textformat; das Binärformat ist Nicht-Ziel (FT.EXE des Vorbilds konvertierte zwischen beiden). Textformat, zwei Abschnitte: Formular-Beschreibung, dann Code. Schema wie beim Windows-Schwesterprodukt: `VERSION`-Zeile, verschachtelte `Begin … End`-Blöcke (Klassennamen siehe forms-referenz.md), `Eigenschaft = Wert`-Zeilen. Der Parser des Vorbilds akzeptiert Version 1.00 und 2.00 (Import aus dem Windows-Produkt via Übersetzer). ``` VERSION 1.00 Begin Form Form1 Caption = "Beispiel" Height = 15 Left = 10 Top = 4 Width = 50 Begin CommandButton cmdOK Caption = "&OK" Height = 1 Left = 18 Top = 11 Width = 10 End End SUB cmdOK_Click () UNLOAD Form1 END SUB ``` - `VERSION`-Zeile, dann verschachtelte `Begin … End`-Blöcke mit `Eigenschaft = Wert`-Zeilen (Strings in `"…"`). - Danach normaler BASIC-Code des Formular-Moduls. - TODO: Ein wörtliches Original-Beispiel einer Text-`.FRM` war online nicht auffindbar (Beispieldateien des Originalpakets liegen alle binär vor). Exakte Serialisierung (Kopfzeile, Einrückung, welche Eigenschaften geschrieben werden) ist daher festzulegen: wir folgen dem Windows-1.0-Schema und dokumentieren unsere Fassung als Referenz. ## Projekt: `.MAK` Reine Textdatei ohne Kopfzeile, **eine Projektdatei pro Zeile** (`.BAS`/`.FRM`; belegt durch die Originalbeispiele). Terminal Basic akzeptiert zusätzlich Kommentarzeilen mit `'`. ## Kompilat: `.tbc` (neu, eigenes Format) Container für TBVM-Bytecode, Entwurf in [tbvm-design.md](tbvm-design.md). `tbdosc build` erzeugt wahlweise `.tbc` oder ein eigenständiges Executable (Runner + eingebettetes `.tbc`).