274 lines
15 KiB
Markdown
274 lines
15 KiB
Markdown
# IDE-Referenz Terminal Basic
|
||
|
||
Rekonstruierte UX-Spezifikation der IDE des Vorbilds (VBDOS 1.0, 1992) —
|
||
Grundlage für `tb-ide` (Phase 5). Quellen: Original-Hilfedatei (dekodiert),
|
||
README des Originalpakets, Screenshots (Pixelanalyse), Sekundärliteratur.
|
||
Konfidenz je Abschnitt vermerkt; `TODO` = offen. Konkrete Farbquellen und
|
||
Kontrastanpassungen: siehe Abschnitt 4a.
|
||
|
||
Die IDE besteht im Vorbild aus zwei Programmen: der **Programmierumgebung**
|
||
und dem separaten **Form Designer** (eigene Menüleiste, Wechsel über
|
||
„Event Procedures"/F12 bzw. View→Form). Terminal Basic bildet beides in
|
||
**einem** Prozess ab, behält aber die zwei Modi mit identischer Bedienung.
|
||
|
||
## 1. Menüstruktur (Konfidenz: sicher)
|
||
|
||
Menüleiste der Umgebung: **File Edit View Search Run Debug Options Window**,
|
||
**Help** rechtsbündig. Form-Designer-Modus: **File Edit View Tools Options
|
||
Window Help**. `───` = Separator, `•` = Toggle-Markierung.
|
||
|
||
- **File (Alt+F):** New Project / Open Project… / Save Project ─── New Form /
|
||
New Module… / Add File… / Remove File… / Save File / Save File As… ───
|
||
Load Text… / Save Text… ─── Print… / Shell ─── Exit **Alt+F4**
|
||
- **Edit (Alt+E):** Undo **Ctrl+Z** ─── Cut **Ctrl+X** / Copy **Ctrl+C** /
|
||
Paste **Ctrl+V** / Clear **Del** ─── New Sub… / New Function… /
|
||
Event Procedures… **F12**
|
||
- **View (Alt+V):** Code… **F2** / Form… **Shift+F12** ─── Next Statement /
|
||
Output Screen **F4** ─── Included File / •Included Lines
|
||
*(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** / 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 ───
|
||
Toggle Breakpoint **F9** / Clear All Breakpoints / •Break on Errors /
|
||
Set Next Statement
|
||
- **Options (Alt+O):** Display… / Set Paths… / Right Mouse… / Save… /
|
||
•Syntax Checking (Einstellungen persistent)
|
||
- **Window (Alt+W):** New Window / Arrange All ─── Calls / Debug / Help /
|
||
Immediate / Output / Project ─── Liste offener Code-Fenster (• = aktiv)
|
||
*(Designer-Modus: Color Palette / Menu Design Window / Toolbox / Help /
|
||
•Form: … )*
|
||
- **Help (Alt+H):** Index / Contents ─── Keyboard ─── Topic: **F1** /
|
||
Using Help **Shift+F1** / Tutorial ─── About…
|
||
|
||
Bedienung: **Alt** (oder F11) aktiviert die Menüleiste, hervorgehobene
|
||
Buchstaben wählen, Esc bricht ab, „…" kündigt Dialog an.
|
||
|
||
## 2. Fensterverwaltung (Konfidenz: sicher)
|
||
|
||
- MDI-artig: alle Fenster/Dialoge sind Kinder der IDE-Fläche. Titelleiste
|
||
mit Control-Menü-Box links, Minimieren/Maximieren rechts, Rahmen,
|
||
Scrollbalken; Code-Fenster nummeriert („[1] Untitled").
|
||
- Tasten: **F6/Ctrl+F6** nächstes, **Shift+F6** vorheriges Fenster,
|
||
**Ctrl+F4** schließen, **Ctrl+F7** verschieben, **Ctrl+F8** Größe,
|
||
**Ctrl+F9** minimieren, **Ctrl+F10** maximieren, **Ctrl+F5**
|
||
wiederherstellen, **Alt+Minus** Control-Menü; „Arrange All" kachelt.
|
||
- **Project Window** (Start: rechts angedockt): Buttons „Form"/„Code"
|
||
(Enter öffnet, „Form" wechselt in den Designer) + Modulliste (.FRM/.BAS).
|
||
- **Immediate Window** über Alt+W,I — nicht permanent sichtbar (anders als QB).
|
||
- **Debug Window** (read-only: Watches/Watchpoints), **Output Window**
|
||
(Ausgabebildschirm als Fenster; **F4** = echter Vollbild-Output),
|
||
**Calls**- und **Help**-Fenster.
|
||
|
||
## 3. Form Designer (Konfidenz: sicher)
|
||
|
||
- **Toolbox** links; Einträge: Check Box, Combo Box, Command Button,
|
||
Dir List, Drive List, File List, Frame, HScrollBar, Label, List Box,
|
||
Option Button, Picture Box, Text Box, Timer, VScrollBar (identisch als
|
||
Tools-Menü).
|
||
- Platzieren: Doppelklick auf Toolbox-Eintrag oder Tool wählen + auf der
|
||
Form aufziehen; **Sizing Handles** (■ an den Ecken); Verschieben per Drag.
|
||
Tastatur: Pfeile = 1 Zelle verschieben, **Ctrl+Pfeile** = 5 Zellen,
|
||
**Shift+Pfeile** = Größe, **Tab/Shift+Tab** = Control-Wechsel;
|
||
Mehrfachauswahl mit Strg+Klick (nur Maus). Raster: View→Grid Lines.
|
||
- **Properties Bar oben** statt Eigenschaftsfenster:
|
||
`Property: [Caption]↓ Value: […]↓ │ Spalte,Zeile │ BxH`.
|
||
**F2** springt in die Value-Box; **F10** toggelt Menüleiste ↔ Properties
|
||
Bar (nur eine sichtbar). Keine Statuszeile im Designer.
|
||
- **Menu Design Window** (Alt+W,M): Caption (`&` = Access-Key, `-` =
|
||
Separator), CtlName, Tag, Index; Checked/Enabled/Visible/Separator;
|
||
Shortcut-Dropdown; Outlining-Buttons (Ebene/Reihenfolge, Einfügen,
|
||
Löschen, Done).
|
||
- **Color Palette** (Alt+W,C): ForeColor/BackColor wählen, Farbe per Drag
|
||
auf die Form ziehen.
|
||
|
||
## 4. Farbschema (Konfidenz: sicher für belegte Elemente)
|
||
|
||
| Element | Farben (DOS-Palette) |
|
||
|---|---|
|
||
| Menüleiste | Schwarz (0) auf Hellgrau (7) |
|
||
| Desktop | Füllzeichen ▒, Hellgrau (7) auf Schwarz (0); Füllzeichen einstellbar |
|
||
| Code-Fenster | Hellgrau/Weiß auf **Blau (1)** |
|
||
| Titelleiste aktiv | **Weiß (15) auf Magenta (5)** — VBDOS-Spezifikum |
|
||
| Rahmen/Scrollbalken | Schwarz auf Hellgrau (7) |
|
||
| Project Window/Dialoge | Schwarz auf Hellgrau (7); Fokus-Button mit weißem Doppelrahmen; Deaktiviertes Dunkelgrau (8); Listenauswahl Weiß auf Schwarz |
|
||
| Statuszeile | Schwarz auf **Cyan (3)** |
|
||
|
||
Alles über **Options→Display** je „User-Interface Element" umkonfigurierbar
|
||
(Fore-/Background aus 16 Farben, Desktop-Füllzeichen, Tabweite).
|
||
Laufzeit-Defaults kompilierter Programme weichen ab (Titel Weiß auf Schwarz).
|
||
|
||
## 4a. Farbabbildung und Kontrast (Phase 6)
|
||
|
||
Die DOS-Farbnummern in Options→Display bleiben erhalten. IDE, Formularvorschau
|
||
und BASIC-Ausgabe verwenden dieselbe feste klassische RGB-Palette. Jede
|
||
Farbe wird als 24-Bit-Vorder-/Hintergrundwert ausgegeben, unabhängig von
|
||
`TERM`, `COLORTERM`, `NO_COLOR` oder der ANSI-Palette des Terminalprofils.
|
||
Es gibt keinen Rückfall auf Index- oder Profilfarben. Die globale
|
||
Terminalpalette wird nicht verändert; gespeichert werden weiterhin
|
||
DOS-Farbnummern, und BASIC bestimmt seine eigenen ForeColor/BackColor-Werte.
|
||
|
||
Beispielwerte: Codehintergrund `#0000AA`, Codeschrift `#AAAAAA`, aktiver
|
||
Titel `#FFFFFF` auf `#AA00AA`. DOS-Farbe 6 ist Braun (`#AA5500`).
|
||
Fensterflächen werden vor dem Zeichnen geleert, damit Desktop-Füllzeichen
|
||
und Inhalte verdeckter Fenster keine scheinbar helleren Hintergründe erzeugen.
|
||
|
||
Die Ausgabe setzt einen Terminalemulator mit 24-Bit-Farbunterstützung voraus.
|
||
Fehlende RGB-Unterstützung bleibt ein offener Zielbefund. Transparenz,
|
||
Farbfilter und Inaktivitätsdimmung sind nachgelagerte Emulatorfunktionen;
|
||
sie werden für die visuelle Farbprüfung getrennt protokolliert.
|
||
|
||
### Referenzfundstellen
|
||
|
||
Die folgenden Originalprogramm-Ansichten wurden am 07.09.2026 visuell
|
||
abgeglichen; die Beschreibung des Archivs ist keine Quelle für die genaue
|
||
Palette. Ansichten belegen Flächen und Rollen, keine heutige Terminalausgabe.
|
||
|
||
- [Code View: Code, Run-Menü, Projekt und Status](https://winworldpc.com/screenshot/c39439e2-80a2-c692-222e-11c3a4e284a2/207ae280-a231-57c3-b111-c3a4c2a90f70)
|
||
- [Form View: Designer, Properties, Werkzeuge und Palette](https://winworldpc.com/screenshot/c39439e2-80a2-c692-222e-11c3a4e284a2/1865c3a7-0957-c3b1-11c3-a4c2a90f7054)
|
||
- [About: Dialog, aktiver Titel und Fokusrahmen](https://winworldpc.com/screenshot/c39439e2-80a2-c692-222e-11c3a4e284a2/0de2809a-6fc3-b757-c3b1-11c3a4c2a90f)
|
||
|
||
| Rolle | Beobachtung im Vorbild | Terminal Basic / Anpassung |
|
||
|---|---|---|
|
||
| Code | Helle Schrift auf dunklem Blau | DOS 7 auf 1; Auswahl invertiert dasselbe Paar |
|
||
| Aktiver Titel / Dialogtitel | Weiß auf Magenta | DOS 15 auf 5; dunkles Magenta, kein Pastellrosa |
|
||
| Inaktives Projekt / Rahmen | Schwarz auf Grau | DOS 0 auf 7; aktive Fenster zusätzlich mit Doppelrahmen |
|
||
| Menü, Projekt, Dialog | Schwarz auf Grau; Auswahl hell auf Schwarz | DOS 0 auf 7, Auswahl 15 auf 0 |
|
||
| Status | Schwarz auf Cyan | DOS 0 auf 3 |
|
||
| Designer-Werkzeuge | Schwarz auf Cyan | DOS 0 auf 3 |
|
||
| Properties Bar | Helle Schrift auf Cyan | Bewusste Kontrastanpassung: Schwarz auf Cyan |
|
||
| Fokusrahmen und Sizing Handles | Teilweise Weiß auf Grau | Schwarzer Doppelrahmen; schwarze Handle-Zeichen auf Gelb |
|
||
| Deaktivierte Beschriftungen | Nicht ausreichend durch diese Ansichten belegt | Lesbares Schwarz auf Grau, Menüs zusätzlich `×` und kursiv |
|
||
| Hilfe und Debuggermarkierungen | In diesen Ansichten nicht belegt | Dunkelblaue Hilfetitel/Links auf Grau; Fokus Weiß auf Blau; Breakpoints Weiß auf Rot, Ausführungszeile Schwarz auf Gelb |
|
||
|
||
Die Standardpaare müssen bei RGB-Ausgabe mindestens 4,5:1
|
||
Textkontrast erreichen; notwendige nichttextuelle Fokusmarkierungen mindestens
|
||
3:1. Die Zelltests prüfen auch Rahmen und Handles auf mindestens 4,5:1
|
||
gegen ihren eigenen Hintergrund. Benutzerauswahl in Display bleibt frei;
|
||
bestehende Optionsdateien werden nicht umgeschrieben. BASIC-Ausgabe und
|
||
Formularvorschau behalten ihre programmbestimmten Farbattribute, während
|
||
Designer-Werkzeuge und Handles die IDE-Farben verwenden.
|
||
|
||
Die sRGB-Kontrastberechnung ergibt für die wichtigsten Standardpaare:
|
||
|
||
| Rolle | RGB-Kontrast |
|
||
|---|---|
|
||
| Code / Hilfelink | 5,72:1 |
|
||
| Aktiver Titel | 6,38:1 |
|
||
| Menü / Dialog / deaktivierter Text | 9,04:1 |
|
||
| Status / Werkzeuge | 7,33:1 |
|
||
| Auswahl | 21,00:1 |
|
||
| Linkfokus / Debugger | 13,29:1 |
|
||
| Breakpoint | 7,75:1 |
|
||
| Ausführung / Handle | 19,69:1 |
|
||
|
||
### Prüffolge für Change 05
|
||
|
||
Je Pflichtzelle Windows amd64/Windows Terminal, macOS arm64/Terminal.app,
|
||
Linux amd64/xterm, Linux amd64/VTE, Linux arm64/xterm und Linux arm64/VTE:
|
||
|
||
1. Revision und Executable-Prüfsumme, OS-/Terminalversion, Profil,
|
||
`TERM`/`COLORTERM`, `NO_COLOR`, Transparenz und Dimmung protokollieren.
|
||
Mit einem frischen Optionsverzeichnis sowie einer Kopie der vorhandenen
|
||
Optionen prüfen; echte Benutzeroptionen dabei erhalten.
|
||
2. `tests/compat/datarohtext.bas` öffnen. Unmarkierten Editor und Ctrl+A-Auswahl
|
||
erfassen, anschließend mit F6 ins Projekt wechseln. Erwartet: dunkles
|
||
Blau, lesbare Auswahl, unterscheidbare aktive/inaktive Rahmen und Titel.
|
||
3. Run-Menü einschließlich deaktiviertem Eintrag, Options→Display und einen
|
||
Exportdialog mit ungültiger Eingabe öffnen. Erwartet: lesbare Mnemonics,
|
||
Fokusfelder, deaktivierte Texte und Fehlerhinweise.
|
||
4. F1-Hilfe öffnen, mit Tab einen Link fokussieren. F9-Breakpoint setzen und
|
||
mit F5 bis zum Halt laufen. Erwartet: lesbare Überschriften und Links,
|
||
sichtbare Breakpoint-/Ausführungsmarkierungen.
|
||
5. Neue Form anlegen, Toolbox und Palette öffnen, Control auswählen und
|
||
Größe ändern. Erwartet: cyanfarbene Werkzeuge/Properties, lesbare 16
|
||
Farbbeschriftungen und Handles; ForeColor/BackColor der Vorschau bleiben
|
||
unabhängig vom IDE-Theme.
|
||
6. Dieselben Ansichten mit absichtlich abweichender ANSI-Palette prüfen.
|
||
RGB-Farben von IDE und BASIC-Ausgabe müssen stabil bleiben. Transparenz und
|
||
Inaktivitätsdimmung getrennt ein-/ausschalten und Abweichungen als
|
||
Emulatorverhalten dokumentieren. Auch ohne `COLORTERM`, mit `TERM=vt100`
|
||
und mit `NO_COLOR=1` muss die Anwendung dieselben RGB-Werte ausgeben.
|
||
7. Options ändern, speichern und neu starten; Auswahl muss erhalten sein.
|
||
IDE beenden: globale Palette und normale Shell-Anzeige müssen erhalten sein.
|
||
|
||
Pro Schritt Soll/Ist, Bild-/Transkriptbezug und gegebenenfalls Befund führen.
|
||
Headless-Zelltests ersetzen diese visuellen Zielnachweise nicht. Die
|
||
vollständige Matrix ist noch offen; die Originalansichten oben sind keine
|
||
bestandenen TerminalBasic-Zielprüfungen.
|
||
|
||
## 5. Editor-Verhalten (Konfidenz: sicher; Keyword-Großschreibung: wahrscheinlich)
|
||
|
||
- **Syntax Checking** (Toggle, Standard an): beim Verlassen der Zeile wird
|
||
geprüft (Fehlerdialog), formatiert (Leerzeichen, Keywords groß) und die
|
||
Zeile sofort in ausführbare Form übersetzt. Für Terminal Basic heißt das:
|
||
zeilenweise Inkrementalübersetzung ist Teil des Editors (passt zur
|
||
Instant-Compile-Anforderung).
|
||
- **DECLARE**-Prototypen werden beim Speichern automatisch erzeugt;
|
||
DEFtype-Zeilen werden automatisch in neue Prozeduren übernommen.
|
||
- Tastatur: CUA (Ctrl+X/C/V/Z, Einfg, Pos1/Ende) **plus** WordStar-Chords
|
||
(Ctrl+Q…, Ctrl+Y Zeile löschen, Bookmarks Ctrl+K,0–3 / Ctrl+Q,0–3).
|
||
Prozedurnavigation **Shift+F2/Ctrl+F2**.
|
||
|
||
## 6. Run/Debug-Tasten (Konfidenz: sicher)
|
||
|
||
**Shift+F5** Start · **F5** Continue · **F4** Output-Screen-Toggle ·
|
||
**F7** bis Cursor · **F8** Single Step · **F10** Procedure Step ·
|
||
**F9** Breakpoint · **Shift+F9** Instant Watch · **Shift+F8/Shift+F10**
|
||
History rückwärts/vorwärts (bei History On) · **F12** Event Procedures.
|
||
Break-Modus: Immediate Window akzeptiert `PRINT`, Zuweisungen,
|
||
Prozeduraufrufe, `ERROR n`; „Set Next Statement" verlegt die Ausführung.
|
||
„Break on Errors" stoppt im Fehlerhandler.
|
||
|
||
## 7. Hilfe (Konfidenz: sicher)
|
||
|
||
**F1** kontextsensitiv (auch rechte Maustaste, konfigurierbar),
|
||
**Shift+F1** Using Help. Hyperlinks als ◄Thema►, Tab/Shift+Tab springt,
|
||
Enter folgt, **Alt+F1** zurück (20 Ebenen), Ctrl+F1 nächstes Topic,
|
||
Esc schließt. Hilfe im eigenen Fenster; Index, Contents, Keyboard-Guide,
|
||
Tutorial. → Terminal Basic: Hilfeinhalt sind die Markdown-Dokumente aus
|
||
`docs/` (Sprach- und Bibliotheksreferenz, Ist-Stand der Implementierung),
|
||
gerendert im Help-Fenster mit dynamischem Umbruch nach Fenstergröße;
|
||
Navigation wie im Vorbild (F1 kontextsensitiv, Tab/Enter, Alt+F1 zurück).
|
||
|
||
## 8. Statuszeile (Konfidenz: sicher; Caps/Num: unklar)
|
||
|
||
Unterste Zeile, Schwarz auf Cyan. Links kontextabhängige Shortcuts in
|
||
spitzen Klammern (`<Shift+F1=Help> <F6=Window> <F2=Code> <F5=Run>
|
||
<F8=Step>`), per Mausklick auslösbar. Rechts `Zeile:Spalte`
|
||
(`00001:001`). TODO: Caps/Num-Anzeige.
|
||
|
||
## 9. Start (Konfidenz: wahrscheinlich)
|
||
|
||
„Log-On Screen" (Begrüßung, Version, Copyright), danach leeres Projekt:
|
||
Code-Fenster „[1] Untitled", Project Window „Untitled". Kein
|
||
Survival-Guide-Dialog, kein Easy/Full-Menüs-Konzept. TODO: Splash vs. Dialog.
|
||
|
||
## 10. Interpreter vs. Compiler (Konfidenz: sicher)
|
||
|
||
Die Umgebung führt P-Code-übersetzte Zeilen sofort aus; der separate
|
||
Compiler erzeugt native EXEs (wahlweise standalone oder mit Runtime-Modul).
|
||
Nur die Umgebung hat: Immediate Window, Watches/Watchpoints, Breakpoints,
|
||
Stepping, History-Trace, Set Next Statement, automatische Bereichs-/
|
||
Überlaufprüfungen. → Terminal Basic: `tb` (IDE) und `tbc`
|
||
(Standalone-Compiler) teilen sich dieselbe TBVM, damit es — anders als im
|
||
Vorbild — **keine** Verhaltensunterschiede zwischen IDE-Lauf und
|
||
kompiliertem Programm gibt (dokumentierte Abweichung, gewollt).
|
||
|
||
## Übernahme-Entscheidungen für Terminal Basic
|
||
|
||
1. Menüstruktur, Tastenbelegung, Fensterverwaltung und Farbschema werden
|
||
originalgetreu übernommen (inkl. Magenta-Titelleiste, Options→Display).
|
||
2. Umgebung und Form Designer werden ein Prozess mit zwei Modi; der
|
||
F12/Shift+F12-Wechsel bleibt erhalten.
|
||
3. Zeilenweises Syntax-Checking mit Formatierung/Normalisierung ist
|
||
Editor-Standard (abschaltbar wie im Vorbild).
|
||
4. IDE-Lauf und `tbc`-Kompilat verhalten sich identisch (gleiche TBVM).
|
||
5. MS-DOS-spezifische Toolbox-Controls (Dir/Drive/File List) werden als
|
||
plattformneutrale Datei-Browser-Controls nachgebildet.
|
||
6. **Dynamische Terminalgröße** (2026-09-02): die IDE nutzt das gesamte
|
||
Terminal — Desktop, Fensterverwaltung und Formulare passen sich an;
|
||
Mindestgröße 80×25, darunter nur ein Hinweis (btop-artig).
|