--- gforth/Attic/dumpimage.fs 1995/07/25 15:28:06 1.3 +++ gforth/Attic/dumpimage.fs 1995/10/11 19:39:33 1.4 @@ -4,11 +4,33 @@ Create magic s" gforth00" here over all '1 1 cells + 0 pad ! -1 pad c! pad @ 0< + magic 7 chars + c! -: dump-fi ( addr u -- ) w/o bin create-file throw >r - magic 8 r@ write-file throw - forthstart here over - dup forthstart cell+ ! +: save-string-dict { addr1 u -- addr2 u } + here { addr2 } + u allot + addr1 addr2 u move + addr2 u ; + +: update-image-included-files ( -- ) + included-files 2@ { addr cnt } + image-included-files 2@ { old-addr old-cnt } + align here { new-addr } + cnt 2* cells allot + new-addr cnt image-included-files 2! + old-addr new-addr old-cnt 2* cells move + cnt old-cnt + U+DO + addr i 2* cells + 2@ save-string-dict + new-addr i 2* cells + 2! + LOOP ; + +: dump-fi ( addr u -- ) + w/o bin create-file throw >r + magic 8 r@ write-file throw + update-image-included-files + forthstart here over - dup forthstart cell+ ! r@ write-file throw \ relinfo here forthstart - 1- 8 cells / 1+ r@ write-file throw r> close-file throw ; -: savesystem ( "name" -- ) name dump-fi ; +: savesystem ( "name" -- ) \ gforth + name dump-fi ;