I8 ToUpper(I8 ch) { if (ch>='a' && ch<='z') return ch-'a'+'A'; else return ch; } void GetOutOfDollar() { Ltf *l=Fs->cur_ltf; if (IsRaw) { if (dc_flags&DCF_IN_DOLLAR) PutChar('$$'); } else { if (l && l->flags<FF_IN_DOLLAR) PutChar('$$'); } } void PutErr() { GetOutOfDollar; PutSysText("ST_ERROR"); } void PutWarn() { GetOutOfDollar; PutSysText("ST_WARNING"); } void PutSysTextErr(I1 *st) { PutErr; PutSysText(st); } void PutSysTextWarn(I1 *st) { PutWarn; PutSysText(st); } BoolU8 ScanKey(I8 *ch=NULL,U8 *scancode=NULL,BoolU4 echo=FALSE) { I8 ch1=0; U8 scancode1=0; BoolU4 result=CallExtNum(EXT_SCAN_KEY,&ch1,&scancode1,FALSE); if (echo) PutKey(ch1,scancode1); if (ch) *ch=ch1; if (scancode) *scancode=scancode1; return result; } I8 GetKey(U8 *scancode=NULL,BoolU4 echo=FALSE) { I8 ch1; BoolU4 old_preempt=Preempt(OFF); Fs->task_flags&=~(1<task_flags|=1<task_flags|=1<task_flags&=~(1<size-1) { MemCpy(buf,buf2,size-1); buf[size-1]=0; } else StrCpy(buf,buf2); i=StrLen(buf); Free(buf2); } else { while (TRUE) { ch=GetChar(NULL,FALSE); if (ch==CH_CR) { PutChar(ch); break; } if (ch==CH_BACKSPACE) { if (i>0) { i--; PutChar(ch); } } else { if (i