--- gforth/kernel/Attic/special.fs 1997/05/21 20:40:18 1.1 +++ gforth/kernel/Attic/special.fs 1997/08/31 19:32:31 1.3 @@ -27,8 +27,11 @@ create s"-buffer /line chars allot :noname [char] " parse postpone SLiteral ; interpret/compile: S" ( compilation 'ccc"' -- ; run-time -- c-addr u ) \ core,file s-quote +: [IS] ( compilation "name" -- ; run-time xt -- ) \ possibly-gforth bracket-is + ' >body postpone ALiteral postpone ! ; immediate restrict + :noname ' >body ! ; -:noname ' >body postpone ALiteral postpone ! ; +' [IS] interpret/compile: IS ( addr "name" -- ) \ gforth :noname ' >body @ ; @@ -53,3 +56,49 @@ interpret/compile: DOES> ( compilation 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] + +: interpret/compile? ( xt -- flag ) + >does-code ['] S" >does-code = ; +