From 718241aef18b6b4d488b5cd369eb6b02cce69e14 Mon Sep 17 00:00:00 2001 From: Meruemon Date: Mon, 25 Apr 2022 01:25:41 +0200 Subject: [PATCH] changed add and sub instructions --- bin/Model/Microcontroller/PIC.class | Bin 13957 -> 12991 bytes bin/Model/Microcontroller/RAM.class | Bin 21358 -> 21335 bytes src/Model/Microcontroller/PIC.java | 264 +++++++--------------------- src/Model/Microcontroller/RAM.java | 3 +- 4 files changed, 63 insertions(+), 204 deletions(-) diff --git a/bin/Model/Microcontroller/PIC.class b/bin/Model/Microcontroller/PIC.class index 286085db3b6452e50b698a509516f7f5937d53e5..50a09be2f1550e3951a898cd30ee26a4f9afff23 100644 GIT binary patch literal 12991 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

Hj`fuLiGmQV(2SXJJ z8MhMDgBWRi6&c1I1ocjWdN)D62eXZPG0%7aB?d2N4Zge^-=xAG!E)nqtT&!Or|~^p zZahg)e?U-w7zgNX7tq}S+~ZdV#!;@_d~`?hOFEL5 z=ty3s!Tg2>^IIiuLYJBzb0oY9)|Czq$nB&sgKFDhtSL;-;M?L50p2uiS2Lc|<^E#^R6Zu)RFy}%xG zD86L+ajTgcr|JW)st>qtX8W8svmyMksZ=n34}qOR{sP884j*yl>!EEsY4D!lk16;= zYT6I~1H6O0KJPewX1Z4N4jaoK?HrRD=;w*RR!NcH$W*UuF|BwGi_wpXagD>ogoj0r zdLHW)=MEG3y<)0-FylwBn9(a{t14Ntroij>CQ@FahaA5rf%anWc(%dP;hko%AO7ri zs%E?S19zC&FwOBuHP6LpGY{j;DabdcW0^SvP3A0WZZvM__BQWUKDZg)Eq-%*fyc(((+}>Rvy2MW z%d*)9pV>j&H(`v~i5#;Vlg!PSW^Tbu^D-3* z-hxr)tr%+_Q1U1Aki{_%Nwc@#_!rq8GJQv)6W-Z+vS~yB=3V6bJ(TV17--%HzsZA; zc^Fw{55}9{M4tHwW}A=VJo9mSGy7e}zJXihV!p`rOeKzIN_Gyh_Q@?7y8D{X=h4^& z+!!)W?%rJq{Epw)@#(zpo@({#JZt`#DEyS{dj=Wi5o+h>$TgoO17E-l^CcqiGK$P! zq1gN#>djYik@*K)V*U|r=21k=KgId$_(!_fc{cV)CvVu~uRY}R_-e<3GtlT*usm?| NdC3)}EYrlo{{vU2za#(v diff --git a/bin/Model/Microcontroller/RAM.class b/bin/Model/Microcontroller/RAM.class index 5e2d09b52c46d298573b55dbc66fc1e899360c13..677bb8961ef1b9f172c3720ffe03f0c66ac8fc60 100644 GIT binary patch delta 3865 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 diff --git a/src/Model/Microcontroller/PIC.java b/src/Model/Microcontroller/PIC.java index 82158cf..b3523f7 100755 --- a/src/Model/Microcontroller/PIC.java +++ b/src/Model/Microcontroller/PIC.java @@ -127,56 +127,21 @@ public class PIC { */ public void ADDLW(int eightK) { int wRegValue = get_WRegister(); - int result = wRegValue + eightK; - - //If result is zero. - if (result == 0) { - Ram.set_Zeroflag(true); - } - - //If result is not zero. - else { - Ram.set_Zeroflag(false); - } - - //If result is greater than 255. - if (result > 255) { - result = result & 255; - Ram.set_Carryflag(true); - } - - //If result is smaller than 0. - else if (result < 0) { - result = result & 255; - Ram.set_Carryflag(true); - } - - //If result is greater than or equal to 0 and smaller than or equal to 255. - else { - Ram.set_Carryflag(false); - } - - //The lower four bits are bitwise and with 1111b (15d). - int dcResult = (wRegValue & 15) + (eightK & 15); - - //If the result is greater than 15, DC-Flag is set true. - if (dcResult > 15) { - Ram.set_Digitcarryflag(true); - } - - //If the result is smaller or equal to 15, DC-Flag is set false. - else { - Ram.set_Digitcarryflag(false); - } - + int result = ArithmeticLogicUnit.calcValue(eightK, wRegValue, false); + result &= 255; setWRegister(result); + + Ram.set_Carryflag(ArithmeticLogicUnit.getCarryFlag()); + Ram.set_Digitcarryflag(ArithmeticLogicUnit.getDigitCarryFlag()); + Ram.set_Zeroflag(ArithmeticLogicUnit.getZeroFlag()); + //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) Ram.increment_TMR0(); //Each Instruction has to split Programmcounter to PCL and PCLATH because Ram can't see RAM. - Ram.set_PCL(Ram.get_Programcounter() & 0b0000011111111); + Ram.set_PCL(Ram.get_Programcounter() & 0b11111111); Runtimer.incrementRuntime(); } @@ -206,7 +171,7 @@ public class PIC { setWRegister(result); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -232,46 +197,11 @@ public class PIC { int regFileAddrValue = Ram.get_Value_Of_Bank_RP0_Bit_Of_Element_At_Adress(Ram.get_RP0Bit(), registerFileAddress); //Calculate result. - int result = wRegValue + regFileAddrValue; + int result = ArithmeticLogicUnit.calcValue(regFileAddrValue, wRegValue, false); - //If result is zero. - if (result == 0) { - Ram.set_Zeroflag(true); - } - - //If result is not zero. - else { - Ram.set_Zeroflag(false); - } - - //If result is greater than 255. - if (result > 255) { - result &= 255; - Ram.set_Carryflag(true); - } - - //If result is smaller than 0. - else if (result < 0) { - result &= 255; - Ram.set_Carryflag(true); - } - - else { - Ram.set_Carryflag(false); - } - - //The lower four bits are bitwise and with 1111boolean (15dezimal). - int dcResult = (wRegValue & 15) + (regFileAddrValue & 15); - - //If the result is greater than 15, DC-Flag is set true. - if (dcResult > 15) { - Ram.set_Digitcarryflag(true); - } - - //If the result is smaller or equal to 15, DC-Flag is set false. - else { - Ram.set_Digitcarryflag(false); - } + Ram.set_Carryflag(ArithmeticLogicUnit.getCarryFlag()); + Ram.set_Digitcarryflag(ArithmeticLogicUnit.getDigitCarryFlag()); + Ram.set_Zeroflag(ArithmeticLogicUnit.getZeroFlag()); //If the destinationbit is 0, the result is written into the if (destinationBit == 0) { @@ -284,7 +214,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -333,7 +263,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -363,7 +293,7 @@ public class PIC { Ram.set_Element_X_Of_Bank_Y_To_Z(registerFileAddress, Ram.get_RP0Bit(), result, false); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -393,7 +323,7 @@ public class PIC { //If bit at bitaddress is 1, next instruction is executed. if ((bitMask & regFileAddrValue) == bitMask) { //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -402,7 +332,7 @@ public class PIC { //If bit at bitaddress is 0, next instruction will be replaced by a NOP. else { //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -434,7 +364,7 @@ public class PIC { Ram.set_Element_X_Of_Bank_Y_To_Z(registerFileAddress, Ram.get_RP0Bit(), result, false); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -463,7 +393,7 @@ public class PIC { //If bit at bitaddress is 0, next instruction is executed. if ((bitMask & regFileAddrValue) != bitMask) { //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -472,7 +402,7 @@ public class PIC { //If bit at bitaddress is 1, next instruction will be replaced by a NOP. else { //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -526,7 +456,7 @@ public class PIC { //Zeroflag is set. Ram.set_Zeroflag(true); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -549,7 +479,7 @@ public class PIC { //Zeroflag is set. Ram.set_Zeroflag(true); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -576,7 +506,7 @@ public class PIC { Runtimer.resetWDT(); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -622,7 +552,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -661,7 +591,7 @@ public class PIC { //If the dekremented value doesn't equal zero, the next instruction is executed. if (regFileAddrValue != 0) { //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -670,7 +600,7 @@ public class PIC { //If the dekremented value equals zero, a NOP is executed and the other instruction will be dismissed. else { //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -719,7 +649,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -789,7 +719,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -830,22 +760,14 @@ public class PIC { Ram.set_Element_X_Of_Bank_Y_To_Z(registerFileAddress, Ram.get_RP0Bit(), regFileAddrValue, false); } - //If value is not zero, next instruction will be executed. - if (regFileAddrValue != 0) { - //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call - if (Ram.get_T0CS() == false) - Ram.increment_TMR0(); + ///Increment programcounter and TMR0 if assigned to TMR0. + Ram.inkrement_Programcounter(1); + if (Ram.get_T0CS() == false) { + Ram.increment_TMR0(); } //If value is zero, next instruction will not be executed and NOP is executed instead. - else { - ///Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call - if (Ram.get_T0CS() == false) { - Ram.increment_TMR0(); - } - + if (regFileAddrValue == 0) { //Call NOP. NOP(); } @@ -878,7 +800,7 @@ public class PIC { setWRegister(result); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -919,7 +841,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -939,7 +861,7 @@ public class PIC { setWRegister(eightK); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -977,7 +899,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -995,7 +917,7 @@ public class PIC { Ram.set_Element_X_Of_Bank_Y_To_Z(registerFileAddress, Ram.get_RP0Bit(), get_WRegister(), false); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1010,7 +932,7 @@ public class PIC { */ public void NOP() { //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); @@ -1053,7 +975,7 @@ public class PIC { //Nothing happens, only programmcounter gets incremented by 1. //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); @@ -1159,7 +1081,7 @@ public class PIC { Ram.set_Carryflag(set_Carryflag); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1214,7 +1136,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1237,7 +1159,7 @@ public class PIC { //TODO pause running (no Thread.sleep()!!!) //Not implemented //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1255,45 +1177,17 @@ public class PIC { public void SUBLW(int eightK) { int wRegValue = get_WRegister(); - //Build Two's complement - wRegValue = (wRegValue ^ 0b11111111) + 1; - - //Add both complemented values. - int result = eightK + wRegValue; - - int carry = (result & 0b100000000) >> 8; - - //The lower four bits are bitwise and with 1111b (15d). - int dcResult = (eightK & 15) + (wRegValue & 15) + 1; - - //If the result is greater than 15, DC-Flag is set true. - if (dcResult > 15) { - Ram.set_Digitcarryflag(true); - } - - //If the result is smaller or equal to 15, DC-Flag is set false. - else { - Ram.set_Digitcarryflag(false); - } - - if (result == 0) { - Ram.set_Zeroflag(true); - } else { - Ram.set_Zeroflag(false); - } - - if (carry == 1) { - Ram.set_Carryflag(true); - } else { - Ram.set_Carryflag(false); - } - + int result = ArithmeticLogicUnit.calcValue(eightK, wRegValue, true); result &= 255; + Ram.set_Carryflag(ArithmeticLogicUnit.getCarryFlag()); + Ram.set_Digitcarryflag(ArithmeticLogicUnit.getDigitCarryFlag()); + Ram.set_Zeroflag(ArithmeticLogicUnit.getZeroFlag()); + setWRegister(result); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1316,48 +1210,14 @@ public class PIC { //Get value at fileaddress. int regFileAddrValue = Ram.get_Value_Of_Bank_RP0_Bit_Of_Element_At_Adress(Ram.get_RP0Bit(), registerFileAddress); - //Build Two's complement - //regFileAddrValue = (regFileAddrValue ^ 0b11111111) + 1; - - //Build Two's complement - wRegValue = (wRegValue ^ 0b11111111) + 1; - - //Add both complemented values. - int result = regFileAddrValue + wRegValue; - - int carry = (result & 0b100000000) >> 8; - - //The lower four bits are bitwise and with 1111b (15d). - System.out.println("regFileAddrValue: " + (regFileAddrValue & 0b1111) + " wRegValue: " + (wRegValue & 0b1111)); - int dcResult = (regFileAddrValue & 0b1111) + (wRegValue & 0b1111); //TODO LST File 3 DC Carry is not set. - - //If the result is greater than 15, DC-Flag is set true. - if (dcResult > 15) { - Ram.set_Digitcarryflag(true); - } - - //If the result is smaller or equal to 15, DC-Flag is set false. - else { - Ram.set_Digitcarryflag(false); - } - - //Set/clear zeroflag - if (result == 0) { - Ram.set_Zeroflag(true); - } else { - Ram.set_Zeroflag(false); - } - - //Set/clear carryflag - if (carry == 1) { - Ram.set_Carryflag(true); - } else { - Ram.set_Carryflag(false); - } - + int result = ArithmeticLogicUnit.calcValue(regFileAddrValue, wRegValue, true); result &= 255; - //If destinationbit is zero, result will be written into + Ram.set_Carryflag(ArithmeticLogicUnit.getCarryFlag()); + Ram.set_Digitcarryflag(ArithmeticLogicUnit.getDigitCarryFlag()); + Ram.set_Zeroflag(ArithmeticLogicUnit.getZeroFlag()); + + //If destinationbit is zero, result will be written into wregister if (destinationBit == 0) { setWRegister(result); } @@ -1368,7 +1228,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1405,7 +1265,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1430,7 +1290,7 @@ public class PIC { //Nothing happens, only programcounter will be incremented by 1. //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1461,7 +1321,7 @@ public class PIC { setWRegister(result); //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } @@ -1504,7 +1364,7 @@ public class PIC { } //Increment programcounter and TMR0 if assigned to TMR0. - Ram.inkrement_Programcounter(1, 0); //Kind of call + Ram.inkrement_Programcounter(1); if (Ram.get_T0CS() == false) { Ram.increment_TMR0(); } diff --git a/src/Model/Microcontroller/RAM.java b/src/Model/Microcontroller/RAM.java index e010909..f9aeadf 100755 --- a/src/Model/Microcontroller/RAM.java +++ b/src/Model/Microcontroller/RAM.java @@ -619,9 +619,8 @@ public class RAM { /** * * @param value - * @param kindOfCall 0 at normal instruction, 1 at Fetchzycle,... 2 at Jumpcommand, 3 at ... */ - public synchronized void inkrement_Programcounter(int value, int kindOfCall) { + public synchronized void inkrement_Programcounter(int value) { lastProgramcounter = get_Programcounter(); iProgramcounter += value; iProgramcounter &= 0x3FF;