Introduce ExecutionTimeSubject

This commit is contained in:
2025-05-26 15:32:36 +02:00
parent 06e9348016
commit 85bc6e9eba
14 changed files with 131 additions and 40 deletions

View File

@ -13,7 +13,7 @@ import java.nio.file.Paths;
import fabrik.simulator.pic16f84.interfaces.*;
public class EEPROM extends PICComponent implements EEPROMInterface {
public class EEPROM extends PICComponent implements EEPROMInterface, ExecutionTimeObserver {
private final int EEDATA = 0x08;
private final int EEADR = 0x09;
private final int EECON1 = 0x88;
@ -83,13 +83,13 @@ public class EEPROM extends PICComponent implements EEPROMInterface {
dataRegister.setDirectBit(EECON1, WRERR, 1);
return;
}
registerTime(true);
registerTime(executionTime.getTotalExecutionTime(), true);
}
public void registerTime(boolean reset) {
public void registerTime(double executionTime, boolean reset) {
if (reset)
startTime = commands.getTotalExecutionTime();
else if ((commands.getTotalExecutionTime() >= (startTime + 1000)) && writeControl) {
startTime = executionTime;
else if ((executionTime >= (startTime + 1000)) && writeControl) {
eecon2stages = new boolean[]{false, false};
dataRegister.setDirectBit(EECON1, EEIF, 1);
dataRegister.setDirectBit(EECON1, WR, 0);
@ -175,4 +175,9 @@ public class EEPROM extends PICComponent implements EEPROMInterface {
public void initialize(PICComponentLocator locator) {
super.initialize(locator);
}
@Override
public void executionTimeChanged() {
registerTime(executionTime.getTotalExecutionTime(), false);
}
}