Small Basic 1.2: Installation Guide (Featured Article)

Find the updated version of this article on TechNet Wiki:

Small Basic 1.2: Installation Guide



Small Basic is free! And it teaches actual text/syntax-based programming to students! This is the only language+IDE built for that purpose! And it's free! 

This guide shows you the detailed steps for installing Small Basic!

Downloading Small Basic 1.2

1-    Use your Web browser to go to Microsoft’s Small Basic website ( ), and click the Download button in the upper-right corner (see Figure 1).

Figure 1: The Small Basic website

2-    This takes you to the Microsoft Small Basic download page shown in Figure 2. Select your language (default is English), and then click the Download button. This saves the installer file (SmallBasic.msi) to your download folder. You’ll see the message “Thank you for downloading” at the top of the page when the download is complete.

Figure 2: Microsoft Small Basic Download page

Installing Small Basic 1.2

3-    Go to your download folder and double click the installer (SmallBasic.msi).  A dialog similar to the one shown in Figure 3 appears, asking for your permission to run the installer. Click the Runbutton to start installing Small Basic.

Figure 3: Security Warning dialog

4-    The Microsoft Small Basic Setup Wizard then opens (Figure 4). Read the description, and then click Next.

Figure 4: The Small Basic Setup Wizard

5-    The setup asks you to accept the End-User License Agreement (see Figure 5). Read the license agreement, check I accept the terms in the License Agreement, and then click Next.

Figure 5: The Small Basic End-User License Agreement

6-    In the next page of the wizard (Figure 6), click Next to accept the default installation options.

Figure 6: The Custom Setup page

7-    You’re almost done! Click Install to begin your installation (see Figure 7)!

Figure 7: The wizard is ready to install Small Basic

8-    Microsoft Small Basic begins installing! See what we mean in Figure 8.


Figure 8: The installation progress

9-    You’ve completed the installation! Click Finish to wrap it up (see Figure 9)!

Figure 9: You completed the installation!


Celebrate by starting your computer science journey with the Small Basic Getting Started Guide:

Small Basic Getting Started Guide: Chapter 1: An Introduction  


Because, after all, Small Basic is Awesome!


Got a question? Ask on the Small Basic Forum! We're full of answers and other fine things!


And you can get the latest version of this article over on TechNet Wiki:

Small Basic 1.2: Installation Guide


Have a Small and Basic weekend!

   - Ninja Ed 


Comments (7)
  1. As I mentioned, this guide is available here, but the up to date version is on TechNet Wiki:…/33426.small-basic-1-2-installation-guide.aspx

    And you can see most of our Wiki articles about Small Basic here:…/

  2. anonymouscommenter says:

    How can anyone take this language seriously when it does not support functions?   Please support some type of function call.  I can even recommend a method which doesn't require any new keywords:

    Sub Test(x)

     Test = x +5


    I know that you do not want to introduce the concept of scopes, so Test and X can continue to be considered global variables, therefore:

    y = Test(3) — would return 8 to y and

    y = Test      — would return the last yielded result, in this case 8.

  3. Alynna, what would the method and object be?


  4. anonymouscommenter says:

    An addition to the above, a side effect of having the Sub be a variable as well:

    Sub Acc(X)

     Acc = Acc + X


    Acc = 0


    Y = Acc(3)

    Y = Y+1

    Test now equals 8

    X equals 3

    Y equals 9.

    This syntax should be completely compatible with existing programs.

  5. anonymouscommenter says:

    In order to not introduce new keywords, in the definition:

    Sub Test(x)

    Test = Test + x

    End Sub

    Test is both a variable and method.

    "Test" alone refers to the 'variable' version of test which can be assigned inside the Sub test.

    "Test()" with the parenthesis tells it to call Test, which can operate on the variable Test.  And at the end of the sub, Test the variable has a value, which can then be assigned, as:

    Test = 3

    Y = Test(4)

    Test now has 7, and so does Y.

  6. anonymouscommenter says:

    After doing some tests with Small Basic I have discovered an interesting detail of the proposed implementation.

    Lets say that Sub did as I propose; in that Sub Test(x,y) declared not only the subroutine Test, but also the variable Test, which stored the result of the Test subroutine.  No scope is added, and x and y are global variables.

    This is fine since the current convention of calling a sub, is to set global variables, call the sub, and then read global variables.   Sub Test(x,y) just gives use the syntactic sugar of having x and y set by our call.  Test(1,2) becomes equal to x=1: y=2: Test()

    Except now Test is also a variable.  

    Observe that Small Basic already acts alot like this.  The Sub and Variable coexist:

    Sub Test

     Test = Test + 3


     Test = 2



    The result: 5

    So what I'd like to see is simple syntactic sugar that allows 3 things:

    1) The Sub Test(X) syntax that simply assigns a value to X.

    2) The Test(val) syntax that assigns va' to x

    3) The var = Test(val) that executes the Test sub with the val assignment to X and returns the value of the Test variable to var.

    This brings a very functional but still simple function declaring system to Small Basic.

    There is also a cool trick you can do.  This doesn't create 'scope' but it does make scope an option.  Consider the following.

    Sub Add(Add[0],Add[1])

     Add = Add[0] + Add[1]

    End Sub

    In my observation when you create an array, it gets stored as index=value;index=value.

    So if you enter the sub doing this:

    X = Add(2,3)

    Add (the variable) will have 0=2;1=3 in it.

    However the assignment of Add, it will get 2 from Add[0] and 3 from Add[1] and assign 5 to Add, eliminating the array, which means next time you call the sub you don't have to worry about what it had before.  Unless you want to.

    I think adding this to the language would make it much more useful and much more of a teaching tool, while not making it any more difficult to learn, as you haven't added any new keywords, haven't added scope, and really haven't changed how the language works much as it is now..

  7. anonymouscommenter says:

    Ed Price – MSFT 25 Feb 2016 2:27 PM #

    Alynna, what would the method and object be?


    I dont think a method and object are involved.  This involves changing the behaviour of the keyword "Sub"..

Comments are closed.

Skip to main content