fix(interp): treat DECLARE parameter names as placeholders per QB45 master
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sat, 26 Sep 2026 12:31:48 +0000 (15:31 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Sat, 26 Sep 2026 12:31:48 +0000 (15:31 +0300)
commitc980f6d81e65f585348f47422225f18579868708
treecb08348b0ffce6cf9daa029dfc2288e2a360bc6b
parent5204b1b97041bfd26aefd39cbfcba5fe76ec8861
fix(interp): treat DECLARE parameter names as placeholders per QB45

- bindScope no longer registers the argument cell under a DECLARE-only
  parameter name; only the definition's names bind, matching QB45 where
  DECLARE names are placeholders. The declared parameter still
  contributes its type (by-value cell kind, array/asTyped flags).
  Previously a name mismatch aliased locals to byref arguments
  (truth.bas teeslg's x2 wrote into its caller's x2); verified
  pixel-identical against QB.EXE in DOSBox. Adds regression test
  declareParameterNamesArePlaceholders.
- GameDriver gains --textdump/--textcell: TextDump recognizes each 8xN
  screen cell against the built-in CP437 VGA font into diffable text
  (custom glyphs get stable private-use code points), written wherever
  a $ screenshot lands or at end of run.
src/main/java/eu/svjatoslav/crtbasic/interp/Interpreter.java
src/test/java/eu/svjatoslav/crtbasic/drivers/GameDriver.java
src/test/java/eu/svjatoslav/crtbasic/drivers/TextDump.java [new file with mode: 0644]
src/test/java/eu/svjatoslav/crtbasic/interp/InterpreterFeaturesTest.java