[gforth] / gforth / kernel / Attic / special.fs  

gforth: gforth/kernel/Attic/special.fs

Diff for /gforth/kernel/Attic/special.fs between version 1.3 and 1.9

version 1.3, Sun Aug 31 19:32:31 1997 UTC version 1.9, Mon May 3 09:46:20 1999 UTC
Line 1 
Line 1 
 \ words with non-default and non-immediate compilation semantics  \ words with non-default and non-immediate compilation semantics
   
 \ Copyright (C) 1996 Free Software Foundation, Inc.  \ Copyright (C) 1996,1998 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 21 
Line 21 
 \ this file comes last, because these words override cross' words.  \ this file comes last, because these words override cross' words.
   
 create s"-buffer /line chars allot  create s"-buffer /line chars allot
 :noname    [char] " parse  has? compiler 0=
   [IF] : s" [ELSE] :noname [THEN]
           [char] " parse
     /line min >r s"-buffer r@ cmove      /line min >r s"-buffer r@ cmove
     s"-buffer r> ;      s"-buffer r> ;
   has? compiler [IF]
 :noname    [char] " parse postpone SLiteral ;  :noname    [char] " parse postpone SLiteral ;
 interpret/compile: S" ( compilation 'ccc"' -- ; run-time -- c-addr u )  \ core,file     s-quote  interpret/compile: S" ( compilation 'ccc"' -- ; run-time -- c-addr u )  \ core,file     s-quote
     \G Compilation: Parse a string ccc delimited by a " (double quote). At run-time,
     \G return the length, u, and the start address, c-addr of the string. Interpretation:
     \G parse the string as before, and return c-addr, u. The string is stored in a
     \G temporary buffer which may be overwritten by subsequent uses of @code{S"}.
   [THEN]
   
   has? compiler [IF]
 : [IS] ( compilation "name" -- ; run-time xt -- ) \ possibly-gforth bracket-is  : [IS] ( compilation "name" -- ; run-time xt -- ) \ possibly-gforth bracket-is
     ' >body postpone ALiteral postpone ! ; immediate restrict      ' >body postpone ALiteral postpone ! ; immediate restrict
   
Line 41 
Line 50 
 :noname    [char] " parse type ;  :noname    [char] " parse type ;
 :noname    postpone (.") ,"  align ;  :noname    postpone (.") ,"  align ;
 interpret/compile: ." ( compilation 'ccc"' -- ; run-time -- )  \ core   dot-quote  interpret/compile: ." ( compilation 'ccc"' -- ; run-time -- )  \ core   dot-quote
     \G Compilation: Parse a string ccc delimited by a " (double quote). At run-time,
     \G display the string. Interpretation semantics for this word are undefined in
     \G the ANS Forth Standard. Gforth's interpretation semantics are to display the
     \G string. This is the simplest way to display a string from
     \G within a definition; see examples below.
   
 \ DOES>                                                17mar93py  \ DOES>                                                17mar93py
   
Line 48 
Line 62 
     dodoes, here !does ]      dodoes, here !does ]
     defstart :-hook ;      defstart :-hook ;
 :noname  :noname
     ;-hook postpone (does>) ?struc dodoes,      ;-hook ?struc exit-like postpone (does>) dodoes,
     defstart :-hook ;      defstart :-hook ;
 interpret/compile: DOES>  ( compilation colon-sys1 -- colon-sys2 ; run-time nest-sys -- ) \ core        does  interpret/compile: DOES>  ( compilation colon-sys1 -- colon-sys2 ; run-time nest-sys -- ) \ core        does
   
 ' IS Alias TO ( addr "name" -- ) \ core-ext  ' IS Alias TO ( addr "name" -- ) \ core-ext
 immediate  immediate
   
   
 doer? :docon [IF]  
 : docon: ( -- addr )    \ gforth  
     \G the code address of a @code{CONSTANT}  
     ['] bl >code-address ;  
 [THEN]  
   
 : docol: ( -- addr )    \ gforth  
     \G the code address of a colon definition  
     ['] on >code-address ;  
 \ !! mark on  
   
 doer? :dovar [IF]  
 : dovar: ( -- addr )    \ gforth  
     \G the code address of a @code{CREATE}d word  
     \ in rom-applications variable might be implemented with constant  
     \ use really a created word!  
     ['] ??? >code-address ;  
 [THEN]  
   
 doer? :douser [IF]  
 : douser: ( -- addr )   \ gforth  
     \G the code address of a @code{USER} variable  
     ['] sp0 >code-address ;  
 [THEN]  
   
 doer? :dodefer [IF]  
 : dodefer: ( -- addr )  \ gforth  
     \G the code address of a @code{defer}ed word  
     ['] source >code-address ;  
 [THEN]  
   
 doer? :dofield [IF]  
 : dofield: ( -- addr )  \ gforth  
     \G the code address of a @code{field}  
     ['] reveal-method >code-address ;  
 [THEN]  
   
 has-prims 0= [IF]  
 : dodoes: ( -- addr )   \ gforth  
     \G the code address of a @code{field}  
     ['] spaces >code-address ;  
 [THEN]  [THEN]
   
   has? compiler [IF]
 : interpret/compile? ( xt -- flag )  : interpret/compile? ( xt -- flag )
     >does-code ['] S" >does-code = ;      >does-code ['] S" >does-code = ;
   [ELSE]
   : interpret/compile?
       false ;
   [THEN]
   


Generate output suitable for use with a patch program
Legend:
Removed from v.1.3  
changed lines
  Added in v.1.9

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help