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