Files
gw-basic-2026/docs/roadmap.md
T
Eremey Valetov 0bacfcef6c Implement VIEW/WINDOW/PALETTE, PMAP, fix MBF float format, update to v0.13.0
Graphics viewport and coordinate mapping:
- VIEW [[SCREEN] (x1,y1)-(x2,y2) [,[fill][,border]]] with clipping
- WINDOW [[SCREEN] (x1,y1)-(x2,y2)] with Cartesian/screen modes
- PALETTE [attribute, color] with CGA 16-color remapping
- PMAP(coord, func) for logical/physical coordinate conversion
- All graphics statements (PSET, LINE, CIRCLE, PAINT, GET/PUT) respect
  viewport clipping and WINDOW coordinate mapping

MBF (Microsoft Binary Format) float support:
- CVS/CVD now interpret bytes as MBF format (compatible with real GW-BASIC)
- MKS$/MKD$ now produce MBF-encoded bytes
- Fixed shift errors in MBF↔IEEE conversion routines (single: 1→0, double: 4→3)
- Random-access file I/O now byte-compatible with original GWBASIC.EXE

66 tests (2 new), 61 compat matches (up from 58).
2026-03-10 22:20:58 -04:00

41 lines
2.0 KiB
Markdown

# Roadmap
## The Big One
- **GW-BASIC 2026 Compiler** — ahead-of-time compilation of BASIC programs to
native executables. Because nothing says "premature optimization" like
compiling a language designed for an interpreter running on a 4.77 MHz 8088.
But we've come this far, so why not? Likely approach: translate the token
stream to C and lean on GCC/Clang for the heavy lifting.
## Planned Features
- **Hardware I/O simulator** — an optional emulation layer for `OUT`, `INP`,
`WAIT`, `MOTOR`, and friends. The idea is to provide a virtual PC peripheral
bus so retro programs that talk to the speaker, joystick port, or parallel
interface can do *something* useful instead of silently no-oping. Think of it
as a tiny museum exhibit for vintage BASIC hardware hacking.
- **MBF format support for binary LOAD** — convert Microsoft Binary Format
float constants when loading files saved by the original GWBASIC.EXE
## 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 interactive `INPUT` via notebook widgets.
Similar in spirit to [foxkernel](https://github.com/evvaletov/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
- String garbage collection not implemented (uses `malloc`/`free` instead)
- Maximum 256 variables, 64 arrays, 16 FOR nesting, 24 GOSUB nesting,
16 WHILE nesting
- Hardware I/O (`OUT`, `INP`, `WAIT`, `COM`, `MOTOR`) not yet implemented