Basic Programmers unfamiliar with SM32 need to know the following features:

Defined Constants

SM32 allows you to define constants in the configuration. These constants are then used by the compiler at compile time. For example if you used the number 3.1415 throughout your code you might want to add the constant PI with the value 3.1415 to your configuration. Then you could have:

1000 LET X = #PI * Y
In your code. Note it is only used at compile time !!

The following defines are of note as they give meaning to some numeric parameters (they are always part of the configuration):

Keyed String Array defines.
defines for the X in A$=K![X]
#KSA_CURRENT = 0
#KSA_CURRENT_KEY = 1
#KSA_NEXT = 2
#KSA_NEXT_KEY = 3
#KSA_PREV = 4
#KSA_PREV_KEY = 5
#KSA_FIRST = 6
#KSA_FIRST_KEY = 7
#KSA_LAST = 8
#KSA_LAST_KEY = 9
CVS function
defines for the X in  A$=CVS(B$,X)
#CVS_NOTHING = 0
#CVS_STRIP_LEADING = 1
#CVS_STRIP_TRAILING = 2
#CVS_TO_UPPER = 4
#CVS_TO_LOWER = 8
#CVS_MAKE_PRINTABLE = 16
#CVS_SPACES_TO_SPACE = 32
#CVS_COMMA_DECIMAL = 64

Keyed String Arrays

Keyed String Arrays (KSA's) are very common in SM32. They resemble a memory based DIRECT file but never return DOM or END errors. They have a normal variable name followed by a '!'. To use a KSA it must be dimensioned. The index into the array is a 'KEY STRING'

REM MK=max key length, A=allocation size
DIM K![MK,A];
DIM K! ; REM use default of 64,2048
The allocation size is the size the KSA grows by, as it needs space.
Usage:
1000 DIM K!
1005 K!["name"]="Ken Yerex"
1010 N$=K!["name"] 
If a key does not exist "" is returned and position is set to the next higher 'KEY STRING'
Numerics 0 -> 9 have special meaning when used as the index. see: Defined Constants .

SM32 Configuration

SM32 has many configurable options. It is hoped that users trying Quick Start will not have to change the default configuration. The current configuration can be viewed/changed by selecting Options - Edit Current Configuration from the SMDE Menu Bar.

The configuration can be contained in either the Registry or in an .SM32 file.
ParameterAction
 None  If the file SM32.SM32 exists it is used as the config file 
 If it does not the default Registry branch is used 
 XXXX.SM32  The file XXXX.SM32 is used as the config file 
 XXXX  The registry branch XXXX is used 
 If the Registry Branch or Configuration File does not exists. 
 It is created with a default configuration with the Initial Statement set as: 
 RUN "SM32CONFIG" 
 This gives a way to distribute a Registry Based configuration 

Console Mode - Keyboard

SM32 has been designed to allow a business basic program to receive control when a program goes into console mode. This facility is called ENTITY's. It will not be discussed here in detail but when you see the prompt ">" this is an input statement from the program $__BEDIT.
If you examine the system property page you will see the following initial statement:
10 entity 254,14,"$__bedit";call "$__setup";new
This statement sets the program $__BEDIT to run as entity #254 using it own private data area #14. You can load "$__BEDIT" and if you list statement 4015 you will see the console mode input statement.
The other place that this becomes of interest is when you are ready to distribute your release version. As you never want to be in console mode, you can create your own fatal error handle program to run as entity 254.

$__BEDIT uses the prompt facility (PRM=) of the INPUT statement (this is left over from the Data General version). The prompt is the last compile statement. The following explains how to edit a statement using Data General Screen Edit
If you want to edit statement # 1300 you would:
Key StokesAction
 1300:  Re-compile Statement 1300 so it becomes the last compiled statement 
 End Key  Displays statement 1300 and place cursor at end of line 
 Home Key  Place cursor at beginning of line 
 Left Arrow Key  Moves cursor 1 position to the left 
 Right Arrow Key  Moves cursor 1 position to the right 
 Insert Key  Toggles the insert mode 
 Always starts in type over mode. 
 When in insert mode a space appears where your inserting character will go 
 Ctrl B Key  Moves the cursor left to the end of the next word 
 Ctrl F Key  Moves the cursor right to the start of the next word 
 Ctrl K Key  Erases all the characters from the character under the cursor to the end of the line 
 Ctrl J Key  Same as Ctrl K but also terminates the input 
 Enter Key  Terminates the input 

System Menu

Under the System Menu 3 view navigation selections have been added:
Console View - switch to Console View
Web View - switch to Web View
Cascade - show both Web View and Console View
Note that CTRL F6 will also toggle between Web and Console Views.

Under the System Menu there is also a Properties selection. Normally you would use the Options->Edit Current Configuration to change options. However if you want to modify the "Fonts" or the special "Keys" used by the console view they are only available here.