X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ships%2FRotator.ship;h=74cb3f1cb1d0c2c03d19394d18c56685cabf9608;hb=cbafca81451a452015ea365b3546c3bc0ac7bdbd;hp=5c8226a0bb0e98091aa4b0ef97336fb40cc20474;hpb=11df380a69fbab49049ac267c9099a01d3370e4a;p=fleet.git diff --git a/ships/Rotator.ship b/ships/Rotator.ship index 5c8226a..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 @@ -104,11 +104,12 @@ rotator.inAmount: deliver; rotator.out: set olc=3; - [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; + head; + collect, send to debug.in; + set flags a=c, b=b; + [!a] set word=0; + [a] set word=1; + send to debug.in; tail;