10REM 20REM Binary to Intel Hex converter 30REM Pandora/BAS32 version, Feb 1987 40REM 50CLOSE#0 60DIM data 31,binfile 32 70INPUT "Name of input binary file? " $binfile 80INPUT "Name of output hex file? " out$ 90in%=OPENIN($binfile) 100 IF in%=0 THEN PRINT"Input file does not exist":END 110 out%=OPENOUT(out$) 120address%=0 130REPEAT 140PRINT"At address ";~address% 150PROCwriterecord 160UNTIL EOF#in% 170REM write EOF record 180BPUT#out%,ASC(":") 190FOR I% = 1 TO 3 200PROCputhex(0) 210NEXT 220PROCputhex(1) 230PROCputhex(&FF) 240BPUT#out%,&0D 250CLOSE#0 260END 270: 280DEF PROCputhex(byte%) 290byte%=byte% AND &FF 300checksum% = (checksum% + byte%) AND &FF 310PROCputnibble(byte% DIV 16) 320PROCputnibble(byte%) 330ENDPROC 340: 350DEF PROCputnibble(nibble%) 360nibble% = nibble% AND &0F 370IF nibble%<10 THEN BPUT#out%,nibble%+ASC("0") ELSE BPUT#out%,nibble%+ASC("A")-10 380ENDPROC 390: 400DEF PROCwriterecord 410LOCAL I%,J% 420checksum% = 0 430BPUT#out%,ASC(":") 440I%=0 450REPEAT 460data?I% = BGET#in% 470I%=I%+1 480UNTIL I%=32 OR EOF#in% 490PROCputhex(I%) 500PROCputhex(address% DIV 256) 510PROCputhex(address%) 520PROCputhex(0) 530FOR J% = 0 TO I%-1 540PROCputhex(data?J%) 550NEXT 560recsum% = -checksum% 570PROCputhex(recsum%) 580BPUT#out%,&0D 590address% = address% + I% 600ENDPROC 610: