rendered paste body//------------------------------------------------------------------------------
// 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