--- /dev/null
+#skip
+// output ///////////////////////////////////////////////////////////////////
+#expect 5263
+
+// program //////////////////////////////////////////////////////////////////
+#ship debug : Debug
+#ship memory : Memory
+#ship bitfifo : BitFifo
+#ship fifo : Fifo
+
+// dumb configurations
+debug.in: set ilc=*; take, deliver;
+memory.inAddrRead: set ilc=*; take, deliver;
+memory.inAddrWrite: set ilc=*; take, deliver;
+memory.inDataWrite: set ilc=*; take, deliver;
+
+FRED: {
+ fifo.in: deliver, send token to fifo.out;
+}
+
+fifo.in: set word= 5263;
+fifo.out: recv token, take, send to debug.in;
+
+bitfifo.in:
+ set word= 0; deliver; // six bits of leading zero (to wash out the codebag size)
+ set word= FRED; deliver; // FRED = { address_of_fred[31], size_of_fred[6] }
+
+// strip off bottom 6 bits
+bitfifo.inOp:
+ set word= BitFifo.inOp[take=6]; deliver;
+ set word= BitFifo.inOp[take=37]; deliver;
+bitfifo.outOp:
+ set word= BitFifo.outOp[take=37]; deliver;
+
+bitfifo.out: take, send to memory.inAddrRead;
+
+// value read out will be the instruction at FRED
+memory.out: take, send;
+
+