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