Ясно. Незнал, простите. Вобщем теперь реализация такая:
Цитата("OS_Target_cpp.cpp")
TBaseProcess::TBaseProcess(TStackItem* Stack, word Stack_Size, TPriority pr, void (*exec)())
: StackPointer(Stack), StackSize(Stack_Size), Priority(pr) , Timeout(0)
{
Kernel.RegisterProcess(this);
#ifdef DEDUG_STACK
//---------------------------------------------------------------
// Fill Stack area with some value to be able later to define stack usage
for (StackPointer-=(StackSize/sizeof(TStackItem)); StackPointer < Stack; *(StackPointer++) = STACK_FILL_CONST);
#endif //DEBUG_STACK
//---------------------------------------------------------------
// Prepare Process Stack Frame
*(--StackPointer) = (dword)exec; // return from interrupt address
StackPointer -= 14; // emulate "push R0-R12, LR"
#if __CPU_MODE__ == 1
*(--StackPointer) = 0x003F; // SR value: system mode, FIQ & IRQ enabled, THUMB
#else
*(--StackPointer) = 0x001F; // SR value: system mode, FIQ & IRQ enabled, ARM
#endif
}
Цитата("OS_Kernel.h")
template<TPriority pr, word stack_size>
class process : public TBaseProcess
{
public:
INLINE process():TBaseProcess(&Stack[stack_size/sizeof(TStackItem)], stack_size, pr, (void (*)())Exec){}
#ifdef DEDUG_STACK
word Used_Stack_Size();
#endif //DEDUG_STACK
OS_PROCESS static void Exec();
private:
TStackItem Stack[stack_size/sizeof(TStackItem)];
};
template<TPriority pr, word stack_size>
word process<pr,stack_size>::Used_Stack_Size()
{
TStackItem* Idx = Stack;
while(*(Idx++) == STACK_FILL_CONST);
return ((Stack + (StackSize/sizeof(TStackItem))) - Idx)*sizeof(TStackItem);
}
Цитата("commdefs.h")
#define STACK_FILL_CONST 0xFFF7FFFF
#define DEDUG_STACK
ну и добавлена константа const word StackSize; в описание класса TBaseProcess.
Из корыстно-альтруистических соображений хочу попросить включить это или нечто подобное в последующие версии, чтоп самому не править после каждого обновления, да и людям, уверен, пригодится.

Выражаю благодарность авторам за сей продукт. Действительно легкая и красивая операционка!