Freescale recommends to place the EEPROM at 0x0800 but it is mapped at 0x0000 out of reset. Since the cpu registers are mapped at the same address, the registers will take precedence. What you need to do early on in the program (I recommend to do it in the reset vector) is to map both the EEPROM and the RAM to other addresses.
INITRM = 0x21; /* map RAM to 0x2000 */
INITEE = 0x09; /* map EEPROM to 0x0800 */
I also doubt your clock calculation. The EEPROM clock is prescaled as
osc clock / 20
So you would get 190kHz if you have a 3.8 MHz crystal. If you have a 4MHz crystal which I assume, you should pick another value, since you end up at exactly 200kHz which is the upper allowed limit. You don't want to overclock the EEPROM since unexpected things will happen then.
Unless this line is incorrect:
ECLKDIV = ECLKDIV | 20;
It certainly looks odd. Perhaps you ment
ECLKDIV = PRDIV8 | 20;
Though that doesn't make much sense either, it would mean that you crystal is 30.4MHz...