Projektrahmen: Cargo-Workspace, README und PLAN

Workspace mit sechs Crates (tb-frontend, tb-vm, tb-runtime, tb-ui,
tb-cli, tb-ide) als Geruest fuer die Re-Implementierung des
DOS-BASIC-Dialekts. Binaries: tbdos (IDE/TUI) und tbdosc
(Standalone-Compiler). PLAN.md dokumentiert Phasen, Explorations-
schritte und die Abwaegung der VM-/Runtime-Optionen (Entscheidung:
eigene Bytecode-VM, TBVM).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-01 16:21:09 +02:00
commit 5821ace0cf
31 changed files with 1161 additions and 0 deletions

12
crates/tb-vm/Cargo.toml Normal file
View File

@@ -0,0 +1,12 @@
[package]
name = "tb-vm"
description = "Terminal Basic: Bytecode-Definition, Codegenerator und virtuelle Maschine"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
[dependencies]
tb-frontend.workspace = true
thiserror.workspace = true
log.workspace = true

View File

@@ -0,0 +1,3 @@
//! Bytecode-Format der TBVM: Opcodes, Konstantenpool, Modul-/Prozedurtabellen.
// Platzhalter — wird in Phase 2 ausgearbeitet (siehe PLAN.md)

View File

@@ -0,0 +1,3 @@
//! Codegenerator: übersetzt den typgeprüften AST aus `tb-frontend` in TBVM-Bytecode.
// Platzhalter — wird in Phase 2 ausgearbeitet (siehe PLAN.md)

View File

@@ -0,0 +1,6 @@
//! Interpreterschleife der TBVM.
//!
//! Läuft kooperativ: die Ausführung kann an Anweisungsgrenzen angehalten werden
//! (Debugger, Ereignisverarbeitung der Forms-Engine, Strg+Untbr).
// Platzhalter — wird in Phase 2 ausgearbeitet (siehe PLAN.md)

13
crates/tb-vm/src/lib.rs Normal file
View File

@@ -0,0 +1,13 @@
//! Virtuelle Maschine für Terminal Basic (TBVM).
//!
//! Eigene Stack-basierte Bytecode-VM (Entscheidung siehe PLAN.md, Abschnitt
//! „VM-/Runtime-Optionen"). Kernanforderungen:
//! - Serialisierbares Bytecode-Format (`.tbc`) als Compiler-Ziel
//! - Unterbrechbar/wiederaufnehmbar für Debugger (Einzelschritt, Breakpoints)
//! und für die ereignisgesteuerte Forms-Hauptschleife
//! - BASIC-Fehlersemantik (`ON ERROR GOTO`, `RESUME`, `ERR`/`ERL`)
//! - `GOSUB`/`RETURN` neben regulären Prozeduraufrufen
pub mod bytecode;
pub mod codegen;
pub mod interp;