summaryrefslogtreecommitdiffhomepage
path: root/smallbasic.html.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'smallbasic.html.markdown')
-rw-r--r--smallbasic.html.markdown131
1 files changed, 131 insertions, 0 deletions
diff --git a/smallbasic.html.markdown b/smallbasic.html.markdown
new file mode 100644
index 00000000..9244525e
--- /dev/null
+++ b/smallbasic.html.markdown
@@ -0,0 +1,131 @@
+---
+language: SmallBASIC
+filename: learnsmallbasic.bas
+contributors:
+ - ["Chris Warren-Smith", "http://smallbasic.sourceforge.net"]
+---
+
+## About
+
+SmallBASIC is a fast and easy to learn BASIC language interpreter ideal for everyday calculations, scripts and prototypes. SmallBASIC includes trigonometric, matrices and algebra functions, a built in IDE, a powerful string library, system, sound, and graphic commands along with structured programming syntax.
+
+## Development
+
+SmallBASIC was originally developed by Nicholas Christopoulos in late 1999 for the Palm Pilot. Project development has been continued by Chris Warren-Smith since around 2005.
+
+Versions of SmallBASIC have been made for a number of early hand held devices including Franklin eBookman and the Nokia 770. Also various desktop versions have been released based on a variety of GUI tool-kits, some of which have become defunct. The current supported platforms are Linux and Windows based on SDL2 and Android based on NDK. A desktop command line version is also available, although not typically released in binary form.
+
+In around 2008 a large corporation released a BASIC like programming environment with a similar sounding name. SmallBASIC is not related to this other project.
+
+```
+REM This is a comment
+' and this is also a comment
+
+REM print text
+print "hello"
+? "? is short for PRINT"
+
+REM Control structures
+FOR index = 0 TO 10 STEP 2
+ ? "This is line number "; index
+NEXT
+J=0
+REPEAT
+ J++
+UNTIL J=10
+WHILE J>0
+ J--
+WEND
+
+REM Select case statement
+Select Case "Cool"
+ Case "null", 1,2,3,4,5,6,7,8,"Cool","blah"
+ Case "Not cool"
+ PRINT "Epic fail"
+ Case Else
+ PRINT "Fail"
+End Select
+
+REM catching errors with TRY/CATCH
+Try
+ fn = Freefile
+ Open filename For Input As #fn
+Catch err
+ Print "failed to open"
+End Try
+
+REM User defined subs and functions
+func add2(x,y)
+ ' variables may be declared as local within the scope of a SUB or FUNC
+ local K
+ k = "k will cease to exist when this FUNC returns"
+ add2=x+y
+end
+Print add2(5,5)
+sub print_it(it)
+ print it
+end
+print_it "IT...."
+
+REM Display lines and pixels
+At 0,ymax/2+txth("Q")
+Color 1: ? "sin(x)":
+Color 8: ? "cos(x)":
+Color 12: ? "tan(x)"
+Line 0,ymax/2,xmax,ymax/2
+For i=0 to xmax
+ Pset i,ymax/2-sin(i*2*pi/ymax)*ymax/4 color 1
+ Pset i,ymax/2-cos(i*2*pi/ymax)*ymax/4 color 8
+ Pset i,ymax/2-tan(i*2*pi/ymax)*ymax/4 color 12
+Next
+showpage
+
+REM SmallBASIC is great for experimenting with fractals and other interesting effects
+Delay 3000
+Randomize
+ff = 440.03
+For j = 0 to 20
+ r = rnd * 1000 % 255
+ b = rnd * 1000 % 255
+ g = rnd * 1000 % 255
+ c = rgb(r,b,g)
+ ff += 9.444
+ for i=0 to 25000
+ f += ff
+ x = min(xmax, -x + cos(f*i))
+ y = min(ymax, -y + sin(f*i))
+ pset x, y color c
+ if (i%1000==0) then
+ showpage
+ fi
+ next
+Next j
+
+REM For computer historians, SmallBASIC can run programs
+REM found in early computer books and magazines, for example:
+10 LET A=9
+20 LET B=7
+30 PRINT A*B
+40 PRINT A/B
+
+REM SmallBASIC also has support for a few modern concepts such as JSON
+aa = array("{\"cat\":{\"name\":\"harry\"},\"pet\":\"true\"}")
+If (ismap(aa) == false) Then
+ throw "not an map"
+End If
+Print aa
+
+PAUSE
+
+```
+
+## Articles
+
+* [Getting started](http://smallbasic.sourceforge.net/?q=node/1573)
+* [Welcome to SmallBASIC](http://smallbasic.sourceforge.net/?q=node/838)
+
+## GitHub
+
+* [Source code](https://github.com/smallbasic/SmallBASIC)
+* [Reference snapshot](http://smallbasic.github.io/)
+