1 package edu.berkeley.fleet.ships;
2 import edu.berkeley.fleet.interpreter.*;
3 import edu.berkeley.fleet.*;
8 public class Mem extends InterpreterShip {
10 DataInbox read_addr = new DataInbox(this, "read_addr");
11 DataOutbox read_data = new DataOutbox(this, "read_data");
12 DataInbox write_addr = new DataInbox(this, "write_addr");
13 DataInbox write_data = new DataInbox(this, "write_data");
14 TokenOutbox write_done = new TokenOutbox(this, "write_done");
16 public Mem(Interpreter fleet, String name) { super(fleet, name); }
18 public String getBalsaName() { return "mem"; }
20 public void service() {
21 if (read_addr.dataReadyForShip() &&
22 read_data.readyForItemFromShip()) {
23 Interpreter f = (Interpreter)getFleet();
24 read_data.addDataFromShip(f.readMem(read_addr.removeDataForShip()));
27 if (write_addr.dataReadyForShip() &&
28 write_data.dataReadyForShip() &&
29 write_done.readyForItemFromShip()) {
30 Interpreter f = (Interpreter)getFleet();
31 f.writeMem(write_addr.removeDataForShip(),
32 write_data.removeDataForShip());
33 write_done.addTokenFromShip();