12.26 (26 March 2023)

  • FLTK and SDL version numbers now included in SBVER
  • Fixed “0 IMP 0” returns now correct result 1 (Joe7M)
  • Fixed BIN and changes to return values of POLYCENT and POLYAREA (Joe7M)
  • Fixed DIM lower bound (Joe7M)
  • Fixed EQV bug. “0 EQV 0” will return correct result “1” (Joe7M)
  • Fixed RECT FILLED when the coordinates are inverted
  • Fixed SPLIT command - empty input now gives zero length output
  • Fixed a problem with TRIM which broke the TinyBASIC.bas sample
  • Fixed an issue with window resizing #144
  • Fixed bug in BGETC when using sockets (Joe7M)
  • Fixed display of floating point numbers with high precision
  • Fixed editor display issues with DOS line-endings
  • Fixed for BIN and changes to return values of POLYCENT and POLYAREA (Joe7M)
  • Fixed functions Polyarea, Polycent (Joe7M)
  • Fixed line-chart line drawing to use current foreground color
  • Fixed printing chr(0) into a file or network interface
  • INPUT #F; now supports up to 64 parameters
  • Implemented STATMEDIAN() to calculate the median of a data sample in statistics (Joe7M)
  • Implemented STATSTD() to calculate standard deviation (Joe7M)
  • RGB and RGBF now clamp parameters (Joe7M)
  • Updated CHART line drawing to use current foreground color

12.24 (19 June 2022)

  • Implemented emscripten web version
  • add support for“file.png”) as per console
  • ARRAY now parses json with true/false correctly
  • Fix #131 - Scalar * Vector doesnt work
  • Fix array access with embedded strings #136
  • Fixed hashmap access issue
  • Fixed http_read to handle large HTTP headers
  • Implemented window.setLocation(x,y) #102
  • Removed ‘Meaningless’ CDBL, CINT, CREAL. These can be poly-filled with ‘DEF’ if required.
  • Update plugin system to allow loading to be driven by the IMPORT statement
  • m3Apply no longer crashes if the second argument is not an array
  • parse JSON with SB “;” dimension syntax
  • Added -i command switch for live mode

This will run the BASIC program in a loop. It can be used with the debug module to rerun whenever the source code changes:

import debug
run("xdotool windowactivate `xdotool search --onlyvisible --name \"Emacs\"`")
while (!debug.IsSourceModified())
  rem main loop

12.23 (30 August 2021)

  • Allow RGB to be used with image array passed to IMAGE
  • Fix CIRCLE command to ensure radius uses the WINDOW coordinate system
  • Fix PSET display of extra pixel
  • Fix RGB handling with IMAGE
  • Fix array append regression #122
  • Fix crash when line length limit exceeded
  • Fix live edit when start path contains unicode characters #123
  • Fix maDrawRGB() buffer overflow
  • Fix potential memory leak using IMAGE
  • Fix square bracket field access issue
  • Fix to ensure the default VIEW is maintained during resizing
  • Fix to make image save and load compatible
  • Fixes ‘Socket Client doesn’t receive byte with value 13’ #112
  • Fixes TSAVE of arrays includes extra null character. #119
  • Handle octal escapes correctly
  • Implemented image opacity handling
  • Implemented image.clip(left,top,right,bottom)
  • Update editor to handle unit errors
  • Validate window dimensions on loading to prevent hidden window
  • added xpm validation check.
  • fix image placement when using img.clip()
  • implemented image.draw()
  • make image save and load compatible.
  • prevent invalid char input with ALT+ESC keystroke
  • rand() replacement using PCG
  • updated sub-modules

12.20 (8 January 2021)

  • Fix to allow c-modules to be called from units
  • Fix to allow multiple modules and units within same program
  • Implemented c-styles escape sequences
  • Add support for inline assignment of export variables
  • Add support for unit alias names
  • Ensure INT datatype is always 64 bits
  • Give error when file not found
  • Update editor popup appearance
  • Implemented restoring the cursor position
  • Added modules raylib, nuklear, websocket, glfw and clipboard.

12.19 (16 July 2020)

  • Fix ABSMIN/ABSMAX transposed #96
  • Fix crash when passing non-array to CHART
  • Fix to array destination
  • Fix INPUT crash #99
  • Implement DEFINEKEY undo #92
  • Implement colour themes
  • FLTK: Implement line numbers colours #93
  • SDL: Restore window size #95
  • SDL: Show icon in linux build

0.12.18 (28 March 2020)

  • SDL: fix issue #81 - numlock handling
  • FLTK: added live editing menu item
  • COMMON: increase stack size to 1024
  • COMMON: Fix path for HOME constant

0.12.17 (22 December 2019)

  • COMMON: Implement select case by func. Issue #83
  • COMMON: fix dirwalk error handling
  • FLTK: version recreated for FLTK v1.4.0
  • SDL: add menu control key indicators
  • SDL: fix issue #81 - numlock handling
  • SDL: now uses miniaudio library for sound

0.12.15 / 0.12.16 (only released for Android)

  • SDL: added -n command line option to run then not pause for back key
  • SDL: update editor find and replace
  • COMMON: Implemented - FOR character IN string
  • UI: ALT+F4 from edit/run now returns to edit
  • UI: avoid flicker from with ALT+F4 -e edit startup
  • UI: Edit enter now continues prior line comment
  • UI: added kill-word editor command (alt+d)
  • UI: added select-word editor command (alt+w)
  • UI: find command primed from editor selection
  • Fix crash when using GOTO with a non-existent label
  • Fix crash in editor when double tapping empty document

0.12.14 (18 October 2018)

  • Changed UI display from black to be a slightly lighter onyx color.
  • Implemented embedding octal codes to allow: print “\033[1mBold\033[0m”
  • Fix crash when passing zero as format argument to DATEFMT
  • Fix crash when attempting to load an image from a failed network connection
  • Fix error message when command “LINE INPUT” attempts to read a non open file
  • Fix navigation when network access down then available
  • Minor runtime optimization

0.12.13 (13 September 2018)

  • Added F8 key live edit mode
  • Added solarized color schemes
  • Added window.setSize function
  • Add limited support embedded octal values in strings
  • F2 key in editor now launched keyword help into updated web site
  • F11 key in editor now toggles fullscreen
  • Fix TLOAD input error handling
  • Fix incorrect file loading with ALT+1-9 command
  • Fix problem with SEQ command
  • Fix trailing spaces with LOCAL command when terminated with comma
  • UNITPATH replaced with SBASICPATH which also works for modules

0.12.12 (4 Feb 2018)

  • Fix issue with creating 6D arrays
  • Increased default stack size

0.12.11 (30 Dec 2017)

  • Fix issue with image save() command to ensure resulting array has correct dimensions
  • Fix issue with display driver escape ESCm (reset scroll position)
  • Build with SDL2-2.0.5 to avoid issues with audio using SDL2-2.0.7

0.12.10 (25 Dec 2017)

  • COMMON: Add support code arrays declared over multiple lines
  • COMMON: Assign multiple variables from an ARRAY (1)
  • COMMON: Can now declare an empty array with: a=[]
  • COMMON: FUNC can now use RETURN statement as synonym for FUNCNAME=result (1)
  • COMMON: Fix FUNC call as pseudo class method (1)
  • COMMON: Fix PROGLINE when using multi-line strings
  • COMMON: Fix handling for code array passed as function argument
  • COMMON: Fix inline local variable declaration for complex assignments
  • COMMON: Fix issue when LOCAL used inside while loop
  • COMMON: Fix issue with INPUT command
  • COMMON: Fix line number count when using multi-line strings
  • COMMON: Fix potential infinite loop using the MAX command
  • COMMON: Fix square bracket access to 2D arrays
  • COMMON: Fix var scope errors reported by cppcheck
  • COMMON: Fix win32 run regression
  • COMMON: Implemented Maxint system constant (1)
  • COMMON: Implemented Nil system constant (1)
  • COMMON: Implemented OPTION AUTOLOCAL runtime option (2)
  • COMMON: LEFT, RIGHT, REPLACE, INSTR, RINSTR no longer error on invalid pos input
  • COMMON: MID command now returns blank for invalid index input
  • COMMON: Now errors when using a keyword as part of a MAP variable
  • COMMON: Performance optimisations
  • COMMON: REPLACE str argument can now be a number type
  • COMMON: SUB can now use RETURN statement
  • COMMON: VAL command now ignored any input trailing non digit chars
  • COMMON: dirwalk callback now provides properties path,name,depth,mtime,size,dir
  • COMMON: raise error when FUNC return value not assigned
  • COMMON: removed experimental reference variable concept
  • COMMON: update png and editor libs
  • SDL: Added F8 publish command
  • SDL: Debugger only shows local variables when in SUB or FUNC
  • SDL: Editor now shows navigable stack trace in error message
  • SDL: Fix cursor error position when running from selected text
  • SDL: Moved “Live edit” mode to editor via F8 key
  • SDL: PEN OFF command now hides the cursor
  • SDL: Added ALT+= command
  • SDL: Update ALT+. to work with error handling
  • UI: The FORM command now reports an error when IMAGE input fails to load
  • UI: add missing ‘Select All’ menu option
  • UI: shell now displays size and date columns
  • ANDROID: Fix crash when displaying an alert with extended ascii chars
  • ANDROID: Fix crash when exporting from IDE
  • ANDROID: Fix exit when navigating to non-permitted path
  • ANDROID: add missing key mappings for DEL,ESC,HOME,BRK,FN(1-12)
  • ANDROID: handle screen rotation
  1. See 2048.bas for examples
  2. OPTION AUTOLOCAL causes all variables used only inside a SUB or FUNC to have local scope.

0.12.9 (April 15 2017)

  • ANDROID: Allow input of special characters
  • ANDROID: Added share command
  • ANDROID: Fix ‘?’ key input using gboard
  • ANDROID: Select alternative font
  • COMMON: Fix compile warnings from clang
  • COMMON: Removed debugging output from RUN (windows build)
  • COMMON: Allow array access via [] characters
  • COMMON: Can now attach SUB/FUNCs as MAP fields
  • COMMON: Clear out of scope CATCH variables
  • COMMON: Create MAP from single line JSON without ARRAY command
  • COMMON: Fix internal error handling long string variables
  • COMMON: Python style here-document
  • COMMON: Update parameter handling for performance
  • UI: Allow input of special characters
  • UI: Added “Save-As” option to the file menu (thanks Josip)
  • UI: CIRCLE drawing is now anti-aliased
  • UI: Fixed cursor when displaying the popup while editing
  • UI: Added menu widget (three vertical dots)
  • UI: Editor display cursor row/col position
  • UI: Improved CIRCLE performance
  • UI: Show unsaved indicator following paste
  • UI: Throw error when invalid .WAV passes to PLAY

0.12.8 (October 22 2016)

  • Added android TTS handling.
  • Added android SENSOR handling.
  • Added android LOCATION handling.
  • Added sound. Play .WAV files using PLAY(“file://” + path).
  • Fixed web server file handling in windows version.
  • Fixed regression with array parsing.
  • Updated error message when calling built-in FUNC without assigning the result.
  • Fixed TAB to use character positions not pixels.
  • Fixed issue with nested try/catch.
  • Fixed NOSOUND.
  • Fixed error handling for invalid JOIN input.
  • Fixed SPLIT to include final empty position.
  • Fixed Clear keyboard buffer before pause.
  • Fixed cursor display with INPUT command.
  • Fixed error handling when passing arg to built-in no-arg FUNCS.
  • Fixed an issue with screenshots on windows caused by path handling.

0.12.7 (September 17 2016)

  • Fixed editor cursor flicker issue
  • Fixed editor display issue with escaped quotes
  • Fixed editor find dialog paste support
  • Fixed editor scrolling after paste
  • Fixed editor stability issues with undo/redo
  • Fixed error with textScreen sub-command
  • Fixed infinite loop when printing FUNC with extra args
  • Fixed issue with INSTR (node/1600)
  • Fixed memory access issue with JOIN (node/1586)
  • Fixed memory access issue with SPRINT (node/1594)
  • Fixed memory issue with REPLACE
  • Fixed memory leak with LINPUT command
  • Fixed screen switching when program screen has different font size
  • Fixed memory access issues uncovered with new test all.bas
  • Fixed value of i when FOR loop body not executed (node/1611)
  • Implemented editor now allows run by selection
  • Implemented editor widget now remembers the undo buffer between program runs
  • Implemented editor F10 option to set the command$ variable
  • Implemented editor double click to select word
  • Implemented var pooling
  • Updated ARRAY command to handle 2d arrays
  • Updated MAP handling for performance
  • Updated error message formatting
  • Updated welcome screen

0.12.6 (May, 15 2016)

  • Fix to prevent const overwriting another const
  • Updated MID and REPLACE for performance
  • POINT(0) and POINT(1) values now reset with each program run
  • POINT(-x, -y) now provides access to the base screen image. For better
  • performance use the IMAGE.SAVE sub command
  • Fixes for unit case sensitivity
  • Fixes for RUN/EXEC
  • Fixed memory handling issues with UNITs
  • Fixed memory issue related to SUB/FUNC pointers
  • Removed BALLOC, MALLOC and VADR keywords. Removed duplicate ENVIRON
  • Removed system constants BPP and VIDADR, OSNAME, LINECHART, BARCHART
  • Added TIMESTAMP to return the modified-datetime of a file
  • Added LSHIFT and RSHIFT bit shift operators
  • SBVER now includes build information
  • TICKS now returns millisecond intervals
  • Refactor eval() for performance
  • Fixed some memory leaks in the ui handler
  • Editor now restores cursor when returning from run
  • Editor now displays the correct filename in the title bar
  • Added “industrial” editor theme from Shian (slot 2)
  • Fixed editor highlighting
  • Runtime errors now show source screen with red error highlighter
  • Form refresh command now takes an boolean arg, true=push ui state to vars
  • The IMAGE argument can now be PNG data stored in an INT array
  • The IMAGE argument can now be x,y,w,h screen corordinates
  • The IMAGE argument can now be a 2-D array of POINTS
  • Updated IMAGE sub-command to save 2-D array of POINT
  • Added window.setFont command to set font size, bold and italic. example:
  • w = window():w.setFont(10, “pt”, false, true)
  • TRUE is now always returned as 1
  • Added file manager to main shell program
  • Fixed problem with escaped chars using FORMAT
  • Fixed problem with XNOR command result
  • Fixed problem with IMP and EQV command result
  • Fixed issues with INKEY command to allow ALT/SHIFT/CTRL states to be returned
  • Fixed capslock handling
  • Fixed issues with TRY/CATCH
  • Fixed using POINT to retrieve IMAGE data
  • Fixed issues with CHAIN
  • Fixed TLOAD to work correctly with TRY/CATCH
  • Fixed XPOS and YPOS to return 0 based values
  • Fixed compiler checking for redundant symbols, for example: let a = 1 2 3
  • Added editor command F3+F4 - export to mobile SmallBASIC
  • Added editor command ALT+. to change cursor positioning.

0.12.5 (February 13, 2016)

See android release notes page

0.12.4 (February 1, 2016)

See android release notes page

0.12.2 (December 10 2015)

  • Implemented loading recent files via ALT+1 .. ALT+9, Display list ALT+0
  • Fix potential editor crash with empty support widget
  • Fix potential crash with debug target
  • Fix restore path to only function when no other arguments supplied

0.12.1 (November 29 2015)

  • Fix editor display issue with keyword completion
  • Fix editor case insensitive search
  • Fix image drawing for large images
  • Fix PAINT infinite loop
  • Fix keyboard handling for non-us keymaps
  • Fix Ctrl+Home editor keystroke handler
  • Fix crash with online command if site is down
  • Fix over scroll issue with line number widget
  • Fix screen dump invalid file name for online files
  • Fix file manager .bas file case sensitivity
  • Fix editor markup on map fields that look like keywords
  • Fix scanner inserting line-no bytecode for empty or comment lines
  • Implemented editor F2 command to display online help
  • Implemented calling IMAGE with another image variable
  • Implemented restoring the last folder when re-launching

0.12.0 (October 27 2015)

  • Update PEN(3) to work more like FLTK
  • Fix LET when assigning a value to a MAP/ARRAY field
  • Fix display output before PEN
  • Fix BOLD and ITALIC font display
  • Fix TSAVE with try/catch
  • Added context menu edit keyword completion
  • Editor line number widget can be used for scrolling
  • Updated editor help display

0.11.20 (September 09 2015)

Editor fixes:
- Now displays an i-beam/edit cursor - Fixed highlighting for numbers and keywords - Pressing F1 key for keywords surrounded by punctuation now works correctly - Fixed page scrolling with up/down arrow keys - Pressing tab at the bottom no longer jumps to the top - The editor context menu now includes additional items - Added editor bookmark/breakpoint handling

Added a basic debugger:
- Debugging relies on a network socket for communication between the two processes. - You may need to accept a firewall warning to allow this communication. - The default listening port number is 4000. This can be changed with a startup option, for example: sbasic -p 4001

To debug a program:
- Turn on editing. Display the context menu (right mouse click), then click the “Editor” option. It should it show “Editor [ON]” when you next re-display the context menu. - Navigate to a .BAS file, then click the file name. This should display the program in the editor. - Press F5. A new window should appear. - Press F6 to step thru each program line, or press F7 to continue - Press ESC to end the debugging session. - To set a breakpoint, press Ctrl+T (C-t) on the desired program line. - The breakpoint doubles as a bookmark. Press (C-g) to goto the next bookmark/breakpoint line. - Now when you press F7 in a debug session, the program will pause at the breakpoint line.

Debugger limitations:
- The variables/stack data is currently unnamed. - The bytecode includes redundant line information for full comment lines

0.11.19 (August 19 2015)

  • Fix display output before DELAY
  • Fix LET command problem found in 32bit linux
  • Removed obsolete/unimplemented keywords WSPLIT, PLOT2, UNLOADLIB
  • Made a few minor performance improvements
  • Fixed PRINT 1/1000 and other floating point rounding issues
  • Fixed problem with 59 char INPUT prompt
  • Added missing PEN(12) support
  • Added multi-item case selection (suggestion by James Grimaldi)
  • SDL: Updated display of file anchor links
  • SDL: Fix drag-drop from explorer to launch programs
  • SDL: Added missing IDE editor

Example for multi-item case selection:

select case "Cool"
 case "null", 1,2,3,4,5,6,7,8,"Cool","blah"
 case "not cool"
   throw "epic fail"
  case else
   throw "FAIL"
end select



  • Pressing the [Backspace] key will now re-display the launcher when a program has completed.
  • The startup font size is now based on logical point size of 11 points. You may need to change your Zoom setting to account for this change.
  • The window title now correctly displays the BASIC program file name.
  • Fixed a regression with returning system memory information (Command FRE)
  • Workaround for incorrect mouse cursor displayed at startup when double clicking in explorer to start.



  • Now uses the Light Holo theme to display menus and messages.
  • Fixed exit crash with android 5 devices.
  • Updated to freetype version 2.5.5 and NDK version r10d


New SDL2 port is ready


  • Improved graphics and runtime performance.
  • Source code view displays line numbers
  • Line drawing now uses antialiasing to produce smoother looking lines. You can turn this feature off by placing the following statement at the start of your program:
Option Predef Antialias OFF
  • Improved syntax error messages
  • Updated the PAUSE statement to allow waiting until a system event has occurred. This allows you to pause execution until there is a touch or mouse event, without any CPU usage overhead. To use this feature, pass TRUE as the PAUSE argument, i.e. PAUSE TRUE.
  • Improved INPUT widget including clipboard handling.
  • Update INKEY to return ALT, CTRL, ALT+CTRL key information
  • Added timer func support. When called as a function, the TIMER keyword accepts two arguments: a timeout value (in milliseconds) and the name of a call back FUNC. Note the timeout value only provides approximate millisecond precision.
Sub timer_func
    print "Timer called: ", Timer

Timer(5000, timer_func)
Print "Starting..."

While 1
  Pause 1
  Print "paused..."
  • Refactor FORM handling to use system object
REM create a form widget
input1.x = n
input1.y = n
input1.width = n
input1.height = n
input1.type  - [label|link|listbox|choice|text|button|image - file name for image button type
input1.onclick = func

REM creates a form object
f.input << input1
var f = form(f)

f.value = "text"
f.focusColor = "green"

REM push messages through the system event queue

REM close the form

Please refer to examples: memoryTest.bas, calc.bas, sokoban.bas

  • Update IMAGE handling.

There are two supported image formats PNG and XPM. PNG images can to be loaded using the OPEN command, or by passing the filename string as an argument to the Image creator function. XPM images can also optionally be passed as a string argument to the Image creator function.

REM Use the OPEN statement to open the image file
Open "1234.png" as #1

REM create an IMAGE object
i = Image(#1)

REM Display the image - passing optional x, y, zindex, opacity attributes
i.Show([x, y [, zindex [, opacity]]])

REM change the image attributes
i.x = 100
i.y = 10
i.offsetTop = 1
i.offsetLeft = 1
i.width = 100
i.height = 100
i.zindex = 0
i.opacity = 0

REM display the image with current attributes

REM hide the image

... print the image details

REM create an XPM image
ar << "30 30 770 2"
ar << "     c None"
ar << ".    c #5B3015"
ar << ". + @ # $ @ % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 "
i2 = image(ar)
  • Added WINDOW system object to control the ansiwidget
REM create a window object
w = Window()

REM Create a status message

REM draw into an inset screen
w = window()
for i = 0 to 200
  ? "This is in the text screen"
next i

REM display in the text based screen
print "This is the text mode screen"

REM switch between graphics screens
w = window()
print "on screen1... pausing"
print "on screen 2.... pausing..."
print "back to 1"

REM  display an alert
local wnd = window()
local msg = "You must restart SmallBASIC for this change to take effect"
wnd.alert(msg, "Restart required")

REM Display a menu
local w = window()"one", "two", "three")

REM Display the keypad
local w = window()


This release includes language and performance improvements.


The MAP variable type combines the features of previously separate “User Defined Structures” and “Associated Array” variables. The MAP provides value-key pair access along with array or dotted notation. The MAP can be initialized from a String variable using the ARRAY command. The ARRAY command supports JSON (Javascript object notation) syntax.

The MAP can be converted back into a JSON string using the STR command. You can test whether a variable is a MAP using the ISMAP command.

The ARRAY command can be used to process web services results. For example:

The REF variable type is a “reference” to another variable (like a pointer in c). You create a reference by assigning a variable with the BYREF keyword (or @ symbol). For example LET c = @ b. You can test whether a variable is a reference using the ISREF command.


The IMGW and IMGH commands have been replaced with the single IMAGE command. IMAGE takes a file pointer and returns a system object allowing full control of the image placement. Note: In this release only the language aspect has been implemented. This feature will be completed in the next build.

Added the SHOWPAGE command. This command is used to display pending graphics operations allowing for smooth animations.

Added TRY/CATCH support - see


  • It is now possible to use unary-operators on array elements, for example a(0)++.
  • Handling of round brackets with FUNC calls has been fixed.
  • Renamed command “#UNIT-PATH:” to “UNITPATH”
  • Renamed command “#INC:” to “INCLUDE”
  • Fixed/implemented INCLUDE command.

2014-07-07 Update SDL to use SDL2 and common widget

2014-06-14 Fix crash evaluating “a \ b” Fix INPUT command in FLTK for scrolled display

2014-06-11 Android changes: - Run by URL/QrCode. - Implemented BEEP/SOUND - Screen layout adjusts when virtual keypad displayed

2014-04-20 Released Windows version 0.11.5

2013-12-30 Fix android display clip handling Fix android import from IDE Console is now a graphics screen Replace battery drain error with console warning

2013-12-18 Android version 0.11.4 Built with android NDK for huge performance increase Web service for remote file edit/run Can now launch .bas files from Android file browser Added program restart command

2013-02-09 Added support for empty parentheses in sub/func calls

2012-12-18 AT and PEN now work with WINDOW based coordinates. This will allow programs written for PalmOS to appear correctly on modern mobile screen resolutions.

2012-12-09 Released 0.11.2 android version to google play Added the ability to change the font size

2012-12-01 Released 0.11.1 android version to google play

2012-09-25 MoSync port nearing completion

2012-07-29 Fixed a bug with nested case statements

2011-04-14 Removed POKE and BCOPY. These never really worked correcly and would be fairly insecure in the web model if they did.

2011-03-19 QT port started

2011-01-22 Fix compilation errors (fltk build) for 64bit ubuntu

2010-12-15 Fix for floating point display (tracker 3136093) issue found with printing 1/1000

2010-07-31 Fix for PAUSE cmd (tracker 1651503) to pause correct length of time - Case was mostly already fixed in 0.10.7.

2010-06-19 Fix form TEXT command to use correct integer datatype Fix misc issues with const char* uncovered with new gcc Fix duplicate prompt whe INPUT command used in text mode

2010-05-15 Version 0.10.7 was released

2010-05-07 updated window title display

2010-05-01 inkey now returns shifted keys added DOFORM option return on a key event updated calc to use the keyboard

2010-04-28 fix for windows socket handling cleanup code for display of break message

2010-04-19 Added new sample programs, tetris and sokoban Fix to make plugins work with files containing dos file line endings Added select-all command. Run-selection now works with logprint mode. Fixed run startup mode on linux Added ctrl+f1 help mode Fix for executor cleanup crash when breaking from invalid call to sub Included missing tdestroy function for MingW build (fix for memory leak under windows) Programs now run with cwd set to the .bas filename Updated help for doform and button commands Fix for display of list and label form button types after their variable contents have changed Fixed a problem with SELECT/CASE with complex program usage (tracker id 1683450) Fix for -v command line arg when passed w/out another arg Fix for PolyLine crash when invalid args passed Pass focus to MainWindow when closing the form to ensure inkey gets updated Prevent default window key processing when keys passed into basic program Esc key returns focus to editor when command or browser widget has focus Added simple stack trace as part of runtime error message New hot-key - ctrl+e to focus the editor New editor keystrokes - ctrl+b toggle break-to-line, ctrl+t toggle log-print, ctrl+w toggle hide-ide Cls command does nothing in non-interactive mode Fix for regression with returning and passing UDS values DIRWALK now just logs an error (instead of terminating the program) when it encounters a folder that it cannot open Added search examples option for keyword help Fix for find and goto commands to work with readonly files Show font selection menu using the target font. Fix to allow help page link to a system file Can now pass a url to the html command which opens in a real browser Imlemented new code publish tool Editor plugins now invoked in non-interactive mode INPUT command now issues a prompt dialog when in non-interactive mode Restore main window focus after closing color selection window Updated getHomeDir() to use APPDATA env-var for windows BAS_HOME var no longer contains trailing slash-char.

2010-03-08 UDS and HASH types now work with FOR-IN and also return sensible values when used with the LEN command. Fixed crash when converting between UDS and HASH types.

2010-03-07 Fixed a bug where hitting break from inside a SUB that had the result being assigned to another variable would cause a crash

2010-02-18 Updated saving and restoring many properties from config.txt File open uses current buffer file path Creates backup files Fixed minor display issues with the File Open Widget

2010-02-05 Updated the editor code browser

2010-01-29 Added the DEFINEKEY command Updated internal event handling to allow INKEY to function correctly without excessive CPU usage

2009-12-14 Version 0.10.6 released

2009-11-27 Implemented TTY widget

2009-11-06 final fix for matrix inverse bug

2009-09-04 0.10.5 for windows released

2009-08-23 Fix for desktop icon display (ALT+Tab) under X11 (ubuntu)

2009-08-14 Fix for sub/func navigation tool to internally use line numbers in lieu of label searching.

2009-08-08 Reworked editor toobar so there is now a command selection and only one text input field.

2009-08-02 Updated calc.bas to work with the new DOFORM api Fixes for the FLTK DOFORM API to allow the updated calc.bas to work reliably

2009-07-28 Implemented editor colour selection in FLTK build.

2009-07-26 Implemented editor font selection in FLTK build. Fixed memoryTest.bas sample

2009-07-22 Implemented “ELSE IF” syntax

2009-07-11 fltk - file widget displays sorted items

2009-06-29 update variables to use 64 bits fix for matrix inverse bug

2009-06-13 updated form API in fltk version

2009-04-13 incorporate agg into fltk version (reverted for now)

2009-01-14 in osd_getpixel() for X11, offset x/y as getPixel is relative to the outer window FileWidget allow input of a custom path

2009-01-07 Updated FileWidget to allow relative paths for saveas. Updated to handle readonly edit buffers. Fixed a few compiler warnings

2008-11-26 FLTK 0.10.2 was released

2008-11-23 FLTK: Fix for possible crash with html command used in plain window mode. Fix for file widget for directory names with space characters.

2008-11-16 FLTK: Fix for invalid values returned by PEN command.

2008-10-26 FLTK: Fixed a few problems with find and replace. Implemented Rename Word command.

2008-08-16 * released windows version 0.10.1

2008-08-01 * passing length < 0 to MID no longer causes stackdump

2008-07-17 * refactor FLTK to allow opening of multiple editors

2008-07-05 * cleanup ansi codes from output in dev_null driver. fixed logprint command * fixed “open for append” * added FLTK -n non-interactive flag (prevents the gui from being displayed)

2008-07-01 * Implemented program restart option in FLTK

2008-06-28 * Updated to build FLTK version using MingW under Cygwin (see below).

2008-06-26 * Added build support for MingW under Cygwin. This is simpler than installing Msys, simply install MingW to say c:, then change your .bash_profile with: export PATH=/c/MinGW/bin:$PATH Then re-run configure (under cygwin bash) and a non-cygwin console version will be produced which can run under cmd.exe, explorer.exe etc.

2008-06-20 * Can now supply program arguments on FLTK version command line: sbasici -r t5.bas foo -or- sbasici t5.bas foo -or- ls | sbasic t5.bas – also: echo foo | sbasic foo.bas –

2008-06-06 * Implemented the ability to declare a local variable and assign a value to it on the same line, eg local foo = “foo”

2008-06-04 * Fixed problem with trailing backslash in strings

2008-06-01 * Add support for hash arrays (rainy day)

2008-05-26 * Updated module building to use autotools * Fix regression with console build * Fix for expression if (foo.x) * UDS copy operations now always as by reference * Can now refer to UDS field within parenthesis * Updated FLTK online help * Fix support for composite expressions such as “”

2008-05-24 * Updated SDL forms to work with guichan 0.8.1 * Fixed problem with FLTK HelpWidget displaying large pages

2008-05-15 * Update FLTK forms implementation to be like the SDL implementation * FLTK now correctly implements DELAY * Updated help.bas help plugin to include an index

2008-05-07 * FLTK: allow applications to set the window geometry using: option predef grmode WxH

2008-04-26 * Source code release for version 0.10.0

2008-03-31 * Various fixes for FLTK build * Implemented outside file change check in FLTK build * Implemented file drop support in FLTK build * Not being able to save an sbx file is no longer a fatal error * runtime .bas files can now be read-only files. * break command updates global last error string

2008-03-15 * re-migrated code from cvs - this time with full history

2007-12-31 * Fixed a problem in the SDL version with pressing ctrl+c while the “press any key to close” message was being displayed

2007-12-02 version * moved code to subversion * see src/fltk/README.TXT for updated project indent settings

2007-11-03 version * refactored console_main * added the ability to include a path component in a unit name, eg: import ? foo.my_var

  Then in the foo.bas file:

  Unit other.something.Foo
  export my_var

  The unit file should be saved in $UNITPATH/other/something.
  If not defined, $UNITPATH is inferred as the host program
  file directory.

2007-10-10 * A runtime error is now created in lieu of crashing when you pass a value less than 0 to the LEFT and RIGHT string commands. * The runtime error for LEFT,RIGHT,REPLACE,MID,INSTR,RINSTR now includes the invalid index in the message

2007-08-31 * Fixed a problem referring to UDS fields from an array eg x = foo(0).x

2007-08-18 * Fixed a problem with the short-circuit eval code causing incorrect true/false return IP’s being calculated

2007-08-02 * The IN operator when applied to arrays now returns the 1 based index position, eg: a << “cat” a << “dog” ? “dog” in a ’prints 2

2007-07-21 * Implemented experimental logical expression short-circuit evaluation

2007-07-12 * (re) Implemented user defined structures * AnsiWidget added to FLTK core package

2007-06-23 * TSAVE now correctly closes the opened file

2007-04-27 * Added GUI support to SDL version using guichan

2007-04-19 * Implemented user defined structures * Commited Attila Haraszti’s SDL code and changes for * Added syntax support for ‘==’

2006-11-14 * Updated DATE and TIME error messages to provide extra information

2006-10-23 * Added more info the index out of range runtime error message * Fixed for cygwin build

2006-08-19 * added “multiline” option to the TEXT command to support the multiline edit control (GTK) * fixed RINSTR command to work as advertised. * TSAVE can now take a file number arg like TLOAD

2006-08-16 * Fixed error message with unterminated strings in a sub or func. complained about missing END instead of the missing " char * Quoted strings no longer required the end quote char. A new line is taken as the end of string.

2006-08-12 * added support for func/sub pointer variables used with the call statement:

      func foo(s)
      sub bar
        ? "in bar"
      p = @foo
      ? call(@foo, "#")
      ? call(p, "%")
      pb = @bar
      call pb
      call @bar

* USRCALL has been removed since it never worked and the above
      is a better replacement (IMHO)

2006-07-28 * updated chain command to take string or array of string arguments in lieu of a file name. After calling this command, the calling program now successfully resumes. * added HAVE_C_MALLOC to replace complicated memory routines with simple malloc/free calls * added GRID+TAB button support to GTK build

2006-05-27 * added form support to GTK build

2006-05-27 * bc_store_string() now handles escaped double quotes

2006-04-12 * updated sockcl_open() to handle server listen sockets


2004-05-01: ndc
    Human language depented files for messages and keywords.
    The messages and the keywords can be easily translated to another language.
    This is not suggested because that means incompatible source-code but it is very usefull for education purposes;
    I believe that, the kids will work better if they are using their natural language
    (and we are very sensitive on that matter).
    I suggest to the "translators" to be very carefull, there is no mean on a word-to-word translation.

2003-03-10: ndc
    new c-modules: mod_gdbm, mod_mysql

2003-03-09: ndc
    fix: ptdistln, ptdistseg
    new: POLYCENT (centroid of polygon)

2003-02-24: ndc
    END IF: keyword with space is supported now

2003-01-24: ndc
    FOR-IN: if the IN parameter is not an array (probably an empty variable) the FOR jumps to
    --- the next command after 'NEXT'

2002-10-12: ndc
    Sort: fixed
    Search/Sort: does not generate RTE anymore

2002-10-10: ndc
    units: SB libraries
    new keywords: UNIT, IMPORT, EXPORT

2002-10-06: ndc
    doc: .texi and groff output added
    --- ref.txt structure changed
    update: str()
    --- str(string) now allowed
    new: BSS() - converts C-style strings to BASIC-style strings
    new: CSS() - converts BASIC-style strings to C-style strings
    --- some more compiler error-checking

2002-10-01: ndc
    several internal changes for easy development.
    --- cxx_sb.hpp provides a new iterface to whole SB.
    --- SB can compiled as a C or C++ library. That would
    --- help a lot the IDEs developers. Main Makefile
    --- splitted, it is working like main-menu now.
    FLTK IDE added but not finished yet.
    --- Actually that shows the power of the libsbasic.
    --- It is very easy now to build IDE. Unfortunately
    --- I am no friend of GUI, I've never tried Qt or GTK.
    --- Anyway, soon, I'll rewrite the Win32 GUI version.

2002-09-16: ndc
    update: compiler speedup for PalmOS 3.5+
    --- VMTs not used on 3.5+ (no actually needed)
    new code: lopen_bridge.h
    --- I rewrote the VMTs. The code was a mess. Several parts of SB
    --- uses #def blocks just to do simple tasks with open/close command-set
    --- So, I wrote a "driver" which cleans a lot of those parts by using
    --- real std-c emu of functions open/close for PalmOS and VTOS.
    update: new VMT
    --- VMTs are now basic part of the system. Because of lopen_bridge.h is
    --- easy portable too. In VMTs is stored a fake environment-variable table,
    --- VMTs are used for memory swaping, and will be used as basic-level database.
    update: PalmOS, On PalmOS 3.5+ the opt_safedraw (SDK3.5 draw functions) is
    --- used by default on 3.5+.

2002-09-11: ndc
    update: PLAY "Q" clears sound queue
    new: NOSOUND stops background sound and clears sound-queue
    update: SOUND can plays on background
    new: PLOT (graph of F(x))

2002-09-01: ndc
    fix: ON GOTO/GOSUB, values out of index

2002-06-22: ndc
    new: SEC/CSC/COT family functions

2002-06-21: ndc
    update: extra check for build-in functions without parameters

2002-06-18: ndc
    bug: RIGHTOFLAST() fixed
    bug: palmos, 'keep-bytecode' code rewriten
    --- CHAIN does not compile if it is not needed

2002-06-07: ndc
    bug: palmos, memo fs, open for APPEND now moves the pointer to the end
    --- of the file's data.
    bug: palmos, pdoc fs, open for APPEND now works, still does not
    --- support read-only open.
    new: palmos, battery-info support in FRE()

2002-06-02: cws
    new: ebm, added flush image escape to ansi driver \033[F.
    --- This causes imgUpdate() to be called.
    new: ebm, Sorted file names in File Dialog

2002-05-25: cws
    update: ebm, improved "Run" dialog
    update: ebm, further improved ANSI text out performance

2002-05-xx: ndc
    documentation/doxygen format

2002-05-12: ndc
    update: default values for window/view cmds

2002-05-12: cws
    new: ebm, implemented FILES command - dev_create_file_list()
    new: ebm, implemented COPY command - dev_fcopy()
    new: ebm, implemented ENVIRONMENT command.
    new: ebm, implemented FRE command - returns ebm memory and battery info (see help)
    update: TLOAD speed optimize
    update/new: ???, provided mechanism for sbasic programmers to provide an about box.
    update: ebm, selecting the menu while running an application now pauses program
    --- execution.
    update: ebm, corrected behaviour with open file errors; now results in a
    --- runtime error.
    new: ebm, absolutely way cool on-line help!
    new: ebm, removed the 2 pixel window border.
    new: ebm, partial MMC file support; reading and listing files from sb code only.
    --- MMC write is not yet implemented in the operating system.
    new: ebm, updated command line editor. Entered commands are now sent directly
    --- to the interpreter. You can tap and run simple one line programs
    --- using the keyboard. Use : to separate program statements.
    new: ebm, optional SmallBASIC.ini settings control creation of .sbx files
    --- and enabling verbose compilation. settings are:
    --- genexe=0
    --- quiet=0
    update: ebm, minor enhancements to ebjlib library
    update: optimised ansi text out and window scrolling performance

2002-05-05: ndc
    new: bitmap-lib (basic internals), it needs more work

2002-05-04: ndc
    update: PalmOS power on/off button support
    update: SDL default mode (see: README.UNIX)

2002-04-19: ndc
    new: low-level commands
    new: palmos, keyboard buffer dialog (press kb)
        not good yet, but it works


2002-04-14: ndc
    ?bug?: crash; wierd memodb records (size >32KB!!), thanks to Meino
    bug: PalmOS, MOD's result was wrong

2002-04-07: ndc
    bug: memory overrun on scan.c:bc_get_var_id(), thanks to Meino
    new: BGETC()/BPUTC (binary get/put bytes on a stream)


2002-03-31: ndc
    finish: OPTION-styles, new PREDEF QUITE,COMMAND
    modify: system string-variables are now accepted with both names
            (with or without $ suffix)
    new option: -h[page][-command]

2002-03-25: ndc
    new operator: LIKE
    new proc: DIRWALK
    new func: CHOP()

2002-02-27: ndc
    bug fix: memo (palmos) open/write

2002-02-22: ndc
    bug fix: pdoc's garbages are now dead (for desktop)
    update: setting backup-bit in user files and pdocs
    update: IN operator priority changed to 'compare'
    new: MDL operator (a%b+b*(sgn(a)<>sgn(b)))

2002-02-??: Earle's port

2002-02-??: Chris's port

2002-01-28: ndc

2002-01-28: ndc
    bug fix: cat() on 16bit, thanks to Frantesik
    very fast and small memory handles emulation (for 'limited' systems)

2002-01-13: ndc
    changes for porting: dev_getenv()/dev_putenv() at device.c
    bug fix: env() function fixed, env command also fixed

2002-01-04: ndc
    bug fix: operators && and || was on different op-category...
    bug fix: small memory leak on string->number convertion inside
    --eval.c module. That causes PalmOS fatal error!!!


2001-12-27: ndc
    bug fix: memo vfs driver: deleted files, no null-char on read

2001-12-??: ndc
    new: split with pairs

2001-12-11: ndc
    new: IN operator (not the FOR-IN)
    new: ISNUMER(), ISSTRING()
    new: ENCLOSE(), DISCLOSE() (also, its part of SPLIT)
    bug fix: memory leak (GOTO)
    new: terminal driver (old code for command-line is removed)

2001-12-10: ndc
    new: DEF FN compatible command (single-line functions)
    -- to support this, I made the DEF; an alias of FUNC
    -- so, FUNC f(x) = sin(x)
    -- and DEF  f(x) = sin(x)
    -- is now acceptable
    new: bitwise operators NAND,NOR,XNOR,EQV,IMP
    -- it needs checks
    new: parameter parser (RT)
    update: FORMAT, console-codes (\e[nG)

2001-12-08: ndc
    linux: modules support (external C/C++ libraries)
    new: true color is supported for modes >8bit
    new: RGB() RGBF()
    change: KILL does not create RTE if there is no file
    -- It is very annoying on Linux
    update: svga & sdl (colors, some minor bugs)
    change: LOADLN/SAVELN changed to TLOAD,TSAVE
    -- I don't want to use LOAD/SAVE, also,
    -- I want common names, like BLOAD/BSAVE
    change: &&, || = logical ops (like C)
    new:    &, |, ~ = binary ops (like C)
    new:    & = join code lines (like the \ on C)
    change: SB limits are changed

2001-12-07: ndc
    default name on Unices changed to sbasic instead of sbrun
    update: everything is working on 32bits now
    -- 16b version can be produced by using OS_ADDR16
    -- For PalmOS users the 32b means less memory...
    change: xmax, ymax returns now the width-1,height-1
    -- its more logical

2001-12-05: ndc
    update: +/-INF and +/-0 for real-to-string (PRINT included)

2001-12-03: ndc
    update: PalmOS IDE: several changes, include auto-goto error-line
    new: PalmOS scripts (thanks to Frantisek Dufka)
    change: ANSI console code for 'reset' does not
    -- changes the font.

2001-12-02: ndc
    new: dev_gets() (INPUT)
    -- On Palms: schedule=delete, phone=left, todo=right
    -- possible problems with multibyte charsets,
    -- var-font: minor problems with multiple lines
    update: PSET,LINE,RECT,VIEW,WINDOW... graphics commands
    changed: LOCATE coordinates starting from 1

2001-12-01: ndc
    new: SEARCH
    new: CHMOD
    update: compiler: PASS2 errors, more info

2001-11-30: ndc
    new: SQUEEZE()
    some more compiler/RTL checks
    new: ISARRAY()
    new: ++ and -- pseudo-operators
    bug fix: file size on Unix
    new: COMMAND$ system variable
    update: STOP/END parameter added

2001-11-29: ndc
    new: FORMAT, PRINT USING and new FTA function (print numbers)
    alias: LINE INPUT (with space) is now acceptable
    INTEGRAL keyword removed

2001-11-28: ndc & bob
    bug fix: EXIT inside function
    new: IF function: IF(condition,true-value,false-value)
    new: operator << (append to array)
    new: REDIM (resizes an existing array. its works only for 1-dim arrays)

2001-11-27: ndc & bob
    changes: ROUND(-1.5) returns -2
    changes: MOD (changed to fmod())
    bug fix: INT, FIX - negative values
    new: FRAC, CEIL, FLOOR
    changes: scientific notation E supports xE{+|-}{praxis=+-*/\^}{y}
    ---valid: 1E1 (1*10^1), 1E-1 (1*10^-1), 1E--1 (1-1), 1E-/2 (1/2)
    ---invalid (nested E, complex expressions, variables): 1E-+2E--4, 1E-+int(2.2)
    ---if I write an eval() then it will do more things :)
    new: LINEINPUT (new alias: LINP) works on console, too
    bug fix: PAUSE n (after an key-interrupt; now clears keyboad-buffer)
    bug fix: WEEKDAY
    bug fix: STATs I was made some stupids things here, now it is working again
    ---(QB: DEF FNxxx - END, later will be added the inline DEF FN)


2001-11-24: ndc
    changes: LINEQGJ (Gauss-Jordan) renamed to LINEQN
    new: DIFFEQN

2001-11-23: ndc
    new: JULIAN(dmy_string | d, m, y)
    new: DATEFMT(format, dmy_str | d, m, y | julian)
    new: WEEKDAY(dmy_str | d, m, y | julian)
    new: DATEMDY dmy_str | julian, byref d, byref m, byref y
    new: ROOT
    new: SORT (quick sort)

2001-11-22: ndc
    bug fix: Palm's ftostr(), round bug (59.9999999/60 was 0.1 instead of 1) (Thanks Bob :)
    bug fix: Palm IDE: Goto line 1
    bug fix: spaces on parameters (i.e. BYREF bug)
    changes on SPLIT (spaces now counts as delimiters)
    SPLIT supports the USE keyword
    new: TRIM()
    new: INTEGRAL

2001-11-19: ndc
    changes: COM ports 0-9 (COM1:,COM5:,etc)
    PalmOS IDE: categories (edit, delete, rename)
    PalmOS IDE: it does not delete the bytecode (Menu->Pref->Options)
    PalmOS IDE: line numbers on editor
    bug fix: VM (CALL_UDF) (4 bytes instead of 2)
    new: DERIV

2001-11-18: ndc
    changes: DIM A(10):A=1 is valid now... (convertion from array to integer)
    changes on LEN(), INPUT
    bug fix: EMPTY()
    bug fix: '_' its works again in the sub-routines names
    new: DETERM(A[,tol])
    new: LOADLN file, array
    new: SAVELN file, array
    bug fix: binary READ/WRITE commands
    new: FOR var IN array - NEXT
    command-line: quite flag (-q); No "* DONE *", no compiler messages
    bug fix: Unix OS Name

VERSION 0.7.0a

2001-11-07: ndc
    PalmOS: crash with MemoDB deleted/locked records

VERSION 0.6.1-0.7.0

2001-11-06: ndc
    SB web-site: recovery...

2001-11-05: ndc
    after hard-disk failure... recover and check
    bug fix: WinXP: sound driver, SBPad forms background color

2001-??-??: ndc
2bit DOS (DJGPP)
    --That means there needed one DPMI driver (under windows DPMI is supported).
    --For clean DOS you can use one of delorie's DPMI (free) programs or other (read DJGPP's FAQ)
    --CPU 80386 or newer is needed
    --Long-filenames are supported only under windows (read also DJGPP's FAQ, especially for NT)
    --NO TCP/IP

    Statistical/generic functions are added: (thanks to Yannis Dondos (

2001-08-09: ndc
    RUN() function added (returns the stdout of the command)
    HOME system variable added (user's directory)
    CWD system variable added (current working directory)
    CHDIR/MKDIR/RMDIR: only for non-palmos

    SOCL FS: socket client (virtual file system) added
    --This driver its not tested on PalmOS...
    --Only OPEN,CLOSE,READ,WRITE,EOF() are implemented

2001-08-08: ndc
    READ/WRITE command set: binary read/write to a file (for variables)
    bug fix: INSTR (caseless compare changed to case sensitive)
    POINT(): 0,1 functions added (returns the current graphics X/Y position)

    PalmOS IDE: import/export to/from PDOC
    PalmOS IDE: import/export to/from Memo

    PDOC FS:
    --filesystem emulation for PDOC files. (use OPEN "PDOC:filename")
    --Under non-palmos OSes, files PDoc_* are created in the current directory for emulation.
    --These files are real compressed PDB/PDOC files (you can hotsync them)
    --FILES() for PDOCFS: FILES("PDOC:*")
    --PDOC FS opens and uncompress the file on OPEN; and compress the file on CLOSE

    bug fix: memory leak on PRINT for files
    bug fix: PalmOS IDE, UserFileViewer save file

2001-08-06: ndc
    MemoDB FS:
    --filesystem emulation for memodb. (use OPEN "MEMO:memo-title")
    --the memo-record size is limited to 4000-65 bytes (the 65 bytes are reserved for the 'filename' + \n)
    --Under non-palmos OSes, files Memo_* are created in the current directory for emulation
    --FILES() for MEMOFS: FILES("MEMO:*")

    bug fix: FS auto-close files

2001-08-05: ndc
    RTE ... --- custom run-time-error (its working like PRINT command)
    PROGLINE --- returns the current source-line number (user's program)
    Unix: some /proc info are added
    EMPTY(x) -- used for variables
    FS: A lot of changes on file.c
    --Actually FS is working with more clever way now. Its supports multiple fs-drivers with mount/umount logic.

2001-08-04: ndc
    Trying to support nested arrays.
    --There are some problems with nested arrays.
    --Nested arrays are not visible to SB compiler so
    --SB does not stores optimized info for them.
    --(in few cases arrays will copied more than once on memory)

    console,file,log PRINT are using the same code for writting vars

2001-08-01: ndc
    PalmOS driver: some changes on the LOCATE
    LEN(x) now supports arrays too
    ENVIRON str, ENVIRON$("var") --- (non-palmos) environment variables
    SPC(x) --- alias of SPACE$(x)
    LEFTOF$(s1,s2), LEFTOFLAST$(s1,s2)
    RIGHTOF$(s1,s2), RIGHTOFLAST$(s1,s2)

2001-07-31: ndc
    PalmOS: stack increased by 4KB (that means -4KB for BASIC progs)
    Fill for DRAWPOLY added (FILLED keyword)

    new framebuffer driver
    --I wrote a new one without using any library (8,15,16,24,32 color modes);
    --its very stable in kernel 2.4.4 and its working very nice in console.
    --So, this is the default driver for unix (instead of svgalib)
    --note: scroll is slow

    several fixes on SDL driver
    bug fix: eval: "-"+40 now returns string "-40"
    bug fix: OSS driver now checks if /dev/dsp is available

    PalmOS IDE: 'restart' does not compile the source now

2001-07-29: ndc
    PalmOS driver: direct video-access (used instead of PalmOS APIs routines)
    --its faster :)

2001-07-25: ndc
    JOIN array(), delim, dest-var
    LINEQGJ(A,B[,toler])    (thanks to Yannis Dondos (
    Arrays ops: [col,col,...[; col,col...]]
    define an array at code
    d=[1,2] ' 2
    d=[1;2] ' 2x1
    d=[11,12;21;cos(a)] ' 3x2
    d=[1;21,2+2] ' 2x2
    d=[1,2;3,4] ' 2x2

    Matrices: (A-Z=arrays): A=2*B;B=-B;C=D*E;A=B+C;D=A-B
    a = [-3,  0; 2, -1]
    b = [ 4, -2; 3,  5]
    print a; " x "; b; " = "; a * b

    new: PRINT displays arrays now
    Bit-ops: BAND (AND), BOR (OR)

2001-07-23: ndc
    bug fix: RECT with out fill (diag. line)

2001-06-03: ndc
    bug fix: EXIT (REPEAT/UNTIL)

2001-06-01: ndc
    vector graphics:
    bug fix: SPLIT: empty strings

2001-05-28: ndc
    bug fix: PAUSE seconds
    bug fix: var/label/proc names with '_'
    bug fix: delete section
    bug fix: &H prefix
    EVAL's stack is dynamic now
    Backup bit is enabled after copy/rename


2001-05-13: ndc
    bug fix: v_set array copy
    backup-bit is enabled when the source file is modified
    Scientific notation added (both in code and in run-time (input))

2001-05-07: ndc
    #inc:file - #include for BASIC :)
    Background sound
    System events check changed (now works with ticks, checked every 50ms)

2001-05-06: ndc
    SPLIT str, del, v() - split text
    COPY/RENAME filename, newfilename - added
    ERASE array1, ... - destroy arrays
    bug fix: multi-dim arrays (dim > 1; element 0 returns the correct ptr)
    INPUT #N, ... - INPUT for files added
    Memory optimization (I got ~6-10KB for executor)
    Virtual Memory & Virtual Memory Tables (only for compiler; maybe later I'll add routines like VMDIM and VMLOCAL)
    UserFile Viewer - users can view/edit their files (up to 32KB)
    logfile support (LOGPRINT added for users)

2001-05-03: ndc
    INPUT$(len[,fileN]) - added
    Serial I/O added (OPEN "COM1:")
    EXIT [FOR|LOOP|SUB|FUNC] - added
    pdb2bas & bas2pdb supports sections (up to 256 sections, up to 1MB text)
    Arrays & vars with the same name does not supported any more
    Assign arrays "DIM A(4):B()=A()"

2001-05-02: ndc
    SUB/FUNC code finshed
    LOCAL keyword added (dynamic local variables)
    DECLARE keyword added (declaration needed for multiple-sections, every section acts as module now)

2001-05-01: ndc
    bug fix: PLAY
    PEN(3) now supported

    These sound drivers does not working well. I just dont know anything about soundcards.
    DSP sound driver for Linux, added
    SDL sound driver...

2001-04-29: ndc
    PROC/FUNC - starting (todo: JMPs before & after, run-time code)
    A lot of changes on compiler (I can't write real compiler, there are a lot memory problems)

2001-04-16: ndc
    bug-fix: WHILE/WEND nested blocks


2001-04-02: ndc
    DRAWPOLY array() added
    TRUE/FALSE system constants added
    LINECHART,BARCHART system constants added
    CHART added
    SVGALIB - clipping is now enabled
    a few syntax checks added

2001-03-30: ndc
    MAX/MIN added

2001-03-18: ndc
    bug fix: eq with doubles ((1=12/10) now returns false)
        this is the FOR-NEXT problem with fps
    bug fix: run-time error if the user had not allocate memory for arrays (DIM)


2001-03-10: ndc
    Some minor bugs of multibyte charsets

2001-03-09: ndc
    Big5 charset support added - thanks to Daniel Yuan-Chih Lin (
    Generic multibyte support added
    bug fix: SOUND & BEEP volume


2001-03-03: ndc
    SDL driver added
    Win32 port

2001-02-28: ndc
    Basic FILE I/O

2001-02-27: ndc
    circle's code is beautiful now.

2001-02-25: ndc
    4bit gray-colors are supported now (PalmOS 3.30 only!)
    8bit vga16 hi-colors are fixed
    bug fix: STR$()
    INPUT supports more variables

2001-02-24: ndc
    console supports more fonts now ("\e[8xm" x=0..7 for system fonts, "\e[9xm" x=0..4 for SB's fonts)
    console supports colors
        ("\e[3xm" x=0..7 ANSI foreground colors)
        ("\e[4xm" x=0..7 ANSI background colors)
    RUN command added
    system variables (see: setsysvar_int|num|str)
        OSVER   - OS version (ex: 0x350 for PalmOS 3.5)
        OSNAME  - OS name
        SBVER   - SmallBASIC version (ex: if sbver < &H506 then ? "RQ 0.5.6+")
        PI      - 3.14..
        XMAX,YMAX - graphics display maximum x & y
        BPP     - bits per pixel
    TXTW(s),TXTH(s) added (text font width & height)
    X/Win driver added (it needs work, but you can see a preview)

2001-02-22: ndc
    SJIS (Japanese) charset support, thanks to Toshiya Fujii (
    INPUT stores numeric values if the input-string is a number
    new method for Palm's PEN events
    new key codes (new keys FIND & CALC)
    Arrays & common variables with the same names are acceptable now
        I don't like it, but its needed (GWBASIC compatibility).
    DATA skips its code, does not need the first RESTORE any more, strings (DATA) does needs quotes
    bug fix: (\) integer division operator is now recognized
    CIRCLE & ARC are working now, but the algorithms are bad. I think 'aspect' does not working well
    DRAW added (not all commands) - UNTESTED
    PLAY added - Someone must check the compatibility (QB).

2001-02-20: ndc
    STKDUMP added
    Several changes on IDE (like fastest scroll)

2001-02-19: ndc
    bug fix: IDE text field focus

2001-02-16: ndc
    bug fix: beam
    More launch types are supported (useful for Launchers)
    CAT(x) added, LOCATE y,x added
    ON x GOTO ... and ON x GOSUB added ...  (warning: goto has problems with the stack)

2001-02-14: ndc
    Platform API
    new method for expressions (ceval, eval modules)

2001-02-12: ndc
    Color support added


2001-02-11: ndc
    decompiler (unix version, -s option)
    Several bugs of pseudo-compiler are fixed
    Pseudo-compiler: PASS2 supports GOTO shits (stack)
    More QB compatibility support
    New icons
    v_add() auto type convertion changed (NUM has priority)
    bug fix: INKEY & INPUT hardware keys codes (again?)

2001-02-09: ndc
    scan & brun: speed optimization ("little/big-endian" convertion code removed)
    INLINE-IF added (nested inline-if does not suppored). Syntax: IF x THEN [numeric-label]|[...] [ELSE [numeric-label]|[...]]
    ?bug? fix: PEN(0) - (pen status) starts with status 0 (after a PEN ON command the PEN(0) was 1)
    bug fix: READ/DATA with arrays
    bug fix: code_getvarptr() fixed. Now we can use arrays without fear :)
    bug fix: numeric labels without command next to it
    bug fix: LET|CONST next to label (ERROR: LET IS KEYWORD)
    bug fix: finaly the '$' is dead (I hope :). (That means LEFT(x,1) = LEFT$(x,1) but x$ <> x)
    bug fix: console supports \r
    bug fix: PAUSE command (it was removed!)

2001-02-08: ndc
    bug fix: BREAK for INPUT
    Unix <-> win32 (u2d, d2u, mksmall) convertion utilities
    C Headers & data-types changed; Makefile, .rcp, README: minor changes; proc.h callback.h bcode.h: removed
    SB small icon, thanks to Christian G. Hvltje

2001-02-07: Gary A. Clark -
    bug fix: READing strings now works
    bug fix: Crash when 'Save As' same file name (Rename did same)

2001-02-06: 0.5.5 Gary A. Clark -
    Convert to SDK 3.5 using PalmCompatibility.h
    bug fix: Hardware keys caused INKEY$ to always return nothing
    bug fix: VAL(), OCT$(), MID$() and RTRIM$() now work correctly

VERSION 0.5.4a

2001-02-04: 0.5.4a ndc
    bug fix: last-line text without lf, thanks to Gary Clark
    Hardware keys supported (keys: 0x101 (up) 0x102 (dn) 0x103 (#1) 0x104 (#2) 0x105 (#3) BREAK (#4))

2001-02-04: 0.5.4 ndc
    bug fix: PalmOS 3.1 fatal exception, Thanks to Christian G. Holtje
    bug fix: PalmOS 3.1 WinDrawChar (displays garbage) changed to WinDrawChars
    bug fix: BASIC file header (version & signature)
    Save & Run (S&R) button (EDIT-FORM)
    New utilities: pdb2bas & bas2pdb for unix console, win32 console & win32 GUI
    PEN support added (QB lightpen compatible)
        PEN ON|OFF, x=PEN(y)
            where y:0 = status
                    1 = pen-down x, 2 = pen-down y
                    3 = M$ shit (QBasic)
                    4 = current x, 5 = current y
    DIM supports more variables now