Change "baseline-phasen-0-1" (Explore/Retrofit des umgesetzten Stands), per Archiv in die Haupt-Specs uebernommen und validiert: - sprach-frontend (6 Requirements: Lexik, Literal-Typisierung, Anweisungs-Grammatik, Semantik, Non-Feature-Abweisung, Diagnostik) - laufzeitfehler (2: Katalog 1-480, Unprintable error) - textbildschirm (5: dynamische Groesse, PRINT/Scroll, Cursor-API, Farbpalette/Blink, Unicode-Zellenmodell) - kompat-testkorpus (2: byte-genaue Sollausgaben, Frontend-Meilenstein) Workflow ab jetzt je Phase: Explore -> Proposal -> Umsetzung -> Archiv. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.8 KiB
Purpose
Der emulierte Textbildschirm ist die Rendering-Grundlage für PRINT,
LOCATE, COLOR, CLS und später die Forms-Engine: Unicode-Zellenpuffer
mit dynamischer Terminalgröße und klassischer 16-Farben-Palette auf
Ratatui.
ADDED Requirements
Requirement: Dynamische Terminalgröße mit Mindestmaß
Der Bildschirm SHALL der Terminalgröße folgen (Puffer per resize
anpassbar; Inhalt bleibt oben links erhalten, Cursor wird geklemmt).
Die Mindestgröße ist 80×25: kleinere Werte werden auf 80×25 geklemmt,
und ist die Render-Fläche kleiner als 80×25, SHALL nur ein Hinweis
„Terminal zu klein" mit Ist- und Mindestgröße gerendert werden.
Scenario: Vergrößertes Terminal
- WHEN der Bildschirm auf 120×40 gesetzt wird
- THEN sind alle 120 Spalten und 40 Zeilen adressierbar (
LOCATE 40, 120)
Scenario: Zu kleines Terminal
- WHEN die Render-Fläche 60×20 misst
- THEN erscheint statt des Puffers der Hinweis mit Minimum 80×25
Requirement: PRINT-Semantik mit Umbruch und Scrollen
print SHALL Zeichen an der Cursorposition ausgeben, am rechten Rand
umbrechen und am unteren Rand des Scrollbereichs den Bereich um eine
Zeile nach oben scrollen; \n bricht um, \r setzt an den Zeilenanfang.
VIEW PRINT oben TO unten SHALL das Scrollen auf den Bereich begrenzen;
ohne eigene Einstellung folgt der Scrollbereich der Bildschirmgröße.
Scenario: Scrollen in VIEW-PRINT-Bereich
- WHEN der Scrollbereich Zeilen 3–5 umfasst und in Zeile 5 ein Umbruch erfolgt
- THEN scrollen nur die Zeilen 3–5; Kopfzeilen außerhalb bleiben unverändert
Requirement: 1-basierte Cursor-API mit Bereichsprüfung
LOCATE, CSRLIN und POS SHALL 1-basiert arbeiten; LOCATE
außerhalb der aktuellen Bildschirmgrenzen SHALL als Fehler abgewiesen
werden (Basis für Laufzeitfehler 5).
Scenario: Grenzprüfung
- WHEN bei 80×25
LOCATE 26, 1aufgerufen wird - THEN wird der Aufruf abgewiesen
Requirement: Klassische Farbpalette und Blink-Simulation
Der Bildschirm SHALL die klassische Palette abbilden (Vordergrund 0–15, Hintergrund 0–7) und auf ANSI-Indexfarben mappen (klassisch 1 = Blau ↔ ANSI 4 usw.). Blinkende Vordergrundfarben (16–31) SHALL als „hell" simuliert werden (Farbe − 16, Intensitätsbit gesetzt) — kein echtes Terminal-Blinken.
Scenario: Blink wird hell
- WHEN
COLOR 17, 0gesetzt wird (blinkend Blau) - THEN wird mit heller Vordergrundfarbe 9 gerendert
Requirement: Unicode-Zellenmodell
Der Puffer SHALL Unicode-Zeichen speichern (keine CP437-Emulation); aktuell gilt strikt 1 Zeichen = 1 Zelle. (Zeichen mit Darstellungsbreite 2 belegen künftig zwei Zellen — beschlossene Änderung, Umsetzung in Phase 3 als eigenes Change.)
Scenario: Umlaute und Symbole
- WHEN
Ä☃ausgegeben wird - THEN belegen
Äund☃je genau eine Zelle