X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ships%2FRotator.ship;h=74cb3f1cb1d0c2c03d19394d18c56685cabf9608;hb=aee85d3dd0435554e14e03b97f268752843a441f;hp=c5bbf64eace73468da1265052f86693c9723a0ba;hpb=f109c425b886206b95a5c95e726d742c0e9fe09d;p=fleet.git diff --git a/ships/Rotator.ship b/ships/Rotator.ship index c5bbf64..74cb3f1 100644 --- a/ships/Rotator.ship +++ b/ships/Rotator.ship @@ -26,7 +26,8 @@ public void service() { long data = box_in.removeDataForShip(); long mask = ~((-1L) << getInterpreter().getWordWidth()); data = data & mask; - box_out.addDataFromShip(((data << amount) | (data >> (getInterpreter().getWordWidth()-amount))) & mask); + long res = ((data >> amount) | (data << (getInterpreter().getWordWidth()-amount))) & mask; + box_out.addDataFromShip(res, (res & (1L << (getInterpreter().getWordWidth()-1)))!=0); } } @@ -46,11 +47,10 @@ public void service() { assign shamt_eq = (shamt[5:0] == (inAmount_d[5:0])); always @(posedge clk) begin - if (!rst) begin + if (rst) begin `reset full <= 0; end else begin - `flush `cleanup if (`in_full && `inAmount_full && `out_empty) begin if (!full) begin @@ -105,11 +105,11 @@ rotator.inAmount: rotator.out: set olc=3; head; - [Rq] collect, send to debug.in; - [Rq] set flags a=c, b=b; - [Rq] [!a] set word=0; - [Rq] [a] set word=1; - [Rq] send to debug.in; + collect, send to debug.in; + set flags a=c, b=b; + [!a] set word=0; + [a] set word=1; + send to debug.in; tail;