# Phase 4 — Formulardateien (`.FRM`) und Konvertierung ## Why Formulare müssen sich speichern und laden lassen, sonst gibt es weder den Formular-Designer der Phase 5 noch den Kompatibilitätstest an den Programmen des Vorbilds. Das Vorbild kannte zwei Formate: binär (Standard) und Text. Terminal Basic implementiert nur das Textformat — das Binärformat ist Nicht-Ziel, seine Dateien müssen aber lesbar werden, denn die Beispielprojekte des Originalpakets und die Programme aus `github.com/cout/vbdos` liegen **alle** binär vor. Ein wörtliches Original-Beispiel einer Text-`.FRM` war nicht auffindbar (Befund in `docs/dateiformate.md`). Die Serialisierung ist deshalb festzulegen und zu dokumentieren, statt sie zu rekonstruieren — der einzige Punkt der Phase, an dem die Leitplanke „Referenzverhalten schlägt Eleganz" mangels Referenz nicht greift. Dieser Change hängt weder an den Steuerelementen noch an der Ereignisschleife: er beschreibt Formulare, er stellt sie nicht dar. ## What Changes - **Textformat festlegen und dokumentieren**: `VERSION`-Zeile, verschachtelte `Begin … End`-Blöcke, `Eigenschaft = Wert`-Zeilen, danach der BASIC-Code des Formularmoduls. Festgelegt werden Kopfzeile, Einrückung, Reihenfolge und die Regel, welche Eigenschaften überhaupt geschrieben werden. Angenommen werden die Versionen 1.00 und 2.00. - **Lesen und Schreiben**: Eine `.FRM` wird in eine Formularbeschreibung gelesen und aus ihr wieder geschrieben; das erneute Schreiben einer gelesenen Datei MUST dieselbe Datei ergeben. - **Fehlerhafte Dateien**: Unbekannte Klasse, unbekannte Eigenschaft, unpassender Wert und unausgeglichene Blöcke werden mit Datei, Zeile und Name gemeldet, nicht stillschweigend übergangen. - **`tbc convert-frm`**: Konvertierung binärer `.FRM` (Magic `FC 08 01 00`) in unser Textformat, als Gegenstück zum Konvertierungswerkzeug des Vorbilds. Das Binärformat wird per Reverse Engineering aus den Beispieldateien des Originalpakets und des cout/vbdos-Repos erschlossen und dokumentiert. **Non-Goals:** Schreiben des Binärformats; Darstellung oder Ausführung der beschriebenen Formulare (Changes `phase-4-objektmodell` und `phase-4-steuerelemente`); der Formular-Designer (Phase 5). ## Capabilities ### New Capabilities - `forms-dateiformat`: Textformat der Formulardateien — Aufbau, Lesen, Schreiben, Fehlermeldungen bei fehlerhaften Dateien — sowie die Konvertierung binärer Formulardateien des Vorbilds. ## Impact - `crates/tb-ui`: Leser und Schreiber des Textformats auf der Formularbeschreibung aus `phase-4-objektmodell`. - `crates/tb-cli`: Unterbefehl `convert-frm`. - `docs/dateiformate.md`: Das TODO zur Serialisierung wird durch die festgelegte Fassung ersetzt; das Binärformat wird beschrieben, soweit erschlossen. - `tests/`: Beispieldateien und ihre erwartete Formularbeschreibung. - PLAN.md: Punkte „`.FRM`-Textformat" und „Konvertierungstool".