From 3d9bfb2a429e9ad6be061308d5033af4198279a0 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 11 Nov 2017 15:07:28 -0500 Subject: [PATCH] Added Clock --- .../src/net/simon987/mischwplugin/Clock.java | 42 ++++++++++++++++++ .../simon987/mischwplugin/MiscHWPlugin.java | 2 + .../event/CpuInitialisationListener.java | 2 + plugins/Plugin Misc HW.jar | Bin 0 -> 4615 bytes 4 files changed, 46 insertions(+) create mode 100644 Plugin Misc HW/src/net/simon987/mischwplugin/Clock.java create mode 100644 plugins/Plugin Misc HW.jar diff --git a/Plugin Misc HW/src/net/simon987/mischwplugin/Clock.java b/Plugin Misc HW/src/net/simon987/mischwplugin/Clock.java new file mode 100644 index 0000000..bd8c943 --- /dev/null +++ b/Plugin Misc HW/src/net/simon987/mischwplugin/Clock.java @@ -0,0 +1,42 @@ +package net.simon987.mischwplugin; + +import net.simon987.server.GameServer; +import net.simon987.server.assembly.CpuHardware; +import net.simon987.server.assembly.Status; +import net.simon987.server.assembly.Util; +import org.json.simple.JSONObject; + +public class Clock extends CpuHardware { + + public static final char HWID = 0x0008; + + public static final char DEFAULT_ADDRESS = 0x0008; + + @Override + public void handleInterrupt(Status status) { + + int time = (int) GameServer.INSTANCE.getGameUniverse().getTime(); + + //Will need to be changed to quadword in about 136 years + getCpu().getRegisterSet().getRegister("B").setValue(Util.getHigherWord(time)); + getCpu().getRegisterSet().getRegister("C").setValue(Util.getLowerWord(time)); + + } + + @Override + public char getId() { + return HWID; + } + + public static Clock deserialize(JSONObject hwJSON) { + return new Clock(); + } + + @Override + public JSONObject serialise() { + JSONObject json = new JSONObject(); + json.put("hwid", (int) HWID); + + return json; + } +} diff --git a/Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java b/Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java index cc98376..e88f1fc 100644 --- a/Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java +++ b/Plugin Misc HW/src/net/simon987/mischwplugin/MiscHWPlugin.java @@ -24,6 +24,8 @@ public class MiscHWPlugin extends ServerPlugin implements CpuHardwareDeserialize switch (hwid) { case RandomNumberGenerator.HWID: return RandomNumberGenerator.deserialize(hwJson); + case Clock.HWID: + return Clock.deserialize(hwJson); } return null; diff --git a/Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java b/Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java index 86bc1ee..8d6973c 100644 --- a/Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java +++ b/Plugin Misc HW/src/net/simon987/mischwplugin/event/CpuInitialisationListener.java @@ -1,5 +1,6 @@ package net.simon987.mischwplugin.event; +import net.simon987.mischwplugin.Clock; import net.simon987.mischwplugin.RandomNumberGenerator; import net.simon987.server.assembly.CPU; import net.simon987.server.event.CpuInitialisationEvent; @@ -19,5 +20,6 @@ public class CpuInitialisationListener implements GameEventListener { CPU cpu = (CPU) event.getSource(); cpu.attachHardware(new RandomNumberGenerator(), RandomNumberGenerator.DEFAULT_ADDRESS); + cpu.attachHardware(new Clock(), Clock.DEFAULT_ADDRESS); } } \ No newline at end of file diff --git a/plugins/Plugin Misc HW.jar b/plugins/Plugin Misc HW.jar new file mode 100644 index 0000000000000000000000000000000000000000..9b9c29f8013c451f8c988cb41ce51972a6ba232f GIT binary patch literal 4615 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 literal 0 HcmV?d00001