Releases: EkBass/BazzBasic
BazzBasic 1.1
News and changes
These changes are about the current source code. These are effected once new binary release is published
Mar 2026
22nd Mar 2026
Released as version 1.1
22nd Mar 2026
At Rosetta code I got inspired to create pendulum animation.
pendulum_animation.bas
21st Mar 2026
BazzBasic-AI_guide.md is a tutorial for modern AI's. With it, AI can easily teach the user how to use BazzBasic.
Just download the file, attach it as project file or via prompt to AI and you are cool to go.
Unfortunately, the GamePad support I planned didn't make it to version 1.1
The reason is that the SDL2 library has been having problems for some time, especially with Bluetooth gamepads.
I didn't want to do something half-hearted, so the gamepad support is now on hold until SDL2 gets its library back in condition.
Instead, I added three other functions that I've had in mind for some time: BASE64ENCODE, BASE64DECODE and SHA256
21st Mar 2026
Added JSON support: ASJSON, ASARRAY, LOADJSON, SAVEJSON
DIM data$
data$("name") = "Alice"
data$("score") = 9999
data$("address,city") = "New York"
LET json$ = ASJSON(data$)
' Output: {"name":"Alice","score":9999,"address":{"city":"New York"}}
DIM back$
LET count$ = ASARRAY(back$, json$)
PRINT back$("name") ' Alice
PRINT back$("address,city") ' New York
SAVEJSON data$, "save.json"
DIM loaded$
LOADJSON loaded$, "save.json"Added BASE64ENCODE, BASE64DECODE and SHA256
LET encoded$ = BASE64ENCODE("Hello, World!")
PRINT encoded$ ' SGVsbG8sIFdvcmxkIQ==
LET decoded$ = BASE64DECODE(encoded$)
PRINT decoded$ ' Hello, World!
LET hash$ = SHA256("password123")
PRINT hash$ ' ef92b778... (64-char lowercase hex)14th Mar 2026
Sound system fix — parallel audio playback
Problem: The old implementation loaded MP3/OGG/FLAC files with Mix_LoadMUS() which uses the SDL2_mixer's global Music channel — only one sound at a time.
Fixes:
- All sounds are now loaded with
Mix_LoadWAV()→ play on their own Mix_Channels in parallel SDL_INIT_AUDIOadded toSDL_Init()call inGraphics.csSoundManagercallsSDL_Init+SDL_InitSubSystemto ensure audio subsystem even withoutSCREENcommandSDL_AUDIODRIVER=directsoundset inProgram.csto work around WASAPI issues (Nahimic middleware causes "Invalid Handle" error in WASAPI)PlayOnceWaitgets 50ms delay before polling loop due to DirectSound startup delay
7th Mar 2026
Added HTTP support for LOADIMAGE
LOADIMAGE with url
LET sprite$ = LOADIMAGE("https://example.com/sprite.png")
' → downloads "sprite.png" to root of your program
' → sprite$ works just as with normal file load
' to remove or move the downloaded file
SHELL("move sprite.png images\sprite.png") ' move to subfolder
' or
FileDelete "sprite.png" ' just delete itAdded WAITKEY() function.
WAITKEY
Halts the execution until requested key is pressed.
' Wait just the ENTER key
PRINT "ENTER"
PRINT WAITKEY(KEY_ENTER#) ' output: 13
' Wait any of "a", "b" or "esc" keys
PRINT "A, B or ESC"
PRINT WAITKEY(KEY_A#, KEY_B#, KEY_ESC#) ' output: depends of your choice of key
PRINT "Press any key..."
LET a$ = WAITKEY()
PRINT a$ ' output: val of key you pressed2nd Mar 2026
Added SHELL feature
' SHELL arg$, timeout$
' Sends a command to the system command interpreter
' Param *timeout$* is optional. If not given, standard 5000 milliseconds used for timeout.
' with default timeout option
LET a$ = SHELL("dir *.txt")
PRINT a$
' sets timeout to 2 seconds
' 1000ms = 1 second etc.
LET a$ = SHELL("dir *.txt", 2000)
PRINT a$BazzBasic 1.0
Released as version 1.0, source and binary
changes.md
Read changes.md to see new/adjusted features.
ABOUT
- BazzBasic is built around one simple idea: starting programming should feel nice and even fun.
- Ease of learning, comfort of exploration and small but important moments of success.
- Just like the classic BASICs of decades past, but with a fresh and modern feel.
BASIC
- After more than six decades, BASIC is still one of the easiest ways to reveal your curiosity.
- It's easy to get started with and offers a rewarding experience with little effort.
- Simple syntax, modern features, and you'll be creating your first little game in a couple of evenings, hours perhaps.
CURIOSITY
- Many of today's experienced programmers started in the 80s by familiarizing themselves with the BASIC interpreters that came with home computers of the time.
- The movement of a yellow ball on the screen, a program that printed lottery numbers, a handwritten text adventure... the list is endless.
- All fueled by one thing: Curiosity.