%!PS %%Version: 3.3 %%DocumentFonts: (atend) %%Pages: (atend) %%EndComments % % Version 3.3 prologue for troff files. % /#copies 1 store /aspectratio 1 def /formsperpage 1 def /landscape false def /linewidth .3 def /magnification 1 def /margin 0 def /orientation 0 def /resolution 720 def /rotation 1 def /xoffset 0 def /yoffset 0 def /roundpage true def /useclippath true def /pagebbox [0 0 612 792] def /R /Times-Roman def /I /Times-Italic def /B /Times-Bold def /BI /Times-BoldItalic def /H /Helvetica def /HI /Helvetica-Oblique def /HB /Helvetica-Bold def /HX /Helvetica-BoldOblique def /CW /Courier def /CO /Courier def /CI /Courier-Oblique def /CB /Courier-Bold def /CX /Courier-BoldOblique def /PA /Palatino-Roman def /PI /Palatino-Italic def /PB /Palatino-Bold def /PX /Palatino-BoldItalic def /Hr /Helvetica-Narrow def /Hi /Helvetica-Narrow-Oblique def /Hb /Helvetica-Narrow-Bold def /Hx /Helvetica-Narrow-BoldOblique def /KR /Bookman-Light def /KI /Bookman-LightItalic def /KB /Bookman-Demi def /KX /Bookman-DemiItalic def /AR /AvantGarde-Book def /AI /AvantGarde-BookOblique def /AB /AvantGarde-Demi def /AX /AvantGarde-DemiOblique def /NR /NewCenturySchlbk-Roman def /NI /NewCenturySchlbk-Italic def /NB /NewCenturySchlbk-Bold def /NX /NewCenturySchlbk-BoldItalic def /ZD /ZapfDingbats def /ZI /ZapfChancery-MediumItalic def /S /S def /S1 /S1 def /GR /Symbol def /inch {72 mul} bind def /min {2 copy gt {exch} if pop} bind def /setup { counttomark 2 idiv {def} repeat pop landscape {/orientation 90 orientation add def} if /scaling 72 resolution div def linewidth setlinewidth 1 setlinecap pagedimensions xcenter ycenter translate orientation rotation mul rotate width 2 div neg height 2 div translate xoffset inch yoffset inch neg translate margin 2 div dup neg translate magnification dup aspectratio mul scale scaling scaling scale /Symbol /S Sdefs cf /Times-Roman /S1 S1defs cf 0 0 moveto } def /pagedimensions { useclippath userdict /gotpagebbox known not and { /pagebbox [clippath pathbbox newpath] def roundpage currentdict /roundpagebbox known and {roundpagebbox} if } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def userdict /gotpagebbox true put } def /pagesetup { /page exch def currentdict /pagedict known currentdict page known and { page load pagedict exch get cvx exec } if } def /decodingdefs [ {counttomark 2 idiv {y moveto show} repeat} {neg /y exch def counttomark 2 idiv {y moveto show} repeat} {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} {counttomark 2 idiv {y moveto show} repeat} {neg setfunnytext} ] def /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def /w {neg moveto show} bind def /m {neg dup /y exch def moveto} bind def /done {/lastpage where {pop lastpage} if} def /f { dup /font exch def findfont exch dup /ptsize exch def scaling div dup /size exch def scalefont setfont linewidth ptsize mul scaling 10 mul div setlinewidth /spacewidth ( ) stringwidth pop def } bind def /changefont { /fontheight exch def /fontslant exch def currentfont [ 1 0 fontheight ptsize div fontslant sin mul fontslant cos div fontheight ptsize div 0 0 ] makefont setfont } bind def /sf {f} bind def /cf { dup length 2 idiv /entries exch def /chtab exch def /newfont exch def findfont dup length 1 add dict /newdict exch def {1 index /FID ne {newdict 3 1 roll put} {pop pop} ifelse} forall newdict /Metrics entries dict put newdict /Metrics get begin chtab aload pop 1 1 entries {pop def} for newfont newdict definefont pop end } bind def % % A few arrays used to adjust reference points and character widths in some % of the printer resident fonts. If square roots are too high try changing % the lines describing /radical and /radicalex to, % % /radical [0 -75 550 0] % /radicalex [-50 -75 500 0] % % Move braceleftbt a bit - default PostScript character is off a bit. % /Sdefs [ /bracketlefttp [201 500] /bracketleftbt [201 500] /bracketrighttp [-81 380] /bracketrightbt [-83 380] /braceleftbt [203 490] /bracketrightex [220 -125 500 0] /radical [0 0 550 0] /radicalex [-50 0 500 0] /parenleftex [-20 -170 0 0] /integral [100 -50 500 0] /infinity [10 -75 730 0] ] def /S1defs [ /underscore [0 80 500 0] /endash [7 90 650 0] ] def % % Tries to round clipping path dimensions, as stored in array pagebbox, so they % match one of the known sizes in the papersizes array. Lower left coordinates % are always set to 0. % /roundpagebbox { 7 dict begin /papersizes [8.5 inch 11 inch 14 inch 17 inch] def /mappapersize { /val exch def /slop .5 inch def /diff slop def /j 0 def 0 1 papersizes length 1 sub { /i exch def papersizes i get val sub abs dup diff le {/diff exch def /j i def} {pop} ifelse } for diff slop lt {papersizes j get} {val} ifelse } def pagebbox 0 0 put pagebbox 1 0 put pagebbox dup 2 get mappapersize 2 exch put pagebbox dup 3 get mappapersize 3 exch put end } bind def %%EndProlog %%BeginSetup mark /resolution 720 def setup 2 setdecoding %%EndSetup %%Page: 1 1 /saveobj save def mark 1 pagesetup 16 HB f (Terminal Call Processing in Esterel)4 2693 1 1533 1220 t 10 R f (Gary J. Murakami)2 729 1 2515 1483 t (Ravi Sethi)1 420 1 2670 1603 t 10 I f (AT&T Bell Laboratories)2 985 1 2387 1754 t (Murray Hill, New Jersey 07974)4 1268 1 2222 1874 t 7 R f (1)3495 1834 w 10 R f (ABSTRACT)2618 2116 w ( device attached to a node in a data network has corresponding call pro-)13 3031(Each physical)1 569 2 1080 2328 t ( A)1 133( control computer in the node.)5 1259(cesses that run within the node; speci\256cally, within a)8 2208 3 1080 2448 t ( of calls to and from a device.)7 1284(call process is responsible for the set-up and take-down)8 2316 2 1080 2568 t ( react to hardware signals and)5 1253(Call processes are typically complex state machines that)7 2347 2 1080 2688 t ( implementation of a terminal call process in Esterel, a)9 2189( paper describes an)3 761( This)1 228(user input.)1 422 4 1080 2808 t ( conclude that Esterel)3 889( We)1 197( designed for programming reactive systems.)5 1842(special language)1 672 4 1080 2928 t ( call processes; furthermore, the)4 1305(allows clear and concise code speci\256cations for terminal)7 2295 2 1080 3048 t (speci\256cations compile into implementations.)3 1789 1 1080 3168 t 12 HB f (1 INTRODUCTION)1 1053 1 720 3410 t 10 R f ( a terminal to a host computer proceeds as follows:)9 2033( from)1 244( a typical call)3 535( [5],)1 191(In the TDK system)3 763 5 720 3591 t 10 R f (The terminal supplies the name of the host to be called.)10 2211 1 920 3772 t 10 R f (TDK establishes a connection.)3 1220 1 920 3893 t 10 R f (The terminal and the host use the connection to exchange data.)10 2509 1 920 4014 t 10 R f (The host terminates the call by hanging up.)7 1726 1 920 4135 t 10 R f ( switch.)1 315( [3])1 174( Datakit, is an experimental software controller for a Datakit)9 2447(TDK, from Terminal)2 846 4 820 4316 t 7 R f (2)4607 4276 w 10 R f (The con-)1 361 1 4679 4316 t ( processes are referred to as)5 1128( Such)1 255( or ``device'' attached to the switch.)6 1473(troller has a process per ``line'')5 1284 4 720 4436 t 10 I f (call)4890 4436 w (processes)720 4556 w 10 R f ( hence, call process will refer to)6 1289( paper deals with call processes for terminals;)7 1835(. This)1 255 3 1116 4556 t 10 I f (terminal call)1 517 1 4523 4556 t (process)720 4676 w 10 R f ( protocol for set-up and take-)5 1236( terminal call process implements a)5 1492( A)1 138(unless otherwise speci\256ed.)2 1100 4 1074 4676 t ( protocols will be referred to as)6 1247( Such)1 250(down of calls from a terminal.)5 1209 3 720 4796 t 10 I f (terminal protocols)1 742 1 3451 4796 t 10 R f (.)4201 4796 w 10 R f ( protocols,)1 434(Although automata are natural and convenient for conveying the basic idea behind terminal)12 3786 2 820 4917 t ( is that)2 283( limitation of automata)3 941( A)1 131(their readability suffers when we use them to specify realistic protocols.)10 2965 4 720 5037 t ( changes examined in)3 877( The)1 210( can lead to widespread changes in an automaton.)8 2016(succinctly stated requirements)2 1217 4 720 5157 t ( resulting from a terminal being turned off prematurely, from the baud rate changing)13 3371(this paper include those)3 949 2 720 5277 t ( the)1 152(before the complete host name is supplied, and from a terminal temporarily ``breaking away'' to query)15 4168 2 720 5397 t (control software in the underlying network node.)6 1955 1 720 5517 t 10 R f (Esterel is a language designed speci\256cally for programming)7 2435 1 820 5638 t 10 I f (reactive)3286 5638 w 10 R f ( main-)1 265(systems \320 ``systems which)3 1137 2 3638 5638 t (tain a permanent interaction with their environment: real-time process controllers, communication proto-)11 4320 1 720 5758 t ( which)1 278( output of an Esterel compiler is an automaton,)8 1937( The)1 213(cols, man-machine interface drivers, etc. [1].'')5 1892 4 720 5878 t ( at the source)3 541( Nevertheless,)1 594( C [4].)2 266(can be readily transcribed into a traditional sequential language, such as)10 2919 4 720 5998 t ( the development of programs that)5 1383(level, Esterel supports synchronous threads and modules, which facilitate)8 2937 2 720 6118 t (can be viewed as automata.)4 1094 1 720 6238 t 10 R f ( was reimple-)2 561(Section 2 outlines an experiment in which an existing terminal call process, written in C,)14 3659 2 820 6359 t ( the Esterel version is comparable in time and space to)10 2204( compiled object code for)4 1036( The)1 209(mented using Esterel.)2 871 4 720 6479 t ( the programming style and)4 1115( 3 examines a module from the Esterel version to illustrate)10 2366( Section)1 353(the original.)1 486 4 720 6599 t ( rest of the paper contains detailed observations about)8 2178( The)1 209( constructs.)1 459(to introduce some key programming)4 1474 4 720 6719 t (Esterel and TDK.)2 701 1 720 6839 t 5 R f (1)724 6938 w 8 R f (Murakami's present address: Department of Computer Science, University of Illinois, Champaign-Urbana, Illinois 61801.)12 3884 1 775 6970 t 5 R f (2)724 7069 w 8 R f ( not with the AT&T product called Datakit VCS \320 a registered tradmark of AT&T \320 but with the experimental re-)20 3741(This paper deals)2 523 2 776 7101 t ( [5].)1 152( and)1 135( [3])1 132(search version described in)3 862 4 720 7201 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 1 1 %%Page: 2 2 /saveobj save def mark 2 pagesetup 10 R f (- 2 -)2 166 1 2797 480 t 12 HB f ( WE DID)2 467(2 WHAT)1 493 2 720 840 t 10 R f ( paper, it will be convenient to name)7 1487(Since several versions of a terminal protocol will be mentioned in this)11 2833 2 720 1029 t (them:)720 1149 w (N)920 1338 w 7 R f (AME)992 1338 w 10 R f (D)1375 1338 w 7 R f (ATE)1447 1338 w 10 R f (R)1947 1338 w 7 R f (EMARK)2014 1338 w 10 S f (_ ___________________________________________________)1 2588 1 920 1358 t 10 I f (Otermp)920 1478 w 10 R f (The original terminal protocol, in C.)5 1452 1 1947 1478 t 10 I f (Stermp)920 1598 w 10 R f ( simpli\256ed version, in Esterel.)4 1200( A)1 222(Oct. 1987)1 394 3 1403 1598 t 10 I f (Etermp)920 1718 w 10 R f ( complete version, in Esterel.)4 1165( A)1 222(Sep. 1988)1 400 3 1397 1718 t 10 I f (Ftermp)920 1838 w 10 R f ( \256nal structured version, in Esterel.)5 1401( The)1 305(Nov. 1989)1 422 3 1375 1838 t 10 R f (This section brie\257y describes these versions.)5 1781 1 720 2027 t 10 HB f (Some Common Signals)2 1119 1 720 2285 t 10 R f (State changes in a terminal protocol will be said to occur in response to input)14 3080 1 720 2474 t 10 I f (signals)3825 2474 w 10 R f ( input)1 232( the set of)3 391(. Thus,)1 300 3 4117 2474 t 10 R f (signals corresponds to the input alphabet of the automaton for a protocol.)11 2924 1 720 2594 t 7 R f (3)3649 2554 w 10 R f ( terminal)1 369( A)1 133( some common signals can be illustrated with respect the automaton in Fig. 1.)13 3255(The role of)2 463 4 820 2715 t (sends an)1 341 1 720 2835 t 10 CW f (OFFHK)1094 2835 w 10 R f ( then prompts with)3 753( TDK)1 255(signal to indicate readiness to communicate.)5 1770 3 1419 2835 t 10 CI f (Number please)1 780 1 920 3024 t 10 R f ( names of host computers are referred to as)8 1717( The)1 205(Prompts are in italics.)3 872 3 720 3213 t 10 I f (numbers)3539 3213 w 10 R f (.)3883 3213 w 10 R f ( a signal)2 341(The protocol in Fig. 1 expects the name of the host computer to be carried along with)16 3457 2 820 3334 t 10 CW f (DATAIN)4655 3334 w 10 R f (.)5015 3334 w (The host name in the \256gure is)6 1218 1 720 3454 t 10 CW f (coma)1968 3454 w 10 R f ( connection to the host is either rejected with a)9 1906(. The)1 235 2 2208 3454 t 10 CW f (NAK)4386 3454 w 10 R f (signal \(due)1 445 1 4595 3454 t ( incorrect number\) or accepted with an)6 1581(to, say, a busy or)4 697 2 720 3574 t 10 CW f (ANSWER)3037 3574 w 10 R f ( means that the con-)4 828(signal. Acceptance)1 784 2 3428 3574 t (nection is established.)2 880 1 720 3694 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 3952 t cleartomark saveobj restore %%BeginGlobal % % Version 3.3 drawing procedures for dpost. Automatically pulled in, but only % when needed. % /inpath false def /savematrix matrix def /Dl { inpath {pop pop neg lineto} {newpath neg moveto neg lineto stroke} ifelse } bind def /De { /y1 exch 2 div def /x1 exch 2 div def /savematrix savematrix currentmatrix def neg exch x1 add exch translate x1 y1 scale 0 0 1 0 360 inpath {1 0 moveto arc savematrix setmatrix} {newpath arc savematrix setmatrix stroke} ifelse } bind def /Da { /dy2 exch def /dx2 exch def /dy1 exch def /dx1 exch def dy1 add neg exch dx1 add exch dx1 dx1 mul dy1 dy1 mul add sqrt dy1 dx1 neg atan dy2 neg dx2 atan inpath {arc} {newpath arc stroke} ifelse } bind def /DA { /dy2 exch def /dx2 exch def /dy1 exch def /dx1 exch def dy1 add neg exch dx1 add exch dx1 dx1 mul dy1 dy1 mul add sqrt dy1 dx1 neg atan dy2 neg dx2 atan inpath {arcn} {newpath arcn stroke} ifelse } bind def /Ds { /y2 exch def /x2 exch def /y1 exch def /x1 exch def /y0 exch def /x0 exch def x0 5 x1 mul add 6 div y0 5 y1 mul add -6 div x2 5 x1 mul add 6 div y2 5 y1 mul add -6 div x1 x2 add 2 div y1 y2 add -2 div inpath {curveto} {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke} ifelse } bind def %%EndGlobal /saveobj save def mark 6 R f 2820 4200 120 120 De 9 R f 2879 4500 2879 4261 Dl 2879 4500 2865 4443 Dl 2880 4500 2894 4443 Dl 6 R f 2820 4560 120 120 De 9 R f 2879 4860 2879 4621 Dl 2879 4860 2865 4803 Dl 2880 4860 2894 4803 Dl 6 R f 2820 4920 120 120 De 9 R f 2879 5220 2879 4981 Dl 2879 5220 2865 5163 Dl 2880 5220 2894 5163 Dl 6 R f 2820 5280 120 120 De 9 R f 2879 5580 2879 5341 Dl 2879 5580 2865 5523 Dl 2880 5580 2894 5523 Dl 6 R f 2820 5640 120 120 De 9 R f 2879 5940 2879 5701 Dl 2879 5940 2865 5883 Dl 2880 5940 2894 5883 Dl 6 R f 2820 6000 120 120 De 9 R f 4259 5640 2940 5640 Dl 4260 5640 0 -120 120 0 Da 4380 5282 4380 5521 Dl 4380 4681 4380 5280 Dl 4380 4681 -120 0 0 -120 Da 2941 4560 4260 4560 Dl 2940 4560 2997 4546 Dl 2940 4561 2997 4575 Dl 1501 5280 2820 5280 Dl 1380 5161 120 0 0 120 Da 1380 4922 1380 5161 Dl 1380 4681 1380 4920 Dl 1500 4560 0 120 -120 0 Da 2819 4560 1500 4560 Dl 2819 4561 2762 4575 Dl 2819 4560 2762 4546 Dl 9 CW f (OFFHK)2586 4398 w (DATAIN)2532 5118 w (NAK)1195 4823 w (ANSWER)2532 5478 w (HANGUP)3066 5599 w (ONHK)2640 5838 w 9 CB f (coma)2933 5118 w 9 CI f (Number please)1 702 1 2933 4758 t (coma not answering.)2 1026 1 1434 4823 t (Thank you for using AT&T.)4 1350 1 3059 5779 t 9 B f (Fig. 1.)1 239 1 2251 6270 t 9 R f (A trivial terminal protocol.)3 972 1 2536 6270 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 6459 t 5 R f (3)724 6665 w 8 R f ( terminol-)1 316( Call-processing)1 540( ``supervision messages'' in addition to ``signals'' in telephony.)8 2045(This notion of input signals includes some)6 1362 4 777 6697 t ( signal names)2 447( The)1 171( networks.)1 339(ogy dates back to the earliest telephone)6 1285 4 720 6797 t 8 CW f (ONHK)2995 6797 w 8 R f (\(read ``on-hook''\) and)2 727 1 3214 6797 t 8 CW f (OFFHK)3974 6797 w 8 R f (\(read ``off-hook''\) recall)2 799 1 4241 6797 t ( a receiver rested on a hook; it had to be taken off the hook before communica-)16 2511( not in use,)3 353( When)1 231(hooks for holding telephone receivers.)4 1225 4 720 6897 t ( 1878, there was no central-of\256ce switching and telephony was con\256ned to)11 2439( ``Before)1 313( were invented in 1877.)4 770( Hooks)1 253(tion could occur.)2 545 5 720 6997 t ( signaling problem was simple)4 977( The)1 165(private lines with a telephone at each end.)7 1347 3 720 7097 t (. . .)2 100 1 3250 7077 t (the caller simply shouted into the mouthpiece using)7 1649 1 3391 7097 t (words with long vowel sounds such as `ahoy' and `hello' [2].'')10 2005 1 720 7197 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 2 2 %%Page: 3 3 /saveobj save def mark 3 pagesetup 10 R f (- 3 -)2 166 1 2797 480 t ( the signal)2 417(The call ends either with)4 995 2 820 840 t 10 CW f (ONHK)2268 840 w 10 R f (due to the terminal being turned off, or with the)9 1930 1 2536 840 t 10 CW f (HANGUP)4502 840 w 10 R f (sig-)4890 840 w (nal from the host computer.)4 1107 1 720 960 t 10 HX f (Otermp)720 1209 w 10 HB f (: The Original Protocol)3 1080 1 1076 1209 t 10 R f (The original protocol)2 849 1 720 1393 t 10 I f (Otermp)1594 1393 w 10 R f ( and special cases that)4 885(, written in C, is much more complex, with escape states)10 2256 2 1899 1393 t ( features result in many more signal)6 1437( Additional)1 479(obscure the essentially linear \257ow of control through Fig. 1.)9 2404 3 720 1513 t ( correspond to goto)3 789( states in Fig. 2 correspond to labels in the C code; the transitions)13 2662( The)1 209(types and states.)2 660 4 720 1633 t ( code is)2 315( The)1 210( signals under each state name correspond to transitions from a state to itself.)13 3138(statements. The)1 657 4 720 1753 t (dif\256cult to understand even after weeks of study.)7 1952 1 720 1873 t 10 HX f (Stermp)720 2122 w 10 HB f (: A Simpli\256ed Protocol)3 1074 1 1065 2122 t 10 R f ( used Esterel to specify a simpli\256ed terminal protocol,)8 2226(In October 1987, we)3 841 2 720 2306 t 10 I f (Stermp)3820 2306 w 10 R f (, which was simulated,)3 937 1 4103 2306 t ( code for)2 356( The)1 206( was not run inside a switch.)6 1141(but never fully implemented; that is, it)6 1548 4 720 2426 t 10 I f (Stermp)3997 2426 w 10 R f (consists of several)2 734 1 4306 2426 t (modules, each less than half a page long:)7 1636 1 720 2546 t 10 I f (termp)720 2730 w 10 R f (The main module.)2 730 1 1220 2730 t 10 I f (session)720 2882 w 10 R f (Call processing from)2 838 1 1220 2882 t 10 CW f (OFFHK)2091 2882 w 10 R f (to)2416 2882 w 10 CW f (ONHK)2527 2882 w 10 R f ( calls can be placed during a session.)7 1469(. Several)1 374 2 2767 2882 t 10 I f (getString)720 3034 w 10 R f (Collect incoming characters into a string; a similar module appears in Section 3.)12 3205 1 1220 3034 t 10 I f (getDline)720 3186 w 10 R f (Translate a string into a destination.)5 1432 1 1220 3186 t 10 I f (talk)720 3338 w 10 R f (Set-up and take-down a connection.)4 1433 1 1220 3338 t 10 I f (Stermp)820 3522 w 10 R f ( 2, yet its control \257ow structure is close to that of the)12 2167(implements a number of features from Fig.)6 1741 2 1132 3522 t ( particular,)1 438( In)1 139(trivial protocol in Fig. 1.)4 1008 3 720 3642 t 10 I f (Stermp)2336 3642 w 10 R f ( the baud rate can be changed during)7 1500(spports the following:)2 890 2 2650 3642 t ( of an incoming string; the terminal can send an)9 1960(the collection)1 546 2 720 3762 t 10 CW f (ONHK)3265 3762 w 10 R f (signal at any time to terminate a ses-)7 1504 1 3536 3762 t ( features bene\256t directly)3 988( These)1 295(sion; a call process can ask to be suspended when a clock timeout occurs.)13 3037 3 720 3882 t (from built-in Esterel constructs.)3 1271 1 720 4002 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 4251 t 9 CW f 2819 4805 120 120 De 3511 4906 120 120 De 3577 4928 120 120 De 4074 5219 120 120 De 4268 5633 120 120 De 4074 6047 120 120 De 3544 6351 120 120 De 2819 6461 120 120 De 2095 6351 120 120 De 1565 6047 120 120 De 1370 5633 120 120 De 1565 5219 120 120 De 2095 4916 120 120 De 9 I f (idle)2813 4492 w 5 CW f (ADIAL, ATTN, DEBUG)2 540 1 2610 4614 t (INITREQ, ONHK, TIMOUT)2 630 1 2565 4693 t 9 CW f 3060 4535 2700 4535 Dl 9 I f (gotbaud)3268 4541 w 9 CW f (,)3563 4541 w 9 I f (authorizing)3671 4541 w 5 CW f (ADIAL, ATALK, ATTN)2 540 1 3407 4657 t (BREAK, CALL, DEBUG)2 540 1 3407 4736 t (OFFHK, TIMOUT)1 390 1 3482 4815 t 9 CW f 4073 4577 3281 4577 Dl 9 I f (selecting)4280 4664 w 5 CW f (ADIAL)4365 4786 w (ATALK)4365 4865 w (ATTN)4380 4944 w (CALL)4380 5024 w (DEBUG)4365 5103 w (OFFHK)4365 5182 w (TIMOUT)4350 5261 w 9 CW f 4620 4706 4260 4706 Dl 9 I f (checking)4494 5360 w 5 CW f (ADIAL)4579 5481 w (ATALK)4579 5561 w (ATTN)4594 5640 w (CALL)4594 5719 w (DEBUG)4579 5798 w (OFFHK)4579 5877 w (TIMOUT)4564 5957 w 9 CW f 4834 5402 4474 5402 Dl 9 I f (dialing)4313 6094 w 5 CW f (ADIAL)4365 6216 w (ATALK)4365 6295 w (CALL)4380 6374 w (DEBUG)4365 6453 w (OFFHK)4365 6533 w (TIMOUT)4350 6612 w 9 CW f 4620 6137 4260 6137 Dl 9 I f (waiting)3542 6500 w 5 CW f (ATALK, CALL)1 330 1 3512 6622 t (DATAIN, DEBUG)1 390 1 3482 6701 t (OFFHK)3602 6780 w 9 CW f 3857 6543 3497 6543 Dl 9 I f (talking)2755 6623 w 5 CW f (ABORT, ADIAL, ASENDIREQ)2 690 1 2535 6744 t (ATALK, CALL, DEBUG, OFFHK, TIMOUT)4 990 1 2385 6824 t 9 CW f 3060 6665 2700 6665 Dl 9 I f (ending)1961 6500 w 2263 6543 1903 6543 Dl (f ixing)1 212 1 1213 6253 t 5 CW f (DEBUG)1244 6374 w (OFFHK)1244 6453 w 9 CW f 1499 6295 1139 6295 Dl 9 I f (autowait)949 5479 w 5 CW f (ATALK)1031 5600 w (CALL)1046 5679 w (DATAIN)1016 5759 w (DEBUG)1031 5838 w 9 CW f 1286 5520 926 5520 Dl 9 I f (breaking)1159 4585 w 5 CW f (ATALK)1244 4707 w (CALL)1259 4786 w (DEBUG)1244 4865 w (OFFHK)1244 4944 w (TIMOUT)1229 5024 w (\(disp\))1229 5103 w (\(help\))1229 5182 w (\(newln\))1214 5261 w (\(set\))1244 5340 w 9 CW f 1499 4627 1139 4627 Dl 9 I f (ringing)1951 4535 w 5 CW f (DEBUG)2008 4657 w (ONHK)2023 4736 w (CALL)2023 4815 w 9 CW f 2263 4577 1903 4577 Dl 7 CW f 3511 4896 2939 4814 Dl 3511 4898 3467 4902 Dl 3511 4896 3470 4880 Dl (OFFHK)3048 4810 w (WARM)2968 4918 w 7 S1 f (_)3136 4918 w 7 CW f (DIAL)3171 4918 w 2198 4873 2837 4763 Dl 2197 4874 2238 4856 Dl 2198 4874 2242 4877 Dl (CALL)2477 4786 w 2880 6401 2880 4866 Dl 2879 6402 2869 6359 Dl 2880 6402 2890 6359 Dl (WARM)2659 5482 w 7 S1 f (_)2827 5482 w 7 CW f (TALK)2862 5482 w 2181 6296 2854 4860 Dl 2181 6296 2189 6253 Dl 2181 6296 2209 6262 Dl (WARM)2477 5329 w 7 S1 f (_)2645 5329 w 7 CW f (END)2680 5329 w 4092 5177 3679 4970 Dl 4091 5177 4048 5168 Dl 4091 5176 4058 5148 Dl 7 R f (\(passwd\))3701 5121 w 2198 6309 3593 4970 Dl 2199 6308 2222 6271 Dl 2199 6309 2237 6287 Dl (\(3*fail\))3205 5155 w 7 CW f (ONHK)3415 5155 w 3632 4907 4135 5160 Dl 3631 4906 3674 4916 Dl 3631 4907 3664 4935 Dl (BREAK)4040 5090 w 4135 5987 4135 5280 Dl 4134 5988 4124 5945 Dl 4135 5988 4145 5945 Dl 4303 5579 4160 5274 Dl 4303 5579 4275 5545 Dl 4302 5579 4294 5536 Dl 7 R f (\(group\))4231 5441 w 2208 6321 4082 5250 Dl 2208 6320 2240 6290 Dl 2207 6321 2250 6309 Dl (\(3*fail\))3232 5583 w 7 CW f (ONHK)3541 5631 w 4160 5993 4303 5688 Dl 4160 5993 4168 5950 Dl 4160 5993 4188 5959 Dl 7 R f (\(passwd\))4231 5855 w 2212 6331 4271 5652 Dl 2213 6331 2250 6308 Dl 2212 6332 2256 6329 Dl (\(3*fail\))3709 5758 w 7 CW f (ONHK)3802 5853 w 3598 4961 4108 5994 Dl 3598 4961 3626 4994 Dl 3598 4960 3607 5003 Dl (BREAK)3852 5491 w 3665 6350 4177 6090 Dl 3665 6351 3698 6322 Dl 3665 6351 3708 6341 Dl 7 R f (\(dialstring\))3941 6213 w 1682 5239 4077 6029 Dl 1682 5239 1726 5242 Dl 1682 5239 1719 5262 Dl (\(datakitcm\))3345 5807 w 7 CW f (ATTN)3046 5683 w 1685 6047 4074 6047 Dl 1685 6047 1728 6037 Dl 1685 6048 1728 6058 Dl 7 R f (\(10*fail\))3385 6032 w 1490 5643 4075 6039 Dl 1490 5643 1534 5639 Dl 1490 5643 1531 5660 Dl (\(autoconnect\))3113 5922 w 2215 6342 4075 6057 Dl 2214 6342 2255 6325 Dl 2214 6342 2258 6346 Dl 7 CW f (ONHK)3555 6113 w 2939 6452 3545 6360 Dl 2939 6453 2980 6436 Dl 2939 6452 2983 6456 Dl (ANSWER)3116 6468 w 4092 6091 3604 6291 Dl 4092 6091 4056 6117 Dl 4091 6090 4048 6096 Dl (NAK)3647 6280 w (ATTN)3732 6220 w 1685 6057 3545 6342 Dl 1684 6057 1728 6053 Dl 1684 6057 1725 6074 Dl 7 R f (\(10*fail\))2987 6289 w 1488 5653 3547 6332 Dl 1488 5653 1532 5656 Dl 1488 5653 1525 5676 Dl (\(autoconnect\))2976 6146 w 2215 6351 3544 6351 Dl 2215 6350 2258 6340 Dl 2215 6351 2258 6361 Dl 7 CW f (ONHK)2940 6353 w 2214 6361 2820 6453 Dl 2214 6360 2258 6356 Dl 2214 6360 2255 6377 Dl (ONHK)2433 6481 w 1668 5263 2837 6420 Dl 1667 5262 1705 5285 Dl 1667 5262 1690 5300 Dl (ATTN)2032 5637 w 4077 6067 2936 6443 Dl 4077 6067 4040 6090 Dl 4077 6067 4033 6070 Dl (HANGUP)3381 6229 w 1432 5694 2113 6308 Dl 1431 5695 1470 5715 Dl 1430 5695 1455 5731 Dl 7 R f (\(autoconnect\))1299 5935 w 2102 6321 1676 6078 Dl 2103 6321 2060 6309 Dl 2102 6320 2070 6290 Dl 7 CW f (ATTN)1580 6153 w (ONHK)1739 6244 w 7 R f (\(autoconnect\))1681 6334 w 4075 6039 1490 5643 Dl 4075 6038 4031 6042 Dl 4075 6039 4034 6022 Dl 7 CW f (TIMOUT)2197 5761 w 2827 4836 1483 5604 Dl 2827 4836 2795 4866 Dl 2828 4835 2785 4847 Dl (OFFHK)2379 4985 w 1599 5274 1456 5579 Dl 1599 5274 1591 5317 Dl 1599 5275 1571 5309 Dl (ATTN)1359 5441 w 2113 6307 1491 5633 Dl 2112 6308 2075 6284 Dl 2112 6307 2091 6269 Dl (ONHK)1648 5863 w 3576 4936 1684 5211 Dl 3577 4937 3536 4953 Dl 3577 4936 3533 4932 Dl 7 R f (\(clr\))2570 5136 w 4073 5219 1684 5219 Dl 4074 5220 4031 5230 Dl 4074 5219 4031 5209 Dl (\(sel\))3068 5197 w 4077 6028 1682 5238 Dl 4077 6029 4033 6026 Dl 4077 6028 4040 6005 Dl 2836 6419 1667 5262 Dl 2836 6420 2798 6397 Dl 2836 6420 2813 6382 Dl (\(cont\)+)1811 5482 w 7 CW f (DLINE)2017 5482 w 2129 6296 1650 5274 Dl 2129 6296 2101 6262 Dl 2129 6296 2121 6253 Dl (ONHK)1891 5980 w 2819 4806 2197 4959 Dl 2819 4806 2780 4826 Dl 2819 4805 2775 4805 Dl (HANGUP)2445 4886 w 2853 6407 2180 4971 Dl 2854 6407 2826 6373 Dl 2853 6407 2845 6364 Dl (OFFHK)2231 5317 w 9 B f (Fig. 2.)1 239 1 2181 7014 t 9 R f (The original terminal protocol.)3 1112 1 2466 7014 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 7198 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 3 3 %%Page: 4 4 /saveobj save def mark 4 pagesetup 10 R f (- 4 -)2 166 1 2797 480 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 840 t 9 R f (P)2120 1033 w 6 R f (ROGRAM)2177 1033 w 9 R f (O)2749 1033 w 6 R f (TERMP)2821 1033 w 9 R f (E)3157 1033 w 6 R f (TERMP)3219 1033 w 9 R f (F)3555 1033 w 6 R f (TERMP)3612 1033 w 9 S f (_ _________________________________________)1 1867 1 1946 1053 t (_ _________________________________________)1 1867 1 1946 1073 t 9 R f (S)1946 1243 w 6 R f (OURCE)2003 1243 w 9 R f ( 469)1 393( 469)1 398( 1267)1 598(, C)1 218 4 2206 1243 t ( 547)1 393( 576)1 398( 0)1 408(lines Esterel)1 612 4 2002 1363 t 9 S f (_ _________________________________________)1 1867 1 1946 1453 t 9 R f ( 13056)1 393( 13760)1 398(Text 15498)1 658 3 2364 1633 t (B)1948 1753 w 6 R f (INARY)2015 1753 w 9 R f ( 6166)1 393( 31066)1 398( 5234)1 488(, Data)1 330 4 2204 1753 t ( 0)1 393( 0)1 398( 0)1 498(bytes BSS)1 532 4 1992 1873 t 9 B f ( 19222)1 393( 44826)1 398(Total 20732)1 658 3 2364 1993 t 9 S f (_ _________________________________________)1 1867 1 1946 2083 t 9 B f (Fig. 3.)1 239 1 1539 2276 t 9 R f (The size of the source and object code for the executable versions.)11 2396 1 1824 2276 t 10 R f (V)1771 2589 w 7 R f (ERSION)1851 2589 w 10 R f (D)2356 2589 w 7 R f (ATE)2436 2589 w 10 R f (S)2825 2589 w 7 R f (TATES)2889 2589 w 10 R f (A)3257 2589 w 7 R f (CTIONS)3337 2589 w 10 R f (S)3777 2589 w 7 R f (IZE)3841 2589 w 10 S f (_ ____________________________________________)1 2218 1 1771 2599 t (_ ____________________________________________)1 2218 1 1771 2619 t 10 R f (S)1771 2789 w 7 R f (TERMP)1835 2789 w 10 R f ( 8 51)2 914(Oct. 1987)1 394 2 2281 2789 t 10 B f (305)3839 2789 w 10 R f (E)1771 2969 w 7 R f (TERMP)1840 2969 w 10 R f ( 23 269)2 914(Sep. 1988)1 400 2 2275 2969 t 10 B f (13112)3739 2969 w 10 R f (F)1771 3149 w 7 R f (TERMP)1835 3149 w 10 R f ( 26 139)2 914(Nov. 1989)1 422 2 2253 3149 t 10 B f (2176)3789 3149 w 10 S f (_ ____________________________________________)1 2218 1 1771 3229 t 9 B f (Fig. 4.)1 239 1 2058 3422 t 9 R f (A comparison of the Esterel versions.)5 1358 1 2343 3422 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 3615 t 10 R f (The readability of)2 715 1 820 3880 t 10 I f (Stermp)1560 3880 w 10 R f (encouraged us implement the complete terminal protocol.)6 2305 1 1868 3880 t 10 HX f (Etermp)720 4145 w 10 HB f (: A Complete Version in Esterel)5 1493 1 1065 4145 t 10 R f (The Esterel version,)2 811 1 720 4338 t 10 I f (Etermp)1562 4338 w 10 R f (is a full implementation, consistent with)5 1636 1 1887 4338 t 10 I f (Otermp)3554 4338 w 10 R f ( C code compiled from)4 945(. The)1 236 2 3859 4338 t 10 I f (Etermp)720 4458 w 10 R f (was dropped into a switch and used to switch calls.)9 2042 1 1039 4458 t 10 I f (Etermp)3131 4458 w 10 R f (has fewer source lines than)4 1080 1 3450 4458 t 10 I f (Otermp)4555 4458 w 10 R f (; see)1 180 1 4860 4458 t ( rest of the)3 448( The)1 213( the 576 lines of Esterel, 450 lines specify the behavior of the reactive system.)14 3229( Of)1 163(Fig. 3.)1 267 5 720 4578 t (code consists of de\256nitions and C interface code.)7 1958 1 720 4698 t 10 R f ( \257ow in Fig. 2 is not.)6 925( Control)1 371( structured.)1 464(Control \257ow in Esterel is)4 1062 4 820 4819 t 10 I f (Etermp)3707 4819 w 10 R f (therefore bene\256ted from)2 999 1 4041 4819 t ( the)1 149(Esterel primarily at the level of the individual ``states'' in Fig. 2, which correspond to speci\256c labels in)17 4171 2 720 4939 t (C code for)2 421 1 720 5059 t 10 I f (Otermp)1166 5059 w 10 R f ( Con-)1 251( has a case for each signal.)6 1066( ``state'' begins with a C switch statement, which)8 1978(. Each)1 274 4 1471 5059 t ( number of substates in)4 959( The)1 213(trol \257ow within the cases produces substates within each ``state''.)9 2710 3 720 5179 t 10 I f (Otermp)4635 5179 w 10 R f (is)4973 5179 w (comparable to the 23 states in the code compiled from)9 2166 1 720 5299 t 10 I f (Etermp)2911 5299 w 10 R f (; see Fig. 4.)3 464 1 3205 5299 t 10 I f (Etermp)820 5420 w 10 R f ( the signals that affect)4 888( individual modules mention only)4 1359( The)1 207(, has a module per ``state'' in Fig. 2.)8 1472 4 1114 5420 t ( all)1 125( modules are)2 512( The)1 206( default actions are factored out and mentioned once in a separate module.)12 2974(them. Other)1 503 5 720 5540 t ( \257ow between modules is implemented by emitting)7 2047( Control)1 356(in parallel, awaiting a signal to begin execution.)7 1917 3 720 5660 t (a signal that ``\256res'' the next module.)6 1506 1 720 5780 t 10 R f (Although the number of states in)5 1313 1 820 5901 t 10 I f (Etermp)2158 5901 w 10 R f (is only three times the number of states in the simpli\256ed version)11 2563 1 2477 5901 t 10 I f (Stermp)720 6021 w 10 R f (, its intermediate code has over forty times the size of that for)12 2514 1 1003 6021 t 10 I f (Stermp)3547 6021 w 10 R f ( us to reim-)3 470( blowup led)2 482(. This)1 258 3 3830 6021 t (plement the terminal protocol.)3 1210 1 720 6141 t 10 HX f (Ftermp)720 6406 w 10 HB f (: The Final Esterel Version)4 1260 1 1059 6406 t 10 R f ( code)1 215(Figure 5 represents our present understanding of the original terminal protocol; it is based on the same)16 4105 2 720 6599 t (as Fig. 2, but was drawn several months later.)8 1828 1 720 6719 t 10 R f ( the details of the two diagrams, but to the more uniform appearance)12 2743(We draw the readers attention, not to)6 1477 2 820 6840 t ( constructs \(reviewed in Section 3\) that allow the merged)9 2381( provides)1 381( Esterel)1 339(of Fig. 5 compared to Fig. 2.)6 1219 4 720 6960 t ( be implemented by single statements \320 for example, see the arrows into)12 3088(arrows in Fig. 5 to)4 784 2 720 7080 t 10 I f (ending)4630 7080 w 10 R f (on)4940 7080 w 10 CW f (ONHK)728 7200 w 10 R f (or the arrows into)3 716 1 996 7200 t 10 I f (gotbaud)1740 7200 w 10 R f (on)2096 7200 w 10 CW f (BREAK)2232 7200 w 10 R f ( therefore believe that the cleaner appearance of Fig. 5 is)10 2292(. We)1 216 2 2532 7200 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 4 4 %%Page: 5 5 /saveobj save def mark 5 pagesetup 10 R f (- 5 -)2 166 1 2797 480 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 840 t cleartomark saveobj restore %%BeginGlobal % % Color and reverse video support for dpost. A call made to setcolor with two % arguments implies reverse video printing. % /rgb {setrgbcolor} bind def /hsb {sethsbcolor} bind def /colordict 50 dict dup begin /red { 1 0 0 } def /green { 0 1 0 } def /blue { 0 0 1 } def /cyan { 0 1 1 } def /magenta { 1 0 1 } def /yellow { 1 1 0 } def /white { 1 1 1 } def /black { 0 0 0 } def end def /setcolor { counttomark 1 eq { dup colordict exch known not {pop /black} if colordict exch get exec setrgbcolor } if counttomark 2 eq { /backcolor exch def /textcolor exch def colordict backcolor known not colordict textcolor known not or { /backcolor colordict /black get def /textcolor colordict /white get def } if /backcolor colordict backcolor get def /textcolor colordict textcolor get def /dY1 0 def /dY2 0 def textcolor exec setrgbcolor } if } bind def /drawrvbox { /x2 exch def /x1 exch def currentpoint dup /y1 exch def /y2 exch def pop dY1 0 eq dY2 0 eq and { currentfont /FontBBox get aload pop currentfont /FontMatrix get dtransform /dY2 exch def pop currentfont /FontMatrix get dtransform /dY1 exch def pop } if /y1 y1 dY1 add def /y2 y2 dY2 add def backcolor exec setrgbcolor newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath fill textcolor exec setrgbcolor } bind def %%EndGlobal /saveobj save def mark gsave newpath 2857 1266 m /inpath true def 0.95 setgray 9 I f 2857 1146 2857 1266 Dl 3401 1146 2857 1146 Dl 3401 1266 3401 1146 Dl 2857 1266 3401 1266 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (idle)3062 1230 w gsave newpath 2857 1565 m /inpath true def 0.95 setgray 2857 1445 2857 1565 Dl 3401 1446 2857 1446 Dl 3401 1566 3401 1446 Dl 2857 1565 3401 1565 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (gotbaud)2982 1531 w gsave newpath 2857 1806 m /inpath true def 0.95 setgray 2857 1686 2857 1806 Dl 3401 1686 2857 1686 Dl 3401 1806 3401 1686 Dl 2857 1806 3401 1806 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (authorizing)2922 1770 w gsave newpath 2857 2105 m /inpath true def 0.95 setgray 2857 1985 2857 2105 Dl 3401 1986 2857 1986 Dl 3401 2106 3401 1986 Dl 2857 2105 3401 2105 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (selecting)2969 2071 w gsave newpath 3129 2406 m /inpath true def 0.95 setgray 3129 2286 3129 2406 Dl 3673 2285 3129 2285 Dl 3672 2405 3672 2285 Dl 3128 2406 3672 2406 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (checking)3241 2371 w gsave newpath 2857 2706 m /inpath true def 0.95 setgray 2857 2586 2857 2706 Dl 3401 2586 2857 2586 Dl 3401 2706 3401 2586 Dl 2857 2706 3401 2706 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (dialing)3002 2670 w gsave newpath 3129 3185 m /inpath true def 0.95 setgray 3129 3065 3129 3185 Dl 3673 3066 3129 3066 Dl 3672 3186 3672 3066 Dl 3128 3185 3672 3185 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (waiting)3266 3151 w gsave newpath 2857 3576 m /inpath true def 0.95 setgray 2857 3456 2857 3576 Dl 3401 3455 2857 3455 Dl 3401 3575 3401 3455 Dl 2857 3576 3401 3576 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (talking)3004 3541 w gsave newpath 1808 3036 m /inpath true def 0.95 setgray 1808 2916 1808 3036 Dl 2352 2915 1808 2915 Dl 2353 3035 2353 2915 Dl 1809 3036 2353 3036 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (autowait)1923 3001 w gsave newpath 3672 3380 m /inpath true def 0.95 setgray 3672 3260 3672 3380 Dl 4216 3260 3672 3260 Dl 4217 3380 4217 3260 Dl 3673 3380 4217 3380 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (\256xing)3844 3346 w gsave newpath 841 1565 m /inpath true def 0.95 setgray 841 1445 841 1565 Dl 1385 1446 841 1446 Dl 1385 1566 1385 1446 Dl 841 1565 1385 1565 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (breaking)953 1531 w gsave newpath 4225 3876 m /inpath true def 0.95 setgray 4225 3756 4225 3876 Dl 4769 3756 4225 3756 Dl 4769 3876 4769 3756 Dl 4225 3876 4769 3876 Dl gsave eofill grestore 0 setgray stroke grestore /inpath false def 9 I f (ending)4375 3840 w 3129 1446 3129 1266 Dl 3128 1446 3118 1403 Dl 3129 1446 3139 1403 Dl 9 CW f (OFFHK)3166 1356 w 3129 1685 3129 1565 Dl 3128 1685 3118 1642 Dl 3129 1685 3139 1642 Dl 3129 1986 3129 1806 Dl 3128 1986 3118 1943 Dl 3129 1986 3139 1943 Dl 9 R f (\(passwd\)*)3152 1896 w 2993 2585 2993 2105 Dl 2992 2585 2982 2542 Dl 2993 2585 3003 2542 Dl 3265 2285 3265 2105 Dl 3264 2285 3254 2242 Dl 3266 2285 3276 2242 Dl (\(group\)*)3288 2195 w 3265 2586 3265 2406 Dl 3264 2585 3254 2542 Dl 3266 2585 3276 2542 Dl (\(passwd\)*)3288 2496 w 3309 3066 3309 2706 Dl 3309 3066 3299 3023 Dl 3310 3066 3320 3023 Dl (\(dialstring\))3324 2814 w 3219 2706 3219 3066 Dl 3220 2706 3230 2749 Dl 3219 2706 3209 2749 Dl 9 CW f (NAK)3035 3036 w 3265 3455 3265 3185 Dl 3264 3455 3254 3412 Dl 3266 3455 3276 3412 Dl 9 CW f (ANSWER)3302 3275 w 2993 2705 2993 3455 Dl 2993 2706 3003 2749 Dl 2992 2706 2982 2749 Dl 9 CW f (HANGUP)2647 3401 w (BREAK)2176 1644 w 2500 1706 2857 1706 Dl 2499 1705 2542 1695 Dl 2499 1706 2542 1716 Dl 2468 1675 30 0 0 30 Da 2468 1626 2468 1675 Dl 2468 1536 2468 1626 Dl 2499 1506 0 30 -30 0 Da 2856 1506 2499 1506 Dl 2856 1506 2813 1516 Dl 2856 1505 2813 1495 Dl 2500 2005 2857 2005 Dl 2499 2004 2542 1994 Dl 2499 2006 2542 2016 Dl 2468 1976 30 0 0 30 Da 2468 1627 2468 1976 Dl 2499 2346 3129 2346 Dl 2499 2345 2542 2335 Dl 2499 2347 2542 2357 Dl 2468 2316 30 0 0 30 Da 2468 1627 2468 2316 Dl 2500 2686 2857 2686 Dl 2499 2685 2542 2675 Dl 2499 2686 2542 2696 Dl 2468 2655 30 0 0 30 Da 2468 1625 2468 2655 Dl 9 CW f (ONHK)4534 3673 w 4467 1745 3401 1745 Dl 4466 1746 4423 1756 Dl 4466 1744 4423 1734 Dl 4497 1776 -30 0 0 -30 Da 4497 3756 4497 1776 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 4467 2046 3401 2046 Dl 4466 2046 4423 2056 Dl 4466 2045 4423 2035 Dl 4497 2076 -30 0 0 -30 Da 4497 3755 4497 2076 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 4466 2346 3672 2346 Dl 4466 2347 4423 2357 Dl 4466 2345 4423 2335 Dl 4497 2375 -30 0 0 -30 Da 4497 3755 4497 2375 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 4467 2606 3401 2606 Dl 4466 2606 4423 2616 Dl 4466 2605 4423 2595 Dl 4497 2635 -30 0 0 -30 Da 4497 3755 4497 2635 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 4466 3085 3672 3085 Dl 4466 3086 4423 3096 Dl 4466 3084 4423 3074 Dl 4497 3115 -30 0 0 -30 Da 4497 3755 4497 3115 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 4466 2976 2353 2976 Dl 4466 2977 4423 2987 Dl 4466 2975 4423 2965 Dl 4497 3005 -30 0 0 -30 Da 4497 3755 4497 3005 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 4466 3321 4217 3321 Dl 4466 3321 4423 3331 Dl 4466 3320 4423 3310 Dl 4497 3351 -30 0 0 -30 Da 4497 3755 4497 3351 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 4467 3516 3401 3516 Dl 4466 3517 4423 3527 Dl 4466 3515 4423 3505 Dl 4497 3545 -30 0 0 -30 Da 4497 3755 4497 3545 Dl 4496 3755 4486 3712 Dl 4497 3755 4507 3712 Dl 9 R f (\(3)3814 1704 w 9 S f (*)3889 1704 w 9 R f (fail\))3934 1704 w (\(3)3814 2004 w 9 S f (*)3889 2004 w 9 R f (fail\))3934 2004 w (\(3)3814 2303 w 9 S f (*)3889 2303 w 9 R f (fail\))3934 2303 w 3915 2686 3401 2686 Dl 3914 2686 3871 2696 Dl 3914 2685 3871 2675 Dl 3944 2716 -30 0 0 -30 Da 3944 3261 3944 2716 Dl 3944 3261 3934 3218 Dl 3945 3261 3955 3218 Dl 3913 3166 3672 3166 Dl 3914 3167 3871 3177 Dl 3914 3165 3871 3155 Dl 3944 3195 -30 0 0 -30 Da 3944 3259 3944 3195 Dl 3944 3261 3934 3218 Dl 3945 3261 3955 3218 Dl (\(10)3967 3218 w 9 S f (*)4087 3218 w 9 R f (fail\))4132 3218 w 4889 3815 4769 3815 Dl 4888 3816 4845 3826 Dl 4888 3814 4845 3804 Dl 4888 3815 0 -30 30 0 Da 4919 1747 4919 3786 Dl 4919 1236 4919 1745 Dl 4919 1236 4929 1279 Dl 4918 1236 4908 1279 Dl 4919 1236 -30 0 0 -30 Da 3400 1205 4888 1205 Dl 3401 1204 3444 1194 Dl 3401 1206 3444 1216 Dl 9 CW f (ATTN)784 1704 w 1052 2686 2857 2686 Dl 1052 2685 1095 2675 Dl 1052 2686 1095 2696 Dl 1022 2655 30 0 0 30 Da 1022 1565 1022 2655 Dl 1023 1565 1033 1608 Dl 1021 1565 1011 1608 Dl 9 R f (\(datakitcm\))1346 2763 w 1052 3015 1808 3015 Dl 1052 3015 1095 3005 Dl 1052 3016 1095 3026 Dl 1022 2986 30 0 0 30 Da 1022 1567 1022 2986 Dl 1023 1565 1033 1608 Dl 1021 1565 1011 1608 Dl 1052 3555 2857 3555 Dl 1052 3555 1095 3545 Dl 1052 3556 1095 3566 Dl 1022 3526 30 0 0 30 Da 1022 1567 1022 3526 Dl 1023 1565 1033 1608 Dl 1021 1565 1011 1608 Dl (\(clear\))1226 1744 w 1203 1755 1203 1565 Dl 1202 1755 1192 1712 Dl 1203 1755 1213 1712 Dl 1203 1755 30 0 0 30 Da 2856 1786 1233 1786 Dl 2856 1786 2813 1796 Dl 2856 1785 2813 1775 Dl (\(sel\))1226 2043 w 1203 2055 1203 1565 Dl 1202 2055 1192 2012 Dl 1203 2055 1213 2012 Dl 1203 2056 30 0 0 30 Da 2856 2086 1233 2086 Dl 2856 2087 2813 2097 Dl 2856 2085 2813 2075 Dl (\(cont,disc\))1226 2563 w 1203 2575 1203 1565 Dl 1202 2575 1192 2532 Dl 1203 2575 1213 2532 Dl 1203 2575 30 0 0 30 Da 2856 2606 1233 2606 Dl 2856 2606 2813 2616 Dl 2856 2605 2813 2595 Dl (\(cont\))1226 2894 w 1203 2904 1203 1565 Dl 1202 2905 1192 2862 Dl 1203 2905 1213 2862 Dl 1203 2905 30 0 0 30 Da 1809 2935 1233 2935 Dl 1808 2936 1765 2946 Dl 1808 2935 1765 2925 Dl (\(cont\))1226 3434 w 1203 3444 1203 1565 Dl 1202 3445 1192 3402 Dl 1203 3445 1213 3402 Dl 1203 3445 30 0 0 30 Da 2856 3475 1233 3475 Dl 2856 3476 2813 3486 Dl 2856 3475 2813 3465 Dl 9 CW f (ONHK)1240 3774 w 1203 3825 1203 1565 Dl 1202 3825 1192 3782 Dl 1203 3825 1213 3782 Dl 1203 3825 30 0 0 30 Da 4224 3856 1233 3856 Dl 4224 3856 4181 3866 Dl 4224 3855 4181 3845 Dl 2193 2686 2857 2686 Dl 2192 2686 0 30 -30 0 Da 2162 2916 2162 2716 Dl 2162 2915 2152 2872 Dl 2163 2915 2173 2872 Dl 9 R f (\(auto\))2177 2886 w 2193 3126 3129 3126 Dl 2192 3125 2235 3115 Dl 2192 3126 2235 3136 Dl 2162 3095 30 0 0 30 Da 2162 3036 2162 3095 Dl 2163 3036 2173 3079 Dl 2162 3036 2152 3079 Dl (\(auto\))2177 3113 w 2193 3776 4225 3776 Dl 2192 3775 2235 3765 Dl 2192 3776 2235 3786 Dl 2162 3745 30 0 0 30 Da 2162 3036 2162 3745 Dl 2163 3036 2173 3079 Dl 2162 3036 2152 3079 Dl 1999 2635 1999 2915 Dl 2029 2606 0 30 -30 0 Da 2856 2606 2029 2606 Dl 2856 2606 2813 2616 Dl 2856 2605 2813 2595 Dl 9 CW f (TIMOUT)1653 2861 w 2080 1236 2080 2915 Dl 2081 1236 2091 1279 Dl 2080 1236 2070 1279 Dl 2111 1205 0 30 -30 0 Da 2856 1205 2111 1205 Dl 2856 1206 2813 1216 Dl 2856 1204 2813 1194 Dl 9 CW f (OFFHK)1788 1374 w 9 B f (Fig. 5.)1 239 1 2003 4082 t 9 R f (The original terminal protocol, revisited.)4 1468 1 2288 4082 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 4268 t 10 R f ( transitions in Fig. 2 are suggestive of gotos)8 1795(suggestive of an Esterel implementation, just as the individual)8 2525 2 720 4521 t (in a C program.)3 627 1 720 4641 t 10 R f ( from the)2 386(The transitions to and)3 896 2 820 4762 t 10 I f (breaking)2137 4762 w 10 R f (state in Fig. 5 merit a comment, because they do not \256t well)12 2513 1 2527 4762 t ( an aside, from the)4 752( As)1 164(with single-entry/single-exit control \257ow constructs.)4 2108 3 720 4882 t 10 I f (breaking)3772 4882 w 10 R f (state, the terminal can)3 885 1 4155 4882 t ( this state, the terminal can ask for an)8 1553( From)1 275(query administrative date stored within the switch controller.)7 2492 3 720 5002 t ( In)1 135(ongoing call to be continued or disconnected.)6 1829 2 720 5122 t 10 I f (Ftermp)2711 5122 w 10 R f (, the)1 174 1 3005 5122 t 10 I f (breaking)3206 5122 w 10 R f ( by a module in)4 626(state is implemented)2 826 2 3588 5122 t (parallel with the rest of the code.)6 1311 1 720 5242 t 12 HB f ( MODULE IN ESTEREL)3 1293(3 A)1 221 2 720 5495 t 10 R f ( a building block written in Esterel to collect an incoming string from the terminal.)14 3418(This section examines)2 902 2 720 5681 t (Incoming strings include passwords, destination names, and commands \(in the)9 3157 1 720 5801 t 10 I f (breaking)3903 5801 w 10 R f ( discus-)1 309(state\). The)1 447 2 4284 5801 t (sion of the)2 422 1 720 5921 t 10 CW f (getString)1167 5921 w 10 R f ( useful for imple-)3 699(module introduces several of the Esterel constructs that we found)9 2609 2 1732 5921 t (menting terminal protocols.)2 1108 1 720 6041 t 10 HB f (Esterel: Introductory Remarks)2 1437 1 720 6294 t 10 R f ( implementing embedded systems, which interact with their environment through)9 3388(Esterel is designed for)3 932 2 720 6480 t ( then settles)2 496( some input signals arrive, the system responds, and)8 2180( Conceptually,)1 621(input and output signals.)3 1023 4 720 6600 t ( system response is theoretically instantaneous \320 in)7 2181( The)1 218( of input signals.)3 706(down to wait for the next set)6 1215 4 720 6720 t ( is assumed to be fast enough that the system settles down before the next)14 2997(practice, the underlying machine)3 1323 2 720 6840 t ( instantaneous response is a consequence of the ``synchrony hypothesis,'')9 3034( The)1 215(set of input signals arrive.)4 1071 3 720 6960 t ( key component of the Esterel system is a compiler, which)10 2373( A)1 127(which makes Esterel programs deterministic.)4 1820 3 720 7080 t ( introductory remark, Esterel has no)5 1526( a \256nal)2 306( As)1 178(translates Esterel programs into deterministic automata.)5 2310 4 720 7200 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 5 5 %%Page: 6 6 /saveobj save def mark 6 pagesetup 10 R f (- 6 -)2 166 1 2797 480 t ( track of time must do so by interacting with an)10 1893( that need to keep)4 708( Applications)1 562(built-in notion of clock time.)4 1157 4 720 840 t (external timer, as we shall see.)5 1222 1 720 960 t 10 HB f (Signals and Control Flow)3 1202 1 720 1216 t 10 R f ( a single module)3 736(The complete Esterel program in Fig. 6 consists of)8 2223 2 720 1404 t 10 CW f (getString)3730 1404 w 10 R f ( input signal)2 547(. An)1 223 2 4270 1404 t 10 CW f (DATAIN)720 1524 w 10 R f ( type)1 202( The)1 210(is declared on line 2.)4 849 3 1110 1524 t 10 CW f (string)2401 1524 w 10 R f ( of the values car-)4 730(, within parentheses, refers to the type)6 1549 2 2761 1524 t (ried by)1 283 1 720 1644 t 10 CW f (DATAIN)1031 1644 w 10 R f ( waits for sig-)3 564( program)1 366( The)1 208( executable statements of the program are in a bold font.)10 2278(. The)1 233 5 1391 1644 t (nal)720 1764 w 10 CW f (DATAIN)869 1764 w 10 R f ( the value carried by the signal, denoted by)8 1724( then assigns)2 515( It)1 113(to arrive.)1 362 4 1256 1764 t 10 CW f (?DATAIN)3996 1764 w 10 R f (, to the variable)3 624 1 4416 1764 t 10 CW f (aString)720 1884 w 10 R f ( program then terminates.)3 1026(. The)1 230 2 1140 1884 t 10 R f ( bold statements in Fig. 7 use a variable)8 1617( The)1 209( arrives in pieces.)3 710(Now suppose that the string)4 1128 4 820 2005 t 10 CW f (aString)4513 2005 w 10 R f (to)4962 2005 w ( A)1 124( concentrates on the sequencing aspects of reactive systems.)8 2413( Esterel)1 329(accumulate an incoming string.)3 1260 4 720 2125 t 10 I f (host)4873 2125 w 10 R f ( following syn-)2 623( The)1 211( aspects of a computation.)4 1064(programming language, say C, is needed to handle all other)9 2422 4 720 2245 t (tax is used to call host language procedures from an Esterel program:)11 2764 1 720 2365 t 10 CW f (call)920 2553 w 10 S f (\341)1220 2553 w 10 I f (procedure - name)2 675 1 1261 2553 t 10 S f (\361)1944 2553 w 10 CW f (\()2037 2553 w 10 S f (\341)2097 2553 w 10 I f ( erence - parameters)3 777(re f)1 127 2 2138 2553 t 10 S f (\361)3050 2553 w 10 CW f (\) \()1 180 1 3083 2553 t 10 S f (\341)3263 2553 w 10 I f (value - parameters)2 720 1 3304 2553 t 10 S f (\361)4032 2553 w 10 CW f (\))4065 2553 w 10 R f (In Fig. 7, procedure)3 790 1 720 2741 t 10 CW f (build)1535 2741 w 10 R f (is called with a single value parameter)6 1530 1 1860 2741 t 10 CW f (?DATAIN)3416 2741 w 10 R f (and two reference parameters)3 1178 1 3862 2741 t 10 CW f (aString)720 2861 w 10 R f (and)1169 2861 w 10 CW f (done)1342 2861 w 10 R f ( of the boolean)3 605( declaration)1 472(. The)1 234 3 1582 2861 t 10 CW f (done)2921 2861 w 10 R f ( addition to accumulating the)4 1178( In)1 136(is not shown.)2 537 3 3189 2861 t (incoming string in)2 756 1 720 2981 t 10 CW f (aString)1512 2981 w 10 R f (, procedure)1 459 1 1932 2981 t 10 CW f (build)2427 2981 w 10 R f (uses the variable)2 689 1 2764 2981 t 10 CW f (done)3490 2981 w 10 R f (to indicate whether a complete)4 1273 1 3767 2981 t ( our application, a newline marks the end of an incoming string.)11 2555( In)1 133(string has been collected.)3 1009 3 720 3101 t 10 R f ( of)1 108( Execution)1 455(An exit statement must be enclosed within a trap statement.)9 2381 3 820 3222 t 10 CW f (exit)920 3410 w 10 S f (\341)1220 3410 w 10 I f (trap - name)2 432 1 1261 3410 t 10 S f (\361)1701 3410 w 10 R f (send control to the end of the enclosing trap named)9 2044 1 720 3598 t 10 S f (\341)2789 3598 w 10 I f (trap - name)2 432 1 2830 3598 t 10 S f (\361)3270 3598 w 10 R f ( exit statement in Fig. 7 sends control)7 1507(. The)1 230 2 3303 3598 t (to the end of the trap statement named)7 1528 1 720 3718 t 10 CW f (GET)2273 3718 w 10 S1 f (_)2453 3718 w 10 CW f (STRING)2503 3718 w 10 R f (; in this case, to the end of the program.)9 1584 1 2863 3718 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 3974 t 9 CW f (module getString:)1 918 1 900 4162 t (input DATAIN\(string\);)1 1134 1 900 4282 t (var aString : string in)4 1242 1 900 4462 t 9 CB f (await DATAIN;)1 702 1 1062 4582 t (aString := ?DATAIN)2 972 1 1062 4702 t 9 CW f (end)900 4822 w (.)900 4942 w 9 B f (Fig. 6.)1 239 1 2216 5130 t 9 R f (A complete Esterel program.)3 1042 1 2501 5130 t 8 CB f (trap GET)1 384 1 720 5584 t 8 S1 f (_)1104 5584 w 8 CB f (STRING in)1 432 1 1144 5584 t (aString := "";)2 672 1 816 5683 t (loop)816 5783 w (await DATAIN;)1 624 1 912 5883 t (call build\(aString,done\)\(?DATAIN\);)1 1632 1 912 5983 t (if done then)2 576 1 912 6084 t (exit GET)1 384 1 1008 6184 t 8 S1 f (_)1392 6184 w 8 CB f (STRING)1432 6184 w (end)912 6284 w (end)816 6384 w (end)720 6484 w 8 I f (State)3600 5503 w 8 R f (0)3819 5503 w 8 S f (_ ______)1 259 1 3600 5503 t 8 CW f (aString := "";)2 672 1 3600 5603 t 8 I f (nextstate)3600 5703 w 8 R f (1)3942 5703 w 8 I f (State)3600 5834 w 8 R f (1)3819 5834 w 8 S f (_ ______)1 259 1 3600 5834 t 8 CW f (if DATAIN then)2 672 1 3600 5934 t (build\(aString,done\)\(?DATAIN\);)3696 6034 w (if done then)2 576 1 3696 6133 t 8 I f (nextstate)4320 6133 w 8 R f (2)4662 6133 w 8 CW f (end;)4750 6133 w 8 I f (nextstate)3696 6233 w 8 R f (1)4038 6233 w 8 CW f (end;)3600 6333 w 8 I f (nextstate)3600 6433 w 8 R f (1)3942 6433 w 8 I f (State)3600 6564 w 8 R f (2)3819 6564 w 8 S f (_ ______)1 259 1 3600 6564 t 2862 6018 2754 6018 Dl 2861 6018 2804 6032 Dl 2861 6017 2804 6003 Dl 9 R f 2862 5868 2862 6168 Dl 3222 5867 2862 5867 Dl 3222 6167 3222 5867 Dl 2862 6168 3222 6168 Dl (Esterel)2917 5976 w (compiler)2882 6096 w 8 R f 3330 6018 3222 6018 Dl 3329 6018 3272 6032 Dl 3329 6017 3272 6003 Dl 9 B f (Fig. 7.)1 246 1 720 6772 t 9 R f ( the source program fragment accumu-)5 1440( Here,)1 252( automata.)1 384(The Esterel compiler translates source programs into)6 1945 4 1019 6772 t (lates an incoming string, using a procedure)6 1551 1 720 6892 t 9 CW f (build)2294 6892 w 9 R f ( pretty-printed version of the compiled automaton appears on the)9 2342(. A)1 134 2 2564 6892 t (right.)720 7012 w 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 7200 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 6 6 %%Page: 7 7 /saveobj save def mark 7 pagesetup 10 R f (- 7 -)2 166 1 2797 480 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 840 t 9 CW f (trap GET)1 432 1 900 1032 t 9 S1 f (_)1332 1032 w 9 CW f (STRING in)1 486 1 1377 1032 t (loop)1062 1152 w (aString := "";)2 756 1 1224 1272 t 9 CB f (do)1224 1392 w 9 CW f (loop)1386 1512 w (emit TIMER\(N\);)1 756 1 1548 1632 t (await DATAIN;)1 702 1 1548 1752 t (call build\(aString, done\)\(?DATAIN\);)2 1890 1 1548 1872 t (if done then exit GET)4 1134 1 1548 1992 t 9 S1 f (_)2682 1992 w 9 CW f (STRING end)1 540 1 2727 1992 t (end)1386 2112 w 9 CB f (watching ALARM timeout)2 1188 1 1224 2232 t 9 CW f (if aString <> "" then)4 1134 1 1386 2352 t (call wString\(\)\(WARNING\))1 1242 1 1548 2472 t (end)1386 2592 w 9 CB f (end % do)2 432 1 1224 2712 t 9 CW f (end % loop)2 540 1 1062 2832 t (end % trap)2 540 1 900 2952 t 9 B f (Fig. 8.)1 239 1 2055 3144 t 9 R f (Use of the)2 371 1 2340 3144 t 9 CW f (do-watching)2734 3144 w 9 R f (construct.)3351 3144 w 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 3336 t 10 HB f (Watchdogs: The)1 778 1 720 3599 t 10 CB f (do-watching)1526 3599 w 10 HB f (Construct)2214 3599 w 10 R f (The watchdog or)2 676 1 720 3791 t 10 CW f (do-watching)1421 3791 w 10 R f ( normal action of)3 685( The)1 205(construct sets Esterel apart from a language like C.)8 2032 3 2106 3791 t 10 CB f (do)920 3983 w 10 S f (\341)1100 3983 w 10 I f (instructions)1141 3983 w 10 S f (\361)1622 3983 w 7 R f (1)1666 4003 w 10 CB f (watching)1769 3983 w 10 S f (\341)2309 3983 w 10 I f (signal)2350 3983 w 10 S f (\361)2603 3983 w 10 CB f (timeout)2696 3983 w 10 S f (\341)3176 3983 w 10 I f (instructions)3217 3983 w 10 S f (\361)3698 3983 w 7 R f (1)3742 4003 w 10 CB f (end)3845 3983 w 10 R f (is to execute)2 527 1 720 4175 t 10 S f (\341)1287 4175 w 10 I f (instructions)1328 4175 w 10 S f (\361)1809 4175 w 7 R f (1)1853 4195 w 10 R f ( however,)1 408( If,)1 156(and terminate.)1 586 3 1936 4175 t 10 S f (\341)3126 4175 w 10 I f (signal)3167 4175 w 10 S f (\361)3420 4175 w 10 R f (arrives in the interim, then control is)6 1547 1 3493 4175 t (taken away from)2 670 1 720 4295 t 10 S f (\341)1423 4295 w 10 I f (instructions)1464 4295 w 10 S f (\361)1945 4295 w 7 R f (1)1989 4315 w 10 R f (, and given to)3 544 1 2032 4295 t 10 S f (\341)2609 4295 w 10 I f (instructions)2650 4295 w 10 S f (\361)3131 4295 w 7 R f (2)3175 4315 w 10 R f (.)3218 4295 w 10 R f ( at certain program points can)5 1199( Only)1 252( determinacy.)1 545(The semantics of Esterel are carefully de\256ned to ensure)8 2224 4 820 4416 t (control be taken away from an instruction.)6 1694 1 720 4536 t 10 R f (Keyword)820 4657 w 10 CW f (timeout)1243 4657 w 10 R f ( to the occurrence of)4 931(simply refers)1 551 2 1715 4657 t 10 S f (\341)3250 4657 w 10 I f (signal)3291 4657 w 10 S f (\361)3544 4657 w 10 R f (before)3630 4657 w 10 S f (\341)3937 4657 w 10 I f (instructions)3978 4657 w 10 S f (\361)4459 4657 w 7 R f (1)4503 4677 w 10 R f (terminates.)4599 4657 w (``Time'' in Esterel refers to the relative occurrence of signals and has no connection with clock time.)16 4032 1 720 4777 t 10 R f ( watches for)2 509(The watchdog in Fig. 8)4 970 2 820 4898 t 10 CW f (ALARM)2335 4898 w 10 R f ( The)1 216(while the enclosed loop collects an incoming string.)7 2153 2 2671 4898 t (loop body emits a signal)4 1006 1 720 5018 t 10 CW f (TIMER)1758 5018 w 10 R f ( environ-)1 369( The)1 211( a clock timer.)3 589(, which asks the environment \(TDK\) to start)7 1813 4 2058 5018 t (ment emits an)2 573 1 720 5138 t 10 CW f (ALARM)1324 5138 w 10 R f ( Thus,)1 282( resets the timer whenever a signal arrives.)7 1750( TDK)1 262( goes off.)2 388(if the clock timer)3 703 5 1655 5138 t (arrival of)1 370 1 720 5258 t 10 CW f (DATAIN)1117 5258 w 10 R f ( If)1 118(automatically resets the timer.)3 1210 2 1504 5258 t 10 CW f (ALARM)2859 5258 w 10 R f ( is collected in)3 583(arrives before a complete string)4 1271 2 3186 5258 t (the variable)1 468 1 720 5378 t 10 CW f (aString)1213 5378 w 10 R f (, procedure)1 448 1 1633 5378 t 10 CW f (wstring)2106 5378 w 10 R f (is called to warn that)4 832 1 2551 5378 t 10 CW f (aString)3408 5378 w 10 R f (is being emptied.)2 686 1 3853 5378 t 10 HB f (Communication between Parallel Statements)3 2139 1 720 5641 t 10 R f ( source code in Fig. 9 has the statement)8 1573( The)1 205(Esterel has a parallel construct, which is compiled away.)8 2262 3 720 5833 t 10 CB f (every BREAK do)2 840 1 920 6025 t 10 CW f (call cycleBaud\(\)\(\); emit RESTART)3 1920 1 1820 6025 t 10 CB f (end)3800 6025 w 10 R f ( procedure)1 427( The)1 208(in parallel with a statement to collect an incoming string.)9 2303 3 720 6217 t 10 CW f (cycleBaud)3687 6217 w 10 R f (changes the incom-)2 784 1 4256 6217 t ( in the)2 272( Paralellism)1 511( code for the automaton, however, is sequential.)7 1990( The)1 217(ing baud rate from the terminal.)5 1330 5 720 6337 t (source has been eliminated by interleaving the code from the two parallel branches.)12 3334 1 720 6457 t 10 R f (A statement of the form)4 954 1 820 6578 t 10 CW f (signal RESTART in)2 1020 1 920 6770 t 10 S f (\341)2000 6770 w 10 I f (instructions)2041 6770 w 10 S f (\361)2522 6770 w 10 CW f (end)2615 6770 w 10 R f (declares)720 6962 w 10 CW f (RESTART)1071 6962 w 10 R f (to be a signal local to)5 852 1 1516 6962 t 10 S f (\341)2393 6962 w 10 I f (instructions)2434 6962 w 10 S f (\361)2915 6962 w 10 R f ( signals are compiled away.)4 1106(. Local)1 302 2 2948 6962 t 10 R f ( one parallel branch in Fig. 9 waits for signal)9 1810(In words,)1 378 2 820 7083 t 10 CW f (BREAK)3035 7083 w 10 R f ( this signal arrives, it changes the baud)7 1562(. If)1 143 2 3335 7083 t (rate and emits the local signal)5 1190 1 720 7203 t 10 CW f (RESTART)1935 7203 w 10 R f ( other parallel branch has the form)6 1374(. The)1 230 2 2355 7203 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 7 7 %%Page: 8 8 /saveobj save def mark 8 pagesetup 10 R f (- 8 -)2 166 1 2797 480 t 10 CW f (loop)920 840 w 10 S f (\341)1220 840 w 10 I f (instructions)1261 840 w 10 S f (\361)1742 840 w 10 CW f (each RESTART)1 720 1 1835 840 t 10 R f (This statement corresponds to a looping watchdog; each arrival of)9 2826 1 720 1030 t 10 CW f (RESTART)3592 1030 w 10 R f (terminates the enclosed)2 981 1 4059 1030 t 10 S f (\341)720 1150 w 10 I f (instructions)761 1150 w 10 S f (\361)1242 1150 w 10 R f ( upon)1 226( Thus,)1 276(and sends control back to the beginning of the loop.)9 2088 3 1302 1150 t 10 CW f (RESTART)3918 1150 w 10 R f (, collection of the)3 702 1 4338 1150 t (incoming string is interrupted.)3 1211 1 720 1270 t 10 R f ( separate parallel branch)3 1004( A)1 133(Parallelism that can be compiled away is very useful for partitioning code.)11 3083 3 820 1391 t ( in Fig. 9 to wait for)6 803(was used)1 364 2 720 1511 t 10 CW f (BREAK)1912 1511 w 10 R f (because the subprotocol for changing the baud rate is hardware device)10 2803 1 2237 1511 t (dependent, whereas the collection of an incoming string is independent of the hardware.)12 3515 1 720 1631 t 12 HB f ( WITH ESTEREL)2 926(4 EXPERIENCE)1 907 2 720 1891 t 10 R f ( of the terminal proto-)4 910(Modules, watchdogs, and source-level parallelism help to make the Esterel versions)10 3410 2 720 2081 t ( and paral-)2 446( illustrating the bene\256ts of watchdogs)5 1557( Examples)1 455(col readable and manageable, in our opinion.)6 1862 4 720 2201 t ( appeared in Section 3, so this section contains some minor criticism of the language.)14 3528(lelism have already)2 792 2 720 2321 t (Overall, Esterel is a very promising language.)6 1830 1 720 2441 t 10 HB f (Emits are Unordered)2 986 1 720 2701 t 10 R f ( emitted during)2 625( Signals)1 352( are assumed to respond instantaneously to a set of input signals.)11 2658(Esterel programs)1 685 4 720 2891 t ( following sequence of emit)4 1139( The)1 211( assumed to occur together, so their order is not signi\256cant.)10 2424(an instant are)2 546 4 720 3011 t (statements is a reaction to an)5 1151 1 720 3131 t 10 CW f (OFFHK)1896 3131 w 10 R f (input signal:)1 498 1 2221 3131 t 10 CW f (emit AOFFHK;)1 720 1 920 3321 t (emit TALK;)1 600 1 920 3441 t 10 R f (The desired behavior is that the)5 1261 1 720 3631 t 10 CW f (AOFFHK)2007 3631 w 10 R f (acknowledgement and the)2 1044 1 2393 3631 t 10 CW f (TALK)3463 3631 w 10 R f ( be emitted in sequen-)4 890(signal will)1 421 2 3729 3631 t ( language does not de\256ne the output signal order, however,)9 2369( The)1 206( source code.)2 525(tial order as they appear in the)6 1220 4 720 3751 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 4011 t 9 CW f (trap GET)1 432 1 720 4293 t 9 S1 f (_)1152 4293 w 9 CW f (STRING in)1 486 1 1197 4293 t (signal RESTART in)2 918 1 828 4404 t 9 CB f (every BREAK do)2 756 1 936 4514 t 9 CW f (call cycleBaud\(\)\(\);)1 1026 1 1044 4624 t 9 CB f (emit RESTART)1 648 1 1044 4733 t (end)936 4843 w 9 CW f (||)828 4954 w 9 CB f (loop)936 5064 w 9 CW f (aString := "";)2 756 1 1044 5173 t (do)1044 5283 w (loop)1152 5394 w (emit TIMER\(N\);)1 756 1 1260 5504 t (await DATAIN;)1 702 1 1260 5614 t (call build\()1 594 1 1260 5723 t 9 R f (. . .)2 115 1 1877 5701 t 9 CW f (\)\()2015 5723 w 9 R f (. . .)2 115 1 2146 5701 t 9 CW f (\);)2284 5723 w (if done then)2 648 1 1260 5833 t (exit GET)1 432 1 1368 5944 t 9 S1 f (_)1800 5944 w 9 CW f (STRING)1845 5944 w (end)1260 6054 w (end)1152 6163 w (watching ALARM)1 756 1 1044 6273 t 9 CB f (each RESTART)1 648 1 936 6384 t 9 CW f (end % signal)2 648 1 828 6494 t (end % trap)2 540 1 720 6604 t 9 I f (State)3456 4268 w 9 R f (0)3704 4268 w 9 S f (_ ______)1 293 1 3456 4268 t 9 CW f (aString := ""; TIMER\(N\);)3 1296 1 3456 4368 t 9 I f (nextstate)3456 4468 w 9 R f (1)3844 4468 w 9 I f (State)3456 4599 w 9 R f (1)3704 4599 w 9 S f (_ ______)1 293 1 3456 4599 t 9 CW f (if BREAK then)2 702 1 3456 4699 t (cycleBaud\(\)\(\);)3618 4799 w (aString := ""; TIMER\(N\);)3 1296 1 3618 4898 t 9 I f (nextstate)3618 4998 w 9 R f (1)4006 4998 w 9 CW f (end;)3456 5098 w (if ALARM then)2 702 1 3456 5198 t 9 I f (nextstate)4212 5198 w 9 R f (2)4600 5198 w 9 CW f (end;)4699 5198 w (if DATAIN then)2 756 1 3456 5299 t (build\()3618 5399 w 9 R f (. . .)2 115 1 3965 5377 t 9 CW f (\)\()4103 5399 w 9 R f (. . .)2 115 1 4234 5377 t 9 CW f (\);)4372 5399 w (if done then)2 648 1 3618 5499 t 9 I f (nextstate)4320 5499 w 9 R f (3)4708 5499 w 9 CW f (end;)4807 5499 w (TIMER\(N\);)3618 5599 w 9 I f (nextstate)3618 5699 w 9 R f (1)4006 5699 w 9 CW f (end;)3456 5798 w 9 I f (nextstate)3456 5898 w 9 R f (1)3844 5898 w 9 I f (State)3456 6029 w 9 R f (2)3704 6029 w 9 S f (_ ______)1 293 1 3456 6029 t 9 CW f (if BREAK then)2 702 1 3456 6129 t (cycleBaud\(\)\(\);)3618 6229 w (aString := ""; TIMER\(N\);)3 1296 1 3618 6329 t 9 I f (nextstate)3618 6428 w 9 R f (1)4006 6428 w 9 CW f (end;)3456 6528 w 9 I f (nextstate)3456 6628 w 9 R f (2)3844 6628 w ( Parallel modules.)2 649( \(a\))1 -4086(\(b\) Compiled automaton, pretty-printed.)3 1450 3 3456 6798 t 9 B f (Fig. 9.)1 239 1 1956 7009 t 9 R f (Parallel source code, sequential automaton.)4 1563 1 2241 7009 t 5 S f (_ ____________________________________________________________________________________________________________________________________________________________________________)1 4320 1 720 7199 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 8 8 %%Page: 9 9 /saveobj save def mark 9 pagesetup 10 R f (- 9 -)2 166 1 2797 480 t ( When)1 289(and the compiled code reversed their order.)6 1737 2 720 840 t 10 CW f (TALK)2773 840 w 10 R f (was emitted \256rst, the hardware module responded)6 2000 1 3040 840 t (by repeating)1 496 1 720 960 t 10 CW f (OFFHK)1241 960 w 10 R f (continuously \(while it looked for an immediate)6 1882 1 1566 960 t 10 CW f (AOFFHK)3473 960 w 10 R f (\).)3833 960 w 10 R f ( order is)2 355( The)1 218(The solution is to de\256ne a new signal which encapsulates a sequence of output signals.)14 3647 3 820 1081 t ( there may be sequencing)4 1062( However,)1 452( function for the new signal.)5 1186(speci\256ed in the host language interface)5 1620 4 720 1201 t ( this case, the emit statement should be changed)8 1973( In)1 140( procedure calls.)2 670(requirements involving emissions and)3 1537 4 720 1321 t (to a procedure call.)3 764 1 720 1441 t 10 I f (Etermp)1534 1441 w 10 R f (replaces the two emit statements by a sequence of two procedure calls.)11 2821 1 1853 1441 t 10 HB f (The Host Language Interface)3 1375 1 720 1714 t 10 R f ( pre-)1 187( This)1 230( no global variables even for submodules.)6 1679( are)1 147( There)1 283(Only local variables are permitted in Esterel.)6 1794 6 720 1911 t ( interface with global data)4 1074(serves the rigorous semantics for control \257ow in Esterel, but it complicates the)12 3246 2 720 2031 t ( However,)1 449( variables.)1 419( solution is to use signals as global)7 1443( One)1 224(such as system data and hardware registers.)6 1785 5 720 2151 t ( used for control \257ow)4 880( Signals)1 350( likely to generate signal collisions.)5 1441(this results in duplicate data and is more)7 1649 4 720 2271 t ( not be involved in control \257ow.)6 1370(can cause causality cycles, but signals used for global variables should)10 2950 2 720 2391 t (Another solution is to use constants to read global variables and to write them using procedure calls.)16 4009 1 720 2511 t 10 R f ( other type manipulation, such as)5 1381( All)1 190( and type name de\256nitions.)4 1128(Esterel provides only primitive types)4 1521 4 820 2632 t ( must be done in the host language by encapsulating them)10 2319(access to structure elements and bit manipulation,)6 2001 2 720 2752 t ( to de\256ne Esterel constants that are actually expanded into)9 2375( alternative is)2 548( An)1 177(in function or procedure calls.)4 1220 4 720 2872 t (C code expressions via)3 918 1 720 2992 t 10 CW f (#define)1663 2992 w 10 R f (macros in the C interface.)4 1028 1 2108 2992 t 10 HB f (Language Layers)1 825 1 720 3265 t 10 R f ( separation of code into Esterel and host-)7 1752( The)1 222( as follows.)2 492(Some secondary language related effects are)5 1854 4 720 3462 t ( be repeated \320 both a C de\256nition and an Esterel)10 2169( must)1 241( De\256nitions)1 516(language layers exacts a penalty.)4 1394 4 720 3582 t ( Signals)1 351( for each constant, function, procedure, and signal in the program interface.)11 3072(de\256nition are required)2 897 3 720 3702 t ( lan-)1 185( The)1 210( the Esterel code, which are duplicated in the C code.)10 2173(often have values, only easily accessible in)6 1752 4 720 3822 t ( or procedures.)2 617(guage layering forces the program to encapsulate even simple C statements into functions)12 3703 2 720 3942 t ( combination results in)3 914( The)1 205( actions encapsulated in C functions.)5 1465(The Esterel compiler produces C code with)6 1736 4 720 4062 t ( partial solution is to)4 827( A)1 123( calls just to execute a simple C statement like an assignment.)11 2476(highly nested function)2 894 4 720 4182 t ( C)1 99( If)1 123(de\256ne preprocessor macros for C functions.)5 1781 3 720 4302 t (+ +)1 94 1 2709 4295 t ( host language, then inline functions could)6 1732(is used as a)3 473 2 2835 4302 t (reduce the levels of indirection at run time.)7 1719 1 720 4422 t 10 R f (The procedure call syntax)3 1033 1 820 4543 t 10 CW f (call)920 4740 w 10 S f (\341)1220 4740 w 10 I f (procedure - name)2 675 1 1261 4740 t 10 S f (\361)1944 4740 w 10 CW f (\()1977 4740 w 10 S f (\341)2037 4740 w 10 I f ( erence - parameters)3 777(re f)1 127 2 2078 4740 t 10 S f (\361)2990 4740 w 10 CW f (\)\()3023 4740 w 10 S f (\341)3143 4740 w 10 I f (value - parameters)2 720 1 3184 4740 t 10 S f (\361)3912 4740 w 10 CW f (\))3945 4740 w 10 R f ( order for library or)4 815(often forces an extra C function call just to re-arrange the parameters into the correct)14 3505 2 720 4937 t ( reference parameters, as in Pascal.)5 1462( an attribute keyword could be used to specify)8 1953( Perhaps)1 380(system calls.)1 525 4 720 5057 t ( that using C as a host language)7 1340( Note)1 255(This would also enable reference parameters for Esterel functions.)8 2725 3 720 5177 t (results in hidden reference parameters for arrays \(the anomalous type in C, e.g. strings\).)13 3500 1 720 5297 t 10 HB f (Other Concerns)1 757 1 720 5570 t 10 R f ( could have used better error messages.)6 1565( We)1 188(The compiled code presently contains a lot of duplicated code.)9 2501 3 720 5767 t 12 HB f ( WITH TDK)2 619(5 EXPERIENCE)1 907 2 720 6040 t 10 R f ( Esterel versions,)2 725(Several challenges were encountered in the actual implementation of the)9 3067 2 720 6237 t 10 I f (Etermp)4557 6237 w 10 R f (and)4896 6237 w 10 I f (Ftermp)720 6357 w 10 R f (.)1014 6357 w 10 R f (One good reason for using one large main function for)9 2203 1 820 6478 t 10 I f (Otermp)3051 6478 w 10 R f (is that the operating system in TDK does)7 1656 1 3384 6478 t ( compiler forces)2 662( C code generated by the Esterel)6 1339( The)1 213(not provide read/write global data for each process.)7 2106 4 720 6598 t ( to each C function.)4 793( solution is to pass modi\256able objects as parameters)8 2079( One)1 217(the use of many function calls.)5 1231 4 720 6718 t (This is cumbersome and dif\256cult to implement.)6 1897 1 720 6838 t 10 R f ( little-known facility for allocating uninitialized global)6 2206( A)1 126( compile code required global data.)5 1428(The Esterel)1 460 4 820 6959 t ( force all read/write)3 804( Esterel output and C interface code was processed to)9 2203( The)1 213(data \(BSS\) came in handy.)4 1100 4 720 7079 t (data to BSS \(by moving initialization to)6 1620 1 720 7199 t 10 CW f (main\(\))2369 7199 w 10 R f ( result is that Esterel and C interface code can)9 1871( end)1 173(\). The)1 267 3 2729 7199 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 9 9 %%Page: 10 10 /saveobj save def mark 10 pagesetup 10 R f (- 10 -)2 216 1 2772 480 t (be programmed normally except that read/write data must be uninitialized at load time and explicitly initial-)15 4320 1 720 840 t (ized at run time.)3 649 1 720 960 t 10 R f ( allow processes to free)4 972(The operating system in the controller provides a process suspension facility to)11 3248 2 820 1081 t ( process stack and the global memory are released.)8 2113( a process suspends, the)4 999( When)1 300(up memory resources.)2 908 4 720 1201 t ( 4 very precious words are)5 1115( Only)1 262( saved in the stack and the global memory is lost.)10 2088(All state information)2 855 4 720 1321 t ( state information for all of the processing that has been completed.)11 2822(available to the programmer to save)5 1498 2 720 1441 t ( saved in one)3 536(Fortunately, the current position in the Esterel automaton is available in a variable that can be)15 3784 2 720 1561 t ( when the process is)4 824( variables are explicitly re-initialized to a known value)8 2227( Other)1 283(of the 4 precious words.)4 986 4 720 1681 t (awakened after suspension.)2 1094 1 720 1801 t 10 R f ( notably, some)2 622( Most)1 274(Restructuring or respecifying the terminal protocol helps to reduce complexity.)9 3324 3 820 1922 t ( The)1 217( and easier implementation.)3 1140(states can be merged to provide a cleaner design, simpler speci\256cation,)10 2963 3 720 2042 t 10 I f (selecting)720 2162 w 10 R f (and)1114 2162 w 10 I f (checking)1297 2162 w 10 R f ( the user selects a new security group, the password is)10 2304( If)1 131(states were combined.)2 914 3 1691 2162 t ( The)1 205( even if there is no password.)6 1167(always prompted for)2 828 3 720 2282 t 10 I f (autowait)2945 2282 w 10 R f (state for prede\256ned destinations waits for a)6 1719 1 3321 2282 t ( minimal for the \256rst call)5 1042( timeout is)2 439( The)1 213(timeout analogous to waiting for dial-string input from the user.)9 2626 4 720 2402 t ( The)1 213( call failures.)2 534(attempt and jumps up to a long timeout after)8 1849 3 720 2522 t 10 I f (f ixing)1 236 1 3349 2522 t 10 R f (and)3618 2522 w 10 I f (ending)3795 2522 w 10 R f (states are co-located as)3 940 1 4100 2522 t (exception handling for the inner part of the)7 1716 1 720 2642 t 10 I f (Etermp)2461 2642 w 10 R f (state machine.)1 571 1 2780 2642 t 12 HB f (6 DISCUSSION)1 881 1 720 2882 t 10 R f ( naturally expresses)2 823( Parallelism)1 517(The Esterel language enables the natural coding of reactive systems.)9 2880 3 820 3062 t ( do-watching statement clearly)3 1255( The)1 215(many reactions, and parallelism in Esterel is inexpensive at run-time.)9 2850 3 720 3182 t ( trap-handle statement provides powerful exception handling facilities)7 2847( The)1 211(expresses watchdog constructs.)2 1262 3 720 3302 t (while maintaining logical control \257ow.)4 1558 1 720 3422 t 10 R f (In the original)2 582 1 820 3543 t 10 I f (Otermp)1435 3543 w 10 R f ( considerable)1 538( results in)2 405( This)1 236(, each action must be explicitly coded in each state.)9 2121 4 1740 3543 t ( actions that are expressed in one)6 1331( the Esterel versions, several signals have common)7 2051( In)1 136(duplication of code.)2 802 4 720 3663 t ( individual)1 435( The)1 209( in the main Esterel module.)5 1147( default actions are mentioned once)5 1431( These)1 291(line of Esterel code.)3 807 6 720 3783 t (states encode only their primary actions.)5 1614 1 720 3903 t 12 HB f (7 ACKNOWLEDGMENTS)1 1438 1 720 4143 t 10 R f ( terminal protocols began with the Steve Mahaney, with lots of discussions with Lee)13 3479(Initial exploration of)2 841 2 720 4323 t ( simpli\256ed version)2 787(McMahon. The)1 667 2 720 4443 t 10 I f (Stermp)2220 4443 w 10 R f (was done in October 1987 with the help of Gerard Berry.)10 2491 1 2549 4443 t ( the interface to the)4 814( Marshall helped with)3 904( Bill)1 211(George Gonthier provided invaluable expertise on Esterel.)6 2391 4 720 4563 t ( Shieh made the November 89 version)6 1531( Ce-Kuen)1 410(research controller.)1 769 3 720 4683 t 10 I f (Ftermp)3455 4683 w 10 R f (run in the switch.)3 694 1 3774 4683 t 12 HB f (8 REFERENCES)1 952 1 720 4923 t 10 R f ( Recherche)1 451( Rapport)1 378( programming in Esterel.)3 1014( Synchronous)1 577( P., and Gonthier, G.)4 847( e,)1 19( \302)1 50( G., Couronn)2 532(1. Berry,)1 352 9 820 5163 t (647, INRIA, 1987.)2 752 1 920 5283 t ( M.D., Ed.)2 438(2. Fagen,)1 369 2 820 5463 t 10 I f ( Years \(1875-)2 562(A History of Engineering and Science in the Bell System: The Early)11 2793 2 1685 5463 t (1925\))920 5583 w 10 R f ( \(1-800-432-)1 534( Bell Laboratories, Available from AT&T Technologies, Indianapolis)7 2978(. AT&T)1 375 3 1153 5583 t (6600\), 1975.)1 508 1 920 5703 t ( universal data transport system.)4 1318( a)1 75( Towards)1 405( A.G.)1 225(3. Fraser,)1 374 5 820 5883 t 10 I f (IEEE J. Selected Areas in Communications)5 1766 1 3274 5883 t (SAC-1)920 6003 w 10 R f (, 5 \(1983\), 803-816.)3 799 1 1181 6003 t ( B.W. and Ritchie, D.M.)4 1024(4. Kernighan,)1 546 2 820 6183 t 10 I f (The C Programming Language)3 1286 1 2451 6183 t 10 R f ( Engle-)1 302( Prentice-Hall,)1 618(, 2nd Ed.)2 383 3 3737 6183 t (wood Cliffs, N. J, 1988.)4 961 1 920 6303 t ( In)1 150( organization for a laboratory data switch.)6 1773( experimental software)2 946( An)1 188( L.E.)1 213(5. McMahon,)1 541 6 820 6483 t 10 I f (ICC '81,)1 367 1 4673 6483 t (IEEE Intl. Conference on Communications)4 1718 1 920 6603 t 10 R f (, Vol. 2, 1981, pp. 25.4.1-25.4.4.)5 1308 1 2638 6603 t 10 R f (January 15, 1990)2 685 1 2537 7560 t cleartomark showpage saveobj restore %%EndPage: 10 10 %%Trailer done %%Pages: 10 %%DocumentFonts: Helvetica-BoldOblique Courier-Bold Courier-Oblique Courier Times-Bold Times-Italic Times-Roman Times-Roman %%+ Symbol Helvetica-Bold