Its something like 7 levels. Maybe its 5 maybe its 10. Anyway, it is not much. It has been too long since I bothered to look at it.
xram xrom iram?
Its not just function pointers but also pointers to variables and structs lead to extremely bulky & slow code. Making all variables and structs global is the only solution to keep your code running fast.
And then try to have a pointer point to a string which can be in internal ram, external ram or rom and use standard string functions like strcpy, printf, etc, etc.
No, the 8051 sucks you down into an abyss of archaic programming methods, limits and workarounds.