updated to AM14, AM15
[fleet.git] / src / edu / berkeley / fleet / ships / Alu1.java
1 package edu.berkeley.fleet.ships;
2 import edu.berkeley.fleet.interpreter.*;
3 import edu.berkeley.fleet.*;
4
5 import java.util.*;
6 import java.io.*;
7
8 public class Alu1 extends InterpreterShip {
9
10     DataInbox   in  = new DataInbox(this,  "in");
11     DataInbox   op  = new DataInbox(this,  "op");
12     DataOutbox  out = new DataOutbox(this, "out");
13
14     public Alu1(Interpreter fleet, String name) { super(fleet, name); }
15
16     public String getBalsaName() { return "alu1"; }
17
18     public void service() {
19         if (in.dataReadyForShip() && op.dataReadyForShip()) {
20             int data   = in.removeDataForShip();
21             int opcode = in.removeDataForShip();
22             switch(opcode) {
23                 case 0: out.addDataFromShip(-1 * data);      // NEG
24                     break;
25                 case 1: out.addDataFromShip(data+1);         // INC
26                     break;
27                 case 2: out.addDataFromShip(data-1);         // DEC
28                     break;
29                 case 3: out.addDataFromShip(Math.abs(data)); // ABS
30                     break;
31                 default: out.addDataFromShip(0);
32                     break;
33             }
34         }
35     }
36
37 }