Diff for /gforth/kernel/Attic/special.fs between versions 1.3 and 1.8

version 1.3, 1997/08/31 19:32:31 version 1.8, 1999/03/23 20:24:27
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= 
     /line min >r s"-buffer r@ cmove  [IF] : s" [ELSE] :noname [THEN]
     s"-buffer r> ;          [char] " parse
 :noname    [char] " parse postpone SLiteral ;          /line min >r s"-buffer r@ cmove
           s"-buffer r> ;
   has? compiler [IF]
   :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 @var{ccc} delimited by a @code{"}
     \G (double quote). At run-time, return the length, @var{u}, and the
     \G start address, @var{c-addr} of the string. Interpretation: parse
     \G the string as before, and return @var{c-addr}, @var{u}. The
     \G string is stored in a temporary buffer which may be overwritten
     \G 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  interpret/compile: What's ( "name" -- ad Line 52  interpret/compile: What's ( "name" -- ad
 :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 @var{ccc} delimited by a " (double
     \G quote). At run-time, display the string. Interpretation semantics
     \G for this word are undefined in ANS Forth. Gforth's interpretation
     \G semantics are to display the string. This is the simplest way to
     \G display a string from within a definition; see examples below.
   
 \ DOES>                                                17mar93py  \ DOES>                                                17mar93py
   
Line 55  interpret/compile: DOES>  ( compilation Line 71  interpret/compile: DOES>  ( compilation
 ' 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]
   

Removed from v.1.3  
changed lines
  Added in v.1.8


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>