diff --git a/de/darkress/pic16f84sim/commands/Addlw.java b/de/darkress/pic16f84sim/commands/Addlw.java index 5f22577..accaa89 100644 --- a/de/darkress/pic16f84sim/commands/Addlw.java +++ b/de/darkress/pic16f84sim/commands/Addlw.java @@ -16,6 +16,8 @@ public class Addlw extends LiteralCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = literal + Memory.workingRegister; checkZeroBit(result); @@ -23,7 +25,5 @@ public class Addlw extends LiteralCommandUtils implements Command checkDigitCarryBit(literal); Memory.workingRegister = result % 256; - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Addwf.java b/de/darkress/pic16f84sim/commands/Addwf.java index 7c516ba..d439050 100644 --- a/de/darkress/pic16f84sim/commands/Addwf.java +++ b/de/darkress/pic16f84sim/commands/Addwf.java @@ -18,6 +18,8 @@ public class Addwf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) + Memory.workingRegister; checkZeroBit(result); @@ -25,7 +27,5 @@ public class Addwf extends FileRegisterCommandUtils implements Command checkDigitCarryBit(address); writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Andlw.java b/de/darkress/pic16f84sim/commands/Andlw.java index cf7dff4..df8e2ab 100644 --- a/de/darkress/pic16f84sim/commands/Andlw.java +++ b/de/darkress/pic16f84sim/commands/Andlw.java @@ -15,12 +15,12 @@ public class Andlw extends LiteralCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = literal & Memory.workingRegister; checkZeroBit(result); Memory.workingRegister = result % 256; - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Andwf.java b/de/darkress/pic16f84sim/commands/Andwf.java index f59ea6b..4945a04 100644 --- a/de/darkress/pic16f84sim/commands/Andwf.java +++ b/de/darkress/pic16f84sim/commands/Andwf.java @@ -18,12 +18,12 @@ public class Andwf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) & Memory.workingRegister; checkZeroBit(result); writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Bcf.java b/de/darkress/pic16f84sim/commands/Bcf.java index a23b565..8af6a87 100644 --- a/de/darkress/pic16f84sim/commands/Bcf.java +++ b/de/darkress/pic16f84sim/commands/Bcf.java @@ -18,11 +18,11 @@ public class Bcf extends BitOrientedCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address); result &= ~(1 << bitPlacement); //Mask n-th bit with 0 Memory.setRegister(address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Bsf.java b/de/darkress/pic16f84sim/commands/Bsf.java index 5c09392..b1ccc2c 100644 --- a/de/darkress/pic16f84sim/commands/Bsf.java +++ b/de/darkress/pic16f84sim/commands/Bsf.java @@ -18,11 +18,11 @@ public class Bsf extends BitOrientedCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address); result |= (1 << bitPlacement); Memory.setRegister(address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Btfsc.java b/de/darkress/pic16f84sim/commands/Btfsc.java index 0ad710b..0b70aaf 100644 --- a/de/darkress/pic16f84sim/commands/Btfsc.java +++ b/de/darkress/pic16f84sim/commands/Btfsc.java @@ -18,15 +18,14 @@ public class Btfsc extends BitOrientedCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address); if((result & (1 << bitPlacement)) == 0) //Test if bit is clear { - ProgramCounter.incPC(); - Cycles.addToCycles(1); + Nop nop = new Nop(); + nop.execute(); } - - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Btfss.java b/de/darkress/pic16f84sim/commands/Btfss.java index 39d3811..ef8ae98 100644 --- a/de/darkress/pic16f84sim/commands/Btfss.java +++ b/de/darkress/pic16f84sim/commands/Btfss.java @@ -18,15 +18,14 @@ public class Btfss extends BitOrientedCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address); if((result & (1 << bitPlacement)) > 0) //Test if bit is set { - ProgramCounter.incPC(); - Cycles.addToCycles(1); + Nop nop = new Nop(); + nop.execute(); } - - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Call.java b/de/darkress/pic16f84sim/commands/Call.java index 632f4df..5ed68dc 100644 --- a/de/darkress/pic16f84sim/commands/Call.java +++ b/de/darkress/pic16f84sim/commands/Call.java @@ -16,8 +16,9 @@ public class Call extends LiteralCommandUtils implements Command @Override public void execute() { + Cycles.incCycles(); Stack.push(ProgramCounter.getPc() + 1); ProgramCounter.setPcFrom11BitLiteral(literal); - Cycles.addToCycles(2); + Cycles.incCycles(); //Simulate nop and 2-Cycle instruction } } diff --git a/de/darkress/pic16f84sim/commands/Clrf.java b/de/darkress/pic16f84sim/commands/Clrf.java index 3da4505..739b32e 100644 --- a/de/darkress/pic16f84sim/commands/Clrf.java +++ b/de/darkress/pic16f84sim/commands/Clrf.java @@ -1,7 +1,6 @@ package de.darkress.pic16f84sim.commands; import de.darkress.pic16f84sim.microcontroller.Cycles; -import de.darkress.pic16f84sim.microcontroller.Memory; import de.darkress.pic16f84sim.microcontroller.ProgramCounter; public class Clrf extends FileRegisterCommandUtils implements Command @@ -18,12 +17,12 @@ public class Clrf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); final int result = 0; checkZeroBit(result); writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Clrw.java b/de/darkress/pic16f84sim/commands/Clrw.java index 22f7d06..5e25847 100644 --- a/de/darkress/pic16f84sim/commands/Clrw.java +++ b/de/darkress/pic16f84sim/commands/Clrw.java @@ -9,12 +9,12 @@ public class Clrw extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); final int result = 0; checkZeroBit(result); Memory.workingRegister = result; - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Comf.java b/de/darkress/pic16f84sim/commands/Comf.java index 38a66ff..15ebfdc 100644 --- a/de/darkress/pic16f84sim/commands/Comf.java +++ b/de/darkress/pic16f84sim/commands/Comf.java @@ -18,12 +18,12 @@ public class Comf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = 255 - Memory.getRegister(address); // Get inverse of 8Bit value checkZeroBit(result); writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Decf.java b/de/darkress/pic16f84sim/commands/Decf.java index 3497d38..a15b5e9 100644 --- a/de/darkress/pic16f84sim/commands/Decf.java +++ b/de/darkress/pic16f84sim/commands/Decf.java @@ -18,12 +18,12 @@ public class Decf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) + 255; // Allow underflow checkZeroBit(result); writeToDestination(destinationBit, address, result % 256); // Catch underflow - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Decfsz.java b/de/darkress/pic16f84sim/commands/Decfsz.java index 56389ca..88ac924 100644 --- a/de/darkress/pic16f84sim/commands/Decfsz.java +++ b/de/darkress/pic16f84sim/commands/Decfsz.java @@ -18,6 +18,8 @@ public class Decfsz extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) + 255; // Allow underflow checkZeroBit(result); @@ -26,10 +28,8 @@ public class Decfsz extends FileRegisterCommandUtils implements Command if((result % 256) == 0) { - ProgramCounter.incPC(); - Cycles.addToCycles(1); + Nop nop = new Nop(); + nop.execute(); } - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Goto.java b/de/darkress/pic16f84sim/commands/Goto.java index 6c2e185..4d64d4e 100644 --- a/de/darkress/pic16f84sim/commands/Goto.java +++ b/de/darkress/pic16f84sim/commands/Goto.java @@ -15,7 +15,8 @@ public class Goto extends LiteralCommandUtils implements Command @Override public void execute() { + Cycles.incCycles(); ProgramCounter.setPcFrom11BitLiteral(literal); - Cycles.addToCycles(2); + Cycles.incCycles(); } } diff --git a/de/darkress/pic16f84sim/commands/Incf.java b/de/darkress/pic16f84sim/commands/Incf.java index 0871b6a..0a90cd9 100644 --- a/de/darkress/pic16f84sim/commands/Incf.java +++ b/de/darkress/pic16f84sim/commands/Incf.java @@ -18,12 +18,12 @@ public class Incf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) + 1; // Allow underflow checkZeroBit(result); writeToDestination(destinationBit, address, result % 256); // Catch underflow - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Incfsz.java b/de/darkress/pic16f84sim/commands/Incfsz.java index 769979f..a5553f8 100644 --- a/de/darkress/pic16f84sim/commands/Incfsz.java +++ b/de/darkress/pic16f84sim/commands/Incfsz.java @@ -18,6 +18,8 @@ public class Incfsz extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) + 1; checkZeroBit(result); @@ -26,10 +28,8 @@ public class Incfsz extends FileRegisterCommandUtils implements Command if((result % 256) == 0) { - ProgramCounter.incPC(); - Cycles.addToCycles(1); + Nop nop = new Nop(); + nop.execute(); } - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Iorlw.java b/de/darkress/pic16f84sim/commands/Iorlw.java index 06ce030..601b92c 100644 --- a/de/darkress/pic16f84sim/commands/Iorlw.java +++ b/de/darkress/pic16f84sim/commands/Iorlw.java @@ -15,12 +15,12 @@ public class Iorlw extends LiteralCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = literal | Memory.workingRegister; checkZeroBit(result); Memory.workingRegister = result % 256; - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Iorwf.java b/de/darkress/pic16f84sim/commands/Iorwf.java index 21f02d6..19691b9 100644 --- a/de/darkress/pic16f84sim/commands/Iorwf.java +++ b/de/darkress/pic16f84sim/commands/Iorwf.java @@ -18,12 +18,12 @@ public class Iorwf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) | Memory.workingRegister; checkZeroBit(result); writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Movf.java b/de/darkress/pic16f84sim/commands/Movf.java index 38d2e91..a29a0a2 100644 --- a/de/darkress/pic16f84sim/commands/Movf.java +++ b/de/darkress/pic16f84sim/commands/Movf.java @@ -18,12 +18,12 @@ public class Movf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address); checkZeroBit(result); writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Movlw.java b/de/darkress/pic16f84sim/commands/Movlw.java index 4476d6f..8b1db10 100644 --- a/de/darkress/pic16f84sim/commands/Movlw.java +++ b/de/darkress/pic16f84sim/commands/Movlw.java @@ -16,8 +16,8 @@ public class Movlw extends LiteralCommandUtils implements Command @Override public void execute() { - Memory.workingRegister = literal; ProgramCounter.incPC(); - Cycles.addToCycles(1); + Cycles.incCycles(); + Memory.workingRegister = literal; } } diff --git a/de/darkress/pic16f84sim/commands/Movwf.java b/de/darkress/pic16f84sim/commands/Movwf.java index c5cd16f..97910df 100644 --- a/de/darkress/pic16f84sim/commands/Movwf.java +++ b/de/darkress/pic16f84sim/commands/Movwf.java @@ -18,10 +18,10 @@ public class Movwf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.workingRegister; writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Nop.java b/de/darkress/pic16f84sim/commands/Nop.java index 1e103b6..59acbf4 100644 --- a/de/darkress/pic16f84sim/commands/Nop.java +++ b/de/darkress/pic16f84sim/commands/Nop.java @@ -11,6 +11,6 @@ public class Nop extends LiteralCommandUtils implements Command { // Do nothing, just increment the PC ProgramCounter.incPC(); - Cycles.addToCycles(1); + Cycles.incCycles(); } } diff --git a/de/darkress/pic16f84sim/commands/Retlw.java b/de/darkress/pic16f84sim/commands/Retlw.java index b1d4062..d798675 100644 --- a/de/darkress/pic16f84sim/commands/Retlw.java +++ b/de/darkress/pic16f84sim/commands/Retlw.java @@ -17,8 +17,9 @@ public class Retlw extends LiteralCommandUtils implements Command @Override public void execute() { + Cycles.incCycles(); Memory.workingRegister = literal; ProgramCounter.setPcFromStack(Stack.pop()); - Cycles.addToCycles(2); + Cycles.incCycles(); // Simulate 2-Cycle Instruction } } diff --git a/de/darkress/pic16f84sim/commands/Return.java b/de/darkress/pic16f84sim/commands/Return.java index a21b966..a2e41cb 100644 --- a/de/darkress/pic16f84sim/commands/Return.java +++ b/de/darkress/pic16f84sim/commands/Return.java @@ -9,7 +9,8 @@ public class Return extends LiteralCommandUtils implements Command @Override public void execute() { + Cycles.incCycles(); ProgramCounter.setPcFromStack(Stack.pop()); - Cycles.addToCycles(2); + Cycles.incCycles(); // Simulate 2-Cycle Instruction } } diff --git a/de/darkress/pic16f84sim/commands/Rlf.java b/de/darkress/pic16f84sim/commands/Rlf.java index 78091de..e84a907 100644 --- a/de/darkress/pic16f84sim/commands/Rlf.java +++ b/de/darkress/pic16f84sim/commands/Rlf.java @@ -18,6 +18,8 @@ public class Rlf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int register = Memory.getRegister(address); int newCarry = register >>7; int oldCarry = Memory.getCarryBit(); @@ -31,7 +33,5 @@ public class Rlf extends FileRegisterCommandUtils implements Command } writeToDestination(destinationBit, address, register); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Rrf.java b/de/darkress/pic16f84sim/commands/Rrf.java index 5d4f56a..2efea0b 100644 --- a/de/darkress/pic16f84sim/commands/Rrf.java +++ b/de/darkress/pic16f84sim/commands/Rrf.java @@ -18,6 +18,8 @@ public class Rrf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int register = Memory.getRegister(address); int newCarry = register & 0x01; int oldCarry = Memory.getCarryBit(); @@ -31,7 +33,5 @@ public class Rrf extends FileRegisterCommandUtils implements Command } writeToDestination(destinationBit, address, register); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Sublw.java b/de/darkress/pic16f84sim/commands/Sublw.java index 491da3d..c843fa9 100644 --- a/de/darkress/pic16f84sim/commands/Sublw.java +++ b/de/darkress/pic16f84sim/commands/Sublw.java @@ -36,6 +36,8 @@ public class Sublw extends LiteralCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = literal - Memory.workingRegister + 256; checkZeroBit(result); @@ -43,7 +45,5 @@ public class Sublw extends LiteralCommandUtils implements Command checkDigitCarryBit(literal); Memory.workingRegister = result % 256; - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Subwf.java b/de/darkress/pic16f84sim/commands/Subwf.java index 222efaa..3b93715 100644 --- a/de/darkress/pic16f84sim/commands/Subwf.java +++ b/de/darkress/pic16f84sim/commands/Subwf.java @@ -38,6 +38,8 @@ public class Subwf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) - Memory.workingRegister + 256; checkZeroBit(result); @@ -45,7 +47,5 @@ public class Subwf extends FileRegisterCommandUtils implements Command checkDigitCarryBit(Memory.getRegister(address)); writeToDestination(destinationBit, address, result % 256); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Swapf.java b/de/darkress/pic16f84sim/commands/Swapf.java index c40f60d..7059884 100644 --- a/de/darkress/pic16f84sim/commands/Swapf.java +++ b/de/darkress/pic16f84sim/commands/Swapf.java @@ -18,12 +18,12 @@ public class Swapf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = (Memory.getRegister(address) <<4) & 0xF0; int tmp = Memory.getRegister(address) >>4; result += tmp; writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Xorlw.java b/de/darkress/pic16f84sim/commands/Xorlw.java index bf44303..a73bacd 100644 --- a/de/darkress/pic16f84sim/commands/Xorlw.java +++ b/de/darkress/pic16f84sim/commands/Xorlw.java @@ -15,12 +15,12 @@ public class Xorlw extends LiteralCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = literal ^ Memory.workingRegister; checkZeroBit(result); Memory.workingRegister = result % 256; - ProgramCounter.incPC(); - Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Xorwf.java b/de/darkress/pic16f84sim/commands/Xorwf.java index 27a7248..ad6daa0 100644 --- a/de/darkress/pic16f84sim/commands/Xorwf.java +++ b/de/darkress/pic16f84sim/commands/Xorwf.java @@ -18,12 +18,12 @@ public class Xorwf extends FileRegisterCommandUtils implements Command @Override public void execute() { + ProgramCounter.incPC(); + Cycles.incCycles(); int result = Memory.getRegister(address) ^ Memory.workingRegister; checkZeroBit(result); writeToDestination(destinationBit, address, result); - ProgramCounter.incPC(); - Cycles.addToCycles(1); } }