--- gforth/cross.fs 2000/09/23 15:05:58 1.86 +++ gforth/cross.fs 2001/01/29 11:39:43 1.91 @@ -17,7 +17,7 @@ \ You should have received a copy of the GNU General Public License \ along with this program; if not, write to the Free Software -\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. 0 [IF] @@ -802,6 +802,7 @@ false DefaultValue dcomps false DefaultValue hash false DefaultValue xconds false DefaultValue header +false DefaultValue new-input [THEN] true DefaultValue interpreter @@ -1515,16 +1516,22 @@ variable ResolveFlag >CROSS \ Header states 12dec92py -: flag! ( 8b -- ) tlast @ dup >r T c@ xor r> c! H ; +bigendian [IF] 0 [ELSE] tcell 1- [THEN] Constant flag+ +: flag! ( w -- ) tlast @ flag+ + dup >r T c@ xor r> c! H ; VARIABLE ^imm +\ !! should be target wordsize specific +$80 constant alias-mask +$40 constant immediate-mask +$20 constant restrict-mask + >TARGET -: immediate 40 flag! +: immediate immediate-mask flag! ^imm @ @ dup = IF drop EXIT THEN <> ABORT" CROSS: Cannot immediate a unresolved word" ^imm @ ! ; -: restrict 20 flag! ; +: restrict restrict-mask flag! ; : isdoer \G define a forth word as doer, this makes obviously only sence on @@ -1536,8 +1543,10 @@ VARIABLE ^imm >TARGET : string, ( addr count -- ) - dup T c, H bounds ?DO I c@ T c, H LOOP ; -: name, ( "name" -- ) bl word count T string, cfalign H ; + dup T c, H bounds ?DO I c@ T c, H LOOP ; +: lstring, ( addr count -- ) + dup T , H bounds ?DO I c@ T c, H LOOP ; +: name, ( "name" -- ) bl word count T lstring, cfalign H ; : view, ( -- ) ( dummy ) ; >CROSS @@ -1692,7 +1701,7 @@ NoHeaderFlag off IF dup >end tdoes ! ELSE 0 tdoes ! THEN - 80 flag! + alias-mask flag! cross-doc-entry cross-tag-entry ; VARIABLE ;Resolve 1 cells allot @@ -1709,7 +1718,7 @@ VARIABLE ;Resolve 1 cells allot IF .sourcepos ." needs prim: " >in @ bl word count type >in ! cr THEN - (THeader over resolve T A, H 80 flag! ; + (THeader over resolve T A, H alias-mask flag! ; : Alias: ( cfa -- ) \ name >in @ skip? IF 2drop EXIT THEN >in ! dup 0< s" prims" T $has? H 0= and @@ -2033,7 +2042,7 @@ Cond: DOES> restrict? create-forward-warn IF ['] reswarn-forward IS resolve-warning THEN \ make Alias - (THeader there 0 T a, H 80 flag! ( S executed-ghost new-ghost ) + (THeader there 0 T a, H alias-mask flag! ( S executed-ghost new-ghost ) \ store poiter to code-field switchram T cfalign H there swap T ! H @@ -2202,6 +2211,14 @@ Builder Field : cell% ( n -- size align ) T 1 cells H dup ; +Build: ( m v -- m' v ) dup T , cell+ H ; +DO: abort" Not in cross mode" ;DO +Builder input-method + +Build: ( m v size -- m v' ) over T , H + ; +DO: abort" Not in cross mode" ;DO +Builder input-var + \ structural conditionals 17dec92py >CROSS