//------------------------------------------------------------------------------ // Promt command from user //------------------------------------------------------------------------------ cPromtCommand: //0665 push ESI; push EDX; //Promt & Read push #CurPos; mov ESI,msgOSPromt; mov ES:#ScrClk,1; mov EDX,1000999; call cWrite; call cReadString; call cNewLine; mov ES:#ScrClk,0; mov #A0665_TempCurPos,#CurPos; pop #CurPos; mov ES:#ScrClk,1; mov EDX,000999; call cWrite; mov ES:#ScrClk,0; mov #CurPos,#A0665_TempCurPos; mov ESI,ReadBuffer; call cParseCommand; pop EDX; pop ESI; ret alloc A0665_TempCurPos; //------------------------------------------------------------------------------ // Parse command in ESI //------------------------------------------------------------------------------ cParseCommand: //0687 push EAX; push ECX; push EBP; push EDI; push EBX; call cGetKeyword; mov #A0687_TempString,ESI; cmp #KeyWordBuffer,0; je A0687_Exit; //Determine command and call mov ECX,0; mov EBP,cmdList; A0687_CommandCheckLoop: //mov EBX,ECX; //mul EBX,10; //mov EDX,000009; //call cWriteInt; //call cNewLine; //mov EBP,ECX; //mul EBP,10; //add EBP,cmdList; mov #A0687_TempDest,#EBP; //[FIXED] inc EBP; //1-st is command call //mov ESI,EBP; //call cWrite; //call cNewLine; mov ESI,KeyWordBuffer; mov EDI,EBP; //Compare keyword and current command call cCompareString; mov ESI,EBP; call cGetEOS; mov EBP,ESI; inc EBP; cmp EAX,0; jne A0687_CommandNotFound; //mov EBX,#A0687_TempDest; //call cWriteInt; //call cNewLine; mov ESI,#A0687_TempString; call #A0687_TempDest; //Call command jmp A0687_Exit; A0687_CommandNotFound: inc ECX; cmp ECX,cmdListSize; jl A0687_CommandCheckLoop; //ADD: Scan the "app" folder for application mov EDX,000700; mov ESI,msgOSUnknownCmd; mov ES:#ScrClk,0; call cWrite; call cNewLine; mov ES:#ScrClk,1; A0687_Exit: pop EBX; pop EDI; pop EBP; pop ECX; pop EAX; ret