Files
TerminalBasic/README.md

86 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Terminal Basic
Eine plattformübergreifende **Re-Imagination** des letzten großen BASIC-Dialekts
für DOS (1992) — Sprache, Laufzeitbibliothek, Forms-Engine und IDE — in Rust,
mit [Ratatui](https://ratatui.rs) als Terminal-UI-Schicht.
> Dieses Projekt ist eine unabhängige Neuentwicklung und steht in keiner
> Verbindung zu Microsoft. Produktnamen Dritter werden bewusst nicht verwendet.
## Leitbild
Terminal Basic ist keine sklavische 1:1-Reimplementierung, sondern eine
spirituelle Neuauflage: ein BASIC, mit dem man heute **Terminal-Tools baut**
CLI-Werkzeuge ebenso wie TUI-Anwendungen. Der Weg dorthin:
1. **Erst die Re-Imagination:** gleiche UI/UX wie das Vorbild, gleicher
Sprachstandard, gleiche Standardbibliothek. Wer das Vorbild kannte, fühlt
sich sofort zu Hause; bestehende Programme laufen weitgehend unverändert.
2. **Dann die Anreicherung:** über die Zeit kommen bewusst Elemente außerhalb
des Vorbilds dazu (moderne Terminal-Fähigkeiten, Sprachkomfort,
Bibliotheken). Erweiterungen sind additiv und brechen den Kernstandard
nicht.
Wo Alt und Neu kollidieren, gewinnt die Plattform von heute — deshalb z. B.
durchgängig UTF-8 statt Codepage 437 und keine Emulation von DOS-Hardware.
## Ziele
- **Volle Sprachkompatibilität**: alle Sprachelemente des Dialekts —
Prozeduren (`SUB`/`FUNCTION`), benutzerdefinierte Typen, `GOSUB`,
`ON ERROR`/`RESUME`, Typ-Suffixe, feste und dynamische Arrays,
`PRINT USING`, `DATA`/`READ` usw.
- **Volle Library-Kompatibilität für die DOS-Oberflächenprogrammierung**:
die ereignisgesteuerte Forms-Engine mit allen Steuerelementen, Menüs,
Maus- und Tastaturereignissen, nachgebildet auf einem emulierten
Textbildschirm (16 Farben) über Ratatui. Bewusste Modernisierungen:
durchgängig UTF-8/Unicode statt Codepage 437, und **dynamische
Terminalgröße** statt festem 80×25 — IDE und erzeugte Programme passen
sich der Fenstergröße an (Mindestgröße 80×25; darunter erscheint nur
ein Hinweis, wie bei btop).
- **Plattformübergreifend**: läuft in Terminals unter Linux, macOS und Windows.
- **Compiler + VM**: der Compiler erzeugt Bytecode für eine eigene virtuelle
Maschine (TBVM); die Abwägung der Runtime-Optionen ist in
[PLAN.md](PLAN.md) dokumentiert.
- **IDE im Terminal**: Nachbildung der klassischen DOS-IDE mit Editor,
Formular-Designer, Direktfenster und Debugger.
## Aufbau des Workspace
| Crate | Inhalt |
|---|---|
| `tb-frontend` | Lexer, Parser, AST, semantische Analyse |
| `tb-vm` | Bytecode-Format, Codegenerator, virtuelle Maschine (TBVM) |
| `tb-runtime` | Laufzeitbibliothek: Strings, Mathematik, Datei-E/A, Datum/Zeit, Fehlercodes |
| `tb-ui` | Textbildschirm-Emulation und Forms-Engine auf Ratatui |
| `tb-cli` | `tbc`: Standalone-Compiler — wandelt Quellen und Projekte in binäre Ergebnisse um |
| `tb-runner` | Gemeinsame CLI-Laufsteuerung und native Runtime-Vorlage `tbrt` |
| `tb-export` | Geprüfte Vorlagen, native Nutzlast und sichere Ausgabeveröffentlichung |
| `tb-ide` | `tb`: die integrierte Entwicklungsumgebung (TUI) zum Erstellen von Programmen |
## Status
Projektrahmen. Die Implementierungs- und Explorationsschritte sind in
[PLAN.md](PLAN.md) beschrieben; dort wird der Fortschritt fortgeschrieben.
## Bauen
```
cargo build
cargo run -p tb-cli # tbc — Standalone-Compiler
cargo run -p tb-ide # tb — IDE (TUI)
```
Benötigt wird nur eine aktuelle stabile Rust-Toolchain.
Die [IDE-Bedienung](docs/ide-bedienung.md) beschreibt Menüs, Fenster,
Speichern, Optionen und die Exportdialoge einschließlich ihres aktuellen
Umsetzungsstands.
## Lizenz
MIT — siehe [LICENSE](LICENSE).
Native Programme lassen sich mit `tbc build --exe` aus vorgebauten Runtime-Vorlagen
erzeugen. Aufrufe, Zielvoraussetzungen und Abnahme: [Native Executables](docs/native-executables.md).