From c9fcc03892bc7f59d3f473acd982891ae7a2bcde Mon Sep 17 00:00:00 2001 From: darkress <30271678+darkressx@users.noreply.github.com> Date: Mon, 12 Jun 2023 13:34:52 +0200 Subject: [PATCH] increase Cycles after every Instruction (#30) Co-authored-by: darkress <30271678+DarkressX@users.noreply.github.com> Reviewed-on: https://git.darkress.xyz/darkress/pic16f84-sim/pulls/30 --- de/darkress/pic16f84sim/commands/Addlw.java | 2 ++ de/darkress/pic16f84sim/commands/Addwf.java | 2 ++ de/darkress/pic16f84sim/commands/Andlw.java | 2 ++ de/darkress/pic16f84sim/commands/Andwf.java | 2 ++ de/darkress/pic16f84sim/commands/Bcf.java | 2 ++ de/darkress/pic16f84sim/commands/Bsf.java | 2 ++ de/darkress/pic16f84sim/commands/Btfsc.java | 3 +++ de/darkress/pic16f84sim/commands/Btfss.java | 3 +++ de/darkress/pic16f84sim/commands/Call.java | 2 ++ de/darkress/pic16f84sim/commands/Clrf.java | 2 ++ de/darkress/pic16f84sim/commands/Clrw.java | 2 ++ de/darkress/pic16f84sim/commands/Comf.java | 2 ++ de/darkress/pic16f84sim/commands/Decf.java | 2 ++ de/darkress/pic16f84sim/commands/Decfsz.java | 3 +++ de/darkress/pic16f84sim/commands/Goto.java | 2 ++ de/darkress/pic16f84sim/commands/Incf.java | 2 ++ de/darkress/pic16f84sim/commands/Incfsz.java | 3 +++ de/darkress/pic16f84sim/commands/Iorlw.java | 2 ++ de/darkress/pic16f84sim/commands/Iorwf.java | 2 ++ de/darkress/pic16f84sim/commands/Movf.java | 2 ++ de/darkress/pic16f84sim/commands/Movlw.java | 2 ++ de/darkress/pic16f84sim/commands/Movwf.java | 2 ++ de/darkress/pic16f84sim/commands/Nop.java | 2 ++ de/darkress/pic16f84sim/commands/Retlw.java | 2 ++ de/darkress/pic16f84sim/commands/Return.java | 2 ++ de/darkress/pic16f84sim/commands/Rlf.java | 2 ++ de/darkress/pic16f84sim/commands/Rrf.java | 2 ++ de/darkress/pic16f84sim/commands/Sublw.java | 2 ++ de/darkress/pic16f84sim/commands/Subwf.java | 2 ++ de/darkress/pic16f84sim/commands/Swapf.java | 2 ++ de/darkress/pic16f84sim/commands/Xorlw.java | 2 ++ de/darkress/pic16f84sim/commands/Xorwf.java | 2 ++ .../pic16f84sim/microcontroller/Cycles.java | 14 ++++++++++++++ .../pic16f84sim/microcontroller/Memory.java | 1 + 34 files changed, 83 insertions(+) create mode 100644 de/darkress/pic16f84sim/microcontroller/Cycles.java diff --git a/de/darkress/pic16f84sim/commands/Addlw.java b/de/darkress/pic16f84sim/commands/Addlw.java index ef1e8e4..5f22577 100644 --- a/de/darkress/pic16f84sim/commands/Addlw.java +++ b/de/darkress/pic16f84sim/commands/Addlw.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Addlw extends LiteralCommandUtils implements Command 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 c54e435..7c516ba 100644 --- a/de/darkress/pic16f84sim/commands/Addwf.java +++ b/de/darkress/pic16f84sim/commands/Addwf.java @@ -1,5 +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; @@ -25,5 +26,6 @@ public class Addwf extends FileRegisterCommandUtils implements Command 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 d907155..cf7dff4 100644 --- a/de/darkress/pic16f84sim/commands/Andlw.java +++ b/de/darkress/pic16f84sim/commands/Andlw.java @@ -1,5 +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; @@ -20,5 +21,6 @@ public class Andlw extends LiteralCommandUtils implements Command 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 9d51d1a..f59ea6b 100644 --- a/de/darkress/pic16f84sim/commands/Andwf.java +++ b/de/darkress/pic16f84sim/commands/Andwf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Andwf extends FileRegisterCommandUtils implements Command 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 9d30604..a23b565 100644 --- a/de/darkress/pic16f84sim/commands/Bcf.java +++ b/de/darkress/pic16f84sim/commands/Bcf.java @@ -1,5 +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; @@ -22,5 +23,6 @@ public class Bcf extends BitOrientedCommandUtils implements Command 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 0555214..5c09392 100644 --- a/de/darkress/pic16f84sim/commands/Bsf.java +++ b/de/darkress/pic16f84sim/commands/Bsf.java @@ -1,5 +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; @@ -22,5 +23,6 @@ public class Bsf extends BitOrientedCommandUtils implements Command 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 4746384..0ad710b 100644 --- a/de/darkress/pic16f84sim/commands/Btfsc.java +++ b/de/darkress/pic16f84sim/commands/Btfsc.java @@ -1,5 +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; @@ -22,8 +23,10 @@ public class Btfsc extends BitOrientedCommandUtils implements Command if((result & (1 << bitPlacement)) == 0) //Test if bit is clear { ProgramCounter.incPC(); + Cycles.addToCycles(1); } ProgramCounter.incPC(); + Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Btfss.java b/de/darkress/pic16f84sim/commands/Btfss.java index ded0986..39d3811 100644 --- a/de/darkress/pic16f84sim/commands/Btfss.java +++ b/de/darkress/pic16f84sim/commands/Btfss.java @@ -1,5 +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; @@ -22,8 +23,10 @@ public class Btfss extends BitOrientedCommandUtils implements Command if((result & (1 << bitPlacement)) > 0) //Test if bit is set { ProgramCounter.incPC(); + Cycles.addToCycles(1); } ProgramCounter.incPC(); + Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Call.java b/de/darkress/pic16f84sim/commands/Call.java index 67c86f9..632f4df 100644 --- a/de/darkress/pic16f84sim/commands/Call.java +++ b/de/darkress/pic16f84sim/commands/Call.java @@ -1,5 +1,6 @@ package de.darkress.pic16f84sim.commands; +import de.darkress.pic16f84sim.microcontroller.Cycles; import de.darkress.pic16f84sim.microcontroller.ProgramCounter; import de.darkress.pic16f84sim.microcontroller.Stack; @@ -17,5 +18,6 @@ public class Call extends LiteralCommandUtils implements Command { Stack.push(ProgramCounter.getPc() + 1); ProgramCounter.setPcFrom11BitLiteral(literal); + Cycles.addToCycles(2); } } diff --git a/de/darkress/pic16f84sim/commands/Clrf.java b/de/darkress/pic16f84sim/commands/Clrf.java index 6a809f6..3da4505 100644 --- a/de/darkress/pic16f84sim/commands/Clrf.java +++ b/de/darkress/pic16f84sim/commands/Clrf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Clrf extends FileRegisterCommandUtils implements Command 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 e8661fa..22f7d06 100644 --- a/de/darkress/pic16f84sim/commands/Clrw.java +++ b/de/darkress/pic16f84sim/commands/Clrw.java @@ -1,5 +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; @@ -14,5 +15,6 @@ public class Clrw extends FileRegisterCommandUtils implements Command 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 f28c6df..38a66ff 100644 --- a/de/darkress/pic16f84sim/commands/Comf.java +++ b/de/darkress/pic16f84sim/commands/Comf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Comf extends FileRegisterCommandUtils implements Command 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 c8c9eca..3497d38 100644 --- a/de/darkress/pic16f84sim/commands/Decf.java +++ b/de/darkress/pic16f84sim/commands/Decf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Decf extends FileRegisterCommandUtils implements Command 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 9931eb2..56389ca 100644 --- a/de/darkress/pic16f84sim/commands/Decfsz.java +++ b/de/darkress/pic16f84sim/commands/Decfsz.java @@ -1,5 +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; @@ -26,7 +27,9 @@ public class Decfsz extends FileRegisterCommandUtils implements Command if((result % 256) == 0) { ProgramCounter.incPC(); + Cycles.addToCycles(1); } ProgramCounter.incPC(); + Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Goto.java b/de/darkress/pic16f84sim/commands/Goto.java index f77392e..6c2e185 100644 --- a/de/darkress/pic16f84sim/commands/Goto.java +++ b/de/darkress/pic16f84sim/commands/Goto.java @@ -1,5 +1,6 @@ package de.darkress.pic16f84sim.commands; +import de.darkress.pic16f84sim.microcontroller.Cycles; import de.darkress.pic16f84sim.microcontroller.ProgramCounter; public class Goto extends LiteralCommandUtils implements Command @@ -15,5 +16,6 @@ public class Goto extends LiteralCommandUtils implements Command public void execute() { ProgramCounter.setPcFrom11BitLiteral(literal); + Cycles.addToCycles(2); } } diff --git a/de/darkress/pic16f84sim/commands/Incf.java b/de/darkress/pic16f84sim/commands/Incf.java index 6875361..0871b6a 100644 --- a/de/darkress/pic16f84sim/commands/Incf.java +++ b/de/darkress/pic16f84sim/commands/Incf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Incf extends FileRegisterCommandUtils implements Command 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 538b42c..769979f 100644 --- a/de/darkress/pic16f84sim/commands/Incfsz.java +++ b/de/darkress/pic16f84sim/commands/Incfsz.java @@ -1,5 +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; @@ -26,7 +27,9 @@ public class Incfsz extends FileRegisterCommandUtils implements Command if((result % 256) == 0) { ProgramCounter.incPC(); + Cycles.addToCycles(1); } ProgramCounter.incPC(); + Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Iorlw.java b/de/darkress/pic16f84sim/commands/Iorlw.java index 207c6f5..06ce030 100644 --- a/de/darkress/pic16f84sim/commands/Iorlw.java +++ b/de/darkress/pic16f84sim/commands/Iorlw.java @@ -1,5 +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; @@ -20,5 +21,6 @@ public class Iorlw extends LiteralCommandUtils implements Command 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 9093a3b..21f02d6 100644 --- a/de/darkress/pic16f84sim/commands/Iorwf.java +++ b/de/darkress/pic16f84sim/commands/Iorwf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Iorwf extends FileRegisterCommandUtils implements Command 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 be77823..38d2e91 100644 --- a/de/darkress/pic16f84sim/commands/Movf.java +++ b/de/darkress/pic16f84sim/commands/Movf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Movf extends FileRegisterCommandUtils implements Command 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 3635120..4476d6f 100644 --- a/de/darkress/pic16f84sim/commands/Movlw.java +++ b/de/darkress/pic16f84sim/commands/Movlw.java @@ -1,5 +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; @@ -17,5 +18,6 @@ public class Movlw extends LiteralCommandUtils implements Command { Memory.workingRegister = literal; ProgramCounter.incPC(); + Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Movwf.java b/de/darkress/pic16f84sim/commands/Movwf.java index 3b19b2b..c5cd16f 100644 --- a/de/darkress/pic16f84sim/commands/Movwf.java +++ b/de/darkress/pic16f84sim/commands/Movwf.java @@ -1,5 +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; @@ -21,5 +22,6 @@ public class Movwf extends FileRegisterCommandUtils implements Command 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 ef3c182..1e103b6 100644 --- a/de/darkress/pic16f84sim/commands/Nop.java +++ b/de/darkress/pic16f84sim/commands/Nop.java @@ -1,5 +1,6 @@ package de.darkress.pic16f84sim.commands; +import de.darkress.pic16f84sim.microcontroller.Cycles; import de.darkress.pic16f84sim.microcontroller.ProgramCounter; public class Nop extends LiteralCommandUtils implements Command @@ -10,5 +11,6 @@ public class Nop extends LiteralCommandUtils implements Command { // Do nothing, just increment the PC ProgramCounter.incPC(); + Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/commands/Retlw.java b/de/darkress/pic16f84sim/commands/Retlw.java index b4dc2c4..b1d4062 100644 --- a/de/darkress/pic16f84sim/commands/Retlw.java +++ b/de/darkress/pic16f84sim/commands/Retlw.java @@ -1,5 +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; import de.darkress.pic16f84sim.microcontroller.Stack; @@ -18,5 +19,6 @@ public class Retlw extends LiteralCommandUtils implements Command { Memory.workingRegister = literal; ProgramCounter.setPcFromStack(Stack.pop()); + Cycles.addToCycles(2); } } diff --git a/de/darkress/pic16f84sim/commands/Return.java b/de/darkress/pic16f84sim/commands/Return.java index 9afe719..a21b966 100644 --- a/de/darkress/pic16f84sim/commands/Return.java +++ b/de/darkress/pic16f84sim/commands/Return.java @@ -1,5 +1,6 @@ package de.darkress.pic16f84sim.commands; +import de.darkress.pic16f84sim.microcontroller.Cycles; import de.darkress.pic16f84sim.microcontroller.ProgramCounter; import de.darkress.pic16f84sim.microcontroller.Stack; @@ -9,5 +10,6 @@ public class Return extends LiteralCommandUtils implements Command public void execute() { ProgramCounter.setPcFromStack(Stack.pop()); + Cycles.addToCycles(2); } } diff --git a/de/darkress/pic16f84sim/commands/Rlf.java b/de/darkress/pic16f84sim/commands/Rlf.java index ce73fe7..78091de 100644 --- a/de/darkress/pic16f84sim/commands/Rlf.java +++ b/de/darkress/pic16f84sim/commands/Rlf.java @@ -1,5 +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; @@ -31,5 +32,6 @@ 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 7257279..5d4f56a 100644 --- a/de/darkress/pic16f84sim/commands/Rrf.java +++ b/de/darkress/pic16f84sim/commands/Rrf.java @@ -1,5 +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; @@ -31,5 +32,6 @@ 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 df5c37d..491da3d 100644 --- a/de/darkress/pic16f84sim/commands/Sublw.java +++ b/de/darkress/pic16f84sim/commands/Sublw.java @@ -1,5 +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; @@ -43,5 +44,6 @@ public class Sublw extends LiteralCommandUtils implements Command 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 7b9b225..222efaa 100644 --- a/de/darkress/pic16f84sim/commands/Subwf.java +++ b/de/darkress/pic16f84sim/commands/Subwf.java @@ -1,5 +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; @@ -45,5 +46,6 @@ public class Subwf extends FileRegisterCommandUtils implements Command 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 8bfed2a..c40f60d 100644 --- a/de/darkress/pic16f84sim/commands/Swapf.java +++ b/de/darkress/pic16f84sim/commands/Swapf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Swapf extends FileRegisterCommandUtils implements Command 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 836b32c..bf44303 100644 --- a/de/darkress/pic16f84sim/commands/Xorlw.java +++ b/de/darkress/pic16f84sim/commands/Xorlw.java @@ -1,5 +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; @@ -20,5 +21,6 @@ public class Xorlw extends LiteralCommandUtils implements Command 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 c18646d..27a7248 100644 --- a/de/darkress/pic16f84sim/commands/Xorwf.java +++ b/de/darkress/pic16f84sim/commands/Xorwf.java @@ -1,5 +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; @@ -23,5 +24,6 @@ public class Xorwf extends FileRegisterCommandUtils implements Command writeToDestination(destinationBit, address, result); ProgramCounter.incPC(); + Cycles.addToCycles(1); } } diff --git a/de/darkress/pic16f84sim/microcontroller/Cycles.java b/de/darkress/pic16f84sim/microcontroller/Cycles.java new file mode 100644 index 0000000..c9dcaea --- /dev/null +++ b/de/darkress/pic16f84sim/microcontroller/Cycles.java @@ -0,0 +1,14 @@ +package de.darkress.pic16f84sim.microcontroller; + +public class Cycles { + private static int cycles = 0; + + public static void addToCycles(int increase) + { + cycles += increase; + } + + public static int getCycles() { + return cycles; + } +} diff --git a/de/darkress/pic16f84sim/microcontroller/Memory.java b/de/darkress/pic16f84sim/microcontroller/Memory.java index 4a4033b..ac835c7 100644 --- a/de/darkress/pic16f84sim/microcontroller/Memory.java +++ b/de/darkress/pic16f84sim/microcontroller/Memory.java @@ -62,6 +62,7 @@ public class Memory if(address == 0x2) //Check if PCL is destination { ProgramCounter.loadPc(); + Cycles.addToCycles(1); } }