blob: fa7e3e52d804edac1f42826daa151f3cbaec4810 [file] [log] [blame]
purpose: Show the sections of a WinCE .bin file
h# 60 constant /buf
/buf buffer: secbuf
: +buf ( offset -- adr ) secbuf + ;
: sec@ ( offset -- l ) +buf l@ ;
0 value section-len
: .section ( offset -- offset' )
." File offset: " dup 8 u.r
dup ifd @ fseek ( offset )
secbuf d# 12 ifd @ fgets d# 12 <> abort" read failure"
0 sec@ 0= if
." Final record: " 4 sec@ 8 u.r ." " 8 sec@ 8 u.r cr
exit
then
." Start " 0 sec@ 8 u.r ." Length " 4 sec@ 8 u.r ." Sum " 8 sec@ 8 u.r cr
4 sec@ to section-len
secbuf h# 60 section-len min ifd @ fgets drop
secbuf h# 60 section-len min ldump cr ( offset )
d# 12 + section-len +
;
: (dump-bin) ( filename$ -- )
hex
$read-open
secbuf h# f ifd @ fgets h# f <> abort" Signature read failure"
secbuf " B000FF"n" comp abort" Bad signature"
." Load start " 7 sec@ 8 u.r ." Total length " h# b sec@ 8 u.r cr cr
h# f begin ifd @ ftell ifd @ fsize < while ( offset )
.section ( offset' )
repeat ( offset )
drop ( )
ifd @ fclose
;
: dump-bin ( "filename" -- )
safe-parse-word (dump-bin)
;