--- gforth/cross.fs 2001/09/06 08:14:16 1.111 +++ gforth/cross.fs 2001/09/12 14:55:54 1.114 @@ -1043,6 +1043,8 @@ End-Struct addr-struct \ Predefined ghosts 12dec92py +Ghost - drop \ need a ghost otherwise "-" would be treated as a number + Ghost 0= drop Ghost branch Ghost ?branch 2drop Ghost (do) Ghost (?do) 2drop @@ -1057,7 +1059,6 @@ Ghost ' Ghost :docol Ghost :doesjump Ghost :dodoes 2drop drop Ghost :dovar drop Ghost over Ghost = Ghost drop 2drop drop -Ghost - drop Ghost 2drop drop Ghost 2dup drop @@ -1142,8 +1143,11 @@ true DefaultValue standardthreading s" relocate" T environment? H \ JAW why set NIL to this?! [IF] drop \ SetValue NIL -[ELSE] >ENVIRON T NIL H SetValue relocate +[ELSE] >ENVIRON X NIL SetValue relocate [THEN] +>TARGET + +0 Constant NIL >CROSS @@ -1224,6 +1228,10 @@ Variable mirrored-link \ linked : >rlen cell+ ; : >rstart ; +: (region) ( addr len region -- ) +\G change startaddress and length of an existing region + >r r@ last-defined-region ! + r@ >rlen ! dup r@ >rstart ! r> >rdp ! ; : region ( addr len -- ) \G create a new region @@ -1237,8 +1245,7 @@ Variable mirrored-link \ linked region-link linked 0 , 0 , 0 , bl word count string, ELSE \ store new parameters in region bl word drop - >body >r r@ last-defined-region ! - r@ >rlen ! dup r@ >rstart ! r> >rdp ! + >body (region) THEN ; : borders ( region -- startaddr endaddr ) @@ -1356,8 +1363,11 @@ T has? rom H \ MakeKernel 22feb99jaw -: makekernel ( targetsize -- targetsize ) - dup dictionary >rlen ! setup-target ; +: makekernel ( targetsize -- ) +\G convenience word to setup the memory of the target +\G used by main.fs of the c-engine based systems + 100 swap dictionary (region) + setup-target ; >MINIMAL : makekernel makekernel ; @@ -2102,12 +2112,12 @@ Variable last-prim-ghost Defer setup-prim-semantics -: aprim ( -- ) +: mapprim ( "forthname" "asmlabel" -- ) THeader -1 aprim-nr +! aprim-nr @ T A, H asmprimname, setup-prim-semantics ; -: aprim: ( -- ) +: mapprim: ( "forthname" "asmlabel" -- ) -1 aprim-nr +! aprim-nr @ Ghost tuck swap resolve swap tuck >magic ! asmprimname, ; @@ -3004,7 +3014,7 @@ magic 7 + c! : save-cross ( "image-name" "binary-name" -- ) bl parse ." Saving to " 2dup type cr w/o bin create-file throw >r - TNIL IF + s" header" X $has? IF s" #! " r@ write-file throw bl parse r@ write-file throw s" --image-file" r@ write-file throw @@ -3020,7 +3030,7 @@ magic 7 + c! THEN image @ there r@ write-file throw \ write image - TNIL IF + s" relocate" X $has? IF bit$ @ there 1- tcell>bit rshift 1+ r@ write-file throw \ write tags THEN @@ -3507,6 +3517,3 @@ UNLOCK >CROSS [IFDEF] extend-cross extend-cross [THEN] LOCK - - -