Metropoli BBS
VIEWER: e62.cc MODE: TEXT (ASCII)
#include "emu.h"
#include "rmov.h"
#include "compare.h"

void emu_62()
{
  if (empty())
    return;
  if (modrm > 0277)
  {
    emu_bad();
  }
  else
  {
    // ficom m16int
    reg t;
    r_mov((short *)get_modrm(), t);
    int c = compare(st(), t);
    int f;
    if (c & COMP_NAN)
    {
      exception(EX_I);
      f = SW_C3 | SW_C2 | SW_C0;
    }
    else
      switch (c)
      {
        case COMP_A_LT_B:
          f = SW_C0;
          break;
        case COMP_A_EQ_B:
          f = SW_C3;
          break;
        case COMP_A_GT_B:
          f = 0;
          break;
        case COMP_NOCOMP:
          f = SW_C3 | SW_C2 | SW_C0;
          break;
      }
    setcc(f);
  }
}
[ RETURN TO DIRECTORY ]