ApProg.Utilities.Memory.AddFromString C# (CSharp) Method

AddFromString() public method

public AddFromString ( int address, string hexData ) : void
address int
hexData string
return void
        public void AddFromString(int address, string hexData)
        {
            while (myBytes.Count < address)
                myBytes.Add(0xFF);

            for (int index = 0; index < hexData.Length / 2; index++)
            {
                byte bb = byte.Parse(hexData.Substring(index * 2, 2), NumberStyles.HexNumber);
                if (myBytes.Count > address + index)
                    myBytes.Insert(address + index, bb);
                else
                    myBytes.Add(bb);
            }
        }

Usage Example

Example #1
0
        public static Memory ReadHexFile(string filename)
        {
            if (!File.Exists(filename))
            {
                throw new InvalidOperationException("File does not exist!");
            }

            int    baseAddress = 0;
            Memory memory      = new Memory();

            foreach (string line in File.ReadAllLines(filename))
            {
                if (line[0] != ':')
                {
                    throw new InvalidOperationException("File does not look like a valid Hex file...");
                }

                byte lenght  = byte.Parse(line.Substring(1, 2), NumberStyles.HexNumber);
                int  address = int.Parse(line.Substring(3, 4), NumberStyles.HexNumber);
                byte recType = byte.Parse(line.Substring(7, 2), NumberStyles.HexNumber);

                if (recType == 0x00) // data record
                {
                    memory.AddFromString(baseAddress | address, line.Substring(9, lenght * 2));
                }

                if (recType == 0x01) // end of record
                {
                    break;
                }

                if (recType == 0x04) // extended address
                {
                    baseAddress   = int.Parse(line.Substring(9, 4), NumberStyles.HexNumber);
                    baseAddress <<= 16;
                }
            }
            return(memory);
        }