Imports IO, NumTypes; CELLTYPE "Inverter" PORTS [inBOOL] EvalSimple out _ NOT in ENDCELLTYPE; CELLTYPE "Driver" PORTS [inInt[16], strInt[16]] EvalSimple out _ in + 1 ENDCELLTYPE; Contest: LAMBDA [contestants: |NAT|] RETURN CELLTYPE AutoName PortsProc ports _ NEW [PortsRep[contestants*2+1]]; FOR i: NAT IN [0 .. contestants) DO ports[2*i] _ [ simple: noField, switch: noField, name: IO.PutFR["c[%g].in", IO.int[i]], type: NumTypes.NumType[16], input: TRUE]; ports[2*i+1] _ [ simple: noField, switch: noField, name: IO.PutFR["c[%g].str", IO.int[i]], type: NumTypes.NumType[4], input: TRUE]; ENDLOOP; ports[2*contestants] _ [ simple: noField, switch: noField, name: "incedOutcome", type: NumTypes.NumType[16], output: TRUE]; Expand CEDAR [] _ to.class.NodeInstance[ erInstance: to.instance, name: "outcome", type: NumTypes.NumType[16]]; FOR i: NAT IN [0 .. contestants) DO [] _ to.class.CellInstance[ erInstance: to.instance, instanceName: IO.PutFR["d[%g]", IO.int[i]], typeName: "Driver", interfaceNodes: IO.PutFR["in: c[%g].in, out: outcome, str: c[%g].str", IO.int[i], IO.int[i]] ]; ENDLOOP; [] _ to.class.CellInstance[ erInstance: to.instance, instanceName: "inc", typeName: "Incrementer", interfaceNodes: "in: outcome, out: incedOutcome" ]; ENDCELLTYPE; c3: Contest[3] PSimpleTest.Rose Last Edited by: Spreitzer, April 28, 1985 3:47:58 pm PDT Κ#˜J™J™8J˜JšœΟkœ ˜J˜šœ ˜Jšœœœ˜˜ Jšœœ˜ —Jš œ˜ —J˜šœ ˜Jšœ&˜+˜ Jšœ œ˜J˜ —Jš œ˜ —J˜šœ˜Jšœ˜˜ J˜ —Jš œ˜ —J˜š œ œœœœ ˜=˜ Jšœœ˜(codešœœœ˜#šœ˜K˜K˜Kšœœœ ˜&K˜Kšœœ˜ —šœ˜K˜K˜Kšœœœ ˜'K˜Kšœœ˜ —Kšœ˜—šœ˜K˜K˜K˜K˜Kšœœ˜——˜š˜˜Kšœ˜K˜K˜—šœœœ˜#šœ˜Kšœ˜Kšœœœ ˜+K˜Kšœœ5œ œ˜\K˜—Kšœ˜—šœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ0˜0K˜———Kš œ˜ —K˜K˜—…—ˆϋ