dc fix
This commit is contained in:
@@ -243,10 +243,10 @@ namespace PIC_Simulator.PIC
|
||||
// in the W register.If 'd' is 1 the result is
|
||||
// stored back in register 'f'.
|
||||
|
||||
uint a = GetRegister(aktueller_befehl.parameter_f);
|
||||
uint b = Register_W;
|
||||
byte a = GetRegister(aktueller_befehl.parameter_f);
|
||||
byte b = Register_W;
|
||||
|
||||
var Result = a + b;
|
||||
uint Result = (uint) (a + b);
|
||||
bool dc = AdditionDigitCarry(a, b);
|
||||
|
||||
SetRegisterOhneBank(ADDR_STATUS, STATUS_BIT_Z, (Result % 0x100) == 0);
|
||||
@@ -256,7 +256,7 @@ namespace PIC_Simulator.PIC
|
||||
Result %= 0x100;
|
||||
|
||||
if (aktueller_befehl.parameter_d != 0)
|
||||
SetRegister(aktueller_befehl.parameter_f, Result);
|
||||
SetRegister(aktueller_befehl.parameter_f, (byte)Result);
|
||||
else
|
||||
Register_W = (byte)Result;
|
||||
}
|
||||
@@ -512,11 +512,11 @@ namespace PIC_Simulator.PIC
|
||||
uint a = GetRegister(aktueller_befehl.parameter_f);
|
||||
uint b = Register_W;
|
||||
|
||||
bool carry;
|
||||
bool carry = (a + ((~b) & 0xFF)) > 0xFF;
|
||||
|
||||
bool dc = SubtractionDigitCarry(a, b);
|
||||
bool dc = SubtractionDigitCarry((byte)a, (byte)b);
|
||||
|
||||
if (carry = a < b)
|
||||
if (a < b)
|
||||
{
|
||||
a += 0x100;
|
||||
}
|
||||
@@ -525,7 +525,7 @@ namespace PIC_Simulator.PIC
|
||||
|
||||
SetRegisterOhneBank(ADDR_STATUS, STATUS_BIT_Z, (Result % 0x100) == 0);
|
||||
SetRegisterOhneBank(ADDR_STATUS, STATUS_BIT_DC, dc);
|
||||
SetRegisterOhneBank(ADDR_STATUS, STATUS_BIT_C, !carry);
|
||||
SetRegisterOhneBank(ADDR_STATUS, STATUS_BIT_C, carry);
|
||||
|
||||
Result %= 0x100;
|
||||
|
||||
@@ -618,7 +618,7 @@ namespace PIC_Simulator.PIC
|
||||
uint b = aktueller_befehl.parameter_k;
|
||||
|
||||
uint Result = a + b;
|
||||
bool dc = AdditionDigitCarry(a, b);
|
||||
bool dc = AdditionDigitCarry((byte)a, (byte)b);
|
||||
|
||||
SetRegisterOhneBank(ADDR_STATUS, STATUS_BIT_Z, (Result % 0x100) == 0);
|
||||
SetRegisterOhneBank(ADDR_STATUS, STATUS_BIT_DC, dc);
|
||||
@@ -753,7 +753,7 @@ namespace PIC_Simulator.PIC
|
||||
|
||||
bool carry;
|
||||
|
||||
bool dc = SubtractionDigitCarry(a, b);
|
||||
bool dc = SubtractionDigitCarry((byte)a, (byte)b);
|
||||
|
||||
if (carry = a < b)
|
||||
{
|
||||
@@ -879,7 +879,7 @@ namespace PIC_Simulator.PIC
|
||||
return GetBit(GetRegisterOhneBank(index), bit);
|
||||
}
|
||||
|
||||
public static bool AdditionDigitCarry(uint a, uint b)
|
||||
public static bool AdditionDigitCarry(byte a, byte b)
|
||||
{
|
||||
a &= 0x0F;
|
||||
b &= 0x0F;
|
||||
@@ -887,11 +887,12 @@ namespace PIC_Simulator.PIC
|
||||
return (a + b) > 0x0F;
|
||||
}
|
||||
|
||||
public static bool SubtractionDigitCarry(uint a, uint b)
|
||||
public static bool SubtractionDigitCarry(byte a, byte b)
|
||||
{
|
||||
b = (~b) + 1;
|
||||
int xa = a & 0x0F;
|
||||
int xb = ((~b) & 0x0F);
|
||||
|
||||
return AdditionDigitCarry(a, b);
|
||||
return (xa + xb) > 0x0F;
|
||||
}
|
||||
|
||||
public static bool GetBit(uint val, uint pos)
|
||||
|
Reference in New Issue
Block a user