1 package edu.berkeley.fleet.ships;
2 import edu.berkeley.fleet.interpreter.*;
3 import edu.berkeley.fleet.*;
8 public class Alu1 extends InterpreterShip {
10 DataInbox in = new DataInbox(this, "in");
11 DataInbox op = new DataInbox(this, "op");
12 DataOutbox out = new DataOutbox(this, "out");
14 public Alu1(Interpreter fleet, String name) { super(fleet, name); }
16 public String getBalsaName() { return "alu1"; }
18 public void service() {
19 if (in.dataReadyForShip() && op.dataReadyForShip()) {
20 int data = in.removeDataForShip();
21 int opcode = in.removeDataForShip();
23 case 0: out.addDataFromShip(-1 * data); // NEG
25 case 1: out.addDataFromShip(data+1); // INC
27 case 2: out.addDataFromShip(data-1); // DEC
29 case 3: out.addDataFromShip(Math.abs(data)); // ABS
31 default: out.addDataFromShip(0);