remove obsolete ships
[fleet.git] / misc / obsolete-ships / MemoryWriteShip.java
1 package edu.berkeley.fleet.interpreter.ships;
2 import edu.berkeley.fleet.interpreter.*;
3
4 import edu.berkeley.fleet.*;
5 import java.util.*;
6 import java.io.*;
7
8 /**
9  *  @author Thomas Kho <tkho@eecs.berkeley.edu>
10  */
11 public class MemoryWriteShip extends InterpreterShip {
12
13     int _count = 0;
14     int _stride = 0;
15     int _addr = 0;
16
17     DataInbox  addr   = new DataInbox(this, "addr");
18     DataInbox  stride = new DataInbox(this, "stride");
19     DataInbox  count  = new DataInbox(this, "count");
20     DataInbox  data   = new DataInbox(this, "data");
21     TokenOutbox done  = new TokenOutbox(this, "done");
22
23     public MemoryWriteShip(Interpreter fleet, String name) {
24         super(fleet, name);
25     }
26
27     public void service() {
28         if (_count > 0) {
29             if (!data.dataReadyForShip()) return;
30             //getInterpreter().writeMem(_addr, data.removeDataForShip());
31             _count--;
32             _addr += _stride;
33             if (_count==0)
34                 done.addTokenFromShip();
35         } else {
36             if (count.dataReadyForShip() &&
37                 addr.dataReadyForShip() &&
38                 stride.dataReadyForShip() &&
39                 done.readyForTokenFromShip() &&
40                 data.dataReadyForShip()) {
41
42                 _count  = count.removeDataForShip();
43                 _addr   = addr.removeDataForShip();
44                 _stride = stride.removeDataForShip();
45             }
46         }
47     }
48
49 }