From 50056015f9e0afa4e26469b533d2c647515575fc Mon Sep 17 00:00:00 2001
From: Joerg Siebenmorgen
Date: Mon, 7 Apr 2025 22:04:07 +0200
Subject: [PATCH 1/3] Update user manual and add video
---
_build/pages/android.markdown | 16 ++-
_build/pages/guide.markdown | 225 ++++++++++++++++++++++++++--------
_build/pages/sdl.markdown | 18 ++-
css/style.css | 13 ++
4 files changed, 218 insertions(+), 54 deletions(-)
diff --git a/_build/pages/android.markdown b/_build/pages/android.markdown
index f742cab0..6686f4ab 100644
--- a/_build/pages/android.markdown
+++ b/_build/pages/android.markdown
@@ -3,9 +3,23 @@ Android
> SmallBASIC for Android guide
+The Android version of SmallBASIC comes with a built-in Integrated Development Environment
+(IDE), you can write programs on your Android-powered tablet or mobile phone and run them instantly.
+
## Getting started
-The system menu is accessed by the "three vertical dots" button in the bottom right corner of the screen.
+In the video below the basic steps of creating a file, opening it in the internal editor and executing
+the program are shown.
+
+
+
+
+
+Please note, that at the first start of the Android version of SmallBASIC, the editor is turned off. A mouse click on
+a program name will start it immediately. If you want to edit the file, please turn on the editor by clicking
+on the three dots in the lower right corner and choosing the entry `Editor [OFF]` to enable the editor.
+
+## Step-by-Step Guide

diff --git a/_build/pages/guide.markdown b/_build/pages/guide.markdown
index 1f12d65f..58eb3f02 100644
--- a/_build/pages/guide.markdown
+++ b/_build/pages/guide.markdown
@@ -11,6 +11,13 @@ syntax.
Contents
:::
+* [Getting Started](#GettingStarted)
+ * [SmallBASIC Versions](#SmallbasicVersions)
+ * [Windows](#Windows)
+ * [Linux](#Linux)
+ * [Android](#Android)
+ * [Build from Source](#BuildFromSource)
+ * [Using the IDE](#UsingtheIntegratedDevelopmentEnvironment)
* [Source Code Format](#SourceCodeFormat)
* [Comments](#Comments)
* [Numbers and Srings](#NumberAndStrings)
@@ -37,6 +44,7 @@ Contents
* [Accessing Elements of a Map Variable](#AccessingElementsOfAMapVariable)
* [Add Key-Value Pairs](#AddKeyValuePairs)
* [Key-Value Pairs with References](#KeyValuePairsWithReferences)
+ * [Maps as Pseudo Objects for OOP](#MapsAsPseudoObjectForOOP)
* [Operators](#Operators)
* [Pseudo-operators](#pseudo)
* [Subroutines and Functions](#SubroutinesAndFunctions)
@@ -50,11 +58,16 @@ Contents
* [Nested Routines](#NestedRoutines)
* [Declarations in PalmOS](#DeclarationsInPalmOS)
* [Expressions](#Expressions)
+ * [IF-THEN-ELSIF-ELSE](#IfThenElseifEndif)
+ * [Single-line IF-THEN-ELSE](#SingleLineIfThenElse)
+ * [Inline Version of IF](#InlineVersionOfIf)
+ * [SELECT CASE](#SelectCase)
* [Loops](#Loops)
* [FOR-TO-NEXT Loop](#ForToNextLoop)
* [FOR-IN-NEXT Loop](#ForInNextLoop)
* [WHILE-WEND Loop](#WhileWendLoop)
* [REPEAT-UNTIL Loop](#RepeatUntilLoop)
+ * [The DO Keyword](#TheDoKeyword)
* [Units](#Units)
* [Declaration](#UnitsDeclaration)
* [Import](#UnitsImport)
@@ -63,12 +76,65 @@ Contents
* [OPTION MATCH](#Statement3)
* [OPTION PREDEF](#Statement4)
* [Meta Commands](#Meta)
-* [The USE keyword](#use)
-* [The DO keyword](#do)
-* [Loops and variables](#Loops)
+* [The USE Keyword](#TheUseKeyword)
+* [Exception Handling](#ExceptionHandling)
:::
+## Getting Started {#GettingStarted}
+
+SmallBASIC is available for various operating systems, including
+Windows, Linux, and Android. It can be built from source to run
+on many other POSIX-compliant systems, such as Raspberry Pi OS. With
+its built-in Integrated Development Environment (IDE), you can write
+programs on your Android-powered tablet or mobile phone and run them
+instantly.
+
+### SmallBASIC Versions {#SmallbasicVersions}
+
+SmallBASIC comes in three different flavors for the desktop. The SDL version offers a simple but
+efficient IDE and is perfect for working with graphics. The FLTK version has a great IDE. The
+console version doesn’t offer an IDE and is text-only but works perfect with plugins like raylib
+or nuklear. The Android version is similar to the SDL version and comes with an integrated IDE,
+too.
+
+### Windows {#Windows}
+
+Download the [latest release of SmallBASIC](https://smallbasic.github.io/pages/download.html).
+The different versions of SmallBASIC are included in the zip-file. Extract the zip-file to a
+location of your choice. Open the SmallBASIC folder and start one of the following programs:
+
+- sbasicg.exe: SDL
+- sbasici.exe: FLTK
+- sbasic.exe: Console
+
+### Linux {#Linux}
+
+Download the [latest release of SmallBASIC](https://smallbasic.github.io/pages/download.html).
+The different versions of SmallBASIC are provided as separate AppImages. Download an AppImage
+and copy it to a directory of your choice. Execute the AppImage. Depending of the Linux version
+you have to make the AppImage executable: `chmod u+x AppImageFile`, where `AppImageFile` is the
+filename of the AppImage.
+
+### Android {#Android}
+
+Download and install SmallBASIC for Android using
+[Google Play](https://play.google.com/store/apps/details?id=net.sourceforge.smallbasic).
+
+### Build from Source {#BuildFromSource}
+
+Using Linux it is quite easy to build SmallBASIC from source. This has the advantage, that you
+don't need to use AppImages and you can use SmallBASIC on other devices like Raspberry Pi.
+Please follow the instructions on [Github](https://github.com/smallbasic/SmallBASIC).
+
+### Using the Integrated Development Environment {#UsingtheIntegratedDevelopmentEnvironment}
+
+Please read the separate articles for the different versions of SmallBASIC:
+
+- [SDL](https://smallbasic.github.io/pages/sdl.html)
+- [Android](https://smallbasic.github.io/pages/android.html)
+- [FLTK](https://smallbasic.github.io/pages/fltk.html)
+
## Source Code Format {#SourceCodeFormat}
SmallBASIC files are plain text files in ASCII or UTF-8. A program consists of
@@ -776,6 +842,8 @@ sub PrintBold(s)
end
```
+### Maps as Pseudo Objects for OOP {#MapsAsPseudoObjectForOOP}
+
Maps in combination with references can be used to create a pseudo object
similar to object-oriented programming.
@@ -899,13 +967,13 @@ scope.
Subroutine and function names can use any alphanumeric characters, extended
characters (ASCII codes 128 - 255 for non-English languages), and the symbol `_`.
-The first character of the name cannot be a digit nor a `_`.
+The first character of the name cannot be a digit.
Subroutine and function names are case-insensitive.
```
-abc(), a_c(), ab2c() -> valid names
-1cd(), a$b(), _abc() -> invalid names
+abc(), a_c(), ab2c(), _abc() -> valid names
+1cd(), a$b() -> invalid names
```
Subroutines and functions can not have the same name as build-in commands.
@@ -1254,6 +1322,20 @@ UNTIL index > 10
Use `EXIT` or in case of nested loops `EXIT LOOP` to exit the loop.
+### The DO Keyword {#TheDoKeyword}
+
+This keyword is used to declare single-line commands. It can be used with
+`WHILE` and `FOR`-family loops.
+
+```smallbasic
+FOR i = 1 to 10 DO PRINT i
+FOR f IN files("*.txt") DO PRINT f
+```
+
+```smallbasic
+WHILE i < 4 DO i++
+```
+
## Conditions {#Conditions}
Conditions can be used to branch the program flow depending on the value of
@@ -1288,9 +1370,10 @@ on its line. If anything other than a comment follows `THEN` on the same line,
SmallBASIC interprets it as a single-line IF-THEN-ELSE construct. IF blocks may
be nested.
-Instead of `ELSEIF` and `ENDIF`, `ELIF` and `FI` can be used.
+Instead of `ELSEIF` and `ENDIF`, `ELIF` and `FI` can be used. Instead of `THEN`,
+`DO` can be used, but this is not suggested.
-### Single-line IF-THEN-ELSE
+### Single-line IF-THEN-ELSE {#SingleLineIfThenElse}
```smallbasic
IF expression THEN command1 ELSE command2
@@ -1303,7 +1386,47 @@ Multiple commands can be separated by a colon `:`. If instead of a command a
number is specified, it is equivalent to a GOTO command with the specified
numeric-label.
+### Inline Version of IF {#InlineVersionOfIf}
+
+```smallbasic
+result = IFF (condition, return_value_true, return_value_false)
+```
+
+The command `IFF` will test the condition `condition`. If `condition` resolves to
+`true` then `return_value_true` will be returned otherwise `return_value_false`.
+
+```smallbasic
+x = 4
+ans = IFF(x <= 5, 0, 10)
+PRINT ans ' Output: 0
+```
+
+See function reference [IFF](https://smallbasic.github.io/reference/638.html) for
+more information.
+
+### SELECT CASE {#SelectCase}
+
+```smallbasic
+SELECT CASE expr
+ CASE result1
+ ' do thinks
+ CASE result2
+ ' do thinks
+ CASE ELSE
+ ' do thinks
+END SELECT
+```
+
+`SELECT CASE` offers a more concise syntax to writing successive IF tests. `SELECT CASE`
+performs multiple tests on the expression `expr`. If the value of `expr` is equal to
+`result1`, the case statement `result1` will be entered and the commands executed. An
+unlimited amount of case statements can be used. Once a case statement is fulfilled
+the select-case structure will be exited and all following case statements will not be
+tested anymore. If non of the case statements were entered the optional 'CASE ELSE'
+statements will be entered.
+See function reference [SELECT CASE](https://smallbasic.github.io/reference/655.html) for
+detailed information.
## Units {#Units}
@@ -1425,66 +1548,64 @@ SmallBASIC uses the following meta commands:
#unit-path: C:\sbasic\units;C:\temp
```
+### The USE Keyword {#TheUseKeyword}
+The `USE` keyword is used on specific commands for passing a user-defined expression.
-### The USE keyword {#use}
-
-This keyword is used on specific commands to passing a user-defined expression.
-
-```
+```smallbasic
SPLIT s," ",v USE TRIM(x)
```
-In that example, every element of V() will be 'trimmed'.
-Use the x variable to specify the parameter of the expression. If the expression needs more parameter, you can use also the names y and z
+In this example, every element of `v` will be trimmed. Use the `x` variable to
+specify the parameter of the expression. If the expression needs more parameter,
+you can use also the names `y` and `z`.
-### The DO keyword {#do}
+## Exception Handling {#ExceptionHandling}
-This keyword is used to declare single-line commands. It can be used with WHILE and FOR-family commands.
+Exception handling is supported for file handling, and accessing serial ports and
+network sockets. Exception handling is typically used with errors raised when
+calling a file system command that cannot be completed, for example attempting to
+open a non-existent file.
+```smallbasic
+TRY
+ ' do something
+CATCH err
+ print err
+ ' do something
+END TRY
```
-FOR f IN files("*.txt") DO PRINT f
-...
-WHILE i < 4 DO i ++
-```
-
-Also, it can be used by IF command (instead of THEN), but is not suggested.
-
-
-### Loops and variables {#Loops}
-
-When we write loops it is much better to initialize the counters on the top of the loop instead of the top of the program or nowhere.
-
-```
-i = 0
-REPEAT
- ...
- i = i + 1
-UNTIL i > 10
+```smallbasic
+TRY
+ ' do something
+CATCH "Error 1"
+ ' do something
+CATCH "Error 2"
+ ' do something
+END TRY
```
-p.. Initializing variables at the top of the loop can make code more readable.
+The `TRY` statement introduces a try/catch block. A try/catch block consist of the
+following structure:
-## Loops and expressions
+`TRY`
-```
-FOR-like (loops) commands evaluate both the "destination" and the exit-expression every time.
-FOR i=0 TO LEN(FILES("*.txt"))-1
- PRINT i
-NEXT
-```
+The `TRY` statement starts a block of commands which might create a run-time error.
-In that example the 'destination' is the LEN(FILES("*.txt"))-1 For each value of i the destination will be evaluated. That is WRONG but it is supported by BASIC and many other languages.
-So, it is much better to be rewritten as
+`CATCH [var | expr]`
-```
-idest=LEN(FILES("*.txt"))-1
-FOR i=0 TO idest
- PRINT i
-NEXT
-```
+The `CATCH` statement is used to catch a run-time error of one of the commands in
+the try-block.
+
+The `CATCH` statement has two modes. You can supply a variable argument to store the
+error string. Alternatively you can supply a string expression. When the raised error
+matches the string expression, the error will be caught. When using the expression
+mode, you can supply a succession of CATCH statements to handle various error messages
+separately.
-Of course, it is much faster too.
+`END TRY`
+The `END TRY` statement marks the end of a try/catch block.
+For examples see the language reference [TRY](https://smallbasic.github.io/reference/1425.html).
\ No newline at end of file
diff --git a/_build/pages/sdl.markdown b/_build/pages/sdl.markdown
index 58977c21..90f41c25 100644
--- a/_build/pages/sdl.markdown
+++ b/_build/pages/sdl.markdown
@@ -1,4 +1,20 @@
-# sbasicg (SDL)
+# SmallBASIC SDL Version
+
+The SDL version of SmallBASIC offers a simple but efficient IDE and is perfect for working with graphics. To start the SDL version please execute:
+
+- Windows: `sbasicg.exe`
+- Linux: `SmallBASIC-SDL_xx.xx-x86_64.AppImage` or `sbasicg` if built from source
+
+In the video below the basic steps of creating a file, opening it in the internal editor and executing
+the program are shown.
+
+
+
+
+
+Please note, that at the first start of the SDL version of SmallBASIC, the editor is turned off. A mouse click on
+a file name will start the program immediately. If you want to edit the file, please turn on the editor by clicking
+on the three dots in the lower right corner and choosing the entry `Editor [OFF]` to enable the editor.
## Live mode
diff --git a/css/style.css b/css/style.css
index fa939f20..f8355cbf 100644
--- a/css/style.css
+++ b/css/style.css
@@ -758,6 +758,19 @@ a.screenshot {
display: inline-block;
}
+.video-container {
+ position: relative;
+ padding-bottom: 56.25%; /* 16:9 */
+ height: 0;
+}
+.video-container iframe {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; border:0px;}
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
From b12f395605082896c5e77f1c96bc5bf4b1991d6f Mon Sep 17 00:00:00 2001
From: Joerg Siebenmorgen
Date: Mon, 7 Apr 2025 22:34:45 +0200
Subject: [PATCH 2/3] Build changes
---
pages/android.html | 19 ++-
pages/guide.html | 290 ++++++++++++++++++++++++++++++++-------------
pages/sdl.html | 24 +++-
3 files changed, 247 insertions(+), 86 deletions(-)
diff --git a/pages/android.html b/pages/android.html
index 61de3504..dff3dfc0 100644
--- a/pages/android.html
+++ b/pages/android.html
@@ -41,9 +41,22 @@
Android
SmallBASIC for Android guide
+
The Android version of SmallBASIC comes with a built-in Integrated
+Development Environment (IDE), you can write programs on your
+Android-powered tablet or mobile phone and run them instantly.
Getting started
-
The system menu is accessed by the “three vertical dots” button in
-the bottom right corner of the screen.
+
In the video below the basic steps of creating a file, opening it in
+the internal editor and executing the program are shown.
+
+
+
+
Please note, that at the first start of the Android version of
+SmallBASIC, the editor is turned off. A mouse click on a program name
+will start it immediately. If you want to edit the file, please turn on
+the editor by clicking on the three dots in the lower right corner and
+choosing the entry Editor [OFF] to enable the editor.
+
Step-by-Step Guide
The items displayed depend on whether the file browser, code editor
@@ -291,7 +304,7 @@
SmallBASIC is available for various operating systems, including
+Windows, Linux, and Android. It can be built from source to run on many
+other POSIX-compliant systems, such as Raspberry Pi OS. With its
+built-in Integrated Development Environment (IDE), you can write
+programs on your Android-powered tablet or mobile phone and run them
+instantly.
+
SmallBASIC Versions
+
SmallBASIC comes in three different flavors for the desktop. The SDL
+version offers a simple but efficient IDE and is perfect for working
+with graphics. The FLTK version has a great IDE. The console version
+doesn’t offer an IDE and is text-only but works perfect with plugins
+like raylib or nuklear. The Android version is similar to the SDL
+version and comes with an integrated IDE, too.
+
Windows
+
Download the latest release
+of SmallBASIC. The different versions of SmallBASIC are included in
+the zip-file. Extract the zip-file to a location of your choice. Open
+the SmallBASIC folder and start one of the following programs:
+
+
sbasicg.exe: SDL
+
sbasici.exe: FLTK
+
sbasic.exe: Console
+
+
Linux
+
Download the latest release
+of SmallBASIC. The different versions of SmallBASIC are provided as
+separate AppImages. Download an AppImage and copy it to a directory of
+your choice. Execute the AppImage. Depending of the Linux version you
+have to make the AppImage executable:
+chmod u+x AppImageFile, where AppImageFile is
+the filename of the AppImage.
+
Android
+
Download and install SmallBASIC for Android using Google
+Play.
+
Build from Source
+
Using Linux it is quite easy to build SmallBASIC from source. This
+has the advantage, that you don’t need to use AppImages and you can use
+SmallBASIC on other devices like Raspberry Pi. Please follow the
+instructions on Github.
+
Using the Integrated
+Development Environment
+
Please read the separate articles for the different versions of
+SmallBASIC:
SmallBASIC files are plain text files in ASCII or UTF-8. A program
consists of at least one line of text. Every line is terminated with a
@@ -788,6 +860,7 @@
Key-Value Pairs with
sub PrintBold(s)print"\e[1m"; s; "\e[21m"end
+
Maps as Pseudo Objects for OOP
Maps in combination with references can be used to create a pseudo
object similar to object-oriented programming.
Names
Subroutine and function names can use any alphanumeric characters,
extended characters (ASCII codes 128 - 255 for non-English languages),
and the symbol _. The first character of the name cannot be
-a digit nor a _.
+a digit.
Subroutine and function names are case-insensitive.
Subroutines and functions can not have the same name as build-in
commands.
Declaration of Subroutines
@@ -1279,18 +1352,26 @@
REPEAT-UNTIL Loop
UNTIL index > 10
Use EXIT or in case of nested loops
EXIT LOOP to exit the loop.
+
The DO Keyword
+
This keyword is used to declare single-line commands. It can be used
+with WHILE and FOR-family loops.
+
FOR i = 1to10DOPRINT i
+FOR f INfiles("*.txt") DOPRINT f
+
WHILE i < 4DO i++
Conditions
Conditions can be used to branch the program flow depending on the
value of expressions.
IF-THEN-ELSIF-ELSE
-
IF expression1 THEN
-' some code
-ELSEIF expression2 THEN
-' some code
-ELSE
-' some code
-ENDIF
+
IF expression1 THEN
+' some code
+ELSEIF expression2 THEN
+' some code
+ELSE
+' some code
+ENDIF
IF-THEN_ELSEIF-ELSE causes SmallBASIC to make a decision based on the
value of an expression. expression1 and
expression2 are expressions, which will be evaluated.
@@ -1310,10 +1391,12 @@
IF-THEN-ELSIF-ELSE
THEN on the same line, SmallBASIC interprets it as a
single-line IF-THEN-ELSE construct. IF blocks may be nested.
Instead of ELSEIF and ENDIF,
-ELIF and FI can be used.
-
Single-line IF-THEN-ELSE
-
IF expression THEN command1 ELSE command2
+ELIF and FI can be used. Instead of
+THEN, DO can be used, but this is not
+suggested.
+
Single-line IF-THEN-ELSE
+
IF expression THEN command1 ELSE command2
Single-line IF-THEN-ELSE causes SmallBASIC to make a decision based
on the value of an expression expression. 0 is
equivalent to FALSE, while all other values are equivalent
@@ -1321,6 +1404,42 @@
Single-line IF-THEN-ELSE
are any legal commands. Multiple commands can be separated by a colon
:. If instead of a command a number is specified, it is
equivalent to a GOTO command with the specified numeric-label.
+
Inline Version of IF
+
result = IFF (condition, return_value_true, return_value_false)
+
The command IFF will test the condition
+condition. If condition resolves to
+true then return_value_true will be returned
+otherwise return_value_false.
+
x = 4
+ans = IFF(x <= 5, 0, 10)
+PRINT ans ' Output: 0
SELECT CASE expr
+CASE result1
+' do thinks
+CASE result2
+' do thinks
+CASEELSE
+' do thinks
+END SELECT
+
SELECT CASE offers a more concise syntax to writing
+successive IF tests. SELECT CASE performs multiple tests on
+the expression expr. If the value of expr is
+equal to result1, the case statement result1
+will be entered and the commands executed. An unlimited amount of case
+statements can be used. Once a case statement is fulfilled the
+select-case structure will be exited and all following case statements
+will not be tested anymore. If non of the case statements were entered
+the optional ‘CASE ELSE’ statements will be entered.
+
See function reference SELECT CASE
+for detailed information.
Units
Units are a set of subroutines, functions and/or variables that can
be used by another SmallBASIC program or SmallBASIC unit. An unit has
@@ -1335,14 +1454,14 @@
Declaration
file. The functions, subroutines and/or variables which should be
accessible by another programs must be declared with the
EXPORT keyword and defined in the unit source file.
-
UNIT MyUnitName
-
-EXPORT MyFunction
-
-FUNC MyFuntion(x)
-' some code
-END
+
UNIT MyUnitName
+
+EXPORT MyFunction
+
+FUNC MyFuntion(x)
+' some code
+END
Function, subroutines or variables which are not exported can only be
used inside the unit source file.
Import
@@ -1353,12 +1472,12 @@
Import
IMPORT UnitName AS NameSpace.
To access a member of a unit use the namespace followed by a point
and the name of the member.
-
IMPORT MyUnit
-MyUnit.MyFunction(1)
-
IMPORT MyUnit as u
-u.MyFunction(1)
+
IMPORT MyUnit
+MyUnit.MyFunction(1)
+
IMPORT MyUnit as u
+u.MyFunction(1)
OPTION
The OPTION command is used to pass parameters to the
SB-environment. There are two styles for that, the run-time which can
@@ -1374,10 +1493,10 @@
OPTION BASE
Use OPTION BASE 1 to set the index of the first element
of an array to 1. This option is useful especially for
beginners, because it makes counting elements more intuitive.
-
OPTION BASE 1
-A = [1,2,3]
-PRINT A[1] ' Output 1
+
OPTION BASE 1
+A = [1,2,3]
+PRINT A[1] ' Output 1
OPTION BASE is a run-time option.
OPTION MATCH
OPTION MATCH [PCRE [CASELESS]|SIMPLE] sets the default
@@ -1418,52 +1537,61 @@
Meta Commands
up the environment variable SB_UNIT_PATH. Directories on Linux must be
separated by :, and on DOS/Windows by ;
-
This keyword is used on specific commands to passing a user-defined
-expression.
-
SPLIT s," ",v USE TRIM(x)
-
In that example, every element of V() will be ‘trimmed’. Use the x
-variable to specify the parameter of the expression. If the expression
-needs more parameter, you can use also the names y and z
-
The DO keyword
-
This keyword is used to declare single-line commands. It can be used
-with WHILE and FOR-family commands.
-
FOR f IN files("*.txt") DO PRINT f
-...
-WHILE i < 4 DO i ++
-
Also, it can be used by IF command (instead of THEN), but is not
-suggested.
-
Loops and variables
-
When we write loops it is much better to initialize the counters on
-the top of the loop instead of the top of the program or nowhere.
-
i = 0
-REPEAT
- ...
- i = i + 1
-UNTIL i > 10
-
p.. Initializing variables at the top of the loop can make code more
-readable.
-
Loops and expressions
-
FOR-like (loops) commands evaluate both the "destination" and the exit-expression every time.
-FOR i=0 TO LEN(FILES("*.txt"))-1
- PRINT i
-NEXT
-
In that example the ‘destination’ is the LEN(FILES(“*.txt”))-1 For
-each value of i the destination will be evaluated. That is WRONG but it
-is supported by BASIC and many other languages. So, it is much better to
-be rewritten as
-
idest=LEN(FILES("*.txt"))-1
-FOR i=0 TO idest
- PRINT i
-NEXT
The USE keyword is used on specific commands for passing
+a user-defined expression.
+
SPLIT s," ",v USETRIM(x)
+
In this example, every element of v will be trimmed. Use
+the x variable to specify the parameter of the expression.
+If the expression needs more parameter, you can use also the names
+y and z.
+
Exception Handling
+
Exception handling is supported for file handling, and accessing
+serial ports and network sockets. Exception handling is typically used
+with errors raised when calling a file system command that cannot be
+completed, for example attempting to open a non-existent file.
+
TRY
+' do something
+CATCH err
+print err
+' do something
+END TRY
+
TRY
+' do something
+CATCH"Error 1"
+' do something
+CATCH"Error 2"
+' do something
+END TRY
+
The TRY statement introduces a try/catch block. A
+try/catch block consist of the following structure:
+
TRY
+
The TRY statement starts a block of commands which might
+create a run-time error.
+
CATCH [var | expr]
+
The CATCH statement is used to catch a run-time error of
+one of the commands in the try-block.
+
The CATCH statement has two modes. You can supply a
+variable argument to store the error string. Alternatively you can
+supply a string expression. When the raised error matches the string
+expression, the error will be caught. When using the expression mode,
+you can supply a succession of CATCH statements to handle various error
+messages separately.
+
END TRY
+
The END TRY statement marks the end of a try/catch
+block.
The SDL version of SmallBASIC offers a simple but efficient IDE and
+is perfect for working with graphics. To start the SDL version please
+execute:
+
+
Windows: sbasicg.exe
+
Linux: SmallBASIC-SDL_xx.xx-x86_64.AppImage or
+sbasicg if built from source
+
+
In the video below the basic steps of creating a file, opening it in
+the internal editor and executing the program are shown.
+
+
+
+
Please note, that at the first start of the SDL version of
+SmallBASIC, the editor is turned off. A mouse click on a file name will
+start the program immediately. If you want to edit the file, please turn
+on the editor by clicking on the three dots in the lower right corner
+and choosing the entry Editor [OFF] to enable the
+editor.
Live mode
Live mode uses a secondary output window to display the results of
your program whenever you press save.
@@ -170,7 +190,7 @@
How to
16 - row_marker
-Please note, that at the first start of the Android version of SmallBASIC, the editor is turned off. A mouse click on
-a program name will start it immediately. If you want to edit the file, please turn on the editor by clicking
+Please note, that at the first start of the Android version of SmallBASIC, the editor is turned off. A tap on
+a program name will start it immediately. If you want to edit the file, please turn on the editor by tapping
on the three dots in the lower right corner and choosing the entry `Editor [OFF]` to enable the editor.
## Step-by-Step Guide