%%%%%%%%%%%%basic logical circuits%%%%%%%%%% %%%AND (NAND) \newcommand{\andnand}[3]{ \put(0,0){\framebox(10,15){}} \ifnum#1=2 \multiput(0,5)(0,5){2}{\line(-1,0){5}} % 2 inputs \else \ifnum#1=3 \multiput(0,2.5)(0,5){3}{\line(-1,0){5}} % 3 inputs \fi \fi \ifnum#2=0 \put(4,10){\&} % normal \ifx#3I \put(10.75,7.5){\circle{1.5}} %inverted output \put(11.5,7.5){\line(1,0){3}} \else \ifx#3N \put(10,7.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#2=1 \put(3,10){\&$\triangleright$} % power \ifx#3I \put(10.75,7.5){\circle{1.5}} %inverted output \put(11.5,7.5){\line(1,0){3}} \else \ifx#3N \put(10,7.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#2=2 \put(4,10){\&} %normal open collector \put(5,5){$\diamondsuit$} \put(5.5,4.5){\line(1,0){2}} \ifx#3I \put(10.75,4.5){\circle{1.5}} %inverted output \put(11.5,4.5){\line(1,0){3}} \else \ifx#3N \put(10,4.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#2=3 \put(3,10){\&$\triangleright$} %power open collector \put(5,5){$\diamondsuit$} \put(5.5,4.5){\line(1,0){2}} \ifx#3I \put(10.75,4.5){\circle{1.5}} %inverted output \put(11.5,4.5){\line(1,0){3}} \else \ifx#3N \put(10,4.5){\line(1,0){5}} %noninverted output \fi \fi \fi \fi \fi \fi } %%%%%%OR (NOR) \newcommand{\ornor}[3]{ \put(0,0){\framebox(10,15){}} \ifnum#1=2 \multiput(0,5)(0,5){2}{\line(-1,0){5}} % 2 inputs \else \ifnum#1=3 \multiput(0,2.5)(0,5){3}{\line(-1,0){5}} % 3 inputs \fi \fi \ifnum#2=0 \put(4,10){$1$} % normal \ifx#3I \put(10.75,7.5){\circle{1.5}} %inverted output \put(11.5,7.5){\line(1,0){3}} \else \ifx#3N \put(10,7.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#2=1 \put(3,10){$1\triangleright$} % power \ifx#3I \put(10.75,7.5){\circle{1.5}} %inverted output \put(11.5,7.5){\line(1,0){3}} \else \ifx#3N \put(10,7.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#2=2 \put(4,10){$1$} %normal open collector \put(5,5){$\diamondsuit$} \put(5.5,4.5){\line(1,0){2}} \ifx#3I \put(10.75,4.5){\circle{1.5}} %inverted output \put(11.5,4.5){\line(1,0){3}} \else \ifx#3N \put(10,4.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#2=3 \put(3,10){$1\triangleright$} %power open collector \put(5,5){$\diamondsuit$} \put(5.5,4.5){\line(1,0){2}} \ifx#3I \put(10.75,4.5){\circle{1.5}} %inverted output \put(11.5,4.5){\line(1,0){3}} \else \ifx#3N \put(10,4.5){\line(1,0){5}} %noninverted output \fi \fi \fi \fi \fi \fi } %%%inverter \newcommand{\invert}[2]{ \put(0,0){\framebox(10,15){}} \put(0,7.5){\line(-1,0){5}} % 1 input \ifnum#1=0 \put(4,10){$1$} % normal \ifx#2I \put(10.75,7.5){\circle{1.5}} %inverted output \put(11.5,7.5){\line(1,0){3}} \else \ifx#2N \put(10,7.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#1=1 \put(3,10){$1\triangleright$} % power \ifx#2I \put(10.75,7.5){\circle{1.5}} %inverted output \put(11.5,7.5){\line(1,0){3}} \else \ifx#2N \put(10,7.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#1=2 \put(4,10){$1$} %normal open collector \put(5,5){$\diamondsuit$} \put(5.5,4.5){\line(1,0){2}} \ifx#2I \put(10.75,4.5){\circle{1.5}} %inverted output \put(11.5,4.5){\line(1,0){3}} \else \ifx#2N \put(10,4.5){\line(1,0){5}} %noninverted output \fi \fi \else \ifnum#1=3 \put(3,10){$1\triangleright$} %power open collector \put(5,5){$\diamondsuit$} \put(5.5,4.5){\line(1,0){2}} \ifx#2I \put(10.75,4.5){\circle{1.5}} %inverted output \put(11.5,4.5){\line(1,0){3}} \else \ifx#2N \put(10,4.5){\line(1,0){5}} %noninverted output \fi \fi \fi \fi \fi \fi } \endinput