Diff for /gforth/comp-i.fs between versions 1.2 and 1.8

version 1.2, 1998/03/21 21:36:56 version 1.8, 2001/02/24 17:24:44
Line 1 Line 1
 \ Compare nonrelocatable images and produce a relocatable image  \ Compare nonrelocatable images and produce a relocatable image
   
 \ Copyright (C) 1996-1997 Free Software Foundation, Inc.  \ Copyright (C) 1996,1997,1998 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 16 Line 16
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ 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.
   
 s" address-unit-bits" environment? drop constant bits/au  s" address-unit-bits" environment? drop constant bits/au
 6 constant dodoes-tag  6 constant dodoes-tag
Line 28  s" address-unit-bits" environment? drop Line 28  s" address-unit-bits" environment? drop
 : th ( addr1 n -- addr2 )  : th ( addr1 n -- addr2 )
     cells + ;      cells + ;
   
   : bset ( bmask c-addr -- )
       tuck c@ or swap c! ; 
   
 : set-bit { u addr -- }  : set-bit { u addr -- }
     \ set bit u in bit-vector addr      \ set bit u in bit-vector addr
     u bits/au /mod      u bits/au /mod
     >r 1 bits/au 1- rot - lshift      >r 1 bits/au 1- rot - lshift
     r> addr +  cset ;      r> addr +  bset ;
   
 : compare-images { image1 image2 reloc-bits size file-id -- }  : compare-images { image1 image2 reloc-bits size file-id -- }
     \G compares image1 and image2 (of size cells) and sets reloc-bits.      \G compares image1 and image2 (of size cells) and sets reloc-bits.
Line 80  s" address-unit-bits" environment? drop Line 83  s" address-unit-bits" environment? drop
         endif          endif
     loop ;      loop ;
   
 : slurp-file ( c-addr1 u1 -- c-addr2 u2 )  
     \ c-addr1 u1 is the filename, c-addr2 u2 is the file's contents  
     r/o bin open-file throw >r  
     r@ file-size throw abort" file too large"  
     dup allocate throw swap  
     2dup r@ read-file throw over <> abort" could not read whole file"  
     r> close-file throw ;  
   
 : comp-image ( "image-file1" "image-file2" "new-image" -- )  : comp-image ( "image-file1" "image-file2" "new-image" -- )
     name slurp-file { image1 size1 }      name slurp-file { image1 size1 }
     image1 size1 s" Gforth1" search 0= abort" not a Gforth image"      image1 size1 s" Gforth2" search 0= abort" not a Gforth image"
     drop 8 + image1 - { header-offset }      drop 8 + image1 - { header-offset }
     size1 aligned size1 <> abort" unaligned image size"      size1 aligned size1 <> abort" unaligned image size"
     size1 image1 header-offset + 2 cells + @ header-offset + <> abort" header gives wrong size"      image1 header-offset + 2 cells + @ header-offset + size1 <> abort" header gives wrong size"
     name slurp-file { image2 size2 }      name slurp-file { image2 size2 }
     size1 size2 <> abort" image sizes differ"      size1 size2 <> abort" image sizes differ"
     name ( "new-image" ) w/o bin create-file throw { outfile }      name ( "new-image" ) w/o bin create-file throw { outfile }

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


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