diff --git a/20220315/80486dx2-large.jpg b/20220315/80486dx2-large.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ba4b32ee9489e862a8bf7b273002351f671f2878
Binary files /dev/null and b/20220315/80486dx2-large.jpg differ
diff --git a/20220315/Babbages_Analytical_Engine,_1834-1871._(9660574685).jpg b/20220315/Babbages_Analytical_Engine,_1834-1871._(9660574685).jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ab4c5b44e4509ef9907ad5e50768cf8d75010253
Binary files /dev/null and b/20220315/Babbages_Analytical_Engine,_1834-1871._(9660574685).jpg differ
diff --git a/20220315/Elektronenroehre_real.png b/20220315/Elektronenroehre_real.png
new file mode 100644
index 0000000000000000000000000000000000000000..9752168cb151d698c90b4920b060dd3595196f49
Binary files /dev/null and b/20220315/Elektronenroehre_real.png differ
diff --git a/20220315/Elektronenroehren-auswahl.jpg b/20220315/Elektronenroehren-auswahl.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7c42b321f29ea81b11eb51a191dc9cc2ef7cfd7c
Binary files /dev/null and b/20220315/Elektronenroehren-auswahl.jpg differ
diff --git a/20220315/Eniac.jpg b/20220315/Eniac.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..75c5f42d190017636ff0bba2b49c994779d2c91a
Binary files /dev/null and b/20220315/Eniac.jpg differ
diff --git a/20220315/IC_Nanotecnology_2400X.JPG b/20220315/IC_Nanotecnology_2400X.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..a64dbfb91048d93f1e9141ef9e433bbf584911cd
Binary files /dev/null and b/20220315/IC_Nanotecnology_2400X.JPG differ
diff --git a/20220315/Intel_80486DX2_bottom.jpg b/20220315/Intel_80486DX2_bottom.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..51196ca09c87a5d8aa9a59d5189e18fd792fc48b
Binary files /dev/null and b/20220315/Intel_80486DX2_bottom.jpg differ
diff --git a/20220315/Intel_80486DX2_top.jpg b/20220315/Intel_80486DX2_top.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fb83e35c9564e3380e0d5314f968fc8fff9f480f
Binary files /dev/null and b/20220315/Intel_80486DX2_top.jpg differ
diff --git a/20220315/Relay_principle_horizontal.jpg b/20220315/Relay_principle_horizontal.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ab9ffcd879a04f523118ba1a58f52ee8ad1d30db
Binary files /dev/null and b/20220315/Relay_principle_horizontal.jpg differ
diff --git a/20220315/Transistors-white-cropped.jpg b/20220315/Transistors-white-cropped.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9b649bb9d9bc55986a6bfc80e571ab04ce7e70f8
Binary files /dev/null and b/20220315/Transistors-white-cropped.jpg differ
diff --git a/20220315/Z3_Deutsches_Museum.JPG b/20220315/Z3_Deutsches_Museum.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..9b025ca65f0c0ec1cf9f317dbb80879efdf662da
Binary files /dev/null and b/20220315/Z3_Deutsches_Museum.JPG differ
diff --git a/20220315/ada-lovelace.jpg b/20220315/ada-lovelace.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..596510e71dc0c5551464c1b23596f9363e2379e5
Binary files /dev/null and b/20220315/ada-lovelace.jpg differ
diff --git a/20220315/analytic-engine.jpg b/20220315/analytic-engine.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..954d18cce3d47e5e45d20065adcda6b75a643c80
--- /dev/null
+++ b/20220315/analytic-engine.jpg
@@ -0,0 +1 @@
+Babbages_Analytical_Engine,_1834-1871._(9660574685).jpg
\ No newline at end of file
diff --git a/20220315/charles-babbage.jpg b/20220315/charles-babbage.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0bf9cc635b90b173b32b010080f133b61327826b
Binary files /dev/null and b/20220315/charles-babbage.jpg differ
diff --git a/20220315/rtech-20220315-fig1.pdf b/20220315/rtech-20220315-fig1.pdf
index bbc16af26d94dc7e3042c7060250c26436e8e0b2..cc52ac14540e21797c4096b491aed7b0ea701696 100644
Binary files a/20220315/rtech-20220315-fig1.pdf and b/20220315/rtech-20220315-fig1.pdf differ
diff --git a/20220315/rtech-20220315-fig1.tex b/20220315/rtech-20220315-fig1.tex
new file mode 100644
index 0000000000000000000000000000000000000000..441d80a9d6bd76e8b3f7a9ca82c04be2c9c8fb16
--- /dev/null
+++ b/20220315/rtech-20220315-fig1.tex
@@ -0,0 +1,60 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+      \psscalebox{0.8}{%
+        \begin{pspicture}(-5,0)(12,12)
+          \small
+          \psset{unit=0.5cm}
+          \psline[arrows=<->](-1,0)(-1,22)
+          \rput(-1.3,0){\makebox(0,0)[br]{\textbf{gegenständlich}}}
+          \rput(-1.3,22){\makebox(0,0)[tr]{\textbf{abstrakt}}}
+          \rput(-1.3,2){\makebox(0,0)[r]{Elektromagnetismus, Halbleiter}}
+          \rput(-1.3,4){\makebox(0,0)[r]{Elektronische Bauelemente}}
+          \rput(-1.3,6){\makebox(0,0)[r]{Logik-Schaltkreise}}
+          \rput(-1.3,8){\makebox(0,0)[r]{Prozessoren}}
+          \rput(-1.3,9){\makebox(0,0)[r]{Maschinensprache}}
+          \rput(-1.3,10){\makebox(0,0)[r]{Assembler}}
+          \rput(-1.3,11){\makebox(0,0)[r]{Ein-/Ausgabe}}
+          \rput(-1.3,12.35){\makebox(0,0)[r]{\textbf{hardwarenahe Programmierung} (z.\,B.\ in C)}}
+          \rput(-1.3,14){\makebox(0,0)[r]{\shortstack[r]{abstrahierende Programmierung\\(z.\,B.\ in C++, Java)}}}
+%          \rput(-1.3,15){\makebox(0,0)[r]{Programmierung}}
+          \rput(-1.3,16){\makebox(0,0)[r]{Algorithmen, Datenstrukturen, Software-Entwurf}}
+          \rput(-1.3,17){\makebox(0,0)[r]{Requirements Engineering}}
+          \rput(-1.3,18){\makebox(0,0)[r]{formale Sprachen, Berechenbarkeit}}
+          \rput(-1.3,19){\makebox(0,0)[r]{mathematische Strukturen}}
+          \rput(-1.3,20){\makebox(0,0)[r]{mathematische Beweise}}
+          \rput(2.1,0.5){\makebox(0,0)[l]{Physik}}
+          \rput(4.1,4){\makebox(0,0)[l]{Elektrotechnik}}
+          \rput(6.1,8){\makebox(0,0)[l]{\textbf{Rechnertechnik}}}
+          \rput(8.1,12.35){\makebox(0,0)[l]{angewandte Informatik}}
+          \rput(10.1,16){\makebox(0,0)[l]{\shortstack[l]{Softwaretechnik und\\theoretische Informatik}}}
+          \rput(12.1,21){\makebox(0,0)[l]{Mathematik}}
+          \psset{linewidth=0.001,linestyle=none,fillstyle=gradient,gradmidpoint=1.0,gradlines=1000}
+          \definecolor{RGBwhite}{rgb}{1.0,1.0,1.0}
+          \definecolor{RGBblue}{rgb}{0.0,0.0,1.0}
+          \definecolor{RGBred}{rgb}{1.0,0.0,0.0}
+          \definecolor{RGBgreen}{rgb}{0.0,1.0,0.0}
+          \definecolor{RGByellow}{rgb}{1.0,1.0,0.0}
+          \definecolor{RGBorange}{rgb}{1.0,0.7,0.0}
+          \definecolor{RGBgrey}{rgb}{0.7,0.7,0.7}
+          \rput(0,2){\psframe[gradbegin=RGBwhite,gradend=RGBblue](2,2)}
+          \rput(0,0){\psframe[fillstyle=solid,fillcolor=RGBblue](2,2.01)}
+          \rput(2,6){\psframe[gradbegin=RGBwhite,gradend=RGBred](2,2)}
+          \rput(2,2){\psframe[gradbegin=RGBred,gradend=RGBwhite](2,2)}
+          \rput(2,3.99){\psframe[fillstyle=solid,fillcolor=RGBred](2,2.02)}
+          \rput(4,10){\psframe[gradbegin=RGBwhite,gradend=RGBgreen](2,2)}
+          \rput(4,6){\psframe[gradbegin=RGBgreen,gradend=RGBwhite](2,2)}
+          \rput(4,7.99){\psframe[fillstyle=solid,fillcolor=RGBgreen](2,2.02)}
+          \rput(6,14){\psframe[gradbegin=RGBwhite,gradend=RGByellow](2,2)}
+          \rput(6,10){\psframe[gradbegin=RGByellow,gradend=RGBwhite](2,2)}
+          \rput(6,11.99){\psframe[fillstyle=solid,fillcolor=RGByellow](2,2.02)}
+          \rput(8,18){\psframe[gradbegin=RGBwhite,gradend=RGBorange](2,2)}
+          \rput(8,14){\psframe[gradbegin=RGBorange,gradend=RGBwhite](2,2)}
+          \rput(8,15.99){\psframe[fillstyle=solid,fillcolor=RGBorange](2,2.02)}
+          \rput(10,18){\psframe[gradbegin=RGBgrey,gradend=RGBwhite](2,2)}
+          \rput(10,19.99){\psframe[fillstyle=solid,fillcolor=RGBgrey](2,2.01)}
+        \end{pspicture}
+      }
+    
+\end{document}
diff --git a/20220315/rtech-20220315-fig10.pdf b/20220315/rtech-20220315-fig10.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ed0f1bbe92aeecfcf84b919f15128eaec280cff6
Binary files /dev/null and b/20220315/rtech-20220315-fig10.pdf differ
diff --git a/20220315/rtech-20220315-fig10.tex b/20220315/rtech-20220315-fig10.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig10.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig11.pdf b/20220315/rtech-20220315-fig11.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..19706768b045ab4fc053700da0b31d8460f9f0c3
Binary files /dev/null and b/20220315/rtech-20220315-fig11.pdf differ
diff --git a/20220315/rtech-20220315-fig11.tex b/20220315/rtech-20220315-fig11.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig11.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig12.pdf b/20220315/rtech-20220315-fig12.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c0b74200bc316db7505da5ddbbef77d1cb9f753a
Binary files /dev/null and b/20220315/rtech-20220315-fig12.pdf differ
diff --git a/20220315/rtech-20220315-fig12.tex b/20220315/rtech-20220315-fig12.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig12.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig13.pdf b/20220315/rtech-20220315-fig13.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..27ea09a8f381ff1fb35cf9cab277316ea1ff449f
Binary files /dev/null and b/20220315/rtech-20220315-fig13.pdf differ
diff --git a/20220315/rtech-20220315-fig13.tex b/20220315/rtech-20220315-fig13.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig13.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig14.pdf b/20220315/rtech-20220315-fig14.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..da8616fe7bb56d864228be34e585e65fc2797d06
Binary files /dev/null and b/20220315/rtech-20220315-fig14.pdf differ
diff --git a/20220315/rtech-20220315-fig14.tex b/20220315/rtech-20220315-fig14.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig14.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig15.pdf b/20220315/rtech-20220315-fig15.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9d20d8a8694aaad0796ae215ec6e54f87eb64a9f
Binary files /dev/null and b/20220315/rtech-20220315-fig15.pdf differ
diff --git a/20220315/rtech-20220315-fig15.tex b/20220315/rtech-20220315-fig15.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig15.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig16.pdf b/20220315/rtech-20220315-fig16.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8a1e883f70bb728d0f6586e6d69746118a8d1a95
Binary files /dev/null and b/20220315/rtech-20220315-fig16.pdf differ
diff --git a/20220315/rtech-20220315-fig16.tex b/20220315/rtech-20220315-fig16.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig16.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig17.pdf b/20220315/rtech-20220315-fig17.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cdc1f52d2f8e82dda5fa5d0b5447fee17ab690f9
Binary files /dev/null and b/20220315/rtech-20220315-fig17.pdf differ
diff --git a/20220315/rtech-20220315-fig17.tex b/20220315/rtech-20220315-fig17.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig17.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig18.pdf b/20220315/rtech-20220315-fig18.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3c6987b49b7827220f851a6abf315c3a403f5584
Binary files /dev/null and b/20220315/rtech-20220315-fig18.pdf differ
diff --git a/20220315/rtech-20220315-fig18.tex b/20220315/rtech-20220315-fig18.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig18.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig19.pdf b/20220315/rtech-20220315-fig19.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..94661785180c4e88bf1b169d8957c0a09859eb1c
Binary files /dev/null and b/20220315/rtech-20220315-fig19.pdf differ
diff --git a/20220315/rtech-20220315-fig19.tex b/20220315/rtech-20220315-fig19.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig19.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig2.pdf b/20220315/rtech-20220315-fig2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7ba7cfad9892156e040f574c9a4028999f9f11be
Binary files /dev/null and b/20220315/rtech-20220315-fig2.pdf differ
diff --git a/20220315/rtech-20220315-fig2.tex b/20220315/rtech-20220315-fig2.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig2.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig20.pdf b/20220315/rtech-20220315-fig20.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..4a4e582280a09a815611e09c0cdd4e0f659934e7
Binary files /dev/null and b/20220315/rtech-20220315-fig20.pdf differ
diff --git a/20220315/rtech-20220315-fig20.tex b/20220315/rtech-20220315-fig20.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig20.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig21.pdf b/20220315/rtech-20220315-fig21.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3040ab054135d3335ffaa5dc736b722ebe95385d
Binary files /dev/null and b/20220315/rtech-20220315-fig21.pdf differ
diff --git a/20220315/rtech-20220315-fig21.tex b/20220315/rtech-20220315-fig21.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig21.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig22.pdf b/20220315/rtech-20220315-fig22.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..60a0599190855b97051ce3bda499c32d6ac48cbf
Binary files /dev/null and b/20220315/rtech-20220315-fig22.pdf differ
diff --git a/20220315/rtech-20220315-fig22.tex b/20220315/rtech-20220315-fig22.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig22.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig23.pdf b/20220315/rtech-20220315-fig23.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d0cee3ea0528540e58f39db19578fcf2508a88e1
Binary files /dev/null and b/20220315/rtech-20220315-fig23.pdf differ
diff --git a/20220315/rtech-20220315-fig23.tex b/20220315/rtech-20220315-fig23.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig23.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig24.pdf b/20220315/rtech-20220315-fig24.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a0e3393f856402aee6120d421d9f42465cee8aef
Binary files /dev/null and b/20220315/rtech-20220315-fig24.pdf differ
diff --git a/20220315/rtech-20220315-fig24.tex b/20220315/rtech-20220315-fig24.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig24.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig25.pdf b/20220315/rtech-20220315-fig25.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7f5edfab1eb455ed11efc5ee734616f85ea125fe
Binary files /dev/null and b/20220315/rtech-20220315-fig25.pdf differ
diff --git a/20220315/rtech-20220315-fig25.tex b/20220315/rtech-20220315-fig25.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig25.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig26.pdf b/20220315/rtech-20220315-fig26.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6058fd617510a906838b50773b82ba28412a8933
Binary files /dev/null and b/20220315/rtech-20220315-fig26.pdf differ
diff --git a/20220315/rtech-20220315-fig26.tex b/20220315/rtech-20220315-fig26.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig26.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig27.pdf b/20220315/rtech-20220315-fig27.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f3be25bd837910e3cfbfd8313e45aed1d9e3e406
Binary files /dev/null and b/20220315/rtech-20220315-fig27.pdf differ
diff --git a/20220315/rtech-20220315-fig27.tex b/20220315/rtech-20220315-fig27.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig27.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig28.pdf b/20220315/rtech-20220315-fig28.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..09c9a3c16a534e05fb66315cfc6dc617b0c7ee8b
Binary files /dev/null and b/20220315/rtech-20220315-fig28.pdf differ
diff --git a/20220315/rtech-20220315-fig28.tex b/20220315/rtech-20220315-fig28.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig28.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig29.pdf b/20220315/rtech-20220315-fig29.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cd023c95a6d5f94f5ea1fcd22e497e8930b86a80
Binary files /dev/null and b/20220315/rtech-20220315-fig29.pdf differ
diff --git a/20220315/rtech-20220315-fig29.tex b/20220315/rtech-20220315-fig29.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig29.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig3.pdf b/20220315/rtech-20220315-fig3.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5300d5caf2bb1ba85c1b2e713cfdcb37abb7ee9d
Binary files /dev/null and b/20220315/rtech-20220315-fig3.pdf differ
diff --git a/20220315/rtech-20220315-fig3.tex b/20220315/rtech-20220315-fig3.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig3.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig30.pdf b/20220315/rtech-20220315-fig30.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b89d7625e59386799f2bcf8c31dc523f8cb49426
Binary files /dev/null and b/20220315/rtech-20220315-fig30.pdf differ
diff --git a/20220315/rtech-20220315-fig30.tex b/20220315/rtech-20220315-fig30.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig30.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig31.pdf b/20220315/rtech-20220315-fig31.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9a2c0b04e5d1be2a06a292571c69c5c98a2388f1
Binary files /dev/null and b/20220315/rtech-20220315-fig31.pdf differ
diff --git a/20220315/rtech-20220315-fig31.tex b/20220315/rtech-20220315-fig31.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig31.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig32.pdf b/20220315/rtech-20220315-fig32.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..310606bd1f4ee4baaae037c804c60b84c1567ff3
Binary files /dev/null and b/20220315/rtech-20220315-fig32.pdf differ
diff --git a/20220315/rtech-20220315-fig32.tex b/20220315/rtech-20220315-fig32.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig32.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig33.pdf b/20220315/rtech-20220315-fig33.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f1ded96145e1cc2a3c554ba9d74a119d9ca3e8bc
Binary files /dev/null and b/20220315/rtech-20220315-fig33.pdf differ
diff --git a/20220315/rtech-20220315-fig33.tex b/20220315/rtech-20220315-fig33.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig33.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig34.pdf b/20220315/rtech-20220315-fig34.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c91306ac3f367d4dfbe6c42f43c4022f26c9e147
Binary files /dev/null and b/20220315/rtech-20220315-fig34.pdf differ
diff --git a/20220315/rtech-20220315-fig34.tex b/20220315/rtech-20220315-fig34.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig34.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig35.pdf b/20220315/rtech-20220315-fig35.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..95cc8f65fe57e1bc9d4d7635f4a1aca570783116
Binary files /dev/null and b/20220315/rtech-20220315-fig35.pdf differ
diff --git a/20220315/rtech-20220315-fig35.tex b/20220315/rtech-20220315-fig35.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig35.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig36.pdf b/20220315/rtech-20220315-fig36.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a3012cbdada1349ade419d4a7ec7dfc39794b3ac
Binary files /dev/null and b/20220315/rtech-20220315-fig36.pdf differ
diff --git a/20220315/rtech-20220315-fig36.tex b/20220315/rtech-20220315-fig36.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig36.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig37.pdf b/20220315/rtech-20220315-fig37.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d2879db9b51073a1851f6ca5b155aedc0c01b1ad
Binary files /dev/null and b/20220315/rtech-20220315-fig37.pdf differ
diff --git a/20220315/rtech-20220315-fig37.tex b/20220315/rtech-20220315-fig37.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig37.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig38.pdf b/20220315/rtech-20220315-fig38.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2406d429a2a105c91b683f1016292e17fd96ecce
Binary files /dev/null and b/20220315/rtech-20220315-fig38.pdf differ
diff --git a/20220315/rtech-20220315-fig38.tex b/20220315/rtech-20220315-fig38.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig38.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig39.pdf b/20220315/rtech-20220315-fig39.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0942e5d7fee2c013e36c021368f7486c039f07fa
Binary files /dev/null and b/20220315/rtech-20220315-fig39.pdf differ
diff --git a/20220315/rtech-20220315-fig39.tex b/20220315/rtech-20220315-fig39.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig39.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig4.pdf b/20220315/rtech-20220315-fig4.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ff2fd17c2fc15f946454c6b29b7ee3aed1617ef9
Binary files /dev/null and b/20220315/rtech-20220315-fig4.pdf differ
diff --git a/20220315/rtech-20220315-fig4.tex b/20220315/rtech-20220315-fig4.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig4.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig40.pdf b/20220315/rtech-20220315-fig40.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8e49bfd27af1a356bac374b4b95c66ce16392281
Binary files /dev/null and b/20220315/rtech-20220315-fig40.pdf differ
diff --git a/20220315/rtech-20220315-fig40.tex b/20220315/rtech-20220315-fig40.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig40.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig41.pdf b/20220315/rtech-20220315-fig41.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c92299713844496d9acf380d353295a4a2a7bde5
Binary files /dev/null and b/20220315/rtech-20220315-fig41.pdf differ
diff --git a/20220315/rtech-20220315-fig41.tex b/20220315/rtech-20220315-fig41.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig41.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig42.pdf b/20220315/rtech-20220315-fig42.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5db7e4103eb26443d9543fc1860cdce80d7cf5d2
Binary files /dev/null and b/20220315/rtech-20220315-fig42.pdf differ
diff --git a/20220315/rtech-20220315-fig42.tex b/20220315/rtech-20220315-fig42.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig42.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig43.pdf b/20220315/rtech-20220315-fig43.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e5d1212d90c6bb601ab8e9912f299ec9154a21f0
Binary files /dev/null and b/20220315/rtech-20220315-fig43.pdf differ
diff --git a/20220315/rtech-20220315-fig43.tex b/20220315/rtech-20220315-fig43.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig43.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig44.pdf b/20220315/rtech-20220315-fig44.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b2833d9118b34f08f70e742384a01058faa1a1a3
Binary files /dev/null and b/20220315/rtech-20220315-fig44.pdf differ
diff --git a/20220315/rtech-20220315-fig44.tex b/20220315/rtech-20220315-fig44.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig44.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig45.pdf b/20220315/rtech-20220315-fig45.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..faca709bbbd076a05655d4bcc218c0cd73dac147
Binary files /dev/null and b/20220315/rtech-20220315-fig45.pdf differ
diff --git a/20220315/rtech-20220315-fig45.tex b/20220315/rtech-20220315-fig45.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig45.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig46.pdf b/20220315/rtech-20220315-fig46.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d285b61ae6df746a3e671a2f884cb33b91818174
Binary files /dev/null and b/20220315/rtech-20220315-fig46.pdf differ
diff --git a/20220315/rtech-20220315-fig46.tex b/20220315/rtech-20220315-fig46.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig46.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig47.pdf b/20220315/rtech-20220315-fig47.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d1f426eccc380299a33ffd7b088222040653ab2e
Binary files /dev/null and b/20220315/rtech-20220315-fig47.pdf differ
diff --git a/20220315/rtech-20220315-fig47.tex b/20220315/rtech-20220315-fig47.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig47.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig48.pdf b/20220315/rtech-20220315-fig48.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..67bd4a3ab9a4bb1b16800b086a0feeaaab05acc6
Binary files /dev/null and b/20220315/rtech-20220315-fig48.pdf differ
diff --git a/20220315/rtech-20220315-fig48.tex b/20220315/rtech-20220315-fig48.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig48.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig49.pdf b/20220315/rtech-20220315-fig49.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..44107f7933eeafdbd0e6ddc3b6260bb903f40ec7
Binary files /dev/null and b/20220315/rtech-20220315-fig49.pdf differ
diff --git a/20220315/rtech-20220315-fig49.tex b/20220315/rtech-20220315-fig49.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig49.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig5.pdf b/20220315/rtech-20220315-fig5.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..752906f472fef1e0ca4a611036095c09febf201b
Binary files /dev/null and b/20220315/rtech-20220315-fig5.pdf differ
diff --git a/20220315/rtech-20220315-fig5.tex b/20220315/rtech-20220315-fig5.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig5.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig50.pdf b/20220315/rtech-20220315-fig50.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2dc03113f80de154f83e1a34da36d502eb88bbc5
Binary files /dev/null and b/20220315/rtech-20220315-fig50.pdf differ
diff --git a/20220315/rtech-20220315-fig50.tex b/20220315/rtech-20220315-fig50.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig50.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig51.pdf b/20220315/rtech-20220315-fig51.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6c0b2039fbcc6dcff0f32ae149cf101999657b26
Binary files /dev/null and b/20220315/rtech-20220315-fig51.pdf differ
diff --git a/20220315/rtech-20220315-fig51.tex b/20220315/rtech-20220315-fig51.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig51.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig52.pdf b/20220315/rtech-20220315-fig52.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c8195fd234d968b1f1910f34b8602e4755e67e04
Binary files /dev/null and b/20220315/rtech-20220315-fig52.pdf differ
diff --git a/20220315/rtech-20220315-fig52.tex b/20220315/rtech-20220315-fig52.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig52.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig53.pdf b/20220315/rtech-20220315-fig53.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2b89ab1f212417f75951a456da4fd0b6ab168b71
Binary files /dev/null and b/20220315/rtech-20220315-fig53.pdf differ
diff --git a/20220315/rtech-20220315-fig53.tex b/20220315/rtech-20220315-fig53.tex
new file mode 100644
index 0000000000000000000000000000000000000000..978c355d299bc655bb0fafd26697a5f6cb6e12e5
--- /dev/null
+++ b/20220315/rtech-20220315-fig53.tex
@@ -0,0 +1,34 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig54.pdf b/20220315/rtech-20220315-fig54.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..545bcd809002abb8b61348ed50c1a89e966cf450
Binary files /dev/null and b/20220315/rtech-20220315-fig54.pdf differ
diff --git a/20220315/rtech-20220315-fig54.tex b/20220315/rtech-20220315-fig54.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig54.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig55.pdf b/20220315/rtech-20220315-fig55.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..551ff3f1803ad79897c5edf2f1284474efd0127b
Binary files /dev/null and b/20220315/rtech-20220315-fig55.pdf differ
diff --git a/20220315/rtech-20220315-fig55.tex b/20220315/rtech-20220315-fig55.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig55.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig56.pdf b/20220315/rtech-20220315-fig56.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..42afa45ec33ad4a0f973a1eb5d36eac9e6ee6c2a
Binary files /dev/null and b/20220315/rtech-20220315-fig56.pdf differ
diff --git a/20220315/rtech-20220315-fig56.tex b/20220315/rtech-20220315-fig56.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig56.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig57.pdf b/20220315/rtech-20220315-fig57.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..698f1d905ea08dddc77a4a51a242d577d1557b36
Binary files /dev/null and b/20220315/rtech-20220315-fig57.pdf differ
diff --git a/20220315/rtech-20220315-fig57.tex b/20220315/rtech-20220315-fig57.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig57.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig58.pdf b/20220315/rtech-20220315-fig58.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..42ca60582e2cf11b762f9b57c507627485363ccf
Binary files /dev/null and b/20220315/rtech-20220315-fig58.pdf differ
diff --git a/20220315/rtech-20220315-fig58.tex b/20220315/rtech-20220315-fig58.tex
new file mode 100644
index 0000000000000000000000000000000000000000..296b6d43d839c8294161a009aca441ff858f7c46
--- /dev/null
+++ b/20220315/rtech-20220315-fig58.tex
@@ -0,0 +1,32 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \psline[linestyle=dashed](0,0.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+      \end{pspicture}
+    
+\end{document}
diff --git a/20220315/rtech-20220315-fig59.pdf b/20220315/rtech-20220315-fig59.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1b37d2a3b6420a78f506e1af18be6e7fac8a3815
Binary files /dev/null and b/20220315/rtech-20220315-fig59.pdf differ
diff --git a/20220315/rtech-20220315-fig59.tex b/20220315/rtech-20220315-fig59.tex
new file mode 100644
index 0000000000000000000000000000000000000000..bd46257c76bce65cb333e113cf8fd3e10552400a
--- /dev/null
+++ b/20220315/rtech-20220315-fig59.tex
@@ -0,0 +1,42 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C_0$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D_0$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E_0$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \pnode(-0.5,-1.5){C1}
+        \uput[l](-1.5,0|C1){$C_1$}
+        \pnode(0.5,-1.2){D1}
+        \uput[r](1.5,0|D1){$D_1$}
+        \pnode(0.5,-1.8){E1}
+        \uput[r](1.5,0|E1){$E_1$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+        \psline[linestyle=dashed](0,-1.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+        \psline[arrows=o-](-1.5,0|C1)(C1)
+        \psline[arrows=o-](1.5,0|D1)(D1)
+        \psline[arrows=o-](1.5,0|E1)(E1)
+      \end{pspicture}
+    
+\end{document}
diff --git a/20220315/rtech-20220315-fig6.pdf b/20220315/rtech-20220315-fig6.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..176b1773bac2e0ae8b98e04fa612254365ad7a25
Binary files /dev/null and b/20220315/rtech-20220315-fig6.pdf differ
diff --git a/20220315/rtech-20220315-fig6.tex b/20220315/rtech-20220315-fig6.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3a71ce0ce03849a391adee46ef0cc0e498d5947d
--- /dev/null
+++ b/20220315/rtech-20220315-fig6.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig60.pdf b/20220315/rtech-20220315-fig60.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0c6506f5fe8fe259556df547c03fffd77916f0ab
Binary files /dev/null and b/20220315/rtech-20220315-fig60.pdf differ
diff --git a/20220315/rtech-20220315-fig60.tex b/20220315/rtech-20220315-fig60.tex
new file mode 100644
index 0000000000000000000000000000000000000000..296b6d43d839c8294161a009aca441ff858f7c46
--- /dev/null
+++ b/20220315/rtech-20220315-fig60.tex
@@ -0,0 +1,32 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \psline[linestyle=dashed](0,0.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+      \end{pspicture}
+    
+\end{document}
diff --git a/20220315/rtech-20220315-fig61.pdf b/20220315/rtech-20220315-fig61.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2ac602529dcd77a3c2905289d75b0d1736a6dadf
Binary files /dev/null and b/20220315/rtech-20220315-fig61.pdf differ
diff --git a/20220315/rtech-20220315-fig61.tex b/20220315/rtech-20220315-fig61.tex
new file mode 100644
index 0000000000000000000000000000000000000000..bd46257c76bce65cb333e113cf8fd3e10552400a
--- /dev/null
+++ b/20220315/rtech-20220315-fig61.tex
@@ -0,0 +1,42 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C_0$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D_0$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E_0$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \pnode(-0.5,-1.5){C1}
+        \uput[l](-1.5,0|C1){$C_1$}
+        \pnode(0.5,-1.2){D1}
+        \uput[r](1.5,0|D1){$D_1$}
+        \pnode(0.5,-1.8){E1}
+        \uput[r](1.5,0|E1){$E_1$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+        \psline[linestyle=dashed](0,-1.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+        \psline[arrows=o-](-1.5,0|C1)(C1)
+        \psline[arrows=o-](1.5,0|D1)(D1)
+        \psline[arrows=o-](1.5,0|E1)(E1)
+      \end{pspicture}
+    
+\end{document}
diff --git a/20220315/rtech-20220315-fig62.pdf b/20220315/rtech-20220315-fig62.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6a709a49d4f2b21ad8c9e875cc58d62d5b932670
Binary files /dev/null and b/20220315/rtech-20220315-fig62.pdf differ
diff --git a/20220315/rtech-20220315-fig62.tex b/20220315/rtech-20220315-fig62.tex
new file mode 100644
index 0000000000000000000000000000000000000000..296b6d43d839c8294161a009aca441ff858f7c46
--- /dev/null
+++ b/20220315/rtech-20220315-fig62.tex
@@ -0,0 +1,32 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \psline[linestyle=dashed](0,0.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+      \end{pspicture}
+    
+\end{document}
diff --git a/20220315/rtech-20220315-fig63.pdf b/20220315/rtech-20220315-fig63.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b557be8be6c86ee4b6ca4c61053412d3e4a95bcd
Binary files /dev/null and b/20220315/rtech-20220315-fig63.pdf differ
diff --git a/20220315/rtech-20220315-fig63.tex b/20220315/rtech-20220315-fig63.tex
new file mode 100644
index 0000000000000000000000000000000000000000..bd46257c76bce65cb333e113cf8fd3e10552400a
--- /dev/null
+++ b/20220315/rtech-20220315-fig63.tex
@@ -0,0 +1,42 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C_0$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D_0$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E_0$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \pnode(-0.5,-1.5){C1}
+        \uput[l](-1.5,0|C1){$C_1$}
+        \pnode(0.5,-1.2){D1}
+        \uput[r](1.5,0|D1){$D_1$}
+        \pnode(0.5,-1.8){E1}
+        \uput[r](1.5,0|E1){$E_1$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+        \psline[linestyle=dashed](0,-1.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+        \psline[arrows=o-](-1.5,0|C1)(C1)
+        \psline[arrows=o-](1.5,0|D1)(D1)
+        \psline[arrows=o-](1.5,0|E1)(E1)
+      \end{pspicture}
+    
+\end{document}
diff --git a/20220315/rtech-20220315-fig64.pdf b/20220315/rtech-20220315-fig64.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..34fdaaa6ff173f6b3709ef610536f2768bbf366d
Binary files /dev/null and b/20220315/rtech-20220315-fig64.pdf differ
diff --git a/20220315/rtech-20220315-fig64.tex b/20220315/rtech-20220315-fig64.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig64.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig65.pdf b/20220315/rtech-20220315-fig65.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b5e5e4d915cb6f73d59b1ba560825a058ba8f2cd
Binary files /dev/null and b/20220315/rtech-20220315-fig65.pdf differ
diff --git a/20220315/rtech-20220315-fig65.tex b/20220315/rtech-20220315-fig65.tex
new file mode 100644
index 0000000000000000000000000000000000000000..5aa33dc2862a5dd287d5e5a26b6ee17b7c65c79f
--- /dev/null
+++ b/20220315/rtech-20220315-fig65.tex
@@ -0,0 +1,32 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \newcommand{\invisible}{\tiny\color{white}}
+            \psset{logicLabelstyle=\invisible}
+            \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+            \psset{logicSymbolstyle=\logicSymbol}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-1.5,0.75){C0plus}
+              \pnode(-0.5,0){C0}
+              \pnode(0.5,0.3){D0}
+              \pnode(0.5,-0.3){E0}
+              \pnode(4.0,0){C1}
+              \pnode(3.0,0.3){D1}
+              \pnode(3.0,-0.3){E1}
+              \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+              \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+              \put(0.0,0.3){\makebox(0,0)[b]{A}}
+              \put(3.5,0.3){\makebox(0,0)[b]{B}}
+              \uput[180](C0plus){\textbf{+}}
+              \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+              \psline(D0)(1.25,0|D0)(2.25,0|E1)(E1)
+              \psline(E0)(1.25,0|E0)(2.25,0|D1)(D1)
+              \psline(C1)(5,0)
+              \lamp[labeloffset=0.9](5,0)(5,-2){Q}
+              \ground[connectingdot=false](5,-2)
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig66.pdf b/20220315/rtech-20220315-fig66.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..22177012e74bad7a3f9568b76aac42c2b91bc839
Binary files /dev/null and b/20220315/rtech-20220315-fig66.pdf differ
diff --git a/20220315/rtech-20220315-fig66.tex b/20220315/rtech-20220315-fig66.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig66.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig67.pdf b/20220315/rtech-20220315-fig67.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..716376263f8f82754d964284c1a6443cb8023af0
Binary files /dev/null and b/20220315/rtech-20220315-fig67.pdf differ
diff --git a/20220315/rtech-20220315-fig67.tex b/20220315/rtech-20220315-fig67.tex
new file mode 100644
index 0000000000000000000000000000000000000000..4386e871b2f2d3bd61c78fb9102022d222633b70
--- /dev/null
+++ b/20220315/rtech-20220315-fig67.tex
@@ -0,0 +1,25 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(6,4)
+            \logic[logicType=and](-0.75,0.625){and1}
+            \logic[logicType=and](-0.75,-2.125){and2}
+            \logic[logicType=or](2.25,-0.625){or1}
+            \psline[arrows=o-](-3,0|and12)(and12)
+            \uput[180](-3,0|and12){A}
+            \psline[arrows=o-](-3,0|and21)(and21)
+            \uput[180](-3,0|and21){B}
+            \psline[arrows=*-](-2,0|and12)(-2,0|and22)(and22)
+            \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and22){0.1}
+            \psline[arrows=*-](-1.5,0|and21)(-1.5,0|and11)(and11)
+            \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and11){0.1}
+            \psline(and1Q)(1.5,0|and1Q)(1.5,0|or12)(or12)
+            \psline(and2Q)(1.5,0|and2Q)(1.5,0|or11)(or11)
+            \psline[arrows=o-](5,0|or1Q)(or1Q)
+            \uput[0](5,0|or1Q){Q}
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig68.pdf b/20220315/rtech-20220315-fig68.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..688f39d4bf08025ea95f7e23d29026618dbad836
Binary files /dev/null and b/20220315/rtech-20220315-fig68.pdf differ
diff --git a/20220315/rtech-20220315-fig68.tex b/20220315/rtech-20220315-fig68.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a58085cf8220ed36899a021289030383af974fa2
--- /dev/null
+++ b/20220315/rtech-20220315-fig68.tex
@@ -0,0 +1,20 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \def\logicusertype{HA}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](-0.75,-0.125){ha}
+              \psline[arrows=o-](-2,0|ha2)(ha2)
+              \uput[180](-2,0|ha2){X}
+              \psline[arrows=o-](-2,0|ha1)(ha1)
+              \uput[180](-2,0|ha1){Y}
+              \psline[arrows=o-](2,0|haQ1)(haQ1)
+              \uput[0](2,0|haQ1){\Cout}
+              \psline[arrows=o-](2,0|haQ2)(haQ2)
+              \uput[0](2,0|haQ2){S}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig69.pdf b/20220315/rtech-20220315-fig69.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1b7714046b874c2fda6d352578771f85c18e0fea
Binary files /dev/null and b/20220315/rtech-20220315-fig69.pdf differ
diff --git a/20220315/rtech-20220315-fig69.tex b/20220315/rtech-20220315-fig69.tex
new file mode 100644
index 0000000000000000000000000000000000000000..c24ba66813b264e7e7613515521611ee8c568265
--- /dev/null
+++ b/20220315/rtech-20220315-fig69.tex
@@ -0,0 +1,24 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-3)(3,3)
+              \pnode(-3.5,2.5){A}
+              \pnode(-3.5,-1.5){B}
+              \uput[180](A){X}
+              \uput[180](B){Y}
+              \logic[logicType=exor](-0.75,0.625){exor}
+              \logic[logicType=and](-0.75,-2.125){and}
+              \psline[arrows=o-](A)(exor2)
+              \psline[arrows=o-](B)(and1)
+              \psline[arrows=*-](-2.5,0|B)(-2.5,0|exor1)(exor1)
+              \psline[arrows=*-](-1.5,0|A)(-1.5,0|and2)(and2)
+              \psline[arrows=-o](exorQ)(2,0|exorQ)
+              \uput[0](2,0|exorQ){S}
+              \psline[arrows=-o](andQ)(2,0|andQ)
+              \uput[0](2,0|andQ){\Cout}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig7.pdf b/20220315/rtech-20220315-fig7.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8ce8d44e2f749b90a4f12da3ff788a5a9564177d
Binary files /dev/null and b/20220315/rtech-20220315-fig7.pdf differ
diff --git a/20220315/rtech-20220315-fig7.tex b/20220315/rtech-20220315-fig7.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2287195c28e8919cd4d5d3eabfc44960e9df334e
--- /dev/null
+++ b/20220315/rtech-20220315-fig7.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig70.pdf b/20220315/rtech-20220315-fig70.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0cffdc00a9c33148127c31a97504e07ba1b0a9a8
Binary files /dev/null and b/20220315/rtech-20220315-fig70.pdf differ
diff --git a/20220315/rtech-20220315-fig70.tex b/20220315/rtech-20220315-fig70.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a58085cf8220ed36899a021289030383af974fa2
--- /dev/null
+++ b/20220315/rtech-20220315-fig70.tex
@@ -0,0 +1,20 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \def\logicusertype{HA}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](-0.75,-0.125){ha}
+              \psline[arrows=o-](-2,0|ha2)(ha2)
+              \uput[180](-2,0|ha2){X}
+              \psline[arrows=o-](-2,0|ha1)(ha1)
+              \uput[180](-2,0|ha1){Y}
+              \psline[arrows=o-](2,0|haQ1)(haQ1)
+              \uput[0](2,0|haQ1){\Cout}
+              \psline[arrows=o-](2,0|haQ2)(haQ2)
+              \uput[0](2,0|haQ2){S}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig71.pdf b/20220315/rtech-20220315-fig71.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..456420ed4d1d474a2b08fddcd17053e7acf29114
Binary files /dev/null and b/20220315/rtech-20220315-fig71.pdf differ
diff --git a/20220315/rtech-20220315-fig71.tex b/20220315/rtech-20220315-fig71.tex
new file mode 100644
index 0000000000000000000000000000000000000000..c24ba66813b264e7e7613515521611ee8c568265
--- /dev/null
+++ b/20220315/rtech-20220315-fig71.tex
@@ -0,0 +1,24 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-3)(3,3)
+              \pnode(-3.5,2.5){A}
+              \pnode(-3.5,-1.5){B}
+              \uput[180](A){X}
+              \uput[180](B){Y}
+              \logic[logicType=exor](-0.75,0.625){exor}
+              \logic[logicType=and](-0.75,-2.125){and}
+              \psline[arrows=o-](A)(exor2)
+              \psline[arrows=o-](B)(and1)
+              \psline[arrows=*-](-2.5,0|B)(-2.5,0|exor1)(exor1)
+              \psline[arrows=*-](-1.5,0|A)(-1.5,0|and2)(and2)
+              \psline[arrows=-o](exorQ)(2,0|exorQ)
+              \uput[0](2,0|exorQ){S}
+              \psline[arrows=-o](andQ)(2,0|andQ)
+              \uput[0](2,0|andQ){\Cout}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig72.pdf b/20220315/rtech-20220315-fig72.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..22aec53906e68f65aae01bcb705989a0a0f92ae0
Binary files /dev/null and b/20220315/rtech-20220315-fig72.pdf differ
diff --git a/20220315/rtech-20220315-fig72.tex b/20220315/rtech-20220315-fig72.tex
new file mode 100644
index 0000000000000000000000000000000000000000..6ba4ed697f7470d0b032278a98b200f54c7fbeac
--- /dev/null
+++ b/20220315/rtech-20220315-fig72.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-2,-2)(2,2)
+          \pnode(-1.5,0){B}
+          \uput[180](B){Basis}
+          \pnode(1.5,1.5){C}
+          \uput[0](C){Kollektor}
+          \pnode(1.5,-1.5){E}
+          \uput[0](E){Emitter}
+          \transistor[basesep=1.2,arrows=o-o](B)(E)(C)
+        \end{pspicture}
+      
+\end{document}
diff --git a/20220315/rtech-20220315-fig73.pdf b/20220315/rtech-20220315-fig73.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3ba2ff08ba541f9a0081a68553a226fc4d3f8327
Binary files /dev/null and b/20220315/rtech-20220315-fig73.pdf differ
diff --git a/20220315/rtech-20220315-fig73.tex b/20220315/rtech-20220315-fig73.tex
new file mode 100644
index 0000000000000000000000000000000000000000..8d142ea8d3c83fca9e54fe35de4f4d0aec0d9893
--- /dev/null
+++ b/20220315/rtech-20220315-fig73.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-2,-2)(2,2)
+          \pnode(-1.5,-0.5){B}
+          \uput[180](B){Gate}
+          \pnode(1.5,1.5){C}
+          \uput[0](C){Drain}
+          \pnode(1.5,-1.5){E}
+          \uput[0](E){Source}
+          \transistor[transistortype=MOSFET,basesep=1.2,arrows=o-o](B)(E)(C)
+        \end{pspicture}
+      
+\end{document}
diff --git a/20220315/rtech-20220315-fig74.pdf b/20220315/rtech-20220315-fig74.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..65ba69210773f64a27b0bed6fc7a64e1d7d4b8f3
Binary files /dev/null and b/20220315/rtech-20220315-fig74.pdf differ
diff --git a/20220315/rtech-20220315-fig74.tex b/20220315/rtech-20220315-fig74.tex
new file mode 100644
index 0000000000000000000000000000000000000000..4386e871b2f2d3bd61c78fb9102022d222633b70
--- /dev/null
+++ b/20220315/rtech-20220315-fig74.tex
@@ -0,0 +1,25 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(6,4)
+            \logic[logicType=and](-0.75,0.625){and1}
+            \logic[logicType=and](-0.75,-2.125){and2}
+            \logic[logicType=or](2.25,-0.625){or1}
+            \psline[arrows=o-](-3,0|and12)(and12)
+            \uput[180](-3,0|and12){A}
+            \psline[arrows=o-](-3,0|and21)(and21)
+            \uput[180](-3,0|and21){B}
+            \psline[arrows=*-](-2,0|and12)(-2,0|and22)(and22)
+            \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and22){0.1}
+            \psline[arrows=*-](-1.5,0|and21)(-1.5,0|and11)(and11)
+            \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and11){0.1}
+            \psline(and1Q)(1.5,0|and1Q)(1.5,0|or12)(or12)
+            \psline(and2Q)(1.5,0|and2Q)(1.5,0|or11)(or11)
+            \psline[arrows=o-](5,0|or1Q)(or1Q)
+            \uput[0](5,0|or1Q){Q}
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315-fig75.pdf b/20220315/rtech-20220315-fig75.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..603a91d2ee8d4911b0dc24250303978bee220122
Binary files /dev/null and b/20220315/rtech-20220315-fig75.pdf differ
diff --git a/20220315/rtech-20220315-fig75.tex b/20220315/rtech-20220315-fig75.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a58085cf8220ed36899a021289030383af974fa2
--- /dev/null
+++ b/20220315/rtech-20220315-fig75.tex
@@ -0,0 +1,20 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \def\logicusertype{HA}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](-0.75,-0.125){ha}
+              \psline[arrows=o-](-2,0|ha2)(ha2)
+              \uput[180](-2,0|ha2){X}
+              \psline[arrows=o-](-2,0|ha1)(ha1)
+              \uput[180](-2,0|ha1){Y}
+              \psline[arrows=o-](2,0|haQ1)(haQ1)
+              \uput[0](2,0|haQ1){\Cout}
+              \psline[arrows=o-](2,0|haQ2)(haQ2)
+              \uput[0](2,0|haQ2){S}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig76.pdf b/20220315/rtech-20220315-fig76.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ceee2061932de71da0466c6f9e9293abaa022cdd
Binary files /dev/null and b/20220315/rtech-20220315-fig76.pdf differ
diff --git a/20220315/rtech-20220315-fig76.tex b/20220315/rtech-20220315-fig76.tex
new file mode 100644
index 0000000000000000000000000000000000000000..c24ba66813b264e7e7613515521611ee8c568265
--- /dev/null
+++ b/20220315/rtech-20220315-fig76.tex
@@ -0,0 +1,24 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-3)(3,3)
+              \pnode(-3.5,2.5){A}
+              \pnode(-3.5,-1.5){B}
+              \uput[180](A){X}
+              \uput[180](B){Y}
+              \logic[logicType=exor](-0.75,0.625){exor}
+              \logic[logicType=and](-0.75,-2.125){and}
+              \psline[arrows=o-](A)(exor2)
+              \psline[arrows=o-](B)(and1)
+              \psline[arrows=*-](-2.5,0|B)(-2.5,0|exor1)(exor1)
+              \psline[arrows=*-](-1.5,0|A)(-1.5,0|and2)(and2)
+              \psline[arrows=-o](exorQ)(2,0|exorQ)
+              \uput[0](2,0|exorQ){S}
+              \psline[arrows=-o](andQ)(2,0|andQ)
+              \uput[0](2,0|andQ){\Cout}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig77.pdf b/20220315/rtech-20220315-fig77.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..dcef652f59cbd99dec472ed768bbe4d6bf464b9e
Binary files /dev/null and b/20220315/rtech-20220315-fig77.pdf differ
diff --git a/20220315/rtech-20220315-fig77.tex b/20220315/rtech-20220315-fig77.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a58085cf8220ed36899a021289030383af974fa2
--- /dev/null
+++ b/20220315/rtech-20220315-fig77.tex
@@ -0,0 +1,20 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \def\logicusertype{HA}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](-0.75,-0.125){ha}
+              \psline[arrows=o-](-2,0|ha2)(ha2)
+              \uput[180](-2,0|ha2){X}
+              \psline[arrows=o-](-2,0|ha1)(ha1)
+              \uput[180](-2,0|ha1){Y}
+              \psline[arrows=o-](2,0|haQ1)(haQ1)
+              \uput[0](2,0|haQ1){\Cout}
+              \psline[arrows=o-](2,0|haQ2)(haQ2)
+              \uput[0](2,0|haQ2){S}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig78.pdf b/20220315/rtech-20220315-fig78.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8616ce8126963c17c926f8e74c84ec1be1bf1553
Binary files /dev/null and b/20220315/rtech-20220315-fig78.pdf differ
diff --git a/20220315/rtech-20220315-fig78.tex b/20220315/rtech-20220315-fig78.tex
new file mode 100644
index 0000000000000000000000000000000000000000..c24ba66813b264e7e7613515521611ee8c568265
--- /dev/null
+++ b/20220315/rtech-20220315-fig78.tex
@@ -0,0 +1,24 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-3)(3,3)
+              \pnode(-3.5,2.5){A}
+              \pnode(-3.5,-1.5){B}
+              \uput[180](A){X}
+              \uput[180](B){Y}
+              \logic[logicType=exor](-0.75,0.625){exor}
+              \logic[logicType=and](-0.75,-2.125){and}
+              \psline[arrows=o-](A)(exor2)
+              \psline[arrows=o-](B)(and1)
+              \psline[arrows=*-](-2.5,0|B)(-2.5,0|exor1)(exor1)
+              \psline[arrows=*-](-1.5,0|A)(-1.5,0|and2)(and2)
+              \psline[arrows=-o](exorQ)(2,0|exorQ)
+              \uput[0](2,0|exorQ){S}
+              \psline[arrows=-o](andQ)(2,0|andQ)
+              \uput[0](2,0|andQ){\Cout}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig79.pdf b/20220315/rtech-20220315-fig79.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b892bd7ab37ce1ccbb127149694dd15eee2db72c
Binary files /dev/null and b/20220315/rtech-20220315-fig79.pdf differ
diff --git a/20220315/rtech-20220315-fig79.tex b/20220315/rtech-20220315-fig79.tex
new file mode 100644
index 0000000000000000000000000000000000000000..6ba4ed697f7470d0b032278a98b200f54c7fbeac
--- /dev/null
+++ b/20220315/rtech-20220315-fig79.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-2,-2)(2,2)
+          \pnode(-1.5,0){B}
+          \uput[180](B){Basis}
+          \pnode(1.5,1.5){C}
+          \uput[0](C){Kollektor}
+          \pnode(1.5,-1.5){E}
+          \uput[0](E){Emitter}
+          \transistor[basesep=1.2,arrows=o-o](B)(E)(C)
+        \end{pspicture}
+      
+\end{document}
diff --git a/20220315/rtech-20220315-fig8.pdf b/20220315/rtech-20220315-fig8.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..aefe0e0e63a9e230d07ea35ff6f64bb9fea87eb7
Binary files /dev/null and b/20220315/rtech-20220315-fig8.pdf differ
diff --git a/20220315/rtech-20220315-fig8.tex b/20220315/rtech-20220315-fig8.tex
new file mode 100644
index 0000000000000000000000000000000000000000..43bcd0480fadd06fe2ca64838dd2d6154d97a4dc
--- /dev/null
+++ b/20220315/rtech-20220315-fig8.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          
+\end{document}
diff --git a/20220315/rtech-20220315-fig80.pdf b/20220315/rtech-20220315-fig80.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1ffaaf4373555c8819d7d077fd8f13548a4914b8
Binary files /dev/null and b/20220315/rtech-20220315-fig80.pdf differ
diff --git a/20220315/rtech-20220315-fig80.tex b/20220315/rtech-20220315-fig80.tex
new file mode 100644
index 0000000000000000000000000000000000000000..8d142ea8d3c83fca9e54fe35de4f4d0aec0d9893
--- /dev/null
+++ b/20220315/rtech-20220315-fig80.tex
@@ -0,0 +1,17 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-2,-2)(2,2)
+          \pnode(-1.5,-0.5){B}
+          \uput[180](B){Gate}
+          \pnode(1.5,1.5){C}
+          \uput[0](C){Drain}
+          \pnode(1.5,-1.5){E}
+          \uput[0](E){Source}
+          \transistor[transistortype=MOSFET,basesep=1.2,arrows=o-o](B)(E)(C)
+        \end{pspicture}
+      
+\end{document}
diff --git a/20220315/rtech-20220315-fig9.pdf b/20220315/rtech-20220315-fig9.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f9322a3252ebec4b0d3dc7e12c24ec74adc5e63b
Binary files /dev/null and b/20220315/rtech-20220315-fig9.pdf differ
diff --git a/20220315/rtech-20220315-fig9.tex b/20220315/rtech-20220315-fig9.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9684329bc4e673536f8151736ebaca41049e5b98
--- /dev/null
+++ b/20220315/rtech-20220315-fig9.tex
@@ -0,0 +1,33 @@
+\documentclass{article}
+\input tmp.inputs
+\pagestyle{empty}
+\begin{document}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        
+\end{document}
diff --git a/20220315/rtech-20220315.pdf b/20220315/rtech-20220315.pdf
index 7100cef234b43532c1f15035907dde84d031c1ee..8aa21f7184975185ceb633635da6ee00cc2311ce 100644
Binary files a/20220315/rtech-20220315.pdf and b/20220315/rtech-20220315.pdf differ
diff --git a/20220315/rtech-20220315.tex b/20220315/rtech-20220315.tex
index 7ac0cf3c61f094dc89a9d8501fb9152df92285a3..2d485d5c1bc063927b3e90e40f865e38dedfdfc4 100644
--- a/20220315/rtech-20220315.tex
+++ b/20220315/rtech-20220315.tex
@@ -20,7 +20,7 @@
 % Attribution-ShareAlike 3.0 Unported License along with this
 % document.  If not, see <http://creativecommons.org/licenses/>.
 
-% README: Einführung
+% README: Einführung, Logik-Schaltkreise
 
 \documentclass[10pt,t]{beamer}
 
@@ -166,138 +166,6 @@
 
 \end{frame}
 
-\iffalse
-
-\begin{frame}[fragile]
-
-  \vspace{-0.6cm}
-  \begin{center}
-    \begin{pdfpic}
-      \psscalebox{0.8}{%
-        \begin{pspicture}(-5,0)(12,12)
-          \small
-          \psset{unit=0.5cm}
-          \psline[arrows=<->](-1,0)(-1,22)
-          \rput(-1.3,0){\makebox(0,0)[br]{\textbf{gegenständlich}}}
-          \rput(-1.3,22){\makebox(0,0)[tr]{\textbf{abstrakt}}}
-          \rput(-1.3,2){\makebox(0,0)[r]{Elektromagnetismus, Halbleiter}}
-          \rput(-1.3,4){\makebox(0,0)[r]{Elektronische Bauelemente}}
-          \rput(-1.3,6){\makebox(0,0)[r]{Logik-Schaltkreise}}
-          \rput(-1.3,8){\makebox(0,0)[r]{Prozessoren}}
-          \rput(-1.3,9){\makebox(0,0)[r]{Maschinensprache}}
-          \rput(-1.3,10){\makebox(0,0)[r]{Assembler}}
-          \rput(-1.3,11){\makebox(0,0)[r]{Ein-/Ausgabe}}
-          \rput(-1.3,12){\makebox(0,0)[r]{maschinennahe Hochsprachen (z.\,B.\ C)}}
-          \rput(-1.3,14){\makebox(0,0)[r]{abstrahierende Hochsprachen (z.\,B.\ C++, Java)}}
-          \rput(-1.3,15){\makebox(0,0)[r]{Programmierung}}
-          \rput(-1.3,16){\makebox(0,0)[r]{Algorithmen, Datenstrukturen, Software-Entwurf}}
-          \rput(-1.3,17){\makebox(0,0)[r]{Requirements Engineering}}
-          \rput(-1.3,18){\makebox(0,0)[r]{formale Sprachen, Berechenbarkeit}}
-          \rput(-1.3,19){\makebox(0,0)[r]{mathematische Strukturen}}
-          \rput(-1.3,20){\makebox(0,0)[r]{mathematische Beweise}}
-          \rput(2.1,0.5){\makebox(0,0)[l]{Physik}}
-          \rput(4.1,4){\makebox(0,0)[l]{Elektrotechnik}}
-          \rput(6.1,8){\makebox(0,0)[l]{\shortstack[l]{Rechnertechnik und\\technische Informatik}}}
-          \rput(8.1,12){\makebox(0,0)[l]{\shortstack[l]{Praktische und\\angewandte Informatik}}}
-          \rput(10.1,16){\makebox(0,0)[l]{\shortstack[l]{Softwaretechnik und\\theoretische Informatik}}}
-          \rput(12.1,21){\makebox(0,0)[l]{Mathematik}}
-          \psset{linewidth=0.001,linestyle=none,fillstyle=gradient,gradmidpoint=1.0,gradlines=1000}
-          \definecolor{RGBwhite}{rgb}{1.0,1.0,1.0}
-          \definecolor{RGBblue}{rgb}{0.0,0.0,1.0}
-          \definecolor{RGBred}{rgb}{1.0,0.0,0.0}
-          \definecolor{RGBgreen}{rgb}{0.0,1.0,0.0}
-          \definecolor{RGByellow}{rgb}{1.0,1.0,0.0}
-          \definecolor{RGBorange}{rgb}{1.0,0.7,0.0}
-          \definecolor{RGBgrey}{rgb}{0.7,0.7,0.7}
-          \rput(0,2){\psframe[gradbegin=RGBwhite,gradend=RGBblue](2,2)}
-          \rput(0,0){\psframe[fillstyle=solid,fillcolor=RGBblue](2,2.01)}
-          \rput(2,6){\psframe[gradbegin=RGBwhite,gradend=RGBred](2,2)}
-          \rput(2,2){\psframe[gradbegin=RGBred,gradend=RGBwhite](2,2)}
-          \rput(2,3.99){\psframe[fillstyle=solid,fillcolor=RGBred](2,2.02)}
-          \rput(4,10){\psframe[gradbegin=RGBwhite,gradend=RGBgreen](2,2)}
-          \rput(4,6){\psframe[gradbegin=RGBgreen,gradend=RGBwhite](2,2)}
-          \rput(4,7.99){\psframe[fillstyle=solid,fillcolor=RGBgreen](2,2.02)}
-          \rput(6,14){\psframe[gradbegin=RGBwhite,gradend=RGByellow](2,2)}
-          \rput(6,10){\psframe[gradbegin=RGByellow,gradend=RGBwhite](2,2)}
-          \rput(6,11.99){\psframe[fillstyle=solid,fillcolor=RGByellow](2,2.02)}
-          \rput(8,18){\psframe[gradbegin=RGBwhite,gradend=RGBorange](2,2)}
-          \rput(8,14){\psframe[gradbegin=RGBorange,gradend=RGBwhite](2,2)}
-          \rput(8,15.99){\psframe[fillstyle=solid,fillcolor=RGBorange](2,2.02)}
-          \rput(10,18){\psframe[gradbegin=RGBgrey,gradend=RGBwhite](2,2)}
-          \rput(10,19.99){\psframe[fillstyle=solid,fillcolor=RGBgrey](2,2.01)}
-        \end{pspicture}
-      }
-    \end{pdfpic}
-  \end{center}
-
-\end{frame}
-
-\begin{frame}[fragile]
-
-  \vspace{-0.6cm}
-  \begin{center}
-    \begin{pdfpic}
-      \psscalebox{0.8}{%
-        \begin{pspicture}(-5,0)(12,12)
-          \small
-          \psset{unit=0.5cm}
-          \psline[arrows=<->](-1,0)(-1,22)
-          \rput(-1.3,0){\makebox(0,0)[br]{\textbf{gegenständlich}}}
-          \rput(-1.3,22){\makebox(0,0)[tr]{\textbf{abstrakt}}}
-          \rput(-1.3,2){\makebox(0,0)[r]{\color{lightgray}Elektromagnetismus, Halbleiter}}
-          \rput(-1.3,4){\makebox(0,0)[r]{\color{lightgray}Elektronische Bauelemente}}
-          \rput(-1.3,6){\makebox(0,0)[r]{Logik-Schaltkreise}}
-          \rput(-1.3,8){\makebox(0,0)[r]{Prozessoren}}
-          \rput(-1.3,9){\makebox(0,0)[r]{Maschinensprache}}
-          \rput(-1.3,10){\makebox(0,0)[r]{Assembler}}
-          \rput(-1.3,11){\makebox(0,0)[r]{Ein-/Ausgabe}}
-          \rput(-1.3,12){\makebox(0,0)[r]{maschinennahe Hochsprachen (z.\,B.\ C)}}
-          \rput(-1.3,14){\makebox(0,0)[r]{abstrahierende Hochsprachen (z.\,B.\ C++, Java)}}
-          \rput(-1.3,15){\makebox(0,0)[r]{Programmierung}}
-          \rput(-1.3,16){\makebox(0,0)[r]{Algorithmen, Datenstrukturen, Software-Entwurf}}
-          \rput(-1.3,17){\makebox(0,0)[r]{\color{lightgray}Requirements Engineering}}
-          \rput(-1.3,18){\makebox(0,0)[r]{\color{lightgray}formale Sprachen, Berechenbarkeit}}
-          \rput(-1.3,19){\makebox(0,0)[r]{\color{lightgray}mathematische Strukturen}}
-          \rput(-1.3,20){\makebox(0,0)[r]{\color{lightgray}mathematische Beweise}}
-          \rput(2.1,0.5){\makebox(0,0)[l]{\color{lightgray}Physik}}
-          \rput(4.1,4){\makebox(0,0)[l]{\color{lightgray}Elektrotechnik}}
-          \rput(6.1,8){\makebox(0,0)[l]{\shortstack[l]{Rechnertechnik \color{lightgray}und\\\color{lightgray}technische Informatik}}}
-          \rput(8.1,12){\makebox(0,0)[l]{\shortstack[l]{{\color{lightgray}Praktische und}\\\color{lightgray}angewandte Informatik}}}
-          \rput(10.1,16){\makebox(0,0)[l]{\shortstack[l]{\color{lightgray}Softwaretechnik und\\\color{lightgray}theoretische Informatik}}}
-          \rput(12.1,21){\makebox(0,0)[l]{\color{lightgray}Mathematik}}
-          \psset{linewidth=0.001,linestyle=none,fillstyle=gradient,gradmidpoint=1.0,gradlines=1000}
-          \definecolor{RGBwhite}{rgb}{1.0,1.0,1.0}
-          \definecolor{RGBblue}{rgb}{0.0,0.0,1.0}
-          \definecolor{RGBred}{rgb}{1.0,0.0,0.0}
-          \definecolor{RGBgreen}{rgb}{0.0,1.0,0.0}
-          \definecolor{RGByellow}{rgb}{1.0,1.0,0.0}
-          \definecolor{RGBorange}{rgb}{1.0,0.7,0.0}
-          \definecolor{RGBgrey}{rgb}{0.7,0.7,0.7}
-          \rput(0,2){\psframe[gradbegin=RGBwhite,gradend=RGBblue](2,2)}
-          \rput(0,0){\psframe[fillstyle=solid,fillcolor=RGBblue](2,2.01)}
-          \rput(2,6){\psframe[gradbegin=RGBwhite,gradend=RGBred](2,2)}
-          \rput(2,2){\psframe[gradbegin=RGBred,gradend=RGBwhite](2,2)}
-          \rput(2,3.99){\psframe[fillstyle=solid,fillcolor=RGBred](2,2.02)}
-          \rput(4,10){\psframe[gradbegin=RGBwhite,gradend=RGBgreen](2,2)}
-          \rput(4,6){\psframe[gradbegin=RGBgreen,gradend=RGBwhite](2,2)}
-          \rput(4,7.99){\psframe[fillstyle=solid,fillcolor=RGBgreen](2,2.02)}
-          \rput(6,14){\psframe[gradbegin=RGBwhite,gradend=RGByellow](2,2)}
-          \rput(6,10){\psframe[gradbegin=RGByellow,gradend=RGBwhite](2,2)}
-          \rput(6,11.99){\psframe[fillstyle=solid,fillcolor=RGByellow](2,2.02)}
-          \rput(8,18){\psframe[gradbegin=RGBwhite,gradend=RGBorange](2,2)}
-          \rput(8,14){\psframe[gradbegin=RGBorange,gradend=RGBwhite](2,2)}
-          \rput(8,15.99){\psframe[fillstyle=solid,fillcolor=RGBorange](2,2.02)}
-          \rput(10,18){\psframe[gradbegin=RGBgrey,gradend=RGBwhite](2,2)}
-          \rput(10,19.99){\psframe[fillstyle=solid,fillcolor=RGBgrey](2,2.01)}
-        \end{pspicture}
-      }
-    \end{pdfpic}
-  \end{center}
-
-\end{frame}
-
-\fi
-
 \sectionnonumber{Rechnertechnik}
 
 \begin{frame}
@@ -349,69 +217,82 @@
 
 \end{frame}
 
-%\begin{frame}[fragile]
-%
-%  \vspace{-\medskipamount}
-%  \begin{center}
-%    \begin{pdfpic}
-%      \psscalebox{0.8}{%
-%        \begin{pspicture}(-5,0)(12,12)
-%          \small
-%          \psset{unit=0.5cm}
-%          \psline[arrows=<->](-1,0)(-1,22)
-%          \rput(-1.3,0){\makebox(0,0)[br]{\textbf{gegenständlich}}}
-%          \rput(-1.3,22){\makebox(0,0)[tr]{\textbf{abstrakt}}}
-%          \rput(-1.3,2){\makebox(0,0)[r]{Elektromagnetismus, Halbleiter}}
-%          \rput(-1.3,4){\makebox(0,0)[r]{Elektronische Bauelemente}}
-%          \rput(-1.3,6){\makebox(0,0)[r]{Logik-Schaltkreise}}
-%          \rput(-1.3,8){\makebox(0,0)[r]{Prozessoren}}
-%          \rput(-1.3,9){\makebox(0,0)[r]{Maschinensprache}}
-%          \rput(-1.3,10){\makebox(0,0)[r]{Assembler}}
-%          \rput(-1.3,11){\makebox(0,0)[r]{Ein-/Ausgabe}}
-%          \rput(-1.3,12){\makebox(0,0)[r]{maschinennahe Hochsprachen (z.\,B.\ C)}}
-%          \rput(-1.3,14){\makebox(0,0)[r]{abstrahierende Hochsprachen (z.\,B.\ C++, Java)}}
-%          \rput(-1.3,15){\makebox(0,0)[r]{Programmierung}}
-%          \rput(-1.3,16){\makebox(0,0)[r]{Algorithmen, Datenstrukturen, Software-Entwurf}}
-%          \rput(-1.3,17){\makebox(0,0)[r]{Requirements Engineering}}
-%          \rput(-1.3,18){\makebox(0,0)[r]{formale Sprachen, Berechenbarkeit}}
-%          \rput(-1.3,19){\makebox(0,0)[r]{mathematische Strukturen}}
-%          \rput(-1.3,20){\makebox(0,0)[r]{mathematische Beweise}}
-%          \rput(2.1,0.5){\makebox(0,0)[l]{Physik}}
-%          \rput(4.1,4){\makebox(0,0)[l]{Elektrotechnik}}
-%          \rput(6.1,8){\makebox(0,0)[l]{\shortstack[l]{Rechnertechnik und\\technische Informatik}}}
-%          \rput(8.1,12){\makebox(0,0)[l]{\shortstack[l]{Praktische und\\angewandte Informatik}}}
-%          \rput(10.1,16){\makebox(0,0)[l]{\shortstack[l]{Softwaretechnik und\\theoretische Informatik}}}
-%          \rput(12.1,21){\makebox(0,0)[l]{Mathematik}}
-%          \psset{linewidth=0.001,linestyle=none,fillstyle=gradient,gradmidpoint=1.0,gradlines=1000}
-%          \definecolor{RGBwhite}{rgb}{1.0,1.0,1.0}
-%          \definecolor{RGBblue}{rgb}{0.0,0.0,1.0}
-%          \definecolor{RGBred}{rgb}{1.0,0.0,0.0}
-%          \definecolor{RGBgreen}{rgb}{0.0,1.0,0.0}
-%          \definecolor{RGByellow}{rgb}{1.0,1.0,0.0}
-%          \definecolor{RGBorange}{rgb}{1.0,0.7,0.0}
-%          \definecolor{RGBgrey}{rgb}{0.7,0.7,0.7}
-%          \rput(0,2){\psframe[gradbegin=RGBwhite,gradend=RGBblue](2,2)}
-%          \rput(0,0){\psframe[fillstyle=solid,fillcolor=RGBblue](2,2.01)}
-%          \rput(2,6){\psframe[gradbegin=RGBwhite,gradend=RGBred](2,2)}
-%          \rput(2,2){\psframe[gradbegin=RGBred,gradend=RGBwhite](2,2)}
-%          \rput(2,3.99){\psframe[fillstyle=solid,fillcolor=RGBred](2,2.02)}
-%          \rput(4,10){\psframe[gradbegin=RGBwhite,gradend=RGBgreen](2,2)}
-%          \rput(4,6){\psframe[gradbegin=RGBgreen,gradend=RGBwhite](2,2)}
-%          \rput(4,7.99){\psframe[fillstyle=solid,fillcolor=RGBgreen](2,2.02)}
-%          \rput(6,14){\psframe[gradbegin=RGBwhite,gradend=RGByellow](2,2)}
-%          \rput(6,10){\psframe[gradbegin=RGByellow,gradend=RGBwhite](2,2)}
-%          \rput(6,11.99){\psframe[fillstyle=solid,fillcolor=RGByellow](2,2.02)}
-%          \rput(8,18){\psframe[gradbegin=RGBwhite,gradend=RGBorange](2,2)}
-%          \rput(8,14){\psframe[gradbegin=RGBorange,gradend=RGBwhite](2,2)}
-%          \rput(8,15.99){\psframe[fillstyle=solid,fillcolor=RGBorange](2,2.02)}
-%          \rput(10,18){\psframe[gradbegin=RGBgrey,gradend=RGBwhite](2,2)}
-%          \rput(10,19.99){\psframe[fillstyle=solid,fillcolor=RGBgrey](2,2.01)}
-%        \end{pspicture}
-%      }
-%    \end{pdfpic}
-%  \end{center}
-%
-%\end{frame}
+\subsectionnonumber{Was ist ein Computer?}
+
+\begin{frame}
+
+  \showsectionnonumber
+
+  \showsubsectionnonumber
+
+  \begin{itemize}
+    \item
+      Rechner (engl.: Computer)\\
+      = Werkzeug, das (dem menschlichen Gehirn) beim Rechnen hilft
+    \medskip
+    \item
+      Computer (im engeren Sinne)\\
+      = Turing-vollständiger Rechner\\\pause
+      = programmierbar mit \lstinline{while}\\
+      = programmierbar mit \lstinline{if} und \lstinline{goto}
+  \end{itemize}
+
+\end{frame}
+
+\begin{frame}
+
+  \begin{center}
+
+    \includegraphics[width=10.5cm]{analytic-engine.jpg}
+
+    Turing-vollständiger Computer aus Zahnrädern: Analytic Engine (1837)
+
+  \end{center}
+
+\end{frame}
+
+\begin{frame}
+
+  \showsectionnonumber
+
+  \showsubsectionnonumber
+
+  \begin{center}
+    \begin{minipage}{6cm}
+      \begin{center}
+        \includegraphics[height=4cm]{charles-babbage.jpg}
+
+        \smallskip
+
+        \footnotesize
+        Charles Babbage (1791--1871)
+      \end{center}
+    \end{minipage}
+    \begin{minipage}{6cm}
+      \begin{center}
+        \includegraphics[height=4cm]{ada-lovelace.jpg}
+
+        \smallskip
+
+        \footnotesize
+        Ada Lovelace (1815--1852)
+      \end{center}
+    \end{minipage}
+  \end{center}
+
+  \medskip
+
+  Turing-vollständiger Computer aus Zahnrädern: Analytic Engine (1837)
+  \begin{itemize}
+    \item
+      mechanische Rechenmaschine (Antrieb: Dampfmaschine)
+    \item
+      funktionsfähig geplant von Charles Babbage (nie gebaut)
+    \item
+      programmiert von Ada Lovelace (erste Computer-Programme der Welt)
+  \end{itemize}
+
+\end{frame}
 
 \sectionnonumber{\inserttitle}
 
@@ -451,4 +332,889 @@
 
 \end{frame}
 
+\section{Einführung}
+\section{Vom Schaltkreis zum Computer}
+\subsection{Logik-Schaltkreise}
+
+\begin{frame}[fragile]
+
+  \showsection
+  \vspace{-\smallskipamount}
+  \showsubsection
+
+  \medskip
+
+  {\large\textbf{Logik mit Lichtschaltern}}
+
+  \strut\hfill
+  \begin{minipage}[t]{6cm}
+    \vbox to 0pt{%
+      \begin{visibleenv}<1-3>
+        \begin{pdfpic}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(2.0,-0.3){C1}
+            \pnode(3.0,0){D1}
+            \pnode(3.0,-0.6){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(2.5,0.2){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](4.0,0|D1)(D1)
+            \psline(E0)(C1)
+            \psline(E1)(4.5,-0.6)
+            \lamp(4.5,-0.6)(4.5,-2.6){~~Q}
+            \ground[connectingdot=false](4.5,-2.6)
+          \end{pspicture}
+        \end{pdfpic}
+      \end{visibleenv}
+      \begin{visibleenv}<3>
+        \\[-1cm]
+        \begin{minipage}{2.5cm}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 0 \\\hline
+            1 & 0 & 0 \\\hline
+            1 & 1 & 1 \\\hline
+          \end{tabular}
+        \end{minipage}%
+        \begin{minipage}{3.5cm}
+          \vspace*{1cm}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{minipage}
+      \end{visibleenv}
+      \vss
+    }%
+    \vbox to 0pt{%
+      \begin{visibleenv}<4-6>
+        \begin{pdfpic}
+          \newcommand{\invisible}{\tiny\color{white}}
+          \psset{logicLabelstyle=\invisible}
+          \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+          \psset{logicSymbolstyle=\logicSymbol}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(3,2)
+            \pnode(-1.5,0.75){C0plus}
+            \pnode(-0.5,0){C0}
+            \pnode(0.5,0.3){D0}
+            \pnode(0.5,-0.3){E0}
+            \pnode(0.5,-2.0){C1}
+            \pnode(1.5,-1.7){D1}
+            \pnode(1.5,-2.3){E1}
+            \rput(0,0.55){A}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+            \rput(1.0,-1.5){B}
+            \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+            \uput[180](C0plus){\textbf{+}}
+            \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+            \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+            \psline[arrows=o-](1.5,0|D0)(D0)
+            \psline[arrows=o-](2.5,0|D1)(D1)
+            \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+            \psline(E1)(3.5,-2.3)
+            \lamp(3.5,-2.3)(3.5,-4.3){~~Q}
+            \ground[connectingdot=false](3.5,-4.3)
+          \end{pspicture}
+        \end{pdfpic}
+      \end{visibleenv}
+      \begin{visibleenv}<6>
+        \strut\\[-1.5cm]
+        \begin{minipage}[t]{2.5cm}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 1 \\\hline
+            1 & 0 & 1 \\\hline
+            1 & 1 & 1 \\\hline
+          \end{tabular}
+        \end{minipage}%
+        \begin{minipage}[t]{3.5cm}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{minipage}
+      \end{visibleenv}
+      \vss
+    }%
+    \vbox to 0pt{%
+      \begin{visibleenv}<8->
+        \vspace*{-2.0cm}%
+        \hspace*{0.5cm}%
+        \begin{tabular}{|c|c||c|}\hline
+          A & B & Q \\\hline\hline
+          0 & 0 & 0 \\\hline
+          0 & 1 & 0 \\\hline
+          1 & 0 & 0 \\\hline
+          1 & 1 & 1 \\\hline
+        \end{tabular}\quad
+        \begin{minipage}{2.5cm}
+          \vspace*{0.5cm}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{minipage}\\[\medskipamount]
+        \hspace*{0.5cm}%
+        \begin{tabular}{|c|c||c|}\hline
+          A & B & Q \\\hline\hline
+          0 & 0 & 0 \\\hline
+          0 & 1 & 1 \\\hline
+          1 & 0 & 1 \\\hline
+          1 & 1 & 1 \\\hline
+        \end{tabular}\quad
+        \begin{minipage}{2.5cm}
+          \vspace*{0.5cm}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{minipage}\\[\medskipamount]
+      \end{visibleenv}%
+      \begin{visibleenv}<8->%
+        \hspace*{0.402cm}%
+        \begin{tabular}{|c|c||c|}\hline
+          A & B & Q \\\hline\hline
+          0 & 0 & 0 \\\hline
+          0 & 1 & 1 \\\hline
+          1 & 0 & 1 \\\hline
+          1 & 1 & 0 \\\hline
+        \end{tabular}\quad
+        \begin{minipage}{2.5cm}
+          \vspace*{0.5cm}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{minipage}
+      \end{visibleenv}
+      \vss
+    }%
+  \end{minipage}
+  \vspace*{-0.9cm}
+
+  \begin{itemize}
+    \renewcommand{\arraystretch}{1.2}
+    \item
+      \newterm{Reihenschaltung}\\[\smallskipamount]
+      \pause
+      Lampe leuchtet nur, wenn\\
+      beide Schalter betätigt sind.\\[\smallskipamount]
+      \pause
+      \newterm{Und-Verknüpfung}
+    \pause
+    \medskip
+    \item
+      \newterm{Parallelschaltung}\\[\smallskipamount]
+      \pause
+      Lampe leuchtet, wenn mindestens\\
+      ein Schalter betätigt ist.\\[\smallskipamount]
+      \pause
+      \newterm{Oder-Verknüpfung}
+    \pause
+    \medskip
+    \item
+      {\color{red}Sie sind dran:}\\[\smallskipamount]
+      Man kann die Lampe jederzeit\\
+      an jedem der beiden Schalter\\
+      ein- oder ausschalten.\\[\smallskipamount]
+      \newterm{Exklusiv-Oder-Verknüpfung}
+  \end{itemize}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+  \medskip
+
+  {\large\textbf{Relais: Strom schaltet einen Schalter}}
+
+  \begin{center}
+    \includegraphics[width=10cm]{Relay_principle_horizontal.jpg}
+    % http://commons.wikimedia.org/wiki/File:Relay_principle_horizontal.jpg
+    % http://commons.wikimedia.org/wiki/File:Electronic_component_relays.jpg
+    % http://de.wikipedia.org/w/index.php?title=Datei:Elektronenroehre_real.png&filetimestamp=20080713113809
+  \end{center}
+
+  \hspace*{0.5cm}
+  \begin{minipage}{3.5cm}
+    \begin{pdfpic}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \psline[linestyle=dashed](0,0.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+      \end{pspicture}
+    \end{pdfpic}
+  \end{minipage}
+  \pause
+  \begin{minipage}{3.5cm}
+    \begin{pdfpic}
+      \newcommand{\invisible}{\tiny\color{white}}
+      \psset{logicLabelstyle=\invisible}
+      \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+      \psset{logicSymbolstyle=\logicSymbol}
+      \psset{unit=0.6cm}
+      \psset{linewidth=0.03}
+      \begin{pspicture}(-3,-2)(3,2)
+        \pnode(-1,1.5){A}
+        \uput[l](-1.5,0|A){$A$}
+        \pnode(1,1.5){B}
+        \uput[r](1.5,0|B){$B$}
+        \relais(A)(B){}
+        \pnode(-0.5,0){C0}
+        \uput[l](-1.5,0|C0){$C_0$}
+        \pnode(0.5,0.3){D0}
+        \uput[r](1.5,0|D0){$D_0$}
+        \pnode(0.5,-0.3){E0}
+        \uput[r](1.5,0|E0){$E_0$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+        \pnode(-0.5,-1.5){C1}
+        \uput[l](-1.5,0|C1){$C_1$}
+        \pnode(0.5,-1.2){D1}
+        \uput[r](1.5,0|D1){$D_1$}
+        \pnode(0.5,-1.8){E1}
+        \uput[r](1.5,0|E1){$E_1$}
+        \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+        \psline[linestyle=dashed](0,-1.25)(0,1.0)
+        \psline[arrows=o-](-1.5,0|A)(A)
+        \psline[arrows=o-](1.5,0|B)(B)
+        \psline[arrows=o-](-1.5,0|C0)(C0)
+        \psline[arrows=o-](1.5,0|D0)(D0)
+        \psline[arrows=o-](1.5,0|E0)(E0)
+        \psline[arrows=o-](-1.5,0|C1)(C1)
+        \psline[arrows=o-](1.5,0|D1)(D1)
+        \psline[arrows=o-](1.5,0|E1)(E1)
+      \end{pspicture}
+    \end{pdfpic}
+  \end{minipage}
+  \pause
+  \hfill
+  \textarrow\ 
+  \begin{minipage}[t]{3.5cm}
+    Logik-Schaltungen\\
+    werden kombinierbar.
+  \end{minipage}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+  \smallskip
+
+  {\large\textbf{Logik-Schaltungen kombinieren}}
+  \medskip
+
+  \begin{itemize}
+    \item
+      Und-Verknüpfung: Reihenschaltung
+
+      \medskip
+
+    \item
+      Oder-Verknüpfung: Parallelschaltung
+
+      \medskip
+
+    \item
+
+      Exklusiv-Oder-Verknüpfung\\
+      "`entweder A oder B, aber nicht beide"'\phantom{()}
+
+      \bigskip
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 1 \\\hline
+            1 & 0 & 1 \\\hline
+            1 & 1 & 0 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{5cm}
+        \begin{center}
+          \begin{pdfpic}
+            \newcommand{\invisible}{\tiny\color{white}}
+            \psset{logicLabelstyle=\invisible}
+            \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+            \psset{logicSymbolstyle=\logicSymbol}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-1.5,0.75){C0plus}
+              \pnode(-0.5,0){C0}
+              \pnode(0.5,0.3){D0}
+              \pnode(0.5,-0.3){E0}
+              \pnode(4.0,0){C1}
+              \pnode(3.0,0.3){D1}
+              \pnode(3.0,-0.3){E1}
+              \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+              \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+              \put(0.0,0.3){\makebox(0,0)[b]{A}}
+              \put(3.5,0.3){\makebox(0,0)[b]{B}}
+              \uput[180](C0plus){\textbf{+}}
+              \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+              \psline(D0)(1.25,0|D0)(2.25,0|E1)(E1)
+              \psline(E0)(1.25,0|E0)(2.25,0|D1)(D1)
+              \psline(C1)(5,0)
+              \lamp[labeloffset=0.9](5,0)(5,-2){Q}
+              \ground[connectingdot=false](5,-2)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+  \end{itemize}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+  \smallskip
+
+  {\large\textbf{Logik-Schaltungen kombinieren}}
+  \medskip
+
+  \begin{itemize}
+    \item
+      Und-Verknüpfung: Reihenschaltung
+
+      \medskip
+
+    \item
+      Oder-Verknüpfung: Parallelschaltung
+
+      \medskip
+
+    \item
+
+      Exklusiv-Oder-Verknüpfung:\\
+      (A und nicht B) oder (B und nicht A)
+
+      \bigskip
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 1 \\\hline
+            1 & 0 & 1 \\\hline
+            1 & 1 & 0 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}\hspace*{-1.7cm}%
+      \begin{minipage}{8cm}
+        \begin{pdfpic}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-3,-2)(6,4)
+            \logic[logicType=and](-0.75,0.625){and1}
+            \logic[logicType=and](-0.75,-2.125){and2}
+            \logic[logicType=or](2.25,-0.625){or1}
+            \psline[arrows=o-](-3,0|and12)(and12)
+            \uput[180](-3,0|and12){A}
+            \psline[arrows=o-](-3,0|and21)(and21)
+            \uput[180](-3,0|and21){B}
+            \psline[arrows=*-](-2,0|and12)(-2,0|and22)(and22)
+            \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and22){0.1}
+            \psline[arrows=*-](-1.5,0|and21)(-1.5,0|and11)(and11)
+            \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and11){0.1}
+            \psline(and1Q)(1.5,0|and1Q)(1.5,0|or12)(or12)
+            \psline(and2Q)(1.5,0|and2Q)(1.5,0|or11)(or11)
+            \psline[arrows=o-](5,0|or1Q)(or1Q)
+            \uput[0](5,0|or1Q){Q}
+          \end{pspicture}
+        \end{pdfpic}
+        \vspace*{-1.25cm}
+      \end{minipage}%
+      \begin{picture}(0,0)
+        \put(-6.934,-0.041){\mbox{Q}}
+      \end{picture}
+  \end{itemize}
+
+\end{frame}
+
+\subsection{Binärdarstellung von Zahlen}
+
+\begin{frame}
+  \showsubsection
+
+  Dezimalzahl:
+  \begin{eqnarray*}
+    537_{10} &=& 7 \cdot 1 ~+~ 3 \cdot 10 ~+~ 5 \cdot 100 \\
+             &=& 7 \cdot 10^0 ~+~ 3 \cdot 10^1 ~+~ 5 \cdot 10^2
+  \end{eqnarray*}
+
+  Binärzahl:
+  \begin{eqnarray*}
+    26_{10} ~=~
+    11010_2 &=& 0 \cdot 1 ~+~ 1 \cdot 2 ~+~ 0 \cdot 4 ~+~ 1 \cdot 8 ~+~ 1 \cdot 16 \\
+            &=& 0 \cdot 2^0 ~+~ 1 \cdot 2^1 ~+~ 0 \cdot 2^2 ~+~ 1 \cdot 2^3 ~+~ 1 \cdot 2^4
+  \end{eqnarray*}
+
+\end{frame}
+
+\begin{frame}
+  \showsubsection
+
+  Rechnen mit Dezimalzahlen:\quad
+  $44_{10} + 46_{10}$
+  \begin{center}
+    \begin{tabular}{r}
+      $44$\\
+      $+\quad 46$\\[0.5ex]\hline
+      \\[-3.5ex]
+      $\scriptstyle 1\hspace{0.5em}$\\
+      $90$
+    \end{tabular}
+  \end{center}
+
+  Rechnen mit Binärzahlen:\quad
+  $44_{10} + 46_{10} = 101100_2 + 101110_2$
+  \begin{center}
+    \begin{tabular}{r}
+      $101100$\\
+      $+\quad 101110$\\[0.5ex]\hline
+      \\[-3.5ex]
+      $\scriptstyle 1\hspace{0.7em}1\hspace{0.1em}1\hspace{1.75em}$\\
+      $1011010$
+    \end{tabular}
+  \end{center}
+  Ergebnis:
+  \begin{eqnarray*}
+    1011010_2
+     &=& 0 \cdot 2^0 + 1 \cdot 2^1 + 0 \cdot 2^2 + 1 \cdot 2^3 + 1\cdot 2^4 + 0 \cdot 2^5 + 1 \cdot 2^6 \\
+     &=& 2 + 8 + 16 + 64 \\
+     &=& 90
+  \end{eqnarray*}
+
+\end{frame}
+
+\subsection{Vom Logik-Schaltkreis zum Addierer}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  \vspace{-\medskipamount}
+
+  \begin{itemize}
+    \item
+      Und-Verknüpfung: Reihenschaltung
+
+      \medskip
+
+    \item
+      Oder-Verknüpfung: Parallelschaltung
+
+      \medskip
+
+    \item
+
+      Exklusiv-Oder-Verknüpfung:\\
+      (A und nicht B) oder (B und nicht A)
+
+      \medskip
+
+    \item
+
+      Halbaddierer: 1-Bit-Addierer mit 2 Eingängen (X, Y)\\[\smallskipamount]
+      Ausgang S = X exklusiv-oder Y\\
+      Ausgang \Cout = X und Y
+
+      \bigskip
+
+      \begin{minipage}{3.2cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|c|}\hline
+            X & Y & \Cout & S \\\hline\hline
+            0 & 0 &   0   & 0 \\\hline
+            0 & 1 &   0   & 1 \\\hline
+            1 & 0 &   0   & 1 \\\hline
+            1 & 1 &   1   & 0 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{5cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \def\logicusertype{HA}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](-0.75,-0.125){ha}
+              \psline[arrows=o-](-2,0|ha2)(ha2)
+              \uput[180](-2,0|ha2){X}
+              \psline[arrows=o-](-2,0|ha1)(ha1)
+              \uput[180](-2,0|ha1){Y}
+              \psline[arrows=o-](2,0|haQ1)(haQ1)
+              \uput[0](2,0|haQ1){\Cout}
+              \psline[arrows=o-](2,0|haQ2)(haQ2)
+              \uput[0](2,0|haQ2){S}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}\hspace*{-1.25cm}%
+      \pause
+      \begin{minipage}{5cm}
+        \vspace*{-0.25cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-3)(3,3)
+              \pnode(-3.5,2.5){A}
+              \pnode(-3.5,-1.5){B}
+              \uput[180](A){X}
+              \uput[180](B){Y}
+              \logic[logicType=exor](-0.75,0.625){exor}
+              \logic[logicType=and](-0.75,-2.125){and}
+              \psline[arrows=o-](A)(exor2)
+              \psline[arrows=o-](B)(and1)
+              \psline[arrows=*-](-2.5,0|B)(-2.5,0|exor1)(exor1)
+              \psline[arrows=*-](-1.5,0|A)(-1.5,0|and2)(and2)
+              \psline[arrows=-o](exorQ)(2,0|exorQ)
+              \uput[0](2,0|exorQ){S}
+              \psline[arrows=-o](andQ)(2,0|andQ)
+              \uput[0](2,0|andQ){\Cout}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{picture}(0,0)
+        \put(-5.077,-0.379){\mbox{\Cout}}
+      \end{picture}
+
+  \end{itemize}
+
+\end{frame}
+
+\begin{frame}
+
+  \showsubsection
+
+  \vspace{-\medskipamount}
+
+  \begin{itemize}
+    \item
+      Und-Verknüpfung: Reihenschaltung
+
+      \medskip
+
+    \item
+      Oder-Verknüpfung: Parallelschaltung
+
+      \medskip
+
+    \item
+
+      Exklusiv-Oder-Verknüpfung:\\
+      (A und nicht B) oder (B und nicht A)
+
+      \medskip
+
+    \item
+
+      Halbaddierer: 1-Bit-Addierer mit 2 Eingängen (X, Y)\\[\smallskipamount]
+      Ausgang S = X exklusiv-oder Y\\
+      Ausgang \Cout = X und Y
+
+      \medskip
+
+    \item
+
+      Volladdierer: 1-Bit-Addierer mit 3 Eingängen (X, Y, \Cin)\\[\smallskipamount]
+      {\color{red}Sie sind dran.}
+
+  \end{itemize}
+
+\end{frame}
+
+\begin{frame}
+
+  \showsubsection
+
+  Zuse Z3: Rechner aus Relais
+  \begin{center}
+    \includegraphics[width=10cm]{Z3_Deutsches_Museum.JPG}
+  \end{center}
+
+\end{frame}
+
+\begin{frame}
+
+  \showsubsection
+
+  Statt Relais: Elektronenröhren
+
+  \begin{minipage}{6.25cm}
+    \includegraphics[width=6.25cm]{Elektronenroehren-auswahl.jpg}
+  \end{minipage}\hfill
+  \begin{minipage}{6cm}
+    \includegraphics[width=6cm]{Elektronenroehre_real.png}
+  \end{minipage}
+
+\end{frame}
+
+\begin{frame}
+
+  \showsubsection
+
+  ENIAC: Rechner aus Elektronenröhren
+  \begin{center}
+    \includegraphics[width=10cm]{Eniac.jpg}
+  \end{center}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  Statt Elektronenröhren: Transistoren
+
+  \bigskip
+
+  \includegraphics[width=7cm]{Transistors-white-cropped.jpg}\\[-5cm]
+  \hfill
+  \begin{minipage}{5.5cm}
+    \begin{center}
+      \begin{pdfpic}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-2,-2)(2,2)
+          \pnode(-1.5,0){B}
+          \uput[180](B){Basis}
+          \pnode(1.5,1.5){C}
+          \uput[0](C){Kollektor}
+          \pnode(1.5,-1.5){E}
+          \uput[0](E){Emitter}
+          \transistor[basesep=1.2,arrows=o-o](B)(E)(C)
+        \end{pspicture}
+      \end{pdfpic}
+
+      \medskip
+
+      Bipolartransistor
+    \end{center}
+  \end{minipage}\\[1cm]
+  \hfill
+  \begin{minipage}{5.5cm}
+    \begin{center}
+      \begin{pdfpic}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-2,-2)(2,2)
+          \pnode(-1.5,-0.5){B}
+          \uput[180](B){Gate}
+          \pnode(1.5,1.5){C}
+          \uput[0](C){Drain}
+          \pnode(1.5,-1.5){E}
+          \uput[0](E){Source}
+          \transistor[transistortype=MOSFET,basesep=1.2,arrows=o-o](B)(E)(C)
+        \end{pspicture}
+      \end{pdfpic}
+
+      \medskip
+
+      Feldeffekttransistor
+    \end{center}
+  \end{minipage}
+
+\end{frame}
+
+\begin{frame}
+
+  \showsubsection
+
+  Miniaturisierte Transistoren: Integrierte Schaltkreise\\
+  \newterm{Integrated Circuit -- IC}
+
+  \begin{center}
+
+    \begin{minipage}{4cm}
+      \includegraphics[width=4cm]{Intel_80486DX2_top.jpg}
+    \end{minipage}
+    \quad
+    \begin{minipage}{4cm}
+      \includegraphics[width=4cm]{Intel_80486DX2_bottom.jpg}
+    \end{minipage}
+
+    \medskip
+
+    \begin{minipage}{4cm}
+      \includegraphics[width=4cm]{80486dx2-large.jpg}
+    \end{minipage}
+    \quad
+    \begin{minipage}{4cm}
+      \includegraphics[width=4cm]{IC_Nanotecnology_2400X.JPG}
+    \end{minipage}
+
+  \end{center}
+
+\end{frame}
+
+\sectionnonumber{\inserttitle}
+
+\begin{frame}
+
+  \showsectionnonumber
+
+  \begin{itemize}
+    \item[\textbf{1}] \textbf{Einführung}
+      \begin{itemize}
+        \color{medgreen}
+        \item[1.1] Was ist Rechnertechnik?
+        \item[1.2] Was ist ein Computer?
+%        \item[1.3] Rechnertechnik im Verhältnis zu anderen Disziplinen
+      \end{itemize}
+    \item[\textbf{2}] \textbf{Vom Schaltkreis zum Computer}
+      \begin{itemize}
+        \color{medgreen}
+        \item[2.1] Logik-Schaltkreise
+        \item[2.2] Binärdarstellung von Zahlen
+        \item[2.3] Vom Logik-Schaltkreis zum Addierer
+        \color{black}
+        \item[2.4] Negative Zahlen
+        \item[2.5] Vom Addierer zum Computer
+        \item[\dots]
+      \end{itemize}
+    \color{gray}
+    \item[\textbf{3}] \textbf{Architekturmerkmale von Prozessoren}
+    \item[\textbf{4}] \textbf{Der CPU-Stack}
+%    \item[\textbf{5}] \textbf{Hardwarenahe Programmierung}
+%    \item[\textbf{6}] \textbf{Anwender-Software}
+%    \item[\textbf{7}] \textbf{Bus-Systeme}
+%    \item[\textbf{8}] \textbf{Pipelining}
+    \item[\textbf{\dots\hspace{-0.75em}}]
+%    \item[\textbf{9}] \textbf{Ausblick}
+  \end{itemize}
+
+\end{frame}
+
 \end{document}
diff --git a/script/1890s_adding_machine.jpg b/script/1890s_adding_machine.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6ca2e20f0fa3d6923abfd7278ce6cdf67c188758
Binary files /dev/null and b/script/1890s_adding_machine.jpg differ
diff --git a/script/80486dx2-large.jpg b/script/80486dx2-large.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ba4b32ee9489e862a8bf7b273002351f671f2878
Binary files /dev/null and b/script/80486dx2-large.jpg differ
diff --git a/script/Buegeln.pdf b/script/Buegeln.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9967c07625452e4fe73936314e3cb44485cdf6c8
--- /dev/null
+++ b/script/Buegeln.pdf
@@ -0,0 +1,68 @@
+%PDF-1.4
+%����
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x�]�=
+�@��~N�]����?�B�"Z��D$)���7�b�0��0�u�G����-J|D�-���
t�CN���wW�'1LR��{�K,�`�.E���?0��*~��[j(-ո��JF\�K/_��(�
+endstream
+endobj
+4 0 obj
+   127
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+>>
+endobj
+5 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 300 300 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 5 0 R ]
+   /Count 1
+>>
+endobj
+6 0 obj
+<< /Creator (cairo 1.8.10 (http://cairographics.org))
+   /Producer (cairo 1.8.10 (http://cairographics.org))
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f 
+0000000512 00000 n 
+0000000240 00000 n 
+0000000015 00000 n 
+0000000218 00000 n 
+0000000312 00000 n 
+0000000577 00000 n 
+0000000704 00000 n 
+trailer
+<< /Size 8
+   /Root 7 0 R
+   /Info 6 0 R
+>>
+startxref
+756
+%%EOF
diff --git a/script/Buegeln.svg b/script/Buegeln.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7efa08ff608dd187fc30a734eabd55252eddae50
--- /dev/null
+++ b/script/Buegeln.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   x="0.0000000"
+   y="0.0000000"
+   width="375.00000"
+   height="375.00000"
+   id="svg559">
+  <defs
+     id="defs561">
+    <linearGradient
+       id="linearGradient1651">
+      <stop
+         style="stop-color:#000000;stop-opacity:1.0000000"
+         offset="0.0000000"
+         id="stop1652" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000"
+         offset="1.0000000"
+         id="stop1653" />
+    </linearGradient>
+  </defs>
+  <path
+     d="M 112.66666,98.261892 L 300.81657,98.261892 L 338.31657,281.21250 L 38.316589,281.21250 C 38.316589,281.21250 94.566585,187.46250 150.81657,187.46250 C 207.06657,187.46250 317.06657,187.46250 317.06657,187.46250"
+     style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+     id="path1842" />
+</svg>
diff --git a/script/CC-BY-SA-3.0 b/script/CC-BY-SA-3.0
new file mode 100644
index 0000000000000000000000000000000000000000..43633f5d8ca3ee4c454bc0d64fded403267f6e6f
--- /dev/null
+++ b/script/CC-BY-SA-3.0
@@ -0,0 +1,418 @@
+Creative Commons Attribution-ShareAlike 3.0 Unported
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT
+    PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT
+    CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS
+    PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS
+    MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND
+    DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. 
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
+CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
+PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
+WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
+PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
+AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS
+LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU
+THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF
+SUCH TERMS AND CONDITIONS.
+
+1. Definitions
+
+   a. "Adaptation" means a work based upon the Work, or upon the
+      Work and other pre-existing works, such as a translation,
+      adaptation, derivative work, arrangement of music or other
+      alterations of a literary or artistic work, or phonogram or
+      performance and includes cinematographic adaptations or any
+      other form in which the Work may be recast, transformed, or
+      adapted including in any form recognizably derived from the
+      original, except that a work that constitutes a Collection
+      will not be considered an Adaptation for the purpose of this
+      License. For the avoidance of doubt, where the Work is a
+      musical work, performance or phonogram, the synchronization of
+      the Work in timed-relation with a moving image ("synching")
+      will be considered an Adaptation for the purpose of this
+      License.
+
+   b. "Collection" means a collection of literary or artistic works,
+      such as encyclopedias and anthologies, or performances,
+      phonograms or broadcasts, or other works or subject matter
+      other than works listed in Section 1(f) below, which, by
+      reason of the selection and arrangement of their contents,
+      constitute intellectual creations, in which the Work is
+      included in its entirety in unmodified form along with one or
+      more other contributions, each constituting separate and
+      independent works in themselves, which together are assembled
+      into a collective whole. A work that constitutes a Collection
+      will not be considered an Adaptation (as defined below) for
+      the purposes of this License.
+
+   c. "Creative Commons Compatible License" means a license that is
+      listed at http://creativecommons.org/compatiblelicenses that
+      has been approved by Creative Commons as being essentially
+      equivalent to this License, including, at a minimum, because
+      that license: (i) contains terms that have the same purpose,
+      meaning and effect as the License Elements of this License;
+      and, (ii) explicitly permits the relicensing of adaptations of
+      works made available under that license under this License or
+      a Creative Commons jurisdiction license with the same License
+      Elements as this License.
+
+   d. "Distribute" means to make available to the public the
+      original and copies of the Work or Adaptation, as appropriate,
+      through sale or other transfer of ownership.
+
+   e. "License Elements" means the following high-level license
+      attributes as selected by Licensor and indicated in the title
+      of this License: Attribution, ShareAlike.
+
+   f. "Licensor" means the individual, individuals, entity or
+      entities that offer(s) the Work under the terms of this
+      License.
+
+   g. "Original Author" means, in the case of a literary or artistic
+      work, the individual, individuals, entity or entities who
+      created the Work or if no individual or entity can be
+      identified, the publisher; and in addition (i) in the case of
+      a performance the actors, singers, musicians, dancers, and
+      other persons who act, sing, deliver, declaim, play in,
+      interpret or otherwise perform literary or artistic works or
+      expressions of folklore; (ii) in the case of a phonogram the
+      producer being the person or legal entity who first fixes the
+      sounds of a performance or other sounds; and, (iii) in the
+      case of broadcasts, the organization that transmits the
+      broadcast.
+
+   h. "Work" means the literary and/or artistic work offered under
+      the terms of this License including without limitation any
+      production in the literary, scientific and artistic domain,
+      whatever may be the mode or form of its expression including
+      digital form, such as a book, pamphlet and other writing; a
+      lecture, address, sermon or other work of the same nature; a
+      dramatic or dramatico-musical work; a choreographic work or
+      entertainment in dumb show; a musical composition with or
+      without words; a cinematographic work to which are assimilated
+      works expressed by a process analogous to cinematography; a
+      work of drawing, painting, architecture, sculpture, engraving
+      or lithography; a photographic work to which are assimilated
+      works expressed by a process analogous to photography; a work
+      of applied art; an illustration, map, plan, sketch or
+      three-dimensional work relative to geography, topography,
+      architecture or science; a performance; a broadcast; a
+      phonogram; a compilation of data to the extent it is protected
+      as a copyrightable work; or a work performed by a variety or
+      circus performer to the extent it is not otherwise considered
+      a literary or artistic work.
+
+   i. "You" means an individual or entity exercising rights under
+      this License who has not previously violated the terms of this
+      License with respect to the Work, or who has received express
+      permission from the Licensor to exercise rights under this
+      License despite a previous violation.
+
+   j. "Publicly Perform" means to perform public recitations of the
+      Work and to communicate to the public those public
+      recitations, by any means or process, including by wire or
+      wireless means or public digital performances; to make
+      available to the public Works in such a way that members of
+      the public may access these Works from a place and at a place
+      individually chosen by them; to perform the Work to the public
+      by any means or process and the communication to the public of
+      the performances of the Work, including by public digital
+      performance; to broadcast and rebroadcast the Work by any
+      means including signs, sounds or images.
+
+   k. "Reproduce" means to make copies of the Work by any means
+      including without limitation by sound or visual recordings and
+      the right of fixation and reproducing fixations of the Work,
+      including storage of a protected performance or phonogram in
+      digital form or other electronic medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to
+   reduce, limit, or restrict any uses free from copyright or rights
+   arising from limitations or exceptions that are provided for in
+   connection with the copyright protection under copyright law or
+   other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this
+   License, Licensor hereby grants You a worldwide, royalty-free,
+   non-exclusive, perpetual (for the duration of the applicable
+   copyright) license to exercise the rights in the Work as stated
+   below:
+
+   a. to Reproduce the Work, to incorporate the Work into one or
+      more Collections, and to Reproduce the Work as incorporated in
+      the Collections;
+
+   b. to create and Reproduce Adaptations provided that any such
+      Adaptation, including any translation in any medium, takes
+      reasonable steps to clearly label, demarcate or otherwise
+      identify that changes were made to the original Work. For
+      example, a translation could be marked "The original work was
+      translated from English to Spanish," or a modification could
+      indicate "The original work has been modified.";
+
+   c. to Distribute and Publicly Perform the Work including as
+      incorporated in Collections; and,
+
+   d. to Distribute and Publicly Perform Adaptations.
+
+   e. For the avoidance of doubt:
+
+        i. Non-waivable Compulsory License Schemes. In those
+           jurisdictions in which the right to collect royalties
+           through any statutory or compulsory licensing scheme
+           cannot be waived, the Licensor reserves the exclusive
+           right to collect such royalties for any exercise by You
+           of the rights granted under this License;
+
+       ii. Waivable Compulsory License Schemes. In those
+           jurisdictions in which the right to collect royalties
+           through any statutory or compulsory licensing scheme can
+           be waived, the Licensor waives the exclusive right to
+           collect such royalties for any exercise by You of the
+           rights granted under this License; and,
+
+      iii. Voluntary License Schemes. The Licensor waives the right
+           to collect royalties, whether individually or, in the
+           event that the Licensor is a member of a collecting
+           society that administers voluntary licensing schemes, via
+           that society, from any exercise by You of the rights
+           granted under this License.
+
+The above rights may be exercised in all media and formats whether
+now known or hereafter devised. The above rights include the right
+to make such modifications as are technically necessary to exercise
+the rights in other media and formats. Subject to Section 8(f), all
+rights not expressly granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly
+   made subject to and limited by the following restrictions:
+
+   a. You may Distribute or Publicly Perform the Work only under the
+      terms of this License. You must include a copy of, or the
+      Uniform Resource Identifier (URI) for, this License with every
+      copy of the Work You Distribute or Publicly Perform. You may
+      not offer or impose any terms on the Work that restrict the
+      terms of this License or the ability of the recipient of the
+      Work to exercise the rights granted to that recipient under
+      the terms of the License. You may not sublicense the Work. You
+      must keep intact all notices that refer to this License and to
+      the disclaimer of warranties with every copy of the Work You
+      Distribute or Publicly Perform. When You Distribute or
+      Publicly Perform the Work, You may not impose any effective
+      technological measures on the Work that restrict the ability
+      of a recipient of the Work from You to exercise the rights
+      granted to that recipient under the terms of the License. This
+      Section 4(a) applies to the Work as incorporated in a
+      Collection, but this does not require the Collection apart
+      from the Work itself to be made subject to the terms of this
+      License. If You create a Collection, upon notice from any
+      Licensor You must, to the extent practicable, remove from the
+      Collection any credit as required by Section 4(c), as
+      requested. If You create an Adaptation, upon notice from any
+      Licensor You must, to the extent practicable, remove from the
+      Adaptation any credit as required by Section 4(c), as
+      requested.
+
+   b. You may Distribute or Publicly Perform an Adaptation only
+      under the terms of: (i) this License; (ii) a later version of
+      this License with the same License Elements as this License;
+      (iii) a Creative Commons jurisdiction license (either this or
+      a later license version) that contains the same License
+      Elements as this License (e.g., Attribution-ShareAlike 3.0
+      US)); (iv) a Creative Commons Compatible License. If you
+      license the Adaptation under one of the licenses mentioned in
+      (iv), you must comply with the terms of that license. If you
+      license the Adaptation under the terms of any of the licenses
+      mentioned in (i), (ii) or (iii) (the "Applicable License"),
+      you must comply with the terms of the Applicable License
+      generally and the following provisions: (I) You must include a
+      copy of, or the URI for, the Applicable License with every
+      copy of each Adaptation You Distribute or Publicly Perform;
+      (II) You may not offer or impose any terms on the Adaptation
+      that restrict the terms of the Applicable License or the
+      ability of the recipient of the Adaptation to exercise the
+      rights granted to that recipient under the terms of the
+      Applicable License; (III) You must keep intact all notices
+      that refer to the Applicable License and to the disclaimer of
+      warranties with every copy of the Work as included in the
+      Adaptation You Distribute or Publicly Perform; (IV) when You
+      Distribute or Publicly Perform the Adaptation, You may not
+      impose any effective technological measures on the Adaptation
+      tnted to that recipient under the terms of the Applicable
+      License. This Section 4(b) applies to the Adaptation as
+      incorporated in a Collection, but this does not require the
+      Collection apart from the Adaptation itself to be made subject
+      to the terms of the Applicable License.
+
+   c. If You Distribute, or Publicly Perform the Work or any
+      Adaptations or Collections, You must, unless a request has
+      been made pursuant to Section 4(a), keep intact all copyright
+      notices for the Work and provide, reasonable to the medium or
+      means You are utilizing: (i) the name of the Original Author
+      (or pseudonym, if applicable) if supplied, and/or if the
+      Original Author and/or Licensor designate another party or
+      parties (e.g., a sponsor institute, publishing entity,
+      journal) for attribution ("Attribution Parties") in Licensor's
+      copyright notice, terms of service or by other reasonable
+      means, the name of such party or parties; (ii) the title of
+      the Work if supplied; (iii) to the extent reasonably
+      practicable, the URI, if any, that Licensor specifies to be
+      associated with the Work, unless such URI does not refer to
+      the copyright notice or licensing information for the Work;
+      and (iv) , consistent with Ssection 3(b), in the case of an
+      Adaptation, a credit identifying the use of the Work in the
+      Adaptation (e.g., "French translation of the Work by Original
+      Author," or "Screenplay based on original Work by Original
+      Author"). The credit required by this Section 4(c) may be
+      implemented in any reasonable manner; provided, however, that
+      in the case of a Adaptation or Collection, at a minimum such
+      credit will appear, if a credit for all contributing authors
+      of the Adaptation or Collection appears, then as part of these
+      credits and in a manner at least as prominent as the credits
+      for the other contributing authors. For the avoidance of
+      doubt, You may only use the credit required by this Section
+      for the purpose of attribution in the manner set out above
+      and, by exercising Your rights under this License, You may not
+      implicitly or explicitly assert or imply any connection with,
+      sponsorship or endorsement by the Original Author, Licensor
+      and/or Attribution Parties, as appropriate, of You or Your use
+      of the Work, without the separate, express prior written
+      permission of the Original Author, Licensor and/or Attribution
+      Parties.
+
+   d. Except as otherwise agreed in writing by the Licensor or as
+      may be otherwise permitted by applicable law, if You
+      Reproduce, Distribute or Publicly Perform the Work either by
+      itself or as part of any Adaptations or Collections, You must
+      not distort, mutilate, modify or take other derogatory action
+      in relation to the Work which would be prejudicial to the
+      Original Author's honor or reputation. Licensor agrees that in
+      those jurisdictions (e.g. Japan), in which any exercise of the
+      right granted in Section 3(b) of this License (the right to
+      make Adaptations) would be deemed to be a distortion,
+      mutilation, modification or other derogatory action
+      prejudicial to the Original Author's honor and reputation, the
+      Licensor will waive or not assert, as appropriate, this
+      Section, to the fullest extent permitted by the applicable
+      national law, to enable You to reasonably exercise Your right
+      under Section 3(b) of this License (right to make Adaptations)
+      but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING,
+LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR
+WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED,
+STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF
+TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE,
+NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
+ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT
+DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF
+IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY
+   APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY
+   LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, S
+   LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED
+   OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+   a. This License and the rights granted hereunder will terminate
+      automatically upon any breach by You of the terms of this
+      License. Individuals or entities who have received Adaptations
+      or Collections from You under this License, however, will not
+      have their licenses terminated provided such individuals or
+      entities remain in full compliance with those licenses.
+      Sections 1, 2, 5, 6, 7, and 8 will survive any termination of
+      this License.
+
+   b. Subject to the above terms and conditions, the license granted
+      here is perpetual (for the duration of the applicable
+      copyright in the Work). Notwithstanding the above, Licensor
+      reserves the right to release the Work under different license
+      terms or to stop distributing the Work at any time; provided,
+      however that any such election will not serve to withdraw this
+      License (or any other license that has been, or is required to
+      be, granted under the terms of this License), and this License
+      will continue in full force and effect unless terminated as
+      stated above.
+
+8. Miscellaneous
+
+   a. Each time You Distribute or Publicly Perform the Work or a
+      Collection, the Licensor offers to the recipient a license to
+      the Work on the same terms and conditions as the license
+      granted to You under this License.
+
+   b. Each time You Distribute or Publicly Perform an Adaptation,
+      Licensor offers to the recipient a license to the original
+      Work on the same terms and conditions as the license granted
+      to You under this License.
+
+   c. If any provision of this License is invalid or unenforceable
+      under applicable law, it shall not affect the validity or
+      enforceability of the remainder of the terms of this License,
+      and without further action by the parties to this agreement,
+      such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+
+   d. No term or provision of this License shall be deemed waived
+      and no breach consented to unless such waiver or consent shall
+      be in writing and signed by the party to be charged with such
+      waiver or consent.
+
+   e. This License constitutes the entire agreement between the
+      parties with respect to the Work licensed here. There are no
+      understandings, agreements or representations with respect to
+      the Work not specified here. Licensor shall not be bound by
+      any additional provisions that may appear in any communication
+      from You. This License may not be modified without the mutual
+      written agreement of the Licensor and You.
+
+   f. The rights granted under, and the subject matter referenced,
+      in this License were drafted utilizing the terminology of the
+      Berne Convention for the Protection of Literary and Artistic
+      Works (as amended on September 28, 1979), the Rome Convention
+      of 1961, the WIPO Copyright Treaty of 1996, the WIPO
+      Performances and Phonograms Treaty of 1996 and the Universal
+      Copyright Convention (as revised on July 24, 1971). These
+      rights and subject matter take effect in the relevant
+      jurisdiction in which the License terms are sought to be
+      enforced according to the corresponding provisions of the
+      implementation of those treaty provisions in the applicable
+      national law. If the standard suite of rights granted under
+      applicable copyright law includes additional rights not
+      granted under this License, such additional rights are deemed
+      to be included in the License; this License is not intended to
+      restrict the license of any rights under applicable law.
+
+Creative Commons Notice
+
+    Creative Commons is not a party to this License, and makes no
+    warranty whatsoever in connection with the Work. Creative
+    Commons will not be liable to You or any party on any legal
+    theory for any damages whatsoever, including without limitation
+    any general, special, incidental or consequential damages
+    arising in connection to this license. Notwithstanding the
+    foregoing two (2) sentences, if Creative Commons has expressly
+    identified itself as the Licensor hereunder, it shall have all
+    rights and obligations of Licensor.
+
+    Except for theicensed under the CCPL, Creative Commons does not
+    authorize the use by either party of the trademark "Creative
+    Commons" or any related trademark or logo of Creative Commons
+    without the prior written consent of Creative Commons. Any
+    permitted use will be in compliance with Creative Commons'
+    then-current trademark usage guidelines, as may be published on
+    its website or otherwise made available upon request from time
+    to time. For the avoidance of doubt, this trademark restriction
+    does not form part of the License.
+
+    Creative Commons may be contacted at http://creativecommons.org/.
diff --git a/script/Drawing-a-circle-with-the-compasses.jpg b/script/Drawing-a-circle-with-the-compasses.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..015546a9502e6ce76334a2c80bfe0c2ef979489f
Binary files /dev/null and b/script/Drawing-a-circle-with-the-compasses.jpg differ
diff --git a/script/Elektronenroehre_real.png b/script/Elektronenroehre_real.png
new file mode 100644
index 0000000000000000000000000000000000000000..9752168cb151d698c90b4920b060dd3595196f49
Binary files /dev/null and b/script/Elektronenroehre_real.png differ
diff --git a/script/Elektronenroehren-auswahl.jpg b/script/Elektronenroehren-auswahl.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7c42b321f29ea81b11eb51a191dc9cc2ef7cfd7c
Binary files /dev/null and b/script/Elektronenroehren-auswahl.jpg differ
diff --git a/script/Eniac.jpg b/script/Eniac.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..75c5f42d190017636ff0bba2b49c994779d2c91a
Binary files /dev/null and b/script/Eniac.jpg differ
diff --git a/script/GNU-GPL-3 b/script/GNU-GPL-3
new file mode 100644
index 0000000000000000000000000000000000000000..94a9ed024d3859793618152ea559a168bbcbb5e2
--- /dev/null
+++ b/script/GNU-GPL-3
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/script/Holding-a-ruling-pen-edited-2.jpg b/script/Holding-a-ruling-pen-edited-2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..60f9bddd8de07558f46228901e1c9d6716632f00
Binary files /dev/null and b/script/Holding-a-ruling-pen-edited-2.jpg differ
diff --git a/script/Holding-a-ruling-pen-edited.jpg b/script/Holding-a-ruling-pen-edited.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e0b436abfdb81234ef7d6cc7dfa126d8537b0084
Binary files /dev/null and b/script/Holding-a-ruling-pen-edited.jpg differ
diff --git a/script/Holding-a-ruling-pen.jpg b/script/Holding-a-ruling-pen.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a7f10aafb0e2118254eb5e9875ad14a862a40b47
Binary files /dev/null and b/script/Holding-a-ruling-pen.jpg differ
diff --git a/script/IC_Nanotecnology_2400X.JPG b/script/IC_Nanotecnology_2400X.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..a64dbfb91048d93f1e9141ef9e433bbf584911cd
Binary files /dev/null and b/script/IC_Nanotecnology_2400X.JPG differ
diff --git a/script/Intel_80486DX2_bottom.jpg b/script/Intel_80486DX2_bottom.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..51196ca09c87a5d8aa9a59d5189e18fd792fc48b
Binary files /dev/null and b/script/Intel_80486DX2_bottom.jpg differ
diff --git a/script/Intel_80486DX2_top.jpg b/script/Intel_80486DX2_top.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fb83e35c9564e3380e0d5314f968fc8fff9f480f
Binary files /dev/null and b/script/Intel_80486DX2_top.jpg differ
diff --git a/script/Makefile b/script/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..c035f705340f897238f4c582a7e9a615c5794343
--- /dev/null
+++ b/script/Makefile
@@ -0,0 +1,31 @@
+script = rtech-2013ws
+pdf = $(script).pdf
+src = *.tex *.sty *.pdf *.jpg *.png GNU-GPL-3 CC-BY-SA-3.0
+
+all: $(pdf)
+
+$(pdf): $(script).tex
+	pdflatex --shell-escape $(script).tex
+	pdflatex $(script).tex
+	pdflatex $(script).tex
+	grep "Stand:" $(script).tex
+
+clean:
+	rm -f $(script).aux $(script).log $(script).toc $(script).lof $(script)-fig* tmp.inputs
+
+dist: $(pdf)
+	if [ -e "$(script)" ]; then \
+	  echo "$(script) exists - move it away"; \
+	else \
+	  mkdir -p $(script)/slides $(script)/examples $(script)/material $(script)/src; \
+	  cp -a $(pdf) $(script)/; \
+	  cp -a slides/* $(script)/src/; \
+	  mv $(script)/src/*.pdf $(script)/slides/; \
+	  cp -a examples/* $(script)/examples/; \
+	  cp -a material/* $(script)/material/; \
+	  cp -a $(src) $(script)/src/; \
+	  rm $(script)/src/$(script)*.pdf; \
+	  rm $(script)/src/$(script)-fig*.tex; \
+	  tar czf $(script).tar.gz $(script); \
+	  rm -rf $(script); \
+	fi
diff --git a/script/Relay_principle_horizontal-edited.jpg b/script/Relay_principle_horizontal-edited.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ab9ffcd879a04f523118ba1a58f52ee8ad1d30db
Binary files /dev/null and b/script/Relay_principle_horizontal-edited.jpg differ
diff --git a/script/Relay_principle_horizontal.jpg b/script/Relay_principle_horizontal.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..357527ccfc7e8ca74f7ad3e6c5be563feeba2d11
Binary files /dev/null and b/script/Relay_principle_horizontal.jpg differ
diff --git a/script/Transistors-white.jpg b/script/Transistors-white.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..96ed2f0193a64c059473b253eb81ae1bdcc09b2e
Binary files /dev/null and b/script/Transistors-white.jpg differ
diff --git a/script/Trommeltrocknen.pdf b/script/Trommeltrocknen.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..63adea249a42fa1cc4b35df841a4634847091c87
--- /dev/null
+++ b/script/Trommeltrocknen.pdf
@@ -0,0 +1,69 @@
+%PDF-1.4
+%����
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+x�mPK
+B1��scҾ�N .ԥ��
+�<����>[��Mg�L>7ԳY`~��8��!�QR�r/��CXp�+ܠ�bV�A�����Q�88\�"Rb��"��"�`�N�7CEً5��ţ)+���Ւ��ob3;&g� ��v����_}�7A�q�n�5����[���No�Cшip찅��_��R-�iV��	�(UD
+endstream
+endobj
+4 0 obj
+   202
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+>>
+endobj
+5 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 300 300 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 5 0 R ]
+   /Count 1
+>>
+endobj
+6 0 obj
+<< /Creator (cairo 1.8.10 (http://cairographics.org))
+   /Producer (cairo 1.8.10 (http://cairographics.org))
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f 
+0000000587 00000 n 
+0000000315 00000 n 
+0000000015 00000 n 
+0000000293 00000 n 
+0000000387 00000 n 
+0000000652 00000 n 
+0000000779 00000 n 
+trailer
+<< /Size 8
+   /Root 7 0 R
+   /Info 6 0 R
+>>
+startxref
+831
+%%EOF
diff --git a/script/Trommeltrocknen.svg b/script/Trommeltrocknen.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b42b2f4684d9f00f5c02dcf54459a8dee35ef0d1
--- /dev/null
+++ b/script/Trommeltrocknen.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   x="0.0000000"
+   y="0.0000000"
+   width="375.00000"
+   height="375.00000"
+   id="svg1568">
+  <defs
+     id="defs1570" />
+  <path
+     d="M 297.02530,187.18597 C 297.03472,124.52065 247.99622,73.715206 187.50092,73.715206 C 127.00562,73.715206 77.967116,124.52065 77.976526,187.18597 C 77.967116,249.85130 127.00562,300.65674 187.50092,300.65674 C 247.99622,300.65674 297.03472,249.85130 297.02530,187.18597 L 297.02530,187.18597 z "
+     style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:9.7576847;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+     id="path1580" />
+  <rect
+     width="247.54399"
+     height="247.54399"
+     x="63.728004"
+     y="63.728004"
+     style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000"
+     id="rect1542" />
+</svg>
diff --git a/script/UnderCon_icon.pdf b/script/UnderCon_icon.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..16bc3d736041743e19cb49895b8c3bbd4c9b7335
Binary files /dev/null and b/script/UnderCon_icon.pdf differ
diff --git a/script/UnderCon_icon.svg b/script/UnderCon_icon.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4a3edc1d47c8a17ba6d5e2391a45115edc362d5c
--- /dev/null
+++ b/script/UnderCon_icon.svg
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:ns="http://ns.adobe.com/SaveForWeb/1.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="192.97749"
+   height="169.01122"
+   viewBox="0 0 192.97749 169.01121"
+   id="svg2"
+   xml:space="preserve"
+   inkscape:version="0.48.2 r9819"
+   sodipodi:docname="AJAX1.svg"><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1280"
+   inkscape:window-height="1004"
+   id="namedview8"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="3.7083822"
+   inkscape:cx="68.74417"
+   inkscape:cy="132.60196"
+   inkscape:window-x="-8"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="svg2" /><defs
+   id="defs9" />
+<metadata
+   id="metadata3">
+	<ns:sfw>
+		<ns:slices />
+		<ns:sliceSourceBounds
+   bottomLeftOrigin="true"
+   x="200"
+   y="336"
+   width="193"
+   height="169" />
+	</ns:sfw>
+	<rdf:RDF>
+		<cc:Work
+   rdf:about="">
+			<dc:format>image/svg+xml</dc:format>
+			<dc:type
+   rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+			<dc:title />
+		</cc:Work>
+	</rdf:RDF>
+	<ns:sfw>
+		<ns:slices />
+		<ns:sliceSourceBounds
+   bottomLeftOrigin="true"
+   x="200"
+   y="336"
+   width="193"
+   height="169" />
+	</ns:sfw>
+</metadata>
+<path
+   d="M 96.491487,12.513757 74.182375,50.757948 12.491487,156.51375 l 167.999993,0 z"
+   id="path5"
+   style="fill:none;stroke:#cccccc;stroke-width:25;stroke-linejoin:round;stroke-opacity:1"
+   inkscape:connector-curvature="0"
+   sodipodi:nodetypes="ccccc" />
+<path
+   d="m 96.491487,12.513757 -84,143.999993 H 180.49148 L 96.491487,12.513757 z"
+   id="path7"
+   style="fill:#ffffff;stroke:#cc0000;stroke-width:17;stroke-linejoin:round"
+   inkscape:connector-curvature="0" />
+<path
+   d="m 92.003487,120.07175 c -0.01,-0.302 -0.102,-0.597 -0.266,-0.849 l -6.617,-10.23 -10.359,-5.482 -15.7,29.648 c -0.509,0.967 -0.778,2.043 -0.778,3.137 0,2.481 1.373,4.757 3.566,5.917 l 16.556,-31.27 6.957,10.757 0.521,14.066 c 0.134,3.6 3.09,6.446 6.692,6.446 0.115,0 0.136,0 0.25,-0.003 l -0.822,-22.137 m -13.825,-24.807993 -1.322,2.496 -3.953,-3.267 -1.772,3.351 c -1.919,-1.018 -3.122,-3.01 -3.122,-5.181 0,-0.954 0.234,-1.896 0.682,-2.742 l 4.824,-9.105 c 0.724,-1.372 2.147,-2.229 3.698,-2.229 h 14.772 c 3.701,0 6.695,3 6.695,6.699 0,0.145 -0.001,0.284 -0.013,0.429 l -1.633,25.125993 15.708993,13.062 c -0.607,0.72 -1.379,1.281 -2.252,1.64 l -13.677993,-11.297 -0.184,2.84 c -3.081,-0.198 -5.48,-2.758 -5.48,-5.849 0,-0.13 0.005,-0.246 0.011,-0.375 l 0.081,-1.221 -3.839,-3.173 1.322,-2.492 2.735,2.257 0.678,-10.494993 -6.233,11.775993 -10.359,-5.486 9.305,-17.578993 h -6.629 l -3.999,7.549 3.956,3.266 0,0 z m 25.526993,-26.304 c -3.469,0 -6.278993,2.811 -6.278993,6.278 0,3.47 2.810993,6.28 6.278993,6.28 3.467,0 6.277,-2.811 6.277,-6.28 0,-3.468 -2.81,-6.278 -6.277,-6.278 z m 6.62,57.535993 c 1.19,-0.388 2.249,-1.098 3.058,-2.052 l 6.531,-7.729 c 1.591,-1.881 3.93,-2.966 6.393,-2.966 2.604,0 5.055,1.207 6.64,3.27 l 17.293,22.5 c 0.225,0.294 0.345,0.65 0.345,1.021 0,0.925 -0.747,1.672 -1.672,1.672 H 98.680487 c -0.921,0 -1.67,-0.747 -1.67,-1.672 0,-0.398 0.137,-0.779 0.393,-1.08 l 9.604993,-11.364 c 0.404,-0.479 0.933,-0.833 1.529,-1.026 l 1.788,-0.574 0,0 z"
+   id="path7_1_"
+   style="fill:#000000;stroke:none"
+   inkscape:connector-curvature="0" />
+</svg>
\ No newline at end of file
diff --git a/script/Waschen_30.pdf b/script/Waschen_30.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..52b505c1e31fc79a2dee123eb81a394b2efa847b
Binary files /dev/null and b/script/Waschen_30.pdf differ
diff --git a/script/Waschen_30.svg b/script/Waschen_30.svg
new file mode 100644
index 0000000000000000000000000000000000000000..d4447736cf97d8486d4a5e56b7ab59fb8c2d3b4d
--- /dev/null
+++ b/script/Waschen_30.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   x="0.0000000"
+   y="0.0000000"
+   width="375.00000"
+   height="375.00000"
+   id="svg1">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient1547">
+      <stop
+         style="stop-color:#000000;stop-opacity:1.0000000"
+         offset="0.0000000"
+         id="stop1548" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1.0000000"
+         offset="1.0000000"
+         id="stop1549" />
+    </linearGradient>
+  </defs>
+  <path
+     d="M 132.43826,141.34062 C 135.83667,142.06721 138.48510,143.57893 140.38358,145.87578 C 142.30541,148.17267 143.26635,151.00861 143.26639,154.38359 C 143.26635,159.56329 141.48510,163.57110 137.92264,166.40703 C 134.36011,169.24297 129.29761,170.66093 122.73514,170.66093 C 120.53200,170.66093 118.25856,170.43828 115.91483,169.99297 C 113.59450,169.57109 111.19216,168.92656 108.70779,168.05937 L 108.70779,161.20390 C 110.67654,162.35235 112.83278,163.21953 115.17654,163.80547 C 117.52028,164.39141 119.96950,164.68438 122.52420,164.68437 C 126.97730,164.68438 130.36402,163.80547 132.68436,162.04765 C 135.02807,160.28985 136.19995,157.73517 136.19998,154.38359 C 136.19995,151.28986 135.11011,148.87580 132.93045,147.14140 C 130.77417,145.38361 127.76246,144.50471 123.89529,144.50468 L 117.77811,144.50468 L 117.77811,138.66875 L 124.17654,138.66875 C 127.66871,138.66878 130.34058,137.97737 132.19217,136.59453 C 134.04370,135.18831 134.96948,133.17269 134.96951,130.54765 C 134.96948,127.85238 134.00854,125.78988 132.08670,124.36015 C 130.18824,122.90707 127.45777,122.18051 123.89529,122.18047 C 121.94996,122.18051 119.86403,122.39145 117.63748,122.81328 C 115.41091,123.23520 112.96169,123.89145 110.28983,124.78203 L 110.28983,118.45390 C 112.98513,117.70396 115.50466,117.14146 117.84842,116.76640 C 120.21559,116.39146 122.44215,116.20396 124.52811,116.20390 C 129.91870,116.20396 134.18433,117.43442 137.32498,119.89531 C 140.46557,122.33286 142.03588,125.63754 142.03592,129.80937 C 142.03588,132.71566 141.20385,135.17659 139.53983,137.19218 C 137.87573,139.18440 135.50854,140.56721 132.43826,141.34062 M 171.95389,121.82890 C 168.29762,121.82895 165.54372,123.63364 163.69217,127.24297 C 161.86403,130.82894 160.94997,136.23128 160.94998,143.45000 C 160.94997,150.64533 161.86403,156.04767 163.69217,159.65703 C 165.54372,163.24297 168.29762,165.03594 171.95389,165.03593 C 175.63355,165.03594 178.38745,163.24297 180.21561,159.65703 C 182.06714,156.04767 182.99292,150.64533 182.99295,143.45000 C 182.99292,136.23128 182.06714,130.82894 180.21561,127.24297 C 178.38745,123.63364 175.63355,121.82895 171.95389,121.82890 M 171.95389,116.20390 C 177.83667,116.20396 182.32495,118.53599 185.41873,123.20000 C 188.53588,127.84066 190.09447,134.59066 190.09451,143.45000 C 190.09447,152.28595 188.53588,159.03595 185.41873,163.70000 C 182.32495,168.34062 177.83667,170.66093 171.95389,170.66093 C 166.07106,170.66093 161.57106,168.34062 158.45389,163.70000 C 155.36013,159.03595 153.81326,152.28595 153.81326,143.45000 C 153.81326,134.59066 155.36013,127.84066 158.45389,123.20000 C 161.57106,118.53599 166.07106,116.20396 171.95389,116.20390"
+     transform="scale(1.255735,1.453502)"
+     style="font-size:72.000000px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
+     id="text2897" />
+  <g
+     id="g2806">
+    <path
+       d="M 46.352165,145.54748 C 69.810441,145.54748 69.810441,124.65767 93.268724,124.65767 C 116.72698,124.65767 116.72698,145.54748 140.18525,145.54748 C 163.64355,145.54748 163.64355,124.65767 187.10180,124.65767 C 210.56007,124.65767 210.56007,145.54748 234.01836,145.54748 C 257.47663,145.54748 257.47663,124.65767 280.93489,124.65767 C 304.39316,124.65767 304.39316,145.54748 327.85144,145.54748"
+       style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
+       id="path629" />
+    <path
+       d="M 37.456350,106.87084 L 71.853509,278.85663 L 302.16847,278.85663 L 337.60154,106.87084"
+       style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#000000;stroke-width:12.500000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000"
+       id="path630" />
+  </g>
+</svg>
diff --git a/script/Z3_Deutsches_Museum.JPG b/script/Z3_Deutsches_Museum.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..9b025ca65f0c0ec1cf9f317dbb80879efdf662da
Binary files /dev/null and b/script/Z3_Deutsches_Museum.JPG differ
diff --git a/script/alu-speicher-takt-computer.jpg b/script/alu-speicher-takt-computer.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..378c42263d8692cae39276dd122d821f9fbdb6a6
Binary files /dev/null and b/script/alu-speicher-takt-computer.jpg differ
diff --git a/script/alu.jpg b/script/alu.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..49d3cebc9d3d17498c133c7a3121fbfba7006da9
Binary files /dev/null and b/script/alu.jpg differ
diff --git a/script/b800.jpg b/script/b800.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9c4ccd41ce2526ca90885b0b6598b658ddce3827
Binary files /dev/null and b/script/b800.jpg differ
diff --git a/script/binaerzaehler.jpg b/script/binaerzaehler.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..da466741c95544268d473c27cca07bd64e7000bf
Binary files /dev/null and b/script/binaerzaehler.jpg differ
diff --git a/script/bnc-netz-ende.jpg b/script/bnc-netz-ende.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9b5168bc047122520db1dc156ad371dec5fe422a
Binary files /dev/null and b/script/bnc-netz-ende.jpg differ
diff --git a/script/bnc-netz-falsch.jpg b/script/bnc-netz-falsch.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3969879fb5120f0e37e456fc92da625e2e201694
Binary files /dev/null and b/script/bnc-netz-falsch.jpg differ
diff --git a/script/bnc-netz-mitte.jpg b/script/bnc-netz-mitte.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fba4a32f5eed39455144ba26c54f099307ea3566
Binary files /dev/null and b/script/bnc-netz-mitte.jpg differ
diff --git a/script/computer-1.jpg b/script/computer-1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..02c50617f63a4c4344b1cfc18076f42a57ea7782
Binary files /dev/null and b/script/computer-1.jpg differ
diff --git a/script/computer-2.jpg b/script/computer-2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..83693b62698497df58235c10f9ef367a54f4940f
Binary files /dev/null and b/script/computer-2.jpg differ
diff --git a/script/computer-3.jpg b/script/computer-3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..94bdd22f9dc335a02e29d2ecbcedc84382cebb38
Binary files /dev/null and b/script/computer-3.jpg differ
diff --git a/script/computer-4.jpg b/script/computer-4.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..151a8facb276840c9d28f34e9ba7fa836ac0ba81
Binary files /dev/null and b/script/computer-4.jpg differ
diff --git a/script/debug-screenshot.png b/script/debug-screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e5ab802f3120f11f9eb527439749a5c6c7341f4
Binary files /dev/null and b/script/debug-screenshot.png differ
diff --git a/script/examples/blink-0.c b/script/examples/blink-0.c
new file mode 100644
index 0000000000000000000000000000000000000000..78f19877db18c4e1c4156151eabd6f4fe314f828
--- /dev/null
+++ b/script/examples/blink-0.c
@@ -0,0 +1,7 @@
+#include <avr/io.h>
+
+int main (void)
+{                  /* dasselbe wie: 64     */
+  PORTC = 0x40;    /* dasselbe wie: 1 << 6 */
+  return 0;        /* Bedeutung: Bit Nr. 6 */
+}
diff --git a/script/examples/blink-1.c b/script/examples/blink-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..a6c0119a5b2a89de01568d174bebaaf739e0d611
--- /dev/null
+++ b/script/examples/blink-1.c
@@ -0,0 +1,8 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  PORTC = 0x40;
+  while (1);
+  return 0;
+}
diff --git a/script/examples/blink-2.c b/script/examples/blink-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..ccd70f6d5f541b6abd2b2d2472d54bc5d3ad899c
--- /dev/null
+++ b/script/examples/blink-2.c
@@ -0,0 +1,9 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  DDRC = 0x40;      /* Bit 6 an Port C für Output konfigurieren */
+  PORTC = 0x40;     /* Bit 6 an Port C auf 1 setzen */
+  while (1);
+  return 0;
+}
diff --git a/script/examples/blink-3.c b/script/examples/blink-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..000b6a1226711c263efecde7f903cb801521f2fa
--- /dev/null
+++ b/script/examples/blink-3.c
@@ -0,0 +1,11 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  DDRB = 0x00;      /* Port B komplett für Input konfigurieren */
+                    /* --> bewirkt _zufällig_, daß die LED SL4 ausgeht */
+  DDRC = 0x40;      /* Bit 6 an Port C für Output konfigurieren */
+  PORTC = 0x40;     /* Bit 6 an Port C auf 1 setzen */
+  while (1);
+  return 0;
+}
diff --git a/script/examples/blink-4.c b/script/examples/blink-4.c
new file mode 100644
index 0000000000000000000000000000000000000000..c572dc72415221723845b8147515f766cd05f7ab
--- /dev/null
+++ b/script/examples/blink-4.c
@@ -0,0 +1,11 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0;        /* Bits an Port B auf 0 setzen */
+  DDRC = 0x40;      /* Bit 6 an Port C für Output konfigurieren */
+  PORTC = 0x40;     /* Bit 6 an Port C auf 1 setzen */
+  while (1);
+  return 0;
+}
diff --git a/script/examples/blink-5.c b/script/examples/blink-5.c
new file mode 100644
index 0000000000000000000000000000000000000000..524b3470c34f4349c85018f926f069e3c43d6dc7
--- /dev/null
+++ b/script/examples/blink-5.c
@@ -0,0 +1,11 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0;        /* Bits an Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x40;     /* Bit 6 an Port C auf 1 setzen, Bit 4 und 5 auf 0 setzen */
+  while (1);
+  return 0;
+}
diff --git a/script/examples/blink-6.c b/script/examples/blink-6.c
new file mode 100644
index 0000000000000000000000000000000000000000..7e47c41c24a631c8cef31bf24f5568994f3f92a1
--- /dev/null
+++ b/script/examples/blink-6.c
@@ -0,0 +1,20 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0;        /* Bits an Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x40;     /* Bit 6 an Port C auf 1 setzen, Bit 4 und 5 auf 0 setzen */
+  while (1)
+    {
+      _delay_ms (500);
+      PORTC = 0x70;
+      _delay_ms (500);
+      PORTC = 0x40;
+    }
+  return 0;
+}
diff --git a/script/examples/blink-7.c b/script/examples/blink-7.c
new file mode 100644
index 0000000000000000000000000000000000000000..13dc33e39ab0658a42cf1281d8a049415162f848
--- /dev/null
+++ b/script/examples/blink-7.c
@@ -0,0 +1,18 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0;        /* Bits an Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x40;     /* Bit 6 an Port C auf 1 setzen, Bit 4 und 5 auf 0 setzen */
+  while (1)
+    {
+      _delay_ms (500);
+      PORTC ^= 0x30;
+    }
+  return 0;
+}
diff --git a/script/examples/blink-8.c b/script/examples/blink-8.c
new file mode 100644
index 0000000000000000000000000000000000000000..470363d949aa638b48ca723f633f9da444c27395
--- /dev/null
+++ b/script/examples/blink-8.c
@@ -0,0 +1,18 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0;        /* Bits an Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x40;     /* Bit 6 an Port C auf 1 setzen, Bit 4 und 5 auf 0 setzen */
+  while (1)
+    {
+      _delay_ms (500);
+      PORTC ^= 0x70;
+    }
+  return 0;
+}
diff --git a/script/examples/blink-9.c b/script/examples/blink-9.c
new file mode 100644
index 0000000000000000000000000000000000000000..915e6ca132b5dd519ce992f2bd43302bd5ba0d97
--- /dev/null
+++ b/script/examples/blink-9.c
@@ -0,0 +1,21 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0x00;     /* Bits an Output-Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x00;     /* Bits an Output-Port C auf 0 setzen */
+  DDRC = 0x30;      /* Bit 6 an Port C für Input konfigurieren */
+  while (1)
+    {
+      if (PINC & 0x40)
+        PORTB = 0x80;
+      else
+        PORTB = 0x00;
+    }
+  return 0;
+}
diff --git a/script/examples/blink-9a.c b/script/examples/blink-9a.c
new file mode 100644
index 0000000000000000000000000000000000000000..454c8d8a71e73cfe601d3bafa32d7faccef22163
--- /dev/null
+++ b/script/examples/blink-9a.c
@@ -0,0 +1,21 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0x80;      /* Bit 7 an Port B für Output konfigurieren */
+  DDRC = 0x40;      /* Bit 6 an Port C für Output konfigurieren */
+  PORTC = 0x00;     /* Bits an Output-Port C auf 0 setzen */
+  DDRC = 0x00;      /* Bit 6 an Port C (und alle anderen auch) */
+                    /* für Input konfigurieren */
+  while (1)
+    {
+      if (PINC & 0x40)
+        PORTB = 0x80;
+      else
+        PORTB = 0x00;
+    }
+  return 0;
+}
diff --git a/script/examples/blink-a.c b/script/examples/blink-a.c
new file mode 100644
index 0000000000000000000000000000000000000000..32dfa302c5d6859d2b07c95f9c1723b1665446f5
--- /dev/null
+++ b/script/examples/blink-a.c
@@ -0,0 +1,22 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0x00;     /* Bits an Output-Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x00;     /* Bits an Output-Port C auf 0 setzen */
+  DDRC = 0x30;      /* Bit 6 an Port C für Input konfigurieren */
+  while (1)
+    {
+      if (PINC & 0x40)
+        {
+          PORTB ^= 0x80;
+          _delay_ms (500);
+        }
+    }
+  return 0;
+}
diff --git a/script/examples/blink-b.c b/script/examples/blink-b.c
new file mode 100644
index 0000000000000000000000000000000000000000..b2f9a5fe85395bd5f412aa2b654d309cf306ba57
--- /dev/null
+++ b/script/examples/blink-b.c
@@ -0,0 +1,24 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0x00;     /* Bits an Output-Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x00;     /* Bits an Output-Port C auf 0 setzen */
+  DDRC = 0x30;      /* Bit 6 an Port C für Input konfigurieren */
+  while (1)
+    {
+      if (PINC & 0x40)
+        {
+          PORTB ^= 0x80;
+          _delay_ms (10);        /* Taster entprellen */
+          while (PINC & 0x40);
+          _delay_ms (10);        /* Taster entprellen */
+        }
+    }
+  return 0;
+}
diff --git a/script/examples/blink-c.c b/script/examples/blink-c.c
new file mode 100644
index 0000000000000000000000000000000000000000..47432a13a9a0ed3ecff3835d4f899e8c4c459537
--- /dev/null
+++ b/script/examples/blink-c.c
@@ -0,0 +1,22 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  int a = 0, b = 0;
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0x00;     /* Bits an Output-Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x00;     /* Bits an Output-Port C auf 0 setzen */
+  DDRC = 0x30;      /* Bit 6 an Port C für Input konfigurieren */
+  while (1)
+    {
+      a = PINC & 0x40;
+      if (a != 0 && b == 0)
+        PORTB ^= 0x80;
+      b = a;
+    }
+  return 0;
+}
diff --git a/script/examples/blink-d.c b/script/examples/blink-d.c
new file mode 100644
index 0000000000000000000000000000000000000000..fc91830b20b8397e65eedf3270488bd7eae71d28
--- /dev/null
+++ b/script/examples/blink-d.c
@@ -0,0 +1,25 @@
+#include <avr/io.h>
+
+#define F_CPU 8000000
+#include <util/delay.h>
+
+int main (void)
+{
+  int a = 0, b = 0;
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0x00;     /* Bits an Output-Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x00;     /* Bits an Output-Port C auf 0 setzen */
+  DDRC = 0x30;      /* Bit 6 an Port C für Input konfigurieren */
+  while (1)
+    {
+      a = PINC & 0x40;
+      if (a != 0 && b == 0)
+        {
+          PORTB ^= 0x80;
+          _delay_ms (10);
+        }
+      b = a;
+    }
+  return 0;
+}
diff --git a/script/examples/blink-e.c b/script/examples/blink-e.c
new file mode 100644
index 0000000000000000000000000000000000000000..b23a641bb3986736d8638e1f10aa6918d334d027
--- /dev/null
+++ b/script/examples/blink-e.c
@@ -0,0 +1,26 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+
+ISR (TIMER0_COMP_vect)
+{
+  static int counter = 0;
+  if (counter++ >= 488)
+    {
+      PORTB ^= 0x80;
+      counter = 0;
+    }
+}
+
+int main (void)
+{
+  cli ();
+  TCCR0 = (1 << CS01) | (1 << CS00);
+  TIMSK = 1 << OCIE0;
+  sei ();
+  DDRB = 0x83;      /* Bit 7, 1 und 0 auf Port B für Output konfigurieren */
+  PORTB = 0x00;     /* Bits an Output-Port B auf 0 setzen */
+  DDRC = 0x70;      /* Bit 4, 5 und 6 an Port C für Output konfigurieren */
+  PORTC = 0x00;     /* Bits an Output-Port C auf 0 setzen */
+  while (1);
+  return 0;
+}
diff --git a/script/examples/catcan.red b/script/examples/catcan.red
new file mode 100644
index 0000000000000000000000000000000000000000..74cbb3d1388d9cd0ee089b4b0ecba9a6eda30f3b
--- /dev/null
+++ b/script/examples/catcan.red
@@ -0,0 +1,23 @@
+;name Cat Can
+;author A. Kirchner, F. Uy
+;assert 1
+;
+; Your basic two sweep methodical bomber.
+; Fires SPL 0 and JMP -1 at every eight
+; addresses, then erases the core with
+; DAT bombs.
+
+start     mov       trap2,   < bomb
+          mov       trap1,   < bomb
+          sub     # 6,         bomb
+          jmn       start,     bomb ; trap loop
+set       mov     # -12,       bomb
+kill      mov       bomb,    @ bomb
+          djn       kill,      bomb ; kill loop
+reset     jmp       set,       0
+          jmp       set,       0
+          dat     # 0,       # 0    ; buffer
+bomb      dat     # 0,       # -1024
+trap1     spl       0,         2
+trap2     jmp       -1,        1
+          end       start
diff --git a/script/examples/dwarf.red b/script/examples/dwarf.red
new file mode 100644
index 0000000000000000000000000000000000000000..cac740afd6d0e12d5776948e5f05b3dc24f8f6c3
--- /dev/null
+++ b/script/examples/dwarf.red
@@ -0,0 +1,14 @@
+;redcode
+;name Dwarf
+;author A. K. Dewdney
+;strategy Throw DAT bombs around memory, hitting every 4th memory cell.
+;strategy This program was presented in the first Corewar article.
+
+bomb  DAT   #0
+dwarf ADD   #4,    bomb
+      MOV   bomb, @bomb
+      JMP   dwarf
+      END   dwarf          ; Programs start at the first line unless
+                           ; an "END start" pseudo-op appears to indicate
+                           ; the first logical instruction.  Also, nothing
+                           ; after the END instruction will be assembled.
diff --git a/script/examples/endloskopierschleife-nachher-nachher.png b/script/examples/endloskopierschleife-nachher-nachher.png
new file mode 100644
index 0000000000000000000000000000000000000000..0125415ab05e9f790291cb0775dc155c689d1108
Binary files /dev/null and b/script/examples/endloskopierschleife-nachher-nachher.png differ
diff --git a/script/examples/endloskopierschleife-nachher.png b/script/examples/endloskopierschleife-nachher.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3a0a299daeb066a684b891108f8bbc206b72bcf
Binary files /dev/null and b/script/examples/endloskopierschleife-nachher.png differ
diff --git a/script/examples/endloskopierschleife-vorher.png b/script/examples/endloskopierschleife-vorher.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e2c318c65323d738985b59ef0a9756f81bf43fb
Binary files /dev/null and b/script/examples/endloskopierschleife-vorher.png differ
diff --git a/script/examples/gelbes-a.png b/script/examples/gelbes-a.png
new file mode 100644
index 0000000000000000000000000000000000000000..bcf3307a8c6ceb8a3aecf9c3b7bcaae9a3d29584
Binary files /dev/null and b/script/examples/gelbes-a.png differ
diff --git a/script/examples/gemini.red b/script/examples/gemini.red
new file mode 100644
index 0000000000000000000000000000000000000000..9159b61aaf984a51418b4e9d34c6ca23d001b428
--- /dev/null
+++ b/script/examples/gemini.red
@@ -0,0 +1,15 @@
+;name Gemini
+;assert 1
+
+dat1            dat     #0
+dat2            dat     #99
+start           mov     @dat1,   @dat2
+                add     #1,      dat1
+                add     #1,      dat2
+                cmp     dat1,    dat3
+                jmp     start
+                mov     #99,     94
+                jmp     94
+dat3            dat     #10
+
+                end     start
diff --git a/script/examples/hello-world-data.png b/script/examples/hello-world-data.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1b6d21704fca3cec53adbcd1f8eeb97d01e938f
Binary files /dev/null and b/script/examples/hello-world-data.png differ
diff --git a/script/examples/knirps.red b/script/examples/knirps.red
new file mode 100644
index 0000000000000000000000000000000000000000..befaa2a3da9a8cab5e76207623ac49880453b472
--- /dev/null
+++ b/script/examples/knirps.red
@@ -0,0 +1,5 @@
+;name Knirps
+;assert 1
+
+start   mov 0, 1
+        end start
diff --git a/script/examples/kopierschleife-nachher.png b/script/examples/kopierschleife-nachher.png
new file mode 100644
index 0000000000000000000000000000000000000000..895efe6190f642a68ab1f4e26d8fa90367be72c6
Binary files /dev/null and b/script/examples/kopierschleife-nachher.png differ
diff --git a/script/examples/kopierschleife-vorher.png b/script/examples/kopierschleife-vorher.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad0c569eef70ffdd921dc5da8a1eb65e572e1d4b
Binary files /dev/null and b/script/examples/kopierschleife-vorher.png differ
diff --git a/script/examples/mice.red b/script/examples/mice.red
new file mode 100644
index 0000000000000000000000000000000000000000..0b17fb8c6db22239bf870c841e600a24f82a2216
--- /dev/null
+++ b/script/examples/mice.red
@@ -0,0 +1,16 @@
+;name Mice
+;author Chip Wendell
+;assert 1
+
+ptr     dat              #0
+start   mov     #12,     ptr    ; n = 12
+loop    mov     @ptr,    <dest  ; *dest = *(ptr+(*ptr))
+        djn     loop,    ptr    ; if(--ptr != 0)
+                                ;     goto loop
+        spl     @dest           ; split(*dest)
+        add     #653,    dest   ; dest += 653
+        jmz     start,   ptr    ; if(!ptr)
+                                ;     goto start
+dest    dat              #833
+
+        end start
diff --git a/script/examples/nachher.png b/script/examples/nachher.png
new file mode 100644
index 0000000000000000000000000000000000000000..fbd6bc2b66cdd821561e49648f5e6f1c3054395d
Binary files /dev/null and b/script/examples/nachher.png differ
diff --git a/script/examples/nothing.red b/script/examples/nothing.red
new file mode 100644
index 0000000000000000000000000000000000000000..5d6f3c21f2f19c3929c675c21b1e9a8ff47d8bf1
--- /dev/null
+++ b/script/examples/nothing.red
@@ -0,0 +1,5 @@
+;name Nothing
+;assert 1
+
+start    jmp 0
+         end start
diff --git a/script/examples/oft.red b/script/examples/oft.red
new file mode 100644
index 0000000000000000000000000000000000000000..635dc16a6b27135fce830814e4cb71c6a7e62605
--- /dev/null
+++ b/script/examples/oft.red
@@ -0,0 +1,12 @@
+;redcode
+;name oft
+;version 1.0 (8.1990)
+;author Olaf Klein
+;assert 1
+
+; +----------------------------------+
+; |   O F T    by  O.K.  AUG. 1990   |
+; +----------------------------------+
+
+SPL          <456
+JMP     -1
diff --git a/script/examples/rote-linie-1.png b/script/examples/rote-linie-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f8c0b41c107b55b7d3237e14c0109ce3ada6859
Binary files /dev/null and b/script/examples/rote-linie-1.png differ
diff --git a/script/examples/rote-linie-2.png b/script/examples/rote-linie-2.png
new file mode 100644
index 0000000000000000000000000000000000000000..b33f3e0cec38c73cebb29c0c636789ad49dc5966
Binary files /dev/null and b/script/examples/rote-linie-2.png differ
diff --git a/script/examples/rote-linie-3.png b/script/examples/rote-linie-3.png
new file mode 100644
index 0000000000000000000000000000000000000000..112710d84ab6c706bfe324a2e4400d5103ad70a7
Binary files /dev/null and b/script/examples/rote-linie-3.png differ
diff --git a/script/examples/rote-punkte.png b/script/examples/rote-punkte.png
new file mode 100644
index 0000000000000000000000000000000000000000..6755c32763412c80a39dae5bd09fbabfc7576bf4
Binary files /dev/null and b/script/examples/rote-punkte.png differ
diff --git a/script/examples/roter-punkt.png b/script/examples/roter-punkt.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3fa0ad8de25bc9d2379f120c9c5e162205ab05a
Binary files /dev/null and b/script/examples/roter-punkt.png differ
diff --git a/script/examples/rotes-alphabet-quelltext.png b/script/examples/rotes-alphabet-quelltext.png
new file mode 100644
index 0000000000000000000000000000000000000000..75804c24012d2ed2792595311b7194ce5b593aa0
Binary files /dev/null and b/script/examples/rotes-alphabet-quelltext.png differ
diff --git a/script/examples/rotes-alphabet.png b/script/examples/rotes-alphabet.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5823bee58f6d3fc9c713b02f3735f2f4e84d34e
Binary files /dev/null and b/script/examples/rotes-alphabet.png differ
diff --git a/script/examples/vorher.png b/script/examples/vorher.png
new file mode 100644
index 0000000000000000000000000000000000000000..a46b91157ab7f6c01aa0a55126d381f281f930e6
Binary files /dev/null and b/script/examples/vorher.png differ
diff --git a/script/examples/writepbm-1.c b/script/examples/writepbm-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..d3ff3220187eb64bda68783ba3ee418dabd35a6a
--- /dev/null
+++ b/script/examples/writepbm-1.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdint.h>
+
+#define WIDTH 64
+#define HEIGHT 64
+
+#define SIZE ((WIDTH / 8) * HEIGHT)
+
+int8_t buffer[SIZE];
+
+void clear (void)
+{
+  for (int i = 0; i < SIZE; i++)
+    buffer[i] = 0;
+}
+
+void set_pixel (int x, int y)
+{
+  int i = (WIDTH / 8) * y;
+  i += x / 8;                /* Byte innerhalb von buffer[] */
+  int b = x % 8;             /* Bit innerhalb des Bytes */
+  buffer[i] |= 1 << b;
+}
+
+int main (void)
+{
+  clear ();
+  for (int i = 0; i < HEIGHT; i++)
+    set_pixel (i, i);
+  return 0;
+}
diff --git a/script/examples/writepbm-2.c b/script/examples/writepbm-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..209685607f20864b74ea1132b9f98bfac5039367
--- /dev/null
+++ b/script/examples/writepbm-2.c
@@ -0,0 +1,38 @@
+#include <stdio.h>
+#include <stdint.h>
+
+#define WIDTH 64
+#define HEIGHT 64
+
+#define SIZE ((WIDTH / 8) * HEIGHT)
+
+uint8_t buffer[SIZE];
+
+void clear (void)
+{
+  for (int i = 0; i < SIZE; i++)
+    buffer[i] = 0;
+}
+
+void set_pixel (int x, int y)
+{
+  int i = (WIDTH / 8) * y;
+  i += x / 8;                /* Byte innerhalb von buffer[] */
+  int b = x % 8;             /* Bit innerhalb des Bytes */
+  buffer[i] |= 1 << b;
+}
+
+void output (void)
+{
+  for (int i = 0; i < SIZE; i++)
+    printf ("%c", buffer[i]);
+}
+
+int main (void)
+{
+  clear ();
+  for (int i = 0; i < HEIGHT; i++)
+    set_pixel (i, i);
+  output ();
+  return 0;
+}
diff --git a/script/examples/writepbm-3.c b/script/examples/writepbm-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..4e7b7068aa901a0b56048fd8c0201fce25c273e6
--- /dev/null
+++ b/script/examples/writepbm-3.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <stdint.h>
+
+#define WIDTH 64
+#define HEIGHT 64
+
+#define SIZE ((WIDTH / 8) * HEIGHT)
+
+uint8_t buffer[SIZE];
+
+void clear (void)
+{
+  for (int i = 0; i < SIZE; i++)
+    buffer[i] = 0;
+}
+
+void set_pixel (int x, int y)
+{
+  int i = (WIDTH / 8) * y;
+  i += x / 8;                /* Byte innerhalb von buffer[] */
+  int b = x % 8;             /* Bit innerhalb des Bytes */
+  buffer[i] |= 1 << b;
+}
+
+void output (void)
+{
+  printf ("P4\n%d %d\n", WIDTH, HEIGHT);
+  for (int i = 0; i < SIZE; i++)
+    printf ("%c", buffer[i]);
+}
+
+int main (void)
+{
+  clear ();
+  for (int i = 0; i < HEIGHT; i++)
+    set_pixel (i, i);
+  output ();
+  return 0;
+}
diff --git a/script/examples/writepbm-3.pbm b/script/examples/writepbm-3.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..92d5dd407e398e55667e68480c6a9f62169426a0
Binary files /dev/null and b/script/examples/writepbm-3.pbm differ
diff --git a/script/examples/writepbm-4.c b/script/examples/writepbm-4.c
new file mode 100644
index 0000000000000000000000000000000000000000..a81566eceb714a8beba74d6532eb98e5e6067ba3
--- /dev/null
+++ b/script/examples/writepbm-4.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <stdint.h>
+
+#define WIDTH 64
+#define HEIGHT 64
+
+#define SIZE ((WIDTH / 8) * HEIGHT)
+
+uint8_t buffer[SIZE];
+
+void clear (void)
+{
+  for (int i = 0; i < SIZE; i++)
+    buffer[i] = 0;
+}
+
+void set_pixel (int x, int y)
+{
+  int i = (WIDTH / 8) * y;
+  i += x / 8;                /* Byte innerhalb von buffer[] */
+  int b = x % 8;             /* Bit innerhalb des Bytes */
+  buffer[i] |= 0x80 >> b;
+}
+
+void output (void)
+{
+  printf ("P4\n%d %d\n", WIDTH, HEIGHT);
+  for (int i = 0; i < SIZE; i++)
+    printf ("%c", buffer[i]);
+}
+
+int main (void)
+{
+  clear ();
+  for (int i = 0; i < HEIGHT; i++)
+    set_pixel (i, i);
+  output ();
+  return 0;
+}
diff --git a/script/examples/writepbm-4.pbm b/script/examples/writepbm-4.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..9b34cca4d8b89bc9b0b54add3fafd57ee926c270
Binary files /dev/null and b/script/examples/writepbm-4.pbm differ
diff --git a/script/examples/writepbm-4.xbm b/script/examples/writepbm-4.xbm
new file mode 100644
index 0000000000000000000000000000000000000000..70bdfe3cae5ec3ee2d75d30b1038a13d128656f4
--- /dev/null
+++ b/script/examples/writepbm-4.xbm
@@ -0,0 +1,46 @@
+#define writepbm-4_width 64
+#define writepbm-4_height 64
+static char writepbm-4_bits[] = {
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, };
diff --git a/script/examples/writepbm_4.xbm b/script/examples/writepbm_4.xbm
new file mode 100644
index 0000000000000000000000000000000000000000..625358e2a059d07895380072fe54ac766c5a34df
--- /dev/null
+++ b/script/examples/writepbm_4.xbm
@@ -0,0 +1,46 @@
+#define writepbm_4_width 64
+#define writepbm_4_height 64
+static char writepbm_4_bits[] = {
+  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 
+  0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, };
diff --git a/script/examples/writeppm.c b/script/examples/writeppm.c
new file mode 100644
index 0000000000000000000000000000000000000000..262d6644fe27259ae9f52fdfbbe582e1404912b6
--- /dev/null
+++ b/script/examples/writeppm.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <stdint.h>
+
+#define WIDTH 64
+#define HEIGHT 64
+
+#define SIZE (3 * WIDTH * HEIGHT)
+
+uint8_t buffer[SIZE];
+
+void clear (void)
+{
+  for (int i = 0; i < SIZE; i++)
+    buffer[i] = 0;
+}
+
+void set_pixel (int x, int y, int r, int g, int b)
+{
+  int i = 3 * (y * WIDTH + x);
+  buffer[i++] = r;
+  buffer[i++] = g;
+  buffer[i] = b;
+}
+
+void output (void)
+{
+  printf ("P6\n%d %d\n%d\n", WIDTH, HEIGHT, 255);
+  for (int i = 0; i < SIZE; i++)
+    printf ("%c", buffer[i]);
+}
+
+int main (void)
+{
+  clear ();
+  for (int i = 0; i < HEIGHT; i++)
+    set_pixel (i, i, 255, i, 255 - i);
+  output ();
+  return 0;
+}
diff --git a/script/examples/writeppm.ppm b/script/examples/writeppm.ppm
new file mode 100644
index 0000000000000000000000000000000000000000..580c3377668ce71e99ebded77cd33816416c29a6
Binary files /dev/null and b/script/examples/writeppm.ppm differ
diff --git a/script/examples/zwischendurch.png b/script/examples/zwischendurch.png
new file mode 100644
index 0000000000000000000000000000000000000000..31598a56a36cbab25da1c7991a30c176157d1119
Binary files /dev/null and b/script/examples/zwischendurch.png differ
diff --git a/script/fa-1.jpg b/script/fa-1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0a3abc829dff90e4e99c7c120c3f96452198bc94
Binary files /dev/null and b/script/fa-1.jpg differ
diff --git a/script/fa-2.jpg b/script/fa-2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..44b938719061e6fd0eb3238c601096a1a2255d35
Binary files /dev/null and b/script/fa-2.jpg differ
diff --git a/script/fa-3.jpg b/script/fa-3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2f003591d7f67ded75f5626b35999fea0f5d2964
Binary files /dev/null and b/script/fa-3.jpg differ
diff --git a/script/festplatte-pata.jpg b/script/festplatte-pata.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a5c064f110ee4e51b9d9d68629e6c9582f663c8a
Binary files /dev/null and b/script/festplatte-pata.jpg differ
diff --git a/script/festplatte-sata.jpg b/script/festplatte-sata.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c6ef768a48a261a34430b2af1f1e0f4cfbb89443
Binary files /dev/null and b/script/festplatte-sata.jpg differ
diff --git a/script/kompass-messung.png b/script/kompass-messung.png
new file mode 100644
index 0000000000000000000000000000000000000000..483165aec6de40b1993500956f1de1cb7added79
Binary files /dev/null and b/script/kompass-messung.png differ
diff --git a/script/kompassmodul-an-roboter.jpg b/script/kompassmodul-an-roboter.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8032f89a2d9ed29445312c2f29ef6ceb951b2005
Binary files /dev/null and b/script/kompassmodul-an-roboter.jpg differ
diff --git a/script/kompassmodul.jpg b/script/kompassmodul.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..91e9de3f4ff0023b01957a6c48e2b61f8070ee40
Binary files /dev/null and b/script/kompassmodul.jpg differ
diff --git a/script/komplement.jpg b/script/komplement.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..371ae98c4539e6a7eea88be76c548f1953c68643
Binary files /dev/null and b/script/komplement.jpg differ
diff --git a/script/logo-hochschule-bochum-cvh-text-v2.pdf b/script/logo-hochschule-bochum-cvh-text-v2.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..4aa99b8f81061aca6dcaf43eed2d9efef40555f8
--- /dev/null
+++ b/script/logo-hochschule-bochum-cvh-text-v2.pdf
@@ -0,0 +1 @@
+../common/logo-hochschule-bochum-cvh-text-v2.pdf
\ No newline at end of file
diff --git a/script/logo-hochschule-bochum-cvh-text.pdf b/script/logo-hochschule-bochum-cvh-text.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..649b6a8b8f51ddc370a3626310c172fb3f8b0807
Binary files /dev/null and b/script/logo-hochschule-bochum-cvh-text.pdf differ
diff --git a/script/logo-hochschule-bochum.pdf b/script/logo-hochschule-bochum.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8cad73dbb48a2b550bf29355b5a6ec895ce091f8
Binary files /dev/null and b/script/logo-hochschule-bochum.pdf differ
diff --git a/script/motherboard-anschluesse.jpg b/script/motherboard-anschluesse.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0c18421ba84cf3b5edfd94404152138a78ee527b
Binary files /dev/null and b/script/motherboard-anschluesse.jpg differ
diff --git a/script/motherboard-ausschnitt.jpg b/script/motherboard-ausschnitt.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..86e3b0510a3e91661c9cbbfd557b5af6b7a14fa3
Binary files /dev/null and b/script/motherboard-ausschnitt.jpg differ
diff --git a/script/motherboard.jpg b/script/motherboard.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..339770fb42e760cd4271d4560446cd52e6db16b3
Binary files /dev/null and b/script/motherboard.jpg differ
diff --git a/script/multi-1.jpg b/script/multi-1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0a9b182c834726cbde3be70e06c42bf4256d4df0
Binary files /dev/null and b/script/multi-1.jpg differ
diff --git a/script/multi-2.jpg b/script/multi-2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ab06d9580a04a3bc7b748ba18ad1a76a29f250db
Binary files /dev/null and b/script/multi-2.jpg differ
diff --git a/script/multi-3.jpg b/script/multi-3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c4724ef94c94b326698cf3de0599a1e4176236e6
Binary files /dev/null and b/script/multi-3.jpg differ
diff --git a/script/pgscript.sty b/script/pgscript.sty
new file mode 120000
index 0000000000000000000000000000000000000000..95c888478c99ea7fda0fd11ccf669ae91be7178b
--- /dev/null
+++ b/script/pgscript.sty
@@ -0,0 +1 @@
+../common/pgscript.sty
\ No newline at end of file
diff --git a/script/pgslides.sty b/script/pgslides.sty
new file mode 120000
index 0000000000000000000000000000000000000000..5be1416f4216f076aa268901f52a15d775e43f64
--- /dev/null
+++ b/script/pgslides.sty
@@ -0,0 +1 @@
+../common/pgslides.sty
\ No newline at end of file
diff --git a/script/programm-screenshot.png b/script/programm-screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..5214650458048bdc5a375f828ec5153fae241579
Binary files /dev/null and b/script/programm-screenshot.png differ
diff --git a/script/pst-circ-pg.sty b/script/pst-circ-pg.sty
new file mode 120000
index 0000000000000000000000000000000000000000..81253a45bded27ed7cf1b13b967ae54772b0807d
--- /dev/null
+++ b/script/pst-circ-pg.sty
@@ -0,0 +1 @@
+../common/pst-circ-pg.sty
\ No newline at end of file
diff --git a/script/rechnen.jpg b/script/rechnen.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2f95f8f20d5b9298002ec5dd41ad43ea8e2a3db0
Binary files /dev/null and b/script/rechnen.jpg differ
diff --git a/script/rtech-2013ws.pdf b/script/rtech-2013ws.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5d47b21003212acf1ca661cb224402a910f52f6c
Binary files /dev/null and b/script/rtech-2013ws.pdf differ
diff --git a/script/rtech-2013ws.tex b/script/rtech-2013ws.tex
new file mode 100644
index 0000000000000000000000000000000000000000..06b2e17940560f787fb8a53b9678a963afbc2f4d
--- /dev/null
+++ b/script/rtech-2013ws.tex
@@ -0,0 +1,4835 @@
+% rtech-2012ws.pdf - Lecture Notes on Fundamentals in Computer Architecture
+% Copyright (C) 2012, 2013  Peter Gerwinski
+%
+% This document is free software: you can redistribute it and/or
+% modify it either under the terms of the Creative Commons
+% Attribution-ShareAlike 3.0 License, or under the terms of the
+% GNU General Public License as published by the Free Software
+% Foundation, either version 3 of the License, or (at your option)
+% any later version.
+%
+% This document is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this document.  If not, see <http://www.gnu.org/licenses/>.
+%
+% You should have received a copy of the Creative Commons
+% Attribution-ShareAlike 3.0 Unported License along with this
+% document.  If not, see <http://creativecommons.org/licenses/>.
+
+\documentclass[a4paper]{article}
+
+\usepackage{pgscript}
+\usepackage{rotating}
+\usepackage{pdftricks}
+
+\newcommand{\name}[1]{\textsc{#1}}
+\newcommand{\ccbysanp}{CC-by-sa (Version 3.0, nicht portiert)}
+\newcommand{\fdl}{GNU FDL (Version 1.2 oder h�her)}
+\newcommand{\mylicense}{CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder h�her)}
+\newcommand{\pd}{gemeinfrei -- \emph{public domain}}
+
+\makeatletter
+  \newcommand{\figurecaptionraw}[2]{%
+    \def\n{\hfill\break}
+    \refstepcounter{figure}%
+    \addcontentsline{lof}{figure}%
+      {\protect\numberline{\goodbreak\hspace{-1.5em}Abb.~\thefigure}{\ignorespaces #1}\protect\nopagebreak}%
+    \begingroup
+      \def\n{\break}
+      \@makecaption{\csname fnum@figure\endcsname}{\ignorespaces #1}\par
+    \endgroup
+    \addtocontents{lof}{\begingroup\leftskip3.8em #2\par\endgroup}
+  }
+\makeatother
+\newcommand{\figurecaptionurl}[5]{%
+  \figurecaptionraw{#1}{Quelle: \protect\url{#2},\protect\\abgerufen am #3\protect\\Autor: #4\protect\\Lizenz: #5}}
+\newcommand{\figurecaptionurlurl}[5]{%
+  \figurecaptionraw{#1}{Quelle: \protect\url{#2},\protect\\abgerufen am #3\protect\\Autor: \protect\url{#4}\protect\\Lizenz: #5}}
+\newcommand{\figurecaptionself}[1]{\figurecaptionraw{#1}{Quelle/Autor: selbst erstellt\protect\\Lizenz: \mylicense}}
+
+\newcommand{\underconstruction}{\hfill\makebox(0,0)[tr]{\includegraphics[width=2cm]{UnderCon_icon.pdf}}}
+
+\newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}}
+\newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}}
+
+\begin{psinputs}
+  \usepackage{pgscript}
+  \usepackage{pstricks,pst-grad,pst-circ-pg}
+  \newcommand{\invisible}{\tiny\color{white}}
+  \psset{unit=1cm}
+  \psset{logicLabelstyle=\invisible}
+  \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+  \psset{logicSymbolstyle=\logicSymbol}
+  \newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}}
+  \newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}}
+\end{psinputs}
+
+\begin{document}
+  \thispagestyle{empty}
+  \strut\hfill
+  \includegraphics[height=1.5cm]{logo-hochschule-bochum.pdf}
+  \vfill
+  \begin{center}
+    {\Huge\textbf{Grundlagen Rechnertechnik}\par}
+    \vspace{2cm}
+    {\large Wintersemester 2012/13\\[\medskipamount]
+    Prof.~Dr.~Peter Gerwinski}
+  \end{center}
+  \vfill
+
+  \clearpage
+
+  \begingroup
+    \strut\vfill
+
+    \setlength{\leftskip}{3cm}
+
+    Stand: 21.\ Januar 2013
+
+    Soweit nicht anders angegeben:\\
+    Copyright \copyright\ 2012\quad Peter Gerwinski\\
+    Lizenz: \mylicense
+
+%    Baustellenschilder (Quelle: \url{http://commons.wikimedia.org/wiki/File:UnderCon\_icon.svg},
+%    Lizenz: gemeinfrei) kennzeichnen Passagen, f�r die kurzfristig noch gr��ere �nderungen geplant sind.
+
+    Sie k�nnen dieses Skript einschlie�lich Quelltext
+    und Beispielprogramme\\
+    herunterladen unter:\\
+    \url{http://www.peter.gerwinski.de/download/rtech-2012ws.tar.gz}
+
+  \endgroup
+
+  \clearpage
+
+  \tableofcontents
+
+  \clearpage
+
+  \catcode`\_=13
+  \listoffigures
+  \catcode`\_=8
+
+  \clearpage
+
+  \section{Einf�hrung}
+
+  \subsection{Was ist Rechnertechnik?}
+
+  Wikipedia \cite{WP: Rechnertechnik} definiert \newterm{Rechnertechnik\/} folgenderma�en:
+  \begin{quote}
+    Die \newterm{Rechnertechnik\/} (auch Computertechnik, englisch \newterm{computer engineering\/})
+    besch�ftigt sich als technisches Fachgebiet
+    mit der Konzeption von informationsverarbeitenden Anlagen, also Computern.
+    Sie baut auf der Digitaltechnik und Mikroelektronik auf.
+  \end{quote}
+
+  Die Kernfrage, mit denen wir uns in dieser Lehrveranstaltung befassen werden, lautet also:
+  \begin{quote}
+    Wie funktioniert ein Computer?
+  \end{quote}
+
+  Im Gegensatz zu z.\,B.\ Lebewesen werden Computer von Menschen entwickelt und gebaut.
+  Daher ist es grunds�tzlich m�glich, ihre Funktionsweise vollst�ndig zu verstehen.
+
+  \subsection{Was ist ein Computer?}
+
+  Ein \newterm{Rechner}, englisch \newterm{Computer},
+  ist von der Wortbedeutung her zun�chst einmal ein Werkzeug,
+  das dem menschlichen Gehirn beim Rechnen hilft.
+
+  Beispiele f�r derartige Rechenhilfen:
+  \begin{itemize}
+    \setlength{\rightskip}{5cm}
+    \item
+      Finger
+
+      Die eigenen Finger werden h�ufig beim Kopfrechnen
+      als zus�tzliches Werkzeug eingesetzt, um sich Zwischenergebnisse
+      (typischerweise im Zahlenbereich von 1 bis 10) zu merken.
+    \item
+      Papier und Bleistift, Sand, Tontafeln etc.
+
+      Das schriftliche Addieren, Subtrahieren, Multiplizieren und Dividieren
+      ist aus der Grundschule bekannt.
+      Auch weitere Operationen (z.\,B.\ Wurzelziehen) lassen sich auf diese Weise ausf�hren.
+    \item
+      Zirkel und Lineal
+      \hfill\makebox(0,0)[tl]{\hspace*{1cm}\begin{minipage}{4cm}
+        \vspace{-3cm}
+        \begin{center}
+          \includegraphics[width=4cm]{Drawing-a-circle-with-the-compasses.jpg}\\
+          \figurecaptionurl{Zirkel}%
+            {http://commons.wikimedia.org/wiki/File:Drawing-a-circle-with-the-compasses.jpg}%
+            {7.\,10.\,2012}%
+            {International Correspondence Schools, Scranton, PA., USA}%
+            {\pd}
+          \bigskip
+          \includegraphics[width=4cm]{Holding-a-ruling-pen-edited-2.jpg}\\
+          \figurecaptionurl{Lineal}%
+            {http://commons.wikimedia.org/wiki/File:Holding-a-ruling-pen.jpg}%
+            {7.\,10.\,2012, selbst bearbeitet}%
+            {International Correspondence Schools, Scranton, PA., USA}%
+            {\pd}
+        \end{center}
+      \end{minipage}}
+
+      Erstaunlich viele geometrische Konstruktionen lassen sich allein mit Hilfe eines Zirkels
+      und eines Lineals (ohne Ma�stab) durchf�hren. Beispiele:
+      \begin{itemize}
+        \item
+          Addition, Subtraktion, Multiplikation und Division von Zahlen,\\
+          dargestellt durch L�ngenverh�ltnisse
+        \item
+          Berechnung von $\sqrt{2}$ als L�ngenverh�ltnis
+        \item
+          Division eines Winkels durch $2$ oder Potenzen von $2$
+        \item
+          Konstruktion eines regelm��igen F�nfecks,\\
+          Siebzehnecks oder 65537ecks
+      \end{itemize}
+      Wie im 19.\ Jahrhundert bewiesen wurde (K�rper- und \name{Galois}-The\-o\-rie),
+      gibt es aber auch mathematische Probleme,
+      die sich \emph{nicht\/} allein mit Zirkel und Lineal l�sen lassen.
+      Beispiele:
+      \begin{itemize}
+        \item
+          Berechnung von $\sqrt[3]{2}$ als L�ngenverh�ltnis\\("`W�rfelverdopplung"')
+        \item
+          Berechnung der Zahl $\pi$ als L�ngenverh�ltnis\\("`Quadratur des Kreises"')
+        \item
+          Division eines Winkels durch $3$
+        \item
+          Konstruktion eines regelm��igen Siebenecks
+      \end{itemize}
+    \item
+      Abakus
+
+      Bei dieser Rechenhilfe ersetzen verschiebbare Kugeln geschriebene Ziffern.
+      Die eigentliche Rechnung erfolgt genau wie beim schriftlichen Rechnen.
+    \item
+      Mechanische Rechenmaschine
+      \hfill\makebox(0,0)[tl]{\hspace*{0.7cm}\begin{minipage}{4.3cm}
+        \begin{center}
+          \includegraphics[width=4cm]{1890s_adding_machine.jpg}\\
+          \figurecaptionurlurl{Mechanische Rechenmaschine}%
+            {http://commons.wikimedia.org/wiki/File:1890s_adding_machine.jpg}%
+            {7.\,10.\,2012}%
+            {http://commons.wikimedia.org/wiki/User:Trekphiler}%
+            {\ccbysanp}
+        \end{center}
+      \end{minipage}}
+
+      Die Vorg�nge, die beim schriftlichen Rechnen durch einen Menschen ausgef�hrt werden,
+      erfolgen hier durch Zahnr�der.
+    \item
+      Rechenschieber
+
+      Zwei gegeneinander verschiebbare logarithmische Skalen
+      erlauben es, die Multiplikation auf die Addition zur�ckzuf�hren
+      und die Division auf die Subtraktion.
+      Zus�tzliche Skalen erm�glichen auch das Ziehen von Wurzeln und weitere Operationen.
+    \item
+      Taschenrechner
+
+      Die Vorg�nge, die beim schriftlichen Rechnen durch einen Menschen ausgef�hrt werden,
+      erfolgen hier durch elektronische Schaltungen.
+    \item
+      Computer
+
+      Zus�tzlich zu den F�higkeiten eines Taschenrechners erlaubt es ein Computer,
+      Folgen von Rechenvorg�ngen in Gestalt von \newterm{Programmen\/} vorzubereiten,
+      bei deren Abarbeitung auf bereits vorliegende Ergebnisse und sonstige Ereignisse
+      reagiert werden kann (bedingte Anweisungen und Sprunganweisungen).
+  \end{itemize}
+
+  Die oben aufgef�hrten Rechner lassen sich in zwei Klassen unterteilen:
+  \begin{itemize}
+    \item
+      \newterm{Analogrechner\/} stellen Zahlenwerte durch kontinuierliche physikalische Gr��en
+      (L�nge, elektrische Spannung, \dots) dar.
+      Die Genauigkeit der Ergebnisse entspricht der Genauigkeit, mit der der Rechner gefertigt wurde.
+      Sie unterliegt Qualit�tsschwankungen und �u�eren Einfl�ssen
+      und kann sich im Laufe der Zeit allm�hlich �ndern
+      (Qualit�tsabnahme durch Verschlei�, aber auch Qualit�tsverbesserung durch "`Einschleifen"').
+
+      Zu dieser Klasse geh�ren Zirkel und Lineal sowie der Rechenschieber.
+    \item
+      \newterm{Digitalrechner\/} stellen Zahlenwerte durch Ziffern (englisch: \emph{digit\/}) dar.
+      Sie sind benannt nach den menschlichen Fingern (lateinisch: \emph{digitus\/}),
+      die als Rechenwerkzeug dieser Klasse angeh�ren.
+      Die erreichbare Genauigkeit h�ngt allein von der Anzahl der verwendbaren Ziffern ab.
+      Qualit�tsverlust, z.\,B.\ durch Verschlei�, spielt solange keine Rolle,
+      wie die einzelnen Werte der Ziffern noch unterschieden werden k�nnen.
+      Sobald dies nicht mehr der Fall ist, ist der Digitalrechner schlagartig komplett unbrauchbar.
+
+      Neben den namensgebenden Fingern geh�ren zu dieser Klasse
+      auch das schriftliche Rechnen, der Abakus, mechanische Rechenmaschinen und Taschenrechner.
+  \end{itemize}
+
+  Wenn heutzutage von "`Computern"' die Rede ist, so sind damit stets \newterm{Digitalcomputer\/} gemeint.
+  Daneben gibt es auch \newterm{Analogcomputer},
+  die Zahlenwerte durch elektrische Spannungen, Wasserdruck oder sonstige physikalische Gr��en modellieren.
+
+  Die Programmierung elektronischer Analogcomputer erfolgt durch das Umstecken von Schaltungen.
+  Durch geeignete Wahl der Bauelemente k�nnen nicht nur die Grundrechenarten,
+  sondern auch Operationen aus der Differential- und Integralrechnung effizient ausgef�hrt werden.
+  Analog"-computer eignen sich daher besonders gut zum L�sen von Differentialgleichungen.
+  Auf diesem Gebiet hatten Analogcomputer bis in die 1970er Jahre hinein
+  Vorteile gegen�ber Digitalcomputern \cite{Analogcomputer},
+  wurden aber mittlerweile durch diese nahezu vollst�ndig verdr�ngt.
+
+  In dieser Lehrveranstaltung geht es ausschlie�lich um Digitalcomputer.
+
+  \clearpage
+
+  \subsection{Rechnertechnik im Verh�ltnis zu anderen Disziplinen}
+
+  Rechnertechnik als wissenschaftliche Disziplin baut auf der Digitaltechnik und der Mikroelektronik auf, 
+  bei denen es sich um Teilgebiete der Elektrotechnik handelt.
+
+  Die Aufgabe der Rechnertechnik besteht darin, das Gegenst�ndliche -- reale Dr�hte, Halbleiter usw.\ --
+  so weit zu abstrahieren, da� ein universell einsetzbarer Rechner entsteht.
+  Die Rechenergebnisse h�ngen also nicht mehr von dem konkreten Rechner ab, auf dem die Programme laufen
+  (wie es z.\,B.\ bei einem Rechenschieber der Fall ist),
+  sondern der Rechner bildet eine Abstraktionsschicht f�r die Programme.
+  Details, wie der Rechner funktioniert, sind f�r die Programmierung uninteressant;
+  diese Probleme werden innerhalb der Rechnertechnik gel�st.
+
+  \bigskip
+  
+  \begin{center}
+    \begin{pdfpic}
+      \begin{pspicture}(-5,0)(12,24)
+        \small
+        \psset{unit=0.5cm}
+        \psline[arrows=<->](-1,0)(-1,22)
+        \rput(-1.3,0){\makebox(0,0)[br]{\textbf{gegenst�ndlich}}}
+        \rput(-1.3,22){\makebox(0,0)[tr]{\textbf{abstrakt}}}
+        \rput(-1.3,2){\makebox(0,0)[r]{Elektromagnetismus, Halbleiter}}
+        \rput(-1.3,4){\makebox(0,0)[r]{Elektronische Bauelemente}}
+        \rput(-1.3,6){\makebox(0,0)[r]{Logik-Schaltkreise}}
+        \rput(-1.3,8){\makebox(0,0)[r]{Prozessoren}}
+        \rput(-1.3,9){\makebox(0,0)[r]{Maschinensprache}}
+        \rput(-1.3,10){\makebox(0,0)[r]{Assembler}}
+        \rput(-1.3,11){\makebox(0,0)[r]{Ein-/Ausgabe}}
+        \rput(-1.3,12){\makebox(0,0)[r]{maschinennahe Hochsprachen (z.\,B.\ C)}}
+        \rput(-1.3,14){\makebox(0,0)[r]{abstrahierende Hochsprachen (z.\,B.\ C++, Java)}}
+        \rput(-1.3,15){\makebox(0,0)[r]{Programmierung}}
+        \rput(-1.3,16){\makebox(0,0)[r]{Algorithmen, Datenstrukturen, Software-Entwurf}}
+        \rput(-1.3,17){\makebox(0,0)[r]{Requirements Engineering}}
+        \rput(-1.3,18){\makebox(0,0)[r]{formale Sprachen, Berechenbarkeit}}
+        \rput(-1.3,19){\makebox(0,0)[r]{mathematische Strukturen}}
+        \rput(-1.3,20){\makebox(0,0)[r]{mathematische Beweise}}
+        \rput(2.1,0.5){\makebox(0,0)[l]{Physik}}
+        \rput(4.1,4){\makebox(0,0)[l]{Elektrotechnik}}
+        \rput(6.1,8){\makebox(0,0)[l]{\shortstack[l]{Rechnertechnik und\\technische Informatik}}}
+        \rput(8.1,12){\makebox(0,0)[l]{\shortstack[l]{Praktische und\\angewandte Informatik}}}
+        \rput(10.1,16){\makebox(0,0)[l]{\shortstack[l]{Softwaretechnik und\\theoretische Informatik}}}
+        \rput(12.1,21){\makebox(0,0)[l]{Mathematik}}
+        \psset{linewidth=0.001,linestyle=none,fillstyle=gradient,gradmidpoint=1.0,gradlines=1000}
+        \definecolor{RGBwhite}{rgb}{1.0,1.0,1.0}
+        \definecolor{RGBblue}{rgb}{0.0,0.0,1.0}
+        \definecolor{RGBred}{rgb}{1.0,0.0,0.0}
+        \definecolor{RGBgreen}{rgb}{0.0,1.0,0.0}
+        \definecolor{RGByellow}{rgb}{1.0,1.0,0.0}
+        \definecolor{RGBorange}{rgb}{1.0,0.7,0.0}
+        \definecolor{RGBgrey}{rgb}{0.7,0.7,0.7}
+        \rput(0,2){\psframe[gradbegin=RGBwhite,gradend=RGBblue](2,2)}
+        \rput(0,0){\psframe[fillstyle=solid,fillcolor=RGBblue](2,2.01)}
+        \rput(2,6){\psframe[gradbegin=RGBwhite,gradend=RGBred](2,2)}
+        \rput(2,2){\psframe[gradbegin=RGBred,gradend=RGBwhite](2,2)}
+        \rput(2,3.99){\psframe[fillstyle=solid,fillcolor=RGBred](2,2.02)}
+        \rput(4,10){\psframe[gradbegin=RGBwhite,gradend=RGBgreen](2,2)}
+        \rput(4,6){\psframe[gradbegin=RGBgreen,gradend=RGBwhite](2,2)}
+        \rput(4,7.99){\psframe[fillstyle=solid,fillcolor=RGBgreen](2,2.02)}
+        \rput(6,14){\psframe[gradbegin=RGBwhite,gradend=RGByellow](2,2)}
+        \rput(6,10){\psframe[gradbegin=RGByellow,gradend=RGBwhite](2,2)}
+        \rput(6,11.99){\psframe[fillstyle=solid,fillcolor=RGByellow](2,2.02)}
+        \rput(8,18){\psframe[gradbegin=RGBwhite,gradend=RGBorange](2,2)}
+        \rput(8,14){\psframe[gradbegin=RGBorange,gradend=RGBwhite](2,2)}
+        \rput(8,15.99){\psframe[fillstyle=solid,fillcolor=RGBorange](2,2.02)}
+        \rput(10,18){\psframe[gradbegin=RGBgrey,gradend=RGBwhite](2,2)}
+        \rput(10,19.99){\psframe[fillstyle=solid,fillcolor=RGBgrey](2,2.01)}
+      \end{pspicture}
+    \end{pdfpic}
+    \vspace{-\bigskipamount}
+    \figurecaptionself{Wissenschaftliche Disziplinen mit Bezug zur Informatik,\n
+                       angeordnet nach Abstraktionsgrad ihres jeweiligen Gegenstandes
+                       \label{Disziplinen}}
+  \end{center}
+
+  Umgekehrt verwendet die Rechnertechnik die Ergebnisse der Elektrotechnik
+  (Verhalten elektronischer Logik-Schaltkreise) als Abstraktionsschicht,
+  ohne sich f�r die Funktionsweise von Transistoren, Relais usw.\ im Detail zu interessieren.
+  Um diese Abstraktionsschicht zu schaffen, sch�pft die Elektrotechnik ihrerseits
+  aus den Ergebnissen der Physik (Elektromagnetisums, Halbleiterphysik, \dots).
+
+  \clearpage
+
+  \section{Vom Schaltkreis zum Computer}
+
+  \subsection{Logik-Schaltkreise}
+
+  Bereits mit Lichtschaltern ist es m�glich, logische Operationen durchzuf�hren:
+
+  \begin{itemize}
+    \item
+      Und-Verkn�pfung: Reihenschaltung
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 0 \\\hline
+            1 & 0 & 0 \\\hline
+            1 & 1 & 1 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{6cm}
+        \begin{center}
+          \begin{pdfpic}
+            \newcommand{\invisible}{\tiny\color{white}}
+            \psset{logicLabelstyle=\invisible}
+            \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+            \psset{logicSymbolstyle=\logicSymbol}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-1.5,0.75){C0plus}
+              \pnode(-0.5,0){C0}
+              \pnode(0.5,0.3){D0}
+              \pnode(0.5,-0.3){E0}
+              \pnode(2.0,-0.3){C1}
+              \pnode(3.0,0){D1}
+              \pnode(3.0,-0.6){E1}
+              \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+              \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+              \put(0.0,0.3){\makebox(0,0)[b]{A}}
+              \put(2.5,0.0){\makebox(0,0)[b]{B}}
+              \uput[180](C0plus){\textbf{+}}
+              \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+              \psline[arrows=o-](1.5,0|D0)(D0)
+              \psline[arrows=o-](4.0,0|D1)(D1)
+              \psline(E0)(C1)
+              \psline(E1)(4.5,-0.6)
+              \lamp[labeloffset=0.9](4.5,-0.6)(4.5,-2.6){Q}
+              \ground[connectingdot=false](4.5,-2.6)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+
+      \bigskip
+
+    \item
+      Oder-Verkn�pfung: Parallelschaltung
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 1 \\\hline
+            1 & 0 & 1 \\\hline
+            1 & 1 & 1 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{6cm}
+        \begin{center}
+          \begin{pdfpic}
+            \newcommand{\invisible}{\tiny\color{white}}
+            \psset{logicLabelstyle=\invisible}
+            \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+            \psset{logicSymbolstyle=\logicSymbol}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-1.5,0.75){C0plus}
+              \pnode(-0.5,0){C0}
+              \pnode(0.5,0.3){D0}
+              \pnode(0.5,-0.3){E0}
+              \pnode(0.5,-2.0){C1}
+              \pnode(1.5,-1.7){D1}
+              \pnode(1.5,-2.3){E1}
+              \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+              \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+              \put(0.0,0.3){\makebox(0,0)[b]{A}}
+              \put(1.0,-1.7){\makebox(0,0)[b]{B}}
+              \uput[180](C0plus){\textbf{+}}
+              \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+              \psline[arrows=*-](-1.5,0|C0)(-1.5,0|C1)(C1)
+              \psline[arrows=o-](1.5,0|D0)(D0)
+              \psline[arrows=o-](2.5,0|D1)(D1)
+              \psline[arrows=-*](E0)(3.5,-0.3)(3.5,-2.3)
+              \psline(E1)(3.5,-2.3)
+              \lamp[labeloffset=0.9](3.5,-2.3)(3.5,-4.3){Q}
+              \ground[connectingdot=false](3.5,-4.3)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+
+      \bigskip
+
+    \item
+
+      Exklusiv-Oder-Verkn�pfung\\
+      "`entweder A oder B, aber nicht beide"'
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 1 \\\hline
+            1 & 0 & 1 \\\hline
+            1 & 1 & 0 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{6cm}
+        \begin{center}
+          \begin{pdfpic}
+            \newcommand{\invisible}{\tiny\color{white}}
+            \psset{logicLabelstyle=\invisible}
+            \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+            \psset{logicSymbolstyle=\logicSymbol}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-1.5,0.75){C0plus}
+              \pnode(-0.5,0){C0}
+              \pnode(0.5,0.3){D0}
+              \pnode(0.5,-0.3){E0}
+              \pnode(4.0,0){C1}
+              \pnode(3.0,0.3){D1}
+              \pnode(3.0,-0.3){E1}
+              \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+              \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+              \put(0.0,0.3){\makebox(0,0)[b]{A}}
+              \put(3.5,0.3){\makebox(0,0)[b]{B}}
+              \uput[180](C0plus){\textbf{+}}
+              \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+              \psline(D0)(1.25,0|D0)(2.25,0|E1)(E1)
+              \psline(E0)(1.25,0|E0)(2.25,0|D1)(D1)
+              \psline(C1)(5,0)
+              \lamp[labeloffset=0.9](5,0)(5,-2){Q}
+              \ground[connectingdot=false](5,-2)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+  \end{itemize}
+
+  Mehrere dieser Logik-Schaltungen miteinander zu kombinieren,
+  ist im allgemeinen zun�chst nicht m�glich,
+  da die Eingabe durch eine mechanische Schalterstellung erfolgt
+  und die Ausgabe durch das Leuchten einer Lampe.
+
+  Abhilfe schafft ein Schalter, der durch einen Elektromagneten bet�tigt wird, ein sog.\ \newterm{Relais}.
+
+  \begin{center}
+    \includegraphics[width=8cm]{Relay_principle_horizontal-edited.jpg}\\
+    \figurecaptionurlurl{Funktionsprinzip eines Relais}%
+      {http://commons.wikimedia.org/wiki/File:Relay_principle_horizontal.jpg}%
+      {7.\,10.\,2012, selbst bearbeitet}%
+      {http://commons.wikimedia.org/wiki/User:Bisgaard}%
+      {\fdl\ oder \ccbysanp}
+  \end{center}
+
+  Schaltzeichen f�r Relais mit 1 bzw.\ 2 Umschaltkontakten:
+  \begin{center}
+    \begin{minipage}{6cm}
+      \begin{pdfpic}
+        \newcommand{\invisible}{\tiny\color{white}}
+        \psset{logicLabelstyle=\invisible}
+        \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+        \psset{logicSymbolstyle=\logicSymbol}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-3,-2)(3,2)
+          \pnode(-1,1.5){A}
+          \pnode(1,1.5){B}
+          \relais(A)(B){}
+          \pnode(-0.5,0){C0}
+          \pnode(0.5,0.3){D0}
+          \pnode(0.5,-0.3){E0}
+          \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+          \psline[linestyle=dashed](0,0.25)(0,1.0)
+          \psline[arrows=o-](-1.5,0|A)(A)
+          \psline[arrows=o-](1.5,0|B)(B)
+          \psline[arrows=o-](-1.5,0|C0)(C0)
+          \psline[arrows=o-](1.5,0|D0)(D0)
+          \psline[arrows=o-](1.5,0|E0)(E0)
+        \end{pspicture}
+      \end{pdfpic}
+    \end{minipage}%
+    \begin{minipage}{6cm}
+      \begin{pdfpic}
+        \newcommand{\invisible}{\tiny\color{white}}
+        \psset{logicLabelstyle=\invisible}
+        \newcommand{\logicSymbol}{\small\boldmath\bf\rule{0pt}{0.5cm}}
+        \psset{logicSymbolstyle=\logicSymbol}
+        \psset{unit=0.6cm}
+        \psset{linewidth=0.03}
+        \begin{pspicture}(-3,-2)(3,2)
+          \pnode(-1,1.5){A}
+          \pnode(1,1.5){B}
+          \relais(A)(B){}
+          \pnode(-0.5,0){C0}
+          \pnode(0.5,0.3){D0}
+          \pnode(0.5,-0.3){E0}
+          \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+          \pnode(-0.5,-1.5){C1}
+          \pnode(0.5,-1.2){D1}
+          \pnode(0.5,-1.8){E1}
+          \psline[arrows=*-,linewidth=2\pslinewidth](C1)(D1)
+          \psline[linestyle=dashed](0,-1.25)(0,1.0)
+          \psline[arrows=o-](-1.5,0|A)(A)
+          \psline[arrows=o-](1.5,0|B)(B)
+          \psline[arrows=o-](-1.5,0|C0)(C0)
+          \psline[arrows=o-](1.5,0|D0)(D0)
+          \psline[arrows=o-](1.5,0|E0)(E0)
+          \psline[arrows=o-](-1.5,0|C1)(C1)
+          \psline[arrows=o-](1.5,0|D1)(D1)
+          \psline[arrows=o-](1.5,0|E1)(E1)
+        \end{pspicture}
+      \end{pdfpic}
+    \end{minipage}
+  \end{center}
+
+  Bei Relais-Schaltungen ist es m�glich, die von einer Logik-Schaltung ausgegebene Spannung
+  als Eingabespannung f�r die n�chste Logik-Schaltung zu verwenden.
+  Jede im folgenden angegebene Logik-Schaltung bis hin zu einem vollst�ndigen Computer
+  kann daher mit Hilfe von Relais realisiert werden.
+
+  1941 bauten Konrad Zuse und Helmut Schreyer auf diese Weise den ersten Computer, die Zuse Z3.
+
+  \begin{center}
+    \includegraphics[width=10cm]{Z3_Deutsches_Museum.JPG}\\
+    \figurecaptionurlurl{Zuse Z3 (Nachbau im Deutschen Museum)}%
+      {http://commons.wikimedia.org/wiki/File:Z3_Deutsches_Museum.JPG}%
+      {7.\,10.\,2012}%
+      {http://de.wikipedia.org/wiki/User:Venusianer}%
+      {\fdl\ oder \ccbysanp}
+  \end{center}
+
+  Wesentlich schnellere Schaltzeiten als mit einem Relais erreicht man mit einer \newterm{Elektronenr�hre}.
+  Hierbei handelt es sich um einen evakuierten Glaskolben mit einer heizbaren \newterm{Kathode\/} in der Mitte,
+  um die herum weitere \newterm{Elektroden\/} koaxial angeordnet sind.
+
+  \begin{center}
+    \begin{minipage}{10cm}
+      \begin{center}
+        \includegraphics[width=8cm]{Elektronenroehren-auswahl.jpg}\\
+        \figurecaptionurlurl{Elektronenr�hren}%
+          {http://commons.wikimedia.org/wiki/File:Elektronenroehren-auswahl.jpg}%
+          {7.\,10.\,2012}%
+          {http://de.wikipedia.org/wiki/Benutzer:Quark48}%
+          {CC-by-sa 2.0 Deutschland}
+      \end{center}
+    \end{minipage}
+    \begin{minipage}{5cm}
+      \begin{center}
+        \includegraphics[width=4.5cm]{Elektronenroehre_real.png}\\
+        \figurecaptionurlurl{Schemazeichnung einer Elektronenr�hre (Triode)\label{Triode}}%
+          {http://commons.wikimedia.org/wiki/File:Elektronenroehre_real.png}%
+          {7.\,10.\,2012}%
+          {http://de.wikipedia.org/wiki/Benutzer:Quark48}%
+          {CC-by 2.0 Deutschland}
+      \end{center}
+    \end{minipage}
+  \end{center}
+
+  Die einfachste Bauform der Elektronenr�hre ist die \newterm{Diode}\/
+  (griechisch \emph{dis hod�s\/} -- doppelter Weg).
+  Sie hat au�er der Kathode in der Mitte nur eine einzige �u�ere Elektrode, die \newterm{Anode}.
+  Eine Diode wirkt als "`elektronisches Ventil"' und l��t den Strom nur in einer Richtung durch,
+  n�mlich mit dem Minuspol an der Kathode und dem Pluspol an der Anode.
+
+  Eine weitere wichtige Bauform der Elektronenr�hre ist die \newterm{Triode}\/
+  (griechisch \emph{treis hod�s\/} -- dreifacher Weg, siehe Abbildung~\ref{Triode}).
+  Bei ihr befindet sich zwischen Anode und Kathode eine weitere Elektrode, das \newterm{Gitter}.
+  Durch Anlegen einer Spannung zwischen Kathode und Gitter
+  kann man den Strom, der zwischen Anode und Kathode flie�t, steuern.
+  In diesem Sinne wirkt die Triode als "`elektronischer Schalter"'
+  und kann die Funktionalit�t eines Relais �bernehmen.
+
+  Bis in die 1950er Jahre bildeten Elektronenr�hren die Grundlage f�r Computer.
+
+  \begin{center}
+    \includegraphics[width=10cm]{Eniac.jpg}\\
+    \figurecaptionurlurl{ENIAC -- der erste Computer auf Basis von Elektronenr�hren}%
+      {http://commons.wikimedia.org/wiki/File:Eniac.jpg}%
+      {11.\,10.\,2012}%
+      {unbekannt (U.\,S.\ Army)}%
+      {\pd}
+  \end{center}
+
+  \breath
+
+  In den 1950er Jahren wurden Elektronenr�hren allm�hlich durch \newterm{Halbleiterbauelemente\/} abgel�st.
+  Auch hier gibt es die Bauformen \newterm{Diode\/} und \newterm{Triode}.
+  Letztere wird meistens als \newterm{Transistor\/} bezeichnet
+  (englisch \emph{transfer resistor\/} -- �bertragungswiderstand, d.\,h.\ steuerbarer Widerstand).
+  \begin{itemize}
+    \item
+      Eine \newterm{Halbleiterdiode\/} -- im folgenden kurz: \newterm{Diode\/} --
+      wirkt als "`elektronisches Ventil"':
+      \begin{center}
+        \begin{pdfpic}
+          \psset{unit=0.6cm}
+          \psset{linewidth=0.03}
+          \begin{pspicture}(-2,-1)(2,1)
+            \pnode(-1.5,0){A}
+            \pnode(-1.3,0){AA}
+            \uput[180](A){Anode}
+            \pnode(1.5,0){K}
+            \pnode(1.3,0){KK}
+            \uput[0](K){Kathode}
+            \diode[fillstyle=solid,fillcolor=black](AA)(KK){}
+            \psline[arrows=o-](A)(AA)
+            \psline[arrows=o-](K)(KK)
+          \end{pspicture}
+        \end{pdfpic}
+      \end{center}
+      Elektrischer Strom in Pfeilrichtung (Pluspol an Anode, Minuspol an Kathode) darf die Diode passieren;
+      elektrischer Strom gegen Pfeilrichtung wird gesperrt.
+    \item
+      \newterm{Transistoren\/} gibt es in verschiedenen Bauformen
+      (\newterm{Bipolartransistor}, \newterm{Feldeffekttransistor -- FET},
+%      \newterm{Metalloxidschichtfeldeffekttransistor -- MOSFET},
+      \dots):
+      \begin{center}
+        \begin{minipage}{7cm}
+          \begin{center}
+            \begin{pdfpic}
+              \psset{unit=0.6cm}
+              \psset{linewidth=0.03}
+              \begin{pspicture}(-2,-2)(2,2)
+                \pnode(-1.5,0){B}
+                \uput[180](B){Basis}
+                \pnode(1.5,1.5){C}
+                \uput[0](C){Kollektor}
+                \pnode(1.5,-1.5){E}
+                \uput[0](E){Emitter}
+                \transistor[basesep=1.2,arrows=o-o](B)(E)(C)
+              \end{pspicture}
+            \end{pdfpic}
+
+            \medskip
+
+            Bipolartransistor
+          \end{center}
+        \end{minipage}
+        \begin{minipage}{7cm}
+          \begin{center}
+            \begin{pdfpic}
+              \psset{unit=0.6cm}
+              \psset{linewidth=0.03}
+              \begin{pspicture}(-2,-2)(2,2)
+                \pnode(-1.5,-0.5){B}
+                \uput[180](B){Gate}
+                \pnode(1.5,1.5){C}
+                \uput[0](C){Drain}
+                \pnode(1.5,-1.5){E}
+                \uput[0](E){Source}
+                \transistor[transistortype=MOSFET,basesep=1.2,arrows=o-o](B)(E)(C)
+              \end{pspicture}
+            \end{pdfpic}
+
+            \medskip
+
+            Feldeffekttransistor
+          \end{center}
+        \end{minipage}
+      \end{center}
+      Die elektrischen Eigenschaften der verschiedenen Bauformen sind im Detail unterschiedlich;
+      alle k�nnen jedoch als "`elektronische Schalter"' eingesetzt werden.
+
+      Eine typische Anwendung eines Transistors ("`\newterm{Emitterschaltung\/}"') besteht darin,
+      einen Strom zwischen Basis und Emitter flie�en zu lassen
+      und dadurch den Strom zu steuern, der zwischen Kollektor und Emitter flie�en darf.
+      �hnliches gilt f�r Feldeffekttransistoren: Eine zwischen Gate und Source angelegte Spannung
+      steuert den Stromflu� zwischen Source und Drain.
+
+      (Mehr �ber Transistorschaltungen erfahren Sie in der Lehrveranstaltung
+      \emph{Grundlagen Elektrotechnik}.)
+  \end{itemize}
+
+  \begin{center}
+    \begin{minipage}{10cm}
+      \begin{center}
+        \includegraphics[width=8cm]{Transistors-white.jpg}\\
+        \figurecaptionurlurl{Transistoren}%
+          {http://commons.wikimedia.org/wiki/File:Transistors-white.jpg}%
+          {11.\,10.\,2012}%
+          {http://de.wikipedia.org/wiki/Benutzer:Benedikt.Seidl}%
+          {\pd}
+      \end{center}
+    \end{minipage}
+  \end{center}
+
+  In einer \newterm{integrierten Schaltung (Integrated Circuit -- IC)}
+  werden mikroskopisch kleine Feldeffekttransistoren
+  auf einem Halbleiteruntergrund direkt an denjenigen Stellen erzeugt,
+  an denen sie in der Schaltung ben�tigt werden.
+
+  \begin{center}
+    \begin{minipage}{7.5cm}
+      \begin{center}
+        \includegraphics[height=5cm]{Intel_80486DX2_top.jpg}\hspace{0.5cm}%
+        \figurecaptionurlurl{Intel 80486DX2 (Oberseite)\label{IC1}}%
+          {http://commons.wikimedia.org/wiki/File:Intel_80486DX2_top.jpg}%
+          {1.\,11.\,2012}%
+          {http://en.wikipedia.org/wiki/User:Solipsist}%
+          {CC-by-sa (Version 2.0, nicht portiert)}
+      \end{center}
+    \end{minipage}
+    \begin{minipage}{7.5cm}
+      \begin{center}
+        \includegraphics[height=5cm]{Intel_80486DX2_bottom.jpg}
+        \figurecaptionurlurl{Intel 80486DX2 (Unterseite)\label{IC2}}%
+          {http://commons.wikimedia.org/wiki/File:Intel_80486DX2_bottom.jpg}%
+          {1.\,11.\,2012}%
+          {http://en.wikipedia.org/wiki/User:Solipsist}%
+          {CC-by-sa (Version 2.0, nicht portiert)}
+      \end{center}
+    \end{minipage}
+
+  \end{center}
+
+  Die Abbildungen~\ref{IC1} und \ref{IC2} zeigen die Ober- bzw.\ Unterseite
+  eines Intel-80486DX2-Mikroprozessors (1992 erschienen).
+  Das Geh�use ist ca.\ 44\,mm $\times$ 44\,mm gro�
+  und verf�gt auf der Unterseite �ber 168 Anschlu�stifte.
+
+  \begin{center}
+
+    \begin{minipage}{7.5cm}
+      \begin{center}
+        \includegraphics[height=5cm]{80486dx2-large.jpg}\hspace{0.5cm}%
+        \figurecaptionurlurl{Intel 80486DX2 (ge�ffnet)\label{IC3}}%
+          {http://commons.wikimedia.org/wiki/File:80486dx2-large.jpg}%
+          {11.\,10.\,2012}%
+          {http://en.wikipedia.org/wiki/User:Uberpenguin}%
+          {\fdl\ oder \ccbysanp}
+      \end{center}
+    \end{minipage}
+    \begin{minipage}{7.5cm}
+      \begin{center}
+        \includegraphics[height=4.79cm]{IC_Nanotecnology_2400X.JPG}
+        \figurecaptionurlurl{Integrierte Schaltung, vergr��ert\label{IC4}}%
+          {http://commons.wikimedia.org/wiki/File:IC_Nanotecnology_2400X.JPG}%
+          {11.\,10.\,2012}%
+          {http://commons.wikimedia.org/wiki/User:Angeloleithold}%
+          {\fdl\ oder \ccbysanp}
+      \end{center}
+    \end{minipage}
+
+  \end{center}
+
+  Abbildung~\ref{IC3} zeigt das Innenleben eines Intel-80486DX2-Mikroprozessors.
+  Die Platine (\newterm{Die\/}) in der Mitte ist 12\,mm $\times$ 6,75\,mm gro�.
+  Auf dieser Fl�che von 81\,mm\raisebox{0.5ex}{\footnotesize 2}
+  befinden sich ca.\ 1,2 Millionen Transistoren.
+  Aktuelle integrierte Schaltkreise sind noch deutlich st�rker miniaturisiert:
+  Ein Intel-Core-i7-Mikroprozessor von 2012 enth�lt z.\,B.\
+  ca.\ 1,4 Milliarden Transistoren auf einem Die der Fl�che 160\,mm\raisebox{0.5ex}{\footnotesize 2},
+  also �ber 500mal so viele Transistoren pro Fl�che.
+
+  Abbildung~\ref{IC4} zeigt einen 1200fach vergr��erten Ausschnitt
+  aus einem integrierten Schaltkreis (ca.\ 0,05\,mm $\times$ 0,05\,mm).
+
+  \breath
+
+  Unter Verwendung von Halbleiterbauelementen und ohmschen Widerst�nden
+  k�nnen wir nun die oben bereits mit mechanischen Schaltern realisierten Logik-Schaltungen
+  reproduzieren und erweitern:
+
+  \begin{itemize}
+
+    \item
+      Inverter
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c||c|}\hline
+            A &  Q \\\hline\hline
+            0 &  1 \\\hline
+            1 &  0 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}\hspace*{-0.5cm}%
+      \begin{minipage}[b]{4.5cm}
+        \begin{center}
+          \begin{pdfpic}
+            \newrgbcolor{almostwhite}{0.9 0.9 0.9}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=not](-0.75,-0.125){not1}
+              \psline[arrows=o-](-2,0|not11)(not11)
+              \uput[180](-2,0|not11){A}
+              \psline[arrows=o-](2,0|not1Q)(not1Q)
+              \uput[0](2,0|not1Q){Q\color{almostwhite}.}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}\hspace*{-2cm}%
+      \begin{minipage}[t]{4.5cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-1.0,2.0){A}
+              \pnode(1.0,2.0){B}
+              \relais(A)(B){}
+              \psline[arrows=o-](-1.5,0|A)(A)
+              \psline[linestyle=dashed](0,0.25)(0,1.5)
+              \psline(B)(1.5,0|B)
+              \ground[connectingdot=false](1.5,0|B)
+              \uput[180](-1.5,0|A){A}
+              \pnode(-1.5,0.75){C0plus}
+              \pnode(-0.5,0){C0}
+              \pnode(0.5,0.3){D0}
+              \pnode(0.5,-0.3){E0}
+              \psline[arrows=*-,linewidth=2\pslinewidth](C0)(D0)
+              \uput[180](C0plus){\textbf{+}}
+              \psline[arrows=->,arrowsize=0.3](C0)(-1.5,0|C0)(C0plus){}
+              \psline[arrows=o-](1.5,0|E0)(E0)
+              \psline[arrows=o-](2.0,0|D0)(D0)
+              \uput[0](2.0,0|D0){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}\hspace*{-1.5cm}%
+      \begin{minipage}{4.5cm}
+        \begin{center}
+          \vspace*{-1cm}
+          \begin{pdfpic}
+            \newrgbcolor{almostwhite}{0.9 0.9 0.9}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-1.2,0){A}
+              \uput[180](A){A}
+              \pnode(2,3.5){Qplus}
+              \uput[180](Qplus){\textbf{+}}
+              \pnode(2,1){QR}
+              \resistor[arrows=*->,arrowsize=0.3](QR)(Qplus){}
+              \pnode(3,1){Q}
+              \uput[0](Q){Q\color{almostwhite}.}
+              \pnode(0.5,-1){GND}
+              \ground[connectingdot=false](GND)
+              \transistor[basesep=1.2,arrows=o-](A)(GND)(QR)
+              \psline[arrows=-o](QR)(Q)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}\hspace*{-0.5cm}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \pnode(-3,0){A}
+              \pnode(-2,0){A1}
+              \pnode(-2,1.5){A1plus}
+              \pnode(-2,-1.5){A1GND}
+              \pnode(0.15,1.5){Q1plus}
+              \pnode(0.15,2.5){plus}
+              \pnode(0.15,-1.5){Q1minus}
+              \pnode(0.15,-2){GND}
+              \pnode(0.15,0){Q1}
+              \pnode(1.5,0){Q}
+              \uput[180](A){A}
+              \psline[arrows=o-*](A)(A1)
+              \psline(A1plus)(A1GND)
+              \psline[arrows=->,arrowsize=0.3](Q1plus)(plus){}
+              \uput[180](plus){\textbf{+}}
+              \transistor[basesep=1.5,transistortype=MOSFET,FETchanneltype=P](A1plus)(Q1)(plus)
+              \transistor[basesep=1.5,transistortype=MOSFET](A1GND)(GND)(Q1)
+              \ground[connectingdot=false](GND)
+              \psline[arrows=*-o](Q1)(Q)
+              \uput[0](Q){Q~\strut}
+            \end{pspicture}
+          \end{pdfpic}
+          \vspace*{-0.5cm}
+        \end{center}
+      \end{minipage}
+
+      \bigskip\nopagebreak
+
+      Von links nach rechts: Wahrheitstabelle, Schaltzeichen, Realisierungen mit Relais,
+      mit Bipolartransistor und Widerstand bzw.\ mit zwei Feldeffekttransistoren
+      (CMOS-Schaltung, Stand der Technik 2012).
+      Anstelle von Transistoren k�nnen auch Elektronenr�hren verwendet werden.
+
+    \item
+      Oder-Verkn�pfung
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 1 \\\hline
+            1 & 0 & 1 \\\hline
+            1 & 1 & 1 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}\hspace*{1cm}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=or](-0.75,-0.125){or1}
+              \psline[arrows=o-](-2,0|or12)(or12)
+              \uput[180](-2,0|or12){A}
+              \psline[arrows=o-](-2,0|or11)(or11)
+              \uput[180](-2,0|or11){B}
+              \psline[arrows=o-](2,0|or1Q)(or1Q)
+              \uput[0](2,0|or1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{6cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(6,4)
+              \pnode(-1.2,0.75){A}
+              \pnode(-1,0.75){A1}
+              \pnode(1,0.75){QA}
+              \pnode(-1.2,-0.5){B}
+              \pnode(-1,-0.5){B1}
+              \pnode(1,-0.5){QB}
+              \pnode(2,0.75){Q}
+              \pnode(1,-2.5){GND}
+              \uput[180](A){A}
+              \uput[180](B){B}
+              \psline[arrows=-o](QA)(Q)
+              \uput[0](Q){Q}
+              \psline[arrows=o-](A)(A1)
+              \diode[fillstyle=solid,fillcolor=black](A1)(QA){}
+              \psline[arrows=o-](B)(B1)
+              \diode[fillstyle=solid,fillcolor=black](B1)(QB){}
+              \psline[arrows=*-*](QA)(QB)
+              \resistor(QB)(GND){}
+              \ground[connectingdot=false](GND)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+
+      \bigskip\nopagebreak
+
+      Von links nach rechts: Wahrheitstabelle, Schaltzeichen,
+      Realisierung mit Dioden und Widerstand.
+
+      \bigskip
+
+    \item
+      Und-Verkn�pfung
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 0 \\\hline
+            1 & 0 & 0 \\\hline
+            1 & 1 & 1 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}\hspace*{1cm}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=and](-0.75,-0.125){and1}
+              \psline[arrows=o-](-2,0|and12)(and12)
+              \uput[180](-2,0|and12){A}
+              \psline[arrows=o-](-2,0|and11)(and11)
+              \uput[180](-2,0|and11){B}
+              \psline[arrows=o-](2,0|and1Q)(and1Q)
+              \uput[0](2,0|and1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{6cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(6,4)
+              \pnode(-1.2,0.75){A}
+              \pnode(-1,0.75){A1}
+              \pnode(1,0.75){QA}
+              \pnode(-1.2,-0.5){B}
+              \pnode(-1,-0.5){B1}
+              \pnode(1,-0.5){QB}
+              \pnode(2,0.75){Q}
+              \pnode(1,3.25){plus1}
+              \pnode(1,3.5){plus}
+              \uput[180](A){A}
+              \uput[180](B){B}
+              \psline[arrows=-o](QA)(Q)
+              \uput[0](Q){Q}
+              \psline[arrows=o-](A)(A1)
+              \diode[fillstyle=solid,fillcolor=black](QA)(A1){}
+              \psline[arrows=o-](B)(B1)
+              \diode[fillstyle=solid,fillcolor=black](QB)(B1){}
+              \psline[arrows=*-](QA)(QB)
+              \resistor(QA)(plus1){}
+              \psline[arrows=->,arrowsize=0.3](plus1)(plus){}
+              \uput[180](plus){\textbf{+}}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+
+      \bigskip\nopagebreak
+
+      Von links nach rechts: Wahrheitstabelle, Schaltzeichen,
+      Realisierung mit Dioden und Widerstand.
+
+      \bigskip
+
+    \item
+
+      Exklusiv-Oder-Verkn�pfung\\
+      "`entweder A oder B, aber nicht beide"'
+
+      \begin{minipage}{2.5cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|}\hline
+            A & B & Q \\\hline\hline
+            0 & 0 & 0 \\\hline
+            0 & 1 & 1 \\\hline
+            1 & 0 & 1 \\\hline
+            1 & 1 & 0 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}\hspace*{1cm}%
+      \begin{minipage}{4cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \logic[logicType=exor](-0.75,-0.125){exor1}
+              \psline[arrows=o-](-2,0|exor12)(exor12)
+              \uput[180](-2,0|exor12){A}
+              \psline[arrows=o-](-2,0|exor11)(exor11)
+              \uput[180](-2,0|exor11){B}
+              \psline[arrows=o-](2,0|exor1Q)(exor1Q)
+              \uput[0](2,0|exor1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{8cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(6,4)
+              \logic[logicType=and](-0.75,0.625){and1}
+              \logic[logicType=and](-0.75,-2.125){and2}
+              \logic[logicType=or](2.25,-0.625){or1}
+              \psline[arrows=o-](-3,0|and12)(and12)
+              \uput[180](-3,0|and12){A}
+              \psline[arrows=o-](-3,0|and21)(and21)
+              \uput[180](-3,0|and21){B}
+              \psline[arrows=*-](-2,0|and12)(-2,0|and22)(and22)
+              \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and22){0.1}
+              \psline[arrows=*-](-1.5,0|and21)(-1.5,0|and11)(and11)
+              \pscircle[fillstyle=solid,fillcolor=white,linewidth=0.5pt](-0.85,0|and11){0.1}
+              \psline(and1Q)(1.5,0|and1Q)(1.5,0|or12)(or12)
+              \psline(and2Q)(1.5,0|and2Q)(1.5,0|or11)(or11)
+              \psline[arrows=o-](5,0|or1Q)(or1Q)
+              \uput[0](5,0|or1Q){Q}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+
+      \bigskip\nopagebreak
+
+      Von links nach rechts: Wahrheitstabelle, Schaltzeichen,
+      Realisierung durch Zur�ckf�hren auf bereits bekannte Logik-Schaltungen.
+      Die Kringel an den Eing�ngen der Und-Schaltungen stehen f�r vorgeschaltete Inverter.
+
+  \end{itemize}
+
+  Bei den oben vorgestellten Schaltungen mit Bipolartransistoren und Dioden
+  handelt es sich um (veraltete) Widerstand-Transistor-Logik (RTL) und Dioden-Logik (DL).
+  In den Schaltungen aktueller Computer (Stand: 2012) kommen ausschlie�lich Transistoren zum Einsatz,
+  z.\,B.\ die o.\,a.\ CMOS-Schaltung f�r einen Inverter.
+
+  Entscheidend ist, da� es �berhaupt m�glich ist, "`ideale"' Logik-Schaltungen
+  mit Hilfe realer Bauelemente zu bauen. Bei den weiteren Betrachtungen k�nnen wir uns daher
+  von den konkreten Realisierungen l�sen und allein mit den abstrahierten Logik-Schaltungen
+  (Schaltzeichen in der mittleren Spalte) arbeiten.
+
+  \goodbreak
+  \subsection{Bin�rdarstellung von Zahlen}
+
+  Es ist m�glich, Zahlen allein mit den Ziffern $0$ und $1$ auszudr�cken.
+
+  Normalerweise rechnen wir im Dezimalsystem mit den Ziffern $0$ bis $9$.
+  Ab dem Zahlenwert $10$ wird eine Ziffer vorangestellt, die wir mit $10^1 = 10$ multiplizieren.
+  Ab dem Zahlenwert $100$ wird eine Ziffer vorangestellt, die wir mit $10^2 = 100$ multiplizieren usw.
+  $137$ ist nur eine Abk�rzung f�r $7 \cdot 10^0 + 3 \cdot 10^1 + 1 \cdot 10^2$.
+
+  Das Bin�rsystem funktioniert analog mit Zweier- anstelle von Zehnerpotenzen,
+  also mit $2^0 = 1$, $2^1 = 2$, $2^2 = 4$, $2^3 = 8$ usw.
+
+  Wir lesen eine Bin�rzahl $100101_2$, also eine Folge von Bin�rziffern, von rechts nach links:
+  \begin{eqnarray*}
+    100101_2
+     &=& 1 \cdot 2^0 + 0 \cdot 2^1 + 1 \cdot 2^2 + 0 \cdot 2^3 + 0 \cdot 2^4 + 1 \cdot 2^5 \\
+     &=& 1 + 4 + 32 \\
+     &=& 37
+  \end{eqnarray*}
+
+  Das Rechnen mit Bin�rzahlen funktioniert genauso wie das Rechnen mit Dezimalzahlen,
+  nur da� die "`Zehner"'-�berschreitung bereits bei $2$ stattfindet:
+  \begin{eqnarray*}
+    0 + 0 &=& \phantom00 \\
+    0 + 1 &=& \phantom01 \\
+    1 + 0 &=& \phantom01 \\
+    1 + 1 &=& 10
+  \end{eqnarray*}
+
+  Beispiel: schriftliche Addition der Zahlen $101100_2 = 44$ und $101110_2 = 46$
+  \begin{center}
+    \begin{tabular}{r}
+      $101100$\\
+      $+\quad 101110$\\[0.5ex]\hline
+      \\[-3.5ex]
+      $\scriptstyle 1\hspace{0.6em}1\hspace{0.1em}1\hspace{1.55em}$\\
+      $1011010$
+    \end{tabular}
+  \end{center}
+  Das Ergebnis lautet:
+  \begin{eqnarray*}
+    1011010_2
+     &=& 0 \cdot 2^0 + 1 \cdot 2^1 + 0 \cdot 2^2 + 1 \cdot 2^3 + 1\cdot 2^4 + 0 \cdot 2^5 + 1 \cdot 2^6 \\
+     &=& 2 + 8 + 16 + 64 \\
+     &=& 90
+  \end{eqnarray*}
+
+  \subsection{Vom Logik-Schaltkreis zum Addierer}
+
+  \begin{itemize}
+
+    \item
+      1-Bit-Addierer mit 2 Eing�ngen ("`Halbaddierer"')
+      \begin{itemize}
+        \item
+          Zwei 1-Bit-Zahlen ("`Bit"' = Bin�rziffer = $0$ oder $1$) werden an die Eing�nge X und Y gelegt.
+        \item
+          Das Rechenergebnis kann bis zu 2 Bits umfassen.
+        \item
+          Am Ausgang soll das Rechenergebnis anliegen:\\
+          S soll die Einerziffer ($2^0 = 1$) und \Cout\ die Zweierziffer ($2^1 = 2$) anzeigen.
+      \end{itemize}
+
+      \begin{minipage}{3.2cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c||c|c|}\hline
+            X & Y & \Cout & S \\\hline\hline
+            0 & 0 &   0   & 0 \\\hline
+            0 & 1 &   0   & 1 \\\hline
+            1 & 0 &   0   & 1 \\\hline
+            1 & 1 &   1   & 0 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{5cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \def\logicusertype{HA}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](-0.75,-0.125){ha}
+              \psline[arrows=o-](-2,0|ha2)(ha2)
+              \uput[180](-2,0|ha2){X}
+              \psline[arrows=o-](-2,0|ha1)(ha1)
+              \uput[180](-2,0|ha1){Y}
+              \psline[arrows=o-](2,0|haQ1)(haQ1)
+              \uput[0](2,0|haQ1){\Cout}
+              \psline[arrows=o-](2,0|haQ2)(haQ2)
+              \uput[0](2,0|haQ2){S}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{5cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-3)(3,3)
+              \pnode(-3.5,2.5){A}
+              \pnode(-3.5,-1.5){B}
+              \uput[180](A){X}
+              \uput[180](B){Y}
+              \logic[logicType=exor](-0.75,0.625){exor}
+              \logic[logicType=and](-0.75,-2.125){and}
+              \psline[arrows=o-](A)(exor2)
+              \psline[arrows=o-](B)(and1)
+              \psline[arrows=*-](-2.5,0|B)(-2.5,0|exor1)(exor1)
+              \psline[arrows=*-](-1.5,0|A)(-1.5,0|and2)(and2)
+              \psline[arrows=-o](exorQ)(2,0|exorQ)
+              \uput[0](2,0|exorQ){S}
+              \psline[arrows=-o](andQ)(2,0|andQ)
+              \uput[0](2,0|andQ){\Cout}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+
+      \bigskip
+
+    \goodbreak
+    \item
+      1-Bit-Addierer mit 3 Eing�ngen ("`Volladdierer"')
+      \begin{itemize}
+        \item
+          Drei 1-Bit-Zahlen werden an die Eing�nge X, Y und \Cin\ gelegt.\\
+          ("`C"' steht f�r "`carry"' -- �bertrag.)
+        \item
+          Das Rechenergebnis kann bis zu 2 Bits umfassen.
+        \item
+          Am Ausgang soll das Rechenergebnis anliegen:\\
+          S soll die Einerziffer ($2^0 = 1$) und \Cout\ die Zweierziffer ($2^1 = 2$) anzeigen.
+      \end{itemize}
+
+      \medskip
+
+      \begin{minipage}{4.0cm}
+        \begin{center}
+          \renewcommand{\arraystretch}{1.2}
+          \begin{tabular}{|c|c|c||c|c|}\hline
+           \Cin &  X & Y & \Cout & S \\\hline\hline
+             0  &  0 & 0 &   0   & 0 \\\hline
+             0  &  0 & 1 &   0   & 1 \\\hline
+             0  &  1 & 0 &   0   & 1 \\\hline
+             0  &  1 & 1 &   1   & 0 \\\hline
+             1  &  0 & 0 &   0   & 1 \\\hline
+             1  &  0 & 1 &   1   & 0 \\\hline
+             1  &  1 & 0 &   1   & 0 \\\hline
+             1  &  1 & 1 &   1   & 1 \\\hline
+          \end{tabular}
+        \end{center}
+      \end{minipage}%
+      \begin{minipage}{8cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-2)(3,2)
+              \def\logicusertype{FA}
+              \logic[logicType=user,logicNInput=3,logicNOutput=2](-0.75,-0.125){fa}
+              \psline[arrows=o-](-2,0|fa2)(fa2)
+              \uput[180](-2,0|fa3){X}
+              \psline[arrows=o-](-2,0|fa3)(fa3)
+              \uput[180](-2,0|fa2){Y}
+              \psline[arrows=o-](-2,0|fa1)(fa1)
+              \uput[180](-2,0|fa1){\Cin}
+              \psline[arrows=o-](2,0|faQ1)(faQ1)
+              \uput[0](2,0|faQ1){\Cout}
+              \psline[arrows=o-](2,0|faQ2)(faQ2)
+              \uput[0](2,0|faQ2){S}
+            \end{pspicture}
+          \end{pdfpic}
+
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-3)(3,3)
+              \def\logicusertype{HA}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](-0.75,-0.125){ha1}
+              \uput[180](ha1Q1){\scriptsize C\kern-3pt}
+              \psline[arrows=o-](-2,0|ha12)(ha12)
+              \uput[180](-2,0|ha12){X}
+              \psline[arrows=o-](-2,0|ha11)(ha11)
+              \uput[180](-2,0|ha11){Y}
+              \logic[logicType=user,logicNInput=2,logicNOutput=2](1.5,1.125){ha2}
+              \uput[180](ha2Q1){\scriptsize C\kern-3pt}
+              \psline[arrows=o-](-2,0|ha22)(ha22)
+              \uput[180](-2,0|ha22){\Cin}
+              \psline(ha1Q2)(ha21)
+              \psline[arrows=o-](6.5,0|ha2Q2)(ha2Q2)
+              \uput[0](6.5,0|ha2Q2){S}
+              \logic[logicType=or](3.75,-0.125){or}
+              \psline(ha1Q1)(or1)
+              \psline(ha2Q1)(or2)
+              \psline[arrows=o-](6.5,0|orQ)(orQ)
+              \uput[0](6.5,0|orQ){\Cout}
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}%
+
+      \bigskip
+
+    \goodbreak
+
+    \begin{center}
+      \includegraphics[height=7cm]{fa-1.jpg}\\
+      Eine andere Form der Wahrheitstabelle des Volladdierers
+
+      \medskip
+
+      \includegraphics[height=7cm]{fa-2.jpg}\\
+      Realisierung eines Volladdierers durch\\
+      Erkennen von Strukturen in der Wahrheitstabelle
+
+      \medskip
+
+      \includegraphics[height=7cm]{fa-3.jpg}\\
+      Rechts: Realisierung eines Volladdierers durch Nachvollziehen der Operation\\
+      (schriftliches Addieren) und Zur�ckf�hren auf Halbaddierer
+
+      \smallskip
+
+      \begin{minipage}{15cm}
+        Links: Realisierung eines Volladdierers "`mit Gewalt"' (\newterm{brute force\/}):
+        F�r jede Zeile der Wahrheitstabelle wird eine Und-Schaltung aufgebaut.
+        Einsen werden direkt an einen Eingang gelegt, Nullen invertiert.
+        F�r diejenigen Zeilen, in denen der Ausgang der Gesamtschaltung eine Eins liefern soll,
+        werden die Ausg�nge der Und-Schaltungen in einer gro�en Oder-Schaltung verkn�pft.
+        Diese Art der Realisierung ist theoretisch f�r jede gegebene Wahrheitstabelle m�glich.
+      \end{minipage}
+    \end{center}
+
+    \goodbreak
+
+    \item
+      4-Bit-Addierer mit �bertrag (9 Eing�nge, 5 Ausg�nge)
+      \begin{itemize}
+        \item
+          Zwei 4-Bit-Zahlen ("`Operanden"') werden an jeweils 4 Eing�nge gelegt.
+        \item
+          Ein weiteres Bit ("`�bertrag"') wird an den Eingang \Cin\ gelegt.\\
+          Diese 1-Bit-Zahl wird zus�tzlich zu den zwei 4-Bit-Zahlen addiert.
+        \item
+          Das Rechenergebnis kann bis zu 5 Bits umfassen.\\
+          Das h�chstwertige Bit ist der neue �bertrag (\Cout).
+      \end{itemize}
+
+      \medskip
+
+       \begin{minipage}{10cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-3,-4)(3,9)
+              \def\logicusertype{FA}
+              \logic[logicType=user,logicNInput=3,logicNOutput=2](-0.75,8){fa0}
+              \uput[180](fa0Q1){\scriptsize C\kern-3pt}
+              \psline[arrows=o-](-2,0|fa03)(fa03)
+              \psline[arrows=o-](-2,0|fa02)(fa02)
+              \psline[arrows=o-](-2,0|fa01)(fa01)
+              \uput[180](-2,0|fa03){\Cin}
+              \uput[180](-2,0|fa02){X0}
+              \uput[180](-2,0|fa01){Y0}
+              \psline[arrows=o-](2,0|fa0Q2)(fa0Q2)
+              \uput[0](2,0|fa0Q2){S0}
+              \logic[logicType=user,logicNInput=3,logicNOutput=2](-0.75,4){fa1}
+              \uput[180](fa1Q1){\scriptsize C\kern-3pt}
+              \psline[arrows=o-](-2,0|fa12)(fa12)
+              \psline[arrows=o-](-2,0|fa11)(fa11)
+              \uput[180](-2,0|fa12){X1}
+              \uput[180](-2,0|fa11){Y1}
+              \psline[arrows=o-](2,0|fa1Q2)(fa1Q2)
+              \uput[0](2,0|fa1Q2){S1}
+              \logic[logicType=user,logicNInput=3,logicNOutput=2](-0.75,0){fa2}
+              \uput[180](fa2Q1){\scriptsize C\kern-3pt}
+              \psline[arrows=o-](-2,0|fa22)(fa22)
+              \psline[arrows=o-](-2,0|fa21)(fa21)
+              \uput[180](-2,0|fa22){X2}
+              \uput[180](-2,0|fa21){Y2}
+              \psline[arrows=o-](2,0|fa2Q2)(fa2Q2)
+              \uput[0](2,0|fa2Q2){S2}
+              \logic[logicType=user,logicNInput=3,logicNOutput=2](-0.75,-4){fa3}
+              \uput[180](fa3Q1){\scriptsize C\kern-3pt}
+              \psline[arrows=o-](-2,0|fa32)(fa32)
+              \psline[arrows=o-](-2,0|fa31)(fa31)
+              \uput[180](-2,0|fa32){X3}
+              \uput[180](-2,0|fa31){Y3}
+              \psline[arrows=o-](2,0|fa3Q2)(fa3Q2)
+              \psline[arrows=o-](2,0|fa3Q1)(fa3Q1)
+              \uput[0](2,0|fa3Q2){S3}
+              \uput[0](2,0|fa3Q1){\Cout}
+              \psline(fa0Q1)(2,0|fa0Q1)(2,7.5)(-2,7)(-2,0|fa13)(fa13)
+              \psline(fa1Q1)(2,0|fa1Q1)(2,3.5)(-2,3)(-2,0|fa23)(fa23)
+              \psline(fa2Q1)(2,0|fa2Q1)(2,-0.5)(-2,-1)(-2,0|fa33)(fa33)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+
+      \bigskip
+
+      Problem: Das Signal f�r den �bertrag wandert von Volladdierer zu Volladdierer;\\
+      die Schaltzeiten addieren sich. $\longrightarrow$ langsam
+
+      L�sungswege: siehe \url{http://de.wikipedia.org/wiki/Addierer}
+
+  \end{itemize}
+
+  \goodbreak
+
+  \subsection{Negative Zahlen}
+
+  Was ist das "`nat�rliche"' Format zur Darstellung negativer Zahlen durch Nullen und Einsen?
+  \begin{itemize}
+    \item
+      Wenn wir zu der Bin�rzahl $1111_2$ den Wert $1$ addieren, erhalten wir $10000_2$.
+    \item
+      Wenn dies auf einem 4-Bit-Addierer geschieht,
+      ist die vordere Ziffer $1$ der neue �bertrag.
+    \item
+      Wenn dieser Wert dann in einer 4-Bit-Speicherzelle gespeichert wird,
+      f�llt der �bertrag unter den Tisch, und der Wert $0$ wird gespeichert.
+    \item
+      Fazit: Wenn wir in einem 4-Bit-System zu der Bin�rzahl $1111_2$ den Wert $1$ addieren,
+      kommt $0$ heraus.
+      Somit ist $1111_2$ auf einem 4-Bit-System die "`nat�rliche"' Darstellung der Zahl $-1$.
+  \end{itemize}
+
+  Allgemein gilt: Wenn eine vorzeichenbehaftete Zahl $x$ �berall dort Nullen hat,
+  wo eine andere vorzeichenbehaftete Zahl $y$ Einsen hat, setzt man $x = -(y + 1)$.
+
+  Diese Darstellung negativer Zahlen nennt man das "`Zweierkomplement"'.
+
+%  \underconstruction
+
+  \begin{center}
+    \includegraphics[height=7cm]{rechnen.jpg}\\
+    Auf einem 4-Bit-Addierer gilt: $-7 = 9$.
+
+    \medskip
+
+    \includegraphics[height=7cm]{komplement.jpg}\\
+    Schaltung, die das Zweierkomplement berechnet
+  \end{center}
+
+  Konsequenzen:
+  \begin{itemize}
+    \item
+      Jede Bin�rzahl l��t sich sowohl als positive als auch als negative Zahl interpretieren.
+    \item
+      Um eine $n$-Bit-Bin�rzahl $x$ in ihr Negatives $-x$ umzuwandeln,
+      invertiert man zun�chst alle Bin�rziffern.
+      Danach addiert man, ohne auf Vorzeichen zu achten, den Zahlenwert $1$.
+      Falls dabei ein �berlauf auftritt, verwirft man diesen,
+      beh�lt also nur die untersten $n$ Ziffern.
+    \item
+      Diejenige Zahl, die als h�chste Ziffer eine $1$ und ansonsten nur Nullen hat,
+      hat keine negative Entsprechung au�er sich selbst.
+      Per Konvention kann man diese Zahl als gr��tm�gliche positive Zahl,
+      als kleinstm�gliche negative Zahl, als alternative Darstellung der Zahl $0$
+      oder als einen ung�ltigen Wert interpretieren.
+
+      Auf PCs lautet die Konvention: kleinstm�gliche negative Zahl.\\
+      Somit zeigt dort das h�chstwertige Bit einer Bin�rzahl das Vorzeichen an.
+    \item
+      Mit der o.\,a.\ Konvention haben\\[\smallskipamount]
+      \begin{tabular}{lcrcl}
+        vorzeichenlose 8-Bit-Zahlen       & den Wertebereich &      $0$ & bis & $255$, \\
+        vorzeichenbehaftete 8-Bit-Zahlen  & den Wertebereich &   $-128$ & bis & $127$, \\
+        vorzeichenlose 16-Bit-Zahlen      & den Wertebereich &      $0$ & bis & $65535$, \\
+        vorzeichenbehaftete 16-Bit-Zahlen & den Wertebereich & $-32768$ & bis & $32767$, \\
+        \dots \\
+        vorzeichenlose $n$-Bit-Zahlen      & den Wertebereich &        $0$ & bis & $2^n - 1$, \\
+        vorzeichenbehaftete $n$-Bit-Zahlen & den Wertebereich & $-2^{n-1}$ & bis & $2^{n-1} - 1$.
+      \end{tabular}
+    \item
+      Wenn bei einer Addition vorzeichenbehafteter Zahlen der Wertebereich verlassen wird,\\
+      kann das Ergebnis negativ sein.
+
+      Beispiel: Addition der vorzeichenbehafteten 8-Bit-Zahlen $117$ und $94$ \\
+      $0111\,0101_2 + 0101\,1110_2 = 1101\,0011_2 = -45$\\
+      Probe: $45 + (117 + 94) = 256$. Die unteren 8 Bit von $256$ sind Null.
+
+      Beispiel f�r 16-Bit-Zahlen: siehe \url{http://www.xkcd.com/571/}
+  \end{itemize}
+
+  \goodbreak
+
+  \subsection{Vom Addierer zum Computer}
+  
+  Arithmetisch-logische Einheit % \underconstruction
+  \begin{itemize}
+    \item
+      ALU = Arithmetic Logic Unit
+    \item
+      Schaltkreis, der die Operanden wahlweise auf verschiedene Weisen verkn�pft\\
+      (Oder, Und, Exklusiv-Oder, Addition, \dots)
+    \item
+      Die Auswahl der Operation erfolgt �ber weitere Eing�nge,\\
+      die �ber zus�tzliche Und-Gatter eins der Verkn�pfungsergebnisse auf die Ausg�nge legen.
+  \end{itemize}
+
+  \begin{center}
+    \includegraphics[height=7cm]{multi-1.jpg}\\
+    Multiplikation von Bin�rzahlen
+
+    \medskip
+
+    \includegraphics[height=7cm]{multi-2.jpg}\\
+    Wahrheitstabelle f�r einen 2-Bit-Multiplizierer
+
+    \medskip
+
+    \includegraphics[height=7cm]{multi-3.jpg}\\
+    Realisierung eines 2-Bit-Multiplizierers
+
+    \medskip
+
+    \includegraphics[height=7cm]{alu.jpg}\\
+    Die hier dargestellte 4-Bit-ALU berechnet auf Wunsch (W-Eing�nge)\\
+    die Und-Verkn�pfung, die Oder-Verkn�pfung oder die Summe der Operanden A und B.
+  \end{center}
+
+  \goodbreak
+  Speicher
+  \begin{itemize}
+    \item
+      Ein Flipflop kann sich eine $1$ oder $0$ (= 1 Bit Information) merken.\\
+      ("`statischer Speicher"')
+
+      \begin{minipage}{10cm}
+        \begin{center}
+          \begin{pdfpic}
+            \psset{unit=0.6cm}
+            \psset{linewidth=0.03}
+            \begin{pspicture}(-4,-4)(4,4)
+              \logic[logicType=nand](-0.75,2){nand1}
+              \logic[logicType=nand](-0.75,-2){nand2}
+              \psline[arrows=o-](-3,0|nand12)(nand12)
+              \uput[180](-3,0|nand12){$\overline{\mbox{S}}$}
+              \psline[arrows=o-](-3,0|nand21)(nand21)
+              \uput[180](-3,0|nand21){$\overline{\mbox{R}}$}
+              \psline[arrows=o-](3,0|nand1Q)(nand1Q)
+              \uput[0](3,0|nand1Q){Q}
+              \psline[arrows=o-](3,0|nand2Q)(nand2Q)
+              \uput[0](3,0|nand2Q){$\overline{\mbox{Q}}$}
+              \psline[arrows=*-](2,0|nand1Q)(2,1.75)(-2,0.75)(-2,0|nand22)(nand22)
+              \psline[arrows=*-](2,0|nand2Q)(2,0.75)(-2,1.75)(-2,0|nand11)(nand11)
+            \end{pspicture}
+          \end{pdfpic}
+        \end{center}
+      \end{minipage}
+
+    \medskip
+
+    \item
+      Durch zus�tzliche Und-Gatter kann man aus vielen Flip-Flops eins ausw�hlen\\
+      $\longrightarrow$ Speicher-Adressierung
+    \item
+      Andere Speichermethode: Kondensator\\
+      $\longrightarrow$ mu� nachgeladen werden ("`dynamischer Speicher"')\\
+      einfacher und dichter zu packen als statischer Speicher,\\
+      aber erfordert "`Refresh"' (zus�tzliche Schaltung)
+  \end{itemize}
+
+  \begin{center}
+    \includegraphics[height=7cm]{speicher-1.jpg}\\
+    Links: Realisierung einer Speicherzelle durch ein Relais: \newterm{Selbsthalteschaltung}
+
+    Rechts unten: Realisierung einer Speicherzelle durch zwei Und--Schaltungen: \newterm{Flip-Flop}
+
+    Rechts oben: instabile (und daher sinnlose) Schaltung mit einer Und-Nicht-Schaltung
+
+    \bigskip
+
+    \includegraphics[height=7cm]{speicher-2.jpg}\\
+    \newterm{Statischer Speicher\/} (hier: Flip-Flop, oben) beh�lt seinen Zustand,
+    solange eine Stomversorgung besteht.
+
+    \newterm{Dynamischer Speicher\/} (Kondensator) "`vergi�t"' durch \name{Ohm}sche Verluste
+    seinen Zustand allm�hlich,\\
+    daher ist ein regelm��iges Auffrischen erforderlich: \newterm{Refresh}
+  \end{center}
+
+  Statischer Speicher ist schneller und leichter handhabbar als dynamischer Speicher.
+  Auf der anderen Seite l��t sich dynamischer Speicher kosteng�nstiger
+  und in weitaus h�heren Dichten herstellen als statischer Speicher.
+  Computer enthalten daher typischerweise geringe Mengen an statischem Speicher
+  (Prozessor-Register, Cache-Speicher)
+  und gro�e Mengen an dynamischem Speicher (Arbeitsspeicher).
+
+  \breath
+
+  Takt
+  \begin{itemize}
+    \item
+      Ein Taktgeber l��t ein Z�hlwerk laufen,\\
+      das in jedem Takt eine andere Operation f�r die ALU ausw�hlt\\
+      und die Ein- und Ausg�nge der ALU mit anderen Speicherzellen verbindet.
+    \item
+      Welche Operation und welche Speicherzellen jeweils verwendet werden,\\
+      wird anhand des Inhalts weiterer Speicherzellen entschieden.\\
+      $\longrightarrow$ programmierbare Recheneinheit -- "`Prozessor"'
+      (oder CPU f�r "`Central Processing Unit"')
+    \item
+      Arbeitsweise eines Computers:\\
+      Ein Prozessor bearbeitet taktgesteuert einen Speicher\\
+      gem�� Instruktionen, die er aus dem Speicher liest.
+  \end{itemize}
+
+  \goodbreak
+  Ein- und Ausgabe
+  \begin{itemize}
+    \item
+      Bestimmte Speicherzellen werden mit externen Ger�ten verkn�pft.
+    \item
+      Ger�t schreibt, Computer liest $\longrightarrow$ Eingabe (Input)
+    \item
+      Computer schreibt, Ger�t liest $\longrightarrow$ Ausgabe (Output)
+    \item[$\longrightarrow$]
+      "`I/O-Ports"'\label{I/O-Ports}
+  \end{itemize}
+
+  \begin{center}
+    \includegraphics[height=7cm]{computer-1.jpg}
+
+    \includegraphics[height=7cm]{computer-2.jpg}
+
+    \includegraphics[height=7cm]{computer-3.jpg}
+
+    \includegraphics[height=7cm]{computer-4.jpg}
+  \end{center}
+
+  \subsection{Computer-Sprachen}
+
+  \subsubsection{Maschinensprache}
+
+  Ein auf die oben beschriebene Weise gebauter Computer kann Befehle ausf�hren,
+  die in Gestalt von Nullen und Einsen vorliegen,
+  bei denen es sich typischerweise um den Inhalt von Speicherzellen handelt
+  (Flip-Flops, Kondensatoren oder Flash-Speicher -- fr�her auch Lochkarten o.\,�.).
+
+  \begin{center}
+    \includegraphics[width=12cm]{programm-screenshot.png}
+    \figurecaptionself{Programm in Maschinensprache und Assembler\label{Maschinenprogramm}}
+  \end{center}
+
+  Abbildung~\ref{Maschinenprogramm} zeigt ein einfaches Programm
+  f�r einen Intel-x86-kompatiblen 16-Bit-Mikroprozessor,
+  geschrieben und angezeigt mit Hilfe des DOS-Programms \file{debug} (FreeDOS).
+
+  S�mtliche Zahlen sind \newterm{hexadezimal}, also zur Basis 16 notiert.
+
+  Die linke Spalte zeigt die \newterm{Speicheradresse},
+  d.\,h.\ die Position der angezeigten Zahlen und Befehle innerhalb des Arbeitsspeichers des Computers.
+  Als Intel-spezifische Besonderheit unterteilt sich die Speicheradresse in einen Segment-
+  und einen Offset-Anteil, die durch einen Doppelpunkt getrennt notiert werden (Details siehe unten).
+
+  Neben der Speicheradresse wird der Inhalt der Speicherzelle als Zahl angezeigt.
+
+  Rechts daneben erscheint eine �bersetzung der Maschinensprache
+  in menschenlesbare Abk�rzungen, sog.\ \newterm{Mnemonics}.
+  Diese Darstellung des Programms hei�t \newterm{Assembler-Sprache\/} oder kurz \newterm{Assembler}.
+
+  Ein Programm, das Assembler-Sprache in Maschinensprache �bersetzt,
+  hei�t ebenfalls \newterm{Assembler}.
+
+  \subsubsection{Assembler}
+
+  Die einfachsten Assembler-Befehle sind Kopieraktionen zwischen Speicherzellen.
+  In Intel-Syntax steht der Befehl \lstinline[language={[x86masm]Assembler}]{mov A, B} f�r:
+  "`Kopiere den Inhalt der Speicherzelle B in Speicherzelle A."'
+  Bei den Speicherzellen kann es sich um adressierte Speicherzellen im Arbeitsspeicher handeln
+  -- in Intel-Syntax eine Offset-Adresse in eckigen Klammern --
+  oder um Prozessor-Register -- bei 16-Bit-Intel-Prozessoren:
+  \lstinline[language={[x86masm]Assembler}]{ax},
+  \lstinline[language={[x86masm]Assembler}]{bx},
+  \lstinline[language={[x86masm]Assembler}]{cx},
+  \lstinline[language={[x86masm]Assembler}]{dx},
+  \lstinline[language={[x86masm]Assembler}]{si},
+  \lstinline[language={[x86masm]Assembler}]{di},
+  \lstinline[language={[x86masm]Assembler}]{bp},
+  \lstinline[language={[x86masm]Assembler}]{sp},
+  \lstinline[language={[x86masm]Assembler}]{cs},
+  \lstinline[language={[x86masm]Assembler}]{ds},
+  \lstinline[language={[x86masm]Assembler}]{es} und
+  \lstinline[language={[x86masm]Assembler}]{ss}.
+
+%  \underconstruction
+  \begin{center}
+    \includegraphics[height=7cm]{b800.jpg}
+  \end{center}
+  Die 16-Bit-Prozessoren der Intel-x86-Familie haben einen 20 Bit breiten \newterm{Adre�bus},
+  d.\,h.\ es stehen 20 Leitungen zur Verf�gung, um eine Speicherzelle auszuw�hlen.
+  Insgesamt k�nnen also $2^{20} = 1\,048\,576$ verschiedene Speicherzellen
+  (ein bin�res Megabyte -- 1\,MiB) ausgew�hlt werden.
+
+  Diese 20 Bit werden nun wie folgt in zweimal 16 Bit aufgeteilt:
+  Die Zahl vor dem Doppelpunkt hei�t \newterm{Segment-Adresse}, die danach \newterm{Offset-Adresse}.
+  Die physikalische Adresse der gew�nschten Speicherzelle lautet:
+  $16 \cdot \mbox{Segment} + \mbox{Offset}$.
+  Das Segment wird also um eine Hex-Ziffer nach links geschoben und anschlie�end das Offset addiert,
+  um die physikalische Nummer der gew�nschten Speicherzelle zu erhalten.
+  Aus \lstinline{31D6:0100} wird so beispielsweise die physikalische Adresse \lstinline{31E60}.
+
+  Der Sinn dieser Aufteilung bestand darin, da� man erwartete,
+  da� 16 Adre�leitungen, also maximal 64\,kiB Speicher (64 bin�re Kilobyte),
+  f�r Computerprogramme ausreichend seien.
+  In diesem Fall kann man die Segment-Adresse auf einen festen Wert setzen
+  (in Abb.~\ref{Maschinenprogramm}: \lstinline{31D6})
+  und das Programm in 16-Byte-Schritten an beliebige Stellen im Speicher legen,
+  ohne die im Programm verwendeten Offset-Adressen anpassen zu m�ssen.
+
+  In der Praxis erwiesen sich 64\,kiB sehr bald als viel zu wenig,
+  so da� Intel von dem Schema "`$16 \cdot \mbox{Segment} + \mbox{Offset}$"' wieder abr�ckte.
+  Das Konzept "`Segment:Offset"' wurde zwar beibehalten, erhielt jedoch eine andere Bedeutung.
+  (Dazu sp�ter mehr.)
+
+  \breath
+
+  Eine weitere Besonderheit der 16-Bit-Prozessoren der Intel-x86-Familie
+  erm�glicht uns, die Auswirkungen eines Programms direkt zu beobachten:
+  Ab Speicherzelle \lstinline{B8000} -- bzw.\ \lstinline{B800:0000} in Segment-Offset-Notation --
+  befindet sich der \newterm{Bildschirmspeicher}.
+  Werte, die in diesen Speicherzellen gespeichert sind,
+  werden von der \newterm{VGA-Grafikkarte\/} im \newterm{Textmodus\/}
+  direkt in Zeichen umgewandelt, die auf einem angeschlossenen Bildschirm angezeigt werden.
+
+  Alle geraden Speicheradressen (\lstinline{0}, \lstinline{2}, \lstinline{4}, \lstinline{6},
+  \lstinline{8}, \lstinline{A}, \lstinline{C}, \lstinline{E}, \lstinline{10}, \lstinline{12}, \dots)
+  enthalten die Zeichen (Buchstaben, Zahlen, Satzzeichen) in \newterm{ASCII\/}-Kodierung
+  (American Standard Code for Information Interchange);
+  Alle ungeraden Speicheradressen (\lstinline{1}, \lstinline{3}, \lstinline{5}, \lstinline{7},
+  \lstinline{9}, \lstinline{B}, \lstinline{D}, \lstinline{F}, \lstinline{11}, \lstinline{13}, \dots)
+  enthalten ein Farbschema (\newterm{Attribut\/}):
+
+  \begin{quote}
+    \lstinline{04}: Vordergrundfarbe Rot\\
+    \lstinline{02}: Vordergrundfarbe Gr�n\\
+    \lstinline{01}: Vordergrundfarbe Blau\\[\smallskipamount]
+    \lstinline{40}: Hintergrundfarbe Rot\\
+    \lstinline{20}: Hintergrundfarbe Gr�n\\
+    \lstinline{10}: Hintergrundfarbe Blau\\[\smallskipamount]
+    \lstinline{08}: Vordergrundfarbe aufhellen\\
+    \lstinline{80}: Blinken
+  \end{quote}
+
+  Durch Addition (z.\,B.\ $\lstinline{04} + \lstinline{02} + \lstinline{08} = \lstinline{0E}$
+  mit der Bedeutung $\mbox{Rot} + \mbox{Gr�n} + \mbox{aufhellen} = \mbox{Gelb}$)
+  ergeben sich insgesamt 16 Vordergrundfarben, 8 Hintergrundfarben
+  und die M�glichkeit, die Zeichen blinken zu lassen.
+
+  \breath
+
+  Um nun von einem Maschinenprogramm aus Zeichen auf dem Bildschirm darzustellen,
+  m�ssen wir die richtigen Werte an den richtigen Adressen in den Speicher schreiben.
+  Hierzu betrachten wir noch einmal das Programm aus Abb.~\ref{Maschinenprogramm}:
+
+  \begin{lstlisting}[language={[x86masm]Assembler}]
+    mov ax, b800
+    mov ds, ax
+    mov ax, 0c41
+    mov [0400], ax
+    mov ax, 0d62
+    mov [0402], ax
+    mov ax, 0e22
+    mov [0404], ax
+    ret
+  \end{lstlisting}
+
+  Der \lstinline[language={[x86masm]Assembler}]{ret}-Befehl am Ende steht
+  f�r ein kontrolliertes Beenden des Programms (engl.: \emph{return\/} -- dazu sp�ter mehr).
+
+  Um auf den Bildschirmspeicher an der physikalischen Adresse \lstinline{b8000} zugreifen zu k�nnen,
+  m�ssen wir den Segment-Anteil \lstinline{b800} dieser Adresse
+  in das \newterm{Segment-Register\/} \lstinline[language={[x86masm]Assembler}]{ds} laden.
+  Da der Prozessor dies nicht direkt erlaubt,
+  nehmen wir einen Umweg �ber das \newterm{Allzweckregister\/} \lstinline[language={[x86masm]Assembler}]{ax}.
+
+  Anschlie�end schreiben wir an den Offset-Adressen
+  \lstinline{400}, \lstinline{402} und \lstinline{404}
+  die Werte \lstinline{0c40}, \lstinline{0d62} bzw.\ \lstinline{0e22} in den Arbeitsspeicher.
+  Auch dies ist nicht direkt m�glich, sondern erfolgt 
+  mit Umweg �ber das \lstinline[language={[x86masm]Assembler}]{ax}-Register.
+
+  Laut ASCII-Tabelle steht die Hexadezimalzahl \lstinline{41} f�r ein gro�es A.
+  Laut der o.\,a.\ Attribut-Tabelle steht \lstinline{0c} f�r die Farbe
+  $\lstinline{0c} = \lstinline{08} + \lstinline{04} = \mbox{aufhellen} + \mbox{Rot} = \mbox{Hellrot}$.
+  Der zusammengesetzte Wert \lstinline{0c41} steht f�r ein rotes gro�es A,
+  das an die Speicheradresse \lstinline{b8400} geschrieben wird.
+  Dies hat zur Folge, da� ein rotes gro�es A etwa mittig im oberen Drittel des Bildschirms sichtbar wird
+  (siehe Abb.~\ref{Maschinenprogramm}).
+
+  Analog sieht man, da� \lstinline{0d62} f�r ein hellmagentafarbenes kleines b steht
+  und \lstinline{0e22} f�r ein gelbes Anf�hrungszeichen.
+  Diese beiden Zeichen werden in benachbarte Speicherzellen neben das gro�e A geschrieben
+  und werden entsprechend auf dem Bildschirm sichtbar.
+
+  \subsubsection{Hochsprachen}
+
+  Die Maschinensprache und die Assembler-Sprache haben den Nachteil,
+  da� sie f�r jeden Prozessor v�llig unterschiedlich aussehen.
+  Jeder Prozessor hat seine eigenen Register und seine eigenen Befehle,
+  die sich nicht w�rtlich in Befehle eines anderen Prozessors �bersetzen lassen.
+
+  Beispiel: Intel-x86-16-Bit-Assembler
+
+  \begin{itemize}
+    \item
+      Lade- und Speicher-Befehle\hfill
+        \lstinline{mov}, \dots\\
+      arithmetische Befehle\hfill
+        \lstinline{add}, \lstinline{sub}, \lstinline{inc}, \lstinline{dec},
+        \lstinline{xor}, \lstinline{cmp}, \dots\\
+      unbedingte und bedingte Sprungbefehle\hfill
+        \lstinline{jmp}, \lstinline{jz}, \lstinline{jae}, \dots
+    \item
+      Register\hfill
+        \lstinline{ax}, \lstinline{bx}, \dots
+  \end{itemize}
+
+  Beispiel: Atmel-AVR-8-Bit-Assembler
+
+  \begin{itemize}
+    \item
+      Lade- und Speicher-Befehle\hfill
+        \lstinline{ldi}, \lstinline{lds}, \lstinline{sti}, \dots\\
+      arithmetische Befehle\hfill
+        \lstinline{add}, \lstinline{sub}, \lstinline{subi},
+        \lstinline{eor}, \lstinline{cp}, \dots\\
+      unbedingte und bedingte Sprungbefehle\hfill
+        \lstinline{rjmp}, \lstinline{brsh}, \lstinline{brlo}, \dots
+    \item
+      Register\hfill
+        \lstinline{r0}, \lstinline{r1}, \dots
+  \end{itemize}
+
+  Um Programme nicht f�r jeden Prozessor neu schreiben zu m�ssen, wurden Hochsprachen entwickelt.
+  Hierf�r gibt es mehrere Konzepte:
+
+  Compiler-Sprachen
+  \vspace{-\medskipamount}
+  \begin{itemize}
+    \item
+      Ein \newterm{Compiler\/} �bersetzt einen Hochsprachen-\newterm{Quelltext\/}
+      in die Assembler-Sprache.
+    \item
+      Ein \newterm{Assembler\/} �bersetzt den Assembler-Quelltext in die Maschinensprache.
+    \item
+      Compiler und Assembler sind Programme,\\
+      geschrieben in Maschinensprache, Assembler oder einer Hochsprache.
+    \item
+      Beispiele: Fortran, Algol, Pascal, Ada, C, C++, \dots
+  \end{itemize}
+
+  Interpreter- oder Skript-Sprachen
+  \vspace{-\medskipamount}
+  \begin{itemize}
+    \item
+      Ein \newterm{Interpreter\/} liest einen Hochsprachen-\newterm{Quelltext\/} und f�hrt ihn sofort aus.
+    \item
+      Der Interpreter ist ein Programm,\\
+      geschrieben in Maschinensprache, Assembler oder einer Hochsprache.
+    \item
+      Beispiele: Unix-Shell, BASIC, Perl, Python, \dots
+  \end{itemize}
+
+  Kombinationen
+  \vspace{-\medskipamount}
+  \begin{itemize}
+    \item
+      Ein \newterm{Compiler\/} erzeugt einen \newterm{Zwischencode\/} f�r eine \newterm{virtuelle Maschine}.
+    \item
+      Die virtuelle Maschine ist ein \newterm{Interpreter}.\\
+      Sie liest den Zwischencode und f�hrt ihn sofort aus.
+    \item
+      Beispiele: UCSD-Pascal, Java, \dots
+  \end{itemize}
+
+  \breath
+
+  Ein wichtiges Beispiel f�r eine Compiler-Sprache ist die Hochsprache \newterm{C}.
+
+  Mit dem Programm \lstinline[style=cmd]{gcc} kann man wie folgt C nach Assembler �bersetzen:
+  \begin{lstlisting}[style=terminal]
+    $ �gcc -S pruzzel.c�
+  \end{lstlisting}
+  Dieser Aufruf erzeugt aus dem C-Quelltext \file{pruzzel.c}
+  einen Assembler-Quelltext \file{pruzzel.s} f�r den Standard-Prozessor,
+  z.\,B.\ f�r die 32-Bit-Intel-Architektur (IA-32).
+
+  \goodbreak
+  Mit \lstinline[style=cmd]{avr-gcc} anstelle von \lstinline[style=cmd]{gcc}
+  erzeugt man auf einem beliebigen Prozessor Assembler f�r 8-Bit-Atmel-AVR-Prozessoren:
+  \begin{lstlisting}[style=terminal]
+    $ �avr-gcc -S pruzzel.c�
+  \end{lstlisting}
+  (Die mit diesem Aufruf erzeugte Datei \file{pruzzel.s}
+  hei�t in den Beispielen \file{pruzzel-avr.s}.)
+
+  \breath
+
+  Wenn man in einer Hochsprache programmiert,
+  ist es normalerweise nicht erforderlich, sich mit dem erzeugten Assembler-Quelltext zu befassen.
+
+  F�r F�lle, in denen dies doch notwendig wird,
+  bieten viele Fehlersuchprogramme -- \newterm{Debugger\/} -- die M�glichkeit an,
+  die Ausf�hrung des Programms parallel im C- und im Assembler-Quelltext zu verfolgen.
+  Der GNU-Debugger \lstinline[style=cmd]{gdb} f�hrt z.\,B.\
+  mit dem Befehl \lstinline[style=cmd]{next} eine Zeile C-Quelltext aus
+  und mit dem Befehl \lstinline[style=cmd]{nexti} (\emph{next instruction\/})
+  eine Zeile Assembler-Quelltext:
+  \begin{lstlisting}[style=terminal]
+    $ �gcc -g pruzzel.c -o pruzzel�
+    $ �gdb -tui ./pruzzel�
+    (gdb) �break main�
+    (gdb) �run�
+    (gdb) �layout split�
+    (gdb) �nexti�
+  \end{lstlisting}
+
+  \subsection{Struktur von Assembler-Programmen}
+
+  \begin{minipage}[t]{12cm}
+    Der grunds�tzliche Aufbau von Assembler-Befehlen
+    besteht normalerweise aus dem Schl�sselwort (Mnemonic) f�r den eigentlichen Befehl,
+    ggf.\ gefolgt von einem oder mehreren \newterm{Operanden}.
+    (Beispiel: IA-32-Assembler)
+  \end{minipage}\hfill
+  \begin{minipage}[t]{4cm}
+    \begin{lstlisting}[gobble=6]
+      addl    $1, %eax
+      movb    %al, b
+      cmpb    (%ebx), %dl
+      jbe     .L2
+    \end{lstlisting}
+    \begin{picture}(0,0)(-0.3,-0.15)
+      \color{red}
+      \put(0.4,2.8){\vector(0,-1){0.7}}
+      \put(0.4,2.9){\makebox(0,0)[b]{Befehl}}
+      \put(1.4,2.8){\vector(-1,-2){0.35}}
+      \put(1.4,2.8){\vector(1,-2){0.35}}
+      \put(2.0,2.9){\makebox(0,0)[b]{Operanden}}
+    \end{picture}
+  \end{minipage}
+
+  \goodbreak
+
+  \begin{minipage}[t]{8cm}
+    \setlength{\parskip}{\smallskipamount}
+    Bei den Operanden kann es sich um Zahlen handeln,
+    die direkt im Befehl stehen (\newterm{unmittelbar\/}) oder
+    sich in einem Prozessorregister oder einer Speicherzelle befinden.
+    Die Nummer der Speicherzelle kann \newterm{direkt\/} im Befehl stehen,
+    oder sie wird \newterm{indirekt\/} einem Prozessorregister entnommen.
+    Au�erdem kann die Nummer einer Speicherzelle \newterm{absolut\/} angegeben werden
+    oder \newterm{relativ\/} zu derjenigen Speicherzelle, die den Befehl enth�lt.
+
+    Diese verschiedenen Arten, Operanden auszuw�hlen, hei�en \newterm{Adressierungsarten}.
+  \end{minipage}\hfill
+  \begin{minipage}[t]{8cm}
+    \vspace*{0.8cm}
+    \begin{lstlisting}[gobble=6]
+      addl    $1, %eax
+      movb    %al, b
+      cmpb    (%ebx), %dl
+      jbe     .L2
+    \end{lstlisting}
+    \begin{picture}(0,0)(-0.3,-0.15)
+      \color{red}
+      \put(1.4,2.8){\vector(-1,-2){0.35}}
+      \put(2.0,2.9){\makebox(0,0)[b]{unmittelbar}}
+      \put(3.1,1.8){\vector(-1,0){0.7}}
+      \put(3.2,1.8){\makebox(0,0)[l]{Register}}
+      \put(4.8,1.4){\vector(-1,0){2.7}}
+      \put(4.9,1.4){\makebox(0,0)[l]{Speicher (absolut)}}
+      \put(2.3,-0.0){\vector(-1,1){0.7}}
+      \put(3.5,-0.1){\makebox(0,0)[t]{indirekt mit Register}}
+      \put(0.8,-0.6){\vector(0,1){0.9}}
+      \put(0.0,-0.7){\makebox(0,0)[tl]{Speicher (relativ)}}
+    \end{picture}
+  \end{minipage}
+
+  \breath
+
+  Ein besonders illustratives Beispiel f�r eine Assembler-Sprache ist der \newterm{Redcode}.
+  Diese Sprache wurde f�r das Spiel \newterm{Core Wars}
+  (oder \newterm{Core War\/} -- Krieg der Kerne) entwickelt.
+  Sie l�uft auf einer virtuellen Maschine namens \newterm{Memory Array Redcode Simulator (MARS)}.
+
+  In der �lteren standardisierten Version (ICWS '88) lautet die vollst�ndige Beschreibung von Redcode:
+
+  \begin{center}
+    \begin{minipage}[t]{7.2cm}
+      Instruktionen:\\[\smallskipamount]
+      \lstinline{dat B} -- Daten\\
+      \lstinline{mov A, B} -- kopiere A nach B\\
+      \lstinline{add A, B} -- addiere A zu B\\
+      \lstinline{sub A, B} -- subtrahiere A von B\\
+      \lstinline{jmp A} -- unbedingter Sprung nach A\\
+      \lstinline{jmz A, B} -- Sprung nach A, wenn B $=$ 0\\
+      \lstinline{jmn A, B} -- Sprung nach A, wenn B $\ne$ 0\\
+      \lstinline{djn A, B} -- "`decrement and jump if not zero"'\\
+      \lstinline{cmp A, B} -- "`compare"': �berspringe, falls gleich\\
+      \lstinline{spl A} -- "`split"': Programm verzweigen
+    \end{minipage}%
+    \begin{minipage}[t]{4.7cm}
+      Adressierungsarten:\\[\smallskipamount]
+      grunds�tzlich: Speicher relativ\\[\smallskipamount]
+      \lstinline{#} -- unmittelbar\\
+      \lstinline{$} (oder ohne Symbol) -- direkt\\
+      \lstinline{@} -- indirekt (\lstinline{B}-Feld)\\
+      \lstinline{<} -- indirekt mit Pr�-Dekrement
+    \end{minipage}
+  \end{center}
+
+  \begin{itemize}
+    \item
+      Der Speicher ist ringf�rmig.
+    \item
+      Anstelle von Prozessorregistern k�nnen
+      grunds�tzlich alle Speicherzellen f�r jede Operation verwendet werden.
+    \item
+      Adressierung von Speicherzellen erfolgt grunds�tzlich relativ.
+    \item
+      Ein Programm, das einen \lstinline{dat}-Befehl ausf�hrt, wird beendet.
+    \item
+      Der \lstinline{spl}-Befehl bewirkt, da� ein Programm
+      \emph{sowohl\/} an der als Operand angegebenen Speicherzelle
+      \emph{als auch\/} in der n�chsten Speicherzelle ausgef�hrt wird.
+      (Ausf�hrung abwechselnd)
+    \item
+      In einem "`Kampf"' treten zwei (oder mehr) Programme in demselben Speicher gegeneinander an.
+      Ein Programm, das durch \lstinline{dat}-Befehle vollst�ndig beendet wurde, hat verloren.
+  \end{itemize}
+
+  \breath
+
+  Beispiel: Programm \newterm{Nothing}
+  \begin{lstlisting}
+    jmp 0
+  \end{lstlisting}
+  Dieses Programm f�hrt eine Endlosschleife aus.
+  Da es nur eine einzige Speicherzelle belegt und noch dazu den numerischen Wert Null hat,
+  wird es von gegnerischen Programmen leicht �bersehen, was oft zu einem Unentschieden f�hrt.
+  Gegen Gegner, die dann stattdessen im ringf�rmigen Speicher sich selbst entdecken und angreifen,
+  kann Nothing sogar gewinnen.
+
+  \breath
+  
+  Beispiel: Programm \newterm{Knirps}
+  \begin{lstlisting}
+    mov 0, 1
+  \end{lstlisting}
+  Dieses ebenfalls nur eine einzige Speicherzelle gro�e Programm
+  kopiert sich selbst vollst�ndig auf die n�chste Speicherzelle
+  und f�hrt diese anschlie�end aus.
+  Es bewegt sich somit mit der h�chsten l�ckenlos erreichbaren Geschwindigkeit ("`Lichtgeschwindigkeit"')
+  durch den Speicherring.
+  Wenn es dabei auf einen Gegner trifft, �berschreibt es diesen,
+  so da� dieser danach ebenfalls \lstinline{mov 0, 1} ausf�hrt.
+  Da danach keiner der Gegner mehr in der Lage ist,
+  den anderen durch einen \lstinline{dat}-Befehl zu beenden,
+  f�hrt dies zu einem Unentschieden.
+
+  \breath
+
+  Beispiel: Programm \newterm{Mice}
+
+  \vspace{-\bigskipamount}
+  \begin{minipage}[t]{1.2cm}
+    \begin{lstlisting}[gobble=6]
+      ptr
+      start
+      loop
+
+
+
+
+      dest
+
+    \end{lstlisting}
+  \end{minipage}%
+  \begin{minipage}[t]{5cm}
+    \begin{lstlisting}[gobble=6]
+      dat              #0
+      mov     #12,     ptr
+      mov     @ptr,    <dest
+      djn     loop,    ptr
+      spl     @dest
+      add     #653,    dest
+      jmz     start,   ptr
+      dat              #833
+      end start
+    \end{lstlisting}
+  \end{minipage}
+
+  Dieses Programm erzeugt in einer Schleife (\lstinline{djn loop, ptr})
+  eine Kopie von sich selbst und aktiviert diese anschlie�end mit einem \lstinline{spl}-Befehl.
+  Danach erzeugen beide "`M�use"' weitere Kopien von sich selbst.
+
+  Wenn auf diese Weise ein Gegner �berschrieben wird,
+  findet dieser am Ende des Programms den Befehl \lstinline{jmz start, ptr} vor,
+  gefolgt von einem \lstinline{dat}-Befehl.
+  Der Sprung findet also nur dann statt, wenn die -- relativ adressierte -- Variable \lstinline{ptr}
+  den Wert Null hat. Dies ist normalerweise nur dann kurz der Fall,
+  wenn der Kopiervorgang abgeschlossen ist und der \lstinline{spl}-Befehl ausgef�hrt wird;
+  direkt danach wird \lstinline{ptr} durch \lstinline{mov #12, ptr} auf einen Wert ungleich Null gesetzt.
+  �berschriebene Gegner werden daher normalerweise durch den Befehl \lstinline{dest dat #833} beendet.
+
+  Durch seine Kopier-Taktik ist Mice jedem Gegner klar �berlegen,
+  der versucht, es mit \lstinline{dat}-Befehlen zu �berschreiben.
+  Durch seine Langsamkeit hingegen erreicht Mice gegen Knirps praktisch immer nur ein Unentschieden.
+
+  Als wirksamste Taktik gegen Mice hat sich die \newterm{Zeitfalle\/} erwiesen:
+  Ein in Mice hineingeschriebener Befehl \lstinline{spl 0} bewirkt,
+  da� sich die betroffene Kopie von Mice bis zur Maximalgrenze aufspaltet
+  und damit die Rechenzeit seiner anderen Kopien herabsetzt.
+  Ein auf diese Weise "`gel�hmtes"' Mice kann anschlie�end
+  problemlos mit \lstinline{dat}-Befehlen �berschrieben werden.
+
+  \section{Architekturmerkmale von Prozessoren\label{Speicher- und Registerarchitekturen}}
+
+  \subsection{Speicherarchitekturen}
+
+  Bezeichnungen
+  \begin{itemize}
+    \item
+      \newterm{Byte} = Zusammenfassung mehrerer Bits\\
+      zu einer Bin�rzahl, die ein Zeichen ("`Character"') darstellen kann,\\
+      h�ufig 8 Bits ("`Oktett"')
+    \item
+      \newterm{Speicherwort} = Zusammenfassung mehrerer Bits\\
+      zu der kleinsten adressierbaren Einheit, h�ufig 1 Byte
+    \item
+      \newterm{RAM} = Random Access Memory = Hauptspeicher
+    \item
+      \newterm{ROM} = Read Only Memory = nur lesbarer Speicher
+  \end{itemize}
+
+  \goodbreak
+
+  Verschiedene Arten von Speicher
+  \begin{itemize}
+    \item
+      Prozessor-Register\\
+      k�nnen direkt mit ALU verbunden werden,\\
+      besonders schnell (Flipflops),\\
+      �berschaubare Anzahl von Registern
+    \item
+      Hauptspeicher\\
+      kann direkt adressisert und mit Prozessor-Registern abgeglichen werden,\\
+      heute i.\,d.\,R.\ dynamischer Speicher (Kondensatoren)
+    \item
+      I/O-Ports\\
+      sind spezielle Speicheradressen, �ber die mit externen Ger�ten kommuniziert wird
+    \item
+      Massenspeicher\\
+      liegt auf externem Ger�t, wird �ber I/O-Ports angesprochen,\\
+      Festplatte, Flash-Speicher, \dots
+  \end{itemize}
+
+  \goodbreak
+
+  Speicherarchitekturen
+  \begin{itemize}
+    \item
+      \newterm{Von-Neumann-Architektur}\\
+      Es gibt nur 1 Hauptspeicher, in dem sich sowohl die Befehle\\
+      als auch die Daten befinden.
+
+      Vorteil: Flexibilit�t in der Speichernutzung
+
+      Nachteil: Befehle k�nnen �berschrieben werden.
+      $\longrightarrow$ Abst�rze und Malware m�glich
+
+    \item
+      \newterm{Harvard-Architektur}\\
+      Es gibt 2 Hauptspeicher. In einem befinden sich die Befehle,\\
+      im anderen die Daten.
+
+      Vorteil: Befehle k�nnen nicht �berschrieben werden
+      $\longrightarrow$ sicherer als Von-Neumann-Architektur
+
+      Nachteile: Leitungen zum Speicher (Bus) m�ssen doppelt vorhanden sein,\\
+      freier Befehlsspeicher kann nicht f�r Daten genutzt werden.
+
+    \item
+      Weitere Kombinationen:\\
+      Hauptspeicher und I/O-Ports gemeinsam oder getrennt,\\
+      Hauptspeicher und Prozessorregister gemeinsam oder getrennt
+  \end{itemize}
+
+  Beispiele:
+  \begin{itemize}
+    \item
+      Intel IA-32 (i386, Nachfolger und Kompatible):\\
+      Von-Neumann-Architektur (plus Speicherschutzmechanismen),\\
+      Prozessorregister und I/O-Ports vom Hauptspeicher getrennt
+    \item
+      Atmel AVR (z.\,B.\ ATmega32):\\
+      Harvard-Architektur (Befehlsspeicher als Flash-Speicher grunds�tzlich auch schreibbar),\\
+      Prozessorregister und I/O-Ports in gemeinsamem Adressbereich mit Hauptspeicher
+    \item
+      6502 (heute: Renesas-Mikro-Controller):\\
+      Von-Neumann-Architektur,\\
+      I/O-Ports in gemeinsamem Adressbereich mit Hauptspeicher,\\
+      Prozessorregister und Hauptspeicher getrennt
+  \end{itemize}
+
+  \subsection{Registerarchitekturen}
+  
+  \begin{itemize}
+    \item
+      Mehrere Register, einzeln ansprechbar
+    \item
+      Akkumulator: Nur 1 Register kann rechnen.
+    \item
+      Stack-Architektur: Stapel, "`umgekehrte Polnische Notation"'
+  \end{itemize}
+  Je nachdem, auf welche dieser Arten die Register eines Prozessors organisiert sind,\\
+  mu� er auf v�llig unterschiedliche Weise programmiert werden.
+%  -- siehe Abschnitt \ref{Registerprogrammierung}.
+
+  Beispiele:
+  \begin{itemize}
+    \item
+      Intel IA-32 (i386, Nachfolger und Kompatible):\\
+      Mehrere Register, f�r verschiedene Zwecke spezialisiert (un�bersichtlich),\\
+      Flie�kommaregister: Stack-Architektur
+    \item
+      Atmel AVR (z.\,B.\ ATmega32):\\
+      32 Register
+    \item
+      6502 (heute: Renesas-Mikro-Controller):\\
+      3 Register: A, X, Y. Nur A kann rechnen $\longrightarrow$ Akkumulator
+    \item
+      Java Virtual Machine (JVM):\\
+      Stack-Architektur
+  \end{itemize}
+
+  \subsection{Befehlss�tze}
+
+  Um die manuelle Programmierung in Assembler m�glichst komfortabel zu gestalten,
+  wurden in der Vergangenheit viele Prozessoren mit umfangreichen Befehlss�tzen ausgestattet.
+  Diese Architektur hei�t \newterm{Complex Instruction Set Computer (CISC)}.
+
+  Realisiert wird CISC durch einen "`Prozessor im Prozessor"',
+  der kleine Programme, sog.\ \newterm{Mikroprogramme\/} ausf�hrte.
+
+  Erkauft wird der Komfort durch eine l�ngere Abarbeitungszeit der einzelnen Befehle.
+
+  Beispiel: IA-32
+
+  \bigskip
+
+  Das entgegengesetzte Konzept hei�t \newterm{Reduced Instruction Set Computer (RISC)}.
+  In einem RISC-Prozessor ist der einzelne Maschinenbefehl
+  weit weniger m�chtig als in einem CISC-Prozessor,
+  wird daf�r aber wesentlich schneller ausgef�hrt,
+  idealerweise jeder Befehl in einem einzigen Taktzyklus.
+
+  Beispiel: Atmel AVR
+ 
+  \bigskip
+
+  Weitere Befehlssatzarchitekturen:\\
+  \newterm{Very Long Instruction Word (VLIW)},
+  \newterm{Explicitly Parallel Instruction Computing (EPIC)}\\
+  (z.\,B.\ IA-64)
+
+  \section{Der CPU-Stack}
+
+  \emph{Achtung: Nicht mit dem Register-Stack verwechseln!}
+
+  \subsection{Implementation}
+
+  Ein Teil des Speichers wird als "`Stack"' reserviert.\\
+  Eine Variable, typischerweise ein Prozessorregister, wird als "`Stack-Pointer"' (SP) reserviert.
+  \begin{itemize}
+    \item
+      Um einen Wert auf den Stack zu legen,
+      verschiebt man den SP, so da� er auf einen freien Speicherplatz zeigt.
+      Dorthin speichert man den Wert.
+    \item
+      Um einen Wert vom Stack zur�ckzuholen,
+      liest man ihn von der Stelle, auf die SP zeigt,
+      und verschiebt anschlie�end den SP in die entgegengesetzte Richtung.
+  \end{itemize}
+
+  \goodbreak
+  Da diese Kombinationen von Operationen sehr gebr�uchlich sind,
+  enthalten die allermeisten Prozessoren eigene Befehle daf�r, z.\,B.:
+  \begin{itemize}
+    \item
+      Wert auf den Stack legen: \verb|push|
+    \item
+      Wert vom Stack zur�ckholen: \verb|pop|
+    \item
+      IP auf den Stack sichern und Unterprogramm aufrufen: \verb|call|
+    \item
+      IP vom Stack zur�ckholen = R�cksprung aus Unterprogramm: \verb|ret|
+  \end{itemize}
+
+  Die Richtung, in der der Stack w�chst, ist frei w�hlbar.
+  Beim IA-32 z.\,B.\ w�chst der Stack von oben nach unten.
+  Dort wird also beim \verb|push| der SP dekrementiert (erniedrigt)
+  und beim \verb|pop| inkrementiert (erh�ht).
+
+  Auch die kleinste Einheit ist frei w�hlbar.
+  Beim IA-32 k�nnen minimal 16 Bit, also immer 2 Bytes zusammen auf den Stack gelegt werden.
+
+  \bigbreak
+
+  Beispiel: Ein f�r einen IA-32-Prozessor geschriebenes Programm enth�lt die Befehle:
+  \begin{verbatim}
+    pushw $17
+    pushw $33
+    ...
+    popw %ax\end{verbatim}
+  Bei Programmbeginn werden 16384 Bytes, hexadezimal \verb|4000|, f�r den Stack reserviert,
+  n�mlich der Speicher"-bereich von Adresse \verb|0000| bis Adresse \verb|3fff|,
+  und der Stack-Pointer (\verb|SP|) wird auf den Wert \verb|4000| initialisiert. 
+  Er zeigt also am Stack vorbei "`ins Leere"'.
+
+  Wenn nun der Befehl \verb|pushw $17| ("`push word"') ausgef�hrt wird,
+  wird \verb|SP| um 2 auf \verb|3ffe| dekrementiert
+  und anschlie�end der Wert \verb|17|
+  an die beiden Speicheradressen \verb|3ffe| und \verb|3fff| geschrieben.
+
+  \begin{center}
+    \begin{picture}(5.1,6)(0,-0.8)
+      \put(0,0){\makebox(0,0)[bl]{\begin{tabular}{r|c|}
+                                & \dots \\\cline{2-2}
+                  \texttt{4001} &       \\\cline{2-2}
+                  \texttt{4000} &       \\\cline{2-2}
+                  \texttt{3fff} &       \\\cline{2-2}
+                  \texttt{3ffe} &       \\\cline{2-2}
+                  \texttt{3ffd} &       \\\cline{2-2}
+                  \texttt{3ffc} &       \\\cline{2-2}
+                  \texttt{3ffb} &       \\\cline{2-2}
+                  \texttt{3ffa} &       \\\cline{2-2}
+                  \texttt{3ff9} &       \\\cline{2-2}
+                  \texttt{3ff8} &       \\\cline{2-2}
+                                & \dots
+                \end{tabular}}}
+      \put(3.7,0){\makebox(0,0)[b]{\begin{tabular}[b]{|c|}\hline
+                    \texttt{SP\,=\,4000}\\\hline
+                    \multicolumn{1}{c}{}\\
+                  \end{tabular}}}
+      \put(3.7,0.87){\line(0,1){3.13}} % Schrittweite: 0.43
+      \put(3.7,4.00){\vector(-1,0){1.54}}
+      \put(2.25,-0.25){\makebox(0,0)[t]{leerer Stack}}
+    \end{picture}%
+    \begin{picture}(5.1,6)(0,-0.8)
+      \put(0,0){\makebox(0,0)[bl]{\begin{tabular}{r|c|}
+                                & \dots \\\cline{2-2}
+                  \texttt{4001} &       \\\cline{2-2}
+                  \texttt{4000} &       \\\cline{2-2}
+                  \texttt{3fff} &       \\
+                  \texttt{3ffe} & \texttt{17} \\\cline{2-2}
+                  \texttt{3ffd} &       \\\cline{2-2}
+                  \texttt{3ffc} &       \\\cline{2-2}
+                  \texttt{3ffb} &       \\\cline{2-2}
+                  \texttt{3ffa} &       \\\cline{2-2}
+                  \texttt{3ff9} &       \\\cline{2-2}
+                  \texttt{3ff8} &       \\\cline{2-2}
+                                & \dots
+                \end{tabular}}}
+      \put(3.7,0){\makebox(0,0)[b]{\begin{tabular}[b]{|c|}\hline
+                    \texttt{SP\,=\,3ffe}\\\hline
+                    \multicolumn{1}{c}{}\\
+                  \end{tabular}}}
+      \put(3.7,0.87){\line(0,1){2.28}}
+      \put(3.7,3.14){\vector(-1,0){1.54}}
+      \put(2.25,-0.25){\makebox(0,0)[t]{Stack nach \texttt{pushw \$17}}}
+    \end{picture}%
+    \begin{picture}(5.1,6)(0,-0.8)
+      \put(0,0){\makebox(0,0)[bl]{\begin{tabular}{r|c|}
+                                & \dots \\\cline{2-2}
+                  \texttt{4001} &       \\\cline{2-2}
+                  \texttt{4000} &       \\\cline{2-2}
+                  \texttt{3fff} &       \\
+                  \texttt{3ffe} & \texttt{17} \\\cline{2-2}
+                  \texttt{3ffd} &       \\
+                  \texttt{3ffc} & \texttt{33} \\\cline{2-2}
+                  \texttt{3ffb} &       \\\cline{2-2}
+                  \texttt{3ffa} &       \\\cline{2-2}
+                  \texttt{3ff9} &       \\\cline{2-2}
+                  \texttt{3ff8} &       \\\cline{2-2}
+                                & \dots
+                \end{tabular}}}
+      \put(3.7,0){\makebox(0,0)[b]{\begin{tabular}[b]{|c|}\hline
+                    \texttt{SP\,=\,3ffc}\\\hline
+                    \multicolumn{1}{c}{}\\
+                  \end{tabular}}}
+      \put(3.7,0.87){\line(0,1){1.42}}
+      \put(3.7,2.28){\vector(-1,0){1.54}}
+      \put(2.25,-0.25){\makebox(0,0)[t]{Stack nach \texttt{pushw \$33}}}
+    \end{picture}
+  \end{center}
+
+  Wenn danach der Befehl \verb|pushw $33| ausgef�hrt wird,
+  wird der Wert \verb|33| an die Speicheradresse \verb|3ffe| geschrieben
+  und \verb|SP| um 2 auf \verb|3ffc| dekrementiert.
+
+  Wenn anschlie�end der \verb|popw|-Befehl ausgef�hrt wird,
+  wird \verb|SP| um 2 auf \verb|3ffe| inkrementiert,
+  und der Stack sieht wieder genauso aus wie nach dem Befehl \verb|pushw $17|.
+
+  \goodbreak
+
+  \subsection{Unterprogramme}
+
+  Um einem Unterprogramm Parameter zu �bergeben,
+  m�ssen diese an einer definierten Stelle gespeichert werden.
+  M�gliche Speicherorte sind:
+  \begin{itemize}
+    \item
+      Prozessorregister
+    \item
+      Stack
+  \end{itemize}
+
+  Die Parameter�bergabe funktioniert nur,
+  wenn sich Haupt- und Unterprogramm �ber deren Art und Weise einig sind.
+  Daher existieren mehrere Aufrufkonventionen:
+  \begin{itemize}
+    \item
+      Das Hauptprogramm speichert die Parameter auf dem Stack.\\
+      Das Unterprogramm liest sie.\\
+      Das Hauptprogramm nimmt die Parameter wieder vom Stack.\\
+      ("`C-Aufrufkonvention"')
+    \item
+      Das Hauptprogramm speichert die Parameter auf dem Stack.\\
+      Das Unterprogramm liest sie und nimmt sie wieder vom Stack.\\
+      ("`Pascal-Aufrufkonvention"')
+  \end{itemize}
+
+  Bemerkung: Trotz der Bennennung nach Programmiersprachen
+  sind die Aufrufkonventionen nicht an die jeweiligen Programmiersprachen gebunden.
+  (Zum Beispiel verwendet GNU-Pascal standardm��ig die "`C"'-Aufrufkonvention.)
+
+  Die "`stdcall"'-Aufrufkonvention unter Microsoft Windows
+  ist eine Variante der Pascal-Aufrufkonvention.
+
+%    Aufgabe:
+%    Schreiben Sie ein Unterprogramm, das im %eax-Register eine Zahl als Parameter erwartet,
+%    und 1 << diese Zahl im %eax-Register zur�ckliefert.
+%
+%    In C in etwa:
+%
+%      int exercise (int eax)
+%      {
+%        return 1 << eax;
+%      }
+%
+%    (Bemerkung: 1 << x ist dasselbe wie 2 hoch x.
+%    Dies ist also eine einfache Methode, um Zweierpotenzen zu berechnen.)
+%
+%    (Hinweis: gcc -S foo.c -o foo.s
+%    gen�gt \emph{nicht}, um die Aufgabe zu l�sen.
+%    In dem compilierten C-Code werden Parameter �ber den
+%    CPU-Stack �bergeben und nicht �ber das %eax-Register.
+%    Dies l��t sich nat�rlich manuell korrigieren.)
+
+  \bigskip
+  \goodbreak
+
+  Beispiel: Ein f�r einen IA-32-Prozessor geschriebenes Programm
+  soll gem�� der C-Aufrufkonvention eine Funktion \verb|write_word()| aufrufen,
+  die als Parameter eine 16-Bit-Ganzzahl erwartet, z.\,B.\ den Wert 17.
+  Dies kann folgenderma�en geschehen:
+  \begin{verbatim}
+    pushw $17
+    call write_word
+    popw %ax\end{verbatim}
+  Das \verb|popw| dient dazu, den Stack nach dem Aufruf
+  wieder in den urspr�nglichen Zustand zur�ckzuversetzen;
+  der in das \verb|%ax|-Register gelesene Wert wird verworfen.
+  (Stattdessen k�nnte man auch mit \verb|addw %sp, 2| den Stack-Pointer
+  "`von Hand"' inkrementieren.)
+  \begin{center}
+    \begin{picture}(5.1,6)(0,-0.8)
+      \put(0,0){\makebox(0,0)[bl]{\begin{tabular}{r|c|}
+                                & \dots \\\cline{2-2}
+                  \texttt{4001} &       \\\cline{2-2}
+                  \texttt{4000} &       \\\cline{2-2}
+                  \texttt{3fff} &       \\\cline{2-2}
+                  \texttt{3ffe} &       \\\cline{2-2}
+                  \texttt{3ffd} &       \\\cline{2-2}
+                  \texttt{3ffc} &       \\\cline{2-2}
+                  \texttt{3ffb} &       \\\cline{2-2}
+                  \texttt{3ffa} &       \\\cline{2-2}
+                  \texttt{3ff9} &       \\\cline{2-2}
+                  \texttt{3ff8} &       \\\cline{2-2}
+                                & \dots
+                \end{tabular}}}
+      \put(3.7,0){\makebox(0,0)[b]{\begin{tabular}[b]{|c|}\hline
+                    \texttt{SP\,=\,4000}\\\hline
+                    \multicolumn{1}{c}{}\\
+                  \end{tabular}}}
+      \put(3.7,0.87){\line(0,1){3.13}} % Schrittweite: 0.43
+      \put(3.7,4.00){\vector(-1,0){1.54}}
+      \put(2.25,-0.25){\makebox(0,0)[t]{leerer Stack}}
+    \end{picture}%
+    \begin{picture}(5.1,6)(0,-0.8)
+      \put(0,0){\makebox(0,0)[bl]{\begin{tabular}{r|c|}
+                                & \dots \\\cline{2-2}
+                  \texttt{4001} &       \\\cline{2-2}
+                  \texttt{4000} &       \\\cline{2-2}
+                  \texttt{3fff} &       \\
+                  \texttt{3ffe} & \texttt{17} \\\cline{2-2}
+                  \texttt{3ffd} &       \\\cline{2-2}
+                  \texttt{3ffc} &       \\\cline{2-2}
+                  \texttt{3ffb} &       \\\cline{2-2}
+                  \texttt{3ffa} &       \\\cline{2-2}
+                  \texttt{3ff9} &       \\\cline{2-2}
+                  \texttt{3ff8} &       \\\cline{2-2}
+                                & \dots
+                \end{tabular}}}
+      \put(3.7,0){\makebox(0,0)[b]{\begin{tabular}[b]{|c|}\hline
+                    \texttt{SP\,=\,3ffe}\\\hline
+                    \multicolumn{1}{c}{}\\
+                  \end{tabular}}}
+      \put(3.7,0.87){\line(0,1){2.28}}
+      \put(3.7,3.14){\vector(-1,0){1.54}}
+      \put(2.25,-0.25){\makebox(0,0)[t]{Stack nach \texttt{pushw \$17}}}
+    \end{picture}%
+    \begin{picture}(5.1,6)(0,-0.8)
+      \put(0,0){\makebox(0,0)[bl]{\begin{tabular}{r|c|}
+                                & \dots \\\cline{2-2}
+                  \texttt{4001} &       \\\cline{2-2}
+                  \texttt{4000} &       \\\cline{2-2}
+                  \texttt{3fff} &       \\
+                  \texttt{3ffe} & \texttt{17} \\\cline{2-2}
+                  \texttt{3ffd} &       \\
+                  \texttt{3ffc} &       \\
+                  \texttt{3ffb} &       \\
+                  \texttt{3ffa} & \kern13pt\begin{rotate}{90}%
+                                    \kern-3pt\shortstack{%
+                                      \footnotesize R�cksprung-\\[-3pt]
+                                      \footnotesize adresse}%
+                                  \end{rotate}\\\cline{2-2}
+                  \texttt{3ff9} &       \\\cline{2-2}
+                  \texttt{3ff8} &       \\\cline{2-2}
+                                & \dots
+                \end{tabular}}}
+      \put(3.7,0){\makebox(0,0)[b]{\begin{tabular}[b]{|c|}\hline
+                    \texttt{SP\,=\,3ffa}\\\hline
+                    \multicolumn{1}{c}{}\\
+                  \end{tabular}}}
+      \put(3.7,0.87){\line(0,1){0.56}}
+      \put(3.7,1.42){\vector(-1,0){1.54}}
+      \put(2.25,-0.25){\makebox(0,0)[t]{Stack w�hrend \texttt{call write\_word}}}
+    \end{picture}
+  \end{center}
+
+  Die R�cksprungadresse ist bei IA-32 vier Bytes gro�,
+  verbraucht also vier Bytes auf dem Stack.
+
+  W�hrend das Unterprogramm l�uft,
+  kann es den �bergebenen Parameter (Wert: 17)
+  unter der Adresse "`Stack-Pointer + 4 Bytes"' ansprechen, in Assembler: \verb|4(%esp)|
+
+  \subsection{Registerinhalte sichern}
+
+  Wenn das Hauptprogramm ein Unterprogramm aufruft,
+  k�nnen sich dadurch die Inhalte der Register �ndern,
+  n�mlich dann, wenn das Unterprogramm diese Register benutzt.
+
+  Damit dies nicht zu falschen Rechenergebnissen f�hrt,
+  mu� entweder das Hauptprogramm diesen Umstand ber�cksichtigen,
+  oder das Unterprogramm mu� Register vor der Verwendung sichern und hinterher wiederherstellen --
+  �blicherweise im CPU-Stack.
+
+  Dies ist insbesondere dann wichtig, wenn das Unterprogramm nicht �ber einen ausdr�cklichen Befehl
+  (\verb|call|), sondern auf andere Weise aufgerufen wird. % -- siehe Abschnitt~\ref{Interrupts}.
+
+  \clearpage
+
+  \section{Hardwarenahe Programmierung}
+
+  \subsection{Bit-Operationen}
+
+  \setlength{\unitlength}{12pt}
+
+  \subsubsection{Zahlensysteme}
+
+  \subsubsection*{Dezimalsystem}
+  \begin{itemize}
+    \item
+      Basis: 10
+    \item
+      G�ltige Ziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+  \end{itemize}
+  \begin{verbatim}
+    137                               137
+                                    +  42
+                                     ----
+                                      179
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \color{red}
+    \put(5.0,4.25){\vector(-1,1){1.41}}
+    \put(5.5,4){\mbox{Einer: $7 \cdot 10^0$}}
+    \put(5.5,3.25){\vector(-1,1){2.41}}
+    \put(6.0,3){\mbox{Zehner: $3 \cdot 10^1$}}
+    \put(6.0,2.25){\vector(-1,1){3.41}}
+    \put(6.5,2){\mbox{Hunderter: $1 \cdot 10^2$}}
+    \put(2.5,0.5){\mbox{$137_{10} = 1 \cdot 10^2 + 3 \cdot 10^1 + 7 \cdot 10^0
+                                  = 100 + 30 + 7 = 137$}}
+  \end{picture}
+
+  \goodbreak
+  \subsubsection*{Hexadezimalsystem}
+  \begin{itemize}
+    \item
+      Basis: 16
+    \item
+      G�ltige Ziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
+  \end{itemize}
+  \begin{verbatim}
+    137                               A380
+                                    + B747
+                                     -----
+                                     15AC7
+  \end{verbatim}
+  \begin{picture}(0,0)(-0,-0.25)
+    \put(18.6,4.2){\mbox{\scriptsize\texttt{1}}}
+    \color{red}
+    \put(5.0,4.25){\vector(-1,1){1.41}}
+    \put(5.5,4){\mbox{$7 \cdot 16^0$}}
+    \put(5.5,3.25){\vector(-1,1){2.41}}
+    \put(6.0,3){\mbox{$3 \cdot 16^1$}}
+    \put(6.0,2.25){\vector(-1,1){3.41}}
+    \put(6.5,2){\mbox{$1 \cdot 16^2$}}
+    \put(2.5,0.5){\mbox{$137_{16} = 1 \cdot 16^2 + 3 \cdot 16^1 + 7 \cdot 16^0
+                                  = 256 + 48 + 7 = 311$}}
+  \end{picture}
+  \begin{itemize}
+    \item
+      Schreibweise in C: \quad \texttt{0x137}
+  \end{itemize}
+
+  \goodbreak
+  \subsubsection*{Oktalsystem}
+  \begin{itemize}
+    \item
+      Basis: 8
+    \item
+      G�ltige Ziffern: 0, 1, 2, 3, 4, 5, 6, 7
+  \end{itemize}
+  \begin{verbatim}
+    137                               137
+                                    +  42
+                                     ----
+                                      201
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \put(19.6,3.7){\mbox{\scriptsize\texttt{1}}}
+    \put(19.1,3.7){\mbox{\scriptsize\texttt{1}}}
+    \color{red}
+    \put(5.0,4.25){\vector(-1,1){1.41}}
+    \put(5.5,4){\mbox{$7 \cdot 8^0$}}
+    \put(5.5,3.25){\vector(-1,1){2.41}}
+    \put(6.0,3){\mbox{$3 \cdot 8^1$}}
+    \put(6.0,2.25){\vector(-1,1){3.41}}
+    \put(6.5,2){\mbox{$1 \cdot 8^2$}}
+    \put(2.5,0.5){\mbox{$137_8 = 1 \cdot 8^2 + 3 \cdot 8^1 + 7 \cdot 8^0
+                               = 64 + 24 + 7 = 95$}}
+    \put(2.5,-0.6){\mbox{$42_8 = 4 \cdot 8^1 + 2 \cdot 8^0
+                               = 32 + 2 = 34$}}
+    \put(2.5,-1.7){\mbox{$201_8 = 2 \cdot 8^2 + 0 \cdot 8^1 + 1 \cdot 8^0
+                               = 128 + 1 = 129$}}
+  \end{picture}
+  \vspace{0.75cm}
+  \begin{itemize}
+    \item
+      Schreibweise in C: \quad \texttt{0137}
+  \end{itemize}
+
+  \subsubsection*{Rechner f�r beliebige Zahlensysteme: GNU bc}
+  \begin{lstlisting}[style=terminal]
+    $ �bc
+    ibase=8
+    137�
+    95
+    �obase=10
+    137 + 42�
+    201
+  \end{lstlisting}
+  \begin{picture}(0,0)(0.5,1.2)
+    \color{red}
+    \put(8.0,7.25){\vector(-1,0){3}}
+    \put(8.5,7){\mbox{Eingabe zur Basis 8}}
+    \put(8.0,6.25){\vector(-1,0){4}}
+    \put(8.5,6){\mbox{Ausgabe zur Basis 10}}
+    \put(9.0,5.25){\vector(-1,0){2}}
+    \put(9.5,5){\mbox{Eingabe zur Basis 8 ($10_8 = 8$)}}
+    \put(8.0,3.25){\vector(-1,0){4}}
+    \put(8.5,3){\mbox{Ausgabe zur Basis 8}}
+  \end{picture}\vspace{-2ex}
+
+  \goodbreak
+  \subsubsection*{Bin�rsystem}
+  \begin{itemize}
+    \item
+      Basis: 2
+    \item
+      G�ltige Ziffern: 0, 1
+  \end{itemize}
+  \begin{verbatim}
+    110                                110
+                                    + 1100
+                                     -----
+                                     10010
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \put(19.1,3.8){\mbox{\scriptsize\texttt{1}}}
+    \put(18.6,3.8){\mbox{\scriptsize\texttt{1}}}
+    \color{red}
+    \put(5.0,4.25){\vector(-1,1){1.41}}
+    \put(5.5,4){\mbox{$0 \cdot 2^0$}}
+    \put(5.5,3.25){\vector(-1,1){2.41}}
+    \put(6.0,3){\mbox{$1 \cdot 2^1$}}
+    \put(6.0,2.25){\vector(-1,1){3.41}}
+    \put(6.5,2){\mbox{$1 \cdot 2^2$}}
+    \put(2.5,0.5){\mbox{$110_2 = 1 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0
+                                  = 4 + 2 + 0 = 6$}}
+  \end{picture}
+  \begin{itemize}
+    \item
+      Bin�r-Zahlen erm�glichen es, elektronisch zu rechnen \dots
+    \item
+      und mehrere "`Ja/Nein"' (Bits) zu einer einzigen Zahl zusammenzufassen.
+    \item
+      \textbf{Oktal- und Hexadezimal-Zahlen lassen sich ziffernweise
+      in Bin�r-Zahlen umrechnen:}
+  \end{itemize}
+  \vspace*{-6mm}
+  \begin{verbatim}
+     000 0        0000 0  1000 8
+     001 1        0001 1  1001 9
+     010 2        0010 2  1010 A
+     011 3        0011 3  1011 B
+     100 4        0100 4  1100 C
+     101 5        0101 5  1101 D
+     110 6        0110 6  1110 E
+     111 7        0111 7  1111 F
+  \end{verbatim}
+  \vspace*{-1cm}
+  \begin{itemize}
+    \item[]
+      Beispiel: $1101011_2 = 153_8 = 6{\rm B}_{16}$
+    \item[]
+      Anwendungsbeispiel: Oktal-Schreibweise f�r Unix-Zugriffsrechte\\
+      \verb|-rw-r-----| $= 0\,110\,100\,000_2 = 640_8$ \qquad \verb|$ chmod 640 file.c|\\
+      \verb|-rwxr-x---| $= 0\,111\,101\,000_2 = 750_8$ \qquad \verb|$ chmod 750 subdir|
+  \end{itemize}
+
+  \goodbreak
+  \subsubsection*{IP-Adressen (IPv4)}
+  \begin{itemize}
+    \item
+      Basis: 256
+    \item
+      G�ltige Ziffern: 0 bis 255, getrennt durch Punkte
+    \item
+      Kompakte Schreibweise f�r Bin�rzahlen mit 32 Ziffern (Bits)
+  \end{itemize}
+  \begin{verbatim}
+    192.168.0.1
+
+
+
+
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \color{red}
+    \put(8.75,5.25){\vector(-1,1){1.41}}
+    \put(9.25,5){\mbox{$1 \cdot 256^0$}}
+    \put(8.75,4.25){\vector(-1,1){2.41}}
+    \put(9.25,4){\mbox{$0 \cdot 256^1$}}
+    \put(8.25,3.25){\vector(-1,1){3.41}}
+    \put(8.75,3){\mbox{$168 \cdot 256^2$}}
+    \put(7.5,2.25){\vector(-1,1){4.41}}
+    \put(8.0,2){\mbox{$192 \cdot 256^3$}}
+    \put(2.5,0.5){\mbox{$192.168.0.1_{256} = 11000000\,10101000\,00000000\,00000001_2$}}
+  \end{picture}
+  \vspace*{-0.5cm}
+
+  \goodbreak
+  \subsubsection{Bit-Operationen in C}
+  \begin{verbatim}
+      0110       0110       0110       0110                  0110
+    + 1100     | 1100    &  1100    ^  1100    ~  1100   >>     2
+     -----      -----      -----      -----      -----      -----
+     10010       1110       0100       1010       0011       0001
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \color{red}
+    \put(2.5,1.0){\mbox{Addition}}
+    \put(8.5,1.0){\mbox{Oder}}
+    \put(14.0,1.0){\mbox{Und}}
+    \put(18.0,1.0){\mbox{Exklusiv-Oder}}
+    \put(24.5,1.0){\mbox{Negation}}
+    \put(29.0,1.0){\mbox{Bit-Verschiebung}}
+  \end{picture}
+
+  \begin{verbatim}
+      01101100            01101100            01101100
+    | 00000010          & 11110111          ^ 00010000
+     ---------           ---------           ---------
+      01101110            01100100            01111100
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \color{red}
+    \put(2.5,1.0){\mbox{Bit gezielt setzen}}
+    \put(12.5,1.0){\mbox{Bit gezielt l�schen}}
+    \put(22.5,1.0){\mbox{Bit gezielt umklappen}}
+  \end{picture}
+  \begin{itemize}
+    \item
+      Bits werden h�ufig von rechts und ab 0 numeriert (hier: 0 bis 7),\\
+      um die Maskenerzeugung mittels Schiebeoperatoren zu erleichtern.
+    \item
+      Die Bit-Operatoren (z.\,B.\ \verb|&| in C)
+      wirken jeweils auf alle Bits der Zahlen.
+      \hfill{\color{red}\verb|6 & 12 == 4|}\qquad\strut\\
+      Die logischen Operatoren (z.\,B.\ \verb|&&| in C)
+      pr�fen die Zahl insgesamt auf $\ne 0$.
+      \hfill{\color{red}\verb|6 && 12 == 1|}\qquad\strut\\
+      Nicht verwechseln!
+  \end{itemize}
+
+  \bigbreak
+  
+  Anwendung: Bit 2 (also das dritte Bit von rechts) in einer 8-Bit-Zahl auf 1 setzen:
+  \begin{verbatim}
+      00000001            01101100
+   <<        2          | 00000100
+     ---------           ---------
+      00000100            01101100
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \color{red}
+    \put(3.5,1.0){\mbox{Maske f�r Bit 2}}
+    \put(12.5,1.0){\mbox{Bit gezielt setzen}}
+  \end{picture}\vspace{-4ex}
+  \begin{itemize}
+    \item
+      Schreibweise in C:\quad
+      \verb,a |= 1 << 2;,
+  \end{itemize}
+
+  \bigbreak
+  
+  Anwendung: Bit 2 in einer 8-Bit-Zahl auf 0 setzen:
+  \begin{verbatim}
+      00000001                                01101100
+   <<        2          ~ 00000100          & 11111011
+     ---------           ---------           ---------
+      00000100            11111011            01101000
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \color{red}
+    \put(3.5,1.0){\mbox{Maske zum L�schen von Bit 2 erzeugen}}
+    \put(22.5,1.0){\mbox{Bit gezielt l�schen}}
+  \end{picture}\vspace{-4ex}
+  \begin{itemize}
+    \item
+      Schreibweise in C:\quad
+      \verb,a &= ~(1 << 2);,
+  \end{itemize}
+
+  \bigbreak
+
+  Anwendung: Bit 2 aus einer 8-Bit-Zahl extrahieren:
+  \begin{verbatim}
+      00000001            01101100            00000100
+   <<        2          & 00000100         >>        2
+     ---------           ---------           ---------
+      00000100            00000100            00000001
+  \end{verbatim}
+  \begin{picture}(0,0)(0,-0.25)
+    \color{red}
+    \put(2.5,1.0){\mbox{Maske f�r Bit 2}}
+    \put(12.5,1.0){\mbox{Bit 2 isolieren}}
+    \put(22.5,1.0){\mbox{in Zahl 0 oder 1 umwandeln}}
+  \end{picture}\vspace{-4ex}
+  \begin{itemize}
+    \item
+      Schreibweise in C:\quad
+      \verb,x = (a & (1 << 2)) >> 2;,
+  \end{itemize}
+
+  \bigbreak
+
+  Beispiel: Netzmaske f�r 256 IP-Adressen
+  \begin{verbatim}
+      192.168.  1.123
+    & 255.255.255.  0
+     ----------------
+      192.168.  1.  0
+  \end{verbatim}
+  \begin{picture}(0,0)(0,0)
+    \color{red}
+    \put(14.0,6.25){\vector(-1,0){2}}
+    \put(14.5,6){\mbox{IP-Adresse eines Rechners}}
+    \put(14.0,5.25){\vector(-1,0){2}}
+    \put(14.5,5){\mbox{Netzmaske: $255 = 11111111_2$}}
+    \put(14.0,3.25){\vector(-1,0){2}}
+    \put(14.5,3){\mbox{IP-Adresse des Sub-Netzes}}
+  \end{picture}\vspace{-6ex}
+
+  \bigbreak
+
+  Beispiel: Netzmaske f�r 8 IP-Adressen
+  \begin{verbatim}
+      192.168.  1.123                                   01111011
+    & 255.255.255.248                                 & 11111000
+     ----------------                                  ---------
+      192.168.  1.120                                   01111000
+  \end{verbatim}
+  \begin{picture}(0,0)(0,0)
+    \color{red}
+    \put(14.0,6.25){\vector(-1,0){2}}
+    \put(14.5,6){\mbox{IP-Adresse eines Rechners}}
+    \put(14.0,5.25){\vector(-1,0){2}}
+    \put(14.5,5){\mbox{Netzmaske}}
+    \put(14.0,3.25){\vector(-1,0){2}}
+    \put(14.5,3){\mbox{IP-Adresse des Sub-Netzes}}
+  \end{picture}\vspace{-6ex}
+
+  \subsection{I/O-Ports}
+
+  Es gibt drei grundlegende Mechanismen f�r die Kommunikation zwischen dem Prozessor
+  und einem externen Ger�t:
+  \begin{itemize}
+    \item
+      �ber Output-Ports kann der Prozessor das Ger�t aktiv steuern,
+    \item
+      �ber Input-Ports kann er es aktiv abfragen,
+    \item
+      und �ber Interrupts kann das externe Ger�t im Prozessor Aktivit�ten ausl�sen.
+  \end{itemize}
+
+  \begin{center}
+    \begin{pdfpic}
+      \psset{unit=1cm}%
+      \begin{pspicture}(0,0)(10,6)
+        \rput(0,0){\psframe[framearc=0.25](2,5)}
+        \rput(1,4.5){\makebox(0,0)[t]{Prozessor}}
+        \rput(2.0,3.7){\pnode{p0}}
+        \rput(2.0,3.3){\pnode{q0}}
+        \rput(2.0,1.0){\pnode{i0}}
+        \rput(2.12,1.2){\pnode{j0}}
+        \rput(2.02,1.3){\pnode{k0}}
+        \rput(2.12,1.4){\pnode{l0}}
+        \rput(3.5,1.4){\pnode{m0}}
+        \rput(8,0){\psframe[framearc=0.25](2,5)}
+        \rput(9,4.5){\makebox(0,0)[t]{\shortstack{externes\\Ger�t}}}
+        \rput(8.0,3.7){\pnode{p1}}
+        \rput(7.88,3.3){\pnode{q1}}
+        \rput(7.98,3.2){\pnode{r1}}
+        \rput(7.88,3.1){\pnode{s1}}
+        \rput(6.5,3.1){\pnode{t1}}
+        \rput(8.0,1.0){\pnode{i1}}
+        \rput(8.0,1.2){\pnode{j1}}
+        \ncline{->}{p0}{p1}
+        \ncline{q0}{q1}
+        \nccurve[angleB=90]{q1}{r1}
+        \nccurve[angleA=-90]{r1}{s1}
+        \ncline{->}{s1}{t1}
+        \rput(2.2,3.8){\makebox(0,0)[lb]{Prozessor schreibt in Output-Port}}
+        \rput(2.2,3.1){\makebox(0,0)[lt]{Prozessor liest Input-Port}}
+        \ncline{->}{i1}{i0}
+        \rput(7.8,1.1){\makebox(0,0)[rb]{externes Ger�t ruft Interrupt auf}}
+      \end{pspicture}
+    \end{pdfpic}
+  \end{center}
+
+  \setlength{\unitlength}{1cm}
+
+  Input- und Output-Ports, zusammengefa�t: I/O-Ports,
+  sind spezielle Speicherzellen, die mit einem externen Ger�t verbunden sind (siehe Seite~\pageref{I/O-Ports}).
+  \begin{itemize}
+    \item
+      Ein in einen Output-Port geschriebener Wert bewirkt eine Spannungs�nderung in einer Leitung,
+      die zu einem externen Ger�t f�hrt.
+    \item
+      Wenn ein externes Ger�t eine Spannung an eine Leitung anlegt, die zu einer Speicherzelle f�hrt,
+      kann der Prozessor diese als Input-Port lesen.
+  \end{itemize}
+
+  Um z.\,B.\ auf einen Druck auf einen Taster zu warten,
+  kann ein Program periodisch in einer Schleife einen Input-Port lesen
+  und die Schleife erst dann beenden, wenn der Wert f�r "`Taster gedr�ckt"' gelesen wurde.
+
+  Diese Methode hei�t "`Busy Waiting"': Der Prozessor ist vollst�ndig mit Warten besch�ftigt.
+  Wenn gleichzeitig noch andere Aktionen stattfinden sollen,
+  m�ssen diese in der Schleife mit ber�cksichtigt werden.
+
+  \bigskip
+  \goodbreak
+
+  Beispiel f�r die Verwendung eines Output-Ports: Roboter-Steuerung\\
+  Datei: RP6Base/RP6Base\_Examples/RP6Examples\_20080915/RP6Lib/RP6base/RP6RobotBaseLib.c\\
+  Suchbegriff: setMotorDir
+  \goodbreak
+  \begin{verbatim}
+    void setMotorDir(uint8_t left_dir, uint8_t right_dir)
+    {
+            mleft_dir = left_dir;
+            mright_dir = right_dir;
+            mleft_des_dir = left_dir;
+            mright_des_dir = right_dir;
+            if(left_dir)
+                    PORTC |= DIR_L;
+            else
+                    PORTC &= ~DIR_L;
+            if(right_dir)
+                    PORTC |= DIR_R;
+            else
+                    PORTC &= ~DIR_R;
+    }\end{verbatim}
+
+  Die Variable \verb|PORTC| ist ein Output-Port.
+  Durch Manipulation einzelner Bits in dieser Variablen
+  �ndert sich die Spannung an den elektrischen "`Beinchen"' des Mikro-Controllers.
+  Hierdurch wird die Beschaltung von Elektromotoren umgepolt.
+
+  (Die Konstanten \verb|DIR_L| und \verb|DIR_R| sind "`Bitmasken"',
+  d.\,h.\ Zahlen, die in ihrer Bin�rdarstellung nur eine einzige $1$ und ansonsten Nullen haben.
+  Durch die Oder- und Und-Nicht-Operationen werden einzelne Bits in \verb|PORTC| auf $1$ bzw.\ $0$ gesetzt.)
+
+  \bigskip
+
+  Die direkte Ansteuerung von I/O-Ports ist nur auf Mikro-Controllern �blich.
+  Auf Personal-Computern erfolgt die gesamte Ein- und Ausgabe �ber Betriebssystem-"`Treiber"'.
+  Anwenderprogramme greifen dort i.\,d.\,R.\ nicht direkt auf I/O-Ports zu.
+
+  \subsection{Interrupts}
+
+  Ein Interrupt ist ein Unterprogramm, das nicht durch einen Befehl (\verb|call|),
+  sondern durch ein externes Ger�t (�ber ein Stromsignal) aufgerufen wird.
+
+  Damit dies funktionieret, mu� die Adresse, an der sich das Unterprogramm befindet,
+  an einer jederzeit auffindbaren Stelle im Speicher hinterlegt sein.
+  Diese Stelle hei�t "`Interrupt-Vektor"'.
+
+  Da ein Interrupt jederzeit erfolgen kann,
+  hat das Hauptprogramm keine Chance, vor dem Aufruf die Registerinhalte zu sichern.
+  F�r Interrupt-Unterprogramme, sog.\ Interrupt-Handler,
+  ist es daher zwingend notwendig, s�mtliche Register vor Verwendung zu sichern
+  und hinterher zur�ckzuholen.
+
+  \bigskip
+
+  Beispiel f�r die Verwendung eines Interrupts: Roboter-Steuerung\\
+  Datei: RP6Base/RP6Base\_Examples/RP6Examples\_20080915/RP6Lib/RP6base/RP6RobotBaseLib.c\\
+  Suchbegriff: ISR
+  \begin{verbatim}
+    ISR (INT0_vect)
+    {
+            mleft_dist++;
+            mleft_counter++;
+            /* ... */
+    }\end{verbatim}
+  \begin{itemize}
+    \item
+      Durch das Schl�sselwort \verb|ISR| anstelle von z.\,B.\ \verb|void|
+      teilen wir dem Compiler mit, da� es sich um einen Interrupt-Handler handelt,
+      so da� er entsprechenden Code zum Sichern der Registerinhalte einf�gt.
+    \item
+      Durch die Namensgebung \verb|INT0_vect| teilen wir dem Compiler mit,
+      da� er den Interrupt-Vektor Nr.\ 0 (also den ersten)
+      auf diesen Interrupt-Handler zeigen lassen soll.
+  \end{itemize}
+  (Tats�chlich handelt es sich bei \verb|ISR| und \verb|INT0_vect| um Macros.)
+
+  Die Schreibweise ist spezifisch f�r die Programmierung des Atmel AVR ATmega
+  unter Verwendung der GNU Compiler Collection (GCC).
+  Bei Verwendung anderer Werkzeuge und/oder Prozessoren
+  kann dasselbe Programm v�llig anders aussehen.
+  Wie man Interrupt-Handler schreibt und wie man Interrupt-Vektoren setzt,
+  ist ein wichtiger Bestandteil der Dokumentation der Entwicklungswerkzeuge.
+
+  \bigskip
+
+  Die so geschriebene Funktion wird immer dann aufgerufen, wenn die
+  Hardware den Interrupt Nr.\ 0 ausl�st. Wann das der Fall ist, h�ngt
+  von der Beschaltung ab. Im Falle des RP6 geschieht es dann, wenn
+  ein Sensor an der linken Raupenkette einen schwarzen Streifen auf
+  der Encoder-Scheibe registriert, also immer dann, wenn sich die
+  linke Raupenkette des Roboters um eine bestimmte Strecke gedreht
+  hat.
+
+  Jedesmal wenn sich die Raupenkette um einen Teilstrich weitergedreht hat,
+  werden also zwei Z�hler inkrementiert.
+  Wir k�nnen dies nutzen, um z.\,B.\ durch Auslesen des Z�hlers \verb|mleft_dist|
+  die zur�ckgelegte Entfernung zu messen.
+  (Die RP6-Bibliothek selbst stellt nur eine Zeit- und eine Geschwindigkeitsmessung zur Verf�gung.)
+  Wie dies konkret geschehen kann, sei im folgenden vorgestellt.
+
+  \goodbreak
+
+  Methode 1: Ver�ndern des Interrupt-Handlers
+  \begin{itemize}
+    \item
+      Da die Bibliothek \verb|RP6RobotBase| im Quelltext vorhanden ist,
+      k�nnen wir sie selbst �ndern und in den Interrupt-Handler
+      \verb|ISR (INT0_vect)| einen eigenen Z�hler f�r Sensor-Ticks einbauen.
+    \item
+      Wenn wir diesen zum Zeitpunkt A auf 0 setzen und zum Zeitpunkt B
+      auslesen, erfahren wir, wieviele "`Ticks"' der Roboter dazwischen
+      zur�ckgelegt hat.
+  \end{itemize}
+
+  Methode 2: Verwenden eines vorhandenen Z�hlers
+  \begin{itemize}
+    \item
+      Tats�chlich enth�lt \verb|ISR (INT0_vect)| bereits zwei Z�hler, die
+      bei jedem Sensor-"`Tick"' hochgez�hlt werden: \verb|mleft_dist| und
+      \verb|mleft_counter|.
+    \item
+      Einer davon (\verb|mleft_dist|) wird bei jedem \verb|move()| auf 0
+      zur�ckgesetzt. F�r diesen Z�hler enth�lt \verb|RP6RobotBaseLib.h|
+      einen "`undokumentierten"' Makro \verb|getLeftDistance()|, um ihn
+      auszulesen.
+    \item
+      Bei sorgf�ltiger Lekt�re von \verb|RP6RobotBaseLib.c| erkennt man, da�
+      es unproblematisch ist, den Z�hler vom Hauptprogramm aus auf 0 zu
+      setzen. (Dies ist jedoch mit Vorsicht zu genie�en: In einer
+      eventuellen Nachfolgeversion der Bibliothek mu� dies nicht mehr
+      der Fall sein!)
+  \end{itemize}
+
+  Methode 3: Abfrage der Sensoren mittels Busy Waiting
+  \begin{itemize}
+    \item
+      Alternativ zur Verwendung des Interrupt-Handlers kann man auch
+      von der eigenen Hauptschleife aus den Sensor periodisch abfragen
+      und bei jeder �nderung einen Z�hler hochz�hlen. 
+    \item
+      Diese Methode hei�t "`Busy Waiting"'. Sie hat den Vorteil der
+      Einfachheit aber den Nachteil, da� der Prozessor "`in Vollzeit"'
+      damit besch�ftigt ist, einen Sensor abzufragen, und eventuelle
+      andere Aufgaben nur noch "`nebenher"' erledigen kann. 
+    \item
+      Wenn aus irgendwelchen Gr�nden der Interrupt-Mechanismus nicht
+      verwendet werden kann (z.B. weil der Prozessor �ber kein
+      Interrupt-Konzept verf�gt), k�nnten wir die Lichtschranke alternativ auch mit einem Input-Port
+      verdrahten und mittels Busy Waiting abfragen.
+
+      Dies funktioniert nur dann, wenn die Schleife wirklich regelm��ig den Sensor abfragt.
+      Sobald der Prozessor l�ngere Zeit mit anderen Dingen besch�ftigt ist,
+      k�nnen beim Busy Waiting Signale der Lichtschranke verlorengehen.
+      Dieses Problem besteht nicht bei Verwendung von Interrupts.
+  \end{itemize}
+
+  \subsection{volatile-Variable}
+
+  Im C-Quelltext f�llt auf, da� die Z�hler-Variablen \verb|mleft_dist| und \verb|mleft_counter|
+  als \verb|volatile|\break\verb|uint16_t mleft_counter| bzw.\ \verb|volatile uint16_t mleft_dist| deklariert
+  sind anstatt einfach nur als
+  \verb|uint16_t mleft_counter| und \verb|uint16_t mleft_dist|.
+
+  Das Schl�sselwort \verb|volatile| teilt dem C-Compiler mit,
+  da� eine Variable immer im Speicher (RAM) aufbewahrt werden mu�
+  und nicht in einem Prozessorregister zwischengespeichert werden darf.
+
+  Dies ist deswegen wichtig, weil jederzeit ein Interrupt erfolgen
+  kann, der den Wert der Variablen im Speicher ver�ndert. Wenn im
+  Hauptprogramm alle "`�berfl�ssigen"' Speicherzugriffe wegoptimiert
+  wurden, erf�hrt es nichts von der �nderung.
+
+  Entsprechendes gilt f�r I/O-Ports:
+  Wenn ein Programm einen Wert in einen Output-Port schreiben oder aus einem Input-Port lesen soll,
+  ist es wichtig, da� der Speicherzugriff auch tats�chlich stattfindet.
+
+  \subsection{Software-Interrupts}
+ 
+  Manche Prozessoren verf�gen �ber einen Befehl, um Interrupts "`k�nstlich"' auszul�sen.
+
+  Das Betriebssystem MS-DOS verwendet derartige Aufrufe
+  anstelle von "`normalen"' Unterprogrammaufrufen,
+  um Programmen Funktionen zur Verf�gung zu stellen.
+
+  \bigskip
+  \goodbreak
+
+  Beispiel: Assembler-Version von \verb| printf ("Hello, world!\n") | unter MS-DOS bzw.\ Unix
+
+  \medskip
+
+  \verb|  |MS-DOS-Version f�r FASM (gek�rzt)\hspace{3cm} Unix-Version f�r GCC (gek�rzt)
+  \begin{verbatim}
+  hello  db 'Hello, world', 10, 13, '$'     hello:
+                                                    .string "Hello, world!\n"
+  mov ah, 09h
+  mov dx, hello                                     pushl   $hello
+  int 21h                                           call    printf\end{verbatim}
+
+  \begin{itemize}
+    \item
+      Die MS-DOS-Version ruft den Interrupt Nr.\ 33 (hexadezimal: 21) auf: \verb| int 21h|.\\
+      Die Unix-Version verwendet stattdessen einen normalen Unterprogrammaufruf: \verb| call printf|.
+    \item
+      Die MS-DOS-Version �bergibt Parameter in Prozessorregistern:\\
+      Die Konstante \verb|09h| im \verb|ah|-Register w�hlt die Funktion "`Textausgabe"' aus;\\
+      das \verb|dx|-Register enth�lt einen Zeiger auf den Text.
+
+      Die Unix-Version benutzt den Stack zur �bergabe des Parameters: \verb| pushl $hello|.\\
+      (\verb|$hello| ist ein Zeiger auf den Text.)
+    \item
+      Obwohl beide Programme auf demselben Prozessor laufen,
+      unterscheiden sich die Sprachdialekte der beiden Assember FASM und GCC erheblich voneinander.\\
+      (Reihenfolge der Operanden umgekehrt, Suffix \verb|l| f�r "`long"', Pr�fix \verb|$| f�r Konstanten, \dots)
+  \end{itemize}
+
+  Derartige "`Software-Interrupts"' verursachen Probleme,
+  sobald ein Ger�t den Interrupt f�r seinen eigentlichen Zweck verwendet.
+  MS-Windows verwendet -- au�er zur Emulation von MS-DOS -- keine Software-Interrupts mehr.
+
+  \bigskip
+
+  (Ein sehr �hnlicher Mechanismus wird von modernen Betriebssystemen weiterhin f�r Systemaufrufe genutzt.
+  Hier geht es darum, den �bergang von potentiell unsicherem Code in Anwenderprogrammen
+  zum vertrauensw�rdigen Code des Betriebssystems zu kontrollieren. F�r Details siehe:\\
+  http://de.wikipedia.org/wiki/Software-Interrupt, http://de.wikipedia.org/wiki/Systemaufruf)
+
+  \subsection{Byte-Reihenfolge -- Endianness}
+
+  \subsubsection{Konzept}
+
+  Beim Speichern von Werten,
+  die gr��er sind als die kleinste adressierbare Einheit\\
+  (= Speicherzelle oder Speicherwort, h�ufig 1 Byte), werden mehrere Speicherworte belegt.
+
+  Beispiel: 16-Bit-Zahl in 2 8-Bit-Speicherzellen
+  \begin{displaymath}
+    1027 = 1024 + 2 + 1 = 0000\,0100\,0000\,0011_2 = 0403_{16}
+  \end{displaymath}
+
+  Diese 16-Bit-Zahl kann auf zwei verschiedene Weisen
+  in zwei 8-Bit-Speicherzellen gespeichert werden:
+  \begin{center}
+    \begin{tabular}{|c|c|l}\cline{1-2}
+      \raisebox{-1pt}{04} & \raisebox{-1pt}{03} & \strut Big-Endian, "`gro�es Ende zuerst"', \\\cline{1-2}
+      \multicolumn{2}{c}{} & f�r Menschen leichter lesbar \\
+      \multicolumn{3}{c}{} \\[-5pt]\cline{1-2}
+      \raisebox{-1pt}{03} & \raisebox{-1pt}{04} & \strut Little-Endian, "`kleines Ende zuerst"', \\\cline{1-2}
+      \multicolumn{2}{c}{} & bei Additionen effizienter \\
+      \multicolumn{2}{c}{} & (Schriftliches Addieren beginnt immer beim Einer.)
+    \end{tabular}
+  \end{center}
+  Welche Konvention man verwendet, ist letztlich Geschmackssache
+  und h�ngt von der verwendeten Hardware (Prozessor) und Software ab.
+  Man spricht hier von der "`Endianness"' (Byte-Reihenfolge) der Hardware bzw.\ der Software.
+
+  Im Kontext des Datenaustausches ist es wichtig,
+  sich auf eine einheitliche Endianness zu verst�ndigen.
+  Dies gilt insbesondere f�r:
+  \begin{itemize}
+    \item
+      Dateiformate
+    \item
+      Daten�bertragung
+  \end{itemize}
+
+  \goodbreak
+  \subsubsection{Dateiformate}
+
+  Als Beispiel f�r Dateiformate, in denen die Reihenfolge der Bytes
+  in 16- und 32-Bit-Zahlen spezifiziert ist, seien hier Audio-Formate genannt:
+  \begin{itemize}
+    \item
+      RIFF-WAVE-Dateien (\verb|.wav|): Little-Endian
+    \item
+      Au-Dateien (\verb|.au|): Big-Endian
+    \goodbreak
+    \item
+      �ltere AIFF-Dateien (\verb|.aiff|): Big-Endian
+    \item
+      neuere AIFF-Dateien (\verb|.aiff|): Little-Endian
+  \end{itemize}
+  Insbesondere ist es bei AIFF-Dateien wichtig, zu pr�fen,
+  um welche Variante es sich handelt, anstatt sich auf eine bestimmte Byte-Reihenfolge zu verlassen.
+
+  Bei Dateiformaten mit variabler Endianness ist es sinnvoll und �blich,
+  die Endianness durch eine Kennung anzuzeigen.
+  Dies geschieht h�ufig am Anfang der Datei (im "`Vorspann"' -- "`Header"').
+
+  \bigbreak
+
+  Als weiteres Beispiel seien zwei Monochrom-Grafik-Formate genannt.
+  Hier steht jedes Bit f�r einen schwarzen bzw.\ wei�en Bildpunkt,
+  daher spielt die Reihenfolge der Bits in den Bytes eine entscheidende Rolle.
+  (Diese Grafik-Formate sind Ihnen bereits aus der Vorlesung "`Angewandte Informatik"' bekannt.)
+  \begin{itemize}
+    \item
+      PBM-Dateien: Big-Endian, MSB first -- die h�chstwertige Bin�rziffer ist im Bild links
+    \item
+      XBM-Dateien: Little-Endian, LSB first -- die h�chstwertige Bin�rziffer ist im Bild rechts
+  \end{itemize}
+  MSB/LSB = most/least significant bit
+
+  Achtung: Die Abk�rzungen "`MSB/LSB"' werden manchmal auch f�r "`most/least significant \emph{byte}"' verwendet.
+  Im konkreten Fall ist es ratsam, die verwendete Byte- und Bit-Reihenfolge genau zu recherchieren
+  bzw.\ pr�zise zu dokumentieren.
+
+%  \bigbreak
+%
+%  Weiteres Beispiel: Textdateien im Format "`UTF-16"'.
+%  Hier stehen jeweils zwei aufeinanderfolgende Bytes f�r eine 16-Bit-Zahl.
+%  Am Dateianfang steht stets der Wert $65279 = \verb|FEFF|_{16}$ \dots
+
+  \subsubsection{Daten�bertragung}
+
+  Bei der �bertragung von Daten �ber Leitungen
+  spielt sowohl die Reihenfolge der Bits in den Bytes ("`\mbox{MSB}/LSB first"')
+  als auch die Reihenfolge der Bytes in den �bertragenen Zahlen ("`Big-/Little-Endian"') eine Rolle.
+
+  Als Beispiele seien genannt:
+  \begin{itemize}
+    \item
+      RS-232 (serielle Schnittstelle): MSB first
+    \item
+      I$^2$C: LSB first
+    \item
+      USB: beides
+
+      Um �bertragungsfehler erkennen zu k�nnen, werden im USB-Protokoll
+      bestimmte Werte einmal gem�� der MSB-first- und einmal gem�� der LSB-first-Konvention
+      �bertragen und anschlie�end auf Gleichheit gepr�ft.
+    \medskip
+    \item
+      Ethernet: LSB first
+    \item
+      TCP/IP (Internet): Big-Endian
+  \end{itemize}
+  Insbesondere gilt f�r die �bertragung z.\,B.\ einer 32-Bit-Zahl �ber das Internet,
+  da� die vier Bytes von links nach rechts (Big-Endian) �bertragen werden,
+  die acht Bits innerhalb jedes Bytes hingegen von rechts nach links (LSB first).
+
+  \subsection{Speicherausrichtung -- Alignment}
+
+  Ein 32-Bit-Prozessor kann auf eine 32-Bit-Variable effizienter zugreifen,
+  wenn die Speicheradresse der Variablen ein Vielfaches von 32 Bits, also 4 Bytes ist.
+  Eine Variable, auf die dies zutrifft, hei�t "`korrekt im Speicher ausgerichtet"' ("`aligned"').
+
+  "`Effizienter"' kann bedeuten,
+  da� Maschinenbefehle zum Arbeiten mit den Variablen schneller abgearbeitet werden.
+  Es kann aber auch bedeuten,
+  da� der Prozessor gar keine direkte Bearbeitung von inkorrekt ausgerichteten Variablen erlaubt.
+  In diesem Fall bedeutet eine inkorrekte Speicherausrichtung,
+  da� f�r jede Operation mit der Variablen anstelle eines einzelnen Maschinenbefehls
+  ein kleines Programm aufgerufen werden mu�.
+
+  \bigskip
+
+  Um zu verstehen, welche Konsequenzen dies f�r die Arbeit mit Rechnern hat,
+  betrachten wir die folgenden Variablen (in C-Schreibweise):
+
+  \begin{verbatim}
+    uint8_t a;
+    uint16_t b;
+    uint8_t c;\end{verbatim}
+
+  Die Anordnung dieser Variablen im Speicher k�nnte z.\,B.\ folgenderma�en aussehen:
+
+  \begin{quote}
+    \newcommand{\bup}{\begin{picture}(0,0)\put(-0.1,0.2){\mbox{b}}\end{picture}}
+    \begin{tabular}{r|ccc|}
+                    & & \dots & \\\cline{2-4}
+      \texttt{3005} & &       & \\\cline{2-4}
+      \texttt{3004} & &       & \\\cline{2-4}
+      \texttt{3003} & & c     & \\\cline{2-4}
+      \texttt{3002} & &       & \\\cline{2-2}\cline{4-4}
+      \texttt{3001} & & \bup  & \\\cline{2-4}
+      \texttt{3000} & & a     & \\\cline{2-4}
+      \texttt{2fff} & &       & \\\cline{2-4}
+                    & & \dots &
+    \end{tabular}
+  \end{quote}
+
+  Ein optimierender Compiler wird f�r eine korrekte Ausrichtung der Variablen \verb|b| sorgen,
+  beispielsweise durch Auff�llen mit unbenutzten Speicherzellen:
+
+  \begin{quote}
+    \newcommand{\bup}{\begin{picture}(0,0)\put(-0.1,0.2){\mbox{b}}\end{picture}}
+    \begin{tabular}{r|ccc|}
+                    & & \dots & \\\cline{2-4}
+      \texttt{3005} & &       & \\\cline{2-4}
+      \texttt{3004} & & c     & \\\cline{2-4}
+      \texttt{3003} & &       & \\\cline{2-2}\cline{4-4}
+      \texttt{3002} & & \bup  & \\\cline{2-4}
+      \texttt{3001} & &       & \\\cline{2-4}
+      \texttt{3000} & & a     & \\\cline{2-4}
+      \texttt{2fff} & &       & \\\cline{2-4}
+                    & & \dots &
+    \end{tabular}
+  \end{quote}
+
+  Alternativ ist es dem Compiler auch m�glich,
+  die korrekte Ausrichtung durch "`Umsortieren"' der Variablen herzustellen
+  und dadurch "`L�cher"' zu vermeiden:
+
+  \begin{quote}
+    \newcommand{\bup}{\begin{picture}(0,0)\put(-0.1,0.2){\mbox{b}}\end{picture}}
+    \begin{tabular}{r|ccc|}
+                    & & \dots & \\\cline{2-4}
+      \texttt{3005} & &       & \\\cline{2-4}
+      \texttt{3004} & &       & \\\cline{2-4}
+      \texttt{3003} & &       & \\\cline{2-2}\cline{4-4}
+      \texttt{3002} & & \bup  & \\\cline{2-4}
+      \texttt{3001} & & c     & \\\cline{2-4}
+      \texttt{3000} & & a     & \\\cline{2-4}
+      \texttt{2fff} & &       & \\\cline{2-4}
+                    & & \dots &
+    \end{tabular}
+  \end{quote}
+
+  Fazit: Man kann sich als Programmierer nicht immer darauf verlassen,
+  da� die Variablen im Speicher in einer spezifischen Weise angeordnet sind.
+
+  In vielen existierenden Programmen geschieht dies dennoch.
+  Diese Programme sind fehlerhaft.
+  Dort kann es z.\,B.\ passieren, da� nach einem Upgrade des Compilers
+  schwer lokalisierbare Fehler auftreten.
+
+  \bigskip
+  \goodbreak
+
+  Entsprechende �berlegungen gelten f�r 64-Bit- und 16-Bit-Prozessoren.
+  Die Gr��e der Variablen, aufgerundet auf die n�chste Zweierpotenz, gibt eine Ausrichtung vor.
+  Die Registerbreite des Prozessors markiert die gr��te Ausrichtung, die noch ber�cksichtigt werden mu�.
+
+  Bei 8-Bit-Prozessoren stellt sich die Frage nach der Speicherausrichtung normalerweise nicht,
+  weil die kleinste adressierbare Einheit eines Speichers selten kleiner als 8 Bits ist.
+
+  Beispiele:
+  \begin{itemize}
+    \item
+      Eine 64-Bit-Variable auf einem 64-Bit-Prozessor mu� auf 64 Bits ausgerichtet sein.
+    \item
+      Eine 32-Bit-Variable auf einem 64-Bit-Prozessor braucht nur auf 32 Bits ausgerichtet zu sein.
+    \item
+      Eine 64-Bit-Variable auf einem 32-Bit-Prozessor braucht nur auf 32 Bits ausgerichtet zu sein.
+    \item
+      Eine 64-Bit-Variable auf einem 8-Bit-Prozessor braucht nur auf 8 Bits ausgerichtet zu sein.
+  \end{itemize}
+
+  Bei der Definition von Datenformaten tut man gut daran,
+  die Ausrichtung der Daten von vorneherein zu ber�cksichtigen,
+  um auf m�glichst vielen -- auch zuk�nftigen -- Prozessoren
+  eine m�glichst effiziente Bearbeitung zu erm�glichen.
+
+  Wenn ich beispielsweise ein Dateiformat definiere, in dem 128-Bit-Werte vorkommen,
+  ist es sinnvoll, diese innerhalb der Datei auf 128 Bits (16 Bytes) auszurichten,
+  auch wenn mein eigener Rechner nur �ber einen 64-Bit-Prozessor verf�gt.
+
+  \section{Anwender-Software}
+
+  \subsection{Relokation und Linken}
+
+  Wenn eine Software erstellt wird, ist h�ufig nicht bekannt,
+  an welcher Speicheradresse sie sich zum Zeitpunkt der Ausf�hrung befinden wird.
+
+  Ein Betriebssystem, das eine Anwender-Software vom Massenspeicher in den Arbeitsspeicher l�dt,
+  mu� daher daf�r sorgen, da� die in der Software enthaltenen Sprunganweisungen
+  auf die jeweils richtigen Sprungziele verweisen.
+  Dieser Vorgang hei�t "`Relokation"';
+  der zugeh�rige Bestandteil des Betriebssystems hei�t "`Relocator"'.
+
+  Dasselbe gilt, wenn eine Anwender-Software entwickelt wird und eine Software-Bibliothek mitbenutzt.
+  In diesem Fall m�ssen die Entwicklungswerkzeuge daf�r sorgen,
+  da� die Sprunganweisungen des Hauptprogramms in die Bibliothek
+  auf die jeweils richtigen Sprungziele verweisen.
+  Dieser Vorgang hei�t "`Linken"' (Verbinden);
+  das zugeh�rige Entwicklungswerkzeug hei�t "`Linker"'.
+
+  Wenn das Linken erst beim Laden des Programms in den Speicher stattfindet,
+  spricht man von "`dynamischem"' Linken,
+  ansonsten von "`statischem"' Linken.
+
+  Viele Prozessoren (u.\,a.\ IA-32) unterst�tzen eine "`Segmentierung"' des Speichers:
+  Das Programm arbeitet mit seinen eigenen Speicheradressen;
+  die �bersetzung in physikalische Speicheradressen erfolgt durch den Prozessor (Hardware).
+  Wenn dies genutzt werden kann, ist keine Relokation notwendig.
+
+  \subsection{Dateiformate}
+
+  Damit der Relocator und der Linker ihre Aufgabe erf�llen k�nnen,
+  k�nnen "`fertige"' Maschinenprogramme nicht "`einfach so"' auf einem Massenspeicher gespeichert werden,
+  sondern sie m�ssen zus�tzliche Informationen �ber Sprunganweisungen enthalten:
+  \begin{itemize}
+    \item
+      F�r den Relocator: Relokationstabelle\\
+      Tabelle der Sprungziele innerhalb des Programms,
+      die an den tats�chlichen Ort im Speicher angepa�t werden m�ssen
+    \item
+      F�r den Linker: Symboltabelle\\
+      Tabelle der Sprungziele au�erhalb des Programms,
+      die in das Programm eingetragen werden m�ssen
+  \end{itemize}
+
+  \begin{center}
+    \begin{picture}(15,6)(0,-1.25)
+       \footnotesize
+
+      \put(0,1.0){\line(1,0){15}}
+      \multiput(0,1)(0.1,0){151}{\line(0,1){0.1}}
+      \put(0,1.1){\line(1,0){15}}
+      \put(0,0.8){\makebox(0,0)[tl]{Ausf�hrbare Bin�rdatei}}
+      \put(0.5,1.2){$\overbrace{\rule{10mm}{0pt}}$}
+      \put(2.0,1.2){$\overbrace{\rule{10mm}{0pt}}$}
+      \put(3.5,1.2){$\overbrace{\rule{115mm}{0pt}}$}
+
+      \put(0,4.0){\line(1,0){5}}
+      \multiput(0,3.5)(0.5,0){11}{\line(0,1){0.5}}
+      \put(0,3.5){\line(1,0){5}}
+      \put(0,4.2){\makebox(0,0)[bl]{Relokationstabelle}}
+      \put(1.0,3.4){\line(0,-1){1.9}}
+      \put(3.75,3.4){\vector(1,-2){1.2}}
+      \put(4.25,3.4){\vector(1,-1){2.4}}
+      \put(4.75,3.4){\vector(2,-1){4.8}}
+
+      \put(4.95,0.7){\line(0,1){0.25}}
+      \put(4.95,0.7){\line(1,0){0.5}}
+      \put(5.45,0.7){\vector(0,1){0.25}}
+      \put(6.65,0.7){\line(0,1){0.25}}
+      \put(6.65,0.7){\line(1,0){0.8}}
+      \put(7.45,0.7){\vector(0,1){0.25}}
+      \put(9.55,0.6){\line(0,1){0.35}}
+      \put(9.55,0.6){\line(-1,0){3.2}}
+      \put(6.35,0.6){\vector(0,1){0.35}}
+      \put(7.25,0.4){\makebox(0,0)[t]{Spr�nge innerhalb des Programms}}
+
+      \put(6,4.0){\line(1,0){5}}
+      \multiput(6,3.5)(0.5,0){11}{\line(0,1){0.5}}
+      \put(6,3.5){\line(1,0){5}}
+      \put(6,4.2){\makebox(0,0)[bl]{Symboltabelle}}
+      \put(6.4,3.4){\line(-2,-1){3.8}}
+      \put(10.25,3.4){\vector(1,-2){1.2}}
+      \put(10.75,3.4){\vector(1,-1){2.4}}
+
+      \put(9.25,1.55){\line(0,1){1}}
+      \put(9.00,2.60){\makebox(0,0)[b]{Maschinenprogramm}}
+
+      \put(11.45,0.95){\vector(0,-1){1}}
+      \put(11.45,-0.10){\makebox(0,0)[t]{\texttt{scanf}}}
+      \put(13.15,0.95){\vector(0,-1){1}}
+      \put(13.15,-0.10){\makebox(0,0)[t]{\texttt{printf}}}
+      \put(12.30,-0.50){\makebox(0,0)[t]{Spr�nge aus dem Programm heraus}}
+
+    \end{picture}
+  \end{center}
+
+  Eine Datei, die ein "`fertiges"' Maschinenprogramm,
+  eine Relokationstabelle und Symboltabellen f�r den statischen und dynamischen Linker enth�lt,
+  hei�t "`Objekt-Datei"'.
+
+  Eine Datei, die ein "`fertiges"' Maschinenprogramm,
+  eine Relokationstabelle und eine Symboltabelle f�r den dynamischen Linker enth�lt,
+  hei�t "`ausf�hrbare Bin�rdatei"'.
+
+  F�r Objekt-Dateien und ausf�hrbare Dateien gibt es herstellerspezifische und
+  hersteller�bergreifende Standards (z.\,B.\ a.out, COFF, ELF).
+ 
+  �bliche Dateiendungen sind
+  \begin{itemize}
+    \item
+      f�r Objekt-Dateien: .o (Unix), .obj (MS-Windows)
+    \item
+      f�r ausf�hrbare Bin�rdateien: keine Endung (Unix), .com, .exe, .scr (MS-Windows)
+  \end{itemize}
+
+  \bigbreak
+
+  H�ufig werden mehrere Objekt-Dateien zu einer "`Bibliothek"' zusammengefa�t.
+
+  �bliche Dateiendungen sind
+  \begin{itemize}
+    \item
+      f�r statische Bibliotheken: .a (Unix), .lib (MS-Windows)
+    \item
+      f�r dynamische Bibliotheken: .so (Unix), .dll (MS-Windows)
+  \end{itemize}
+
+  Derjenige Teil des Betriebssystems, der eine ausf�hrbare Datei in den Arbeitsspeicher l�dt
+  und dabei ggf.\ den Relocator und den Linker aufruft, hei�t "`Loader"'.
+
+  \goodbreak
+  \subsection{Die Toolchain}
+
+  Wir k�nnen nun die Werkzeuge,
+  die vom Schreiben des Quelltextes bis zur Ausf�hrung des Programms verwendet werden,
+  zu einer Kette, der "`Toolchain"', zusammenfassen:
+
+  \begin{center}
+    \newcommand{\arrowwithtext}[1]{%
+      \begin{picture}(0,1)
+        \put(0,1){\vector(0,-1){1}}
+        \put(0.1,0.5){\makebox(0,0)[l]{#1}}
+      \end{picture}}
+
+    \framebox{\shortstack{\strut menschliche Gedanken}}
+
+    \arrowwithtext{Texteditor}
+
+    \framebox{\shortstack{\strut C-Quelltext\\
+    (z.\,B.\ hello.c)}}
+
+    \arrowwithtext{Compiler}
+
+    \framebox{\shortstack{\strut Assembler-Quelltext\\
+    (z.\,B.\ hello.s, hello.asm)}}
+
+    \arrowwithtext{Assembler}
+
+    \framebox{\shortstack{\strut Objekt- und Bibliothek-Dateien\\
+    (z.\,B.\ hello.o, hello.obj)}}
+
+    \arrowwithtext{Linker}
+
+    \framebox{\shortstack{\strut ausf�hrbare Bin�rdatei\\
+    (z.\,B.\ hello, hello.exe)}}
+
+    \arrowwithtext{Loader}
+
+    \framebox{\shortstack{\strut Programm im Speicher bereit zur Ausf�hrung}}
+  \end{center}
+
+  Manche dieser Werkzeuge k�nnen zu einer einzigen Software zusammengefa�t sein:
+  \begin{itemize}
+    \item
+      Das Programm \verb|gcc| fa�t Compiler, Assembler und Linker in einem einzigen Aufruf zusammen.
+      Was jeweils aufgerufen wird, entscheidet das Programm anhand der Endungen der �bergebenen Dateien.
+    \item
+      Eine "`Entwicklungsumgebung"' (z.\,B.\ Eclipse)
+      umfa�t typischerweise Texteditor, Compiler, Assembler und Linker
+      plus weitere Werkzeuge.
+  \end{itemize}
+
+%  \subsection{Das Programm \texttt{make}}
+%
+%  Das Programm \verb|make| dient dazu, den Aufruf der einzelnen Entwicklungswerkzeuge zu automatisieren.
+%
+%  Eine Datei \verb|Makefile| enth�lt Regeln der Gestalt
+%  \begin{verbatim}
+%    Ziel: Quellen
+%            Aktionen\end{verbatim}
+
+  \subsection{Besonderheiten von Mikro-Controllern}
+
+  Auf einem Personal-Computer l�uft st�ndig eine Software, das Betriebssystem,
+  die in der Lage ist, Anwenderprogramme in den Speicher zu laden
+  und durch den Prozessor ausf�hren zu lassen.
+
+  Ein Mikro-Controller enth�lt kein Betriebssystem.
+  Damit ein Mikro-Controller sinnvolle Befehle ausf�hrt,
+  m�ssen wir also auf andere Weise daf�r sorgen,
+  da� sie sich im Arbeitsspeicher an der richtigen Stelle befinden.
+  \begin{itemize}
+    \item
+      ROM:
+      Der Hersteller liefert den Mikro-Controller mit einem nur lesbaren,
+      bereits mit den richtigen Werten beschriebenen Speicher aus.
+      Dies lohnt sich bei gro�en St�ckzahlen.
+    \item
+      In-System Programmer (ISP):
+      Der Mikro-Controller enth�lt Flash-Speicher, der von au�en beschrieben werden kann,
+      z.\,B.\ mit Hilfe einer Zusatzschaltung (ISP) von einem Personal-Computer aus.
+    \item
+      Boot-Loader:
+      Der Mikro-Controller enth�lt Flash-Speicher,
+      der abschnittweise von der eigenen Software beschrieben werden kann.
+      Ein Teil des Speichers enth�lt ein Programm (Boot-Loader),
+      das �ber externe Leitungen (z.\,B.\ eine serielle Schnittstelle)
+      Daten entgegennehmen und in den verbleibenden Speicher schreiben kann.
+  \end{itemize}
+
+  In jedem Fall ist es notwendig, die Relokation bereits vor dem Aufspielen der Software vorzunehmen.
+  G�ngige Formate ausf�hrbarer Dateien (z.\,B.\ ELF)
+  sind zur direkten Ausf�hrung auf einem Mikro-Controller nicht geeignet.
+  Stattdessen mu� -- als letzter Schritt der Software-Entwicklung --
+  ein Relocator anhand der ELF-Datei ein Abbild des Speichers des Mikro-Controllers erstellen.
+
+  Das Speicherabbild kann unmittelbar als Bin�rdatei gespeichert werden
+  oder als Text-Darstellung einer Bin�rdatei, z.\,B.\ im Intel-HEX-Format (Dateiendung: .hex).
+
+  Das so entstandene Speicherabbild kann dann mit Hilfe eines ISP oder eines Boot-Loaders
+  auf den Mikro-Controller aufgespielt werden (Sprechweise: "`Download"'),
+  oder man l��t es dem Hersteller zukommen, damit dieser eine Serie der Mikro-Controller fertigt,
+  bei denen die Software bereits fertig im ROM liegt.
+
+  \bigskip
+
+  Die Werkzeuge zur Programmierung von Mikro-Controllern
+  laufen nicht auf dem Mikro-Controller selbst, sondern auf einem Personal-Computer.
+
+  Die Werkzeuge erzeugen also Code, der nicht auf demselben Rechner lauff�hig ist,
+  sondern auf einem anderen, dem Mikro-Controller.
+  Derartige Werkzeuge hei�en "`Cross-Werkzeuge"' (Cross-Compiler, Cross-Assembler, Cross-Linker).
+
+  \section{Bus-Systeme}
+
+  \subsection{Konzept\label{Bus-Systeme: Konzept}}
+
+  Die \emph{International Electrotechnical Commission} (IEC) definiert ein Bus-System als
+  \begin{quote}
+    "`ein System zur Daten�bertragung zwischen mehreren Teilnehmern �ber einen gemeinsamen
+    �bertragungsweg, bei dem die Teilnehmer nicht an der Daten�bertragung zwischen anderen
+    Teilnehmern beteiligt sind."'
+
+    \strut\hfill \url{http://www.electropedia.org/iev/iev.nsf/display?openform\&ievref=351-32-10}\\
+    \strut\hfill �bersetzung: Wikipedia -- Bus (Datenverarbeitung)
+  \end{quote}
+
+  Kurz: Ein Bus-System ist Daten�bertragung "`ohne Umsteigen"'.
+  Sobald Teilnehmer daf�r zust�ndig sind, die Daten an andere Teilnehmer weiterzuleiten
+  (z.\,B.\ Router im Internet),
+  handelt es sich nicht mehr um ein Bus-System im engeren Sinne,
+  sondern um eine Kombination mehrerer Bus-Systeme.
+
+  In der Rechnertechnik finden sich Bus-Systeme 
+  \begin{itemize}
+    \item
+      von Schaltkreis zu Schaltkreis im Prozessor,
+    \item
+      zwischen Prozessor und Speicher,
+    \item
+      zwischen Prozessor und Ger�t,
+    \item
+      zwischen Prozessor und Controller,
+    \item
+      zwischen Controller und Ger�t,
+    \item
+      zwischen Netzwerkkarte und Netzwerkkarte
+  \end{itemize}
+  \dots\ und in zahlreichen weiteren Anwendungen.
+
+  \subsection{Zu ber�cksichtigen}
+
+  Damit Daten�bertragung funktioniert,
+  sind beim Entwurf und Aufbau von Bus-Systemen zahlreiche Aspekte zu ber�cksichtigen.
+  Hier ein �berblick.
+
+  \begin{itemize}
+    \item
+      \textbf{Elektromagnetische St�rungen}
+      
+      Elektromagnetische Impulse in der Umgebung der Leitungen
+      k�nnen unerw�nschte St�rsignale induzieren.
+      Umgekehrt k�nnen in der Leitung �bertragene Signale elektromagnetische Wellen erzeugen, 
+      die Funk�bertragungen in der Umgebung st�rend beeinflussen.
+      
+      Zu den Ma�nahmen zur Vermeidung elektromagnetischer St�rungen geh�ren:
+      \begin{itemize}
+        \item
+          Abschirmung
+
+        \item
+          symmetrische Signal�bertragung
+
+          Dasselbe Signal wird in zwei Leitungen mit entgegengesetzter Polarit�t �bertragen.
+          Wenn eine St�rung das eine Signal abschw�cht, verst�rkt sie gleichzeitig das andere.
+
+        \item
+          unterschiedliche Verdrillung ("`Twisted Pair"')
+
+          Mehrere Leiter in demselben Kabel k�nnen sich gegenseitig beeinflussen.
+          Wenn man dabei jeweils die beiden Leitungen einer symmetrischen Signal�bertragung
+          mit unterschiedlicher Gangh�he verdrillt,
+          kommen sich �ber die Kabell�nge verteilt stets unterschiedliche Kabel nahe,
+          so da� sich gegenseitige St�rungen herausmitteln.
+
+        \item
+          \dots
+      \end{itemize}
+    \goodbreak
+    \item
+      \textbf{Reflexion am Kabelende}
+
+      Bei hohen �bertragungsgeschwindigkeiten kann die Ausbreitung des Signals in der Leitung
+      nicht mehr als "`unendlich schnell"' angenommen werden.
+      In dieser genauen Betrachtung wird nicht die gesamte Leitung gleichzeitig auf z.\,B.\ +5\,V gezogen,
+      sondern das Signal breitet sich bis zum Kabelende aus, wird dort reflektiert,
+      wandert wieder zur�ck, wird wieder reflektiert, usw.
+      Will man diesen Einschwingvorgang nicht abwarten, sondern sofort das n�chste Signal senden,
+      wird die Reflexion am Kabelende zum Problem.
+      Folgende Gegenma�nahmen sind �blich:
+
+      \begin{itemize}
+        \item
+          Abschlu�widerstand ("`Terminator"')
+
+          Ein ohmscher Widerstand, der dem Wellenwiderstand der Leitung entspricht,
+          d�mpft das Signal am Leitungsende herab und verhindert so die Reflexion.
+          %
+          (Beispiele: SCSI, BNC-Netz)
+
+        \item
+          ignorieren
+
+          Bei niedrigen �bertragungsgeschwindigkeiten und/oder kurzen Leitungen
+          spielen die o.\,a.\ Betrachtungen keine Rolle.
+          Wer hier Kompromisse eingeht, kann auf Terminierung verzichten.
+          
+          (Beispiel: IDE/ATAPI/PATA)
+
+        \item
+          (Auch hier gibt es weitere Methoden, z.\,B.\ aktive Terminierung.)
+      \end{itemize}
+    \goodbreak
+    \item
+      \textbf{Kabelwege}
+
+      Verschiedene Einsatzgebiete erfordern verschiedene Verkabelungen.
+      \begin{itemize}
+        \item
+          Wenige Leitungen (seriell) vs.\ viele (parallel)
+
+%        \item
+%          synchron/asynchron: mit/ohne festen Takt
+
+        \item
+          Punkt-zu-Punkt-Verbindung vs.\ Adressierung
+
+          Eine Kommunikationsverbindung zwischen genau zwei Teilnehmern\\
+          hei�t Punkt-zu-Punkt-Verbindung.
+
+          Wenn man viele Teilnehmer an dieselben Leitungen anschlie�t
+          und trotzdem mit jedem individuell kommunizieren will,
+          mu� aus den Signalen hervorgehen, welcher Teilnehmer gemeint ist.
+          Dieses Konzept hei�t Adressierung.
+
+          (In manchen Kontexten wird erst dann von einem Bus-System gesprochen,
+          wenn es mehr als zwei Teilnehmer und Adressierung gibt.
+          Im Gegensatz zu einer Punkt-zu-Punkt-Verbindung
+          wird ein solches System dann als "`busf�hig"' bezeichnet.)
+
+        \item
+          Topologie: linear, ring-, sternf�rmig, kaskadierbar
+
+          Bei kurzen Wegen und/oder niedrigen �bertragungsgeschwindigkeiten
+          kann die Form der Leitungen beliebig sein.
+          Bei langen Wegen und hohen �bertragungsgeschwindigkeiten
+          m�ssen Reflexionen an Verzweigungen und an Kabelenden (s.\,o.)
+          ber�cksichtigt und ggf.\ vermieden werden.
+      \end{itemize}
+
+    \item
+      \textbf{Weitere Aspekte}
+
+      In der Nachfolgeveranstaltung "`Vertiefung Rechner- und Netzwerktechnik"' werden u.\,a.\
+      die folgenden Aspekte angesprochen werden:
+      \begin{itemize}
+        \item
+          Kollisionsvermeidung
+          
+          Wie vermeidet man es, da� mehrere Teilnehmer gleichzeitig senden\\
+          und sich dadurch gegenseitig st�ren?
+        \item
+          Sicherheitsaspekte
+
+          Wie kann man vermeiden oder es zumindest erkennen,
+          da� sich unberechtigte Teilnehmer an der Kommunikation beteiligen?
+          Wie stellt man die Authentizit�t einer empfangenen Nachricht sicher?
+        \item
+          u.\,v.\,a.
+      \end{itemize}
+  \end{itemize}
+
+  \subsection{Beispiele}
+
+  Im folgenden sollen die Beispiele aus Abschnitt \ref{Bus-Systeme: Konzept}
+  hinsichtlich der o.\,a.\ Aspekte eingeordnet werden.
+
+  \begin{itemize}
+    \item
+      von Schaltkreis zu Schaltkreis im Prozessor:\\
+      parallel, Punkt-zu-Punkt
+    \smallskip
+    \item
+      zwischen Prozessor und Speicher:\\
+      Adre�- und Datenbus: parallel, Punkt-zu-Punkt
+
+      \begin{picture}(16,5)(-2,-4.7)
+        \put(0.8,-4.5){\includegraphics[height=4.5cm]{motherboard.jpg}}
+        \put(7.8,-2.8){\includegraphics[height=3.5cm]{motherboard-ausschnitt.jpg}}
+        \put(7.8,0.7){\line(-1,-1){2.5}}
+        \put(7.8,-2.8){\line(-1,0){2.5}}
+      \end{picture}
+
+      Auf den Hauptplatinen (Motherboards) aktueller Computer erkennt man zahlreiche
+      parallel verlaufende Leitungen (von m�glichst gleicher L�nge).
+    \bigskip
+    \item
+      zwischen Prozessor und Ger�t:\\
+      I$^2$C: seriell, mit Adressierung
+
+      Beispiel: Kompa�modul an RP6
+
+      \begin{picture}(16,4.5)(0,-4.2)
+        \put(0,-3.5){\includegraphics[height=3.5cm]{kompassmodul-an-roboter.jpg}}
+        \put(5,-4.3){\includegraphics[height=4.5cm]{kompassmodul.jpg}}
+        \put(5,0.2){\line(-2,-1){2.2}}
+        \put(5,-4.3){\line(-1,1){2.2}}
+      \end{picture}
+    \bigskip
+    \item
+      zwischen Prozessor und Controller (auf dem Motherboard):\\
+      parallel, mit Adressierung
+     
+    \bigskip
+    \item
+      zwischen Controller und Ger�t:
+      \begin{itemize}
+        \item
+          IEEE 1284 (Centronics): parallel, Punkt-zu-Punkt
+        \item
+          RS-232: seriell, Punkt-zu-Punkt
+        \item
+          RS-485, USB, CAN: seriell, mit Adressierung
+      \end{itemize}
+      \begin{picture}(16,3.55)
+        \put(0,0){\includegraphics[width=10.9cm]{motherboard-anschluesse.jpg}}
+        \put(5.45,-0.2){\makebox(0,0)[t]{\footnotesize Anschl�sse an der R�ckseite eines PC-Motherboards}}
+        \color{white}\bf
+        \put(3.05,1.5){\mbox{IEEE 1284}}
+        \put(2.15,0.20){\mbox{RS-232}}
+        \put(7.7,0.20){\mbox{USB}}
+      \end{picture}
+    \bigskip
+    \item
+      zwischen Controller und Festplatte:
+      \begin{itemize}
+        \item
+          SCSI: parallel, terminiert,\\
+          mit Adressierung, linear
+        \smallskip
+        \item
+          PATA (�ltere Bezeichnungen: IDE, ATAPI):\\
+          parallel, nicht terminiert,\\
+          mit Adressierung (Master/Slave), linear
+        \smallskip
+        \item
+          SATA: seriell, Punkt-zu-Punkt
+
+          \begin{picture}(16,4.5)(0,1.1)
+            \put(0,1.8){\includegraphics[width=4.2cm]{festplatte-pata.jpg}}
+            \put(2.1,1.6){\makebox(0,0)[t]{\footnotesize Festplatte an PATA-Datenkabel}}
+            \put(5,1.8){\includegraphics[width=4.2cm]{festplatte-sata.jpg}}
+            \put(7.1,1.6){\makebox(0,0)[t]{\footnotesize Festplatte an SATA-Datenkabel}}
+          \end{picture}
+
+          Obwohl bei PATA 16 Leitungen zur Daten�bertragung zur Verf�gung stehen und bei SATA nur eine,
+          hat SATA h�here �bertragungsraten.
+          Der Grund daf�r liegt darin, da� die Anforderung
+          des \emph{exakt gleichzeitigen} Bereitstellens der Datenbits
+          an den nicht terminierten parallelen Leitungen die Taktfrequenz derma�en begrenzt,
+          da� eine serielle �bertragung der Daten mit wesentlich h�herer Taktfrequenz
+          letztlich effizienter ist.
+      \end{itemize}
+    \bigskip
+    \goodbreak
+    \item
+      zwischen Netzwerkkarte und Netzwerkkarte:\\
+      seriell, mit Adressierung
+      \begin{itemize}
+        \item
+          Token Ring: ringf�rmig
+        \smallskip
+        \item
+          BNC-Ethernet: linear, terminiert
+        \smallskip
+        \item
+          Twisted-Pair-Ethernet: Punkt-zu-Punkt,\\
+          mit Hubs/Switches: sternf�rmig
+        \smallskip
+        \item
+          WLAN: sternf�rmig (Access-Point),\\
+          im Ad-Hoc-Modus: beliebige Topologie
+        \par
+        \begin{picture}(16,11)(0,-1)
+          \put(0,7.0){\includegraphics[width=4.2cm]{bnc-netz-ende.jpg}}
+          \put(2.1,6.8){\makebox(0,0)[t]{\footnotesize BNC-Netz: Endpunkt (terminiert)}}
+          \put(0,3.4){\includegraphics[width=4.2cm]{bnc-netz-mitte.jpg}}
+          \put(2.1,3.2){\makebox(0,0)[t]{\footnotesize BNC-Netz: Mitte (vorbeigef�hrt)}}
+          \put(0,0){\includegraphics[width=4.2cm]{bnc-netz-falsch.jpg}}
+          \put(2.1,-0.2){\makebox(0,0)[t]{\footnotesize BNC-Netz: \textbf{falsch} angeschlossen}}
+          \put(5.5,5.5){\includegraphics[width=4.2cm]{tp-netz.jpg}}
+          \put(7.6,5.3){\makebox(0,0)[t]{\footnotesize Twisted-Pair-Netz}}
+          \put(5.5,0.3){\includegraphics[width=4.2cm]{wlan-access-point.jpg}}
+          \put(7.6,0.1){\makebox(0,0)[t]{\footnotesize WLAN-Access-Point}}
+        \end{picture}
+      \end{itemize}
+  \end{itemize}
+
+  \subsection{Beispiel: Benutzung des I$^2$C-Busses}
+
+  Als konkretes Beispiel f�r die Anwendung eines Bus-Systems
+  sei hier das Auslesen des bereits erw�hnten Kompa�-Moduls f�r den RP6-Roboter n�her ausgef�hrt.
+
+  Eine C-Funktion zum Auslesen der Kompa�werte lautet:
+ 
+  \begingroup
+    \small
+    \begin{verbatim}
+void read_compass (uint16_t *x, uint16_t *y)
+{
+  I2CTWI_transmit2Bytes (0x60, 0x00, 0x02);  // set coil
+  mSleep (1);
+  I2CTWI_transmit2Bytes (0x60, 0x00, 0x04);  // reset coil
+  mSleep (5);
+  uint8_t result[5];
+  I2CTWI_transmit2Bytes (0x60, 0x00, 0x01);  // Messung starten
+  mSleep (5);                                // 5ms warten, bis Sensor fertig gemessen hat
+  I2CTWI_transmitByte (0x60, 0x01);          // Leseindex setzen
+  I2CTWI_readBytes (0x61, result, 4);        // lesen: msb x, lsb x, msb y, lsb y
+  result[0] &= 0b00001111;                   // Unwichtge Bits vom msb abschneiden
+  result[2] &= 0b00001111;
+  *x = (result[0] << 8) + result[1];         // Wert berechnen aus msb und lsb
+  *y = (result[2] << 8) + result[3];
+}\end{verbatim}
+  \endgroup
+
+  Das Senden von Befehlen an das Kompa�modul erfolgt immer nach demselben Schema.
+ 
+  Beispiel: \verb|I2CTWI_transmit2Bytes (0x60, 0x00, 0x01);  // Messung starten|
+  \begin{itemize}
+    \item
+      Sende das Byte \verb|0x60|
+
+      Hiermit wird das Ger�t "`Kompa�modul"' zum Schreiben adressiert.
+
+      Nachfolgende Bytes werden vom Kompa�modul verarbeitet\\
+      und von eventuellen weiteren an denselben I$^2$C-Bus angeschlossenen Ger�ten ignoriert.
+
+    \item
+      Sende das Byte \verb|0x00|
+
+      Hiermit wird das "`Register Nr.\ 0"' innerhalb des Kompa�moduls zum Schreiben adressiert.
+      
+
+    \item
+      Sende das Byte \verb|0x01|
+
+      Dies sind die eigentlichen Nutzdaten -- in diesem Fall der Befehl Nr.\ 1 "`Messung starten"'.
+  \end{itemize}
+
+  Das Auslesen von Daten erfolgt analog mit einer um 1 erh�hten Adresse:\\
+  Zum Lesen wird das Kompa�modul �ber die Adresse \verb|0x61| angesprochen\\
+  anstatt, wie zum Schreiben, \verb|0x60|.
+
+  Die Verwendung der Funktion aus einem Programm heraus erfolgt wie folgt:
+
+  \begin{verbatim}
+    uint16_t compass_x, compass_y;
+    read_compass (&compass_x, &compass_y);\end{verbatim}
+
+  Als konkrete Anwendung k�nnen wir die Funktion einsetzen,
+  um das Kompa�modul zu kalibrieren und den Roboter in eine Himmelsrichtung auszurichten.
+
+  Wir lassen den Roboter auf der Stelle rotieren
+  und rufen dabei wiederholt die Funktion \verb|read_compass()| auf.
+  Wenn wir die $x$- und $y$-Werte aufzeichnen und gegeneinander auftragen,
+  erhalten wir n�herungsweise eine Ellipse:
+
+  \begin{center}
+    \vspace{-1.5\medskipamount}
+    \includegraphics[height=6cm]{kompass-messung.png}%
+    \begin{picture}(0,0)(6.1,0.5)
+      \put(0,3){\vector(1,0){6}}
+      \put(5.75,2.9){\makebox(0,0)[t]{x}}
+      \put(3,0){\vector(0,1){6}}
+      \put(2.9,5.75){\makebox(0,0)[r]{y}}
+    \end{picture}%
+    \vspace{1.5\medskipamount}
+  \end{center}
+
+  Um nun den Roboter in eine Himmelsrichtung auszurichten, k�nnen wir z.\,B.\ folgenderma�en vorgehen:
+  \begin{itemize}
+    \item
+      Achsen normieren:
+
+      Wir berechnen den Mittelpunkt (Mitte zwischen Maximal- und Minimalwerten)\\
+      und subtrahieren ihn von den Me�werten.
+    \item
+      In den derart normierten Me�werten markiert der Nulldurchgang einer Achse eine Himmelsrichtung.
+
+      Beispiel: $x = 0$ markiert die Nord-S�d-Richtung.
+    \item
+      Das Vorzeichen der jeweils anderen Achse sagt aus, welche der beiden Himmelsrichtungen es ist.
+
+      Beispiel: $x = 0$ zusammen mit $y > 0$ markiert Ausrichtung nach Norden.
+  \end{itemize}
+  Um also z.\,B.\ den Roboter nach Norden auszurichten,
+  k�nnen wir ihn zun�chst grob drehen, bis $y$ positiv ist,
+  und anschlie�end fein drehen, bis $x = 0$ ist.
+
+  \bigskip
+
+  Hinweis f�r die Praxis: Der Funktionsaufruf \verb|I2CTWI_readBytes (0x61, result, 4);|
+  �berschreibt in der Vari"-ablen \verb|result[]| nicht nur die vier angeforderten Bytes,
+  sondern noch ein f�nftes Byte f�r interne Zwecke.
+  (Daher: \verb|uint8_t result[5];| und nicht \verb|uint8_t result[4];|)
+
+  \section{Pipelining}
+
+  \subsection{Konzept}
+
+  \newcommand{\wm}{\raisebox{-0.3cm}{\includegraphics[width=1.0cm]{Waschen_30.pdf}}}
+  \newcommand{\wt}{\raisebox{-0.3cm}{\includegraphics[width=1.0cm]{Trommeltrocknen.pdf}}}
+  \newcommand{\be}{\raisebox{-0.3cm}{\includegraphics[width=1.0cm]{Buegeln.pdf}}}
+
+  Wenn eine Aufgabe unter Verwendung mehrerer Ressourcen (z.\,B.\ Werkzeuge)
+  wiederholt ausgef�hrt werden soll,
+  ist es sinnvoll, die Aufgabe so in Teilaufgaben zu zerlegen,
+  da� die Teilaufgaben parallel unter Verwendung der jeweiligen Ressourcen ausgef�hrt werden.
+  Dieses Konzept hei�t "`Pipelining"'.
+
+  Zur Illustration verwenden wir ein Beispiel aus dem Alltag.
+  \begin{itemize}
+    \item
+      Es sollen drei Ladungen W�sche gewaschen werden.
+    \item
+      Der Waschvorgang besteht aus den Teilaufgaben\\
+      "`Waschen"' \wm, "`Trocknen"' \wt und "`B�geln"' \be.
+      \label{WaschenTrocknenBuegeln}
+      \hfill
+      \begin{minipage}[b]{4.5cm}
+        \begin{center}
+          \vspace*{-2cm}
+          \wm\quad\wt\quad\be\\
+          \figurecaptionurlurl{Symbolbilder f�r "`Waschen"', "`Trocknen"' und "`B�geln"'}%
+            {http://de.wikipedia.org/wiki/Textilpflegesymbol}%
+            {23.\,1.\,2012}%
+            {http://de.wikipedia.org/wiki/Benutzer:Andre_Riemann}%
+            {\pd}
+        \end{center}
+        \vspace*{-0.5cm}
+      \end{minipage}
+    \item
+      Die Teilaufgaben m�ssen in der richtigen Reihenfolge ausgef�hrt werden:\\
+      Die W�sche ("`Daten"') "`flie�t"' von einer Ressource zur n�chsten -- "`Datenflu�"'.
+    \item
+      Jede Teilaufgabe belegt jeweils eine Ressource (Waschmaschine, Trockner, B�geleisen).
+  \end{itemize}
+
+  Ohne Pipelining sieht der Waschvorgang folgenderma�en aus:
+  \begin{center}
+    \begin{picture}(12,3.5)
+      \thicklines
+      \put(1,1){\wm}
+      \put(2,1){\wt}
+      \put(3,1){\be}
+      \put(4,2){\wm}
+      \put(5,2){\wt}
+      \put(6,2){\be}
+      \put(7,3){\wm}
+      \put(8,3){\wt}
+      \put(9,3){\be}
+      \put(-0.1,0.5){\vector(1,0){11.1}}
+      \put(11.5,0.5){\makebox(0,0){$t$}}
+      \put(10.5,1.0){\makebox(0,0)[r]{ineffizient}}
+    \end{picture}
+  \end{center}
+  \goodbreak
+  Um den Waschvorgang effizienter zu gestalten,
+  k�nnen wir, w�hrend die erste Waschladung im Trockner ist,
+  bereits die zweite in der Waschmaschine waschen usw.
+
+  Die Zerlegung der Aufgabe in drei parallel ausf�hrbare Teilaufgaben
+  nennen wir eine "`dreistufige Pipeline"'.
+  \begin{center}
+    \begin{picture}(12,3.5)
+      \thicklines
+      \put(1,1){\wm}
+      \put(2,1){\wt}
+      \put(3,1){\be}
+      \put(2,2){\wm}
+      \put(3,2){\wt}
+      \put(4,2){\be}
+      \put(3,3){\wm}
+      \put(4,3){\wt}
+      \put(5,3){\be}
+      \put(-0.1,0.5){\vector(1,0){11.1}}
+      \put(11.5,0.5){\makebox(0,0){$t$}}
+      \put(10.5,1.0){\makebox(0,0)[r]{effizient}}
+    \end{picture}
+  \end{center}
+  Wenn nur eine Waschmaschine vorhanden ist,
+  kann die zweite Ladung W�sche solange nicht gewaschen werden,
+  bis die Waschmaschine wieder frei ist.
+
+  Dies nennt man einen "`Ressourcenkonflikt"'.
+  \begin{center}
+    \begin{picture}(12,3.5)
+      \thicklines
+      \put(1,1){\wm}
+      \put(2,1){\wt}
+      \put(3,1){\be}
+      \put(1,2){\wm}
+      \put(2,2){\wt}
+      \put(3,2){\be}
+      \put(1,3){\wm}
+      \put(2,3){\wt}
+      \put(3,3){\be}
+      \put(-0.1,0.5){\vector(1,0){11.1}}
+      \put(11.5,0.5){\makebox(0,0){$t$}}
+      \put(10.5,1.0){\makebox(0,0)[r]{noch effizienter}}
+      \color{red}
+      \thicklines
+      \put(0.5,0.8){\line(4,1){10}}
+      \put(0.5,3.3){\line(4,-1){10}}
+      \put(7.5,1.7){\mbox{\shortstack{Ressourcen-\\konflikt}}}
+    \end{picture}
+  \end{center}
+  Eine andere Randbedingung ist die Reihenfolge der Teilaufgaben:
+  Es ist nicht zielf�hrend, eine Ladung W�sche zu trocknen, bevor sie gewaschen wurde.
+
+  Entsprechendes gilt im Prozessor:
+  Es ist nicht m�glich, Rechenergebnisse weiterzuverarbeiten, bevor diese vorliegen.
+
+  Dies nennt man einen "`Datenkonflikt"'.
+  \begin{center}
+    \begin{picture}(12,3.5)
+      \thicklines
+      \put(1,1){\wm}
+      \put(2,1){\wt}
+      \put(3,1){\be}
+      \put(1,2){\wt}
+      \put(2,2){\be}
+      \put(3,2){\wm}
+      \put(1,3){\be}
+      \put(2,3){\wm}
+      \put(3,3){\wt}
+      \put(-0.1,0.5){\vector(1,0){11.1}}
+      \put(11.5,0.5){\makebox(0,0){$t$}}
+      \put(10.5,1.0){\makebox(0,0)[r]{noch effizienter}}
+      \color{red}
+      \thicklines
+      \put(0.5,0.8){\line(4,1){10}}
+      \put(0.5,3.3){\line(4,-1){10}}
+      \put(7.5,1.7){\mbox{\shortstack{Daten-\\konflikt}}}
+    \end{picture}%
+  \end{center}
+
+  \subsection{Arithmetik-Pipelines}
+
+  \newcommand{\insns}[1]{%
+    \begin{picture}(0,0)
+      \put(0,0){\line(1,0){2}}
+      \put(2,0){\line(0,-1){#1}}
+      \put(2,-#1){\vector(-1,0){2}}
+    \end{picture}}
+
+  \newcommand{\insnsup}[1]{%
+    \begin{picture}(0,0)
+      \put(0,0){\line(1,0){2}}
+      \put(2,0){\line(0,1){#1}}
+      \put(2,#1){\vector(-1,0){2}}
+    \end{picture}}
+
+  In Kapitel \ref{Speicher- und Registerarchitekturen}
+  haben wir bereits einen Register-Stack kennengelernt.
+
+  Eine Arithmetik-Pipeline ist gewisserma�en ein "`Register-FIFO"':
+  In einem Assemblerbefehl wird eine Rechenaufgabe abgeschickt;
+  eine genau definierte Anzahl Befehle sp�ter ("`L�nge der Pipeline"')
+  kann das Ergebnis abgerufen werden.
+
+  \bigskip
+
+  Beispiel: Berechnung des Skalarprodukts zweier Vektoren der L�nge 3
+  \begin{displaymath}
+    S = \left(\begin{array}{c}a_1\\a_2\\a_3\end{array}\right)
+    \cdot\left(\begin{array}{c}b_1\\b_2\\b_3\end{array}\right)
+    = a_1 \cdot b_1
+    + a_2 \cdot b_2
+    + a_3 \cdot b_3
+  \end{displaymath}
+  mit einer Pipeline der L�nge 3.
+
+  Zur Vereinfachung verwenden wir anstelle von echten Assembler-Befehlen einen Pseudo-Code:
+  Mit dem Befehl \texttt{push} wird eine Rechenaufgabe in den "`FIFO"' geschoben.
+  Drei Befehle sp�ter liegt das Rechenergebnis vor
+  und kann mit der "`Funktion"' \texttt{pop} abgerufen und weiterbearbeitet werden.
+  Der -- h�ufig tats�chlich vorhandene -- Assemblerbefehl \texttt{nop}
+  steht f�r "`no operation"'.
+  Der Prozessor macht in diesem Fall nichts Neues, rechnet aber im Hintergrund weiter.
+
+  \begin{quote}
+    \begingroup
+      \setlength{\unitlength}{\baselineskip}%
+      \begin{picture}(0,0)(-5.8,-0.25)
+        \color{red}
+        \put(0,0.0){\insns{3}}
+        \put(0.5,-1){\insns{2.9}}
+        \put(1.0,-2){\insns{3}}
+        \put(0.5,-4.1){\insns{2.8}}
+        \put(0.5,-7.1){\insns{2.9}}
+        \put(-1.5,-9.25){\shortstack{Daten-\\konflikt}}
+      \end{picture}%
+      \tt
+      push $a_1 \cdot b_1$\\
+      push $a_2 \cdot b_2$\\
+      push $a_3 \cdot b_3$\\
+      $s_1$ = pop\\
+      push $s_1 + \mbox{pop}$\\
+      $s_3$ = pop\\
+      nop\\
+      push $s_3 + \mbox{pop}$\\
+      nop\\
+      nop\\
+      $S$ = pop\\
+    \endgroup
+    \begin{picture}(0,0)
+      \color{red}
+      \put(5,3.8){\makebox(0,0)[l]{$\left.\rule{0pt}{1.2cm}\right\}$ effizient: Pipeline gef�llt}}
+      \put(5,1.4){\makebox(0,0)[l]{$\left.\rule{0pt}{1.2cm}\right\}$ ineffizient: "`Blasen"'}}
+    \end{picture}
+  \end{quote}
+  An mehreren Stellen ist die Pipeline nicht komplett gef�llt,
+  und manche Ressourcen bleiben ungenutzt.\\
+  Man nennt dieses Ph�nomen "`Blasen"' und erkennt es an den \texttt{nop}-Befehlen.\\
+  Blasen entstehen als Folge von Konflikten -- hier: Datenkonflikten.
+
+  Durch die Blasen wirkt der Code eher ineffizient
+  gegen�ber einer kompakteren Schreibweise ohne Pipeline:
+  \begin{quote}
+    \tt
+    $s_1 = a_1 \cdot b_1$\\
+    $s_2 = a_2 \cdot b_2$\\
+    $s_3 = a_3 \cdot b_3$\\
+    $S = s_1 + s_2$\\
+    $S = S + s_3$
+  \end{quote}
+  Tats�chlich jedoch m�ssen die Nicht-Pipeline-Befehle bei jeder Rechenaufgabe warten,
+  bis das Ergebnis vorliegt. In diesem Beispiel w�ren das drei Taktzyklen;
+  wir k�nnen uns also unter jeden Nicht-Pipeline-Befehl zwei \texttt{nop}s denken.
+
+  Mit Pipeline ben�tigt die Rechnung 11 Taktzyklen; ohne Pipeline sind es 15.
+  Bei l�ngeren Rechnungen ist der Unterschied deutlicher.
+
+  \bigskip
+
+  Als reales Beispiel wird im folgenden die Addition zweier beliebig langer Vektoren
+  mittels einer dreistufigen Pipeline auf einem i860-Prozessor gezeigt.
+
+  Der erste Teil dient der Vorbereitung.
+  Hier werden Index-Variablen und Zeiger auf die beiden Arrays initialisiert.
+  Dies soll hier nicht n�her vertieft werden und wird nur der Vollst�ndigkeit halber aufgelistet.
+  \begin{verbatim}
+      .align 8
+    .globl _vadd
+      nop
+    _vadd:
+      shr 1,r19,r19
+      bte r19,r0,exitadd
+      addu 0x000F,r16,r16
+      andnot 0x000F,r16,r16
+      adds -16,r16,r16
+      addu 0x000F,r17,r17
+      andnot 0x000F,r17,r17
+      adds -16,r17,r17
+      addu 0x000F,r18,r18
+      andnot 0x000F,r18,r18
+      adds -16,r18,r18
+      mov -1,r20
+  \end{verbatim}
+  \goodbreak
+  Im zweiten Teil erfolgt die eigentliche Addition:
+  \begin{verbatim}
+      fld.q 16(r16)++,f16
+      fld.q 16(r17)++,f20
+      pfadd.dd f16,f20,f0
+      bla r20,r19,loopadd
+      pfadd.dd f18,f22,f0
+    loopadd:
+      d.pfadd.dd f0,f0,f0
+        fld.q 16(r16)++,f16
+      d.pfadd.dd f0,f0,f24
+        fld.q 16(r17)++,f20
+      d.pfadd.dd f16,f20,f26
+        bla r20,r19,loopadd
+      d.pfadd.dd f18,f22,f0
+        fst.q f24,16(r18)++
+      nop
+      nop
+      nop
+    exitadd:
+      bri r1
+      nop\end{verbatim}
+  \begingroup
+    \setlength{\unitlength}{\baselineskip}%
+    \begin{picture}(0,0)(-14.0,-18.9)
+      \color{red}
+      \put(0,0){\insns{5.9}}
+      \put(1.0,-2){\insns{6.0}}
+      \put(-11,-9){\line(-1,0){1}}
+      \put(-12,-9){\line(0,-1){2}}
+      \put(-12,-11){\line(-1,0){1}}
+      \put(-13,-11){\line(0,1){8}}
+      \put(-13,-3){\vector(1,0){0.7}}
+      \put(0.8,-7.8){\insnsup{1.7}}
+      \put(0.8,-10){\insnsup{1.8}}
+      \put(0,-12.5){\mbox{sechsmal \texttt{f0} = 2 Blasen}}
+    \end{picture}%
+  \endgroup
+  \texttt{r16} und \texttt{r17} sind ganzzahlige Register,
+  die hier als Zeiger auf die beiden Arrays verwendet werden.
+
+  \texttt{f16} bis \texttt{f26} sind Flie�kommaregister.
+  Um doppelt genaue Operationen auszuf�hren (8-Byte- statt 4-Byte-Flie�kommazahlen),
+  werden jeweils zwei aufeinanderfolgende Flie�kommaregister zusammengelegt.
+  "`\texttt{f16}"' bezeichnet in diesem Programm also das Registerpaar \texttt{f16/f17}.
+
+  Das Flie�kommaregister \texttt{f0} ist ein Pseudo-Register.
+  Das Lesen von \texttt{f0} ergibt grunds�tzlich Null,
+  und in \texttt{f0} geschriebene Werte werden verworfen.
+
+  Der Befehl \texttt{fld} bedeutet: Lade das rechts stehende Flie�kommaregister.
+  Der Zusatz \texttt{.q} bewirkt, da� zwei Registerpaare,
+  also insgesamt vier Flie�kommaregister gleichzeitig geladen werden.
+  Der Speicherort, von dem geladen werden soll,
+  wird in der ersten Zeile mit \texttt{16(r16)++} angegeben.
+  \texttt{16(r16)} bedeutet: Lade die Flie�kommaregister von der Speicherzelle,
+  auf die das Ganzzahlregister \texttt{r16}, erh�ht um 16, zeigt.
+  Das \texttt{++} bedeutet, da� \texttt{r16} nach dem Ladevorgang um die Zahl vor der Klammer
+  (hier also 16 Bytes -- die Gr��e von zwei Registerpaaren) erh�ht wird.
+
+  Der Befehl \texttt{pfadd.dd f16,f20,f0}
+  addiert zwei doppelt genaue Flie�kommaregisterpaare in einer Pipe\-line.
+  Die Rechnung $\texttt{f16} + \texttt{f20}$ wird begonnen;
+  das Rechenergebnis, das in diesem Moment aus der Pipeline kommt (hier: undefiniert),
+  wird im Flie�kommaregisterpaar \texttt{f0} gespeichert (hier also: verworfen).
+
+  Der Befehl \texttt{bla r20,r19,loopadd} ("`Branch on LCC and Add"') ist ein bedingter Sprungbefehl.
+  Er addiert \texttt{r20} (enth�lt die Konstante $-1$) zu \texttt{r19} (Schleifenz�hler)
+  und verzweigt dann zu \texttt{loopadd},
+  wenn \emph{beim vorherigen \texttt{bla}-Aufruf} das Ergebnis $\ge 0$ war,
+  wobei vor der Verzweigung noch eine Instruktion ausgef�hrt wird.
+  F�r den \texttt{bla}-Befehl oberhalb der Schleife
+  befindet sich das Verzweigungsziel \texttt{loopadd} genau dort, wo es ohnehin weiterginge.
+  Dieses \texttt{bla} verzweigt also gar nicht,
+  sondern es sorgt daf�r, da� das \texttt{bla} am Ende der Schleife
+  einen sinnvollen "`vorherigen \texttt{bla}-Aufruf"' vorfindet.
+
+  F�r das \texttt{bla} am Ende der Schleife ist die zus�tzlich ausgef�hrte Instruktion
+  in dem roten Pfeil auf der linken Seite mit angedeutet.
+
+  Die den Befehlen vorangestellten \texttt{d.} innerhalb der Schleife bedeuten,
+  da� der jeweils darunterstehende, einger�ckte Befehl \emph{gleichzeitig} mit ausgef�hrt wird.
+
+  Innerhalb der Schleife werden vier Pipeline-Flie�kommabefehle ausgef�hrt.
+  Die Pfeile zeigen, wann jeweils das Ergebnis einer Rechnung vorliegt.
+  Die gleichzeitig ausgef�hrten Lade- und Speicherbefehle laden jeweils zwei neue Operanden
+  bzw.\ speichern zwei Ergebnisse.
+
+  Obwohl parallel zur eigentlichen Addition
+  pro Rechenbefehl jeweils zwei Lade- oder Speicherbefehle ausgef�hrt werden,
+  bleibt das Laden und Speichern der "`Flaschenhals"' der Rechnung.
+  Dort, wo nicht schnell genug neue Operanden geladen werden k�nnen,
+  wird die Pipeline-Rechnung durch \texttt{d.pfadd f0,f0,f0} lediglich fortgesetzt,
+  ohne da� gleichzeitig eine neue Rechnung angeworfen wird.
+  Durch das Z�hlen der "`leeren"' \texttt{f0}-Operationen
+  k�nnen wir die Effizienz der Pipeline-Rechnung sofort ablesen:
+  Jeweils drei \texttt{f0} stehen zusammen f�r einen unproduktiven Taktzyklus
+  -- eine Blase in der Pipeline.
+
+  Obwohl also der i860 theoretisch in jedem Taktzyklus eine Flie�kommaaddition vollenden k�nnte,
+  erreichen wir in der Praxis "`nur"' 2 Additionen (und 2 Blasen) in 4 Taktzyklen.
+  (Ohne Pipeline: 3 Taktzyklen pro Addition)
+
+  \goodbreak
+  \bigskip
+
+  Zum Abschlu� dieses Beispiels sei noch bemerkt,
+  da� es sich hier um ein ausgesprochen \emph{einfaches} Beispiel handelt.
+  �ber die hier kurz angerissenen Befehle hinaus kennt der i860-Prozessor z.\,B.\ noch Befehle,
+  bei denen gleichzeitig mit einer doppelt genauen Pipeline-Flie�kommaaddition
+  noch jeweils \emph{eine halbe} doppelt genaue Pipeline-Flie�kommamultiplikation ausgef�hrt wird.
+  Die Multiplikations-Pipeline steht nur in jedem zweiten Prozessortakt zur Verf�gung,
+  hat daf�r aber nur zwei Stufen (also vier Takte) anstatt, wie die Additions-Pipeline, drei.
+
+  Bei optimaler Auslastung kann der i860 also pro Takt das Ergebnis einer Flie�kommaaddition
+  und einer halben Flie�kommamultiplikation abliefern
+  und gleichzeitig \emph{entweder}\/ bis zu zwei Lade- \emph{oder}\/ bis zu zwei Speicher-Operationen
+  \emph{oder}\/ eine Ganzzahl-Operation \emph{oder} einen Sprung ausf�hren,
+  wobei das Erh�hen oder Vergleichen eines Index \emph{keine}\/ Ganzzahl-Operation erfordert,
+  sondern "`nebenher"' erfolgt.
+
+  Um diese "`Peak Performance"' tats�chlich zu erreichen,
+  ist zum einen eine "`passende"' Aufgabenstellung erforderlich,
+  zum anderen aufwendiges Optimieren des Assembler-Codes
+  -- entweder durch den Compiler oder manuell durch den Programmierer.
+
+  \subsection{Instruktions-Pipelines}
+
+  Ein Prozessor ben�tigt Zeit, um einen Befehl zu verstehen.
+  Gem�� dem Pipelining-Konzept ist es sinnvoll,
+  w�hrend der Ausf�hrung eines Befehls bereits die n�chsten Befehle vorauszulesen.
+
+  Dies kann in manchen Situationen zu Problemen f�hren,
+  insbesondere bei bedingten Spr�ngen.
+
+  Zur Illustration betrachten wir einen bedingten Sprung in einer beliebigen Assemblersprache.
+
+  \begin{verbatim}
+    .L3:
+        movw r30,r20
+        add r30,r18
+        adc r31,r19
+        mov r24,r18
+        subi r24,lo8(-(1))
+        st Z,r24
+        subi r18,lo8(-(1))
+        sbci r19,hi8(-(1))
+        cp r22,r18
+        cpc r23,r19
+        brge .L3
+        ret
+  \end{verbatim}
+
+  \begin{picture}(0,0)(-0.95,-0.95)
+    \color{red}
+    \put(0.5,1.00){\line(-1,0){0.4}}
+    \put(0.1,1.00){\line(0,1){4.15}}
+    \put(0.1,5.15){\vector(1,0){0.4}}
+    \put(0.5,0.90){\line(-1,0){0.4}}
+    \put(0.1,0.90){\line(0,-1){0.35}}
+    \put(0.1,0.55){\vector(1,0){0.4}}
+    \put(4.5,0.825){\begin{minipage}[t]{8cm}
+                      bedingter Sprung:
+                      Welche Befehle vorauslesen?\\[\smallskipamount]
+                      Kontrollflu�konflikt
+                    \end{minipage}}
+  \end{picture}
+
+  \vspace{-1.5\bigskipamount}
+
+  \texttt{brge} ("`branch if greater or equal"') ist ein bedingter Sprungbefehl.
+  Vor dessen Ausf�hrung will der Prozessor bereits Befehle vorauslesen -- aber welche?
+  Wenn er das \texttt{ret} unterhalb von \texttt{brge} vorausliest,
+  ist diese Information wertlos, wenn nach oben gesprungen wird.
+  Wenn er das \texttt{movw} am Ziel des Sprunges vorausliest,
+  ist diese Information wertlos, wenn \emph{nicht} nach oben gesprungen wird.
+
+  Immer wenn die vorausgelesene Information verworfen und neu gelesen werden mu�,
+  verliert der Prozessor Zeit.
+  Bei langen Befehls-Pipelines -- mehr als 10 Stufen in modernen Prozessoren --
+  kann dies eine erhebliche Einbu�e an Effizienz bedeuten.
+  Dies nennt man einen Kontrollflu�konflikt.
+
+  Zur Vermeidung von Kontollflu�konflikten versucht man,
+  Verzweigungen m�glichst zuverl�ssig vorauszusagen.
+  Hierzu seien mehrere Vorgehensweisen skizziert:
+
+  \begin{itemize}
+    \setlength{\unitlength}{\baselineskip}%
+    \item
+      Wir nehmen an, da� es sich bei Spr�ngen nach oben um Schleifen
+      und bei Spr�ngen nach unten um Auswahl-Verzweigungen handelt.
+      In diesem Fall ist es sinnvoll, Spr�nge nach oben grunds�tzlich mit "`ja"' vorherzusagen
+      und Spr�nge nach unten grunds�tzlich mit "`nein"'.
+
+      Wenn z.\,B.\ eine Schleife 99mal ausgef�hrt und beim 100sten Mal verlassen wird,
+      ergibt die Zweigvorhersage 99 Treffer und 1 Fehltreffer,
+      also nur 1 Blase als Folge eines Kontrollflu�konfliktes
+      gegen�ber 99 korrekt vorausgelesenen Befehlen.
+      Entsprechendes gilt f�r eine Auswahl von 100 Varianten, von denen nur eine gew�hlt wird.
+
+      Diese primitive Art der Zweigvorhersage schl�gt fehl,
+      wenn das Programm z.\,B.\ eine Schleife enth�lt, die normalerweise direkt wieder verlassen wird,
+      oder wenn in einer Reihe von Befehlen jedem einzelnen eine Bedingung ("`\texttt{if}"') voransteht,
+      die normalerweise erf�llt ist.
+
+    \goodbreak
+    \item
+      Ein anderes Konzept der Zweigvorhersage nutzt das Wissen aus,
+      das der Programmierer oder der Compiler �ber das Programm hat:
+      verz�gerte Spr�nge -- "`Delayed Branches"'.
+
+      \begin{verbatim}
+        loopadd:
+          d.pfadd.dd f0,f0,f0
+            fld.q 16(r16)++,f16
+          d.pfadd.dd f0,f0,f24
+            fld.q 16(r17)++,f20
+          d.pfadd.dd f16,f20,f26
+            bla r20,r19,loopadd
+          d.pfadd.dd f18,f22,f0
+            fst.q f24,16(r18)++
+      \end{verbatim}
+      \begingroup
+        \setlength{\unitlength}{\baselineskip}%
+        \begin{picture}(0,0)(-11.6,-14.3)
+          \color{red}
+          \put(-7,-9){\line(-1,0){1}}
+          \put(-8,-9){\line(0,-1){2}}
+          \put(-8,-11){\line(-1,0){1}}
+          \put(-9,-11){\line(0,1){8}}
+          \put(-9,-3){\vector(1,0){0.7}}
+        \end{picture}
+      \endgroup
+
+      \vspace{-\bigskipamount}
+
+      Der auf den Sprungbefehl folgende Befehl wird noch vor dem Sprung ausgef�hrt.
+      Der Programmierer entscheidet, wie dieser Befehl lautet,
+      und hat somit die M�glichkeit, die wahrscheinlichere Aktion -- mit bzw.\ ohne Sprung -- vorzubereiten.
+      
+      Im o.\,a.\ Beispiel f�r den i860 lautet der Befehl, der vor dem Sprung noch ausgef�hrt wird:
+      \begin{verbatim}
+          d.pfadd.dd f18,f22,f0
+            fst.q f24,16(r18)++\end{verbatim}
+      Der Flie�kommateil \verb|d.pfadd.dd f18,f22,f0|
+      leitet eine neue Rechnung ein und setzt laufende Rechnungen fort,
+      ist also nur dann sinnvoll, wenn die Schleife fortgesetzt wird.
+      Der Ganzzahlanteil \verb|fst.q f24,16(r18)++| speichert das Ergebnis einer vergangenen Rechnung,
+      ist also in beiden F�llen sinnvoll.
+      Dieses Programm ist also daraufhin optimiert, da� die Schleife oft ausgef�hrt wird,
+      verliert aber auch im ung�nstigen Fall nur einen halben Taktzyklus (den Flie�kommaanteil).
+
+    \item
+      Eine aus Hardware-Sicht aufwendigere L�sung ist das Konzept des "`Branch History Tables"':
+      Der Prozessor merkt sich f�r bedingte Spr�nge,
+      ob sie beim letzten Mal ausgef�hrt wurden oder nicht.
+      Wenn Code mehrfach ausgef�hrt wird, \emph{kann\/} dies eine sinnvolle Vorhersage sein.
+  \end{itemize}
+
+  Diese Liste ist bei weitem nicht vollst�ndig, sondern soll nur einen kleinen Einblick vermitteln,
+  was alles n�tig ist, um die Leistungsf�higkeit aktueller Prozessoren zu erm�glichen.
+
+  Die Sprung- oder Zweigvorhersage ist ein wichtiges Konzept moderner Prozessoren
+  und Gegenstand aktueller Forschung.
+
+  \clearpage
+  \section{Ausblick}
+
+  \begin{itemize}
+    \item
+      Aktuelle Prozessoren implementieren
+      \newterm{explicitly Parallel Instruction Computing (EPIC)}.
+    \item
+      \newterm{Field Programmable Gate Arrays (FPGAs)\/}
+      sind Bausteine, auf denen man per Software Logik-Schaltungen entstehen l��t
+      (Hardwarebeschreibungssprachen: VHDL, Verilog).
+      Auf diese Weise erzeugt man spezialisierte Computer-Hardware,
+      die ihre Aufgaben selbst bei vergleichsweise niedrigen Taktfrequenzen
+      effizienter erledigen als Allzweck-Computer.
+    \item
+      \newterm{C-to-Hardware-Synthese\/}:
+      Es ist auch m�glich, spezialisierte Hardware direkt anhand von C-Code
+      (anstelle von VHDL, Verilog) zu generieren.
+  \end{itemize}
+
+  \clearpage
+
+  \begin{thebibliography}{9}
+    \bibitem{WP: Rechnertechnik}
+      \url{http://de.wikipedia.org/wiki/Rechnertechnik},
+      abgerufen am 7.\,10.\,2012
+%    \bibitem{WP: Galoistheorie}
+%      \url{http://de.wikipedia.org/wiki/Galoistheorie},
+%      abgerufen am 7.\,10.\,2012
+    \bibitem{Analogcomputer}
+      \url{http://www.robotrontechnik.de/html/computer/analogrechner.htm},\\
+      \url{http://www.heise.de/tp/artikel/36/36877/1.html},
+      beides abgerufen am 7.\,10.\,2012
+  \end{thebibliography}
+
+\end{document}
diff --git a/script/rtech-slides-title-2021ss.pdf b/script/rtech-slides-title-2021ss.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..61a6cd7fd343334c44fa90bde3c5bd38ae3e0a44
Binary files /dev/null and b/script/rtech-slides-title-2021ss.pdf differ
diff --git a/script/rtech-slides-title-2021ss.tex b/script/rtech-slides-title-2021ss.tex
new file mode 100644
index 0000000000000000000000000000000000000000..0f848b8eac6f6a8cbd65f8f28a0bf776c9983b31
--- /dev/null
+++ b/script/rtech-slides-title-2021ss.tex
@@ -0,0 +1,75 @@
+% rtech-slides-title-2021ss.pdf - Title Page for Lecture Slides on Computer Technology
+% Copyright (C) 2018, 2019, 2020, 2021  Peter Gerwinski
+%
+% This document is free software: you can redistribute it and/or
+% modify it either under the terms of the Creative Commons
+% Attribution-ShareAlike 3.0 License, or under the terms of the
+% GNU General Public License as published by the Free Software
+% Foundation, either version 3 of the License, or (at your option)
+% any later version.
+%
+% This document is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this document.  If not, see <http://www.gnu.org/licenses/>.
+%
+% You should have received a copy of the Creative Commons
+% Attribution-ShareAlike 3.0 Unported License along with this
+% document.  If not, see <http://creativecommons.org/licenses/>.
+
+\documentclass[10pt,t]{beamer}
+
+\usepackage{pgslides}
+
+\setlength{\parskip}{\medskipamount}
+
+\title{Rechnertechnik}
+\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
+\date{Sommersemester 2021}
+
+\begin{document}
+
+\maketitleframe
+
+\nosectionnonumber{Wichtiger Hinweis}
+
+\begin{frame}[plain]
+
+  \vfill
+
+  \shownosectionnonumber
+
+  \vspace*{-\medskipamount}
+
+  Diese Vortragsfolien dienen dazu, den Vortrag der/des Lehrenden zu unter-\\stützen.
+  Sie enthalten \textbf{nur einen Teil} der Lerninhalte.
+  Wie groß dieser Teil ist, hängt von den konkreten Lerninhalten ab
+  und kann von "`praktisch alles"' bis "`praktisch gar nichts"' schwanken.
+  Diese Folien alleine sind daher
+  \textbf{nicht für ein Selbststudium geeignet!}
+  Hierfür sei auf das Skript verwiesen,
+  in dem allerdings keine tagesaktuellen Änderungen enthalten sind.
+
+  Mindestens genauso wichtig wie die Vortragsfolien sind die Beispiel-Programme,
+  die vor Ihren Augen in den Vorlesungen erarbeitet werden.
+  Diese sind im Git-Repository
+  (\url{https://gitlab.cvh-server.de/pgerwinski/rtech.git})
+  mit allen Zwischenschritten enthalten und befinden sich
+  in den zu den jeweiligen Kalenderdaten gehörenden Verzeichnissen
+  (z.\,B.\ für den 6.\kern0.5pt4.\,2021 unter
+  \url{https://gitlab.cvh-server.de/pgerwinski/rtech/tree/2021ss/20210406/}\kern1pt).
+
+  Wenn Sie die Übungsaufgaben bearbeiten, nutzen Sie die Gelegenheit,
+  Ihre Lösungen in den Übungen überprüfen zu lassen.
+  Wer nach Vergleich mit der Musterlösung zu dem Schluß kommt,
+  alles richtig gelöst zu haben, erlebt sonst in der Klausur oft eine
+  unangenehme Überraschung.
+
+  \strut\hfill In jedem Fall: \emph{Viel Erfolg!}
+
+\end{frame}
+
+\end{document}
diff --git a/script/sfmath.sty b/script/sfmath.sty
new file mode 120000
index 0000000000000000000000000000000000000000..599e505416fb5a096f751581a66c53bc109e935d
--- /dev/null
+++ b/script/sfmath.sty
@@ -0,0 +1 @@
+../common/sfmath.sty
\ No newline at end of file
diff --git a/script/sm-code-screenshot.png b/script/sm-code-screenshot.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc78b838358ccae0d53997bad05ebda574935306
Binary files /dev/null and b/script/sm-code-screenshot.png differ
diff --git a/script/speicher-1.jpg b/script/speicher-1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7ece214d877b81550fd041f066cf2664b619abc3
Binary files /dev/null and b/script/speicher-1.jpg differ
diff --git a/script/speicher-2.jpg b/script/speicher-2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ea709e972e2ba090f68f9086931b86250fe08a1c
Binary files /dev/null and b/script/speicher-2.jpg differ
diff --git a/script/tp-netz.jpg b/script/tp-netz.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..06db706b2fecc417b526d19a7e065e0813cc6906
Binary files /dev/null and b/script/tp-netz.jpg differ
diff --git a/script/wlan-access-point.jpg b/script/wlan-access-point.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..511fd8cbef39a7dc49c4167a3eb231bdb457b551
Binary files /dev/null and b/script/wlan-access-point.jpg differ