- Released nuBASIC 1.61
- Added ByRef / ByVal parameter qualifiers for Sub and Function definitions.
ByRef passes the caller's variable by reference so mutations inside the
procedure propagate back; ByVal (the default) passes by value. Both
scalars (Integer, Double, String, …) and user-defined Struct variables
can be passed ByRef. - Added support for the Call keyword:
Call ProcName(arg1, arg2)is now
a fully supported alternative to the bareProcName arg1, arg2syntax. - Added the Include / #Include directive:
Include "filename.bas"loads
and executes another source file at the point of the directive, enabling
multi-file programs and shared library files. - Added byref, byval, call, and include to the set of reserved keywords
so they cannot be used as user-defined variable or procedure names. - Updated built-in help:
Help ByRef,Help ByVal,Help Call, and
Help Includenow display documentation for the new language features. - Added SCREENLOCK, SCREENUNLOCK, and REFRESH instructions for flicker-free
graphics rendering. SCREENLOCK suspends the automatic per-primitive screen
refresh so that multiple drawing commands (Line, Rect, FillRect, Ellipse,
FillEllipse, TextOut, PlotImage, ...) accumulate on an off-screen back buffer.
SCREENUNLOCK presents the completed frame in a single blit. REFRESH forces an
immediate blit without altering the lock state (useful before blocking Input$
calls or game-over dialogs). - Fixed window repaint flickering on Windows: text and cursor are now composited
onto the off-screen back buffer before the single BitBlt to the screen,
eliminating intermediate visible states during WM_PAINT. - Updated all graphical example programs to use the new screen-lock pattern:
breakout2.bas, breakout3.bas, pingpong.bas, nutetris.bas, nutetris3d.bas,
raycast3d.bas, plane.bas, clock.bas, cartoon.bas, minesHunter.bas,
tictactoe.bas, line.bas, rosetta.bas, calc.bas. - Updated built-in help (HELP SCREENLOCK, HELP SCREENUNLOCK, HELP REFRESH).
- CLI: after a graphics program ends, the console automatically overlays a
"Press any key to continue..." prompt on the graphics frame and waits for a
key before restoring text mode. No explicit keypress code is needed in
BASIC programs. - Fixed rosetta.bas, parabola.bas, bitmap.bas: removed manual keypress code
now handled automatically by the CLI; rosetta.bas timing messages are now
drawn with TextOut at distinct positions so they no longer overlap. - IDE: fixed "Evaluate Selection" (F11) freezing after displaying a result or
error. The timer that dismisses the annotation was incorrectly re-invoking the
evaluation every three seconds instead of clearing it; errors also caused a
stale annotation to be shown. Both issues are now resolved.