char* Cpt; int kzi; void IgnoreSpace (char** Zptr) { char* Pt; Pt = *Zptr; while (*Pt==' ') ++Pt; *Zptr = Pt; } char match (char* item, char** Zptr) { char* P; IgnoreSpace(Zptr); P = *Zptr; if (UpCase(*P) != *item) return 0; while (*item) { if (UpCase(*P++)!=(*item++)) return 0; } *Zptr = P; IgnoreSpace(Zptr); return 1; } void DoCommand (char* Pzeile, word wo) { Cpt = Pzeile; if (match("OTTOKAR",&Cpt)) { DoOttokar(wo); return;} /* hier ist Platz für weitere Kommandos */ if (!*Cpt) return; String_Out("wat? ", wo); while (*Cpt) Char_Out(*Cpt++, wo); CRLF_Out(wo); } void InitCmd (word wo) { long L; L = sizeof(Kommandozeile); while (L) Kommandozeile[--L] = 0; kzi = L; Char_Out('>', wo); } /* Kommandozeile hereinholen */ void Talk (word wo) { char c; if (RxAvail(wo)) { c = GetChar(wo); StdIO = wo; if (c==10) return; if (c==13) { CRLF_Out(wo); DoCommand (Kommandozeile, wo); InitCmd(wo); } else { if (kzi>=(sizeof(Kommandozeile)-1)) return; if (c==8) { Char_Out(8, wo); Char_Out(' ', wo); Char_Out(8, wo); if (kzi) --kzi; Kommandozeile[kzi]=0; } else { if (c<' ') { Char_Out('^', wo); Char_Out(c+0x40, wo); Kommandozeile[kzi++] = c; Kommandozeile[kzi] = 0; return; } Char_Out(c, wo); Kommandozeile[kzi++] = c; Kommandozeile[kzi] = 0; } } } }