This commit is contained in:
Paul 2000-12-22 17:10:46 +00:00
parent 8649d25cff
commit 86e55aae82
14 changed files with 955 additions and 654 deletions

View file

@ -295,6 +295,32 @@ PAUL_DBGMSG("pc:0x%04d sp:%03d",m_pc*2,m_sp);
push(val1+val2);
break;
case OP_MULTIPLY: // value, value pushes result to stack
val1=pop();
val2=pop();
#ifdef FULL_CODE_OUTPUT
PAUL_DBGMSG("MULTIPLY %d,%d",val1,val2);
#endif
push(val1*val2);
break;
case OP_DIVIDE: // value, value pushes result to stack
val1=pop();
val2=pop();
#ifdef FULL_CODE_OUTPUT
PAUL_DBGMSG("DIVIDE %d,%d",val1,val2);
#endif
if(val2==0)
{
SYSTEM_DBGMSG("[SCRIPT] DIVIDE BY ZERO @%d",m_pc);
m_state=CRASHED_DIVIDE_BY_ZERO;
}
else
{
push(val1/val2);
}
break;
case OP_NEG: // value pushes result to stack
val1=pop();
#ifdef FULL_CODE_OUTPUT
@ -327,7 +353,7 @@ PAUL_DBGMSG("pc:0x%04d sp:%03d",m_pc*2,m_sp);
break;
default:
PAUL_DBGMSG("ILLEGAL OPCODE@%d ( %d )",m_pc,instruction);
SYSTEM_DBGMSG("[SCRIPT] ILLEGAL OPCODE@%d ( %d )",m_pc,instruction);
m_state=CRASHED_ILLEGAL_OPCODE;
break;
}

View file

@ -78,6 +78,7 @@ private:
STOPPED_STACK_NOT_EMPTY,
CRASHED_ILLEGAL_OPCODE,
CRASHED_DIVIDE_BY_ZERO,
}ScriptState;
enum
@ -104,6 +105,8 @@ private:
OP_IS_GREATERTHAN_VALUE,// value, value pushes result ( 0 or 1 ) to stack
OP_ASSIGN, // varidx, value
OP_ADD, // value, value pushes result to stack
OP_MULTIPLY, // value, value pushes result to stack
OP_DIVIDE, // value, value pushes result to stack
OP_NEG, // value pushes result to stack
OP_PRINT, // value
OP_CALL_FUNCTION, // functionnumber, argcount args pushes return value to stack