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) ;