github eantcal/nubasic v1.61.0
nuBASIC v.1.61

7 hours ago
nubasicBanner
  • 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 bare ProcName arg1, arg2 syntax.
  • 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 Include now 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.

Don't miss a new nubasic release

NewReleases is sending notifications on new releases.