SmallBASIC is a fast and easy to learn BASIC programming language interpreter ideal for everyday calculations, scripts and prototypes. SmallBASIC includes trigonometric, matrices and algebra functions, a powerful string library, system, and graphic commands along with structured programming syntax.
NOTE: This is *not* "Small Basic" from Microsoft. This is the open source GPL version 3 licensed SmallBASIC originally made for the Palm Pilot and later ported to the Franklin eBookman and Nokia 770 devices.
SmallBASIC works well with "Hacker's Keyboard" available separately.
Some of SmallBASIC's features are:
- SmallBASIC is a multi-platform BASIC language: Currently, Linux, Windows and Android are supported.
- The language is pretty compact: The Debian installer for Linux, for example, comes as a single 340 kb file.
- SmallBASIC features a very comprehensive set of mathematical functions.
- It is an interpreted language with no compilation runs required.
- SmallBASIC supports structured programming, user-defined structures and modularized source files. It is not object-oriented, though.
- It also shows much leeway in questions of syntax: For many commands, there are alternatives, and for many constructs, there are different synonyms available.
- SmallBASIC comes with its own little IDE.
- Graphics primitives (like lines, circles, etc.) are provided, as well as sound and simple GUI functions.
SmallBASIC, which was originally created for the Palm Pilot personal digital assistant in the late 1990's by Nicholas Christopoulos.
Join the discussion forum:
https://www.syntaxbomb.com/smallbasic
Please report any crashes to one of the following. Be sure to include a small snippet of code causing the issue.
- https://github.com/smallbasic/SmallBASIC/issues
- email: smallbasic@gmail.com
- Fix: "0 IMP 0" returns now correct result 1
- Fix: DIM lower bound
- Fix: EQV bug. "0 EQV 0" will return correct result "1"
- Fix: INPUT #F; now supports up to 64 parameters
- Fix: RGB and RGBF now clamp parameters
- Fix: Bug in BGETC when using sockets
- Fix: Return values of POLYCENT and POLYAREA
- Fix: Line-chart line drawing to use current foreground color
- Fix: Printing chr(0) into a file or network interface
- Implemented STATMEDIAN() and STATSTD()
Implemented a new web service for managing files via desktop browser.
Fixed a problem with TRIM which broke the TinyBASIC.bas sample.
Fixed RECT FILLED when the coordinates are inverted
Fixed SPLIT command - empty input now gives zero length output
Fixed display of floating point numbers with high precision
Fixed functions Polyarea, Polycent
Fixed crash with INPUT command while scrolled #160
Updated CHART line drawing to use current foreground color
Added link from About screen to privacy page
Hide keypad on run. Show keypad for INPUT, then re-hide on completion.
Fix array append regression
Fixed 'Socket Client doesn't receive byte with value 13
Fixed RGB handling with IMAGEs
Fixed TSAVE of arrays includes extra null character.
Fixed array access regression
Fixed image save and load by 2D array are now compatible
Default image opacity is now 100
Implemented image.draw(), fix image.save
Implemented image.clip(left,top,right,bottom)
Updates for AppStore compliance
Removed path navigation to show unified view of available folders
Removed samsung keypad warning
Added range checking for the web services port
Fix CIRCLE command to ensure radius uses the WINDOW coordinate system
Fix to ensure the default VIEW is maintained during resizing
Fix square bracket field access issue
Fix crash when line length limit exceeded
Handle octal escapes correctly
Added option to preserve user data when app uninstalled
Update path label when displaying project folder
Implemented c-styles escape sequences
Add support for inline assignment of export variables
Fix usability issues with Samsung mobiles
Fix ABSMIN/ABSMAX transposed #96
Fix crash when passing non-array to CHART
Fix image.save() to array destination
Fix INPUT crash #99
Implement DEFINEKEY undo #92
Implement colour themes
- Fix module access in newer android versions.
- Fix edit label display
- Fix crash with SOUND when passing negative duration
- Implement SOUND playing in the foreground
- Fix setup screen colour display
- Show link to android page in about screen
- Fix navigation when network access down then available
- Changed UI display from black to be a slightly lighter onyx color.
- Update help tip in scratch window
Fix error message when command "LINE INPUT" attempts to read a non open file
Fix crash when attempting to load an image from a failed network connection
- Minor update to sync with desktop release
- Fixed a problem with the SEQ command
Editor now uses solarized dark colour theme
Fixed an issue with the IMAGE command
The build now targets the latest android version
Updated path handling to remove hard coded /sdcard paths
Updated the build system to use android studio
Fix issue with image save() command to ensure resulting array has correct dimensionsFix issue with display driver escape ESC-m (reset scroll position)</en-US>Fix potential crash when passing non string arguments to some built-in string funcs
Fix crash when displaying an alert with extended ascii charsFix crash when exporting from IDEFix exit when navigating to non-permitted pathAdd missing key mappings for DEL,ESC,HOME,BRK,FN(1-12)Handle screen rotationAdded scratch menu optionThe FORM command now reports an error when IMAGE input fails to loadAdd missing 'Select All' menu optionShell now displays size and date columns
Allow input of special charactersAdded share commandFix ‘?’ key input using gboardSelect alternative fontAllow array access via [] charactersCan now attach SUB/FUNCs as MAP fieldsClear out of scope CATCH variablesCreate MAP from single line JSON without ARRAY commandFix internal error handling long string variablesPython style here-documentAdded “Save-As” option to the file menuCIRCLE drawing is now anti-aliasedFixed cursor when displaying the popup while editingAdded menu widget