in editor/prepend/dapjs.js [2976:3021]
FlashProgram.fromIntelHex = function (hex) {
var lines = hex.split(/\n/);
var upperAddr = 0;
var startAddr = 0;
var current = null;
var chunks = [];
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
if (line.substr(0, 1) !== ":") {
throw new Error("Invaild line in hex file: " + (i + 1));
}
else {
var length_1 = parseInt(line.substr(1, 2), 16);
var addr = upperAddr + parseInt(line.substr(3, 4), 16);
var fieldType = parseInt(line.substr(7, 2), 16);
var data = line.substr(9, length_1 * 2);
if (fieldType === 0x00) {
if (current && addr !== startAddr + (current.length / 2)) {
// non-contiguous
var sectionData = util_1.hex2bin(current);
chunks.push(new FlashSection(startAddr, new Uint32Array(sectionData.buffer)));
current = "";
startAddr = addr;
}
else if (!current) {
startAddr = addr;
current = "";
}
current += data;
}
else if (fieldType === 0x01) {
// EOF
break;
}
else if (fieldType === 0x02) {
// extended segment address record
upperAddr = parseInt(data, 16) << 4;
}
else if (fieldType === 0x04) {
// extended linear address record
upperAddr = parseInt(data, 16) << 16;
}
}
}
return new FlashProgram(chunks);
};