adjust ships to use fill/drain/full/empty macros
[fleet.git] / ships / Counter.ship
index 91ba0d1..dbdb4a5 100644 (file)
@@ -48,50 +48,47 @@ public void service() { }
       full <= 0;
     end else begin
       `flush
-      if (!in1_r     &&  in1_a)              in1_a  <= 0;
-      if (!in2_r     &&  in2_a)              in2_a  <= 0;
-      if (!inOp_r    &&  inOp_a)             inOp_a <= 0;
-      if (!inOp_r    && !inOp_a)             full   <= 0;
-      if (out_r      && out_a) begin
-        out_r  <= 0;
+      `cleanup
+      if (`inOp_empty)         full   <= 0;
+      if (`out_draining) begin
         if (op_count) temp   <= temp - in2_d;
         else          temp   <= temp - 1;
-        if (op_pass && op_v1) in1_a <= 1;
-        if (op_pass && op_v2) in2_a <= 1;
-      end else if (inOp_r && !inOp_a) begin
+        if (op_pass && op_v1) `drain_in1
+        if (op_pass && op_v2) `drain_in2
+      end else if (`inOp_full) begin
         if (!full) begin
-          if (op_count && in1_r && !in1_a && in2_r && !in2_a) begin
+          if (op_count && `in1_full && `in2_full) begin
             temp  <= in1_d[`DATAWIDTH-1:0] - in2_d[`DATAWIDTH-1:0];
-            in1_a <= 1;
+            `drain_in1
             full  <= 1;
-          end else if (op_c1 && in1_r && !in1_a) begin
+          end else if (op_c1 && `in1_full) begin
             temp  <= in1_d[`DATAWIDTH-1:0]-1;
-            in1_a <= 1;
+            `drain_in1
             full  <= 1;
-          end else if (op_c2 && in2_r && !in2_a) begin
+          end else if (op_c2 && `in2_full) begin
             temp  <= in2_d[`DATAWIDTH-1:0]-1;
-            in2_a <= 1;
+            `drain_in2
             full  <= 1;
           end
         end else if (temp[`DATAWIDTH-1]) begin
           full <= 0;
-          inOp_a <= 1;
+          `drain_inOp
           if (op_count) begin
-            in2_a <= 1;
+            `drain_in2
           end else if (op_repeat && op_v1) begin
-            in1_a <= 1;
+            `drain_in1
           end else if (op_repeat && op_v2) begin
-            in2_a <= 1;
+            `drain_in2
           end
-        end else if (!out_r && !out_a) begin
+        end else if (`out_empty) begin
           if (op_count) begin
-            out_r <= 1;
-          end else if (op_v1 && in1_r && !in1_a) begin
-            if (op_drop)    begin in1_a <= 1; temp <= temp-1; end
-            else            out_r <= 1;
-          end else if (op_v2 && in2_r && !in2_a) begin
-            if (op_drop)    begin in2_a <= 1; temp <= temp-1; end
-            else            out_r <= 1;
+            `fill_out
+          end else if (op_v1 && `in1_full) begin
+            if (op_drop)    begin `drain_in1 temp <= temp-1; end
+            else            `fill_out
+          end else if (op_v2 && `in2_full) begin
+            if (op_drop)    begin `drain_in2 temp <= temp-1; end
+            else            `fill_out
           end
         end
       end