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

  1. 19-May-87 06:32:55-EDT,2344;000000000001
  2. Return-Path: <SYSKERMIT%vax1.central.lancaster.ac.uk@Cs.Ucl.AC.UK>
  3. Received: from Cs.Ucl.AC.UK (TUNNEL.CS.UCL.AC.UK) by CU20B.COLUMBIA.EDU with TCP; Tue 19 May 87 06:32:29-EDT
  4. Received: from vax1.central.lancaster.ac.uk by mv1.Cs.Ucl.AC.UK 
  5.            via Janet with NIFTP  id aa00514; 19 May 87 10:50 BST
  6. Date:        19-MAY-1987 10:47:53
  7. From:        SYSKERMIT%vax1.central.lancaster.ac.uk@Cs.Ucl.AC.UK
  8. To:        "SY.FDC" <@Cs.Ucl.AC.UK:SY.FDC@cu20b.columbia.edu>
  9. Subject:    File BBCHEX.BAS
  10.  
  11.   100 REM ** Binary to Intel Hex converter **
  12.   120 REM ** Version 2 November 1985 **
  13.   140   
  14.   160 CLOSE#0
  15.   180   
  16.   200 DIM data 31,block 16,binfile 32
  17.   220   
  18.   240 INPUT "Name of input binary file? " $binfile
  19.   260 INPUT "Name of output hex file?   " out$
  20.   280 in% = OPENIN($binfile)
  21.   300 IF in%=0 THEN PRINT"Input file does not exist":END
  22.   320 out%= OPENOUT(out$)
  23.   340   
  24.   360 address% = FNloadaddress
  25.   380   
  26.   400 REPEAT
  27.   420   PRINT"At address ";~address%
  28.   440   PROCwriterecord
  29.   460   UNTIL EOF#in%
  30.   480   
  31.   500 REM write EOF record
  32.   520   
  33.   540 BPUT#out%,ASC(":")
  34.   560 FOR I% = 1 TO 3
  35.   580   PROCputhex(0)
  36.   600   NEXT
  37.   620 PROCputhex(1)
  38.   640 PROCputhex(&FF)
  39.   660 BPUT#out%,&0D
  40.   680   
  41.   700 CLOSE#0
  42.   720   
  43.   740 END
  44.   760   
  45.   780 DEF PROCputhex(byte%)
  46.   800 byte% = byte% AND &FF
  47.   820 checksum% = (checksum% + byte%) AND &FF
  48.   840 PROCputnibble(byte% DIV 16)
  49.   860 PROCputnibble(byte%)
  50.   880 ENDPROC
  51.   900   
  52.   920 DEF PROCputnibble(nibble%)
  53.   940 nibble% = nibble% AND &0F
  54.   960 IF nibble%<10 THEN BPUT#out%,nibble%+ASC("0") ELSE BPUT#out%,nibble%+ASC("A")-10
  55.   980 ENDPROC
  56.  1000   
  57.  1020 DEF PROCwriterecord
  58.  1040 LOCAL I%,J%
  59.  1060 checksum% = 0
  60.  1080 BPUT#out%,ASC(":")
  61.  1100 I% = 0
  62.  1120 REPEAT
  63.  1140   data?I% = BGET#in%
  64.  1160   I% = I% + 1
  65.  1180   UNTIL I%=32 OR EOF#in%
  66.  1200 PROCputhex(I%)
  67.  1220 PROCputhex(address% DIV 256)
  68.  1240 PROCputhex(address%)
  69.  1260 PROCputhex(0)
  70.  1280 FOR J% = 0 TO I%-1
  71.  1300   PROCputhex(data?J%)
  72.  1320   NEXT
  73.  1340 recsum% = -checksum%
  74.  1360 PROCputhex(recsum%)
  75.  1380 BPUT#out%,&0D
  76.  1400 address% = address% + I%
  77.  1420 ENDPROC
  78.  1440  
  79.  1460 DEF FNloadaddress
  80.  1480 block?0 = binfile AND &FF
  81.  1500 block?1 = binfile DIV 256
  82.  1520 A%=5:X%=block AND &FF:Y%=block DIV 256
  83.  1540 CALL &FFDD
  84.  1560 =block?2+block?3*256
  85.