/* DIV divide by zero
*
* 68000 Signed: NVC=0 Z=1. Unsigned: VC=0 N=(dst>>16)<0 Z=(dst>>16)==0
- * 68020 and 68030: Signed: Z=1 NVC=0. Unsigned: V=1, N<dst, Z=!N, C=0.
+ * 68020 and 68030: Signed: Z=1 NVC=0. Unsigned: V=1, N=(dst>>16)<0 Z=(dst>>16)==0, C=0.
* 68040/68060 C=0.
*
*/
{
if (currprefs.cpu_model == 68020 || currprefs.cpu_model == 68030) {
CLEAR_CZNV ();
- if (issigned == false) {
- if (dst < 0)
- SET_NFLG (1);
- SET_ZFLG (!GET_NFLG ());
- SET_VFLG (1);
+ if (issigned) {
+ SET_ZFLG(1);
} else {
- SET_ZFLG (1);
+ uae_s16 d = dst >> 16;
+ if (d < 0)
+ SET_NFLG(1);
+ else if (d == 0)
+ SET_ZFLG(1);
+ SET_VFLG (1);
}
} else if (currprefs.cpu_model >= 68040) {
SET_CFLG (0);