Skip to content

Releases: EkBass/BazzBasic

BazzBasic 1.1

22 Mar 08:03

Choose a tag to compare

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.

Technical guide ment for AI


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_AUDIO added to SDL_Init() call in Graphics.cs
  • SoundManager calls SDL_Init + SDL_InitSubSystem to ensure audio subsystem even without SCREEN command
  • SDL_AUDIODRIVER=directsound set in Program.cs to work around WASAPI issues (Nahimic middleware causes "Invalid Handle" error in WASAPI)
  • PlayOnceWait gets 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 it

Added 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 pressed

2nd 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

22 Feb 13:35

Choose a tag to compare

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.