Phase 5: Ausführung und Output implementieren und archivieren
This commit is contained in:
@@ -133,24 +133,81 @@ Alle Referenzbefehle sind in ihrer Menüfolge vorhanden. Fachbefehle der
|
||||
folgenden Changes sind sichtbar deaktiviert und zeigen einen
|
||||
Verfügbarkeitsgrund; ihre Kürzel gelangen nicht versehentlich an BASIC.
|
||||
Ctrl+C im Editor ist Kopieren, bei laufendem Programm mit
|
||||
Output-Fokus wird Ctrl+C an den Programmeingabepfad weitergereicht.
|
||||
Output-Fokus unterbricht Ctrl+C sofort die Sitzung, ohne eine BASIC-Taste einzureihen.
|
||||
|
||||
| Bereich | Rahmenaktion jetzt | Fachaktion im Folgechange |
|
||||
| --- | --- | --- |
|
||||
| File | New/Open/Save Project, New Form/Module, Add/Remove File, Save File/As, Load/Save Text, Exit | Print/Shell: 04 |
|
||||
| File | New/Open/Save Project, New Form/Module, Add/Remove File, Save File/As, Load/Save Text, Print (UTF-8-Datei), Shell, Exit | — |
|
||||
| Edit | Undo, Cut/Copy/Paste/Clear, New Sub/Function | Event Procedures: 05 |
|
||||
| View | Code/Form-Auswahl, Prozedurauswahl, Included File/Lines, Diagnostics, Designer Menu Bar/Value-Fokus | Output Screen: 04; Grid Lines: 05; Next Statement: 06 |
|
||||
| View | Code/Form-Auswahl, Prozedurauswahl, Included File/Lines, Diagnostics, Designer Menu Bar/Value-Fokus, Output Screen | Grid Lines: 05; Next Statement: 06 |
|
||||
| Search | Find, Selected Text, Repeat Last Find, Change | — |
|
||||
| Run | Set Start-up File und beide Make-Dialoge | Start/Restart/Continue/COMMAND$ und Startup-Ausführungswirkung: 04; native Erzeugung: Phase 6 |
|
||||
| Run | Start/Restart/Continue/Pause, COMMAND$, wirksame Startdatei und beide Make-Dialoge | Native Erzeugung: Phase 6 |
|
||||
| Debug | Vollständiges Menü und Kürzelzuordnung, einschließlich F7/F8/F9/F10 und History | Watches, Watchpoints, Trace, History, Breakpoints, Break on Errors, Set Next Statement: 06 |
|
||||
| Options | Display, Set Paths, Right Mouse, Save, Syntax Checking einschließlich Zeilenprüfung | Kontext-Hilfe: 07 |
|
||||
| Window | New Window, Arrange All, Calls/Debug/Help/Immediate/Output/Project, aktive Codeliste, alle Fensterkürzel | Output-Inhalt: 04; Debug/Calls/Immediate-Inhalte: 06; Hilfeinhalt: 07 |
|
||||
| Window | New Window, Arrange All, Calls/Debug/Help/Immediate/Output/Project, aktive Codeliste, alle Fensterkürzel | Debug/Calls/Immediate-Inhalte: 06; Hilfeinhalt: 07 |
|
||||
| Designer Tools/Window | Tools-Menü, Formliste und gemeinsamer Fenster-/Modusrahmen | Controls/Toolbox, Color Palette, Menu Design Window: 05 |
|
||||
| Help | Vollständiges Menü, About und Help-Fensterrahmen | Index, Contents, Keyboard, Topic, Using Help, Tutorial: 07 |
|
||||
|
||||
Der Editor einschließlich inkrementeller Übersetzung ist umgesetzt. Die gesamte
|
||||
Editor, inkrementelle Übersetzung und Ausführung sind umgesetzt. Die gesamte
|
||||
Phase-5-Abnahme erfolgt in Change 08.
|
||||
|
||||
## Programme ausführen
|
||||
|
||||
Shift+F5/Run → Start kompiliert den aktuellen Projektstand einschließlich
|
||||
ungespeicherter Dokumente und startet eine frische TBVM. F5/Continue startet
|
||||
im Bearbeitungsmodus oder setzt eine Pause fort. Run → Pause und Ctrl+Break
|
||||
unterbrechen auch bei Editorfokus; Ctrl+C unterbricht ausschließlich bei
|
||||
Programmfokus. Die Statusmeldung nennt Quelldatei und Unterbrechungszeile.
|
||||
STOP pausiert. END/SYSTEM beenden die Sitzung, erhalten die letzte Ausgabe
|
||||
und lassen die IDE offen. Natürliches Modulende hält sichtbare Formulare
|
||||
weiter bedienbar. Laufzeitfehler erscheinen als Diagnose
|
||||
mit Fehlernummer und Zeile; Kompilierfehler verhindern einen neuen Lauf.
|
||||
|
||||
Nach Quelländerungen während einer Pause verlangt Continue eine Entscheidung:
|
||||
aktuellen Stand neu starten oder das alte Kompilat ausdrücklich fortsetzen.
|
||||
Die zweite Wahl kennzeichnet das Output-Fenster mit **ALTES KOMPILAT**.
|
||||
Laufender Code wird nicht nachträglich ersetzt. Der Dialog Modify COMMAND$
|
||||
setzt Argumente für den nächsten Start. Restart und BASIC RUN erzeugen eine
|
||||
neue VM samt Variablen, DATA-Zeiger, Fehlerzustand, Forms, Timern und Dateien.
|
||||
RUN mit Dateiname löst das Ziel relativ zum Ausführungsziel auf; fremde Ziele
|
||||
ersetzen das bearbeitete IDE-Projekt nicht. RUN auf dasselbe Ziel verwendet
|
||||
den aktuellen Editorstand. Fehlende Ziele erhalten die Dokumente.
|
||||
|
||||
Eine ausgewählte Startdatei läuft zuerst; die übrigen Modulrümpfe behalten
|
||||
ihre relative Reihenfolge. Ein ausgewähltes FRM wird Startformular, ein
|
||||
ausgewähltes BAS verhindert den automatischen Formularstart allein aufgrund
|
||||
der Projektmitgliedschaft. Ohne Auswahl bleiben Projektreihenfolge und erstes
|
||||
Startformular wie bisher. CLI und gespeichertes TBC verwenden denselben Vertrag.
|
||||
|
||||
Window → Output und F4 zeigen denselben TextScreen. Das kleine Fenster schneidet
|
||||
die Ansicht ab, verändert aber weder BASIC-Farben noch logische Bildschirmgröße.
|
||||
Nur ein echtes Terminal-Resize verändert den Laufzeitbildschirm. Auch während
|
||||
INPUT, LINE INPUT, INPUT$, RANDOMIZE ohne Argument, SLEEP und modaler Dialoge
|
||||
bleiben Umschalten und Pausieren möglich; Eingabeteile, Prompt, Fokus und
|
||||
Deadline bleiben erhalten. Eine Pause friert die Hostuhr nicht ein: Eine
|
||||
verstrichene SLEEP-Deadline wird nach Continue sofort erkannt.
|
||||
|
||||
File → Shell und BASIC SHELL geben Raw Mode, Maus-/Paste-Erfassung und
|
||||
Alternativschirm an ein Vordergrund-Kindprogramm mit geerbtem Standard-I/O ab.
|
||||
Nach Ende, Fehler oder Ctrl+C werden Terminal und bisheriger IDE-Fokus
|
||||
wiederhergestellt. SHELL als Funktion liefert den Exit-Code (bei unterbrochenem
|
||||
Kind ohne regulären Exit-Code wie bisher: 0); ein fehlgeschlagener Prozessstart wird
|
||||
BASIC-Fehler 53. Die IDE führt während der Übergabe keine VM-Schritte aus.
|
||||
|
||||
File → Print ist eine Plattformanpassung: Der Dialog schreibt Auswahl oder
|
||||
Gesamttext als UTF-8 in eine wählbare Druckdatei (Vorgabe `LPT1.TXT`). Er nutzt
|
||||
dieselben geschützten, atomaren Dateipfade wie Save Text. Überschreiben muss
|
||||
explizit gewählt werden; Projekt-/Quelldateien und originale Binärdateien sind
|
||||
weiter geschützt. Fehler halten den Dialog offen und verändern den Quelltext
|
||||
nicht. Ein Druckertreiber ist dafür nicht erforderlich.
|
||||
|
||||
Die VM gibt nach einem festen Instruktionsbudget oder bei ausstehender Eingabe
|
||||
die Kontrolle zurück. Synchrone Betriebssystemoperationen wie Öffnen, Lesen,
|
||||
Schreiben, Datenbank-I/O oder Dateiauswahl lassen sich innerhalb eines laufenden
|
||||
Systemaufrufs nicht unterbrechen. Sie sind keine Eingabewarte-Schleifen; nach
|
||||
Rückkehr gelten wieder die normalen Unterbrechungsgrenzen. Es gibt keinen
|
||||
VM-Hintergrundthread und keine zweite Kopie des Programmbildschirms.
|
||||
|
||||
## Reproduzierbarer Testpfad
|
||||
|
||||
`cargo test -p tb-ide` prüft denselben `App::handle(Event)`-Dispatcher und
|
||||
@@ -244,3 +301,9 @@ geöffnete Includes werden erneut vom Loader gelesen und verglichen. Start und
|
||||
Fortsetzen der VM werden in Change 04 an diese Schnittstelle angebunden.
|
||||
|
||||
Release-Messungen und Aufruf stehen in [tbvm-design.md](tbvm-design.md).
|
||||
|
||||
Die Ausführungstests liegen in `crates/tb-ide/tests/execution.rs` und
|
||||
`crates/tb-vm/tests/cooperative.rs`. Zusätzlich prüft
|
||||
`cargo build -p tb-ide && python3 tests/support/ide-execution-pty.py` unter Unix
|
||||
in einem unsichtbaren PTY die echten Shell-/Terminalübergaben und das Fortsetzen
|
||||
nach STOP. Das Skript verwendet ausschließlich temporäre Projekte.
|
||||
|
||||
@@ -27,7 +27,7 @@ Window Help**. `───` = Separator, `•` = Toggle-Markierung.
|
||||
*(Designer-Modus: … ─ Menu Bar **F10** / Grid Lines)*
|
||||
- **Search (Alt+S):** Find… / Selected Text **Ctrl+\\** / Repeat Last Find
|
||||
**F3** / Change…
|
||||
- **Run (Alt+R):** Start **Shift+F5** / Restart / Continue **F5** /
|
||||
- **Run (Alt+R):** Start **Shift+F5** / Restart / Continue **F5** / Pause (Ctrl+Break) /
|
||||
Modify COMMAND$… ─── Make EXE File… / Make Library… ─── Set Start-up File…
|
||||
- **Debug (Alt+D):** Add Watch… / Instant Watch… **Shift+F9** / Watchpoint… /
|
||||
Delete Watch… / Delete All Watch ─── •Trace On / •History On ───
|
||||
|
||||
Reference in New Issue
Block a user