- build_dos.sh: Linux-friendly cross-compile to DOS via OpenWatcom V2.
OpenWatcom's wmake on Linux can't apply the .c.obj implicit rule for
subdirectory paths, and Makefile.dos / Makefile.dos16 rely on DOS-
only commands like 'del'. Script invokes wcc / wcc386 directly,
tracks 16-bit vs 32-bit mode via a stamp file (auto-cleans on
switch), generates a wlink directive file (the brace-delimited file
list wouldn't survive shell quoting), and supports clean. The DOS
Makefiles still work on Windows / DOS hosts.
- tests/run_compiler_tests.sh: AOT compiler harness. For each .bas
in tests/programs/, compiles via gwbasic-compile -c, runs the
resulting executable, normalizes output and diffs against the
golden file from tests/expected/. Skip list covers chain/common
multi-file flows, hardware/timing-dependent programs, unnumbered
direct-mode programs (compiler requires line numbers), and
misc_stmts/run_file (interpreter-vs-compiler ON ERROR divergence).
Result: 56/56 pass.
- tests/run_dos_smoke.sh + dos_smoke.bas + expected: runs gwbasic16.exe
under DOSBox-X (flatpak) with a program that exercises arithmetic,
strings, control flow, GOSUB, FOR/NEXT, DATA/READ, DEF FN, OPEN/
PRINT#/CLOSE, and diffs against the interpreter's golden output.
Uses $HOME for the staging dir (DOSBox-X flatpak doesn't see /tmp).
- pkg/GWBASIC.LSM + pkg/build_pkg.sh: FreeDOS submission package.
Produces dist/gwbasic-<VERSION>.zip with the standard FreeDOS
layout (APPINFO/GWBASIC.LSM, BIN/GWBASIC.EXE, DOC/GWBASIC/{README,
CHANGES,LICENSE} with CRLF, SOURCE/GWBASIC/<full source>). Source
tree is filtered through git ls-files to exclude build artifacts.
- docs/Makefile: standard Sphinx Makefile so 'cd docs && make html'
works as documented in README.md.
- .github/workflows/ci.yml: split into two jobs. build-and-test now
also runs the compiler harness. New dos-cross-compile job caches
~/openwatcom-v2, downloads the OpenWatcom V2 snapshot if not
cached, builds both 16-bit and 32-bit DOS binaries, asserts size
bounds, and uploads them as artifacts.
- .gitignore: ignore .dos_build_mode (script's stamp), .link_dir/
(transient wlink directive dir), dist/ (package output).
23 lines
1.2 KiB
Plaintext
23 lines
1.2 KiB
Plaintext
Begin3
|
|
Title: GW-BASIC 2026
|
|
Version: 0.17.0
|
|
Entered-date: 2026-04-10
|
|
Description: A portable C reimplementation of Microsoft GW-BASIC, using
|
|
the original 8088 assembly source (released by Microsoft
|
|
in 2020) as the authoritative reference. Targets bug-
|
|
compatible behavior with classic GW-BASIC programs.
|
|
Includes a full-screen TUI editor that renders through
|
|
BIOS INT 10h on bare FreeDOS (no ANSI.SYS required), 100%
|
|
token coverage (all 144 GW-BASIC tokens), MBF on-disk file
|
|
format compatibility, and an ahead-of-time compiler
|
|
(Linux/POSIX builds only).
|
|
Keywords: BASIC, GW-BASIC, Microsoft, interpreter, retrocomputing
|
|
Author: Eremey Valetov <evv@msu.edu>
|
|
Maintained-by: Eremey Valetov <evv@msu.edu>
|
|
Primary-site: https://github.com/evvaletov/gw-basic-2026
|
|
Original-site: https://github.com/microsoft/GW-BASIC
|
|
Platforms: DOS, FreeDOS 1.4 (16-bit real mode), MS-DOS 5+, DOS/4GW
|
|
(32-bit protected mode); also Linux, macOS, BSD via CMake
|
|
Copying-policy: MIT License
|
|
End
|