diff --git a/20230315/800px-ArduinoUnoSMD.jpg b/20230315/800px-ArduinoUnoSMD.jpg
deleted file mode 100644
index cf01cbee9f14b343416db1ebb16680bcd561f54d..0000000000000000000000000000000000000000
Binary files a/20230315/800px-ArduinoUnoSMD.jpg and /dev/null differ
diff --git a/20230315/800px-ArduinoUnoSMD.jpg b/20230315/800px-ArduinoUnoSMD.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..a9d1801d06ff66496488194c84b7ad5c6bc056f3
--- /dev/null
+++ b/20230315/800px-ArduinoUnoSMD.jpg
@@ -0,0 +1 @@
+../common/800px-ArduinoUnoSMD.jpg
\ No newline at end of file
diff --git a/20230315/ArduinoUnoSMD.jpg b/20230315/ArduinoUnoSMD.jpg
deleted file mode 100644
index f28d9af9a88657e98feac04e13857056aa4b88de..0000000000000000000000000000000000000000
Binary files a/20230315/ArduinoUnoSMD.jpg and /dev/null differ
diff --git a/20230315/ArduinoUnoSMD.jpg b/20230315/ArduinoUnoSMD.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..d401b560bcf37e14b175444c3ae0d4820fa551af
--- /dev/null
+++ b/20230315/ArduinoUnoSMD.jpg
@@ -0,0 +1 @@
+common//ArduinoUnoSMD.jpg
\ No newline at end of file
diff --git a/20230321/800px-ArduinoUnoSMD.jpg b/20230321/800px-ArduinoUnoSMD.jpg
deleted file mode 100644
index cf01cbee9f14b343416db1ebb16680bcd561f54d..0000000000000000000000000000000000000000
Binary files a/20230321/800px-ArduinoUnoSMD.jpg and /dev/null differ
diff --git a/20230321/800px-ArduinoUnoSMD.jpg b/20230321/800px-ArduinoUnoSMD.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..a9d1801d06ff66496488194c84b7ad5c6bc056f3
--- /dev/null
+++ b/20230321/800px-ArduinoUnoSMD.jpg
@@ -0,0 +1 @@
+../common/800px-ArduinoUnoSMD.jpg
\ No newline at end of file
diff --git a/20230321/ArduinoUnoSMD.jpg b/20230321/ArduinoUnoSMD.jpg
deleted file mode 100644
index f28d9af9a88657e98feac04e13857056aa4b88de..0000000000000000000000000000000000000000
Binary files a/20230321/ArduinoUnoSMD.jpg and /dev/null differ
diff --git a/20230321/ArduinoUnoSMD.jpg b/20230321/ArduinoUnoSMD.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..0f6001d7f047648fe254bf85e5515a4d62af507a
--- /dev/null
+++ b/20230321/ArduinoUnoSMD.jpg
@@ -0,0 +1 @@
+../common/ArduinoUnoSMD.jpg
\ No newline at end of file
diff --git a/20230322/800px-ArduinoUnoSMD.jpg b/20230322/800px-ArduinoUnoSMD.jpg
deleted file mode 100644
index cf01cbee9f14b343416db1ebb16680bcd561f54d..0000000000000000000000000000000000000000
Binary files a/20230322/800px-ArduinoUnoSMD.jpg and /dev/null differ
diff --git a/20230322/800px-ArduinoUnoSMD.jpg b/20230322/800px-ArduinoUnoSMD.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..a9d1801d06ff66496488194c84b7ad5c6bc056f3
--- /dev/null
+++ b/20230322/800px-ArduinoUnoSMD.jpg
@@ -0,0 +1 @@
+../common/800px-ArduinoUnoSMD.jpg
\ No newline at end of file
diff --git a/20230322/ArduinoUnoSMD.jpg b/20230322/ArduinoUnoSMD.jpg
deleted file mode 100644
index f28d9af9a88657e98feac04e13857056aa4b88de..0000000000000000000000000000000000000000
Binary files a/20230322/ArduinoUnoSMD.jpg and /dev/null differ
diff --git a/20230322/ArduinoUnoSMD.jpg b/20230322/ArduinoUnoSMD.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..0f6001d7f047648fe254bf85e5515a4d62af507a
--- /dev/null
+++ b/20230322/ArduinoUnoSMD.jpg
@@ -0,0 +1 @@
+../common/ArduinoUnoSMD.jpg
\ No newline at end of file
diff --git a/20230419/ArduinoUnoSMD.jpg b/20230419/ArduinoUnoSMD.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..0f6001d7f047648fe254bf85e5515a4d62af507a
--- /dev/null
+++ b/20230419/ArduinoUnoSMD.jpg
@@ -0,0 +1 @@
+../common/ArduinoUnoSMD.jpg
\ No newline at end of file
diff --git a/20230419/Makefile b/20230419/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..7ae33df99f68fcf460324cfbb008f3f7a3863638
--- /dev/null
+++ b/20230419/Makefile
@@ -0,0 +1,8 @@
+%.elf: %.c
+	avr-gcc -Wall -Os -mmcu=atmega328p $< -o $@
+
+%.hex: %.elf
+	avr-objcopy -O ihex $< $@
+
+download:
+	./download.sh
diff --git a/20230419/astabile-kippstufe.png b/20230419/astabile-kippstufe.png
new file mode 120000
index 0000000000000000000000000000000000000000..9aade3ccb6f460cd4add8529e3b6db248bcaf856
--- /dev/null
+++ b/20230419/astabile-kippstufe.png
@@ -0,0 +1 @@
+../common/astabile-kippstufe.png
\ No newline at end of file
diff --git a/20230419/blink-01.c b/20230419/blink-01.c
new file mode 100644
index 0000000000000000000000000000000000000000..01308336ab00714a2524cb5b248701fe3164b209
--- /dev/null
+++ b/20230419/blink-01.c
@@ -0,0 +1,18 @@
+#include <avr/io.h>
+
+#define F_CPU 16000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRB = 0xff;   // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8)
+  PORTB = 0x20;  // Bit Nr. 5 auf 1 setzen, alle anderen auf 0 ("digitalWrite" für alle 8)
+  while (1)
+    {
+      _delay_ms (250);
+      PORTB = 0x00;
+      _delay_ms (250);
+      PORTB = 0x20;
+    }
+  return 0;
+}
diff --git a/20230419/calc-01.c b/20230419/calc-01.c
new file mode 100644
index 0000000000000000000000000000000000000000..6791fea72774e2268c841825ae37c1b08200c72f
--- /dev/null
+++ b/20230419/calc-01.c
@@ -0,0 +1,10 @@
+#include <stdio.h>
+
+int main (void)
+{
+  int a = 3;
+  int b = 7;
+  int c = a + b;
+  printf ("c = %d\n", c);
+  return 0;
+}
diff --git a/20230419/download.sh b/20230419/download.sh
new file mode 100755
index 0000000000000000000000000000000000000000..770c3b5dca74ac09778be055c9d6f5adb0df293b
--- /dev/null
+++ b/20230419/download.sh
@@ -0,0 +1,3 @@
+port=$(ls -rt /dev/ttyACM* | tail -1)
+echo avrdude -P $port -c arduino -p m328p -U flash:w:$(ls -rt *.hex | tail -1)
+avrdude -P $port -c arduino -p m328p -U flash:w:$(ls -rt *.hex | tail -1) 2>/dev/null
diff --git a/20230419/logo-hochschule-bochum-cvh-text-v2.pdf b/20230419/logo-hochschule-bochum-cvh-text-v2.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..4aa99b8f81061aca6dcaf43eed2d9efef40555f8
--- /dev/null
+++ b/20230419/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/20230419/logo-hochschule-bochum.pdf b/20230419/logo-hochschule-bochum.pdf
new file mode 120000
index 0000000000000000000000000000000000000000..b6b9491e370e499c9276918182cdb82cb311bcd1
--- /dev/null
+++ b/20230419/logo-hochschule-bochum.pdf
@@ -0,0 +1 @@
+../common/logo-hochschule-bochum.pdf
\ No newline at end of file
diff --git a/20230419/pgslides.sty b/20230419/pgslides.sty
new file mode 120000
index 0000000000000000000000000000000000000000..5be1416f4216f076aa268901f52a15d775e43f64
--- /dev/null
+++ b/20230419/pgslides.sty
@@ -0,0 +1 @@
+../common/pgslides.sty
\ No newline at end of file
diff --git a/20230419/rtech-20230419.pdf b/20230419/rtech-20230419.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..672009b13258e44fe31c13d7bb1f67a82d6be63e
Binary files /dev/null and b/20230419/rtech-20230419.pdf differ
diff --git a/20230419/rtech-20230419.tex b/20230419/rtech-20230419.tex
new file mode 100644
index 0000000000000000000000000000000000000000..53c23b511a40c835ada444cdade3c85bd395710d
--- /dev/null
+++ b/20230419/rtech-20230419.tex
@@ -0,0 +1,631 @@
+% rtech-20230419.pdf - Lecture Slides on Computer Technology
+% Copyright (C) 2012, 2013, 2014, 2021, 2022, 2023  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/>.
+
+% README: Assembler-Programmierung
+
+\documentclass[10pt,t]{beamer}
+
+\usepackage{pgslides}
+\usepackage{pdftricks}
+%\usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx}
+%\usepackage{eurosym}
+\usepackage{tikz}
+
+\newcommand{\Cin}{C\raisebox{-0.5ex}{\footnotesize in}}
+\newcommand{\Cout}{C\raisebox{-0.5ex}{\footnotesize out}}
+
+\lstdefinestyle{asm}{basicstyle=\color{structure},
+                     language={},
+                     gobble=4}
+
+\begin{psinputs}
+  \usepackage[utf8]{inputenc}
+  \usepackage[german]{babel}
+  \usepackage[T1]{fontenc}
+  \usepackage{helvet}
+  \renewcommand*\familydefault{\sfdefault}
+  \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}
+
+\title{Rechnertechnik}
+\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
+\date{19.\ April 2022}
+
+\begin{document}
+
+\maketitleframe
+
+\nosectionnonumber{\inserttitle}
+
+\begin{frame}
+
+  \shownosectionnonumber
+
+  \begin{itemize}
+    \item[\textbf{1}] \textbf{Einführung}
+    \item[\textbf{2}] \textbf{Vom Schaltkreis zum Computer}
+      \begin{itemize}
+        \item[2.1] Logik-Schaltkreise
+        \item[2.2] Binärdarstellung von Zahlen
+        \item[2.3] Vom Logik-Schaltkreis zum Addierer
+        \item[2.4] Negative Zahlen
+        \item[2.5] Weitere Rechenoperationen
+        \color{medgreen}
+        \item[2.6] Vom Addierer zum Computer
+      \end{itemize}
+    \item[\textbf{3}] \textbf{Assember-Programmierung}
+      \begin{itemize}
+        \color{red}
+        \item[3.1] Struktur von Assembler-Programmen
+        \color{black}
+        \item[3.2] Beispiel: Redcode
+        \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{9}] \textbf{Ausblick}
+    \item[\textbf{\dots\hspace{-0.75em}}]
+  \end{itemize}
+
+\end{frame}
+
+\setcounter{section}{1}
+\section{Vom Schaltkreis zum Computer}
+\setcounter{subsection}{5}
+\subsection{Vom Addierer zum Computer}
+
+\begin{frame}
+
+  \showsubsection
+
+  \visible<1->{\textbf{Rechenwerk (ALU)}}
+
+  \pause
+  \bigskip
+
+  \textbf{Speicher} ($n$-Bit-Speicherzellen)
+  \begin{itemize}
+    \item
+      Prozessorregister
+    \item
+      Adressierbarer Hauptspeicher
+  \end{itemize}
+
+  \begin{onlyenv}<3>
+
+    \bigskip
+
+    \begin{visibleenv}<1->
+      Prozessorregister
+      \begin{itemize}
+        \item
+          können über Schaltungen (Und-Gatter) direkt mit Ein- und Ausgängen\\
+          der ALU verbunden werden \textcolor{red}{(Tafelbild: Master-Slave-D-Flipflop)}
+          \begin{onlyenv}<1->
+            \begin{picture}(0,0)
+              \put(-5.6,-0.6){%
+                \begin{minipage}{6cm}
+                  \begin{center}
+                    \color{medgreen}\footnotesize
+                    leider offizieller Name\\
+                    Gegenvorschlag: Primary-Secondary
+                  \end{center}
+                \end{minipage}}
+            \end{picture}
+          \end{onlyenv}
+        \item
+          sehr wenige (unter 100)
+        \item
+          sehr schnell
+      \end{itemize}
+    \end{visibleenv}
+
+    \bigskip
+
+    \begin{visibleenv}<1->
+      Adressierbarer Hauptspeicher: Speicherzellen
+      \begin{itemize}
+        \item
+          können über Schaltungen mit Prozessorregistern verbunden werden
+        \item
+          sehr viele (Stand 2023: mehrere Tausend bis mehrere Milliarden)
+        \item
+          Schaltkreise zum Auswählen: Decoder, Selector \textcolor{red}{(Tafelbilder)}
+      \end{itemize}
+    \end{visibleenv}
+
+    \vspace*{-10cm}
+
+  \end{onlyenv}
+
+  \pause[4]
+  \bigskip
+
+  \textbf{Takt}
+  \begin{itemize}
+    \item
+      Taktgeber
+    \item
+      Zähler\hfill
+      \only<5>{\makebox(0,0)[br]{\includegraphics[width=5cm]{astabile-kippstufe.png}}}%
+      \only<6>{\makebox(0,0)[br]{\includegraphics[width=6cm]{schwingquarz.jpg}}}%
+      \only<7-8>{\makebox(0,0)[br]{\includegraphics[width=6cm]{schwingquarz-geoeffnet.jpg}}}%
+      \only<9->{\makebox(0,0)[br]{\includegraphics[width=6cm]{ArduinoUnoSMD.jpg}}}%
+    \arrowitem
+      Speicher durchgehen und Befehle abarbeiten: Maschinensprache
+  \end{itemize}
+
+  \begin{onlyenv}<8>
+
+    \smallskip
+
+    Der \newterm{Instruction Pointer} (ein Prozessorregister) adressiert eine Speicherzelle\\
+    im Hauptspeicher. Je nachdem, was sich darin befindet, wird ein Wert\\
+    aus dem Hauptspeicher in ein Prozessorregister übertragen oder umgekehrt\\
+    oder mit einem Prozessorregister eine Rechnung durchgeführt.
+
+    \smallskip
+
+    Wert aus Hauptspeicher in den Instruction Pointer übertragen
+    \textarrow\ Sprungbefehl\\
+    Ansonsten: Instruction Pointer hochzählen
+    \quad\raisebox{-\smallskipamount}{\textcolor{red}{(Tafelbild: Blockschaltbild)}}
+
+    \vspace*{-10cm}
+
+  \end{onlyenv}
+
+  \pause[9]
+  \bigskip
+
+  \textbf{Peripherie} \textcolor{red}{(Beispiel: Arduino)}
+  \begin{itemize}
+    \item
+      Output: Speicherzelle als Output-Pin nach außen führen
+    \item
+      Input: Speicherzelle durch Input-Pin ersetzen
+    \arrowitem
+      Kommunikation mit der Außenwelt
+  \end{itemize}
+
+\end{frame}
+
+\section{Assembler-Programmierung}
+\subsection{Struktur von Assembler-Programmen}
+
+\begin{frame}
+  \showsection
+  \showsubsection
+
+  \textbf{Maschinensprache:} Bits besagen, was in diesem Takt geschehen soll
+
+  \begin{itemize}
+    \item
+      \textbf{arithmetisch-logische Befehle:}\\[\smallskipamount]
+      Daten aus Registern (oder Hauptspeicher) an ALU legen,\\
+      Ergebnis in Register (oder Hauptspeicher) schreiben
+    \item
+      \textbf{Lade- und Speicher-Befehle:}\\[\smallskipamount]
+      Daten aus dem Hauptspeicher in Register einlesen\\
+      oder aus Register in den Hauptspeicher schreiben
+    \item
+      \textbf{(unbedingter) Sprungbefehl:}\\[\smallskipamount]
+      Daten aus Register oder Hauptspeicher in das \lstinline{IP}-Register laden
+    \item
+      \textbf{(bedingter) Sprungbefehl:}\\[\smallskipamount]
+      Sprungbefehl nur dann, wenn im Status-Ausgang der ALU\\
+      ein bestimmtes Bit gesetzt ist
+    \bigskip
+    \arrowitem
+      Der Computer kann "`alles"' -- \newterm{Turing-Vollständigkeit}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+
+  \showsection
+  \showsubsection
+
+  \textbf{Maschinensprache:} Bits besagen, was in diesem Takt geschehen soll
+  \begin{itemize}
+    \item
+      Lade- und Speicher-Befehle\\
+      arithmetisch-logische Befehle\\
+      unbedingte und bedingte Sprungbefehle
+    \arrowitem
+      Der Computer kann "`alles"' -- \newterm{Turing-Vollständigkeit}
+  \end{itemize}
+
+  \medskip
+
+  \textbf{\newterm{Assembler\/}-Sprache}
+  \begin{itemize}
+    \item
+      Maschinensprache = Zahlen \textarrow\ für Menschen schwer handhabbar
+    \arrowitem
+      Namen für die Befehle: \newterm{Mnemonics}
+  \end{itemize}
+
+  \pause
+  \medskip
+
+  \textbf{Beispiele}
+  \begin{itemize}
+    \item
+      Intel 8086 \textcolor{red}{(emulierter 16-Bit-Rechner)}
+    \item
+      Atmel AVR \textcolor{red}{(Arduino, 8 Bit)}
+    \item
+      Intel IA-32 / AMD64 \textcolor{red}{(Notebook-PC, 64 Bit)}
+    \item
+      Redcode \textcolor{red}{(emulierter Rechner, Praktikumsversuch)}
+  \end{itemize}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  Beispiel: IA-32-Assembler
+  \only<2>{-- \newterm{Befehl (Opcode)}}%
+  \only<3>{-- \newterm{Befehl (Opcode)} und \newterm{Operanden}}%
+  \only<4>{-- \newterm{Adressierungsarten}}
+
+  \vspace{2cm}
+
+  \begin{lstlisting}
+    addl    $1, %eax
+    movb    %al, b
+    cmpb    (%ebx), %dl
+    jbe     .L2
+  \end{lstlisting}
+
+  \begin{onlyenv}<2-3>
+    \begin{picture}(0,0)
+      \color{red}
+      \put(0.4,2.8){\vector(0,-1){0.7}}
+      \put(0.4,2.9){\makebox(0,0)[b]{Befehl}}
+      \only<2>{%
+        \put(1.4,2.8){\vector(-1,-1){0.7}}
+        \put(2.3,2.9){\makebox(0,0)[b]{Größen-Suffix}}}
+      \only<3>{%
+        \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{onlyenv}
+  \begin{onlyenv}<4>
+    \begin{picture}(0,0)
+      \color{red}
+      \put(1.4,2.8){\vector(-1,-2){0.35}}
+      \put(2.0,2.9){\makebox(0,0)[b]{unmittelbar}}
+      \put(3.0,1.8){\vector(-1,0){0.7}}
+      \put(3.1,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{onlyenv}
+
+\end{frame}
+
+\iffalse
+
+\subsection{Beispiel: Redcode}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  Beispiel: Redcode (ICWS '86) -- Core War[s] (Krieg der Kerne)\\
+  Virtuelle Maschine: Memory Array Redcode Simulator (MARS)
+
+  \bigskip
+
+  \begin{minipage}[t]{7.2cm}
+    Instruktionen:\\[\smallskipamount]
+    \lstinline{dat B} -- Daten \only<1->{-- "`Du hast verloren!"'}\\
+    \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}\hfill
+  \begin{minipage}[t]{4.7cm}
+    Adressierungsarten:\\[\smallskipamount]
+    grundsätzlich: Speicher relativ\\[\smallskipamount]
+    \lstinline{#} -- unmittelbar\\
+    \lstinline{$} -- direkt\\
+    \lstinline{@} -- indirekt\\
+    \lstinline{<} -- indirekt mit Prä-Dekrement
+
+%    \pause[5]
+    \bigskip
+    Programm "`Nothing"':
+    \begin{lstlisting}[gobble=6]
+      jmp 0
+    \end{lstlisting}
+%    \pause
+    \bigskip
+    Programm "`Knirps"':
+    \begin{lstlisting}[gobble=6]
+      mov 0, 1
+    \end{lstlisting}
+
+  \end{minipage}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  Unbedingte Verzweigung
+
+  Beispiel: Endlosschleife von "`Dwarf"'
+
+  \begin{minipage}[t]{1.2cm}
+    \begin{lstlisting}[style=asm,gobble=6]
+      bomb
+      start
+    \end{lstlisting}
+  \end{minipage}%
+  \begin{minipage}[t]{3cm}
+    \begin{lstlisting}[style=asm,gobble=6]
+      dat #0
+      add #4, bomb
+      mov bomb, @bomb
+      jmp start
+      end start
+    \end{lstlisting}
+  \end{minipage}\hfill
+  \begin{minipage}[t]{3.9cm}
+    \small
+    \bigskip
+    Instruktionen:\\[\smallskipamount]
+    \lstinline{dat B}\\
+    \lstinline{mov A, B}\\
+    \lstinline{add A, B}\\
+    \lstinline{sub A, B}\\
+    \lstinline{jmp A}\\
+    \lstinline{jmz A, B} -- "`jump if zero"'\\
+    \lstinline{jmn A, B} -- "`if not zero"'\\
+    \lstinline{djn A, B} -- "`dec. \& jmn"'\\
+    \lstinline{cmp A, B} -- vgl.\ \& überspr.\\
+    \lstinline{spl A} -- verzweigen
+  \end{minipage}%
+  \begin{minipage}[t]{2.7cm}
+    \small
+    \bigskip
+    Adressierungsarten:\\[\medskipamount]
+    grundsätzlich:\\
+    Speicher relativ\\[\medskipamount]
+    \lstinline{#} -- unmittelbar\\[\smallskipamount]
+    \lstinline{$} -- direkt\\[\smallskipamount]
+    \lstinline{@} -- indirekt\\[\smallskipamount]
+    \lstinline{<} -- indirekt mit\\
+    \hspace*{0.52cm}Prä-Decrement
+  \end{minipage}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  \alt<2->{Mehrere Threads}{Bedingte Verzweigung}
+
+  Beispiel: \alt<2->{Multithreading}{Kopierschleife} von "`Mice"'
+
+  \begin{minipage}[t]{1.2cm}
+    \begin{lstlisting}[style=asm,gobble=6]
+      ptr
+      start
+      loop
+
+
+
+
+      dest
+
+    \end{lstlisting}
+  \end{minipage}%
+  \begin{minipage}[t]{3cm}
+    \begin{lstlisting}[style=asm,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}\hfill
+  \begin{minipage}[t]{3.9cm}
+    \small
+    \bigskip
+    Instruktionen:\\[\smallskipamount]
+    \lstinline{dat B}\\
+    \lstinline{mov A, B}\\
+    \lstinline{add A, B}\\
+    \lstinline{sub A, B}\\
+    \lstinline{jmp A}\\
+    \lstinline{jmz A, B} -- "`jump if zero"'\\
+    \lstinline{jmn A, B} -- "`if not zero"'\\
+    \lstinline{djn A, B} -- "`dec. \& jmn"'\\
+    \lstinline{cmp A, B} -- vgl.\ \& überspr.\\
+    \lstinline{spl A} -- verzweigen
+  \end{minipage}%
+  \begin{minipage}[t]{2.7cm}
+    \small
+    \bigskip
+    Adressierungsarten:\\[\medskipamount]
+    grundsätzlich:\\
+    Speicher relativ\\[\medskipamount]
+    \lstinline{#} -- unmittelbar\\[\smallskipamount]
+    \lstinline{$} -- direkt\\[\smallskipamount]
+    \lstinline{@} -- indirekt\\[\smallskipamount]
+    \lstinline{<} -- indirekt mit\\
+    \hspace*{0.52cm}Prä-Decrement
+  \end{minipage}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  Selbstmodifizierender Code
+
+  Beispiel: Selbsterkennung von "`Fini"'
+
+  \begin{minipage}[t]{1.2cm}
+    \begin{lstlisting}[language={},gobble=6]
+      num
+      start
+
+      pos
+
+    \end{lstlisting}
+  \end{minipage}%
+  \begin{minipage}[t]{0.9cm}
+    \begin{lstlisting}[language={},gobble=6]
+      dat #-2
+      mov num, <pos
+      jmp start
+      dat #-3
+      end start
+    \end{lstlisting}
+  \end{minipage}\hfill
+  \begin{minipage}[t]{3.9cm}
+    \small
+    \bigskip
+    Instruktionen:\\[\smallskipamount]
+    \lstinline{dat B}\\
+    \lstinline{mov A, B}\\
+    \lstinline{add A, B}\\
+    \lstinline{sub A, B}\\
+    \lstinline{jmp A}\\
+    \lstinline{jmz A, B} -- "`jump if zero"'\\
+    \lstinline{jmn A, B} -- "`if not zero"'\\
+    \lstinline{djn A, B} -- "`dec. \& jmn"'\\
+    \lstinline{cmp A, B} -- vgl.\ \& überspr.\\
+    \lstinline{spl A} -- verzweigen
+  \end{minipage}%
+  \begin{minipage}[t]{2.7cm}
+    \small
+    \bigskip
+    Adressierungsarten:\\[\medskipamount]
+    grundsätzlich:\\
+    Speicher relativ\\[\medskipamount]
+    \lstinline{#} -- unmittelbar\\[\smallskipamount]
+    \lstinline{$} -- direkt\\[\smallskipamount]
+    \lstinline{@} -- indirekt\\[\smallskipamount]
+    \lstinline{<} -- indirekt mit\\
+    \hspace*{0.52cm}Prä-Decrement
+  \end{minipage}
+
+\end{frame}
+
+\begin{frame}[fragile]
+
+  \showsubsection
+
+  \strut
+ 
+  \strut\makebox(0,0)[bl]{\large\color{structure}\textbf{Praktikumsversuch}}
+
+  \begin{minipage}[t]{5cm}
+    \medskip
+    Schreiben Sie ein\\
+    Redcode-Programm,\\
+    das die Gegner\\
+    \file{Nothing}, \file{Knirps}\\
+    und \file{Mice} besiegt.
+
+    \medskip
+
+    ICWS-86-Standard,\\
+    max.\ 64 Prozesse,\\
+    Speichergröße zufällig\\
+    von 512 bis 8192
+
+    \medskip
+
+    Teams bis zu 3 Personen\\
+    sind zulässig.
+  \end{minipage}\hfill
+  \begin{minipage}[t]{3.9cm}
+    \small
+    \bigskip
+    Instruktionen:\\[\smallskipamount]
+    \lstinline{dat B}\\
+    \lstinline{mov A, B}\\
+    \lstinline{add A, B}\\
+    \lstinline{sub A, B}\\
+    \lstinline{jmp A}\\
+    \lstinline{jmz A, B} -- "`jump if zero"'\\
+    \lstinline{jmn A, B} -- "`if not zero"'\\
+    \lstinline{djn A, B} -- "`dec. \& jmn"'\\
+    \lstinline{cmp A, B} -- vgl.\ \& überspr.\\
+    \lstinline{spl A} -- verzweigen
+  \end{minipage}%
+  \begin{minipage}[t]{2.7cm}
+    \small
+    \bigskip
+    Adressierungsarten:\\[\medskipamount]
+    grundsätzlich:\\
+    Speicher relativ\\[\medskipamount]
+    \lstinline{#} -- unmittelbar\\[\smallskipamount]
+    \lstinline{$} -- direkt\\[\smallskipamount]
+    \lstinline{@} -- indirekt\\[\smallskipamount]
+    \lstinline{<} -- indirekt mit\\
+    \hspace*{0.52cm}Prä-Decrement
+  \end{minipage}
+
+\end{frame}
+
+\fi
+
+\end{document}
diff --git a/20230419/schwingquarz-geoeffnet.jpg b/20230419/schwingquarz-geoeffnet.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..6b81f6686fed1aa68ad4bab3e9b993abb1153d6a
--- /dev/null
+++ b/20230419/schwingquarz-geoeffnet.jpg
@@ -0,0 +1 @@
+../common/schwingquarz-geoeffnet.jpg
\ No newline at end of file
diff --git a/20230419/schwingquarz.jpg b/20230419/schwingquarz.jpg
new file mode 120000
index 0000000000000000000000000000000000000000..a5e8e0e99600e7546764afd9b9b384b34d04f8d8
--- /dev/null
+++ b/20230419/schwingquarz.jpg
@@ -0,0 +1 @@
+../common/schwingquarz.jpg
\ No newline at end of file
diff --git a/common/800px-ArduinoUnoSMD.jpg b/common/800px-ArduinoUnoSMD.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cf01cbee9f14b343416db1ebb16680bcd561f54d
Binary files /dev/null and b/common/800px-ArduinoUnoSMD.jpg differ
diff --git a/common/ArduinoUnoSMD.jpg b/common/ArduinoUnoSMD.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f28d9af9a88657e98feac04e13857056aa4b88de
Binary files /dev/null and b/common/ArduinoUnoSMD.jpg differ