Phase 4: Steuerelemente implementieren

This commit is contained in:
2026-09-05 12:49:46 +02:00
parent 1cb6ae8fd9
commit 19804e0e2d
36 changed files with 6472 additions and 689 deletions

View File

@@ -106,6 +106,9 @@ stehen am Ende dieses Dokuments; nur diese Liste rechtfertigt Abweisungen.
- `CONST name = ausdruck` — Konstanten (konstante Ausdrücke zur Compilezeit).
- `DECLARE SUB/FUNCTION name (parameter)` — Prototyp; die IDE erzeugt sie
automatisch beim Speichern.
- `'$INCLUDE: 'datei'` — bindet eine Textquelle relativ zur einschließenden
Datei ein; Namen werden wie unter DOS ohne Beachtung der Großschreibung
aufgelöst, Zyklen werden namentlich abgewiesen.
## 4. Operatoren (nach Priorität, hoch → niedrig)
@@ -148,6 +151,9 @@ INTEGER 1 (wahr) / 0 (falsch).
als Direktmodus-Befehl der IDE (Phase 5) und ist nicht kompilierbar.
- `SLEEP [sekunden]`, `DO EVENTS`/`DOEVENTS` (Ereignisse verarbeiten —
zentral für Forms)
- `RUN` startet das aktuelle Programm neu; `RUN zeile` startet es nach den
globalen Deklarationen an der angegebenen Zeile, `RUN datei$` lädt relativ
zur laufenden Quelle eine `.BAS`-, `.FRM`- oder `.MAK`-Datei neu.
## 6. Prozeduren
@@ -517,16 +523,12 @@ Dialoge:
Kombinationen) liefern nichts — eine eigene Kodierung dafür wäre eine
Erweiterung und gehört in Stufe 2.
4. **Kein `CHAIN`/Overlay-Mechanismus**; `SHELL` startet die System-Shell.
5. **Grafik-Anweisungen** (`SCREEN n>0`, `PSET`, `PRESET`, `LINE`,
`CIRCLE`, `PAINT`, `DRAW`, Grafik-`GET`/`PUT`, `PALETTE`, `WINDOW`,
`VIEW`, `PMAP`, `PCOPY`, `POINT`) sind Nicht-Ziel und werden **zur
Compile-Zeit** mit „Feature unavailable" abgewiesen. Die Formen, die
sich ein Schlüsselwort mit einer unterstützten Anweisung teilen, erkennt
der Compiler an ihrer Syntax: `LINE` ohne `INPUT`, `GET`/`PUT` mit
`(`, `VIEW` ohne `PRINT`. Hinweis: das Vorbild **hatte** die
Grafikmodi 013, aber nicht gleichzeitig mit Forms (dort Fehler 272
„Invalid when forms are showing") — wir übernehmen nur den
Forms-/Textmodus-Zweig.
5. **Grafik im Zellenpuffer:** `SCREEN 0` bis `SCREEN 13`, `LINE` (auch
`B`/`BF` und `STEP`), `PAINT` und `VIEW` werden ausgeführt. Historische
Pixelkoordinaten werden dabei in 8×8-Blöcken auf Terminalzellen
abgebildet. `PSET`, `PRESET`, `CIRCLE`, `DRAW`, Grafik-`GET`/`PUT`,
`PALETTE`, `WINDOW`, `PMAP`, `PCOPY` und `POINT` bleiben Nicht-Ziel und
werden zur Compile-Zeit mit „Feature unavailable" abgewiesen.
6. **`PLAY`/`SOUND`**: `BEEP` = Terminal-Bell; Rest Nicht-Ziel (Fehler 73).
5a. **`LPRINT` schreibt in eine Datei** (2026-09-03): einen
plattformübergreifenden Druckerkanal gibt es nicht. Der Druckerpuffer
@@ -576,3 +578,13 @@ Dialoge:
werden nicht abgebildet. Unter Windows ist `SIGTERM` von außen nicht
zustellbar — `SIGNAL(2)` bleibt dort wirkungslos. Trifft `SIGINT` ohne aktiven Trap
ein, bleibt es beim bisherigen Abbruch.
9. **Forms-Darstellung und Dateisystem-Steuerelemente** (2026-09-05):
Controls zeichnen ausschließlich in den Unicode-Zellenpuffer. Mangels
vollständiger Original-Screenshots gelten die Zeichenbilder und
Fokus-/Deaktiviert-Farben aus `forms-referenz.md` als unsere Festlegung.
Dasselbe gilt für die Z-Reihenfolge (Erzeugungsreihenfolge, später liegt
oben) und gleichzeitig fällige Timer (aufsteigend nach `CtlName`).
`DirListBox` und `FileListBox` verwenden native Pfade und `*`/`?`-Muster;
`DriveListBox` zeigt unter Unix `/` und unter macOS zusätzlich Mounts aus
`/Volumes` statt DOS-Laufwerksbuchstaben.