--- gforth/fi2c.fs 2007/03/04 22:39:37 1.16 +++ gforth/fi2c.fs 2007/12/31 18:40:24 1.22 @@ -1,12 +1,12 @@ \ Convert image to C include file -\ Copyright (C) 1998,1999,2002,2003 Free Software Foundation, Inc. +\ Copyright (C) 1998,1999,2002,2003,2007 Free Software Foundation, Inc. \ This file is part of Gforth. \ Gforth is free software; you can redistribute it and/or \ modify it under the terms of the GNU General Public License -\ as published by the Free Software Foundation; either version 2 +\ as published by the Free Software Foundation, either version 3 \ of the License, or (at your option) any later version. \ This program is distributed in the hope that it will be useful, @@ -15,8 +15,7 @@ \ GNU General Public License for more details. \ 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., 59 Temple Place, Suite 330, Boston, MA 02111, USA. +\ along with this program. If not, see http://www.gnu.org/licenses/. require string.fs @@ -33,8 +32,9 @@ wordlist Constant target-environment \ save information of current dictionary to restore with environ> Variable env-current -: >ENVIRON get-current env-current ! target-environment set-current ; -: ENVIRON> env-current @ set-current ; +: >ENVIRON get-current env-current ! target-environment set-current + also target-environment context ! ; +: ENVIRON> previous env-current @ set-current ; : t-env? ( addr len -- [ x ] true | false ) \G returns the content of environment variable and true or @@ -48,9 +48,15 @@ Variable env-current t-env? dup IF drop THEN ; ' Value Alias DefaultValue +' Value Alias SetValue : kb 1024 * ; +' noop alias T +' noop alias H + +: has? parse-name 2drop true ; + include machpc.fs ENVIRON> @@ -75,7 +81,7 @@ s" NULL" groups @ cell+ $! IF 11 /string $has? 0= IF r@ scan-ifs THEN ELSE 2dup s" #else" prefix? - IF r@ scan-ifs + IF 2drop r@ scan-ifs ELSE 2dup s" GROUP(" prefix? IF 2drop drop 1+ 0 ELSE 2dup s" INST_ADDR(" prefix? @@ -105,27 +111,6 @@ Variable au THEN dup 1 8 tcell @ * 1- lshift and negate or ; -1 cells 4 = [IF] -: bswap ( n -- n' ) bswap? @ 0= ?EXIT 0 - over 24 rshift $FF and or - over 8 rshift $FF00 and or - over 8 lshift $FF0000 and or - over 24 lshift $FF000000 and or nip ; -[THEN] - -1 cells 8 = [IF] -: bswap ( n -- n' ) bswap? @ 0= ?EXIT 0 - over 56 rshift $FF and or - over 40 rshift $FF00 and or - over 24 rshift $FF0000 and or - over 8 rshift $FF000000 and or - over 8 lshift $FF00000000 and or - over 24 lshift $FF0000000000 and or - over 40 lshift $FF000000000000 and or - over 56 lshift $FF00000000000000 and or - nip ; -[THEN] - : search-magic ( fd -- ) >r BEGIN magicbuf 8 r@ read-file throw 8 = WHILE magicbuf s" Gforth3" tuck str= UNTIL @@ -213,7 +198,8 @@ Variable bitmap-chars : fi2c ( addr u -- ) base @ >r hex read-image - ." static const void* image[" .imagesize ." ] = {" cr .image ." };" cr + \ .\" const static __attribute__ ((__section__ (\".rodata\"))) void* image[" .imagesize ." ] = {" cr .image ." };" cr + .\" static void* image[" .imagesize ." ] = {" cr .image ." };" cr ." #ifdef USE_RELOC" cr ." const char reloc_bits[" .relocsize ." ] = {" cr .reloc ." };" cr ." #endif" cr