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