home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / tcom / debugger / hexstuff.seq < prev    next >
Text File  |  1990-09-11  |  2KB  |  52 lines

  1. \ HEXSTUFF.SEQ     read in a HEX file
  2.  
  3. anew hexwords
  4. decimal
  5. 2variable FLEN
  6. -1 value lastshow
  7.  
  8. : hex># ( h -- n ) \ convert hex digit to a number
  9.         dup '9' > if  $37 -  else  '0' -  then  ;
  10. 0 value sadr
  11. 0 value scnt
  12. : stash ( a c -- ) \ hide away the pointer and count of the line string
  13.                    \  but first skip over the :
  14.         1- !> scnt  1+ !> sadr ;
  15. : nbyte ( -- n ) \ get the next byte from the HEX line stash'ed
  16.         sadr c@  hex>#  16 *   incr> sadr  decr> scnt
  17.         sadr c@  hex>#  +      incr> sadr  decr> scnt   ;
  18.  
  19. : line<hex ( a c -- ) \ convert a hex line and download it to the target
  20.         stash                   \ hide away the line pointers
  21.         nbyte                   \ byte count
  22.         nbyte 256 *  nbyte +    \ address
  23.         2 +!> sadr  -2 +!> scnt \ skip next byte
  24.         swap 0 ?do  nbyte  over i + tc!  loop     \ move bytes into target
  25.         drop  ;                 \               ( ignore the checksum )
  26.  
  27.  
  28. : read-in ( -- ) \ read the HEX file and download to target
  29.         cr ." Downloading " seqhandle count type
  30.         seqhandle endfile FLEN 2!
  31.         0 0 seqhandle movepointer ibreset  \ reset to beginning of file
  32.         begin
  33.                 lineread count ( a+1 c )             \ read a line
  34.                 dup FLEN 2@ rot 0 d-
  35.                 lastshow 0<
  36.                 if  at? 2over 7 d.r at 2 =: lastshow  then  decr> lastshow
  37.                 FLEN 2!                              \ show bytes remaining
  38.                 2dup 0<>  swap 1+ @ $3030 <>  and while
  39.                 over c@ ':' = if line<hex else 2drop then \ download line
  40.         repeat
  41.         2drop   7 spaces cr ;
  42.  
  43.  
  44. : download ( | -- )      \ open the .HEX file next on the command line
  45.                         \ and load it into a target
  46.         seqhandle hclose drop
  47.         read-only  open
  48.         read-in                 \ read and download
  49.         seqhandle hclose drop
  50.         ;
  51.  
  52.