Please explain this OneWire communication with Arduino Uno and DS2502-E48 The goal is to read the MAC address from a DS2502-E48 chip.

I think I accomplished this goal too with the following code, but I can't get behind at how this works.
I had a similar program with a PIC chip as reference.

I checked several references about OneWire and the DS2502 but not the info I needed to hop to the right memory addresses. 
Where'd I normally attain the information so that I know I have to write: cc ,f0 , 0, 10 , read a random byte, and then I'm at the right position for MAC.

#include &lt;OneWire.h&gt;

OneWire ds(2);
void setup()   
{         
  Serial.begin(9600);


  byte i;
  byte dataLength;
  byte present = 0;
  byte data[12];
  byte addr[8];

  if ( !ds.search(addr)) {
    Serial.print("No more addresses.\n");
    ds.reset_search();
    delay(250);
    return;
  }

  ds.reset();
  ds.select(addr);

  delay(1000);     // maybe 750ms is enough, maybe not

  present = ds.reset();  
  if (present != 1 )
  {
    Serial.println("No device present, exiting...");
    return;
  }

    ds.write(0xCC);//SKIP_ROM
    ds.write(0xF0);//READ_MEMORY
    ds.write(0);  // ?
    ds.write(10); // ?
    ds.read();    // ?
    dataLength = ds.read();

    for ( i = 0; i &lt; dataLength; i++) {           
    data[i] = ds.read();
    if ( i&gt;3){
      Serial.print(data[i], HEX);
      Serial.print(" ");
    }
  }
}

void loop()                     
{

}
I found a nice writeup on this on a blog.  To quote his experimental findings:


  Comparing to the OneWire spec, we can tell it’s writing 0xCC, which
  should be SKIP_ROM. Following that is 0xF0 (ReadMem), and two bytes
  starting address: 0x08, 0x00.


Based on this, the zero and 10 that you are writing are apparently an address value.