Releases: EkBass/BazzBasic
BazzBasic 1.3b
April 2026
19th April 2026
Release as ver. 1.3b
18th April 2026
Fixed: Concanationing did not work with arrays
a$+= 5 ' worked
arr$(1) += 5 ' did not work
' but works now with ver. 1.3bAdded: several more example codes. Rosett-code solutions counter now a bit over 130.
Added: MOUSEHIDE and MOUSESHOW statemetens
MOUSEHIDE hides mouse cursor on graphics screen
MOUSESHOW brings it back.
Both works only when graphical screen is initialized (SCREEN 'mode')
Added: INBETWEEN.
Returns true, if n is between min and max and not equal to them
INBETWEEN(1, 1, 10) ' false
INBETWEEN(2, 1, 10) ' true
BETWEEN(1, 1, 10) ' true
BETWEEN(2, 1, 10) ' trueUnlike BETWEEN which returns true if n is equal or between min and max, INBETWEEN returns true if n is not equal and between min and max
Added: ATAN2().
PRINT ATAN2(x$, y$) ' 0.463647609000806113th April 2026
Fixed: LOADSHEET — sprite indexing now starts at 0
Sprites loaded from a sheet are now indexed from 0, consistent with all other arrays in BazzBasic. Previously the first sprite was at index 1.
Fixed: VSYNC — keyboard input no longer breaks after toggling VSync at runtime
VSYNC(TRUE/FALSE) now uses SDL_RenderSetVSync to switch vertical sync without destroying the renderer. Previously the renderer was recreated on each call, causing the window to briefly lose focus and SDL to reset the keyboard state — making KEYDOWN and INKEY unresponsive until the next keypress.
BazzBasic 1.3
April 2026
Version 1.3
Added: DRAWSTRING and LOADFONT — text rendering in graphics mode
Renders text directly to the SDL2 graphics surface. Requires SDL2_ttf.dll in the same directory as the interpreter. Prefer over PRINT in graphics mode — PRINT bypasses the SDL2 rendering pipeline and causes flickering.
' Default font (Arial, size 20)
DRAWSTRING "Hello!", 100, 200, RGB(255, 255, 255)
' Load alternative font — becomes the new active font
LOADFONT "myfont.ttf", 24
DRAWSTRING "Hello!", 100, 200, RGB(255, 255, 255)
' Reset to default (Arial, size 20)
LOADFONTDRAWSTRING positions text by its top-left corner. Copy .ttf files next to your .bas for portability — Windows system fonts can be referenced by full path but are not recommended for distribution.
Added: ROWCOUNT — count array rows
Returns the number of distinct first-dimension keys in an array.
PRINT ROWCOUNT(myArray$)Added: ARGCOUNT and ARGS() — command-line arguments
Access command-line arguments passed to the program.
PRINT ARGCOUNT ' Number of arguments
PRINT ARGS(0) ' First argumentAdded: compound assignment operators
Shorthand for common arithmetic assignments. Works on variables ($), not constants (#).
x$ += 5 ' x$ = x$ + 5
x$ -= 2 ' x$ = x$ - 2
x$ *= 3 ' x$ = x$ * 3
x$ /= 4 ' x$ = x$ / 4
str$ += " world" ' String concatenationChanged: INSTR() — case-sensitivity parameter
INSTR now accepts an optional case-sensitivity flag.
PRINT INSTR("Hello World", "world") ' 0 (case-sensitive, not found)
PRINT INSTR("Hello World", "world", 0) ' 7 (case-insensitive)Changed: math constants now use # suffix
PI, HPI, QPI, and TAU are now PI#, HPI#, QPI#, TAU# for consistency with the rest of the language.
Changed: IDE and CLI improvements
| Menu | Shortcut | Action | CLI option |
|---|---|---|---|
| File | Ctrl+N | New file | BazzBasic.exe |
| File | Ctrl+O | Open file | none |
| File | Ctrl+S | Save file | none |
| File | Ctrl+Shift+S | Save As | none |
| File | Ctrl+W | Close tab | none |
| File | Alt+F4 | Exit | none |
| Edit | Ctrl+F | Find | none |
| Edit | Ctrl+H | Replace | none |
| Run | F5 | Run Program | BazzBasic.exe file.bas |
| Run | — | Compile as Exe | BazzBasic.exe -exe file.bas |
| Run | — | Compile as Library (.bb) | BazzBasic.exe -lib file.bas |
| Help | — | About | BazzBasic.exe -v |
| Help | — | Beginner's Guide | BazzBasic.exe -guide |
| Help | — | Check For Updates | BazzBasic.exe -checkupdates |
New files now open with a starter template:
' BazzBasic version 1.3
' https://ekbass.github.io/BazzBasic/Bugfix: early RETURN inside FOR loop left function scope dirty
If a function returned early (e.g. via RETURN inside a FOR loop), local variables were not cleared. This caused stale values on subsequent calls to the same function. Now fixed.