Setzt den OpenSpec-Change phase-3-ortszeit um (21/21 Aufgaben) und zieht
damit die in Phase 3 eingegangene Abweichung zurueck: DATE$, TIME$, TIMER
und NOW rechnen in der Zeitzone des Rechners, TIMER zaehlt ab der lokalen
Mitternacht.
Versatzermittlung
- jiff 0.2.35 als Abhaengigkeit von tb-runtime
- datetime::utc_versatz(zeitpunkt) ist der einzige Aufrufpunkt der
Bibliothek; die Kalenderrechnung darunter bleibt Eigenimplementierung
und sieht sie nie -- zwei Kalendermodelle nebeneinander waeren eine
dauerhafte Fehlerquelle
- Der Versatz gilt je Zeitpunkt, nicht je Programmlauf: ein Programm, das
ueber eine Zeitumstellung hinweg laeuft, folgt ihr
Zonenzustand
- Zeitzone { System, Fest(i32), Unbekannt } im RtState
- Fest(n) macht Tests und Korpusprogramme unabhaengig von der Zone des
Testrechners; TZ waere prozessweit und set_var seit Rust 2024 unsafe
Rueckfallebene
- Ohne ermittelbare Zone gilt UTC, das Programm laeuft weiter
- tbc run meldet den Rueckfall einmal beim Start auf der Fehlerausgabe,
nicht je Abfrage -- ein stiller Wechsel waere ein Verstoss gegen den
Guiding Principle
Korpus
- Neue Direktive ' tb-tz: +-HH:MM im Harness
- zeitzone.bas prueft Ortszeit, TIMER ab lokaler Mitternacht und den
Programmversatz gegen eine gesetzte Uhrzeit
- datumzeit.bas auf die Direktive umgestellt; Sollausgabe unveraendert
Nebenbefund
- TIMER trennt jetzt ganze Sekunden (Ortszeit) vom Bruchteil
(Systemuhr). Ohne die Trennung waere TIMER in Zonen mit halbstuendigem
Versatz gesprungen.
Dokumentation: die Abweichung "Uhr laeuft in UTC" entfaellt aus
sprachreferenz.md; bibliothek.md und PLAN.md nachgezogen, jiff steht im
Stufe-2-Ideenspeicher neben crossterm.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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 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:
- 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.
- 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/READusw. - 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 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-ide |
tb: die integrierte Entwicklungsumgebung (TUI) zum Erstellen von Programmen |
Status
Projektrahmen. Die Implementierungs- und Explorationsschritte sind in 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.
Lizenz
MIT — siehe LICENSE.