Overview How to install Extension downloads Documentation Other resources Wiki Blog



Overview

Microsoft Small Basic is a free simplified programming language for children and adults to get started learning to program. See the Small Basic website or preview the Small Basic API for more details.

Also check out the , and articles.

The LitDev (little developer) extension for Small Basic has loads of extra functionality with over 55 new objects and over 1000 methods, properties and events; including 2D physics, 3D rendering, controls, dialogs, graphing, statistics, matrices, lists, sorting and searching (Regex), faster arrays, USB and COM connection, SQLite, MySQL, SqlServer, OleDb and Odbc databases, webcam, multiple GraphicsWindows, scrollbars, image processing, date and time handling, debugger, client-server interaction, encryption, clipboard, extended music and sound recording, parse xml, file zip and ftp, asynchronous and argument subroutine calls, inline C# and javascript code and lots more.

As well as the LitDev extension, there are links to download its full source code and the source code for several small demonstration extensions to help you get started writing your own.

The extensions are written in C# and use the .Net 3.5 framework for versions of Small Basic up to 1.0.  Small Basic version 1.1 onwards and its extensions require .Net 4.5 which is available for Vista onwards and pre-installed on Windows 8 onwards.

Extensions can be written in any .Net language, and provide a way for Small Basic programmers to develop their own skills and progress from Small Basic to larger programming languages, as well as generating useful features.

To write your own extension you will need which can be downloaded and installed for free.

To decompile and view the source for other extensions and SmallBasicLibrary.dll you can use IlSpy.

More information on writing your own extension can be found and in downloads below.

If any download links are broken, then please leave a post on this Small Basic forum since larger downloads seem to be periodically deleted by web hoster.

How to Install

To get the main LitDev extension, click the image below.

   

Another option is to use Small Basic Extension Manager on .

Alternatively, click the appropriate icon next to an extension from those listed in the Extension Downloads section below to download a zip file containing the required files.

Zip files can be un-zipped using various compression software, including JZip or 7Zip.

As with all Small Basic extensions, copy the extension dll and xml (inside the dll zip) to a lib sub-folder of the Small Basic installation folder, usually in one of the following locations:

C:\Program Files\Microsoft\Small Basic\lib
C:\Program Files (x86)\Microsoft\Small Basic\lib

You may require to create the lib folder if it doesn't exist.

Copy all other files (documentation and samples) elsewhere.

All extensions have to be rebuilt for each Small Basic version.  Only the current versions are maintained on this site in most cases with some selected previous versions also available.  Earlier versions can usually be rebuilt from the extension source code.

If the extension commands fail to appear in Small Basic (type LD and no options appear) then you may need to unblock the downloaded dll.  Right click LitDev.dll and select Properties and clear the block if present.  If it fails to unblock, then copy LitDev.dll to a folder where you have write access (e.g. Documents), unblock it there and then move back to the Small Basic lib folder.  Alternatively, unblock the downloaded zip file before unzipping the content.

   

Thanks to OzJerry, Pappa Lapub, NaochanON amd Tryhest for helping diagnose this issue.

Extensions

Click the DLL , Source (VS 2010), (VS 2012), (VS 2013), (VS 2015), (VS 2017), (VS 2019), or Additional Resource icon next to the required download.

Please direct any questions, suggestions or problems to the .

LitDev Extension Downloads

LitDev
1.2.23.0


This extension contains all of the useful bits in the demonstration extensions with many additions as well as lots of other methods, ranging from simple utilities to physics simulation and 3D.

This version is for the current versiion of Small Basic (1.2).  A pre-release test version is also available below, as well as the last version compatible with Small Basic versions 1.0 and 1.1.

The current version of the LitDev extension download is also maintained on and the source code is available on .

A (thanks to Nonki) is also available.
LitDev
Beta Version
This is a pre-release 'beta' version of the LitDev extension updated regularly as things are added for testing or bugs fixed.  It is also a lightweight download of the extension with no samples or additional documentation.

Use LDUtilities.Version() to view breaking changes.
LitDev
1.1.0.8
This is the last version of the LitDev extension that can be used with version 1.1 of Small Basic.
LitDev
1.0.0.133
This is the last version of the LitDev extension that can be used with version 1.0 of Small Basic.
LitDev3D
UNMAINTAINED


 

A 3D extension using the irrlicht engine (64 bit only), the dll download targets Small Basic 1.0.

The associated media files (irrlicht samples) may be useful getting started.

Another actively maintained 3D method (LD3DView) is included in the LitDev extension and works on all PC architectures.
WaveForms
UNMAINTAINED




This is a small extension to create PPM (Pulse Position Modulation) sound signals to control RC (remote control) devices.  It can be modified to create any sound wave form.

See post.  Requires installing SlimDX (.Net 2.0 version for SB 1.0 and .Net version 4.0 for SB 1.1 onwards).

This object is now included and extended in the LitDev extension.

LitDev Extension Documentation

Preview LitDev Extension API or (Deutsch) - translation by Pappa Lapub

Preview LitDev Extension Change Log (View this version and previous version changes and new features)

Preview LDPhysics Getting Started Guide

Preview LitDev3D Extension API or (Deutsch)

Preview Small Basic API or (Deutsch)

LitDev Extension Details

The LitDev extension is actively developed and is updated periodically on this site and also uploaded to . 

The full source code is maintained on .

All of the objects in this combined extension start with LD to isolate them from other similarly named objects.

There are many samples ranging from simple demonstrations to full programs included in the dll zip.

A detailed change log and current version check can be viewed by running LDUtilities.Version(), or see preview above.

The following is a brief summary of the LitDev extension objects, for the full API (functionality and syntax) see preview above.

LD3DView A 3D modelling set of methods for the GraphicsWindow.
LDArray A faster array method for large 1D arrays with 1000+ elements using integer indexing.
LDBits Bitwise logic to store binary flags in a single variable as bits.
LDBlueTooth Bluetooth connections.
LDCall Call a subroutine as a function with arguments and optional return value. Call any extension method asynchronously or make a call from another pre-compiled Small Basic program.
LDChart Customisable chart control, including pie, doughnut, bubble, bar and column charts.
LDClient The client methods for a client server multi-PC application.
LDClipboard Methods to set and get data to and from the clipboard.
LDController Get input from one or more USB attached controllers (e.g. gamepad or joystick).
LDControls Additional controls for the GraphicsWindow, including TreeView, RichTextBox, WebBrowser, ListBox, ComboBox, CheckBox, RadioButtons, MediaPlayer, Slider, ProgressBar, PasswordBox, DocumentViewer, Menu, ListView and DataView. Right-click context control menus for any shape or control. Drag and drop for some controls.
LDCursors Set cursors in the GraphicsWindow.
LDDataBase Create, access and query SQLite, MySQL, SqlServer, Oledb or Odbc databases.  See zetcode for SQLite primer.
LDDateTime Utilities to manipulate and calculate date and time differences, i.e. manipulate past and future dates.
LDDebug A debugging tool and auto instrumentation to create breakpoints.
LDDialogs Additional dialog utilities, including a blocking popup waiting dialog, tooltips, calendar, font, colours, GraphicsWindow right-click context menu and multi button message box.
LDDictionary Fix for broken Dictionary object in version 1.0 (also includes Spanish dictionary).
LDEffects Set visual effects to any shape or control.
LDEncryption Encrypt and decrypt some text or create a password hash.
LDEmail Send email using an smtp server.
LDFastArray Fast 1D, 2D and 3D arrays with CSV file access.
LDFastShapes Methods to modify shapes by integer index and batch update (faster).
LDFigures Add some shapes like arcs, polygons, callouts and arrows.
LDFile File utilities like read and write CSV (comma separated value) files, read files to an array, file length, music file play time, print a file, get system folder paths, read non-UTF8 encodings like ANSI and save/read all variables.
LDftp Upload, download, delete and list files by ftp, including binary and text files with an option to transfer asynchronously
LDGeography Geography web based data.
LDGraph Graph plotting methods including export to Excel and CSV.
LDGraphicsWindow
(formerly in LDUtilities and LDShapes)
Export of GraphicsWindow to image files or print, and other utilities like pause and resume GraphicsWindow updates, GraphicsWindow icon, minimise/maximise the GraphicsWindow, transparent GraphicsWindow, over-ride GraphicsWindow close, disable window close buttons and Flood Fill regions.
LDHashTable The hashtable provides a fast and efficient way of storing key-value pairs.
LDHID A low level generic USB Human Interface Device (HID) interface.
LDIcon Create an icon file from an image.
LDImage Extends ImageList to include image processing.
LDInline Include C#, VB or JScript methods, properties and events to compile and call from your Small Basic code.  It can also create dlls or extensions and use or probe other .Net dlls.
LDIOWarrior Access IOWarrior USB devices (see Code Mercenaries IO-Warrior).
LDList A data storage object similar to arrays where indices are automatically maintained.  It is much faster than Small Basic arrays and has other useful features.
LDLogic Logical operations.
LDMathX Extended math, including FFT.
LDMatrix Matrix algebra, for example to solve linear systems of equations.
LDMusic Extends Sounds.PlayMusic to include additional instruments and notes can also be played synchronously (chords).
LDNetwork † Web methods, including a method to store and retrieve game high scores and store game data.
LDPhysics A larger set of methods to simulate Dynamic Collision Physics using the Box2D engine. This is the same physics engine used for Angry Birds.
LDQueue A data storage object similar to a stack, except that values are stored first-in first-out.
LDRegex
(formerly in LDUtilities)
Regex operations.
LDResources Save and load images, sounds, files and text/variables to a single file to provide with your program.
LDScrollBars GraphicsWindow ScrollBars, careful use allows a scrolling type game.
LDSearch Web base Bing searches.
LDServer The server methods for a client server multi-PC application.
LDSettings Store and retrieve settings for your programs.
LDShell Extended shell file methods (code by Pappa Lapub).
LDSort Array sorting by index and value, with number and string sorting supported.
LDSound Record and save sounds from a microphone. Play system sounds.
LDStatistics Statistics on a 1D array of numbers and random sample generation with normal, binomial, uniform and triangular distributions.
LDStopwatch Accurate system stopwaches.
LDText Text utilities, including, split, compare, trim, replace and find-all.
LDTextWindow TextWindow utilities, including low level key events, interruptable Read or ReadNumber, capture and print TextWindow, set more TextWindow colours,.
LDTimer Additional timers.
LDTranslate UPDATED Language translation.
LDUnits A general purpose unt conversion system.
LDUtilities UPDATED List of available fonts or colours, culture number conversions and some assorted utilities.
LDVector 3D vector algebra methods.
LDWaveForm Create PPM (Pulse Position Modulation) sound signals to control RC (remote control) devices and simple sound waveforms.
LDWebCam A webcam object for the GraphicsWindow, with some simple effects.
LDWindows Create additional GraphicsWindows.
LDxml Methods to parse xml files.
LDZip
(formerly in LDUtilities)
File Zip archiving.

LDColours
LDCommPort
LDEvents
LDFocus
LDProcess
LDShapes
LDSpeech
LDMath
(formerly LDTrig)
Maintained and in some cases significantly extended versions of the demonstration extensions are also included.

† The php files in the folders gamedata and highscore on this website are those used by the LDNetwork extension methods. You may use these with your own web site.  Since the php files are both called server.php you should keep the gamedata and highscore file structure.  To use the LitDev extension commands in LDNetwork with these php files (see download below) on your web site, you must first set the network location using the property LDUtilities.NetworkURL in your Small Basic code.  The default value is "https://litdev.co.uk" where the folders gamedata and highscore are located.

LitDev Extension Screenshots


Demonstration Extension Downloads

The following smaller extensions are provided with full source code for demonstration purposes for you to start building your own. They are no longer actively developed, but still show how various operations can be performed and interact with SmallBasicLibrary.dll.

All of the functionality in the demonstration extensions is contained in the LitDev extension, therefore there is no no need to download these unless you are interested in how they are made.

Download the source and unzip to a folder somewhere, open the solution (*.sln) in Visual Studio and build the solution. Copy the resulting dll and xml files to the Small Basic lib folder to then become available for Small Basic.

You may need to update the reference to where SmallBasicLibrary.dll is installed on your PC inside the References section of Solution Explorer in Visual Studio.

If you have any questions, then check out the 'Guide to writing extensions' below or ask on the .

Colours   Get SmallBasic colours by name.
Music   Get a music file play time.
SerialPort   Access the serial port (original code by Nino Carrillo.
Spawn   Access system process information and start external processes.
Speech   Use a speech synthesizer to speak text.
TextBoxFocus   Set and get the focus for Controls and Textboxes.
Events   Sample creating event extension (display change).
ShapesExtension   A method to move a line shape and manipulate Shapes such as dashed pens, Z-index layering and some basic collision detection.
TrigD   Trig functions using degrees.

Other Resource Downloads
For the following downloads, where multiple versions are available they refer to compatibility with Small Basic versions.

Samples
Some Small Basic samples that don't use extensions, but demonstrate a range of features.

Small Basic API
A printable and editable copy of the Small Basic API (commands and their syntax) created from SmallBasicLibrary.xml.

Previous versions
A previous msi installer may be required to correctly uninstall Small Basic before installing the current version.

Hello World test
A very simple compiled Small Basic program that can be used to test .Net if an installation of Small Basic fails.

Guide to writing extensions
Guides to setting up and compiling an extension using VS 2010 Express in C# and VB. This is very similar to using more recent versions of VS, where the guides are also applicable.

XML converter
Utility program to convert Small Basic and extension xml files to rtf and html documents. This tool was used to create the rtf files provided with extensions on this site as well as the Small Basic API above and html API previews. Tool also contains some other utilities. It requires .Net 4.5 which installer will detect and install if you want this tool.

Small Basic extension compiler
Compile an extension in Small Basic (simple example included). Code by Fremy Company, recompiled with permission for current version. See and for more details.

LDNetwork php files
Theses are the php files required to use LDNetwork methods on your own web area.

Extension template
Add a C# Visual Studio 2015 Small Basic Extension template.  Download and copy the zip (don't unzip it) to Documents\Visual Studio 2015\Templates\ProjectTemplates.  It assumes SmallBasicLibrary.dll is in C:\Program Files (x86)\Microsoft\Small Basic.  To create an extension using this template goto File->New->Project... select SBExtension from the Installed Templates Visual C# folder, compile and copy SBExtension.dll and SBExtension.xml from SBExtension\bin\Release to the Small Basic lib folder.

SB-Prime : Extended Small Basic development environment
This is a Small Basic development environment (IDE) with debugger, flow chart visualisation, shapes and controls editor, extension management, extended editing as well as all of the features present in the standard Small Basic IDE.

It should work with any installed version of Small Basic (C:\Program Files (x86)\Microsoft\Small Basic or C:\Program Files\Microsoft\Small Basic).

The debugging functions do require Small Basic version 1.1 or later since it uses .Net 4.5 features present in this version onwards.

Feedback welcome...

See the main for additional questions/requests/bugs etc.

Installation
  1. Download and save the zip somewhere
  2. Unblock the downloaded zip file (this allows the unzipped exe and dlls to be used): Locate the downloaded zip in File Explorer, then right click -> Properties -> General -> Unblock
  3. Unzip the contents of the zip somewhere, maybe an empty folder in Documents or in the SB installation folder (not the lib folder)
  4. Run SB-Prime.exe
Documentation

A short guide to debugging with SB-Prime (How to Debug).

Plugins

Plugins may be written for SB-Prime.

A sample VS 2017 project to get you started may be downloaded from litdev.co.uk/downloads/SBSamplePlugin.zip.

A GitHub version of the plugin sample source code is also available from .

Plugin dlls should be unblocked if downloaded, then placed in a subfolder of the SB-Prime.exe location, called 'plugins'.

Using the plugin sample, only the SBSamplePlugin.dll file should be placed in the plugins folder.

The dlls in the plugins folder will be auto detected and loaded to a new ribbon button if they are are correctly created.

ScreenShot

 

Updates (recent at top)

To update SB-Prime select the Advanced ribbon tab, and then click Update from the Settings group. Upgrade will persist your settings.
  • Interface localisation, initially russian (Version 1.1.7)
  • Minimum window sizes set
  • Lexing issues fixed and space indent option added
  • Shapes Editor - fix for 'action' keys when textbox has focus
  • Improved printing
  • Decompile .Net assemblies to C# (Advanced tab)
  • Various cummulative updates (Version 1.1.6)
  • Extended hotkeys to closely resemble Small Basic behaviour
  • Single click update added in Advanced|Options
  • Renamed SB-Prime (Version 1.1.5)
  • Shapes editor tool added
  • Flow chart visualisation added (Version 1.1.4)
  • Program details and rating added
  • Various minor improvements
  • First stable version (Version 1.1.3)
Extension manager  
This contains an application to manage your Small Basic extensions.  It is available within SB-Prime, therefore there is not point downloading both.  Download and extract the zip somewhere and run SBExtensionManager.exe.



Translation  
I found a way to easily do automatic translation packs for Small Basic.  The tranlation is by software so it will not be perfect.  It consists of tranlations of SmallBasicLibrary.xx,xml (for intellisense) and Strings.xx,resx (for IDE), where xx is the language code.  All extension packs are for Small Basic version 1.2.

Both files should be downloaded and copied to the Small Basic installation folder (not the lib folder).  You can edit some bad translation manually in these files if you want and even let me know what the better translation should be.

Downloads to the conversions I have done are below, if you want others then leave a post on this .

You can start Small Basic with any available language from a command window or bat file in the Small Basic installation folder using a launguage code of the form xx-xx, e.g. no-no for Norwegian.

C:\Program Files (x86)\Microsoft\Small Basic\SB.exe /lang:no-no

Norwegian Language Pack (no-no) Greek Language Pack (el-el)
Hindi Language Pack (hi-hi) Urdu Language Pack (ur-ur)
Estonian Language Pack (et-et) Bulgarian Language Pack (bg-bg)
Hebrew Language Pack (iw-iw) Indonesian Language Pack (id-id)

Below are links for machine translations of the LitDev extension xml (these are not updated for every version release - you can create your own with the translation tool).

Spannish (LitDev.es.xml) Russian (LitDev.ru.xml)
French (LitDev.fr.xml) Japanese (LitDev.ja.xml) [ ]

Wiki Articles

This article covers the basic ideas of structured programming, or some tips for writing better programs in Small Basic
This article describes the main language elements or 'grammar' used by the Small Basic language and gives some suggestions for further study
This article covers the basics of text manipulation in Small Basic using the Text object
This article covers the basic use of the Small Basic Arrays
This article covers the basic use of the Small Basic Stack, with an example recursively finding all jpg image files in and below an initial directory
This article covers the basic use of the Small Basic GraphicsWindow
This article covers the basic use of events in Small Basic
This article considers how to Graduate a Small Basic program to C#
This article is an introduction to graphical game programming using Small Basic. It includes the basics of program design, movement, user interaction with keys and mouse, collision detection and introduces some more advanced ideas at the end.
This article covers the basics of threading in Small Basic.
This article describes using arrays of sprites in a Small Basic program.
This article describes how Small Basic arrays are handled internally. It describes the advantages and disadvantages of the approach used, and introduces an alternative extension method 'LDList'.

Selected Blog Articles


Hosted By Arvixe