diff --git a/de/darkress/pic16f84sim/Main.java b/de/darkress/pic16f84sim/Main.java index a293405..f39f487 100644 --- a/de/darkress/pic16f84sim/Main.java +++ b/de/darkress/pic16f84sim/Main.java @@ -1,5 +1,6 @@ package de.darkress.pic16f84sim; +import de.darkress.pic16f84sim.cli.Cli; import de.darkress.pic16f84sim.commands.Command; import de.darkress.pic16f84sim.decoder.CommandDecoder; import de.darkress.pic16f84sim.microcontroller.Cycles; @@ -14,7 +15,7 @@ class Main { public static void main(String[] args) throws InterruptedException { - Command[] program = Parser.parser("de/darkress/pic16f84sim/TestPrograms/TPicSim11.LST"); + Command[] program = Parser.parser("de/darkress/pic16f84sim/TestPrograms/TPicSim10.LST"); Memory.initMemory(); @@ -24,20 +25,10 @@ class Main System.out.println("Resetting device"); Watchdog.resetProgram(); } - System.out.println("Command: " + program[ProgramCounter.getPc()].toString()); + String[] instructionName = program[ProgramCounter.getPc()].getClass().toString().split("\\."); + System.out.println("Command: " + instructionName[instructionName.length -1]); program[ProgramCounter.getPc()].execute(); - - System.out.println(Integer.toHexString(Memory.workingRegister) + " " + Cycles.getCycles()); - System.out.println(Integer.toHexString(Memory.getOption()) + " " + Integer.toHexString(Memory.getTimer())); - - System.out.println(Integer.toHexString(Memory.getRegister(0x20)) + " " + Integer.toHexString(Memory.getRegister(0x21))); - System.out.println(Integer.toHexString(Memory.getRegister(0x22)) + " " + Integer.toHexString(Memory.getRegister(0x23))); - - System.out.println(Integer.toHexString(Memory.getPCLATH()) + " " + Integer.toHexString(Memory.getPCL()) + "\n"); - - if(ProgramCounter.getPc() == 0x10) { - System.out.println(Memory.getRegister(0x20)); - } + Cli.showRegisters(); } } } \ No newline at end of file diff --git a/de/darkress/pic16f84sim/cli/Cli.java b/de/darkress/pic16f84sim/cli/Cli.java new file mode 100644 index 0000000..17ffd6f --- /dev/null +++ b/de/darkress/pic16f84sim/cli/Cli.java @@ -0,0 +1,41 @@ +package de.darkress.pic16f84sim.cli; + +import de.darkress.pic16f84sim.microcontroller.Cycles; +import de.darkress.pic16f84sim.microcontroller.Memory; +import de.darkress.pic16f84sim.microcontroller.Stack; +import de.darkress.pic16f84sim.microcontroller.Timer; + +public class Cli +{ + public static void showRegisters() { + /* + System.out.println(Integer.toHexString(Memory.workingRegister) + " " + Cycles.getCycles()); // WReg ProgramCycles + System.out.println(Integer.toHexString(Memory.getOption()) + " " + Integer.toHexString(Memory.getRegister(0x03))); // Option Status + System.out.println(Integer.toHexString(Memory.getPCLATH()) + " " + Integer.toHexString(Memory.getPCL()) + "\n"); // PCLATH PCL + */ + printf(Memory.workingRegister, "W-Reg", true); + printf(Cycles.getCycles(), "Cycles", false); + System.out.printf("%n"); + printf(Memory.getRegister(0x03), "Status", true); + printf(Memory.getOption(), "Option", true); + System.out.printf("%n"); + printf(Memory.getFSR(), "FSR", true); + printf(Stack.getStackPointer(), "Stackpointer", true); + System.out.printf("%n"); + printf(Memory.getTimer(), "Timer", true); + printf(Timer.getCyclesToTimerIncrease(), "Prescaler", true); + System.out.printf("%n"); + printf(Memory.getPCLATH(), "PCLATH", true); + printf(Memory.getPCL(), "PCL", true); + System.out.printf("%n"); + } + + private static void printf(int value, String description, boolean hex) { + if(hex) { + System.out.printf("%s:\t\t%s\t", description, Integer.toHexString(value)); + } else { + System.out.printf("%s:\t\t%d\t", description, value); + } + + } +} diff --git a/de/darkress/pic16f84sim/microcontroller/Memory.java b/de/darkress/pic16f84sim/microcontroller/Memory.java index 2bd9fbd..224f29a 100644 --- a/de/darkress/pic16f84sim/microcontroller/Memory.java +++ b/de/darkress/pic16f84sim/microcontroller/Memory.java @@ -111,7 +111,7 @@ public class Memory return 1; } - private static int getFSR() + public static int getFSR() { return memory[0x4]; } diff --git a/de/darkress/pic16f84sim/microcontroller/Stack.java b/de/darkress/pic16f84sim/microcontroller/Stack.java index c921e78..67e95aa 100644 --- a/de/darkress/pic16f84sim/microcontroller/Stack.java +++ b/de/darkress/pic16f84sim/microcontroller/Stack.java @@ -18,10 +18,6 @@ public class Stack return stack[stackPointer]; } - public static int peek() - { - return stack[(stackPointer + 7) % 8]; //Get TopOfStack -1 +8 = 7 and modulo 8 to avoid IndexOutOfBound - } private static void pointNext() {