易码技术论坛

 找回密码
 加入易码
搜索
楼主: litianzzk

[工具] 【原创】NC3000 GVBASIC+再次增强版,首创带参数call函数,加入大量函数!

[复制链接]
发表于 2006-8-21 15:16:07 | 显示全部楼层
引用第74楼litianzzk2006-08-16 19:49发表的“Re:Re:Re:【原创】NC3000 GVBASIC+再次增强版,首创带参数call函数,加入大量函”:

那个程序要在应用程序目录下才可以运行的,因为里边有一个路径“/应用程序/BASIC2_1.bin”,你改成“/sysdir/BASIC2_1.bin”才可以在sysdir目录下运行的。

汗死,没有啊
我找到一个GVBASIC+.bin  是原来的GVBAISC+的把  我改了无效啊
貌似无关啊??

立天能不能做一个带参数的CALL的查找函数,比如:
CALL SEARCH,DES1,DES2,DES3,LEN,RE
上面表示从内存DES1开始搜索放在DES3长度为LEN的数据,查找至DES2结束,如查到则把找到的地址放在变量RE中,没找到则RE返回负数
还有没有人能告诉我用你的CALL FOPEN函数打开的文件怎么得到文件长度啊?不能的话能不能写一个函数啊?
求了~~~~
发表于 2006-8-21 15:46:41 | 显示全部楼层
新系统更新在即~~~
楼上不要担心
发表于 2006-8-21 15:48:18 | 显示全部楼层
我昨天替换GVB+
结果弄出了一个僵尸目录- -
发表于 2006-8-21 16:29:27 | 显示全部楼层
崇拜啊!强人!!!!!哪天TC1000S也能到这种程度就好了
发表于 2006-8-21 16:35:53 | 显示全部楼层
替换GVB+?
汗,SYSDIR的吗...
发表于 2006-8-21 17:50:13 | 显示全部楼层
引用第85楼wqx12006-08-21 16:35发表的“”:
替换GVB+?
汗,SYSDIR的吗...
是啊..
今天下东西,把线动了一下.结果....僵尸*2.....
还是M大的僵尸.....
只有格了.....
pac到我手都痛了55555
发表于 2006-8-26 14:48:30 | 显示全部楼层
我相当敬佩立天!!!更支持立天作出更好的软件!!!谢谢!
发表于 2006-8-26 14:53:13 | 显示全部楼层
没有不佩服的
说不定他现在正在努力什么新的软件
我们的NC3000因立天而精彩
我们为你而加油~~~~~
发表于 2006-8-26 14:56:11 | 显示全部楼层
引用第32楼十七·烈行风2006-08-09 17:50发表的“”:
4242
2600的移植就交给楼上了~~
2600挂了,不然真的很有冲动要移植一下的,这个GVB+实在是太强了.
发表于 2006-9-9 09:02:14 | 显示全部楼层
3000的立天3。6内核中的BAS+支持RUN NEW LOAD
但支持FOPEN之类的命令吗????
没BIN.DAT啊
发表于 2006-9-9 09:08:17 | 显示全部楼层
多谢回答
 楼主| 发表于 2006-9-9 10:10:36 | 显示全部楼层
引用第81楼behaizi2006-08-21 15:16发表的“Re:Re:Re:Re:【原创】NC3000 GVBASIC+再次增强版,首创带参数call函数,加入大量函”:
立天能不能做一个带参数的CALL的查找函数,比如:
CALL SEARCH,DES1,DES2,DES3,LEN,RE
上面表示从内存DES1开始搜索放在DES3长度为LEN的数据,查找至DES2结束,如查到则把找到的地址放在变量RE中,没找到则RE返回负数
还有没有人能告诉我用你的CALL FOPEN函数打开的文件怎么得到文件长度啊?不能的话能不能写一个函数啊?
求了~~~~
这几天更新中...
并且会有2600版本.
 楼主| 发表于 2006-9-9 10:14:36 | 显示全部楼层
引用第90楼yangxiang2006-09-09 09:02发表的“”:
3000的立天3。6内核中的BAS+支持RUN NEW LOAD
但支持FOPEN之类的命令吗????
没BIN.DAT啊
要下载BIN.DAT才能使用FOPEN之类的命令的.
发表于 2006-9-10 12:03:13 | 显示全部楼层
偶3000运行就死机~
发表于 2006-9-10 17:36:44 | 显示全部楼层
虽然没看懂
但这就叫强啊
发表于 2006-9-30 09:22:32 | 显示全部楼层
good^_^
发表于 2007-9-29 18:42:00 | 显示全部楼层
没有GVBASIC++就没有今天...
 楼主| 发表于 2006-8-9 13:13:16 | 显示全部楼层 |阅读模式
软件名称:NC3000 GVBASIC+再次增强版

软件大小:32

软件类型:bas+bin

适用机型:nc3000

NC 3000 GVBASIC+再次增强版说明:
为方便以后加强版本的命名,我将这个版本的GVBASIC+命名为BAISC2_1.bin(代表增强版第一版)
我将之前版本的PLAY语句的残留代码删除了,空出几百个字节,于是加入了一些常用子程序以及三个新指令,他们是:
-------------------------------------------------------------
NEW
用法   NEW ADD
说明   指定地址ADD到 $6000为用户内存,即系统不占用这段内存.ADD的值必需大于批量法地址适当值
   否则会因为变量没有或不足内存存放而出错,
   批量法地址:当BAS文件小于8K时,为8192+BAS文件大小;当BAS文件大于等于8K时为9216
   使用该指令可能导至某些变量丢失,建议在没有定义任何变量前使用
举例
5 A=20480:NEW A
-------------------------------------------------------------
RUN
用法   RUN FILE$
说明   运行一个BAS文件(这个bas文件的后缀名不一定是".bas"),运行后不会返回原来的文件
举例
50 RUN "A.BAS"
-------------------------------------------------------------
LOAD
用法   LOAD FILE$,DES[,LENGTH]
说明   将文件名为FILE$的bin代码文件载入LENGTH字节到地址DES,载入长度缺省为 $800,载入后关闭文件
   使用后检查地址$AF6C(44908)的值,为1成功,否则失败
举例
5 A=20480:NEW AOAD "BIN.DAT",A:IF NOT PEEK(44908) THEN END
--------------------------------分-----隔-----线----------------------------------------------------------------------

BIN.DAT文件说明:
将这个文件下载到"/BASIC文件"中.
这个文件中,我写了一些比较常用的函数,使用这些函数必须先运行以下代码,以定义程序存放的用户内存,载入文件,定义地址:
5 A =20480:ERR =44908
6 NEW A: LOAD "BIN.DAT",A: IF PEEK(ERR) THEN 10  ELSE END
10 FOPEN =PEEK(A) +PEEK(A +1) *256
11 FREAD =PEEK(A +2 *1) +PEEK(A +2 *1 +1) *256
12 FWRITE =PEEK(A +2 *2) +PEEK(A +2 *2 +1) *256
13 FCLOSE =PEEK(A +2 *3) +PEEK(A +2 *3 +1) *256
14 OPENDIR =PEEK(A +2 *4) +PEEK(A +2 *4 +1) *256
15 DELDIR =PEEK(A +2 *5) +PEEK(A +2 *5 +1) *256
16 DELFILE =PEEK(A +2 *6) +PEEK(A +2 *6 +1) *256
17 OUTTXT =PEEK(A +2 *7) +PEEK(A +2 *7 +1) *256
18 WRITEBLK =PEEK(A +2 *8) +PEEK(A +2 *8 +1) *256
19 DATAMOVE =PEEK(A +2 *9) +PEEK(A +2 *9 +1) *256
20 FADEIN =PEEK(A +2 *10) +PEEK(A +2 *10 +1) *256
21 FADEOUT =PEEK(A +2 *11) +PEEK(A +2 *11 +1) *256
22 SETGB =PEEK(A +2 *12) +PEEK(A +2 *12 +1) *256
23 SCRX =PEEK(A +2 *13) +PEEK(A +2 *13 +1) *256
24 DATAFILL =PEEK(A +2 *14) +PEEK(A +2 *14 +1) *256
25 PROBAR =PEEK(A +2 *15) +PEEK(A +2 *15 +1) *256
26 HELP =PEEK(A +2 *16) +PEEK(A +2 *16 +1) *256
27 NANDREAD =PEEK(A +2 *17) +PEEK(A +2 *17 +1) *256
28 REFRESH =PEEK(A +2 *18) +PEEK(A +2 *18 +1) *256
29 CLSGB =PEEK(A +2 *19) +PEEK(A +2 *19 +1) *256

带参数的call函数调用方法一般是CALL 程序地址[,参数1[,参数2...]]
其中用中括号括起来的参数为可缺省值,参数的类型可以是STR :字符串,WORD:字数据(0-65535),BYTE:字节数据(0-255)
BIN.DAT文件中的函数有以下这些:
-------------------------------------------------------------
FOPEN
原型   CALL FOPEN,STR FILE,BYTE MODE[,BYTE ATTR1,BYTE ATTR2]
功能   打开文件
说明:   以方式MODE打开文件FILE
   MODE的意义与汇编中打开文件中断int$0515的参数$08c9相同,例如为112新建,192修改,追加,128只读
   属性ATTR1,ATTR2意义与汇编打开文件时的参数$08ca,$08cb相同,可以缺省,但以新建方式打开时最好指定属性(例如239,239为RWX,其它属性可参考汇编相关帖子),否则可能会生成无法删除的文件
   使用后检查地址$AF6C(44908)的值,为1成功,否则失败
举例
40 CALL FOPEN,"/sysdir/xh_graph",128
50 IF PEEK(44908) THEN PRINT "打开成功" ELSE PRINT "打开失败"
-------------------------------------------------------------
FREAD
原型   CALL FREAD,WORD DES,WORD LENGTH[,WORD FSEEK1[,WORD FSEEK2]]
功能   读文件
说明   读取当前打开的文件的LENGTH字节到目标地址DES
   文件指针FSEEK=FSEEK2*65536+FSEEK1,FSEEK2缺省时为0,FSEEK1,FSEEK2均缺省时为当前值
   使用后检查地址$AF6C(44908)的值,为1成功,否则失败
举例
40 CALL FREAD,12288,32,64
50 IF PEEK(44908) THEN PRINT "读取成功" ELSE PRINT "读取失败"
-------------------------------------------------------------
FWRITE
原型   CALL FWRITE,WORD DES,WORD LENGTH[,WORD FSEEK1[,WORD FSEEK2]]
功能   写文件
说明   将目标地址DES的LENGTH字节写入到当前打开的文件
   文件指针FSEEK=FSEEK2*65536+FSEEK1,FSEEK2缺省时为0,FSEEK1,FSEEK2均缺省时为当前值
   使用后检查地址$AF6C(44908)的值,为1成功,否则失败
举例
40 CALL FWRITE,12288,32,64
50 IF PEEK(44908) THEN PRINT "写入成功" ELSE PRINT "写入失败"
-------------------------------------------------------------
FCLOSE
原型   CALL FCLOSE
功能   关闭文件
说明   关闭由FOPEN打开的文件
举例
40 CALL FCLOSE
-------------------------------------------------------------
OPENDIR
原型   CALL OPENDIR,STR DIR
功能   打开文件夹,不存在则创建
说明   打开文件夹DIR
   使用后检查地址$AF6C(44908)的值,为1成功,否则失败
举例
40 A$="/文本文件":CALL OPENDIR,A$
50 IF PEEK(44908) THEN PRINT "打开成功" ELSE PRINT "打开失败"
-------------------------------------------------------------
DELDIR
原型   CALL DELDIR,STR DIR
功能   删除空文件夹
说明   删除空文件夹DIR
   使用后检查地址$AF6C(44908)的值,为1成功,否则失败
举例
40 A$="/文本文件":CALL DELDIR,A$
50 IF PEEK(44908) THEN PRINT "删除成功" ELSE PRINT "删除失败"
-------------------------------------------------------------
DELFILE
原型   CALL DELFILE,STR FILE
功能   删除文件
说明   删除文件FILE
   使用后检查地址$AF6C(44908)的值,为1成功,否则失败
举例
40 A$="/文本文件/a.txt":CALL DELDIR,A$
50 IF PEEK(44908) THEN PRINT "删除成功" ELSE PRINT "删除失败"
-------------------------------------------------------------
OUTTXT
原型   CALL OUTTXT,STR STRING,BYTE X,BYTE Y,BYTE FONT[,BYTE MODE]
功能   输出文字到屏幕
说明   将字符串STRING以方式MODE,字体FONT输出到坐标X,Y(不折行)
   font为0:8*16字体,为1:6*12字体
   MODE 的意义参考函数WRITEBLK
举例
40 A$="DEMO1":CALL OUTTXT,A$,13,25,0,0:REM 以copy方式直接输出到屏幕
40 A$="DEMO2":CALL OUTTXT,A$,68,25,1,0+64:REM 以反显(not)方式输出到图形缓存
-------------------------------------------------------------
WRITEBLK
原型   CALL WRITEBLK,WORD DES,byte X,byte Y,byte WIDTH,byte HIGHT[,byte MODE]
功能   贴图
说明   以方式MODE将图片地址为DES,长宽为WIDTH,HIGHT的图片输出到坐标X,Y
   MODE 缺省时为0(copy写到屏幕)
   当MODE的bit6=1时向缓冲区作图,否则直接画在屏幕上
   bit 0-2:
   0:Copy
   1:Not
   2:Or
   3:And
   4:Xor
举例
40 CALL FOPEN,"/sysdir/xh_graph",128
50 IF PEEK(44908) THEN 60 ELSE PRINT "打开失败":END
60 CALL FREAD,12288,1600
70 CALL FCLOSE
80 CALL WRITEBLK,12288,0,0,160,80,1
-------------------------------------------------------------
DATAMOVE
原型   CALL DATAMOVE,WORD DES,WORD SOR,WORD LENGTH
功能   数据移动
说明   将源地址为SOR,长度为LENGTH的内存内容移动到目标地址DES
举例
40 CALL 12288,6592,1600
-------------------------------------------------------------
FADEIN
原型   CALL FADEIN
功能   屏幕淡入
说明   注意,先将要显示的内容发送到图形缓冲区,再调用
举例
40 CALL CLSGB:REM 清除图形缓存
50 CALL OUTTXT,"DEMO",34,28,0,0+64
60 CALL FADEIN
-------------------------------------------------------------
FADEOUT
原型   CALL FADEOUT
功能   屏幕淡出
说明   注意,运行后屏幕内容将会转移到缓冲区
举例
40 CALL OUTTXT,"DEMO",34,28,0,0:CALL FADEOUT
-------------------------------------------------------------
SETGB
原型   CALL SETGB,WORD DES
功能   设置图形缓冲区(默认为$59c0,即十进制的22976)
说明   将DES设置为图形缓冲区首地址
举例
40 CALL SETGB,12288
-------------------------------------------------------------
SCRX
原型   CALL SCRX,BYTE MODE[,WORD DES,BYTE WORH]
功能   滚屏一个像素
说明   指定地址DES中的宽或高(以字节计算,上下滚屏时为高(此时宽为20字节),左右滚屏时为宽(此时高为80))为WORH的图片一起参与滚屏
   该图片将滚屏入屏幕(或图形缓冲区),缺省为空白图片
   MODE的bit6=1为缓冲区滚屏,否则为直接在屏幕上滚屏
   bit0-1意义是:
   0,1,2,3分别为上,下,左,右滚屏
举例
60 CALL CLSGB
70 A$(0) ="我的每个幻想"
71 A$(1) ="   总在每一个秋天飞扬"
72 A$(2) ="我的每个悲伤"
73 A$(3) ="   总在每一个夜里生长"
74 A$(4) ="我的每次飞翔"
75 A$(5) ="   总在漫无目的的路上"
80 FOR X =0  TO 5: CALL OUTTXT,A$(X),5,0,1,64 +0
90 FOR B =1  TO 13: CALL SCRX,0,22976,12: FOR C =1  TO 100: NEXT : NEXT
100 NEXT
110 CALL FADEOUT
120 FOR A =1  TO 160
130 CALL SCRX,2,22976,20
140 NEXT
-------------------------------------------------------------
DATAFILL
原型   CALL DATAFILL,WORD DES,WORD LENGTH,BYTE DATA
功能   数据填充
说明   用数据DATA填充开始地址为DES长度为LENGTH的内存
举例
40 CALL DATAFILL,16384,320,255
-------------------------------------------------------------
PROBAR
原型   CALL PROBAR,WORD TOTAL,WORD NOW,BYTE MODE
功能   进度条
说明   总长度:TOTAL
   当前长度:NOW
   MODE=0 百分比显示,=1数字显示
举例
40 A=200:B=98:CALL PROBAR,A,B,0
-------------------------------------------------------------
HELP
原型   CALL HELP,WORD DES
功能   帮助文字
说明   将地址DES处的内容(以$00,$00结尾)显示为帮助信息
举例
40 CALL HELP,16384
-------------------------------------------------------------
NANDREAD
原型   CALL NANDREAD,WORD DES,WORD LENGTH,WORD NANDNUM,WORD OFFSET
功能   读NAND
说明   读取nand块号为NANDNUM的OFFSET处的LENGTH字节数据到地址DES
举例
40 CALL NANDREAD,16384,16,3171,16
-------------------------------------------------------------
REFRESH
原型   CALL REFRESH
功能   将图形缓冲区的内容发送到屏幕
说明   略
举例
40 CALL CLSGB:REM 清除图形缓存
50 CALL OUTTXT,"DEMO",34,28,0,0+64
60 CALL REFRESH
-------------------------------------------------------------
CLSGB
原型   CALL CLSGB
功能   清除图形缓冲区的内容
说明   略
举例
参考FADEIN
--------------------------------分-----隔-----线----------------------------------------------------------------------
源文件说明:

BAS+.65s是BASIC2_1.bin中新增代码的源文件,该文件编译后放在BASIC2_1.bin的偏移$7975处.
详细内容自己看文件.
bin.65s是BIN.DAT文件的源文件,你也可以自己修改新增你想要的函数,带参数CALL程序的编写也是很简单的(前提是你会6502汇编),因为取参子程序已经写好,可取的参数有字符串(GetSting),字数据(GetWord),字节数据(GetByte),这些子程序的用法已经在源文件中给出.

--------------------------------分-----隔-----线----------------------------------------------------------------------
其它文件说明:
demo.BAS是一个简单的演示文件,hello.txt是示例.

--------------------------------分-----隔-----线----------------------------------------------------------------------

最后,因为全部的文件都没有经过严格的debug,难免有bug,欢迎提出,当然,你也可以自己自己修改啊,源文件已经附上了嘛,呵呵.
同时当然欢迎移植到其它机型上,发挥你的想像力和动手能力,做一个我们自己的超强GVBASIC+吧!
还是那句,自己动手,丰衣足食!
                                   

立天
2006.8.9

gvbasic+.rar

47 KB, 下载次数: 8268

发表于 2008-1-21 22:42:53 | 显示全部楼层
一运行就死机怎么回事?
发表于 2008-1-23 20:14:09 | 显示全部楼层
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-28 17:16 , Processed in 0.015590 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表