remove obsolete ships
[fleet.git] / misc / obsolete-ships / MultiplierShip.java
diff --git a/misc/obsolete-ships/MultiplierShip.java b/misc/obsolete-ships/MultiplierShip.java
new file mode 100644 (file)
index 0000000..3efd5da
--- /dev/null
@@ -0,0 +1,39 @@
+package edu.berkeley.fleet.interpreter.ships;
+import edu.berkeley.fleet.interpreter.*;
+import edu.berkeley.fleet.*;
+
+import java.util.*;
+import java.io.*;
+
+/**
+ * @author Dominic Antonelli <dantonel@berkeley.edu>
+ */
+public class MultiplierShip extends InterpreterShip {
+
+    private int link;
+
+    DataInbox A = new DataInbox(this, "A");
+    DataInbox B = new DataInbox(this, "B");
+    DataOutbox out0 = new DataOutbox(this, "out0");
+    DataOutbox out1 = new DataOutbox(this, "out1");
+
+    public MultiplierShip(Interpreter fleet, String name) {
+        super(fleet, name);
+    }
+
+    public void service() {
+        if (!out0.readyForDataFromShip()) return;
+        if (!out1.readyForDataFromShip()) return;
+        if (!A.dataReadyForShip()) return;
+        if (!B.dataReadyForShip()) return;
+
+        long inA = (long)A.removeDataForShip();
+        long inB = (long)B.removeDataForShip();
+        long result = inA * inB;
+        int result0 = (int)(result >> 32);
+        int result1 = (int)(result & 0xffffffff);
+
+        out0.addDataFromShip(result0);
+        out1.addDataFromShip(result1);
+    }
+}