Strange problem with reading from EEPROM.

Hello. I am looking at someone who is willing to help me understand why a certain problem is happening.

The situation is as following. I have 2 EEPROMS (let’s call them A and B) which have useful information stored on them and I need to copy it to empty EEPROMS (C, D, …).

The setup is arduino nano and it works (Serial monitor displays values normally after the code is run).

I did the following actions. Place eeprom A and simply read it to see what is on it. Then copy that information to internal arduino EEPROM. Switch eeprom A for empty eeprom C and copy the information from internal arduino EEPROM to empty external eeprom C. After that verify that information on now non empty C is the same as information on A and the information is identical.

Problem is that when I try and put it on the board C doesn’t work and even worse A is also displaying error on the board I took it from. So in the process of reading and copying from A I somehow managed to damage it? But it’s not damaged in a sense that it doesn’t work since I can easily connect it to arduino and read from it again, it’s damaged because somehow I changed bits on it.

So this is the code. There are 4 different parts of it (3 are always commented out). There is the read internal arduino eeprom, read external eeprom and write from internal to external and vice versa.
I don’t understand why is the eeprom A producing an error if I only copied information from it to internal eeprom?

Also eeprom A was 100% working prior to me screwing it up.

#include <Wire.h>   
#include <EEPROM.h> 
 
#define disk1 0x50    
 
void setup(void)
{
  Serial.begin(115200);
  Wire.begin();  
  //unsigned int address = 13;
  int i = 0;
  

  // reading from internal eeprom
  /*
  for(i;i<256;i++) {
    Serial.print(EEPROM.read(i), DEC);
    Serial.print("\n");
  }
  */
 

   // reading from external eeprom
  
   for(i;i<256;i++) {
    Serial.print(readEEPROM(disk1, i), DEC);
    Serial.print("\n");
  }
  
  
  
  // Internal > External
/*
for(i;i<256;i++) {
  writeEEPROM(disk1, i, EEPROM.read(i));
}
  */

 
 // External > Internal
/*
 for(i;i<256;i++) {
  EEPROM.write(i, readEEPROM(disk1, i));
}
*/
 
  



}
 
void loop(){}
 
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data ) 
{

  Wire.beginTransmission(deviceaddress);
  Wire.write(eeaddress); // LSB
  Wire.write(data);
  Wire.endTransmission();

 
  delay(50);

}
 
byte readEEPROM(int deviceaddress, unsigned int eeaddress ) 
{
  byte rdata = 0x15;
 
  Wire.beginTransmission(deviceaddress);
  Wire.write((int)(eeaddress)); // LSB
  Wire.endTransmission();
 
  Wire.requestFrom(deviceaddress,1);
  rdata = Wire.read();
 
  return rdata;
}

Oh and the reason why I am asking for help is because now I only have one eeprom B which is working (filled with correct information) and a bunch of eeprom that produce errors when connected to the project board. I only have one more shot at this.
Thank you for any help.

Please provide a link to the hardware (EEPROM chip) you’re using.

What data should be on that EEPROM? Are really just the first 256 bytes relevant?

Looks like a 24-series eeprom.

Why not just use the address pin so you can have both connected at the same time?