Vn
256 1024 * value Obj.vn.size \ 隨資料量改變
0 value Obj.vn
0 value Obj.vn.Index
: Obj.vn.初始化 ( -- )
Obj.vn.size allocate
drop dup
to Obj.vn
to Obj.vn.Index
;
: Obj.vn空間釋放 ( size -- )
Obj.vn free drop
;
: Obj.vn.size變更 ( size -- )
to Obj.vn.size
Obj.vn空間釋放
Obj.vn.初始化
;
: Obj.vn.>Float ( s" float" -- )
>float drop
Obj.vn.Index f!
Obj.vn.Index 8 + to Obj.vn.Index
;
: vn.Compiletime
s" <td " Tag$ place
tag$ +place
\ +>
\ HTML_Output
;
: vn.arg ( --- kiss )
\ ascii > word count HTML$ place
\ BL word count a1$ place
\ ascii ; word count a1$ place
0x0a word count tag$ place
tag$ count arg1$ place
arg1$ count 0x20 scan arg2$ place
arg1$ c@ arg2$ c@ - arg1$ c!
arg2$ count BL skip arg2$ place
arg2$ count 0x20 scan arg3$ place
arg2$ c@ arg3$ c@ - arg2$ c!
arg3$ count BL skip arg3$ place
;
: vn.RunTime ( -- )
vn.arg
\ tag$ count cr type cr
arg1$ count Obj.vn.>Float ( Obj.vn.Index 8 - f@ f. cr )
arg2$ count Obj.vn.>Float ( Obj.vn.Index 8 - f@ f. cr )
arg3$ count Obj.vn.>Float ( Obj.vn.Index 8 - f@ f. cr )
;
: vn \ comp: ( -<string">- ) run: ( -- addr len )
STATE @ \ 0: 執行態 非0: 編譯態
IF
\ 編譯態Compiletime:
COMPILE (S>) ,>
COMPILE vn.Compiletime
ELSE
\ 執行態Runtime:
vn.RunTime
THEN
; IMMEDIATE