标题：zwBASIC
zwBASIC各命令用法及示范
在我们提供的命令中绝大部分语句于标准qbasic是统一的，但是有个别语句暂时并不是与之完全一样，例如read/data。另外zwBASIC暂时不提供文件操作，这个缺陷也会在以后的版本中得到修改。
基本上所有的命令都有相应的示范程序，对于那些没有示范程序的命令，照标准qbasic使用就行。或照类似语句使用，例如while ……wend 与do while………loop。
2.1 定义常量，变量，数组语句
2.1.1 Common shared 命令
2.1.2 Const 命令
Const定义的对象必须在定义的时候初始化，后来的程序中不能对常量进行赋值,输入等写操作。对于普通变量的赋值用类似于:const pi = 3.14这样的语句就可以了，对于数组的赋值，类似于c语言中的数组初始化，但是要换行输入的时候记得加换行转义符’\’.
2.1.3 Dim 命令
用来定义局部变量和局部数组，定义的时候不能对它们进行初始化。对于某些命令使用陌生变量时会自动定义，而不报错，例如input，for，let等。假设语句input  x  中的x之前没有定义，但是这条语句在编译的时候不会报错，在这后面的语句中也可以使用x。但为了程序的稳健性，最好用dim语句定义之后再使用。
2.1.4 Dim shared命令
用来定义全局数组
2.2 定义函数和sub语句
2.2.1 Function命令
定义函数命令，在传参的时候，有值传递方式和地址传递方式之分，这个于qbasic是一致的，但函数调用的时候不支持STATIC选项。注意在定义function和Sub时，一定要在basic程序的最前面用declare命令声明！
2.2.2 Sub命令
2.2.3 DEF FN命令
定义单行函数。注意定义当行函数也要在程序的最开头用declare声明,单行函数的函数名应该以字母fn开头。
示范程序
2.3 声明语句
DECLARE 命令
注意function，sub命令的示范程序
2.4 选择结构语句
2.4.1 IF….THEN…..ELSE…IF…. ENDIF命令
注意else if后面要加then，不然判断语句失效. 支持单行if语句模式
2.4.2 SELECT CASE ..CASE…….. CASE ELSE…END SELECT命令
现在只支持数字类型使用这条命令
2.4.3 ON…GOSUB……..命令
2.5 循环结构语句
2.5.1 Do……………………loop命令
2.5.2 Do……………… loop until命令
2.5.3 Do while ………………loop命令
2.5.4 FOR... TO..STEP... NEXT命令
2.6 输入输出语句
2.6.1 INPUT命令
为变量赋值，回车键作为结束 
示范程序
2.6.2 PRINT命令
显示命令。如果一次显示多个对象，各对象之间用‘；’隔开，如果一行显示不完所有的对象，会自动换行显示。如果一屏显示不完，自动清屏，从屏幕的左上角开始显示。
示范程序
2.6.3 xprint命令
调试用print命令，效果于print命令一样，只是在PC机上用来调试，对象显示在编译信息栏里，真正的在小机上运行，不执行这条语句。将print命令示范程序中的print命令换成xprint，即可看到效果
2.6.4read/data命令 
与qbasic的标准语法一致,不同点是在我们自己定义的function或是sub中也可以使用read/data语句.每个function或是sub中都有自己的data栈.一个function或sub中的data语句不会影响到其他函数的data区.
示范程序
2.6.5 restore 命令 
与标准语法一致,示范程序见read/data的示范程序
2.7 其他命令
2.7.1  Let命令
可以直接用赋值符号‘＝’代替次语句，例如语句：let a = 2   和语句  a = 2效果时一样的。
2.7.2  Pause命令
暂停键，按任意键继续！
上面有太多程序用到Pause键，这里就不写出示范程序
2.7.3  Inc/dec命令
一个是自增，一个自减运算。它们操作的对象只能是数字变量
示范程序  
2.7.4  end命令
程序执行结束标识，每个basic程序都至少应该有一条end语句 
2.7.5   Rem命令
注释用，在zwBASIC中有两种注释方式，一种是整行都是注释信息，用rem语句，另一种是在一条语句后面加上符号’注释。注意用后面的注释方式时，符号’以后不要出现冒号。
zwBASIC库函数用发及示范
3.1 库函数的简要说明
这个版本的库函数，暂时不提供数学上的三角函数及文件操作函数，数学函数里面暂时只有，随机，求整，求绝对值等简单的数学函数，更多的库函数会在以后的版本中陆续推出。
3.2 字符串操作函数
3.2.1 STRCMP函数
3.2.2 STRCPY函数 
3.2.3 STRLEN函数
3.2.4 STRNCAT函数
3.2.5 STRNCMP函数
3.2.6 STRCAT函数
3.3 显示字符操作函数
3.3.1. SYSPUTCHAR函数　
对于一张BMP图，如果它的宽<=159,高<=96我们就可以在电子词典上显示出来。
首先注意要转换的必须是一张BMP图，对于jpg，gif等格式的图片可以先通过一些软件转换为bmp图片。我们的显示机制是：先将一张位图中包含的信息转换为basic程序中一个常量数组的各个成员,然后把这个数组当作putpct的最后一个参数使用。
义符”\”,直到数组赋值结束，这里的换行转义符只在定义常量的时候才用到，其它使用编译时会报错！
3.3.2. SYSPRTSTRG函数
注意此程序与print的区别，用print显示的字符，当一行显示不下，系统回自动换行显示，但SYSPRTSTRG却只显示完一行，多余的字符不会换行显示。
3.4 普通图形操作函数
3.4.1 FILLRECT函数
填充矩阵
3.4.2 CLSPART函数
清除部分屏幕
3.4.3 CIRCLE函数
画圆，前两个参数确定原点坐标，第三个参数决定半径
3.4.4 LINE函数
画线，前两个参数决定线的一端点，后两个参数决定线的另一端点
3.4.5 BOX函数
画矩阵，前两个参数决定矩形的左上点，后两个参数决定矩阵的右下点
3.4.6 SET函数
画点，前两个参数决定画点的左边，最后一个参数决定是在此处画一点，还是清楚一个点
0－清除点，1－画点
3.4.7   LINECLEAR函数 
消隐一条直线 
3.4.8 CIRCLECLEAR函数
消隐一个圆，注意这里只消隐圆的边框，圆内部的点不被消隐
3.4.9     RECTCLEAR函数 
消隐一个矩形框，只消隐矩形的边框，矩形内部的点不被消隐
3.4.10  FILLCIRCLE函数 
填充圆
3.4.11    LCDREVERSE函数 
指定区域屏幕反显
3.5 PUTPCT贴图函数
它的函数原型是 putpct(x,y,width,height,bmp!)，开始的两个参数是决定开始贴图的起始坐标，width,height分别是图片的宽和高。这里最重要的就是bmp!参数，它是记录显示图片信息的数组名，这个数组只能定义为常量数组，数组名的最后一个字符必须是”!”。 
3.6 数学函数
3.6.1 ABS函数
求一个数的绝对值
3.6.2 Int函数
求整函数
示范源程序
3.6.3 Rnd函数
随机函数，假设参数是x，随机函数返回0~x-1之中的任何一个整数
示范源程序
3.6.4 VAL函数
字符串转数字函数.
示范源程序
3.7 其他函数
3.7.1 GETKEY函数
返回按键的asc码，有些电子词典上的特殊按键对应的asc见表特殊键asc码.txt
这里需要注意的是:对于对电子词典上电源开关键，词典相关的热键等无需理会，我们的解释器会自动进行处理
pc机上的开发环境上，除了小机上的向上，向下的翻页键，其他都与小机上是统一的。
示范源程序
1.对于所有对象，包括函数名，变量名，常量名，数组名,命令等不区分大小写.
2.程序的每行最多只能有512个字节（一个汉字占两个字节）.
3.支持传统basic的行号，也可以用字符label代替.
4.一行内可以写入多条语句，各语句之间用‘：’隔开
例如：print  10:x = 4:y = 3
5.一个basic中至少有一个出口，即end语句.
6.zwBASIC不支持函数的嵌套定义，但支持函数的嵌套调用和递归调用。最多能嵌套调用50次.
7.select case语句现在只支持数字类型.
四,编译错误与原因：（信息显示再编译信息栏）
Memory Full! 内存分配不足
Var Too Long! 字符太长溢出
Zero Divided! 0做了除数或是求余数
Nesting Too Many 嵌套层数太多（包括函数嵌套，select嵌套，gosub，return等嵌套）
ERROR 中间代码出错
FILE OPEN ERROR 没有选择中间代码文件(只在pc上运行会显示的报错信息)
READ TYPE NO MATCH　　　　　　　　　　　　　read变量类型于data区数据不匹配
READ OVERFLOW 　　　　　　　　　　　　　　　read数据超过data区边界
要注意的几点:
1,每条语句最后不要加分号，不然会有解析错误的报错
2,对一行后面以’注释时，’后面不要有“:”号，否则会报错
3,当编译完一个basic，编译信息栏里提示完” 编译成功!”,但是点运行按钮，有时小机上会显示ERROR
这时请重新点击编译和运行就OK。
示范源程序