-#skip
// expected output
#expect 0
--- /dev/null
+// expected output
+#expect 1
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=1, b=0;
+ [a] literal 1;
+ [b] literal 2;
+ deliver;
--- /dev/null
+// expected output
+#expect 4
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=0, b=1;
+ [a] literal 3;
+ [b] literal 4;
+ deliver;
--- /dev/null
+// expected output
+#expect 6
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=1, b=1;
+ [a] literal 5;
+ [b] literal 6;
+ deliver;
--- /dev/null
+// expected output
+#expect 8
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=1, b=1;
+ [b] literal 7;
+ [a] literal 8;
+ deliver;
--- /dev/null
+// expected output
+#expect 9
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=0, b=0;
+ literal 9;
+ [b] literal 10;
+ [a] literal 11;
+ deliver;
--- /dev/null
+// expected output
+#expect 2
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=1, b=0;
+ [!a] literal 1;
+ [!b] literal 2;
+ deliver;
--- /dev/null
+// expected output
+#expect 3
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=0, b=1;
+ [!a] literal 3;
+ [!b] literal 4;
+ deliver;
--- /dev/null
+// expected output
+#expect 4
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=1, b=1;
+ literal 4;
+ [!a] literal 5;
+ [!b] literal 6;
+ deliver;
--- /dev/null
+// expected output
+#expect 6
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=1, b=1;
+ literal 6;
+ [!b] literal 7;
+ [!a] literal 8;
+ deliver;
--- /dev/null
+// expected output
+#expect 11
+
+// ships required in order to run this code
+#ship debug : Debug
+
+debug.in:
+ setflags a=0, b=0;
+ literal 9;
+ [!b] literal 10;
+ [!a] literal 11;
+ deliver;
+++ /dev/null
-#skip
-// expected output
-#expect 1
-#expect 4
-#expect 6
-#expect 8
-#expect 9
-
-// ships required in order to run this code
-#ship debug : Debug
-
-debug.in:
- setflags a=1, b=0;
- [a] literal 1;
- [b] literal 2;
- deliver;
- setflags a=0, b=1;
- [a] literal 3;
- [b] literal 4;
- deliver;
- setflags a=1, b=1;
- [a] literal 5;
- [b] literal 6;
- deliver;
- setflags a=1, b=1;
- [b] literal 7;
- [a] literal 8;
- deliver;
- setflags a=0, b=0;
- literal 9;
- [b] literal 10;
- [a] literal 11;
- deliver;
-
--- /dev/null
+// expected output
+#expect 1
+#expect 0
+
+#ship debug : Debug
+#ship fifo : Fifo
+
+debug.in:
+ recv;
+ setflags a=c, b=b;
+ [a] literal 1;
+ [!a] literal 0;
+ wait, deliver;
+ setflags a=c, b=b;
+ [a] literal 1;
+ [!a] literal 0;
+ deliver;
+
+fifo.out:
+ notify debug.in:1;
+ notify debug.in:0;
+
--- /dev/null
+// expected output
+#expect 1
+#expect 20
+
+#ship debug : Debug
+#ship fifo : Fifo
+
+debug.in:
+ setflags a=1, b=b;
+ [a] literal 1;
+ [!a] literal 0;
+ deliver;
+ literal 0;
+ literal 1;
+ setflags a=0, b=b;
+ nop;
+ [!a] literal 20;
+ deliver;
+
+++ /dev/null
-#skip
-// expected output
-#expect 2
-#expect 2
-#expect 4
-
-// ships required in order to run this code
-#ship debug : Debug
-
-debug.in:
- literal 1;
- [z] literal 2;
- deliver;
- clog;
- load loop counter with 2;
- [z] literal 3;
- deliver;
- load loop counter with 0;
- [z] literal 4;
- deliver;
- unclog;
+#skip
// output ///////////////////////////////////////////////////////////////////
#expect 14
#expect 13
--- /dev/null
+
+#expect 0
+
+#ship mem1 : Memory
+#ship mem2 : Memory
+#ship mem3 : Memory
+#ship alu : Alu2
+#ship counter1 : Alu2
+#ship counter2 : Alu2
+#ship debug : Debug
+
+debug.in: [*] recv, deliver;
+mem1.inCBD:
+ literal SETUP; deliver;
+ recv;
+ recv;
+ literal GO; deliver;
+
+SETUP: {
+mem1.inAddrWrite: literal 1000; [11] deliver;
+mem1.inDataWrite:
+ literal 10; deliver;
+ literal 1; deliver;
+ literal 2; deliver;
+ literal 3; deliver;
+ literal 4; deliver;
+ literal 5; deliver;
+ literal 6; deliver;
+ literal 7; deliver;
+ literal 8; deliver;
+ literal 9; deliver;
+mem1.out:
+ [11] collect;
+ notify mem1.inCBD;
+mem2.inAddrWrite: literal 1000; [11] deliver;
+mem2.inDataWrite:
+ literal 10; deliver;
+ literal 1; deliver;
+ literal 2; deliver;
+ literal 3; deliver;
+ literal 4; deliver;
+ literal 5; deliver;
+ literal 6; deliver;
+ literal 7; deliver;
+ literal 8; deliver;
+ literal 9; deliver;
+mem2.out:
+ [11] collect;
+ notify mem1.inCBD;
+}
+
+GO: {
+
+mem1.inAddrRead: literal 1000; deliver;
+mem2.inAddrRead: literal 1000; deliver;
+
+// normally we would write to memory, but here we send to debug
+//mem3.inAddrWrite: literal 0; deliver;
+//mem3.out: [*] collect, sendto debug.in;
+
+alu.in1: [*] recv, deliver;
+alu.in2: [*] recv, deliver;
+alu.inOp: literal Alu2.inOp[MAX]; deliver; literal Alu2.inOp[ADD]; [*] deliver;
+//alu.out: [*] collect, sendto debug.in;
+
+mem1.out:
+ collect;
+ sendto counter1.in1;
+ sendto alu.in1;
+ load repeat counter;
+ collect, sendto alu.in1;
+mem2.out:
+ collect;
+ sendto counter2.in1;
+ sendto alu.in2;
+ load repeat counter;
+ collect, sendto alu.in2;
+
+counter1.in1: literal 10; load repeat counter; literal 1; deliver;
+counter1.in2: literal 0; deliver; [*] recv, deliver;
+counter1.inOp: literal Alu2.inOp[ADD]; [*] deliver;
+counter1.out: load loop counter with 1; collect; sendto debug.in; unclog;
+
+}
+#skip
#expect 1
#expect 2
fifo2.out: wait, take, sendto fifo.in;
fifo.out:
- clog;
- notify fifo2.out;
- take, sendto debug.in;
- take, sendto debug.in;
- unclog;
- unclog;
+ [L] notify fifo2.out;
+ [L] take, sendto debug.in;
+ [L] take, sendto debug.in;
+ tail;
+ tail;
+#skip
// output ///////////////////////////////////////////////////////////////////
#expect 5263
+++ /dev/null
-#expect 7
-#expect 7
-#expect 7
-#expect 7
-#expect 9
-
-#ship debug : Debug
-#ship memory : Memory
-#ship fifo : Fifo
-
-debug.in:
- load repeat counter with 3;
- take, deliver, notify fifo.in;
- [*] take, deliver;
-
-fifo.out:
- load repeat counter with 4;
- take, sendto debug.in;
- notify memory.inCBD;
- take, sendto debug.in;
-
-fifo.in:
- literal 7;
- deliver;
- load repeat counter with *;
- discard, deliver;
-
-memory.inCBD:
- take;
- literal {
- fifo.in:
- massacre;
-nop;
- literal 9;
- deliver;
- }; deliver;
-
-
-
+++ /dev/null
-#expect 7
-
-#ship debug : Debug
-#ship memory : Memory
-#ship fifo : Fifo
-
-debug.in: [*] take, deliver;
-
-fifo.out:
- literal 7;
- sendto fifo.in;
- load repeat counter with 2;
- take, sendto debug.in;
-
-fifo.in:
- clog;
- take;
- load loop counter;
- literal 0;
- take loop counter;
- deliver;
- unclog;
-#expect 5
#expect 0
-#expect 5
#expect 0
-#expect 5
-
+#expect 0
+#expect 0
+#expect 0
+#expect 1
#ship debug : Debug
#ship memory : Memory
fifo.out:
take;
- sendto debug.in;
- clog;
- load loop counter;
+ load repeat counter;
literal 0;
sendto debug.in;
- take loop counter;
- literal 5;
+ literal 1;
sendto debug.in;
- load loop counter with 0;
- unclog;
-#expect 7
+#expect 1
#ship debug : Debug
#ship memory : Memory
debug.in: [*] take, deliver;
fifo.out:
- take, sendto debug.in;
+ [*] take, sendto debug.in;
fifo.in:
- clog;
- load loop counter with 7;
- literal 3;
- take loop counter;
+ load repeat counter with 0;
+ literal 0;
+ deliver;
+ literal 1;
deliver;
- unclog;
--- /dev/null
+#skip
+#expect 5
+#expect 7
+#expect 5
+#expect 7
+#expect 5
+#expect 7
+#expect 9
+
+#ship memory : Memory
+#ship debug : Debug
+#ship fifo : Fifo
+#ship fifo2 : Fifo
+
+debug.in: [*] take, deliver;
+
+fifo.out: [*] take, sendto debug.in;
+
+fifo.in:
+ [L] load loop counter with 2;
+ [L] literal 5;
+ [L] deliver;
+ [L] take, deliver;
+ [L] notify memory.inCBD;
+ [L] decrement loop counter;
+ tail;
+
+fifo2.out:
+ literal 7;
+ load repeat counter with 4;
+ sendto fifo.in;
+
+memory.inCBD: literal {
+ fifo.in:
+ literal 9;
+ deliver;
+ };
+ load repeat counter with 3;
+ discard;
+ deliver;
+#skip
#expect 5
#expect 7
#expect 5
fifo.out: [*] take, sendto debug.in;
fifo.in:
- clog;
load loop counter with 2;
- literal 5;
- deliver;
- notify memory.inCBD;
- take, deliver;
- [dl] nop;
- unclog;
+ [L] nop;
+ [L] literal 5;
+ [L] deliver;
+ [L] notify memory.inCBD;
+ [L] take, deliver;
+ [L] decrement loop counter;
+ tail;
fifo2.out:
literal 7;
literal 9;
deliver;
};
- load repeat counter with 3;
+ discard;
+ discard;
discard;
deliver;
+
+++ /dev/null
-#expect 9
-#expect 2
-#expect 8
-#expect 1
-#expect 7
-#expect 0
-#ship debug : Debug
-#ship fifo : Fifo
-#ship fifo2 : Fifo
-
-fifo.in:
- clog;
- load loop counter with 3;
- take, deliver;
- [dl] nop;
- take loop counter;
- deliver;
- unclog;
-
-fifo.out:
- [*] take, sendto debug.in;
-
-debug.in:
- [*] take, deliver;
-
-fifo2.out:
- literal 9; sendto fifo.in;
- literal 8; sendto fifo.in;
- literal 7; sendto fifo.in;
-
[*] take, deliver;
fifo.out:
- clog;
load loop counter with 3;
- literal 5;
- sendto debug.in;
- take;
- sendto debug.in;
- unclog;
+ [L] literal 5;
+ [L] sendto debug.in;
+ [L] take;
+ [L] sendto debug.in;
+ tail;
+++ /dev/null
-#expect 7
-#expect 7
-#expect 7
-#expect 7
-#expect 8
-
-#ship debug : Debug
-#ship memory : Memory
-#ship fifo : Fifo
-
-debug.in: [*] take, deliver, notify fifo.in;
-
-fifo.out:
- notify fifo.in;
- load repeat counter with 4; take, sendto debug.in;
- notify memory.inCBD;
- [*] take, sendto debug.in;
-
-fifo.in:
- clog;
- load loop counter with 63;
- take;
- literal 7;
- deliver;
- unclog;
-
-memory.inCBD:
- take;
- literal {
- fifo.in:
- massacre; // extra instruction due to literal!
- literal 8;
- deliver;
- notify memory.inCBD;
- fifo.in: literal 8; [*] take, deliver;
- memory.inCBD:
- take;
- literal {
- }; deliver;
- }; deliver;
-
-
-
#ship alu : Alu2
#ship debug : Debug
-alu.inOp: literal Alu2.inOp[ADD];
- load repeat counter with *;
- deliver;
+// this test is bogus to begin with; doesn't have proper flow control
-alu.out: load loop counter with 40;
- clog;
- take, sendto alu.in1;
- sendto debug.in;
- nop;
- decrement loop counter;
- nop;
- unclog;
+alu.inOp: literal Alu2.inOp[ADD];
+ [*] deliver;
-debug.in: load repeat counter with *;
- take, deliver;
+debug.in: [*] take, deliver;
alu.in2: literal 4;
- load repeat counter with *;
- deliver;
+ [*] deliver;
-alu.in1: clog;
- literal 2;
+alu.out: load loop counter with 40;
+ [L] take, sendto alu.in1;
+ [L] sendto debug.in;
+ tail;
+
+alu.in1: literal 2;
load repeat counter with 4;
deliver;
load loop counter with 2;
- take, deliver;
- discard;
- deliver;
- unclog;
+ [L] take, deliver;
+ [L] discard, deliver;
+ tail;
+
--- /dev/null
+#expect 20
+#ship debug : Debug
+#ship fifo : Fifo
+
+debug.in:
+ [L] nop;
+ notify fifo.out;
+ [I] [*] wait;
+ [+] literal 20;
+ [+] deliver;
+ tail;
+
+fifo.out:
+ wait;
+ notify debug.in:i;
+
--- /dev/null
+#expect 20
+#expect 40
+#ship debug : Debug
+#ship fifo : Fifo
+
+debug.in:
+ [L] nop;
+ notify fifo.out;
+ [I] [*] wait;
+ [+] literal 20;
+ [+] deliver;
+ deliver;
+ tail;
+ [+] literal 40;
+ [+] deliver;
+
+fifo.out:
+ wait;
+ notify debug.in:i;
+
--- /dev/null
+#expect 0
+#expect 0
+#ship debug : Debug
+#ship fifo : Fifo
+
+debug.in:
+ [L] nop;
+ deliver;
+ load loop counter with 0;
+ tail;
+ [+] deliver;
+
+
--- /dev/null
+#expect 20
+#expect 30
+#ship debug : Debug
+#ship fifo : Fifo
+#ship fifo2 : Fifo
+
+debug.in: [*] take, deliver;
+
+fifo.out:
+ take, sendto debug.in;
+ wait;
+ literal 30;
+ sendto debug.in;
+
+fifo.in:
+ load tapl with fifo.out;
+ [L] nop;
+ notify fifo2.out;
+ [I] [*] wait;
+ [+] literal 20;
+ [+] deliver;
+ tail;
+
+fifo2.out:
+ wait;
+ notify fifo.in:i;
+
+