home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / acorn / acdehex.bas < prev    next >
BASIC Source File  |  2020-01-01  |  2KB  |  59 lines

  1.   100 REM Intel hex to binary converter
  2.   120 REM Pandora/BAS32 version, Feb 1987
  3.   140 
  4.   160 CLOSE#0
  5.   180 DIM image 150000
  6.   200 
  7.   220 INPUT "Name of input hex file?    " in$
  8.   240 INPUT "Name of output binary file? " out$
  9.   260 in%=OPENIN(in$)
  10.   270 out%=OPENOUT(out$)
  11.   280 IF in%=0 THEN PRINT"Input file does not exist":END
  12.   300 
  13.   320 imagesize% = 0
  14.   340 record% = 0
  15.   360 REPEAT
  16.   380   REPEAT
  17.   400     UNTIL (BGET#in%=ASC(":")) OR EOF#in%
  18.   420   IF EOF#in% THEN CLOSE#0:END ELSE PROCreadrecord
  19.   440   UNTIL FALSE
  20.   460 
  21.   480 END
  22.   500 
  23.   520 
  24.   540 DEF PROCreadrecord
  25.   560 LOCAL count%,address%,storedcsum%,type%
  26.   580 record%=record%+1
  27.   600 csum%=0
  28.   620 count%=FNgetbyte
  29.   640 address%=FNgetbyte*256+FNgetbyte
  30.   660 IF record%=1 THEN base% = address%
  31.   680 PRINT"Record ";record%;" : Size ";count%;", address $";~address%
  32.   700 
  33.   720 type% = FNgetbyte
  34.   740 IF type%<>0 AND type%<>1 THEN PRINT"*** Unknown record type ";type%;" detected":CLOSE#0:END
  35.   760 IF type% <> 0 THEN PRINT"+++ End-of-file record detected":ENDPROC
  36.   780 PROCreaddata(count%)
  37.   800 storedcsum% = FNgetbyte
  38.   820 IF csum%<>0 THEN PRINT"*** Checksum error":CLOSE#0:END
  39.   840 ENDPROC
  40.   860 
  41.   880 DEF FNgetbyte
  42.   900 LOCAL value%
  43.   920 value%=FNgetnibble*16 + FNgetnibble
  44.   940 csum% = (csum% + value%) AND &FF
  45.   960 =value%
  46.   980 
  47.  1000 DEF FNgetnibble
  48.  1020 LOCAL char%
  49.  1040 char% = BGET#in%
  50.  1060 IF char%>=ASC("A") THEN =char%-ASC("A")+10 ELSE =char%-ASC("0")
  51.  1080 
  52.  1100 DEF PROCreaddata(count%)
  53.  1120 LOCAL I%
  54.  1160 FOR I% = 1 TO count%
  55.  1180   BPUT#out%,FNgetbyte
  56.  1240   NEXT
  57.  1280 ENDPROC
  58.  1300 
  59.