Компилятор не то чтобы слишком умный, но я переехал с CVAVR, а у него видимо девиз- "программист всегда прав".
следующий кусок преспокойно окажется в EEPROM
#include <mega8.h>
eeprom char ST[] = "TEST";
void main(void)
{}
Проблема заключается в том, что компилятор не генерирует начальное значение EEPROM при случае только чтения из него, а только в случае записи.
Спасибо за совет про __root - не знал об этом.
Но все же ИМХО такой подход компилятора не есть гуд.