+++ /dev/null
-package edu.berkeley.fleet.interpreter.ships;
-import edu.berkeley.fleet.interpreter.*;
-
-import edu.berkeley.fleet.*;
-import java.util.*;
-import java.io.*;
-
-public class MemoryReadShip extends InterpreterShip {
-
- boolean _loaded = false;
- int _count = 0;
- int _stride = 0;
- int _addr = 0;
-
- DataInbox addr = new DataInbox(this, "addr");
- DataInbox stride = new DataInbox(this, "stride");
- DataInbox count = new DataInbox(this, "count");
- DataOutbox data = new DataOutbox(this, "data");
- TokenOutbox done = new TokenOutbox(this, "done");
-
- public MemoryReadShip(Interpreter fleet, String name) {
- super(fleet, name);
- }
-
- public void service() {
- if (_count > 0) {
- if (!data.readyForDataFromShip()) return;
- data.addDataFromShip(_addr>=getInterpreter().mem.length ? 0 : getInterpreter().mem[_addr]);
- _count--;
- _addr += _stride;
- if (_count==0)
- done.addTokenFromShip();
- } else {
- if (count.dataReadyForShip() &&
- addr.dataReadyForShip() &&
- stride.dataReadyForShip() &&
- done.readyForTokenFromShip() &&
- data.readyForDataFromShip()) {
-
- _count = count.removeDataForShip();
- _addr = addr.removeDataForShip();
- _stride = stride.removeDataForShip();
- }
- }
- }
-
-}