<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to basicref</title><link>https://sourceforge.net/p/theengine/wiki/basicref/</link><description>Recent changes to basicref</description><atom:link href="https://sourceforge.net/p/theengine/wiki/basicref/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 09 Sep 2012 11:30:02 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/theengine/wiki/basicref/feed" rel="self" type="application/rss+xml"/><item><title>WikiPage basicref modified by Ekkehard Morgenstern</title><link>https://sourceforge.net/p/theengine/wiki/basicref/</link><description>&lt;pre&gt;--- v5
+++ v6
@@ -117,5 +117,7 @@
 
 **DATE$** - a representation of the current date in YYYY-MM-DD format
 
+------------------
+
 [[project_admins]]
 [[download_button]]
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ekkehard Morgenstern</dc:creator><pubDate>Sun, 09 Sep 2012 11:30:02 -0000</pubDate><guid>https://sourceforge.net490686acd6601a7df08255bf59b970dd095172cb</guid></item><item><title>WikiPage basicref modified by Ekkehard Morgenstern</title><link>https://sourceforge.net/p/theengine/wiki/basicref/</link><description>&lt;pre&gt;--- v4
+++ v5
@@ -67,7 +67,7 @@
 
 **a = b** - equality test
 
-**a != b** - inequality test
+**a &lt;&gt; b** - inequality test
 
 **a &lt;= b** - less or equal test
 
@@ -111,8 +111,6 @@
 Built-in Variables
 ------------------
 
-*(incomplete section)*
-
 **WHY$** - last failure reason report
 
 **TI$** or **TIME$** - a representation of the current time in HH:MM:SS format (24 hour)
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ekkehard Morgenstern</dc:creator><pubDate>Sat, 08 Sep 2012 18:59:18 -0000</pubDate><guid>https://sourceforge.netaddde129e90c671c889dde7bc8e6ab5455e1151a</guid></item><item><title>WikiPage basicref modified by Ekkehard Morgenstern</title><link>https://sourceforge.net/p/theengine/wiki/basicref/</link><description>&lt;pre&gt;--- v3
+++ v4
@@ -1,11 +1,16 @@
 BASIC Interpreter Reference
----------------------------
+===========================
+
+Much on this page is probably still incomplete. I'll add more descriptions as time permits.
+
+Commands / Statements
+---------------------
 
 exit/quit - exit the interpreter (currently hardcoded)
 
-**EXIT** - to be done
+**EXIT** - to be done (as a true BASIC statement)
 
-**QUIT** - to be done
+**QUIT** - to be done (as a true BASIC statement)
 
 **WHY** - gives detailed reason for last error (also in WHY$ variable) (useful for debugging interpreter)
 
@@ -21,9 +26,65 @@
 
 **RETURN** - returns from a GOSUB call
 
-*Expressions*
+Expressions
+-----------
 
-*(incomplete section)*
+**alpha**  - a numeric variable name or statement label. Name must begin with a letter or underscore, and may contain letters, digits or underscores afterwards. The variable is considered to be a label if used alone in statement context.
+
+**alpha$**  - a string variable; string length is limited only by memory.
+
+**var(n)**  - an array (string$ or numeric). No **DIM** required. Arrays are automatically resized. The maximum array size is 65536 elements (to avoid memory-related crashes due to a program running haywire).
+
+**1234.53** - a number. All numbers are floating-point, except in integer context. To convert them to an integer, numbers are truncated (rounded towards zero).
+
+**( e )** - sub expressions
+
+**+a** - unary plus operator (does nothing)
+
+**-a** - unary minus operator (negation)
+
+**NOT a** - unary NOT operator (binary inversion of integral number)
+
+**a * b** - multiplication
+
+**a / b** - division
+
+**a MOD b** - division remainder (modulo operation)
+
+**a ^ b** - power operation
+
+**a + b** - addition
+
+**a$ + b$** - string concatenation
+
+**a$ &amp; b$** - string concatenation
+
+**a - b** - subtraction
+
+**a SHL b** - integral binary shift left operation
+
+**a SHR b** - integral binary shift right operation
+
+**a = b** - equality test
+
+**a != b** - inequality test
+
+**a &lt;= b** - less or equal test
+
+**a &gt;= b** - greater or equal test
+
+**a &lt; b** - less than test
+
+**a &gt; b** - greater than test
+
+**a AND b** - binary integer AND operation
+
+**a OR b** - binary integer OR operation
+
+**a XOR b** - binary integer XOR operation
+
+Functions
+---------
 
 **STR$(n)** - converts number to string
 
@@ -47,7 +108,8 @@
 
 **RND(n)** -- return random number in the range 0 to *n*, exclusively. A good value for *n* is 1.
 
-*Variables*
+Built-in Variables
+------------------
 
 *(incomplete section)*
 
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ekkehard Morgenstern</dc:creator><pubDate>Sat, 08 Sep 2012 18:57:51 -0000</pubDate><guid>https://sourceforge.netd27a617d6f9fbf1fc43351c258f25933ec8bf412</guid></item><item><title>WikiPage basicref modified by Ekkehard Morgenstern</title><link>https://sourceforge.net/p/theengine/wiki/basicref/</link><description>&lt;pre&gt;--- v2
+++ v3
@@ -45,15 +45,17 @@
 
 **MID$(a$,p,n)** or **MID$(a$,p)** -- returns sub string of a string starting at position *p* and progressing for at most *n* characters (if omitted, all that remain)
 
+**RND(n)** -- return random number in the range 0 to *n*, exclusively. A good value for *n* is 1.
+
 *Variables*
 
 *(incomplete section)*
 
-*WHY$* - last failure reason report
+**WHY$** - last failure reason report
 
-*TI$* or *TIME$* - a representation of the current time in HH:MM:SS format (24 hour)
+**TI$** or **TIME$** - a representation of the current time in HH:MM:SS format (24 hour)
 
-*DATE$* - a representation of the current date in YYYY-MM-DD format
+**DATE$** - a representation of the current date in YYYY-MM-DD format
 
 [[project_admins]]
 [[download_button]]
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ekkehard Morgenstern</dc:creator><pubDate>Sat, 08 Sep 2012 16:41:20 -0000</pubDate><guid>https://sourceforge.neta22742a3eec2b8b3acdcb03f44992103053335a0</guid></item><item><title>WikiPage basicref modified by Ekkehard Morgenstern</title><link>https://sourceforge.net/p/theengine/wiki/basicref/</link><description>&lt;pre&gt;--- v1
+++ v2
@@ -54,3 +54,6 @@
 *TI$* or *TIME$* - a representation of the current time in HH:MM:SS format (24 hour)
 
 *DATE$* - a representation of the current date in YYYY-MM-DD format
+
+[[project_admins]]
+[[download_button]]
&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ekkehard Morgenstern</dc:creator><pubDate>Sat, 08 Sep 2012 16:39:25 -0000</pubDate><guid>https://sourceforge.net13ec4f32d9786703354bbb0abc95fc0010b975d0</guid></item><item><title>WikiPage basicref modified by Ekkehard Morgenstern</title><link>https://sourceforge.net/p/theengine/wiki/basicref/</link><description>BASIC Interpreter Reference
---------------------------

exit/quit - exit the interpreter (currently hardcoded)

**EXIT** - to be done

**QUIT** - to be done

**WHY** - gives detailed reason for last error (also in WHY$ variable) (useful for debugging interpreter)

**PRINT** - print a line of text; currently, the tab character is output as an undefined character, because it is not interpreted yet. Can be abbreviated by **?**.

**LET** - (optional before assignment) an assignment expression, i.e. *LET A = 5*

**LABEL** - (optional before labels) defines a label, i.e. *LABEL alpha*

**GOTO** - goes to a label, i.e. *GOTO alpha*

**GOSUB** - goes to a label, remembering return position, i.e. *GOSUB alpha*

**RETURN** - returns from a GOSUB call

*Expressions*

*(incomplete section)*

**STR$(n)** - converts number to string

**DEC$(n)** or **DEC$(n,m)** -- convert number to string (m = number of digits)

**HEX$(n)** or **HEX$(n,m)** -- convert number to string (m = number of digits)

**OCT$(n)** or **OCT$(n,m)** -- convert number to string (m = number of digits)

**BIN$(n)** or **BIN$(n,m)** -- convert number to string (m = number of digits)

**VAL(a$)**  - converts string to number

**ASC(a$)** - returns ordinal number of first character in string

**LEFT$(a$,n)** -- returns left-hand sub string of a string (positions are 1-based)

**RIGHT$(a$,n)** -- returns right-hand sub string of a string (positions are 1-based)

**MID$(a$,p,n)** or **MID$(a$,p)** -- returns sub string of a string starting at position *p* and progressing for at most *n* characters (if omitted, all that remain)

*Variables*

*(incomplete section)*

*WHY$* - last failure reason report

*TI$* or *TIME$* - a representation of the current time in HH:MM:SS format (24 hour)

*DATE$* - a representation of the current date in YYYY-MM-DD format
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ekkehard Morgenstern</dc:creator><pubDate>Sat, 08 Sep 2012 16:36:48 -0000</pubDate><guid>https://sourceforge.net3d24ab0657b7166ce9560e1794643061cf258d00</guid></item></channel></rss>