Ejemplo n.º 1
0
void sbb_af_byte(struct emuctx *ctx, byte val1, byte val2)
{
    /*
    byte two_comp = (~val2)+1 ;
    if (get_cf(ctx))
    {
        if (((val1 & 0x0F) + (two_comp & 0x0F) + 0x0F) & 0x10) set_af(ctx, YES);
        else set_af(ctx, NO) ;
    }
    else
    {
        if (((val1 & 0x0F) + (two_comp & 0x0F)) & 0x10) set_af(ctx, NO);
        else set_af(ctx, YES) ;
    }
     */
    if (get_cf(ctx))
    {
        if (((val1 & 0x0F) - (val1 & 0x0F) - 1) & 0x10) set_af(ctx, YES);
        else set_af(ctx, NO) ;
    }
    else
    {
        if (((val1 & 0x0F) - (val2 & 0x0F)) & 0x10) set_af(ctx, YES);
        else set_af(ctx, NO) ;
    }

}
Ejemplo n.º 2
0
void sbb_af_word(struct emuctx *ctx, word val1, word val2)
{
    /*
    word two_comp ;
    two_comp.w = (~val2.w) + 1 ;
    if (get_cf(ctx))
    {
        if (((val1.w & 0x0F) + (two_comp.w & 0x0F) + 0x0F) & 0x10) set_af(ctx, YES) ;
        else set_af(ctx, NO) ;
    }
    else
    {
        if (((val1.w & 0x0F) + (two_comp.w & 0x0F)) & 0x10) set_af(ctx, NO) ;
        else set_af(ctx, YES) ;
    }
    */
    if (get_cf(ctx))
    {
        if (((val1.w & 0x0F) - (val2.w & 0x0F) - 1) & 0x10) set_af(ctx, YES) ;
        else set_af(ctx, NO) ;
    }
    else
    {
        if (((val1.w & 0x0F) - (val2.w & 0x0F)) & 0x10) set_af(ctx, YES) ;
        else set_af(ctx, NO) ;
    }

}
Ejemplo n.º 3
0
void byte_af_sub(struct emuctx *ctx, byte val1, byte val2)
{
    /*
    byte two_comp = (~val2)+1 ;
    if (((val1 & 0x0F) + (two_comp & 0x0F)) & 0x10) set_af(ctx, NO);
    else set_af(ctx, YES) ;
    */
    if (((val1 & 0x0F) - (val2 & 0x0F)) & 0x10) set_af(ctx, YES);
    else set_af(ctx, NO) ;
}
Ejemplo n.º 4
0
inline void cpu_sal16(bit16u *dest, bit8u src)
{
        bit16u tmp = *dest;

	*dest <<= (src & 0x1F);

	set_cf_sal16(src, *dest);
	set_zf(*dest);
	set_sf16(*dest);
	set_af(tmp, src, *dest);
	set_of_sal16(tmp, src, *dest);
	set_pf(*dest);
}
Ejemplo n.º 5
0
inline void cpu_sal8(bit8u *dest, bit8u src)
{
	bit8u tmp = *dest;
	
	*dest <<= (src & 0x1F);

	set_of_sal8(tmp, src, *dest);
	set_cf_sal8(src, *dest);
        set_af(tmp, src, *dest);
	set_sf8(*dest);
	set_zf(*dest);
        set_pf(*dest);
}
Ejemplo n.º 6
0
void word_af_sub(struct emuctx *ctx, word val1, word val2)
{
    byte result = ((val1.w & 0xF) - (val2.w & 0xF));
    if (result & 0x10 ) set_af(ctx, YES) ;
    else { set_af(ctx, NO) ;}
}
Ejemplo n.º 7
0
void word_af_adc(struct emuctx *ctx, word left_reg, word right_reg)
{
    if (((left_reg.w & 0x0F) + (right_reg.w & 0x0F) + get_cf(ctx)) & 0x10) set_af(ctx, YES) ;
    else set_af(ctx, NO) ;
}