I posted this in another forum, but I thought it might be useful here. After having gotten used to the fact that Home and CAS were separate from each other, I just assumed the idea that follows below. I may be completely wrong in my understanding, though. Perhaps this should be mentioned in the update of the manual?
The idea:
COMMAND() vs command() -- results depend on CAS vs non-CAS mode. Generally speaking, COMMAND() is used in non-CAS environment and command() is used in CAS environments. They behave similarly, but are not exactly the same. In many cases, the upper-case vs lower-case does not matter (for example, "IF" and "if" are treated the same).
TYPE(3*x) in CAS mode is treated as if you use TYPE(3*x) in the Home screen. That is, 3*x is evaluated first. And then the resulting object is passed to TYPE(). Tthe odd thing is they have slightly different error messages because of the mode. It is, in a sense, the opposite to doing CAS("function()") in a non-CAS program.
type(3*x) in CAS mode is treats 3*x as if it were an an algebraic expression. In non-CAS mode, 3*x would have produced an error if there was no global variable x.
This system, however, is not perfect (such as in the case of TYPE(1..2) where you get a reset when used in the CAS mode.
In summary, it appears as though one is a shell for the other. For example, it may very well be that COMMAND() preprocesses its arguments and then passes it to command() -- or perhaps vice versa. The distinction between COMMAND() and command() needs to be clarified, though. I have simply been assuming that COMMAND() preprocesses and then passes to command(). Is this how it works?
At any rate, missing (?) somewhere in this process is error-trapping code which then leads to warmstarts when used in the unexpected environment.
Edit: removed gibberish and added some sense into the original post.
Edited: 3 Oct 2013, 8:11 p.m. after one or more responses were posted