/* txt2c - SB CLI Help */
/* structure */
typedef struct { const char *code; const char *type; const char *syntax; const char *descr; } help_node_t;
help_node_t help_data[] = {
{ "#!...", "MACRO",
"_\b#_\b!_\b._\b._\b.",
" Used by Unix to make source runs as a script executable\n"
"\n"
},
{ "#sec:", "MACRO",
"_\b#_\bs_\be_\bc_\b: _\bs_\be_\bc_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be",
" Used internally to store the section name. Sections names are\n"
" used at limited OSes like PalmOS for multiple 32kB source code\n"
" sections. With a few words _\bD_\bO_\b _\bN_\bO_\bT_\b _\bU_\bS_\bE_\b _\bI_\bT!\n"
"\n"
},
{ "#inc:", "MACRO",
"_\b#_\bi_\bn_\bc_\b: _\bf_\bi_\bl_\be",
" Used to include a SmallBASIC source file into the current\n"
" BASIC code\n"
"\n"
},
{ "#unit-path:", "MACRO",
"_\b#_\bu_\bn_\bi_\bt_\b-_\bp_\ba_\bt_\bh_\b: _\bp_\ba_\bt_\bh",
" Used to setup additional directories for searching for\n"
" unit-files This meta does nothing more than to setting up the\n"
" environment variable SB_UNIT_PATH. Directories on Unix must\n"
" separated by \':\', and on DOS/Windows by \';\'\n"
"\n"
" Examples\n"
"\n"
"...\n"
"#inc:\"mylib.bas\"\n"
"...\n"
"MyLibProc \"Hi\"\n"
"\n"
"2.7 Arrays and Matrices\n"
"\n"
" Define a 3x2 matrix\n"
"\n"
"A = [11, 12; 21, 22; 31, 32]\n"
"\n"
" That creates the array\n"
"\n"
"| 11 12 |\n"
"| 21 22 | = A\n"
"| 31 32 |\n"
"\n"
" The comma used to separate column items; the semi-colon used to\n"
" separate rows. Values between columns can be omitted.\n"
"\n"
"A = [ ; ; 1, 2 ; 3, 4, 5]\n"
"\n"
" This creates the array\n"
"\n"
"| 0 0 0 |\n"
"| 1 2 0 | = A\n"
"| 3 4 5 |\n"
"\n"
" Supported operators:\n"
"\n"
" Add/sub:\n"
"\n"
"B = [1, 2; 3, 4]: C = [5, 6; 7, 8]\n"
"\n"
"A = B + C\n"
"C = A - B\n"
"\n"
" Equal:\n"
"\n"
"bool=(A=B)\n"
"\n"
" Unary:\n"
"\n"
"A2 = -A\n"
"\n"
" Multiplication:\n"
"\n"
"A = [1, 2; 3, 4]: B = [5 ; 6]\n"
"C = A * B\n"
"D = 0.8 * A\n"
"\n"
" Inverse:\n"
"\n"
"A = [ 1, -1, 1; 2, -1, 2; 3, 2, -1]\n"
"? INVERSE(A)\n"
"\n"
" Gauss-Jordan:\n"
"\n"
"? \"Solve this:\"\n"
"? \" 5x - 2y + 3z = -2\"\n"
"? \" -2x + 7y + 5z = 7\"\n"
"? \" 3x + 5y + 6z = 9\"\n"
"?\n"
"A = [ 5, -2, 3; -2, 7, 5; 3, 5, 6]\n"
"B = [ -2; 7; 9]\n"
"C = LinEqn(A, B)\n"
"? \"[x;y;z] = \"; C\n"
"\n"
" There is a problem with 1 dimension arrays, because 1-dim arrays does\n"
" not specify how SmallBASIC must see them.\n"
"\n"
"DIM A(3)\n"
"\n"
"| 1 2 3 | = A\n"
"\n"
"or\n"
"\n"
"| 1 |\n"
"| 2 | = A\n"
"| 3 |\n"
"\n"
" And because this is not the same thing. (ex. for multiplication) So\n"
" the default is columns\n"
"\n"
"DIM A(3) \' or A(1,3)\n"
"\n"
"| 1 2 3 | = A\n"
"\n"
" For vertical arrays you must declare it as 2-dim arrays Nx1\n"
"\n"
"DIM A(3,1)\n"
"\n"
"| 1 |\n"
"| 2 | = A\n"
"| 3 |\n"
"\n"
"2.8 Nested arrays\n"
"\n"
" Nested arrays are allowed\n"
"\n"
"A = [[1,2] , [3,4]]\n"
"B = [1, 2, 3]\n"
"C = [4, 5]\n"
"B(2) = C\n"
"print B\n"
"\n"
" This will be printed\n"
"\n"
"[1, 2, [4, 5], 3]\n"
"\n"
" You can access them by using a second (or third, etc) pair of\n"
" parenthesis.\n"
"\n"
"B(2)(1) = 16\n"
"print B(2)(1)\n"
"\n"
"Result:\n"
" 16\n"
"\n"
"2.9 The operator IN\n"
"\n"
" IN operator is used to compare if the left-value belongs to\n"
" right-value.\n"
"\n"
"\' Using it with arrays\n"
"print 1 in [2,3] :REM FALSE\n"
"print 1 in [1,2] :REM TRUE\n"
"print \"b\" in [\"a\", \"b\", \"c\"] :REM TRUE\n"
"...\n"
"\' Using it with strings\n"
"print \"na\" in \"abcde\" :REM FALSE\n"
"print \"cd\" in \"abcde\" :REM TRUE\n"
"...\n"
"\' Using it with number (true only if left = right)\n"
"print 11 in 21 :REM FALSE\n"
"print 11 in 11 :REM TRUE\n"
"...\n"
"\' special case\n"
"\' auto-convert integers/reals\n"
"print 12 in \"234567\" :REM FALSE\n"
"print 12 in \"341256\" :REM TRUE\n"
"\n"
"2.10 The operator LIKE\n"
"\n"
" LIKE is a regular-expression operator. It is compares the left part\n"
" of the expression with the pattern (right part). Since the original\n"
" regular expression code is too big (for handhelds), I use only a\n"
" subset of it, based on an excellent old stuff by J. Kercheval\n"
" (match.c, public-domain, 1991). But there is an option to use PCRE\n"
" (Perl-Compatible Regular Expression library) on systems that is\n"
" supported (Linux); (see OPTION).\n"
"\n"
" The same code is used for filenames (FILES(), DIRWALK) too.\n"
"\n"
" In the pattern string:\n"
"\n"
" * matches any sequence of characters (zero or more)\n"
" ? matches any character\n"
" [SET] matches any character in the specified set,\n"
" [!SET] or [^SET] matches any character not in the specified set.\n"
"\n"
" A set is composed of characters or ranges; a range looks like\n"
" character hyphen character (as in 0-9 or A-Z). [0-9a-zA-Z_] is the\n"
" minimal set of characters allowed in the [..] pattern construct.\n"
"\n"
" To suppress the special syntactic significance of any of `[]*?!^-\\\',\n"
" and match the character exactly, precede it with a `\\\'.\n"
"\n"
"? \"Hello\" LIKE \"*[oO]\" : REM TRUE\n"
"? \"Hello\" LIKE \"He??o\" : REM TRUE\n"
"? \"Hello\" LIKE \"hello\" : REM FALSE\n"
"? \"Hello\" LIKE \"[Hh]*\" : REM TRUE\n"
"\n"
"2.11 The pseudo-operator <<\n"
"\n"
" This operator can be used to append elements to an array.\n"
"\n"
"A << 1\n"
"A << 2\n"
"A << 3\n"
"\n"
"? A(1)\n"
"\n"
"2.12 Subroutines and Functions\n"
"\n"
" _\bS_\by_\bn_\bt_\ba_\bx_\b _\bo_\bf_\b _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be_\b _\b(_\bS_\bU_\bB_\b)_\b _\bs_\bt_\ba_\bt_\be_\bm_\be_\bn_\bt_\bs\n"
"\n"
"SUB name [([BYREF] par1 [, ...[BYREF] parN)]]\n"
" [LOCAL var[, var[, ...]]]\n"
" [EXIT SUB]\n"
" ...\n"
"END\n"
"\n"
" _\bS_\by_\bn_\bt_\ba_\bx_\b _\bo_\bf_\b _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b(_\bF_\bU_\bN_\bC_\b)_\b _\bs_\bt_\ba_\bt_\be_\bm_\be_\bn_\bt_\bs\n"
"\n"
"FUNC name[([BYREF] par1 [, ...[BYREF] parN)]]\n"
" [LOCAL var[, var[, ...]]]\n"
" [EXIT FUNC]\n"
" ...\n"
" name=return-value\n"
"END\n"
"\n"
" On functions you must use the function\'s name to return the value.\n"
" That is, the function-name acts like a variable and it is the\n"
" function\'s returned value.\n"
"\n"
" The parameters are \'by value\' by default. Passing parameters by value\n"
" means the executor makes a copy of the parameter to stack. The value\n"
" in caller\'s code will not be changed.\n"
"\n"
" Use BYREF keyword for passing parameters \'by reference\'. Passing\n"
" parameters by reference means the executor push the pointer of\n"
" variable into the stack. The value in caller\'s code will be the\n"
" changed.\n"
"\n"
"\' Passing \'x\' by value\n"
"SUB F(x)\n"
" x=1\n"
"END\n"
"\n"
"x=2\n"
"F x\n"
"? x:REM displays 2\n"
"\n"
"\' Passing \'x\' by reference\n"
"SUB F(BYREF x)\n"
" x=1\n"
"END\n"
"\n"
"x=2\n"
"F x\n"
"? x:REM displays 1\n"
"\n"
" You can use the symbol \'@\' instead of BYREF. There is no difference\n"
" between @ and BYREF.\n"
"\n"
"SUB F(@x)\n"
" x=1\n"
"END\n"
"\n"
" On a multi-section (PalmOS) applications sub/funcs needs declaration\n"
" on the main section.\n"
"\n"
"#sec:Main\n"
"declare func f(x)\n"
"\n"
"#sec:another section\n"
"func f(x)\n"
"...\n"
"end\n"
"\n"
" Use the LOCAL keyword for local variables. LOCAL creates variables\n"
" (dynamic) at routine\'s code.\n"
"\n"
"SUB MYPROC\n"
" LOCAL N:REM LOCAL VAR\n"
" N=2\n"
" ? N:REM displays 2\n"
"END\n"
"\n"
"N=1:REM GLOBAL VAR\n"
"MYPROC\n"
"? N:REM displays 1\n"
"\n"
" You can send arrays as parameters.\n"
"\n"
" When using arrays as parameters its better to use them as BYREF;\n"
" otherwise their data will be duplicated in memory space.\n"
"\n"
"SUB FBR(BYREF tbl)\n"
" ? FRE(0)\n"
" ...\n"
"END\n"
"\n"
"SUB FBV(tbl)\n"
" ? FRE(0)\n"
" ...\n"
"END\n"
"\n"
"\' MAIN\n"
"DIM dt(128)\n"
"...\n"
"? FRE(0)\n"
"FBR dt\n"
"? FRE(0)\n"
"FBV dt\n"
"? FRE(0)\n"
"\n"
" Passing & returning arrays, using local arrays.\n"
"\n"
"func fill(a)\n"
" local b, i\n"
"\n"
" dim b(16)\n"
" for i=0 to 16\n"
" b(i)=16-a(i)\n"
" next\n"
" fill=b\n"
"end\n"
"\n"
"DIM v()\n"
"v=fill(v)\n"
"\n"
"2.13 Single-line Functions\n"
"\n"
" There is also an alternative FUNC/DEF syntax (single-line functions).\n"
" This is actually a macro for compatibility with the BASIC\'s DEF FN\n"
" command, but quite usefull.\n"
"\n"
" _\bS_\by_\bn_\bt_\ba_\bx:\n"
"\n"
"FUNC name[(par1[,...])] = expression\n"
"or\n"
"DEF name[(par1[,...])] = expression\n"
"\n"
"DEF MySin(x) = SIN(x)\n"
"? MySin(pi/2)\n"
"\n"
"2.14 Nested procedures and functions\n"
"\n"
" One nice feauture, are the nested procedures/functions. The nested\n"
" procedures/functions are visible only inside the \"parent\"\n"
" procedure/function.\n"
"\n"
" There is no way to access a global procedure with the same name of a\n"
" local... yet...\n"
"\n"
"FUNC f(x)\n"
" Rem Function: F/F1()\n"
" FUNC f1(x)\n"
" Rem Function: F/F1/F2()\n"
" FUNC f2(x)\n"
" f2=cos(x)\n"
" END\n"
" f1 = f2(x)/4\n"
" END\n"
" Rem Function: F/F3()\n"
" FUNC f3\n"
" f3=f1(pi/2)\n"
" END\n"
"REM\n"
"? f1(pi) : REM OK\n"
"? f2(pi) : REM ERROR\n"
"f = x + f1(pi) + f3 : REM OK\n"
"END\n"
"\n"
"2.15 Units (SB libraries)\n"
"\n"
" * Linux ONLY for now *\n"
"\n"
" Units are a set of procedures, functions and/or variables that can be\n"
" used by another SB program or SB unit. The main section of the unit\n"
" (commands out of procedure or function bodies) is the initialization\n"
" code.\n"
"\n"
" A unit declared by the use of UNIT keyword.\n"
"\n"
"UNIT MyUnit\n"
"\n"
" The functions, procedure or variables which we want to be visible to\n"
" another programs must be declared with the EXPORT keyword.\n"
"\n"
"UNIT MyUnit\n"
"EXPORT MyF\n"
"...\n"
"FUNC MyF(x)\n"
"...\n"
"END\n"
"\n"
" _\b* _\bK_\be_\be_\bp_\b _\bf_\bi_\bl_\be_\b-_\bn_\ba_\bm_\be_\b _\ba_\bn_\bd_\b _\bu_\bn_\bi_\bt_\b-_\bn_\ba_\bm_\be_\b _\bt_\bh_\be_\b _\bs_\ba_\bm_\be_\b._\b _\bT_\bh_\ba_\bt_\b _\bh_\be_\bl_\bp_\bs_\b _\bt_\bh_\be_\b _\bS_\bB_\b _\bt_\bo\n"
" _\ba_\bu_\bt_\bo_\bm_\ba_\bt_\bi_\bc_\ba_\bl_\bl_\by_\b _\br_\be_\bc_\bo_\bm_\bp_\bi_\bl_\be_\b _\bt_\bh_\be_\b _\br_\be_\bq_\bu_\bi_\br_\be_\bd_\b _\bu_\bn_\bi_\bt_\bs_\b _\bw_\bh_\be_\bn_\b _\bi_\bt_\b _\bi_\bs_\b _\bn_\be_\be_\bd_\be_\bd_\b.\n"
"\n"
" To link a program with a unit we must use the IMPORT keyword.\n"
"\n"
"IMPORT MyUnit\n"
"\n"
" To access a member of a unit we must use the unit-name, a point and\n"
" the name of the member.\n"
"\n"
"IMPORT MyUnit\n"
"...\n"
"PRINT MyUnit.MyF(1/1.6)\n"
"\n"
" Full example:\n"
"\n"
" file my_unit.bas:\n"
"\n"
"UNIT MyUnit\n"
"\n"
"EXPORT F, V\n"
"\n"
"REM a shared function\n"
"FUNC F(x)\n"
" F = x*x\n"
"END\n"
"\n"
"REM a non-shared function\n"
"FUNC I(x)\n"
" I = x+x\n"
"END\n"
"\n"
"REM Initialization code\n"
"V=\"I am a shared variable\"\n"
"L=\"I am invisible to the application\"\n"
"PRINT \"Unit \'MyUnit\' initialized :)\"\n"
"\n"
" file my_app.bas:\n"
"\n"
"IMPORT MyUnit\n"
"\n"
"PRINT MyUnit.V\n"
"PRINT MyUnit.F(2)\n"
"\n"
"2.16 The pseudo-operators ++/--/p=\n"
"\n"
" The ++ and -- operators are used to increase or decrease the value of\n"
" a variable by 1.\n"
"\n"
"x = 4\n"
"x ++ : REM x <- x + 1 = 5\n"
"x -- : REM x <- x - 1 = 4\n"
"\n"
" The generic p= operators are used as in C Where p any character of\n"
" -+/\\*^%&|\n"
"\n"
"x += 4 : REM x <- x + 4\n"
"x *= 4 : REM x <- x * 4\n"
"\n"
" All these pseudo-operators are not allowed inside of expressions\n"
"\n"
"y = x ++ \' ERROR\n"
"z = (y+=4)+5 \' ALSO ERROR\n"
"\n"
"2.17 The USE keyword\n"
"\n"
" This keyword is used on specific commands to passing a user-defined\n"
" expression.\n"
"\n"
" Example:\n"
"\n"
"SPLIT s,\" \",v USE TRIM(x)\n"
"\n"
" In that example, every element of V() will be \'trimmed\'.\n"
"\n"
" Use the x variable to specify the parameter of the expression. If the\n"
" expression needs more parameter, you can use also the names y and z\n"
"\n"
"2.18 The DO keyword\n"
"\n"
" This keyword is used to declare single-line commands. It can be used\n"
" with WHILE and FOR-family commands.\n"
"\n"
" Example:\n"
"\n"
"FOR f IN files(\"*.txt\") DO PRINT f\n"
"...\n"
"WHILE i < 4 DO i ++\n"
"\n"
" Also, it can be used by IF command (instead of THEN), but is not\n"
" suggested.\n"
"\n"
" 3. Programming Tips\n"
"\n"
" Programmers must use clean and logical code. Weird code may be faster\n"
" but it is not good.\n"
"\n"
"3.1 Using LOCAL variables\n"
"\n"
" When a variable is not declared it is by default a global variable. A\n"
" usual problem is that name may be used again in a function or\n"
" procedure.\n"
"\n"
"FUNC F(x)\n"
" FOR i=1 TO 6\n"
" ...\n"
" NEXT\n"
"END\n"
"\n"
"FOR i=1 TO 10\n"
" PRINT F(i)\n"
"NEXT\n"
"\n"
" In this example, the result is a real mess, because the i of the main\n"
" loop will always (except the first time) have the value 6!\n"
"\n"
" This problem can be solved if we use the LOCAL keyword to declare the\n"
" i in the function body.\n"
"\n"
"FUNC F(x)\n"
" LOCAL i\n"
"\n"
" FOR i=1 TO 6\n"
" ...\n"
" NEXT\n"
"END\n"
"\n"
"FOR i=1 TO 10\n"
" PRINT F(i)\n"
"NEXT\n"
"\n"
" It is good to declare all local variables on the top of the function.\n"
" For compatibility reasons, the func./proc. variables are not declared\n"
" as \'local\' by default. That it is WRONG but as I said ...\n"
" compatibility.\n"
"\n"
"3.2 Loops and variables\n"
"\n"
" When we write loops it is much better to initialize the counters on\n"
" the top of the loop instead of the top of the program or nowhere.\n"
"\n"
"i = 0\n"
"REPEAT\n"
" ...\n"
" i = i + 1\n"
"UNTIL i > 10\n"
"\n"
" Initializing the variables at the top of the loop, can make code\n"
" better readable, and can protect us from usual pitfalls such as\n"
" forgeting to giving init value or re-run the loop without reset the\n"
" variables.\n"
"\n"
"3.3 Loops and expressions\n"
"\n"
" FOR-like commands are evaluate the \'destination\' everytime. Also,\n"
" loops are evaluate the exit-expression everytime too.\n"
"\n"
"FOR i=0 TO LEN(FILES(\"*.txt\"))-1\n"
" PRINT i\n"
"NEXT\n"
"\n"
" In that example the \'destination\' is the LEN(FILES(\"*.txt\"))-1 For\n"
" each value of i the destination will be evaluated. That is WRONG but\n"
" it is supported by BASIC and many other languages.\n"
"\n"
" So, it is much better to be rewritten as\n"
"\n"
"idest=LEN(FILES(\"*.txt\"))-1\n"
"FOR i=0 TO idest\n"
" PRINT i\n"
"NEXT\n"
"\n"
" Of course, it is much faster too.\n"
"\n"
" 4. Commands\n"
"\n"
},
{ "OPTION", "STATEMENT",
"_\bO_\bP_\bT_\bI_\bO_\bN _\bk_\be_\by_\bw_\bo_\br_\bd_\b _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs",
" This special command is used to pass parameters to the\n"
" SB-environment. There are two styles for that, the run-time\n"
" (like BASE) which can change the value at run-time, and the\n"
" compile-time (like PREDEF) which used only in compile-time and\n"
" the value cannot be changed on run-time.\n"
"\n"
" 2.5.1 Run-Time\n"
"\n"
},
{ "OPTION", "STATEMENT",
"_\bO_\bP_\bT_\bI_\bO_\bN _\bB_\bA_\bS_\bE_\b _\bl_\bo_\bw_\be_\br_\b-_\bb_\bo_\bu_\bn_\bd",
" The OPTION BASE statement sets the lowest allowable subscript\n"
" of arrays to lower-bound. The default is zero. The OPTION BASE\n"
" statement can be used in any place in the source code but that\n"
" is the wrong use of this except if we have a _\bg_\bo_\bo_\bd reason. In\n"
" most cases the OPTION BASE must declared at first lines of the\n"
" program before any DIM declaration.\n"
"\n"
},
{ "OPTION", "STATEMENT",
"_\bO_\bP_\bT_\bI_\bO_\bN _\bM_\bA_\bT_\bC_\bH_\b _\b{_\bP_\bC_\bR_\bE_\b _\b[_\bC_\bA_\bS_\bE_\bL_\bE_\bS_\bS_\b]_\b|_\bS_\bI_\bM_\bP_\bL_\bE_\b}",
" Sets as default matching algorithm to (P)erl-(C)ompatible\n"
" (R)egular (E)xpressions library or back to simple one.\n"
" Matching-algorithm is used in LIKE and FILES.\n"
"\n"
" PRCE works only in systems with this library and it must be\n"
" linked with. Also, there is no extra code on compiler which\n"
" means that SB compiles the pattern everytime it is used.\n"
"\n"
" 2.5.2 Compile-Time\n"
"\n"
},
{ "OPTION", "STATEMENT",
"_\bO_\bP_\bT_\bI_\bO_\bN _\bP_\bR_\bE_\bD_\bE_\bF_\b _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br",
" Sets parameters of the compiler. Where parameter\n"
"\n"
" `QUITE\'\n"
" Sets the quite flag (-q option)\n"
" `COMMAND cmdstr\'\n"
" Sets the COMMAND$ string to cmdstr (useful for debug\n"
" reasons)\n"
" `GRMODE [widthxheight[xbpp]]\'\n"
" Sets the graphics mode flag (-g option) or sets the\n"
" prefered screen resolution. Example: (Clie HiRes)\n"
"\n"
"OPTION PREDEF GRMODE 320x320x16\n"
"\n"
" `TEXTMODE\'\n"
" Sets the text mode flag (-g- option)\n"
" `CSTR\'\n"
" Sets as default string style the C-style special\n"
" character encoding (\'\\\')\n"
"\n"
"2.6 Meta-commands\n"
"\n"
},
{ "REM", "STATEMENT",
"_\bR_\bE_\bM _\bc_\bo_\bm_\bm_\be_\bn_\bt",
" Adds explanatory text to a program listing. comment commentary\n"
" text, ignored by BASIC.\n"
"\n"
" Instead of the keyword we can use the symbol \' or the #. The #\n"
" can be used as remarks only if its in the first character of\n"
" the line.\n"
"\n"
" Example:\n"
"\n"
"\' That text-line is just a few remarks\n"
"...\n"
"REM another comment\n"
"...\n"
"# one more comment\n"
"\n"
},
{ "LET", "STATEMENT",
"_\bL_\bE_\bT _\bv_\ba_\br_\b _\b=_\b _\be_\bx_\bp_\br",
" Assigns the value of an expression to a variable. The LET is\n"
" optional.\n"
"\n"
" var\n"
" A valid variable name.\n"
" expr\n"
" The value assigned to variable.\n"
"\n"
" Example:\n"
"\n"
"LET x = 4\n"
"x = 1 \' Without the LET keyword\n"
"z = \"String data\" \' Assign string\n"
"...\n"
"DIM v(4)\n"
"z=v \' Assign array (z = clone of v)\n"
"\n"
},
{ "CONST", "STATEMENT",
"_\bC_\bO_\bN_\bS_\bT _\bn_\ba_\bm_\be_\b _\b=_\b _\be_\bx_\bp_\br",
" Declares a constant.\n"
"\n"
" name\n"
" An identifier that follows the rules for naming BASIC\n"
" variables.\n"
" expr\n"
" An expression consisting of literals, with or without\n"
" operators, only.\n"
"\n"
" Example:\n"
"\n"
"COSNT G = 6.67259E-11\n"
"\n"
},
{ "DIM", "STATEMENT",
"_\bD_\bI_\bM _\bv_\ba_\br_\b(_\b[_\bl_\bo_\bw_\be_\br_\b _\bT_\bO_\b]_\b _\bu_\bp_\bp_\be_\br_\b _\b[_\b,_\b _\b._\b._\b._\b]_\b)_\b _\b[_\b,_\b _\b._\b._\b._\b]",
" The DIM statement reserves space in computer\'s memory for\n"
" arrays. The array will have (upper-lower)+1 elements. If the\n"
" lower is not specified, and the OPTION BASE hasn\'t used, the\n"
" arrays are starting from 0.\n"
"\n"
" Example:\n"
"\n"
"REM One dimension array of 7 elements, starting from 0\n"
"DIM A(6)\n"
"...\n"
"REM One dimension array of 6 elements, starting from 1\n"
"DIM A(1 TO 6)\n"
"...\n"
"REM Three dimension array\n"
"DIM A(1 TO 6, 1 TO 4, 1 TO 8)\n"
"...\n"
"REM Allocating zero-length arrays:\n"
"DIM z()\n"
"...\n"
"IF LEN(Z)=0 THE APPEND Z, \"The first element\"\n"
"\n"
},
{ "LABEL", "STATEMENT",
"_\bL_\bA_\bB_\bE_\bL _\bn_\ba_\bm_\be",
" Defines a label. A label is a mark at this position of the\n"
" code.\n"
"\n"
" There are two kinds of labels, the \'numeric\' and the\n"
" \'alphanumeric\'.\n"
"\n"
" \'Numeric\' labels does not needed the keyword LABEL, but\n"
" \'alphanumeric\' does.\n"
"\n"
" Example:\n"
"\n"
"1000 ? \"Hello\"\n"
"...\n"
"LABEL AlphaLabel: ? \"Hello\"\n"
"...\n"
"GOTO 1000\n"
"GOTO AlphaLabel\n"
"\n"
},
{ "GOTO", "STATEMENT",
"_\bG_\bO_\bT_\bO _\bl_\ba_\bb_\be_\bl",
" Causes program execution to branch to a specified position\n"
" (label).\n"
"\n"
},
{ "GOSUB", "STATEMENT",
"_\bG_\bO_\bS_\bU_\bB _\bl_\ba_\bb_\be_\bl",
" Causes program execution to branch to the specified label;\n"
" when the RETURN command is encountered, execution branches to\n"
" the command immediately following the most recent GOSUB\n"
" command.\n"
"\n"
},
{ "RETURN", "STATEMENT",
"_\bR_\bE_\bT_\bU_\bR_\bN",
" Execution branches to the command immediately following the\n"
" most recent GOSUB command.\n"
"\n"
"...\n"
"GOSUB my_routine\n"
"PRINT \"RETURN sent me here\"\n"
"...\n"
"LABEL my_routine\n"
"PRINT \"I am in my routine\"\n"
"RETURN\n"
"\n"
},
{ "ON", "STATEMENT",
"_\bO_\bN _\b{_\bG_\bO_\bT_\bO_\b|_\bG_\bO_\bS_\bU_\bB_\b}_\b _\bl_\ba_\bb_\be_\bl_\b1_\b _\b[_\b,_\b _\b._\b._\b._\b,_\b _\bl_\ba_\bb_\be_\bl_\bN_\b]",
" Causes BASIC to branch to one of a list of labels.\n"
"\n"
" expr\n"
" A numeric expression in the range 0 to 255. Upon\n"
" execution of the ON...GOTO command (or ON...GOSUB), BASIC\n"
" branches to the nth item in the list of labels that\n"
" follows the keyword GOTO (or GOSUB).\n"
"\n"
},
{ "FOR", "STATEMENT",
"_\bF_\bO_\bR _\bc_\bo_\bu_\bn_\bt_\be_\br_\b _\b=_\b _\bs_\bt_\ba_\br_\bt_\b _\bT_\bO_\b _\be_\bn_\bd_\b _\b[_\bS_\bT_\bE_\bP_\b _\bi_\bn_\bc_\br_\b]_\b _\b._\b._\b._\b _\bN_\bE_\bX_\bT",
" Begins the definition of a FOR/NEXT loop.\n"
"\n"
" counter\n"
" A numeric variable to be used as the loop counter.\n"
" start\n"
" A numeric expression; the starting value of counter.\n"
" end\n"
" A numeric expression; the ending value of counter.\n"
" incr\n"
" A numeric expression; the value by which counter is\n"
" incremented or decremented with each iteration of the\n"
" loop. The default value is +1.\n"
"\n"
" BASIC begins processing of the FOR/NEXT block by setting\n"
" counter equal to start. Then, if \'incr\' is positive and\n"
" counter is not greater than end, the commands between the FOR\n"
" and the NEXT are executed.\n"
"\n"
" When the NEXT is encountered, counter is increased by \'incr\',\n"
" and the process is repeated. Execution passes to the command\n"
" following the NEXT if counter is greater than end.\n"
"\n"
" If increment is negative, execution of the FOR/NEXT loop is\n"
" terminated whenever counter becomes less than end.\n"
"\n"
" FOR/NEXT loops may be nested to any level of complexity, but\n"
" there must be a NEXT for each FOR.\n"
"\n"
" Example:\n"
"\n"
"FOR C=1 TO 9\n"
" PRINT C\n"
"NEXT\n"
"\n"
},
{ "FOR", "STATEMENT",
"_\bF_\bO_\bR _\be_\bl_\be_\bm_\be_\bn_\bt_\b _\bI_\bN_\b _\ba_\br_\br_\ba_\by_\b _\b._\b._\b._\b _\bN_\bE_\bX_\bT",
" Begins the definition of a FOR/NEXT loop.\n"
"\n"
" element\n"
" A variable to be used as the copy of the current element.\n"
" array\n"
" An array expression\n"
"\n"
" The commands-block will repeated for LEN(array) times. Each\n"
" time the \'element\' will holds the value of the current element\n"
" of the array.\n"
"\n"
" FOR/NEXT loops may be nested to any level of complexity, but\n"
" there must be a NEXT for each FOR.\n"
"\n"
" Example:\n"
"\n"
"A=[1,2,3]\n"
"FOR E IN A\n"
" PRINT E\n"
"NEXT\n"
"...\n"
"\' This is the same with that\n"
"A=[1,2,3]\n"
"FOR I=LBOUND(A) TO UBOUND(A)\n"
" E=A(I)\n"
" PRINT E\n"
"NEXT\n"
"\n"
},
{ "WHILE", "STATEMENT",
"_\bW_\bH_\bI_\bL_\bE _\be_\bx_\bp_\br_\b _\b._\b._\b._\b _\bW_\bE_\bN_\bD",
" Begins the definition of a WHILE/WEND loop.\n"
"\n"
" expr\n"
" An expression\n"
"\n"
" BASIC starts by evaluating expression. If expression is\n"
" nonzero (true), the next command is executed. If expression is\n"
" zero (false), control passes to the first command following\n"
" the next WEND command.\n"
"\n"
" When BASIC encounters the WEND command, it reevaluates the\n"
" expression parameter to the most recent WHILE. If that\n"
" parameter is still nonzero (true), the process is repeated;\n"
" otherwise, execution continues at the next command.\n"
"\n"
" WHILE/WEND loops may be nested to any level of complexity, but\n"
" there must be a WEND for each WHILE.\n"
"\n"
" Example:\n"
"\n"
"C=1\n"
"WHILE C<10\n"
" PRINT C\n"
" C=C+1\n"
"WEND\n"
"...\n"
"\' This is the same with that\n"
"FOR C=1 TO 9\n"
" PRINT C\n"
"NEXT\n"
"\n"
},
{ "REPEAT", "STATEMENT",
"_\bR_\bE_\bP_\bE_\bA_\bT _\b._\b._\b._\b _\bU_\bN_\bT_\bI_\bL_\b _\be_\bx_\bp_\br",
" Begins the definition of a REPEAT/UNTIL loop.\n"
"\n"
" expr\n"
" An expression\n"
"\n"
" BASIC starts executing the commands between the REPEAT and\n"
" UNTIL commands. When BASIC encounters the UNTIL command, it\n"
" evaluates the expression parameter. If that parameter is zero\n"
" (false), the process will be repeated; otherwise, execution\n"
" continues at the next command.\n"
"\n"
" REPEAT/UNTIL loops may be nested to any level of complexity,\n"
" but there must be an UNTIL for each REPEAT.\n"
"\n"
" Example:\n"
"\n"
"C=1\n"
"REPEAT\n"
" PRINT C\n"
" C=C+1\n"
"UNTIL C=10\n"
"...\n"
"\' This is the same with that\n"
"FOR C=1 TO 9\n"
" PRINT C\n"
"NEXT\n"
"\n"
},
{ "IF", "STATEMENT",
"_\bI_\bF _\b._\b._\b.",
" _\bS_\by_\bn_\bt_\ba_\bx:\n"
"\n"
"IF expression1 [THEN]\n"
" .\n"
" . [commands]\n"
" .\n"
"[ [ELSEIF | ELIF] expression2 [THEN]\n"
" .\n"
" . [commands]\n"
" .\n"
"]\n"
"[ELSE\n"
" .\n"
" . [commands]\n"
" .\n"
"]\n"
"{ ENDIF | FI }\n"
"\n"
" Block-style IF.\n"
"\n"
" Causes BASIC to make a decision based on the value of an\n"
" expression.\n"
"\n"
" expression\n"
" An expression; 0 is equivalent to FALSE, while all other\n"
" values are equivalent to TRUE.\n"
" commands\n"
" One or more commands.\n"
"\n"
" Each expression in the IF/ELSEIF construct is tested in order.\n"
" As soon as an expression is found to be TRUE, then its\n"
" corresponding commands are executed. If no expressions are\n"
" TRUE, then the commands following the ELSE keyword are\n"
" executed. If ELSE is not specified, then execution continues\n"
" with the command following the ENDIF.\n"
"\n"
" IF, ELSE, ELSEIF, and ENDIF must all be the first keywords on\n"
" their respective lines.\n"
"\n"
" THEN is optional, but if its defined it must be the last\n"
" keyword on its line; if anything other than a comment follows\n"
" on the same line with THEN, BASIC thinks it\'s reading a\n"
" single-line IF/THEN/ELSE construct.\n"
"\n"
" IF blocks may be nested.\n"
"\n"
" Example:\n"
"\n"
"x=1\n"
"IF x=1 THEN\n"
" PRINT \"true\"\n"
"ELSE\n"
" PRINT \"false\"\n"
"ENDIF\n"
"...\n"
"\' Alternate syntax:\n"
"x=1\n"
"IF x=1\n"
" PRINT \"true\"\n"
"ELSE\n"
" PRINT \"false\"\n"
"FI\n"
"\n"
" Single-line IF.\n"
"\n"
" _\bS_\by_\bn_\bt_\ba_\bx:\n"
"\n"
"IF expression THEN [num-label]|[command] [ELSE [num-label]|[command]]\n"
"\n"
" Causes BASIC to make a decision based on the value of an\n"
" expression.\n"
"\n"
" expression\n"
" An expression; 0 is equivalent to FALSE, while all other\n"
" values are equivalent to TRUE.\n"
" command\n"
" Any legal command or a numeric label. If a number is\n"
" specified, it is equivalent to a GOTO command with the\n"
" specified numeric-label.\n"
"\n"
" Example:\n"
"\n"
"\' Single-line IF\n"
"x=1\n"
"IF x=1 THEN PRINT \"true\" ELSE PRINT \"false\"\n"
"...\n"
"IF x=1 THEN 1000\n"
"...\n"
"1000 PRINT \"true\"\n"
"\n"
},
{ "END", "STATEMENT",
"_\bE_\bN_\bD _\b[_\be_\br_\br_\bo_\br_\b]",
"\n"
},
{ "STOP", "STATEMENT",
"_\bS_\bT_\bO_\bP _\b[_\be_\br_\br_\bo_\br_\b]",
" Terminates execution of a program, closes all files opened by\n"
" the program, and returns control to the operating system.\n"
"\n"
" error\n"
" A numeric expression.\n"
"\n"
" The error is the value which will returned to operating\n"
" system; if its not specified the BASIC will return 0.\n"
"\n"
" _\bD_\bO_\bS_\b/_\bW_\bi_\bn_\bd_\bo_\bw_\bs _\bT_\bh_\be_\b _\b\'_\be_\br_\br_\bo_\br_\b\'_\b _\bv_\ba_\bl_\bu_\be_\b _\bi_\bs_\b _\bv_\be_\br_\by_\b _\bw_\be_\bl_\bl_\b _\bk_\bn_\bo_\bw_\bn_\b _\ba_\bs_\b _\bE_\bR_\bR_\bO_\bR_\bL_\bE_\bV_\bE_\bL\n"
" _\bv_\ba_\bl_\bu_\be_\b.\n"
"\n"
},
{ "RESTORE", "STATEMENT",
"_\bR_\bE_\bS_\bT_\bO_\bR_\bE _\bl_\ba_\bb_\be_\bl",
" Specifies the position of the next data to be read.\n"
"\n"
" label\n"
" A valid label.\n"
"\n"
},
{ "DATA", "STATEMENT",
"_\bD_\bA_\bT_\bA _\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b1_\b _\b[_\b,_\bc_\bo_\bn_\bs_\bt_\ba_\bn_\bt_\b2_\b]_\b._\b._\b.",
" Stores one or more constants, of any type, for subsequent\n"
" access via READ command.\n"
"\n"
" DATA commands are nonexecutable statements that supply a\n"
" stream of data constants for use by READ commands. All the\n"
" items supplied by all the DATA commands in a program make up\n"
" one continuous \"string\" of information that is accessed in\n"
" order by your program\'s READ commands.\n"
"\n"
" Example:\n"
"\n"
"RESTORE MyDataBlock\n"
"FOR I=1 TO 3\n"
" READ v\n"
" PRINT v\n"
"NEXT\n"
"END\n"
"...\n"
"LABEL MyDataBlock\n"
"DATA 1,2,3\n"
"\n"
},
{ "ERASE", "STATEMENT",
"_\bE_\bR_\bA_\bS_\bE _\bv_\ba_\br_\b[_\b,_\b _\bv_\ba_\br_\b[_\b,_\b _\b._\b._\b._\b _\bv_\ba_\br_\b]_\b]",
"\n"
" var\n"
" Any variable.\n"
"\n"
" Deallocates the memory used by the specified arrays or\n"
" variables. After that these variables turned to simple\n"
" integers with zero value.\n"
"\n"
" Example:\n"
"\n"
"DIM x(100)\n"
"...\n"
"PRINT FRE(0)\n"
"ERASE x\n"
"PRINT FRE(0)\n"
"PRINT x(1):REM ERROR\n"
"\n"
},
{ "EXIT", "STATEMENT",
"_\bE_\bX_\bI_\bT _\b[_\bF_\bO_\bR_\b|_\bL_\bO_\bO_\bP_\b|_\bS_\bU_\bB_\b|_\bF_\bU_\bN_\bC_\b]",
" Exits a multiline function definition, a loop, or a\n"
" subprogram. By default (if no parameter is specified) exits\n"
" from last command block (loop, for-loop or routine).\n"
"\n"
" FOR\n"
" Exit from the last FOR-NEXT loop\n"
" LOOP\n"
" Exit from the last WHILE-WEND or REPEAT-UNTIL loop\n"
" SUB\n"
" Return from the current routine\n"
" FUNC\n"
" Return from the current function\n"
"\n"
},
{ "READ", "COMMAND",
"_\bR_\bE_\bA_\bD _\bv_\ba_\br_\b[_\b,_\b _\bv_\ba_\br_\b _\b._\b._\b._\b]",
" Assigns values in DATA items to specified variables.\n"
"\n"
" var\n"
" Any variable.\n"
"\n"
" Unless a RESTORE command is executed, BASIC moves to the next\n"
" DATA item with each READ assignment. If BASIC runs out of DATA\n"
" items to READ, an run-time error occurs.\n"
"\n"
" Example:\n"
"\n"
"FOR c=1 TO 6\n"
" READ x\n"
" PRINT x\n"
"NEXT\n"
"...\n"
"DATA \"a,b,c\", 2\n"
"DATA 3, 4\n"
"DATA \"fifth\", 6\n"
"\n"
},
{ "APPEND", "COMMAND",
"_\bA_\bP_\bP_\bE_\bN_\bD _\ba_\b,_\b _\bv_\ba_\bl_\b _\b[_\b,_\b _\bv_\ba_\bl_\b _\b[_\b,_\b _\b._\b._\b._\b]_\b]",
"\n"
" a\n"
" An array-variable.\n"
" val\n"
" Any value or expression\n"
"\n"
" Inserts the values at the end of the specified array.\n"
"\n"
},
{ "INSERT", "COMMAND",
"_\bI_\bN_\bS_\bE_\bR_\bT _\ba_\b,_\b _\bi_\bd_\bx_\b,_\b _\bv_\ba_\bl_\b _\b[_\b,_\b _\bv_\ba_\bl_\b _\b[_\b,_\b _\b._\b._\b._\b]_\b]_\b]",
"\n"
" a\n"
" An array-variable.\n"
" idx\n"
" Position in the array.\n"
" val\n"
" Any value or expression.\n"
"\n"
" Inserts the values to the specified array at the position idx.\n"
"\n"
},
{ "DELETE", "COMMAND",
"_\bD_\bE_\bL_\bE_\bT_\bE _\ba_\b,_\b _\bi_\bd_\bx_\b _\b[_\b,_\b _\bc_\bo_\bu_\bn_\bt_\b]",
"\n"
" a\n"
" An array-variable.\n"
" idx\n"
" Position in the array.\n"
" count\n"
" The number of the elements to be deleted.\n"
"\n"
" Deletes \'count\' elements at position \'idx\' of array A\n"
"\n"
" 5. System\n"
"\n"
},
{ "RTE", "COMMAND",
"_\bR_\bT_\bE _\b[_\bi_\bn_\bf_\bo_\b _\b[_\b,_\b _\b._\b._\b._\b]_\b]",
" Creates a Run-Time-Error. The parameters will be displayed on\n"
" error-line.\n"
"\n"
},
{ "TIMEHMS", "COMMAND",
"_\bT_\bI_\bM_\bE_\bH_\bM_\bS _\bh_\bm_\bs_\b _\b|_\b _\bt_\bi_\bm_\be_\br_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bh_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bm_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bs",
" Converts a time-value to hours, minutes and seconds integer\n"
" values\n"
"\n"
},
{ "DATEDMY", "COMMAND",
"_\bD_\bA_\bT_\bE_\bD_\bM_\bY _\bd_\bm_\by_\b _\b|_\b _\bj_\bu_\bl_\bi_\ba_\bn_\b__\bd_\ba_\bt_\be_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bd_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bm_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\by",
" Returns the day, month and the year as integers.\n"
"\n"
},
{ "DELAY", "COMMAND",
"_\bD_\bE_\bL_\bA_\bY _\bm_\bs",
" Delay for a specified amount of milliseconds. This \'delay\' is\n"
" also depended to system clock.\n"
"\n"
},
{ "SORT", "COMMAND",
"_\bS_\bO_\bR_\bT _\ba_\br_\br_\ba_\by_\b _\b[_\bU_\bS_\bE_\b _\bc_\bm_\bp_\bf_\bu_\bn_\bc_\b]",
" Sorts an array.\n"
"\n"
" The cmpfunc (if its specified) it takes 2 vars to compare.\n"
" cmpfunc must returns\n"
"\n"
" -1 if x < y, +1 if x > y, 0 if x = y\n"
"\n"
"FUNC qscmp(x,y)\n"
"IF x=y\n"
" qscmp=0\n"
"ELIF x>y\n"
" qscmp=1\n"
"ELSE\n"
" qscmp=-1\n"
"ENDIF\n"
"END\n"
"...\n"
"DIM A(5)\n"
"FOR i=0 TO 5\n"
" A(i)=RND\n"
"NEXT\n"
"SORT A USE qscmp(x,y)\n"
"\n"
},
{ "SEARCH", "COMMAND",
"_\bS_\bE_\bA_\bR_\bC_\bH _\bA_\b,_\b _\bk_\be_\by_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\br_\bi_\bd_\bx_\b _\b[_\bU_\bS_\bE_\b _\bc_\bm_\bp_\bf_\bu_\bn_\bc_\b]",
" Scans an array for the key. If key is not found the SEARCH\n"
" command returns (in ridx) the value (LBOUND(A)-1). In\n"
" default-base arrays that means -1.\n"
"\n"
" The cmpfunc (if its specified) it takes 2 vars to compare. It\n"
" must return 0 if x = y; non-zero if x <> y\n"
"\n"
"FUNC cmp(x,y)\n"
" cmp=!(x=y)\n"
"END\n"
"...\n"
"DIM A(5)\n"
"FOR i=0 TO 5\n"
" A(i)=5-i\n"
"NEXT\n"
"SEARCH A, 4, r USE cmp(x,y)\n"
"PRINT r:REM prints 1\n"
"PRINT A(r): REM prints 4\n"
"\n"
},
{ "CHAIN", "COMMAND",
"_\bC_\bH_\bA_\bI_\bN _\bf_\bi_\bl_\be",
" Transfers control to another SmallBASIC program.\n"
"\n"
" file - A string expression that follows OS file naming\n"
" conventions; The file must be a SmallBASIC source code file.\n"
"\n"
"CHAIN \"PROG2.BAS\"\n"
"\n"
},
{ "EXEC", "COMMAND",
"_\bE_\bX_\bE_\bC _\bf_\bi_\bl_\be",
" Transfers control to another program\n"
"\n"
" This routine works like CHAIN with the exception the file can\n"
" be any executable file.\n"
"\n"
" EXEC never returns\n"
"\n"
},
{ "ENVIRON", "COMMAND",
"_\bE_\bN_\bV_\bI_\bR_\bO_\bN _\b\"_\be_\bx_\bp_\br_\b\"",
"\n"
},
{ "ENV", "COMMAND",
"_\bE_\bN_\bV _\b\"_\be_\bx_\bp_\br_\b\"",
" Adds a variable to or deletes a variable from the current\n"
" environment variable-table.\n"
"\n"
" expr\n"
" A string expression of the form \"name=parameter\"\n"
"\n"
" If name already exists in the environment table, its current\n"
" setting is replaced with the new setting. If name does not\n"
" exist, the new variable is added.\n"
"\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bS_\bB_\b _\be_\bm_\bu_\bl_\ba_\bt_\be_\bs_\b _\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt_\b _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs_\b.\n"
"\n"
},
{ "RUN", "COMMAND",
"_\bR_\bU_\bN _\bc_\bm_\bd_\bs_\bt_\br",
" Loads a secondary copy of system\'s shell and, executes an\n"
" program, or an shell command.\n"
"\n"
" cmdstr\n"
" Shell\'s specific command string\n"
"\n"
" After the specified shell command or program terminates,\n"
" control is returned to the line following the RUN command.\n"
"\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bT_\bh_\be_\b _\b\'_\bc_\bm_\bd_\bs_\bt_\br_\b\'_\b _\bi_\bs_\b _\bt_\bh_\be_\b _\bC_\br_\be_\ba_\bt_\bo_\br_\b-_\bI_\bD_\b.\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bT_\bh_\be_\b _\bR_\bU_\bN_\b _\bn_\be_\bv_\be_\br_\b _\br_\be_\bt_\bu_\br_\bn_\bs_\b.\n"
"\n"
},
{ "TRON", "COMMAND",
"_\bT_\bR_\bO_\bN",
"\n"
},
{ "TROFF", "COMMAND",
"_\bT_\bR_\bO_\bF_\bF",
" TRACE ON/OFF. When trace mechanism is ON, the SB displays each\n"
" line number as the program is executed\n"
"\n"
},
{ "LOGPRINT", "COMMAND",
"_\bL_\bO_\bG_\bP_\bR_\bI_\bN_\bT _\b._\b._\b.",
" PRINT to SB\'s logfile. The syntax is the same with the PRINT\n"
" command.\n"
"\n"
},
{ "POKE[{16|32}]", "COMMAND",
"_\bP_\bO_\bK_\bE_\b[_\b{_\b1_\b6_\b|_\b3_\b2_\b}_\b] _\ba_\bd_\bd_\br_\b,_\b _\bv_\ba_\bl_\bu_\be",
" Writes a specified byte, word or dword at a specified memory\n"
" address.\n"
"\n"
},
{ "USRCALL", "COMMAND",
"_\bU_\bS_\bR_\bC_\bA_\bL_\bL _\ba_\bd_\bd_\br",
" Transfers control to an assembly language subroutine.\n"
"\n"
" The USRCALL is equal to:\n"
"\n"
"void (*f)(void);\n"
"f = (void (*)(void)) addr;\n"
"f();\n"
"\n"
},
{ "BCOPY", "COMMAND",
"_\bB_\bC_\bO_\bP_\bY _\bs_\br_\bc_\b__\ba_\bd_\bd_\br_\b,_\b _\bd_\bs_\bt_\b__\ba_\bd_\bd_\br_\b,_\b _\bl_\be_\bn_\bg_\bt_\bh",
" Copies a memory block from \'src_addr\' to \'dst_addr\'\n"
"\n"
},
{ "BLOAD", "COMMAND",
"_\bB_\bL_\bO_\bA_\bD _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be_\b[_\b,_\b _\ba_\bd_\bd_\br_\be_\bs_\bs_\b]",
" Loads a specified memory image file into memory.\n"
"\n"
},
{ "BSAVE", "COMMAND",
"_\bB_\bS_\bA_\bV_\bE _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be_\b,_\b _\ba_\bd_\bd_\br_\be_\bs_\bs_\b,_\b _\bl_\be_\bn_\bg_\bt_\bh",
" Copies a specified portion of memory to a specified file.\n"
"\n"
},
{ "STKDUMP", "COMMAND",
"_\bS_\bT_\bK_\bD_\bU_\bM_\bP",
" Displays the SB\'s internal executor\'s stack\n"
"\n"
" _\b* _\bF_\bo_\br_\b _\bd_\be_\bb_\bu_\bg_\b _\bp_\bu_\br_\bp_\bo_\bs_\be_\bs_\b;_\b _\bi_\bt_\b _\bi_\bs_\b _\bn_\bo_\bt_\b _\bs_\bu_\bp_\bp_\bo_\br_\bt_\be_\bd_\b _\bo_\bn_\b _\b\"_\bl_\bi_\bm_\bi_\bt_\be_\bd_\b\"_\b _\bO_\bS_\be_\bs_\b.\n"
"\n"
" 6. Graphics & Sound\n"
"\n"
" The SB\'s Graphics commands are working only with integers. (Of\n"
" course, 2D algebra commands are working with reals) That is different\n"
" of QB, but its much faster.\n"
"\n"
"6.1 The colors\n"
"\n"
" _\bM_\bo_\bn_\bo_\bc_\bh_\br_\bo_\bm_\be\n"
" 0 = black, 15 = white\n"
" _\b2_\bb_\bi_\bt_\b _\b(_\b4_\b _\bc_\bo_\bl_\bo_\br_\bs_\b)\n"
" 0 = black, 15 = white, 1-6, 8 = dark-gray, 7, 9-14 =\n"
" light-gray\n"
" _\b4_\bb_\bi_\bt_\b _\b(_\b1_\b6_\b _\bc_\bo_\bl_\bo_\br_\bs_\b)\n"
" 16 Standard VGA colors, 16 colors of gray (on PalmOS)\n"
" _\b8_\bb_\bi_\bt_\b _\b(_\b2_\b5_\b6_\b _\bp_\ba_\bl_\be_\bt_\bt_\be_\bd_\b _\bc_\bo_\bl_\bo_\br_\bs_\b)\n"
" 16 Standard VGA colors. The rest colors are ignored.\n"
" _\b1_\b5_\bb_\bi_\bt_\b _\b(_\b3_\b2_\bK_\b _\bc_\bo_\bl_\bo_\br_\bs_\b)_\b,_\b _\b1_\b6_\bb_\bi_\bt_\b _\b(_\b6_\b4_\bK_\b _\bc_\bo_\bl_\bo_\br_\bs_\b)_\b _\ba_\bn_\bd_\b _\b2_\b4_\bb_\bi_\bt_\b _\b(_\b1_\b._\b7_\bM_\b _\bc_\bo_\bl_\bo_\br_\bs_\b)\n"
" Color 0..15 is the standard VGA colors, full 24-bit RGB colors\n"
" can be passed by using negative number.\n"
"\n"
"6.2 The points\n"
"\n"
" Any point can be specified by an array of 2 elements or by 2\n"
" parameters\n"
"\n"
" Example:\n"
"\n"
"LINE x1, y1, x2, y2\n"
"or\n"
"LINE [x1, y1], [x2, y2]\n"
"\n"
" Also, the polylines can work with the same way.\n"
"\n"
"DIM poly(10)\n"
"...\n"
"poly[0] = [x, y]\n"
"\n"
"6.3 The STEP keyword\n"
"\n"
" The STEP keyword calculates the next x,y parameters relative to\n"
" current position. That position can be returned by using the POINT(0)\n"
" and POINT(1) functions.\n"
"\n"
"6.4 The \'aspect\' parameter\n"
"\n"
" The x/y factor.\n"
"\n"
"6.5 The FILLED keyword\n"
"\n"
" The FILLED keyword fills the result of the command with the drawing\n"
" color.\n"
"\n"
"6.6 Graphics Commands\n"
"\n"
},
{ "ARC", "COMMAND",
"_\bA_\bR_\bC _\b[_\bS_\bT_\bE_\bP_\b]_\b _\bx_\b,_\by_\b,_\br_\b,_\ba_\bs_\bt_\ba_\br_\bt_\b,_\ba_\be_\bn_\bd_\b _\b[_\b,_\ba_\bs_\bp_\be_\bc_\bt_\b _\b[_\b,_\bc_\bo_\bl_\bo_\br_\b]_\b]_\b _\b[_\bC_\bO_\bL_\bO_\bR",
" _\bc_\bo_\bl_\bo_\br_\b]\n"
" Draws an arc. astart,aend = first,last angle in radians.\n"
"\n"
},
{ "CHART", "COMMAND",
"_\bC_\bH_\bA_\bR_\bT _\b{_\bL_\bI_\bN_\bE_\bC_\bH_\bA_\bR_\bT_\b|_\bB_\bA_\bR_\bC_\bH_\bA_\bR_\bT_\b}_\b,_\b _\ba_\br_\br_\ba_\by_\b(_\b)_\b _\b[_\b,_\b _\bt_\by_\bp_\be_\b _\b[_\b,_\b _\bx_\b1_\b,_\b _\by_\b1_\b,_\b _\bx_\b2_\b,",
" _\by_\b2_\b]_\b]\n"
" Draws a chart of array values in the rectangular area\n"
" x1,y1,x2,y2\n"
"\n"
" Where \'type\':\n"
"\n"
" 0 simple\n"
" 1 with marks\n"
" 2 with ruler\n"
" 3 with marks & ruler\n"
"\n"
},
{ "PLOT", "COMMAND",
"_\bP_\bL_\bO_\bT _\bx_\bm_\bi_\bn_\b,_\b _\bx_\bm_\ba_\bx_\b _\bU_\bS_\bE_\b _\bf_\b(_\bx_\b)",
" Graph of f(x)\n"
"\n"
" Example:\n"
"\n"
"PLOT 0, 2*PI USE SIN(x)\n"
"\n"
},
{ "CIRCLE", "COMMAND",
"_\bC_\bI_\bR_\bC_\bL_\bE _\b[_\bS_\bT_\bE_\bP_\b]_\b _\bx_\b,_\by_\b,_\br_\b _\b[_\b,_\ba_\bs_\bp_\be_\bc_\bt_\b _\b[_\b,_\b _\bc_\bo_\bl_\bo_\br_\b]_\b]_\b _\b[_\bC_\bO_\bL_\bO_\bR_\b _\bc_\bo_\bl_\bo_\br_\b]",
" _\b[_\bF_\bI_\bL_\bL_\bE_\bD_\b]\n"
"\n"
" x\n"
" y\n"
" the circle\'s center\n"
" r\n"
" the radius\n"
"\n"
" Draws a circle (or an ellipse if the aspect is specified).\n"
"\n"
},
{ "COLOR", "COMMAND",
"_\bC_\bO_\bL_\bO_\bR _\bf_\bo_\br_\be_\bg_\br_\bo_\bu_\bn_\bd_\b-_\bc_\bo_\bl_\bo_\br_\b _\b[_\b,_\b _\bb_\ba_\bc_\bk_\bg_\br_\bo_\bu_\bn_\bd_\b-_\bc_\bo_\bl_\bo_\br_\b]",
" Specifies the foreground and background colors\n"
"\n"
},
{ "DRAWPOLY", "COMMAND",
"_\bD_\bR_\bA_\bW_\bP_\bO_\bL_\bY _\ba_\br_\br_\ba_\by_\b _\b[_\b,_\bx_\b-_\bo_\br_\bi_\bg_\bi_\bn_\b,_\by_\b-_\bo_\br_\bi_\bg_\bi_\bn_\b _\b[_\b,_\b _\bs_\bc_\ba_\bl_\be_\bf_\b _\b[_\b,_\b _\bc_\bo_\bl_\bo_\br_\b]_\b]_\b]",
" _\b[_\bC_\bO_\bL_\bO_\bR_\b _\bc_\bo_\bl_\bo_\br_\b]_\b _\b[_\bF_\bI_\bL_\bL_\bE_\bD_\b]\n"
" Draws a polyline\n"
"\n"
" If the array does not uses points as element arrays, then even\n"
" elements for x (starting from 0), odd elements for y\n"
"\n"
},
{ "DRAW", "COMMAND",
"_\bD_\bR_\bA_\bW _\bs_\bt_\br_\bi_\bn_\bg",
" Draws an object according to instructions specified as a\n"
" string.\n"
"\n"
" string - A string expression containing commands in the BASIC\n"
" graphics definition language.\n"
"\n"
" Graphics Definition Language\n"
"\n"
" In the movement instructions below, n specifies a distance to\n"
" move. The number of pixels moved is equal to n multiplied by\n"
" the current scaling factor, which is set by the S command.\n"
"\n"
" Un Move up.\n"
" Dn Move down.\n"
" Ln Move left.\n"
" Rn Move right.\n"
" En Move diagonally up and right.\n"
" Fn Move diagonally down and right.\n"
" Gn Move diagonally down and left.\n"
" Hn Move diagonally up and left.\n"
" Mx,y Move to coordinate x,y. If x is preceded by a + or -, the\n"
" movement is relative to the last point referenced.\n"
" B A prefix command. Next movement command moves but doesn\'t plot.\n"
" N A prefix command. Next movement command moves, but returns\n"
" immediately to previous point.\n"
"\n"
" _\b* _\bT_\bh_\bi_\bs_\b _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b _\bi_\bt_\b _\bi_\bs_\b _\bh_\ba_\bd_\b _\bn_\bo_\bt_\b _\bt_\be_\bs_\bt_\be_\bd_\b _\b-_\b _\bp_\bl_\be_\ba_\bs_\be_\b _\br_\be_\bp_\bo_\br_\bt_\b _\ba_\bn_\by_\b _\bb_\bu_\bg_\b _\bo_\br\n"
" _\bi_\bn_\bc_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bi_\bl_\bi_\bt_\by_\b.\n"
"\n"
},
{ "LINE", "COMMAND",
"_\bL_\bI_\bN_\bE _\b[_\bS_\bT_\bE_\bP_\b]_\b _\bx_\b,_\by_\b _\b[_\b{_\b,_\b|_\bS_\bT_\bE_\bP_\b}_\b _\bx_\b2_\b,_\by_\b2_\b]_\b _\b[_\b,_\b _\bc_\bo_\bl_\bo_\br_\b _\b|_\b _\bC_\bO_\bL_\bO_\bR_\b _\bc_\bo_\bl_\bo_\br_\b]",
" Draws a line\n"
"\n"
},
{ "PSET", "COMMAND",
"_\bP_\bS_\bE_\bT _\b[_\bS_\bT_\bE_\bP_\b]_\b _\bx_\b,_\by_\b _\b[_\b,_\b _\bc_\bo_\bl_\bo_\br_\b _\b|_\b _\bC_\bO_\bL_\bO_\bR_\b _\bc_\bo_\bl_\bo_\br_\b]",
" Draw a pixel\n"
"\n"
},
{ "RECT", "COMMAND",
"_\bR_\bE_\bC_\bT _\b[_\bS_\bT_\bE_\bP_\b]_\b _\bx_\b,_\by_\b _\b[_\b{_\b,_\b|_\bS_\bT_\bE_\bP_\b}_\b _\bx_\b2_\b,_\by_\b2_\b]_\b _\b[_\b,_\b _\bc_\bo_\bl_\bo_\br_\b _\b|_\b _\bC_\bO_\bL_\bO_\bR_\b _\bc_\bo_\bl_\bo_\br_\b]",
" _\b[_\bF_\bI_\bL_\bL_\bE_\bD_\b]\n"
" Draws a rectangular parallelogram\n"
"\n"
},
{ "PAINT", "COMMAND",
"_\bP_\bA_\bI_\bN_\bT _\b[_\bS_\bT_\bE_\bP_\b]_\b _\bx_\b,_\b _\by_\b _\b[_\b,_\bc_\bo_\bl_\bo_\br_\b _\b[_\b,_\bb_\bo_\br_\bd_\be_\br_\b]_\b]",
" Fills an enclosed area on the graphics screen with a specific\n"
" color.\n"
"\n"
" x\n"
" y\n"
" Screen coordinate (column, row) within the area that is\n"
" to be filled.\n"
" color\n"
" The fill-color\n"
" border\n"
" The boundary-color\n"
"\n"
" if the border-color is specified then the PAINT will fill all\n"
" the area which is specified by the border-color. (fill-until,\n"
" color!=point(x,y)\n"
"\n"
" if the border-color is NOT specified then the PAINT will fill\n"
" all the are with the same color as the pixel at x,y.\n"
" (fill-while, color=point(x,y))\n"
"\n"
},
{ "VIEW", "COMMAND",
"_\bV_\bI_\bE_\bW _\b[_\bx_\b1_\b,_\by_\b1_\b,_\bx_\b2_\b,_\by_\b2_\b _\b[_\b,_\bc_\bo_\bl_\bo_\br_\b _\b[_\b,_\bb_\bo_\br_\bd_\be_\br_\b-_\bc_\bo_\bl_\bo_\br_\b]_\b]_\b]",
" Defines a viewport.\n"
"\n"
" x1\n"
" y1\n"
" x2\n"
" y2\n"
" Corner coordinates of the viewport.\n"
" color\n"
" If included, BASIC fills the viewport with the specified\n"
" color.\n"
" border-color\n"
" If included, BASIC draws a border, in a specified color,\n"
" around the defined viewport.\n"
"\n"
" The viewport defined by VIEW is disabled by a VIEW command\n"
" with no parameters.\n"
"\n"
},
{ "WINDOW", "COMMAND",
"_\bW_\bI_\bN_\bD_\bO_\bW _\b[_\bx_\b1_\b,_\by_\b1_\b,_\bx_\b2_\b,_\by_\b2_\b]",
" Specifies \"world\" coordinates for the screen.\n"
"\n"
" x1\n"
" y1\n"
" x2\n"
" y2\n"
" The corner coordinates of the world space.\n"
"\n"
" The WINDOW command allows you to redefine the corners of the\n"
" display screen as a pair of \"world\" coordinates.\n"
"\n"
" The world space defined by WINDOW is disabled by a WINDOW\n"
" command with no parameters.\n"
"\n"
},
{ "BEEP", "COMMAND",
"_\bB_\bE_\bE_\bP",
" Generates a beep sound\n"
"\n"
},
{ "PLAY", "COMMAND",
"_\bP_\bL_\bA_\bY _\bs_\bt_\br_\bi_\bn_\bg",
" Play musical notes\n"
"\n"
" A-G[-|+|#][nnn][.]\n"
" Play note A..G, +|# is sharp, - is flat, . is multiplier\n"
" 1.5\n"
" On\n"
" Octave 0..6, < moves down one octave, > moves up one\n"
" octave\n"
" Nnn\n"
" Play note 0..84 (0 = pause)\n"
" Pnnn\n"
" Pause 1..64\n"
" Lnnn\n"
" Length of note 1..64 (1/nnn)\n"
" Tnnn\n"
" Tempo 32..255. Number of 1/4 notes per minute.\n"
" MS\n"
" Staccato (1/2)\n"
" MN\n"
" Normal (3/4)\n"
" ML\n"
" Legato\n"
" Vnnn\n"
" Volume 0..100\n"
" MF\n"
" Play on foreground\n"
" MB\n"
" Play on background\n"
" Q\n"
" Clear sound queue\n"
"\n"
},
{ "SOUND", "COMMAND",
"_\bS_\bO_\bU_\bN_\bD _\bf_\br_\be_\bq_\b,_\b _\bd_\bu_\br_\b__\bm_\bs_\b _\b[_\b,_\b _\bv_\bo_\bl_\b]_\b _\b[_\bB_\bG_\b]",
" Plays a sound\n"
"\n"
" freq\n"
" The frequency\n"
" dur_ms\n"
" The duration in milliseconds\n"
" vol\n"
" The volume in 1/100 units\n"
" BG\n"
" Play it in background\n"
"\n"
},
{ "NOSOUND", "COMMAND",
"_\bN_\bO_\bS_\bO_\bU_\bN_\bD",
" Stops background sound. Also, clears the sound queue.\n"
"\n"
" 7. Miscellaneous\n"
"\n"
},
{ "RANDOMIZE", "COMMAND",
"_\bR_\bA_\bN_\bD_\bO_\bM_\bI_\bZ_\bE _\b[_\bi_\bn_\bt_\b]",
" Seeds the random number generator\n"
"\n"
},
{ "PEN", "COMMAND",
"_\bP_\bE_\bN _\bO_\bN_\b|_\bO_\bF_\bF",
" Enables/Disables the PEN/MOUSE mechanism.\n"
"\n"
},
{ "PAUSE", "COMMAND",
"_\bP_\bA_\bU_\bS_\bE _\b[_\bs_\be_\bc_\bs_\b]",
" Pauses the execution for a specified length of time, or until\n"
" user hit the keyboard.\n"
"\n"
},
{ "SWAP", "COMMAND",
"_\bS_\bW_\bA_\bP _\ba_\b,_\b _\bb",
" Exchanges the values of two variables. The parameters may be\n"
" variables of any type.\n"
"\n"
" 8. File system\n"
"\n"
"8.1 Special Device Names\n"
"\n"
" \"COM1:[speed]\"\n"
" Serial port 1\n"
" \"COM2:[speed]\"\n"
" Serial port 2\n"
" \"PDOC:filename\"\n"
" Compressed PDOC files for PalmOS or PDB/PDOC files on other\n"
" systems. PDOCFS opens and uncompress the file on OPEN; and\n"
" compress the file on CLOSE. So, it will use a lot of memory\n"
" and time (its depended on size of the data).\n"
" \"MEMO:memo-title\"\n"
" MemoDB of PalmOS or regular file on other systems. Memo\n"
" records (virtual files) are limited to 3935 bytes\n"
" \"SOCL:server:port\"\n"
" Socket client. Actually a telnet client.\n"
" \"MMC:filename\"\n"
" eBookMan only. Opens an MMC file.\n"
"\n"
" Example: OPEN \"COM1:\" AS #1\n"
" OPEN \"COM2:38400\" AS #2\n"
"\n"
"8.2 File System Commands\n"
"\n"
},
{ "OPEN", "COMMAND",
"_\bO_\bP_\bE_\bN _\bf_\bi_\bl_\be_\b _\b[_\bF_\bO_\bR_\b _\b{_\bI_\bN_\bP_\bU_\bT_\b|_\bO_\bU_\bT_\bP_\bU_\bT_\b|_\bA_\bP_\bP_\bE_\bN_\bD_\b}_\b]_\b _\bA_\bS_\b _\b#_\bf_\bi_\bl_\be_\bN",
" Makes a file or device available for sequential input,\n"
" sequential output.\n"
"\n"
" file\n"
" A string expression that follows OS file naming\n"
" conventions.\n"
" fileN\n"
" A file-handle (integer 1 to 256).\n"
" FOR -\n"
"\n"
" INPUT Sequential input\n"
" OUTPUT Sequential output\n"
" APPEND Sequential output, beginning at current EOF\n"
"\n"
" The files are always opened as shared.\n"
"\n"
},
{ "CLOSE", "COMMAND",
"_\bC_\bL_\bO_\bS_\bE _\b#_\bf_\bi_\bl_\be_\bN",
" Close a file or device\n"
"\n"
},
{ "TLOAD", "COMMAND",
"_\bT_\bL_\bO_\bA_\bD _\bf_\bi_\bl_\be_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bv_\ba_\br_\b _\b[_\b,_\b _\bt_\by_\bp_\be_\b]",
" Loads a text file into array variable. Each text-line is an\n"
" array element.\n"
"\n"
" file\n"
" A string expression that follows OS file naming\n"
" conventions.\n"
" var\n"
" Any variable\n"
" type\n"
" 0 = load into array (default), 1 = load into string\n"
"\n"
},
{ "TSAVE", "COMMAND",
"_\bT_\bS_\bA_\bV_\bE _\bf_\bi_\bl_\be_\b,_\b _\bv_\ba_\br",
" Writes an array to a text file. Each array element is a\n"
" text-line.\n"
"\n"
" file\n"
" A string expression that follows OS file naming\n"
" conventions.\n"
" var\n"
" An array variable or a string variable. Expressions are\n"
" not allowed for memory reasons.\n"
"\n"
},
{ "CHMOD", "COMMAND",
"_\bC_\bH_\bM_\bO_\bD _\bf_\bi_\bl_\be_\b,_\b _\bm_\bo_\bd_\be",
" Change permissions of a file\n"
"\n"
" file\n"
" A string expression that follows OS file naming\n"
" conventions.\n"
" mode\n"
" The mode is compatible with the chmod()\'s \'mode\'\n"
" parameter as its described on GNU\'s manual. See ACCESS()\n"
" for more information.\n"
"\n"
"\' Make myfile available to anyone (read/write)\n"
"CHMOD \"myfile.bas\", 0o666\n"
"...\n"
"\' Make myfile available to anyone (execute/read/write)\n"
"CHMOD \"myfile.bas\", 0o777\n"
"\n"
},
{ "PRINT#", "COMMAND",
"_\bP_\bR_\bI_\bN_\bT_\b# _\bf_\bi_\bl_\be_\bN_\b,_\b _\b[_\bU_\bS_\bI_\bN_\bG_\b._\b._\b._\b]_\b _\b._\b._\b.",
" Write string to a file. The syntax is the same with the PRINT\n"
" command.\n"
"\n"
" _\b* _\bW_\be_\b _\bc_\ba_\bn_\b _\bu_\bs_\be_\b _\b\'_\bU_\bS_\bG_\b\'_\b _\bi_\bn_\bs_\bt_\be_\ba_\bd_\b _\bo_\bf_\b _\b\'_\bU_\bS_\bI_\bN_\bG_\b\'_\b.\n"
"\n"
},
{ "LINPUT#", "COMMAND",
"_\bL_\bI_\bN_\bP_\bU_\bT_\b# _\b[_\bf_\bi_\bl_\be_\bN_\b{_\b,_\b|_\b;_\b}_\b]_\b _\bv_\ba_\br",
"\n"
},
{ "LINEINPUT#", "COMMAND",
"_\bL_\bI_\bN_\bE_\bI_\bN_\bP_\bU_\bT_\b# _\b[_\b#_\bf_\bi_\bl_\be_\bN_\b{_\b,_\b|_\b;_\b}_\b]_\b _\bv_\ba_\br",
"\n"
},
{ "LINE", "COMMAND",
"_\bL_\bI_\bN_\bE_\b _\bI_\bN_\bP_\bU_\bT_\b# _\b[_\bf_\bi_\bl_\be_\bN_\b{_\b,_\b|_\b;_\b}_\b]_\b _\bv_\ba_\br",
" Reads a whole text line from file or console.\n"
"\n"
},
{ "INPUT#", "COMMAND",
"_\bI_\bN_\bP_\bU_\bT_\b# _\bf_\bi_\bl_\be_\bN_\b;_\b _\bv_\ba_\br_\b1_\b _\b[_\b,_\bd_\be_\bl_\bi_\bm_\b]_\b _\b[_\b,_\b _\bv_\ba_\br_\b2_\b _\b[_\b,_\bd_\be_\bl_\bi_\bm_\b]_\b]_\b _\b._\b._\b.",
" Reads data from file\n"
"\n"
},
{ "BPUTC#", "COMMAND",
"_\bB_\bP_\bU_\bT_\bC_\b# _\bf_\bi_\bl_\be_\bN_\b;_\b _\bb_\by_\bt_\be",
" (Binary mode) Writes a byte on file or device\n"
"\n"
},
{ "SEEK#", "COMMAND",
"_\bS_\bE_\bE_\bK_\b# _\bf_\bi_\bl_\be_\bN_\b;_\b _\bp_\bo_\bs",
" Sets file position for the next read/write\n"
"\n"
},
{ "KILL", "COMMAND",
"_\bK_\bI_\bL_\bL _\b\"_\bf_\bi_\bl_\be_\b\"",
" Deletes the specified file\n"
"\n"
},
{ "WRITE#", "COMMAND",
"_\bW_\bR_\bI_\bT_\bE_\b# _\bf_\bi_\bl_\be_\bN_\b;_\b _\bv_\ba_\br_\b1_\b _\b[_\b,_\b _\b._\b._\b._\b]",
"\n"
},
{ "READ#", "COMMAND",
"_\bR_\bE_\bA_\bD_\b# _\bf_\bi_\bl_\be_\bN_\b;_\b _\bv_\ba_\br_\b1_\b _\b[_\b,_\b _\b._\b._\b._\b]",
" The READ/WRITE command set is used to store variables to a\n"
" file as binary data.\n"
"\n"
" The common problem with INPUT/PRINT set is there are many\n"
" conflicts with data.\n"
"\n"
"PRINT #1; \"Hello, world\"\n"
"\n"
" You have wrote only one string and you want read it in one\n"
" variable, but this is impossible for INPUT command to\n"
" understand it, because INPUT finds the separator comma, so it\n"
" thinks there are two variables not one.\n"
"\n"
" So, now, you can store arrays, strings etc and what is you\n"
" write is what you will read the next time.\n"
"\n"
" BTW its faster too.\n"
"\n"
" _\b* _\bT_\bh_\be_\b _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs_\b _\bc_\ba_\bn_\b _\bb_\be_\b _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs_\b _\bO_\bN_\bL_\bY_\b.\n"
" _\b* _\bI_\bt_\bs_\b _\bv_\be_\br_\by_\b _\bb_\ba_\bd_\b _\bi_\bd_\be_\ba_\b _\bt_\bo_\b _\bm_\bi_\bx_\be_\bd_\b _\bR_\bE_\bA_\bD_\b/_\bW_\bR_\bI_\bT_\bE_\b _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bs_\b _\bw_\bi_\bt_\bh\n"
" _\bI_\bN_\bP_\bU_\bT_\b/_\bP_\bR_\bI_\bN_\bT_\b _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bs_\b _\bi_\bn_\b _\bt_\bh_\be_\b _\bs_\ba_\bm_\be_\b _\bf_\bi_\bl_\be_\b.\n"
"\n"
},
{ "COPY", "COMMAND",
"_\bC_\bO_\bP_\bY _\b\"_\bf_\bi_\bl_\be_\b\"_\b,_\b _\b\"_\bn_\be_\bw_\bf_\bi_\bl_\be_\b\"",
" Makes a copy of specified file to the \'newfile\'\n"
"\n"
},
{ "RENAME", "COMMAND",
"_\bR_\bE_\bN_\bA_\bM_\bE _\b\"_\bf_\bi_\bl_\be_\b\"_\b,_\b _\b\"_\bn_\be_\bw_\bn_\ba_\bm_\be_\b\"",
" Renames the specified file\n"
"\n"
},
{ "MKDIR", "COMMAND",
"_\bM_\bK_\bD_\bI_\bR _\bd_\bi_\br",
" Create a directory. This does not working on PalmOS.\n"
"\n"
},
{ "CHDIR", "COMMAND",
"_\bC_\bH_\bD_\bI_\bR _\bd_\bi_\br",
" Changes the current working directory. This does not working\n"
" on PalmOS.\n"
"\n"
},
{ "RMDIR", "COMMAND",
"_\bR_\bM_\bD_\bI_\bR _\bd_\bi_\br",
" Removes a directory. This does not working on PalmOS.\n"
"\n"
},
{ "DIRWALK", "COMMAND",
"_\bD_\bI_\bR_\bW_\bA_\bL_\bK _\bd_\bi_\br_\be_\bc_\bt_\bo_\br_\by_\b _\b[_\b,_\b _\bw_\bi_\bl_\bd_\bc_\ba_\br_\bd_\bs_\b]_\b _\b[_\bU_\bS_\bE_\b _\b._\b._\b._\b]",
" Walk through the directories. The user-defined function must\n"
" returns zero to stop the process.\n"
"\n"
"FUNC PRNF(x)\n"
" ? x\n"
" PRNF=TRUE\n"
"END\n"
"...\n"
"DIRWALK \".\" USE PRNF(x)\n"
"\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bN_\bo_\bt_\b _\bs_\bu_\bp_\bp_\bo_\br_\bt_\be_\bd_\b.\n"
"\n"
},
{ "EXPRSEQ", "COMMAND",
"_\bE_\bX_\bP_\bR_\bS_\bE_\bQ _\bB_\bY_\bR_\bE_\bF_\b _\ba_\br_\br_\ba_\by_\b,_\b _\bx_\bm_\bi_\bn_\b,_\b _\bx_\bm_\ba_\bx_\b,_\b _\bc_\bo_\bu_\bn_\bt_\b _\bU_\bS_\bE_\b _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn",
" Returns an array with \'count\' elements. Each element had the\n"
" \'y\' value of its position as it is returned by the expression.\n"
"\n"
"REM same as v=SEQ(0,1,11)\n"
"EXPRSEQ v, 0, 1, 11 USE x\n"
"\n"
},
{ "ROOT", "COMMAND",
"_\bR_\bO_\bO_\bT _\bl_\bo_\bw_\b,_\b _\bh_\bi_\bg_\bh_\b,_\b _\bs_\be_\bg_\bs_\b,_\b _\bm_\ba_\bx_\be_\br_\br_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\br_\be_\bs_\bu_\bl_\bt_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\be_\br_\br_\bc_\bo_\bd_\be",
" _\bU_\bS_\bE_\b _\be_\bx_\bp_\br\n"
" Roots of F(x)\n"
"\n"
" low\n"
" the lower limit\n"
" high\n"
" the upper limit\n"
" segs\n"
" the number of segments (spaces)\n"
" maxerr\n"
" tolerance (IF ABS(F(x)) < maxerr THEN OK)\n"
" errcode\n"
" 0 for success; otherwise calculation error\n"
" result\n"
" the result\n"
"\n"
"FUNC F(x)\n"
" F = SIN(x)\n"
"END\n"
"...\n"
"ROOT 1, 5, 500, 0.00001, result, errcode USE F(x)\n"
"\n"
},
{ "DERIV", "COMMAND",
"_\bD_\bE_\bR_\bI_\bV _\bx_\b,_\b _\bm_\ba_\bx_\bt_\br_\bi_\be_\bs_\b,_\b _\bm_\ba_\bx_\be_\br_\br_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\br_\be_\bs_\bu_\bl_\bt_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\be_\br_\br_\bc_\bo_\bd_\be_\b _\bU_\bS_\bE",
" _\be_\bx_\bp_\br\n"
" Calculation of derivative\n"
"\n"
" x\n"
" value of x\n"
" maxtries\n"
" maximum number of retries\n"
" maxerr\n"
" tolerance\n"
" errcode\n"
" 0 for success; otherwise calculation error\n"
" result\n"
" the result\n"
"\n"
},
{ "DIFFEQN", "COMMAND",
"_\bD_\bI_\bF_\bF_\bE_\bQ_\bN _\bx_\b0_\b,_\b _\by_\b0_\b,_\b _\bx_\bf_\b,_\b _\bm_\ba_\bx_\bs_\be_\bg_\b,_\b _\bm_\ba_\bx_\be_\br_\br_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\by_\bf_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\be_\br_\br_\bc_\bo_\bd_\be",
" _\bU_\bS_\bE_\b _\be_\bx_\bp_\br\n"
" Differential equation - Runge-Kutta method\n"
"\n"
" x0\n"
" y0\n"
" initial x,y\n"
" xf\n"
" x final\n"
" maxseg\n"
" maximum number of segments on x\n"
" maxerr\n"
" tolerance (acceptable error between the last 2 times)\n"
" errcode\n"
" 0 for success; otherwise calculation error\n"
" yf\n"
" the result\n"
"\n"
" 10. 2D Algebra\n"
"\n"
},
{ "POLYEXT", "COMMAND",
"_\bP_\bO_\bL_\bY_\bE_\bX_\bT _\bp_\bo_\bl_\by_\b(_\b)_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bx_\bm_\bi_\bn_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\by_\bm_\bi_\bn_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bx_\bm_\ba_\bx_\b,_\b _\bB_\bY_\bR_\bE_\bF",
" _\by_\bm_\ba_\bx\n"
" Returns the polyline\'s extents\n"
"\n"
},
{ "INTERSECT", "COMMAND",
"_\bI_\bN_\bT_\bE_\bR_\bS_\bE_\bC_\bT _\bA_\bx_\b,_\b _\bA_\by_\b,_\b _\bB_\bx_\b,_\b _\bB_\by_\b,_\b _\bC_\bx_\b,_\b _\bC_\by_\b,_\b _\bD_\bx_\b,_\b _\bD_\by_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bt_\by_\bp_\be_\b,_\b _\bB_\bY_\bR_\bE_\bF",
" _\bR_\bx_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bR_\by\n"
" Calculates the intersection of the two line segments A-B and\n"
" C-D\n"
"\n"
" Returns: Rx,Ry = cross\n"
"\n"
" type = cross-type\n"
"\n"
" 0\n"
" No cross (R = external cross)\n"
" 1\n"
" One cross\n"
" 2\n"
" Parallel\n"
" 3\n"
" Parallel (many crosses)\n"
" 4\n"
" The cross is one of the line segments edges.\n"
"\n"
"10.1 2D & 3D graphics transformations\n"
"\n"
" 2D & 3D graphics transformations can represented as matrices.\n"
"\n"
" (c=cose, s=sine)\n"
"\n"
},
{ "M3IDENT", "COMMAND",
"_\bM_\b3_\bI_\bD_\bE_\bN_\bT _\bB_\bY_\bR_\bE_\bF_\b _\bm_\b3_\bx_\b3",
" Resets matrix (Identity)\n"
"\n"
"| 1 0 0 |\n"
"| 0 1 0 |\n"
"| 0 0 1 |\n"
"\n"
},
{ "M3ROTATE", "COMMAND",
"_\bM_\b3_\bR_\bO_\bT_\bA_\bT_\bE _\bB_\bY_\bR_\bE_\bF_\b _\bm_\b3_\bx_\b3_\b,_\b _\ba_\bn_\bg_\bl_\be_\b _\b[_\b,_\b _\bx_\b,_\b _\by_\b]",
" Rotate by angle with center x,y\n"
"\n"
"| c s 0 |\n"
"| -s c 0 |\n"
"| * * 1 |\n"
"\n"
},
{ "M3SCALE", "COMMAND",
"_\bM_\b3_\bS_\bC_\bA_\bL_\bE _\bB_\bY_\bR_\bE_\bF_\b _\bm_\b3_\bx_\b3_\b,_\b _\bx_\b,_\b _\by_\b,_\b _\bS_\bx_\b,_\b _\bS_\by",
" Scaling\n"
"\n"
"| Sx 0 0 |\n"
"| 0 Sy 0 |\n"
"| * * 1 |\n"
"\n"
},
{ "M3TRANS", "COMMAND",
"_\bM_\b3_\bT_\bR_\bA_\bN_\bS _\bB_\bY_\bR_\bE_\bF_\b _\bm_\b3_\bx_\b3_\b,_\b _\bT_\bx_\b,_\b _\bT_\by",
" Translation\n"
"\n"
"| 1 0 0 |\n"
"| 0 1 0 |\n"
"| Tx Ty 1 |\n"
"\n"
},
{ "M3APPLY", "COMMAND",
"_\bM_\b3_\bA_\bP_\bP_\bL_\bY _\bm_\b3_\bx_\b3_\b,_\b _\bB_\bY_\bR_\bE_\bF_\b _\bp_\bo_\bl_\by",
" Apply matrice to poly-line\n"
"\n"
" Additional information:\n"
"\n"
"| 1 0 0 |\n"
"| 0 -1 0 | = reflection on x\n"
"| 0 0 1 |\n"
"\n"
"| -1 0 0 |\n"
"| 0 1 0 | = reflection on y\n"
"| 0 0 1 |\n"
"\n"
" 3D-Graphics Matrices:\n"
"\n"
"| 1 0 0 Tx |\n"
"| 0 1 0 Ty | = translation\n"
"| 0 0 1 Tz |\n"
"| 0 0 0 1 |\n"
"\n"
"| Sx 0 0 0 |\n"
"| 0 Sy 0 0 | = scaling\n"
"| 0 0 Sz 0 |\n"
"| 0 0 0 1 |\n"
"\n"
"| 1 0 0 0 |\n"
"| 0 c -s 0 | = rotation on x\n"
"| 0 s c 0 |\n"
"| 0 0 0 1 |\n"
"\n"
"| c 0 s 0 |\n"
"| 0 1 0 0 | = rotation on y\n"
"| -s 0 c 0 |\n"
"| 0 0 0 1 |\n"
"\n"
"| c -s 0 0 |\n"
"| s c 0 0 | = rotation on z\n"
"| 0 0 1 0 |\n"
"| 0 0 0 1 |\n"
"\n"
" Any change to matrix will combined with its previous value.\n"
"\n"
"DIM poly(24)\n"
"DIM M(2,2)\n"
"...\n"
"M3IDENT M\n"
"M3ROTATE M, pi/2, 0, 0\n"
"M3SCALE M, 0, 0, 1.24, 1.24\n"
"...\n"
"\' Draw the original polyline\n"
"DRAWPOLY poly\n"
"...\n"
"\' Draw the polyline\n"
"\' rotated by pi/2 from 0,0 and scaled by 1.24\n"
"M3APPLY M, poly\n"
"DRAWPOLY poly\n"
"\n"
" 11. Strings\n"
"\n"
},
{ "SPRINT", "COMMAND",
"_\bS_\bP_\bR_\bI_\bN_\bT _\bv_\ba_\br_\b;_\b _\b[_\bU_\bS_\bI_\bN_\bG_\b._\b._\b._\b;_\b]_\b _\b._\b._\b.",
" Create formated string and storing it to var The syntax is the\n"
" same with the PRINT command.\n"
"\n"
"SPRINT s; 12.34; TAB(12); 11.23;\n"
"\n"
" _\b* _\bY_\bo_\bu_\b _\bc_\ba_\bn_\b _\bu_\bs_\be_\b _\b\'_\bU_\bS_\bG_\b\'_\b _\bi_\bn_\bs_\bt_\be_\ba_\bd_\b _\bo_\bf_\b _\b\'_\bU_\bS_\bI_\bN_\bG_\b\'_\b.\n"
"\n"
},
{ "SINPUT", "COMMAND",
"_\bS_\bI_\bN_\bP_\bU_\bT _\bs_\br_\bc_\b;_\b _\bv_\ba_\br_\b _\b[_\b,_\b _\bd_\be_\bl_\bi_\bm_\b]_\b _\b[_\b,_\bv_\ba_\br_\b _\b[_\b,_\b _\bd_\be_\bl_\bi_\bm_\b]_\b]_\b _\b._\b._\b.",
" Splits the string \'src\' into variables which are separated by\n"
" delimiters.\n"
"\n"
"SINPUT \"if x>1 then y\"; vif, \" \", vcond, \"then\", vdo\n"
"? vcond, vdo\n"
"\' result in monitor\n"
"\' x>1 y\n"
"\n"
},
{ "SPLIT", "COMMAND",
"_\bS_\bP_\bL_\bI_\bT _\bs_\bt_\br_\bi_\bn_\bg_\b,_\b _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br_\bs_\b,_\b _\bw_\bo_\br_\bd_\bs_\b(_\b)_\b _\b[_\b,_\b _\bp_\ba_\bi_\br_\bs_\b]_\b _\b[_\bU_\bS_\bE_\b _\be_\bx_\bp_\br_\b]",
" Returns the words of the specified string into array \'words\'\n"
"\n"
" Example:\n"
"\n"
"s=\"/etc/temp/filename.ext\"\n"
"SPLIT s, \"/.\", v()\n"
"FOR i=0 TO UBOUND(v)\n"
" PRINT i;\" [\";v(i);\"]\"\n"
"NEXT\n"
"\'\n"
"displays:\n"
"0 []\n"
"1 [etc]\n"
"2 [temp]\n"
"3 [filename]\n"
"4 [ext]\n"
"\n"
},
{ "JOIN", "COMMAND",
"_\bJ_\bO_\bI_\bN _\bw_\bo_\br_\bd_\bs_\b(_\b)_\b,_\b _\bd_\be_\bl_\bi_\bm_\bi_\bt_\be_\br_\bs_\b,_\b _\bs_\bt_\br_\bi_\bn_\bg",
" Returns the words of the specified string into array \'words\'\n"
"\n"
" Example:\n"
"\n"
"s=\"/etc/temp/filename.ext\"\n"
"SPLIT s, \"/.\", v()\n"
"JOIN v(), \"/\", s\n"
"PRINT \"[\";s;\"]\"\n"
"\'\n"
"displays:\n"
"[/etc/temp/filename/ext]\n"
"\n"
" 12. Console\n"
"\n"
"12.1 Supported console codes\n"
"\n"
" _\b* _\b\\_\be_\b _\b=_\b _\bC_\bH_\bR_\b(_\b2_\b7_\b)\n"
"\n"
" \\t tab (32 pixels)\n"
" \\a beep\n"
" \\r\\n new line (cr/lf)\n"
" \\xC clear screen\n"
" \\e[K clear to EOL\n"
" \\e[nG moves cursor to specified column\n"
" \\e[0m reset all attributes to their defaults\n"
" \\e[1m set bold on\n"
" \\e[4m set underline on\n"
" \\e[7m reverse video\n"
" \\e[21m set bold off\n"
" \\e[24m set underline off\n"
" \\e[27m set reverse off\n"
" \\e[3nm set foreground\n"
" color. where n:\n"
" 0 black\n"
" 1 red\n"
" 2 green\n"
" 3 brown\n"
" 4 blue\n"
" 5 magenta\n"
" 6 cyan\n"
" 7 white\n"
" \\e[4nm set background color.\n"
" (see set foreground)\n"
"\n"
" PalmOS only:\n"
"\n"
" \\e[8nm (n=0..7) select system font\n"
" \\e[9nm (n=0..3) select buildin font\n"
"\n"
" eBookMan only:\n"
"\n"
" \\e[50m select 9pt font\n"
" \\e[51m select 12pt font\n"
" \\e[52m select 16pt font\n"
" \\e[nT move to n/80th screen character position\n"
"\n"
"12.2 Console Commands\n"
"\n"
},
{ "PRINT", "COMMAND",
"_\bP_\bR_\bI_\bN_\bT _\b[_\bU_\bS_\bI_\bN_\bG_\b _\b[_\bf_\bo_\br_\bm_\ba_\bt_\b]_\b;_\b]_\b _\b[_\be_\bx_\bp_\br_\b|_\bs_\bt_\br_\b _\b[_\b{_\b,_\b|_\b;_\b}_\b _\b[_\be_\bx_\bp_\br_\b|_\bs_\bt_\br_\b]_\b]_\b _\b._\b._\b.",
" Displays a text or the value of an expression.\n"
"\n"
" _\bP_\bR_\bI_\bN_\bT_\b _\bS_\bE_\bP_\bA_\bR_\bA_\bT_\bO_\bR_\bS\n"
"\n"
" TAB(n) Moves cursor position to the nth column.\n"
" SPC(n) Prints a number of spaces specified by n.\n"
" ; Carriage return/line feed suppressed after printing.\n"
" , Carriage return/line feed suppressed after printing.\n"
" A TAB character is placed.\n"
"\n"
" _\bT_\bh_\be_\b _\bP_\bR_\bI_\bN_\bT_\b _\bU_\bS_\bI_\bN_\bG\n"
"\n"
" Print USING, is using the FORMAT() to display numbers and\n"
" strings. Unlike the FORMAT, this one can include literals,\n"
" too.\n"
"\n"
" _ Print next character as a literal. The combination _#, for\n"
" example, allows you to include a number sign as a literal\n"
" in your numeric format.\n"
" [other] Characters other than the foregoing may be included as\n"
" literals in the format string.\n"
"\n"
" _\b* _\bW_\bh_\be_\bn_\b _\ba_\b _\bP_\bR_\bI_\bN_\bT_\b _\bU_\bS_\bI_\bN_\bG_\b _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b _\bi_\bs_\b _\be_\bx_\be_\bc_\bu_\bt_\be_\bd_\b _\bt_\bh_\be_\b _\bf_\bo_\br_\bm_\ba_\bt_\b _\bw_\bi_\bl_\bl\n"
" _\br_\be_\bm_\ba_\bi_\bn_\bs_\b _\bo_\bn_\b _\bt_\bh_\be_\b _\bm_\be_\bm_\bo_\br_\by_\b _\bu_\bn_\bt_\bi_\bl_\b _\ba_\b _\bn_\be_\bw_\b _\bf_\bo_\br_\bm_\ba_\bt_\b _\bi_\bs_\b _\bp_\ba_\bs_\bs_\be_\bd_\b._\b _\bC_\ba_\bl_\bl_\bi_\bn_\bg_\b _\ba\n"
" _\bP_\bR_\bI_\bN_\bT_\b _\bU_\bS_\bI_\bN_\bG_\b _\bw_\bi_\bt_\bh_\bo_\bu_\bt_\b _\ba_\b _\bn_\be_\bw_\b _\bf_\bo_\br_\bm_\ba_\bt_\b _\bs_\bp_\be_\bc_\bi_\bf_\bi_\be_\bd_\b _\bt_\bh_\be_\b _\bP_\bR_\bI_\bN_\bT_\b _\bw_\bi_\bl_\bl_\b _\bu_\bs_\be\n"
" _\bt_\bh_\be_\b _\bf_\bo_\br_\bm_\ba_\bt_\b _\bo_\bf_\b _\bp_\br_\be_\bv_\bi_\bo_\bu_\bs_\b _\bc_\ba_\bl_\bl_\b.\n"
"\n"
" Examples:\n"
"\n"
"PRINT USING \"##: #,###,##0.00\";\n"
"FOR i=0 TO 20\n"
" PRINT USING; i+1, A(i)\n"
"NEXT\n"
"....\n"
"PRINT USING \"Total ###,##0 of \\ \\\"; number, \"bytes\"\n"
"\n"
" _\b* _\bT_\bh_\be_\b _\bs_\by_\bm_\bb_\bo_\bl_\b _\b?_\b _\bc_\ba_\bn_\b _\bb_\be_\b _\bu_\bs_\be_\bd_\b _\bi_\bn_\bs_\bt_\be_\ba_\bd_\b _\bo_\bf_\b _\bk_\be_\by_\bw_\bo_\br_\bd_\b _\bP_\bR_\bI_\bN_\bT_\b _\bY_\bo_\bu_\b _\bc_\ba_\bn\n"
" _\bu_\bs_\be_\b _\b\'_\bU_\bS_\bG_\b\'_\b _\bi_\bn_\bs_\bt_\be_\ba_\bd_\b _\bo_\bf_\b _\b\'_\bU_\bS_\bI_\bN_\bG_\b\'_\b.\n"
"\n"
},
{ "INPUT", "COMMAND",
"_\bI_\bN_\bP_\bU_\bT _\b[_\bp_\br_\bo_\bm_\bp_\bt_\b _\b{_\b,_\b|_\b;_\b}_\b]_\b _\bv_\ba_\br_\b[_\b,_\b _\bv_\ba_\br_\b _\b[_\b,_\b _\b._\b._\b._\b]_\b]",
" Reads from \"keyboard\" a text and store it to variable.\n"
"\n"
},
{ "LINPUT", "COMMAND",
"_\bL_\bI_\bN_\bP_\bU_\bT _\bv_\ba_\br",
"\n"
},
{ "LINEINPUT", "COMMAND",
"_\bL_\bI_\bN_\bE_\bI_\bN_\bP_\bU_\bT _\bv_\ba_\br",
"\n"
},
{ "LINE", "COMMAND",
"_\bL_\bI_\bN_\bE_\b _\bI_\bN_\bP_\bU_\bT _\bv_\ba_\br",
" Reads a whole text line from console.\n"
"\n"
},
{ "CLS", "COMMAND",
"_\bC_\bL_\bS",
" Clears the screen.\n"
"\n"
},
{ "AT", "COMMAND",
"_\bA_\bT _\bx_\b,_\b _\by",
" Moves the console cursor to the specified position. x,y are in\n"
" pixels\n"
"\n"
},
{ "LOCATE", "COMMAND",
"_\bL_\bO_\bC_\bA_\bT_\bE _\by_\b,_\b _\bx",
" Moves the console cursor to the specified position. x,y are in\n"
" character cells.\n"
"\n"
" A. Interactive Mode\n"
"\n"
" Like a shell, SB can run interactively. The _\bI_\bn_\bt_\be_\br_\ba_\bc_\bt_\bi_\bv_\be_\b _\bM_\bo_\bd_\be offers\n"
" an old-style coding taste. Also, it is offers a quick editing/testing\n"
" tool for console mode versions of SB.\n"
"\n"
" The _\bI_\bn_\bt_\be_\br_\ba_\bc_\bt_\bi_\bv_\be_\b _\bM_\bo_\bd_\be can be used as a normal command-line _\bs_\bh_\be_\bl_\bl. It\n"
" executes shell commands as a normal shell, but also, it can\n"
" store/edit and run SB programs. However we _\bs_\bu_\bg_\bg_\be_\bs_\bt_\b _\bt_\bo_\b _\bu_\bs_\be_\b _\ba_\bn_\b _\be_\bd_\bi_\bt_\bo_\br.\n"
"\n"
" * We can use the [TAB] for autocompletion (re-edit program lines or\n"
" filename completition).\n"
" * We can use [ARROWS] for history.\n"
" * There is no need to type line numbers, there will be inserted\n"
" automagically if you use \'+\' in the beginning of the line.\n"
" * There is no need to type line numbers, use NUM.\n"
" * Line numbers are not labels, are used only for editing. Use\n"
" keyword LABEL to define a label.\n"
" * Line numbers are not saved in files.\n"
"\n"
"A.1 Interactive Mode Commands\n"
"\n"
},
{ "HELP", "COMMAND",
"_\bH_\bE_\bL_\bP _\b[_\bs_\bb_\b-_\bk_\be_\by_\bw_\bo_\br_\bd_\b]",
" Interactive mode help screen. The symbol \'?\' does the same.\n"
"\n"
},
{ "BYE", "COMMAND",
"_\bB_\bY_\bE",
"\n"
},
{ "QUIT", "COMMAND",
"_\bQ_\bU_\bI_\bT",
"\n"
},
{ "EXIT", "COMMAND",
"_\bE_\bX_\bI_\bT",
" The BYE command ends SmallBASIC and returns the control to the\n"
" Operating System.\n"
"\n"
},
{ "NEW", "COMMAND",
"_\bN_\bE_\bW",
" The NEW command clears the memory and screen and prepares the\n"
" computer for a new program. Be sure to save the program that\n"
" you have been working on before you enter NEW as it is\n"
" unrecoverable by any means once NEW has been entered.\n"
"\n"
},
{ "RUN", "COMMAND",
"_\bR_\bU_\bN _\b[_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be_\b]",
" The RUN command, which can also be used as a statement, starts\n"
" program execution.\n"
"\n"
},
{ "CLS", "COMMAND",
"_\bC_\bL_\bS",
" Clears the screen.\n"
"\n"
},
{ "LIST", "COMMAND",
"_\bL_\bI_\bS_\bT _\b{_\b _\b[_\bs_\bt_\ba_\br_\bt_\b-_\bl_\bi_\bn_\be_\b]_\b _\b-_\b _\b[_\be_\bn_\bd_\b-_\bl_\bi_\bn_\be_\b]_\b _\b}",
" The LIST command allows you to display program lines. If LIST\n"
" is entered with no numbers following it, the entire program in\n"
" memory is listed. If a number follows the LIST, the line with\n"
" that number is listed. If a number followed by hyphen follows\n"
" LIST, that line and all lines following it are listed. If a\n"
" number preceeded by a hyphen follows LIST, all lines\n"
" preceeding it and that line are listed. If two numbers\n"
" separated by a hyphen follow LIST, the indicated lines and all\n"
" lines between them are listed.\n"
"\n"
},
{ "RENUM", "COMMAND",
"_\bR_\bE_\bN_\bU_\bM _\b{_\b _\b[_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\b-_\bl_\bi_\bn_\be_\b]_\b _\b[_\b,_\b]_\b _\b[_\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\b]_\b _\b}",
" The RENUM command allows you to reassign line numbers.\n"
"\n"
},
{ "ERA", "COMMAND",
"_\bE_\bR_\bA _\b{_\b _\b[_\bs_\bt_\ba_\br_\bt_\b-_\bl_\bi_\bn_\be_\b]_\b _\b-_\b _\b[_\be_\bn_\bd_\b-_\bl_\bi_\bn_\be_\b]_\b _\b}",
" The ERA command allows you to erase program lines. If ERA is\n"
" entered with no numbers following it, the entire program in\n"
" memory is erased. If a number follows the ERA, the line with\n"
" that number is erased. If a number followed by hyphen follows\n"
" ERA, that line and all lines following it are erased. If a\n"
" number preceeded by a hyphen follows ERA, all lines preceeding\n"
" it and that line are erased. If two numbers separated by a\n"
" hyphen follow ERA, the indicated lines and all lines between\n"
" them are erased.\n"
"\n"
},
{ "NUM", "COMMAND",
"_\bN_\bU_\bM _\b[_\bi_\bn_\bi_\bt_\bi_\ba_\bl_\b-_\bl_\bi_\bn_\be_\b _\b[_\b,_\b _\bi_\bn_\bc_\br_\be_\bm_\be_\bn_\bt_\b]_\b]",
" The NUM command sets the values for the autonumbering. If the\n"
" \'initial-line\' and \'increment\' are not specified, the line\n"
" numbers start at 10 and increase in increments of 10.\n"
"\n"
},
{ "SAVE", "COMMAND",
"_\bS_\bA_\bV_\bE _\bp_\br_\bo_\bg_\br_\ba_\bm_\b-_\bn_\ba_\bm_\be",
" The SAVE command allows you to copy the program in memory to a\n"
" file. By using the LOAD command, you can later recall the\n"
" program into memory.\n"
"\n"
},
{ "LOAD", "COMMAND",
"_\bL_\bO_\bA_\bD _\bp_\br_\bo_\bg_\br_\ba_\bm_\b-_\bn_\ba_\bm_\be",
" The LOAD command loads \'program-name\' file into memory. The\n"
" program must first have been put on file using the SAVE\n"
" command. LOAD removes the program currently in memory before\n"
" loading \'program-name\'.\n"
"\n"
},
{ "MERGE", "COMMAND",
"_\bM_\bE_\bR_\bG_\bE _\bp_\br_\bo_\bg_\br_\ba_\bm_\b-_\bn_\ba_\bm_\be_\b,_\b _\bl_\bi_\bn_\be_\b-_\bn_\bu_\bm_\bb_\be_\br",
" The MERGE command merges lines in \'program-name\' file into the\n"
" program lines already in the computer\'s memory. Use\n"
" \'line-number\' to specify the position where the lines will be\n"
" inserted.\n"
"\n"
},
{ "CD", "COMMAND",
"_\bC_\bD _\b[_\bp_\ba_\bt_\bh_\b]",
" Changed the current directory. Without arguments, displays the\n"
" current directory.\n"
"\n"
},
{ "DIR", "COMMAND",
"_\bD_\bI_\bR _\b[_\br_\be_\bg_\be_\bx_\bp_\b]",
"\n"
},
{ "DIRE", "COMMAND",
"_\bD_\bI_\bR_\bE _\b[_\br_\be_\bg_\be_\bx_\bp_\b]",
"\n"
},
{ "DIRD", "COMMAND",
"_\bD_\bI_\bR_\bD _\b[_\br_\be_\bg_\be_\bx_\bp_\b]",
"\n"
},
{ "DIRB", "COMMAND",
"_\bD_\bI_\bR_\bB _\b[_\br_\be_\bg_\be_\bx_\bp_\b]",
" Displays the list of files. You can use DIRE for executables\n"
" only or DIRD for directories only, or DIRB for BASIC sources.\n"
"\n"
},
{ "TYPE", "COMMAND",
"_\bT_\bY_\bP_\bE _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be",
" Displays the contents of the file.\n"
"\n"
" B. MySQL Module\n"
"\n"
},
{ "MYSQL.DISCONNECT", "COMMAND",
"_\bM_\bY_\bS_\bQ_\bL_\b._\bD_\bI_\bS_\bC_\bO_\bN_\bN_\bE_\bC_\bT _\bh_\ba_\bn_\bd_\bl_\be",
" Disconnects\n"
"\n"
},
{ "MYSQL.USE", "COMMAND",
"_\bM_\bY_\bS_\bQ_\bL_\b._\bU_\bS_\bE _\bh_\ba_\bn_\bd_\bl_\be_\b,_\b _\bd_\ba_\bt_\ba_\bb_\ba_\bs_\be",
" Changes the current database\n"
"\n"
" Example:\n"
"\n"
"import mysql\n"
"\n"
"h = mysql.connect(\"localhost\", \"mydatabase\", \"user\", \"password\")\n"
"? \"Handle = \"; h\n"
"? \"DBS = \"; mysql.dbs(h)\n"
"? \"TABLES = \"; mysql.tables(h)\n"
"? \"Query = \"; mysql.query(h, \"SELECT * FROM sbx_counters\")\n"
"mysql.disconnect h\n"
"\n"
" C. GDBM Module\n"
"\n"
" Example:\n"
"\n"
"import gdbm\n"
"\n"
"const GDBM_WRCREAT = 2 \' A writer. Create the db if needed.\n"
"\n"
"\' TEST\n"
"h = gdbm.open(\"dbtest.db\", 512, GDBM_WRCREAT, 0o666)\n"
"? \"Handle = \"; h\n"
"? \"Store returns = \"; gdbm.store(h, \"key1\", \"data1....\")\n"
"? \"Store returns = \"; gdbm.store(h, \"key2\", \"data2....\")\n"
"? \"Fetch returns = \"; gdbm.fetch(h, \"key1\")\n"
"gdbm.close h\n"
"\n"
" D. Limits\n"
"\n"
"D.1 Typical 32bit system\n"
"\n"
" Bytecode size 4 GB\n"
" Length of text lines 4095 characters\n"
" User-defined keyword length 128 characters\n"
" Maximum number of parameters 256\n"
" Numeric value range 64 bit FPN (-/+ 1E+308)\n"
" Maximum string size 2 GB\n"
" Number of file handles 256\n"
" Number of array-dimensions 6\n"
" Number of colors 24 bit (0-15=VGA, <0=RGB)\n"
" Background sound queue size 256 notes\n"
" INPUT (console) 1023 characters per call, up to 16 variables\n"
" COMMAND$ 1023 bytes\n"
"\n"
" System events are checked every 50ms\n"
"\n"
"D.2 PalmOS (Typical 16bit system)\n"
"\n"
" Length of text lines 511 characters\n"
" Maximum number of parameters 32\n"
" User-defined keyword length 32 characters\n"
" Number of array-dimensions 3\n"
" Maximum string size <32 KB\n"
" Number of file handles 16\n"
" Number of elements/array 2970 (that means 64KB of memory)\n"
" Bytecode size <64 KB (by using CHAIN you can run progs > 64KB)\n"
" INPUT (console) 255 characters per call, up to 16 variables\n"
" COMMAND$ 127 bytes\n"
"\n"
" E. Writting Modules\n"
"\n"
" * Modules are working only at Linux for now *\n"
"\n"
" Modules are dynamic-linked libraries. The modules are \"connected\"\n"
" with the SmallBASIC with a two-way style. That means, the module can\n"
" execute functions of SB\'s library.\n"
"\n"
" Module programmers will need to use variable\'s API to process\n"
" parameters, and return values. Also, the device\'s API must be used\n"
" because SB can run in different environments, of course module\n"
" authors can use other C or other-lib functions to do their jobs.\n"
"\n"
" Every module must implements the following C functions.\n"
" _\bi_\bn_\bt_\b _\bs_\bb_\bl_\bi_\bb_\b__\bp_\br_\bo_\bc_\b__\bc_\bo_\bu_\bn_\bt_\b(_\b)\n"
" Returns the number of procedures of the module.\n"
" _\bi_\bn_\bt_\b _\bs_\bb_\bl_\bi_\bb_\b__\bf_\bu_\bn_\bc_\b__\bc_\bo_\bu_\bn_\bt_\b(_\b)\n"
" Returns the number of functions of the module.\n"
" _\bi_\bn_\bt_\b _\bs_\bb_\bl_\bi_\bb_\b__\bp_\br_\bo_\bc_\b__\bg_\be_\bt_\bn_\ba_\bm_\be_\b(_\bi_\bn_\bt_\b _\bi_\bn_\bd_\be_\bx_\b,_\b _\bc_\bh_\ba_\br_\b _\b*_\bn_\ba_\bm_\be_\b)\n"
" Fills the \'name\' variable with the name of the \'index\'-th\n"
" procedure. Returns 1 on success or 0 on error.\n"
" _\bi_\bn_\bt_\b _\bs_\bb_\bl_\bi_\bb_\b__\bf_\bu_\bn_\bc_\b__\bg_\be_\bt_\bn_\ba_\bm_\be_\b(_\bi_\bn_\bt_\b _\bi_\bn_\bd_\be_\bx_\b,_\b _\bc_\bh_\ba_\br_\b _\b*_\bn_\ba_\bm_\be_\b)\n"
" Fills the \'name\' variable with the name of the \'index\'-th\n"
" function. Returns 1 on success or 0 on error.\n"
" _\bi_\bn_\bt_\b _\bs_\bb_\bl_\bi_\bb_\b__\bp_\br_\bo_\bc_\b__\be_\bx_\be_\bc_\b(_\bi_\bn_\bt_\b _\bi_\bn_\bd_\be_\bx_\b,_\b _\bi_\bn_\bt_\b _\bp_\ba_\br_\ba_\bm_\b__\bc_\bo_\bu_\bn_\bt_\b,_\b _\bs_\bl_\bi_\bb_\b__\bp_\ba_\br_\b__\bt_\b _\b*_\bp_\ba_\br_\ba_\bm_\bs_\b,\n"
" _\bv_\ba_\br_\b__\bt_\b _\b*_\br_\be_\bt_\bv_\ba_\bl_\b)\n"
" Executes the \'index\' procedure. Returns 1 on success or 0 on\n"
" error.\n"
" _\bi_\bn_\bt_\b _\bs_\bb_\bl_\bi_\bb_\b__\bf_\bu_\bn_\bc_\b__\be_\bx_\be_\bc_\b(_\bi_\bn_\bt_\b _\bi_\bn_\bd_\be_\bx_\b,_\b _\bi_\bn_\bt_\b _\bp_\ba_\br_\ba_\bm_\b__\bc_\bo_\bu_\bn_\bt_\b,_\b _\bs_\bl_\bi_\bb_\b__\bp_\ba_\br_\b__\bt_\b _\b*_\bp_\ba_\br_\ba_\bm_\bs_\b,\n"
" _\bv_\ba_\br_\b__\bt_\b _\b*_\br_\be_\bt_\bv_\ba_\bl_\b)\n"
" Executes the \'index\' function. Returns 1 on success or 0 on\n"
" error.\n"
"\n"
" The slib_par_t structure contains two fields. The var_p which is a\n"
" var_t structure (a SB variable), and the byref which is true if the\n"
" variable can be used as by-reference.\n"
"\n"
"E.1 Variables API\n"
"\n"
" Variables had 4 types. This type is described in .type field.\n"
"\n"
" Values of .type\n"
" V_STR\n"
" String. The value can be accessed at .v.p.ptr.\n"
" V_INT\n"
" Integer. The value can be accessed at .v.i.\n"
" V_REAL\n"
" Real-number. The value can be accessed at .v.n.\n"
" V_ARRAY\n"
" Array. The .v.a.ptr is the data pointer (sizeof(var_t) *\n"
" size). The .v.a.size is the number of elements. The\n"
" .v.a.lbound[MAXDIM] is the lower bound values. The\n"
" .v.a.ubound[MAXDIM] is the upper bound values. The .v.a.maxdim\n"
" is the number of dimensions.\n"
"\n"
" Example:\n"
"\n"
"/*\n"
"* Displays variable data.\n"
"* If the variable is an array, then this function\n"
"* runs recursive, and the \'level\' parameter is used.\n"
"*/\n"
"static void print_variable(int level, var_t *variable)\n"
"{\n"
" int i;\n"
"\n"
" /* if recursive; place tabs */\n"
" for ( i = 0; i < level; i ++ )\n"
" dev_printf(\"\\t\");\n"
"\n"
" /* print variable */\n"
" switch ( variable->type ) {\n"
" case V_STR:\n"
" dev_printf(\"String =\\\"%s\\\"\\n\", variable->v.p.ptr);\n"
" break;\n"
" case V_INT:\n"
" dev_printf(\"Integer = %ld\\n\", variable->v.i);\n"
" break;\n"
" case V_REAL:\n"
" dev_printf(\"Real = %.2f\\n\", variable->v.n);\n"
" break;\n"
" case V_ARRAY:\n"
" dev_printf(\"Array of %d elements\\n\", variable->v.a.size);\n"
" for ( i = 0; i < variable->v.a.size; i ++ ) {\n"
" var_t *element_p;\n"
"\n"
" element_p = (var_t *) (variable->v.a.ptr + sizeof(var_t) * i);\n"
" print_variable(level+1, element_p);\n"
" }\n"
" break;\n"
" }\n"
"}\n"
"\n"
" E.1.1 Gereric\n"
"\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bf_\br_\be_\be_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b)\n"
" This function resets the variable to 0 integer.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bf_\br_\be_\be_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b)\n"
" This function deletes the contents of varible var.\n"
" _\bv_\ba_\br_\b__\bt_\b*_\b _\bv_\b__\bn_\be_\bw_\b(_\b)\n"
" Creates a new variable and returns it. The returned variable\n"
" it must be freed with both, v_free() and free() functions.\n"
" _\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\b__\bc_\bl_\bo_\bn_\be_\b(_\bc_\bo_\bn_\bs_\bt_\b _\bv_\ba_\br_\b__\bt_\b _\b*_\bs_\bo_\bu_\br_\bc_\be_\b)\n"
" Returns a new variable which is a clone of source. The\n"
" returned variable it must be freed with both, v_free() and\n"
" free() functions.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bd_\be_\bs_\bt_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bv_\ba_\br_\b__\bt_\b _\b*_\bs_\br_\bc_\b)\n"
" Copies the src to dest.\n"
"\n"
" Example\n"
"\n"
"void myfunc()\n"
"{\n"
" var_t myvar;\n"
"\n"
" v_init(&myvar);\n"
" ...\n"
" v_free(&myvar);\n"
"}\n"
"\n"
" E.1.2 Real Numbers\n"
"\n"
" _\bd_\bo_\bu_\bb_\bl_\be_\b _\bv_\b__\bg_\be_\bt_\br_\be_\ba_\bl_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\b)\n"
" Returns the floating-point value of a variable. if variable is\n"
" string it will converted to double.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\br_\be_\ba_\bl_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\bn_\bu_\bm_\bb_\be_\br_\b)\n"
" Sets the number real-number value to var variable.\n"
"\n"
" E.1.3 Integer Numbers\n"
"\n"
" _\bd_\bo_\bu_\bb_\bl_\be_\b _\bv_\b__\bi_\bg_\be_\bt_\bn_\bu_\bm_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\b)\n"
" Returns the floating-point value of a variable. if variable is\n"
" string it will converted to double.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\bi_\bn_\bt_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bi_\bn_\bt_\b3_\b2_\b _\bn_\bu_\bm_\bb_\be_\br_\b)\n"
" Sets the number integer-number value to var variable.\n"
"\n"
" E.1.4 Strings\n"
"\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bt_\bo_\bs_\bt_\br_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\ba_\br_\bg_\b)\n"
" Converts variable arg to string.\n"
" _\bc_\bh_\ba_\br_\b*_\b _\bv_\b__\bg_\be_\bt_\bs_\bt_\br_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b)\n"
" Returns the string-pointer of variable var. If the var is not\n"
" a string, it must be converted to string with the v_tostr()\n"
" function.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bz_\be_\br_\bo_\bs_\bt_\br_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b)\n"
" Resets the variable var to a zero-length string.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\bs_\bt_\br_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bc_\bh_\ba_\br_\b _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b)\n"
" Sets the string value string to the variable var.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\bt_\br_\bc_\ba_\bt_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bc_\bh_\ba_\br_\b _\b*_\bs_\bt_\br_\bi_\bn_\bg_\b)\n"
" Adds the string string to string-variable var.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\bs_\bt_\br_\bf_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bc_\bo_\bn_\bs_\bt_\b _\bc_\bh_\ba_\br_\b _\b*_\bf_\bm_\bt_\b,_\b _\b._\b._\b._\b)\n"
" Sets a string value to variable var using printf() style. The\n"
" buffer size is limited to 1KB for OS_LIMITED (PalmOS),\n"
" otherwise 64kB.\n"
"\n"
" E.1.5 Arrays\n"
"\n"
" SB arrays are always one-dimension. The multiple dimensions positions\n"
" are calculated at run-time. Each element of the arrays is a `var_t\'\n"
" object.\n"
"\n"
" _\bv_\ba_\br_\b__\bt_\b*_\b _\bv_\b__\be_\bl_\be_\bm_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\ba_\br_\br_\ba_\by_\b,_\b _\bi_\bn_\bt_\b _\bi_\bn_\bd_\be_\bx_\b)\n"
" Returns the variable pointer of the element index of the\n"
" array. index is a zero-based, one dimention, index.\n"
" _\bi_\bn_\bt_\b _\bv_\b__\ba_\bs_\bi_\bz_\be_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\ba_\br_\br_\ba_\by_\b)\n"
" Returns the number of the elements of the array.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\br_\be_\bs_\bi_\bz_\be_\b__\ba_\br_\br_\ba_\by_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\ba_\br_\br_\ba_\by_\b,_\b _\bi_\bn_\bt_\b _\bs_\bi_\bz_\be_\b)\n"
" Resizes the 1-dimention array.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bt_\bo_\bm_\ba_\bt_\br_\bi_\bx_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bi_\bn_\bt_\b _\br_\b,_\b _\bi_\bn_\bt_\b _\bc_\b)\n"
" Converts the variable var to an array of r rows and c columns.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bt_\bo_\ba_\br_\br_\ba_\by_\b1_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bi_\bn_\bt_\b _\bn_\b)\n"
" Converts the variable var to an array of n elements.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\bi_\bn_\bt_\ba_\br_\br_\ba_\by_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bi_\bn_\bt_\b3_\b2_\b _\b*_\bi_\bt_\ba_\bb_\bl_\be_\b,_\b _\bi_\bn_\bt_\b _\bc_\bo_\bu_\bn_\bt_\b)\n"
" Makes variable var an integer array of count elements. The\n"
" values are specified in itable.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\br_\be_\ba_\bl_\ba_\br_\br_\ba_\by_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bd_\bo_\bu_\bb_\bl_\be_\b _\b*_\br_\bt_\ba_\bb_\bl_\be_\b,_\b _\bi_\bn_\bt_\b _\bc_\bo_\bu_\bn_\bt_\b)\n"
" Makes variable var a real-number array of count elements. The\n"
" values are specified in rtable.\n"
" _\bv_\bo_\bi_\bd_\b _\bv_\b__\bs_\be_\bt_\bs_\bt_\br_\ba_\br_\br_\ba_\by_\b(_\bv_\ba_\br_\b__\bt_\b _\b*_\bv_\ba_\br_\b,_\b _\bc_\bh_\ba_\br_\b _\b*_\b*_\bc_\bt_\ba_\bb_\bl_\be_\b,_\b _\bi_\bn_\bt_\b _\bc_\bo_\bu_\bn_\bt_\b)\n"
" Makes variable var a string array of count elements. The\n"
" values (which are copied) are specified in ctable.\n"
"\n"
" Example\n"
"\n"
"void myfunc()\n"
"{\n"
" int c_array[] = { 10, 20, 30 };\n"
" var_t myvar;\n"
"\n"
" v_init(&myvar);\n"
" v_setintarray(&myvar, c_array, 3);\n"
" v_free(&myvar);\n"
"}\n"
"\n"
"E.2 Typical Module Source\n"
"\n"
" This is a typical example of a module with one Function and and one\n"
" Command. The command \"CMDA\" displays its parameters, and the function\n"
" \"FUNCA\" returns a string.\n"
"\n"
" --- mymod.c ---\n"
"\n"
"#include <extlib.h>\n"
"\n"
"/*\n"
"* Displays variable data.\n"
"* If the variable is an array, then runs recursive, the\n"
"* \'level\' parameter is the call level.\n"
"*/\n"
"static void print_variable(int level, var_t *param)\n"
"{\n"
" int i;\n"
"\n"
" /* if recursive; place tabs */\n"
" for ( i = 0; i < level; i ++ )\n"
" dev_printf(\"\\t\");\n"
"\n"
" /* print variable */\n"
" switch ( param->type ) {\n"
" case V_STR:\n"
" dev_printf(\"String =\\\"%s\\\"\\n\", param->v.p.ptr);\n"
" break;\n"
" case V_INT:\n"
" dev_printf(\"Integer = %ld\\n\", param->v.i);\n"
" break;\n"
" case V_REAL:\n"
" dev_printf(\"Real = %.2f\\n\", param->v.n);\n"
" break;\n"
" case V_ARRAY:\n"
" dev_printf(\"Array of %d elements\\n\", param->v.a.size);\n"
" for ( i = 0; i < param->v.a.size; i ++ ) {\n"
" var_t *element_p;\n"
"\n"
" element_p = (var_t *) (param->v.a.ptr + sizeof(var_t) * i);\n"
" print_variable(level+1, element_p);\n"
" }\n"
" break;\n"
" }\n"
"}\n"
"\n"
"/* typical command */\n"
"void m_cmdA(int param_count, slib_par_t *params, var_t *retval)\n"
"{\n"
" int i;\n"
"\n"
" for ( i = 0; i < param_count; i ++ ) {\n"
" param = params[i].var_p;\n"
" print_variable(0, param);\n"
" }\n"
"}\n"
"\n"
"/* typical function */\n"
"int m_funcA(int param_count, slib_par_t *params, var_t *retval)\n"
"{\n"
" v_setstr(retval, \"funcA() works!\");\n"
" return 1; /* success */\n"
"}\n"
"\n"
"/* the node-type of function/procedure tables */\n"
"typedef struct {\n"
" char *name; /* the name of the function */\n"
" int (*command)(slib_par_t *, int, var_t *);\n"
" } mod_kw;\n"
"\n"
"/* functions table */\n"
"static mod_kw func_names[] =\n"
"{\n"
"{ \"FUNCA\", m_funcA }, // function A\n"
"{ NULL, NULL }\n"
"};\n"
"\n"
"/* commands table */\n"
"static mod_kw proc_names[] =\n"
"{\n"
"{ \"CMDA\", m_cmdA }, // command A\n"
"{ NULL, NULL }\n"
"};\n"
"\n"
"/* returns the number of the procedures */\n"
"int sblib_proc_count(void)\n"
"{\n"
" int i;\n"
"\n"
" for ( i = 0; proc_names[i].name; i ++ );\n"
" return i;\n"
"}\n"
"\n"
"/* returns the number of the functions */\n"
"int sblib_func_count(void)\n"
"{\n"
" int i;\n"
"\n"
" for ( i = 0; func_names[i].name; i ++ );\n"
" return i;\n"
"}\n"
"\n"
"/* returns the \'index\' procedure name */\n"
"int sblib_proc_getname(int index, char *proc_name)\n"
"{\n"
" strcpy(proc_name, proc_names[index].name);\n"
" return 1;\n"
"}\n"
"\n"
"/* returns the \'index\' function name */\n"
"int sblib_func_getname(int index, char *proc_name)\n"
"{\n"
" strcpy(proc_name, func_names[index].name);\n"
" return 1;\n"
"}\n"
"\n"
"/* execute the \'index\' procedure */\n"
"int sblib_proc_exec(int index, int param_count,\n"
" slib_par_t *params, var_t *retval)\n"
"{ return proc_names[index].command(params, param_count, retval); }\n"
"\n"
"/* execute the \'index\' function */\n"
"int sblib_func_exec(int index, int param_count,\n"
" slib_par_t *params, var_t *retval)\n"
"{ return func_names[index].command(params, param_count, retval); }\n"
"\n"
"E.3 Typical Module Makefile\n"
"\n"
" This is a typical Makefile. In our example the module name is \'mymod\'\n"
" and its source is the \'mymod.c\'. Also, our module is requires the\n"
" \'mysqlclient\' library to be linked together.\n"
"\n"
" The variables of Makefile\n"
" MODNAME\n"
" The name of the module\n"
" MODLIBS\n"
" The libraries that are required by the module.\n"
" MODIDIR\n"
" The SB\'s module directory. There will be installed the module.\n"
" CINC\n"
" \'Include\' path. This must points to the SB source files.\n"
" CFLAGS\n"
" Compilers flags.\n"
"\n"
" --- Makefile ---\n"
"\n"
"MODNAME=mymod\n"
"MODLIBS=-lmysqlclient\n"
"MODIDIR=/usr/lib/sbasic/modules\n"
"CINC=-I/opt/sbasic/source\n"
"CFLAGS=-Wall -fPIC $(CINC) -D_UnixOS -DLNX_EXTLIB\n"
"\n"
"all: $(MODIDIR)/$(MODNAME).so\n"
"\n"
"$(MODIDIR)/$(MODNAME).so: $(MODNAME).c\n"
" -mkdir -p $(MODIDIR)\n"
" gcc $(CFLAGS) -c $(MODNAME).c -o $(MODNAME).o\n"
" gcc -shared -Wl,-soname,$(MODNAME).so -o $(MODNAME).so $(MODNAME).o $(MODL\n"
"IBS)\n"
" mv $(MODNAME).so $(MODIDIR)\n"
" ldconfig -n $(MODIDIR)\n"
"\n"
"clean:\n"
" -rm -f *.so *.o $(MODIDIR)/$(MODNAME).so\n"
"\n"
" F. Glossary\n"
"\n"
" What it could be good to know.\n"
"\n"
" _\bA_\bN_\bS_\bI\n"
" The American National Standards Institute. This organization\n"
" produces many standards, among them the standards for the C\n"
" and C++ programming languages. See also \"ISO\".\n"
" _\bP_\br_\bo_\bg_\br_\ba_\bm\n"
" An program consists of a series of _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bs, _\bs_\bt_\ba_\bt_\be_\bm_\be_\bn_\bt_\bs, and\n"
" _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\bs. The program executed by an interpreted language\n"
" command by command until it ends.\n"
" _\bS_\bc_\br_\bi_\bp_\bt\n"
" Another name for an program. ...\n"
" _\bB_\bi_\bt\n"
" Short for \"Binary Digit\". All values in computer memory\n"
" ultimately reduce to binary digits: values that are either\n"
" zero or one.\n"
" Computers are often defined by how many bits they use to\n"
" represent integer values. Typical systems are 32-bit systems,\n"
" but 64-bit systems are becoming increasingly popular, and\n"
" 16-bit systems are waning in popularity.\n"
" _\bC_\bh_\ba_\br_\ba_\bc_\bt_\be_\br_\b _\bS_\be_\bt\n"
" The set of numeric codes used by a computer system to\n"
" represent the characters (letters, numbers, punctuation, etc.)\n"
" of a particular country or place. The most common character\n"
" set in use today is ASCII (American Standard Code for\n"
" Information Interchange). Many European countries use an\n"
" extension of ASCII known as ISO-8859-1 (ISO Latin-1).\n"
" _\bC_\bo_\bm_\bp_\bi_\bl_\be_\br\n"
" A program that translates human-readable source code into\n"
" machine-executable object code. The object code is then\n"
" executed directly by the computer or by a virtual-machine. See\n"
" also \"Interpreter\".\n"
" _\bD_\be_\ba_\bd_\bl_\bo_\bc_\bk\n"
" The situation in which two communicating processes are each\n"
" waiting for the other to perform an action.\n"
" _\bE_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt_\b _\bV_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs\n"
" A collection of strings, of the form name=val, that each\n"
" program has available to it. Users generally place values into\n"
" the environment in order to provide information to various\n"
" programs. Typical examples are the environment variables HOME\n"
" and PATH.\n"
" _\bE_\bs_\bc_\ba_\bp_\be_\b _\bS_\be_\bq_\bu_\be_\bn_\bc_\be_\bs\n"
" A special sequence of characters used for describing\n"
" nonprinting characters, such as `\\n\' for newline or `\\033\' for\n"
" the ASCII ESC (Escape) character.\n"
" _\bF_\bl_\ba_\bg\n"
" A variable whose truth value indicates the existence or\n"
" nonexistence of some condition.\n"
" _\bF_\br_\be_\be_\b _\bS_\bo_\bf_\bt_\bw_\ba_\br_\be_\b _\bF_\bo_\bu_\bn_\bd_\ba_\bt_\bi_\bo_\bn\n"
" _\bF_\bS_\bF\n"
" A nonprofit organization dedicated to the production and\n"
" distribution of freely distributable software. It was founded\n"
" by Richard M. Stallman.\n"
" _\bG_\bN_\bU_\b _\bG_\be_\bn_\be_\br_\ba_\bl_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bL_\bi_\bc_\be_\bn_\bs_\be\n"
" _\bG_\bN_\bU_\b _\bG_\bP_\bL\n"
" This document describes the terms under which binary library\n"
" archives or shared objects, and their source code may be\n"
" distributed.\n"
" With few words, GPL allows source code and binary forms to be\n"
" used copied and modified freely.\n"
" _\bG_\bM_\bT\n"
" \"Greenwich Mean Time\". It is the time of day used as the epoch\n"
" for Unix and POSIX systems.\n"
" _\bG_\bN_\bU\n"
" \"GNU\'s not Unix\". An on-going project of the Free Software\n"
" Foundation to create a complete, freely distributable,\n"
" POSIX-compliant computing environment.\n"
" _\bG_\bN_\bU_\b/_\bL_\bi_\bn_\bu_\bx\n"
" A variant of the GNU system using the Linux kernel, instead of\n"
" the Free Software Foundation\'s Hurd kernel. Linux is a stable,\n"
" efficient, full-featured clone of Unix that has been ported to\n"
" a variety of architectures. It is most popular on PC-class\n"
" systems, but runs well on a variety of other systems too. The\n"
" Linux kernel source code is available under the terms of the\n"
" GNU General Public License, which is perhaps its most\n"
" important aspect.\n"
" _\bH_\be_\bx_\ba_\bd_\be_\bc_\bi_\bm_\ba_\bl\n"
" Base 16 notation, where the digits are 0--9 and A--F, with `A\'\n"
" representing 10, `B\' representing 11, and so on, up to `F\' for\n"
" 15. Hexadecimal numbers are written in SB using a leading `0x\'\n"
" or `&H\', to indicate their base. Thus, 0x12 is 18 (1 times 16\n"
" plus 2).\n"
" _\bI_\b/_\bO\n"
" Abbreviation for \"Input/Output\", the act of moving data into\n"
" and/or out of a running program.\n"
" _\bI_\bn_\bt_\be_\br_\bp_\br_\be_\bt_\be_\br\n"
" A program that reads and executes human-readable source code\n"
" directly. It uses the instructions in it to process data and\n"
" produce results.\n"
" _\bI_\bS_\bO\n"
" The International Standards Organization. This organization\n"
" produces international standards for many things, including\n"
" programming languages, such as C and C++.\n"
" _\bL_\be_\bs_\bs_\be_\br_\b _\bG_\be_\bn_\be_\br_\ba_\bl_\b _\bP_\bu_\bb_\bl_\bi_\bc_\b _\bL_\bi_\bc_\be_\bn_\bs_\be\n"
" _\bL_\bG_\bP_\bL\n"
" This document describes the terms under which binary library\n"
" archives or shared objects, and their source code may be\n"
" distributed.\n"
" _\bO_\bc_\bt_\ba_\bl\n"
" Base-eight notation, where the digits are 0--7. Octal numbers\n"
" are written in SB using a leading `&o\', to indicate their\n"
" base. Thus, &o13 is 11 (one times 8 plus 3).\n"
" _\bP_\bO_\bS_\bI_\bX\n"
" The name for a series of standards that specify a Portable\n"
" Operating System interface. The \"IX\" denotes the Unix heritage\n"
" of these standards.\n"
" _\bP_\br_\bi_\bv_\ba_\bt_\be\n"
" Variables and/or functions that are meant for use exclusively\n"
" by this level of functions and not for the main program. See\n"
" LOCAL, \"Nested Functions\".\n"
" _\bR_\be_\bc_\bu_\br_\bs_\bi_\bo_\bn\n"
" When a function calls itself, either directly or indirectly.\n"
" _\bR_\be_\bd_\bi_\br_\be_\bc_\bt_\bi_\bo_\bn\n"
" Redirection means performing input from something other than\n"
" the standard input stream, or performing output to something\n"
" other than the standard output stream.\n"
" In Unices, you can redirect the output of the print statements\n"
" to a file or a system command, using the `>\', `>>\', `|\', and\n"
" `|&\' operators. You can redirect input to the INPUT statement\n"
" using the `<\', `|\', and `|&\' operators.\n"
" _\bR_\be_\bg_\bE_\bx_\bp\n"
" _\bR_\be_\bg_\bu_\bl_\ba_\bt_\b _\bE_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn\n"
" Short for _\br_\be_\bg_\bu_\bl_\ba_\br_\b _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn. A regexp is a pattern that\n"
" denotes a set of strings, possibly an infinite set. For\n"
" example, the regexp `R.*xp\' matches any string starting with\n"
" the letter `R\' and ending with the letters `xp\'.\n"
" _\bS_\be_\ba_\br_\bc_\bh_\b _\bP_\ba_\bt_\bh\n"
" In SB, a list of directories to search for SB program files.\n"
" In the shell, a list of directories to search for executable\n"
" programs.\n"
" _\bS_\be_\be_\bd\n"
" The initial value, or starting point, for a sequence of random\n"
" numbers.\n"
" _\bS_\bh_\be_\bl_\bl\n"
" The command interpreter for Unix, POSIX-compliant systems, DOS\n"
" and WinNT/2K/XP (CMD). The shell works both interactively, and\n"
" as a programming language for batch files, or shell scripts.\n"
" _\bU_\bn_\bi_\bx\n"
" A computer operating system originally developed in the early\n"
" 1970\'s at AT&T Bell Laboratories. It initially became popular\n"
" in universities around the world and later moved into\n"
" commercial environments as a software development system and\n"
" network server system. There are many commercial versions of\n"
" Unix, as well as several work-alike systems whose source code\n"
" is freely available (such as GNU/Linux, NetBSD, FreeBSD, and\n"
" OpenBSD).\n"
"\n"
" G. GNU Free Documentation License\n"
"\n"
" Version 1.1, March 2000\n"
"\n"
"Copyright (C) 2000 Free Software Foundation, Inc.\n"
"59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n"
"\n"
"Everyone is permitted to copy and distribute verbatim copies\n"
"of this license document, but changing it is not allowed.\n"
"\n"
" 1. PREAMBLE\n"
" The purpose of this License is to make a manual, textbook, or\n"
" other written document \"free\" in the sense of freedom: to assure\n"
" everyone the effective freedom to copy and redistribute it, with\n"
" or without modifying it, either commercially or noncommercially.\n"
" Secondarily, this License preserves for the author and publisher\n"
" a way to get credit for their work, while not being considered\n"
" responsible for modifications made by others.\n"
" This License is a kind of \"copyleft\", which means that derivative\n"
" works of the document must themselves be free in the same sense.\n"
" It complements the GNU General Public License, which is a\n"
" copyleft license designed for free software.\n"
" We have designed this License in order to use it for manuals for\n"
" free software, because free software needs free documentation: a\n"
" free program should come with manuals providing the same freedoms\n"
" that the software does. But this License is not limited to\n"
" software manuals; it can be used for any textual work, regardless\n"
" of subject matter or whether it is published as a printed book.\n"
" We recommend this License principally for works whose purpose is\n"
" instruction or reference.\n"
" 2. APPLICABILITY AND DEFINITIONS\n"
" This License applies to any manual or other work that contains a\n"
" notice placed by the copyright holder saying it can be\n"
" distributed under the terms of this License. The \"Document\",\n"
" below, refers to any such manual or work. Any member of the\n"
" public is a licensee, and is addressed as \"you\".\n"
" A \"Modified Version\" of the Document means any work containing\n"
" the Document or a portion of it, either copied verbatim, or with\n"
" modifications and/or translated into another language.\n"
" A \"Secondary Section\" is a named appendix or a front-matter\n"
" section of the Document that deals exclusively with the\n"
" relationship of the publishers or authors of the Document to the\n"
" Document\'s overall subject (or to related matters) and contains\n"
" nothing that could fall directly within that overall subject.\n"
" (For example, if the Document is in part a textbook of\n"
" mathematics, a Secondary Section may not explain any\n"
" mathematics.) The relationship could be a matter of historical\n"
" connection with the subject or with related matters, or of legal,\n"
" commercial, philosophical, ethical or political position\n"
" regarding them.\n"
" The \"Invariant Sections\" are certain Secondary Sections whose\n"
" titles are designated, as being those of Invariant Sections, in\n"
" the notice that says that the Document is released under this\n"
" License.\n"
" The \"Cover Texts\" are certain short passages of text that are\n"
" listed, as Front-Cover Texts or Back-Cover Texts, in the notice\n"
" that says that the Document is released under this License.\n"
" A \"Transparent\" copy of the Document means a machine-readable\n"
" copy, represented in a format whose specification is available to\n"
" the general public, whose contents can be viewed and edited\n"
" directly and straightforwardly with generic text editors or (for\n"
" images composed of pixels) generic paint programs or (for\n"
" drawings) some widely available drawing editor, and that is\n"
" suitable for input to text formatters or for automatic\n"
" translation to a variety of formats suitable for input to text\n"
" formatters. A copy made in an otherwise Transparent file format\n"
" whose markup has been designed to thwart or discourage subsequent\n"
" modification by readers is not Transparent. A copy that is not\n"
" \"Transparent\" is called \"Opaque\".\n"
" Examples of suitable formats for Transparent copies include plain\n"
" ASCII without markup, Texinfo input format, LaTeX input format,\n"
" SGML or XML using a publicly available DTD, and\n"
" standard-conforming simple HTML designed for human modification.\n"
" Opaque formats include PostScript, PDF, proprietary formats that\n"
" can be read and edited only by proprietary word processors, SGML\n"
" or XML for which the DTD and/or processing tools are not\n"
" generally available, and the machine-generated HTML produced by\n"
" some word processors for output purposes only.\n"
" The \"Title Page\" means, for a printed book, the title page\n"
" itself, plus such following pages as are needed to hold, legibly,\n"
" the material this License requires to appear in the title page.\n"
" For works in formats which do not have any title page as such,\n"
" \"Title Page\" means the text near the most prominent appearance of\n"
" the work\'s title, preceding the beginning of the body of the\n"
" text.\n"
" 3. VERBATIM COPYING\n"
" You may copy and distribute the Document in any medium, either\n"
" commercially or noncommercially, provided that this License, the\n"
" copyright notices, and the license notice saying this License\n"
" applies to the Document are reproduced in all copies, and that\n"
" you add no other conditions whatsoever to those of this License.\n"
" You may not use technical measures to obstruct or control the\n"
" reading or further copying of the copies you make or distribute.\n"
" However, you may accept compensation in exchange for copies. If\n"
" you distribute a large enough number of copies you must also\n"
" follow the conditions in section 3.\n"
" You may also lend copies, under the same conditions stated above,\n"
" and you may publicly display copies.\n"
" 4. COPYING IN QUANTITY\n"
" If you publish printed copies of the Document numbering more than\n"
" 100, and the Document\'s license notice requires Cover Texts, you\n"
" must enclose the copies in covers that carry, clearly and\n"
" legibly, all these Cover Texts: Front-Cover Texts on the front\n"
" cover, and Back-Cover Texts on the back cover. Both covers must\n"
" also clearly and legibly identify you as the publisher of these\n"
" copies. The front cover must present the full title with all\n"
" words of the title equally prominent and visible. You may add\n"
" other material on the covers in addition. Copying with changes\n"
" limited to the covers, as long as they preserve the title of the\n"
" Document and satisfy these conditions, can be treated as verbatim\n"
" copying in other respects.\n"
" If the required texts for either cover are too voluminous to fit\n"
" legibly, you should put the first ones listed (as many as fit\n"
" reasonably) on the actual cover, and continue the rest onto\n"
" adjacent pages.\n"
" If you publish or distribute Opaque copies of the Document\n"
" numbering more than 100, you must either include a\n"
" machine-readable Transparent copy along with each Opaque copy, or\n"
" state in or with each Opaque copy a publicly-accessible\n"
" computer-network location containing a complete Transparent copy\n"
" of the Document, free of added material, which the general\n"
" network-using public has access to download anonymously at no\n"
" charge using public-standard network protocols. If you use the\n"
" latter option, you must take reasonably prudent steps, when you\n"
" begin distribution of Opaque copies in quantity, to ensure that\n"
" this Transparent copy will remain thus accessible at the stated\n"
" location until at least one year after the last time you\n"
" distribute an Opaque copy (directly or through your agents or\n"
" retailers) of that edition to the public.\n"
" It is requested, but not required, that you contact the authors\n"
" of the Document well before redistributing any large number of\n"
" copies, to give them a chance to provide you with an updated\n"
" version of the Document.\n"
" 5. MODIFICATIONS\n"
" You may copy and distribute a Modified Version of the Document\n"
" under the conditions of sections 2 and 3 above, provided that you\n"
" release the Modified Version under precisely this License, with\n"
" the Modified Version filling the role of the Document, thus\n"
" licensing distribution and modification of the Modified Version\n"
" to whoever possesses a copy of it. In addition, you must do these\n"
" things in the Modified Version:\n"
" 1. Use in the Title Page (and on the covers, if any) a title\n"
" distinct from that of the Document, and from those of\n"
" previous versions (which should, if there were any, be\n"
" listed in the History section of the Document). You may use\n"
" the same title as a previous version if the original\n"
" publisher of that version gives permission.\n"
" 2. List on the Title Page, as authors, one or more persons or\n"
" entities responsible for authorship of the modifications in\n"
" the Modified Version, together with at least five of the\n"
" principal authors of the Document (all of its principal\n"
" authors, if it has less than five).\n"
" 3. State on the Title page the name of the publisher of the\n"
" Modified Version, as the publisher.\n"
" 4. Preserve all the copyright notices of the Document.\n"
" 5. Add an appropriate copyright notice for your modifications\n"
" adjacent to the other copyright notices.\n"
" 6. Include, immediately after the copyright notices, a license\n"
" notice giving the public permission to use the Modified\n"
" Version under the terms of this License, in the form shown\n"
" in the Addendum below.\n"
" 7. Preserve in that license notice the full lists of Invariant\n"
" Sections and required Cover Texts given in the Document\'s\n"
" license notice.\n"
" 8. Include an unaltered copy of this License.\n"
" 9. Preserve the section entitled \"History\", and its title, and\n"
" add to it an item stating at least the title, year, new\n"
" authors, and publisher of the Modified Version as given on\n"
" the Title Page. If there is no section entitled \"History\" in\n"
" the Document, create one stating the title, year, authors,\n"
" and publisher of the Document as given on its Title Page,\n"
" then add an item describing the Modified Version as stated\n"
" in the previous sentence.\n"
" 10. Preserve the network location, if any, given in the Document\n"
" for public access to a Transparent copy of the Document, and\n"
" likewise the network locations given in the Document for\n"
" previous versions it was based on. These may be placed in\n"
" the \"History\" section. You may omit a network location for a\n"
" work that was published at least four years before the\n"
" Document itself, or if the original publisher of the version\n"
" it refers to gives permission.\n"
" 11. In any section entitled \"Acknowledgements\" or \"Dedications\",\n"
" preserve the section\'s title, and preserve in the section\n"
" all the substance and tone of each of the contributor\n"
" acknowledgements and/or dedications given therein.\n"
" 12. Preserve all the Invariant Sections of the Document,\n"
" unaltered in their text and in their titles. Section numbers\n"
" or the equivalent are not considered part of the section\n"
" titles.\n"
" 13. Delete any section entitled \"Endorsements\". Such a section\n"
" may not be included in the Modified Version.\n"
" 14. Do not retitle any existing section as \"Endorsements\" or to\n"
" conflict in title with any Invariant Section.\n"
" If the Modified Version includes new front-matter sections or\n"
" appendices that qualify as Secondary Sections and contain no\n"
" material copied from the Document, you may at your option\n"
" designate some or all of these sections as invariant. To do this,\n"
" add their titles to the list of Invariant Sections in the\n"
" Modified Version\'s license notice. These titles must be distinct\n"
" from any other section titles.\n"
" You may add a section entitled \"Endorsements\", provided it\n"
" contains nothing but endorsements of your Modified Version by\n"
" various parties--for example, statements of peer review or that\n"
" the text has been approved by an organization as the\n"
" authoritative definition of a standard.\n"
" You may add a passage of up to five words as a Front-Cover Text,\n"
" and a passage of up to 25 words as a Back-Cover Text, to the end\n"
" of the list of Cover Texts in the Modified Version. Only one\n"
" passage of Front-Cover Text and one of Back-Cover Text may be\n"
" added by (or through arrangements made by) any one entity. If the\n"
" Document already includes a cover text for the same cover,\n"
" previously added by you or by arrangement made by the same entity\n"
" you are acting on behalf of, you may not add another; but you may\n"
" replace the old one, on explicit permission from the previous\n"
" publisher that added the old one.\n"
" The author(s) and publisher(s) of the Document do not by this\n"
" License give permission to use their names for publicity for or\n"
" to assert or imply endorsement of any Modified Version.\n"
" 6. COMBINING DOCUMENTS\n"
" You may combine the Document with other documents released under\n"
" this License, under the terms defined in section 4 above for\n"
" modified versions, provided that you include in the combination\n"
" all of the Invariant Sections of all of the original documents,\n"
" unmodified, and list them all as Invariant Sections of your\n"
" combined work in its license notice.\n"
" The combined work need only contain one copy of this License, and\n"
" multiple identical Invariant Sections may be replaced with a\n"
" single copy. If there are multiple Invariant Sections with the\n"
" same name but different contents, make the title of each such\n"
" section unique by adding at the end of it, in parentheses, the\n"
" name of the original author or publisher of that section if\n"
" known, or else a unique number. Make the same adjustment to the\n"
" section titles in the list of Invariant Sections in the license\n"
" notice of the combined work.\n"
" In the combination, you must combine any sections entitled\n"
" \"History\" in the various original documents, forming one section\n"
" entitled \"History\"; likewise combine any sections entitled\n"
" \"Acknowledgements\", and any sections entitled \"Dedications\". You\n"
" must delete all sections entitled \"Endorsements.\"\n"
" 7. COLLECTIONS OF DOCUMENTS\n"
" You may make a collection consisting of the Document and other\n"
" documents released under this License, and replace the individual\n"
" copies of this License in the various documents with a single\n"
" copy that is included in the collection, provided that you follow\n"
" the rules of this License for verbatim copying of each of the\n"
" documents in all other respects.\n"
" You may extract a single document from such a collection, and\n"
" distribute it individually under this License, provided you\n"
" insert a copy of this License into the extracted document, and\n"
" follow this License in all other respects regarding verbatim\n"
" copying of that document.\n"
" 8. AGGREGATION WITH INDEPENDENT WORKS\n"
" A compilation of the Document or its derivatives with other\n"
" separate and independent documents or works, in or on a volume of\n"
" a storage or distribution medium, does not as a whole count as a\n"
" Modified Version of the Document, provided no compilation\n"
" copyright is claimed for the compilation. Such a compilation is\n"
" called an \"aggregate\", and this License does not apply to the\n"
" other self-contained works thus compiled with the Document, on\n"
" account of their being thus compiled, if they are not themselves\n"
" derivative works of the Document.\n"
" If the Cover Text requirement of section 3 is applicable to these\n"
" copies of the Document, then if the Document is less than one\n"
" quarter of the entire aggregate, the Document\'s Cover Texts may\n"
" be placed on covers that surround only the Document within the\n"
" aggregate. Otherwise they must appear on covers around the whole\n"
" aggregate.\n"
" 9. TRANSLATION\n"
" Translation is considered a kind of modification, so you may\n"
" distribute translations of the Document under the terms of\n"
" section 4. Replacing Invariant Sections with translations\n"
" requires special permission from their copyright holders, but you\n"
" may include translations of some or all Invariant Sections in\n"
" addition to the original versions of these Invariant Sections.\n"
" You may include a translation of this License provided that you\n"
" also include the original English version of this License. In\n"
" case of a disagreement between the translation and the original\n"
" English version of this License, the original English version\n"
" will prevail.\n"
" 10. TERMINATION\n"
" You may not copy, modify, sublicense, or distribute the Document\n"
" except as expressly provided for under this License. Any other\n"
" attempt to copy, modify, sublicense or distribute the Document is\n"
" void, and will automatically terminate your rights under this\n"
" License. However, parties who have received copies, or rights,\n"
" from you under this License will not have their licenses\n"
" terminated so long as such parties remain in full compliance.\n"
" 11. FUTURE REVISIONS OF THIS LICENSE\n"
" The Free Software Foundation may publish new, revised versions of\n"
" the GNU Free Documentation License from time to time. Such new\n"
" versions will be similar in spirit to the present version, but\n"
" may differ in detail to address new problems or concerns. See\n"
" [25]h\bht\btt\btp\bp:\b:/\b//\b/w\bww\bww\bw.\b.g\bgn\bnu\bu.\b.o\bor\brg\bg/\b/c\bco\bop\bpy\byl\ble\bef\bft\bt/\b/.\n"
" Each version of the License is given a distinguishing version\n"
" number. If the Document specifies that a particular numbered\n"
" version of this License \"or any later version\" applies to it, you\n"
" have the option of following the terms and conditions either of\n"
" that specified version or of any later version that has been\n"
" published (not as a draft) by the Free Software Foundation. If\n"
" the Document does not specify a version number of this License,\n"
" you may choose any version ever published (not as a draft) by the\n"
" Free Software Foundation.\n"
"\n"
"G.1 ADDENDUM: How to use this License for your documents\n"
"\n"
" To use this License in a document you have written, include a copy of\n"
" the License in the document and put the following copyright and\n"
" license notices just after the title page:\n"
"\n"
" Copyright (C) year your name.\n"
" Permission is granted to copy, distribute and/or modify this document\n"
" under the terms of the GNU Free Documentation License, Version 1.1\n"
" or any later version published by the Free Software Foundation;\n"
" with the Invariant Sections being list their titles, with the\n"
" Front-Cover Texts being list, and with the Back-Cover Texts being list.\n"
" A copy of the license is included in the section entitled ``GNU\n"
" Free Documentation License\'\'.\n"
"\n"
" If you have no Invariant Sections, write \"with no Invariant Sections\"\n"
" instead of saying which ones are invariant. If you have no\n"
" Front-Cover Texts, write \"no Front-Cover Texts\" instead of\n"
" \"Front-Cover Texts being list\"; likewise for Back-Cover Texts.\n"
"\n"
" If your document contains nontrivial examples of program code, we\n"
" recommend releasing these examples in parallel under your choice of\n"
" free software license, such as the GNU General Public License, to\n"
" permit their use in free software.\n"
"\n"
},
{ "IF", "FUNCTION",
"_\bI_\bF _\b(_\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn_\b,_\b _\bt_\br_\bu_\be_\b-_\bv_\ba_\bl_\bu_\be_\b,_\b _\bf_\ba_\bl_\bs_\be_\b-_\bv_\ba_\bl_\bu_\be_\b)",
" Returns a value based on the value of an expression.\n"
"\n"
" Example:\n"
"\n"
"x=0\n"
"PRINT IF(x<>0,\"true\",\"false\") : REM prints false\n"
"\n"
},
{ "LEN", "FUNCTION",
"_\bL_\bE_\bN _\b(_\bx_\b)",
"\n"
" x\n"
" Any variable.\n"
"\n"
" If x is a string, returns the length of the string. If x is an\n"
" array, returns the number of the elements. If x is an number,\n"
" returns the length of the STR(x).\n"
"\n"
},
{ "EMPTY", "FUNCTION",
"_\bE_\bM_\bP_\bT_\bY _\b(_\bx_\b)",
"\n"
" x\n"
" Any variable.\n"
"\n"
" If x is a string, returns true if the len(x) is 0. If x is an\n"
" integer or a real returns true if the x = 0. If x is an array,\n"
" returns true if x is a zero-length array (array without\n"
" elements).\n"
"\n"
},
{ "ISARRAY", "FUNCTION",
"_\bI_\bS_\bA_\bR_\bR_\bA_\bY _\b(_\bx_\b)",
"\n"
" x\n"
" Any variable.\n"
"\n"
" Returns true if the x is an array.\n"
"\n"
},
{ "ISNUMBER", "FUNCTION",
"_\bI_\bS_\bN_\bU_\bM_\bB_\bE_\bR _\b(_\bx_\b)",
"\n"
" x\n"
" Any variable.\n"
"\n"
" Returns true if the x is a number (or it can be converted to a\n"
" number)\n"
"\n"
" Example:\n"
"\n"
"? ISNUMBER(12) :REM true\n"
"? ISNUMBER(\"12\") :REM true\n"
"? ISNUMBER(\"12E+2\") :REM true\n"
"? ISNUMBER(\"abc\") :REM false\n"
"? ISNUMBER(\"1+2\") :REM false\n"
"? ISNUMBER(\"int(2.4)\") :REM false\n"
"\n"
},
{ "ISSTRING", "FUNCTION",
"_\bI_\bS_\bS_\bT_\bR_\bI_\bN_\bG _\b(_\bx_\b)",
"\n"
" x\n"
" Any variable.\n"
"\n"
" Returns true if the x is a string (and cannot be converted to\n"
" a number)\n"
"\n"
" Example:\n"
"\n"
"? ISSTRING(12) :REM false\n"
"? ISSTRING(\"12\") :REM false\n"
"? ISSTRING(\"12E+2\") :REM false\n"
"? ISSTRING(\"abc\") :REM true\n"
"? ISSTRING(\"1+2\") :REM true\n"
"\n"
},
{ "FRE", "FUNCTION",
"_\bF_\bR_\bE _\b(_\bx_\b)",
" Returns system information\n"
"\n"
" Where x:\n"
"\n"
" QB-standard:\n"
"\n"
" 0 free memory\n"
" -1 largest block of integers\n"
" -2 free stack\n"
" -3 largest free block\n"
"\n"
" Our standard (it is optional for now):\n"
"\n"
" -10 total physical memory\n"
" -11 used physical memory\n"
" -12 free physical memory\n"
"\n"
" Optional-set #1:\n"
"\n"
" -13 shared memory size\n"
" -14 buffers\n"
" -15 cached\n"
" -16 total virtual memory size\n"
" -17 used virtual memory\n"
" -18 free virtual memory\n"
"\n"
" Optional-set #2:\n"
"\n"
" -40 battery voltage * 1000\n"
" -41 battery percent\n"
" -42 critical voltage value (*1000)\n"
" -43 warning voltage value (*1000)\n"
"\n"
" The optional values will returns 0 if are not supported.\n"
"\n"
},
{ "TICKS", "FUNCTION",
"_\bT_\bI_\bC_\bK_\bS",
" Returns the system-ticks. The tick value is depended on\n"
" operating system.\n"
"\n"
},
{ "TICKSPERSEC", "FUNCTION",
"_\bT_\bI_\bC_\bK_\bS_\bP_\bE_\bR_\bS_\bE_\bC",
" Returns the number of ticks per second\n"
"\n"
},
{ "TIMER", "FUNCTION",
"_\bT_\bI_\bM_\bE_\bR",
" Returns the number of seconds from midnight\n"
"\n"
},
{ "TIME", "FUNCTION",
"_\bT_\bI_\bM_\bE",
" Returns the current time as string \"HH:MM:SS\"\n"
"\n"
},
{ "DATE", "FUNCTION",
"_\bD_\bA_\bT_\bE",
" Returns the current day as string \"DD/MM/YYYY\"\n"
"\n"
},
{ "JULIAN", "FUNCTION",
"_\bJ_\bU_\bL_\bI_\bA_\bN _\b(_\bd_\bm_\by_\b _\b|_\b _\b(_\bd_\b,_\bm_\b,_\by_\b)_\b)",
" Returns the Julian date. (dates must be greater than 1/1/100\n"
" AD)\n"
"\n"
" Example:\n"
"\n"
"PRINT Julian(DATE)\n"
"PRINT Julian(31, 12, 2001)\n"
"\n"
},
{ "WEEKDAY", "FUNCTION",
"_\bW_\bE_\bE_\bK_\bD_\bA_\bY _\b(_\bd_\bm_\by_\b _\b|_\b _\b(_\bd_\b,_\bm_\b,_\by_\b)_\b _\b|_\b _\bj_\bu_\bl_\bi_\ba_\bn_\b__\bd_\ba_\bt_\be_\b)",
" Returns the day of the week (0 = Sunday)\n"
"\n"
"PRINT WeekDay(DATE)\n"
"PRINT WeekDay(Julian(31, 12, 2001))\n"
"PRINT WeekDay(31, 12, 2001)\n"
"\n"
},
{ "DATEFMT", "FUNCTION",
"_\bD_\bA_\bT_\bE_\bF_\bM_\bT _\b(_\bf_\bo_\br_\bm_\ba_\bt_\b,_\b _\bd_\bm_\by_\b _\b|_\b _\b(_\bd_\b,_\bm_\b,_\by_\b)_\b _\b|_\b _\bj_\bu_\bl_\bi_\ba_\bn_\b__\bd_\ba_\bt_\be_\b)",
" Returns formated date string\n"
"\n"
" Format:\n"
"\n"
" D one or two digits of Day\n"
" DD 2-digit day\n"
" DDD 3-char day name\n"
" DDDD full day name\n"
" M 1 or 2 digits of month\n"
" MM 2-digit month\n"
" MMM 3-char month name\n"
" MMMM full month name\n"
" YY 2-digit year (2K)\n"
" YYYY 4-digit year\n"
"\n"
"PRINT DATEFMT(\"ddd dd, mm/yy\", \"23/11/2001\")\n"
"REM prints \"Fri 23, 11/01\"\n"
"\n"
},
{ "ENV", "FUNCTION",
"_\bE_\bN_\bV _\b(_\b\"_\bv_\ba_\br_\b\"_\b)",
"\n"
},
{ "ENVIRON", "FUNCTION",
"_\bE_\bN_\bV_\bI_\bR_\bO_\bN _\b(_\b\"_\bv_\ba_\br_\b\"_\b)",
" Returns the value of a specified entry in the current\n"
" environment table. If the parameter is empty (\"\") then returns\n"
" an array of the envirment variables (in var=value form)\n"
"\n"
" var\n"
" A string expression of the form \"var\"\n"
"\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bS_\bB_\b _\be_\bm_\bu_\bl_\ba_\bt_\be_\bs_\b _\be_\bn_\bv_\bi_\br_\bo_\bn_\bm_\be_\bn_\bt_\b _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\bs_\b.\n"
"\n"
},
{ "RUN", "FUNCTION",
"_\bR_\bU_\bN _\b(_\b\"_\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b\"_\b)",
" RUN() is the function version of the RUN command. The\n"
" difference is that, the RUN() returns a string with the output\n"
" of the \'command\' as an array of strings (each text-line is one\n"
" element).\n"
"\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bT_\bh_\be_\b _\bR_\bU_\bN_\b(_\b)_\b _\bd_\bo_\be_\bs_\b _\bn_\bo_\bt_\b _\bs_\bu_\bp_\bp_\bo_\br_\bt_\be_\bd_\b.\n"
" _\bW_\bi_\bn_\bd_\bo_\bw_\bs _\bT_\bh_\be_\b _\bs_\bt_\bd_\bo_\bu_\bt_\b _\ba_\bn_\bd_\b _\bs_\bt_\bd_\be_\br_\br_\b _\ba_\br_\be_\b _\bs_\be_\bp_\ba_\br_\ba_\bt_\be_\bd_\b!_\b _\bF_\bi_\br_\bs_\bt_\b _\bi_\bs_\b _\bt_\bh_\be\n"
" _\bs_\bt_\bd_\bo_\bu_\bt_\b _\bo_\bu_\bt_\bp_\bu_\bt_\b _\ba_\bn_\bd_\b _\bf_\bo_\bl_\bl_\bo_\bw_\bi_\bn_\bg_\b _\bt_\bh_\be_\b _\bs_\bt_\bd_\be_\br_\br_\b.\n"
"\n"
},
{ "MALLOC", "FUNCTION",
"_\bM_\bA_\bL_\bL_\bO_\bC _\b(_\bs_\bi_\bz_\be_\b)",
"\n"
},
{ "BALLOC", "FUNCTION",
"_\bB_\bA_\bL_\bL_\bO_\bC _\b(_\bs_\bi_\bz_\be_\b)",
" Allocates a memory block.\n"
"\n"
" _\b* _\bT_\bh_\be_\b _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be_\b _\bc_\ba_\bn_\b _\bb_\be_\b _\bf_\br_\be_\be_\bd_\b _\bb_\by_\b _\bu_\bs_\bi_\bn_\bg_\b _\bE_\bR_\bA_\bS_\bE_\b.\n"
"\n"
},
{ "VADR", "FUNCTION",
"_\bV_\bA_\bD_\bR _\b(_\bv_\ba_\br_\b)",
" Returns the memory address of the variable\'s data.\n"
"\n"
},
{ "PEEK[{16|32}]", "FUNCTION",
"_\bP_\bE_\bE_\bK_\b[_\b{_\b1_\b6_\b|_\b3_\b2_\b}_\b] _\b(_\ba_\bd_\bd_\br_\b)",
" Returns the byte, word or dword at a specified memory address.\n"
"\n"
},
{ "TXTW", "FUNCTION",
"_\bT_\bX_\bT_\bW _\b(_\bs_\b)",
"\n"
},
{ "TEXTWIDTH", "FUNCTION",
"_\bT_\bE_\bX_\bT_\bW_\bI_\bD_\bT_\bH _\b(_\bs_\b)",
" Returns the text width of string s in pixels\n"
"\n"
},
{ "TXTH", "FUNCTION",
"_\bT_\bX_\bT_\bH _\b(_\bs_\b)",
"\n"
},
{ "TEXTHEIGHT", "FUNCTION",
"_\bT_\bE_\bX_\bT_\bH_\bE_\bI_\bG_\bH_\bT _\b(_\bs_\b)",
" Returns the text height of string s in pixels\n"
"\n"
},
{ "XPOS", "FUNCTION",
"_\bX_\bP_\bO_\bS",
"\n"
},
{ "YPOS", "FUNCTION",
"_\bY_\bP_\bO_\bS",
" Returns the current position of the cursor in \"characters\".\n"
"\n"
},
{ "POINT", "FUNCTION",
"_\bP_\bO_\bI_\bN_\bT _\b(_\bx_\b _\b[_\b,_\b _\by_\b]_\b)",
" Returns the color of the pixel at x,y\n"
"\n"
" if y does not specified x contains the info-code\n"
" 0 = returns the current X graphics position\n"
" 1 = returns the current Y graphics position\n"
"\n"
},
{ "RGB", "FUNCTION",
"_\bR_\bG_\bB _\b(_\br_\b,_\b _\bg_\b,_\b _\bb_\b)",
" The RGB functions returns the RGB color codes for the\n"
" specified values The RGB() takes values 0..255 for each of the\n"
" color.\n"
"\n"
" The return value is a negative 24bit value to by used by\n"
" drawing functions.\n"
"\n"
},
{ "RGBF", "FUNCTION",
"_\bR_\bG_\bB_\bF _\b(_\br_\b,_\b _\bg_\b,_\b _\bb_\b)",
" The RGBF functions returns the RGB color codes for the\n"
" specified values The RGBF() takes values 0..1 for each of the\n"
" color.\n"
"\n"
" The return value is a negative 24bit value to by used by\n"
" drawing functions.\n"
"\n"
},
{ "RND", "FUNCTION",
"_\bR_\bN_\bD",
" Returns a random number from the range 0 to 1\n"
"\n"
},
{ "UBOUND", "FUNCTION",
"_\bU_\bB_\bO_\bU_\bN_\bD _\b(_\ba_\br_\br_\ba_\by_\b _\b[_\b,_\b _\bd_\bi_\bm_\b]_\b)",
" Returns the upper bound of the \'array\'\n"
"\n"
},
{ "LBOUND", "FUNCTION",
"_\bL_\bB_\bO_\bU_\bN_\bD _\b(_\ba_\br_\br_\ba_\by_\b _\b[_\b,_\b _\bd_\bi_\bm_\b]_\b)",
" Returns the lower bound of the \'array\'\n"
"\n"
" The parameter \'dim\' is the array dimension whose bound is\n"
" returned\n"
"\n"
"DIM v1(-4 TO 7)\n"
"DIM v2(1 TO 2, 3 TO 4)\n"
"...\n"
"PRINT LBOUND(v1) : REM -4\n"
"PRINT UBOUND(v1) : REM 7\n"
"...\n"
"PRINT LBOUND(v2) : REM 1\n"
"PRINT LBOUND(v2,2) : REM 3\n"
"\n"
},
{ "CINT", "FUNCTION",
"_\bC_\bI_\bN_\bT _\b(_\bx_\b)",
" Converts x to 32b integer Meaningless. Used for compatibility.\n"
"\n"
},
{ "CREAL", "FUNCTION",
"_\bC_\bR_\bE_\bA_\bL _\b(_\bx_\b)",
" Convert x to 64b real number. Meaningless. Used for\n"
" compatibility.\n"
"\n"
},
{ "CDBL", "FUNCTION",
"_\bC_\bD_\bB_\bL _\b(_\bx_\b)",
" Convert x to 64b real number. Meaningless. Used for\n"
" compatibility.\n"
"\n"
},
{ "PEN", "FUNCTION",
"_\bP_\bE_\bN _\b(_\b0_\b._\b._\b1_\b4_\b)",
" Returns the PEN/MOUSE data.\n"
"\n"
" Values:\n"
"\n"
" 0\n"
" true (non zero) if there is a new pen or mouse event\n"
" 1\n"
" PEN: last pen down x; MOUSE: last mouse button down x\n"
" 2\n"
" Same as 1 for y\n"
" 3\n"
" true if the PEN is down; MOUSE: mouse left button is\n"
" pressed\n"
" 4\n"
" PEN: last/current x, MOUSE: the current x position only\n"
" if the left mouse button is pressed (like PEN is down)\n"
" 5\n"
" Same as PEN(4) for y\n"
"\n"
" Mouse specific (non PalmOS):\n"
"\n"
" 10\n"
" current mouse x pos\n"
" 11\n"
" current mouse y pos\n"
" 12\n"
" true if the left mouse button is pressed\n"
" 13\n"
" true if the right mouse button is pressed\n"
" 14\n"
" true if the middle mouse button is pressed\n"
"\n"
" _\b* _\bT_\bh_\be_\b _\bd_\br_\bi_\bv_\be_\br_\b _\bm_\bu_\bs_\bt_\b _\bb_\be_\b _\be_\bn_\ba_\bb_\bl_\be_\bd_\b _\bb_\be_\bf_\bo_\br_\be_\b _\bu_\bs_\be_\b _\bt_\bh_\bi_\bs_\b _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b _\b(_\bs_\be_\be_\b _\bP_\be_\bn\n"
" _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\b)\n"
"\n"
},
{ "FREEFILE", "FUNCTION",
"_\bF_\bR_\bE_\bE_\bF_\bI_\bL_\bE",
" Returns an unused file handle\n"
"\n"
},
{ "EXIST", "FUNCTION",
"_\bE_\bX_\bI_\bS_\bT _\b(_\bf_\bi_\bl_\be_\b)",
" Returns true if the file exists\n"
"\n"
" file\n"
" A string expression that follows OS file naming\n"
" conventions.\n"
"\n"
},
{ "ACCESS", "FUNCTION",
"_\bA_\bC_\bC_\bE_\bS_\bS _\b(_\bf_\bi_\bl_\be_\b)",
" Returns the access rights of the file.\n"
"\n"
" file\n"
" A string expression that follows OS file naming\n"
" conventions.\n"
"\n"
" The return-value is the permissions of the file as them as\n"
" specified on GNU\'s manual (chmod() and stat() system calls)\n"
"\n"
" The bits (in octal):\n"
"\n"
" 04000 set user ID on execution\n"
" 02000 set group ID on execution\n"
" 01000 sticky bit\n"
" 00400 read by owner\n"
" 00200 write by owner\n"
" 00100 execute/search by owner\n"
" 00040 read by group\n"
" 00020 write by group\n"
" 00010 execute/search by group\n"
" 00004 read by others\n"
" 00002 write by others\n"
" 00001 execute/search by others\n"
"\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bT_\bh_\be_\b _\br_\be_\bt_\bu_\br_\bn_\b _\bv_\ba_\bl_\bu_\be_\b _\bi_\bs_\b _\ba_\bl_\bw_\ba_\by_\bs_\b _\b0_\b7_\b7_\b7_\b.\n"
" _\bD_\bO_\bS _\bT_\bh_\be_\b _\br_\be_\bt_\bu_\br_\bn_\b _\bv_\ba_\bl_\bu_\be_\b _\bi_\bs_\b _\bd_\be_\bp_\be_\bn_\bd_\be_\bd_\b _\bo_\bn_\b _\bD_\bJ_\bG_\bP_\bP_\b\'_\bs_\b _\bs_\bt_\ba_\bt_\b(_\b)_\b _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b.\n"
" _\bP_\bo_\bs_\bs_\bi_\bb_\bl_\be_\b _\bU_\bn_\bi_\bx_\b _\bc_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\b.\n"
" _\bW_\bi_\bn_\bd_\bo_\bw_\bs _\bT_\bh_\be_\b _\br_\be_\bt_\bu_\br_\bn_\b _\bv_\ba_\bl_\bu_\be_\b _\bi_\bs_\b _\bd_\be_\bp_\be_\bn_\bd_\be_\bd_\b _\bo_\bn_\b _\bC_\by_\bg_\bn_\bu_\bs_\b\'_\bs_\b _\bs_\bt_\ba_\bt_\b(_\b)\n"
" _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\b._\b _\bP_\bo_\bs_\bs_\bi_\bb_\bl_\be_\b _\bU_\bn_\bi_\bx_\b _\bc_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\b.\n"
"\n"
"IF ACCESS(\"/bin/sh\") AND 0o4 THEN\n"
" PRINT \"I can read it!\"\n"
"ENDIF\n"
"\n"
},
{ "ISFILE", "FUNCTION",
"_\bI_\bS_\bF_\bI_\bL_\bE _\b(_\bf_\bi_\bl_\be_\b)",
" Returns true if the file is a regular file.\n"
"\n"
},
{ "ISDIR", "FUNCTION",
"_\bI_\bS_\bD_\bI_\bR _\b(_\bf_\bi_\bl_\be_\b)",
" Returns true if the file is a directory.\n"
"\n"
},
{ "ISLINK", "FUNCTION",
"_\bI_\bS_\bL_\bI_\bN_\bK _\b(_\bf_\bi_\bl_\be_\b)",
" Returns true if the file is a link.\n"
"\n"
},
{ "EOF", "FUNCTION",
"_\bE_\bO_\bF _\b(_\bf_\bi_\bl_\be_\bN_\b)",
" Returns true if the file pointer is at end of the file. For\n"
" COMx and SOCL VFS it returns true if the connection is broken.\n"
"\n"
},
{ "INPUT", "FUNCTION",
"_\bI_\bN_\bP_\bU_\bT _\b(_\bl_\be_\bn_\b _\b[_\b,_\b _\bf_\bi_\bl_\be_\bN_\b]_\b)",
" This function is similar to INPUT. Reads \'len\' bytes from file\n"
" or console (if fileN is omitted). This function is a low-level\n"
" function. That means does not convert the data, and does not\n"
" remove the spaces.\n"
"\n"
},
{ "BGETC", "FUNCTION",
"_\bB_\bG_\bE_\bT_\bC _\b(_\bf_\bi_\bl_\be_\bN_\b)",
" (Binary mode) Reads and returns a byte from file or device.\n"
"\n"
},
{ "SEEK", "FUNCTION",
"_\bS_\bE_\bE_\bK _\b(_\bf_\bi_\bl_\be_\bN_\b)",
" Returns the current file position\n"
"\n"
},
{ "LOF", "FUNCTION",
"_\bL_\bO_\bF _\b(_\bf_\bi_\bl_\be_\bN_\b)",
" Returns the length of file in bytes. For other devices, it\n"
" returns the number of available data.\n"
"\n"
},
{ "FILES", "FUNCTION",
"_\bF_\bI_\bL_\bE_\bS _\b(_\bw_\bi_\bl_\bd_\bc_\ba_\br_\bd_\bs_\b)",
" Returns an array with the filenames. If there is no files\n"
" returns an empty array.\n"
"\n"
"? FILES(\"*\")\n"
"\n"
" _\bP_\ba_\bl_\bm_\bO_\bS _\bR_\be_\bt_\bu_\br_\bn_\bs_\b _\bo_\bn_\bl_\by_\b _\bt_\bh_\be_\b _\bu_\bs_\be_\br_\b-_\bf_\bi_\bl_\be_\bs_\b.\n"
" _\b* _\bT_\bo_\b _\bu_\bs_\be_\b _\bf_\bi_\bl_\be_\b _\bo_\bn_\b _\bM_\bE_\bM_\bO_\b _\bo_\br_\b _\bP_\bD_\bO_\bC_\b _\bo_\br_\b _\ba_\bn_\by_\b _\bo_\bt_\bh_\be_\br_\b _\bv_\bi_\br_\bt_\bu_\ba_\bl_\b _\bf_\bi_\bl_\be_\b _\bs_\by_\bs_\bt_\be_\bm\n"
" _\by_\bo_\bu_\b _\bm_\bu_\bs_\bt_\b _\bu_\bs_\be_\b _\bF_\bI_\bL_\bE_\bS_\b(_\b\"_\bV_\bF_\bS_\bx_\b:_\b*_\b\"_\b)\n"
"\n"
"PRINT FILES(\"MEMO:*\")\n"
"\n"
" 9. Mathematics\n"
"\n"
" All angles are in radians.\n"
"\n"
},
{ "ABS", "FUNCTION",
"_\bA_\bB_\bS _\b(_\bx_\b)",
" Returns the absolute value of x.\n"
"\n"
},
{ "MAX", "FUNCTION",
"_\bM_\bA_\bX _\b(_\b._\b._\b._\b)",
"\n"
},
{ "ABSMAX", "FUNCTION",
"_\bA_\bB_\bS_\bM_\bA_\bX _\b(_\b._\b._\b._\b)",
"\n"
},
{ "MIN", "FUNCTION",
"_\bM_\bI_\bN _\b(_\b._\b._\b._\b)",
"\n"
},
{ "ABSMIN", "FUNCTION",
"_\bA_\bB_\bS_\bM_\bI_\bN _\b(_\b._\b._\b._\b)",
" Maximum/Minimum value of parameters. Parameters can be\n"
" anything (arrays, ints, reals, strings). ABSMIN/ABSMAX returns\n"
" the absolute min/max value.\n"
"\n"
"? MAX(3,4,8)\n"
"? MIN(array(),2,3)\n"
"? MAX(\"abc\",\"def\")\n"
"\n"
},
{ "SEQ", "FUNCTION",
"_\bS_\bE_\bQ _\b(_\bx_\bm_\bi_\bn_\b,_\b _\bx_\bm_\ba_\bx_\b,_\b _\bc_\bo_\bu_\bn_\bt_\b)",
" Returns an array with \'count\' elements. Each element had the x\n"
" value of its position.\n"
"\n"
"? SEQ(0,1,11)\n"
"\n"
},
{ "POW", "FUNCTION",
"_\bP_\bO_\bW _\b(_\bx_\b,_\b _\by_\b)",
" x raised to power of y\n"
"\n"
},
{ "SQR", "FUNCTION",
"_\bS_\bQ_\bR _\b(_\bx_\b)",
" Square root of x\n"
"\n"
},
{ "SGN", "FUNCTION",
"_\bS_\bG_\bN _\b(_\bx_\b)",
" Sign of x (+1 for positive, -1 for negative and 0 for zero)\n"
"\n"
"9.1 Unit convertion\n"
"\n"
},
{ "DEG", "FUNCTION",
"_\bD_\bE_\bG _\b(_\bx_\b)",
" Radians to degrees\n"
"\n"
},
{ "RAD", "FUNCTION",
"_\bR_\bA_\bD _\b(_\bx_\b)",
" Degrees to radians\n"
"\n"
"9.2 Round\n"
"\n"
},
{ "INT", "FUNCTION",
"_\bI_\bN_\bT _\b(_\bx_\b)",
" Rounds x downwards to the nearest integer\n"
"\n"
},
{ "FIX", "FUNCTION",
"_\bF_\bI_\bX _\b(_\bx_\b)",
" Rounds x upwards to the nearest integer\n"
"\n"
},
{ "FLOOR", "FUNCTION",
"_\bF_\bL_\bO_\bO_\bR _\b(_\bx_\b)",
" Largest integer value not greater than x\n"
"\n"
},
{ "CEIL", "FUNCTION",
"_\bC_\bE_\bI_\bL _\b(_\bx_\b)",
" Smallest integral value not less than x\n"
"\n"
},
{ "FRAC", "FUNCTION",
"_\bF_\bR_\bA_\bC _\b(_\bx_\b)",
" Fractional part of x\n"
"\n"
},
{ "ROUND", "FUNCTION",
"_\bR_\bO_\bU_\bN_\bD _\b(_\bx_\b _\b[_\b,_\b _\bd_\be_\bc_\bs_\b]_\b)",
" Rounds the x to the nearest integer or number with \'decs\'\n"
" decimal digits.\n"
"\n"
"9.3 Trigonometry\n"
"\n"
},
{ "COS", "FUNCTION",
"_\bC_\bO_\bS _\b(_\bx_\b)",
" Cosine\n"
"\n"
},
{ "SIN", "FUNCTION",
"_\bS_\bI_\bN _\b(_\bx_\b)",
" Sine\n"
"\n"
},
{ "TAN", "FUNCTION",
"_\bT_\bA_\bN _\b(_\bx_\b)",
" Tangent\n"
"\n"
},
{ "ACOS", "FUNCTION",
"_\bA_\bC_\bO_\bS _\b(_\bx_\b)",
" Inverse cosine\n"
"\n"
},
{ "ASIN", "FUNCTION",
"_\bA_\bS_\bI_\bN _\b(_\bx_\b)",
" Inverse sine\n"
"\n"
},
{ "ATAN", "FUNCTION",
"_\bA_\bT_\bA_\bN _\b(_\bx_\b)",
"\n"
},
{ "ATN", "FUNCTION",
"_\bA_\bT_\bN _\b(_\bx_\b)",
" Inverse tangent\n"
"\n"
},
{ "ATAN2", "FUNCTION",
"_\bA_\bT_\bA_\bN_\b2 _\b(_\bx_\b,_\b _\by_\b)",
" Inverse tangent (x,y)\n"
"\n"
},
{ "COSH", "FUNCTION",
"_\bC_\bO_\bS_\bH _\b(_\bx_\b)",
"\n"
},
{ "SINH", "FUNCTION",
"_\bS_\bI_\bN_\bH _\b(_\bx_\b)",
"\n"
},
{ "TANH", "FUNCTION",
"_\bT_\bA_\bN_\bH _\b(_\bx_\b)",
"\n"
},
{ "ACOSH", "FUNCTION",
"_\bA_\bC_\bO_\bS_\bH _\b(_\bx_\b)",
"\n"
},
{ "ASINH", "FUNCTION",
"_\bA_\bS_\bI_\bN_\bH _\b(_\bx_\b)",
"\n"
},
{ "ATANH", "FUNCTION",
"_\bA_\bT_\bA_\bN_\bH _\b(_\bx_\b)",
"\n"
},
{ "SEC", "FUNCTION",
"_\bS_\bE_\bC _\b(_\bx_\b)",
" Secant\n"
"\n"
},
{ "CSC", "FUNCTION",
"_\bC_\bS_\bC _\b(_\bx_\b)",
" Cosecant\n"
"\n"
},
{ "COT", "FUNCTION",
"_\bC_\bO_\bT _\b(_\bx_\b)",
" Cotangent\n"
"\n"
},
{ "ASEC", "FUNCTION",
"_\bA_\bS_\bE_\bC _\b(_\bx_\b)",
" Inverse secant\n"
"\n"
},
{ "ACSC", "FUNCTION",
"_\bA_\bC_\bS_\bC _\b(_\bx_\b)",
" Inverse cosecant\n"
"\n"
},
{ "ACOT", "FUNCTION",
"_\bA_\bC_\bO_\bT _\b(_\bx_\b)",
" Inverse cotangent\n"
"\n"
},
{ "SECH", "FUNCTION",
"_\bS_\bE_\bC_\bH _\b(_\bx_\b)",
"\n"
},
{ "CSCH", "FUNCTION",
"_\bC_\bS_\bC_\bH _\b(_\bx_\b)",
"\n"
},
{ "COTH", "FUNCTION",
"_\bC_\bO_\bT_\bH _\b(_\bx_\b)",
"\n"
},
{ "ASECH", "FUNCTION",
"_\bA_\bS_\bE_\bC_\bH _\b(_\bx_\b)",
"\n"
},
{ "ACSCH", "FUNCTION",
"_\bA_\bC_\bS_\bC_\bH _\b(_\bx_\b)",
"\n"
},
{ "ACOTH", "FUNCTION",
"_\bA_\bC_\bO_\bT_\bH _\b(_\bx_\b)",
"\n"
"9.4 Logarithms\n"
"\n"
},
{ "EXP", "FUNCTION",
"_\bE_\bX_\bP _\b(_\bx_\b)",
" Returns the value of e raised to the power of x.\n"
"\n"
},
{ "LOG", "FUNCTION",
"_\bL_\bO_\bG _\b(_\bx_\b)",
" Returns the natural logarithm of x.\n"
"\n"
},
{ "LOG10", "FUNCTION",
"_\bL_\bO_\bG_\b1_\b0 _\b(_\bx_\b)",
" Returns the base-10 logarithm of x.\n"
"\n"
"9.5 Statistics\n"
"\n"
" Sample standard deviation: SQR(STATSPREADS(array)) Population\n"
" standard deviation: SQR(STATSPREADP(array))\n"
"\n"
},
{ "SUM", "FUNCTION",
"_\bS_\bU_\bM _\b(_\b._\b._\b._\b)",
" Sum of value\n"
"\n"
},
{ "SUMSQ", "FUNCTION",
"_\bS_\bU_\bM_\bS_\bQ _\b(_\b._\b._\b._\b)",
" Sum of square value\n"
"\n"
},
{ "STATMEAN", "FUNCTION",
"_\bS_\bT_\bA_\bT_\bM_\bE_\bA_\bN _\b(_\b._\b._\b._\b)",
" Arithmetical mean\n"
"\n"
},
{ "STATMEANDEV", "FUNCTION",
"_\bS_\bT_\bA_\bT_\bM_\bE_\bA_\bN_\bD_\bE_\bV _\b(_\b._\b._\b._\b)",
" Mean deviation\n"
"\n"
},
{ "STATSPREADS", "FUNCTION",
"_\bS_\bT_\bA_\bT_\bS_\bP_\bR_\bE_\bA_\bD_\bS _\b(_\b._\b._\b._\b)",
" Sample spread\n"
"\n"
},
{ "STATSPREADP", "FUNCTION",
"_\bS_\bT_\bA_\bT_\bS_\bP_\bR_\bE_\bA_\bD_\bP _\b(_\b._\b._\b._\b)",
" Population spread\n"
"\n"
"9.6 Equations\n"
"\n"
},
{ "LINEQN", "FUNCTION",
"_\bL_\bI_\bN_\bE_\bQ_\bN _\b(_\ba_\b,_\b _\bb_\b _\b[_\b,_\b _\bt_\bo_\bl_\be_\br_\b]_\b)",
" Returns an array with the values of the unknowns. This\n"
" function solves equations by using the Gauss-Jordan method.\n"
"\n"
" b\n"
" equations\n"
" b\n"
" results\n"
" toler\n"
" tolerance number. (the absolute value of the lowest\n"
" acceptable number) default = 0 = none...\n"
" |x| <= toler : x = 0\n"
"\n"
" _\b* _\bT_\bh_\be_\b _\br_\be_\bs_\bu_\bl_\bt_\b _\bi_\bs_\b _\ba_\b _\bm_\ba_\bt_\br_\bi_\bx_\b _\bN_\bx_\b1_\b._\b _\bF_\bo_\br_\b _\bt_\bh_\be_\b _\bS_\bB_\b _\bt_\bh_\ba_\bt_\b _\ba_\br_\br_\ba_\by_\b _\bi_\bs\n"
" _\bt_\bw_\bo_\b-_\bd_\bi_\bm_\be_\bn_\bs_\bi_\bo_\bn_\b _\ba_\br_\br_\ba_\by_\b.\n"
"\n"
},
{ "INVERSE", "FUNCTION",
"_\bI_\bN_\bV_\bE_\bR_\bS_\bE _\b(_\bA_\b)",
" returns the inverse matrix of A.\n"
"\n"
},
{ "DETERM", "FUNCTION",
"_\bD_\bE_\bT_\bE_\bR_\bM _\b(_\bA_\b[_\b,_\b _\bt_\bo_\bl_\be_\br_\b]_\b)",
" Determinant of A\n"
"\n"
" toler = tolerance number (the absolute value of the lowest\n"
" acceptable number) default = 0 = none\n"
"\n"
" |x| <= toler : x = 0\n"
"\n"
},
{ "SEGCOS", "FUNCTION",
"_\bS_\bE_\bG_\bC_\bO_\bS _\b(_\bA_\bx_\b,_\bA_\by_\b,_\bB_\bx_\b,_\bB_\by_\b,_\bC_\bx_\b,_\bC_\by_\b,_\bD_\bx_\b,_\bD_\by_\b)",
"\n"
},
{ "SEGSIN", "FUNCTION",
"_\bS_\bE_\bG_\bS_\bI_\bN _\b(_\bA_\bx_\b,_\bA_\by_\b,_\bB_\bx_\b,_\bB_\by_\b,_\bC_\bx_\b,_\bC_\by_\b,_\bD_\bx_\b,_\bD_\by_\b)",
" Sinus or cosine of 2 line segments (A->B, C->D).\n"
"\n"
},
{ "PTDISTSEG", "FUNCTION",
"_\bP_\bT_\bD_\bI_\bS_\bT_\bS_\bE_\bG _\b(_\bB_\bx_\b,_\bB_\by_\b,_\bC_\bx_\b,_\bC_\by_\b,_\bA_\bx_\b,_\bA_\by_\b)",
" Distance of point A from line segment B-C\n"
"\n"
},
{ "PTDISTLN", "FUNCTION",
"_\bP_\bT_\bD_\bI_\bS_\bT_\bL_\bN _\b(_\bB_\bx_\b,_\bB_\by_\b,_\bC_\bx_\b,_\bC_\by_\b,_\bA_\bx_\b,_\bA_\by_\b)",
" Distance of point A from line B, C\n"
"\n"
},
{ "PTSIGN", "FUNCTION",
"_\bP_\bT_\bS_\bI_\bG_\bN _\b(_\bA_\bx_\b,_\bA_\by_\b,_\bB_\bx_\b,_\bB_\by_\b,_\bQ_\bx_\b,_\bQ_\by_\b)",
" The sign of point Q from line segment A->B\n"
"\n"
},
{ "SEGLEN", "FUNCTION",
"_\bS_\bE_\bG_\bL_\bE_\bN _\b(_\bA_\bx_\b,_\bA_\by_\b,_\bB_\bx_\b,_\bB_\by_\b)",
" Length of line segment\n"
"\n"
},
{ "POLYAREA", "FUNCTION",
"_\bP_\bO_\bL_\bY_\bA_\bR_\bE_\bA _\b(_\bp_\bo_\bl_\by_\b)",
" Returns the area of the polyline poly.\n"
"\n"
},
{ "SPC", "FUNCTION",
"_\bS_\bP_\bC _\b(_\bn_\b)",
"\n"
},
{ "SPACE", "FUNCTION",
"_\bS_\bP_\bA_\bC_\bE _\b(_\bn_\b)",
" returns a string of \'n\' spaces\n"
"\n"
},
{ "BIN", "FUNCTION",
"_\bB_\bI_\bN _\b(_\bx_\b)",
" Returns the binary value of x as string.\n"
"\n"
},
{ "OCT", "FUNCTION",
"_\bO_\bC_\bT _\b(_\bx_\b)",
" Returns the octal value of x as string.\n"
"\n"
},
{ "HEX", "FUNCTION",
"_\bH_\bE_\bX _\b(_\bx_\b)",
" Returns the hexadecimal value of x as string.\n"
"\n"
},
{ "VAL", "FUNCTION",
"_\bV_\bA_\bL _\b(_\bs_\b)",
" Returns the numeric value of string s.\n"
"\n"
},
{ "STR", "FUNCTION",
"_\bS_\bT_\bR _\b(_\bx_\b)",
" Returns the string value of x.\n"
"\n"
},
{ "CBS", "FUNCTION",
"_\bC_\bB_\bS _\b(_\bs_\b)",
"\n"
},
{ "BCS", "FUNCTION",
"_\bB_\bC_\bS _\b(_\bs_\b)",
" CBS() - converts (C)-style strings to (B)ASIC-style (S)trings\n"
"\n"
" BCS() - converts (B)ASIC-style strings to (C)-style (S)trings\n"
"\n"
" C-Style string means strings with \\ codes\n"
"\n"
" _\b* _\bO_\bn_\b _\bC_\bB_\bS_\b(_\b)_\b _\bw_\be_\b _\bc_\ba_\bn_\bn_\bo_\bt_\b _\bu_\bs_\be_\b _\bt_\bh_\be_\b _\b\\_\b\"_\b _\bc_\bh_\ba_\br_\ba_\bc_\bt_\be_\br_\b _\bb_\bu_\bt_\b _\bw_\be_\b _\bc_\ba_\bn_\b _\br_\be_\bp_\bl_\ba_\bc_\be\n"
" _\bi_\bt_\b _\bw_\bi_\bt_\bh_\b _\b\\_\bx_\b2_\b2_\b _\bo_\br_\b _\b\\_\b0_\b4_\b2_\b.\n"
"\n"
},
{ "ASC", "FUNCTION",
"_\bA_\bS_\bC _\b(_\bs_\b)",
" Returns the ASCII code of first character of the string s.\n"
"\n"
},
{ "CHR", "FUNCTION",
"_\bC_\bH_\bR _\b(_\bx_\b)",
" Returns one-char string of character with ASCII code x.\n"
"\n"
},
{ "LOWER", "FUNCTION",
"_\bL_\bO_\bW_\bE_\bR _\b(_\bs_\b)",
"\n"
},
{ "LCASE", "FUNCTION",
"_\bL_\bC_\bA_\bS_\bE _\b(_\bs_\b)",
"\n"
},
{ "UPPER", "FUNCTION",
"_\bU_\bP_\bP_\bE_\bR _\b(_\bs_\b)",
"\n"
},
{ "UCASE", "FUNCTION",
"_\bU_\bC_\bA_\bS_\bE _\b(_\bs_\b)",
" Converts the string s to lower/upper case\n"
"\n"
"? LOWER(\"Hi\"):REM hi\n"
"? UPPER(\"Hi\"):REM HI\n"
"\n"
},
{ "LTRIM", "FUNCTION",
"_\bL_\bT_\bR_\bI_\bM _\b(_\bs_\b)",
" Removes leading white-spaces from string s\n"
"\n"
"? LEN(LTRIM(\" Hi\")):REM 2\n"
"\n"
},
{ "RTRIM", "FUNCTION",
"_\bR_\bT_\bR_\bI_\bM _\b(_\bs_\b)",
" Removes trailing white-spaces from string s\n"
"\n"
},
{ "TRIM", "FUNCTION",
"_\bT_\bR_\bI_\bM _\b(_\bs_\b)",
" Removes leading and trailing white-spaces from string s. TRIM\n"
" is equal to LTRIM(RTRIM(s))\n"
"\n"
},
{ "SQUEEZE", "FUNCTION",
"_\bS_\bQ_\bU_\bE_\bE_\bZ_\bE _\b(_\bs_\b)",
" Removes the leading/trailing and duplicated white-spaces\n"
"\n"
"? \"[\"; SQUEEZE(\" Hi there \"); \"]\"\n"
"\' Result: [Hi there]\n"
"\n"
},
{ "ENCLOSE", "FUNCTION",
"_\bE_\bN_\bC_\bL_\bO_\bS_\bE _\b(_\bs_\bt_\br_\b[_\b,_\b _\bp_\ba_\bi_\br_\b]_\b)",
" Encloses a string. The default pair is \"\"\n"
"\n"
"? enclose(\"abc\", \"()\")\n"
"\' Result: (abc)\n"
"\n"
},
{ "DISCLOSE", "FUNCTION",
"_\bD_\bI_\bS_\bC_\bL_\bO_\bS_\bE _\b(_\bs_\bt_\br_\b[_\b,_\b _\bp_\ba_\bi_\br_\bs_\b _\b[_\b,_\b _\bi_\bg_\bn_\bo_\br_\be_\b-_\bp_\ba_\bi_\br_\bs_\b]_\b]_\b)",
" Discloses a string.\n"
"\n"
" Default pairs and ignore pairs\n"
"\n"
"First\n"
"non white-space\n"
"character Check Ignore\n"
"--------------------------------------------\n"
"\" \"\" \'\'\n"
"\' \'\' \"\"\n"
"( () \"\"\'\'\n"
"[ [] \"\"\'\'\n"
"{ {} \"\"\'\'\n"
"< <> \"\"\'\'\n"
"\n"
"Otherwise:\n"
"\" \"\" \'\'\n"
"\n"
"s = \"abc (abc)\"\n"
"? s; tab(26); disclose(s, \"()\")\n"
"\' prints abc\n"
"s = \"abc (a(bc))\"\n"
"? s; tab(26); disclose(s, \"()\"); tab(40); disclose(disclose(s, \"()\"), \"()\")\n"
"\' prints a(bc), bc\n"
"s = \"abc (a=\'(bc)\')\"\n"
"? s; tab(26); disclose(s, \"()\", \"\'\'\"); tab(40); &\n"
" disclose(disclose(s, \"()\", \"\'\'\"), \"()\", \"\'\'\")\n"
"\' prints a=\'(bc)\', nothing\n"
"\n"
},
{ "LEFT", "FUNCTION",
"_\bL_\bE_\bF_\bT _\b(_\bs_\b _\b[_\b,_\bn_\b]_\b)",
"\n"
},
{ "RIGHT", "FUNCTION",
"_\bR_\bI_\bG_\bH_\bT _\b(_\bs_\b[_\b,_\bn_\b]_\b)",
" Returns the n number of leftmost/rightmost chars of string s\n"
" If n is not specified, the SB uses 1\n"
"\n"
},
{ "LEFTOF", "FUNCTION",
"_\bL_\bE_\bF_\bT_\bO_\bF _\b(_\bs_\b1_\b,_\b _\bs_\b2_\b)",
"\n"
},
{ "RIGHTOF", "FUNCTION",
"_\bR_\bI_\bG_\bH_\bT_\bO_\bF _\b(_\bs_\b1_\b,_\b _\bs_\b2_\b)",
" Returns the left/right part of s1 at the position of the first\n"
" occurrence of the string s2 into string s1\n"
"\n"
" _\b* _\bs_\b2_\b _\bd_\bo_\be_\bs_\b _\bn_\bo_\bt_\b _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bd_\b _\bo_\bn_\b _\bn_\be_\bw_\b _\bs_\bt_\br_\bi_\bn_\bg_\b.\n"
"\n"
},
{ "LEFTOFLAST", "FUNCTION",
"_\bL_\bE_\bF_\bT_\bO_\bF_\bL_\bA_\bS_\bT _\b(_\bs_\b1_\b,_\b _\bs_\b2_\b)",
"\n"
},
{ "RIGHTOFLAST", "FUNCTION",
"_\bR_\bI_\bG_\bH_\bT_\bO_\bF_\bL_\bA_\bS_\bT _\b(_\bs_\b1_\b,_\b _\bs_\b2_\b)",
" Returns the left/right part of s1 at the position of the last\n"
" occurrence of the string s2 into string s1\n"
"\n"
" _\b* _\bs_\b2_\b _\bd_\bo_\be_\bs_\b _\bn_\bo_\bt_\b _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bd_\b _\bo_\bn_\b _\bn_\be_\bw_\b _\bs_\bt_\br_\bi_\bn_\bg_\b.\n"
"\n"
},
{ "MID", "FUNCTION",
"_\bM_\bI_\bD _\b(_\bs_\b,_\b _\bs_\bt_\ba_\br_\bt_\b _\b[_\b,_\bl_\be_\bn_\bg_\bt_\bh_\b]_\b)",
" Returns the part (length) of the string s starting from\n"
" \'start\' position\n"
"\n"
" If the \'length\' parameter is omitted, MID returns the whole\n"
" string from the position \'start\'.\n"
"\n"
},
{ "INSTR", "FUNCTION",
"_\bI_\bN_\bS_\bT_\bR _\b(_\b[_\bs_\bt_\ba_\br_\bt_\b,_\b]_\b _\bs_\b1_\b,_\b _\bs_\b2_\b)",
" Returns the position of the first occurrence of the string s2\n"
" into string s1 (starting from the position \'start\')\n"
"\n"
" If there is no match, INSTR returns 0\n"
"\n"
},
{ "RINSTR", "FUNCTION",
"_\bR_\bI_\bN_\bS_\bT_\bR _\b(_\b[_\bs_\bt_\ba_\br_\bt_\b,_\b]_\b _\bs_\b1_\b,_\b _\bs_\b2_\b)",
" Returns the position of the last occurrence of the string s2\n"
" into string s1 (starting from the position \'start\')\n"
"\n"
" If there is no match, RINSTR returns 0\n"
"\n"
},
{ "REPLACE", "FUNCTION",
"_\bR_\bE_\bP_\bL_\bA_\bC_\bE _\b(_\bs_\bo_\bu_\br_\bc_\be_\b,_\b _\bp_\bo_\bs_\b,_\b _\bs_\bt_\br_\b _\b[_\b,_\b _\bl_\be_\bn_\b]_\b)",
" Writes the \'str\' into \'pos\' of \'source\' and returns the new\n"
" string.\n"
"\n"
" This function replaces only \'len\' characters. The default\n"
" value of \'len\' is the length of \'str\'.\n"
"\n"
"s=\"123456\"\n"
"...\n"
"\' Cut\n"
"? replace(s,3,\"\",len(s))\n"
"...\n"
"\' Replace\n"
"? replace(s,2,\"bcd\")\n"
"...\n"
"\' Insert\n"
"? replace(s,3,\"cde\",0)\n"
"...\n"
"\' Replace & insert\n"
"? replace(s,2,\"RRI\",2)\n"
"\n"
},
{ "TRANSLATE", "FUNCTION",
"_\bT_\bR_\bA_\bN_\bS_\bL_\bA_\bT_\bE _\b(_\bs_\bo_\bu_\br_\bc_\be_\b,_\b _\bw_\bh_\ba_\bt_\b _\b[_\b,_\b _\bw_\bi_\bt_\bh_\b]_\b)",
" Translates all occurrences of the string \'what\' found in the\n"
" \'source\' with the string \'with\' and returns the new string.\n"
"\n"
"? Translate(\"Hello world\", \"o\", \"O\")\n"
"\' displays: HellO wOrld\n"
"\n"
},
{ "CHOP", "FUNCTION",
"_\bC_\bH_\bO_\bP _\b(_\bs_\bo_\bu_\br_\bc_\be_\b)",
" Chops off the last character of the string \'source\' and\n"
" returns the result.\n"
"\n"
},
{ "STRING", "FUNCTION",
"_\bS_\bT_\bR_\bI_\bN_\bG _\b(_\bl_\be_\bn_\b,_\b _\b{_\ba_\bs_\bc_\bi_\bi_\b|_\bs_\bt_\br_\b}_\b)",
" Returns a string containing \'len\' times of string \'str\' or the\n"
" character \'ascii\'.\n"
"\n"
},
{ "FORMAT", "FUNCTION",
"_\bF_\bO_\bR_\bM_\bA_\bT _\b(_\bf_\bo_\br_\bm_\ba_\bt_\b,_\b _\bv_\ba_\bl_\b)",
" Returns a formated string.\n"
"\n"
" Numbers:\n"
"\n"
" #\n"
" Digit or space\n"
" 0\n"
" Digit or zero\n"
" ^\n"
" Stores a number in exponential format. Unlike QB\'s USING\n"
" format this is a place-holder like the #.\n"
" .\n"
" The position of the decimal point.\n"
" ,\n"
" Separator.\n"
" -\n"
" Stores minus if the number is negative.\n"
" +\n"
" Stores the sign of the number.\n"
"\n"
" Strings:\n"
"\n"
" &\n"
" Stores a string expression without reformatting it.\n"
" !\n"
" Stores only the first character of a string expression.\n"
" \\ \\\n"
" Stores only the first n + 2 characters of a string\n"
" expression, where n is the number of spaces between the\n"
" two backslashes. Unlike QB, there can be literals inside\n"
" the \\ \\. These literals are inserted in the final string.\n"
"\n"
"? FORMAT(\"#,##0\", 1920.6) : REM prints 1,921\n"
"? FORMAT(\"\\ - \\\", \"abcde\") : REM prints \"abc-de\"\n"
"\n"
},
{ "CAT", "FUNCTION",
"_\bC_\bA_\bT _\b(_\bx_\b)",
" Returns a console codes\n"
"\n"
" 0 reset\n"
" 1 bold on\n"
" -1 bold off\n"
" 2 underline on\n"
" -2 underline off\n"
" 3 reverse on\n"
" -3 reverse off\n"
"\n"
" PalmOS only:\n"
"\n"
" 80..87 select system font\n"
" 90..93 select custom font\n"
"\n"
" Example:\n"
"\n"
"? cat(1);\"Bold\";cat(0)\n"
"\n"
},
{ "INKEY", "FUNCTION",
"_\bI_\bN_\bK_\bE_\bY",
" This function returns the last key-code in keyboard buffer, or\n"
" an empty string if there are no keys.\n"
"\n"
" Special key-codes like the function-keys (PC) or the\n"
" hardware-buttons (PalmOS) are returned as 2-byte string.\n"
"\n"
" Example:\n"
"\n"
"k=INKEY\n"
"IF LEN(k)\n"
" IF LEN(k)=2\n"
" ? \"H/W #\"+ASC(RIGHT(k,1))\n"
" ELSE\n"
" ? k; \" \"; ASC(k)\n"
" FI\n"
"ELSE\n"
" ? \"keyboard buffer is empty\"\n"
"FI\n"
"\n"
},
{ "MYSQL.CONNECT", "FUNCTION",
"_\bM_\bY_\bS_\bQ_\bL_\b._\bC_\bO_\bN_\bN_\bE_\bC_\bT _\b(_\bh_\bo_\bs_\bt_\b,_\b _\bd_\ba_\bt_\ba_\bb_\ba_\bs_\be_\b,_\b _\bu_\bs_\be_\br_\b,_\b _\b[_\bp_\ba_\bs_\bs_\bw_\bo_\br_\bd_\b]_\b)",
" Connects/reconnects to the server\n"
"\n"
},
{ "MYSQL.QUERY", "FUNCTION",
"_\bM_\bY_\bS_\bQ_\bL_\b._\bQ_\bU_\bE_\bR_\bY _\b(_\bh_\ba_\bn_\bd_\bl_\be_\b,_\b _\bs_\bq_\bl_\bs_\bt_\br_\b)",
" Send command to mysql server\n"
"\n"
},
{ "MYSQL.DBS", "FUNCTION",
"_\bM_\bY_\bS_\bQ_\bL_\b._\bD_\bB_\bS _\b(_\bh_\ba_\bn_\bd_\bl_\be_\b)",
" Get a list of the databases\n"
"\n"
},
{ "MYSQL.TABLES", "FUNCTION",
"_\bM_\bY_\bS_\bQ_\bL_\b._\bT_\bA_\bB_\bL_\bE_\bS _\b(_\bh_\ba_\bn_\bd_\bl_\be_\b)",
" Get a list of the tables\n"
"\n"
},
{ "MYSQL.FIELDS", "FUNCTION",
"_\bM_\bY_\bS_\bQ_\bL_\b._\bF_\bI_\bE_\bL_\bD_\bS _\b(_\bh_\ba_\bn_\bd_\bl_\be_\b,_\b _\bt_\ba_\bb_\bl_\be_\b)",
" Get a list of the fields of a table\n"
"\n"
},
{ NULL, NULL, NULL, NULL } };