⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdlib.vbl

📁 VmBasic是一款基于虚拟机的结构化的编程语言
💻 VBL
字号:
'==================================================
' StdLib.VBL                  by Lin Wei 5/2/2002
' 标准预连接库为VmBasic提供一些常用或者扩充的功能
' 每次编译的时候编译程序会自动把它和源程序进行预连
' 接,因此对于扩充一个脚本引擎需要分两步:继承重载
' 虚拟机类的端口输出方法使之扩充;为新的虚拟机脚本
' 写一个库,就是现在你看到的这个文件。
' 这个标准库主要通过内嵌汇编,提供一些Basic语言常
' 用的过程和函数,诸如SIN/COS等
'==================================================





'===================================================
' 数学函数的定义,通过内嵌汇编实现数学运算

FUNCTION SIN!(X!)
    DIM SHARED STATIC_FLOAT!
    STATIC_FLOAT!=X!
    VASM("LD int r3,[VFLO_STATIC_FLOAT]")
    VASM("IN [VFLO_STATIC_FLOAT],16")
    SIN!=STATIC_FLOAT!
END FUNCTION

FUNCTION COS!(X!)
    DIM SHARED STATIC_FLOAT!
    STATIC_FLOAT!=X!
    VASM("LD int r3,[VFLO_STATIC_FLOAT]")
    VASM("IN [VFLO_STATIC_FLOAT],17")
    COS!=STATIC_FLOAT!
END FUNCTION

FUNCTION TAN!(X!)
    DIM SHARED STATIC_FLOAT!
    STATIC_FLOAT!=X!
    VASM("LD int r3,[VFLO_STATIC_FLOAT]")
    VASM("IN [VFLO_STATIC_FLOAT],18")
    TAN!=STATIC_FLOAT!
END FUNCTION

FUNCTION SQR!(X!)
    DIM SHARED STATIC_FLOAT!
    STATIC_FLOAT!=X!
    VASM("LD int r3,[VFLO_STATIC_FLOAT]")
    VASM("IN [VFLO_STATIC_FLOAT],19")
    SQR!=STATIC_FLOAT!
END FUNCTION

FUNCTION ABS!(X!)
    DIM SHARED STATIC_FLOAT!
    STATIC_FLOAT!=X!
    VASM("LD int r3,[VFLO_STATIC_FLOAT]")
    VASM("IN [VFLO_STATIC_FLOAT],21")
    ABS!=STATIC_FLOAT!
END FUNCTION

FUNCTION ABS(X)
    IF X<0 THEN
       ABS=-X
    ELSE
       ABS=X
    END IF
END FUNCTION

FUNCTION CHR$(X)
    DIM SHARED STATIC_STR$
    DIM SHARED STATIC_INT
    STATIC_STR$=" "
    STATIC_INT=X
    VASM("LD int r3,[VSTR_STATIC_STR]")
    VASM("LD int r2,0")
    VASM("LD int r1,[VINT_STATIC_INT]")
    VASM("IN r1,13")
    CHR$=STATIC_STR$
END FUNCTION

FUNCTION FTIMER()
    DIM SHARED STATIC_INT
    VASM("IN [VINT_STATIC_INT],15")
    FTIMER=STATIC_INT
END FUNCTION
'===================================================
' 游戏功能,支持

FUNCTION NEWCANVAS(WIDTH,HEIGHT)
    DIM SHARED STATIC_INT1,STATIC_INT2
    STATIC_INT1=WIDTH
    STATIC_INT2=HEIGHT
    VASM("LD int r2,[VINT_STATIC_INT1]")
    VASM("LD int r3,[VINT_STATIC_INT2]")
    VASM("OUT 50,0")
    VASM("LD int [VINT_STATIC_INT1],r3")
    NEWCANVAS=STATIC_INT1
END FUNCTION

FUNCTION FREECANVAS(CANVAS)
    DIM SHARED STATIC_INT
    STATIC_INT=CANVAS
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 51,0")
END FUNCTION

FUNCTION BLITCANVAS(DEST,SRC,DX,DY,W,H,X,Y,COLORKEY)
    DIM SHARED STATIC_INT
    LOADPTR STATIC_INT COLORKEY
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 53,0")
END FUNCTION

FUNCTION LOADCANVAS(FILE$)
    DIM SHARED STATIC_INT
    LOADPTR STATIC_INT FILE$
    VASM("LD int r2,[VINT_STATIC_INT]")
    VASM("LD int r3,[r2]")
    VASM("OUT 52,0")
    VASM("LD int [VINT_STATIC_INT],r3")
    LOADCANVAS=STATIC_INT
END FUNCTION

FUNCTION SHOWCANVAS(CANVAS)
    DIM SHARED STATIC_INT
    STATIC_INT=CANVAS
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 54,0")
END FUNCTION

FUNCTION PIXEL(CANVAS,X,Y,COLOR)
    DIM SHARED STATIC_INT
    LOADPTR STATIC_INT COLOR
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 55,0")
END FUNCTION

FUNCTION READPIXEL(CANVAS,X,Y)
    DIM SHARED STATIC_INT
    LOADPTR STATIC_INT Y
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 56,0")
    VASM("LD int [VINT_STATIC_INT],r3")
    READPIXEL=STATIC_INT
END FUNCTION

FUNCTION KEYPRESS(KEY)
    DIM SHARED STATIC_INT
    STATIC_INT=KEY
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 60,0")
    VASM("LD int [VINT_STATIC_INT],r3")
    KEYPRESS=STATIC_INT
END FUNCTION

FUNCTION FILLCANVAS(CANVAS,X,Y,W,H,COLOR)
    DIM SHARED STATIC_INT
    LOADPTR STATIC_INT COLOR
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 57,0")
END FUNCTION

FUNCTION CLOSEGRAPH()
    VASM("OUT 58,0")
END FUNCTION

FUNCTION RANDOM(X)
    DIM SHARED STATIC_INT
    STATIC_INT=X
    VASM("LD int r3,[VINT_STATIC_INT]")
    VASM("OUT 59,0")
    VASM("LD int [VINT_STATIC_INT],r3")
    RANDOM=STATIC_INT
END FUNCTION

KEY_UP=38
KEY_DOWN=40
KEY_LEFT=37
KEY_RIGHT=39
KEY_SPACE=32
KEY_ESCAPE=27
KEY_ENTER=13

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -