Newsgroups: comp.sources.unix From: tschudin@cui.unige.ch (Christian Tschudin) Subject: v28i059: m0 - a messenger execution environment, Part09/12 References: <1.770917478.19277@gw.home.vix.com> Sender: unix-sources-moderator@gw.home.vix.com Approved: vixie@gw.home.vix.com Submitted-By: tschudin@cui.unige.ch (Christian Tschudin) Posting-Number: Volume 28, Issue 59 Archive-Name: m0/part09 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'M0-3.ps' <<'END_OF_FILE' X%!PS-Adobe-2.0 X%%Creator: dvipsk 5.516a Copyright 1986, 1993 Radical Eye Software X%%Title: m0.dvi X%%Pages: 8 0 X%%PageOrder: Ascend X%%BoundingBox: 0 0 596 842 X%%DocumentFonts: Times-Roman Courier Times-Italic Times-Bold X%%EndComments X%%BeginProcSet: tex.pro X/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N X/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 Xmul N /fixcurrentmatrix{statusdict /product known{statusdict /product Xget(LaserJet 4)eq{/version where{/version get(2011.110)eq{matrix Xcurrentmatrix dup dup 0 get 32768 mul round 32768 div 0 exch put dup dup X3 get 32768 mul round 32768 div 3 exch put systemdict /setmatrix get Xexec}if}if}if}if}B /setmatrix{systemdict /setmatrix get exec Xfixcurrentmatrix}B /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1 X}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg Xscale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution X-72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 Xadd mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 Xget round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed X{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 X0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn Xbegin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X Xarray /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo Xsetfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx XFMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ Xpop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} XB /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup Xlength 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B X/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type X/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp X0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 Xindex get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff Xch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice Xch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ Xch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn X/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 Xsub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D X}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 Xmoveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add X.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage Xuserdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook Xknown{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X X/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for X65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 X0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V X{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 Xgetinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} Xifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley Xfalse RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley Xscale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave Xtransform round exch round exch itransform moveto rulex 0 rlineto 0 Xruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta X0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} XB /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ X3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p X-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ X3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end X%%EndProcSet X%%BeginProcSet: texps.pro XTeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 Xindex /UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll Xexec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics Xexch def dict begin Encoding{exch dup type /integertype ne{pop pop 1 sub Xdup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} Xifelse}forall Metrics /Metrics currentdict end def[2 index currentdict Xend definefont 3 -1 roll makefont /setfont load]cvx def}def X/ObliqueSlant{dup sin S cos div neg}B /SlantFont{4 index mul add}def X/ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding exch def}def Xend X%%EndProcSet X%%BeginProcSet: special.pro XTeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N X/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen Xfalse N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B X/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit Xdiv /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ X/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ X10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B X/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale Xtrue def end /@MacSetUp{userdict /md known{userdict /md get type X/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup Xlength 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} XN /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath Xclippath mark{transform{itransform moveto}}{transform{itransform lineto} X}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ Xitransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ Xclosepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 X0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N X/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 Xscale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get Xppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip Xnot and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 XTR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR Xpop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 X-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg XTR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg Xsub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr X0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add X2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp X{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 Xdiv VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} XN /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict Xmaxlength dict begin /magscale false def normalscale currentpoint TR X/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts X/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx Xpsf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy Xscale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR X/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ Xpsf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 Xroll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath Xmoveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict Xbegin /SpecialSave save N gsave normalscale currentpoint TR X@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial X{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto Xclosepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx Xsub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR X}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse XCLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury Xlineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath X}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ Xend}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} XN /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ X/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX XSaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X X/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad Xyrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end X%%EndProcSet XTeXDict begin 39158280 55380996 1000 300 300 (m0.dvi) X@start /Fa 1 59 df<60F0F06004047D830B>58 D E /Fb 1 25 Xdf<0F8000801FE000803FF0008070780180E01C0380C00F07008007FE008003FC008000 XF80019097E8D1E>24 D E /Fc 134[22 1[33 22 25 14 19 19 X1[25 25 25 36 14 22 1[14 25 25 1[22 25 22 25 25 13[25 X1[36 30 36 1[41 6[30 1[36 33 1[30 65[{}30 50.000000 /Times-Italic Xrf /Fd 22[20 107[20 1[20 1[20 20 20 20 20 20 20 20 20 X20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 X1[20 20 20 2[20 2[20 3[20 20 2[20 20 1[20 20 1[20 1[20 X20 4[20 1[20 1[20 20 2[20 1[20 1[20 20 20 20 20 20 1[20 X20 1[20 20 20 2[20 20 20 20 33[{}65 33.333332 /Courier Xrf /Fe 3 102 df<07800C4010E031C0600060006000C000C0004020404021801E000B0D X7E8C0F>99 D<007C000C0018001800180018003007B00C7010703060606060606060C0C0 XC0C8C0C841C862D03C700E147E9311>I<07800C401020304060407F8060004000C00040 X20604021801E000B0D7E8C10>I E /Ff 7 117 df<60F0F06004047C830C>58 XD<01F007080C0818043808300870307FC0E000E000E000E000E000E0046008601030600F X800E127E9113>101 D<007180018B800307800607800E07000C07001C07001C0700380E X00380E00380E00380E00381C00381C00381C00183C0008F8000738000038000038000070 X00607000F06000F0E000E180007E0000111A7F9114>103 D<0FC00001C00001C0000380 X000380000380000380000700000700000700000700000E3E000EC3000F03800E03801E03 X801C03801C03801C0380380700380700380700380E00700E20700E20701C20701C40E00C X80600700131D7E9C18>I<1F800380038007000700070007000E000E000E000E001C001C X001C001C0038003800380038007000700070007000E400E400E400E40064003800091D7E X9C0C>108 D<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C0380 X1C03801C0700380710380710380E10380E2070064030038014127E9119>110 XD<00C001C001C001C00380038003800380FFF00700070007000E000E000E000E001C001C X001C001C00382038203840384018800F000C1A80990F>116 D E X/Fg 205[12 12 49[{}2 25.000000 /Times-Roman rf /Fh 78[21 X1[23 23 52[21 21 30 21 23 14 16 18 23 23 21 23 35 12 X23 1[12 23 21 1[18 23 18 23 21 9[42 2[28 23 30 3[30 39 X28 2[16 32 1[25 2[30 1[30 6[14 21 21 21 21 21 21 21 21 X21 21 1[10 14 3[14 14 40[{}53 41.666668 /Times-Bold rf X/Fi 22[30 116[30 4[30 30 30 30 2[30 1[30 2[30 30 21[30 X28[30 1[30 46[{}13 50.000000 /Courier rf /Fj 204[15 15 X15 49[{}3 29.166668 /Times-Roman rf /Fk 5 104 df0 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003 XC010107E9115>15 D<07C000201FE000203FF80020783C0060E01F00E0C00783C08003FF X808000FF0080007C001B097E8E20>24 D<003C00E001C001800380038003800380038003 X800380038003800380038003800380030007001C00F0001C000700030003800380038003 X80038003800380038003800380038003800380018001C000E0003C0E297D9E15>102 XDI E /Fl 22[35 155[35 X77[{}2 58.333336 /Courier rf /Fm 69[15 10[18 18 3[15 X48[17 17 24 17 17 9 13 11 17 17 17 17 26 9 1[9 9 17 17 X11 15 17 15 17 15 8[24 2[24 20 18 22 1[18 24 24 30 20 X2[11 24 1[18 20 24 22 22 24 6[9 17 17 1[17 17 2[17 17 X17 1[8 4[11 11 40[{}57 33.333332 /Times-Roman rf /Fn X22[25 37[25 1[25 68[25 1[25 25 25 25 25 25 25 25 25 25 X25 25 25 25 25 25 1[25 25 25 25 25 25 25 25 25 3[25 25 X25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 X25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 X25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 X25 25 25 25 25 33[{}90 41.666668 /Courier rf /Fo 81[28 X52[25 25 36 25 28 17 19 22 1[28 25 28 41 14 2[14 28 25 X17 22 28 22 28 25 9[50 36 36 33 28 36 1[30 39 36 47 33 X2[19 1[39 30 33 36 36 1[36 7[25 25 25 25 25 25 25 25 X25 25 1[12 17 12 2[17 17 40[{}56 50.000000 /Times-Bold Xrf /Fp 81[21 52[18 18 28 18 21 12 16 16 21 21 21 21 30 X12 18 12 12 21 21 12 18 21 18 21 21 13[21 25 1[25 30 X28 35 23 5[25 2[28 8[14 7[21 21 1[12 10 14 3[14 14 40[{}43 X41.666668 /Times-Italic rf /Fq 135[29 1[29 32 19 23 26 X1[32 29 32 48 16 2[16 32 29 19 26 32 26 1[29 12[39 1[42 X1[36 45 2[39 2[23 2[36 39 3[42 11[29 29 29 29 29 49[{}33 X58.333336 /Times-Bold rf /Fr 167[22 4[17 3[22 22 27 3[10 X4[22 68[{}7 29.999987 /Times-Roman rf /Fs 80[21 21 52[19 X19 27 19 19 10 15 12 19 19 19 19 29 10 19 1[10 19 19 X12 17 19 17 19 17 12 3[10 1[23 4[27 23 21 5[33 6[21 11[10 X10[10 9 12 9 2[12 12 12 4[15 34[{}43 37.500000 /Times-Roman Xrf /Ft 139[12 15 17 14[17 21 19 31[27 65[{}7 37.500000 X/Times-Bold rf /Fu 22[22 37[22 69[22 22 22 1[22 22 22 X22 22 22 22 22 22 22 22 22 22 22 22 1[22 22 22 22 22 X22 22 22 22 22 22 1[22 22 22 22 22 22 22 22 22 22 22 X22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 X22 22 22 22 22 22 22 1[22 22 22 22 22 22 22 22 22 22 X22 22 22 22 22 22 22 22 22 22 22 1[22 22 33[{}90 37.500000 X/Courier rf /Fv 60[14 14 14 6[18 8[21 1[23 23 3[18 47[18 X21 21 30 21 21 12 16 14 21 21 21 21 32 12 21 12 12 21 X21 14 18 21 18 21 18 14 2[14 1[14 1[30 1[39 30 30 25 X23 28 30 23 30 30 37 25 30 16 14 30 30 23 25 30 28 28 X30 5[12 12 21 21 21 21 21 21 21 21 21 21 12 10 14 10 X23 1[14 14 14 4[17 14 33[{}83 41.666668 /Times-Roman Xrf /Fw 134[25 3[25 14 19 17 3[25 4[14 25 3[25 22 1[22 X12[30 6[44 6[28 2[33 9[25 4[25 25 1[25 2[12 1[12 44[{}21 X50.000000 /Times-Roman rf /Fx 134[17 1[25 17 19 10 15 X15 19 1[19 19 27 3[10 19 1[10 17 19 2[19 11[27 6[25 2[25 X1[12 5[25 10[19 1[19 12[12 12 12 39[{}27 37.500000 /Times-Italic Xrf /Fy 22[42 155[42 77[{}2 70.833336 /Courier rf /Fz X138[35 20 27 23 2[35 35 4[20 35 35 1[31 35 31 1[31 19[63 X43 2[23 7[51 65[{}17 70.833336 /Times-Roman rf end X%%EndProlog X%%BeginSetup X%%Feature: *Resolution 300dpi XTeXDict begin X%%PaperSize: a4 X X%%EndSetup X%%Page: 11 1 X11 10 bop 112 7 a Fo(2.7)50 b(The)12 b(Operators)g(of)g(the)g XFi(M\351)g Fo(Language)112 85 y Fv(This)e(section)h(introduces)e(in)i X(alphabetic)f(order)g(all)h(names)h(de\256ned)f(in)f(a)h XFn(M\351)g Fv(\(version)f(1\))g(interpreter)n(.)16 b(A)112 X135 y(typical)9 b(entry)h(in)f(this)h(manual)g(has)h(the)f(following)e X(form:)207 218 y Fn(X)30 b Fp(longform)p 418 218 13 2 Xv 13 w(of)p 464 218 V 14 w(command)p 640 218 V 14 w(x)776 X268 y Fv(ar)o(gs)50 b Fn(X)g Fv(results)262 329 y(The)9 Xb(entry')n(s)f(label)g Fn(X)h Fv(shows)f(the)h(name)h(under)e(which)g X(the)h(described)g(operator)f(or)g(data)h(value)g(is)262 X378 y(de\256ned.)18 b(This)11 b(name)h(refers)g(to)f(the)g(standard)g X(environment)f(supported)g(by)h(all)g Fn(M\351)g Fv(execution)262 X428 y(platform)e(with)g(version)h(1)g(or)g(above.)262 X489 y(The)g(name)h(in)f Fp(italics)f Fv(is)h(the)g(one)g(de\256ned)g X(in)g(the)g Fn(longdict)f Fv(dictionary)m(.)14 b(This)c(dictionary)f X(is)262 539 y(also)f(part)g(of)h(the)f(standard)h(environment,)f(but)g X(must)g(explicitly)f(be)i(loaded)f(onto)g(the)g(dictionary)262 X589 y(stack)14 b(in)g(order)f(to)h(become)h(ef)o(fective.)28 Xb(This)14 b(can)h(be)f(done)g(by)g(the)g(following)e(sequence)j(of)262 X639 y(commands:)347 688 y Fn(.)25 b(\))g(longdict)f(\()g(\()262 X738 y Fv(The)17 b(ef)o(fect)h(of)f(this)g(piece)h(of)f(code)g(consists) Xg(in)g(inserting)e(into)h(the)h(dictionary)f(stack)i(the)262 X788 y Fn(longdict)9 b Fv(dictionary)g(just)g(below)h(the)g(messenger)r X(')n(s)h(local)f(dictionary)m(.)262 849 y(For)e(each)h(operator)f(it)f X(is)i(shown)e(what)i(parameter)g(it)f(expects)h(on)f(the)g(operand)g X(stack)h(and)f(which)262 899 y(data)i(values)h(it)f(will)f(leave)i(on)f X(it.)16 b(A)10 b(dash)h(\(\261\))f(indicates)g(that)g(no)h(ar)o(gument) Xf(is)h(expected)g(or)f(no)262 949 y(value)g(is)g(returned.)174 X1032 y(The)h(one-character)i(commands)f(\(upper)o(-case)f(letters)g X(and)g(punctuation)e(characters\))k(are)e(described)112 X1081 y(\256rst.)18 b(Then,)12 b(the)f(other)g(system-wide)g(names)i X(are)f(introduced:)j(they)c(all)g(start)g(with)f(an)i(underscore)g(and) X112 1131 y(are)f(in)e(almost)h(all)g(cases)i(4)e(characters)i(long.)878 X2790 y(11)p eop X%%Page: 12 2 X12 11 bop 207 7 a Fn(!)30 b Fp(exec)784 57 y Fv(any)50 Xb Fn(!)g Fv(any)262 118 y(\301Executes')9 b(arbitrary)e(values.)15 Xb(In)8 b(case)i(of)e(literals)g(this)f(means)j(that)e(the)g(value)h(is) Xf(simply)f(re-put)262 168 y(on)13 b(the)g(operand)h(stack.)26 Xb(Executing)13 b(an)h(\301executable')g(value)f(transfers)h(this)f X(value)g(from)h(the)262 218 y(operand)g(stack)i(to)e(the)h(execution)f X(stack:)25 b(procedures)15 b(instantiate)f(a)h(procedure)g(call)g X(while)262 267 y(names)c(with)e(the)h(executable)h(bit)e(set)i(are)g X(looked)e(up)h(etc.)207 366 y Fn($)30 b Fp(submit)679 X415 y Fv(key)11 b(string)48 b Fn($)i Fv(\261)675 465 Xy(null)9 b(string)48 b Fn($)i Fv(\261)679 515 y(any)11 Xb(string)48 b Fn($)i Fv(\261)262 573 y(The)12 b(submit)g(is)g(one)g(of) Xg(the)g(central)g(messenger)o(\261related)i(operators:)k(it)11 Xb(permits)h(to)g(start)f(new)262 623 y(messenger)j(processes)g(either)f X(remotely)f(or)h(locally)m(.)23 b(The)13 b Fp(key)i Fv(ar)o(gument)e X(indicates)f(through)262 673 y(which)c(channel)i(the)f(messenger)h X(packet)g(should)e(be)h(sent.)15 b(The)10 b Fp(string)e XFv(parameter)i(contains)f(the)262 723 y(data)j(to)g(be)g(sent)h(out)e X(\(see)j(the)p 729 723 13 2 v 27 w Fn(ctm)e Fv(operator)g(for)f X(creating)i(a)f(messenger)i(string\).)20 b(The)13 b(null)262 X773 y(value)d(\(instead)g(of)g(a)g(channel)h(key\))f(requests)g(a)h X(local)f(submit.)262 834 y(Channel)j(keys)g(for)g(submitting)f(a)i X(messenger)h(to)e(a)h(remote)g(platform)e(must)i(be)f(obtained)g(by)262 X883 y(machine)c(speci\256c)g(operators)f(\(see)h(the)f XFp(channeldict)f Fv(\()p 1061 883 V 15 w Fn(cha)p Fv(\))h(which)g X(depend)g(on)g(the)g(machine')n(s)262 933 y(network)i(interfaces.)21 Xb(Any)11 b(other)g(value)h(than)f(a)i(key)f(results)f(in)g(a)h XFp(local)f(submission)g Fv(where)h(a)262 983 y(new)g(concurrent)h X(process)g(is)f(created)i(in)e(the)g(same)i(messenger)g(platform.)22 Xb(Usually)12 b(a)h Fn(null)262 1033 y Fv(value)8 b(is)h(used)g(to)f X(specify)h(this)f(case.)16 b(However)n(,)10 b(arbitrary)e(values)h X(\(except)g(keys\))g(can)h(be)f(used:)262 1083 y(the)j(forked)g X(process)h(will)e(\256nd)i(this)e(value)i(again)g(under)f(the)p X1189 1083 V 27 w Fn(ori)h Fv(name)g(that)f(usually)g(gives)262 X1132 y(indications)c(about)i(the)g(messenger)r(')n(s)h(origin.)262 X1193 y(Note)f(that)g(most)g(of)g(the)g(keys)h(used)g(for)f(submitting)e X(are)j(good)f(for)g(one)g(single)g(use)h(only)m(.)k(They)262 X1243 y(have)e(to)f(be)h(regenerated)g(before)g(a)h(subsequent)e(submit) Xg(becomes)i(possible.)22 b(Submitting)10 b(to)262 1293 Xy(an)g(unspeci\256c)h(key)f(\(not)f(created)j(this)d(way\))h(is)g(a)h X(null)e(operation.)262 1354 y(Submitting)i(a)j(messenger)h(string)e X(lar)o(ger)h(than)f(the)h(channel')n(s)g(maximum)g(transfer)f(unit)g X(size)262 1404 y(\(see)g(the)p 408 1404 V 28 w Fn(cha)g XFv(dictionary\))e(results)i(in)f(truncating)g(the)h(messenger)n(.)24 Xb(In)13 b(case)h(the)f(truncation)262 1454 y(occurs)d(in)g(the)g(code)h X(part,)f(the)g(messenger)i(never)e(arrives)h(at)f(the)g(other)g X(platform.)207 1552 y Fn(\045)30 b Fp(mod)675 1602 y XFv(int)p 722 1602 V 14 w(1)10 b(int)p 812 1602 V 14 w(2)49 Xb Fn(\045)h Fv(int)262 1663 y(Computes)10 b(the)i(modulo)e(of)h XFp(int)p 735 1663 V 14 w(1)h Fv(with)e(regard)i(to)f XFp(int)p 1074 1663 V 13 w(2)h Fv(which)f(must)g(have)h(a)g(positive)e X(value.)262 1712 y(The)g(result)g(is)g(always)h(equal)f(or)g(greater)h X(than)f(0.)207 1811 y Fn(&)30 b Fp(and)675 1860 y Fv(int)p X722 1860 V 14 w(1)10 b(int)p 812 1860 V 14 w(2)49 b Fn(&)h XFv(int)643 1910 y(key)p 705 1910 V 15 w(1)10 b(key)p X811 1910 V 15 w(2)49 b Fn(&)h Fv(key)262 1969 y(Performs)10 Xb(a)h(bit-wise)e Fp(and)h Fv(operation)f(on)h(the)g(bits)f(of)h(the)g X(two)g(ar)o(guments.)207 2067 y Fn(\301)30 b Fp(length)759 X2117 y Fv(array)50 b Fn(\301)g Fv(int)782 2167 y(dict)f XFn(\301)h Fv(int)750 2217 y(string)e Fn(\301)i Fv(int)262 X2275 y(For)12 b(an)i(array)m(,)h(the)e(length)f(operator)h(\()p XFn(\301)p Fv(,)h(also)f(called)h(grave)f(accent\))h(returns)f(the)g X(number)g(of)262 2325 y(elements)d(the)h(array)f(contains.)262 X2386 y(For)g(strings,)f(this)g(is)h(the)h(number)f(of)g(bytes)g(the)g X(string)f(is)h(made)h(of.)262 2447 y(For)f(a)g(dictionary)f(ar)o X(gument,)i(this)e(operator)h(returns)g(the)g(number)g(of)g(de\256ned)g X(entries.)207 2545 y Fn(\()30 b Fp(begin)782 2595 y Fv(dict)49 Xb Fn(\()h Fv(\261)878 2790 y(12)p eop X%%Page: 13 3 X13 12 bop 262 7 a Fv(Pushes)14 b(the)g(given)g(dictionary)e(onto)h(the) Xh(dictionary)f(stack.)27 b(All)14 b(subsequent)f(references)j(to)262 X57 y(names)11 b(will)e(\256rst)h(refer)h(to)e(names)j(de\256ned)e(in)g X(the)g(newly)g(pushed)g(dictionary)m(.)207 155 y Fn(\))30 Xb Fp(end)824 205 y Fv(\261)49 b Fn(\))h Fv(\261)262 266 Xy(Pops)8 b(of)o(f)h(the)f(dictionary)f(at)i(the)g(top)e(of)i(the)f X(dictionary)f(stack.)16 b(The)9 b(system)g(dictionary)e(\()p X1585 266 13 2 v 15 w Fn(sys)p Fv(\))262 316 y(at)j(the)g(bottom)f X(cannot)h(be)h(removed.)207 414 y Fn(*)30 b Fp(mul)675 X464 y Fv(int)p 722 464 V 14 w(1)10 b(int)p 812 464 V X14 w(2)49 b Fn(*)h Fv(int)262 525 y(Computes)9 b(the)h(product)g(of)g X(the)g(two)f(given)h(integer)g(values.)15 b(No)10 b(over\257ow)g(check) Xh(is)f(made.)207 623 y Fn(+)30 b Fp(add)675 673 y Fv(int)p X722 673 V 14 w(1)10 b(int)p 812 673 V 14 w(2)49 b Fn(+)h XFv(int)592 722 y(array)p 679 722 V 15 w(1)10 b(array)p X810 722 V 16 w(2)49 b Fn(+)h Fv(array)573 772 y(string)p X671 772 V 14 w(1)10 b(string)p 812 772 V 14 w(2)49 b XFn(+)h Fv(string)716 822 y(time)10 b(int)49 b Fn(+)h XFv(time)716 872 y(int)10 b(time)49 b Fn(+)h Fv(time)262 X930 y(For)10 b(integers,)g(the)h Fn(+)f Fv(operator)g(computes)h(the)g X(sum)g(of)f(the)g(two)g(integer)g(values.)17 b(No)10 Xb(over\257ow)262 980 y(check)h(is)f(made.)262 1041 y(For)e(arrays,)j X(this)d(returns)h(a)g(newly)g(allocated)g(array)h(containing)d(the)i X(concatenation)g(of)g(the)g(two)262 1091 y(array)h(ar)o(guments.)262 X1152 y(For)d(strings,)g(this)g(returns)g(the)h(concatenation)f(of)g X(the)h(two)f(input)f(ar)o(guments.)15 b(Note)7 b(that)g(parts)h(of)262 X1202 y(the)g(new)i(string)d(may)j(or)e(may)i(not)e(continue)g(to)h X(refer)g(to)f(the)h(old)f(strings)g(\(thus)g(changing)h(a)g(byte)262 X1251 y(in)g(the)h(resulting)f(string)g(may)i(become)g(manifest)g(in)e X(one)i(of)f(the)g(original)e(string)h(fragments\).)262 X1312 y(The)15 b Fn(+)f Fv(operator)g(also)h(accepts)g(an)g XFn(int)f Fv(and)h Fn(time)f Fv(value,)i(computing)d(a)i(new)g(time)g X(value)262 1362 y(which)9 b(dif)o(fers)h(by)g Fp(int)f XFv(micro-seconds)i(from)f(the)g(initial)e(time)j(value.)207 X1460 y Fn(,)30 b Fp(curr)n(entqueue)824 1510 y Fv(\261)49 Xb Fn(,)h Fv(key)824 1560 y(\261)f Fn(,)h Fv(null)262 X1618 y(If)8 b(the)h(current)f(process)i(is)f(executing)f(in)g(a)i X(process)f(queue,)h(then)f(a)g(key)g(referring)f(to)g(this)g(queue)262 X1668 y(is)i(returned.)k(Otherwise)c(a)h Fn(null)f Fv(value)g(is)g X(pushed)g(on)g(the)g(operand)g(stack.)207 1766 y Fn(-)30 Xb Fp(sub)746 1816 y Fv(int)9 b(int)49 b Fn(-)h Fv(int)716 X1866 y(time)10 b(int)49 b Fn(-)h Fv(time)686 1916 y(time)11 Xb(time)49 b Fn(-)h Fv(int)262 1974 y(Computes)9 b(the)h(dif)o(ference)h X(of)f(the)g(two)g(given)g(integer)f(values.)16 b(No)10 Xb(over\257ow)g(check)h(is)f(made.)262 2035 y(The)k Fn(-)h XFv(operator)e(can)i(also)g(be)f(used)h(for)e(values)i(of)f(type)g XFn(time)p Fv(.)27 b(It)13 b(returns)h(the)g(dif)o(ference)262 X2085 y(between)c(the)g(input)f(values)h(measured)i(in)e(micro-seconds.) X15 b(No)10 b(over\257ow)g(check)h(is)f(made.)207 2183 Xy Fn(.)30 b Fp(curr)n(entdict)824 2233 y Fv(\261)49 b XFn(.)h Fv(dict)262 2294 y(Returns)9 b(on)h(the)g(operand)f(stack)i(the) Xf(dictionary)f(which)g(is)h(at)g(the)g(top)g(of)f(the)h(dictionary)f X(stack.)262 2344 y(The)h(dictionary)f(stack,)i(however)n(,)g(is)f(not)g X(modi\256ed.)207 2442 y Fn(/)30 b Fp(div)675 2492 y Fv(int)p X722 2492 V 14 w(1)10 b(int)p 812 2492 V 14 w(2)49 b Fn(/)h XFv(int)262 2553 y(Computes)9 b(the)g(quotient)f Fp(int)p X693 2553 V 14 w(1/int)p 785 2553 V 13 w(2)i Fv(of)f(the)h(two)f X(integer)g(values.)15 b(Note)9 b(that)h(the)f(fraction)g(part)262 X2602 y(is)h(dismissed.)878 2790 y(13)p eop X%%Page: 14 4 X14 13 bop 207 7 a Fn(:)30 b Fp(put)635 57 y Fv(array)10 Xb(int)f(any)50 b Fn(:)g Fv(\261)570 107 y(string)9 b(int)p X722 107 13 2 v 14 w(1)h(int)p 812 107 V 14 w(2)49 b Fn(:)h XFv(\261)641 157 y(dict)10 b(any)g(any)50 b Fn(:)g Fv(\261)478 X206 y(string)p 576 206 V 13 w(1)10 b(array)h(string)p X812 206 V 14 w(2)49 b Fn(:)h Fv(\261)461 256 y(array)p X548 256 V 15 w(1)10 b(array)p 679 256 V 15 w(2)g(array)p X810 256 V 16 w(3)49 b Fn(:)h Fv(\261)262 315 y(The)12 Xb(put)e(operator)h(is)h(used)f(to)g(alter)g(elements)i(of)e(composite)g X(objects.)19 b(The)12 b(\256rst)f(of)g(the)h(three)262 X364 y(ar)o(guments)e(is)h(the)f(composite)h(object)f(itself.)15 Xb(The)c(second)g(ar)o(gument)g(is)f(an)h(index)f(or)g(key)h(into)262 X414 y(the)f(object.)k(The)d(third)e(ar)o(gument)i(is)f(the)g(new)g X(value)h(to)e(be)i(placed)g(into)d(the)j(object.)262 X475 y(For)e(arrays)g(and)h(strings,)f(an)g(integer)g(value)g(is)g(used) Xh(as)g(an)g(index)e(giving)g(the)h(position)e(\(starting)262 X525 y(from)12 b(0\))g(where)h(the)f(new)h(value)f(has)h(to)f(be)g(put.) X21 b(For)12 b(dictionaries,)g(the)h(second)f(ar)o(gument)h(is)262 X575 y(used)e(as)h(an)g(entry\261key)e(\(e.g.)20 b(name,)13 Xb(int,)e(key)g(value\))g(that)g(is)g(to)g(be)h(associated)g(with)e(the) Xh(new)262 625 y(value.)262 686 y(For)i(arrays)h(and)g(strings)e(it)h X(is)g(possible)g(to)g(replace)i(the)e(second)h(index)f(ar)o(gument)h X(by)f(a)h(two-)262 735 y(element)8 b(array)h(representing)f(a)g XFp(range)p Fv(.)15 b(This)8 b(range)h(array)f(must)h(contain)e(an)i X(integer)e(of)o(fset)i(and)262 785 y(a)g(length)g(value.)15 Xb(Furthermore)9 b(must)g(the)g(third)f(ar)o(gument)i(be)f(of)g(equal)h X(type)f(as)h(the)f(composite)262 835 y(object.)16 b(If)11 Xb(the)g(range)g(is)g(smaller)g(than)g(the)g(length)e(of)i(the)g(third)e X(ar)o(gument,)j(only)e(a)i(part)e(of)h(the)262 885 y(third)d(ar)o X(gument)i(will)f(be)h(put)f(into)g(the)h(object.)k(For)c(a)h(range)f X(greater)g(than)g(the)g(third)e(ar)o(gument,)262 935 Xy(the)13 b(content)f(of)h(the)g(third)f(ar)o(gument)h(will)f(be)i X(repeatededly)f(inserted)g(into)f(the)h(object.)24 b(This)262 X984 y(can)11 b(be)f(used)h(to)e(initialize)g(an)h(array)h(or)f(a)h X(string.)262 1045 y(Note)e(1:)15 b(In)9 b(case)j(the)e(array)g(or)g X(dictionary)f(are)i Fp(global)d Fv(values)i(and)g(the)g(third)f(ar)o X(gument)h(is)g(not,)262 1095 y(only)i(a)h Fp(copy)h Fv(of)f(the)g X(third)e(ar)o(gument)j(is)f(put)f(into)g(the)h(global)f(object.)23 Xb(This)13 b(guarantees)h(that)262 1145 y(a)d(composite)g(global)g X(object)g(only)f(contains)h(global)f(objects.)18 b(Beware)12 Xb(thus)f(of)g(the)g(following)262 1195 y(code:)p 374 X1245 V 412 1245 a Fn('a)p 464 1245 V 14 w(name)25 b(D)g(\()g(.)49 Xb(:)262 1294 y Fv(This)12 b(leaves)h(on)f(the)h(dictionary)e(stack)h XFp(another)g Fv(dictionary)f(than)h(the)h(one)f(that)g(was)h(inserted) X262 1344 y(into)8 b(globaldict!)207 1442 y Fn(;)30 b XFp(randomkey)824 1492 y Fv(\261)49 b Fn(;)h Fv(key)262 X1553 y(Generates)11 b(a)g(new)f(random)h(64-bit)d(key)m(.)16 Xb(No)10 b(guarantee)h(is)f(given)f(that)h(this)f(key)i(is)f(not)f X(already)262 1603 y(in)g(use.)16 b(However)n(,)11 b(a)g(clash)g(of)f X(keys)g(is)g(not)g(very)g(probable)f(\(chance)j(of)e(1/\(2\30364\))e XFk(\030)j Fv(5.4E-20\).)207 1701 y Fn(<)30 b Fp(lt)675 X1751 y Fv(int)p 722 1751 V 14 w(1)10 b(int)p 812 1751 XV 14 w(2)49 b Fn(<)h Fv(int)573 1801 y(string)p 671 1801 XV 14 w(1)10 b(string)p 812 1801 V 14 w(2)49 b Fn(<)h XFv(int)615 1851 y(time)p 691 1851 V 15 w(1)10 b(time)p X811 1851 V 15 w(2)49 b Fn(<)h Fv(int)262 1910 y(Compares)10 Xb(the)g(content)g(of)g(the)g(given)f(ar)o(guments)i(and)f(returns)f(1)h X(if)g(the)g(value)g(of)g Fp(ar)n(gument)p 1653 1910 V X15 w(1)262 1959 y Fv(is)d(less)h(than)g(the)f(one)h(of)g XFp(ar)n(gument)p 776 1959 V 14 w(2)p Fv(,)h(0)f(otherwise.)14 Xb(Strings)6 b(are)j(lexicographically)d(compared)262 X2009 y(based)k(on)g(the)g(integer)g(values)h(of)e(their)h(bytes.)207 X2107 y Fn(=)30 b Fp(eq)714 2157 y Fv(any)10 b(any)50 Xb Fn(=)g Fv(int)262 2218 y(For)13 b(simple)g(types)g(\(integer)n(,)h X(mark,)h(name,)g(null,)f(time)f(and)g(key\),)i(the)e XFn(=)g Fv(operator)g(returns)g(1)262 2268 y(if)i(both)f(ar)o(guments)i X(have)g(the)g(same)h(value)e(and)h(0)f(otherwise.)31 Xb(Composite)15 b(values)h(\(array)m(,)262 2318 y(dictionary)c(and)i X(string\),)g(however)n(,)i(are)f(equal)f(only)f(if)h(the)g(ar)o X(guments)h(reference)g(the)f(same)262 2368 y(composite)c(object.)207 X2466 y Fn(>)30 b Fp(gt)675 2515 y Fv(int)p 722 2515 V X14 w(1)10 b(int)p 812 2515 V 14 w(2)49 b Fn(>)h Fv(int)573 X2565 y(string)p 671 2565 V 14 w(1)10 b(string)p 812 2565 XV 14 w(2)49 b Fn(>)h Fv(int)615 2615 y(time)p 691 2615 XV 15 w(1)10 b(time)p 811 2615 V 15 w(2)49 b Fn(>)h Fv(int)878 X2790 y(14)p eop X%%Page: 15 5 X15 14 bop 262 7 a Fv(Compares)15 b(the)g(content)f(of)h(the)f(given)h X(ar)o(guments.)29 b(This)15 b(operator)f(returns)h(1)f(if)h(the)g X(value)262 57 y(of)f(ar)o(gument)p 469 57 13 2 v 15 w(1)i(is)f(greater) Xg(than)g(the)g(one)h(of)f(ar)o(gument)p 1129 57 V 15 Xw(2,)h(and)g(0)f(otherwise.)30 b(Strings)14 b(are)262 X107 y(lexicographically)8 b(compared)j(based)g(on)f(the)g(\(unsigned\)) Xf(values)h(of)g(their)g(bytes.)207 205 y Fn(?)30 b Fp(ifelse)588 X255 y Fv(int)10 b(any)p 705 255 V 15 w(1)g(any)p 811 X255 V 15 w(2)49 b Fn(?)h Fv(\261)262 316 y(Based)13 b(on)f(the)h X(integer)f(value,)i(the)e(\256rst)h(or)f(the)h(second)g(of)f(the)h(two) Xf(ar)o(guments)h(is)f(executed:)262 366 y(for)d(non-zero)h(values,)h XFp(any)p 667 366 V 15 w(1)f Fv(is)g(chosen.)16 b(Usually)m(,)10 Xb(the)g Fp(any)p 1160 366 V 15 w(x)h Fv(ar)o(guments)f(are)h X(procedures.)262 427 y(Note)f(that)f(this)h(operator)f(could)h(be)g X(rewritten)g(as)372 476 y Fn([)25 b(3)f(1)h(R)g(])g(X)g(0)f(=)h(0)g(=)g X(G)g(!)207 624 y(@)30 b Fp(utc)824 674 y Fv(\261)49 b XFn(@)h Fv(time)262 735 y(Returns)6 b(the)h(system')n(s)g(universal)f X(time)h(\(UTC\).)h(Depending)e(on)h(the)g(resolution)e(of)i(the)g X(system')n(s)262 785 y(clock)j(and)g(the)g(system')n(s)h(performance,)g X(two)f(consecutive)g(calls)h(may)f(return)g(the)g(same)i(time.)207 X883 y Fn([)30 b Fp(mark)824 933 y Fv(\261)49 b Fn([)h XFv(mark)262 994 y(Pushes)10 b(a)h Fn(mark)f Fv(value)g(on)g(the)g X(operand)g(stack.)207 1092 y Fn(])492 1142 y Fv(mark)g(any)p X649 1142 V 15 w(1)g Ff(:)d(:)g(:)f Fv(any)p 811 1142 XV 15 w(n)49 b Fn(])h Fv(ar)262 1203 y(Scans)8 b(the)g(operand)g(stack)g X(downwards)f(until)f(a)i Fn(mark)g Fv(value)g(is)f(found.)14 Xb(All)7 b(elements)h(between)262 1253 y(the)j(top)g(of)g(the)g(operand) Xh(stack)f(and)h(the)f Fn(mark)h Fv(are)g(removed)g(from)f(the)h(stack)g X(and)f(put)g(into)f(a)262 1302 y(new)g(array)m(.)16 b(The)11 Xb Fn(mark)f Fv(is)g(also)g(removed.)207 1401 y Fn(\303)30 Xb Fp(xor)746 1450 y Fv(int)9 b(int)49 b Fn(\303)h Fv(int)714 X1500 y(key)10 b(key)50 b Fn(\303)g Fv(key)262 1559 y(Performs)10 Xb(a)h(bit-wise)e Fp(xor)i Fv(operation)e(on)h(the)g(bits)f(of)h(the)g X(two)g(ar)o(guments.)207 1657 y Fn(|)30 b Fp(or)746 1707 Xy Fv(int)9 b(int)49 b Fn(|)h Fv(int)714 1756 y(key)10 Xb(key)50 b Fn(|)g Fv(key)262 1815 y(Performs)10 b(a)h(bit-wise)e XFp(or)h Fv(operation)f(on)h(the)g(bits)g(of)g(the)g(two)g(ar)o X(guments.)199 1913 y Fk(\030)31 b Fp(not)800 1963 y Fv(int)49 Xb Fk(\030)h Fv(int)784 2012 y(key)g Fk(\030)g Fv(key)262 X2071 y(Performs)10 b(a)h(bit-wise)e Fp(not)g Fv(operation)h(on)f(the)i X(bits)e(of)h(the)g(ar)o(gument.)262 2132 y(If)g(you)f(want)h(to)g(do)g X(a)h Fp(logical)19 b Fv(not)9 b(use)i(the)f(sequence)372 X2181 y Fn(0)25 b(=)207 2329 y(A)30 b Fp(array)800 2379 Xy Fv(int)49 b Fn(A)h Fv(array)262 2440 y(Creates)10 b(a)h(\(local\))f X(array)h(of)f(the)g(given)f(length.)14 b(Initially)m(,)9 Xb(all)h(elements)h(are)g(set)f(to)g Fn(null)p Fv(.)207 X2538 y Fn(B)30 b Fp(bind)771 2588 y Fv(proc)49 b Fn(B)h XFv(proc)878 2790 y(15)p eop X%%Page: 16 6 X16 15 bop 262 7 a Fv(Recursively)8 b(scans)h(the)g(given)f(procedure)g X(and)h(replaces)h(all)e(names)i(which)e(can)h(be)g(resolved)f(to)262 X57 y(operators)f(or)h(procedures)h(by)f(their)f(associated)i(value.)14 Xb(The)9 b(bind)e(is)i(only)e(done)h(for)f(procedures)262 X107 y(which)i(have)i(the)f(write)g(attribute)f(set.)262 X168 y(The)e(ef)o(fect)h(of)f(this)f(operator)h(depends)g(on)g(the)g X(con\256guration)f(of)h(the)g(dictionary)e(stack.)15 Xb(Binding)262 218 y(a)d(procedure)g(is)g(useful)g(if)f(one)h(wants)g X(to)g(avoid)f(a)i(rede\256nition)d(of)i(critical)f(operators)h(used)g X(in)262 267 y(the)e(given)f(procedure.)207 366 y Fn(C)30 Xb Fp(copy)784 415 y Fv(any)50 b Fn(C)g Fv(any)262 476 Xy(This)8 b(operator)g(replaces)h(operand)f(values)h(of)f(any)g(type)g X(by)g(a)h(physical)f(copy)m(.)15 b(In)8 b(case)i(of)e(simple)262 X526 y(types)k(\()p Fn(int,)24 b(time)13 b Fv(etc\))f(this)g(is)g(not)g X(very)h(useful.)21 b(However)n(,)14 b(composite)f(objects,)g(which)262 X576 y(reside)d(in)g(virtual)f(memory)m(,)j(are)f(replaced)g(by)f(a)h X(reference)h(to)e(a)h Fp(new)f Fv(composite)h(object)f(of)g(the)262 X626 y(same)f(size)g(and)g(containing)e(the)h(same)i(elements.)15 Xb(Note)8 b(that)g(the)g(elements)h(themselves)g(are)g(not)262 X676 y(physically)f(copied,)j(and)f(thus)f(remain)i(shared.)16 Xb(Thus,)10 b(unde\256ning)f(an)i(entry)e(in)h(a)h(dictionary')n(s)262 X725 y(copy)f(does)h(not)f(unde\256ne)g(the)h(entry)f(in)g(the)h X(original)e(dictionary)m(.)15 b(However)n(,)d(if)e(an)h(element)g(of) X262 775 y(an)h(array)i(is)e(a)h(string)f(and)g(the)h(content)f(of)g X(this)g(string)f(is)i(changed,)h(then)e(this)g(change)h(is)g(also)262 X825 y(visible)c(in)g(the)h(copy)g(of)g(the)h(array)m(.)262 X886 y(This)j(operator)g(should)g(be)h(used)g(only)e(when)i(the)g XFp(index)f Fv(\()p Fn(I)p Fv(\))h(operator)f(is)g(insuf)o(\256cient:)23 Xb(The)262 936 y(advantage)13 b(of)g(the)f Fp(index)h XFv(operator)g(is)g(that)f(it)g(copies)h(the)g Fp(r)n(efer)n(ences)j XFv(of)d(composite)g(objects,)262 986 y(which)c(is)h(much)h(more)g X(memory)f(ef)o(\256cient)h(than)f(a)h(physical)f(copy)m(.)207 X1084 y Fn(D)30 b Fp(dict)824 1134 y Fv(\261)49 b Fn(D)h XFv(dict)262 1195 y(Creates)10 b(a)h(new)g(\(local\))e(dictionary)m(.) X207 1293 y Fn(E)30 b Fp(enter)784 1343 y Fv(key)50 b XFn(E)g Fv(\261)730 1392 y(key)10 b(int)49 b Fn(E)h Fv(int)700 X1442 y(key)11 b(time)49 b Fn(E)h Fv(int)262 1500 y(The)10 Xb(\256rst)f(form)h(of)f(the)h Fn(E)g Fv(operator)f(lets)g(the)h X(process)g(unconditionally)d(enter)i(the)h(given)f(queue.)262 X1550 y(If)h(the)h(queue)g(is)f(stopped,)h(or)f(if)h(another)f(process)i X(is)e(already)h(executing)g(at)f(the)h(queue')n(s)g(head,)262 X1600 y(the)i(calling)g(process)i(will)d(be)i(blocked.)26 Xb(The)14 b(process)h(resumes)g(execution)e(just)g(after)h(the)g XFn(E)262 1650 y Fv(operator)9 b(only)g(when)i(it)e(gets)h(to)g(the)g X(head)h(of)f(the)g(process)h(queue.)262 1711 y(The)j(second)g(and)f X(third)g(form)g(of)g(the)h Fn(E)f Fv(operator)g(permit)g(to)g X(conditionally)e(enter)j(a)g(process)262 1761 y(queue.)20 Xb(If,)13 b(after)f(the)g(given)g(time,)g(the)g(process)h(is)f(stilled)e X(blocked,)j(the)f(process)g(is)g(removed)262 1811 y(from)f(the)h X(queue.)20 b(A)12 b(non-zero)f(value)h(is)f(then)h(returned)f(to)g X(signal)g(that)g(a)i(time\261out)d(occurred)262 1860 Xy(\(otherwise)h(a)h(0)g(value)f(is)h(pushed)f(on)h(the)f(operand)h X(stack\).)20 b(The)12 b(time\261out)f(value)h(is)f(given)g(in)262 X1910 y(either)e(relative)h(\()p Fp(int)f Fv(micro-seconds)i(from)f X(now\))g(or)g(absolute)f(\()p Fp(time)p Fv(\))h(form.)207 X2008 y Fn(F)30 b Fp(\256nd)784 2058 y Fv(any)50 b Fn(F)g XFv(dict)10 b(1)784 2108 y(any)50 b Fn(F)g Fv(0)262 2166 Xy(Scans)11 b(the)g(dictionary)e(stack)i(downwards)f(in)h(order)f(to)g X(\256nd)h(a)g(dictionary)e(in)h(which)h(the)f(given)262 X2216 y(operand)j(is)g(the)h(key)f(of)h(an)f(entry)m(.)25 Xb(On)14 b(success,)i(the)e(found)e(dictionary)g(is)h(pushed)h(and)f(1)h X(is)262 2266 y(returned.)g(0)c(is)g(returned)g(if)g(no)g(suitable)f X(dictionary)g(is)h(found.)207 2364 y Fn(G)30 b Fp(get)705 X2414 y Fv(array)10 b(int)49 b Fn(G)h Fv(any)696 2464 Xy(string)8 b(int)49 b Fn(G)h Fv(int)712 2513 y(dict)9 Xb(any)50 b Fn(G)g Fv(any)592 2563 y(array)p 679 2563 X13 2 v 15 w(1)10 b(array)p 810 2563 V 16 w(2)49 b Fn(G)h XFv(any)654 2613 y(string)9 b(array)50 b Fn(G)g Fv(int)878 X2790 y(16)p eop X%%Page: 17 7 X17 16 bop 262 7 a Fv(Extracts)9 b(from)h(the)g(given)f(composite)g X(object)h(the)f(desired)h(element\(s\).)15 b(For)10 b(array)g(and)g X(strings)262 57 y(the)k(integer)g(index)g(must)h(be)g(between)g(0)g X(and)g(the)g(composite')n(s)f(object)g(size)i(minus)e(1.)29 Xb(For)262 107 y(dictionary)8 b(objects,)j(an)f(entry)g(corresponding)f X(to)g(the)h(given)g(second)h(ar)o(gument)f(must)g(exist.)262 X168 y(As)j(with)f(the)g(put)h(\()p Fn(:)p Fv(\))20 b(operator)12 Xb(for)g(arrays)i(and)f(string)f(objects,)h(the)g(index)f(can)i(be)f(a)h X(range.)262 218 y(The)f(range)h(array)f(contains)g(an)g(of)o(fset)g X(and)g(length)g(value)g(which)f(specify)h(which)g(part)g(of)g(the)262 X267 y(object)c(should)g(be)i(extracted.)16 b(Note)10 Xb(that)f(the)h(whole)g(range)h(must)f(fall)g(inside)f(the)h(object.)207 X366 y Fn(H)30 b Fp(halted)784 415 y Fv(any)50 b Fn(H)g XFv(int)262 476 y(Creates)11 b(a)g(\301halted)f(context')f(and)i X(executes)g(the)g(given)f(value.)16 b(If)10 b(during)f(execution)h(a)h X(halt)f(\()p Fn(Z)p Fv(\))262 526 y(is)g(encountered,)g(1)g(is)g X(returned.)15 b(Otherwise,)10 b(0)h(is)f(returned.)207 X624 y Fn(I)30 b Fp(index)556 674 y Fv(any)p 618 674 13 X2 v 15 w(n)10 b Ff(:)d(:)g(:)f Fv(any)p 780 674 V 14 Xw(0)11 b(n)49 b Fn(I)h Fv(any)p 1031 674 V 15 w(n)10 Xb Ff(:)d(:)g(:)e Fv(any)p 1192 674 V 15 w(0)10 b(any)p X1298 674 V 15 w(n)262 735 y(Pushes)g(the)h Fp(n-th)e XFv(element)i(\(counted)f(from)g(the)h(top\))e(of)h(the)h(operand)f X(stack.)16 b(The)11 b(top)f(element)262 785 y(is)g(thus)f(easily)h X(duplicated)g(by)g(the)g(code)372 835 y Fn(0)25 b(I)207 X983 y(J)30 b Fp(exit)824 1033 y Fv(\261)49 b Fn(J)h Fv(\261)262 X1094 y(Jumps)10 b(out)f(of)h(\(terminates\))g(the)g(innermost)g(loop)f X(context)h(created)h(by)f(the)g Fn(L)g Fv(operator)n(.)207 X1192 y Fn(K)30 b Fp(known)712 1241 y Fv(dict)9 b(any)50 Xb Fn(K)g Fv(int)262 1302 y(Checks)12 b(if)g(the)g(dictionary)f X(contains)g(an)i(entry)f(which)g(is)g(indexed)f(by)h(the)g(second)h(ar) Xo(gument.)262 1352 y(If)d(this)f(applies,)h(1)g(is)g(returned,)h(0)f X(for)f(an)i(unde\256ned)f(entry)m(.)207 1450 y Fn(L)30 Xb Fp(loop)675 1500 y Fv(array)11 b(proc)49 b Fn(L)h Fv(\261)666 X1550 y(string)9 b(proc)49 b Fn(L)h Fv(\261)698 1600 y(dict)10 Xb(proc)49 b Fn(L)h Fv(\261)716 1650 y(int)10 b(proc)49 Xb Fn(L)h Fv(\261)262 1708 y(For)12 b(an)i(array)f(or)g(string)e(ar)o X(gument)i(the)g(loop)f(procedure)h(\(or)f(any)h(other)g(executable)g X(type\))g(is)262 1758 y(executed)c(once)h(for)f(each)h(element:)15 Xb(the)9 b(element)h(is)f(pushed)g(on)g(the)g(operand)g(stack)g(before)h X(the)262 1808 y(procedure)g(is)g(executed.)262 1869 y(For)f(a)i X(dictionary)d(ar)o(gument,)j(the)e(loop)g(procedure)h(is)g(executed)g X(once)h(for)e(each)i(de\256ned)g(entry)m(,)262 1918 y(\256rst)e X(pushing)g(on)h(the)g(operand)g(stack)h(the)f(entry')n(s)g(\301key')g X(and)g(then)g(the)g(associated)h(value.)262 1979 y(The)h(integer)e X(loop)h(requires)g(an)h(integer)f(value)g(greater)h(or)f(equal)g(to)g X(0)g(to)g(give)g(the)h(number)f(of)262 2029 y(times)d(the)h(loop)e X(procedure)i(should)e(be)i(executed.)16 b(Before)9 b(each)g(invocation) Xe(of)i(the)f(procedure,)262 2079 y(the)i(current)g(counter)f(value)i X(\(starting)d(from)j(0\))e(is)i(pushed)f(on)f(the)i(operand)f(stack.) X262 2140 y(By)g(giving)g(a)h(negative)g(integer)g(ar)o(gument,)g(the)g X(loop)f(becomes)j(an)e(in\256nite)f(loop:)15 b(no)c(counter)262 X2190 y(value)i(is)h(pushed,)g(but)f(the)g(procedure)h(is)g(executed)g X(over)f(and)h(over)g(until)d(a)k Fn(J)e Fv(\(jump)g(out)g(of)262 X2240 y(loop\))c(instruction)e(is)k(executed.)207 2338 Xy Fn(M)30 b Fp(checksum)262 2399 y(Not)9 b(implemented)g(yet.)207 X2497 y Fn(N)30 b Fp(neg)800 2547 y Fv(int)49 b Fn(N)h XFv(int)262 2608 y(Changes)10 b(the)g(sign)g(of)f(the)i(integer)e X(value.)878 2790 y(17)p eop X%%Page: 18 8 X18 17 bop 207 7 a Fn(O)30 b Fp(count)800 57 y Fv(int)49 Xb Fn(O)h Fv(int)262 118 y(Returns)7 b(information)f(about)h(the)h X(system')n(s)g(stacks.)15 b(The)9 b(integer)f(ar)o(gument)g(for)f(the)h XFn(O)g Fv(operator)262 168 y(can)j(be:)p 262 185 969 X2 v 261 235 2 50 v 286 220 a Fn(0)p 335 235 V 50 w Fv(count)f(elements) Xh(on)f(the)g(operand)g(stack)g(down)g(to)g(mark)p 1229 X235 V 261 285 V 286 270 a Fn(1)p 335 285 V 50 w Fv(return)g(the)g(size) Xh(of)f(the)g(operand)g(stack)p 1229 285 V 261 335 V 286 X320 a Fn(2)p 335 335 V 50 w Fv(return)g(the)g(size)h(of)f(the)g X(dictionary)e(stack)p 1229 335 V 261 385 V 286 370 a XFn(3)p 335 385 V 50 w Fv(return)i(the)g(size)h(of)f(the)g(execution)g X(stack)p 1229 385 V 262 386 969 2 v 207 463 a Fn(P)30 Xb Fp(pop)784 513 y Fv(any)50 b Fn(P)g Fv(\261)262 574 Xy(Drops)9 b(the)h(top)g(element)h(of)f(the)g(operand)g(stack.)207 X672 y Fn(Q)30 b Fp(queuestate)730 722 y Fv(key)10 b(int)49 Xb Fn(Q)h Fv(\261)262 783 y(The)15 b Fn(Q)g Fv(operator)f(is)h(used)f X(to)h(stop)f(and)h(start)f(a)h(given)f(queue:)24 b(a)15 Xb(non-zero)g(value)g(stops)f(the)262 833 y(queue,)g(thus)e(inhibits)f X(queued)h(processes)j(to)d(proceed)h(at)g(the)g(queue')n(s)g(head.)24 Xb(Note)12 b(that)h(this)262 883 y(does)d(not)g(af)o(fect)h(a)g(process) Xh(already)e(executing)g(in)g(the)h(queue')n(s)f(head)h(position.)j(By)c X(using)g(the)262 932 y Fn(Q)f Fv(operator)g(with)g(a)h(0)f(value,)i X(the)e(queue)h(is)f(unblocked,)h(letting)d(queued)j(processes)h X(advance)g(at)262 982 y(the)f(queue')n(s)g(head.)207 X1080 y Fn(R)30 b Fp(r)n(oll)472 1130 y Fv(any)p 534 1130 X13 2 v 15 w(\(n-1\))9 b Ff(:)e(:)g(:)f Fv(any)p 758 1130 XV 15 w(0)k(n)g(j)49 b Fn(R)h Fv(any)p 1031 1130 V 15 Xw(\(\(j-1\))9 b(mod)h(n\))g Ff(:)d(:)g(:)e Fv(any)p 1388 X1130 V 15 w(0)10 b(any)p 1494 1130 V 15 w(n)g Ff(:)d(:)g(:)f XFv(any)p 1656 1130 V 14 w(\(j)k(mod)g(n\))262 1191 y(Cycles)g(the)g X(topmost)f(n)h(operands)h(by)e(j)h(positions)f(towards)g(the)i(operand) Xf(stack')n(s)g(top.)207 1289 y Fn(S)30 b Fp(string)800 X1339 y Fv(int)49 b Fn(S)h Fv(string)262 1400 y(Creates)10 Xb(a)h(new)g(\(local\))e(string)g(with)h(the)g(given)f(length.)14 Xb(All)c(bytes)g(are)h(initialized)d(to)i(0.)207 1498 Xy Fn(T)30 b Fp(getattribute)784 1548 y Fv(any)50 b Fn(T)g XFv(int)262 1609 y(\(test-attribute\))7 b(Returns)j(the)g(operand')n(s)g X(attribute)f(\(see)i(the)f Fn(W)g Fv(operator)g(for)g(more)g X(details\).)207 1707 y Fn(U)30 b Fp(unde\256ne)712 1757 Xy Fv(dict)9 b(any)50 b Fn(U)g Fv(\261)262 1818 y(Removes)14 Xb(from)f(a)h(dictionary)d(the)j(entry)e(that)h(is)g(indexed)g(by)g(the) Xg Fp(any)h Fv(operand.)24 b(The)14 b(entry)262 1868 y(must)c(exist.)207 X1966 y Fn(V)30 b Fp(leave)824 2016 y Fv(\261)49 b Fn(V)h XFv(\261)262 2077 y(Removes)10 b(the)f(process)i(from)e(the)h(current)f X(queue)h(it)f(is)g(executing)g(in.)15 b(Depending)9 b(on)g(the)g(state) X262 2127 y(of)j(the)h(queue)g(\(see)h(the)f Fn(Q)g Fv(operator\),)g X(other)g(processes)h(waiting)d(in)i(the)g(queue)g(may)g(become)262 X2176 y(active.)262 2237 y(If)d(the)g(process)h(is)f(currently)f(not)g X(in)h(a)h(process)g(queue,)f(this)g(operator)g(has)g(no)g(ef)o(fect.) X207 2336 y Fn(W)30 b Fp(setattribute)730 2385 y Fv(any)10 Xb(int)49 b Fn(T)h Fv(int)262 2446 y(\(write-attribut)o(e\))7 Xb(Applies)i(a)h(mask)g(to)f(attribute)f(bits)g(of)h(the)g XFp(any)h Fv(ar)o(gument.)15 b(This)9 b(only)f(makes)262 X2496 y(sense)i(for)f(composite)h(objects.)k(Note)c(that)f(attribute)f X(bits)h(can)h(only)f(be)g(removed)h(\(set)g(to)f(0\))g(but)262 X2546 y(cannot)i(be)i(reset.)21 b(Once)12 b(the)g Fp(write)g XFv(attribute)e(has)j(been)f(removed,)h(all)f(object')n(s)f(attribute)g X(bits)262 2596 y(become)g(immutable.)878 2790 y(18)p Xeop X%%Trailer Xend Xuserdict /end-hook known{end-hook}if X%%EOF END_OF_FILE if test 43670 -ne `wc -c <'M0-3.ps'`; then echo shar: \"'M0-3.ps'\" unpacked with wrong size! fi # end of 'M0-3.ps' fi echo shar: End of archive 9 \(of 12\). cp /dev/null ark9isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 12 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0