Authentic GW-BASIC screen editor with 25x80 buffer, free cursor movement, enter-on-any-line, F1-F10 function keys, Insert/Overwrite toggle, KEY ON/OFF/LIST statement, and Ctrl+Break handling. HAL pointer swap routes all PRINT/LIST/error output through the TUI automatically. Piped mode unchanged (50/50 tests pass). Adds automated compatibility testing infrastructure: DOSBox-X headless config, PRINT-to-file transform script, and run_compat.sh with --generate and --compare modes for verifying output against real GWBASIC.EXE. Project renamed from gwbasic-c to GW-BASIC 2026.
1.7 KiB
1.7 KiB
Roadmap
Planned Features
- PRINT USING edge cases — Thousands separator (
,),**asterisk fill,**$combined,^^^^scientific notation,&full-string format - Binary SAVE/LOAD — Protected (,P) and tokenized binary formats
- DEF SEG / PEEK / POKE — Memory-mapped I/O emulation for common BIOS/screen addresses
- GET/PUT — Sprite capture and blit for graphics mode
- TUI color support — Map GW-BASIC COLOR attributes to ANSI 16-color output
- INKEY$ extended keys — Return CHR$(0) + scan code for arrow keys and function keys, matching the original two-byte encoding
IDE and Notebook Integration
- Jupyter kernel for GW-BASIC — A Jupyter Notebook kernel that runs
GW-BASIC programs cell-by-cell, with rich output for
PRINT, inline graphics rendering for drawing commands, and interactiveINPUTvia notebook widgets. Similar in spirit to foxkernel. - JetBrains plugin (IntelliJ/CLion) — Full-featured language plugin with
syntax highlighting, code completion, line number navigation, run
configurations, debugger integration (breakpoints via
STOP, variable inspection), structure view (line number outline), and error annotations. - VS Code extension — Language extension providing syntax highlighting (TextMate grammar), snippets, run/debug tasks, integrated terminal runner, and Language Server Protocol support for diagnostics and hover info.
Known Limitations
- No binary/protected file format support (ASCII only)
PEEK/POKEare no-ops- String garbage collection not implemented (uses
malloc/freeinstead) - Maximum 256 variables, 64 arrays, 16 FOR nesting, 24 GOSUB nesting