This commit is contained in:
2017-05-11 18:50:26 +02:00
parent f1e5bfa845
commit f2fa5b9f96
3 changed files with 27 additions and 42 deletions

View File

@@ -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)