?? stdlib.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 + -