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

  1.    10REM
  2.    20REM Binary to Intel Hex converter
  3.    30REM Pandora/BAS32 version, Feb 1987
  4.    40REM
  5.    50CLOSE#0
  6.    60DIM data 31,binfile 32
  7.    70INPUT "Name of input binary file? " $binfile
  8.    80INPUT "Name of output hex file?   " out$
  9.    90in%=OPENIN($binfile)
  10.   100 IF in%=0 THEN PRINT"Input file does not exist":END
  11.   110 out%=OPENOUT(out$)
  12.   120address%=0
  13.   130REPEAT
  14.   140PRINT"At address ";~address%
  15.   150PROCwriterecord
  16.   160UNTIL EOF#in%
  17.   170REM write EOF record
  18.   180BPUT#out%,ASC(":")
  19.   190FOR I% = 1 TO 3
  20.   200PROCputhex(0)
  21.   210NEXT
  22.   220PROCputhex(1)
  23.   230PROCputhex(&FF)
  24.   240BPUT#out%,&0D
  25.   250CLOSE#0
  26.   260END
  27.   270:
  28.   280DEF PROCputhex(byte%)
  29.   290byte%=byte% AND &FF
  30.   300checksum% = (checksum% + byte%) AND &FF
  31.   310PROCputnibble(byte% DIV 16)
  32.   320PROCputnibble(byte%)
  33.   330ENDPROC
  34.   340:
  35.   350DEF PROCputnibble(nibble%)
  36.   360nibble% = nibble% AND &0F
  37.   370IF nibble%<10 THEN BPUT#out%,nibble%+ASC("0") ELSE BPUT#out%,nibble%+ASC("A")-10
  38.   380ENDPROC
  39.   390:
  40.   400DEF PROCwriterecord
  41.   410LOCAL I%,J%
  42.   420checksum% = 0
  43.   430BPUT#out%,ASC(":")
  44.   440I%=0
  45.   450REPEAT
  46.   460data?I% = BGET#in%
  47.   470I%=I%+1
  48.   480UNTIL I%=32 OR EOF#in%
  49.   490PROCputhex(I%)
  50.   500PROCputhex(address% DIV 256)
  51.   510PROCputhex(address%)
  52.   520PROCputhex(0)
  53.   530FOR J% = 0 TO I%-1
  54.   540PROCputhex(data?J%)
  55.   550NEXT
  56.   560recsum% = -checksum%
  57.   570PROCputhex(recsum%)
  58.   580BPUT#out%,&0D
  59.   590address% = address% + I%
  60.   600ENDPROC
  61.   610:
  62.