#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: set ilc=*; recv, deliver; mem1.inCBD: set word= SETUP; deliver; recv; recv; set word= GO; deliver; SETUP: { mem1.inAddrWrite: set word= 1000; [11] deliver; mem1.inDataWrite: set word= 10; deliver; set word= 1; deliver; set word= 2; deliver; set word= 3; deliver; set word= 4; deliver; set word= 5; deliver; set word= 6; deliver; set word= 7; deliver; set word= 8; deliver; set word= 9; deliver; mem1.out: [11] collect; send token to mem1.inCBD; mem2.inAddrWrite: set word= 1000; [11] deliver; mem2.inDataWrite: set word= 10; deliver; set word= 1; deliver; set word= 2; deliver; set word= 3; deliver; set word= 4; deliver; set word= 5; deliver; set word= 6; deliver; set word= 7; deliver; set word= 8; deliver; set word= 9; deliver; mem2.out: [11] collect; send token to mem1.inCBD; } GO: { mem1.inAddrRead: set word= 1000; deliver; mem2.inAddrRead: set word= 1000; deliver; // normally we would write to memory, but here we send to debug //mem3.inAddrWrite: set word= 0; deliver; //mem3.out: set ilc=*; collect, send to debug.in; alu.in1: set ilc=*; recv, deliver; alu.in2: set ilc=*; recv, deliver; alu.inOp: set word= Alu2.inOp[MAX]; deliver; set word= Alu2.inOp[ADD]; set ilc=*; deliver; //alu.out: set ilc=*; collect, send to debug.in; mem1.out: collect; send to counter1.in1; send to alu.in1; set ilc=data; collect, send to alu.in1; mem2.out: collect; send to counter2.in1; send to alu.in2; set ilc=data; collect, send to alu.in2; counter1.in1: set word= 10; set ilc=data; set word= 1; deliver; counter1.in2: set word= 0; deliver; set ilc=*; recv, deliver; counter1.inOp: set word= Alu2.inOp[ADD]; set ilc=*; deliver; counter1.out: set olc=1; collect; send to debug.in; unclog; }