Phase 4: Ereignisschleife und klassische Traps

This commit is contained in:
2026-09-04 15:56:47 +02:00
parent 060674b466
commit 5cf5a6582c
40 changed files with 4024 additions and 176 deletions

View File

@@ -393,10 +393,12 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste.
Transaktion verfällt.
## Phase 4 — Forms-Engine (`tb-ui::forms`)
- [ ] Eingangsaufgabe (aus Phase 0 übernommen): Ereignisschleifen-
- [x] Eingangsaufgabe (aus Phase 0 übernommen): Ereignisschleifen-
Architektur — Terminal-Events → Event-Queue → VM-Ticks, kooperative
Zustellpunkte (`DOEVENTS`, `SLEEP`, blockierende Eingabe, Ende einer
Ereignisprozedur)
Befund: Die VM stellt klassische Traps über einen eigenen Frame zu;
Forms-Ereignisprozeduren verwenden später denselben Rückrufweg.
- [ ] Formular-Modell: Eigenschaften, Lade-/Entladezyklus, `SHOW`/`HIDE`
(modal/nicht-modal)
- [ ] Steuerelemente: CommandButton, TextBox, ListBox, ComboBox, CheckBox,
@@ -415,13 +417,15 @@ Maßgeblich ist seit 2026-09-03 das Inventar, nicht diese Liste.
https://github.com/cout/vbdos ohne Non-Features kompilieren und
sind nutzbar (Konsolenprogramme bereits ab Phase 3)
- [ ] Ereignisdispatch: Event-Queue ↔ VM (Ereignisprozeduren `Name_Ereignis`)
- [ ] **Klassische Ereignis-Traps** (ohne Forms, Sprachreferenz §8) —
- [x] **Klassische Ereignis-Traps** (ohne Forms, Sprachreferenz §8) —
`ON TIMER(n)`, `ON KEY(n)`, `ON UEVENT` und `ON SIGNAL(n)` je mit
`GOSUB label`, dazu die Steueranweisungen `TIMER`, `KEY(n)`,
`UEVENT`, `SIGNAL(n)` mit `ON`/`OFF`/`STOP`, das `EVENT`-Statement
und `SetUEvent`. Setzt die Ereignisschleife (erste Aufgabe dieser
Phase) voraus; `COM`/`PEN`/`PLAY`/`STRIG` bleiben Non-Feature
(Fehler 73). **10 Inventareinträge**
Befund: `EVENT` besitzt nur `ON`/`OFF`; `SIGNAL(1/2)` bildet
plattformübergreifend `SIGINT`/`SIGTERM` ab.
- [ ] **Vordefinierte Dialoge**: `MSGBOX` als Anweisung **und** als
Funktion (liefert die gedrückte Schaltfläche) sowie `INPUTBOX$`.
Sie hängen am Formularmodell, nicht an der Steuerelementliste, und