version 1.18, 2007/03/25 21:30:59
|
version 1.24, 2010/06/10 09:40:08
|
Line 1
|
Line 1
|
\ Convert image to C include file |
\ 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. |
\ This file is part of Gforth. |
|
|
\ Gforth is free software; you can redistribute it and/or |
\ Gforth is free software; you can redistribute it and/or |
\ modify it under the terms of the GNU General Public License |
\ 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. |
\ of the License, or (at your option) any later version. |
|
|
\ This program is distributed in the hope that it will be useful, |
\ This program is distributed in the hope that it will be useful, |
Line 15
|
Line 15
|
\ GNU General Public License for more details. |
\ GNU General Public License for more details. |
|
|
\ 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, see http://www.gnu.org/licenses/. |
\ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. |
|
|
|
require string.fs |
require string.fs |
|
|
Line 82 s" NULL" groups @ cell+ $!
|
Line 81 s" NULL" groups @ cell+ $!
|
IF |
IF |
11 /string $has? 0= IF r@ scan-ifs THEN |
11 /string $has? 0= IF r@ scan-ifs THEN |
ELSE 2dup s" #else" prefix? |
ELSE 2dup s" #else" prefix? |
IF r@ scan-ifs |
IF 2drop r@ scan-ifs |
ELSE 2dup s" GROUP(" prefix? |
ELSE 2dup s" GROUP(" prefix? |
IF 2drop drop 1+ 0 ELSE |
IF 2drop drop 1+ 0 ELSE |
2dup s" INST_ADDR(" prefix? |
2dup s" INST_ADDR(" prefix? |
Line 114 Variable au
|
Line 113 Variable au
|
|
|
: search-magic ( fd -- ) >r |
: search-magic ( fd -- ) >r |
BEGIN magicbuf 8 r@ read-file throw 8 = WHILE |
BEGIN magicbuf 8 r@ read-file throw 8 = WHILE |
magicbuf s" Gforth3" tuck str= UNTIL |
magicbuf s" Gforth4" tuck str= UNTIL |
ELSE true abort" No magic found" THEN |
ELSE true abort" No magic found" THEN |
1 magicbuf 7 + c@ 5 rshift 3 and lshift tchars ! |
1 magicbuf 7 + c@ 5 rshift 3 and lshift tchars ! |
1 magicbuf 7 + c@ 1 rshift 3 and lshift tcell ! |
1 magicbuf 7 + c@ 1 rshift 3 and lshift tcell ! |
Line 170 Variable bitmap-chars
|
Line 169 Variable bitmap-chars
|
." INST_ADDR(" type ." )" |
." INST_ADDR(" type ." )" |
THEN |
THEN |
ELSE |
ELSE |
dup IF ." ((void*)image)+" THEN .08x |
dup IF ." ((void*)image)+" $10 - THEN .08x |
THEN |
THEN |
ELSE |
ELSE |
." (void*)" .08x |
." (void*)" .08x |
Line 199 Variable bitmap-chars
|
Line 198 Variable bitmap-chars
|
|
|
: fi2c ( addr u -- ) base @ >r hex |
: fi2c ( addr u -- ) base @ >r hex |
read-image |
read-image |
." static 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 |
." #ifdef USE_RELOC" cr |
." const char reloc_bits[" .relocsize ." ] = {" cr .reloc ." };" cr |
." const char reloc_bits[" .relocsize ." ] = {" cr .reloc ." };" cr |
." #endif" cr |
." #endif" cr |