summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/timing
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/timing
Initial commit
Diffstat (limited to 'macros/latex/contrib/timing')
-rw-r--r--macros/latex/contrib/timing/prozt1.tex47
-rw-r--r--macros/latex/contrib/timing/read.me23
-rw-r--r--macros/latex/contrib/timing/tim0594.upl5
-rw-r--r--macros/latex/contrib/timing/timing.mf492
-rw-r--r--macros/latex/contrib/timing/timing.pdfbin0 -> 119729 bytes
-rw-r--r--macros/latex/contrib/timing/timing.sty309
-rw-r--r--macros/latex/contrib/timing/timing.tex242
-rw-r--r--macros/latex/contrib/timing/timing1.mf29
-rw-r--r--macros/latex/contrib/timing/timing1.pkbin0 -> 1284 bytes
-rw-r--r--macros/latex/contrib/timing/timing1.tfmbin0 -> 716 bytes
-rw-r--r--macros/latex/contrib/timing/timing1s.mf29
-rw-r--r--macros/latex/contrib/timing/timing1s.pkbin0 -> 1528 bytes
-rw-r--r--macros/latex/contrib/timing/timing1s.tfmbin0 -> 716 bytes
-rw-r--r--macros/latex/contrib/timing/timing2.mf29
-rw-r--r--macros/latex/contrib/timing/timing2.pkbin0 -> 1852 bytes
-rw-r--r--macros/latex/contrib/timing/timing2.tfmbin0 -> 716 bytes
-rw-r--r--macros/latex/contrib/timing/timing2s.mf29
-rw-r--r--macros/latex/contrib/timing/timing2s.pkbin0 -> 2384 bytes
-rw-r--r--macros/latex/contrib/timing/timing2s.tfmbin0 -> 716 bytes
19 files changed, 1234 insertions, 0 deletions
diff --git a/macros/latex/contrib/timing/prozt1.tex b/macros/latex/contrib/timing/prozt1.tex
new file mode 100644
index 0000000000..fd6338e04c
--- /dev/null
+++ b/macros/latex/contrib/timing/prozt1.tex
@@ -0,0 +1,47 @@
+\begin{timing}{1.8cm}
+\tin{1}{CLK}
+\tin{2}{A16--19}
+\tin{3}{AD0--15}
+\tin{4}{\nicht{ALE}}
+\tin{5}{READY}
+\tin{6}{M/\nicht{IO}}
+\tin{7}{DT/\nicht{R}}
+\tin{8}{\nicht{RD}}
+\tin{9}{\nicht{WR}}
+\tin{10}{\nicht{DEN}}
+\tnote{0.5}{4}{T1}\tnote{0.5}{12}{T2}\tnote{0.5}{20}{T3}\tnote{0.5}{28}{T4}
+\tnote{0.5}{36}{T1}\tnote{0.5}{44}{T2}\tnote{0.5}{52}{T3}
+\tnote{0.5}{60}{T3}\tnote{0.5}{68}{T4}
+\til{1}{% Takt
+HHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLL}
+%%....1111....2222....3333....4444....1111....2222....3333....3333....4444..
+\til{2}{% Adressen/Status
+VVXVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVXVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXV}
+\tnote{2}{3}{Adressen}\tnote{2}{11}{Status}
+\tnote{2}{36}{Adressen}\tnote{2}{44}{Status}
+\til{3}{% Adressen/Daten
+ZZZVVVVVVVVZZZZZZZZVVVVVVVVVZZZZZZZZVVVVVVVXVVVVVVVVVVVVVVVVVVVVVVVVVZZZZZZZ}
+\tnote{3}{4}{Adressen}\tnote{3}{20}{Daten$^*$}
+\tnote{3}{37}{Adressen}\tnote{3}{45}{Daten$^{**}$}
+\til{4}{% -ALE
+HHHHHHHHLLLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLLLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH}
+\til{5}{% Ready
+FFFFFFFFFFFFFFFFFFFFFFFFFHHFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFLLLLLLLHHHFFFFFFFFF}
+%%....1111....2222....3333....4444....1111....2222....3333....3333....4444..
+\til{6}{% M/-IO
+FFHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFFHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFF}
+\til{7}{% DT/-R
+HLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFFFF}
+\til{8}{% -RD
+HHHHHHHHHHHHLLLLLLLLLLLLLLLLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH}
+%%....1111....2222....3333....4444....1111....2222....3333....3333....4444..
+\til{9}{% -WR
+HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLLLLLLLLLLHHHHHHHH}
+\til{10}{% -DEN
+HHHHHHHHHHHHHLLLLLLLLLLLLLLHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLLLLLLLLLLLLHHHHHHH}
+\sline{0.5}{2}{10}\sline{0.5}{10}{10}\sline{0.5}{18}{10}\sline{0.5}{26}{10}
+\sline{0.5}{34}{10}
+\sline{0.5}{42}{10}\sline{0.5}{50}{10}\sline{0.5}{58}{10}\sline{0.5}{66}{10}
+\sline{0.5}{74}{10}
+\end{timing}
+
diff --git a/macros/latex/contrib/timing/read.me b/macros/latex/contrib/timing/read.me
new file mode 100644
index 0000000000..e2b967ad9e
--- /dev/null
+++ b/macros/latex/contrib/timing/read.me
@@ -0,0 +1,23 @@
+Dieses Dateipaket enth„lt vier Zeichens„tze sowie einige Makrodefinitionen,
+die das Zeichnen von Zeitdiagrammen digitaler Schaltungen unter LaTeX
+erlauben.
+
+Folgende Dateien geh”ren dazu:
+
+TIMING1.MF Metafont-Dateien mit Beschreibung der Zeichens„tze
+TIMING2.MF
+TIMING1S.MF
+TIMING2S.MF
+TIMING.MF Hauptdatei
+
+TIMING*.PK Zeichens„tze fr Atari SLM605 (300dpi)
+TIMING*.TFM TFM Dateien fr TeX
+
+TIMING.STY Makrodefinitionen fr LaTeX
+
+TIMING.TEX Beschreibung der Makros
+TIMING.DVI DVI Datei der Beschreibung
+
+READ.ME diese Datei
+
+Weitere Einzelheiten sind der Beschreibung zu entnehmen.
diff --git a/macros/latex/contrib/timing/tim0594.upl b/macros/latex/contrib/timing/tim0594.upl
new file mode 100644
index 0000000000..de2eb98309
--- /dev/null
+++ b/macros/latex/contrib/timing/tim0594.upl
@@ -0,0 +1,5 @@
+Timing-Paket Mai 1994 von May/Leilich.
+Dieses Dateipaket enth„lt vier Zeichens„tze sowie einige Makrodefinitionen,
+die das Zeichnen von Impulsdiagrammen digitaler Schaltungen unter LaTeX
+erlauben.
+
diff --git a/macros/latex/contrib/timing/timing.mf b/macros/latex/contrib/timing/timing.mf
new file mode 100644
index 0000000000..2aef4c8240
--- /dev/null
+++ b/macros/latex/contrib/timing/timing.mf
@@ -0,0 +1,492 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TIMING.MF
+%
+% Zeichensatz zum Darstellen von Zeitdiagrammen digitaler
+% Schaltungen.
+% Hauptdatei fr alle Zeichens„tze
+%
+% Ludwig May, Dezember 1991
+% Jens Leilich, Žnderungen im Mai 1994
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+define_pixels(p_size,p3_size);
+%define_good_x_pixels(c_width);
+%define_good_y_pixels(c_height);
+define_whole_pixels(c_width,c_height,p2_size);
+if not odd c_width: c_width:=c_width-1; fi
+
+font_x_height c_height#;
+font_quad c_width#;
+
+pen pinsel;
+pinsel=(pencircle xscaled (0.8*p_size) yscaled p_size);
+
+
+beginchar("H",c_width#,c_height#,bt#); "High Level";
+
+pickup pinsel;
+draw (-c_width,c_height)--(0,c_height);
+showit;
+endchar;
+
+
+beginchar("L",c_width#,c_height#,bt#); "Low Level";
+
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+showit;
+endchar;
+
+%1/12->xs#/12, damit Steigung von HL und LH wie UV (JL,8.1.94)
+beginchar(0,2*c_width#,c_height#,bt#); "High-Low";
+
+pickup pinsel;
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height)--(xs#/12*c_width,0)--(c_width,0);
+showit;
+endchar;
+
+beginchar(1,2*c_width#,c_height#,bt#); "Low-High";
+
+pickup pinsel;
+draw (-c_width,0)--(-xs#/12*c_width,0)--(xs#/12*c_width,c_height)--(c_width,c_height);
+showit;
+endchar;
+
+beginchar(12,2*c_width#,c_height#,bt#); "Change Bus";
+
+pickup pinsel;
+draw (-c_width,0)--(-xs#/12*c_width,0);
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height);
+draw (xs#/12*c_width,0)--(c_width,0);
+draw (xs#/12*c_width,c_height)--(c_width,c_height);
+draw (-xs#/12*c_width,0)--(xs#/12*c_width,c_height);
+draw (-xs#/12*c_width,c_height)--(xs#/12*c_width,0);
+showit;
+endchar;
+
+beginchar("V",c_width#,c_height#,bt#); "Valid Bus";
+
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+draw (-c_width,c_height)--(0,c_height);
+showit;
+endchar;
+
+beginchar("Z",c_width#,c_height#,bt#); "Tristate Bus";
+
+pickup pinsel;
+draw (-c_width,c_height/2)--(0,c_height/2);
+showit;
+endchar;
+
+beginchar(2,2*c_width#,c_height#,bt#); "Tristate -> Valid Bus";
+
+pickup pinsel;
+draw (-c_width,c_height/2)--(0/12*c_width,c_height/2);
+draw (0/12*c_width,c_height/2)--(xs#/12*c_width,c_height)--(c_width,c_height);
+draw (0/12*c_width,c_height/2)--(xs#/12*c_width,0)--(c_width,0);
+showit;
+endchar;
+
+beginchar(3,2*c_width#,c_height#,bt#); "Valid -> Tristate Bus";
+
+pickup pinsel;
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height)--(0/12*c_width,c_height/2);
+draw (-c_width,0)--(-xs#/12*c_width,0)--(0/12*c_width,c_height/2);
+draw (0/12*c_width,c_height/2)--(c_width,c_height/2);
+showit;
+endchar;
+
+
+beginchar("U",c_width#,c_height#,bt#); "Invalid Bus";
+
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+draw (-c_width,c_height)--(0,c_height);
+
+pickup pencircle scaled p3_size;
+draw (-c_width,5/6*c_height)--(-c_width/2,c_height);
+draw (-c_width,c_height/2)--(0,5/6*c_height);
+draw (-c_width,1/6*c_height)--(0,c_height/2);
+draw (-c_width/2,0)--(0,1/6*c_height);
+showit;
+endchar;
+
+
+beginchar(4,2*c_width#,c_height#,bt#); "Tristate -> Invalid Bus";
+
+y1=s_f#*2/3*(x1+c_width)+1/2*c_height;
+x1=y1*(xs#/s_f#/12)+(6-xs#*0.5)*c_height/s_f#/12-c_width;% Startpunkt der 1. Linie
+%y1=s_f#* 12/xs#*(x1+c_width)-(6/xs#-0.5)*c_height;% Startpunkt der 1. Linie
+y2=s_f#*2/3*(x2+c_width)+1/6*c_height;
+x2=y2*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 2. Linie
+%y2=s_f#*-12/xs#*(x2+c_width)+(6/xs#+0.5)*c_height;% Startpunkt der 2. Linie
+y3=s_f#*2/3*(x3+c_width)-1/6*c_height;
+x3=y3*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 3. Linie
+%y3=s_f#*-12/xs#*(x3+c_width)+(6/xs#+0.5)*c_height;% Startpunkt der 3. Linie
+
+pickup pinsel;
+draw (-c_width,c_height/2)--(0/12*c_width,c_height/2);
+draw (0/12*c_width,c_height/2)--(xs#/12*c_width,c_height)--(c_width,c_height);
+draw (0/12*c_width,c_height/2)--(xs#/12*c_width,0)--(c_width,0);
+
+pickup pencircle scaled p3_size;
+draw z1--(1/2*c_width,c_height);
+draw z2--(c_width,5/6*c_height);
+draw z3--(c_width,c_height/2);
+draw (1/2*c_width,0)--(c_width,1/6*c_height);
+showit;
+endchar;
+
+beginchar(5,2*c_width#,c_height#,bt#); "Invalid -> Tristate Bus";
+
+y1=s_f#*2/3*(x1+c_width)+1/2*c_height ;
+x1=y1*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 1. Linie
+%y1=s_f#*-12/xs#*(x1+c_width)+(6/xs#+0.5)*c_height; % Startpunkt der 1. Linie
+y2=s_f#*2/3*(x2+c_width)+1/6*c_height ;
+x2=y2*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 2. Linie
+%y2=s_f#*-12/xs#*(x2+c_width)+(6/xs#+0.5)*c_height; % Startpunkt der 2. Linie
+y3=s_f#*2/3*(x3+c_width)-1/6*c_height ;
+x3=y3*(xs#/s_f#/12)+(6-xs#*0.5)*c_height/s_f#/12-c_width;% Startpunkt der 3. Linie
+%y3=s_f#* 12/xs#*(x3+c_width)-(6/xs#-0.5)*c_height; % Startpunkt der 3. Linie
+
+pickup pinsel;
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height)--(0/12*c_width,c_height/2);
+draw (-c_width,0)--(-xs#/12*c_width,0)--(0/12*c_width,c_height/2);
+draw (0/12*c_width,c_height/2)--(c_width,c_height/2);
+
+pickup pencircle scaled p3_size;
+draw (-c_width,5/6*c_height)--(-c_width/2,c_height);
+draw (-c_width,c_height/2)--z1;
+draw (-c_width,1/6*c_height)--z2;
+draw (-c_width/2,0)--z3;
+showit;
+endchar;
+
+
+beginchar(6,2*c_width#,c_height#,bt#); "Valid -> Invalid Bus";
+
+y1=s_f#*2/3*(x1+c_width)+1/2*c_height;
+x1=y1*(xs#/s_f#/12)+(6-xs#*0.5)*c_height/s_f#/12-c_width;% Startpunkt der 1. Linie
+%y1=s_f#* 12/xs#*(x1+c_width)-(6/xs#-0.5)*c_height;% 1. Linie
+y2=s_f#*2/3*(x2+c_width)+1/6*c_height;
+x2=y2*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 2. Linie
+%y2=s_f#*-12/xs#*(x2+c_width)+(6/xs#+0.5)*c_height;% 2. Linie
+y3=s_f#*2/3*(x3+c_width)-1/6*c_height;
+x3=y3*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 3. Linie
+%y3=s_f#*-12/xs#*(x3+c_width)+(6/xs#+0.5)*c_height;% 3. Linie
+
+pickup pinsel;
+draw (-c_width,0)--(-xs#/12*c_width,0);
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height);
+draw (xs#/12*c_width,0)--(c_width,0);
+draw (xs#/12*c_width,c_height)--(c_width,c_height);
+draw (-xs#/12*c_width,0)--(xs#/12*c_width,c_height);
+draw (-xs#/12*c_width,c_height)--(xs#/12*c_width,0);
+
+pickup pencircle scaled p3_size;
+draw z1--(1/2*c_width,c_height);
+draw z2--(c_width,5/6*c_height);
+draw z3--(c_width,1/2*c_height);
+draw (1/2*c_width,0)--(c_width,1/6*c_height);
+showit;
+endchar;
+
+beginchar(7,2*c_width#,c_height#,bt#); "Invalid -> Valid Bus";
+
+y1=s_f#*2/3*(x1+c_width)+1/2*c_height;
+x1=y1*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 1. Linie
+%y1=s_f#*-12/xs#*(x1+c_width)+(6/xs#+0.5)*c_height;% 1. Linie
+y2=s_f#*2/3*(x2+c_width)+1/6*c_height;
+x2=y2*(xs#/s_f#/-12)-(6+xs#*0.5)*c_height/s_f#/-12-c_width;% Startpunkt der 2. Linie
+%y2=s_f#*-12/xs#*(x2+c_width)+(6/xs#+0.5)*c_height;% 2. Linie
+y3=s_f#*2/3*(x3+c_width)-1/6*c_height;
+x3=y3*(xs#/s_f#/12)+(6-xs#*0.5)*c_height/s_f#/12-c_width;% Startpunkt der 3. Linie
+%y3=s_f#* 12/xs#*(x3+c_width)-(6/xs#-0.5)*c_height;% 3. Linie
+
+pickup pinsel;
+draw (-c_width,0)--(-xs#/12*c_width,0);
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height);
+draw (xs#/12*c_width,0)--(c_width,0);
+draw (xs#/12*c_width,c_height)--(c_width,c_height);
+draw (-xs#/12*c_width,0)--(xs#/12*c_width,c_height);
+draw (-xs#/12*c_width,c_height)--(xs#/12*c_width,0);
+
+pickup pencircle scaled p3_size;
+draw (-c_width,5/6*c_height)--(-1/2*c_width,c_height);
+draw (-c_width,1/2*c_height)--z1;
+draw (-c_width,1/6*c_height)--z2;
+draw (-1/2*c_width,0)--z3;
+showit;
+endchar;
+
+beginchar("F",c_width#,c_height#,bt#); "Floating Line";
+
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+draw (-c_width,c_height)--(0,c_height);
+showit;
+endchar;
+
+%1/12->xs#/12, damit Steigung von FL und FH wie UV (JL,8.1.94)
+beginchar(13,2*c_width#,c_height#,bt#); "Float-Low";
+
+pickup pinsel;
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height)--(xs#/12*c_width,0);
+draw (-c_width,0)--(c_width,0);
+showit;
+endchar;
+
+beginchar(14,2*c_width#,c_height#,bt#); "Float-High";
+
+pickup pinsel;
+draw (-c_width,0)--(-xs#/12*c_width,0)--(xs#/12*c_width,c_height);
+draw (-c_width,c_height)--(c_width,c_height);
+showit;
+endchar;
+
+beginchar(15,2*c_width#,c_height#,bt#); "High-Float";
+
+pickup pinsel;
+draw (-c_width,c_height)--(c_width,c_height);
+draw (-xs#/12*c_width,c_height)--(xs#/12*c_width,0)--(c_width,0);
+showit;
+endchar;
+
+beginchar(16,2*c_width#,c_height#,bt#); "Low-Float";
+
+pickup pinsel;
+draw (-c_width,0)--(c_width,0);
+draw (-xs#/12*c_width,0)--(xs#/12*c_width,c_height)--(c_width,c_height);
+showit;
+endchar;
+
+
+beginchar("-",c_width#/2,c_height#,bt#); "...";
+
+pickup pencircle scaled p3_size;
+draw (-c_width,-1/12*c_height)--(-c_width,13/12*c_height);
+draw (-c_width/2-1,-1/12*c_height)--(-c_width/2-1,13/12*c_height);
+showit;
+endchar;
+
+beginchar("T",c_width#,1/6*c_height#,bt#); "TOP";
+
+pickup pinsel;
+draw (-c_width,1/12*c_height)--(-c_width,1/6*c_height)--(0,1/6*c_height);
+showit;
+endchar;
+
+beginchar("B",c_width#,1/6*c_height#,bt#); "BOTTOM";
+
+pickup pinsel;
+draw (-c_width,1/12*c_height)--(-c_width,0)--(0,0);
+showit;
+endchar;
+
+beginchar(8,3/2*c_width#,1/6*c_height#,bt#); "TOP-";
+
+pickup pinsel;
+draw (-c_width,1/12*c_height)--(-c_width,1/6*c_height)--(0,1/6*c_height);
+pickup pencircle scaled p3_size;
+draw (0+1,0)--(0+1,2/12*c_height);
+draw (1/2*c_width-1,0)--(1/2*c_width-1,2/12*c_height);
+showit;
+endchar;
+
+beginchar(9,3/2*c_width#,1/6*c_height#,bt#); "BOTTOM-";
+
+pickup pinsel;
+draw (-c_width,1/12*c_height)--(-c_width,0)--(0,0);
+pickup pencircle scaled p3_size;
+draw (0+1,0)--(0+1,2/12*c_height);
+draw (1/2*c_width-1,0)--(1/2*c_width-1,2/12*c_height);
+showit;
+endchar;
+
+beginchar(10,3/2*c_width#,1/6*c_height#,bt#); "top-";
+
+pickup pinsel;
+draw (-c_width,1/6*c_height)--(0,1/6*c_height);
+pickup pencircle scaled p3_size;
+draw (0+1,0)--(0+1,2/12*c_height);
+draw (1/2*c_width-1,0)--(1/2*c_width-1,2/12*c_height);
+showit;
+endchar;
+
+beginchar(11,3/2*c_width#,1/6*c_height#,bt#); "bottom-";
+
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+pickup pencircle scaled p3_size;
+draw (0+1,0)--(0+1,2/12*c_height);
+draw (1/2*c_width-1,0)--(1/2*c_width-1,2/12*c_height);
+showit;
+endchar;
+
+beginchar("t",c_width#,1/6*c_height#,bt#);
+
+pickup pinsel;
+draw (-c_width,1/6*c_height)--(0,1/6*c_height);
+showit;
+endchar;
+
+beginchar("b",c_width#,1/6*c_height#,bt#);
+
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+showit;
+endchar;
+
+%Pfeil von 1/2 nach 7/8 der Breite vergr”žert (JL,8.1.94)
+beginchar("A",c_width#,3/12*c_height#,0); "Arrow left";
+
+pickup pencircle scaled p_size;
+draw (-1/8*c_width,1/12*c_height)--(0,1/12*c_height);
+fill (-1/8*c_width,2/12*c_height)--(-c_width,1/12*c_height)--(-1/8*c_width,0)--cycle;
+showit;
+endchar;
+
+beginchar("P",c_width#,3/12*c_height#,0); "Arrow right";
+
+pickup pencircle scaled p_size;
+draw (-c_width,1/12*c_height)--(-1/8*c_width,1/12*c_height);
+fill (-7/8*c_width,2/12*c_height)--(0,1/12*c_height)--(-7/8*c_width,0)--cycle;
+showit;
+endchar;
+
+beginchar("a",c_width#,3/12*c_height#,0); "Arrow line";
+
+pickup pencircle scaled p_size;
+draw (-c_width,1/12*c_height)--(0,1/12*c_height);
+showit;
+endchar;
+
+
+%dasselbe wie "U"
+beginchar("X",c_width#,c_height#,bt#); "Unknown";
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+draw (-c_width,c_height)--(0,c_height);
+
+pickup pencircle scaled p3_size;
+draw (-c_width,5/6*c_height)--(-c_width/2,c_height);
+draw (-c_width,c_height/2)--(0,5/6*c_height);
+draw (-c_width,1/6*c_height)--(0,c_height/2);
+draw (-c_width/2,0)--(0,1/6*c_height);
+showit;
+endchar;
+
+%Leerzeichen mit Punkten, damit nachtr„glich gezeichnet werden kann
+%(JL,8.1.94)
+
+beginchar(".",c_width#,c_height#,bt#); "Leer";
+pickup pinsel;
+fill (-c_width,0)--(-c_width+p2_size,0)--
+ (-c_width+p2_size,p2_size)--(-c_width,p2_size)--cycle;
+fill (-c_width,c_height)--(-c_width+p2_size,c_height)--
+ (-c_width+p2_size,c_height-p2_size)--(-c_width,c_height-p2_size)--cycle;
+showit;
+endchar;
+
+beginchar("h",c_width#,c_height#,bt#); "High Level";
+pickup pinsel;
+draw (-c_width,c_height)--(0,c_height);
+fill (-c_width,0)--(-c_width+p2_size,0)--
+ (-c_width+p2_size,p2_size)--(-c_width,p2_size)--cycle;
+showit;
+endchar;
+
+
+beginchar("l",c_width#,c_height#,bt#); "Low Level";
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+fill (-c_width,c_height)--(-c_width+p2_size,c_height)--
+ (-c_width+p2_size,c_height-p2_size)--(-c_width,c_height-p2_size)--cycle;
+showit;
+endchar;
+
+beginchar(20,2*c_width#,c_height#,bt#); "High-Low";
+pickup pinsel;
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height)--(xs#/12*c_width,0)--(c_width,0);
+fill (-c_width,0)--(-c_width+p2_size,0)--
+ (-c_width+p2_size,p2_size)--(-c_width,p2_size)--cycle;
+fill (0,c_height)--(p2_size,c_height)--
+ (p2_size,c_height-p2_size)--(0,c_height-p2_size)--cycle;
+showit;
+endchar;
+
+beginchar(21,2*c_width#,c_height#,bt#); "Low-High";
+pickup pinsel;
+draw (-c_width,0)--(-xs#/12*c_width,0)--(xs#/12*c_width,c_height)--(c_width,c_height);
+fill (0,0)--(p2_size,0)--
+ (p2_size,p2_size)--(0,p2_size)--cycle;
+fill (-c_width,c_height)--(-c_width+p2_size,c_height)--
+ (-c_width+p2_size,c_height-p2_size)--(-c_width,c_height-p2_size)--cycle;
+showit;
+endchar;
+
+beginchar("f",c_width#,c_height#,bt#); "Floating Line";
+pickup pinsel;
+draw (-c_width,0)--(0,0);
+draw (-c_width,c_height)--(0,c_height);
+showit;
+endchar;
+
+beginchar(33,2*c_width#,c_height#,bt#); "Float-Low";
+pickup pinsel;
+draw (-c_width,c_height)--(-xs#/12*c_width,c_height)--(xs#/12*c_width,0);
+draw (-c_width,0)--(c_width,0);
+fill (0,c_height)--(p2_size,c_height)--
+ (p2_size,c_height-p2_size)--(0,c_height-p2_size)--cycle;
+showit;
+endchar;
+
+beginchar(34,2*c_width#,c_height#,bt#); "Float-High";
+pickup pinsel;
+draw (-c_width,0)--(-xs#/12*c_width,0)--(xs#/12*c_width,c_height);
+draw (-c_width,c_height)--(c_width,c_height);
+fill (0,0)--(p2_size,0)--
+ (p2_size,p2_size)--(0,p2_size)--cycle;
+showit;
+endchar;
+
+beginchar(35,2*c_width#,c_height#,bt#); "High-Float";
+pickup pinsel;
+draw (-c_width,c_height)--(c_width,c_height);
+draw (-xs#/12*c_width,c_height)--(xs#/12*c_width,0)--(c_width,0);
+fill (-c_width,0)--(-c_width+p2_size,0)--
+ (-c_width+p2_size,p2_size)--(-c_width,p2_size)--cycle;
+showit;
+endchar;
+
+beginchar(36,2*c_width#,c_height#,bt#); "Low-Float";
+pickup pinsel;
+draw (-c_width,0)--(c_width,0);
+draw (-xs#/12*c_width,0)--(xs#/12*c_width,c_height)--(c_width,c_height);
+fill (-c_width,c_height)--(-c_width+p2_size,c_height)--
+ (-c_width+p2_size,c_height-p2_size)--(-c_width,c_height-p2_size)--cycle;
+showit;
+endchar;
+
+
+% HX,LX,XH,XL und dasselbe mit U statt X sind eigtl. Pfusch
+% vielleicht mal Zeichen fr machen... (JL)
+ligtable "H":"L"=:0, "F"=:15, "V"=:15, "X"=:15;
+ligtable "L":"H"=:1, "F"=:16, "V"=:16, "X"=:16;
+ligtable "F":"L"=:13,"H"=:14;
+ligtable "h":"l"=:20,"f"=:35; % Version mit Punkten zum Zeichnen (JL, 4.2.94)
+ligtable "l":"h"=:21,"f"=:36;
+ligtable "f":"l"=:33,"h"=:34;
+ligtable "Z":"V"=:2, "U"=:4;
+ligtable "V":"Z"=:3, "U"=:6, "X"=:12, "L"=:13, "H"=:14;
+ligtable "U":"Z"=:5, "V"=:7, "X"=:7, "L"=:13, "H"=:14; % UX=:7 [UV] (JL, 8.1.94)
+ligtable "X":"V"=:12,"U"=:6, "L"=:13, "H"=:14; % XU=:6 [VU] (JL, 8.1.94)
+ligtable "T":"-"=:8;
+ligtable "B":"-"=:9;
+ligtable "t":"-"=:10;
+ligtable "b":"-"=:11;
+
+end;
+
diff --git a/macros/latex/contrib/timing/timing.pdf b/macros/latex/contrib/timing/timing.pdf
new file mode 100644
index 0000000000..ae5830e945
--- /dev/null
+++ b/macros/latex/contrib/timing/timing.pdf
Binary files differ
diff --git a/macros/latex/contrib/timing/timing.sty b/macros/latex/contrib/timing/timing.sty
new file mode 100644
index 0000000000..0bb8abd859
--- /dev/null
+++ b/macros/latex/contrib/timing/timing.sty
@@ -0,0 +1,309 @@
+% timing.sty: Ludwig May/Jens Leilich 10.12.91
+%
+% Dieses Style-File erleichtert den Umgang mit dem Timing-Font.
+%
+% Es stellt Kommandos zur Positionierung von einzelnen Elementen
+% eines Timing-Diagramms in einer picture-Umgebung zur Verfuegung.
+%
+%
+% Folgende Kommandos sind verfuegbar:
+%
+% Erweiterte picture-Umgebung
+% \begin{timing}[Zeichensatz]{Randgroesse}
+% \end{timing}
+% Zeichensatz ist 1,2,1s,2s. Die Zahl gibt die Breite an,
+% s bedeutet schr„ge Flanken. 2 ist default.
+%
+% Zeile mit Timingdiagramm
+% \til{y-pos}{Zeichenkette}
+%
+% Label fuer Zeile
+% \tin{y-pos}{Zeichenkette}
+%
+% Bemerkung
+% \tnote{y-pos}{x-pos}{Zeichenkette}
+%
+% Pfeil nach rechts zeigend
+% \rarw{y-pos}{x-pos}{laenge}{Zeichenkette}
+%
+% Pfeil nach links zeigend
+% \larw{y-pos}{x-pos}{laenge}{Zeichenkette}
+%
+% Senkrechte Linie
+% \sline{y1-pos}{x-pos}{y2-pos}
+%
+% Zeitmarken als Argument fuer \til
+% \timingcounter{Markenabstand}{Startwert}{Endwert}{Intervall}
+% Zeitmarken als Argument fuer \til nach Unterbrechung
+% \conttimingcounter{Markenabstand}{Startwert}{Endwert}{Intervall}
+%
+%
+% Abstandsfaktor fuer einzelne Zeilen
+% \timescalefactor
+%
+% Evtl. n”tige Anpassung fuer Ausrichtung senkrechter Linien
+% \timadjust
+%
+%
+% Dieses Style-File und der dazugehoerige Zeichensatz wurde erstellt,
+% um moeglichst einfach ein paar Timingdiagramme in meine Studienarbeit
+% integrieren zu koennen. Da es in der vorliegenden Form meine
+% Erwartungen vollstaendig erfuellt hat, haben ich aus Zeitgruenden keine
+% grosse Ueberarbeitung durchgefuehrt. Vielleicht kann das jemand uebernehmen,
+% der von der ganzen Materie mehr Ahnung hat. Ein Problem ist z.B. die
+% ungenaue horizontale Ausrichtung der senkrechten Linien (ist irgendwie
+% Druckertreiber abhaengig, evtl. MAX_DRIFT des Treibers auf 0 setzen).
+% Da aber grosses Interesse an dem Style besteht, haben ich ihn mal in
+% Umlauf gegeben. Wenn jemand Verbesserungen durchfuehrt, waeren ich an
+% einer Rueckmeldung an folgende Adresse dankbar:
+%
+% Ludwig May
+% Friedrichstrasse 23b
+% 6100 Darmstadt
+%
+% Bitte keine Fragen stellen, ich habe fuer eine weitere Unterstuetzung
+% weder Zeit noch ausreichend Gelegenheit.
+%
+% Ludwig May
+%
+% Ich habe Font und Style weiterentwickelt zu Lehrzwecken, da ich
+% Elektrotechnik an BBS unterrichte.
+% Verbesserungsvorschl„ge und Lob ;-) k”nnen auch an mich gerichtet
+% werden.
+% Jens Leilich, C/O BBS Technik I, Franz-Zang-Str. 3--7, 67059 Ludwigshafen
+% Jens_Leilich @ lu.maus.de
+%
+\typeout{Timing Style, Ludwig May <Dec 1991> Jens Leilich <May 1994>.}
+%
+%
+% Alle benoetigten Counter, Dimensionen und Boxen definieren
+%
+%
+\newfont{\timon}{timing1 scaled 1000}
+\newfont{\timtw}{timing2 scaled 1000}
+\newfont{\timons}{timing1s scaled 1000}
+\newfont{\timtws}{timing2s scaled 1000}
+\newfont{\timbs}{cmr5 scaled 1000}
+\newcount\counttime
+\newdimen\timetmpdim
+\newdimen\timehdrdim
+\newcount\timetmpcnt
+\newcount\timearwcnt
+\newdimen\timeskipdim
+\newdimen\timewidthdim
+\newbox\timebox
+\def\timescalefactor{2}
+\def\timadjust{0.0pt}
+%
+%
+% Neue Umgebung definieren
+%
+%
+\def\timing{\@ifnextchar [{\@@timing}{\@@timing[2]}}
+
+\def\@@timing[#1]#2%
+{
+\expandafter\def\csname tim@@1\endcsname{\let\tim\timon}
+\expandafter\def\csname tim@@2\endcsname{\let\tim\timtw}
+\expandafter\def\csname tim@@1s\endcsname{\let\tim\timons}
+\expandafter\def\csname tim@@2s\endcsname{\let\tim\timtws}
+\def\tim{%
+ \typeout{Timing font `#1' not defined, assumed 2. Use 1,2,1s,2s only!}
+ \timtw \let\tim\timtw}
+\csname tim@@#1\endcsname
+\tim
+\timehdrdim=#2
+\advance\timehdrdim by 1em
+%
+%
+% Lokale Befehle definieren
+%
+%
+%
+% Hilfroutine zum Zeichen von Pfeilen variabler Laenge
+%
+%
+\newcommand{\timatail}[1]{ \mbox{ \tim
+ \counttime=2
+ \ifnum##1>1
+ \loop
+ a%
+ \ifnum\counttime<##1 \advance\counttime by 1
+ \repeat
+ \fi
+}}
+%
+%
+% Hilfroutine zum Zeichen der Zeitmarkierung
+%
+%
+\newcommand{\lb}[2]{{\tim\makebox[##1em][c]{\timbs##2}}}
+%
+%
+% \timingcounter
+%
+%
+\newcommand{\timingcounter}[4]{ \mbox{ \tim
+ \counttime=##1\divide\counttime by -2
+ \hskip\counttime em
+ \hskip -1em
+ \counttime=##2
+ \loop
+ \lb{##1}{\number\counttime}
+ \ifnum\counttime<##3 \advance\counttime by ##4
+ \repeat
+}}
+%
+%
+% \conttimingcounter
+%
+%
+\newcommand{\conttimingcounter}[4]{ \mbox{ \tim
+ \hskip 0.5em
+ \counttime=##2
+ \loop
+ \lb{##1}{\number\counttime}
+ \ifnum\counttime<##3 \advance\counttime by ##4
+ \repeat
+}}
+%
+%
+% \til
+%
+%
+\newcommand{\til}[2]{
+\tim
+\timetmpdim=##1ex
+\timetmpdim=\timescalefactor\timetmpdim
+%
+% Maximale y-Groesse festhalten
+%
+\ifdim\timetmpdim>\timeskipdim
+ \global\timeskipdim=\timetmpdim
+\fi
+\timetmpcnt=\timetmpdim
+\timetmpdim=\timehdrdim
+\advance\timetmpdim by -\timadjust
+\timearwcnt=\timetmpdim
+\setbox\timebox=\hbox{##2}
+%
+% Maximale x-Groesse festhalten
+%
+\ifdim\wd\timebox>\timewidthdim
+ \global\timewidthdim=\wd\timebox
+\fi
+\put(\timearwcnt,-\timetmpcnt){\tim\makebox(0,0)[l]{\box\timebox}}
+%\put(\timearwcnt,-\timetmpcnt){\tim\makebox(0,0)[l]{##2}}
+}
+%
+%
+% \tin
+%
+%
+\newcommand{\tin}[2]{
+\tim
+\timetmpdim=##1ex
+\timetmpdim=\timescalefactor\timetmpdim
+\timetmpcnt=\timetmpdim
+\put(0,-\timetmpcnt){\makebox(0,0)[lb]{\rm##2}}
+}
+%
+%
+% \tnote
+%
+%
+\newcommand{\tnote}[3]{
+\tim
+\timetmpdim=##1ex
+\advance\timetmpdim by -0.3pt
+\timetmpdim=\timescalefactor\timetmpdim
+\timetmpcnt=\timetmpdim
+\timetmpdim=##2em
+\advance\timetmpdim by \timehdrdim
+\advance\timetmpdim by -1em
+\timearwcnt=\timetmpdim
+\put(\timearwcnt,-\timetmpcnt){\tim\makebox(0,0)[l]{\scriptsize\sf##3}}
+}
+%
+%
+% \larw
+%
+%
+\newcommand{\larw}[4]{
+\tim
+\timetmpdim=##1ex
+\timetmpdim=\timescalefactor\timetmpdim
+\timetmpcnt=\timetmpdim
+\timetmpdim=##2em
+\advance\timetmpdim by \timehdrdim
+\timearwcnt=\timetmpdim
+\put(\timearwcnt,-\timetmpcnt)%
+ {\makebox(0,0)[l]{\tiny\vbox{\tim\hbox{\hskip-1em\hbox to ##3em{\hss\timbs\strut##4\hfil}}\nointerlineskip\vskip-4pt\hbox{A\timatail{##3}}}}}
+}
+%
+%
+% \rarw
+%
+%
+\newcommand{\rarw}[4]{
+\tim
+\timetmpdim=##1ex
+\timetmpdim=\timescalefactor\timetmpdim
+\timetmpcnt=\timetmpdim
+\timetmpdim=##2em
+\advance\timetmpdim by \timehdrdim
+\timearwcnt=\timetmpdim
+\put(\timearwcnt,-\timetmpcnt)%
+ {\makebox(0,0)[l]{\tiny\vbox{\tim\hbox{\hskip-1em\hbox to ##3em{\hfil\timbs\strut##4\hss}}\nointerlineskip\vskip-4pt\hbox{\timatail{##3}P}}}}
+}
+%
+%
+% \sline
+%
+%
+\newcommand{\sline}[3]{
+\tim
+\timetmpdim=##1ex
+\timetmpdim=\timescalefactor\timetmpdim
+\timetmpcnt=\timetmpdim
+\timetmpdim=##2em
+\advance\timetmpdim by \timehdrdim
+\advance\timetmpdim by -1em
+\timearwcnt=\timetmpdim
+\timetmpdim=##3ex
+\advance \timetmpdim by -##1ex
+\advance \timetmpdim by 0.09ex
+\timetmpdim=\timescalefactor\timetmpdim
+\counttime=\timetmpdim
+\put(\timearwcnt,-\timetmpcnt)%
+ {\line(0,-1){\counttime}}
+}
+%
+%
+% Weitere Initialisierung
+%
+%
+\timeskipdim=0pt
+\timewidthdim=0pt
+\unitlength 1sp
+\begin{picture}(0,0)
+\linethickness{0.4pt}
+}%
+%
+%
+% Ende der Umgebung definieren
+%
+%
+\def\endtiming{
+\global\advance\timeskipdim by 15pt
+\end{picture}
+%
+% Da picture(0,0) definiert wurde, wird jetzt die wirkliche Groesse durch
+% ein \rule freigehalten.
+%
+\timeskipdim=1.0\timeskipdim
+\timewidthdim=1.0\timewidthdim
+\advance\timewidthdim by \timehdrdim
+\rule{\timewidthdim}{0pt}
+\rule[-\timeskipdim]{0pt}{\timeskipdim}
+}
diff --git a/macros/latex/contrib/timing/timing.tex b/macros/latex/contrib/timing/timing.tex
new file mode 100644
index 0000000000..0d6605dac3
--- /dev/null
+++ b/macros/latex/contrib/timing/timing.tex
@@ -0,0 +1,242 @@
+\documentstyle[german,verbatim,dina4,titlepage,timing,12pt]{article}
+\setlength{\textwidth}{16.5cm}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{5pt plus 2pt minus 1 pt}
+\frenchspacing
+
+\begin{document}
+\title{TIMING.STY\\Satz von Zeitdiagrammen fr digitale Schaltungen}
+\author{Ludwig May\\Jens Leilich}
+\maketitle
+
+\section{Motivation}
+
+Wir standen bei unserer Studienarbeit vor dem Problem, Zeitdiagramme
+einiger Digitalschaltungen darstellen zu mssen.
+Als Alternative zu der herk”mmlichen Erstellung durch ein Zeichenprogramm
+kam uns die Idee, ein solches Diagramm mit Hilfe eines
+speziellen Metafont-Zeichensatzes durch die Aneinanderreihung von
+Buchstaben zu realisieren. Durch die Verwendung von Ligaturen sollten so
+alle sinnvollen šberg„nge einzelner Logikzust„nde automatisch gezeichnet
+werden.
+
+Diesen Zeichensatz haben wir zun„chst gemeinsam entwickelt.
+
+Das vorliegende \LaTeX\ Stylefile {\bf TIMING.STY} wurde von Ludwig alleine
+entwickelt, um die Benutzung des Zeichensatzes zu vereinfachen.
+
+Durch die Besch„ftigung an der Berufsbildenden Schule Ludwigshafen wurde von
+Jens der Style und die Fonts weiterentwickelt, weil gewisse Features fehlten.
+
+Es erlaubt die Erstellung und Beschriftung eines Zeitdiagramms. Die einzelnen
+Elemente des Diagramms werden dabei ber ein Koordinatensystem angeordnet.
+Eine Einheit der Zeitachse entspricht dabei der L„nge eines Buchstabens,
+eine Einheit der Y-Achse entspricht dem Abstand von zwei Signalverl„ufen.
+
+\section{Makros}
+
+Die im folgenden beschriebenen Makros k”nnen nur innerhalb der
+\verb|timing| Umgebung eingesetzt werden. Diese Umgebung ist eine
+Erweiterung der \verb|picture| Umgebung, es k”nnen also auch alle
+\verb|picture| Befehle verwendet werden (\verb|\unitlength=1sp|).
+
+Die Umgebung wird durch den Befehl
+
+\verb|\begin{timing}[|{\em Zeichensatz}\verb|]{|{\em Labelbreite}\verb|}|
+
+eingeleitet.
+Der Parameter {\em Labelbreite} gibt den zu reservierenden Platz fr die
+Signalbezeichnung an.
+Der Parameter {\em Zeichensatz} w„hlt den Zeichensatz aus.
+\verb|1| ist ein schmaler Zeichensatz, der ca.\ 1mm breite Elemente enth„lt,
+\verb|2| ist ein breiterer Zeichensatz mit ca.\ 2mm breiten Elementen.
+Die Version mit \verb|s| dahinter (\verb|1s| und \verb|2s|) verwendet
+schr„ge Flanken im Gegensatz zu den "`normalen"' Zeichens„tzen.
+(Man glaubt nicht, wieviele Schwierigkeiten die Schler mit schr„gen
+Flanken haben.
+Man sagt ihnen: "`Nehmt die Mitte"', aber sie raffen's nicht.)
+Normalerweise wird der Zeichensatz \verb|2| verwendet.
+
+Die Umgebung muá durch
+
+\verb|\end{timing}|
+
+abgeschlossen werden. (Mssen wir das erw„hnen ??)
+
+Eine Diagrammzeile wird durch das Makro
+
+\verb|\til{|{\em Zeile}\verb|}{|{\em Zeichenkette mit Symbolbuchstaben}\verb|}|
+
+erzeugt. Die Symbolbuchstaben repr„sentieren den jeweiligen Signalzustand
+gem„á Tabelle~\ref{symtab}. Alternativ k”nnen die Makros
+\verb|\timingcounter| bzw. \verb|\conttimingcounter| als Argument
+bergeben werden.
+Bei Verwendung von Symbolbuchstaben sollte darauf geachtet werden, daá nach
+einem Symbolwechsel mindestens zwei aufeinanderfolgende Buchstaben gleich
+sind, um ein ordnungsgem„áes Arbeiten des Ligaturmechanismus zu
+gew„hrleisten. Die Makros
+
+\verb|\timingcounter{|{\em Zeitmarkenabstand}\verb|}{|{\em Startwert}\verb|}{|{\em Endwert}\verb|}{|{\em Zeitintervall}\verb|}| \hfill und
+
+\verb|\conttimingcounter{|{\em Zeitmarkenabstand}\verb|}{|{\em Startwert}\verb|}{|{\em Endwert}\verb|}{|{\em Zeitintervall}\verb|}|
+
+erzeugen eine Ziffernskala. \verb|\conttimingcounter| wird nach einer
+Unterbrechung benutzt und erzeugt zus„tzlich den n”tigen Zwischenraum.
+
+
+\begin{table}
+\def\timtest#1{{\timon #1- \timons #1- \timtw #1- \timtws #1}}
+\centering
+\begin{tabular}{|l|l|l|}
+\hline
+\rule[-4mm]{0pt}{12mm}L & 0 - Pegel &
+{\tt HLLLLH} \quad $\to$ \quad \raisebox{-2mm}{\timtest{HLLLLH }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}H & 1 - Pegel &
+{\tt LHHHHL} \quad $\to$ \quad \raisebox{-2mm}{\timtest{LHHHHL }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}F & unbekannter Pegel &
+{\tt LFFFFH} \quad $\to$ \quad \raisebox{-2mm}{\timtest{LFFFFH }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}L & 0 - Pegel zum Zeichnen &
+{\tt hllllh} \quad $\to$ \quad \raisebox{-2mm}{\timtest{hllllh }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}H & 1 - Pegel zum Zeichnen &
+{\tt lhhhhl} \quad $\to$ \quad \raisebox{-2mm}{\timtest{lhhhhl }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}H & Leere Zeile zum Zeichnen &
+{\tt ......} \quad $\to$ \quad \raisebox{-2mm}{\timtest{...... }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}V & Bus-Leitungen mit gltigen Daten &
+{\tt ZVVVVU} \quad $\to$ \quad \raisebox{-2mm}{\timtest{ZVVVVU }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}X & Bus-Leitungen mit Zustandswechsel &
+{\tt VVVXVV} \quad $\to$ \quad \raisebox{-2mm}{\timtest{VVVXVV }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}U & Bus-Leitungen mit ungltigen Daten &
+{\tt ZUUUUV} \quad $\to$ \quad \raisebox{-2mm}{\timtest{ZUUUUV }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}Z & Bus-Leitungen auf Tristate &
+{\tt VZZZZU} \quad $\to$ \quad \raisebox{-2mm}{\timtest{VZZZZU }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}T & Kopfzeile mit Zeitmarke &
+{\tt TtttTt} \quad $\to$ \quad \raisebox{-0mm}{\timtest{TtttTt }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}t & Kopfzeile ohne Zeitmarke &
+{\tt TtTtTt} \quad $\to$ \quad \raisebox{-0mm}{\timtest{TtTtTt }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}B & Fuázeile mit Zeitmarke &
+{\tt BbbbBb} \quad $\to$ \quad \raisebox{-0mm}{\timtest{BbbbBb }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}b & Fuázeile ohne Zeitmarke &
+{\tt BbBbBb} \quad $\to$ \quad \raisebox{-0mm}{\timtest{BbBbBb }} \\
+\hline
+\rule[-4mm]{0pt}{12mm}- & Unterbrechungszeichen &
+{\tt UUU-UU} \quad $\to$ \quad \raisebox{-2mm}{\timtest{UUU-UU }} \\
+\hline
+\end{tabular}
+\caption{M”gliche Symbolbuchstaben in 3 Zeichens„tzen {\tt 1/1s/2/2s}}
+\label{symtab}
+\end{table}
+
+Die Signalbezeichnung fr eine Diagrammzeile wird mit dem Makro
+
+\verb|\tin{|{\em Zeile}\verb|}{|{\em Name}\verb|}|
+
+zugeordnet.
+
+Fr Bemerkungen innerhalb des Signalverlaufs dient
+
+\verb|\tnote{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em Bemerkung}\verb|}|
+
+Die Darstellung der Zeitbeziehungen zwischen einzelnen Signalverl„ufen
+erfolgt durch die folgenden Makros:
+
+\begin{tabular}{ll}
+Pfeil nach rechts & \verb|\rarw{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em L„nge}\verb|}{|{\em Text}\verb|}| \\
+Pfeil nach links & \verb|\larw{|{\em Zeile}\verb|}{|{\em X-Position}\verb|}{|{\em L„nge}\verb|}{|{\em Text}\verb|}| \\
+senkrechte Linie & \verb|\sline{|{\em Anfangszeile}\verb|}{|{\em X-Position}\verb|}{|{\em Endezeile}\verb|}| \\
+\end{tabular}
+
+Bei Zeile (bei den Pfeilen) verwenden Sie blicherweise einen um $0.6$
+verminderten Wert.
+Bei der Linie meint X-Position die Position, hinter der die Linie sein soll;
+das erste Zeichen hat die Nummer 1.
+
+Die Linienbreite der senkrechten Linien kann dabei wie in der
+\verb|picture| Umgebung durch \verb|\linethickness| festgelegt werden.
+
+Weiterhin existiert ein Faktor, der den Abstand zwischen zwei
+Signalverl„ufen bestimmt. \verb|\timescalefactor| kann durch
+\verb|\newcommand| auf einen beliebigen Wert gesetzt werden. Defaultwert
+ist 2.
+
+%
+% Evtl. n”tige Anpassung fuer Ausrichtung senkrechter Linien
+% \timadjust
+%
+
+
+\section{Ausblick}
+
+Die beschriebenen Makros haben ein besseres Ergebnis in der Darstellung
+von Zeitdiagrammen gebracht, als wir gehofft haben. Da sie an unserem
+Institut an der THD einiges Interesse hervorgerufen haben, m”chten wir
+sie der Allgemeinheit ebenfalls nicht vorenthalten.
+
+Ein Problem besteht in der unterschiedlichen Ausrichtung der senkrechten
+Linien durch verschiedene Druckertreiber. Wenn diese Linien nicht mittig
+auf den Signal"-ber"-g„ngen sitzen, sollte zun„chst versucht werden, den
+Wert \verb|max_drift| des Druckertreibers auf 0 zu setzen (nicht bei allen
+Treibern m”glich; bei den dvidrv-Treibern fr em\TeX\ ist die Option
+\verb|/fd0| anzugeben). Kann dadurch keine Abhilfe geschaffen werden,
+besteht die M”glichkeit, durch den Befehl
+\verb|\renewcommand{\timadjust}{|{\em Dimension}\verb|}| vor dem Beginn
+einer \verb|timing| Umgebung eine Verschiebung der Linien zu erreichen.
+
+Fr eine Verbesserung in diesem oder auch anderen Punkten bestehen alle
+Freiheiten. Eine weitere Untersttzung von Ludwigs Seite wird es
+wahrscheinlich nicht geben, da er, wie die meisten Menschen heutzutage,
+wenig Zeit habe und sich das Interesse dieser Makros und des Zeichensatzes
+nur auf ein paar Datentechniker und VLSI-Spezialisten beschr„nken drfte.
+Jens wird wohl darauf achten, daž ddas Paket up to date bleibt und evtl.\
+weitere Features einbauen, wenn es ihm sinnvoll erscheint.
+
+Fr eventuelle positive Rckmeldungen an folgende Adressen wrden wir uns
+freuen:
+
+\begin{center}
+\parbox{5cm}{
+Ludwig May\\
+Friedrichstrasse 23b \\
+64293 Darmstadt}
+\parbox{5cm}{
+Jens Leilich\\
+Oppauer Straže 90\\
+67069 Ludwigshafen}
+\end{center}
+
+Jens Leilich ist aužerdem unter folgender email-Adresse zu erreichen:
+
+\verb|Jens_Leilich@lu.maus.de|
+oder ber BTX 0621667821-1.
+
+Spenden sind natrlich auch willkommen :-).
+
+\newpage
+
+\section{Beispiel}
+
+\def\nicht#1{$\overline{\mbox{#1}}$}
+\input{prozt1}
+{\hfill Bild~1 : Beispieldiagramm \hfill}
+
+\clearpage\newpage
+
+Definition fr das Beispieldiagramm aus Bild~1 :
+
+\begin{scriptsize}
+\verbatiminput{prozt1}
+\end{scriptsize}
+
+\end{document}
diff --git a/macros/latex/contrib/timing/timing1.mf b/macros/latex/contrib/timing/timing1.mf
new file mode 100644
index 0000000000..64b42dc077
--- /dev/null
+++ b/macros/latex/contrib/timing/timing1.mf
@@ -0,0 +1,29 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TIMING1.MF
+%
+% Zeichensatz zum Darstellen von Zeitdiagrammen digitaler
+% Schaltungen.
+% Datei fr Zeichensatz mit ca. 1mm Breite
+%
+% Ludwig May, Dezember 1991
+% Jens Leilich, Žnderungen im Mai 1994
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+mode_setup;
+
+font_size 10/300in#;
+font_identifier:="TIMING1";
+font_coding_scheme:="UNSPECIFIED";
+
+u#:=1/60in#;
+c_width#:=5/2u#;
+c_height#:=15u#;
+p_size#:=u#/2;
+p2_size#:=p_size#*2;
+p3_size#:=p_size#/3;
+s_f#:=c_height#/2/c_width#;
+xs#:=0; % muss zwischen 0 und 6 liegen
+bt#:=10;
+
+input timing
+
diff --git a/macros/latex/contrib/timing/timing1.pk b/macros/latex/contrib/timing/timing1.pk
new file mode 100644
index 0000000000..b432d2a910
--- /dev/null
+++ b/macros/latex/contrib/timing/timing1.pk
Binary files differ
diff --git a/macros/latex/contrib/timing/timing1.tfm b/macros/latex/contrib/timing/timing1.tfm
new file mode 100644
index 0000000000..7a75ba20d1
--- /dev/null
+++ b/macros/latex/contrib/timing/timing1.tfm
Binary files differ
diff --git a/macros/latex/contrib/timing/timing1s.mf b/macros/latex/contrib/timing/timing1s.mf
new file mode 100644
index 0000000000..8a10bd9fa5
--- /dev/null
+++ b/macros/latex/contrib/timing/timing1s.mf
@@ -0,0 +1,29 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TIMING1.MF
+%
+% Zeichensatz zum Darstellen von Zeitdiagrammen digitaler
+% Schaltungen.
+% Datei fr Zeichensatz mit ca. 1mm Breite
+%
+% Ludwig May, Dezember 1991
+% Jens Leilich, Žnderungen im Mai 1994
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+mode_setup;
+
+font_size 10/300in#;
+font_identifier:="TIMING1";
+font_coding_scheme:="UNSPECIFIED";
+
+u#:=1/60in#;
+c_width#:=5/2u#;
+c_height#:=15u#;
+p_size#:=u#/2;
+p2_size#:=p_size#*2;
+p3_size#:=p_size#/3;
+s_f#:=c_height#/2/c_width#;
+xs#:=3; % muss zwischen 0 und 6 liegen
+bt#:=10;
+
+input timing
+
diff --git a/macros/latex/contrib/timing/timing1s.pk b/macros/latex/contrib/timing/timing1s.pk
new file mode 100644
index 0000000000..6e87ef3e59
--- /dev/null
+++ b/macros/latex/contrib/timing/timing1s.pk
Binary files differ
diff --git a/macros/latex/contrib/timing/timing1s.tfm b/macros/latex/contrib/timing/timing1s.tfm
new file mode 100644
index 0000000000..7a75ba20d1
--- /dev/null
+++ b/macros/latex/contrib/timing/timing1s.tfm
Binary files differ
diff --git a/macros/latex/contrib/timing/timing2.mf b/macros/latex/contrib/timing/timing2.mf
new file mode 100644
index 0000000000..d3d50c77ac
--- /dev/null
+++ b/macros/latex/contrib/timing/timing2.mf
@@ -0,0 +1,29 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TIMING2.MF
+%
+% Zeichensatz zum Darstellen von Zeitdiagrammen digitaler
+% Schaltungen.
+% Datei fr Zeichensatz mit ca. 2mm Breite
+%
+% Ludwig May, Dezember 1991
+% Jens Leilich, Žnderungen im Mai 1994
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+mode_setup;
+
+font_size 10/300in#;
+font_identifier:="TIMING2";
+font_coding_scheme:="UNSPECIFIED";
+
+u#:=1/60in#;
+c_width#:=5u#;
+c_height#:=15u#;
+p_size#:=u#/2;
+p2_size#:=p_size#*2;
+p3_size#:=p_size#/3;
+s_f#:=c_height#/2/c_width#;
+xs#:=0; % muss zwischen 0 und 6 liegen
+bt#:=10;
+
+input timing
+
diff --git a/macros/latex/contrib/timing/timing2.pk b/macros/latex/contrib/timing/timing2.pk
new file mode 100644
index 0000000000..076e4e0ca2
--- /dev/null
+++ b/macros/latex/contrib/timing/timing2.pk
Binary files differ
diff --git a/macros/latex/contrib/timing/timing2.tfm b/macros/latex/contrib/timing/timing2.tfm
new file mode 100644
index 0000000000..e8f69abd58
--- /dev/null
+++ b/macros/latex/contrib/timing/timing2.tfm
Binary files differ
diff --git a/macros/latex/contrib/timing/timing2s.mf b/macros/latex/contrib/timing/timing2s.mf
new file mode 100644
index 0000000000..ba35ac3115
--- /dev/null
+++ b/macros/latex/contrib/timing/timing2s.mf
@@ -0,0 +1,29 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TIMING2.MF
+%
+% Zeichensatz zum Darstellen von Zeitdiagrammen digitaler
+% Schaltungen.
+% Datei fr Zeichensatz mit ca. 2mm Breite
+%
+% Ludwig May, Dezember 1991
+% Jens Leilich, Žnderungen im Mai 1994
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+mode_setup;
+
+font_size 10/300in#;
+font_identifier:="TIMING2";
+font_coding_scheme:="UNSPECIFIED";
+
+u#:=1/60in#;
+c_width#:=5u#;
+c_height#:=15u#;
+p_size#:=u#/2;
+p2_size#:=p_size#*2;
+p3_size#:=p_size#/3;
+s_f#:=c_height#/2/c_width#;
+xs#:=3; % muss zwischen 0 und 6 liegen
+bt#:=10;
+
+input timing
+
diff --git a/macros/latex/contrib/timing/timing2s.pk b/macros/latex/contrib/timing/timing2s.pk
new file mode 100644
index 0000000000..6cb1ac775a
--- /dev/null
+++ b/macros/latex/contrib/timing/timing2s.pk
Binary files differ
diff --git a/macros/latex/contrib/timing/timing2s.tfm b/macros/latex/contrib/timing/timing2s.tfm
new file mode 100644
index 0000000000..e8f69abd58
--- /dev/null
+++ b/macros/latex/contrib/timing/timing2s.tfm
Binary files differ