Little Circular Networks in Tcl

Theo Verelst

Started this page but claims no rights to keep it unchanged, as usual.

Networks are important, end knowing essentials is even important for programming, and in tcl we can quite well explore what happens with data passing through the smallest imaginable networks, to learn to begin with about what computers are essentially made of, further what networking can do, what object message sending limitations and possible errors are about, and what threads and interprocess communication must deal with.

And it's fun enough to think about the quite large complexity involved in a few 'not-so-black' boxes exchanging information, being 'created', initialized, and how one sensibly can simulate or enforce a communication regime to make the network tick.

In ee, you'd have logical circuit simulators who do such things, but if you don't persue a PhD and still want to think about oo messages, this tcl-inside page should not pose insurmountable problems.

I'm sure, by experience of letting a tcl/tk controller socket-talk a number crunching C program in real time, that the issue is relevant (in that context in windows tcl 8.0+ I think with cygnus socket connection).

Lets start with the idea of a logical function, which is easy enough, and of course done on various pages (boolean logic Finite State Machine).

A procedure to make an NAND as being invert(and(a,b):

 proc nand {a b} {return [expr !($a && $b)]}

the result is only 1 when both a and b are 0, and0 otherwise. Now we could put two nands on a row and feed the output back to the input, like we would do for an eigenvalue analysis/definition, and play around with what that gives us:

 proc nand2 {a b} {return [expr !($a2 && $b)]}

 set a 1
 set a2 1

 for {set i 0} {$i < 10} {incr i} {
    set b2 [nand $a $b]
    set b  [nand2 $a2 $b2]
 }
 # or:
 for {set i 0} {$i < 10} {incr i} {
    set b2 [nand $a $b]
    set b  [nand2 $a2 $b2]
 }

So the nands are like in series, and then fed round, and the open inputs are set to 1.

The fun is that this circuit can memorize a bit, also in electronical practice, and that as it is, it is like the dining philosophers, or at least it is as yet undefined what it will do: the above minimal initialisation of the eigenvalue problem leaves us with an undefined initial state, no matter what order we make the nands evaluate in.

Image TV Wiki nandnand.jpg

Now this might seem a touch boring or irrelevant, but it isn't. Its the eigenfunction analysis of a very simple function composition, which has memory, as we'll see, and which is undefined to start with, but completely defined from any resolving point onward, it is easily controllable, and can be practically implemented in various reasonable ways.

We can break through the undefined loop by applying another input signal to one of the inputs set to one thus far, as soon as we do that, the problem enters a defined state, and it depends on which input we make zero instead of one what state that will be: {b2 b} = 01 or 10.

When we in the 'running' network bring both open inputs back to 1, the last state, which was stable, is remembered. Setting the other input to zero forces the inverse state, while a=0 and a2=0 makes both b and b2 1, which cannot be a situation which is remembered.

For simulation, or practical implementation, it doesn't matter how and when we evaluate the functions, as long as for each input change, both get evaluated sufficiently often to propagate the chance into a new stable overall state.

On the bottom of the page I listed the bwise canvas graphics file, followed by the block variable and function file, which can be sourced into a freshly started bwise block environment, and the graphics also in program with a .mw.c canvas exisiting, and some unlikely to fail global variables missing.

Preferably don't use the bwise 'load' button, that will erase the canvas menus first without reinstalling them.

Your canvas should show the logical function block create subnetworks consisting of a generate function and ID incrementor, which can be triggered by running 'funcprop' from the right mouse button popup menu when the mouse is over the genXX yellow block. Each time the subnet will run one circle, creating a new logical function block and preparing a new ID number on the generator block input.

On the bottom part, the and + invertor circuits can be found, with two dummy blocks to hold the a and a2 equivalent input values, and followed by blocks showing their input values for feedback of the function outputs. The two constructed nand functions are fed in circle, but organized in a symmetrical fashion. The popup menu can be used on every block to get a 'data' window which shows all block variables, including *_bfunc which holds the function.

When you try the circuit, only run 'funcproc' or single eval and transfers on the network, or you'l end up with infinite circling of the block evaluator until some stack overflows (though I think that than deliberately happens in tcl).

Also, the funprop keeps an array of block names which have been executed and generated data that hasn't yet been consumed by the connected block, so repeated and alternating funcprop invokations from for instance the starting blocks makes the data ripple through. See the bwise and some other pages.

Alternatively, we can 'run' the blocks in a fixed sequence which we choose ourselves by the filelist procedure, which takes a list of block names and fires them and transfers their data in given order.


A not particularly well formed but illustrative function to do this is:

 proc firelist2 { {l} } {
   global bfunc t
      foreach n $l {
         set f {}
         append f  [blockfunc $n {}] 
         global $f
         eval set fc \$\{$f\}
         set t $fc
         uplevel #0  $t ;
         transfer $l
      }
 }

Which we can call with a list consisting of the block names we want to fire, such as

 firelist2 {Proc1 Proc2 and1 inv1 and2 inv2 Text1 Text2}

When you used the data windows on the proc1 and proc2 from the below network to set 11 (memorize) 10 (set) 01 (set) or 00 (make no sense), using this command repeatedly will let the data ripple through the network and show the result in the text blocks, normally either text1 or text2 being 1, the other 0.

To experiment with different schemes of activating the blocks (and transfering output data over the right hand side connected wires), I made a little script which lets you form a list of blocks by simply tapping on the yellow blocks and having an entry build a list as you click. An empty button let you make a new list, and a Run button executes the blocks in order of the list.

 toplevel .p
 entry .p.e
 pack .p.e
 .p.e conf -textvar rr
 $mc bind block <Button-1> {global rr; set rr [$mc itemcget current -tags]}
 pack .p.e -expand y -fill x
 $mc bind block <Button-1> {global rr; lappend rr [lindex [$mc itemcget current -tags] 0]}
 pack .p.r [button .p.r -text empty -command {global rr; set rr {}}] -side bottom -expand n -fill x
 pack [button .p.f -text run -command {global rr; firelist2 $rr}] -side bottom -expand n -fill x

 # canlogic2.tcl
 global bcount scopeindex wireindex shellindex drumindex
 set bcount 0
 set scopeindex 0
 set wireindex 20
 set shellindex 0
 set drumindex 0
 image create photo paperim -file paper.gif
 .mw.c create rectangle 31.0 13.0 71.0 43.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {genor newblock block} -width 1.0
 .mw.c create text 51.0 43.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genor crb label} -text genor -width 0
 .mw.c create text 30.0 32.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genor crb pinname n} -text n -width 0
 .mw.c create line 11.0 33.0 31.0 33.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {genor newblock pin n typein} -width 2.0
 .mw.c create text 72.0 32.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genor crb pinname nlast} -text nlast -width 0
 .mw.c create line 91.0 33.0 71.0 33.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {genor newblock pin nlast typeout} -width 2.0
 .mw.c create rectangle 219.0 14.0 259.0 44.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {genand newblock block} -width 1.0
 .mw.c create text 239.0 44.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genand crb label} -text genand -width 0
 .mw.c create text 218.0 33.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genand crb pinname n} -text n -width 0
 .mw.c create line 199.0 34.0 219.0 34.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {genand newblock pin n typein} -width 2.0
 .mw.c create text 260.0 33.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genand crb pinname nlast} -text nlast -width 0
 .mw.c create line 279.0 34.0 259.0 34.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {genand newblock pin nlast typeout} -width 2.0
 .mw.c create rectangle 125.0 13.0 165.0 43.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {geninv newblock block} -width 1.0
 .mw.c create text 145.0 43.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {geninv crb label} -text geninv -width 0
 .mw.c create text 124.0 32.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {geninv crb pinname n} -text n -width 0
 .mw.c create line 105.0 33.0 125.0 33.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {geninv newblock pin n typein} -width 2.0
 .mw.c create text 166.0 32.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {geninv crb pinname nlast} -text nlast -width 0
 .mw.c create line 185.0 33.0 165.0 33.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {geninv newblock pin nlast typeout} -width 2.0
 .mw.c create rectangle 404.0 15.0 444.0 45.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {genincr newblock block} -width 1.0
 .mw.c create text 424.0 45.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genincr crb label} -text genincr -width 0
 .mw.c create text 403.0 34.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genincr crb pinname n} -text n -width 0
 .mw.c create line 384.0 35.0 404.0 35.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {genincr newblock pin n typein} -width 2.0
 .mw.c create text 445.0 34.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {genincr crb pinname nlast} -text nlast -width 0
 .mw.c create line 464.0 35.0 444.0 35.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {genincr newblock pin nlast typeout} -width 2.0
 .mw.c create rectangle 404.0 66.0 444.0 96.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {incr1 newblock block} -width 1.0
 .mw.c create text 424.0 96.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr1 crb label} -text incr1 -width 0
 .mw.c create text 403.0 85.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr1 crb pinname i} -text i -width 0
 .mw.c create line 384.0 86.0 404.0 86.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr1 newblock pin i typein} -width 2.0
 .mw.c create text 445.0 85.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr1 crb pinname o} -text o -width 0
 .mw.c create line 464.0 86.0 444.0 86.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr1 newblock pin o typeout} -width 2.0
 .mw.c create line 464.0 35.0 384.0 86.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire4 connect wire genincr nlast incr1 i} -width 1.0
 .mw.c create line 384.0 35.0 464.0 86.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire5 connect wire genincr n incr1 o} -width 1.0
 .mw.c create rectangle 32.0 61.0 72.0 91.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {incr2 newblock block} -width 1.0
 .mw.c create text 52.0 91.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr2 crb label} -text incr2 -width 0
 .mw.c create text 31.0 80.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr2 crb pinname i} -text i -width 0
 .mw.c create line 12.0 81.0 32.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr2 newblock pin i typein} -width 2.0
 .mw.c create text 73.0 80.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr2 crb pinname o} -text o -width 0
 .mw.c create line 92.0 81.0 72.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr2 newblock pin o typeout} -width 2.0
 .mw.c create rectangle 126.0 61.0 166.0 91.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {incr3 newblock block} -width 1.0
 .mw.c create text 146.0 91.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr3 crb label} -text incr3 -width 0
 .mw.c create text 125.0 80.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr3 crb pinname i} -text i -width 0
 .mw.c create line 106.0 81.0 126.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr3 newblock pin i typein} -width 2.0
 .mw.c create text 167.0 80.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr3 crb pinname o} -text o -width 0
 .mw.c create line 186.0 81.0 166.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr3 newblock pin o typeout} -width 2.0
 .mw.c create rectangle 219.0 65.0 259.0 95.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {incr4 newblock block} -width 1.0
 .mw.c create text 239.0 95.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr4 crb label} -text incr4 -width 0
 .mw.c create text 218.0 84.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr4 crb pinname i} -text i -width 0
 .mw.c create line 199.0 85.0 219.0 85.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr4 newblock pin i typein} -width 2.0
 .mw.c create text 260.0 84.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {incr4 crb pinname o} -text o -width 0
 .mw.c create line 279.0 85.0 259.0 85.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {incr4 newblock pin o typeout} -width 2.0
 .mw.c create line 199.0 34.0 279.0 85.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire6 connect wire genand n incr4 o} -width 1.0
 .mw.c create line 279.0 34.0 199.0 85.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire7 connect wire genand nlast incr4 i} -width 1.0
 .mw.c create line 105.0 33.0 186.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire8 connect wire geninv n incr3 o} -width 1.0
 .mw.c create line 185.0 33.0 106.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire9 connect wire geninv nlast incr3 i} -width 1.0
 .mw.c create line 91.0 33.0 12.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire10 connect wire genor nlast incr2 i} -width 1.0
 .mw.c create line 11.0 33.0 92.0 81.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire11 connect wire genor n incr2 o} -width 1.0
 .mw.c create rectangle 265.0 144.0 305.0 174.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {inv1 newblock block} -width 1.0
 .mw.c create text 285.0 174.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {inv1 crb label} -text inv1 -width 0
 .mw.c create text 264.0 163.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {inv1 crb pinname a} -text a -width 0
 .mw.c create line 245.0 164.0 265.0 164.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {inv1 newblock pin a typein} -width 2.0
 .mw.c create text 306.0 163.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {inv1 crb pinname q} -text q -width 0
 .mw.c create line 325.0 164.0 305.0 164.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {inv1 newblock pin q typeout} -width 2.0
 .mw.c create rectangle 177.0 144.0 217.0 189.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {and1 newblock block} -width 1.0
 .mw.c create text 197.0 189.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and1 crb label} -text and1 -width 0
 .mw.c create text 176.0 163.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and1 crb pinname a} -text a -width 0
 .mw.c create line 157.0 164.0 177.0 164.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {and1 newblock pin a typein} -width 2.0
 .mw.c create text 176.0 178.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and1 crb pinname b} -text b -width 0
 .mw.c create line 157.0 179.0 177.0 179.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {and1 newblock pin b typein} -width 2.0
 .mw.c create text 218.0 163.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and1 crb pinname q} -text q -width 0
 .mw.c create line 237.0 164.0 217.0 164.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {and1 newblock pin q typeout} -width 2.0
 .mw.c create line 245.0 164.0 237.0 164.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire12 connect wire inv1 a and1 q} -width 1.0
 .mw.c create rectangle 265.0 203.0 305.0 233.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {inv2 newblock block} -width 1.0
 .mw.c create text 285.0 233.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {inv2 crb label} -text inv2 -width 0

.mw.c create text 264.0 222.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {inv2 crb pinname a} -text a -width 0

 .mw.c create line 245.0 223.0 265.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {inv2 newblock pin a typein} -width 2.0
 .mw.c create text 306.0 222.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {inv2 crb pinname q} -text q -width 0
 .mw.c create line 325.0 223.0 305.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {inv2 newblock pin q typeout} -width 2.0
 .mw.c create rectangle 177.0 203.0 217.0 248.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {and2 newblock block} -width 1.0
 .mw.c create text 197.0 248.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and2 crb label} -text and2 -width 0
 .mw.c create text 176.0 222.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and2 crb pinname a} -text a -width 0
 .mw.c create line 157.0 223.0 177.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {and2 newblock pin a typein} -width 2.0
 .mw.c create text 176.0 237.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and2 crb pinname b} -text b -width 0
 .mw.c create line 157.0 238.0 177.0 238.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {and2 newblock pin b typein} -width 2.0
 .mw.c create text 218.0 222.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {and2 crb pinname q} -text q -width 0
 .mw.c create line 237.0 223.0 217.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {and2 newblock pin q typeout} -width 2.0
 .mw.c create line 245.0 223.0 237.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire13 connect wire inv2 a and2 q} -width 1.0
 .mw.c create line 325.0 164.0 157.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire14 connect wire inv1 q and2 a} -width 1.0
 .mw.c create line 157.0 164.0 325.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire15 connect wire and1 a inv2 q} -width 1.0
 .mw.c create rectangle 29.0 159.0 69.0 189.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {Proc1 newblock block} -width 1.0
 .mw.c create text 49.0 189.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Proc1 crb label} -text Proc1 -width 0
 .mw.c create text 28.0 178.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Proc1 crb pinname in} -text in -width 0
 .mw.c create line 9.0 179.0 29.0 179.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {Proc1 newblock pin in typein} -width 2.0
 .mw.c create text 70.0 178.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Proc1 crb pinname out} -text out -width 0
 .mw.c create line 89.0 179.0 69.0 179.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {Proc1 newblock pin out typeout} -width 2.0
 .mw.c create rectangle 29.0 218.0 69.0 248.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {Proc2 newblock block} -width 1.0
 .mw.c create text 49.0 248.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Proc2 crb label} -text Proc2 -width 0
 .mw.c create text 28.0 237.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Proc2 crb pinname in} -text in -width 0
 .mw.c create line 9.0 238.0 29.0 238.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {Proc2 newblock pin in typein} -width 2.0

.mw.c create text 70.0 237.0 -activefill {} -activestipple {} -anchor sw -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Proc2 crb pinname out} -text out -width 0

 .mw.c create line 89.0 238.0 69.0 238.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {Proc2 newblock pin out typeout} -width 2.0
 .mw.c create line 157.0 179.0 89.0 179.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire16 connect wire and1 b Proc1 out} -width 1.0
 .mw.c create line 157.0 238.0 89.0 238.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire17 connect wire and2 b Proc2 out} -width 1.0
 .mw.c create rectangle 380.0 144.0 440.0 184.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {Text1 newblock block} -width 1.0
 .mw.c create text 410.0 184.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Text1 crb label} -text Text1 -width 0

.mw.c create text 379.0 163.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Text1 crb pinname in} -text in -width 0

 .mw.c create line 360.0 164.0 380.0 164.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {Text1 newblock pin in typein} -width 2.0
 .mw.c create text 386.0 154.0 -activefill {} -activestipple {} -anchor nw -disabledfill {} -disabledstipple {} -fill navy -font {courier 10} -justify left -offset 0,0 -state {} -stipple {} -tags {Text1 textfield} -text Text1 -width 0
 .mw.c create rectangle 379.0 203.0 439.0 243.0 -activedash {} -activefill {} -activeoutline {} -activeoutlinestipple {} -activestipple {} -activewidth 0.0 -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledoutline {} -disabledoutlinestipple {} -disabledstipple {} -disabledwidth 0 -fill yellow -offset 0,0 -outline darkblue -outlineoffset 0,0 -outlinestipple {} -state {} -stipple {} -tags {Text2 newblock block} -width 1.0
 .mw.c create text 409.0 243.0 -activefill {} -activestipple {} -anchor n -disabledfill {} -disabledstipple {} -fill darkblue -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Text2 crb label} -text Text2 -width 0

.mw.c create text 378.0 222.0 -activefill {} -activestipple {} -anchor se -disabledfill {} -disabledstipple {} -fill black -font {{MS Sans Serif} 8} -justify left -offset 0,0 -state {} -stipple {} -tags {Text2 crb pinname in} -text in -width 0

 .mw.c create line 359.0 223.0 379.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {Text2 newblock pin in typein} -width 2.0
 .mw.c create text 385.0 213.0 -activefill {} -activestipple {} -anchor nw -disabledfill {} -disabledstipple {} -fill navy -font {courier 10} -justify left -offset 0,0 -state {} -stipple {} -tags {Text2 textfield} -text Text2 -width 0
 .mw.c create line 325.0 164.0 360.0 164.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire18 connect wire inv1 q Text1 in} -width 1.0
 .mw.c create line 325.0 223.0 359.0 223.0 -activedash {} -activefill {} -activestipple {} -activewidth 0.0 -arrow none -arrowshape {8 10 3} -capstyle butt -fill darkblue -dash {} -dashoffset 0 -disableddash {} -disabledfill {} -disabledstipple {} -disabledwidth 0.0 -joinstyle round -offset 0,0 -smooth 0 -splinesteps 12 -state {} -stipple {} -tags {wire19 connect wire inv2 q Text2 in} -width 1.0

 # varlogic2.tcl
 set genor.bfunc {newproc "set or${genor.n}.q \[expr (\${or${genor.n}.a} || \${or${genor.n}.b})\]" or${genor.n} {a b} q  ;set genor.nlast ${genor.n}}
 set genor.bfunc_init {}
 set genor.n {1}
 set genor.nlast {1}
 set genand.bfunc {newproc "set and${genand.n}.q \[expr (\${and${genand.n}.a} && \${and${genand.n}.b})\]" and${genand.n} {a b} q  ;set genand.nlast ${genand.n}}
 set genand.bfunc_init {}
 set genand.n {3}
 set genand.nlast {2}
 set geninv.bfunc {newproc "set inv${geninv.n}.q \[expr !(\${inv${geninv.n}.a})\]" inv${geninv.n} {a} q  ;set geninv.nlast ${geninv.n}}
 set geninv.bfunc_init {}
 set geninv.n {3}
 set geninv.nlast {2}
 set genincr.bfunc {newproc "set incr${genincr.n}.o \[expr 1+(\${incr${genincr.n}.i})\]"  incr${genincr.n} {i} o  ;set genincr.nlast ${genincr.n}}
 set genincr.bfunc_init {}
 set genincr.n {5}
 set genincr.nlast {5}
 set incr1.bfunc {set incr1.o [expr 1+(${incr1.i})]}
 set incr1.bfunc_init {}
 set incr1.i {5}
 set incr1.o {6}
 set incr2.bfunc {set incr2.o [expr 1+(${incr2.i})]}
 set incr2.bfunc_init {}
 set incr2.i {1}
 set incr2.o {2}
 set incr3.bfunc {set incr3.o [expr 1+(${incr3.i})]}
 set incr3.bfunc_init {}
 set incr3.i {2}
 set incr3.o {3}
 set incr4.bfunc {set incr4.o [expr 1+(${incr4.i})]}
 set incr4.bfunc_init {}
 set incr4.i {2}
 set incr4.o {3}
 set inv1.a {}
 set inv1.bfunc {set inv1.q [expr !(${inv1.a})]}
 set inv1.bfunc_init {}
 set inv1.q {}
 set and1.a {0}
 set and1.b {1}
 set and1.bfunc {set and1.q [expr (${and1.a} && ${and1.b})]}
 set and1.bfunc_init {}
 set and1.q {}
 set inv2.a {}
 set inv2.bfunc {set inv2.q [expr !(${inv2.a})]}
 set inv2.bfunc_init {}
 set inv2.q {}
 set and2.a {}
 set and2.b {1}
 set and2.bfunc {set and2.q [expr (${and2.a} && ${and2.b})]}
 set and2.bfunc_init {}
 set and2.q {}
 set Proc1.bfunc { set Proc1.out ${Proc1.in} }
 set Proc1.bfunc_init {}
 set Proc1.in {1}
 set Proc1.out {1}
 set Proc2.bfunc { set Proc2.out ${Proc2.in} }
 set Proc2.bfunc_init {}
 set Proc2.in {1}
 set Proc2.out {1}
 set Text1.bfunc {global mc; $mc itemco [tag_and { Text1 textfield }] -text ${Text1.in} }
 set Text1.bfunc_init {}
 set Text1.in {}
 set Text2.bfunc {global mc; $mc itemco [tag_and { Text2 textfield }] -text ${Text2.in} }
 set Text2.bfunc_init {}
 set Text2.in {}

Category Example Category Graphics